CKeditor + word counter + Image Input + Taggable VUE3 Better Xss Sanitizer Handle Video Youtube + Image Upload + Inline Image from url Better Image Input component with reset, easizer resize Full Responsive BO
56 lines
1.6 KiB
JavaScript
56 lines
1.6 KiB
JavaScript
import { createApp } from 'vue'
|
|
|
|
// Register modules
|
|
const modules = require.context("./modules", true, /\.js$/i)
|
|
|
|
document.addEventListener('DOMContentLoaded', () => {
|
|
|
|
let setupApp = (app) => {
|
|
if (window.vueDebug) {
|
|
app.config.devtools = true
|
|
app.config.debug = true
|
|
}
|
|
app.config.globalProperties.window = window
|
|
app.config.globalProperties.document = document
|
|
|
|
modules.keys().map(key => {
|
|
app.mixin(modules(key).default)
|
|
})
|
|
}
|
|
|
|
// Register components
|
|
const vues = require.context("./components", true, /\.vue$/i);
|
|
vues.keys().map(key => {
|
|
let app
|
|
let htmlKey = key.split('/')
|
|
.pop()
|
|
.split('.')[0]
|
|
.replace(/\.?([A-Z])/g, function (x, y) {
|
|
return '-' + y.toLowerCase();
|
|
})
|
|
.replace(/^-/, '')
|
|
.replace('-component', '')
|
|
|
|
let el = document.getElementById(htmlKey),
|
|
elGroup = document.getElementsByClassName(htmlKey)
|
|
if (el) {
|
|
app = createApp(
|
|
vues(key).default,
|
|
{ json: el.dataset.json ?? {} }
|
|
)
|
|
setupApp(app)
|
|
app.mount(el)
|
|
}
|
|
for (let grpEl of elGroup) {
|
|
// * Hack to prevent loop weirdness
|
|
setTimeout(() => {
|
|
app = createApp(
|
|
vues(key).default,
|
|
{ json: grpEl.dataset.json ?? {} }
|
|
)
|
|
setupApp(app)
|
|
app.mount(grpEl)
|
|
}, 1000)
|
|
}
|
|
})
|
|
})
|