asai-vue-host-form 0.2.17 → 0.2.18

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.
@@ -8,7 +8,7 @@ const A = { class: "as-form-area" }, f = /* @__PURE__ */ p({
8
8
  },
9
9
  setup(e) {
10
10
  const a = e, { $fn: s } = a.ujt, { get: r, clear: m } = s.createComponentLoader({
11
- files: /* @__PURE__ */ Object.assign({ "./AsaiFormLabel.vue": () => import("./AsaiFormLabel-BAXvUybW.mjs"), "./AsaiFormLabelArea.vue": () => import("./AsaiFormLabelArea-CmjCZFfF.mjs"), "./AsaiFormLi.vue": () => import("./AsaiFormLi-B-Po6qaB.mjs"), "./AsaiFormObject.vue": () => import("./AsaiFormObject-B8WHlNwq.mjs"), "./AsaiFormShow.vue": () => import("./AsaiFormShow-Da4NJXK7.mjs"), "./AsaiInput.vue": () => import("./AsaiInput-D4BZoHDc.mjs"), "./AsaiRichEditor.vue": () => import("./AsaiRichEditor-QhaxaTbJ.mjs"), "./AsaiRichEditorToolbar.vue": () => import("./AsaiRichEditorToolbar-BleVnkxV.mjs"), "./AsaiSelect.vue": () => import("./AsaiSelect-B4KZbNRO.mjs"), "./AsaiSelectCl.vue": () => import("./AsaiSelectCl-Cl6N0v40.mjs"), "./AsaiSelectLv.vue": () => import("./AsaiSelectLv-DNjfTp67.mjs"), "./AsaiTextJson.vue": () => import("./AsaiTextJson-Dr7yX0_I.mjs"), "./AsaiTextarea.vue": () => import("./AsaiTextarea-O38xA-tq.mjs"), "./AsaiUpBinary.vue": () => import("./AsaiUpBinary-CBV4sACD.mjs"), "./AsaiUpload.vue": () => import("./AsaiUpload-BQTw42KS.mjs"), "./AsaiUploadImg.vue": () => import("./AsaiUploadImg-CSQXvm8H.mjs"), "./AsaiUploadImgCut.vue": () => import("./AsaiUploadImgCut-DTWuaOl8.mjs"), "./AsaiUploadImgCutPop.vue": () => import("./AsaiUploadImgCutPop-0gVLGw9m.mjs") }),
11
+ files: /* @__PURE__ */ Object.assign({ "./AsaiFormLabel.vue": () => import("./AsaiFormLabel-BAXvUybW.mjs"), "./AsaiFormLabelArea.vue": () => import("./AsaiFormLabelArea-CmjCZFfF.mjs"), "./AsaiFormLi.vue": () => import("./AsaiFormLi-B-Po6qaB.mjs"), "./AsaiFormObject.vue": () => import("./AsaiFormObject-B8WHlNwq.mjs"), "./AsaiFormShow.vue": () => import("./AsaiFormShow-Da4NJXK7.mjs"), "./AsaiInput.vue": () => import("./AsaiInput-D4BZoHDc.mjs"), "./AsaiRichEditor.vue": () => import("./AsaiRichEditor-H9WK-q7h.mjs"), "./AsaiRichEditorToolbar.vue": () => import("./AsaiRichEditorToolbar-BleVnkxV.mjs"), "./AsaiSelect.vue": () => import("./AsaiSelect-B4KZbNRO.mjs"), "./AsaiSelectCl.vue": () => import("./AsaiSelectCl-Cl6N0v40.mjs"), "./AsaiSelectLv.vue": () => import("./AsaiSelectLv-DNjfTp67.mjs"), "./AsaiTextJson.vue": () => import("./AsaiTextJson-Dr7yX0_I.mjs"), "./AsaiTextarea.vue": () => import("./AsaiTextarea-O38xA-tq.mjs"), "./AsaiUpBinary.vue": () => import("./AsaiUpBinary-CBV4sACD.mjs"), "./AsaiUpload.vue": () => import("./AsaiUpload-BQTw42KS.mjs"), "./AsaiUploadImg.vue": () => import("./AsaiUploadImg-CSQXvm8H.mjs"), "./AsaiUploadImgCut.vue": () => import("./AsaiUploadImgCut-DTWuaOl8.mjs"), "./AsaiUploadImgCutPop.vue": () => import("./AsaiUploadImgCutPop-0gVLGw9m.mjs") }),
12
12
  // 扫描当前目录下所有.vue文件
13
13
  eager: !1,
14
14
  // 异步加载(按需加载)
@@ -18,7 +18,7 @@ const W = { class: "as-richtext-content" }, O = ["placeholder"], P = /* @__PURE_
18
18
  }, p = m(null), o = m(null), M = m(null), r = m(t.asaidata?.rule?.[t.formkey]?.editorty || 0);
19
19
  let d = null, h = null, c = null;
20
20
  async function s() {
21
- return d || (h || (h = import("./useRichEditorMedia-C2zeDyJA.mjs").then((a) => (d = a.createRichEditorMedia(u), d))), h);
21
+ return d || (h || (h = import("./useRichEditorMedia-BOIU0Dbf.mjs").then((a) => (d = a.createRichEditorMedia(u), d))), h);
22
22
  }
23
23
  j(() => {
24
24
  k(), s();
@@ -4,7 +4,7 @@ const o = {
4
4
  loadfn: i.loadfn,
5
5
  app: a,
6
6
  eager: !1,
7
- files: /* @__PURE__ */ Object.assign({ "./asui/form/AsaiForm.vue": () => import("./AsaiForm-C1rkQj_w.mjs"), "./asui/form/AsaiFormLabel.vue": () => import("./AsaiFormLabel-BAXvUybW.mjs"), "./asui/form/AsaiFormLabelArea.vue": () => import("./AsaiFormLabelArea-CmjCZFfF.mjs"), "./asui/form/AsaiFormLi.vue": () => import("./AsaiFormLi-B-Po6qaB.mjs"), "./asui/form/AsaiFormObject.vue": () => import("./AsaiFormObject-B8WHlNwq.mjs"), "./asui/form/AsaiFormShow.vue": () => import("./AsaiFormShow-Da4NJXK7.mjs"), "./asui/form/AsaiInput.vue": () => import("./AsaiInput-D4BZoHDc.mjs"), "./asui/form/AsaiRichEditor.vue": () => import("./AsaiRichEditor-QhaxaTbJ.mjs"), "./asui/form/AsaiRichEditorToolbar.vue": () => import("./AsaiRichEditorToolbar-BleVnkxV.mjs"), "./asui/form/AsaiSelect.vue": () => import("./AsaiSelect-B4KZbNRO.mjs"), "./asui/form/AsaiSelectCl.vue": () => import("./AsaiSelectCl-Cl6N0v40.mjs"), "./asui/form/AsaiSelectLv.vue": () => import("./AsaiSelectLv-DNjfTp67.mjs"), "./asui/form/AsaiTextJson.vue": () => import("./AsaiTextJson-Dr7yX0_I.mjs"), "./asui/form/AsaiTextarea.vue": () => import("./AsaiTextarea-O38xA-tq.mjs"), "./asui/form/AsaiUpBinary.vue": () => import("./AsaiUpBinary-CBV4sACD.mjs"), "./asui/form/AsaiUpload.vue": () => import("./AsaiUpload-BQTw42KS.mjs"), "./asui/form/AsaiUploadImg.vue": () => import("./AsaiUploadImg-CSQXvm8H.mjs"), "./asui/form/AsaiUploadImgCut.vue": () => import("./AsaiUploadImgCut-DTWuaOl8.mjs"), "./asui/form/AsaiUploadImgCutPop.vue": () => import("./AsaiUploadImgCutPop-0gVLGw9m.mjs"), "./asui/formbase/AsfCheck.vue": () => import("./AsfCheck-BcCEmH1r.mjs"), "./asui/formbase/AsfInput.vue": () => import("./AsfInput-By00xBFI.mjs"), "./asui/formbase/AsfInputSn.vue": () => import("./AsfInputSn-BszCoVn-.mjs"), "./asui/formbase/AsfSelect.vue": () => import("./AsfSelect-E9c8eZQ4.mjs"), "./asui/formbase/AsfTextarea.vue": () => import("./AsfTextarea-BAGk31uV.mjs"), "./asui/formbase/AsfTick.vue": () => import("./AsfTick-29dNfK_T.mjs"), "./asui/formbase/AsfUploadFile.vue": () => import("./AsfUploadFile-DNpyDdOv.mjs"), "./asui/formbase/AsfUploadText.vue": () => import("./AsfUploadText-BLOaIAVI.mjs") })
7
+ files: /* @__PURE__ */ Object.assign({ "./asui/form/AsaiForm.vue": () => import("./AsaiForm-DE5DGkqW.mjs"), "./asui/form/AsaiFormLabel.vue": () => import("./AsaiFormLabel-BAXvUybW.mjs"), "./asui/form/AsaiFormLabelArea.vue": () => import("./AsaiFormLabelArea-CmjCZFfF.mjs"), "./asui/form/AsaiFormLi.vue": () => import("./AsaiFormLi-B-Po6qaB.mjs"), "./asui/form/AsaiFormObject.vue": () => import("./AsaiFormObject-B8WHlNwq.mjs"), "./asui/form/AsaiFormShow.vue": () => import("./AsaiFormShow-Da4NJXK7.mjs"), "./asui/form/AsaiInput.vue": () => import("./AsaiInput-D4BZoHDc.mjs"), "./asui/form/AsaiRichEditor.vue": () => import("./AsaiRichEditor-H9WK-q7h.mjs"), "./asui/form/AsaiRichEditorToolbar.vue": () => import("./AsaiRichEditorToolbar-BleVnkxV.mjs"), "./asui/form/AsaiSelect.vue": () => import("./AsaiSelect-B4KZbNRO.mjs"), "./asui/form/AsaiSelectCl.vue": () => import("./AsaiSelectCl-Cl6N0v40.mjs"), "./asui/form/AsaiSelectLv.vue": () => import("./AsaiSelectLv-DNjfTp67.mjs"), "./asui/form/AsaiTextJson.vue": () => import("./AsaiTextJson-Dr7yX0_I.mjs"), "./asui/form/AsaiTextarea.vue": () => import("./AsaiTextarea-O38xA-tq.mjs"), "./asui/form/AsaiUpBinary.vue": () => import("./AsaiUpBinary-CBV4sACD.mjs"), "./asui/form/AsaiUpload.vue": () => import("./AsaiUpload-BQTw42KS.mjs"), "./asui/form/AsaiUploadImg.vue": () => import("./AsaiUploadImg-CSQXvm8H.mjs"), "./asui/form/AsaiUploadImgCut.vue": () => import("./AsaiUploadImgCut-DTWuaOl8.mjs"), "./asui/form/AsaiUploadImgCutPop.vue": () => import("./AsaiUploadImgCutPop-0gVLGw9m.mjs"), "./asui/formbase/AsfCheck.vue": () => import("./AsfCheck-BcCEmH1r.mjs"), "./asui/formbase/AsfInput.vue": () => import("./AsfInput-By00xBFI.mjs"), "./asui/formbase/AsfInputSn.vue": () => import("./AsfInputSn-BszCoVn-.mjs"), "./asui/formbase/AsfSelect.vue": () => import("./AsfSelect-E9c8eZQ4.mjs"), "./asui/formbase/AsfTextarea.vue": () => import("./AsfTextarea-BAGk31uV.mjs"), "./asui/formbase/AsfTick.vue": () => import("./AsfTick-29dNfK_T.mjs"), "./asui/formbase/AsfUploadFile.vue": () => import("./AsfUploadFile-DNpyDdOv.mjs"), "./asui/formbase/AsfUploadText.vue": () => import("./AsfUploadText-BLOaIAVI.mjs") })
8
8
  });
9
9
  }
10
10
  };
@@ -1 +1 @@
1
- (function(F,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],e):(F=typeof globalThis<"u"?globalThis:F||self,e(F["asai-vue-host-form"]={},F.Vue))})(this,(function(F,e){"use strict";const G={install(t,o){o.loadvue({loadfn:o.loadfn,app:t,eager:!1,files:Object.assign({"./asui/form/AsaiForm.vue":()=>Promise.resolve().then(()=>_),"./asui/form/AsaiFormLabel.vue":()=>Promise.resolve().then(()=>N),"./asui/form/AsaiFormLabelArea.vue":()=>Promise.resolve().then(()=>P),"./asui/form/AsaiFormLi.vue":()=>Promise.resolve().then(()=>L),"./asui/form/AsaiFormObject.vue":()=>Promise.resolve().then(()=>U),"./asui/form/AsaiFormShow.vue":()=>Promise.resolve().then(()=>O),"./asui/form/AsaiInput.vue":()=>Promise.resolve().then(()=>D),"./asui/form/AsaiRichEditor.vue":()=>Promise.resolve().then(()=>z),"./asui/form/AsaiRichEditorToolbar.vue":()=>Promise.resolve().then(()=>T),"./asui/form/AsaiSelect.vue":()=>Promise.resolve().then(()=>v),"./asui/form/AsaiSelectCl.vue":()=>Promise.resolve().then(()=>R),"./asui/form/AsaiSelectLv.vue":()=>Promise.resolve().then(()=>H),"./asui/form/AsaiTextJson.vue":()=>Promise.resolve().then(()=>q),"./asui/form/AsaiTextarea.vue":()=>Promise.resolve().then(()=>W),"./asui/form/AsaiUpBinary.vue":()=>Promise.resolve().then(()=>Y),"./asui/form/AsaiUpload.vue":()=>Promise.resolve().then(()=>X),"./asui/form/AsaiUploadImg.vue":()=>Promise.resolve().then(()=>K),"./asui/form/AsaiUploadImgCut.vue":()=>Promise.resolve().then(()=>J),"./asui/form/AsaiUploadImgCutPop.vue":()=>Promise.resolve().then(()=>Q),"./asui/formbase/AsfCheck.vue":()=>Promise.resolve().then(()=>Ue),"./asui/formbase/AsfInput.vue":()=>Promise.resolve().then(()=>We),"./asui/formbase/AsfInputSn.vue":()=>Promise.resolve().then(()=>Ke),"./asui/formbase/AsfSelect.vue":()=>Promise.resolve().then(()=>nt),"./asui/formbase/AsfTextarea.vue":()=>Promise.resolve().then(()=>it),"./asui/formbase/AsfTick.vue":()=>Promise.resolve().then(()=>st),"./asui/formbase/AsfUploadFile.vue":()=>Promise.resolve().then(()=>mt),"./asui/formbase/AsfUploadText.vue":()=>Promise.resolve().then(()=>ut)})})}},Z={class:"as-form-area"},_=Object.freeze(Object.defineProperty({__proto__:null,default:e.defineComponent({__name:"AsaiForm",props:{ujt:{},asaidata:{},opt:{}},setup(t){const o=t,{$fn:a}=o.ujt,{get:f,clear:r}=a.createComponentLoader({files:Object.assign({"./AsaiFormLabel.vue":()=>Promise.resolve().then(()=>N),"./AsaiFormLabelArea.vue":()=>Promise.resolve().then(()=>P),"./AsaiFormLi.vue":()=>Promise.resolve().then(()=>L),"./AsaiFormObject.vue":()=>Promise.resolve().then(()=>U),"./AsaiFormShow.vue":()=>Promise.resolve().then(()=>O),"./AsaiInput.vue":()=>Promise.resolve().then(()=>D),"./AsaiRichEditor.vue":()=>Promise.resolve().then(()=>z),"./AsaiRichEditorToolbar.vue":()=>Promise.resolve().then(()=>T),"./AsaiSelect.vue":()=>Promise.resolve().then(()=>v),"./AsaiSelectCl.vue":()=>Promise.resolve().then(()=>R),"./AsaiSelectLv.vue":()=>Promise.resolve().then(()=>H),"./AsaiTextJson.vue":()=>Promise.resolve().then(()=>q),"./AsaiTextarea.vue":()=>Promise.resolve().then(()=>W),"./AsaiUpBinary.vue":()=>Promise.resolve().then(()=>Y),"./AsaiUpload.vue":()=>Promise.resolve().then(()=>X),"./AsaiUploadImg.vue":()=>Promise.resolve().then(()=>K),"./AsaiUploadImgCut.vue":()=>Promise.resolve().then(()=>J),"./AsaiUploadImgCutPop.vue":()=>Promise.resolve().then(()=>Q)}),eager:!1,cache:!0,cacheKey:"form_",target:o.asaidata,targetKey:"comp"});return o.asaidata.cmComp=n=>{const{comp:l,rule:s}=o.asaidata;return s?.[n]?.comp&&l[s[n].comp]?f(s[n].comp):l[n]?f(n):n==="object"&&l?.object?f("object"):null},o.opt?.isedit&&(o.asaidata.isedit=1),e.onUnmounted(()=>{r(),o.asaidata&&(o.asaidata.cmComp=null)}),(n,l)=>{const s=e.resolveComponent("AsaiFormLi");return e.openBlock(),e.createElementBlock("div",Z,[e.createVNode(s,{ujt:t.ujt,asaidata:t.asaidata,formdata:t.asaidata.data,opt:t.opt},null,8,["ujt","asaidata","formdata","opt"])])}}})},Symbol.toStringTag,{value:"Module"})),ee={key:3},N=Object.freeze(Object.defineProperty({__proto__:null,default:e.defineComponent({__name:"AsaiFormLabel",props:{ujt:{},asaidata:{},formdata:{},formkey:{}},setup(t){const o=t;return(a,f)=>{const r=e.resolveComponent("AsaiFormLabelArea");return e.openBlock(),e.createBlock(r,{ujt:t.ujt,asaidata:t.asaidata,formdata:t.formdata,formkey:t.formkey},{default:e.withCtx(()=>[o.asaidata.notit?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[],64)):Array.isArray(o.formdata)?(e.openBlock(),e.createElementBlock("span",{key:1,class:e.normalizeClass({"as-label-ico-arr":t.asaidata.ic>1&&typeof o.formdata[t.formkey]!="number","as-label-ico-arr-num":t.asaidata.ic>1&&typeof o.formdata[t.formkey]=="number","as-label-require":t.asaidata?.rule?.[t.formkey]?.require})},null,2)):(e.openBlock(),e.createElementBlock("span",{key:2,class:e.normalizeClass({"as-label-ico":t.asaidata.ic>1&&typeof o.formdata[t.formkey]!="number","as-label-ico-num":t.asaidata.ic>1&&typeof o.formdata[t.formkey]=="number","as-label-require":t.asaidata?.rule?.[t.formkey]?.require})},e.toDisplayString(t.asaidata.eq>2?'"':"")+e.toDisplayString(o.asaidata?.lang?.[t.formkey]||t.formkey)+e.toDisplayString(t.asaidata.eq>2?'"':"")+e.toDisplayString(t.asaidata.eq?":":""),3)),e.renderSlot(a.$slots,"default"),t.asaidata.eq>2?(e.openBlock(),e.createElementBlock("span",ee,",")):e.createCommentVNode("",!0)]),_:3},8,["ujt","asaidata","formdata","formkey"])}}})},Symbol.toStringTag,{value:"Module"})),P=Object.freeze(Object.defineProperty({__proto__:null,default:e.defineComponent({__name:"AsaiFormLabelArea",props:{ujt:{},asaidata:{},formdata:{},formkey:{}},setup(t){const o=t;return(a,f)=>o.asaidata.rule?.[t.formkey]?.nolabel||typeof o.formdata?.[t.formkey]=="object"?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["label",t.asaidata?.rule?.[t.formkey]?.class||""]),style:e.normalizeStyle(t.asaidata?.rule?.[t.formkey]?.style||"")},[e.renderSlot(a.$slots,"default")],6)):(e.openBlock(),e.createElementBlock("label",{key:1,class:e.normalizeClass(t.asaidata?.rule?.[t.formkey]?.class||""),style:e.normalizeStyle(t.asaidata?.rule?.[t.formkey]?.style||"")},[e.renderSlot(a.$slots,"default")],6))}})},Symbol.toStringTag,{value:"Module"})),L=Object.freeze(Object.defineProperty({__proto__:null,default:e.defineComponent({__name:"AsaiFormLi",props:{ujt:{},asaidata:{},formdata:{},opt:{}},setup(t){const o=t;return(a,f)=>{const r=e.resolveComponent("AsaiFormShow"),n=e.resolveComponent("AsaiFormObject"),l=e.resolveComponent("AsaiInput");return e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.formdata,(s,i)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[o.asaidata.rule?.[i]?.[o.opt?.isedit?"noedit":"noadd"]==2?(e.openBlock(),e.createBlock(r,{key:0,ujt:t.ujt,asaidata:t.asaidata,formdata:t.formdata,formkey:i},null,8,["ujt","asaidata","formdata","formkey"])):o.asaidata.rule?.[i]?.[o.opt?.isedit?"noedit":"noadd"]?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[t.asaidata?.cmComp&&t.asaidata?.cmComp(i)?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.asaidata.cmComp(i)),{key:0,ujt:t.ujt,asaidata:t.asaidata,formdata:t.formdata,formkey:i},null,8,["ujt","asaidata","formdata","formkey"])):typeof s=="object"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[t.asaidata?.cmComp&&t.asaidata?.cmComp("object")?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.asaidata.cmComp("object")),{key:0,ujt:t.ujt,asaidata:t.asaidata,formdata:t.formdata,formkey:i},null,8,["ujt","asaidata","formdata","formkey"])):(e.openBlock(),e.createBlock(n,{key:1,ujt:t.ujt,asaidata:t.asaidata,formdata:t.formdata,formkey:i},null,8,["ujt","asaidata","formdata","formkey"]))],64)):(e.openBlock(),e.createBlock(l,{key:2,ujt:t.ujt,asaidata:t.asaidata,formdata:t.formdata,formkey:i},null,8,["ujt","asaidata","formdata","formkey"]))],64))],64))),256)}}})},Symbol.toStringTag,{value:"Module"})),te={key:0},U=Object.freeze(Object.defineProperty({__proto__:null,default:e.defineComponent({__name:"AsaiFormObject",props:{ujt:{},asaidata:{},formdata:{},formkey:{}},setup(t){const o=t,a=e.ref(!0);return e.onUnmounted(()=>{a.value=null}),(f,r)=>{const n=e.resolveComponent("AsaiFormLi");return typeof o.formdata[t.formkey]=="object"?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(`${t.asaidata.ic?"as-form-row as-form-obj":"as-form-row"}`)},[e.createElementVNode("span",{class:e.normalizeClass(`${t.asaidata.ic>1?a.value?"as-label-ico-close":"as-label-ico-open":""}`),onClick:r[0]||(r[0]=l=>a.value=!a.value)},[e.createTextVNode(e.toDisplayString(t.asaidata.eq>2?'"':"")+e.toDisplayString(o.asaidata?.lang&&o.asaidata?.lang[t.formkey]||t.formkey)+e.toDisplayString(t.asaidata.eq>2?'"':"")+e.toDisplayString(t.asaidata.eq?":":"")+" ",1),a.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("span",te,e.toDisplayString(t.asaidata.eq>1?Array.isArray(o.formdata[t.formkey])?"[":"{":"")+" ... "+e.toDisplayString(t.asaidata.eq>1?Array.isArray(o.formdata[t.formkey])?"]":"}":"")+e.toDisplayString(t.asaidata.eq>2?",":""),1))],2),a.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(t.asaidata.eq>1?Array.isArray(o.formdata[t.formkey])?"[":"{":"")+" ",1),e.createVNode(n,{ujt:t.ujt,asaidata:t.asaidata,formdata:o.formdata[t.formkey]},null,8,["ujt","asaidata","formdata"]),e.createTextVNode(" "+e.toDisplayString(t.asaidata.eq>1?Array.isArray(o.formdata[t.formkey])?"]":"}":"")+e.toDisplayString(t.asaidata.eq>2?",":""),1)],64)):e.createCommentVNode("",!0)],2)):e.createCommentVNode("",!0)}}})},Symbol.toStringTag,{value:"Module"})),O=Object.freeze(Object.defineProperty({__proto__:null,default:e.defineComponent({__name:"AsaiFormShow",props:{ujt:{},asaidata:{},formdata:{},formkey:{}},setup(t){const o=t;return(a,f)=>{const r=e.resolveComponent("AsfInput"),n=e.resolveComponent("AsaiFormLabel");return e.openBlock(),e.createBlock(n,{ujt:t.ujt,asaidata:t.asaidata,formdata:t.formdata,formkey:t.formkey},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(typeof o.formdata[t.formkey]=="string"&&t.asaidata.eq>2?'"':"")+" ",1),e.createVNode(r,{ujt:t.ujt,opt:{...o.asaidata.rule?.[t.formkey]?.opt||{},type:o.asaidata.rule?.[t.formkey]?.type||(typeof o.formdata[t.formkey]=="number"?"number":"text"),max:o.asaidata.rule?.[t.formkey]?.max,min:o.asaidata.rule?.[t.formkey]?.min,noedit:!0},modelValue:o.formdata[t.formkey],"onUpdate:modelValue":f[0]||(f[0]=l=>o.formdata[t.formkey]=l)},null,8,["ujt","opt","modelValue"]),e.createTextVNode(" "+e.toDisplayString(typeof o.formdata[t.formkey]=="string"&&t.asaidata.eq>2?'"':""),1)]),_:1},8,["ujt","asaidata","formdata","formkey"])}}})},Symbol.toStringTag,{value:"Module"})),D=Object.freeze(Object.defineProperty({__proto__:null,default:e.defineComponent({__name:"AsaiInput",props:{ujt:{},asaidata:{},formdata:{},formkey:{}},setup(t){const o=t,{$fn:a}=o.ujt,f=e.computed(()=>a.As.toArr(o.asaidata?.lang?.[o.formkey+"data"])||a.As.toArr(o.asaidata?.rule?.[o.formkey]?.[o.formkey+"data"])||a.As.toArr(a.lg(o.asaidata?.rule?.[o.formkey]?.data))||[]);return(r,n)=>{const l=e.resolveComponent("AsfCheck"),s=e.resolveComponent("AsfInput"),i=e.resolveComponent("AsaiFormLabel");return e.openBlock(),e.createBlock(i,{ujt:t.ujt,asaidata:t.asaidata,formdata:t.formdata,formkey:t.formkey},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(typeof o.formdata[t.formkey]=="string"&&t.asaidata.eq>2?'"':"")+" ",1),o.asaidata.rule?.[t.formkey]?.type==="checkbox"||typeof o.formdata[t.formkey]=="boolean"?(e.openBlock(),e.createBlock(l,{key:0,ujt:t.ujt,opt:{...o.asaidata.rule?.[t.formkey]?.opt||{},selectdata:f.value},modelValue:o.formdata[t.formkey],"onUpdate:modelValue":n[0]||(n[0]=u=>o.formdata[t.formkey]=u)},null,8,["ujt","opt","modelValue"])):(e.openBlock(),e.createBlock(s,{key:1,ujt:t.ujt,opt:{...o.asaidata.rule?.[t.formkey]?.opt||{},type:o.asaidata.rule?.[t.formkey]?.type||(typeof o.formdata[t.formkey]=="number"?"number":"text"),max:o.asaidata.rule?.[t.formkey]?.max,min:o.asaidata.rule?.[t.formkey]?.min},modelValue:o.formdata[t.formkey],"onUpdate:modelValue":n[1]||(n[1]=u=>o.formdata[t.formkey]=u)},null,8,["ujt","opt","modelValue"])),e.createTextVNode(" "+e.toDisplayString(typeof o.formdata[t.formkey]=="string"&&t.asaidata.eq>2?'"':""),1)]),_:1},8,["ujt","asaidata","formdata","formkey"])}}})},Symbol.toStringTag,{value:"Module"})),ae={class:"as-richtext-content"},oe=["placeholder"],ne=e.defineComponent({__name:"AsaiRichEditor",props:{ujt:{},asaidata:{},formdata:{},formkey:{}},setup(t){const o=e.defineAsyncComponent({loader:()=>Promise.resolve().then(()=>T),delay:120}),a=t,{$global:f}=a.ujt,r={img:{maxWidth:288,quality:.8},imgurls:{}},n=e.ref(null),l=e.ref(null),s=e.ref(null),i=e.ref(a.asaidata?.rule?.[a.formkey]?.editorty||0);let u=null,c=null,m=null;async function y(){return u||(c||(c=Promise.resolve().then(()=>yt).then(A=>(u=A.createRichEditorMedia(r),u))),c)}e.onMounted(()=>{B(),y()}),e.onBeforeUnmount(()=>{m&&clearTimeout(m)});function B(){l.value&&(l.value.innerHTML=a.formdata[a.formkey])}function k(){const A=window.prompt("请输入链接地址");A&&p("createLink",{target:{value:A}})}function d(A){n.value.accept=`${A}/*`,e.nextTick(()=>n.value?.click())}async function g(A){const b=A.target.files?.[0];if(!b)return;const S=await y();let V,$="";b.type.startsWith("image")?(V=await S.compressFile(b),$=`<img src="${V}" style="max-width:100%">`):(b.size>1024*1024?V=URL.createObjectURL(b):V=await S.compressFile(b),$=b.type.startsWith("video")?`<video controls src="${V}" style="max-width:100%"></video>`:`<a href="${V}" download="${b.name}">${b.name}</a>`),p("insertHTML",{target:{value:$}})}async function x(){const A=await y(),b=Object.keys(r.imgurls);for(let S=0;S<b.length;S++){const V=b[S];r.imgurls[V]==="1"&&A.compressImage(V).then($=>{r.imgurls[V]=$,a.formdata[a.formkey]=a.formdata[a.formkey].replaceAll(V,$)})}}async function j(A){A.preventDefault();const b=await y(),S=A.clipboardData?.getData("text/html")||"",V=b.sanitize(S,1)||A.clipboardData?.getData("text/plain")||"";p("insertHTML",{target:{value:V}})}function h(){if(!l.value)return;const A=l.value.innerHTML;a.formdata[a.formkey]=A,m&&clearTimeout(m),m=setTimeout(()=>{y().then(b=>{l.value&&(a.formdata[a.formkey]=b.sanitize(l.value.innerHTML))})},300)}function p(A,b=null){if(l.value){if(b?.target?.tagName==="SELECT"&&b?.target?.value){document.execCommand(A,!1,b.target.value);return}document.execCommand(A,!1,b?.target?.value)}}function C(){i.value++,i.value>2&&(i.value=0),e.nextTick(B)}return(A,b)=>(e.openBlock(),e.createElementBlock("div",{class:"as-richtext-area",style:e.normalizeStyle(a.asaidata.rule?.[a.formkey]?.style||{})},[e.createVNode(e.unref(o),{lang:e.unref(f).lang.richtexteditor,onExec:p,onMedia:d,onLink:k,onUploadImg:x,onChangeView:C},null,8,["lang"]),e.createElementVNode("div",ae,[i.value!=1?(e.openBlock(),e.createElementBlock("div",{key:0,style:e.normalizeStyle({width:i.value>1?"50%":"100%"}),ref_key:"rfRichEditor",ref:l,contenteditable:"true",onPaste:j,onInput:h},null,36)):e.createCommentVNode("",!0),i.value>0?e.withDirectives((e.openBlock(),e.createElementBlock("textarea",{key:1,placeholder:a?.opt?.placeholder||"",ref_key:"rfRichCode",ref:s,"onUpdate:modelValue":b[0]||(b[0]=S=>a.formdata[a.formkey]=S),style:e.normalizeStyle({width:i.value>1?"50%":"100%"})},null,12,oe)),[[e.vModelText,a.formdata[a.formkey]]]):e.createCommentVNode("",!0)]),e.createElementVNode("input",{ref_key:"fileInput",ref:n,type:"file",hidden:"",onChange:g},null,544)],4))}}),w=(t,o)=>{const a=t.__vccOpts||t;for(const[f,r]of o)a[f]=r;return a},z=Object.freeze(Object.defineProperty({__proto__:null,default:w(ne,[["__scopeId","data-v-5c6cb195"]])},Symbol.toStringTag,{value:"Module"})),le={class:"as-richtext-toolbar"},re={value:""},ie=["value"],se={value:"p"},ce=["value"],me=["title"],de=["title"],fe=["title"],ue=["title"],pe=["title"],ye=["title"],ke=["title"],ge=["title"],T=Object.freeze(Object.defineProperty({__proto__:null,default:w(e.defineComponent({__name:"AsaiRichEditorToolbar",props:{lang:{}},emits:["exec","media","link","uploadImg","changeView"],setup(t,{emit:o}){const a=o;return(f,r)=>(e.openBlock(),e.createElementBlock("div",le,[e.createElementVNode("select",{onChange:r[0]||(r[0]=n=>a("exec","fontSize",n))},[e.createElementVNode("option",re,e.toDisplayString(t.lang.fontsize),1),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(7,n=>e.createElementVNode("option",{key:"size"+n,value:n+1},e.toDisplayString((n+1)*2+6)+"px",9,ie)),64))],32),e.createElementVNode("select",{onChange:r[1]||(r[1]=n=>a("exec","formatBlock",n))},[e.createElementVNode("option",se,e.toDisplayString(t.lang.paragraph),1),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(6,n=>e.createElementVNode("option",{key:"h"+n,value:"h"+n},e.toDisplayString(t.lang.title)+e.toDisplayString(n),9,ce)),64))],32),e.createElementVNode("button",{type:"button",onClick:r[2]||(r[2]=n=>a("exec","bold")),title:t.lang.bold},"B",8,me),e.createElementVNode("button",{type:"button",onClick:r[3]||(r[3]=n=>a("exec","underline")),title:t.lang.underline},"U",8,de),e.createElementVNode("button",{type:"button",onClick:r[4]||(r[4]=n=>a("exec","italic")),title:t.lang.italic},"I",8,fe),e.createElementVNode("button",{type:"button",onClick:r[5]||(r[5]=n=>a("exec","strikethrough")),title:t.lang.strikethrough},"S",8,ue),e.createElementVNode("input",{type:"color",onInput:r[6]||(r[6]=n=>a("exec","foreColor",n)),title:t.lang.foreColor},null,40,pe),e.createElementVNode("input",{type:"color",onInput:r[7]||(r[7]=n=>a("exec","backColor",n)),title:t.lang.backColor},null,40,ye),e.createElementVNode("button",{type:"button",onClick:r[8]||(r[8]=n=>a("exec","insertOrderedList")),title:t.lang.insertOrderedList},"有",8,ke),e.createElementVNode("button",{type:"button",onClick:r[9]||(r[9]=n=>a("exec","insertUnorderedList")),title:t.lang.insertUnorderedList},"无",8,ge),e.createElementVNode("button",{type:"button",onClick:r[10]||(r[10]=n=>a("exec","justifyCenter")),title:"居中"},"中"),e.createElementVNode("button",{type:"button",onClick:r[11]||(r[11]=n=>a("exec","justifyFull")),title:"两端对齐"},"两"),e.createElementVNode("button",{type:"button",onClick:r[12]||(r[12]=n=>a("exec","justifyRight")),title:"右对齐"},"右"),e.createElementVNode("button",{type:"button",onClick:r[13]||(r[13]=n=>a("exec","justifyLeft")),title:"左对齐"},"左"),e.createElementVNode("button",{type:"button",onClick:r[14]||(r[14]=n=>a("exec","delete")),title:"删除"},"删"),e.createElementVNode("button",{type:"button",onClick:r[15]||(r[15]=n=>a("link")),title:"链接"},"链"),e.createElementVNode("button",{type:"button",onClick:r[16]||(r[16]=n=>a("exec","unlink")),title:"删除链接"},"除"),e.createElementVNode("button",{type:"button",onClick:r[17]||(r[17]=n=>a("media","image")),title:"图片"},"🖼️"),e.createElementVNode("button",{type:"button",onClick:r[18]||(r[18]=n=>a("media","video")),title:"视频"},"🎬"),e.createElementVNode("button",{type:"button",onClick:r[19]||(r[19]=n=>a("media","file")),title:"文件"},"📎"),e.createElementVNode("button",{type:"button",onClick:r[20]||(r[20]=n=>a("uploadImg")),title:"上传"},"上"),e.createElementVNode("button",{type:"button",onClick:r[21]||(r[21]=n=>a("changeView")),title:"切换"},"HTML")]))}}),[["__scopeId","data-v-bf97b430"]])},Symbol.toStringTag,{value:"Module"})),v=Object.freeze(Object.defineProperty({__proto__:null,default:e.defineComponent({__name:"AsaiSelect",props:{ujt:{},asaidata:{},formdata:{},formkey:{}},setup(t){const o=t,{$fn:a}=o.ujt,f=e.computed(()=>a.As.toArr(o.asaidata?.lang?.[o.formkey+"data"])||a.As.toArr(o.asaidata?.rule?.[o.formkey]?.[o.formkey+"data"])||a.As.toArr(a.lg(o.asaidata?.rule?.[o.formkey]?.data))||[]);return(r,n)=>{const l=e.resolveComponent("AsfSelect"),s=e.resolveComponent("AsaiFormLabel");return e.openBlock(),e.createBlock(s,{ujt:t.ujt,asaidata:t.asaidata,formdata:t.formdata,formkey:t.formkey},{default:e.withCtx(()=>[e.createVNode(l,{ujt:t.ujt,opt:{...o.asaidata.rule?.[t.formkey]?.opt||{},selectdata:f.value},modelValue:o.formdata[t.formkey],"onUpdate:modelValue":n[0]||(n[0]=i=>o.formdata[t.formkey]=i)},null,8,["ujt","opt","modelValue"])]),_:1},8,["ujt","asaidata","formdata","formkey"])}}})},Symbol.toStringTag,{value:"Module"})),R=Object.freeze(Object.defineProperty({__proto__:null,default:e.defineComponent({__name:"AsaiSelectCl",props:{ujt:{},asaidata:{},formdata:{},formkey:{}},setup(t){const o=t,{$fn:a}=o.ujt,f=e.computed(()=>{let r;return o.asaidata?.rule?.[o.formkey]?.[o.formkey+"data"]?.nodeMap?.size>0?r=[...o.asaidata.rule[o.formkey][o.formkey+"data"].nodeMap].map(n=>[n[1].id,n[1].nm,o.asaidata.rule[o.formkey][o.formkey+"data"].depthMap.get(n[0])]).filter(n=>n&&n[0]!=="asai"):r=(a.As.toArr(o.asaidata?.lang?.[o.formkey+"data"])||a.As.toArr(a.lg(o.asaidata?.rule?.[o.formkey]?.data))||[]).filter(n=>n&&n[0]!=="asai"),(!o.formdata[o.formkey]||o.formdata[o.formkey]==="asai")&&(o.formdata[o.formkey]=r?.[0]?.[0]||"asai"),r});return(r,n)=>{const l=e.resolveComponent("AsfSelect"),s=e.resolveComponent("AsaiFormLabel");return e.openBlock(),e.createBlock(s,{ujt:t.ujt,asaidata:t.asaidata,formdata:t.formdata,formkey:t.formkey},{default:e.withCtx(()=>[e.createVNode(l,{ujt:t.ujt,opt:{...o.asaidata.rule?.[t.formkey]?.opt||{},selectdata:f.value},modelValue:o.formdata[t.formkey],"onUpdate:modelValue":n[0]||(n[0]=i=>o.formdata[t.formkey]=i)},null,8,["ujt","opt","modelValue"])]),_:1},8,["ujt","asaidata","formdata","formkey"])}}})},Symbol.toStringTag,{value:"Module"})),H=Object.freeze(Object.defineProperty({__proto__:null,default:e.defineComponent({__name:"AsaiSelectLv",props:{ujt:{},asaidata:{},formdata:{},formkey:{}},setup(t){const o=t,{$fn:a,$global:f}=o.ujt,r=e.computed(()=>{const n=a.As.toArr(o.asaidata?.lang?.[o.formkey+"data"])||a.As.toArr(o.asaidata?.rule?.[o.formkey]?.[o.formkey+"data"])||a.As.toArr(a.lg(o.asaidata?.rule?.[o.formkey]?.data))||[],l=Number(f.user.info.lv||0);return n.filter(s=>Number(s?.[0]||0)<l)});return(n,l)=>{const s=e.resolveComponent("AsfSelect"),i=e.resolveComponent("AsaiFormLabel");return e.openBlock(),e.createBlock(i,{ujt:t.ujt,asaidata:t.asaidata,formdata:t.formdata,formkey:t.formkey},{default:e.withCtx(()=>[e.createVNode(s,{ujt:t.ujt,opt:{...o.asaidata.rule?.[t.formkey]?.opt||{},selectdata:r.value},modelValue:o.formdata[t.formkey],"onUpdate:modelValue":l[0]||(l[0]=u=>o.formdata[t.formkey]=u)},null,8,["ujt","opt","modelValue"])]),_:1},8,["ujt","asaidata","formdata","formkey"])}}})},Symbol.toStringTag,{value:"Module"})),q=Object.freeze(Object.defineProperty({__proto__:null,default:e.defineComponent({__name:"AsaiTextJson",props:{ujt:{},asaidata:{},formdata:{},formkey:{}},setup(t){const o=t;return(a,f)=>{const r=e.resolveComponent("AsfTextarea"),n=e.resolveComponent("AsaiFormLabel");return e.openBlock(),e.createBlock(n,{ujt:t.ujt,asaidata:t.asaidata,formdata:t.formdata,formkey:t.formkey},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(typeof o.formdata[t.formkey]=="string"&&t.asaidata.eq>2?'"':"")+" ",1),e.createVNode(r,{ujt:t.ujt,opt:{...o.asaidata.rule?.[t.formkey]?.opt||{}},modelValue:o.formdata[t.formkey],"onUpdate:modelValue":f[0]||(f[0]=l=>o.formdata[t.formkey]=l)},null,8,["ujt","opt","modelValue"]),e.createTextVNode(" "+e.toDisplayString(typeof o.formdata[t.formkey]=="string"&&t.asaidata.eq>2?'"':""),1)]),_:1},8,["ujt","asaidata","formdata","formkey"])}}})},Symbol.toStringTag,{value:"Module"})),W=Object.freeze(Object.defineProperty({__proto__:null,default:e.defineComponent({__name:"AsaiTextarea",props:{ujt:{},asaidata:{},formdata:{},formkey:{}},setup(t){const o=t;return(a,f)=>{const r=e.resolveComponent("AsfTextarea"),n=e.resolveComponent("AsaiFormLabel");return e.openBlock(),e.createBlock(n,{ujt:t.ujt,asaidata:t.asaidata,formdata:t.formdata,formkey:t.formkey},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(typeof o.formdata[t.formkey]=="string"&&t.asaidata.eq>2?'"':"")+" ",1),e.createVNode(r,{ujt:t.ujt,opt:{...o.asaidata.rule?.[t.formkey]?.opt||{}},modelValue:o.formdata[t.formkey],"onUpdate:modelValue":f[0]||(f[0]=l=>o.formdata[t.formkey]=l)},null,8,["ujt","opt","modelValue"]),e.createTextVNode(" "+e.toDisplayString(typeof o.formdata[t.formkey]=="string"&&t.asaidata.eq>2?'"':""),1)]),_:1},8,["ujt","asaidata","formdata","formkey"])}}})},Symbol.toStringTag,{value:"Module"})),he=["accept"],be={key:0},Ae=["src","alt","title"],je=["title"],Ce=["title"],Y=Object.freeze(Object.defineProperty({__proto__:null,default:w(e.defineComponent({__name:"AsaiUpBinary",props:{ujt:{},asaidata:{},formdata:{},formkey:{}},setup(t){const o=t,{$fn:a,$global:f,$model:r}=o.ujt,n=e.ref(null),l=e.ref(null),s=e.ref("+"),i=async c=>{if(n.value.value){if(l.value=c.target.files[0],n.value.value="",!l.value){s.value=a.lg("asai.fail");return}try{a.apisys.apiUpload("/api/asaifile/manage/upbinary/?path="+f.sys.syspath.updir+o.asaidata?.rule?.[o.formkey]?.filename||a.As.getName(l.value.name),l.value).then(m=>{s.value="",o.formdata[o.formkey]=m.data})}catch(m){s.value=a.lg("asai.fail")+" "+m.message}}};function u(){n.value.click()}return(c,m)=>{const y=e.resolveComponent("AsaiFormLabel");return e.openBlock(),e.createBlock(y,{ujt:t.ujt,asaidata:t.asaidata,formdata:t.formdata,formkey:t.formkey},{default:e.withCtx(()=>[t.asaidata?.rule?.[t.formkey]?.accept?(e.openBlock(),e.createElementBlock("input",{key:0,accept:t.asaidata?.rule?.[t.formkey]?.accept,ref_key:"rfInputFile",ref:n,type:"file",hidden:"",onChange:i},null,40,he)):(e.openBlock(),e.createElementBlock("input",{key:1,ref_key:"rfInputFile",ref:n,type:"file",hidden:"",onChange:i},null,544)),e.createElementVNode("div",{class:"as-upload-image",onClickOnce:e.withModifiers(u,["stop","prevent"])},[o.formdata[t.formkey]?(e.openBlock(),e.createElementBlock("div",be,[t.asaidata?.rule?.[t.formkey]?.accept?.startsWith("image/")?(e.openBlock(),e.createElementBlock("img",{key:0,src:e.unref(a).As.getUrlByCfg(e.unref(f).link.api.web)+"/"+o.formdata[t.formkey],alt:o.formdata[t.formkey],title:o.formdata[t.formkey]},null,8,Ae)):(e.openBlock(),e.createElementBlock("div",{key:1,class:"as-upload-tit",title:o.formdata[t.formkey]},e.toDisplayString(o.formdata[t.formkey]),9,je))])):(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(s.value==="+"?"":"as-upload-tit"),title:s.value},e.toDisplayString(s.value),11,Ce))],32)]),_:1},8,["ujt","asaidata","formdata","formkey"])}}}),[["__scopeId","data-v-e9910494"]])},Symbol.toStringTag,{value:"Module"})),xe={key:0},Be=["src","alt","title"],Se=["title"],Ve=["title"],$e=["accept"],X=Object.freeze(Object.defineProperty({__proto__:null,default:w(e.defineComponent({__name:"AsaiUpload",props:{ujt:{},asaidata:{},formdata:{},formkey:{}},setup(t){const o=t,{$fn:a,$global:f,$model:r}=o.ujt,n=e.ref(null),l=e.ref(null),s=e.ref("+"),i=async c=>{if(n.value.value){if(l.value=c.target.files[0],n.value.value="",!l.value){s.value=a.lg("asai.fail");return}const m=new FileReader;m.onload=async()=>{const y=m.result.split(",")[1];try{a.apisys.apiPost("/api/asaifile/manage/upbase64/?path="+f.sys.syspath.updir+a.As.getName(l.value.name),y,{headers:{"Content-Type":"application/json"}}).then(B=>{s.value="",o.formdata[o.formkey]=B.data})}catch(B){s.value=a.lg("asai.fail")+" "+B.message}},m.readAsDataURL(l.value)}};function u(){n.value.click()}return(c,m)=>{const y=e.resolveComponent("AsaiFormLabel");return e.openBlock(),e.createBlock(y,{ujt:t.ujt,asaidata:t.asaidata,formdata:t.formdata,formkey:t.formkey},{default:e.withCtx(()=>[e.createElementVNode("div",{class:"as-upload-image",onPointerdown:e.withModifiers(u,["prevent"])},[o.formdata[t.formkey]?(e.openBlock(),e.createElementBlock("div",xe,[t.asaidata?.rule?.[t.formkey]?.accept?.startsWith("image/")?(e.openBlock(),e.createElementBlock("img",{key:0,src:e.unref(a).As.getUrlByCfg(e.unref(f).link.api.web)+"/"+o.formdata[t.formkey],alt:o.formdata[t.formkey],title:o.formdata[t.formkey]},null,8,Be)):(e.openBlock(),e.createElementBlock("div",{key:1,class:"as-upload-tit",title:o.formdata[t.formkey]},e.toDisplayString(o.formdata[t.formkey]),9,Se))])):(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(s.value==="+"?"":"as-upload-tit"),title:s.value},e.toDisplayString(s.value),11,Ve))],32),t.asaidata?.rule?.[t.formkey]?.accept?(e.openBlock(),e.createElementBlock("input",{key:0,accept:t.asaidata?.rule?.[t.formkey]?.accept,ref_key:"rfInputFile",ref:n,type:"file",hidden:"",onChange:i},null,40,$e)):(e.openBlock(),e.createElementBlock("input",{key:1,ref_key:"rfInputFile",ref:n,type:"file",hidden:"",onChange:i},null,544))]),_:1},8,["ujt","asaidata","formdata","formkey"])}}}),[["__scopeId","data-v-50ddd40b"]])},Symbol.toStringTag,{value:"Module"})),we={key:0},Ee=["src"],Fe=["title"],K=Object.freeze(Object.defineProperty({__proto__:null,default:w(e.defineComponent({__name:"AsaiUploadImg",props:{ujt:{},asaidata:{},formdata:{},formkey:{}},setup(t){const o=t,{$fn:a,$global:f}=o.ujt,r=e.ref(null),n=e.ref(null),l=e.ref("+");e.onMounted(()=>{const c="popupload"+o.formkey;f.pop[c]||(f.pop[c]={stat:0,full:0,tit:"",params:{}})});const s=async c=>{if(r.value.value){if(n.value=c.target.files[0],r.value.value="",!n.value){l.value=a.lg("asai.fail");return}const m=new FileReader;m.onload=async()=>{try{u({base64Data:m.result,asaidata:o.asaidata,formdata:o.formdata,formkey:o.formkey,fn:y=>{o.formdata[o.formkey]=y;const B="popupload"+o.formkey;f.pop[B]&&(f.pop[B].stat=0)}}),l.value=""}catch(y){l.value=a.lg("asai.fail")+" "+y.message}},m.readAsDataURL(n.value)}};function i(){r.value.click()}function u(c){const m="popupload"+o.formkey;f.pop[m].stat=1,f.pop[m].full=2,f.pop[m].tit=a.lg("asai.upload"),f.pop[m].params=c}return(c,m)=>{const y=e.resolveComponent("AsaiUploadImgCutPop"),B=e.resolveComponent("AsaiFormLabel");return e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createVNode(y,{formkey:t.formkey,ujt:t.ujt},null,8,["formkey","ujt"]),e.createVNode(B,{ujt:t.ujt,asaidata:t.asaidata,formdata:t.formdata,formkey:t.formkey},{default:e.withCtx(()=>[e.createElementVNode("div",{class:"as-upload-image",onPointerdown:e.withModifiers(i,["prevent"])},[o.formdata[t.formkey]?(e.openBlock(),e.createElementBlock("div",we,[e.createElementVNode("img",{src:o.formdata[t.formkey]},null,8,Ee)])):(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(l.value==="+"?"":"as-upload-tit"),title:l.value},e.toDisplayString(l.value),11,Fe))],32),e.createElementVNode("input",{accept:"image/*",ref_key:"rfInputFile",ref:r,type:"file",hidden:"",onChange:s},null,544)]),_:1},8,["ujt","asaidata","formdata","formkey"])],64)}}}),[["__scopeId","data-v-36b7ec3b"]])},Symbol.toStringTag,{value:"Module"})),Ie={class:"as-img-area"},Me={key:0,class:"as-img-preview"},Te=["src"],Ne={key:1,class:"as-img-cut-area"},Pe=["src"],Le={class:"as-img-btns"},J=Object.freeze(Object.defineProperty({__proto__:null,default:w(e.defineComponent({__name:"AsaiUploadImgCut",props:{ujt:{},params:{}},setup(t){const o=t,a=e.ref(""),f=e.ref(null),r=e.ref(null),n=e.ref(null),l=o.params.min||1,s=e.ref({x:0,y:0,width:0,height:0,maxWidth:0,maxHeight:0}),i=e.ref({type:null,startX:0,startY:0,originalX:0,originalY:0,originalWidth:0,originalHeight:0,direction:null}),u=e.computed(()=>({transform:`translate(${s.value.x}px, ${s.value.y}px)`,width:`${s.value.width}px`,height:`${s.value.height}px`})),c=e.computed(()=>s.value.width>0&&s.value.height>0),m=()=>{const h=f.value,p=n.value;if(!h||!p){console.error("Image or container element not found.");return}const C=Math.min(p.clientWidth,h.naturalWidth),A=Math.min(p.clientHeight,h.naturalHeight),b=Math.min(C,h.naturalWidth),S=Math.min(A,h.naturalHeight);s.value={x:(C-b)/2,y:(A-S)/2,width:b,height:S,maxWidth:C,maxHeight:A}},y=(h,p=null)=>{const C=window.event||event,A=C.touches?C.touches[0]:C;i.value={type:h,startX:A.clientX,startY:A.clientY,originalX:s.value.x,originalY:s.value.y,originalWidth:s.value.width,originalHeight:s.value.height,direction:p};const b=S=>{requestAnimationFrame(()=>{h==="move"?B(S):k(S)})};window.addEventListener("mousemove",b),window.addEventListener("touchmove",b),window.addEventListener("mouseup",d),window.addEventListener("touchend",d)},B=h=>{const p=window.event||h,C=p.touches?p.touches[0]:p;if(i.value.type!=="move")return;const A=C.clientX-i.value.startX,b=C.clientY-i.value.startY,S=Math.max(0,Math.min(i.value.originalX+A,s.value.maxWidth-s.value.width)),V=Math.max(0,Math.min(i.value.originalY+b,s.value.maxHeight-s.value.height));Object.assign(s.value,{x:S,y:V})},k=h=>{const p=window.event||h,C=p.touches?p.touches[0]:p;if(i.value.type!=="resize")return;const A=C.clientX-i.value.startX,b=C.clientY-i.value.startY,S=i.value.direction;let V=i.value.originalWidth,$=i.value.originalHeight,E=i.value.originalX,I=i.value.originalY;switch(S){case"tr":V=Math.max(l,Math.min(i.value.originalWidth+A,s.value.maxWidth-E)),$=Math.max(l,i.value.originalHeight-b),I=Math.max(0,i.value.originalY+b);break;case"tl":V=Math.max(l,i.value.originalWidth-A),$=Math.max(l,i.value.originalHeight-b),E=Math.max(0,i.value.originalX+A),I=Math.max(0,i.value.originalY+b);break;case"br":V=Math.max(l,i.value.originalWidth+A),$=Math.max(l,i.value.originalHeight+b);break;case"bl":V=Math.max(l,i.value.originalWidth-A),$=Math.max(l,i.value.originalHeight+b),E=Math.max(0,i.value.originalX+A);break}V=Math.min(V,s.value.maxWidth-E),$=Math.min($,s.value.maxHeight-I),Object.assign(s.value,{x:E,y:I,width:V,height:$})},d=()=>{i.value.type=null,window.removeEventListener("mousemove",B),window.removeEventListener("touchmove",B),window.removeEventListener("mousemove",k),window.removeEventListener("touchmove",k),window.removeEventListener("mouseup",d),window.removeEventListener("touchend",d)},g=()=>{const h=f.value,p=h.naturalWidth/h.width,C=h.naturalHeight/h.height,A=Math.min(s.value.width*p,h.naturalWidth),b=Math.min(s.value.height*C,h.naturalHeight),S=document.createElement("canvas");S.width=A,S.height=b,S.getContext("2d").drawImage(h,s.value.x*p,s.value.y*C,A,b,0,0,A,b),a.value=S.toDataURL("image/png",.9),o.params.asaidata?.rule?.[o.params?.formkey]?.data&&e.nextTick(()=>{let $=o.params.asaidata.rule[o.params.formkey].data,E={};if($.width<A||$.height<b){$.height/b>$.width/A?(E.width=$.width,E.height=b*$.width/A):(E.width=A*$.height/b,E.height=$.height);const I=r.value,M=document.createElement("canvas");M.width=E.width,M.height=E.height,M.getContext("2d").drawImage(I,0,0,E.width,E.height),a.value=M.toDataURL("image/png",.9)}})},x=()=>{const h=document.createElement("a");h.download="cropped-image.png",h.href=a.value,h.click()},j=()=>{o.params.fn(a.value)};return(h,p)=>(e.openBlock(),e.createElementBlock("div",Ie,[a.value?(e.openBlock(),e.createElementBlock("div",Me,[e.createElementVNode("img",{ref_key:"cutImage",ref:r,src:a.value},null,8,Te)])):(e.openBlock(),e.createElementBlock("div",Ne,[e.createElementVNode("div",{class:"as-img-cut",ref_key:"previewContainer",ref:n},[e.createElementVNode("img",{ref_key:"previewImage",ref:f,src:o.params.base64Data,onLoad:m},null,40,Pe),e.withDirectives(e.createElementVNode("div",{class:"as-img-crop-box",style:e.normalizeStyle(u.value),onMousedown:p[8]||(p[8]=e.withModifiers(C=>y("move"),["prevent"])),onTouchstart:p[9]||(p[9]=e.withModifiers(C=>y("move"),["prevent"]))},[e.createElementVNode("div",{class:"as-img-crop-handle top-left",onMousedown:p[0]||(p[0]=e.withModifiers(C=>y("resize","tl"),["stop"])),onTouchstart:p[1]||(p[1]=e.withModifiers(C=>y("resize","tl"),["stop"]))},null,32),e.createElementVNode("div",{class:"as-img-crop-handle top-right",onMousedown:p[2]||(p[2]=e.withModifiers(C=>y("resize","tr"),["stop"])),onTouchstart:p[3]||(p[3]=e.withModifiers(C=>y("resize","tr"),["stop"]))},null,32),e.createElementVNode("div",{class:"as-img-crop-handle bottom-left",onMousedown:p[4]||(p[4]=e.withModifiers(C=>y("resize","bl"),["stop"])),onTouchstart:p[5]||(p[5]=e.withModifiers(C=>y("resize","bl"),["stop"]))},null,32),e.createElementVNode("div",{class:"as-img-crop-handle bottom-right",onMousedown:p[6]||(p[6]=e.withModifiers(C=>y("resize","br"),["stop"])),onTouchstart:p[7]||(p[7]=e.withModifiers(C=>y("resize","br"),["stop"]))},null,32)],36),[[e.vShow,c.value]])],512)])),e.createElementVNode("div",Le,[a.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("button",{onClick:x},"下载图片"),e.createElementVNode("button",{onClick:j},"确认上传")],64)):(e.openBlock(),e.createElementBlock("button",{key:1,onClick:g},"确认裁剪"))])]))}}),[["__scopeId","data-v-f328eb1d"]])},Symbol.toStringTag,{value:"Module"})),Q=Object.freeze(Object.defineProperty({__proto__:null,default:e.defineComponent({__name:"AsaiUploadImgCutPop",props:{ujt:{},formkey:{}},setup(t){const o=t,{$global:a}=o.ujt;return(f,r)=>{const n=e.resolveComponent("AsaiUploadImgCut"),l=e.resolveComponent("PopBox");return e.openBlock(),e.createBlock(l,{ujt:t.ujt,id:"popupload"+t.formkey},{default:e.withCtx(()=>[e.unref(a).pop["popupload"+t.formkey].stat?(e.openBlock(),e.createBlock(n,{key:0,ujt:t.ujt,params:e.unref(a).pop["popupload"+t.formkey].params},null,8,["ujt","params"])):e.createCommentVNode("",!0)]),_:1},8,["ujt","id"])}}})},Symbol.toStringTag,{value:"Module"})),Ue=Object.freeze(Object.defineProperty({__proto__:null,default:w(e.defineComponent({__name:"AsfCheck",props:{ujt:{},opt:{},modelValue:{}},emits:["update:modelValue"],setup(t,{emit:o}){e.useCssVars(c=>({v46073f5c:i.value}));const a=t,{$global:f}=a.ujt,r=o;let n=e.computed({get(){return a.modelValue},set(c){a.opt?.onChange&&typeof a.opt.onChange=="function"&&a.opt.onChange(c,a.modelValue),r("update:modelValue",c)}});const l=e.computed(()=>{const c=a.opt?.selectdata;return Array.isArray(c)&&c.length?c.map((m,y)=>Array.isArray(m)&&m.length>=2?[m[0],m[1]]:typeof m=="object"&&m!==null?Object.values(m):[!!y,String(m)]):typeof c=="object"&&c&&Object.keys(c)?.length?Object.entries(c):[[!1,f?.lang?.asai?.off||"off"],[!0,f?.lang?.asai?.on||"on"]]}),s=e.computed(()=>n.value===l.value?.[1]?.[0]),i=e.computed(()=>a?.opt?.height||"var(--sa3)");function u(c){s.value?n.value=l.value?.[0]?.[0]:n.value=l.value?.[1]?.[0]}return(c,m)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(`asf-check${s.value?"-ck":""}`),style:e.normalizeStyle(a.opt?.style||{}),onClick:u},[e.createElementVNode("div",{class:e.normalizeClass(`asf-check-ico${s.value?"-ck":""}`)},null,2),e.createElementVNode("div",{class:e.normalizeClass(`asf-check-txt${s.value?"-ck":""}`)},e.toDisplayString(s.value?l.value?.[1]?.[1]:l.value?.[0]?.[1]),3)],6))}}),[["__scopeId","data-v-819ba6db"]])},Symbol.toStringTag,{value:"Module"})),Oe={class:"asf-input asf-form"},De=["type","placeholder","value"],ze=["type","max","min","readonly","placeholder"],ve=["type","maxlength","readonly","placeholder"],Re=["step","type","readonly","placeholder"],He=["type","readonly","placeholder"],qe={key:5,class:"unit"},We=Object.freeze(Object.defineProperty({__proto__:null,default:w(e.defineComponent({__name:"AsfInput",props:{ujt:{},opt:{},modelValue:{}},emits:["update:modelValue"],setup(t,{emit:o}){e.useCssVars(u=>({v40a0921e:n.value}));const a=t,f=o;let r=e.computed({get(){return a.modelValue},set(u){a.opt?.onChange&&typeof a.opt.onChange=="function"&&a.opt.onChange(u,a.modelValue),f("update:modelValue",u)}});const n=e.computed(()=>a?.opt?.height||"var(--sa3)"),l=e.computed(()=>a?.opt?.type||(a?.opt?.max?"number":"text")),s=e.ref(null);function i(u,c){if(u&&c&&typeof c=="object")for(const[m,y]of Object.entries(c))typeof y=="boolean"?y?u.setAttribute(m,""):u.removeAttribute(m):u.setAttribute(m,y)}return e.onMounted(()=>{i(s.value,a.opt?.attr)}),(u,c)=>(e.openBlock(),e.createElementBlock("div",Oe,[t.opt?.noedit?(e.openBlock(),e.createElementBlock("input",{key:0,ref_key:"domForm",ref:s,class:"input",style:e.normalizeStyle(a.opt?.style||{}),type:l.value,readonly:!0,placeholder:t.opt?.placeholder||"",value:t.modelValue},null,12,De)):t.opt?.max?e.withDirectives((e.openBlock(),e.createElementBlock("input",{key:1,ref_key:"domForm",ref:s,style:e.normalizeStyle(a.opt?.style||{}),type:l.value,max:t.opt?.max,min:t.opt?.min,readonly:!!t.opt?.readonly,placeholder:t.opt?.placeholder||"","onUpdate:modelValue":c[0]||(c[0]=m=>e.isRef(r)?r.value=m:r=m)},null,12,ze)),[[e.vModelDynamic,e.unref(r)]]):t.opt?.maxlength?e.withDirectives((e.openBlock(),e.createElementBlock("input",{key:2,ref_key:"domForm",ref:s,style:e.normalizeStyle(a.opt?.style||{}),type:l.value,maxlength:t.opt?.maxlength,readonly:!!t.opt?.readonly,placeholder:t.opt?.placeholder||"","onUpdate:modelValue":c[1]||(c[1]=m=>e.isRef(r)?r.value=m:r=m)},null,12,ve)),[[e.vModelDynamic,e.unref(r)]]):t.opt?.step?e.withDirectives((e.openBlock(),e.createElementBlock("input",{key:3,ref_key:"domForm",ref:s,style:e.normalizeStyle(a.opt?.style||{}),step:t.opt?.step,type:l.value,readonly:!!t.opt?.readonly,placeholder:t.opt?.placeholder||"","onUpdate:modelValue":c[2]||(c[2]=m=>e.isRef(r)?r.value=m:r=m)},null,12,Re)),[[e.vModelDynamic,e.unref(r)]]):e.withDirectives((e.openBlock(),e.createElementBlock("input",{key:4,ref_key:"domForm",ref:s,style:e.normalizeStyle(a.opt?.style||{}),type:l.value,readonly:!!t.opt?.readonly,placeholder:t.opt?.placeholder||"","onUpdate:modelValue":c[3]||(c[3]=m=>e.isRef(r)?r.value=m:r=m)},null,12,He)),[[e.vModelDynamic,e.unref(r)]]),t.opt?.unit?(e.openBlock(),e.createElementBlock("div",qe,e.toDisplayString(t.opt?.unit),1)):e.createCommentVNode("",!0)]))}}),[["__scopeId","data-v-45c548dd"]])},Symbol.toStringTag,{value:"Module"})),Ye={class:"asf-inputsn"},Xe=["onUpdate:modelValue","onInput","onKeydown","onPaste"],Ke=Object.freeze(Object.defineProperty({__proto__:null,default:w(e.defineComponent({__name:"AsfInputSn",props:{ujt:{},opt:{},modelValue:{}},emits:["update:modelValue"],setup(t,{emit:o}){const a=t,f=o,r=a.opt?.snge||0,n=a.opt?.snger||0,l=a.opt?.snlen||8,s=e.ref(Array(l).fill("")),i=e.ref([]);function u(){f("update:modelValue",s.value.join(""))}const c=e.watch(()=>a.modelValue,d=>{const g=s.value.join("");if(d!=null&&d!==g){const x=String(d).replace(/\s/g,"").split("");for(let j=0;j<l;j++)s.value[j]=x[j]||""}},{immediate:!0});function m(d){let g=s.value[d];s.value[d]=g.replace(/\s/g,"").slice(0,1),s.value[d]&&d<l-1&&i.value[d+1].focus(),u()}function y(d,g){g.key==="Backspace"&&!s.value[d]&&d>0&&(i.value[d-1].focus(),u())}function B(d,g){g.preventDefault();const x=g.clipboardData?.getData("text")||"";if(!x)return;const j=x.replace(/\s/g,"").split("");let h=d;for(let p=0;p<j.length;p++){const C=d+p;if(C<l)s.value[C]=j[p],h=C;else break}h<l-1?i.value[h+1].focus():i.value[l-1].focus(),u()}function k(d){d.target.select()}return e.onBeforeUnmount(()=>{c&&c.stop()}),(d,g)=>(e.openBlock(),e.createElementBlock("div",Ye,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,(x,j)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:j},[j&&e.unref(r)&&!(j%e.unref(r))&&(!e.unref(n)||e.unref(n)&&j%e.unref(n))?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode("-")],64)):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("input",{class:"asf-form",ref_for:!0,ref_key:"codeInputs",ref:i,"onUpdate:modelValue":h=>s.value[j]=h,type:"text",maxlength:"1",onInput:h=>m(j),onKeydown:h=>y(j,h),onFocus:k,onPaste:h=>B(j,h)},null,40,Xe),[[e.vModelText,s.value[j]]])],64))),128))]))}}),[["__scopeId","data-v-67ddc34d"]])},Symbol.toStringTag,{value:"Module"})),Je={class:"asf-select"},Qe={class:"asf-select-main"},Ge={class:"asf-select-cur-val"},Ze={class:"asf-select-list-area"},_e={key:0,class:"asf-select-list"},et={class:"asf-select-empty"},tt=["data-val"],at=["data-val"],ot={key:0,class:"unit"},nt=Object.freeze(Object.defineProperty({__proto__:null,default:w(e.defineComponent({__name:"AsfSelect",props:{ujt:{},opt:{},modelValue:{}},emits:["update:modelValue"],setup(t,{emit:o}){e.useCssVars(k=>({v34a6911f:s.value}));const a=t,{$global:f}=a.ujt,r=o;let n=e.computed({get(){return a.modelValue||a.opt?.valuedefault},set(k){a.opt?.onChange&&typeof a.opt.onChange=="function"&&a.opt.onChange(k,a.modelValue),r("update:modelValue",k)}});const l=e.reactive({inputinit:"",input:"",up:!1,stylelist:{}}),s=e.computed(()=>a?.opt?.height||"var(--sa3)"),i=e.computed(()=>{const k=a.opt?.selectdata;return k?k.nodeMap?.size>0?[...k.nodeMap].map(d=>[d[1].id,d[1].nm,k.depthMap.get(d[0])]):Array.isArray(k)?k.map((d,g)=>Array.isArray(d)&&d.length>=2?[d[0],d[1],d[2]]:typeof d=="object"&&d!==null?"value"in d&&"label"in d?[d.value,d.label,d.depth]:Object.values(d):[g,String(d)]):typeof k=="object"?Object.entries(k):[]:[]}),u=e.computed(()=>{const k=[];if(a.opt?.input&&l.input){let d;i.value.forEach(g=>{g[1]==l.input&&!d?(d=g,n.value=d[0]):g[1].includes(l.input)?k.unshift(g):(g[0]===a.modelValue||a.opt.input>1)&&k.push(g)}),d&&k.unshift(d)}else return i.value;return k});l.stylelist["max-height"]=i.value?.length>10?"280px":i.value?.length>2?"180px":"128px",(a.opt?.input||a.opt?.checkin)&&(l.inputinit=i.value?.find(k=>k[0]==a.modelValue)?.[1],a.opt?.checkin&&!l.inputinit&&(n.value=i.value?.[0]?.[0],l.inputinit=i.value?.[0]?.[1]));function c(k){if(a.opt?.up==1)l.up=!0;else if(a.opt?.up==0)l.up=!1;else{const d=k.target,g=k.target.closest(".asfselectarea");if(g){const{y:x}=d?.getBoundingClientRect()||{y:0},{y:j,height:h}=g?.getBoundingClientRect()||{y:0,height:0};let p=x-j,C=h-p;p>C?(l.up=!0,p=(p/Number(f?.scale||1)).toFixed(3),p<parseInt(l.stylelist["max-height"])&&(l.stylelist["max-height"]=p+"px")):(l.up=!1,C=(C/Number(f?.scale||1)).toFixed(3),C<parseInt(l.stylelist["max-height"])&&(l.stylelist["max-height"]=C+"px"))}else k.clientY>299?l.up=!0:l.up=!1}}function m(k){a.opt?.type=="number"?n.value=Number(k.target?.dataset?.val||0):a.opt?.type=="text"?n.value=k.target?.dataset?.val:typeof n.value=="number"?n.value=Number(k.target?.dataset?.val||0):n.value=k.target?.dataset?.val,a.opt?.input&&(l.input=i.value?.find(d=>d[0]==k.target?.dataset?.val)?.[1])}function y(k){a.opt?.input&&(l.input=k.target?.textContent||"")}function B(k){a.opt?.input&&k.target&&(k.target.textContent!==l.input||l.inputinit!==l.input)&&(k.target.textContent=i.value?.find(d=>d[0]==n.value)?.[1])}return(k,d)=>(e.openBlock(),e.createElementBlock("div",Je,[e.createElementVNode("div",Qe,[a.opt?.input?(e.openBlock(),e.createElementBlock("div",{key:0,class:"asf-select-cur asf-select-cur-input",contenteditable:"true",onInput:y,onBlur:B,tabindex:"0",style:e.normalizeStyle(a.opt?.style||{}),onPointerdown:c},e.toDisplayString(l.inputinit),37)):(e.openBlock(),e.createElementBlock("div",{key:1,class:"asf-select-cur asf-form",tabindex:"0",style:e.normalizeStyle(a.opt?.style||{}),onPointerdown:c},[e.createElementVNode("div",Ge,e.toDisplayString(i.value?.find(g=>g[0]==e.unref(n))?.[1]||e.unref(f).lang.asai.select||""),1),d[0]||(d[0]=e.createElementVNode("div",{class:"asf-select-cur-ic"},null,-1))],36)),e.createElementVNode("div",Ze,[u.value?.length?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(`asf-select-list${l.up?" asf-select-up":""}`),style:e.normalizeStyle({...l.stylelist,...a.opt?.stylelist||{}}),onPointerdown:e.withModifiers(m,["stop"])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.value,g=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(`asf-select-li${e.unref(n)==g[0]?"-active":""}`),"data-val":g[0],key:"sel"+g[0]},[g[2]>1?(e.openBlock(),e.createElementBlock("div",{key:0,"data-val":g[0],style:e.normalizeStyle(`padding-left: ${(g[2]-1)*10}px`)},e.toDisplayString(g[1]),13,at)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(g[1]),1)],64))],10,tt))),128))],38)):(e.openBlock(),e.createElementBlock("div",_e,[e.createElementVNode("div",et,e.toDisplayString(e.unref(f).lang.asai.empty),1)]))])]),t.opt?.unit?(e.openBlock(),e.createElementBlock("div",ot,e.toDisplayString(t.opt?.unit),1)):e.createCommentVNode("",!0)]))}}),[["__scopeId","data-v-a4701728"]])},Symbol.toStringTag,{value:"Module"})),lt={class:"asf-textarea"},rt=["placeholder","readonly"],it=Object.freeze(Object.defineProperty({__proto__:null,default:w(e.defineComponent({__name:"AsfTextarea",props:{ujt:{},opt:{},modelValue:{}},emits:["update:modelValue"],setup(t,{emit:o}){e.useCssVars(i=>({f697bf2e:n.value}));const a=t,f=o;let r=e.computed({get(){return a.modelValue},set(i){a.opt?.onChange&&typeof a.opt.onChange=="function"&&a.opt.onChange(i,a.modelValue),f("update:modelValue",i)}});const n=e.computed(()=>a?.opt?.height||"var(--sa3)"),l=e.ref(null);function s(i,u){if(i&&u&&typeof u=="object")for(const[c,m]of Object.entries(u))typeof m=="boolean"?m?i.setAttribute(c,""):i.removeAttribute(c):i.setAttribute(c,m)}return e.onMounted(()=>{s(l.value,a.opt?.attr)}),(i,u)=>(e.openBlock(),e.createElementBlock("div",lt,[e.withDirectives(e.createElementVNode("textarea",{class:"asf-form",ref_key:"domForm",ref:l,style:e.normalizeStyle(a.opt?.style||{}),"onUpdate:modelValue":u[0]||(u[0]=c=>e.isRef(r)?r.value=c:r=c),placeholder:t.opt?.placeholder,readonly:!!t.opt?.readonly},null,12,rt),[[e.vModelText,e.unref(r)]])]))}}),[["__scopeId","data-v-d23aed07"]])},Symbol.toStringTag,{value:"Module"})),st=Object.freeze(Object.defineProperty({__proto__:null,default:w(e.defineComponent({__name:"AsfTick",props:{ujt:{},opt:{},modelValue:{}},emits:["update:modelValue"],setup(t,{emit:o}){e.useCssVars(u=>({v1081b8c6:s.value}));const a=t,f=o,r=e.ref([...a.modelValue]);let n=e.computed({get(){return r.value},set(u){try{r.value=[...u],a.opt?.onChange&&typeof a.opt.onChange=="function"&&a.opt.onChange(r.value,a.modelValue),f("update:modelValue",r.value)}catch{f("update:modelValue",[])}}});const l=e.computed(()=>n.value?.includes?.(a.opt?.value)),s=e.computed(()=>a?.opt?.height||"var(--sa3)");function i(u){const c=[...n.value],m=c.indexOf(a.opt?.value);m>-1?c.splice(m,1):c.push(a.opt?.value),n.value=c}return(u,c)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(`asf-tick${l.value?"-ck":""}`),style:e.normalizeStyle(a.opt?.style||{}),onClick:i},null,6))}}),[["__scopeId","data-v-a981dd49"]])},Symbol.toStringTag,{value:"Module"})),ct=["accept"],mt=Object.freeze(Object.defineProperty({__proto__:null,default:w(e.defineComponent({__name:"AsfUploadFile",props:{ujt:{},opt:{},modelValue:{}},emits:["update:modelValue"],setup(t,{emit:o}){e.useCssVars(d=>({v21e55886:B.value}));const a=t,{$fn:f,$global:r}=a.ujt,n=o,l=e.reactive({val:""}),s=e.watch(()=>l.val,(d,g)=>{try{a.opt?.onChange&&typeof a.opt.onChange=="function"&&a.opt.onChange(d,g),n("update:modelValue",d)}catch{r.msg.fn({type:"err",con:"error!"})}}),i=e.ref(null),u=e.ref(null),c=e.ref("+"),m=async d=>{if(i.value.value){if(u.value=d.target.files[0],i.value.value="",!u.value){c.value=f.lg("asai.fail");return}l.val="";try{f.apisys.apiUpload("/api/asaifile/manage/upbinary/?path="+(a.opt?.path||"uploadtmp"),u.value).then(g=>{c.value="",l.val=g.data})}catch(g){c.value=f.lg("asai.fail")+" "+g.message}}};function y(){i.value.click()}const B=e.computed(()=>a?.opt?.height||"var(--sa3)");function k(d,g){if(d&&g&&typeof g=="object")for(const[x,j]of Object.entries(g))typeof j=="boolean"?j?d.setAttribute(x,""):d.removeAttribute(x):d.setAttribute(x,j)}return e.onMounted(()=>{k(i.value,a.opt?.attr)}),e.onBeforeUnmount(()=>{s&&s.stop()}),(d,g)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(`${a.opt?.css||"asf-upload-area"}`)},[e.renderSlot(d.$slots,"default",{option:{clickUpload:y}},()=>[e.createElementVNode("div",{class:"asf-upload asf-form",onClick:g[0]||(g[0]=x=>y())},e.toDisplayString(c.value),1)],!0),a.opt?.accept?(e.openBlock(),e.createElementBlock("input",{key:0,accept:a.opt?.accept,ref_key:"rfInputFile",ref:i,type:"file",hidden:"",onChange:m},null,40,ct)):(e.openBlock(),e.createElementBlock("input",{key:1,ref_key:"rfInputFile",ref:i,type:"file",hidden:"",onChange:m},null,544))],2))}}),[["__scopeId","data-v-1784793e"]])},Symbol.toStringTag,{value:"Module"})),dt={class:"asf-upload-area"},ft=["accept"],ut=Object.freeze(Object.defineProperty({__proto__:null,default:w(e.defineComponent({__name:"AsfUploadText",props:{ujt:{},opt:{},modelValue:{}},emits:["update:modelValue"],setup(t,{emit:o}){e.useCssVars(x=>({v7e0dcac0:d.value}));const a=t,{$fn:f,$global:r}=a.ujt,n=o,l=e.reactive({val:a.opt?.type=="json"?u(a.modelValue):a.modelValue}),s=e.watch(()=>l.val,(x,j)=>{try{const h=a.opt?.type=="json"?i(x):x;a.opt?.onChange&&typeof a.opt.onChange=="function"&&a.opt.onChange(h,a.opt?.type=="json"?i(j):j),n("update:modelValue",h)}catch{l.val=a.opt?.type=="json"?{}:"",r.msg.fn({type:"err",con:"error!"})}},{deep:!0});function i(x){try{return JSON.parse(x)}catch{return{}}}function u(x){try{return JSON.stringify(x)}catch{return"{}"}}const c=e.ref(null),m=e.ref(null),y=e.ref("+"),B=async x=>{if(c.value.value){if(m.value=x.target.files[0],c.value.value="",!m.value){y.value=f.lg("asai.fail");return}const j=new FileReader;j.onload=async()=>{l.val=j.result},j.readAsText(m.value)}};function k(){c.value.click()}const d=e.computed(()=>a?.opt?.height||"var(--sa3)");function g(x,j){if(x&&j&&typeof j=="object")for(const[h,p]of Object.entries(j))typeof p=="boolean"?p?x.setAttribute(h,""):x.removeAttribute(h):x.setAttribute(h,p)}return e.onMounted(()=>{g(c.value,a.opt?.attr)}),e.onBeforeUnmount(()=>{s&&s.stop()}),(x,j)=>(e.openBlock(),e.createElementBlock("div",dt,[e.renderSlot(x.$slots,"default",{option:{clickUpload:k}},()=>[e.createElementVNode("div",{class:"asf-upload asf-form",onClick:j[0]||(j[0]=h=>k())},e.toDisplayString(y.value),1)],!0),a.opt?.accept?(e.openBlock(),e.createElementBlock("input",{key:0,accept:a.opt?.accept,ref_key:"rfInputFile",ref:c,type:"file",hidden:"",onChange:B},null,40,ft)):(e.openBlock(),e.createElementBlock("input",{key:1,ref_key:"rfInputFile",ref:c,type:"file",hidden:"",onChange:B},null,544))]))}}),[["__scopeId","data-v-d8731f1e"]])},Symbol.toStringTag,{value:"Module"}));function pt(t){function o(n,l=0){if(!n)return"";if(l)return n;try{const s=new URL(n,location.href);if(["http:","https:","mailto:","tel:","blob:","data:","ftp:"].includes(s.protocol))return s.protocol==="data:"&&!/^data:image\//i.test(n)?"":s.href}catch{return n.startsWith("#")||!/:/.test(n)?n:""}return""}function a(n,l=0){const s=new Set(["a","figure","img","video","ul","ol","li","h1","h2","h3","h4","h5","h6","p","strong","em","span","font","b","u","i","strike","nav","footer","section","article","div"]),i=new Set(["href","src","alt","size","color","title","style","controls","download","target"]),u=new DOMParser().parseFromString(n,"text/html");return Array.from(u.body.querySelectorAll("*")).reverse().forEach(c=>{const m=c.tagName.toLowerCase();if(!s.has(m))return c.remove();l&&m=="img"&&c?.src&&!t.imgurls?.[c.src]&&(c.setAttribute("crossOrigin","anonymous"),t.imgurls[c.src]="1"),Array.from(c.attributes).forEach(({name:y,value:B})=>{if(!i.has(y))return c.removeAttribute(y);if(["href","src"].includes(y)){const k=o(B,l);k?c.setAttribute(y,k):c.removeAttribute(y)}if(y==="style"){const k=String(B||"");/expression|javascript:|url\s*\(\s*['"]?\s*data:/i.test(k)&&c.removeAttribute(y)}}),m==="a"&&c.getAttribute("target")==="_blank"&&c.setAttribute("rel","noopener noreferrer")}),u.body.innerHTML}function f(n){return new Promise((l,s)=>{const i=new Image,u=document.createElement("canvas"),c=u.getContext("2d",{willReadFrequently:!1});let m=!1;const y=()=>{m||(i.onload=i.onerror=null,i.src="",u.width=u.height=0,m=!0)};i.crossOrigin="anonymous",i.src=n,i.onload=()=>{try{const B=Math.min(t.img.maxWidth/i.width,1);u.width=B<1?t.img.maxWidth:i.width,u.height=B<1?i.height*B:i.height,c.imageSmoothingEnabled=!0,c.imageSmoothingQuality="high",c.clearRect(0,0,u.width,u.height),c.drawImage(i,0,0,u.width,u.height),l(u.toDataURL("image/jpeg",t.img.quality)),y()}catch(B){y(),s(B)}},i.onerror=()=>{y(),s(new Error("Image load failed"))}})}function r(n){return new Promise((l,s)=>{if(!n)return s(new Error("Invalid file"));const i=new FileReader;i.onload=u=>{n.type.startsWith("image/")?f(u.target.result).then(l).catch(s):l(u.target.result)},i.onerror=()=>s(new Error("File read failed")),i.readAsDataURL(n)})}return{sanitize:a,sanitizeURL:o,compressImage:f,compressFile:r}}const yt=Object.freeze(Object.defineProperty({__proto__:null,createRichEditorMedia:pt},Symbol.toStringTag,{value:"Module"}));F.default=G,Object.defineProperties(F,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));
1
+ (function(F,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],e):(F=typeof globalThis<"u"?globalThis:F||self,e(F["asai-vue-host-form"]={},F.Vue))})(this,(function(F,e){"use strict";const G={install(t,o){o.loadvue({loadfn:o.loadfn,app:t,eager:!1,files:Object.assign({"./asui/form/AsaiForm.vue":()=>Promise.resolve().then(()=>_),"./asui/form/AsaiFormLabel.vue":()=>Promise.resolve().then(()=>N),"./asui/form/AsaiFormLabelArea.vue":()=>Promise.resolve().then(()=>P),"./asui/form/AsaiFormLi.vue":()=>Promise.resolve().then(()=>L),"./asui/form/AsaiFormObject.vue":()=>Promise.resolve().then(()=>U),"./asui/form/AsaiFormShow.vue":()=>Promise.resolve().then(()=>O),"./asui/form/AsaiInput.vue":()=>Promise.resolve().then(()=>D),"./asui/form/AsaiRichEditor.vue":()=>Promise.resolve().then(()=>z),"./asui/form/AsaiRichEditorToolbar.vue":()=>Promise.resolve().then(()=>T),"./asui/form/AsaiSelect.vue":()=>Promise.resolve().then(()=>v),"./asui/form/AsaiSelectCl.vue":()=>Promise.resolve().then(()=>R),"./asui/form/AsaiSelectLv.vue":()=>Promise.resolve().then(()=>H),"./asui/form/AsaiTextJson.vue":()=>Promise.resolve().then(()=>q),"./asui/form/AsaiTextarea.vue":()=>Promise.resolve().then(()=>W),"./asui/form/AsaiUpBinary.vue":()=>Promise.resolve().then(()=>Y),"./asui/form/AsaiUpload.vue":()=>Promise.resolve().then(()=>X),"./asui/form/AsaiUploadImg.vue":()=>Promise.resolve().then(()=>K),"./asui/form/AsaiUploadImgCut.vue":()=>Promise.resolve().then(()=>J),"./asui/form/AsaiUploadImgCutPop.vue":()=>Promise.resolve().then(()=>Q),"./asui/formbase/AsfCheck.vue":()=>Promise.resolve().then(()=>Ue),"./asui/formbase/AsfInput.vue":()=>Promise.resolve().then(()=>We),"./asui/formbase/AsfInputSn.vue":()=>Promise.resolve().then(()=>Ke),"./asui/formbase/AsfSelect.vue":()=>Promise.resolve().then(()=>nt),"./asui/formbase/AsfTextarea.vue":()=>Promise.resolve().then(()=>it),"./asui/formbase/AsfTick.vue":()=>Promise.resolve().then(()=>st),"./asui/formbase/AsfUploadFile.vue":()=>Promise.resolve().then(()=>mt),"./asui/formbase/AsfUploadText.vue":()=>Promise.resolve().then(()=>ut)})})}},Z={class:"as-form-area"},_=Object.freeze(Object.defineProperty({__proto__:null,default:e.defineComponent({__name:"AsaiForm",props:{ujt:{},asaidata:{},opt:{}},setup(t){const o=t,{$fn:a}=o.ujt,{get:f,clear:r}=a.createComponentLoader({files:Object.assign({"./AsaiFormLabel.vue":()=>Promise.resolve().then(()=>N),"./AsaiFormLabelArea.vue":()=>Promise.resolve().then(()=>P),"./AsaiFormLi.vue":()=>Promise.resolve().then(()=>L),"./AsaiFormObject.vue":()=>Promise.resolve().then(()=>U),"./AsaiFormShow.vue":()=>Promise.resolve().then(()=>O),"./AsaiInput.vue":()=>Promise.resolve().then(()=>D),"./AsaiRichEditor.vue":()=>Promise.resolve().then(()=>z),"./AsaiRichEditorToolbar.vue":()=>Promise.resolve().then(()=>T),"./AsaiSelect.vue":()=>Promise.resolve().then(()=>v),"./AsaiSelectCl.vue":()=>Promise.resolve().then(()=>R),"./AsaiSelectLv.vue":()=>Promise.resolve().then(()=>H),"./AsaiTextJson.vue":()=>Promise.resolve().then(()=>q),"./AsaiTextarea.vue":()=>Promise.resolve().then(()=>W),"./AsaiUpBinary.vue":()=>Promise.resolve().then(()=>Y),"./AsaiUpload.vue":()=>Promise.resolve().then(()=>X),"./AsaiUploadImg.vue":()=>Promise.resolve().then(()=>K),"./AsaiUploadImgCut.vue":()=>Promise.resolve().then(()=>J),"./AsaiUploadImgCutPop.vue":()=>Promise.resolve().then(()=>Q)}),eager:!1,cache:!0,cacheKey:"form_",target:o.asaidata,targetKey:"comp"});return o.asaidata.cmComp=n=>{const{comp:l,rule:s}=o.asaidata;return s?.[n]?.comp&&l[s[n].comp]?f(s[n].comp):l[n]?f(n):n==="object"&&l?.object?f("object"):null},o.opt?.isedit&&(o.asaidata.isedit=1),e.onUnmounted(()=>{r(),o.asaidata&&(o.asaidata.cmComp=null)}),(n,l)=>{const s=e.resolveComponent("AsaiFormLi");return e.openBlock(),e.createElementBlock("div",Z,[e.createVNode(s,{ujt:t.ujt,asaidata:t.asaidata,formdata:t.asaidata.data,opt:t.opt},null,8,["ujt","asaidata","formdata","opt"])])}}})},Symbol.toStringTag,{value:"Module"})),ee={key:3},N=Object.freeze(Object.defineProperty({__proto__:null,default:e.defineComponent({__name:"AsaiFormLabel",props:{ujt:{},asaidata:{},formdata:{},formkey:{}},setup(t){const o=t;return(a,f)=>{const r=e.resolveComponent("AsaiFormLabelArea");return e.openBlock(),e.createBlock(r,{ujt:t.ujt,asaidata:t.asaidata,formdata:t.formdata,formkey:t.formkey},{default:e.withCtx(()=>[o.asaidata.notit?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[],64)):Array.isArray(o.formdata)?(e.openBlock(),e.createElementBlock("span",{key:1,class:e.normalizeClass({"as-label-ico-arr":t.asaidata.ic>1&&typeof o.formdata[t.formkey]!="number","as-label-ico-arr-num":t.asaidata.ic>1&&typeof o.formdata[t.formkey]=="number","as-label-require":t.asaidata?.rule?.[t.formkey]?.require})},null,2)):(e.openBlock(),e.createElementBlock("span",{key:2,class:e.normalizeClass({"as-label-ico":t.asaidata.ic>1&&typeof o.formdata[t.formkey]!="number","as-label-ico-num":t.asaidata.ic>1&&typeof o.formdata[t.formkey]=="number","as-label-require":t.asaidata?.rule?.[t.formkey]?.require})},e.toDisplayString(t.asaidata.eq>2?'"':"")+e.toDisplayString(o.asaidata?.lang?.[t.formkey]||t.formkey)+e.toDisplayString(t.asaidata.eq>2?'"':"")+e.toDisplayString(t.asaidata.eq?":":""),3)),e.renderSlot(a.$slots,"default"),t.asaidata.eq>2?(e.openBlock(),e.createElementBlock("span",ee,",")):e.createCommentVNode("",!0)]),_:3},8,["ujt","asaidata","formdata","formkey"])}}})},Symbol.toStringTag,{value:"Module"})),P=Object.freeze(Object.defineProperty({__proto__:null,default:e.defineComponent({__name:"AsaiFormLabelArea",props:{ujt:{},asaidata:{},formdata:{},formkey:{}},setup(t){const o=t;return(a,f)=>o.asaidata.rule?.[t.formkey]?.nolabel||typeof o.formdata?.[t.formkey]=="object"?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["label",t.asaidata?.rule?.[t.formkey]?.class||""]),style:e.normalizeStyle(t.asaidata?.rule?.[t.formkey]?.style||"")},[e.renderSlot(a.$slots,"default")],6)):(e.openBlock(),e.createElementBlock("label",{key:1,class:e.normalizeClass(t.asaidata?.rule?.[t.formkey]?.class||""),style:e.normalizeStyle(t.asaidata?.rule?.[t.formkey]?.style||"")},[e.renderSlot(a.$slots,"default")],6))}})},Symbol.toStringTag,{value:"Module"})),L=Object.freeze(Object.defineProperty({__proto__:null,default:e.defineComponent({__name:"AsaiFormLi",props:{ujt:{},asaidata:{},formdata:{},opt:{}},setup(t){const o=t;return(a,f)=>{const r=e.resolveComponent("AsaiFormShow"),n=e.resolveComponent("AsaiFormObject"),l=e.resolveComponent("AsaiInput");return e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.formdata,(s,i)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[o.asaidata.rule?.[i]?.[o.opt?.isedit?"noedit":"noadd"]==2?(e.openBlock(),e.createBlock(r,{key:0,ujt:t.ujt,asaidata:t.asaidata,formdata:t.formdata,formkey:i},null,8,["ujt","asaidata","formdata","formkey"])):o.asaidata.rule?.[i]?.[o.opt?.isedit?"noedit":"noadd"]?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[t.asaidata?.cmComp&&t.asaidata?.cmComp(i)?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.asaidata.cmComp(i)),{key:0,ujt:t.ujt,asaidata:t.asaidata,formdata:t.formdata,formkey:i},null,8,["ujt","asaidata","formdata","formkey"])):typeof s=="object"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[t.asaidata?.cmComp&&t.asaidata?.cmComp("object")?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.asaidata.cmComp("object")),{key:0,ujt:t.ujt,asaidata:t.asaidata,formdata:t.formdata,formkey:i},null,8,["ujt","asaidata","formdata","formkey"])):(e.openBlock(),e.createBlock(n,{key:1,ujt:t.ujt,asaidata:t.asaidata,formdata:t.formdata,formkey:i},null,8,["ujt","asaidata","formdata","formkey"]))],64)):(e.openBlock(),e.createBlock(l,{key:2,ujt:t.ujt,asaidata:t.asaidata,formdata:t.formdata,formkey:i},null,8,["ujt","asaidata","formdata","formkey"]))],64))],64))),256)}}})},Symbol.toStringTag,{value:"Module"})),te={key:0},U=Object.freeze(Object.defineProperty({__proto__:null,default:e.defineComponent({__name:"AsaiFormObject",props:{ujt:{},asaidata:{},formdata:{},formkey:{}},setup(t){const o=t,a=e.ref(!0);return e.onUnmounted(()=>{a.value=null}),(f,r)=>{const n=e.resolveComponent("AsaiFormLi");return typeof o.formdata[t.formkey]=="object"?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(`${t.asaidata.ic?"as-form-row as-form-obj":"as-form-row"}`)},[e.createElementVNode("span",{class:e.normalizeClass(`${t.asaidata.ic>1?a.value?"as-label-ico-close":"as-label-ico-open":""}`),onClick:r[0]||(r[0]=l=>a.value=!a.value)},[e.createTextVNode(e.toDisplayString(t.asaidata.eq>2?'"':"")+e.toDisplayString(o.asaidata?.lang&&o.asaidata?.lang[t.formkey]||t.formkey)+e.toDisplayString(t.asaidata.eq>2?'"':"")+e.toDisplayString(t.asaidata.eq?":":"")+" ",1),a.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("span",te,e.toDisplayString(t.asaidata.eq>1?Array.isArray(o.formdata[t.formkey])?"[":"{":"")+" ... "+e.toDisplayString(t.asaidata.eq>1?Array.isArray(o.formdata[t.formkey])?"]":"}":"")+e.toDisplayString(t.asaidata.eq>2?",":""),1))],2),a.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(t.asaidata.eq>1?Array.isArray(o.formdata[t.formkey])?"[":"{":"")+" ",1),e.createVNode(n,{ujt:t.ujt,asaidata:t.asaidata,formdata:o.formdata[t.formkey]},null,8,["ujt","asaidata","formdata"]),e.createTextVNode(" "+e.toDisplayString(t.asaidata.eq>1?Array.isArray(o.formdata[t.formkey])?"]":"}":"")+e.toDisplayString(t.asaidata.eq>2?",":""),1)],64)):e.createCommentVNode("",!0)],2)):e.createCommentVNode("",!0)}}})},Symbol.toStringTag,{value:"Module"})),O=Object.freeze(Object.defineProperty({__proto__:null,default:e.defineComponent({__name:"AsaiFormShow",props:{ujt:{},asaidata:{},formdata:{},formkey:{}},setup(t){const o=t;return(a,f)=>{const r=e.resolveComponent("AsfInput"),n=e.resolveComponent("AsaiFormLabel");return e.openBlock(),e.createBlock(n,{ujt:t.ujt,asaidata:t.asaidata,formdata:t.formdata,formkey:t.formkey},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(typeof o.formdata[t.formkey]=="string"&&t.asaidata.eq>2?'"':"")+" ",1),e.createVNode(r,{ujt:t.ujt,opt:{...o.asaidata.rule?.[t.formkey]?.opt||{},type:o.asaidata.rule?.[t.formkey]?.type||(typeof o.formdata[t.formkey]=="number"?"number":"text"),max:o.asaidata.rule?.[t.formkey]?.max,min:o.asaidata.rule?.[t.formkey]?.min,noedit:!0},modelValue:o.formdata[t.formkey],"onUpdate:modelValue":f[0]||(f[0]=l=>o.formdata[t.formkey]=l)},null,8,["ujt","opt","modelValue"]),e.createTextVNode(" "+e.toDisplayString(typeof o.formdata[t.formkey]=="string"&&t.asaidata.eq>2?'"':""),1)]),_:1},8,["ujt","asaidata","formdata","formkey"])}}})},Symbol.toStringTag,{value:"Module"})),D=Object.freeze(Object.defineProperty({__proto__:null,default:e.defineComponent({__name:"AsaiInput",props:{ujt:{},asaidata:{},formdata:{},formkey:{}},setup(t){const o=t,{$fn:a}=o.ujt,f=e.computed(()=>a.As.toArr(o.asaidata?.lang?.[o.formkey+"data"])||a.As.toArr(o.asaidata?.rule?.[o.formkey]?.[o.formkey+"data"])||a.As.toArr(a.lg(o.asaidata?.rule?.[o.formkey]?.data))||[]);return(r,n)=>{const l=e.resolveComponent("AsfCheck"),s=e.resolveComponent("AsfInput"),i=e.resolveComponent("AsaiFormLabel");return e.openBlock(),e.createBlock(i,{ujt:t.ujt,asaidata:t.asaidata,formdata:t.formdata,formkey:t.formkey},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(typeof o.formdata[t.formkey]=="string"&&t.asaidata.eq>2?'"':"")+" ",1),o.asaidata.rule?.[t.formkey]?.type==="checkbox"||typeof o.formdata[t.formkey]=="boolean"?(e.openBlock(),e.createBlock(l,{key:0,ujt:t.ujt,opt:{...o.asaidata.rule?.[t.formkey]?.opt||{},selectdata:f.value},modelValue:o.formdata[t.formkey],"onUpdate:modelValue":n[0]||(n[0]=u=>o.formdata[t.formkey]=u)},null,8,["ujt","opt","modelValue"])):(e.openBlock(),e.createBlock(s,{key:1,ujt:t.ujt,opt:{...o.asaidata.rule?.[t.formkey]?.opt||{},type:o.asaidata.rule?.[t.formkey]?.type||(typeof o.formdata[t.formkey]=="number"?"number":"text"),max:o.asaidata.rule?.[t.formkey]?.max,min:o.asaidata.rule?.[t.formkey]?.min},modelValue:o.formdata[t.formkey],"onUpdate:modelValue":n[1]||(n[1]=u=>o.formdata[t.formkey]=u)},null,8,["ujt","opt","modelValue"])),e.createTextVNode(" "+e.toDisplayString(typeof o.formdata[t.formkey]=="string"&&t.asaidata.eq>2?'"':""),1)]),_:1},8,["ujt","asaidata","formdata","formkey"])}}})},Symbol.toStringTag,{value:"Module"})),ae={class:"as-richtext-content"},oe=["placeholder"],ne=e.defineComponent({__name:"AsaiRichEditor",props:{ujt:{},asaidata:{},formdata:{},formkey:{}},setup(t){const o=e.defineAsyncComponent({loader:()=>Promise.resolve().then(()=>T),delay:120}),a=t,{$global:f}=a.ujt,r={img:{maxWidth:288,quality:.8},imgurls:{}},n=e.ref(null),l=e.ref(null),s=e.ref(null),i=e.ref(a.asaidata?.rule?.[a.formkey]?.editorty||0);let u=null,c=null,m=null;async function y(){return u||(c||(c=Promise.resolve().then(()=>yt).then(A=>(u=A.createRichEditorMedia(r),u))),c)}e.onMounted(()=>{B(),y()}),e.onBeforeUnmount(()=>{m&&clearTimeout(m)});function B(){l.value&&(l.value.innerHTML=a.formdata[a.formkey])}function k(){const A=window.prompt("请输入链接地址");A&&p("createLink",{target:{value:A}})}function d(A){n.value.accept=`${A}/*`,e.nextTick(()=>n.value?.click())}async function g(A){const b=A.target.files?.[0];if(!b)return;const S=await y();let V,$="";b.type.startsWith("image")?(V=await S.compressFile(b),$=`<img src="${V}" style="max-width:100%">`):(b.size>1024*1024?V=URL.createObjectURL(b):V=await S.compressFile(b),$=b.type.startsWith("video")?`<video controls src="${V}" style="max-width:100%"></video>`:`<a href="${V}" download="${b.name}">${b.name}</a>`),p("insertHTML",{target:{value:$}})}async function x(){const A=await y(),b=Object.keys(r.imgurls);for(let S=0;S<b.length;S++){const V=b[S];r.imgurls[V]==="1"&&A.compressImage(V).then($=>{r.imgurls[V]=$,a.formdata[a.formkey]=a.formdata[a.formkey].replaceAll(V,$)})}}async function j(A){A.preventDefault();const b=await y(),S=A.clipboardData?.getData("text/html")||"",V=b.sanitize(S,1)||A.clipboardData?.getData("text/plain")||"";p("insertHTML",{target:{value:V}})}function h(){if(!l.value)return;const A=l.value.innerHTML;a.formdata[a.formkey]=A,m&&clearTimeout(m),m=setTimeout(()=>{y().then(b=>{l.value&&(a.formdata[a.formkey]=b.sanitize(l.value.innerHTML))})},300)}function p(A,b=null){if(l.value){if(b?.target?.tagName==="SELECT"&&b?.target?.value){document.execCommand(A,!1,b.target.value);return}document.execCommand(A,!1,b?.target?.value)}}function C(){i.value++,i.value>2&&(i.value=0),e.nextTick(B)}return(A,b)=>(e.openBlock(),e.createElementBlock("div",{class:"as-richtext-area",style:e.normalizeStyle(a.asaidata.rule?.[a.formkey]?.style||{})},[e.createVNode(e.unref(o),{lang:e.unref(f).lang.richtexteditor,onExec:p,onMedia:d,onLink:k,onUploadImg:x,onChangeView:C},null,8,["lang"]),e.createElementVNode("div",ae,[i.value!=1?(e.openBlock(),e.createElementBlock("div",{key:0,style:e.normalizeStyle({width:i.value>1?"50%":"100%"}),ref_key:"rfRichEditor",ref:l,contenteditable:"true",onPaste:j,onInput:h},null,36)):e.createCommentVNode("",!0),i.value>0?e.withDirectives((e.openBlock(),e.createElementBlock("textarea",{key:1,placeholder:a?.opt?.placeholder||"",ref_key:"rfRichCode",ref:s,"onUpdate:modelValue":b[0]||(b[0]=S=>a.formdata[a.formkey]=S),style:e.normalizeStyle({width:i.value>1?"50%":"100%"})},null,12,oe)),[[e.vModelText,a.formdata[a.formkey]]]):e.createCommentVNode("",!0)]),e.createElementVNode("input",{ref_key:"fileInput",ref:n,type:"file",hidden:"",onChange:g},null,544)],4))}}),w=(t,o)=>{const a=t.__vccOpts||t;for(const[f,r]of o)a[f]=r;return a},z=Object.freeze(Object.defineProperty({__proto__:null,default:w(ne,[["__scopeId","data-v-5c6cb195"]])},Symbol.toStringTag,{value:"Module"})),le={class:"as-richtext-toolbar"},re={value:""},ie=["value"],se={value:"p"},ce=["value"],me=["title"],de=["title"],fe=["title"],ue=["title"],pe=["title"],ye=["title"],ke=["title"],ge=["title"],T=Object.freeze(Object.defineProperty({__proto__:null,default:w(e.defineComponent({__name:"AsaiRichEditorToolbar",props:{lang:{}},emits:["exec","media","link","uploadImg","changeView"],setup(t,{emit:o}){const a=o;return(f,r)=>(e.openBlock(),e.createElementBlock("div",le,[e.createElementVNode("select",{onChange:r[0]||(r[0]=n=>a("exec","fontSize",n))},[e.createElementVNode("option",re,e.toDisplayString(t.lang.fontsize),1),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(7,n=>e.createElementVNode("option",{key:"size"+n,value:n+1},e.toDisplayString((n+1)*2+6)+"px",9,ie)),64))],32),e.createElementVNode("select",{onChange:r[1]||(r[1]=n=>a("exec","formatBlock",n))},[e.createElementVNode("option",se,e.toDisplayString(t.lang.paragraph),1),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(6,n=>e.createElementVNode("option",{key:"h"+n,value:"h"+n},e.toDisplayString(t.lang.title)+e.toDisplayString(n),9,ce)),64))],32),e.createElementVNode("button",{type:"button",onClick:r[2]||(r[2]=n=>a("exec","bold")),title:t.lang.bold},"B",8,me),e.createElementVNode("button",{type:"button",onClick:r[3]||(r[3]=n=>a("exec","underline")),title:t.lang.underline},"U",8,de),e.createElementVNode("button",{type:"button",onClick:r[4]||(r[4]=n=>a("exec","italic")),title:t.lang.italic},"I",8,fe),e.createElementVNode("button",{type:"button",onClick:r[5]||(r[5]=n=>a("exec","strikethrough")),title:t.lang.strikethrough},"S",8,ue),e.createElementVNode("input",{type:"color",onInput:r[6]||(r[6]=n=>a("exec","foreColor",n)),title:t.lang.foreColor},null,40,pe),e.createElementVNode("input",{type:"color",onInput:r[7]||(r[7]=n=>a("exec","backColor",n)),title:t.lang.backColor},null,40,ye),e.createElementVNode("button",{type:"button",onClick:r[8]||(r[8]=n=>a("exec","insertOrderedList")),title:t.lang.insertOrderedList},"有",8,ke),e.createElementVNode("button",{type:"button",onClick:r[9]||(r[9]=n=>a("exec","insertUnorderedList")),title:t.lang.insertUnorderedList},"无",8,ge),e.createElementVNode("button",{type:"button",onClick:r[10]||(r[10]=n=>a("exec","justifyCenter")),title:"居中"},"中"),e.createElementVNode("button",{type:"button",onClick:r[11]||(r[11]=n=>a("exec","justifyFull")),title:"两端对齐"},"两"),e.createElementVNode("button",{type:"button",onClick:r[12]||(r[12]=n=>a("exec","justifyRight")),title:"右对齐"},"右"),e.createElementVNode("button",{type:"button",onClick:r[13]||(r[13]=n=>a("exec","justifyLeft")),title:"左对齐"},"左"),e.createElementVNode("button",{type:"button",onClick:r[14]||(r[14]=n=>a("exec","delete")),title:"删除"},"删"),e.createElementVNode("button",{type:"button",onClick:r[15]||(r[15]=n=>a("link")),title:"链接"},"链"),e.createElementVNode("button",{type:"button",onClick:r[16]||(r[16]=n=>a("exec","unlink")),title:"删除链接"},"除"),e.createElementVNode("button",{type:"button",onClick:r[17]||(r[17]=n=>a("media","image")),title:"图片"},"🖼️"),e.createElementVNode("button",{type:"button",onClick:r[18]||(r[18]=n=>a("media","video")),title:"视频"},"🎬"),e.createElementVNode("button",{type:"button",onClick:r[19]||(r[19]=n=>a("media","file")),title:"文件"},"📎"),e.createElementVNode("button",{type:"button",onClick:r[20]||(r[20]=n=>a("uploadImg")),title:"上传"},"上"),e.createElementVNode("button",{type:"button",onClick:r[21]||(r[21]=n=>a("changeView")),title:"切换"},"HTML")]))}}),[["__scopeId","data-v-bf97b430"]])},Symbol.toStringTag,{value:"Module"})),v=Object.freeze(Object.defineProperty({__proto__:null,default:e.defineComponent({__name:"AsaiSelect",props:{ujt:{},asaidata:{},formdata:{},formkey:{}},setup(t){const o=t,{$fn:a}=o.ujt,f=e.computed(()=>a.As.toArr(o.asaidata?.lang?.[o.formkey+"data"])||a.As.toArr(o.asaidata?.rule?.[o.formkey]?.[o.formkey+"data"])||a.As.toArr(a.lg(o.asaidata?.rule?.[o.formkey]?.data))||[]);return(r,n)=>{const l=e.resolveComponent("AsfSelect"),s=e.resolveComponent("AsaiFormLabel");return e.openBlock(),e.createBlock(s,{ujt:t.ujt,asaidata:t.asaidata,formdata:t.formdata,formkey:t.formkey},{default:e.withCtx(()=>[e.createVNode(l,{ujt:t.ujt,opt:{...o.asaidata.rule?.[t.formkey]?.opt||{},selectdata:f.value},modelValue:o.formdata[t.formkey],"onUpdate:modelValue":n[0]||(n[0]=i=>o.formdata[t.formkey]=i)},null,8,["ujt","opt","modelValue"])]),_:1},8,["ujt","asaidata","formdata","formkey"])}}})},Symbol.toStringTag,{value:"Module"})),R=Object.freeze(Object.defineProperty({__proto__:null,default:e.defineComponent({__name:"AsaiSelectCl",props:{ujt:{},asaidata:{},formdata:{},formkey:{}},setup(t){const o=t,{$fn:a}=o.ujt,f=e.computed(()=>{let r;return o.asaidata?.rule?.[o.formkey]?.[o.formkey+"data"]?.nodeMap?.size>0?r=[...o.asaidata.rule[o.formkey][o.formkey+"data"].nodeMap].map(n=>[n[1].id,n[1].nm,o.asaidata.rule[o.formkey][o.formkey+"data"].depthMap.get(n[0])]).filter(n=>n&&n[0]!=="asai"):r=(a.As.toArr(o.asaidata?.lang?.[o.formkey+"data"])||a.As.toArr(a.lg(o.asaidata?.rule?.[o.formkey]?.data))||[]).filter(n=>n&&n[0]!=="asai"),(!o.formdata[o.formkey]||o.formdata[o.formkey]==="asai")&&(o.formdata[o.formkey]=r?.[0]?.[0]||"asai"),r});return(r,n)=>{const l=e.resolveComponent("AsfSelect"),s=e.resolveComponent("AsaiFormLabel");return e.openBlock(),e.createBlock(s,{ujt:t.ujt,asaidata:t.asaidata,formdata:t.formdata,formkey:t.formkey},{default:e.withCtx(()=>[e.createVNode(l,{ujt:t.ujt,opt:{...o.asaidata.rule?.[t.formkey]?.opt||{},selectdata:f.value},modelValue:o.formdata[t.formkey],"onUpdate:modelValue":n[0]||(n[0]=i=>o.formdata[t.formkey]=i)},null,8,["ujt","opt","modelValue"])]),_:1},8,["ujt","asaidata","formdata","formkey"])}}})},Symbol.toStringTag,{value:"Module"})),H=Object.freeze(Object.defineProperty({__proto__:null,default:e.defineComponent({__name:"AsaiSelectLv",props:{ujt:{},asaidata:{},formdata:{},formkey:{}},setup(t){const o=t,{$fn:a,$global:f}=o.ujt,r=e.computed(()=>{const n=a.As.toArr(o.asaidata?.lang?.[o.formkey+"data"])||a.As.toArr(o.asaidata?.rule?.[o.formkey]?.[o.formkey+"data"])||a.As.toArr(a.lg(o.asaidata?.rule?.[o.formkey]?.data))||[],l=Number(f.user.info.lv||0);return n.filter(s=>Number(s?.[0]||0)<l)});return(n,l)=>{const s=e.resolveComponent("AsfSelect"),i=e.resolveComponent("AsaiFormLabel");return e.openBlock(),e.createBlock(i,{ujt:t.ujt,asaidata:t.asaidata,formdata:t.formdata,formkey:t.formkey},{default:e.withCtx(()=>[e.createVNode(s,{ujt:t.ujt,opt:{...o.asaidata.rule?.[t.formkey]?.opt||{},selectdata:r.value},modelValue:o.formdata[t.formkey],"onUpdate:modelValue":l[0]||(l[0]=u=>o.formdata[t.formkey]=u)},null,8,["ujt","opt","modelValue"])]),_:1},8,["ujt","asaidata","formdata","formkey"])}}})},Symbol.toStringTag,{value:"Module"})),q=Object.freeze(Object.defineProperty({__proto__:null,default:e.defineComponent({__name:"AsaiTextJson",props:{ujt:{},asaidata:{},formdata:{},formkey:{}},setup(t){const o=t;return(a,f)=>{const r=e.resolveComponent("AsfTextarea"),n=e.resolveComponent("AsaiFormLabel");return e.openBlock(),e.createBlock(n,{ujt:t.ujt,asaidata:t.asaidata,formdata:t.formdata,formkey:t.formkey},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(typeof o.formdata[t.formkey]=="string"&&t.asaidata.eq>2?'"':"")+" ",1),e.createVNode(r,{ujt:t.ujt,opt:{...o.asaidata.rule?.[t.formkey]?.opt||{}},modelValue:o.formdata[t.formkey],"onUpdate:modelValue":f[0]||(f[0]=l=>o.formdata[t.formkey]=l)},null,8,["ujt","opt","modelValue"]),e.createTextVNode(" "+e.toDisplayString(typeof o.formdata[t.formkey]=="string"&&t.asaidata.eq>2?'"':""),1)]),_:1},8,["ujt","asaidata","formdata","formkey"])}}})},Symbol.toStringTag,{value:"Module"})),W=Object.freeze(Object.defineProperty({__proto__:null,default:e.defineComponent({__name:"AsaiTextarea",props:{ujt:{},asaidata:{},formdata:{},formkey:{}},setup(t){const o=t;return(a,f)=>{const r=e.resolveComponent("AsfTextarea"),n=e.resolveComponent("AsaiFormLabel");return e.openBlock(),e.createBlock(n,{ujt:t.ujt,asaidata:t.asaidata,formdata:t.formdata,formkey:t.formkey},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(typeof o.formdata[t.formkey]=="string"&&t.asaidata.eq>2?'"':"")+" ",1),e.createVNode(r,{ujt:t.ujt,opt:{...o.asaidata.rule?.[t.formkey]?.opt||{}},modelValue:o.formdata[t.formkey],"onUpdate:modelValue":f[0]||(f[0]=l=>o.formdata[t.formkey]=l)},null,8,["ujt","opt","modelValue"]),e.createTextVNode(" "+e.toDisplayString(typeof o.formdata[t.formkey]=="string"&&t.asaidata.eq>2?'"':""),1)]),_:1},8,["ujt","asaidata","formdata","formkey"])}}})},Symbol.toStringTag,{value:"Module"})),he=["accept"],be={key:0},Ae=["src","alt","title"],je=["title"],Ce=["title"],Y=Object.freeze(Object.defineProperty({__proto__:null,default:w(e.defineComponent({__name:"AsaiUpBinary",props:{ujt:{},asaidata:{},formdata:{},formkey:{}},setup(t){const o=t,{$fn:a,$global:f,$model:r}=o.ujt,n=e.ref(null),l=e.ref(null),s=e.ref("+"),i=async c=>{if(n.value.value){if(l.value=c.target.files[0],n.value.value="",!l.value){s.value=a.lg("asai.fail");return}try{a.apisys.apiUpload("/api/asaifile/manage/upbinary/?path="+f.sys.syspath.updir+o.asaidata?.rule?.[o.formkey]?.filename||a.As.getName(l.value.name),l.value).then(m=>{s.value="",o.formdata[o.formkey]=m.data})}catch(m){s.value=a.lg("asai.fail")+" "+m.message}}};function u(){n.value.click()}return(c,m)=>{const y=e.resolveComponent("AsaiFormLabel");return e.openBlock(),e.createBlock(y,{ujt:t.ujt,asaidata:t.asaidata,formdata:t.formdata,formkey:t.formkey},{default:e.withCtx(()=>[t.asaidata?.rule?.[t.formkey]?.accept?(e.openBlock(),e.createElementBlock("input",{key:0,accept:t.asaidata?.rule?.[t.formkey]?.accept,ref_key:"rfInputFile",ref:n,type:"file",hidden:"",onChange:i},null,40,he)):(e.openBlock(),e.createElementBlock("input",{key:1,ref_key:"rfInputFile",ref:n,type:"file",hidden:"",onChange:i},null,544)),e.createElementVNode("div",{class:"as-upload-image",onClickOnce:e.withModifiers(u,["stop","prevent"])},[o.formdata[t.formkey]?(e.openBlock(),e.createElementBlock("div",be,[t.asaidata?.rule?.[t.formkey]?.accept?.startsWith("image/")?(e.openBlock(),e.createElementBlock("img",{key:0,src:e.unref(a).As.getUrlByCfg(e.unref(f).link.api.web)+"/"+o.formdata[t.formkey],alt:o.formdata[t.formkey],title:o.formdata[t.formkey]},null,8,Ae)):(e.openBlock(),e.createElementBlock("div",{key:1,class:"as-upload-tit",title:o.formdata[t.formkey]},e.toDisplayString(o.formdata[t.formkey]),9,je))])):(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(s.value==="+"?"":"as-upload-tit"),title:s.value},e.toDisplayString(s.value),11,Ce))],32)]),_:1},8,["ujt","asaidata","formdata","formkey"])}}}),[["__scopeId","data-v-e9910494"]])},Symbol.toStringTag,{value:"Module"})),xe={key:0},Be=["src","alt","title"],Se=["title"],Ve=["title"],$e=["accept"],X=Object.freeze(Object.defineProperty({__proto__:null,default:w(e.defineComponent({__name:"AsaiUpload",props:{ujt:{},asaidata:{},formdata:{},formkey:{}},setup(t){const o=t,{$fn:a,$global:f,$model:r}=o.ujt,n=e.ref(null),l=e.ref(null),s=e.ref("+"),i=async c=>{if(n.value.value){if(l.value=c.target.files[0],n.value.value="",!l.value){s.value=a.lg("asai.fail");return}const m=new FileReader;m.onload=async()=>{const y=m.result.split(",")[1];try{a.apisys.apiPost("/api/asaifile/manage/upbase64/?path="+f.sys.syspath.updir+a.As.getName(l.value.name),y,{headers:{"Content-Type":"application/json"}}).then(B=>{s.value="",o.formdata[o.formkey]=B.data})}catch(B){s.value=a.lg("asai.fail")+" "+B.message}},m.readAsDataURL(l.value)}};function u(){n.value.click()}return(c,m)=>{const y=e.resolveComponent("AsaiFormLabel");return e.openBlock(),e.createBlock(y,{ujt:t.ujt,asaidata:t.asaidata,formdata:t.formdata,formkey:t.formkey},{default:e.withCtx(()=>[e.createElementVNode("div",{class:"as-upload-image",onPointerdown:e.withModifiers(u,["prevent"])},[o.formdata[t.formkey]?(e.openBlock(),e.createElementBlock("div",xe,[t.asaidata?.rule?.[t.formkey]?.accept?.startsWith("image/")?(e.openBlock(),e.createElementBlock("img",{key:0,src:e.unref(a).As.getUrlByCfg(e.unref(f).link.api.web)+"/"+o.formdata[t.formkey],alt:o.formdata[t.formkey],title:o.formdata[t.formkey]},null,8,Be)):(e.openBlock(),e.createElementBlock("div",{key:1,class:"as-upload-tit",title:o.formdata[t.formkey]},e.toDisplayString(o.formdata[t.formkey]),9,Se))])):(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(s.value==="+"?"":"as-upload-tit"),title:s.value},e.toDisplayString(s.value),11,Ve))],32),t.asaidata?.rule?.[t.formkey]?.accept?(e.openBlock(),e.createElementBlock("input",{key:0,accept:t.asaidata?.rule?.[t.formkey]?.accept,ref_key:"rfInputFile",ref:n,type:"file",hidden:"",onChange:i},null,40,$e)):(e.openBlock(),e.createElementBlock("input",{key:1,ref_key:"rfInputFile",ref:n,type:"file",hidden:"",onChange:i},null,544))]),_:1},8,["ujt","asaidata","formdata","formkey"])}}}),[["__scopeId","data-v-50ddd40b"]])},Symbol.toStringTag,{value:"Module"})),we={key:0},Ee=["src"],Fe=["title"],K=Object.freeze(Object.defineProperty({__proto__:null,default:w(e.defineComponent({__name:"AsaiUploadImg",props:{ujt:{},asaidata:{},formdata:{},formkey:{}},setup(t){const o=t,{$fn:a,$global:f}=o.ujt,r=e.ref(null),n=e.ref(null),l=e.ref("+");e.onMounted(()=>{const c="popupload"+o.formkey;f.pop[c]||(f.pop[c]={stat:0,full:0,tit:"",params:{}})});const s=async c=>{if(r.value.value){if(n.value=c.target.files[0],r.value.value="",!n.value){l.value=a.lg("asai.fail");return}const m=new FileReader;m.onload=async()=>{try{u({base64Data:m.result,asaidata:o.asaidata,formdata:o.formdata,formkey:o.formkey,fn:y=>{o.formdata[o.formkey]=y;const B="popupload"+o.formkey;f.pop[B]&&(f.pop[B].stat=0)}}),l.value=""}catch(y){l.value=a.lg("asai.fail")+" "+y.message}},m.readAsDataURL(n.value)}};function i(){r.value.click()}function u(c){const m="popupload"+o.formkey;f.pop[m].stat=1,f.pop[m].full=2,f.pop[m].tit=a.lg("asai.upload"),f.pop[m].params=c}return(c,m)=>{const y=e.resolveComponent("AsaiUploadImgCutPop"),B=e.resolveComponent("AsaiFormLabel");return e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createVNode(y,{formkey:t.formkey,ujt:t.ujt},null,8,["formkey","ujt"]),e.createVNode(B,{ujt:t.ujt,asaidata:t.asaidata,formdata:t.formdata,formkey:t.formkey},{default:e.withCtx(()=>[e.createElementVNode("div",{class:"as-upload-image",onPointerdown:e.withModifiers(i,["prevent"])},[o.formdata[t.formkey]?(e.openBlock(),e.createElementBlock("div",we,[e.createElementVNode("img",{src:o.formdata[t.formkey]},null,8,Ee)])):(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(l.value==="+"?"":"as-upload-tit"),title:l.value},e.toDisplayString(l.value),11,Fe))],32),e.createElementVNode("input",{accept:"image/*",ref_key:"rfInputFile",ref:r,type:"file",hidden:"",onChange:s},null,544)]),_:1},8,["ujt","asaidata","formdata","formkey"])],64)}}}),[["__scopeId","data-v-36b7ec3b"]])},Symbol.toStringTag,{value:"Module"})),Ie={class:"as-img-area"},Me={key:0,class:"as-img-preview"},Te=["src"],Ne={key:1,class:"as-img-cut-area"},Pe=["src"],Le={class:"as-img-btns"},J=Object.freeze(Object.defineProperty({__proto__:null,default:w(e.defineComponent({__name:"AsaiUploadImgCut",props:{ujt:{},params:{}},setup(t){const o=t,a=e.ref(""),f=e.ref(null),r=e.ref(null),n=e.ref(null),l=o.params.min||1,s=e.ref({x:0,y:0,width:0,height:0,maxWidth:0,maxHeight:0}),i=e.ref({type:null,startX:0,startY:0,originalX:0,originalY:0,originalWidth:0,originalHeight:0,direction:null}),u=e.computed(()=>({transform:`translate(${s.value.x}px, ${s.value.y}px)`,width:`${s.value.width}px`,height:`${s.value.height}px`})),c=e.computed(()=>s.value.width>0&&s.value.height>0),m=()=>{const h=f.value,p=n.value;if(!h||!p){console.error("Image or container element not found.");return}const C=Math.min(p.clientWidth,h.naturalWidth),A=Math.min(p.clientHeight,h.naturalHeight),b=Math.min(C,h.naturalWidth),S=Math.min(A,h.naturalHeight);s.value={x:(C-b)/2,y:(A-S)/2,width:b,height:S,maxWidth:C,maxHeight:A}},y=(h,p=null)=>{const C=window.event||event,A=C.touches?C.touches[0]:C;i.value={type:h,startX:A.clientX,startY:A.clientY,originalX:s.value.x,originalY:s.value.y,originalWidth:s.value.width,originalHeight:s.value.height,direction:p};const b=S=>{requestAnimationFrame(()=>{h==="move"?B(S):k(S)})};window.addEventListener("mousemove",b),window.addEventListener("touchmove",b),window.addEventListener("mouseup",d),window.addEventListener("touchend",d)},B=h=>{const p=window.event||h,C=p.touches?p.touches[0]:p;if(i.value.type!=="move")return;const A=C.clientX-i.value.startX,b=C.clientY-i.value.startY,S=Math.max(0,Math.min(i.value.originalX+A,s.value.maxWidth-s.value.width)),V=Math.max(0,Math.min(i.value.originalY+b,s.value.maxHeight-s.value.height));Object.assign(s.value,{x:S,y:V})},k=h=>{const p=window.event||h,C=p.touches?p.touches[0]:p;if(i.value.type!=="resize")return;const A=C.clientX-i.value.startX,b=C.clientY-i.value.startY,S=i.value.direction;let V=i.value.originalWidth,$=i.value.originalHeight,E=i.value.originalX,I=i.value.originalY;switch(S){case"tr":V=Math.max(l,Math.min(i.value.originalWidth+A,s.value.maxWidth-E)),$=Math.max(l,i.value.originalHeight-b),I=Math.max(0,i.value.originalY+b);break;case"tl":V=Math.max(l,i.value.originalWidth-A),$=Math.max(l,i.value.originalHeight-b),E=Math.max(0,i.value.originalX+A),I=Math.max(0,i.value.originalY+b);break;case"br":V=Math.max(l,i.value.originalWidth+A),$=Math.max(l,i.value.originalHeight+b);break;case"bl":V=Math.max(l,i.value.originalWidth-A),$=Math.max(l,i.value.originalHeight+b),E=Math.max(0,i.value.originalX+A);break}V=Math.min(V,s.value.maxWidth-E),$=Math.min($,s.value.maxHeight-I),Object.assign(s.value,{x:E,y:I,width:V,height:$})},d=()=>{i.value.type=null,window.removeEventListener("mousemove",B),window.removeEventListener("touchmove",B),window.removeEventListener("mousemove",k),window.removeEventListener("touchmove",k),window.removeEventListener("mouseup",d),window.removeEventListener("touchend",d)},g=()=>{const h=f.value,p=h.naturalWidth/h.width,C=h.naturalHeight/h.height,A=Math.min(s.value.width*p,h.naturalWidth),b=Math.min(s.value.height*C,h.naturalHeight),S=document.createElement("canvas");S.width=A,S.height=b,S.getContext("2d").drawImage(h,s.value.x*p,s.value.y*C,A,b,0,0,A,b),a.value=S.toDataURL("image/png",.9),o.params.asaidata?.rule?.[o.params?.formkey]?.data&&e.nextTick(()=>{let $=o.params.asaidata.rule[o.params.formkey].data,E={};if($.width<A||$.height<b){$.height/b>$.width/A?(E.width=$.width,E.height=b*$.width/A):(E.width=A*$.height/b,E.height=$.height);const I=r.value,M=document.createElement("canvas");M.width=E.width,M.height=E.height,M.getContext("2d").drawImage(I,0,0,E.width,E.height),a.value=M.toDataURL("image/png",.9)}})},x=()=>{const h=document.createElement("a");h.download="cropped-image.png",h.href=a.value,h.click()},j=()=>{o.params.fn(a.value)};return(h,p)=>(e.openBlock(),e.createElementBlock("div",Ie,[a.value?(e.openBlock(),e.createElementBlock("div",Me,[e.createElementVNode("img",{ref_key:"cutImage",ref:r,src:a.value},null,8,Te)])):(e.openBlock(),e.createElementBlock("div",Ne,[e.createElementVNode("div",{class:"as-img-cut",ref_key:"previewContainer",ref:n},[e.createElementVNode("img",{ref_key:"previewImage",ref:f,src:o.params.base64Data,onLoad:m},null,40,Pe),e.withDirectives(e.createElementVNode("div",{class:"as-img-crop-box",style:e.normalizeStyle(u.value),onMousedown:p[8]||(p[8]=e.withModifiers(C=>y("move"),["prevent"])),onTouchstart:p[9]||(p[9]=e.withModifiers(C=>y("move"),["prevent"]))},[e.createElementVNode("div",{class:"as-img-crop-handle top-left",onMousedown:p[0]||(p[0]=e.withModifiers(C=>y("resize","tl"),["stop"])),onTouchstart:p[1]||(p[1]=e.withModifiers(C=>y("resize","tl"),["stop"]))},null,32),e.createElementVNode("div",{class:"as-img-crop-handle top-right",onMousedown:p[2]||(p[2]=e.withModifiers(C=>y("resize","tr"),["stop"])),onTouchstart:p[3]||(p[3]=e.withModifiers(C=>y("resize","tr"),["stop"]))},null,32),e.createElementVNode("div",{class:"as-img-crop-handle bottom-left",onMousedown:p[4]||(p[4]=e.withModifiers(C=>y("resize","bl"),["stop"])),onTouchstart:p[5]||(p[5]=e.withModifiers(C=>y("resize","bl"),["stop"]))},null,32),e.createElementVNode("div",{class:"as-img-crop-handle bottom-right",onMousedown:p[6]||(p[6]=e.withModifiers(C=>y("resize","br"),["stop"])),onTouchstart:p[7]||(p[7]=e.withModifiers(C=>y("resize","br"),["stop"]))},null,32)],36),[[e.vShow,c.value]])],512)])),e.createElementVNode("div",Le,[a.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("button",{onClick:x},"下载图片"),e.createElementVNode("button",{onClick:j},"确认上传")],64)):(e.openBlock(),e.createElementBlock("button",{key:1,onClick:g},"确认裁剪"))])]))}}),[["__scopeId","data-v-f328eb1d"]])},Symbol.toStringTag,{value:"Module"})),Q=Object.freeze(Object.defineProperty({__proto__:null,default:e.defineComponent({__name:"AsaiUploadImgCutPop",props:{ujt:{},formkey:{}},setup(t){const o=t,{$global:a}=o.ujt;return(f,r)=>{const n=e.resolveComponent("AsaiUploadImgCut"),l=e.resolveComponent("PopBox");return e.openBlock(),e.createBlock(l,{ujt:t.ujt,id:"popupload"+t.formkey},{default:e.withCtx(()=>[e.unref(a).pop["popupload"+t.formkey].stat?(e.openBlock(),e.createBlock(n,{key:0,ujt:t.ujt,params:e.unref(a).pop["popupload"+t.formkey].params},null,8,["ujt","params"])):e.createCommentVNode("",!0)]),_:1},8,["ujt","id"])}}})},Symbol.toStringTag,{value:"Module"})),Ue=Object.freeze(Object.defineProperty({__proto__:null,default:w(e.defineComponent({__name:"AsfCheck",props:{ujt:{},opt:{},modelValue:{}},emits:["update:modelValue"],setup(t,{emit:o}){e.useCssVars(c=>({v46073f5c:i.value}));const a=t,{$global:f}=a.ujt,r=o;let n=e.computed({get(){return a.modelValue},set(c){a.opt?.onChange&&typeof a.opt.onChange=="function"&&a.opt.onChange(c,a.modelValue),r("update:modelValue",c)}});const l=e.computed(()=>{const c=a.opt?.selectdata;return Array.isArray(c)&&c.length?c.map((m,y)=>Array.isArray(m)&&m.length>=2?[m[0],m[1]]:typeof m=="object"&&m!==null?Object.values(m):[!!y,String(m)]):typeof c=="object"&&c&&Object.keys(c)?.length?Object.entries(c):[[!1,f?.lang?.asai?.off||"off"],[!0,f?.lang?.asai?.on||"on"]]}),s=e.computed(()=>n.value===l.value?.[1]?.[0]),i=e.computed(()=>a?.opt?.height||"var(--sa3)");function u(c){s.value?n.value=l.value?.[0]?.[0]:n.value=l.value?.[1]?.[0]}return(c,m)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(`asf-check${s.value?"-ck":""}`),style:e.normalizeStyle(a.opt?.style||{}),onClick:u},[e.createElementVNode("div",{class:e.normalizeClass(`asf-check-ico${s.value?"-ck":""}`)},null,2),e.createElementVNode("div",{class:e.normalizeClass(`asf-check-txt${s.value?"-ck":""}`)},e.toDisplayString(s.value?l.value?.[1]?.[1]:l.value?.[0]?.[1]),3)],6))}}),[["__scopeId","data-v-819ba6db"]])},Symbol.toStringTag,{value:"Module"})),Oe={class:"asf-input asf-form"},De=["type","placeholder","value"],ze=["type","max","min","readonly","placeholder"],ve=["type","maxlength","readonly","placeholder"],Re=["step","type","readonly","placeholder"],He=["type","readonly","placeholder"],qe={key:5,class:"unit"},We=Object.freeze(Object.defineProperty({__proto__:null,default:w(e.defineComponent({__name:"AsfInput",props:{ujt:{},opt:{},modelValue:{}},emits:["update:modelValue"],setup(t,{emit:o}){e.useCssVars(u=>({v40a0921e:n.value}));const a=t,f=o;let r=e.computed({get(){return a.modelValue},set(u){a.opt?.onChange&&typeof a.opt.onChange=="function"&&a.opt.onChange(u,a.modelValue),f("update:modelValue",u)}});const n=e.computed(()=>a?.opt?.height||"var(--sa3)"),l=e.computed(()=>a?.opt?.type||(a?.opt?.max?"number":"text")),s=e.ref(null);function i(u,c){if(u&&c&&typeof c=="object")for(const[m,y]of Object.entries(c))typeof y=="boolean"?y?u.setAttribute(m,""):u.removeAttribute(m):u.setAttribute(m,y)}return e.onMounted(()=>{i(s.value,a.opt?.attr)}),(u,c)=>(e.openBlock(),e.createElementBlock("div",Oe,[t.opt?.noedit?(e.openBlock(),e.createElementBlock("input",{key:0,ref_key:"domForm",ref:s,class:"input",style:e.normalizeStyle(a.opt?.style||{}),type:l.value,readonly:!0,placeholder:t.opt?.placeholder||"",value:t.modelValue},null,12,De)):t.opt?.max?e.withDirectives((e.openBlock(),e.createElementBlock("input",{key:1,ref_key:"domForm",ref:s,style:e.normalizeStyle(a.opt?.style||{}),type:l.value,max:t.opt?.max,min:t.opt?.min,readonly:!!t.opt?.readonly,placeholder:t.opt?.placeholder||"","onUpdate:modelValue":c[0]||(c[0]=m=>e.isRef(r)?r.value=m:r=m)},null,12,ze)),[[e.vModelDynamic,e.unref(r)]]):t.opt?.maxlength?e.withDirectives((e.openBlock(),e.createElementBlock("input",{key:2,ref_key:"domForm",ref:s,style:e.normalizeStyle(a.opt?.style||{}),type:l.value,maxlength:t.opt?.maxlength,readonly:!!t.opt?.readonly,placeholder:t.opt?.placeholder||"","onUpdate:modelValue":c[1]||(c[1]=m=>e.isRef(r)?r.value=m:r=m)},null,12,ve)),[[e.vModelDynamic,e.unref(r)]]):t.opt?.step?e.withDirectives((e.openBlock(),e.createElementBlock("input",{key:3,ref_key:"domForm",ref:s,style:e.normalizeStyle(a.opt?.style||{}),step:t.opt?.step,type:l.value,readonly:!!t.opt?.readonly,placeholder:t.opt?.placeholder||"","onUpdate:modelValue":c[2]||(c[2]=m=>e.isRef(r)?r.value=m:r=m)},null,12,Re)),[[e.vModelDynamic,e.unref(r)]]):e.withDirectives((e.openBlock(),e.createElementBlock("input",{key:4,ref_key:"domForm",ref:s,style:e.normalizeStyle(a.opt?.style||{}),type:l.value,readonly:!!t.opt?.readonly,placeholder:t.opt?.placeholder||"","onUpdate:modelValue":c[3]||(c[3]=m=>e.isRef(r)?r.value=m:r=m)},null,12,He)),[[e.vModelDynamic,e.unref(r)]]),t.opt?.unit?(e.openBlock(),e.createElementBlock("div",qe,e.toDisplayString(t.opt?.unit),1)):e.createCommentVNode("",!0)]))}}),[["__scopeId","data-v-45c548dd"]])},Symbol.toStringTag,{value:"Module"})),Ye={class:"asf-inputsn"},Xe=["onUpdate:modelValue","onInput","onKeydown","onPaste"],Ke=Object.freeze(Object.defineProperty({__proto__:null,default:w(e.defineComponent({__name:"AsfInputSn",props:{ujt:{},opt:{},modelValue:{}},emits:["update:modelValue"],setup(t,{emit:o}){const a=t,f=o,r=a.opt?.snge||0,n=a.opt?.snger||0,l=a.opt?.snlen||8,s=e.ref(Array(l).fill("")),i=e.ref([]);function u(){f("update:modelValue",s.value.join(""))}const c=e.watch(()=>a.modelValue,d=>{const g=s.value.join("");if(d!=null&&d!==g){const x=String(d).replace(/\s/g,"").split("");for(let j=0;j<l;j++)s.value[j]=x[j]||""}},{immediate:!0});function m(d){let g=s.value[d];s.value[d]=g.replace(/\s/g,"").slice(0,1),s.value[d]&&d<l-1&&i.value[d+1].focus(),u()}function y(d,g){g.key==="Backspace"&&!s.value[d]&&d>0&&(i.value[d-1].focus(),u())}function B(d,g){g.preventDefault();const x=g.clipboardData?.getData("text")||"";if(!x)return;const j=x.replace(/\s/g,"").split("");let h=d;for(let p=0;p<j.length;p++){const C=d+p;if(C<l)s.value[C]=j[p],h=C;else break}h<l-1?i.value[h+1].focus():i.value[l-1].focus(),u()}function k(d){d.target.select()}return e.onBeforeUnmount(()=>{c&&c.stop()}),(d,g)=>(e.openBlock(),e.createElementBlock("div",Ye,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,(x,j)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:j},[j&&e.unref(r)&&!(j%e.unref(r))&&(!e.unref(n)||e.unref(n)&&j%e.unref(n))?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode("-")],64)):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("input",{class:"asf-form",ref_for:!0,ref_key:"codeInputs",ref:i,"onUpdate:modelValue":h=>s.value[j]=h,type:"text",maxlength:"1",onInput:h=>m(j),onKeydown:h=>y(j,h),onFocus:k,onPaste:h=>B(j,h)},null,40,Xe),[[e.vModelText,s.value[j]]])],64))),128))]))}}),[["__scopeId","data-v-67ddc34d"]])},Symbol.toStringTag,{value:"Module"})),Je={class:"asf-select"},Qe={class:"asf-select-main"},Ge={class:"asf-select-cur-val"},Ze={class:"asf-select-list-area"},_e={key:0,class:"asf-select-list"},et={class:"asf-select-empty"},tt=["data-val"],at=["data-val"],ot={key:0,class:"unit"},nt=Object.freeze(Object.defineProperty({__proto__:null,default:w(e.defineComponent({__name:"AsfSelect",props:{ujt:{},opt:{},modelValue:{}},emits:["update:modelValue"],setup(t,{emit:o}){e.useCssVars(k=>({v34a6911f:s.value}));const a=t,{$global:f}=a.ujt,r=o;let n=e.computed({get(){return a.modelValue||a.opt?.valuedefault},set(k){a.opt?.onChange&&typeof a.opt.onChange=="function"&&a.opt.onChange(k,a.modelValue),r("update:modelValue",k)}});const l=e.reactive({inputinit:"",input:"",up:!1,stylelist:{}}),s=e.computed(()=>a?.opt?.height||"var(--sa3)"),i=e.computed(()=>{const k=a.opt?.selectdata;return k?k.nodeMap?.size>0?[...k.nodeMap].map(d=>[d[1].id,d[1].nm,k.depthMap.get(d[0])]):Array.isArray(k)?k.map((d,g)=>Array.isArray(d)&&d.length>=2?[d[0],d[1],d[2]]:typeof d=="object"&&d!==null?"value"in d&&"label"in d?[d.value,d.label,d.depth]:Object.values(d):[g,String(d)]):typeof k=="object"?Object.entries(k):[]:[]}),u=e.computed(()=>{const k=[];if(a.opt?.input&&l.input){let d;i.value.forEach(g=>{g[1]==l.input&&!d?(d=g,n.value=d[0]):g[1].includes(l.input)?k.unshift(g):(g[0]===a.modelValue||a.opt.input>1)&&k.push(g)}),d&&k.unshift(d)}else return i.value;return k});l.stylelist["max-height"]=i.value?.length>10?"280px":i.value?.length>2?"180px":"128px",(a.opt?.input||a.opt?.checkin)&&(l.inputinit=i.value?.find(k=>k[0]==a.modelValue)?.[1],a.opt?.checkin&&!l.inputinit&&(n.value=i.value?.[0]?.[0],l.inputinit=i.value?.[0]?.[1]));function c(k){if(a.opt?.up==1)l.up=!0;else if(a.opt?.up==0)l.up=!1;else{const d=k.target,g=k.target.closest(".asfselectarea");if(g){const{y:x}=d?.getBoundingClientRect()||{y:0},{y:j,height:h}=g?.getBoundingClientRect()||{y:0,height:0};let p=x-j,C=h-p;p>C?(l.up=!0,p=(p/Number(f?.scale||1)).toFixed(3),p<parseInt(l.stylelist["max-height"])&&(l.stylelist["max-height"]=p+"px")):(l.up=!1,C=(C/Number(f?.scale||1)).toFixed(3),C<parseInt(l.stylelist["max-height"])&&(l.stylelist["max-height"]=C+"px"))}else k.clientY>299?l.up=!0:l.up=!1}}function m(k){a.opt?.type=="number"?n.value=Number(k.target?.dataset?.val||0):a.opt?.type=="text"?n.value=k.target?.dataset?.val:typeof n.value=="number"?n.value=Number(k.target?.dataset?.val||0):n.value=k.target?.dataset?.val,a.opt?.input&&(l.input=i.value?.find(d=>d[0]==k.target?.dataset?.val)?.[1])}function y(k){a.opt?.input&&(l.input=k.target?.textContent||"")}function B(k){a.opt?.input&&k.target&&(k.target.textContent!==l.input||l.inputinit!==l.input)&&(k.target.textContent=i.value?.find(d=>d[0]==n.value)?.[1])}return(k,d)=>(e.openBlock(),e.createElementBlock("div",Je,[e.createElementVNode("div",Qe,[a.opt?.input?(e.openBlock(),e.createElementBlock("div",{key:0,class:"asf-select-cur asf-select-cur-input",contenteditable:"true",onInput:y,onBlur:B,tabindex:"0",style:e.normalizeStyle(a.opt?.style||{}),onPointerdown:c},e.toDisplayString(l.inputinit),37)):(e.openBlock(),e.createElementBlock("div",{key:1,class:"asf-select-cur asf-form",tabindex:"0",style:e.normalizeStyle(a.opt?.style||{}),onPointerdown:c},[e.createElementVNode("div",Ge,e.toDisplayString(i.value?.find(g=>g[0]==e.unref(n))?.[1]||e.unref(f).lang.asai.select||""),1),d[0]||(d[0]=e.createElementVNode("div",{class:"asf-select-cur-ic"},null,-1))],36)),e.createElementVNode("div",Ze,[u.value?.length?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(`asf-select-list${l.up?" asf-select-up":""}`),style:e.normalizeStyle({...l.stylelist,...a.opt?.stylelist||{}}),onPointerdown:e.withModifiers(m,["stop"])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.value,g=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(`asf-select-li${e.unref(n)==g[0]?"-active":""}`),"data-val":g[0],key:"sel"+g[0]},[g[2]>1?(e.openBlock(),e.createElementBlock("div",{key:0,"data-val":g[0],style:e.normalizeStyle(`padding-left: ${(g[2]-1)*10}px`)},e.toDisplayString(g[1]),13,at)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(g[1]),1)],64))],10,tt))),128))],38)):(e.openBlock(),e.createElementBlock("div",_e,[e.createElementVNode("div",et,e.toDisplayString(e.unref(f).lang.asai.empty),1)]))])]),t.opt?.unit?(e.openBlock(),e.createElementBlock("div",ot,e.toDisplayString(t.opt?.unit),1)):e.createCommentVNode("",!0)]))}}),[["__scopeId","data-v-a4701728"]])},Symbol.toStringTag,{value:"Module"})),lt={class:"asf-textarea"},rt=["placeholder","readonly"],it=Object.freeze(Object.defineProperty({__proto__:null,default:w(e.defineComponent({__name:"AsfTextarea",props:{ujt:{},opt:{},modelValue:{}},emits:["update:modelValue"],setup(t,{emit:o}){e.useCssVars(i=>({f697bf2e:n.value}));const a=t,f=o;let r=e.computed({get(){return a.modelValue},set(i){a.opt?.onChange&&typeof a.opt.onChange=="function"&&a.opt.onChange(i,a.modelValue),f("update:modelValue",i)}});const n=e.computed(()=>a?.opt?.height||"var(--sa3)"),l=e.ref(null);function s(i,u){if(i&&u&&typeof u=="object")for(const[c,m]of Object.entries(u))typeof m=="boolean"?m?i.setAttribute(c,""):i.removeAttribute(c):i.setAttribute(c,m)}return e.onMounted(()=>{s(l.value,a.opt?.attr)}),(i,u)=>(e.openBlock(),e.createElementBlock("div",lt,[e.withDirectives(e.createElementVNode("textarea",{class:"asf-form",ref_key:"domForm",ref:l,style:e.normalizeStyle(a.opt?.style||{}),"onUpdate:modelValue":u[0]||(u[0]=c=>e.isRef(r)?r.value=c:r=c),placeholder:t.opt?.placeholder,readonly:!!t.opt?.readonly},null,12,rt),[[e.vModelText,e.unref(r)]])]))}}),[["__scopeId","data-v-d23aed07"]])},Symbol.toStringTag,{value:"Module"})),st=Object.freeze(Object.defineProperty({__proto__:null,default:w(e.defineComponent({__name:"AsfTick",props:{ujt:{},opt:{},modelValue:{}},emits:["update:modelValue"],setup(t,{emit:o}){e.useCssVars(u=>({v1081b8c6:s.value}));const a=t,f=o,r=e.ref([...a.modelValue]);let n=e.computed({get(){return r.value},set(u){try{r.value=[...u],a.opt?.onChange&&typeof a.opt.onChange=="function"&&a.opt.onChange(r.value,a.modelValue),f("update:modelValue",r.value)}catch{f("update:modelValue",[])}}});const l=e.computed(()=>n.value?.includes?.(a.opt?.value)),s=e.computed(()=>a?.opt?.height||"var(--sa3)");function i(u){const c=[...n.value],m=c.indexOf(a.opt?.value);m>-1?c.splice(m,1):c.push(a.opt?.value),n.value=c}return(u,c)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(`asf-tick${l.value?"-ck":""}`),style:e.normalizeStyle(a.opt?.style||{}),onClick:i},null,6))}}),[["__scopeId","data-v-a981dd49"]])},Symbol.toStringTag,{value:"Module"})),ct=["accept"],mt=Object.freeze(Object.defineProperty({__proto__:null,default:w(e.defineComponent({__name:"AsfUploadFile",props:{ujt:{},opt:{},modelValue:{}},emits:["update:modelValue"],setup(t,{emit:o}){e.useCssVars(d=>({v21e55886:B.value}));const a=t,{$fn:f,$global:r}=a.ujt,n=o,l=e.reactive({val:""}),s=e.watch(()=>l.val,(d,g)=>{try{a.opt?.onChange&&typeof a.opt.onChange=="function"&&a.opt.onChange(d,g),n("update:modelValue",d)}catch{r.msg.fn({type:"err",con:"error!"})}}),i=e.ref(null),u=e.ref(null),c=e.ref("+"),m=async d=>{if(i.value.value){if(u.value=d.target.files[0],i.value.value="",!u.value){c.value=f.lg("asai.fail");return}l.val="";try{f.apisys.apiUpload("/api/asaifile/manage/upbinary/?path="+(a.opt?.path||"uploadtmp"),u.value).then(g=>{c.value="",l.val=g.data})}catch(g){c.value=f.lg("asai.fail")+" "+g.message}}};function y(){i.value.click()}const B=e.computed(()=>a?.opt?.height||"var(--sa3)");function k(d,g){if(d&&g&&typeof g=="object")for(const[x,j]of Object.entries(g))typeof j=="boolean"?j?d.setAttribute(x,""):d.removeAttribute(x):d.setAttribute(x,j)}return e.onMounted(()=>{k(i.value,a.opt?.attr)}),e.onBeforeUnmount(()=>{s&&s.stop()}),(d,g)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(`${a.opt?.css||"asf-upload-area"}`)},[e.renderSlot(d.$slots,"default",{option:{clickUpload:y}},()=>[e.createElementVNode("div",{class:"asf-upload asf-form",onClick:g[0]||(g[0]=x=>y())},e.toDisplayString(c.value),1)],!0),a.opt?.accept?(e.openBlock(),e.createElementBlock("input",{key:0,accept:a.opt?.accept,ref_key:"rfInputFile",ref:i,type:"file",hidden:"",onChange:m},null,40,ct)):(e.openBlock(),e.createElementBlock("input",{key:1,ref_key:"rfInputFile",ref:i,type:"file",hidden:"",onChange:m},null,544))],2))}}),[["__scopeId","data-v-1784793e"]])},Symbol.toStringTag,{value:"Module"})),dt={class:"asf-upload-area"},ft=["accept"],ut=Object.freeze(Object.defineProperty({__proto__:null,default:w(e.defineComponent({__name:"AsfUploadText",props:{ujt:{},opt:{},modelValue:{}},emits:["update:modelValue"],setup(t,{emit:o}){e.useCssVars(x=>({v7e0dcac0:d.value}));const a=t,{$fn:f,$global:r}=a.ujt,n=o,l=e.reactive({val:a.opt?.type=="json"?u(a.modelValue):a.modelValue}),s=e.watch(()=>l.val,(x,j)=>{try{const h=a.opt?.type=="json"?i(x):x;a.opt?.onChange&&typeof a.opt.onChange=="function"&&a.opt.onChange(h,a.opt?.type=="json"?i(j):j),n("update:modelValue",h)}catch{l.val=a.opt?.type=="json"?{}:"",r.msg.fn({type:"err",con:"error!"})}},{deep:!0});function i(x){try{return JSON.parse(x)}catch{return{}}}function u(x){try{return JSON.stringify(x)}catch{return"{}"}}const c=e.ref(null),m=e.ref(null),y=e.ref("+"),B=async x=>{if(c.value.value){if(m.value=x.target.files[0],c.value.value="",!m.value){y.value=f.lg("asai.fail");return}const j=new FileReader;j.onload=async()=>{l.val=j.result},j.readAsText(m.value)}};function k(){c.value.click()}const d=e.computed(()=>a?.opt?.height||"var(--sa3)");function g(x,j){if(x&&j&&typeof j=="object")for(const[h,p]of Object.entries(j))typeof p=="boolean"?p?x.setAttribute(h,""):x.removeAttribute(h):x.setAttribute(h,p)}return e.onMounted(()=>{g(c.value,a.opt?.attr)}),e.onBeforeUnmount(()=>{s&&s.stop()}),(x,j)=>(e.openBlock(),e.createElementBlock("div",dt,[e.renderSlot(x.$slots,"default",{option:{clickUpload:k}},()=>[e.createElementVNode("div",{class:"asf-upload asf-form",onClick:j[0]||(j[0]=h=>k())},e.toDisplayString(y.value),1)],!0),a.opt?.accept?(e.openBlock(),e.createElementBlock("input",{key:0,accept:a.opt?.accept,ref_key:"rfInputFile",ref:c,type:"file",hidden:"",onChange:B},null,40,ft)):(e.openBlock(),e.createElementBlock("input",{key:1,ref_key:"rfInputFile",ref:c,type:"file",hidden:"",onChange:B},null,544))]))}}),[["__scopeId","data-v-d8731f1e"]])},Symbol.toStringTag,{value:"Module"}));function pt(t){function o(n,l=0){if(!n)return"";if(l)return n;try{const s=new URL(n,location.href);if(["http:","https:","mailto:","tel:","blob:","data:","ftp:"].includes(s.protocol))return s.protocol==="data:"&&!/^data:image\//i.test(n)?"":s.href}catch{return n.startsWith("#")||!/:/.test(n)?n:""}return""}function a(n,l=0){const s=new Set(["a","figure","img","video","ul","ol","li","h1","h2","h3","h4","h5","h6","p","strong","em","span","font","b","u","i","strike","nav","footer","section","article","div"]),i=new Set(["href","src","alt","size","color","title","style","controls","download","target"]),u=new DOMParser().parseFromString(n,"text/html");return Array.from(u.body.querySelectorAll("*")).reverse().forEach(c=>{const m=c.tagName.toLowerCase();if(!s.has(m))return c.remove();l&&m=="img"&&c?.src&&!t.imgurls?.[c.src]&&(c.setAttribute("crossOrigin","anonymous"),t.imgurls[c.src]="1"),Array.from(c.attributes).forEach(({name:y,value:B})=>{if(!i.has(y))return c.removeAttribute(y);if(["href","src"].includes(y)){const k=o(B,l);k?c.setAttribute(y,k):c.removeAttribute(y)}if(y==="style"){const k=String(B||"");/expression|javascript:|url\s*\(\s*['"]?\s*data:/i.test(k)&&c.removeAttribute(y)}})}),u.body.innerHTML}function f(n){return new Promise((l,s)=>{const i=new Image,u=document.createElement("canvas"),c=u.getContext("2d",{willReadFrequently:!1});let m=!1;const y=()=>{m||(i.onload=i.onerror=null,i.src="",u.width=u.height=0,m=!0)};i.crossOrigin="anonymous",i.src=n,i.onload=()=>{try{const B=Math.min(t.img.maxWidth/i.width,1);u.width=B<1?t.img.maxWidth:i.width,u.height=B<1?i.height*B:i.height,c.imageSmoothingEnabled=!0,c.imageSmoothingQuality="high",c.clearRect(0,0,u.width,u.height),c.drawImage(i,0,0,u.width,u.height),l(u.toDataURL("image/jpeg",t.img.quality)),y()}catch(B){y(),s(B)}},i.onerror=()=>{y(),s(new Error("Image load failed"))}})}function r(n){return new Promise((l,s)=>{if(!n)return s(new Error("Invalid file"));const i=new FileReader;i.onload=u=>{n.type.startsWith("image/")?f(u.target.result).then(l).catch(s):l(u.target.result)},i.onerror=()=>s(new Error("File read failed")),i.readAsDataURL(n)})}return{sanitize:a,sanitizeURL:o,compressImage:f,compressFile:r}}const yt=Object.freeze(Object.defineProperty({__proto__:null,createRichEditorMedia:pt},Symbol.toStringTag,{value:"Module"}));F.default=G,Object.defineProperties(F,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));
@@ -0,0 +1,94 @@
1
+ function f(c) {
2
+ function l(o, s = 0) {
3
+ if (!o) return "";
4
+ if (s) return o;
5
+ try {
6
+ const i = new URL(o, location.href);
7
+ if (["http:", "https:", "mailto:", "tel:", "blob:", "data:", "ftp:"].includes(i.protocol))
8
+ return i.protocol === "data:" && !/^data:image\//i.test(o) ? "" : i.href;
9
+ } catch {
10
+ return o.startsWith("#") || !/:/.test(o) ? o : "";
11
+ }
12
+ return "";
13
+ }
14
+ function g(o, s = 0) {
15
+ const i = /* @__PURE__ */ new Set([
16
+ "a",
17
+ "figure",
18
+ "img",
19
+ "video",
20
+ "ul",
21
+ "ol",
22
+ "li",
23
+ "h1",
24
+ "h2",
25
+ "h3",
26
+ "h4",
27
+ "h5",
28
+ "h6",
29
+ "p",
30
+ "strong",
31
+ "em",
32
+ "span",
33
+ "font",
34
+ "b",
35
+ "u",
36
+ "i",
37
+ "strike",
38
+ "nav",
39
+ "footer",
40
+ "section",
41
+ "article",
42
+ "div"
43
+ ]), t = /* @__PURE__ */ new Set(["href", "src", "alt", "size", "color", "title", "style", "controls", "download", "target"]), e = new DOMParser().parseFromString(o, "text/html");
44
+ return Array.from(e.body.querySelectorAll("*")).reverse().forEach((r) => {
45
+ const h = r.tagName.toLowerCase();
46
+ if (!i.has(h))
47
+ return r.remove();
48
+ s && h == "img" && r?.src && !c.imgurls?.[r.src] && (r.setAttribute("crossOrigin", "anonymous"), c.imgurls[r.src] = "1"), Array.from(r.attributes).forEach(({ name: a, value: n }) => {
49
+ if (!t.has(a))
50
+ return r.removeAttribute(a);
51
+ if (["href", "src"].includes(a)) {
52
+ const d = l(n, s);
53
+ d ? r.setAttribute(a, d) : r.removeAttribute(a);
54
+ }
55
+ if (a === "style") {
56
+ const d = String(n || "");
57
+ /expression|javascript:|url\s*\(\s*['"]?\s*data:/i.test(d) && r.removeAttribute(a);
58
+ }
59
+ });
60
+ }), e.body.innerHTML;
61
+ }
62
+ function u(o) {
63
+ return new Promise((s, i) => {
64
+ const t = new Image(), e = document.createElement("canvas"), r = e.getContext("2d", { willReadFrequently: !1 });
65
+ let h = !1;
66
+ const a = () => {
67
+ h || (t.onload = t.onerror = null, t.src = "", e.width = e.height = 0, h = !0);
68
+ };
69
+ t.crossOrigin = "anonymous", t.src = o, t.onload = () => {
70
+ try {
71
+ const n = Math.min(c.img.maxWidth / t.width, 1);
72
+ e.width = n < 1 ? c.img.maxWidth : t.width, e.height = n < 1 ? t.height * n : t.height, r.imageSmoothingEnabled = !0, r.imageSmoothingQuality = "high", r.clearRect(0, 0, e.width, e.height), r.drawImage(t, 0, 0, e.width, e.height), s(e.toDataURL("image/jpeg", c.img.quality)), a();
73
+ } catch (n) {
74
+ a(), i(n);
75
+ }
76
+ }, t.onerror = () => {
77
+ a(), i(new Error("Image load failed"));
78
+ };
79
+ });
80
+ }
81
+ function m(o) {
82
+ return new Promise((s, i) => {
83
+ if (!o) return i(new Error("Invalid file"));
84
+ const t = new FileReader();
85
+ t.onload = (e) => {
86
+ o.type.startsWith("image/") ? u(e.target.result).then(s).catch(i) : s(e.target.result);
87
+ }, t.onerror = () => i(new Error("File read failed")), t.readAsDataURL(o);
88
+ });
89
+ }
90
+ return { sanitize: g, sanitizeURL: l, compressImage: u, compressFile: m };
91
+ }
92
+ export {
93
+ f as createRichEditorMedia
94
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "asai-vue-host-form",
3
- "version": "0.2.17",
3
+ "version": "0.2.18",
4
4
  "description": "asai for you",
5
5
  "author": "Asai",
6
6
  "license": "ISC",
@@ -1,94 +0,0 @@
1
- function f(h) {
2
- function l(o, n = 0) {
3
- if (!o) return "";
4
- if (n) return o;
5
- try {
6
- const i = new URL(o, location.href);
7
- if (["http:", "https:", "mailto:", "tel:", "blob:", "data:", "ftp:"].includes(i.protocol))
8
- return i.protocol === "data:" && !/^data:image\//i.test(o) ? "" : i.href;
9
- } catch {
10
- return o.startsWith("#") || !/:/.test(o) ? o : "";
11
- }
12
- return "";
13
- }
14
- function g(o, n = 0) {
15
- const i = /* @__PURE__ */ new Set([
16
- "a",
17
- "figure",
18
- "img",
19
- "video",
20
- "ul",
21
- "ol",
22
- "li",
23
- "h1",
24
- "h2",
25
- "h3",
26
- "h4",
27
- "h5",
28
- "h6",
29
- "p",
30
- "strong",
31
- "em",
32
- "span",
33
- "font",
34
- "b",
35
- "u",
36
- "i",
37
- "strike",
38
- "nav",
39
- "footer",
40
- "section",
41
- "article",
42
- "div"
43
- ]), t = /* @__PURE__ */ new Set(["href", "src", "alt", "size", "color", "title", "style", "controls", "download", "target"]), r = new DOMParser().parseFromString(o, "text/html");
44
- return Array.from(r.body.querySelectorAll("*")).reverse().forEach((e) => {
45
- const c = e.tagName.toLowerCase();
46
- if (!i.has(c))
47
- return e.remove();
48
- n && c == "img" && e?.src && !h.imgurls?.[e.src] && (e.setAttribute("crossOrigin", "anonymous"), h.imgurls[e.src] = "1"), Array.from(e.attributes).forEach(({ name: a, value: s }) => {
49
- if (!t.has(a))
50
- return e.removeAttribute(a);
51
- if (["href", "src"].includes(a)) {
52
- const d = l(s, n);
53
- d ? e.setAttribute(a, d) : e.removeAttribute(a);
54
- }
55
- if (a === "style") {
56
- const d = String(s || "");
57
- /expression|javascript:|url\s*\(\s*['"]?\s*data:/i.test(d) && e.removeAttribute(a);
58
- }
59
- }), c === "a" && e.getAttribute("target") === "_blank" && e.setAttribute("rel", "noopener noreferrer");
60
- }), r.body.innerHTML;
61
- }
62
- function u(o) {
63
- return new Promise((n, i) => {
64
- const t = new Image(), r = document.createElement("canvas"), e = r.getContext("2d", { willReadFrequently: !1 });
65
- let c = !1;
66
- const a = () => {
67
- c || (t.onload = t.onerror = null, t.src = "", r.width = r.height = 0, c = !0);
68
- };
69
- t.crossOrigin = "anonymous", t.src = o, t.onload = () => {
70
- try {
71
- const s = Math.min(h.img.maxWidth / t.width, 1);
72
- r.width = s < 1 ? h.img.maxWidth : t.width, r.height = s < 1 ? t.height * s : t.height, e.imageSmoothingEnabled = !0, e.imageSmoothingQuality = "high", e.clearRect(0, 0, r.width, r.height), e.drawImage(t, 0, 0, r.width, r.height), n(r.toDataURL("image/jpeg", h.img.quality)), a();
73
- } catch (s) {
74
- a(), i(s);
75
- }
76
- }, t.onerror = () => {
77
- a(), i(new Error("Image load failed"));
78
- };
79
- });
80
- }
81
- function m(o) {
82
- return new Promise((n, i) => {
83
- if (!o) return i(new Error("Invalid file"));
84
- const t = new FileReader();
85
- t.onload = (r) => {
86
- o.type.startsWith("image/") ? u(r.target.result).then(n).catch(i) : n(r.target.result);
87
- }, t.onerror = () => i(new Error("File read failed")), t.readAsDataURL(o);
88
- });
89
- }
90
- return { sanitize: g, sanitizeURL: l, compressImage: u, compressFile: m };
91
- }
92
- export {
93
- f as createRichEditorMedia
94
- };
package/readme DELETED
@@ -1,527 +0,0 @@
1
- # asai-vue-host-form — 动态表单渲染引擎
2
-
3
- ## 概述
4
-
5
- `asai-vue-host-form` 是 AsaiWeb CMS 系统中的动态表单渲染插件。核心思路:通过 `asaidata` 配置对象(包含数据、规则、国际化映射等)驱动,根据字段值的类型自动匹配对应的表单组件,支持递归渲染嵌套对象和数组。
6
-
7
- ## 安装
8
-
9
- ```ts
10
- // 作为 Vue 插件安装
11
- import AsaiVueHostForm from 'asai-vue-host-form';
12
-
13
- app.use(AsaiVueHostForm, {
14
- loadfn: loadfn,
15
- loadvue: loadvue,
16
- });
17
- ```
18
-
19
- 插件通过 `import.meta.glob` 自动扫描 `./asui/form/` 和 `./asui/formbase/` 下的所有 `.vue` 文件,按需加载并注册。
20
-
21
- ## 核心用法
22
-
23
- ```vue
24
- <template>
25
- <AsaiForm :ujt="ujt" :asaidata="asaidata" :opt="{ isedit: 1 }" />
26
- </template>
27
- ```
28
-
29
- ### 参数说明
30
-
31
- | Prop | 类型 | 说明 |
32
- |------|------|------|
33
- | `ujt` | `any` | **工具对象** — 解构出 `$fn`、`$global`、`$model` 等全局工具/状态,是整个系统的胶水层 |
34
- | `asaidata` | `any` | **表单配置对象** — 包含 `data`(表单值)、`rule`(字段规则)、`lang`(国际化标签映射)、`comp`(自定义组件映射)等 |
35
- | `opt` | `any` | **选项** — `opt.isedit = 1` 进入编辑模式;`opt.isedit` 不传则进入新增模式 |
36
-
37
- ### asaidata 结构
38
-
39
- ```ts
40
- {
41
- data: {
42
- // 表单数据,直接 v-model 绑定
43
- username: '张三',
44
- age: 28,
45
- enabled: true,
46
- tags: ['a', 'b'],
47
- address: { city: '北京', street: '长安街' }
48
- },
49
- rule: {
50
- // 字段规则配置
51
- username: { type: 'text', maxlength: 20, require: true },
52
- age: { type: 'number', min: 0, max: 150 },
53
- enabled: { type: 'checkbox' },
54
- tags: { type: 'select', data: [['a', '标签A'], ['b', '标签B']] },
55
- address: {} // 对象类型自动递归渲染
56
- },
57
- lang: {
58
- // 国际化标签(字段名显示文字)
59
- username: '用户名',
60
- age: '年龄'
61
- },
62
- comp: {
63
- // 自定义组件映射(可选)
64
- select: 'AsaiSelect'
65
- }
66
- }
67
- ```
68
-
69
- ## 组件层级
70
-
71
- ```
72
- AsaiForm (容器入口)
73
- └── AsaiFormLi (列表迭代器)
74
- ├── AsaiFormShow (只读展示)
75
- ├── AsaiFormObject (嵌套对象/数组,可折叠)
76
- │ └── AsaiFormLi (递归)
77
- ├── AsaiInput (智能输入 — 自动选择 AsfCheck / AsfInput)
78
- ├── AsaiSelect (下拉选择)
79
- ├── AsaiSelectLv (权限等级选择 — 按用户级别过滤)
80
- ├── AsaiSelectCl (分类选择 — 支持树形 nodeMap)
81
- ├── AsaiTextarea (多行文本)
82
- ├── AsaiTextJson (JSON 文本)
83
- ├── AsaiRichEditor (富文本编辑器)
84
- ├── AsaiUpload (二进制文件上传)
85
- ├── AsaiUploadImg (图片上传 → 裁剪弹窗)
86
- │ └── AsaiUploadImgCutPop (裁剪弹窗包装器)
87
- │ └── AsaiUploadImgCut (图片裁剪面板)
88
- └── AsaiUpBinary (二进制直传上传)
89
- ```
90
-
91
- ## 组件详解
92
-
93
- ### 一、容器层
94
-
95
- #### AsaiForm
96
-
97
- | Prop | 类型 | 说明 |
98
- |------|------|------|
99
- | `ujt` | `any` | 工具对象 |
100
- | `asaidata` | `any` | 表单配置 — 写入 `asaidata.comp`(组件映射)和 `asaidata.cmComp`(动态获取函数) |
101
- | `opt` | `any` | 选项 — `opt.isedit = 1` 进入编辑模式 |
102
-
103
- 容器创建组件加载器缓存,自动扫描同级目录下(除自身外)的所有 `.vue` 文件供动态渲染调用。
104
-
105
- #### AsaiFormLi
106
-
107
- | Prop | 类型 | 说明 |
108
- |------|------|------|
109
- | `ujt` | `any` | 工具对象 |
110
- | `asaidata` | `any` | 表单配置 |
111
- | `formdata` | `any` | 当前层级数据 |
112
- | `opt` | `any` | 选项(可选),传递 `opt.isedit` |
113
-
114
- **渲染逻辑:**
115
- - 字段规则中 `noedit`(编辑模式)或 `noadd`(新增模式)为 `2` → 渲染 `AsaiFormShow` 只读
116
- - 字段规则中 `noedit` / `noadd` 为 `1` → 跳过隐藏
117
- - 字段值为对象 → 优先用 `cmComp('object')`,否则用 `AsaiFormObject`
118
- - 否则 → 用 `cmComp(key)` 查找对应组件,找不到则 fallback 到 `AsaiInput`
119
-
120
- ### 二、布局/标签组件
121
-
122
- #### AsaiFormLabel
123
-
124
- | Prop | 类型 | 说明 |
125
- |------|------|------|
126
- | `ujt` | `any` | — |
127
- | `asaidata` | `any` | 使用 `asaidata.ic`(缩进层级)、`asaidata.eq`(格式模式)、`asaidata.lang`(国际化标签) |
128
- | `formdata` | `any` | — |
129
- | `formkey` | `any` | 字段键名,用于从 `lang` 中取显示文本 |
130
-
131
- - `asaidata.ic > 1` → 显示图标前缀(🔸 普通, 🔹 数字)
132
- - `asaidata.eq > 2` → 键名带双引号
133
- - `asaidata.eq` 为真 → 键名后带冒号
134
- - `asaidata.eq > 2` → 值后带逗号
135
- - `rule?.[formkey]?.require` → 标签后显示红色 `*`
136
-
137
- #### AsaiFormLabelArea
138
-
139
- | Prop | 类型 | 说明 |
140
- |------|------|------|
141
- | `ujt` | `any` | — |
142
- | `asaidata` | `any` | 从 `rule?.[formkey]?.nolabel` 和 `typeof formdata[formkey]` 决定用 `label` 还是 `div` |
143
- | `formdata` | `any` | — |
144
- | `formkey` | `any` | — |
145
-
146
- - `nolabel` 为 true 或字段值是对象 → 渲染 `<div>`(无原生 label 语义)
147
- - 否则 → 渲染 `<label>`
148
- - 支持 `rule?.[formkey]?.class` 和 `rule?.[formkey]?.style`
149
-
150
- #### AsaiFormShow
151
-
152
- | Prop | 类型 | 说明 |
153
- |------|------|------|
154
- | `ujt` | `any` | — |
155
- | `asaidata` | `any` | — |
156
- | `formdata` | `any` | — |
157
- | `formkey` | `any` | — |
158
-
159
- 内部使用 `AsfInput` 并设置 `opt.noedit = true`,渲染为只读输入框。用于 `noedit=2` / `noadd=2` 的场景。
160
-
161
- #### AsaiFormObject
162
-
163
- | Prop | 类型 | 说明 |
164
- |------|------|------|
165
- | `ujt` | `any` | — |
166
- | `asaidata` | `any` | `asaidata.ic` 控制图标显示 |
167
- | `formdata` | `any` | — |
168
- | `formkey` | `any` | — |
169
-
170
- - 点击标题可折叠/展开
171
- - `asaidata.eq > 1` → 显示 `{` / `}` 或 `[` / `]` 包裹
172
- - 递归调用 `AsaiFormLi` 渲染子字段
173
-
174
- ### 三、字段输入组件
175
-
176
- #### AsaiInput
177
-
178
- **智能输入组件** — 根据字段类型自动切换为复选框或文本输入。
179
-
180
- | Prop | 类型 | 说明 |
181
- |------|------|------|
182
- | `ujt` | `any` | 需要 `$fn`、`$fn.As.toArr`、`$fn.lg` |
183
- | `asaidata` | `any` | `rule?.[formkey]` 配置规则 |
184
- | `formdata` | `any` | — |
185
- | `formkey` | `any` | — |
186
-
187
- **选择逻辑:**
188
- - `type === 'checkbox'` 或值是 boolean → 渲染 `AsfCheck`
189
- - 否则 → 渲染 `AsfInput`,类型从规则或值类型推断(`number` / `text`)
190
-
191
- **规则参数:**
192
- - `rule?.[formkey]?.type` — 输入类型(`text`, `number`, `checkbox`)
193
- - `rule?.[formkey]?.max` / `min` — 数字范围
194
- - `rule?.[formkey]?.data` — 选项列表
195
- - `rule?.[formkey]?.opt` — 透传到基础组件的附加参数
196
-
197
- #### AsaiSelect
198
-
199
- | Prop | 类型 | 说明 |
200
- |------|------|------|
201
- | `ujt` | `any` | — |
202
- | `asaidata` | `any` | — |
203
- | `formdata` | `any` | — |
204
- | `formkey` | `any` | — |
205
-
206
- 内部使用 `AsfSelect`,数据源获取方式与 `AsaiInput` 相同(`lang` → `rule` → `$fn.lg` 三源回退)。
207
-
208
- #### AsaiSelectLv
209
-
210
- **权限等级选择** — 与 `AsaiSelect` 类似,但多了用户等级过滤:`data.filter(item => Number(item[0]) < userLv)`,只显示低于当前用户等级的选项。
211
-
212
- | Prop | 类型 | 说明 |
213
- |------|------|------|
214
- | `ujt` | `any` | 额外需要 `$global.user.info.lv` |
215
- | `asaidata` | `any` | — |
216
- | `formdata` | `any` | — |
217
- | `formkey` | `any` | — |
218
-
219
- #### AsaiSelectCl
220
-
221
- **分类选择** — 支持树形 `nodeMap` 和深度信息,自动设置默认值(过滤掉 `asai` 前缀的项)。
222
-
223
- | Prop | 类型 | 说明 |
224
- |------|------|------|
225
- | `ujt` | `any` | — |
226
- | `asaidata` | `any` | `rule?.[formkey]?.data` 可以是 `{ nodeMap, depthMap }` 树形结构 |
227
- | `formdata` | `any` | — |
228
- | `formkey` | `any` | — |
229
-
230
- #### AsaiTextarea
231
-
232
- **多行文本输入** — 包装 `AsfTextarea`。
233
-
234
- | Prop | 类型 | 说明 |
235
- |------|------|------|
236
- | `ujt` | `any` | — |
237
- | `asaidata` | `any` | `rule?.[formkey]?.opt` 透传到 textarea |
238
- | `formdata` | `any` | — |
239
- | `formkey` | `any` | — |
240
-
241
- #### AsaiTextJson
242
-
243
- **JSON 文本输入** — 与 `AsaiTextarea` 结构相同,用于编辑 JSON 字符串。
244
-
245
- #### AsaiRichEditor
246
-
247
- **富文本编辑器** — 基于 `contenteditable` 实现。
248
-
249
- | Prop | 类型 | 说明 |
250
- |------|------|------|
251
- | `ujt` | `any` | 需要 `$global` 提供国际化文本 |
252
- | `asaidata` | `any` | `rule?.[formkey]?.editorty`(初始视图模式: 0=编辑,1=源码,2=分屏), `rule?.[formkey]?.style` |
253
- | `formdata` | `any` | — |
254
- | `formkey` | `any` | — |
255
-
256
- 工具栏功能:字号、标题(H1-H6)、加粗、下划线、斜体、删除线、字体颜色、背景色、有序/无序列表、对齐、删除、链接、图片/视频/文件插入、HTML 源码切换。支持图片压缩(最大宽度288px, quality 0.8),粘贴自动清理不安全的 HTML。
257
-
258
- ### 四、上传组件
259
-
260
- #### AsaiUpload
261
-
262
- | Prop | 类型 | 说明 |
263
- |------|------|------|
264
- | `ujt` | `any` | 需要 `$fn.apisys.apiUpload`、`$global.sys.syspath.updir`、`$fn.As.getName` |
265
- | `asaidata` | `any` | `rule?.[formkey]?.accept`(文件类型过滤)、`rule?.[formkey]?.filename`(自定义文件名) |
266
- | `formdata` | `any` | — |
267
- | `formkey` | `any` | — |
268
-
269
- 上传 URL: `/api/asaifile/manage/upbinary/`,支持图片预览和文件名展示。
270
-
271
- #### AsaiUploadImg
272
-
273
- **图片上传(带裁剪弹窗)** — 通过 `FileReader` 读取为 base64,弹出裁剪弹窗。
274
-
275
- | Prop | 类型 | 说明 |
276
- |------|------|------|
277
- | `ujt` | `any` | 需要 `$fn.apisys.apiPost`、`$global.sys.syspath.updir`、`$fn.As.getName` |
278
- | `asaidata` | `any` | `rule?.[formkey]?.accept` |
279
- | `formdata` | `any` | — |
280
- | `formkey` | `any` | — |
281
-
282
- 上传 URL: `/api/asaifile/manage/upbase64/`,图片通过 `AsaiUploadImgCutPop` 弹窗进行裁剪。
283
-
284
- #### AsaiUploadImgCutPop
285
-
286
- **裁剪弹窗包装器** — 监听 `$global.pop['popupload' + formkey].stat` 控制弹窗显示。
287
-
288
- | Prop | 类型 | 说明 |
289
- |------|------|------|
290
- | `ujt` | `any` | — |
291
- | `formkey` | `any` | 与 `AsaiUploadImg` 相同的 formkey |
292
-
293
- 内部渲染 `PopBox` + `AsaiUploadImgCut`。
294
-
295
- #### AsaiUploadImgCut
296
-
297
- **图片裁剪组件** — 支持拖拽移动裁剪框、四角调整大小。
298
-
299
- | Prop | 类型 | 说明 |
300
- |------|------|------|
301
- | `ujt` | `any` | — |
302
- | `params` | `any` | `{ base64Data, asaidata, formdata, formkey, fn, min }` |
303
-
304
- - `params.base64Data` — 图片 base64
305
- - `params.fn` — 裁剪完成后的回调函数
306
- - `params.min` — 裁剪框最小尺寸(默认1)
307
- - `params.asaidata.rule[formkey].data` — 可选,最终输出图片的最大尺寸限制 `{ width, height }`
308
-
309
- #### AsaiUpBinary
310
-
311
- **二进制直传上传** — 与 `AsaiUpload` 类似,上传后直接设置值。
312
-
313
- | Prop | 类型 | 说明 |
314
- |------|------|------|
315
- | `ujt` | `any` | — |
316
- | `asaidata` | `any` | `rule?.[formkey]?.accept` |
317
- | `formdata` | `any` | — |
318
- | `formkey` | `any` | — |
319
-
320
- ### 五、基础组件(formbase)
321
-
322
- 基础组件是底层原子组件,统一 Props 约定:
323
-
324
- | Prop | 类型 | 说明 |
325
- |------|------|------|
326
- | `ujt` | `any` | 工具对象 |
327
- | `opt` | `any` | 配置选项(详见各组件说明) |
328
- | `modelValue` | `any` | v-model 绑定值 |
329
-
330
- #### AsfInput — 基础输入框
331
-
332
- | opt 参数 | 类型 | 说明 |
333
- |----------|------|------|
334
- | `type` | `string` | `'text'` / `'number'` |
335
- | `max` / `min` | `number` | 数字范围 |
336
- | `maxlength` | `number` | 文本最大长度 |
337
- | `step` | `number` | 步进 |
338
- | `height` | `string` | 高度(CSS) |
339
- | `placeholder` | `string` | 占位提示 |
340
- | `readonly` | `boolean` | 只读 |
341
- | `noedit` | `boolean` | 只读模式(光标禁用) |
342
- | `unit` | `string` | 单位后缀 |
343
- | `style` | `object` | 样式 |
344
- | `attr` | `object` | 原生 HTML 属性 |
345
- | `onChange` | `function` | 值变化回调 `(newVal, oldVal) => void` |
346
-
347
- #### AsfInputSn — 验证码/序列号分段输入
348
-
349
- | opt 参数 | 类型 | 说明 |
350
- |----------|------|------|
351
- | `snlen` | `number` | 总长度(默认 8) |
352
- | `snge` | `number` | 分组间隔(每隔几个插入分隔符) |
353
- | `snger` | `number` | 分组例外规则 |
354
-
355
- 每个字符一个输入框,自动聚焦下一个,支持粘贴。
356
-
357
- #### AsfSelect — 下拉选择器
358
-
359
- | opt 参数 | 类型 | 说明 |
360
- |----------|------|------|
361
- | `selectdata` | `array/object/Map` | 选项数据,支持多种格式(见下方) |
362
- | `input` | `boolean` | 可搜索 |
363
- | `type` | `string` | `'number'` / `'text'` |
364
- | `height` | `string` | 高度 |
365
- | `up` | `number` | 展开方向(0=下, 1=上) |
366
- | `checkin` | `boolean` | 自动选择第一个 |
367
- | `style` | `object` | 样式 |
368
- | `stylelist` | `object` | 列表样式 |
369
- | `unit` | `string` | 单位后缀 |
370
- | `onChange` | `function` | 值变化回调 |
371
-
372
- **selectdata 支持格式:**
373
-
374
- ```ts
375
- // 1. 二维数组 [[value, label, depth?], ...]
376
- [['a', '选项A'], ['b', '选项B']]
377
-
378
- // 2. 对象 { value: label, ... }
379
- { a: '选项A', b: '选项B' }
380
-
381
- // 3. 树形 Map(带层级)
382
- { nodeMap: Map, depthMap: Map }
383
-
384
- // 4. 对象数组 [{ value, label, depth }, ...]
385
- [{ value: 'a', label: '选项A' }]
386
- ```
387
-
388
- #### AsfCheck — 开关切换
389
-
390
- | opt 参数 | 类型 | 说明 |
391
- |----------|------|------|
392
- | `selectdata` | `array` | 自定义开关文本,默认 `[[false, 'off'], [true, 'on']]` |
393
- | `height` | `string` | 高度 |
394
- | `style` | `object` | 样式 |
395
- | `onChange` | `function` | 值变化回调 |
396
-
397
- 点击在 `selectdata[0][0]` 和 `selectdata[1][0]` 之间切换。
398
-
399
- #### AsfTick — 勾选框(多选)
400
-
401
- | opt 参数 | 类型 | 说明 |
402
- |----------|------|------|
403
- | `value` | `any` | 该勾选框代表的值 |
404
- | `height` | `string` | 高度 |
405
- | `style` | `object` | 样式 |
406
- | `onChange` | `function` | 值变化回调 |
407
-
408
- 存入数组,选中/取消切换。
409
-
410
- #### AsfTextarea — 多行文本框
411
-
412
- | opt 参数 | 类型 | 说明 |
413
- |----------|------|------|
414
- | `height` | `string` | 高度 |
415
- | `placeholder` | `string` | 占位提示 |
416
- | `readonly` | `boolean` | 只读 |
417
- | `style` | `object` | 样式 |
418
- | `attr` | `object` | 原生 HTML 属性 |
419
- | `onChange` | `function` | 值变化回调 |
420
-
421
- #### AsfUploadFile — 文件上传
422
-
423
- | opt 参数 | 类型 | 说明 |
424
- |----------|------|------|
425
- | `accept` | `string` | 文件类型过滤,如 `'image/*'` |
426
- | `path` | `string` | 上传路径(默认 `'uploadtmp'`) |
427
- | `height` | `string` | 高度 |
428
- | `css` | `string` | 自定义容器类名 |
429
- | `attr` | `object` | 原生 HTML 属性 |
430
- | `onChange` | `function` | 值变化回调 |
431
-
432
- 支持 slot `#default="{ option }"` 暴露 `clickUpload` 方法自定义触发按钮。
433
-
434
- #### AsfUploadText — 文本文件上传
435
-
436
- 与 `AsfUploadFile` 类似,但将文件内容读取为文本。额外支持:
437
-
438
- | opt 参数 | 类型 | 说明 |
439
- |----------|------|------|
440
- | `type` | `string` | `'json'` — 自动做 JSON 序列化/反序列化 |
441
-
442
- ## rule 字段规则配置参考
443
-
444
- | 键 | 类型 | 说明 | 适用组件 |
445
- |---|------|------|----------|
446
- | `type` | `string` | 输入类型:`text`, `number`, `checkbox` | All |
447
- | `max` / `min` | `number` | 数字输入范围 | AsaiInput, AsfInput |
448
- | `maxlength` | `number` | 文本最大长度 | AsaiInput, AsfInput |
449
- | `require` | `boolean` | 标签后显示红色 `*` | AsaiFormLabel |
450
- | `noedit` | `number` | 编辑模式:`2`=只读, `1`=隐藏 | AsaiFormLi |
451
- | `noadd` | `number` | 新增模式:`2`=只读, `1`=隐藏 | AsaiFormLi |
452
- | `placeholder` | `string` | 占位提示 | All 输入组件 |
453
- | `data` | `array/object/Map` | 下拉选项数据 | AsaiSelect, AsaiSelectLv, AsaiSelectCl, AsfSelect |
454
- | `accept` | `string` | 上传文件类型过滤 | AsaiUpload, AsaiUploadImg, AsaiUpBinary, AsfUploadFile |
455
- | `editorty` | `number` | 富文本初始视图(0=编辑,1=源码,2=分屏) | AsaiRichEditor |
456
- | `filename` | `string` | 上传文件自定义保存名 | AsaiUpload |
457
- | `class` / `style` | `string/object` | 标签样式 | AsaiFormLabel, AsaiFormLabelArea |
458
- | `nolabel` | `boolean` | 隐藏标签/使用 div | AsaiFormLabelArea |
459
- | `opt` | `object` | 透传到基础组件的额外配置 | All |
460
- | `comp` | `string` | 指定自定义组件名 | AsaiFormLi |
461
- | `onChange` | `function` | 值变化回调 | 基础组件 |
462
-
463
- ## 动态组件映射
464
-
465
- `AsaiForm` 会自动扫描目录下的 `.vue` 文件注册到 `asaidata.comp`。你可以通过 `asaidata.comp` 手动注册或覆盖:
466
-
467
- ```ts
468
- asaidata.comp = {
469
- myCustomField: MyCustomComponent, // 自定义组件,通过 rule[formkey].comp 引用
470
- select: AsaiSelect, // 覆盖默认 select 处理
471
- };
472
- ```
473
-
474
- 组件查找优先级:`rule[formkey].comp` → `comp[key]` → `comp['object']`(对象类型时)→ `AsaiInput`(兜底)。
475
-
476
- ## 完整示例
477
-
478
- ```vue
479
- <template>
480
- <AsaiForm :ujt="ujt" :asaidata="cfg" :opt="{ isedit: 1 }" />
481
- </template>
482
-
483
- <script setup lang="ts">
484
- const ujt = { $fn, $global, $model }; // 系统注入
485
-
486
- const cfg = {
487
- eq: 0, // 格式模式: 0=无格式, 1=带冒号, 2=JSON紧凑, 3=JSON带引号
488
- ic: 1, // 缩进层级
489
-
490
- data: {
491
- project: '工业控制系统',
492
- version: 2.0,
493
- enabled: true,
494
- tags: ['PLC', 'SCADA'],
495
- config: { timeout: 5000, retry: 3 },
496
- description: '',
497
- },
498
-
499
- rule: {
500
- project: { type: 'text', maxlength: 50, require: true },
501
- version: { type: 'number', min: 0, step: 0.1 },
502
- enabled: { type: 'checkbox' },
503
- tags: {
504
- type: 'select',
505
- data: [['PLC', 'PLC控制'], ['SCADA', '监控系统'], ['HMI', '人机界面']],
506
- opt: { input: true }, // 可搜索
507
- },
508
- description: {
509
- type: 'textarea',
510
- placeholder: '请输入项目描述',
511
- },
512
- // config 是对象类型,自动递归渲染
513
- },
514
-
515
- lang: {
516
- project: '项目名称',
517
- version: '版本号',
518
- enabled: '启用',
519
- tags: '标签',
520
- config: '配置',
521
- timeout: '超时(ms)',
522
- retry: '重试次数',
523
- description: '描述',
524
- },
525
- };
526
- </script>
527
- ```