UNPKG

vue-admin-core

Version:
1 lines 4.71 kB
{"version":3,"file":"render-elem.mjs","sources":["../../../../../../package/components/msg-editor/src/render-elem.ts"],"sourcesContent":["/**\n * @description render elem\n * @author wangfupeng\n */\n\nimport { h, VNode } from \"snabbdom\";\nimport { DomEditor, IDomEditor, SlateElement } from \"@wangeditor/editor\";\nimport { VariableElement } from \"./types\";\nimport emitter from \"./mitt\";\nimport { getLeftAndTop } from \"./plugin\";\n\nfunction renderVariable(elem: SlateElement, children: VNode[] | null, editor: IDomEditor): VNode {\n // 当前节点是否选中\n const selected = DomEditor.isNodeSelected(editor, elem);\n const { label = \"\", value = \"\" } = elem as VariableElement;\n\n // 构建 vnode\n const vnode = h(\n \"span\",\n {\n props: {\n contentEditable: false // 不可编辑\n },\n style: {\n marginLeft: \"3px\",\n marginRight: \"3px\",\n backgroundColor: \"var(--el-color-primary-light-9)\",\n border: selected // 选中/不选中,样式不一样\n ? \"2px solid var(--w-e-textarea-selected-border-color)\" // wangEditor 提供了 css var https://www.wangeditor.com/v5/theme.html\n : \"2px solid transparent\",\n borderRadius: \"3px\",\n padding: \"0 3px\",\n cursor: \"pointer\",\n color: \"var(--el-color-primary)\",\n borderColor: \"var(--el-color-primary-light-8)\"\n },\n on: {\n click: (e) => {\n if (editor.isDisabled()) return;\n const { top, left, isRight } = getLeftAndTop(editor, elem);\n //@ts-ignore\n const { width, height } = e.target.getBoundingClientRect();\n emitter.emit(\"show\", {\n top: top + height,\n left: left - (!isRight ? width : 0),\n value: value\n });\n // 监听,隐藏 modal(异步,等待 modal 渲染后再监听)\n setTimeout(() => {\n function _hide() {\n // if (hide) hide(newEditor);\n emitter.emit(\"hide\", editor);\n }\n editor.once(\"fullScreen\", _hide);\n editor.once(\"unFullScreen\", _hide);\n editor.once(\"scroll\", _hide);\n editor.once(\"modalOrPanelShow\", _hide);\n editor.once(\"modalOrPanelHide\", _hide);\n\n function hideOnChange() {\n if (editor.selection != null) {\n _hide();\n editor.off(\"change\", hideOnChange); // 及时解绑\n }\n }\n editor.on(\"change\", hideOnChange);\n });\n }\n }\n },\n `${label}` // 如 `${张三}`\n );\n\n return vnode;\n}\n\nconst conf = {\n type: \"variable\", // 节点 type ,重要!!!\n renderElem: renderVariable\n};\n\nexport default conf;\n"],"names":[],"mappings":";;;;;AAWA,SAAS,cAAA,CAAe,IAAoB,EAAA,QAAA,EAA0B,MAA2B,EAAA;AAE/F,EAAA,MAAM,QAAW,GAAA,SAAA,CAAU,cAAe,CAAA,MAAA,EAAQ,IAAI,CAAA,CAAA;AACtD,EAAA,MAAM,EAAE,KAAA,GAAQ,EAAI,EAAA,KAAA,GAAQ,IAAO,GAAA,IAAA,CAAA;AAGnC,EAAA,MAAM,KAAQ,GAAA,CAAA;AAAA,IACZ,MAAA;AAAA,IACA;AAAA,MACE,KAAO,EAAA;AAAA,QACL,eAAiB,EAAA,KAAA;AAAA;AAAA,OACnB;AAAA,MACA,KAAO,EAAA;AAAA,QACL,UAAY,EAAA,KAAA;AAAA,QACZ,WAAa,EAAA,KAAA;AAAA,QACb,eAAiB,EAAA,iCAAA;AAAA,QACjB,MAAA,EAAQ,WACJ,qDACA,GAAA,uBAAA;AAAA,QACJ,YAAc,EAAA,KAAA;AAAA,QACd,OAAS,EAAA,OAAA;AAAA,QACT,MAAQ,EAAA,SAAA;AAAA,QACR,KAAO,EAAA,yBAAA;AAAA,QACP,WAAa,EAAA,iCAAA;AAAA,OACf;AAAA,MACA,EAAI,EAAA;AAAA,QACF,KAAA,EAAO,CAAC,CAAM,KAAA;AACZ,UAAA,IAAI,OAAO,UAAW,EAAA;AAAG,YAAA,OAAA;AACzB,UAAA,MAAM,EAAE,GAAK,EAAA,IAAA,EAAM,SAAY,GAAA,aAAA,CAAc,QAAQ,IAAI,CAAA,CAAA;AAEzD,UAAA,MAAM,EAAE,KAAO,EAAA,MAAA,EAAW,GAAA,CAAA,CAAE,OAAO,qBAAsB,EAAA,CAAA;AACzD,UAAA,OAAA,CAAQ,KAAK,MAAQ,EAAA;AAAA,YACnB,KAAK,GAAM,GAAA,MAAA;AAAA,YACX,IAAM,EAAA,IAAA,IAAQ,CAAC,OAAA,GAAU,KAAQ,GAAA,CAAA,CAAA;AAAA,YACjC,KAAA;AAAA,WACD,CAAA,CAAA;AAED,UAAA,UAAA,CAAW,MAAM;AACf,YAAA,SAAS,KAAQ,GAAA;AAEf,cAAQ,OAAA,CAAA,IAAA,CAAK,QAAQ,MAAM,CAAA,CAAA;AAAA,aAC7B;AACA,YAAO,MAAA,CAAA,IAAA,CAAK,cAAc,KAAK,CAAA,CAAA;AAC/B,YAAO,MAAA,CAAA,IAAA,CAAK,gBAAgB,KAAK,CAAA,CAAA;AACjC,YAAO,MAAA,CAAA,IAAA,CAAK,UAAU,KAAK,CAAA,CAAA;AAC3B,YAAO,MAAA,CAAA,IAAA,CAAK,oBAAoB,KAAK,CAAA,CAAA;AACrC,YAAO,MAAA,CAAA,IAAA,CAAK,oBAAoB,KAAK,CAAA,CAAA;AAErC,YAAA,SAAS,YAAe,GAAA;AACtB,cAAI,IAAA,MAAA,CAAO,aAAa,IAAM,EAAA;AAC5B,gBAAM,KAAA,EAAA,CAAA;AACN,gBAAO,MAAA,CAAA,GAAA,CAAI,UAAU,YAAY,CAAA,CAAA;AAAA,eACnC;AAAA,aACF;AACA,YAAO,MAAA,CAAA,EAAA,CAAG,UAAU,YAAY,CAAA,CAAA;AAAA,WACjC,CAAA,CAAA;AAAA,SACH;AAAA,OACF;AAAA,KACF;AAAA,IACA,GAAG,KAAK,CAAA,CAAA;AAAA;AAAA,GACV,CAAA;AAEA,EAAO,OAAA,KAAA,CAAA;AACT,CAAA;AAEA,MAAM,IAAO,GAAA;AAAA,EACX,IAAM,EAAA,UAAA;AAAA;AAAA,EACN,UAAY,EAAA,cAAA;AACd;;;;"}