@ibiz-template/mob-vue3-components 0.7.41-alpha.13 → 0.7.41-alpha.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{index-OsiEgFnw.js → index-5DjmQP8W.js} +2 -2
- package/dist/index-5DjmQP8W.js.map +1 -0
- package/dist/index-fAu1z4L0.js +2 -0
- package/dist/index-fAu1z4L0.js.map +1 -0
- package/dist/index-yjjy8EQH.js +76 -0
- package/dist/index-yjjy8EQH.js.map +1 -0
- package/dist/index.min.css +4 -4
- package/dist/index.system.min.js +1 -1
- package/dist/{quill-editor-VqApoQJq.js → quill-editor-6a0LLTGQ.js} +2 -2
- package/dist/{quill-editor-VqApoQJq.js.map → quill-editor-6a0LLTGQ.js.map} +1 -1
- package/dist/{quill-editor-preview-G0MpMJzC.js → quill-editor-preview-PFiM-IPE.js} +2 -2
- package/dist/{quill-editor-preview-G0MpMJzC.js.map → quill-editor-preview-PFiM-IPE.js.map} +1 -1
- package/dist/{quill-wfN-3C_3.js → quill-n54HJUg2.js} +2 -2
- package/dist/{quill-wfN-3C_3.js.map → quill-n54HJUg2.js.map} +1 -1
- package/dist/tree-4CqtwsXL.js +2 -0
- package/dist/tree-4CqtwsXL.js.map +1 -0
- package/es/common/action-group/action-group.css +1 -0
- package/es/common/action-group/action-group.d.ts +55 -0
- package/es/common/action-group/action-group.mjs +174 -0
- package/es/common/action-toolbar/action-toolbar.d.ts +1 -0
- package/es/common/action-toolbar/action-toolbar.mjs +20 -8
- package/es/common/button-list/button-list.css +1 -1
- package/es/common/button-list/button-list.d.ts +3 -2
- package/es/common/button-list/button-list.mjs +83 -63
- package/es/common/index.mjs +2 -0
- package/es/common/rawitem/rawitem.mjs +2 -2
- package/es/control/list/md-ctrl/md-ctrl.mjs +13 -15
- package/es/control/tab-exp-panel/index.d.ts +1 -0
- package/es/control/tab-exp-panel/tab-exp-panel.css +1 -0
- package/es/control/tab-exp-panel/tab-exp-panel.d.ts +2 -0
- package/es/control/tab-exp-panel/tab-exp-panel.mjs +28 -1
- package/es/control/tree/tree.css +1 -1
- package/es/control/tree/tree.d.ts +15 -0
- package/es/control/tree/tree.mjs +14 -2
- package/es/editor/number-range/ibiz-number-range-picker/ibiz-number-range-picker.d.ts +5 -7
- package/es/editor/number-range/ibiz-number-range-picker/ibiz-number-range-picker.mjs +18 -0
- package/es/editor/rate/ibiz-rate/ibiz-rate.d.ts +2 -1
- package/es/editor/rate/ibiz-rate/ibiz-rate.mjs +3 -0
- package/es/editor/raw/ibiz-raw/ibiz-raw.d.ts +2 -2
- package/es/editor/span/span/span.d.ts +5 -3
- package/es/editor/span/span/span.mjs +5 -5
- package/es/editor/stepper/ibiz-stepper/ibiz-stepper.d.ts +4 -3
- package/es/editor/stepper/ibiz-stepper/ibiz-stepper.mjs +9 -0
- package/es/editor/switch/ibiz-switch/ibiz-switch.d.ts +1 -0
- package/es/editor/text-box/ibiz-input-number/ibiz-input-number.d.ts +2 -1
- package/es/editor/text-box/input/input.d.ts +2 -0
- package/es/editor/upload/upload-editor.controller.d.ts +23 -2
- package/es/editor/upload/upload-editor.controller.mjs +46 -15
- package/es/editor/upload/use/use-van-upload.mjs +35 -3
- package/es/locale/en/index.d.ts +2 -0
- package/es/locale/en/index.mjs +2 -1
- package/es/locale/zh-CN/index.d.ts +2 -0
- package/es/locale/zh-CN/index.mjs +2 -1
- package/es/panel-component/panel-button-list/panel-button-list.controller.d.ts +1 -1
- package/es/panel-component/panel-button-list/panel-button-list.controller.mjs +19 -18
- package/es/util/store/view-stack/view-stack.mjs +11 -1
- package/lib/common/action-group/action-group.cjs +176 -0
- package/lib/common/action-group/action-group.css +1 -0
- package/lib/common/action-toolbar/action-toolbar.cjs +20 -8
- package/lib/common/button-list/button-list.cjs +82 -62
- package/lib/common/button-list/button-list.css +1 -1
- package/lib/common/index.cjs +2 -0
- package/lib/common/rawitem/rawitem.cjs +2 -2
- package/lib/control/list/md-ctrl/md-ctrl.cjs +12 -14
- package/lib/control/tab-exp-panel/tab-exp-panel.cjs +27 -0
- package/lib/control/tab-exp-panel/tab-exp-panel.css +1 -0
- package/lib/control/tree/tree.cjs +14 -2
- package/lib/control/tree/tree.css +1 -1
- package/lib/editor/number-range/ibiz-number-range-picker/ibiz-number-range-picker.cjs +18 -0
- package/lib/editor/rate/ibiz-rate/ibiz-rate.cjs +3 -0
- package/lib/editor/span/span/span.cjs +5 -5
- package/lib/editor/stepper/ibiz-stepper/ibiz-stepper.cjs +9 -0
- package/lib/editor/upload/upload-editor.controller.cjs +46 -15
- package/lib/editor/upload/use/use-van-upload.cjs +35 -3
- package/lib/locale/en/index.cjs +2 -1
- package/lib/locale/zh-CN/index.cjs +2 -1
- package/lib/panel-component/panel-button-list/panel-button-list.controller.cjs +18 -17
- package/lib/util/store/view-stack/view-stack.cjs +11 -1
- package/package.json +6 -6
- package/dist/index-JSf84k9b.js +0 -2
- package/dist/index-JSf84k9b.js.map +0 -1
- package/dist/index-OsiEgFnw.js.map +0 -1
- package/dist/index-TTGYeV0q.js +0 -76
- package/dist/index-TTGYeV0q.js.map +0 -1
- package/dist/tree-nburezSg.js +0 -2
- package/dist/tree-nburezSg.js.map +0 -1
package/dist/index.system.min.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
System.register(["./index-
|
|
1
|
+
System.register(["./index-yjjy8EQH.js","@ibiz-template/core","@ibiz-template/model-helper","ramda","@ibiz-template/vue3-util","@ibiz-template/devtool","vue","vant","lodash-es","@ibiz-template/runtime","@floating-ui/dom","vue-router","pinia","qx-util","dayjs","vuedraggable","qs","vue-i18n"],function(i){"use strict";return{setters:[function(r){i({AppMenuProvider:r.A,AppUtil:r.bS,AuthGuardHooks:r.b$,CalendarProvider:r.ax,CaptionBarProvider:r.a7,CascaderEditorController:r.aE,CascaderEditorProvider:r.aF,CheckBoxEditorController:r.aH,CheckBoxEditorProvider:r.aI,CheckBoxListEditorController:r.aK,CheckBoxListEditorProvider:r.aL,ColorPickerEditorController:r.bD,ColorPickerEditorProvider:r.bE,ConfirmUtil:r.bR,ContainerPortlet:r.am,ContainerPortletProvider:r.al,DRTabController:r.ac,DRTabProvider:r.ab,DashboardProvider:r.ai,DataPickerEditorProvider:r.aQ,DataViewControlProvider:r.ag,DatePickerEditorController:r.aS,DatePickerEditorProvider:r.aT,DateRangeEditorController:r.aV,DateRangeEditorProvider:r.aW,DropDownListEditorController:r.a_,DropDownListEditorProvider:r.a$,FileUploaderEditorProvider:r.bB,FormButtonProvider:r.D,FormDRUIPartProvider:r.G,FormGroupPanelProvider:r.F,FormItemProvider:r.w,FormMDCtrl:r.W,FormMDCtrlForm:r.V,FormMDCtrlMD:r.U,FormMDCtrlProvider:r.R,FormMDCtrlRepeater:r.T,FormPageProvider:r.B,FormRawItemProvider:r.J,FormTabPageProvider:r.O,FormTabPanelProvider:r.L,FullscreenUtil:r.bU,HtmlEditorController:r.b2,HtmlEditorProvider:r.b3,IBizAppMenuControl:r.n,IBizAppMenuIconViewControl:r.o,IBizAppMenuListViewControl:r.p,IBizCalendarControl:r.aw,IBizCaptionBarControl:r.a6,IBizCascader:r.aD,IBizCascaderDropdown:r.aZ,IBizChartControl:r.av,IBizCheckbox:r.aG,IBizCheckboxList:r.aJ,IBizCol:r.a,IBizColorPicker:r.bC,IBizCommonComponents:r.I,IBizCommonRightIcon:r.bG,IBizContainerPortlet:r.ak,IBizDRBarControl:r.aA,IBizDRTabControl:r.aa,IBizDashboardControl:r.ah,IBizDataMPicker:r.bF,IBizDataViewControl:r.af,IBizDatePicker:r.aR,IBizDateRangePicker:r.aU,IBizDropdown:r.aX,IBizEditFormControl:r.Y,IBizEditor:r.aC,IBizEditorCarousel:r.by,IBizEmojiPicker:r.aY,IBizFileUpload:r.bv,IBizFormButton:r.C,IBizFormButtonList:r.X,IBizFormControl:r.Z,IBizFormDRUIPart:r.E,IBizFormGroupPanel:r.u,IBizFormItem:r.v,IBizFormItemContainer:r.x,IBizFormMDCtrl:r.P,IBizFormPage:r.y,IBizFormPageItem:r.z,IBizFormRawItem:r.H,IBizFormTabPage:r.N,IBizFormTabPanel:r.K,IBizImageCropping:r.bz,IBizImageSelect:r.bx,IBizImageUpload:r.bw,IBizInput:r.bq,IBizInputNumber:r.br,IBizKeepAlive:r.e,IBizListControl:r.a1,IBizListPortlet:r.at,IBizMDCtrlControl:r.l,IBizMPicker:r.aN,IBizMenuPortlet:r.ao,IBizNumberRangePicker:r.b4,IBizPanelComponents:r.aB,IBizPicker:r.aM,IBizPickerSelectView:r.aO,IBizPickupViewPanelControl:r._,IBizRadio:r.b7,IBizRate:r.ba,IBizRow:r.b,IBizSearchBarControl:r.a8,IBizSearchFormControl:r.r,IBizSignature:r.bs,IBizSlider:r.bd,IBizSpan:r.bg,IBizSpanLink:r.bh,IBizStepper:r.bk,IBizSwitch:r.bn,IBizTabExpPanelControl:r.a3,IBizToolbarControl:r.a5,IBizTreeControl:r.ad,IBizTreeExpBarControl:r.az,IBizViewEngine:r.bJ,IBizViewPortlet:r.ar,IBizWizardPanelControl:r.ay,ListPortlet:r.au,ListProvider:r.a2,LoadingUtil:r.bK,LoginView:r.bI,MDCtrlContainer:r.Q,MDCtrlProvider:r.m,MarkDownEditorController:r.b0,MarkDownEditorProvider:r.b1,MenuPortlet:r.aq,MenuPortletProvider:r.ap,MessageUtil:r.bL,ModalUtil:r.bM,MoveType:r.M,NotificationUtil:r.bN,NumberRangeEditorController:r.b5,NumberRangeEditorProvider:r.b6,OpenViewUtil:r.bO,OverlayController:r.bP,PickerEditorController:r.aP,PickupViewPanelController:r.a0,PickupViewPanelProvider:r.$,PortletLayout:r.an,PortletPartState:r.aj,QrcodeUtil:r.bW,RadioButtonListEditorController:r.b8,RadioButtonListEditorProvider:r.b9,RateEditorController:r.bb,RateEditorProvider:r.bc,SearchBarProvider:r.a9,SearchFormProvider:r.t,ShapeFlags:r.S,SliderEditorController:r.be,SliderEditorProvider:r.bf,SpanEditorController:r.bi,SpanEditorProvider:r.bj,StepperEditorController:r.bl,StepperEditorProvider:r.bm,SwitchEditorController:r.bo,SwitchEditorProvider:r.bp,TabExpPanelProvider:r.a4,TextBoxEditorController:r.bt,TextBoxEditorProvider:r.bu,TreeProvider:r.ae,UploadEditorController:r.bA,View404:r.bH,ViewPortlet:r.as,calcUniqueKey:r.bY,convertBtnType:r.bX,devtoolsComponentAdded:r.k,i18n:r.i,invokeArrayFns:r.h,invokeVNodeHook:r.j,isAsyncWrapper:r.f,isKeepAlive:r.d,loadingDirective:r.bQ,queuePostRenderEffect:r.q,runApp:r.b_,setTransitionHooks:r.s,usePagination:r.bT,usePopstateListener:r.bV,useViewStack:r.bZ})},null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],execute:function(){}}});
|
|
2
2
|
//# sourceMappingURL=index.system.min.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
System.register(["vue","@ibiz-template/vue3-util","./quill-
|
|
2
|
-
//# sourceMappingURL=quill-editor-
|
|
1
|
+
System.register(["vue","@ibiz-template/vue3-util","./quill-n54HJUg2.js","@ibiz-template/core","lodash-es","./index-yjjy8EQH.js","vant","ramda","@ibiz-template/runtime","@floating-ui/dom","vue-router","pinia","qx-util","dayjs","vuedraggable","qs","vue-i18n","@ibiz-template/devtool","@ibiz-template/model-helper"],function(B){"use strict";var C,a,h,n,u,y,z,w,x,T,E,U,k,H;return{setters:[function(t){C=t.defineComponent,a=t.ref,h=t.watch,n=t.createVNode,u=t.resolveComponent,y=t.isVNode,z=t.nextTick},function(t){w=t.getHtmlProps,x=t.getEditorEmits,T=t.useNamespace},function(t){E=t.Q},function(t){U=t.getAppCookie,k=t.CoreConst,H=t.base64ToBlob},null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],execute:function(){function t(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!y(e)}const I=B("default",C({name:"IBizQuill",props:w(),emits:x(),setup(e,{emit:r}){const d=T("quill"),l=e.controller,m=a(null),q=ibiz.i18n.getLang();let i=null;const L=a({[`${ibiz.env.tokenHeader}Authorization`]:`${ibiz.env.tokenPrefix}Bearer ${U(k.TOKEN)}`}),M=a(""),N=a(""),b=a(!1),g=a(!1),f=a(""),O=a(!0),P=o=>{const s=o.ops.find(c=>c.insert&&c.insert.image);if(s)return s.insert.image},j=()=>l.valueMode==="text"?i.getText():i.getSemanticHTML(),Q=async o=>{const s=H(o),c=await ibiz.util.file.fileUpload(M.value,s,L.value),p=N.value.replace("%fileId%",c.fileid),v=j();f.value=v.replace(o,p)},V=()=>{if(!m.value)return;const o=l.showToolbar?"snow":"bubble";i=new E(m.value,{theme:o,modules:l.modules,readOnly:e.disabled||e.readonly,placeholder:l.placeHolder}),i.on("text-change",(s,c,p)=>{if(p==="user"){const v=P(s);if(v&&l.imageMode==="file"){Q(v);return}f.value=j()}}),l.valueMode==="text"&&i.setText(e.value||"")};return h(()=>[e.disabled,e.readonly],()=>{i&&(e.disabled||e.readonly?i.enable(!1):i.enable())},{immediate:!0}),h(()=>e.data,o=>{if(o){const s=ibiz.util.file.calcFileUpDownUrl(l.context,l.params,o,l.editorParams);M.value=s.uploadUrl,N.value=s.downloadUrl}},{immediate:!0,deep:!0}),h(()=>e.value,()=>{!i||!e.value||(f.value=e.value,l.valueMode==="text"?i.setText(e.value):(g.value=!0,z(()=>{g.value=!1})))},{immediate:!0}),{ns:d,c:l,lang:q,editing:b,updating:g,editorRef:m,isCollapse:O,handleEdit:()=>{i||V()},handleCancel:()=>{b.value=!1},handleConfirm:()=>{r("change",f.value),b.value=!1}}},render(){let e,r;return n("div",{class:[this.ns.b(),this.disabled?this.ns.m("disabled"):"",this.readonly?this.ns.m("readonly"):"",this.ns.m(this.lang.toLowerCase())]},[!this.updating&&n(u("iBizQuillPreview"),{value:this.value,controller:this.controller,disabled:this.disabled,readonly:this.readonly,showCollapse:this.c.showCollapse,defaultHeight:this.c.defaultHeight,isCollapse:this.isCollapse,onEdit:()=>{this.editing=!0},onCollapse:d=>{this.isCollapse=d}},null),n(u("van-action-sheet"),{show:this.editing,"onUpdate:show":d=>this.editing=d,teleport:"body",class:[this.ns.e("popup"),this.ns.m(this.lang.toLowerCase())],onOpened:this.handleEdit},{default:()=>[n("div",{class:this.ns.e("content")},[n("div",{ref:"editorRef"},[this.controller.valueMode==="html"?n("div",{innerHTML:this.value},null):null])]),n("div",{class:this.ns.e("footer")},[n(u("van-button"),{class:this.ns.e("cancel"),onClick:this.handleCancel},t(e=ibiz.i18n.t("editor.common.cancel"))?e:{default:()=>[e]}),n(u("van-button"),{class:this.ns.e("confirm"),onClick:this.handleConfirm,type:"primary"},t(r=ibiz.i18n.t("editor.common.confirm"))?r:{default:()=>[r]})])]})])}}))}}});
|
|
2
|
+
//# sourceMappingURL=quill-editor-6a0LLTGQ.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quill-editor-VqApoQJq.js","sources":["../src/editor/html/quill-editor/quill-editor.tsx"],"sourcesContent":["/* eslint-disable import/no-extraneous-dependencies */\nimport { defineComponent, nextTick, Ref, ref, watch } from 'vue';\nimport {\n getHtmlProps,\n getEditorEmits,\n useNamespace,\n} from '@ibiz-template/vue3-util';\nimport 'quill/dist/quill.core.css';\nimport 'quill/dist/quill.snow.css';\nimport 'quill/dist/quill.bubble.css';\nimport Quill from 'quill';\nimport { Delta } from 'quill/core';\nimport { base64ToBlob, CoreConst, getAppCookie } from '@ibiz-template/core';\nimport { HtmlEditorController } from '../html-editor.controller';\nimport './quill-editor.scss';\n\n/**\n * 移动端HTML编辑框\n * @primary\n * @description 基于Quill深度定制可扩展的富文本编辑器,集成文件/图片上传、实时预览及样式配置功能,提供完整的富媒体编辑解决方案。支持编辑器类型包含:`移动端HTML编辑框`\n * @editorparams {name:uploadParams,parameterType:IData,defaultvalue:{},description:上传参数}\n * @editorparams {name:exportParams,parameterType:IData,defaultvalue:{},description:下载参数}\n * @editorparams {name:SHOWTOOLBAR,parameterType:boolean,defaultvalue:true,description:显示工具栏}\n * @editorparams {name:VALUEMODE,parameterType:'text' | 'html',defaultvalue:html,description:值模式,暂时只支持html模式}\n * @editorparams {name:IMAGEMODE,parameterType:'base64' | 'file',defaultvalue:'file',description:图片模式}\n * @editorparams {name:MODULES,parameterType:IData,description:quill配置}\n * @editorparams {name:DEFAULTHEIGHT,parameterType:number,defaultvalue:200,description:收缩时的高度}\n * @editorparams {name:SHOWCOLLAPSE,parameterType:boolean,defaultvalue:true,description:是否显示伸缩按钮}\n * @ignoreprops autoFocus | overflowMode\n * @ignoreemits infoTextChange | enter\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst IBizQuill: any = defineComponent({\n name: 'IBizQuill',\n props: getHtmlProps<HtmlEditorController>(),\n emits: getEditorEmits(),\n setup(props, { emit }) {\n const ns = useNamespace('quill');\n const c: HtmlEditorController = props.controller;\n\n const editorRef = ref(null);\n\n const lang = ibiz.i18n.getLang();\n\n // 编辑器对象\n let quill: Quill | null = null;\n\n // 请求头\n const headers: Ref<IData> = ref({\n [`${ibiz.env.tokenHeader}Authorization`]: `${\n ibiz.env.tokenPrefix\n }Bearer ${getAppCookie(CoreConst.TOKEN)}`,\n });\n\n // 上传文件路径\n const uploadUrl: Ref<string> = ref('');\n\n // 下载文件路径\n const downloadUrl: Ref<string> = ref('');\n\n // 编辑状态\n const editing: Ref<boolean> = ref(false);\n\n // 更新中\n const updating: Ref<boolean> = ref(false);\n\n // 临时数据\n const tempValue: Ref<string> = ref('');\n\n // 是否完全展开\n const isCollapse: Ref<boolean> = ref(true);\n\n const getImage = (delta: Delta) => {\n const item = delta.ops.find(x => x.insert && (x.insert as IData).image);\n if (item) {\n return (item.insert as IData).image;\n }\n };\n\n const getValue = () => {\n if (c.valueMode === 'text') {\n return quill!.getText();\n }\n return quill!.getSemanticHTML();\n };\n\n // 处理图片上传(文件模式)\n const handleUpload = async (image: string) => {\n const blob = base64ToBlob(image);\n const file = await ibiz.util.file.fileUpload(\n uploadUrl.value,\n blob,\n headers.value,\n );\n const url = downloadUrl.value.replace('%fileId%', file.fileid);\n const value = getValue();\n tempValue.value = value.replace(image, url);\n };\n\n const init = () => {\n if (!editorRef.value) {\n return;\n }\n const theme = c.showToolbar ? 'snow' : 'bubble';\n quill = new Quill(editorRef.value, {\n theme,\n modules: c.modules,\n readOnly: props.disabled || props.readonly,\n placeholder: c.placeHolder,\n });\n quill.on('text-change', (delta, oldDelta, source) => {\n if (source === 'user') {\n const image = getImage(delta);\n if (image && c.imageMode === 'file') {\n handleUpload(image);\n return;\n }\n tempValue.value = getValue();\n }\n });\n if (c.valueMode === 'text') {\n quill.setText(props.value || '');\n }\n };\n\n watch(\n () => [props.disabled, props.readonly],\n () => {\n if (!quill) {\n return;\n }\n if (props.disabled || props.readonly) {\n quill.enable(false);\n } else {\n quill.enable();\n }\n },\n { immediate: true },\n );\n\n // data响应式变更基础路径\n watch(\n () => props.data,\n newVal => {\n if (newVal) {\n const urls = ibiz.util.file.calcFileUpDownUrl(\n c.context,\n c.params,\n newVal,\n c.editorParams,\n );\n uploadUrl.value = urls.uploadUrl;\n downloadUrl.value = urls.downloadUrl;\n }\n },\n { immediate: true, deep: true },\n );\n\n watch(\n () => props.value,\n () => {\n if (!quill || !props.value) {\n return;\n }\n tempValue.value = props.value;\n if (c.valueMode === 'text') {\n quill.setText(props.value);\n } else {\n updating.value = true;\n nextTick(() => {\n updating.value = false;\n });\n }\n },\n { immediate: true },\n );\n\n // 展开编辑\n const handleEdit = () => {\n if (!quill) {\n init();\n }\n };\n\n // 取消编辑\n const handleCancel = () => {\n editing.value = false;\n };\n\n // 确认编辑\n const handleConfirm = () => {\n emit('change', tempValue.value);\n editing.value = false;\n };\n\n return {\n ns,\n c,\n lang,\n editing,\n updating,\n editorRef,\n isCollapse,\n handleEdit,\n handleCancel,\n handleConfirm,\n };\n },\n render() {\n return (\n <div\n class={[\n this.ns.b(),\n this.disabled ? this.ns.m('disabled') : '',\n this.readonly ? this.ns.m('readonly') : '',\n this.ns.m(this.lang.toLowerCase()),\n ]}\n >\n {!this.updating && (\n <iBizQuillPreview\n value={this.value}\n controller={this.controller}\n disabled={this.disabled}\n readonly={this.readonly}\n showCollapse={this.c.showCollapse}\n defaultHeight={this.c.defaultHeight}\n isCollapse={this.isCollapse}\n onEdit={() => {\n this.editing = true;\n }}\n onCollapse={(val: boolean) => {\n this.isCollapse = val;\n }}\n />\n )}\n <van-action-sheet\n v-model:show={this.editing}\n teleport='body'\n class={[this.ns.e('popup'), this.ns.m(this.lang.toLowerCase())]}\n onOpened={this.handleEdit}\n >\n <div class={this.ns.e('content')}>\n <div ref='editorRef'>\n {this.controller.valueMode === 'html' ? (\n <div v-html={this.value}></div>\n ) : null}\n </div>\n </div>\n <div class={this.ns.e('footer')}>\n <van-button class={this.ns.e('cancel')} onClick={this.handleCancel}>\n {ibiz.i18n.t('editor.common.cancel')}\n </van-button>\n <van-button\n class={this.ns.e('confirm')}\n onClick={this.handleConfirm}\n type='primary'\n >\n {ibiz.i18n.t('editor.common.confirm')}\n </van-button>\n </div>\n </van-action-sheet>\n </div>\n );\n },\n});\n\nexport default IBizQuill;\n"],"names":["s","_isVNode","IBizQuill","exports","defineComponent","getHtmlProps","getEditorEmits","props","emit","ns","useNamespace","c","editorRef","ref","lang","quill","headers","getAppCookie","CoreConst","uploadUrl","downloadUrl","updating","tempValue","isCollapse","delta","item","image","tokenHeader","file","blob","value","getValue","url","init","theme","source","getImage","ops","valueMode","watch","ibiz","newVal","Quill","urls","readOnly","nextTick","editing","immediate","deep","_slot","_slot2","_createVNode","_resolveComponent","handleEdit","val","$event","handleCancel","handleConfirm","_isSlot","render"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"quill-editor-6a0LLTGQ.js","sources":["../src/editor/html/quill-editor/quill-editor.tsx"],"sourcesContent":["/* eslint-disable import/no-extraneous-dependencies */\nimport { defineComponent, nextTick, Ref, ref, watch } from 'vue';\nimport {\n getHtmlProps,\n getEditorEmits,\n useNamespace,\n} from '@ibiz-template/vue3-util';\nimport 'quill/dist/quill.core.css';\nimport 'quill/dist/quill.snow.css';\nimport 'quill/dist/quill.bubble.css';\nimport Quill from 'quill';\nimport { Delta } from 'quill/core';\nimport { base64ToBlob, CoreConst, getAppCookie } from '@ibiz-template/core';\nimport { HtmlEditorController } from '../html-editor.controller';\nimport './quill-editor.scss';\n\n/**\n * 移动端HTML编辑框\n * @primary\n * @description 基于Quill深度定制可扩展的富文本编辑器,集成文件/图片上传、实时预览及样式配置功能,提供完整的富媒体编辑解决方案。支持编辑器类型包含:`移动端HTML编辑框`\n * @editorparams {name:uploadParams,parameterType:IData,defaultvalue:{},description:上传参数}\n * @editorparams {name:exportParams,parameterType:IData,defaultvalue:{},description:下载参数}\n * @editorparams {name:SHOWTOOLBAR,parameterType:boolean,defaultvalue:true,description:显示工具栏}\n * @editorparams {name:VALUEMODE,parameterType:'text' | 'html',defaultvalue:html,description:值模式,暂时只支持html模式}\n * @editorparams {name:IMAGEMODE,parameterType:'base64' | 'file',defaultvalue:'file',description:图片模式}\n * @editorparams {name:MODULES,parameterType:IData,description:quill配置}\n * @editorparams {name:DEFAULTHEIGHT,parameterType:number,defaultvalue:200,description:收缩时的高度}\n * @editorparams {name:SHOWCOLLAPSE,parameterType:boolean,defaultvalue:true,description:是否显示伸缩按钮}\n * @ignoreprops autoFocus | overflowMode\n * @ignoreemits infoTextChange | enter\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst IBizQuill: any = defineComponent({\n name: 'IBizQuill',\n props: getHtmlProps<HtmlEditorController>(),\n emits: getEditorEmits(),\n setup(props, { emit }) {\n const ns = useNamespace('quill');\n const c: HtmlEditorController = props.controller;\n\n const editorRef = ref(null);\n\n const lang = ibiz.i18n.getLang();\n\n // 编辑器对象\n let quill: Quill | null = null;\n\n // 请求头\n const headers: Ref<IData> = ref({\n [`${ibiz.env.tokenHeader}Authorization`]: `${\n ibiz.env.tokenPrefix\n }Bearer ${getAppCookie(CoreConst.TOKEN)}`,\n });\n\n // 上传文件路径\n const uploadUrl: Ref<string> = ref('');\n\n // 下载文件路径\n const downloadUrl: Ref<string> = ref('');\n\n // 编辑状态\n const editing: Ref<boolean> = ref(false);\n\n // 更新中\n const updating: Ref<boolean> = ref(false);\n\n // 临时数据\n const tempValue: Ref<string> = ref('');\n\n // 是否完全展开\n const isCollapse: Ref<boolean> = ref(true);\n\n const getImage = (delta: Delta) => {\n const item = delta.ops.find(x => x.insert && (x.insert as IData).image);\n if (item) {\n return (item.insert as IData).image;\n }\n };\n\n const getValue = () => {\n if (c.valueMode === 'text') {\n return quill!.getText();\n }\n return quill!.getSemanticHTML();\n };\n\n // 处理图片上传(文件模式)\n const handleUpload = async (image: string) => {\n const blob = base64ToBlob(image);\n const file = await ibiz.util.file.fileUpload(\n uploadUrl.value,\n blob,\n headers.value,\n );\n const url = downloadUrl.value.replace('%fileId%', file.fileid);\n const value = getValue();\n tempValue.value = value.replace(image, url);\n };\n\n const init = () => {\n if (!editorRef.value) {\n return;\n }\n const theme = c.showToolbar ? 'snow' : 'bubble';\n quill = new Quill(editorRef.value, {\n theme,\n modules: c.modules,\n readOnly: props.disabled || props.readonly,\n placeholder: c.placeHolder,\n });\n quill.on('text-change', (delta, oldDelta, source) => {\n if (source === 'user') {\n const image = getImage(delta);\n if (image && c.imageMode === 'file') {\n handleUpload(image);\n return;\n }\n tempValue.value = getValue();\n }\n });\n if (c.valueMode === 'text') {\n quill.setText(props.value || '');\n }\n };\n\n watch(\n () => [props.disabled, props.readonly],\n () => {\n if (!quill) {\n return;\n }\n if (props.disabled || props.readonly) {\n quill.enable(false);\n } else {\n quill.enable();\n }\n },\n { immediate: true },\n );\n\n // data响应式变更基础路径\n watch(\n () => props.data,\n newVal => {\n if (newVal) {\n const urls = ibiz.util.file.calcFileUpDownUrl(\n c.context,\n c.params,\n newVal,\n c.editorParams,\n );\n uploadUrl.value = urls.uploadUrl;\n downloadUrl.value = urls.downloadUrl;\n }\n },\n { immediate: true, deep: true },\n );\n\n watch(\n () => props.value,\n () => {\n if (!quill || !props.value) {\n return;\n }\n tempValue.value = props.value;\n if (c.valueMode === 'text') {\n quill.setText(props.value);\n } else {\n updating.value = true;\n nextTick(() => {\n updating.value = false;\n });\n }\n },\n { immediate: true },\n );\n\n // 展开编辑\n const handleEdit = () => {\n if (!quill) {\n init();\n }\n };\n\n // 取消编辑\n const handleCancel = () => {\n editing.value = false;\n };\n\n // 确认编辑\n const handleConfirm = () => {\n emit('change', tempValue.value);\n editing.value = false;\n };\n\n return {\n ns,\n c,\n lang,\n editing,\n updating,\n editorRef,\n isCollapse,\n handleEdit,\n handleCancel,\n handleConfirm,\n };\n },\n render() {\n return (\n <div\n class={[\n this.ns.b(),\n this.disabled ? this.ns.m('disabled') : '',\n this.readonly ? this.ns.m('readonly') : '',\n this.ns.m(this.lang.toLowerCase()),\n ]}\n >\n {!this.updating && (\n <iBizQuillPreview\n value={this.value}\n controller={this.controller}\n disabled={this.disabled}\n readonly={this.readonly}\n showCollapse={this.c.showCollapse}\n defaultHeight={this.c.defaultHeight}\n isCollapse={this.isCollapse}\n onEdit={() => {\n this.editing = true;\n }}\n onCollapse={(val: boolean) => {\n this.isCollapse = val;\n }}\n />\n )}\n <van-action-sheet\n v-model:show={this.editing}\n teleport='body'\n class={[this.ns.e('popup'), this.ns.m(this.lang.toLowerCase())]}\n onOpened={this.handleEdit}\n >\n <div class={this.ns.e('content')}>\n <div ref='editorRef'>\n {this.controller.valueMode === 'html' ? (\n <div v-html={this.value}></div>\n ) : null}\n </div>\n </div>\n <div class={this.ns.e('footer')}>\n <van-button class={this.ns.e('cancel')} onClick={this.handleCancel}>\n {ibiz.i18n.t('editor.common.cancel')}\n </van-button>\n <van-button\n class={this.ns.e('confirm')}\n onClick={this.handleConfirm}\n type='primary'\n >\n {ibiz.i18n.t('editor.common.confirm')}\n </van-button>\n </div>\n </van-action-sheet>\n </div>\n );\n },\n});\n\nexport default IBizQuill;\n"],"names":["s","_isVNode","IBizQuill","exports","defineComponent","getHtmlProps","getEditorEmits","props","emit","ns","useNamespace","c","editorRef","ref","lang","quill","headers","getAppCookie","CoreConst","uploadUrl","downloadUrl","updating","tempValue","isCollapse","delta","item","image","tokenHeader","file","blob","value","getValue","url","init","theme","source","getImage","ops","valueMode","watch","ibiz","newVal","Quill","urls","readOnly","nextTick","editing","immediate","deep","_slot","_slot2","_createVNode","_resolveComponent","handleEdit","val","$event","handleCancel","handleConfirm","_isSlot","render"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
System.register(["vue","@ibiz-template/vue3-util","./quill-
|
|
2
|
-
//# sourceMappingURL=quill-editor-preview-
|
|
1
|
+
System.register(["vue","@ibiz-template/vue3-util","./quill-n54HJUg2.js","lodash-es","./index-yjjy8EQH.js","vant","@ibiz-template/core","ramda","@ibiz-template/runtime","@floating-ui/dom","vue-router","pinia","qx-util","dayjs","vuedraggable","qs","vue-i18n","@ibiz-template/devtool","@ibiz-template/model-helper"],function(k){"use strict";var v,s,p,f,m,l,r,g,C,w;return{setters:[function(e){v=e.defineComponent,s=e.ref,p=e.onMounted,f=e.nextTick,m=e.watch,l=e.createVNode,r=e.resolveComponent},function(e){g=e.getHtmlProps,C=e.useNamespace},function(e){w=e.Q},null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],execute:function(){const e=k("default",v({name:"IBizQuillPreview",props:{...g(),showCollapse:{type:Boolean},defaultHeight:{type:Number,default:200},isCollapse:{type:Boolean,default:!1}},setup(t,{emit:b}){const H=C("quill-preview"),c=t.controller,i=s(null),B=ibiz.i18n.getLang();let x=null;const h=s(""),o=s("auto"),u=s(!1),I=()=>{i.value&&(x=new w(i.value,{theme:"bubble",modules:c.modules,readOnly:!0,placeholder:c.placeHolder}),c.valueMode==="text"&&x.setText(t.value||""))},d=()=>{if(t.isCollapse&&i.value){const n=i.value.offsetHeight;n<t.defaultHeight?(o.value=`${n}px`,u.value=!1):(o.value=`${t.defaultHeight}px`,u.value=!0)}},P=n=>{if(!n)return;const a=n.querySelectorAll("img");let y=0;a.forEach(z=>{z.addEventListener("load",()=>{const T=z.offsetHeight;y+=T,y>t.defaultHeight&&(o.value=`${t.defaultHeight}px`,u.value=!0)})})};p(()=>{I(),f(()=>{d(),P(i.value)})});const q=()=>{b("edit")},M=()=>{h.value=""},N=n=>{const a=n.target;a&&a.tagName==="IMG"&&(h.value=a.src)},L=()=>{b("collapse",!t.isCollapse),d()},Q=()=>l("div",{class:H.b("collapse-btn"),onClick:L},[l("span",null,[t.isCollapse?ibiz.i18n.t("editor.html.expand"):ibiz.i18n.t("editor.html.collapse")]),t.isCollapse&&l("ion-icon",{name:"caret-down-outline"},null),!t.isCollapse&&l("ion-icon",{name:"caret-up-outline"},null)]);return m(()=>t.value,()=>{d()},{immediate:!0}),{ns:H,lang:B,editorRef:i,previewImage:h,collapseHeight:o,showCollapseBtn:u,handleClick:q,handleContentClick:N,handlePreviewClose:M,renderCollapseBtn:Q}},render(){return l("div",{class:[this.ns.b(),this.disabled?this.ns.m("disabled"):"",this.readonly?this.ns.m("readonly"):"",this.ns.m(this.lang.toLowerCase()),this.showCollapse?this.ns.m("show-collapse"):"",this.ns.is("collapse",this.isCollapse)],style:`--default-height: ${this.collapseHeight}`},[l("div",{ref:"editorRef",onClick:this.handleContentClick},[this.controller.valueMode==="html"?l("div",{innerHTML:this.value},null):null]),!this.readonly&&!this.disabled?l("div",{onClick:this.handleClick,class:this.ns.e("edit")},[l("ion-icon",{name:"create-outline"},null)]):null,this.showCollapse&&this.showCollapseBtn&&this.renderCollapseBtn(),l(r("van-popup"),{class:this.ns.e("image-popup"),show:!!this.previewImage,"close-on-popstate":!0,onClose:this.handlePreviewClose},{default:()=>[l(r("iBizPreviewImage"),{url:this.previewImage},null)]})])}}))}}});
|
|
2
|
+
//# sourceMappingURL=quill-editor-preview-PFiM-IPE.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quill-editor-preview-
|
|
1
|
+
{"version":3,"file":"quill-editor-preview-PFiM-IPE.js","sources":["../src/editor/html/quill-editor-preview/quill-editor-preview.tsx"],"sourcesContent":["/* eslint-disable import/no-extraneous-dependencies */\nimport { defineComponent, nextTick, onMounted, ref, watch } from 'vue';\nimport { getHtmlProps, useNamespace } from '@ibiz-template/vue3-util';\nimport Quill from 'quill';\nimport { HtmlEditorController } from '../html-editor.controller';\nimport './quill-editor-preview.scss';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst IBizQuillPreview: any = defineComponent({\n name: 'IBizQuillPreview',\n props: {\n ...getHtmlProps<HtmlEditorController>(),\n showCollapse: {\n type: Boolean,\n },\n defaultHeight: {\n type: Number,\n default: 200,\n },\n isCollapse: {\n type: Boolean,\n default: false,\n },\n },\n setup(props, { emit }) {\n const ns = useNamespace('quill-preview');\n const c: HtmlEditorController = props.controller;\n\n const editorRef = ref(null);\n\n const lang = ibiz.i18n.getLang();\n\n // 编辑器对象\n let quill: Quill | null = null;\n\n // 预览图片路径\n const previewImage = ref('');\n\n // 伸缩内容高度\n const collapseHeight = ref('auto');\n\n // 显示伸缩按钮\n const showCollapseBtn = ref(false);\n\n const init = () => {\n if (!editorRef.value) {\n return;\n }\n quill = new Quill(editorRef.value, {\n theme: 'bubble',\n modules: c.modules,\n readOnly: true,\n placeholder: c.placeHolder,\n });\n if (c.valueMode === 'text') {\n quill.setText(props.value || '');\n }\n };\n\n // 重置伸缩高度\n const resetCollapseHeight = () => {\n if (props.isCollapse && editorRef.value) {\n // 收缩时\n const height = (editorRef.value as HTMLElement).offsetHeight;\n // 内容高度低于设置的默认高度时,拿内容高度作为伸缩高度\n if (height < props.defaultHeight) {\n collapseHeight.value = `${height}px`;\n showCollapseBtn.value = false;\n } else {\n collapseHeight.value = `${props.defaultHeight}px`;\n showCollapseBtn.value = true;\n }\n }\n };\n\n // 监听img加载情况\n const watchHtmlImages = (container: HTMLElement | null) => {\n if (!container) return;\n const images = container.querySelectorAll('img');\n let totalHieght = 0;\n images.forEach(image => {\n image.addEventListener('load', () => {\n const height = image.offsetHeight;\n totalHieght += height;\n if (totalHieght > props.defaultHeight) {\n collapseHeight.value = `${props.defaultHeight}px`;\n showCollapseBtn.value = true;\n }\n });\n });\n };\n\n onMounted(() => {\n init();\n nextTick(() => {\n resetCollapseHeight();\n watchHtmlImages(editorRef.value);\n });\n });\n\n const handleClick = () => {\n emit('edit');\n };\n\n const handlePreviewClose = () => {\n previewImage.value = '';\n };\n\n const handleContentClick = (event: MouseEvent) => {\n const target = event.target as HTMLElement;\n if (target && target.tagName === 'IMG') {\n previewImage.value = (target as IData).src;\n }\n };\n\n // 点击伸缩按钮\n const onClick = () => {\n // isCollapse.value = !isCollapse.value;\n emit('collapse', !props.isCollapse);\n resetCollapseHeight();\n };\n\n // 绘制伸缩按钮\n const renderCollapseBtn = () => {\n return (\n <div class={ns.b('collapse-btn')} onClick={onClick}>\n <span>\n {props.isCollapse\n ? ibiz.i18n.t('editor.html.expand')\n : ibiz.i18n.t('editor.html.collapse')}\n </span>\n {props.isCollapse && <ion-icon name='caret-down-outline'></ion-icon>}\n {!props.isCollapse && <ion-icon name='caret-up-outline'></ion-icon>}\n </div>\n );\n };\n\n watch(\n () => props.value,\n () => {\n resetCollapseHeight();\n },\n {\n immediate: true,\n },\n );\n\n return {\n ns,\n lang,\n editorRef,\n previewImage,\n collapseHeight,\n showCollapseBtn,\n handleClick,\n handleContentClick,\n handlePreviewClose,\n renderCollapseBtn,\n };\n },\n render() {\n return (\n <div\n class={[\n this.ns.b(),\n this.disabled ? this.ns.m('disabled') : '',\n this.readonly ? this.ns.m('readonly') : '',\n this.ns.m(this.lang.toLowerCase()),\n this.showCollapse ? this.ns.m('show-collapse') : '',\n this.ns.is('collapse', this.isCollapse),\n ]}\n style={`--default-height: ${this.collapseHeight}`}\n >\n <div ref='editorRef' onClick={this.handleContentClick}>\n {this.controller.valueMode === 'html' ? (\n <div v-html={this.value}></div>\n ) : null}\n </div>\n {!this.readonly && !this.disabled ? (\n <div onClick={this.handleClick} class={this.ns.e('edit')}>\n <ion-icon name='create-outline'></ion-icon>\n </div>\n ) : null}\n {this.showCollapse && this.showCollapseBtn && this.renderCollapseBtn()}\n <van-popup\n class={this.ns.e('image-popup')}\n show={!!this.previewImage}\n close-on-popstate={true}\n onClose={this.handlePreviewClose}\n >\n <iBizPreviewImage url={this.previewImage}></iBizPreviewImage>\n </van-popup>\n </div>\n );\n },\n});\n\nexport default IBizQuillPreview;\n"],"names":["IBizQuillPreview","name","props","getHtmlProps","showCollapse","type","Boolean","defaultHeight","default","isCollapse","emit","setup","ns","ref","c","quill","lang","getLang","showCollapseBtn","init","editorRef","value","theme","modules","height","readOnly","collapseHeight","placeHolder","resetCollapseHeight","container","images","totalHieght","image","onMounted","watchHtmlImages","nextTick","previewImage","handleContentClick","event","target","renderCollapseBtn","_createVNode","handlePreviewClose","watch","onClick","handleClick","immediate","_resolveComponent","render"],"mappings":"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"}
|