xinsi_book/src/plugin/xml-digital-teaching/lib/group.js
caoyuchun 769e31b428 cyc
2024-07-22 18:31:09 +08:00

267 lines
6.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* XmlDigitalTeaching v0.0.1
* Copyright ©Mon Jul 22 2024 15:42:53 GMT+0800 (中国标准时间) smile
* Released under the ISC License.
*/
//
//
//
//
//
//
//
//
//
//
//
var script = {
name: 'XmlGroupRender',
props: {
//模式preview 预览 (默认)editor 编辑
mode: {
type: String,
default: function () {
return 'editor';
}
},
ruleIndex: Number,
//页面类型取值h5、pc、pad
pageType: {
type: String,
default: 'h5'
},
field: String,
typeText: {
type: String,
default: ''
},
showLine: {
type: Boolean,
default: true
},
pBlockData: {
type: Object,
default: function () {
return {};
}
},
BookName: {
type: String,
default: ''
},
//块儿数据名
blockDataName: String
},
data() {
return {
isShowUp: false,
isShowDown: false,
//当前所处组的规则
currentRule: {},
mouseHover: false,
showBtn: false
};
},
created() {
const _this = this;
this.$EventBus.$on('blockClick', function ({
blockId,
ruleIndex
}) {
if (_this.ruleIndex === ruleIndex) {
_this.showBtn = true;
} else {
_this.showBtn = false;
}
});
},
mounted() {
this.blockData = this.pBlockData;
},
methods: {
hover() {
this.mouseHover = true;
},
leave() {
this.mouseHover = false;
}
}
};
function normalizeComponent(template, style, script, scopeId, isFunctionalTemplate, moduleIdentifier /* server only */, shadowMode, createInjector, createInjectorSSR, createInjectorShadow) {
if (typeof shadowMode !== 'boolean') {
createInjectorSSR = createInjector;
createInjector = shadowMode;
shadowMode = false;
}
// Vue.extend constructor export interop.
const options = typeof script === 'function' ? script.options : script;
// render functions
if (template && template.render) {
options.render = template.render;
options.staticRenderFns = template.staticRenderFns;
options._compiled = true;
// functional template
if (isFunctionalTemplate) {
options.functional = true;
}
}
// scopedId
if (scopeId) {
options._scopeId = scopeId;
}
let hook;
if (moduleIdentifier) {
// server build
hook = function (context) {
// 2.3 injection
context = context ||
// cached call
this.$vnode && this.$vnode.ssrContext ||
// stateful
this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext; // functional
// 2.2 with runInNewContext: true
if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
context = __VUE_SSR_CONTEXT__;
}
// inject component styles
if (style) {
style.call(this, createInjectorSSR(context));
}
// register component module identifier for async chunk inference
if (context && context._registeredComponents) {
context._registeredComponents.add(moduleIdentifier);
}
};
// used by ssr in case component is cached and beforeCreate
// never gets called
options._ssrRegister = hook;
} else if (style) {
hook = shadowMode ? function (context) {
style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot));
} : function (context) {
style.call(this, createInjector(context));
};
}
if (hook) {
if (options.functional) {
// register for functional component in vue file
const originalRender = options.render;
options.render = function renderWithStyleInjection(h, context) {
hook.call(context);
return originalRender(h, context);
};
} else {
// inject component registration as beforeCreate hook
const existing = options.beforeCreate;
options.beforeCreate = existing ? [].concat(existing, hook) : [hook];
}
}
return script;
}
/* script */
const __vue_script__ = script;
/* template */
var __vue_render__ = function () {
var _vm = this;
var _h = _vm.$createElement;
var _c = _vm._self._c || _h;
return _c(
"div",
{
class: _vm.showLine ? "xml-group-box" : "",
on: { mousemove: _vm.hover, mouseleave: _vm.leave },
},
[
_vm.mode === "editor"
? _c("span", { staticClass: "xml-group-type-text" }, [
_vm._v(_vm._s(_vm.typeText)),
])
: _vm._e(),
_vm._v(" "),
_vm.showBtn && _vm.mode === "editor"
? _vm._t("action-buttons")
: _vm._e(),
_vm._v(" "),
_c(
"div",
{
class: [
"xml-group-" + _vm.pageType,
_vm.mode === "editor" ? "xml-group--editor" : "",
_vm.mouseHover && _vm.mode === "editor" ? "hovered" : "",
],
},
[_vm._t("default")],
2
),
],
2
)
};
var __vue_staticRenderFns__ = [];
__vue_render__._withStripped = true;
/* style */
const __vue_inject_styles__ = undefined;
/* scoped */
const __vue_scope_id__ = "data-v-619d09d0";
/* module identifier */
const __vue_module_identifier__ = undefined;
/* functional template */
const __vue_is_functional_template__ = false;
/* style inject */
/* style inject SSR */
/* style inject shadow dom */
const __vue_component__ = /*#__PURE__*/normalizeComponent(
{ render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },
__vue_inject_styles__,
__vue_script__,
__vue_scope_id__,
__vue_is_functional_template__,
__vue_module_identifier__,
false,
undefined,
undefined,
undefined
);
let componentNamespace = 'xml';
// 组件前缀命名只能更新一次,防止重复执行修改组件注册出错
let isUpdated = false;
function createNamespace(name, {
prefix,
isUnPrefix
}) {
let useNamespace;
if (!isUpdated) {
isUpdated = true;
useNamespace = prefix || componentNamespace; // 更改前缀
}
if (prefix) {
if (name.indexOf(componentNamespace) === 0) {
return name.replace(componentNamespace, prefix);
}
return useNamespace.charAt(0).toUpperCase() + useNamespace.substr(1) + name;
}
if (name.indexOf(componentNamespace) === 0 || name.indexOf(componentNamespace.charAt(0).toUpperCase()) === 0) {
return name.charAt(0).toUpperCase() + name.substr(1);
}
return isUnPrefix ? name.charAt(0).toLowerCase() + name.substr(1) : componentNamespace + name.charAt(0).toUpperCase() + name.substr(1);
}
__vue_component__.install = (Vue, options = {}) => {
Vue.component(createNamespace('group-render', {
prefix: options.prefix
}), __vue_component__);
};
export { __vue_component__ as default };