tiptap/docs/src/main.js
2021-04-30 19:42:44 +02:00

57 lines
1.6 KiB
JavaScript

import Prism from 'prismjs'
import 'prismjs/components/prism-jsx.js'
import 'prismjs/components/prism-typescript.js'
import 'prismjs/components/prism-scss.js'
import PortalVue from 'portal-vue'
import iframeResize from 'iframe-resizer/js/iframeResizer'
import App from '~/layouts/App'
Prism.manual = true
export default function (Vue) {
// fix docsearch
if (typeof window === 'object' && !window.process) {
window.process = {
env: {
NODE_ENV: 'production',
},
}
}
Vue.use(PortalVue)
Vue.directive('resize', {
bind: (el, { value = {} }) => {
el.addEventListener('load', () => {
iframeResize({
...value,
messageCallback(messageData) {
if (messageData.message.type !== 'resize') {
return
}
const style = window.getComputedStyle(el.parentElement)
const maxHeight = parseInt(style.getPropertyValue('max-height'), 10)
if (messageData.message.height > maxHeight) {
el.setAttribute('scrolling', 'auto')
} else {
el.setAttribute('scrolling', 'no')
}
el?.iFrameResizer?.resize?.()
},
}, el)
})
},
unbind(el) {
el?.iFrameResizer?.removeListeners?.()
},
})
Vue.component('Layout', App)
Vue.component('Demo', () => import(/* webpackChunkName: "demo" */ '~/components/Demo'))
Vue.component('Demos', () => import(/* webpackChunkName: "demos" */ '~/components/Demos'))
Vue.component('ContentMissing', () => import(/* webpackChunkName: "contentMissing" */ '~/components/ContentMissing'))
}