@g1cloud/ui-modeler-next 5.0.0-alpha.7 → 5.0.0-alpha.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/preview/assets/{BSAlertModal-DBRQ0cCa-C73eZaze.js → BSAlertModal-DBRQ0cCa-CigXGA-U.js} +1 -1
- package/dist/preview/assets/{BSGridColumnSettingModal-C7xgLov6-DMlfJD9n.js → BSGridColumnSettingModal-C7xgLov6-FbgzMqxq.js} +1 -1
- package/dist/preview/assets/{BSRichTextMaximizedModal-D4w5hGdQ-CQ7wFv4j.js → BSRichTextMaximizedModal-D4w5hGdQ-BXNSoK72.js} +1 -1
- package/dist/preview/assets/{BSYesNoModal-Dj2nMArb-TqxPznXt.js → BSYesNoModal-Dj2nMArb-CuDGkN_r.js} +1 -1
- package/dist/preview/assets/{BSYoutubeInputModal-Mro_98AC-B6upksIx.js → BSYoutubeInputModal-Mro_98AC-Ymz4JdiS.js} +1 -1
- package/dist/preview/assets/{ImageInsertModal-DeL97iRr-BIVv-r6P.js → ImageInsertModal-DeL97iRr-C6mfU8fR.js} +1 -1
- package/dist/preview/assets/{ImageProperties.vue_vue_type_script_setup_true_lang-DCv-pBh_-lYwGLrld.js → ImageProperties.vue_vue_type_script_setup_true_lang-DCv-pBh_-B6JyC4mm.js} +1 -1
- package/dist/preview/assets/{ImagePropertiesModal-DD6cl6c0-DZaNaGWF.js → ImagePropertiesModal-DD6cl6c0-SWgb4CoW.js} +1 -1
- package/dist/preview/assets/{LinkPropertiesModal-CkgkjB7g-CP9nnQA-.js → LinkPropertiesModal-CkgkjB7g-CG8ZyNg5.js} +1 -1
- package/dist/preview/assets/{TableInsertModal-CNnGZuaP-9vXSXL3z.js → TableInsertModal-CNnGZuaP-DVOtcTN4.js} +1 -1
- package/dist/preview/assets/{TablePropertiesModal-BYjN7jg3-D0ouZ8nW.js → TablePropertiesModal-BYjN7jg3-R2SXrico.js} +1 -1
- package/dist/preview/assets/{VideoInsertModal-DIIzKI53-JJAgBeYK.js → VideoInsertModal-DIIzKI53-D6kRSOj0.js} +1 -1
- package/dist/preview/assets/{VideoProperties.vue_vue_type_script_setup_true_lang-BR8B1ON_-BZEmxAM1.js → VideoProperties.vue_vue_type_script_setup_true_lang-BR8B1ON_-CWTltBAK.js} +1 -1
- package/dist/preview/assets/{VideoPropertiesModal-DyMdwd1w-D4pRxiMM.js → VideoPropertiesModal-DyMdwd1w-DEc15QUZ.js} +1 -1
- package/dist/preview/assets/{YoutubeInsertModal-BSIDbYkd-jz0A6rji.js → YoutubeInsertModal-BSIDbYkd-Ch6pPIqU.js} +1 -1
- package/dist/preview/assets/{YoutubeProperties.vue_vue_type_script_setup_true_lang-BlmuRJva-C16bkOGp.js → YoutubeProperties.vue_vue_type_script_setup_true_lang-BlmuRJva-bFkRNnqH.js} +1 -1
- package/dist/preview/assets/{YoutubePropertiesModal-VDPQiwEJ-DBGLNXqD.js → YoutubePropertiesModal-VDPQiwEJ-0ufjNj1C.js} +1 -1
- package/dist/preview/assets/preview-CaxJbErF.css +1 -0
- package/dist/preview/assets/{preview-CHK7Vd6U.js → preview-Cor-RDYB.js} +40 -40
- package/dist/preview/preview.html +2 -2
- package/dist/ui-modeler-next.css +1 -1
- package/dist/ui-modeler.js +506 -491
- package/dist/ui-modeler.umd.cjs +1 -1
- package/dist/view/layout.d.ts +13 -2
- package/dist/view/preview/IframePreview.vue.d.ts +6 -0
- package/dist/view/preview/protocol.d.ts +15 -2
- package/package.json +1 -1
- package/dist/preview/assets/preview-D_Yvfk8p.css +0 -1
package/dist/ui-modeler.umd.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(p,l){typeof exports=="object"&&typeof module<"u"?l(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],l):(p=typeof globalThis<"u"?globalThis:p||self,l(p.UiModeler={},p.Vue))})(this,(function(p,l){"use strict";var qr=Object.defineProperty;var Jr=(p,l,ee)=>l in p?qr(p,l,{enumerable:!0,configurable:!0,writable:!0,value:ee}):p[l]=ee;var G=(p,l,ee)=>Jr(p,typeof l!="symbol"?l+"":l,ee);const ee={Layout:["VerticalLayout","HorizontalLayout","CardLayout","ActionLayout","ActionLayoutArea","FormLayout","TableLayout","TableLayoutCell","FlowLayout","ExpansionLayout","InternalLayoutArea"],Basic:["Button","PopupButton","Label","Image","Link","LinkTab","ProgressBar","Console","NativeUpload","AuditInfo","AuditInfoButton"],Input:["TextField","TextArea","StyledTextField","RichTextArea","TelField","NumberField","CurrencyField","DateField","TimeField","DateRange","CheckBox","RadioButton","RadioGroup","CheckBoxGroup","YesNoGroup","Select","MultiSelect","CategorySelect","PopupSelect","YesNoSelect","ColorField"],Composite:["MultiFileUpload","SingleFileUpload","SingleImageUpload","NameField","AddressField","PageBuilder","ContentEditor"],MultiLang:["MultiLangTextField","MultiLangTextArea","MultiLangStyledTextField","MultiLangRichTextArea","MultiLangPageBuilder","MultiLangContentEditor","MultiLangFileUpload"],Grid:["Grid","GridControl","GridLookup","ColumnDef","GridCellPanel"],Tree:["Tree","TreeControl","TabSheet","TabSheetPanel"],Filter:["TextFilter","NumberFilter","SelectFilter","MultiSelectFilter","PopupSelectFilter","CategorySelectFilter","YesNoSelectFilter"],ListField:["ListField","ListControl"],Chart:["FlagCard","Chart"],Etc:["PageRefreshButton","MultiLangExpandButton","Fragment","CommentList","SourceCodeEditor","MarkdownViewer","History"]},it=Object.values(ee).flat(),ve=Object.fromEntries(Object.entries(ee).flatMap(([e,t])=>t.map(o=>[o,e]))),bn=new Set(it);function Oe(e){return bn.has(e)}const V=e=>({kind:"string",value:e}),De=e=>({kind:"int",value:e}),v=e=>({kind:"bool",value:e}),we=e=>({kind:"text",value:e}),kn=e=>({kind:"dataSource",value:e}),Cn=e=>({kind:"dataMapping",value:e}),On=e=>({kind:"validator",value:e});function me(e,t=""){return(e==null?void 0:e.kind)==="string"?e.value:t}function j(e,t=0){return(e==null?void 0:e.kind)==="int"?e.value:t}function Ee(e,t=!1){return(e==null?void 0:e.kind)==="bool"?e.value:t}function Fe(e){return(e==null?void 0:e.kind)==="text"?e.value:void 0}function Ln(e){return(e==null?void 0:e.kind)==="validator"?e.value:void 0}const In={NOTI_S:"Success",NOTI_F:"Fail",CONFIRM:"Confirm"};function Le(e){return typeof e=="object"&&e!=null&&typeof e.key=="string"}function ue(){return crypto.randomUUID()}function lt(e,t){const o=t(e);if(o==="CONTINUE"&&e.children){for(const n of e.children)if(lt(n,t)==="STOP")break}return o==="SKIP_CHILDREN"?"CONTINUE":o}function z(e,t){if(e!=null){if(e.partId===t)return e;if(e.children)for(const o of e.children){const n=z(o,t);if(n)return n}}}function W(e,t){if(t(e),e.children)for(const o of e.children)W(o,t)}function An(e,t){const o=[];return W(e,n=>{t(n)&&o.push(n)}),o}function he(e,t){if(e.children)for(const o of e.children){if(o.partId===t)return e;const n=he(o,t);if(n)return n}}function Ge(e,t){if(e.partId===t)return[e];if(e.children)for(const o of e.children){const n=Ge(o,t);if(n)return[e,...n]}}function st(e,t){const o=[],n=new Map;return W(e,i=>n.set(i.partId,(n.get(i.partId)??0)+1)),W(e,i=>{(n.get(i.partId)??0)>1&&o.push({ruleId:"CHK-DUP-ID",severity:"error",targetKind:"part",targetRef:i.partId,message:`partId가 트리에서 중복됩니다: "${i.partId}"`})}),W(e,i=>{var d;const a=t.get(i.partType);if(!a)o.push({ruleId:"CHK-PART-1",severity:"warning",targetKind:"part",targetRef:i.partId,message:`카탈로그에 없는 파트 타입입니다: "${i.partType}"`});else for(const u of Object.keys(i.attrs))t.propertyItem(i.partType,u)||o.push({ruleId:"CHK-ATTR-1",severity:"warning",targetKind:"part",targetRef:i.partId,message:`카탈로그 정의에 없는 속성 키입니다: "${i.partType}.${u}"`});const s=i.children??[];for(const u of s)if(t.canContain(i.partType,u.partType)==="deny"&&o.push({ruleId:"CHK-CONTAIN-1",severity:"error",targetKind:"part",targetRef:u.partId,contextRef:i.partId,message:`${i.partType}은(는) 자식으로 ${u.partType}을(를) 담을 수 없습니다`}),a)for(const g of Object.keys(u.layoutAttrs??{})){const m=t.propertyItem(i.partType,g);m!=null&&m.layoutAttr||o.push({ruleId:"CHK-ATTR-1",severity:"warning",targetKind:"part",targetRef:u.partId,contextRef:i.partId,message:`${i.partType}의 레이아웃 정의에 없는 레이아웃 속성 키입니다: "${g}"`})}const c=(d=a==null?void 0:a.containment)==null?void 0:d.arity;if(c){const u=s.length;c.max!=null&&u>c.max&&o.push({ruleId:"CHK-ARITY-1",severity:"error",targetKind:"part",targetRef:i.partId,message:`${i.partType}의 자식이 ${u}개로 최대 ${c.max}개를 초과했습니다`}),c.min!=null&&u<c.min&&o.push({ruleId:"CHK-ARITY-2",severity:"warning",targetKind:"part",targetRef:i.partId,message:`${i.partType}의 자식이 ${u}개로 최소 ${c.min}개에 미달합니다`})}}),o}function ct(e){return e==null||e.trim().length===0}function dt(e){if(!(e==null||e.length===0))return e.startsWith("#{")&&e.endsWith("}")?{key:e.slice(2,-1)}:{text:e}}function ut(e){if(e!=null){if(!ct(e.key))return{key:e.key};if(e.msgMap&&Object.keys(e.msgMap).length>0)return{...e.msgMap};if(!ct(e.text))return e.text}}function ye(e){return ut(dt(e))}function pe(e){if(e==null)return;const t=e.startsWith("^")?e.slice(1):e,o=Number.parseInt(t,10);return Number.isNaN(o)?void 0:o}function Ie(e){if(e==null)return;const t=e.startsWith("^")?e.slice(1):e;return Number.isNaN(Number(t))||t.trim().length===0?void 0:t}function fe(e){return e!=null&&e.startsWith("^")}function pt(e){const t={};if(e==null)return t;for(let o of e.split(";")){if(o=o.trim(),o.length===0)continue;const n=o.split(":"),i=n.length>=1?n[0].trim():null,a=n.length>=2?n[1].trim():null;let s=null,c=null;if(a!=null){const g=a.split(",");g.length>0&&(s=g[0]),g.length>1&&(c=g[1])}const d=n.length>=3?ye(n[2].trim()):void 0,u=n.length>=4?ye(n[3].trim()):void 0;switch(i){case"required":t.useRequired=!0,t.requiredMsg=d;break;case"length":t.useLength=!0,t.lengthMin=pe(s),t.lengthMax=pe(c),t.lengthMsg=d;break;case"currencyRange":t.useCurrencyRange=!0,t.currencyRangeMin=Ie(s),t.currencyRangeMax=Ie(c),t.currencyRangeMinExclusive=fe(s),t.currencyRangeMaxExclusive=fe(c),t.currencyRangeMsg=d;break;case"longRange":t.useLongRange=!0,t.longRangeMin=pe(s),t.longRangeMax=pe(c),t.longRangeMinExclusive=fe(s),t.longRangeMaxExclusive=fe(c),t.longRangeMsg=d;break;case"doubleRange":t.useDoubleRange=!0,t.doubleRangeMin=Ie(s),t.doubleRangeMax=Ie(c),t.doubleRangeMinExclusive=fe(s),t.doubleRangeMaxExclusive=fe(c),t.doubleRangeMsg=d;break;case"regexp":t.useRegexp=!0,t.regexpPattern=a??void 0,t.regexpMsg=d;break;case"dupCheck":t.useDupCheck=!0,t.dupCheckMsg1=d,t.dupCheckMsg2=u;break;case"plainTextLength":t.usePlainTextLength=!0,t.plainTextLengthMin=pe(s),t.plainTextLengthMax=pe(c),t.plainTextLengthMsg=d;break}}return t}function ft(e){const t=e.split(":");return{sortPropertyId:t.length>0?t[0]:"",order:t.length>1?t[1]:"ASC",sortDataMapping:t.length>2?t[2]:"",sortName:t.length>3?t[3]:""}}function Mn(e){return e==null?[]:e.split(";").filter(t=>t.trim().length>0).map(ft)}const Bn={S:"string",I:"int",B:"bool",M:"text",DS:"dataSource",DM:"dataMapping"};function gt(e,t){switch(t??Bn[e.type]){case"string":return{kind:"string",value:e.val};case"int":return{kind:"int",value:Number.parseInt(e.val,10)};case"bool":return{kind:"bool",value:e.val==="true"};case"text":return{kind:"text",value:ye(e.val)??""};case"dataSource":return{kind:"dataSource",value:e.val};case"dataMapping":return{kind:"dataMapping",value:e.val};case"validator":return{kind:"validator",value:pt(e.val)};default:return}}function Xe(e,t,o){const n={};for(const[i,a]of Object.entries(e)){const s=gt(a,t==null?void 0:t(i));s===void 0?o==null||o(i,a):n[i]=s}return n}const re={spacing:[{token:"xs",css:"margin-xs",label:"X-Small"},{token:"sm",css:"margin-sm",label:"Small"},{token:"default",css:"",label:"Default"},{token:"lg",css:"margin-lg",label:"Large"},{token:"xl",css:"margin-xl",label:"X-Large"}],gap:[{token:"xs",css:"spacing-xs",label:"X-Small"},{token:"sm",css:"spacing-sm",label:"Small"},{token:"default",css:"",label:"Default"},{token:"lg",css:"spacing-lg",label:"Large"},{token:"xl",css:"spacing-xl",label:"X-Large"}],color:[{token:"default",css:"",label:"Default"},{token:"themed",css:"colored",label:"Theme color"},{token:"red",css:"red",label:"Red"},{token:"gray",css:"gray",label:"Gray"},{token:"yellow",css:"yellow",label:"Yellow"},{token:"green",css:"green",label:"Green"}],textColor:[{token:"default",css:"",label:"Default"},{token:"black",css:"black-text",label:"Black"},{token:"blue",css:"blue-text",label:"Blue"},{token:"red",css:"red-text",label:"Red"},{token:"gray",css:"gray-text",label:"Gray"},{token:"yellow",css:"yellow-text",label:"Yellow"},{token:"green",css:"green-text",label:"Green"}],bgColor:[{token:"none",css:"",label:"None"},{token:"blue",css:"blue-bg",label:"Blue"},{token:"red",css:"red-bg",label:"Red"},{token:"yellow",css:"yellow-bg",label:"Yellow"},{token:"green",css:"green-bg",label:"Green"},{token:"purple",css:"purple-bg",label:"Purple"}],captionBg:[{token:"none",css:"",label:"None"},{token:"gray",css:"gray-bg-caption",label:"Gray"},{token:"blue",css:"blue-bg-caption",label:"Blue"},{token:"red",css:"red-bg-caption",label:"Red"},{token:"yellow",css:"yellow-bg-caption",label:"Yellow"},{token:"green",css:"green-bg-caption",label:"Green"},{token:"purple",css:"purple-bg-caption",label:"Purple"},{token:"white",css:"white-bg-caption",label:"White"}],captionDir:[{token:"default",css:"",label:"Default"},{token:"left",css:"left-caption",label:"Left"}],align:[{token:"left",css:"",label:"Left(default)"},{token:"center",css:"align-center",label:"Center"},{token:"right",css:"align-right",label:"Right"}],verticalAlign:[{token:"top",css:"",label:"Top(default)"},{token:"middle",css:"align-middle",label:"Middle"},{token:"bottom",css:"align-bottom",label:"Bottom"}],size:[{token:"tiny",css:"tiny",label:"Tiny"},{token:"small",css:"small",label:"Small"},{token:"default",css:"",label:"Default"},{token:"large",css:"large",label:"Large"},{token:"huge",css:"huge",label:"Huge"}],captionSize:[{token:"tiny",css:"tiny-caption",label:"Tiny"},{token:"small",css:"small-caption",label:"Small"},{token:"default",css:"",label:"Default"},{token:"large",css:"large-caption",label:"Large"},{token:"huge",css:"huge-caption",label:"Huge"}],iconAlign:[{token:"left",css:"",label:"Left(default)"},{token:"right",css:"icon-align-right",label:"Right"},{token:"top",css:"icon-align-top",label:"Top"}],heading:[{token:"h1",css:"h1",label:"Heading 1"},{token:"h2",css:"h2",label:"Heading 2"},{token:"h3",css:"h3",label:"Heading 3"},{token:"h4",css:"h4",label:"Heading 4"}],weight:[{token:"normal",css:"",label:"Normal(default)"},{token:"bold",css:"bold",label:"Bold"},{token:"bolder",css:"bolder",label:"Bolder"},{token:"lighter",css:"lighter",label:"Lighter"}],slotAlign:[{token:"default",css:"",label:"Default"},{token:"left",css:"LEFT",label:"Left"},{token:"center",css:"CENTER",label:"Center"},{token:"right",css:"RIGHT",label:"Right"},{token:"top",css:"TOP",label:"Top"},{token:"middle",css:"MIDDLE",label:"Middle"},{token:"bottom",css:"BOTTOM",label:"Bottom"}]},$e={spacing:{source:"style",legacyDimId:"margin",label:"Margin Size"},gap:{source:"style",legacyDimId:"spacing",label:"Spacing Size"},color:{source:"style",legacyDimId:"color",label:"Color"},textColor:{source:"style",legacyDimId:"textColor",label:"Text Color"},bgColor:{source:"style",legacyDimId:"bgColor",label:"Background Color"},captionBg:{source:"style",legacyDimId:"bgCaption",label:"Caption Background"},captionDir:{source:"style",legacyDimId:"dirCaption",label:"Caption Direction"},align:{source:"style",legacyDimId:"alignment",label:"Alignment"},verticalAlign:{source:"style",legacyDimId:"vertical-alignment",label:"Vertical Alignment"},size:{source:"style",legacyDimId:"size",label:"Size"},captionSize:{source:"style",legacyDimId:"caption-size",label:"Caption"},iconAlign:{source:"style",legacyDimId:"icon-align",label:"Icon alignment"},heading:{source:"style",legacyDimId:"heading",label:"Heading"},weight:{source:"style",legacyDimId:"weight",label:"Weight"},slotAlign:{source:"layoutAttr",legacyDimId:"componentAlignment",label:"Align"}},_n=new Map(Object.keys(re).filter(e=>$e[e].source==="style").flatMap(e=>re[e].filter(t=>t.css!=="").map(t=>[t.css,{dim:e,token:t.token}])));function Tt(e,t){var o;return(o=re[e].find(n=>n.token===t))==null?void 0:o.css}function mt(e,t){var o;return(o=re[e].find(n=>n.css===t))==null?void 0:o.token}function Ue(e){return _n.get(e)}function He(e){return re[e].map(t=>t.token)}function Et(){return{unknownPartTypes:[],discardedAttrs:[],droppedFields:[]}}function Pn(e){const t={};if(e.caseText&&(t.caseText={...e.caseText}),e.msgType&&(t.msgType=e.msgType),e.msgText!=null){const o=ye(e.msgText);o!==void 0&&(t.msgText=o)}return t}function xn(e,t){if(e)return o=>{var n;return(n=e.propertyItem(t,o))==null?void 0:n.valueType}}function Rn(e,t){if(!t||!t.propertyItem(e.partType,"buttonColor"))return;const o=e.attrs.addStyleNames;if((o==null?void 0:o.kind)!=="string"||!o.value)return;const n=[];let i;for(const a of o.value.split(/\s+/).filter(Boolean)){const s=Ue(a);(s==null?void 0:s.dim)==="color"?i??(i=s.token):n.push(a)}i!==void 0&&(e.attrs.buttonColor=V(i),n.length>0?e.attrs.addStyleNames=V(n.join(" ")):delete e.attrs.addStyleNames)}function ht(e,t){const{partId:o,partType:n,partInfo:i,attrMap:a,comment:s,caseMsgList:c,children:d,layoutAttrMap:u,extraAttrMap:g,...m}=e,y=t.report,S=t.catalog?t.catalog.get(n)!=null:!0;y&&!S&&y.unknownPartTypes.push({partId:o,partType:n});const k=y?b=>(C,N)=>y.discardedAttrs.push({partId:o,partType:n,key:C,tag:String(N.type),layout:b}):void 0,x=xn(t.catalog,n),U={partId:o,partType:n,attrs:a?Xe(a,x,k==null?void 0:k(!1)):{}};if(Rn(U,t.catalog),i&&(U.info={draggable:!!i.draggable,droppable:!!i.droppable,selectable:!!i.selectable,deletable:!!i.deletable}),u&&(U.layoutAttrs=Xe(u,x,k==null?void 0:k(!0))),g&&(U.extraAttrs={...g}),s&&(U.comment={...s}),c&&(U.caseMessages=c.map(Pn)),d&&(U.children=d.map(b=>ht(b,t))),y)for(const b of Object.keys(m))y.droppedFields.push({partId:o,partType:n,field:b});return U}function yt(e,t={}){return ht(e,t)}function Nn(e,t,o,n){const i={partId:e.partId,parentId:t,order:o,rev:n,partType:e.partType};return e.info&&(i.info=e.info),e.attrs&&Object.keys(e.attrs).length&&(i.attrs=e.attrs),e.layoutAttrs&&Object.keys(e.layoutAttrs).length&&(i.layoutAttrs=e.layoutAttrs),e.extraAttrs&&(i.extraAttrs=e.extraAttrs),e.comment!==void 0&&(i.comment=e.comment),e.caseMessages&&(i.caseMessages=e.caseMessages),i}function Ve(e,t=null,o=0,n=0){const i=[],a=(s,c,d)=>{var u;i.push(Nn(s,c,d,n)),(u=s.children)==null||u.forEach((g,m)=>a(g,s.partId,m))};return a(e,t,o),i}function St(e,t={}){const o={schemaVersion:2,rootId:e.partId,partList:Ve(e,null,0,0)};return t.opWriteEnabled!==void 0&&(o.opWriteEnabled=t.opWriteEnabled),t.version!==void 0&&(o.version=t.version),o}function vn(e){const t={partId:e.partId,partType:e.partType,attrs:e.attrs?{...e.attrs}:{}};return e.info&&(t.info={...e.info}),e.layoutAttrs&&(t.layoutAttrs={...e.layoutAttrs}),e.extraAttrs&&(t.extraAttrs={...e.extraAttrs}),e.comment!==void 0&&(t.comment=e.comment),e.caseMessages&&(t.caseMessages=[...e.caseMessages]),t}function Dn(e){const t=new Map;for(const d of e.partList){if(t.has(d.partId))throw new Error(`v2-read: 중복 partId '${d.partId}'`);t.set(d.partId,d)}const o=new Map;for(const d of e.partList){if(d.parentId===null)continue;if(!t.has(d.parentId))throw new Error(`v2-read: 고아 파트 '${d.partId}' — 부모 '${d.parentId}' 부재`);const u=o.get(d.parentId);u?u.push(d):o.set(d.parentId,[d])}const n=t.get(e.rootId);if(!n)throw new Error(`v2-read: rootId '${e.rootId}' 파트 부재`);if(n.parentId!==null)throw new Error(`v2-read: rootId '${e.rootId}'의 parentId가 null이 아님(${String(n.parentId)})`);const i={},a=new Set,s=d=>{if(a.has(d.partId))throw new Error(`v2-read: 순환 참조 '${d.partId}'`);a.add(d.partId),i[d.partId]=d.rev;const u=vn(d),g=o.get(d.partId);return g&&(g.sort((m,y)=>m.order-y.order),u.children=g.map(s)),u},c=s(n);if(a.size!==t.size){const d=[...t.keys()].filter(u=>!a.has(u));throw new Error(`v2-read: root에서 도달 불가한 파트 ${d.length}개(예: '${d[0]}')`)}return{root:c,revSeed:{revs:i}}}function wn(e,t={}){const o=t.report??Et(),n=yt(e,{catalog:t.catalog,report:o});return{v2:St(n,{opWriteEnabled:t.opWriteEnabled,version:t.version}),report:o,model:n}}function bt(e,t){return e==null?t:Math.max(0,Math.min(e,t))}function Fn(e,t,o){const n=new Map,i=new Map;for(const u of e){if(n.has(u.partId))throw new Error(`applyOpsToFlat: 입력 중복 partId '${u.partId}'`);n.set(u.partId,{...u}),i.set(u.partId,u.rev)}const a=o.revs??{};for(const[u,g]of Object.entries(a)){if(!i.has(u))continue;const m=i.get(u);if(m!==g)return{ok:!1,conflict:{kind:"rev",ref:u,current:m}}}const s=u=>[...n.values()].filter(g=>g.parentId===u).sort((g,m)=>g.order-m.order),c=u=>u.forEach((g,m)=>g.order=m);for(const u of t)switch(u.kind){case"part.add":{const g=u.parentRef??null;if(g!==null&&!n.has(g))return{ok:!1,conflict:{kind:"missing",ref:g}};if(!u.value)throw new Error("applyOpsToFlat: part.add에 value(서브트리) 누락");const m=Ve(u.value,g,0,0);for(const k of m){if(n.has(k.partId))throw new Error(`applyOpsToFlat: part.add 중복 partId '${k.partId}'`);n.set(k.partId,k)}const y=u.value.partId,S=s(g).filter(k=>k.partId!==y);S.splice(bt(u.index,S.length),0,n.get(y)),c(S);break}case"part.update":{const g=u.partRef?n.get(u.partRef):void 0;if(!g)return{ok:!1,conflict:{kind:"missing",ref:u.partRef}};u.patch&&Object.assign(g,u.patch);break}case"part.move":{const g=u.partRef,m=g?n.get(g):void 0;if(!g||!m)return{ok:!1,conflict:{kind:"missing",ref:g}};const y=u.toParentRef??null;if(y!==null&&!n.has(y))return{ok:!1,conflict:{kind:"missing",ref:y}};const S=m.parentId;c(s(S).filter(x=>x.partId!==g)),m.parentId=y;const k=s(y).filter(x=>x.partId!==g);k.splice(bt(u.index,k.length),0,m),c(k);break}case"part.remove":{const g=u.partRef;if(!g||!n.has(g))return{ok:!1,conflict:{kind:"missing",ref:g}};const m=n.get(g).parentId;for(const y of Gn(n,g))n.delete(y);c(s(m));break}}const d={};for(const[u,g]of Object.entries(a)){const m=n.get(u);m&&(i.has(u)&&(m.rev=g+1),d[u]=m.rev)}return{ok:!0,partList:[...n.values()],revs:d}}function Gn(e,t){const o=[t],n=[t];for(;n.length;){const i=n.shift();for(const a of e.values())a.parentId===i&&(o.push(a.partId),n.push(a.partId))}return o}const Xn=["TEXT","TEXT_WITH_BUTTON","TEXT_RO_WITH_BUTTON","MESSAGE_TEXT","TEXTAREA","FULL_TEXTAREA","MESSAGE_TEXTAREA","INTEGER","BOOL","BUTTON","SIMPLE_BUTTON","WINDOW_OPEN_BUTTON","SELECT","ALIGN","ADD_STYLE","SIZE","ICON","TAGS","COMPONENT_REF","DATASOURCE","DATAMAPPING","COMMENT","CASE_MESSAGES"],kt={TEXT:!0,TEXTAREA:!0,FULL_TEXTAREA:!0,MESSAGE_TEXT:!0,MESSAGE_TEXTAREA:!0,INTEGER:!0,BOOL:!0,TAGS:!0,SELECT:!0,ALIGN:!0,ADD_STYLE:!0,SIZE:!0,ICON:!0,TEXT_WITH_BUTTON:!1,TEXT_RO_WITH_BUTTON:!1,BUTTON:!1,SIMPLE_BUTTON:!1,WINDOW_OPEN_BUTTON:!1,COMPONENT_REF:!1,DATASOURCE:!1,DATAMAPPING:!1,COMMENT:!1,CASE_MESSAGES:!1};function T(e,t,o,n){const i={partType:e,partName:t,groups:o};return n&&n.length>0&&(i.styles=n),i}function r(e,t,o,n,i,a){const s={id:e,name:t,valueType:o,editor:n};return i!=null&&(s.param=i),a!=null&&(s.default=a),s}function f(e,...t){return{name:e,items:t}}function Ae(e,...t){return{name:e,layoutAttr:!0,items:t.map(o=>({...o,layoutAttr:!0}))}}function E(){return f("Component",r("addStyleNames","Style","string","ADD_STYLE"),r("id","ID","string","TEXT"),r("caption","Caption","text","MESSAGE_TEXT"),r("description","Description","text","MESSAGE_TEXTAREA"),r("skipSrcGen","Skip Src Gen.","bool","BOOL"),r("srcGenHint","Src Gen Hint","string","TEXTAREA"))}function h(){return f("Size",r("width","Width","string","TEXT"),r("height","Height","string","TEXT"))}function Me(){return f("Min/Max Size",r("minWidth","Min Width","string","TEXT"),r("minHeight","Min Height","string","TEXT"),r("maxWidth","Max Width","string","TEXT"),r("maxHeight","Max Height","string","TEXT"))}function Ye(){return Ae("Layout",r("componentAlignment","Align","string","ALIGN"),r("expandRatio","Expand Ratio","int","INTEGER"))}function A(){return f("Field",r("propertyId","Property ID","string","TEXT"),r("dataMapping","Data Mapping","dataMapping","DATAMAPPING"),r("viewMode","View Mode","bool","BOOL"),r("enabled","Enabled","bool","BOOL",void 0,v(!0)),r("validate","Validation","validator","TEXT_WITH_BUTTON"))}function $n(){return f("Field",r("viewMode","View Mode","bool","BOOL"),r("enabled","Enabled","bool","BOOL",void 0,v(!0)),r("validate","Validation","validator","TEXT_WITH_BUTTON"))}function Ct(){const e=re.color.map(t=>`${t.token}:${t.label}`).join("; ");return r("buttonColor","Button Color","string","SELECT",e)}function B(e,t){return{kind:"toggle",css:e,label:t}}const ae=()=>({kind:"enum",dim:"spacing"}),Be=()=>({kind:"enum",dim:"gap"}),_e=()=>({kind:"enum",dim:"textColor"}),H=()=>({kind:"enum",dim:"bgColor"}),Un=()=>({kind:"enum",dim:"captionBg"}),Hn=()=>({kind:"enum",dim:"captionDir"}),K=()=>({kind:"enum",dim:"align"}),Vn=()=>({kind:"enum",dim:"verticalAlign"}),$=()=>({kind:"enum",dim:"size"}),Se=()=>({kind:"enum",dim:"size",only:["small","default","large"]}),O=()=>({kind:"enum",dim:"captionSize"}),Ot=()=>({kind:"enum",dim:"iconAlign"}),Lt=()=>({kind:"enum",dim:"heading"}),ze=()=>({kind:"enum",dim:"weight"}),w=()=>B("borderless","Borderless"),It=()=>B("borderless-top","Borderless Top"),At=()=>B("borderless-bottom","Borderless Bottom"),Mt=()=>B("borderless-left","Borderless Left"),Bt=()=>B("borderless-right","Borderless Right"),q=()=>B("bordered","Bordered"),_t=()=>B("bordered-top","Bordered Top"),Pt=()=>B("bordered-bottom","Bordered Bottom"),xt=()=>B("bordered-left","Bordered Left"),Rt=()=>B("bordered-right","Bordered Right"),Yn=()=>B("color-bordered-top","Color Bordered Top"),Nt=()=>B("lineless","Lineless"),We=()=>B("horizontal","Horizontal"),je=()=>B("scrollable-full","Scrollable"),vt=()=>B("white-prefix","White Prefix"),Dt=()=>B("white-suffix","White Suffix"),zn=()=>B("caption-borderless-bottom","Caption Borderless Bottom"),ie=()=>[_t(),Pt(),xt(),Rt()],le=()=>[It(),At(),Mt(),Bt()],L=()=>[Un(),zn(),Hn()],Wn=[T("Button","Button",[f("Button",Ct(),r("enabled","Enabled","bool","BOOL",void 0,v(!0)),r("disableOnClick","Disable on click","bool","BOOL"),r("icon","Icon","string","ICON"),r("tags","Tags","string","TAGS","unmask-personal-info,modify-personal-info,personal-info-excel-download,personal-info-excel-upload")),E(),h()],[$(),w(),Ot(),B("menu-button","Menu Button"),B("link","Link Button"),_e()]),T("PopupButton","PopupButton",[f("PopupButton",Ct(),r("icon","Icon","string","ICON"),r("showHidePopup","Show/Hide Popup","string","SIMPLE_BUTTON")),f("Popup",r("popupPosition","Position","string","SELECT","LEFT:Left; CENTER:Center; RIGHT:Right",V("CENTER")),r("popupTitle","Popup Title","text","MESSAGE_TEXT"),r("popupWidth","Popup Width","int","INTEGER"),r("popupHeight","Popup Height","int","INTEGER"),r("showPopupCloseBox","Show Close Box","bool","BOOL"),r("popupMargin","Popup Margin","bool","BOOL"),r("popupSpacing","Popup Spacing","bool","BOOL"),r("popupStyleNames","Popup Style","string","ADD_STYLE")),E(),h()],[$(),w(),Ot()]),T("Label","Label",[f("Label",r("value","Text","text","MESSAGE_TEXT"),r("contentMode","Content mode","string","SELECT","TEXT:Text; PREFORMATTED:Preformatted; HTML:Html")),E(),h()],[K(),$(),Lt(),ze(),ae(),O(),_e(),H(),...L()]),T("Image","Image",[f("Image",r("source","Source","string","TEXT"),r("alternateText","Alternate text","string","TEXT")),E(),h()],[...L()]),T("Link","Link",[f("Link",r("resource","Resource","string","TEXT"),r("targetName","Target name","string","TEXT")),E(),h()],[K(),Se(),O(),_e(),...L()]),T("LinkTab","LinkTab",[f("LinkTab",r("fixed","Fixed","bool","BOOL",void 0,v(!0)),r("scrollContainer","Scroll Container","string","COMPONENT_REF","VerticalLayout,HorizontalLayout")),E(),h()]),T("ProgressBar","Progress Bar",[f("ProgressBar"),E(),h()],[O(),...L()]),T("Console","Console",[f("Console"),E(),h()],[O(),...L()]),T("NativeUpload","Native Upload",[f("NativeUpload",r("immediate","Immediate mode","bool","BOOL"),r("buttonCaption","Submit button","text","MESSAGE_TEXT"),r("cancelButtonCaption","Cancel button","text","MESSAGE_TEXT"),r("submitButtonStyleName","Submit button style","string","TEXT"),r("progressBar","ProgressBar","string","COMPONENT_REF","ProgressBar")),E(),h()],[O(),...L()]),T("AuditInfo","Audit Info",[f("AuditInfo"),E(),h()],[K(),$(),Lt(),ze(),ae(),O(),...L()]),T("AuditInfoButton","Audit Info Button",[f("AuditInfoButton",r("popupPosition","Position","string","SELECT","LEFT:Left; CENTER:Center; RIGHT:Right",V("CENTER"))),E(),h()])],jn=[T("FlagCard","FlagCard",[f("FlagCard",r("titleDesc","Title Desc.","text","MESSAGE_TEXT"),r("html","Html","string","TEXTAREA"),r("linkCaption","Link Caption","text","MESSAGE_TEXT"),r("linkUrl","Link URL","string","TEXT"),r("linkTarget","Link Target","string","TEXT")),E(),h()]),T("Chart","Chart",[f("Chart",r("chartType","Chart Type","string","SELECT","pie:pie; doughnut:doughnut; bar:bar; horizontalBar:horizontalBar; stackedBar:stackedBar; line:line;"),r("xAxesTitle","X-Axis Title","text","MESSAGE_TEXT"),r("leftYAxesTitle","Left Y-Axis Title","text","MESSAGE_TEXT"),r("rightYAxesTitle","Right Y-Axis Title","text","MESSAGE_TEXT")),E(),h()],[q(),...ie(),O(),...L()])],wt="ALL:All;IMAGE:Image;",Kn=[T("MultiFileUpload","File Upload",[f("MultiFileUpload",r("maxSize","Max size","int","INTEGER"),r("totalMaxSize","Total Max size","int","INTEGER"),r("fileType","File type","string","SELECT",wt),r("fileExtString","File exts","string","TEXT"),r("thumbnailWidth","Thumbnail Width","string","TEXT"),r("thumbnailHeight","Thumbnail Height","string","TEXT"),r("showDropMessage","Show Drop Msg.","bool","BOOL",void 0,v(!0)),r("subFolder","Sub folder","string","TEXT"),r("enableReorder","Enable reorder","bool","BOOL",void 0,v(!0))),A(),E(),h()],[O(),...L()]),T("SingleFileUpload","Single File Upload",[f("SingleFileUpload",r("maxSize","Max size","int","INTEGER"),r("fileType","File type","string","SELECT",wt),r("fileExtString","File exts","string","TEXT"),r("thumbnailWidth","Thumbnail Width","string","TEXT"),r("thumbnailHeight","Thumbnail Height","string","TEXT"),r("showDropMessage","Show Drop Msg.","bool","BOOL",void 0,v(!0)),r("subFolder","Sub folder","string","TEXT")),A(),E(),h()],[$(),O(),...L()]),T("SingleImageUpload","Single Image Upload",[f("SingleImageUpload",r("maxSize","Max size","int","INTEGER"),r("fileExtString","File exts","string","TEXT"),r("subFolder","Sub folder","string","TEXT")),A(),E(),h()],[O(),...L()]),T("NameField","Name Field",[f("NameField"),A(),E(),h()],[O(),...L()]),T("AddressField","Address Field",[f("AddressField",r("showSecondaryAddress","Secondary Addr.","bool","BOOL")),A(),E(),h()],[O(),...L()]),T("PageBuilder","Page Builder",[f("PageBuilder",r("subFolder","Image sub folder","string","TEXT")),A(),E(),h()],[w()]),T("ContentEditor","Content Editor",[f("ContentEditor"),A(),E(),h()],[w()])],qn=[T("PageRefreshButton","PageRefreshButton",[f("PageRefreshButton"),E(),h()]),T("MultiLangExpandButton","MultiLangExpandButton",[f("MultiLangExpandButton"),E(),h()]),T("Fragment","Fragment",[f("Fragment",r("fragmentName","UI ID","string","TEXT_WITH_BUTTON"),r("openFragment","Open Fragment","string","WINDOW_OPEN_BUTTON"),r("id","ID","string","TEXT"),r("caption","Caption","text","MESSAGE_TEXT")),h()]),T("CommentList","Comment List",[f("CommentList",r("pageLength","Page Length","int","INTEGER"),r("viewMode","View Mode","bool","BOOL"),r("writerPropertyId","Writer Property ID","string","TEXT"),r("writerDataMapping","Writer Data Mapping","dataMapping","DATAMAPPING"),r("postDatePropertyId","Date Property ID","string","TEXT"),r("postDateDataMapping","Date Data Mapping","dataMapping","DATAMAPPING"),r("commentPropertyId","Cmt. Property ID","string","TEXT"),r("commentDataMapping","Cmt. Data Mapping","dataMapping","DATAMAPPING")),E(),h()]),T("SourceCodeEditor","SourceCode Editor",[f("SourceCodeEditor",r("editorMode","Editor Lang","string","SELECT","HTML:HTML; XML:XML; YAML:YAML; CSS:CSS; SCSS:SCSS; JSON:JSON; JAVA:Java; JAVASCRIPT:Javascript; JSP:JSP; PLAIN_TEXT:Plain Text; SQL:SQL; MARKDOWN:MARKDOWN; ASCIIDOC:AsciiDoc;"),r("showGutter","Show Gutter","bool","BOOL",void 0,v(!0)),r("highlightActiveLine","Highlight Line","bool","BOOL",void 0,v(!0))),A(),E(),h()],[q(),...ie(),O(),...L()]),T("MarkdownViewer","Markdown Viewer",[A(),E(),h()],[q(),...ie(),O(),...L()]),T("History","History",[E(),h()],[q(),...ie(),O(),...L()])],Jn=[T("TextFilter","Text Filter",[f("TextFilter",r("filterType","Filter Type","string","SELECT",":; LIKE:Like; EQUAL:Equal;"))]),T("NumberFilter","Number Filter",[f("NumberFilter",r("percentage","Percentage","bool","BOOL"))]),T("SelectFilter","Select Filter",[]),T("MultiSelectFilter","Multi Select Filter",[]),T("PopupSelectFilter","Popup Select Filter",[f("PopupSelect",r("buttonCaption","Button caption","text","MESSAGE_TEXT"),r("captionFieldReadOnly","Text ReadOnly","bool","BOOL",void 0,v(!0)),r("hideButton","Hide Button","bool","BOOL"))]),T("CategorySelectFilter","Category Select Filter",[f("CategorySelect",r("filterIncludesChildren","Include Children","bool","BOOL"))]),T("YesNoSelectFilter","YesNo Select Filter",[f("YesNoSelect",r("yesCaption","Yes caption","text","MESSAGE_TEXT"),r("noCaption","No caption","text","MESSAGE_TEXT"))])],Ft=":; STRING:String; LONG:Long; INTEGER:Integer; EMBEDDABLE_NAME:EmbeddableName; EMBEDDABLE_ADDRESS:EmbeddableAddress; EMBEDDABLE_TEL:EmbeddableTel",Zn=[T("Grid","Grid",[f("Grid",r("gridDef","Grid Definition","string","BUTTON"),r("entityMapping","Entity Mapping","string","TEXT_WITH_BUTTON"),r("useCheckbox","Checkbox","bool","BOOL"),r("useSerialNo","Serial No","bool","BOOL"),r("useRowEdit","Row Editable","bool","BOOL"),r("alwaysEditing","Always Editing","bool","BOOL"),r("multiSelect","Multi Select","bool","BOOL",void 0,v(!0)),r("enableReorder","Enable reorder","bool","BOOL"),r("fixedColumnCount","Fixed Col. Count","int","INTEGER"),r("maxHeight","Max Height","string","TEXT"),r("selectOnClick","Select On Click","bool","BOOL"),r("defaultColumnWidth","Default Col. Width","string","TEXT"),r("ignoreModelChangeEvent","Ignore ModelChange","bool","BOOL"),r("usePageable","Use Pageable","bool","BOOL")),f("Pivot Grid",r("pivotMode","Pivot Mode","bool","BOOL"),r("fixedRowCount","Fixed Row Count","int","INTEGER")),f("Field",r("propertyId","Property ID","string","TEXT"),r("dataMapping","Data Mapping","dataMapping","DATAMAPPING"),r("validate","Validation","validator","TEXT_WITH_BUTTON")),E(),h()],[O(),...L(),w(),...le()]),T("ColumnDef","Grid Column",[f("Grid Column",r("actualPropertyId","Property ID","string","TEXT"),r("dataMapping","Data Mapping","dataMapping","DATAMAPPING"),r("caption","Caption","text","MESSAGE_TEXT"),r("width","Width","string","TEXT"),r("expand","Expand","bool","BOOL"),r("dataSource","Data source","dataSource","TEXT_WITH_BUTTON"),r("yesCaption","Yes caption","text","MESSAGE_TEXT"),r("noCaption","No caption","text","MESSAGE_TEXT"),r("nullCaption","Null caption","text","MESSAGE_TEXT"),r("cellType","Cell Type","string","SELECT","TEXT:Text; DATE:Date; NUMBER:Number; PERCENTAGE:Percentage; CATEGORY:Category; HTML:HTML; TEXT_MULTILINE:Multiline Text;"),r("numberFormat","Number format","string","SELECT",":; #,###:1,234 (#,###); #:1234 (#); #,##0.#####:1,234.56789 (#,##0.#####); #,##0.00:1,234.00 (#,##0.00); #,##0.##%:1,234.1% (#,##0.##%); #,##0.00%:1,234.10% (#,##0.00%); currency:Currency; _CUSTOM:Custom"),r("dateFormat","Date format","string","SELECT",":; DAY:Day; MONTH:Month; YEAR:Year; HOUR:Hour; MINUTE:Minute; SECOND:Second; _CUSTOM:Custom"),r("merged","Merge","bool","BOOL")),f("Sort",r("sortable","Sort","bool","BOOL"),r("sortPropertyId","Sort Property ID","string","TEXT")),f("Cell Click",r("clickable","Clickable","bool","BOOL"),r("clickUrl","Click URL","string","TEXT"),r("clickTarget","Click Target","string","TEXT")),f("Filter/Lookup",r("filter","Filter","string","SELECT",":; TextFilter:TextFilter; NumberFilter:NumberFilter; Select:Select; MultiSelect:MultiSelect; PopupSelect:PopupSelect; CategorySelect:CategorySelect; YesNoSelect:YesNoSelect"),r("filterPropertyId","Filter Property ID","string","TEXT"),r("filterValueType","Filter Value Type","string","SELECT",Ft),r("lookupDate","Lookup (Date)","bool","BOOL"),r("lookupInput","Lookup (Input)","bool","BOOL"),r("lookupPropertyId","Lookup Property ID","string","TEXT"),r("lookupValueType","Lookup Value Type","string","SELECT",Ft),r("supportsInFilter","Supports In Filter","bool","BOOL")),f("Style",r("styleName","Cell style","string","TEXT"),r("css","Cell CSS","string","TEXT"))]),T("GridCellPanel","Grid Cell Panel",[]),T("GridControl","Grid Control",[f("Grid Control",r("grid","Grid ID","string","COMPONENT_REF","Grid"),r("useTotalCount","Total Count","bool","BOOL"),r("hideSelectedCount","Hide Selected Count","bool","BOOL"),r("useRefreshButton","Refresh","bool","BOOL"),r("useClearFilterButton","Clear Filter","bool","BOOL"),r("useExcelDownloadButton","Excel Download","bool","BOOL"),r("useAddRowButton","Add Row","bool","BOOL"),r("addRowAtBottom","Add to Bottom","bool","BOOL"),r("useRemoveRowButton","Remove Row","bool","BOOL"),r("useFilterLayerButton","Filter Layer","bool","BOOL",void 0,v(!0)),r("useColumnSettingButton","Column Setting","bool","BOOL"),r("excelDownMaxCount","Excel Max Count","int","INTEGER")),E()]),T("GridLookup","Grid Lookup",[f("Grid Lookup",r("grid","Grid ID","string","COMPONENT_REF","Grid"),r("useLookupSettingButton","Use Setting","bool","BOOL"),r("inputFilterType","Input Filter Type","string","SELECT",":; LIKE:Like; EQUAL:Equal;"),r("dateResolution","DateResolution","string","SELECT",":; DAY:Day;HOUR:Hour;MINUTE:Minute;SECOND:Second;")),E(),h()])],be=":Auto;ENUM:Enum Class;STRING:String",Ke=":; DAY:Day;HOUR:Hour;MINUTE:Minute;SECOND:Second",Qn=[T("TextField","Text Field",[f("TextField",r("placeholder","Placeholder","text","MESSAGE_TEXT"),r("textType","Text Type","string","SELECT","TEXT:Text; EMAIL:Email; URL:URL; PASSWORD:Password",V("TEXT")),r("maxLength","Max Length","int","INTEGER"),r("clickable","Clickable","bool","BOOL"),r("clickUrl","Click URL","string","TEXT"),r("clickTarget","Click Target","string","TEXT"),r("prefix","Prefix","text","MESSAGE_TEXT"),r("suffix","Suffix","text","MESSAGE_TEXT"),r("autoComplete","AutoComplete","string","TEXT")),A(),E(),h()],[K(),$(),O(),w(),H(),vt(),Dt(),...L()]),T("TextArea","Text Area",[f("TextArea",r("placeholder","Placeholder","text","MESSAGE_TEXT"),r("autoResize","Auto resize","bool","BOOL",void 0,v(!0))),A(),E(),h()],[K(),$(),O(),w(),...L()]),T("StyledTextField","Styled Text Field",[f("StyledTextField"),A(),E(),h()],[...L()]),T("RichTextArea","Rich Text Area",[f("RichTextArea",r("maxSize","Image max size","int","INTEGER"),r("subFolder","Image sub folder","string","TEXT")),A(),E(),h()],[O(),...L()]),T("TelField","Tel Field",[f("TelField",r("telNotation","Notation","string","SELECT",":Default; TYPE1:Type 1; TYPE3:Type 3; TYPE1C:Type 1 + CountryCode; TYPE3C:Type3 + CountryCode"),r("placeholder","Placeholder","text","MESSAGE_TEXT")),A(),E(),h()],[K(),$(),O(),...L(),w()]),T("NumberField","Number Field",[f("NumberField",r("placeholder","Placeholder","text","MESSAGE_TEXT"),r("format","Format","string","SELECT",":; #,###:1,234 (#,###); #:1234 (#); #,##0.#####:1,234.56789 (#,##0.#####); #,##0.00:1,234.00 (#,##0.00); _CUSTOM:Custom"),r("allowNull","Allow null","bool","BOOL"),r("allowNegative","Allow negative","bool","BOOL"),r("clickable","Clickable","bool","BOOL"),r("clickUrl","Click URL","string","TEXT"),r("clickTarget","Click Target","string","TEXT"),r("percentage","Percentage","bool","BOOL"),r("prefix","Prefix","text","MESSAGE_TEXT"),r("suffix","Suffix","text","MESSAGE_TEXT")),A(),E(),h()],[K(),$(),H(),O(),...L(),w(),vt(),Dt()]),T("CurrencyField","Currency Field",[f("CurrencyField",r("placeholder","Placeholder","text","MESSAGE_TEXT"),r("allowNull","Allow null","bool","BOOL"),r("hidePrefix","Hide Prefix","bool","BOOL"),r("hideSuffix","Hide Suffix","bool","BOOL"),r("clickable","Clickable","bool","BOOL"),r("clickUrl","Click URL","string","TEXT"),r("clickTarget","Click Target","string","TEXT")),A(),E(),h()],[K(),$(),H(),O(),...L(),w()]),T("DateField","Date Field",[f("DateField",r("placeholder","Placeholder","text","MESSAGE_TEXT"),r("dateFormat","Format","string","TEXT"),r("resolution","Resolution","string","SELECT",":; DAY:Day;HOUR:Hour;MINUTE:Minute;SECOND:Second;"),r("displayResolution","Display Resolution","string","SELECT",Ke),r("truncateType","Truncate Type","string","SELECT",":; BEGIN:BEGIN; END:END;"),r("beginYearDelta","Begin Year Delta","int","INTEGER"),r("endYearDelta","End Year Delta","int","INTEGER"),r("initialHour","Initial Hour","int","INTEGER"),r("initialMinute","Initial Minute","int","INTEGER"),r("stepOfMinutes","Step of Minutes","int","INTEGER")),A(),E(),h()],[O(),...L()]),T("TimeField","Time Field",[f("TimeField",r("resolution","Resolution","string","SELECT",":; HOUR:Hour;MINUTE:Minute;SECOND:Second")),A(),E(),h()],[O(),...L()]),T("DateRange","Date Range",[f("DateRange",r("fromPlaceholder","From Placeholder","text","MESSAGE_TEXT"),r("toPlaceholder","To Placeholder","text","MESSAGE_TEXT"),r("checkDateOrder","Check Order","bool","BOOL"),r("checkDateOrderMessage","Check Msg","text","MESSAGE_TEXT"),r("resolution","Resolution","string","SELECT",Ke),r("displayResolution","Display Resolution","string","SELECT",Ke),r("selectResolution","Select Resolution","string","SELECT",":; WEEK:Week"),r("beginYearDelta","Begin Year Delta","int","INTEGER"),r("endYearDelta","End Year Delta","int","INTEGER"),r("fromPropertyId","From Property ID","string","TEXT"),r("fromDataMapping","From Data Mapping","dataMapping","DATAMAPPING"),r("toPropertyId","To Property ID","string","TEXT"),r("toDataMapping","To Data Mapping","dataMapping","DATAMAPPING"),r("stepOfMinutes","Step of Minutes","int","INTEGER"),r("dateFieldWidth","DateField Width","string","TEXT")),$n(),E(),h()],[O(),...L()]),T("CheckBox","CheckBox",[f("CheckBox",r("checked","Checked","bool","BOOL")),A(),E(),h()],[Se(),O()]),T("RadioButton","RadioButton",[f("RadioButton"),A(),E()],[O()]),T("RadioGroup","Radio Group",[f("RadioGroup",r("dataSource","Data source","dataSource","TEXT_WITH_BUTTON"),r("codeValueType","Code Value Type","string","SELECT",be)),A(),E(),h()],[Se(),We(),O(),...L()]),T("CheckBoxGroup","CheckBox Group",[f("CheckBoxGroup",r("dataSource","Data source","dataSource","TEXT_WITH_BUTTON"),r("codeValueType","Code Value Type","string","SELECT",be),r("multiSelect","MultiSelect","bool","BOOL",void 0,v(!0))),A(),E(),h()],[Se(),We(),O(),...L()]),T("YesNoGroup","YesNo Group",[f("YesNoGroup",r("yesCaption","Yes caption","text","MESSAGE_TEXT"),r("noCaption","No caption","text","MESSAGE_TEXT")),A(),E(),h()],[Se(),We(),O(),...L()]),T("Select","Select",[f("Select",r("placeholder","Placeholder","text","MESSAGE_TEXT"),r("dataSource","Data source","dataSource","TEXT_WITH_BUTTON"),r("codeValueType","Code Value Type","string","SELECT",be),r("nullSelectionAllowed","Allow null","bool","BOOL"),r("nullCaption","Null caption","text","MESSAGE_TEXT"),r("ignoreCase","Ignore case","bool","BOOL")),A(),E(),h()],[$(),O(),...L(),w()]),T("MultiSelect","Multi Select",[f("MultiSelect",r("placeholder","Placeholder","text","MESSAGE_TEXT"),r("dataSource","Data source","dataSource","TEXT_WITH_BUTTON"),r("codeValueType","Code Value Type","string","SELECT",be),r("ignoreCase","Ignore case","bool","BOOL")),A(),E(),h()],[$(),O(),...L(),w()]),T("CategorySelect","Category Select",[f("CategorySelect",r("placeholder","Placeholder","text","MESSAGE_TEXT"),r("dataSource","Data source","dataSource","TEXT_WITH_BUTTON"),r("codeValueType","Code Value Type","string","SELECT",be),r("nullSelectionAllowed","Allow null","bool","BOOL"),r("nullCaption","Null caption","text","MESSAGE_TEXT"),r("ignoreCase","Ignore case","bool","BOOL")),A(),E(),h()],[$(),O(),...L(),w()]),T("PopupSelect","Popup Select",[f("PopupSelect",r("buttonCaption","Button caption","text","MESSAGE_TEXT"),r("captionFieldReadOnly","Text ReadOnly","bool","BOOL",void 0,v(!0)),r("captionFieldViewMode","Text ViewMode","bool","BOOL"),r("hideCaptionField","Hide TextField","bool","BOOL"),r("hideButton","Hide Button","bool","BOOL")),A(),E(),h()],[O(),...L()]),T("YesNoSelect","YesNo Select",[f("YesNoSelect",r("placeholder","Placeholder","text","MESSAGE_TEXT"),r("yesCaption","Yes caption","text","MESSAGE_TEXT"),r("noCaption","No caption","text","MESSAGE_TEXT"),r("nullSelectionAllowed","Allow null","bool","BOOL"),r("nullCaption","Null caption","text","MESSAGE_TEXT"),r("ignoreCase","Ignore case","bool","BOOL")),A(),E(),h()],[$(),O(),...L(),w()]),T("ColorField","Color Field",[f("ColorField"),A(),E(),h()],[$(),O(),w(),H(),...L()])],eo=[T("VerticalLayout","Vertical Layout",[f("Vertical Layout",r("margin","Margin","bool","BOOL"),r("spacing","Spacing","bool","BOOL"),r("enableChildDragAndDrop","Enable DnD","bool","BOOL"),r("dragAndDropPositionMarkSize","DnD mark size","int","INTEGER")),E(),h(),Me(),Ye()],[ae(),Be(),je(),q(),...ie(),...le(),O(),H(),B("shadow","Shadow")]),T("HorizontalLayout","Horizontal Layout",[f("Horizontal Layout",r("margin","Margin","bool","BOOL"),r("spacing","Spacing","bool","BOOL"),r("enableChildDragAndDrop","Enable DnD","bool","BOOL"),r("dragAndDropPositionMarkSize","DnD mark size","int","INTEGER")),E(),h(),Me(),Ye()],[ae(),Be(),je(),q(),...ie(),...le(),O(),H(),B("shadow","Shadow")]),T("FormLayout","Form Layout",[f("Form Layout",r("columnCount","Column count","int","INTEGER")),E(),h(),Me(),Ae("Layout",r("colspan","Column Span","int","INTEGER"),r("takeOneRow","Merge Row","bool","BOOL"),r("hideCaptionCell","Hide Caption","bool","BOOL"),r("formCaption","Form Caption","text","MESSAGE_TEXT"),r("delegateDescription","Delegate Desc.","bool","BOOL"))],[Nt(),w(),...le(),B("exclude-adjust-caption-width","Exclude Adjust Caption Width"),B("gray-caption","Gray Caption"),B("fixed-column-height","Fixed Column Height"),B("shadow","Shadow"),H(),$()]),T("CardLayout","Card Layout",[f("Card Layout",r("margin","Margin","bool","BOOL"),r("spacing","Spacing","bool","BOOL"),r("collapsible","Collapsible","bool","BOOL",void 0,v(!0)),r("collapsed","Collapsed","bool","BOOL")),E(),h(),Me(),Ye()],[ae(),Be(),Yn(),H(),B("dashboard-card","Dashboard Card")]),T("ActionLayout","Action Layout",[f("Action Layout",r("margin","Margin","bool","BOOL")),E(),h(),Ae("Layout",r("componentAlignment","Align","string","ALIGN"))],[B("top-action","Top Action"),ae(),q(),_t(),Pt(),xt(),Rt(),H()]),T("ActionLayoutArea","Action Layout Area",[Ae("Layout",r("componentAlignment","Align","string","ALIGN"))]),T("TableLayout","Table Layout",[f("Table Layout",r("rowCount","Row count","int","INTEGER"),r("colCount","Column count","int","INTEGER")),E(),h()],[B("grid","Grid style"),w(),It(),At(),Mt(),Bt(),O(),H(),B("shadow","Shadow")]),T("TableLayoutCell","Table Layout Cell",[f("Table Layout Cell",r("cellId","Cell ID","string","TEXT"),r("contentMode","Content mode","string","SELECT","TEXT:Text; HTML:Html"),r("caption","Text","text","MESSAGE_TEXTAREA"),r("addStyleNames","Style","string","ADD_STYLE"),r("mergeSameValueVertical","Merge Vertical","bool","BOOL"),r("clickable","Clickable","bool","BOOL")),h()],[B("header","Header"),K(),Vn(),_e(),ze(),w(),...le(),H()]),T("FlowLayout","Flow Layout",[f("Flow Layout",r("margin","Margin","bool","BOOL"),r("spacing","Spacing","bool","BOOL")),E(),h()],[q(),...ie(),H(),B("shadow","Shadow")]),T("ExpansionLayout","Expansion Layout",[f("Expansion Layout",r("collapsed","Collapsed","bool","BOOL"),r("bodyVisible","Body Visible","bool","BOOL")),E(),h()],[w(),...le(),H(),B("shadow","Shadow")]),T("InternalLayoutArea","",[])],to=[T("ListField","List Field",[f("List Field",r("listFieldDef","ListField Definition","string","BUTTON"),r("margin","Margin","bool","BOOL"),r("spacing","Spacing","bool","BOOL"),r("useCheckbox","Checkbox","bool","BOOL",void 0,v(!0)),r("multiSelect","Multi Select","bool","BOOL",void 0,v(!0)),r("showEmptyMsg","Show Empty Msg","bool","BOOL",void 0,v(!0))),f("Field",r("propertyId","Property ID","string","TEXT"),r("dataMapping","Data Mapping","dataMapping","DATAMAPPING"),r("validate","Validation","validator","TEXT_WITH_BUTTON")),E(),h()],[ae(),Be(),O(),...L(),w(),...le(),Nt()]),T("ListControl","List Control",[f("List Control",r("listField","ListField ID","string","COMPONENT_REF","ListField"),r("useAddRowButton","Add Row","bool","BOOL"),r("useRemoveRowButton","Remove Row","bool","BOOL"),r("useExpandAllButton","Expand All","bool","BOOL"),r("useTotalCount","Total Count","bool","BOOL"),r("useSelectedCount","Selected Count","bool","BOOL")),E()])],se=()=>[r("langPropertyId","Lang property","string","TEXT"),r("langDataMapping","Lang Data Mapping","dataMapping","DATAMAPPING"),r("textPropertyId","Text property","string","TEXT"),r("textDataMapping","Text Data Mapping","dataMapping","DATAMAPPING")],ce=(e="Item Class")=>[r("itemClass",e,"string","TEXT_WITH_BUTTON"),r("expandFields","Expand","bool","BOOL"),r("popupMode","Popup Mode","bool","BOOL")],no=[T("MultiLangTextField","Multi Lang TextField",[f("MultiLangTextField",...se(),r("placeholder","Placeholder","text","MESSAGE_TEXT"),...ce()),A(),E(),h()]),T("MultiLangTextArea","Multi Lang TextArea",[f("MultiLangTextArea",...se(),r("placeholder","Placeholder","text","MESSAGE_TEXT"),...ce()),A(),E(),h()]),T("MultiLangStyledTextField","Multi Lang StyledTextField",[f("MultiLangStyledTextField",...se(),...ce()),A(),E(),h()]),T("MultiLangRichTextArea","Multi Lang RichTextArea",[f("MultiLangRichTextArea",...se(),...ce()),A(),E(),h()]),T("MultiLangPageBuilder","Multi Lang PageBuilder",[f("MultiLangPageBuilder",r("subFolder","Image sub folder","string","TEXT"),...se(),...ce()),A(),E(),h()]),T("MultiLangContentEditor","Multi Lang ContentEditor",[f("MultiLangContentEditor",...se(),...ce()),A(),E(),h()]),T("MultiLangFileUpload","Multi Lang FileUpload",[f("MultiLangFileUpload",...se(),...ce("Item type")),f("FileUpload",r("maxSize","Max size","int","INTEGER"),r("fileType","File type","string","SELECT","ALL:All;IMAGE:Image;"),r("fileExtString","File exts","string","TEXT"),r("thumbnailWidth","Thumbnail Width","string","TEXT"),r("thumbnailHeight","Thumbnail Height","string","TEXT")),A(),E(),h()])],oo=[T("Tree","Tree",[f("Tree",r("nullSelectionAllowed","Allow null","bool","BOOL",void 0,v(!0))),E(),h()],[q(),je(),O(),...L()]),T("TreeControl","TreeControl",[f("TreeControl",r("tree","Tree ID","string","COMPONENT_REF","Tree"),r("useAddButton","Add","bool","BOOL"),r("useRemoveButton","Remove","bool","BOOL"),r("useExpandButton","Expand","bool","BOOL"),r("useMoveUpButton","Move Up","bool","BOOL"),r("useMoveDownButton","Move Down","bool","BOOL"),r("useSaveOrderButton","Save order","bool","BOOL")),E(),h()]),T("TabSheet","Tab Sheet",[E(),h()]),T("TabSheetPanel","Tab Sheet Panel",[])],Gt=[...eo,...Wn,...Qn,...Kn,...no,...Zn,...oo,...Jn,...to,...jn,...qn],ro={VerticalLayout:{role:"open"},HorizontalLayout:{role:"open"},CardLayout:{role:"open"},FormLayout:{role:"open"},FlowLayout:{role:"open"},ActionLayoutArea:{role:"open"},InternalLayoutArea:{role:"open",arity:{max:1}},TableLayoutCell:{role:"open",arity:{max:1}},TabSheetPanel:{role:"open",arity:{max:1}},GridCellPanel:{role:"open",arity:{max:1}},ListField:{role:"open",arity:{max:1}},ActionLayout:{role:"fixed",fixedChildren:["ActionLayoutArea"],arity:{min:2,max:2}},ExpansionLayout:{role:"fixed",fixedChildren:["InternalLayoutArea"],arity:{min:2,max:2}},TableLayout:{role:"fixed",fixedChildren:["TableLayoutCell"]},PopupButton:{role:"fixed",fixedChildren:["VerticalLayout"],arity:{min:1,max:1}},AuditInfoButton:{role:"fixed",fixedChildren:["VerticalLayout"],arity:{min:1,max:1}},Grid:{role:"fixed",fixedChildren:["ColumnDef"]},TabSheet:{role:"fixed",fixedChildren:["TabSheetPanel"]},Button:{role:"leaf"},Label:{role:"leaf"},Image:{role:"leaf"},Link:{role:"leaf"},LinkTab:{role:"leaf"},ProgressBar:{role:"leaf"},Console:{role:"leaf"},NativeUpload:{role:"leaf"},AuditInfo:{role:"leaf"},TextField:{role:"leaf"},TextArea:{role:"leaf"},StyledTextField:{role:"leaf"},RichTextArea:{role:"leaf"},TelField:{role:"leaf"},NumberField:{role:"leaf"},CurrencyField:{role:"leaf"},DateField:{role:"leaf"},TimeField:{role:"leaf"},DateRange:{role:"leaf"},CheckBox:{role:"leaf"},RadioButton:{role:"leaf"},RadioGroup:{role:"leaf"},CheckBoxGroup:{role:"leaf"},YesNoGroup:{role:"leaf"},Select:{role:"leaf"},MultiSelect:{role:"leaf"},CategorySelect:{role:"leaf"},PopupSelect:{role:"leaf"},YesNoSelect:{role:"leaf"},ColorField:{role:"leaf"},MultiFileUpload:{role:"leaf"},SingleFileUpload:{role:"leaf"},SingleImageUpload:{role:"leaf"},NameField:{role:"leaf"},AddressField:{role:"leaf"},PageBuilder:{role:"leaf"},ContentEditor:{role:"leaf"},MultiLangTextField:{role:"leaf"},MultiLangTextArea:{role:"leaf"},MultiLangStyledTextField:{role:"leaf"},MultiLangRichTextArea:{role:"leaf"},MultiLangPageBuilder:{role:"leaf"},MultiLangContentEditor:{role:"leaf"},MultiLangFileUpload:{role:"leaf"},ColumnDef:{role:"leaf"},GridControl:{role:"leaf"},GridLookup:{role:"leaf"},Tree:{role:"leaf"},TreeControl:{role:"leaf"},TextFilter:{role:"leaf"},NumberFilter:{role:"leaf"},SelectFilter:{role:"leaf"},MultiSelectFilter:{role:"leaf"},PopupSelectFilter:{role:"leaf"},CategorySelectFilter:{role:"leaf"},YesNoSelectFilter:{role:"leaf"},ListControl:{role:"leaf"},FlagCard:{role:"leaf"},Chart:{role:"leaf"},PageRefreshButton:{role:"leaf"},MultiLangExpandButton:{role:"leaf"},Fragment:{role:"leaf"},CommentList:{role:"leaf"},SourceCodeEditor:{role:"leaf"},MarkdownViewer:{role:"leaf"},History:{role:"leaf"}},Xt={Label:"value"};function $t(e){const t=e.category??(Oe(e.partType)?ve[e.partType]:void 0);let o=e.captionProp;o==null&&(Xt[e.partType]!=null?o=Xt[e.partType]:e.groups.some(a=>a.items.some(s=>s.id==="caption"))&&(o="caption"));const n=e.containment??(Oe(e.partType)?ro[e.partType]:void 0),i={...e,groups:e.groups};return t!=null&&(i.category=t),o!=null&&(i.captionProp=o),n!=null&&(i.containment=n),i}function ao(e,t){var o,n,i,a;if(e==null)return"warn";switch(e.role){case"leaf":return"deny";case"fixed":return(o=e.fixedChildren)!=null&&o.includes(t)?"allow":"deny";case"open":{if((n=e.deny)!=null&&n.includes(t))return"deny";if(!(e.allow!=null&&e.allow.length>0||e.allowCategories!=null&&e.allowCategories.length>0)||(i=e.allow)!=null&&i.includes(t))return"allow";const c=Oe(t)?ve[t]:void 0;return c!=null&&((a=e.allowCategories)!=null&&a.includes(c))?"allow":"deny"}}}function Ut(e){const t=new Map;for(const n of e)t.set(n.partType,$t(n));const o=[...t.keys()];return{get:n=>t.get(n),all:()=>o.map(n=>t.get(n)),propertyItem:(n,i)=>{const a=t.get(n);if(a)for(const s of a.groups){const c=s.items.find(d=>d.id===i);if(c)return c}},canContain:(n,i)=>{var a;return ao((a=t.get(n))==null?void 0:a.containment,i)}}}function Ht(e=Gt){return Ut(e)}function io(e,t={}){const o=new Map;for(const n of e.all())o.set(n.partType,n);for(const n of[...t.add??[],...t.override??[]])o.set(n.partType,$t(n));for(const n of t.remove??[])o.delete(n);return Ut([...o.values()])}const lo={TEXT:"text",TEXTAREA:"text",FULL_TEXTAREA:"text",ICON:"text",MESSAGE_TEXT:"multilang",MESSAGE_TEXTAREA:"multilang",INTEGER:"int",BOOL:"bool",SELECT:"enum",SIZE:"enum",TAGS:"tags"};function so(e){return e?e.split(";").map(t=>t.trim()).filter(t=>t.length>0).map(t=>{const o=t.indexOf(":");return o<0?{value:t,label:t}:{value:t.slice(0,o).trim(),label:t.slice(o+1).trim()}}):[]}function co(e){return e?e.split(",").map(t=>t.trim()).filter(t=>t.length>0).map(t=>({value:t,label:t})):[]}function uo(e){var t;return((t=e.agent)==null?void 0:t.expose)??kt[e.editor]}function po(e){var n,i,a;const t=lo[e.editor]??"text",o={id:e.id,valueType:e.valueType,kind:t};if((n=e.agent)!=null&&n.description&&(o.description=e.agent.description),t==="enum"){const s=((a=(i=e.agent)==null?void 0:i.enum)==null?void 0:a.map(c=>({value:c,label:c})))??so(e.param);s.length>0&&(o.options=s)}else if(t==="tags"){const s=co(e.param);s.length>0&&(o.options=s)}return o}function fo(e){const t=[],o=[];for(const n of e??[])if(n.kind==="toggle")o.push({css:n.css,label:n.label});else{const i=He(n.dim),a=n.only?i.filter(s=>n.only.includes(s)):i;t.push({dim:n.dim,tokens:a})}return{dims:t,toggles:o}}function go(e){const t=[];let o=!1;for(const s of e.groups)for(const c of s.items)if(c.editor!=="ADD_STYLE"){if(c.editor==="ALIGN"){o=!0;continue}uo(c)&&t.push(po(c))}const{dims:n,toggles:i}=fo(e.styles),a={partType:e.partType,attrs:t,styleDims:n,styleToggles:i};return e.category!=null&&(a.category=e.category),e.captionProp!=null&&(a.captionProp=e.captionProp),o&&(a.slotAlign=He("slotAlign")),a}function Vt(e){const t=new Map,o=[];for(const n of e.all())t.set(n.partType,go(n)),o.push(n.partType);return{get:n=>t.get(n),all:()=>o.map(n=>t.get(n))}}const Yt=["part.add","part.update","part.remove"],qe=4,To={type:"object",description:"요소 지정 핸들. id(파트 UUID) 우선, path(예: FormLayout[0]/TextField[2]) 보조, caption(사람 라벨) 최후. 모호하면 서버가 후보를 돌려주니 describeScreen으로 먼저 읽어 핸들을 확정하라.",properties:{ref:{type:"string",description:"매칭할 id/경로/캡션 문자열."},by:{type:"string",enum:["id","path","caption"],description:"매칭 축 고정(미지정 시 id→path→caption 순)."}},required:["ref"],additionalProperties:!1},mo={type:"object",description:'locale→text 맵(예: {ko:"주문", en:"Order"}).',properties:{ko:{type:"string"},en:{type:"string"},ja:{type:"string"},zh:{type:"string"}},additionalProperties:!1},Eo={type:"object",description:"메시지 카탈로그 키 참조(레거시 #{key}). 런타임에 key 조회.",properties:{key:{type:"string"},locale:{type:"string"}},required:["key"],additionalProperties:!1},ho={description:"다국어 텍스트: 평문 문자열 | locale 맵 | 메시지 키 참조.",anyOf:[{type:"string"},{$ref:"#/$defs/multiLangString"},{$ref:"#/$defs/multiLangMessage"}]},yo={description:"kind로 판별되는 타입드 값.",anyOf:[{type:"object",properties:{kind:{const:"string"},value:{type:"string"}},required:["kind","value"],additionalProperties:!1},{type:"object",properties:{kind:{const:"int"},value:{type:"integer"}},required:["kind","value"],additionalProperties:!1},{type:"object",properties:{kind:{const:"bool"},value:{type:"boolean"}},required:["kind","value"],additionalProperties:!1},{type:"object",properties:{kind:{const:"text"},value:{$ref:"#/$defs/multiLang"}},required:["kind","value"],additionalProperties:!1},{type:"object",description:"SELECT/SIZE 등 저장값 직접 방출(라벨 아님 — toAgentCatalog options의 value).",properties:{kind:{const:"enum"},value:{type:"string"}},required:["kind","value"],additionalProperties:!1}]},So={type:"object",description:"한 속성 지정. id는 카탈로그 PropertyItem.id(agent 노출 항목).",properties:{id:{type:"string"},value:{$ref:"#/$defs/propValue"}},required:["id","value"],additionalProperties:!1},bo={type:"object",description:"중립 의미 토큰(G1). resolver가 token→css(.bs-*)로 lowering — 원시 CSS 방출 금지.",properties:{dim:{type:"string",description:"스타일 차원(예: bgColor·size)."},token:{type:"string",description:"의미 토큰(예: blue·lg)."}},required:["dim","token"],additionalProperties:!1};function ko(e){const t={partType:{type:"string",description:"파트 종류(예: FormLayout·Grid·TextField)."},props:{type:"array",description:"타입드 속성(순서 무관).",items:{$ref:"#/$defs/propAssign"}},styles:{type:"array",description:"중립 스타일 토큰(G1 — slotAlign 포함, dim의 source가 하강 타깃 결정).",items:{$ref:"#/$defs/styleAssign"}}};return e<qe&&(t.children={type:"array",description:`inline-fold 자식 서브트리(깊이 ${e+1}). 더 깊은 중첩은 별도 part.add 배치로.`,items:{$ref:`#/$defs/partSpecL${e+1}`}}),{type:"object",description:e===0?"추가할 파트(및 inline-fold 자식). 신규 서브트리 자식은 별도 op가 아니라 여기 children에 담아라.":`깊이 ${e}의 inline-fold 자식 스펙.`,properties:t,required:["partType"],additionalProperties:!1}}function Co(){const e={};for(let t=0;t<=qe;t++)e[`partSpecL${t}`]=ko(t);return e}function Je(e,t){return{type:"object",properties:{kind:{const:e},...t.properties},required:["kind",...t.required],additionalProperties:!1}}const Oo={"part.add":Je("part.add",{properties:{parent:{description:"추가 대상 부모 핸들. null이면 루트에 추가.",anyOf:[{$ref:"#/$defs/handle"},{type:"null"}]},spec:{$ref:"#/$defs/partSpecL0"},index:{type:"integer",description:"부모 children 내 삽입 위치(미지정 시 말미)."}},required:["parent","spec"]}),"part.update":Je("part.update",{properties:{target:{$ref:"#/$defs/handle"},props:{type:"array",items:{$ref:"#/$defs/propAssign"},description:"갱신할 속성(부분)."},styles:{type:"array",items:{$ref:"#/$defs/styleAssign"},description:"갱신할 스타일 토큰(부분)."}},required:["target"]}),"part.remove":Je("part.remove",{properties:{target:{$ref:"#/$defs/handle"}},required:["target"]})},zt={anyOf:Yt.map(e=>Oo[e])},Lo={type:"object",description:"화면 파트 트리를 생성·수정·삭제할 때 호출한다. ops는 사람 핸들(id·path·caption)로 지정하며 서버가 partId로 해소한다. 모호하면 에러로 후보를 돌려주니 describeScreen으로 현재 화면을 먼저 읽어 핸들을 확정하라.",properties:{ops:{type:"array",items:{$ref:"#/$defs/symbolicOp"}}},required:["ops"],additionalProperties:!1,$defs:{handle:To,multiLang:ho,multiLangString:mo,multiLangMessage:Eo,propValue:yo,propAssign:So,styleAssign:bo,...Co(),symbolicOp:zt}},Io=new Set(["minimum","maximum","exclusiveMinimum","exclusiveMaximum","multipleOf","minLength","maxLength","pattern","minItems","maxItems","uniqueItems","contains","minContains","maxContains","minProperties","maxProperties","oneOf","not","if","then","else","patternProperties","propertyNames","dependentSchemas","dependentRequired"]);function de(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ao(e){return e.type==="object"||"properties"in e}function te(e,t,o,n){if(Array.isArray(e)){e.forEach((i,a)=>te(i,`${t}[${a}]`,!1,n));return}if(de(e)){!o&&("$defs"in e||"definitions"in e)&&n.push({rule:"nested-$defs",path:t,detail:"$defs는 최상위에만 허용된다."});for(const i of Object.keys(e))Io.has(i)&&n.push({rule:"unsupported-keyword",path:`${t}.${i}`,detail:`미지원 키워드 '${i}'.`});if(Ao(e)&&e.additionalProperties!==!1&&n.push({rule:"missing-additional-properties-false",path:t,detail:"object 스키마는 additionalProperties:false 이어야 한다."}),de(e.properties))for(const[i,a]of Object.entries(e.properties))te(a,`${t}.properties.${i}`,!1,n);if(te(e.items,`${t}.items`,!1,n),te(e.anyOf,`${t}.anyOf`,!1,n),te(e.allOf,`${t}.allOf`,!1,n),de(e.additionalProperties)&&te(e.additionalProperties,`${t}.additionalProperties`,!1,n),o&&de(e.$defs))for(const[i,a]of Object.entries(e.$defs))te(a,`$defs.${i}`,!1,n)}}const Mo=/^#\/\$defs\/(.+)$/;function Pe(e,t,o,n){if(Array.isArray(e)){e.forEach(i=>Pe(i,t,o,n));return}if(de(e)){for(const[i,a]of Object.entries(e))if(i!=="$defs")if(i==="$ref"&&typeof a=="string")if(a==="#"||a==="#/")o.add("#");else{const s=Mo.exec(a);s&&(t.has(s[1])?o.add(s[1]):n.push(a))}else Pe(a,t,o,n)}}function Bo(e,t){const o=de(e.$defs)?e.$defs:{},n=new Set(Object.keys(o)),i=[],a=new Map,s=new Set;Pe({...e,$defs:void 0},n,s,i),a.set("#",s);for(const S of n){const k=new Set;Pe(o[S],n,k,i),a.set(S,k)}for(const S of i)t.push({rule:"dangling-$ref",path:S,detail:`존재하지 않는 $defs 참조: ${S}.`});const c=0,d=1,u=2,g=new Map;for(const S of a.keys())g.set(S,c);const m=new Set,y=(S,k)=>{g.set(S,d),k.push(S);for(const x of a.get(S)??[])if(a.has(x))if(g.get(x)===d){const U=k.indexOf(x),b=k.slice(U).concat(x),C=b.join("->");m.has(C)||(m.add(C),t.push({rule:"recursion",path:b.join(" -> "),detail:`재귀 스키마($ref 사이클)는 엄격 서브셋 미지원: ${b.join(" -> ")}.`}))}else g.get(x)===c&&y(x,k);k.pop(),g.set(S,u)};for(const S of a.keys())g.get(S)===c&&y(S,[])}function Wt(e){const t=[];return te(e,"",!0,t),de(e)&&Bo(e,t),t}function _o(e){return Wt(e).length===0}const Po=/^(.+)\[(\d+)\]$/;function Ze(e,t){const o=Ge(e,t);if(!o)return;const n=[];for(let i=1;i<o.length;i++){const a=o[i-1],s=o[i],c=(a.children??[]).filter(d=>d.partType===s.partType);n.push(`${s.partType}[${c.indexOf(s)}]`)}return n.join("/")}function ge(e,t){var i;if(!t)return;const o=(i=t.get(e.partType))==null?void 0:i.captionProp;if(!o)return;const n=e.attrs[o];if(n&&(n.kind==="string"||n.kind==="text"&&typeof n.value=="string"))return n.value}function xo(e,t,o){const n={partId:o.partId,path:Ze(e,o.partId)??""},i=ge(o,t);return i!=null&&(n.caption=i),n}function Ro(e,t){let o;return W(e,n=>{n.partId===t&&(o=n.partId)}),o}function No(e,t){let o=e;for(const n of t.split("/")){const i=Po.exec(n.trim());if(!i||!o)return;const[,a,s]=i;if(o=(o.children??[]).filter(d=>d.partType===a)[Number(s)],!o)return}return o===e||o==null?void 0:o.partId}function vo(e,t,o){const n=[];return W(e,i=>{ge(i,t)===o&&n.push(i)}),n}function xe(e,t){const o=t.root;if(!o)return{ok:!1,issue:{kind:"handle-not-found",ref:e.ref,by:e.by}};const n=()=>Ro(o,e.ref),i=()=>No(o,e.ref),a=()=>{const c=vo(o,t.catalog,e.ref);if(c.length===1)return{ok:!0,partId:c[0].partId};if(c.length>1)return{ok:!1,issue:{kind:"handle-ambiguous",ref:e.ref,candidates:c.map(d=>xo(o,t.catalog,d))}}};if(e.by==="id"){const c=n();return c?{ok:!0,partId:c}:{ok:!1,issue:{kind:"handle-not-found",ref:e.ref,by:"id"}}}if(e.by==="path"){const c=i();return c?{ok:!0,partId:c}:{ok:!1,issue:{kind:"handle-not-found",ref:e.ref,by:"path"}}}if(e.by==="caption")return a()??{ok:!1,issue:{kind:"handle-not-found",ref:e.ref,by:"caption"}};const s=n()??i();return s?{ok:!0,partId:s}:a()??{ok:!1,issue:{kind:"handle-not-found",ref:e.ref}}}function Do(e){switch(e.kind){case"string":return V(e.value);case"int":return De(e.value);case"bool":return v(e.value);case"text":return we(e.value);case"enum":return V(e.value)}}function jt(e,t,o){const n={},i={};for(const s of e??[])n[s.id]=Do(s.value);const a=[];for(const s of t??[]){const c=$e[s.dim];if(!c){o.push({kind:"unknown-style-dim",dim:s.dim});continue}const d=Tt(s.dim,s.token);if(d===void 0){o.push({kind:"unknown-style-token",dim:s.dim,token:s.token});continue}d!==""&&(c.source==="style"?a.push(d):i[c.legacyDimId]=V(d))}return a.length>0&&(n.addStyleNames=V(a.join(" "))),{attrs:n,layoutAttrs:i}}function Kt(e,t,o){const{attrs:n,layoutAttrs:i}=jt(e.props,e.styles,o),a={partId:t(),partType:e.partType,attrs:n};return Object.keys(i).length>0&&(a.layoutAttrs=i),e.children&&e.children.length>0&&(a.children=e.children.map(s=>Kt(s,t,o))),a}function wo(e,t={}){const o=t.newId??ue,n=[],i=[];for(const a of e)if(a.kind==="part.add"){let s=null;if(a.parent!==null){const u=xe(a.parent,t);if(!u.ok){n.push(u.issue);continue}s=u.partId}const c=Kt(a.spec,o,n),d={kind:"part.add",parentId:s,part:c};a.index!=null&&(d.index=a.index),i.push(d)}else if(a.kind==="part.update"){const s=xe(a.target,t);if(!s.ok){n.push(s.issue);continue}const{attrs:c,layoutAttrs:d}=jt(a.props,a.styles,n);i.push({kind:"part.update",targetId:s.partId,attrs:c,layoutAttrs:d})}else{const s=xe(a.target,t);if(!s.ok){n.push(s.issue);continue}i.push({kind:"part.remove",targetId:s.partId})}return{ops:i,issues:n}}const Fo=Object.keys({"part.add":!0,"part.update":!0,"part.move":!0,"part.remove":!0});function Qe(e){switch(e.kind){case"part.add":case"part.remove":return e.parentRef?[e.parentRef]:[];case"part.update":return e.partRef?[e.partRef]:[];case"part.move":{const t=new Set;return e.fromParentRef&&t.add(e.fromParentRef),e.toParentRef&&t.add(e.toParentRef),[...t]}}}class et{constructor(t){G(this,"undoStack",[]);G(this,"redoStack",[]);G(this,"savePoint",null);G(this,"listeners",new Set);G(this,"commandListeners",new Set);G(this,"coalesceSealed",!1);this.state=t}execute(t){t.apply(this.state);const o=this.undoStack.at(-1),n=!this.coalesceSealed&&t.coalesceKey!=null&&!!o&&o.coalesceKey===t.coalesceKey;this.coalesceSealed=!1,n?(t.invert=o.invert,this.undoStack[this.undoStack.length-1]=t):this.undoStack.push(t),this.redoStack=[],this.emitCommand(t,"do",n),this.emit()}undo(){const t=this.undoStack.pop();t&&(t.invert(this.state),this.redoStack.push(t),this.emitCommand(t,"undo",!1),this.emit())}redo(){const t=this.redoStack.pop();t&&(t.apply(this.state),this.undoStack.push(t),this.emitCommand(t,"redo",!1),this.emit())}sealCoalesce(){this.coalesceSealed=!0}get canUndo(){return this.undoStack.length>0}get canRedo(){return this.redoStack.length>0}markSavePoint(){this.savePoint=this.undoStack.at(-1)??null,this.emit()}get isDirty(){return(this.undoStack.at(-1)??null)!==this.savePoint}onChange(t){return this.listeners.add(t),()=>this.listeners.delete(t)}onCommand(t){return this.commandListeners.add(t),()=>this.commandListeners.delete(t)}emit(){for(const t of this.listeners)t()}emitCommand(t,o,n){for(const i of this.commandListeners)i(t,o,n)}}function Te(e,t){const o=z(e.root,t);if(!o)throw new Error(`파트 없음: ${t}`);return o}function tt(e,t){var i;const o=he(e.root,t),n=((i=o==null?void 0:o.children)==null?void 0:i.findIndex(a=>a.partId===t))??-1;if(!o||n<0)throw new Error(`파트를 찾을 수 없거나 root라 이동/삭제 불가: ${t}`);return{parent:o,index:n}}function qt(e,t){return e==null?t:Math.max(0,Math.min(e,t))}function Jt(e,t,o){let n=-1;return{label:`파트 추가: ${t.partType}`,apply(i){const a=Te(i,e),s=a.children??(a.children=[]);n=qt(o,s.length),s.splice(n,0,t)},invert(i){var c;const a=z(i.root,e),s=((c=a==null?void 0:a.children)==null?void 0:c.findIndex(d=>d.partId===t.partId))??-1;s>=0&&a.children.splice(s,1)},emitOps(){return{forward:[{kind:"part.add",casUnit:"part",parentRef:e,index:n,value:t}],invert:[{kind:"part.remove",casUnit:"part",partRef:t.partId,parentRef:e}]}}}}function Zt(e,t){const o=Object.keys(t),n={},i={};return{label:"파트 수정",apply(a){const s=Te(a,e);for(const c of o)i[c]=c in s,n[c]=s[c];Object.assign(s,t)},invert(a){const s=Te(a,e);for(const c of o)i[c]?s[c]=n[c]:delete s[c]},emitOps(){return{forward:[{kind:"part.update",casUnit:"part",partRef:e,patch:{...t}}],invert:[{kind:"part.update",casUnit:"part",partRef:e,patch:{...n}}]}}}}function Qt(e,t,o){let n=null;return{label:"파트 이동",coalesceKey:`move:${e}`,apply(i){const a=tt(i,e),s=a.parent.children[a.index];a.parent.children.splice(a.index,1);const c=Te(i,t),d=c.children??(c.children=[]),u=qt(o,d.length);d.splice(u,0,s),n={fromParentId:a.parent.partId,fromIndex:a.index,node:s,toIndex:u}},invert(i){if(!n)return;const a=tt(i,e);a.parent.children.splice(a.index,1);const s=Te(i,n.fromParentId);(s.children??(s.children=[])).splice(n.fromIndex,0,n.node)},emitOps(){return n?{forward:[{kind:"part.move",casUnit:"part",partRef:e,fromParentRef:n.fromParentId,toParentRef:t,index:n.toIndex}],invert:[{kind:"part.move",casUnit:"part",partRef:e,fromParentRef:t,toParentRef:n.fromParentId,index:n.fromIndex}]}:{forward:[],invert:[]}}}}function en(e){let t=null;return{label:"파트 삭제",apply(o){const n=tt(o,e);t={parentId:n.parent.partId,index:n.index,node:n.parent.children[n.index]},n.parent.children.splice(n.index,1)},invert(o){if(!t)return;const n=Te(o,t.parentId);(n.children??(n.children=[])).splice(t.index,0,t.node)},emitOps(){return t?{forward:[{kind:"part.remove",casUnit:"part",partRef:e,parentRef:t.parentId}],invert:[{kind:"part.add",casUnit:"part",parentRef:t.parentId,index:t.index,value:t.node}]}:{forward:[],invert:[]}}}}class tn{constructor(){G(this,"revs",new Map)}seed(t){this.revs.clear();for(const[o,n]of Object.entries(t.revs??{}))this.revs.set(o,n)}rev(t){return this.revs.get(t)??0}setRev(t,o){this.revs.set(t,o)}deleteRev(t){this.revs.delete(t)}snapshot(){return{revs:Object.fromEntries(this.revs)}}}class nn{constructor(t){G(this,"cache",new tn);G(this,"newClientOpId");G(this,"debounceMs");G(this,"emissions",new WeakMap);G(this,"open",null);G(this,"debounceHandle",null);G(this,"queue",[]);G(this,"sending",!1);G(this,"_frozen",!1);G(this,"stack",null);G(this,"settledWaiters",[]);this.opts=t,this.newClientOpId=t.newClientOpId??ue,this.debounceMs=t.debounceMs??300}seed(t){this.cache.seed(t)}attach(t){this.stack=t;const o=t.onCommand((n,i,a)=>this.handle(n,i,a));return()=>{o(),this.stack===t&&(this.stack=null)}}get frozen(){return this._frozen}get hasPending(){return this.open!==null||this.queue.length>0||this.sending}cacheSnapshot(){return this.cache.snapshot()}flush(){this.flushOpen(!0)}whenSettled(){return this.hasPending?new Promise(t=>this.settledWaiters.push(t)):Promise.resolve()}handle(t,o,n){var s;if(this._frozen)return;let i;if(o==="do"){const c=(s=t.emitOps)==null?void 0:s.call(t,this.opts.state);if(!c)throw new Error(`op-mode에서 emitOps 미구현 command 실행: ${t.label}`);i=c}else{const c=this.emissions.get(t);if(!c)throw new Error(`op-mode ${o} 대상 command의 emission 미기록: ${t.label}`);i=c}const a=o==="undo"?i.invert:i.forward;if(o==="do"&&n&&this.open&&this.open.coalesceKey===t.coalesceKey){this.open.fwd=a,this.emissions.set(t,{forward:a,invert:this.open.inv}),this.resetDebounce();return}if(this.flushOpen(!1),o==="do"&&(this.emissions.set(t,i),t.coalesceKey!=null)){this.open={coalesceKey:t.coalesceKey,fwd:a,inv:i.invert},this.startDebounce();return}a.length&&this.enqueue(this.buildBatch(a,i,o))}flushOpen(t){var n;this.cancelDebounce();const o=this.open;this.open=null,o&&o.fwd.length&&this.enqueue(this.buildBatch(o.fwd,{forward:o.fwd,invert:o.inv},"do")),t&&((n=this.stack)==null||n.sealCoalesce())}startDebounce(){this.cancelDebounce(),this.debounceHandle=setTimeout(()=>{this.debounceHandle=null,this.flushOpen(!0)},this.debounceMs)}resetDebounce(){this.startDebounce()}cancelDebounce(){this.debounceHandle!=null&&(clearTimeout(this.debounceHandle),this.debounceHandle=null)}buildBatch(t,o,n){const i={},a=new Set;for(const c of t)for(const d of Qe(c))a.add(d);if(a.size){i.revs={};for(const c of a){const d=this.cache.rev(c);i.revs[c]=d,this.cache.setRev(c,d+1)}}const s=n==="undo"?o.forward:o.invert;for(const c of t)if(c.kind==="part.add"&&c.value)W(c.value,d=>this.cache.setRev(d.partId,0));else if(c.kind==="part.remove"&&c.partRef){const d=s.find(u=>{var g;return u.kind==="part.add"&&((g=u.value)==null?void 0:g.partId)===c.partRef});d!=null&&d.value?W(d.value,u=>this.cache.deleteRev(u.partId)):this.cache.deleteRev(c.partRef)}return{modelId:this.opts.modelId,ops:t,cas:i,origin:this.opts.origin??"gui",clientOpId:this.newClientOpId()}}enqueue(t){this.queue.push(t),this.pump()}async pump(){var n,i;if(this.sending||this._frozen)return;const t=this.queue.shift();if(!t){this.notifySettled();return}this.sending=!0;let o=null;try{o=await this.opts.transport(t)}catch(a){this.sending=!1,console.error("[op-sync] op 전송 실패 → 하드 프리즈(kind:missing):",a),(i=(n=this.opts).onError)==null||i.call(n,a),this.freeze({kind:"missing"});return}this.sending=!1,o.ok?(this.reconcile(o),this.pump()):this.freeze(o.conflict)}reconcile(t){if(!(this.queue.length>0))for(const[o,n]of Object.entries(t.revs))this.cache.setRev(o,n)}freeze(t){var o,n;this._frozen=!0,this.queue.length=0,this.open=null,this.cancelDebounce(),(n=(o=this.opts).onFreeze)==null||n.call(o,t),this.notifySettled()}notifySettled(){if(this.hasPending)return;const t=this.settledWaiters;this.settledWaiters=[];for(const o of t)o()}}function Go(e){switch(e.kind){case"string":return e.value;case"int":return e.value;case"bool":return e.value;case"text":return e.value;default:return}}function Xo(e){var i;const t={},o=e.attrs.addStyleNames;if((o==null?void 0:o.kind)==="string"&&o.value)for(const a of o.value.split(/\s+/).filter(Boolean)){const s=Ue(a);s&&(t[s.dim]=s.token)}const n=(i=e.layoutAttrs)==null?void 0:i.componentAlignment;if((n==null?void 0:n.kind)==="string"&&n.value){const a=mt("slotAlign",n.value);a&&(t.slotAlign=a)}return t}function on(e,t,o,n){var d;const i=((d=n.get(e.partType))==null?void 0:d.attrs)??[],a={};for(const u of i){const g=e.attrs[u.id];if(g===void 0)continue;const m=Go(g);m!==void 0&&(a[u.id]=m)}Object.assign(a,Xo(e));const s={id:e.partId,partType:e.partType,path:Ze(t,e.partId)??"",attrs:a,children:(e.children??[]).map(u=>on(u,t,o,n))},c=ge(e,o);return c!=null&&(s.caption=c),s}function $o(e,t){const o=Vt(t);return on(e,e,t,o)}function rn(e){switch(e.kind){case"part.add":{const t={kind:"part.add",casUnit:"part",value:e.part};return e.parentId!=null&&(t.parentRef=e.parentId),e.index!=null&&(t.index=e.index),t}case"part.update":{const t={};return Object.keys(e.attrs).length>0&&(t.attrs=e.attrs),Object.keys(e.layoutAttrs).length>0&&(t.layoutAttrs=e.layoutAttrs),{kind:"part.update",casUnit:"part",partRef:e.targetId,patch:t}}case"part.remove":return{kind:"part.remove",casUnit:"part",partRef:e.targetId}}}function Uo(e,t,o,n={}){const i=n.mkClientOpId??ue,a=o.map(rn),s=new Set;for(const d of a)for(const u of Qe(d))s.add(u);const c={};if(s.size>0){c.revs={};for(const d of s)c.revs[d]=t[d]??0}return{modelId:e,ops:a,cas:c,origin:n.origin??"agent",clientOpId:i()}}const ke=Symbol("uiEditorController");function an(e="FormLayout"){return{partId:ue(),partType:e,attrs:{},children:[]}}function Ho(e=an(),t={}){var Z,Ce;const o=t.catalog??Ht(),n=t.modelId??"ui-model",i=l.reactive({root:e});let a=new et(i);const s=l.ref(!1),c=l.ref(!1),d=l.ref(!1),u=l.ref(0),g=l.ref(((Z=t.meta)==null?void 0:Z.schemaVersion)??1),m=l.ref(((Ce=t.meta)==null?void 0:Ce.opWriteEnabled)??!1),y=l.computed(()=>g.value>=2&&m.value),S=l.ref(!(g.value>=2&&m.value===!1)),k=l.ref(null),x=l.ref(null),U=l.computed(()=>x.value?z(i.root,x.value)??null:null),b=l.ref(null);let C=0,N=t.meta;function X(){a.onChange(()=>{s.value=a.canUndo,c.value=a.canRedo,d.value=a.isDirty,u.value++})}X();let R=null,I=null;function F(){I==null||I(),I=null,R=null}function Ne(){if(F(),!y.value||!t.opTransport)return;const M=new nn({modelId:n,state:i,transport:t.opTransport,origin:"gui",newClientOpId:t.newClientOpId,onFreeze:P=>{S.value=!1,k.value=P},onError:t.onOpError});M.seed((N==null?void 0:N.revSeed)??{}),I=M.attach(a),R=M}Ne();const _=l.computed(()=>st(i.root,o)),oe=l.computed(()=>{const M=new Map;for(const P of _.value){if(!P.targetRef)continue;const Q=M.get(P.targetRef);Q?Q.push(P):M.set(P.targetRef,[P])}return M}),D=M=>{S.value&&a.execute(M)};function Y(M,P){const Q=z(i.root,M);return Q?o.canContain(Q.partType,P)!=="deny":!1}return{state:i,catalog:o,issues:_,issuesByRef:oe,canUndo:s,canRedo:c,dirty:d,revision:u,editable:S,setEditable(M){S.value=M?y.value||g.value<2:!1},schemaVersion:g,opWriteEnabled:m,opMode:y,opConflict:k,selection:x,selectedPart:U,select(M){x.value=M},focusRequest:b,requestFocus(M){b.value={id:M,nonce:++C}},addPart(M,P,Q){return!S.value||!Y(M,P.partType)?!1:(D(Jt(M,P,Q)),x.value=P.partId,!0)},updatePart(M,P){return!S.value||!z(i.root,M)?!1:(D(Zt(M,P)),!0)},movePart(M,P,Q){if(!S.value)return!1;const at=z(i.root,M);return!at||z(at,P)||!Y(P,at.partType)?!1:(D(Qt(M,P,Q)),!0)},removePart(M){return!S.value||M===i.root.partId||!z(i.root,M)?!1:(D(en(M)),x.value===M&&(x.value=null),!0)},undo(){S.value&&a.undo()},redo(){S.value&&a.redo()},markSaved(){R==null||R.flush(),a.markSavePoint()},loadModel(M,P){F(),i.root=M,a=new et(i),X(),g.value=(P==null?void 0:P.schemaVersion)??1,m.value=(P==null?void 0:P.opWriteEnabled)??!1,S.value=!(g.value>=2&&m.value===!1),N=P,k.value=null,x.value=null,s.value=a.canUndo,c.value=a.canRedo,d.value=a.isDirty,Ne()},flush(){R==null||R.flush()},whenOpsSettled(){return(R==null?void 0:R.whenSettled())??Promise.resolve()}}}const Vo={class:"ui-schematic-head"},Yo={class:"ui-schematic-type"},zo={key:0,class:"ui-schematic-caption"},Wo={key:0,class:"ui-schematic-drop-hint"},jo=l.defineComponent({__name:"SchematicPart",props:{partType:{},category:{},caption:{},partName:{},selected:{type:Boolean},container:{type:Boolean},empty:{type:Boolean},bodyStyle:{}},setup(e){return(t,o)=>(l.openBlock(),l.createElementBlock("div",{class:l.normalizeClass(["ui-schematic-part",[`ui-cat-${e.category??"unknown"}`,{"is-selected":e.selected,"is-container":e.container}]])},[l.createElementVNode("div",Vo,[l.createElementVNode("span",Yo,l.toDisplayString(e.partName??e.partType),1),e.caption?(l.openBlock(),l.createElementBlock("span",zo,l.toDisplayString(e.caption),1)):l.createCommentVNode("",!0)]),e.container?(l.openBlock(),l.createElementBlock("div",{key:0,class:"ui-schematic-body",style:l.normalizeStyle(e.bodyStyle)},[l.renderSlot(t.$slots,"default",{},void 0,!0),e.empty?(l.openBlock(),l.createElementBlock("span",Wo,"여기에 드롭")):l.createCommentVNode("",!0)],4)):l.createCommentVNode("",!0)],2))}}),ne=(e,t)=>{const o=e.__vccOpts||e;for(const[n,i]of t)o[n]=i;return o},nt=ne(jo,[["__scopeId","data-v-cc7b7e1c"]]);function ln(e,t){var s;const o=ge(e,t);if(o!=null)return o;const n=(s=t==null?void 0:t.get(e.partType))==null?void 0:s.captionProp;if(!n)return;const i=Fe(e.attrs[n]);if(i==null)return;if(typeof i=="string")return i||void 0;if(Le(i))return`#{${i.key}}`;const a=Object.values(i)[0];return typeof a=="string"&&a?a:void 0}function ot(e,t){const o=t.get(e.partType),n={partType:e.partType};(o==null?void 0:o.category)!=null&&(n.category=o.category),(o==null?void 0:o.partName)!=null&&(n.partName=o.partName);const i=ln(e,t);return i!=null&&(n.caption=i),n}function sn(e){var o;const t=new Map;for(const n of e.all()){const i=(o=n.containment)==null?void 0:o.role;t.set(n.partType,{component:nt,propBind:a=>ot(a,e),acceptsChildren:i!=="leaf"})}return t}function cn(e,t,o){const n=e.get(t.partType);return n||{component:nt,propBind:i=>ot(i,o),acceptsChildren:!0}}const Ko={CONTAIN:"담김",ARITY:"개수",DUP:"중복",ATTR:"속성",PART:"파트"};function qo(e){const t=e.split("-")[1];return t?Ko[t]??t:e}function Jo(e){return e.contextRef}function dn(e,t,o){if(o==="into")return{parentId:t};const n=he(e,t);if(!(n!=null&&n.children))return null;const i=n.children.findIndex(a=>a.partId===t);return i<0?null:{parentId:n.partId,index:o==="after"?i+1:i}}function Zo(e,t){const o=t.orientation==="horizontal"?e.x:e.y;return t.container?t.hasParent?o<.3?"before":o>.7?"after":"into":"into":o<.5?"before":"after"}function un(e,t,o,n){const i=he(e,t);if((i==null?void 0:i.partId)===o&&i.children){const a=i.children.findIndex(s=>s.partId===t);if(a>=0&&a<n)return n-1}return n}const Qo={VerticalLayout:"flex-col",HorizontalLayout:"flex-row",FormLayout:"form",FlowLayout:"flex-wrap",CardLayout:"card",ActionLayout:"action",ActionLayoutArea:"flex-row",TableLayout:"table",TableLayoutCell:"slot",ExpansionLayout:"expansion",InternalLayoutArea:"slot",TabSheet:"tabs",TabSheetPanel:"slot",Grid:"grid",PopupButton:"popup",AuditInfoButton:"stack",GridCellPanel:"slot",ListField:"slot"};function er(e){return Qo[e]??"stack"}function pn(e){switch(e){case"flex-row":case"flex-wrap":case"action":case"form":case"table":case"grid":return"horizontal";default:return"vertical"}}function tr(e){const t=fn(e);return t.kind==="grid"?{display:"flex",flexDirection:"row",flexWrap:"wrap",gap:"4px",alignItems:"flex-start"}:t.style}function fn(e){const t=er(e.partType),o=e.attrs,n=Ee(o.spacing,!1)?"8px":void 0,i=Ee(o.margin,!1)?"8px":void 0,a={};let s,c;switch(t){case"flex-col":Object.assign(a,{display:"flex",flexDirection:"column"}),n&&(a.gap=n);break;case"flex-row":Object.assign(a,{display:"flex",flexDirection:"row",alignItems:"center"}),n&&(a.gap=n);break;case"flex-wrap":Object.assign(a,{display:"flex",flexDirection:"row",flexWrap:"wrap",alignItems:"center"}),a.gap=n??"6px";break;case"action":Object.assign(a,{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center"}),a.gap=n??"8px";break;case"form":{s=Math.max(1,j(o.columnCount,1)),Object.assign(a,{display:"grid",gridTemplateColumns:`repeat(${s}, minmax(0, 1fr))`,gap:n??"8px",alignItems:"center"});break}case"table":{s=Math.max(1,j(o.colCount,1)),c=Math.max(1,j(o.rowCount,1)),Object.assign(a,{display:"grid",gridTemplateColumns:`repeat(${s}, minmax(0, 1fr))`,gap:n??"6px"});break}case"expansion":Object.assign(a,{display:"flex",flexDirection:"column"});break;case"stack":Object.assign(a,{display:"flex",flexDirection:"column"}),n&&(a.gap=n);break;case"slot":a.display="block";break}return i&&t!=="card"&&t!=="tabs"&&t!=="grid"&&t!=="popup"&&(a.padding=i),{kind:t,style:a,columns:s,rows:c}}const gn=new Set(["LEFT","CENTER","RIGHT"]),Tn=new Set(["TOP","MIDDLE","BOTTOM"]),Re={LEFT:"flex-start",CENTER:"center",RIGHT:"flex-end",TOP:"flex-start",MIDDLE:"center",BOTTOM:"flex-end"};function nr(e,t){const o={},n=e.layoutAttrs,i=j(n==null?void 0:n.expandRatio,0),a=me(n==null?void 0:n.componentAlignment).toUpperCase(),s=t==="flex-col",c=t==="flex-row"||t==="flex-wrap"||t==="action",d=t==="form"||t==="table";if(i>0&&(s||c)&&(o.flex=`${i} 1 0%`),a&&(s?gn.has(a)?o.alignSelf=Re[a]:a==="TOP"?o.marginBottom="auto":a==="BOTTOM"?o.marginTop="auto":a==="MIDDLE"&&(o.marginTop="auto",o.marginBottom="auto"):c?Tn.has(a)?o.alignSelf=Re[a]:a==="LEFT"?o.marginRight="auto":a==="RIGHT"?o.marginLeft="auto":a==="CENTER"&&(o.marginLeft="auto",o.marginRight="auto"):d&&(gn.has(a)?o.justifySelf=Re[a]:Tn.has(a)&&(o.alignSelf=Re[a]))),t==="form"){const u=j(n==null?void 0:n.colspan,0);if(Ee(n==null?void 0:n.takeOneRow,!1))o.gridColumn="1 / -1";else if((n==null?void 0:n.column)!==void 0){const g=j(n==null?void 0:n.column,0)+1;o.gridColumn=u>1?`${g} / span ${u}`:`${g} / span 1`}else u>1&&(o.gridColumn=`span ${u}`);(n==null?void 0:n.row)!==void 0&&(o.gridRowStart=String(j(n==null?void 0:n.row,0)+1))}return o}const or=["draggable"],rr=ne(l.defineComponent({__name:"PartCanvas",props:{node:{},registry:{},parentId:{},index:{},parentKind:{}},setup(e){const t=e,o=l.inject(ke);if(!o)throw new Error("PartCanvas: EDITOR 컨트롤러가 provide되지 않았습니다");const n=o,i=l.computed(()=>t.registry??sn(n.catalog)),a=l.computed(()=>t.node??n.state.root),s=l.computed(()=>cn(i.value,a.value,n.catalog)),c=l.computed(()=>s.value.propBind(a.value)),d=l.computed(()=>s.value.acceptsChildren!==!1),u=l.computed(()=>n.selection.value===a.value.partId),g=l.computed(()=>d.value&&!(a.value.children&&a.value.children.length)),m=l.computed(()=>t.parentId!=null),y=l.computed(()=>d.value?fn(a.value):void 0),S=l.computed(()=>{var _;return(_=y.value)==null?void 0:_.kind}),k=l.computed(()=>d.value?tr(a.value):void 0),x=l.computed(()=>t.parentKind?nr(a.value,t.parentKind):{}),U=l.computed(()=>pn(t.parentKind)==="horizontal"),b=l.ref(null);function C(_){const D=_.currentTarget.getBoundingClientRect(),Y=D.width?(_.clientX-D.left)/D.width:.5,Z=D.height?(_.clientY-D.top)/D.height:.5;return Zo({x:Y,y:Z},{container:d.value,hasParent:t.parentId!=null,orientation:pn(t.parentKind)})}function N(_){_.preventDefault(),_.stopPropagation(),b.value=C(_)}function X(){b.value=null}function R(_){var oe;_.stopPropagation(),(oe=_.dataTransfer)==null||oe.setData("partId",a.value.partId),_.dataTransfer&&(_.dataTransfer.effectAllowed="move")}function I(_){_.stopPropagation(),n.select(a.value.partId)}function F(_){return dn(n.state.root,a.value.partId,_)}function Ne(_){var Ce,M;_.preventDefault(),_.stopPropagation();const oe=b.value??C(_);b.value=null;const D=F(oe);if(!D)return;const Y=(Ce=_.dataTransfer)==null?void 0:Ce.getData("partId"),Z=(M=_.dataTransfer)==null?void 0:M.getData("partType");if(Y){const P=D.index==null?void 0:un(n.state.root,Y,D.parentId,D.index);n.movePart(Y,D.parentId,P)}else Z&&n.addPart(D.parentId,{partId:ue(),partType:Z,attrs:{},children:[]},D.index)}return(_,oe)=>{const D=l.resolveComponent("PartCanvas",!0);return l.openBlock(),l.createElementBlock("div",{class:l.normalizeClass(["ui-canvas-node",{"is-drop-into":b.value==="into","is-drop-before":b.value==="before","is-drop-after":b.value==="after","is-haxis":U.value}]),style:l.normalizeStyle(x.value),draggable:m.value,onClick:I,onDragstart:R,onDragover:N,onDragleave:X,onDrop:Ne},[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(s.value.component),l.mergeProps(c.value,{selected:u.value,container:d.value,empty:g.value,"body-style":k.value}),{default:l.withCtx(()=>[d.value?(l.openBlock(!0),l.createElementBlock(l.Fragment,{key:0},l.renderList(a.value.children??[],(Y,Z)=>(l.openBlock(),l.createBlock(D,{key:Y.partId,node:Y,registry:i.value,"parent-id":a.value.partId,index:Z,"parent-kind":S.value},null,8,["node","registry","parent-id","index","parent-kind"]))),128)):l.createCommentVNode("",!0)]),_:1},16,["selected","container","empty","body-style"]))],46,or)}}}),[["__scopeId","data-v-9df8ebc1"]]),ar={class:"ui-palette"},ir={class:"ui-palette__title"},lr={class:"ui-palette__list"},sr=["title","onDragstart"],cr=ne(l.defineComponent({__name:"PartPalette",setup(e){const t=l.inject(ke);if(!t)throw new Error("PartPalette: EDITOR 컨트롤러가 provide되지 않았습니다");const o=t,n=l.computed(()=>{const a=new Map;for(const s of o.catalog.all()){const c=s.category??"기타",d=a.get(c);d?d.push(s):a.set(c,[s])}return[...a.entries()]});function i(a,s){var c;(c=a.dataTransfer)==null||c.setData("partType",s.partType),a.dataTransfer&&(a.dataTransfer.effectAllowed="copy")}return(a,s)=>(l.openBlock(),l.createElementBlock("div",ar,[(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(n.value,([c,d])=>(l.openBlock(),l.createElementBlock("section",{key:c,class:"ui-palette__group"},[l.createElementVNode("h4",ir,l.toDisplayString(c),1),l.createElementVNode("ul",lr,[(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(d,u=>(l.openBlock(),l.createElementBlock("li",{key:u.partType,class:"ui-palette__item",draggable:"true",title:u.partType,onDragstart:g=>i(g,u)},l.toDisplayString(u.partName),41,sr))),128))])]))),128))]))}}),[["__scopeId","data-v-ba70ed30"]]),dr=["title"],ur={key:1,class:"ui-mlang"},pr={class:"ui-mlang__tabs",role:"tablist"},fr=["aria-selected","onClick"],gr={key:0,class:"ui-mlang__dot"},Tr=["name","placeholder","value"],mr=["name","placeholder","value"],mn=ne(l.defineComponent({__name:"MultiLangTextField",props:{modelValue:{},name:{},languages:{default:()=>["ko","en","ja","zh"]},defaultLang:{},multiline:{type:Boolean,default:!1},placeholder:{}},emits:["update:modelValue"],setup(e,{emit:t}){const o=e,n=t,i=l.computed(()=>Le(o.modelValue)),a=l.computed(()=>Le(o.modelValue)?o.modelValue.key:"");function s(){const y=o.defaultLang;return y&&o.languages.includes(y)?y:o.languages[0]??"ko"}const c=l.ref(s());l.watch(()=>[o.languages,o.defaultLang],()=>{o.languages.includes(c.value)||(c.value=s())});const d=l.computed(()=>{const y=o.modelValue;return y==null||i.value?{}:typeof y=="string"?y.trim()?{[c.value]:y}:{}:y});function u(y){var S;return!!((S=d.value[y])!=null&&S.trim())}const g=l.computed(()=>d.value[c.value]??"");function m(y){const S={...d.value};y.trim()===""?delete S[c.value]:S[c.value]=y,n("update:modelValue",S)}return(y,S)=>i.value?(l.openBlock(),l.createElementBlock("code",{key:0,class:"ui-mlang__key",title:`메시지 키: ${a.value}`},"#"+l.toDisplayString("{")+l.toDisplayString(a.value)+l.toDisplayString("}"),9,dr)):(l.openBlock(),l.createElementBlock("div",ur,[l.createElementVNode("div",pr,[(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(e.languages,k=>(l.openBlock(),l.createElementBlock("button",{key:k,type:"button",class:l.normalizeClass(["ui-mlang__tab",{"is-active":c.value===k}]),role:"tab","aria-selected":c.value===k,onClick:x=>c.value=k},[l.createTextVNode(l.toDisplayString(k),1),u(k)?(l.openBlock(),l.createElementBlock("span",gr,"•")):l.createCommentVNode("",!0)],10,fr))),128))]),e.multiline?(l.openBlock(),l.createElementBlock("textarea",{key:0,name:`${e.name}-${c.value}`,class:"ui-mlang__input",rows:"3",placeholder:e.placeholder,value:g.value,onInput:S[0]||(S[0]=k=>m(k.target.value))},null,40,Tr)):(l.openBlock(),l.createElementBlock("input",{key:1,name:`${e.name}-${c.value}`,class:"ui-mlang__input",type:"text",placeholder:e.placeholder,value:g.value,onInput:S[1]||(S[1]=k=>m(k.target.value))},null,40,mr))]))}}),[["__scopeId","data-v-fa16ddef"]]),Er={class:"ui-inline-issue__mark","aria-hidden":"true"},hr={class:"ui-inline-issue__msgs"},rt=ne(l.defineComponent({__name:"InlineIssueBadge",props:{controller:{},refId:{}},setup(e){const t=e,o={error:{order:0,mark:"⛔"},warning:{order:1,mark:"⚠"},info:{order:2,mark:"ℹ"}},n=l.computed(()=>t.refId?t.controller.issuesByRef.value.get(t.refId)??[]:[]),i=l.computed(()=>{let a=null;for(const s of n.value)(a===null||o[s.severity].order<o[a].order)&&(a=s.severity);return a});return(a,s)=>i.value?(l.openBlock(),l.createElementBlock("p",{key:0,class:l.normalizeClass(["ui-inline-issue",`is-${i.value}`])},[l.createElementVNode("span",Er,l.toDisplayString(o[i.value].mark),1),l.createElementVNode("span",hr,[(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(n.value,(c,d)=>(l.openBlock(),l.createElementBlock("span",{key:d},l.toDisplayString(c.message),1))),128))])],2)):l.createCommentVNode("",!0)}}),[["__scopeId","data-v-a0454177"]]),yr={class:"ui-props"},Sr={key:0,class:"ui-props__empty"},br={class:"ui-props__head"},kr={class:"ui-props__type"},Cr={class:"ui-props__id"},Or=["disabled"],Lr={class:"ui-props__group-title"},Ir=["title"],Ar={class:"ui-props__field"},Mr=["checked","onChange"],Br=["value","onChange"],_r=["value","onChange"],Pr=["value"],xr=["value","onChange"],Rr={key:5,class:"ui-props__readonly"},Nr=["value","onChange"],vr=ne(l.defineComponent({__name:"PropertyPanel",setup(e){const t=l.inject(ke);if(!t)throw new Error("PropertyPanel: EDITOR 컨트롤러가 provide되지 않았습니다");const o=t,n=l.computed(()=>o.selectedPart.value),i=l.computed(()=>n.value?o.catalog.get(n.value.partType):void 0),a=new Set(["SELECT","ALIGN","ADD_STYLE","SIZE","ICON"]),s=new Set(["TEXTAREA","FULL_TEXTAREA","MESSAGE_TEXTAREA"]),c=new Set(["COMPONENT_REF","DATASOURCE","DATAMAPPING","COMMENT","CASE_MESSAGES","BUTTON","SIMPLE_BUTTON","WINDOW_OPEN_BUTTON","TEXT_RO_WITH_BUTTON"]);function d(b){return c.has(b.editor)?"readonly":b.valueType==="bool"?"bool":b.valueType==="int"?"int":b.valueType==="text"?"text":b.valueType==="validator"||b.valueType==="dataSource"||b.valueType==="dataMapping"?"readonly":a.has(b.editor)?"select":s.has(b.editor)?"textarea":"string"}function u(b){var N;const C=n.value;if(C)return b.layoutAttr?(N=C.layoutAttrs)==null?void 0:N[b.id]:C.attrs[b.id]}function g(b,C){const N=n.value;if(N)if(b.layoutAttr){const X={...N.layoutAttrs??{}};C===void 0?delete X[b.id]:X[b.id]=C,o.updatePart(N.partId,{layoutAttrs:X})}else{const X={...N.attrs};C===void 0?delete X[b.id]:X[b.id]=C,o.updatePart(N.partId,{attrs:X})}}function m(b,C){g(b,C===""?void 0:V(C))}function y(b,C){g(b,C===""?void 0:De(Number(C)))}function S(b,C){g(b,v(C))}function k(b,C){const N=typeof C=="object"&&!("key"in C)&&Object.keys(C).length===0;g(b,N||C===""?void 0:we(C))}function x(b){var X;const C=(b.param??"").split(";").map(R=>R.trim()).filter(Boolean).map(R=>{const I=R.indexOf(":");return I<0?{value:R,label:R}:{value:R.slice(0,I),label:R.slice(I+1)}}),N=(X=b.agent)==null?void 0:X.enum;return N?C.filter(R=>N.includes(R.value)):C}function U(b){const C=u(b);if(!C)return"—";switch(C.kind){case"string":case"dataSource":case"dataMapping":return C.value;case"int":return String(C.value);case"bool":return C.value?"true":"false";default:return`(${C.kind})`}}return(b,C)=>{var N,X;return l.openBlock(),l.createElementBlock("div",yr,[n.value?(l.openBlock(),l.createElementBlock(l.Fragment,{key:1},[l.createElementVNode("header",br,[l.createElementVNode("span",kr,l.toDisplayString(((N=i.value)==null?void 0:N.partName)??n.value.partType),1),l.createElementVNode("code",Cr,l.toDisplayString(n.value.partId),1)]),l.createVNode(rt,{controller:l.unref(o),"ref-id":n.value.partId},null,8,["controller","ref-id"]),l.createElementVNode("fieldset",{class:"ui-props__form",disabled:!l.unref(o).editable.value},[(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(((X=i.value)==null?void 0:X.groups)??[],R=>(l.openBlock(),l.createElementBlock("section",{key:R.name,class:"ui-props__group"},[l.createElementVNode("h4",Lr,l.toDisplayString(R.name),1),(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(R.items,I=>(l.openBlock(),l.createElementBlock("div",{key:I.id,class:"ui-props__row"},[l.createElementVNode("label",{class:"ui-props__label",title:I.id},l.toDisplayString(I.name),9,Ir),l.createElementVNode("div",Ar,[d(I)==="bool"?(l.openBlock(),l.createElementBlock("input",{key:0,type:"checkbox",checked:l.unref(Ee)(u(I)),onChange:F=>S(I,F.target.checked)},null,40,Mr)):d(I)==="int"?(l.openBlock(),l.createElementBlock("input",{key:1,type:"number",class:"ui-props__input",value:u(I)?l.unref(j)(u(I)):"",onChange:F=>y(I,F.target.value)},null,40,Br)):d(I)==="text"?(l.openBlock(),l.createBlock(mn,{key:2,name:I.id,"model-value":l.unref(Fe)(u(I)),multiline:I.editor==="MESSAGE_TEXTAREA","onUpdate:modelValue":F=>k(I,F)},null,8,["name","model-value","multiline","onUpdate:modelValue"])):d(I)==="select"?(l.openBlock(),l.createElementBlock("select",{key:3,class:"ui-props__input",value:l.unref(me)(u(I)),onChange:F=>m(I,F.target.value)},[C[0]||(C[0]=l.createElementVNode("option",{value:""},"—",-1)),(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(x(I),F=>(l.openBlock(),l.createElementBlock("option",{key:F.value,value:F.value},l.toDisplayString(F.label),9,Pr))),128))],40,_r)):d(I)==="textarea"?(l.openBlock(),l.createElementBlock("textarea",{key:4,class:"ui-props__input",rows:"3",value:l.unref(me)(u(I)),onChange:F=>m(I,F.target.value)},null,40,xr)):d(I)==="readonly"?(l.openBlock(),l.createElementBlock("span",Rr,l.toDisplayString(U(I)),1)):(l.openBlock(),l.createElementBlock("input",{key:6,type:"text",class:"ui-props__input",value:l.unref(me)(u(I)),onChange:F=>m(I,F.target.value)},null,40,Nr))])]))),128))]))),128))],8,Or)],64)):(l.openBlock(),l.createElementBlock("p",Sr,"선택된 파트가 없습니다"))])}}}),[["__scopeId","data-v-74030a51"]]),Dr={class:"ui-tree-node"},wr={class:"ui-tree-type"},Fr={key:0,class:"ui-tree-caption"},Gr=ne(l.defineComponent({__name:"PartTree",props:{node:{},depth:{}},setup(e){const t=e,o=l.inject(ke);if(!o)throw new Error("PartTree: EDITOR 컨트롤러가 provide되지 않았습니다");const n=o,i=l.computed(()=>t.node??n.state.root),a=l.computed(()=>t.depth??0),s=l.computed(()=>ge(i.value,n.catalog)),c=l.computed(()=>n.selection.value===i.value.partId);return(d,u)=>{const g=l.resolveComponent("PartTree",!0);return l.openBlock(),l.createElementBlock("div",Dr,[l.createElementVNode("button",{type:"button",class:l.normalizeClass(["ui-tree-row",{"is-selected":c.value}]),style:l.normalizeStyle({paddingLeft:`${a.value*14+6}px`}),onClick:u[0]||(u[0]=m=>l.unref(n).select(i.value.partId))},[l.createElementVNode("span",wr,l.toDisplayString(i.value.partType),1),s.value?(l.openBlock(),l.createElementBlock("span",Fr,l.toDisplayString(s.value),1)):l.createCommentVNode("",!0)],6),l.createVNode(rt,{controller:l.unref(n),"ref-id":i.value.partId},null,8,["controller","ref-id"]),(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(i.value.children??[],m=>(l.openBlock(),l.createBlock(g,{key:m.partId,node:m,depth:a.value+1},null,8,["node","depth"]))),128))])}}}),[["__scopeId","data-v-cfddebcf"]]),J="ui-modeler-preview";function En(e,t){return{channel:J,type:"render",model:e,revision:t}}function Xr(){return{channel:J,type:"ready"}}function $r(e){return{channel:J,type:"resize",height:e}}function Ur(e){return{channel:J,type:"error",message:e}}function Hr(e){return{channel:J,type:"select",partId:e}}function hn(e){return{channel:J,type:"highlight",partId:e}}function Vr(e,t,o,n){return{channel:J,type:"drop",dragKind:e,payload:t,targetPartId:o,zone:n}}function yn(e){return typeof e=="object"&&e!==null&&e.channel===J&&typeof e.type=="string"}const Yr=new Set(["ready","resize","error","select","drop"]),zr=new Set(["render","highlight"]);function Sn(e){return yn(e)&&Yr.has(e.type)}function Wr(e){return yn(e)&&zr.has(e.type)}const jr=["src"],Kr=ne(l.defineComponent({__name:"IframePreview",props:{model:{},revision:{default:0},selection:{default:null},src:{},targetOrigin:{default:"/"}},emits:["error","ready","select","addPart","movePart"],setup(e,{emit:t}){const o=e,n=t,i=l.ref(null),a=l.ref(0);let s=!1;function c(){var y;const m=(y=i.value)==null?void 0:y.contentWindow;if(!(!m||!s))try{const S=JSON.parse(JSON.stringify(o.model));m.postMessage(En(S,o.revision),o.targetOrigin)}catch(S){n("error",S instanceof Error?S.message:String(S))}}function d(){var y;const m=(y=i.value)==null?void 0:y.contentWindow;!m||!s||m.postMessage(hn(o.selection??null),o.targetOrigin)}function u(m){var y;if(m.source===((y=i.value)==null?void 0:y.contentWindow)&&Sn(m.data))switch(m.data.type){case"ready":s=!0,c(),d(),n("ready");break;case"resize":a.value=m.data.height;break;case"error":n("error",m.data.message);break;case"select":n("select",m.data.partId);break;case"drop":g(m.data);break}}function g(m){const y=m.targetPartId==null?{parentId:o.model.partId}:dn(o.model,m.targetPartId,m.zone);if(y)if(m.dragKind==="move"){const S=y.index==null?void 0:un(o.model,m.payload,y.parentId,y.index);n("movePart",m.payload,y.parentId,S)}else n("addPart",y.parentId,m.payload,y.index)}return l.onMounted(()=>window.addEventListener("message",u)),l.onBeforeUnmount(()=>window.removeEventListener("message",u)),l.watch(()=>[o.model,o.revision],()=>c(),{deep:!1}),l.watch(()=>o.selection,()=>d()),(m,y)=>(l.openBlock(),l.createElementBlock("iframe",{ref_key:"frame",ref:i,class:"ui-iframe-preview",src:e.src,style:l.normalizeStyle(a.value?{height:a.value+"px"}:void 0),title:"실 미리보기"},null,12,jr))}}),[["__scopeId","data-v-aece74f6"]]);p.AGENT_EXPOSE_DEFAULT=kt,p.APPLY_UI_OPS_INPUT_SCHEMA=Lo,p.BUILTIN_PART_DEFS=Gt,p.CASE_MSG_CAPTION=In,p.CommandStack=et,p.EDITOR=ke,p.IframePreview=Kr,p.InlineIssueBadge=rt,p.MAX_INLINE_DEPTH=qe,p.MultiLangTextField=mn,p.OP_KINDS=Fo,p.OpSyncAdapter=nn,p.PART_CATEGORY=ve,p.PART_TYPES=it,p.PART_TYPES_BY_CATEGORY=ee,p.PREVIEW_CHANNEL=J,p.PROPERTY_EDITORS=Xn,p.PartCanvas=rr,p.PartPalette=cr,p.PartTree=Gr,p.PropertyPanel=vr,p.RevCache=tn,p.STYLE_TOKENS=re,p.STYLE_TOKEN_DIM_META=$e,p.SYMBOLIC_OP_KINDS=Yt,p.SYMBOLIC_OP_SCHEMA=zt,p.SchematicPart=nt,p.accept=lt,p.addPart=Jt,p.applyOpsToFlat=Fn,p.asBool=Ee,p.asInt=j,p.asString=me,p.asText=Fe,p.asValidator=Ln,p.attrMapFrom=Xe,p.attrValFrom=gt,p.bool=v,p.buildAgentBatch=Uo,p.captionText=ge,p.checkStrictSubset=Wt,p.classifyStyleClass=Ue,p.collect=An,p.createCatalog=Ht,p.createSchematicRegistry=sn,p.createUiEditorController=Ho,p.cssToToken=mt,p.dataMapping=Cn,p.dataSource=kn,p.decodeKeyText=dt,p.decodeToMultiLang=ye,p.describeScreen=$o,p.displayCaptionOf=ln,p.dropMessage=Vr,p.emptyCoverageReport=Et,p.emptyRoot=an,p.errorMessage=Ur,p.extendCatalog=io,p.findPartById=z,p.flattenSubtree=Ve,p.fromPersisted=yt,p.fromPersistedV2=Dn,p.highlightMessage=hn,p.int=De,p.isMultiLangMessage=Le,p.isPartType=Oe,p.isPreviewInbound=Sn,p.isPreviewOutbound=Wr,p.isStrictSubset=_o,p.issueCategoryLabel=qo,p.issueParentRef=Jo,p.migrateV1ToV2=wn,p.movePart=Qt,p.newPartId=ue,p.parentOf=he,p.parseGridSort=ft,p.parseGridSortList=Mn,p.parseValidatorString=pt,p.pathOf=Ze,p.pathTo=Ge,p.readyMessage=Xr,p.removePart=en,p.renderMessage=En,p.resizeMessage=$r,p.resolveHandle=xe,p.resolveOps=wo,p.resolveRenderer=cn,p.revContainersOf=Qe,p.schematicProps=ot,p.selectMessage=Hr,p.str=V,p.text=we,p.toAgentCatalog=Vt,p.toOpShape=rn,p.toPersistedV2=St,p.tokenToCss=Tt,p.tokensOf=He,p.uiKeyTextToMultiLang=ut,p.updatePart=Zt,p.validatePartModel=st,p.validator=On,p.walk=W,Object.defineProperty(p,Symbol.toStringTag,{value:"Module"})}));
|
|
1
|
+
(function(p,l){typeof exports=="object"&&typeof module<"u"?l(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],l):(p=typeof globalThis<"u"?globalThis:p||self,l(p.UiModeler={},p.Vue))})(this,(function(p,l){"use strict";var Zr=Object.defineProperty;var Qr=(p,l,ee)=>l in p?Zr(p,l,{enumerable:!0,configurable:!0,writable:!0,value:ee}):p[l]=ee;var G=(p,l,ee)=>Qr(p,typeof l!="symbol"?l+"":l,ee);const ee={Layout:["VerticalLayout","HorizontalLayout","CardLayout","ActionLayout","ActionLayoutArea","FormLayout","TableLayout","TableLayoutCell","FlowLayout","ExpansionLayout","InternalLayoutArea"],Basic:["Button","PopupButton","Label","Image","Link","LinkTab","ProgressBar","Console","NativeUpload","AuditInfo","AuditInfoButton"],Input:["TextField","TextArea","StyledTextField","RichTextArea","TelField","NumberField","CurrencyField","DateField","TimeField","DateRange","CheckBox","RadioButton","RadioGroup","CheckBoxGroup","YesNoGroup","Select","MultiSelect","CategorySelect","PopupSelect","YesNoSelect","ColorField"],Composite:["MultiFileUpload","SingleFileUpload","SingleImageUpload","NameField","AddressField","PageBuilder","ContentEditor"],MultiLang:["MultiLangTextField","MultiLangTextArea","MultiLangStyledTextField","MultiLangRichTextArea","MultiLangPageBuilder","MultiLangContentEditor","MultiLangFileUpload"],Grid:["Grid","GridControl","GridLookup","ColumnDef","GridCellPanel"],Tree:["Tree","TreeControl","TabSheet","TabSheetPanel"],Filter:["TextFilter","NumberFilter","SelectFilter","MultiSelectFilter","PopupSelectFilter","CategorySelectFilter","YesNoSelectFilter"],ListField:["ListField","ListControl"],Chart:["FlagCard","Chart"],Etc:["PageRefreshButton","MultiLangExpandButton","Fragment","CommentList","SourceCodeEditor","MarkdownViewer","History"]},it=Object.values(ee).flat(),ve=Object.fromEntries(Object.entries(ee).flatMap(([e,t])=>t.map(o=>[o,e]))),kn=new Set(it);function Oe(e){return kn.has(e)}const V=e=>({kind:"string",value:e}),De=e=>({kind:"int",value:e}),v=e=>({kind:"bool",value:e}),we=e=>({kind:"text",value:e}),Cn=e=>({kind:"dataSource",value:e}),On=e=>({kind:"dataMapping",value:e}),Ln=e=>({kind:"validator",value:e});function me(e,t=""){return(e==null?void 0:e.kind)==="string"?e.value:t}function K(e,t=0){return(e==null?void 0:e.kind)==="int"?e.value:t}function Ee(e,t=!1){return(e==null?void 0:e.kind)==="bool"?e.value:t}function Fe(e){return(e==null?void 0:e.kind)==="text"?e.value:void 0}function In(e){return(e==null?void 0:e.kind)==="validator"?e.value:void 0}const An={NOTI_S:"Success",NOTI_F:"Fail",CONFIRM:"Confirm"};function Le(e){return typeof e=="object"&&e!=null&&typeof e.key=="string"}function ue(){return crypto.randomUUID()}function lt(e,t){const o=t(e);if(o==="CONTINUE"&&e.children){for(const n of e.children)if(lt(n,t)==="STOP")break}return o==="SKIP_CHILDREN"?"CONTINUE":o}function z(e,t){if(e!=null){if(e.partId===t)return e;if(e.children)for(const o of e.children){const n=z(o,t);if(n)return n}}}function W(e,t){if(t(e),e.children)for(const o of e.children)W(o,t)}function Mn(e,t){const o=[];return W(e,n=>{t(n)&&o.push(n)}),o}function he(e,t){if(e.children)for(const o of e.children){if(o.partId===t)return e;const n=he(o,t);if(n)return n}}function Ge(e,t){if(e.partId===t)return[e];if(e.children)for(const o of e.children){const n=Ge(o,t);if(n)return[e,...n]}}function st(e,t){const o=[],n=new Map;return W(e,i=>n.set(i.partId,(n.get(i.partId)??0)+1)),W(e,i=>{(n.get(i.partId)??0)>1&&o.push({ruleId:"CHK-DUP-ID",severity:"error",targetKind:"part",targetRef:i.partId,message:`partId가 트리에서 중복됩니다: "${i.partId}"`})}),W(e,i=>{var d;const a=t.get(i.partType);if(!a)o.push({ruleId:"CHK-PART-1",severity:"warning",targetKind:"part",targetRef:i.partId,message:`카탈로그에 없는 파트 타입입니다: "${i.partType}"`});else for(const u of Object.keys(i.attrs))t.propertyItem(i.partType,u)||o.push({ruleId:"CHK-ATTR-1",severity:"warning",targetKind:"part",targetRef:i.partId,message:`카탈로그 정의에 없는 속성 키입니다: "${i.partType}.${u}"`});const s=i.children??[];for(const u of s)if(t.canContain(i.partType,u.partType)==="deny"&&o.push({ruleId:"CHK-CONTAIN-1",severity:"error",targetKind:"part",targetRef:u.partId,contextRef:i.partId,message:`${i.partType}은(는) 자식으로 ${u.partType}을(를) 담을 수 없습니다`}),a)for(const g of Object.keys(u.layoutAttrs??{})){const S=t.propertyItem(i.partType,g);S!=null&&S.layoutAttr||o.push({ruleId:"CHK-ATTR-1",severity:"warning",targetKind:"part",targetRef:u.partId,contextRef:i.partId,message:`${i.partType}의 레이아웃 정의에 없는 레이아웃 속성 키입니다: "${g}"`})}const c=(d=a==null?void 0:a.containment)==null?void 0:d.arity;if(c){const u=s.length;c.max!=null&&u>c.max&&o.push({ruleId:"CHK-ARITY-1",severity:"error",targetKind:"part",targetRef:i.partId,message:`${i.partType}의 자식이 ${u}개로 최대 ${c.max}개를 초과했습니다`}),c.min!=null&&u<c.min&&o.push({ruleId:"CHK-ARITY-2",severity:"warning",targetKind:"part",targetRef:i.partId,message:`${i.partType}의 자식이 ${u}개로 최소 ${c.min}개에 미달합니다`})}}),o}function ct(e){return e==null||e.trim().length===0}function dt(e){if(!(e==null||e.length===0))return e.startsWith("#{")&&e.endsWith("}")?{key:e.slice(2,-1)}:{text:e}}function ut(e){if(e!=null){if(!ct(e.key))return{key:e.key};if(e.msgMap&&Object.keys(e.msgMap).length>0)return{...e.msgMap};if(!ct(e.text))return e.text}}function ye(e){return ut(dt(e))}function pe(e){if(e==null)return;const t=e.startsWith("^")?e.slice(1):e,o=Number.parseInt(t,10);return Number.isNaN(o)?void 0:o}function Ie(e){if(e==null)return;const t=e.startsWith("^")?e.slice(1):e;return Number.isNaN(Number(t))||t.trim().length===0?void 0:t}function fe(e){return e!=null&&e.startsWith("^")}function pt(e){const t={};if(e==null)return t;for(let o of e.split(";")){if(o=o.trim(),o.length===0)continue;const n=o.split(":"),i=n.length>=1?n[0].trim():null,a=n.length>=2?n[1].trim():null;let s=null,c=null;if(a!=null){const g=a.split(",");g.length>0&&(s=g[0]),g.length>1&&(c=g[1])}const d=n.length>=3?ye(n[2].trim()):void 0,u=n.length>=4?ye(n[3].trim()):void 0;switch(i){case"required":t.useRequired=!0,t.requiredMsg=d;break;case"length":t.useLength=!0,t.lengthMin=pe(s),t.lengthMax=pe(c),t.lengthMsg=d;break;case"currencyRange":t.useCurrencyRange=!0,t.currencyRangeMin=Ie(s),t.currencyRangeMax=Ie(c),t.currencyRangeMinExclusive=fe(s),t.currencyRangeMaxExclusive=fe(c),t.currencyRangeMsg=d;break;case"longRange":t.useLongRange=!0,t.longRangeMin=pe(s),t.longRangeMax=pe(c),t.longRangeMinExclusive=fe(s),t.longRangeMaxExclusive=fe(c),t.longRangeMsg=d;break;case"doubleRange":t.useDoubleRange=!0,t.doubleRangeMin=Ie(s),t.doubleRangeMax=Ie(c),t.doubleRangeMinExclusive=fe(s),t.doubleRangeMaxExclusive=fe(c),t.doubleRangeMsg=d;break;case"regexp":t.useRegexp=!0,t.regexpPattern=a??void 0,t.regexpMsg=d;break;case"dupCheck":t.useDupCheck=!0,t.dupCheckMsg1=d,t.dupCheckMsg2=u;break;case"plainTextLength":t.usePlainTextLength=!0,t.plainTextLengthMin=pe(s),t.plainTextLengthMax=pe(c),t.plainTextLengthMsg=d;break}}return t}function ft(e){const t=e.split(":");return{sortPropertyId:t.length>0?t[0]:"",order:t.length>1?t[1]:"ASC",sortDataMapping:t.length>2?t[2]:"",sortName:t.length>3?t[3]:""}}function Bn(e){return e==null?[]:e.split(";").filter(t=>t.trim().length>0).map(ft)}const _n={S:"string",I:"int",B:"bool",M:"text",DS:"dataSource",DM:"dataMapping"};function gt(e,t){switch(t??_n[e.type]){case"string":return{kind:"string",value:e.val};case"int":return{kind:"int",value:Number.parseInt(e.val,10)};case"bool":return{kind:"bool",value:e.val==="true"};case"text":return{kind:"text",value:ye(e.val)??""};case"dataSource":return{kind:"dataSource",value:e.val};case"dataMapping":return{kind:"dataMapping",value:e.val};case"validator":return{kind:"validator",value:pt(e.val)};default:return}}function Xe(e,t,o){const n={};for(const[i,a]of Object.entries(e)){const s=gt(a,t==null?void 0:t(i));s===void 0?o==null||o(i,a):n[i]=s}return n}const re={spacing:[{token:"xs",css:"margin-xs",label:"X-Small"},{token:"sm",css:"margin-sm",label:"Small"},{token:"default",css:"",label:"Default"},{token:"lg",css:"margin-lg",label:"Large"},{token:"xl",css:"margin-xl",label:"X-Large"}],gap:[{token:"xs",css:"spacing-xs",label:"X-Small"},{token:"sm",css:"spacing-sm",label:"Small"},{token:"default",css:"",label:"Default"},{token:"lg",css:"spacing-lg",label:"Large"},{token:"xl",css:"spacing-xl",label:"X-Large"}],color:[{token:"default",css:"",label:"Default"},{token:"themed",css:"colored",label:"Theme color"},{token:"red",css:"red",label:"Red"},{token:"gray",css:"gray",label:"Gray"},{token:"yellow",css:"yellow",label:"Yellow"},{token:"green",css:"green",label:"Green"}],textColor:[{token:"default",css:"",label:"Default"},{token:"black",css:"black-text",label:"Black"},{token:"blue",css:"blue-text",label:"Blue"},{token:"red",css:"red-text",label:"Red"},{token:"gray",css:"gray-text",label:"Gray"},{token:"yellow",css:"yellow-text",label:"Yellow"},{token:"green",css:"green-text",label:"Green"}],bgColor:[{token:"none",css:"",label:"None"},{token:"blue",css:"blue-bg",label:"Blue"},{token:"red",css:"red-bg",label:"Red"},{token:"yellow",css:"yellow-bg",label:"Yellow"},{token:"green",css:"green-bg",label:"Green"},{token:"purple",css:"purple-bg",label:"Purple"}],captionBg:[{token:"none",css:"",label:"None"},{token:"gray",css:"gray-bg-caption",label:"Gray"},{token:"blue",css:"blue-bg-caption",label:"Blue"},{token:"red",css:"red-bg-caption",label:"Red"},{token:"yellow",css:"yellow-bg-caption",label:"Yellow"},{token:"green",css:"green-bg-caption",label:"Green"},{token:"purple",css:"purple-bg-caption",label:"Purple"},{token:"white",css:"white-bg-caption",label:"White"}],captionDir:[{token:"default",css:"",label:"Default"},{token:"left",css:"left-caption",label:"Left"}],align:[{token:"left",css:"",label:"Left(default)"},{token:"center",css:"align-center",label:"Center"},{token:"right",css:"align-right",label:"Right"}],verticalAlign:[{token:"top",css:"",label:"Top(default)"},{token:"middle",css:"align-middle",label:"Middle"},{token:"bottom",css:"align-bottom",label:"Bottom"}],size:[{token:"tiny",css:"tiny",label:"Tiny"},{token:"small",css:"small",label:"Small"},{token:"default",css:"",label:"Default"},{token:"large",css:"large",label:"Large"},{token:"huge",css:"huge",label:"Huge"}],captionSize:[{token:"tiny",css:"tiny-caption",label:"Tiny"},{token:"small",css:"small-caption",label:"Small"},{token:"default",css:"",label:"Default"},{token:"large",css:"large-caption",label:"Large"},{token:"huge",css:"huge-caption",label:"Huge"}],iconAlign:[{token:"left",css:"",label:"Left(default)"},{token:"right",css:"icon-align-right",label:"Right"},{token:"top",css:"icon-align-top",label:"Top"}],heading:[{token:"h1",css:"h1",label:"Heading 1"},{token:"h2",css:"h2",label:"Heading 2"},{token:"h3",css:"h3",label:"Heading 3"},{token:"h4",css:"h4",label:"Heading 4"}],weight:[{token:"normal",css:"",label:"Normal(default)"},{token:"bold",css:"bold",label:"Bold"},{token:"bolder",css:"bolder",label:"Bolder"},{token:"lighter",css:"lighter",label:"Lighter"}],slotAlign:[{token:"default",css:"",label:"Default"},{token:"left",css:"LEFT",label:"Left"},{token:"center",css:"CENTER",label:"Center"},{token:"right",css:"RIGHT",label:"Right"},{token:"top",css:"TOP",label:"Top"},{token:"middle",css:"MIDDLE",label:"Middle"},{token:"bottom",css:"BOTTOM",label:"Bottom"}]},$e={spacing:{source:"style",legacyDimId:"margin",label:"Margin Size"},gap:{source:"style",legacyDimId:"spacing",label:"Spacing Size"},color:{source:"style",legacyDimId:"color",label:"Color"},textColor:{source:"style",legacyDimId:"textColor",label:"Text Color"},bgColor:{source:"style",legacyDimId:"bgColor",label:"Background Color"},captionBg:{source:"style",legacyDimId:"bgCaption",label:"Caption Background"},captionDir:{source:"style",legacyDimId:"dirCaption",label:"Caption Direction"},align:{source:"style",legacyDimId:"alignment",label:"Alignment"},verticalAlign:{source:"style",legacyDimId:"vertical-alignment",label:"Vertical Alignment"},size:{source:"style",legacyDimId:"size",label:"Size"},captionSize:{source:"style",legacyDimId:"caption-size",label:"Caption"},iconAlign:{source:"style",legacyDimId:"icon-align",label:"Icon alignment"},heading:{source:"style",legacyDimId:"heading",label:"Heading"},weight:{source:"style",legacyDimId:"weight",label:"Weight"},slotAlign:{source:"layoutAttr",legacyDimId:"componentAlignment",label:"Align"}},Pn=new Map(Object.keys(re).filter(e=>$e[e].source==="style").flatMap(e=>re[e].filter(t=>t.css!=="").map(t=>[t.css,{dim:e,token:t.token}])));function Tt(e,t){var o;return(o=re[e].find(n=>n.token===t))==null?void 0:o.css}function mt(e,t){var o;return(o=re[e].find(n=>n.css===t))==null?void 0:o.token}function Ue(e){return Pn.get(e)}function He(e){return re[e].map(t=>t.token)}function Et(){return{unknownPartTypes:[],discardedAttrs:[],droppedFields:[]}}function xn(e){const t={};if(e.caseText&&(t.caseText={...e.caseText}),e.msgType&&(t.msgType=e.msgType),e.msgText!=null){const o=ye(e.msgText);o!==void 0&&(t.msgText=o)}return t}function Rn(e,t){if(e)return o=>{var n;return(n=e.propertyItem(t,o))==null?void 0:n.valueType}}function Nn(e,t){if(!t||!t.propertyItem(e.partType,"buttonColor"))return;const o=e.attrs.addStyleNames;if((o==null?void 0:o.kind)!=="string"||!o.value)return;const n=[];let i;for(const a of o.value.split(/\s+/).filter(Boolean)){const s=Ue(a);(s==null?void 0:s.dim)==="color"?i??(i=s.token):n.push(a)}i!==void 0&&(e.attrs.buttonColor=V(i),n.length>0?e.attrs.addStyleNames=V(n.join(" ")):delete e.attrs.addStyleNames)}function ht(e,t){const{partId:o,partType:n,partInfo:i,attrMap:a,comment:s,caseMsgList:c,children:d,layoutAttrMap:u,extraAttrMap:g,...S}=e,m=t.report,E=t.catalog?t.catalog.get(n)!=null:!0;m&&!E&&m.unknownPartTypes.push({partId:o,partType:n});const k=m?b=>(C,N)=>m.discardedAttrs.push({partId:o,partType:n,key:C,tag:String(N.type),layout:b}):void 0,x=Rn(t.catalog,n),U={partId:o,partType:n,attrs:a?Xe(a,x,k==null?void 0:k(!1)):{}};if(Nn(U,t.catalog),i&&(U.info={draggable:!!i.draggable,droppable:!!i.droppable,selectable:!!i.selectable,deletable:!!i.deletable}),u&&(U.layoutAttrs=Xe(u,x,k==null?void 0:k(!0))),g&&(U.extraAttrs={...g}),s&&(U.comment={...s}),c&&(U.caseMessages=c.map(xn)),d&&(U.children=d.map(b=>ht(b,t))),m)for(const b of Object.keys(S))m.droppedFields.push({partId:o,partType:n,field:b});return U}function yt(e,t={}){return ht(e,t)}function vn(e,t,o,n){const i={partId:e.partId,parentId:t,order:o,rev:n,partType:e.partType};return e.info&&(i.info=e.info),e.attrs&&Object.keys(e.attrs).length&&(i.attrs=e.attrs),e.layoutAttrs&&Object.keys(e.layoutAttrs).length&&(i.layoutAttrs=e.layoutAttrs),e.extraAttrs&&(i.extraAttrs=e.extraAttrs),e.comment!==void 0&&(i.comment=e.comment),e.caseMessages&&(i.caseMessages=e.caseMessages),i}function Ve(e,t=null,o=0,n=0){const i=[],a=(s,c,d)=>{var u;i.push(vn(s,c,d,n)),(u=s.children)==null||u.forEach((g,S)=>a(g,s.partId,S))};return a(e,t,o),i}function St(e,t={}){const o={schemaVersion:2,rootId:e.partId,partList:Ve(e,null,0,0)};return t.opWriteEnabled!==void 0&&(o.opWriteEnabled=t.opWriteEnabled),t.version!==void 0&&(o.version=t.version),o}function Dn(e){const t={partId:e.partId,partType:e.partType,attrs:e.attrs?{...e.attrs}:{}};return e.info&&(t.info={...e.info}),e.layoutAttrs&&(t.layoutAttrs={...e.layoutAttrs}),e.extraAttrs&&(t.extraAttrs={...e.extraAttrs}),e.comment!==void 0&&(t.comment=e.comment),e.caseMessages&&(t.caseMessages=[...e.caseMessages]),t}function wn(e){const t=new Map;for(const d of e.partList){if(t.has(d.partId))throw new Error(`v2-read: 중복 partId '${d.partId}'`);t.set(d.partId,d)}const o=new Map;for(const d of e.partList){if(d.parentId===null)continue;if(!t.has(d.parentId))throw new Error(`v2-read: 고아 파트 '${d.partId}' — 부모 '${d.parentId}' 부재`);const u=o.get(d.parentId);u?u.push(d):o.set(d.parentId,[d])}const n=t.get(e.rootId);if(!n)throw new Error(`v2-read: rootId '${e.rootId}' 파트 부재`);if(n.parentId!==null)throw new Error(`v2-read: rootId '${e.rootId}'의 parentId가 null이 아님(${String(n.parentId)})`);const i={},a=new Set,s=d=>{if(a.has(d.partId))throw new Error(`v2-read: 순환 참조 '${d.partId}'`);a.add(d.partId),i[d.partId]=d.rev;const u=Dn(d),g=o.get(d.partId);return g&&(g.sort((S,m)=>S.order-m.order),u.children=g.map(s)),u},c=s(n);if(a.size!==t.size){const d=[...t.keys()].filter(u=>!a.has(u));throw new Error(`v2-read: root에서 도달 불가한 파트 ${d.length}개(예: '${d[0]}')`)}return{root:c,revSeed:{revs:i}}}function Fn(e,t={}){const o=t.report??Et(),n=yt(e,{catalog:t.catalog,report:o});return{v2:St(n,{opWriteEnabled:t.opWriteEnabled,version:t.version}),report:o,model:n}}function bt(e,t){return e==null?t:Math.max(0,Math.min(e,t))}function Gn(e,t,o){const n=new Map,i=new Map;for(const u of e){if(n.has(u.partId))throw new Error(`applyOpsToFlat: 입력 중복 partId '${u.partId}'`);n.set(u.partId,{...u}),i.set(u.partId,u.rev)}const a=o.revs??{};for(const[u,g]of Object.entries(a)){if(!i.has(u))continue;const S=i.get(u);if(S!==g)return{ok:!1,conflict:{kind:"rev",ref:u,current:S}}}const s=u=>[...n.values()].filter(g=>g.parentId===u).sort((g,S)=>g.order-S.order),c=u=>u.forEach((g,S)=>g.order=S);for(const u of t)switch(u.kind){case"part.add":{const g=u.parentRef??null;if(g!==null&&!n.has(g))return{ok:!1,conflict:{kind:"missing",ref:g}};if(!u.value)throw new Error("applyOpsToFlat: part.add에 value(서브트리) 누락");const S=Ve(u.value,g,0,0);for(const k of S){if(n.has(k.partId))throw new Error(`applyOpsToFlat: part.add 중복 partId '${k.partId}'`);n.set(k.partId,k)}const m=u.value.partId,E=s(g).filter(k=>k.partId!==m);E.splice(bt(u.index,E.length),0,n.get(m)),c(E);break}case"part.update":{const g=u.partRef?n.get(u.partRef):void 0;if(!g)return{ok:!1,conflict:{kind:"missing",ref:u.partRef}};u.patch&&Object.assign(g,u.patch);break}case"part.move":{const g=u.partRef,S=g?n.get(g):void 0;if(!g||!S)return{ok:!1,conflict:{kind:"missing",ref:g}};const m=u.toParentRef??null;if(m!==null&&!n.has(m))return{ok:!1,conflict:{kind:"missing",ref:m}};const E=S.parentId;c(s(E).filter(x=>x.partId!==g)),S.parentId=m;const k=s(m).filter(x=>x.partId!==g);k.splice(bt(u.index,k.length),0,S),c(k);break}case"part.remove":{const g=u.partRef;if(!g||!n.has(g))return{ok:!1,conflict:{kind:"missing",ref:g}};const S=n.get(g).parentId;for(const m of Xn(n,g))n.delete(m);c(s(S));break}}const d={};for(const[u,g]of Object.entries(a)){const S=n.get(u);S&&(i.has(u)&&(S.rev=g+1),d[u]=S.rev)}return{ok:!0,partList:[...n.values()],revs:d}}function Xn(e,t){const o=[t],n=[t];for(;n.length;){const i=n.shift();for(const a of e.values())a.parentId===i&&(o.push(a.partId),n.push(a.partId))}return o}const $n=["TEXT","TEXT_WITH_BUTTON","TEXT_RO_WITH_BUTTON","MESSAGE_TEXT","TEXTAREA","FULL_TEXTAREA","MESSAGE_TEXTAREA","INTEGER","BOOL","BUTTON","SIMPLE_BUTTON","WINDOW_OPEN_BUTTON","SELECT","ALIGN","ADD_STYLE","SIZE","ICON","TAGS","COMPONENT_REF","DATASOURCE","DATAMAPPING","COMMENT","CASE_MESSAGES"],kt={TEXT:!0,TEXTAREA:!0,FULL_TEXTAREA:!0,MESSAGE_TEXT:!0,MESSAGE_TEXTAREA:!0,INTEGER:!0,BOOL:!0,TAGS:!0,SELECT:!0,ALIGN:!0,ADD_STYLE:!0,SIZE:!0,ICON:!0,TEXT_WITH_BUTTON:!1,TEXT_RO_WITH_BUTTON:!1,BUTTON:!1,SIMPLE_BUTTON:!1,WINDOW_OPEN_BUTTON:!1,COMPONENT_REF:!1,DATASOURCE:!1,DATAMAPPING:!1,COMMENT:!1,CASE_MESSAGES:!1};function T(e,t,o,n){const i={partType:e,partName:t,groups:o};return n&&n.length>0&&(i.styles=n),i}function r(e,t,o,n,i,a){const s={id:e,name:t,valueType:o,editor:n};return i!=null&&(s.param=i),a!=null&&(s.default=a),s}function f(e,...t){return{name:e,items:t}}function Ae(e,...t){return{name:e,layoutAttr:!0,items:t.map(o=>({...o,layoutAttr:!0}))}}function h(){return f("Component",r("addStyleNames","Style","string","ADD_STYLE"),r("id","ID","string","TEXT"),r("caption","Caption","text","MESSAGE_TEXT"),r("description","Description","text","MESSAGE_TEXTAREA"),r("skipSrcGen","Skip Src Gen.","bool","BOOL"),r("srcGenHint","Src Gen Hint","string","TEXTAREA"))}function y(){return f("Size",r("width","Width","string","TEXT"),r("height","Height","string","TEXT"))}function Me(){return f("Min/Max Size",r("minWidth","Min Width","string","TEXT"),r("minHeight","Min Height","string","TEXT"),r("maxWidth","Max Width","string","TEXT"),r("maxHeight","Max Height","string","TEXT"))}function Ye(){return Ae("Layout",r("componentAlignment","Align","string","ALIGN"),r("expandRatio","Expand Ratio","int","INTEGER"))}function A(){return f("Field",r("propertyId","Property ID","string","TEXT"),r("dataMapping","Data Mapping","dataMapping","DATAMAPPING"),r("viewMode","View Mode","bool","BOOL"),r("enabled","Enabled","bool","BOOL",void 0,v(!0)),r("validate","Validation","validator","TEXT_WITH_BUTTON"))}function Un(){return f("Field",r("viewMode","View Mode","bool","BOOL"),r("enabled","Enabled","bool","BOOL",void 0,v(!0)),r("validate","Validation","validator","TEXT_WITH_BUTTON"))}function Ct(){const e=re.color.map(t=>`${t.token}:${t.label}`).join("; ");return r("buttonColor","Button Color","string","SELECT",e)}function B(e,t){return{kind:"toggle",css:e,label:t}}const ae=()=>({kind:"enum",dim:"spacing"}),Be=()=>({kind:"enum",dim:"gap"}),_e=()=>({kind:"enum",dim:"textColor"}),H=()=>({kind:"enum",dim:"bgColor"}),Hn=()=>({kind:"enum",dim:"captionBg"}),Vn=()=>({kind:"enum",dim:"captionDir"}),q=()=>({kind:"enum",dim:"align"}),Yn=()=>({kind:"enum",dim:"verticalAlign"}),$=()=>({kind:"enum",dim:"size"}),Se=()=>({kind:"enum",dim:"size",only:["small","default","large"]}),O=()=>({kind:"enum",dim:"captionSize"}),Ot=()=>({kind:"enum",dim:"iconAlign"}),Lt=()=>({kind:"enum",dim:"heading"}),ze=()=>({kind:"enum",dim:"weight"}),w=()=>B("borderless","Borderless"),It=()=>B("borderless-top","Borderless Top"),At=()=>B("borderless-bottom","Borderless Bottom"),Mt=()=>B("borderless-left","Borderless Left"),Bt=()=>B("borderless-right","Borderless Right"),J=()=>B("bordered","Bordered"),_t=()=>B("bordered-top","Bordered Top"),Pt=()=>B("bordered-bottom","Bordered Bottom"),xt=()=>B("bordered-left","Bordered Left"),Rt=()=>B("bordered-right","Bordered Right"),zn=()=>B("color-bordered-top","Color Bordered Top"),Nt=()=>B("lineless","Lineless"),We=()=>B("horizontal","Horizontal"),je=()=>B("scrollable-full","Scrollable"),vt=()=>B("white-prefix","White Prefix"),Dt=()=>B("white-suffix","White Suffix"),Wn=()=>B("caption-borderless-bottom","Caption Borderless Bottom"),ie=()=>[_t(),Pt(),xt(),Rt()],le=()=>[It(),At(),Mt(),Bt()],L=()=>[Hn(),Wn(),Vn()],jn=[T("Button","Button",[f("Button",Ct(),r("enabled","Enabled","bool","BOOL",void 0,v(!0)),r("disableOnClick","Disable on click","bool","BOOL"),r("icon","Icon","string","ICON"),r("tags","Tags","string","TAGS","unmask-personal-info,modify-personal-info,personal-info-excel-download,personal-info-excel-upload")),h(),y()],[$(),w(),Ot(),B("menu-button","Menu Button"),B("link","Link Button"),_e()]),T("PopupButton","PopupButton",[f("PopupButton",Ct(),r("icon","Icon","string","ICON"),r("showHidePopup","Show/Hide Popup","string","SIMPLE_BUTTON")),f("Popup",r("popupPosition","Position","string","SELECT","LEFT:Left; CENTER:Center; RIGHT:Right",V("CENTER")),r("popupTitle","Popup Title","text","MESSAGE_TEXT"),r("popupWidth","Popup Width","int","INTEGER"),r("popupHeight","Popup Height","int","INTEGER"),r("showPopupCloseBox","Show Close Box","bool","BOOL"),r("popupMargin","Popup Margin","bool","BOOL"),r("popupSpacing","Popup Spacing","bool","BOOL"),r("popupStyleNames","Popup Style","string","ADD_STYLE")),h(),y()],[$(),w(),Ot()]),T("Label","Label",[f("Label",r("value","Text","text","MESSAGE_TEXT"),r("contentMode","Content mode","string","SELECT","TEXT:Text; PREFORMATTED:Preformatted; HTML:Html")),h(),y()],[q(),$(),Lt(),ze(),ae(),O(),_e(),H(),...L()]),T("Image","Image",[f("Image",r("source","Source","string","TEXT"),r("alternateText","Alternate text","string","TEXT")),h(),y()],[...L()]),T("Link","Link",[f("Link",r("resource","Resource","string","TEXT"),r("targetName","Target name","string","TEXT")),h(),y()],[q(),Se(),O(),_e(),...L()]),T("LinkTab","LinkTab",[f("LinkTab",r("fixed","Fixed","bool","BOOL",void 0,v(!0)),r("scrollContainer","Scroll Container","string","COMPONENT_REF","VerticalLayout,HorizontalLayout")),h(),y()]),T("ProgressBar","Progress Bar",[f("ProgressBar"),h(),y()],[O(),...L()]),T("Console","Console",[f("Console"),h(),y()],[O(),...L()]),T("NativeUpload","Native Upload",[f("NativeUpload",r("immediate","Immediate mode","bool","BOOL"),r("buttonCaption","Submit button","text","MESSAGE_TEXT"),r("cancelButtonCaption","Cancel button","text","MESSAGE_TEXT"),r("submitButtonStyleName","Submit button style","string","TEXT"),r("progressBar","ProgressBar","string","COMPONENT_REF","ProgressBar")),h(),y()],[O(),...L()]),T("AuditInfo","Audit Info",[f("AuditInfo"),h(),y()],[q(),$(),Lt(),ze(),ae(),O(),...L()]),T("AuditInfoButton","Audit Info Button",[f("AuditInfoButton",r("popupPosition","Position","string","SELECT","LEFT:Left; CENTER:Center; RIGHT:Right",V("CENTER"))),h(),y()])],Kn=[T("FlagCard","FlagCard",[f("FlagCard",r("titleDesc","Title Desc.","text","MESSAGE_TEXT"),r("html","Html","string","TEXTAREA"),r("linkCaption","Link Caption","text","MESSAGE_TEXT"),r("linkUrl","Link URL","string","TEXT"),r("linkTarget","Link Target","string","TEXT")),h(),y()]),T("Chart","Chart",[f("Chart",r("chartType","Chart Type","string","SELECT","pie:pie; doughnut:doughnut; bar:bar; horizontalBar:horizontalBar; stackedBar:stackedBar; line:line;"),r("xAxesTitle","X-Axis Title","text","MESSAGE_TEXT"),r("leftYAxesTitle","Left Y-Axis Title","text","MESSAGE_TEXT"),r("rightYAxesTitle","Right Y-Axis Title","text","MESSAGE_TEXT")),h(),y()],[J(),...ie(),O(),...L()])],wt="ALL:All;IMAGE:Image;",qn=[T("MultiFileUpload","File Upload",[f("MultiFileUpload",r("maxSize","Max size","int","INTEGER"),r("totalMaxSize","Total Max size","int","INTEGER"),r("fileType","File type","string","SELECT",wt),r("fileExtString","File exts","string","TEXT"),r("thumbnailWidth","Thumbnail Width","string","TEXT"),r("thumbnailHeight","Thumbnail Height","string","TEXT"),r("showDropMessage","Show Drop Msg.","bool","BOOL",void 0,v(!0)),r("subFolder","Sub folder","string","TEXT"),r("enableReorder","Enable reorder","bool","BOOL",void 0,v(!0))),A(),h(),y()],[O(),...L()]),T("SingleFileUpload","Single File Upload",[f("SingleFileUpload",r("maxSize","Max size","int","INTEGER"),r("fileType","File type","string","SELECT",wt),r("fileExtString","File exts","string","TEXT"),r("thumbnailWidth","Thumbnail Width","string","TEXT"),r("thumbnailHeight","Thumbnail Height","string","TEXT"),r("showDropMessage","Show Drop Msg.","bool","BOOL",void 0,v(!0)),r("subFolder","Sub folder","string","TEXT")),A(),h(),y()],[$(),O(),...L()]),T("SingleImageUpload","Single Image Upload",[f("SingleImageUpload",r("maxSize","Max size","int","INTEGER"),r("fileExtString","File exts","string","TEXT"),r("subFolder","Sub folder","string","TEXT")),A(),h(),y()],[O(),...L()]),T("NameField","Name Field",[f("NameField"),A(),h(),y()],[O(),...L()]),T("AddressField","Address Field",[f("AddressField",r("showSecondaryAddress","Secondary Addr.","bool","BOOL")),A(),h(),y()],[O(),...L()]),T("PageBuilder","Page Builder",[f("PageBuilder",r("subFolder","Image sub folder","string","TEXT")),A(),h(),y()],[w()]),T("ContentEditor","Content Editor",[f("ContentEditor"),A(),h(),y()],[w()])],Jn=[T("PageRefreshButton","PageRefreshButton",[f("PageRefreshButton"),h(),y()]),T("MultiLangExpandButton","MultiLangExpandButton",[f("MultiLangExpandButton"),h(),y()]),T("Fragment","Fragment",[f("Fragment",r("fragmentName","UI ID","string","TEXT_WITH_BUTTON"),r("openFragment","Open Fragment","string","WINDOW_OPEN_BUTTON"),r("id","ID","string","TEXT"),r("caption","Caption","text","MESSAGE_TEXT")),y()]),T("CommentList","Comment List",[f("CommentList",r("pageLength","Page Length","int","INTEGER"),r("viewMode","View Mode","bool","BOOL"),r("writerPropertyId","Writer Property ID","string","TEXT"),r("writerDataMapping","Writer Data Mapping","dataMapping","DATAMAPPING"),r("postDatePropertyId","Date Property ID","string","TEXT"),r("postDateDataMapping","Date Data Mapping","dataMapping","DATAMAPPING"),r("commentPropertyId","Cmt. Property ID","string","TEXT"),r("commentDataMapping","Cmt. Data Mapping","dataMapping","DATAMAPPING")),h(),y()]),T("SourceCodeEditor","SourceCode Editor",[f("SourceCodeEditor",r("editorMode","Editor Lang","string","SELECT","HTML:HTML; XML:XML; YAML:YAML; CSS:CSS; SCSS:SCSS; JSON:JSON; JAVA:Java; JAVASCRIPT:Javascript; JSP:JSP; PLAIN_TEXT:Plain Text; SQL:SQL; MARKDOWN:MARKDOWN; ASCIIDOC:AsciiDoc;"),r("showGutter","Show Gutter","bool","BOOL",void 0,v(!0)),r("highlightActiveLine","Highlight Line","bool","BOOL",void 0,v(!0))),A(),h(),y()],[J(),...ie(),O(),...L()]),T("MarkdownViewer","Markdown Viewer",[A(),h(),y()],[J(),...ie(),O(),...L()]),T("History","History",[h(),y()],[J(),...ie(),O(),...L()])],Zn=[T("TextFilter","Text Filter",[f("TextFilter",r("filterType","Filter Type","string","SELECT",":; LIKE:Like; EQUAL:Equal;"))]),T("NumberFilter","Number Filter",[f("NumberFilter",r("percentage","Percentage","bool","BOOL"))]),T("SelectFilter","Select Filter",[]),T("MultiSelectFilter","Multi Select Filter",[]),T("PopupSelectFilter","Popup Select Filter",[f("PopupSelect",r("buttonCaption","Button caption","text","MESSAGE_TEXT"),r("captionFieldReadOnly","Text ReadOnly","bool","BOOL",void 0,v(!0)),r("hideButton","Hide Button","bool","BOOL"))]),T("CategorySelectFilter","Category Select Filter",[f("CategorySelect",r("filterIncludesChildren","Include Children","bool","BOOL"))]),T("YesNoSelectFilter","YesNo Select Filter",[f("YesNoSelect",r("yesCaption","Yes caption","text","MESSAGE_TEXT"),r("noCaption","No caption","text","MESSAGE_TEXT"))])],Ft=":; STRING:String; LONG:Long; INTEGER:Integer; EMBEDDABLE_NAME:EmbeddableName; EMBEDDABLE_ADDRESS:EmbeddableAddress; EMBEDDABLE_TEL:EmbeddableTel",Qn=[T("Grid","Grid",[f("Grid",r("gridDef","Grid Definition","string","BUTTON"),r("entityMapping","Entity Mapping","string","TEXT_WITH_BUTTON"),r("useCheckbox","Checkbox","bool","BOOL"),r("useSerialNo","Serial No","bool","BOOL"),r("useRowEdit","Row Editable","bool","BOOL"),r("alwaysEditing","Always Editing","bool","BOOL"),r("multiSelect","Multi Select","bool","BOOL",void 0,v(!0)),r("enableReorder","Enable reorder","bool","BOOL"),r("fixedColumnCount","Fixed Col. Count","int","INTEGER"),r("maxHeight","Max Height","string","TEXT"),r("selectOnClick","Select On Click","bool","BOOL"),r("defaultColumnWidth","Default Col. Width","string","TEXT"),r("ignoreModelChangeEvent","Ignore ModelChange","bool","BOOL"),r("usePageable","Use Pageable","bool","BOOL")),f("Pivot Grid",r("pivotMode","Pivot Mode","bool","BOOL"),r("fixedRowCount","Fixed Row Count","int","INTEGER")),f("Field",r("propertyId","Property ID","string","TEXT"),r("dataMapping","Data Mapping","dataMapping","DATAMAPPING"),r("validate","Validation","validator","TEXT_WITH_BUTTON")),h(),y()],[O(),...L(),w(),...le()]),T("ColumnDef","Grid Column",[f("Grid Column",r("actualPropertyId","Property ID","string","TEXT"),r("dataMapping","Data Mapping","dataMapping","DATAMAPPING"),r("caption","Caption","text","MESSAGE_TEXT"),r("width","Width","string","TEXT"),r("expand","Expand","bool","BOOL"),r("dataSource","Data source","dataSource","TEXT_WITH_BUTTON"),r("yesCaption","Yes caption","text","MESSAGE_TEXT"),r("noCaption","No caption","text","MESSAGE_TEXT"),r("nullCaption","Null caption","text","MESSAGE_TEXT"),r("cellType","Cell Type","string","SELECT","TEXT:Text; DATE:Date; NUMBER:Number; PERCENTAGE:Percentage; CATEGORY:Category; HTML:HTML; TEXT_MULTILINE:Multiline Text;"),r("numberFormat","Number format","string","SELECT",":; #,###:1,234 (#,###); #:1234 (#); #,##0.#####:1,234.56789 (#,##0.#####); #,##0.00:1,234.00 (#,##0.00); #,##0.##%:1,234.1% (#,##0.##%); #,##0.00%:1,234.10% (#,##0.00%); currency:Currency; _CUSTOM:Custom"),r("dateFormat","Date format","string","SELECT",":; DAY:Day; MONTH:Month; YEAR:Year; HOUR:Hour; MINUTE:Minute; SECOND:Second; _CUSTOM:Custom"),r("merged","Merge","bool","BOOL")),f("Sort",r("sortable","Sort","bool","BOOL"),r("sortPropertyId","Sort Property ID","string","TEXT")),f("Cell Click",r("clickable","Clickable","bool","BOOL"),r("clickUrl","Click URL","string","TEXT"),r("clickTarget","Click Target","string","TEXT")),f("Filter/Lookup",r("filter","Filter","string","SELECT",":; TextFilter:TextFilter; NumberFilter:NumberFilter; Select:Select; MultiSelect:MultiSelect; PopupSelect:PopupSelect; CategorySelect:CategorySelect; YesNoSelect:YesNoSelect"),r("filterPropertyId","Filter Property ID","string","TEXT"),r("filterValueType","Filter Value Type","string","SELECT",Ft),r("lookupDate","Lookup (Date)","bool","BOOL"),r("lookupInput","Lookup (Input)","bool","BOOL"),r("lookupPropertyId","Lookup Property ID","string","TEXT"),r("lookupValueType","Lookup Value Type","string","SELECT",Ft),r("supportsInFilter","Supports In Filter","bool","BOOL")),f("Style",r("styleName","Cell style","string","TEXT"),r("css","Cell CSS","string","TEXT"))]),T("GridCellPanel","Grid Cell Panel",[]),T("GridControl","Grid Control",[f("Grid Control",r("grid","Grid ID","string","COMPONENT_REF","Grid"),r("useTotalCount","Total Count","bool","BOOL"),r("hideSelectedCount","Hide Selected Count","bool","BOOL"),r("useRefreshButton","Refresh","bool","BOOL"),r("useClearFilterButton","Clear Filter","bool","BOOL"),r("useExcelDownloadButton","Excel Download","bool","BOOL"),r("useAddRowButton","Add Row","bool","BOOL"),r("addRowAtBottom","Add to Bottom","bool","BOOL"),r("useRemoveRowButton","Remove Row","bool","BOOL"),r("useFilterLayerButton","Filter Layer","bool","BOOL",void 0,v(!0)),r("useColumnSettingButton","Column Setting","bool","BOOL"),r("excelDownMaxCount","Excel Max Count","int","INTEGER")),h()]),T("GridLookup","Grid Lookup",[f("Grid Lookup",r("grid","Grid ID","string","COMPONENT_REF","Grid"),r("useLookupSettingButton","Use Setting","bool","BOOL"),r("inputFilterType","Input Filter Type","string","SELECT",":; LIKE:Like; EQUAL:Equal;"),r("dateResolution","DateResolution","string","SELECT",":; DAY:Day;HOUR:Hour;MINUTE:Minute;SECOND:Second;")),h(),y()])],be=":Auto;ENUM:Enum Class;STRING:String",Ke=":; DAY:Day;HOUR:Hour;MINUTE:Minute;SECOND:Second",eo=[T("TextField","Text Field",[f("TextField",r("placeholder","Placeholder","text","MESSAGE_TEXT"),r("textType","Text Type","string","SELECT","TEXT:Text; EMAIL:Email; URL:URL; PASSWORD:Password",V("TEXT")),r("maxLength","Max Length","int","INTEGER"),r("clickable","Clickable","bool","BOOL"),r("clickUrl","Click URL","string","TEXT"),r("clickTarget","Click Target","string","TEXT"),r("prefix","Prefix","text","MESSAGE_TEXT"),r("suffix","Suffix","text","MESSAGE_TEXT"),r("autoComplete","AutoComplete","string","TEXT")),A(),h(),y()],[q(),$(),O(),w(),H(),vt(),Dt(),...L()]),T("TextArea","Text Area",[f("TextArea",r("placeholder","Placeholder","text","MESSAGE_TEXT"),r("autoResize","Auto resize","bool","BOOL",void 0,v(!0))),A(),h(),y()],[q(),$(),O(),w(),...L()]),T("StyledTextField","Styled Text Field",[f("StyledTextField"),A(),h(),y()],[...L()]),T("RichTextArea","Rich Text Area",[f("RichTextArea",r("maxSize","Image max size","int","INTEGER"),r("subFolder","Image sub folder","string","TEXT")),A(),h(),y()],[O(),...L()]),T("TelField","Tel Field",[f("TelField",r("telNotation","Notation","string","SELECT",":Default; TYPE1:Type 1; TYPE3:Type 3; TYPE1C:Type 1 + CountryCode; TYPE3C:Type3 + CountryCode"),r("placeholder","Placeholder","text","MESSAGE_TEXT")),A(),h(),y()],[q(),$(),O(),...L(),w()]),T("NumberField","Number Field",[f("NumberField",r("placeholder","Placeholder","text","MESSAGE_TEXT"),r("format","Format","string","SELECT",":; #,###:1,234 (#,###); #:1234 (#); #,##0.#####:1,234.56789 (#,##0.#####); #,##0.00:1,234.00 (#,##0.00); _CUSTOM:Custom"),r("allowNull","Allow null","bool","BOOL"),r("allowNegative","Allow negative","bool","BOOL"),r("clickable","Clickable","bool","BOOL"),r("clickUrl","Click URL","string","TEXT"),r("clickTarget","Click Target","string","TEXT"),r("percentage","Percentage","bool","BOOL"),r("prefix","Prefix","text","MESSAGE_TEXT"),r("suffix","Suffix","text","MESSAGE_TEXT")),A(),h(),y()],[q(),$(),H(),O(),...L(),w(),vt(),Dt()]),T("CurrencyField","Currency Field",[f("CurrencyField",r("placeholder","Placeholder","text","MESSAGE_TEXT"),r("allowNull","Allow null","bool","BOOL"),r("hidePrefix","Hide Prefix","bool","BOOL"),r("hideSuffix","Hide Suffix","bool","BOOL"),r("clickable","Clickable","bool","BOOL"),r("clickUrl","Click URL","string","TEXT"),r("clickTarget","Click Target","string","TEXT")),A(),h(),y()],[q(),$(),H(),O(),...L(),w()]),T("DateField","Date Field",[f("DateField",r("placeholder","Placeholder","text","MESSAGE_TEXT"),r("dateFormat","Format","string","TEXT"),r("resolution","Resolution","string","SELECT",":; DAY:Day;HOUR:Hour;MINUTE:Minute;SECOND:Second;"),r("displayResolution","Display Resolution","string","SELECT",Ke),r("truncateType","Truncate Type","string","SELECT",":; BEGIN:BEGIN; END:END;"),r("beginYearDelta","Begin Year Delta","int","INTEGER"),r("endYearDelta","End Year Delta","int","INTEGER"),r("initialHour","Initial Hour","int","INTEGER"),r("initialMinute","Initial Minute","int","INTEGER"),r("stepOfMinutes","Step of Minutes","int","INTEGER")),A(),h(),y()],[O(),...L()]),T("TimeField","Time Field",[f("TimeField",r("resolution","Resolution","string","SELECT",":; HOUR:Hour;MINUTE:Minute;SECOND:Second")),A(),h(),y()],[O(),...L()]),T("DateRange","Date Range",[f("DateRange",r("fromPlaceholder","From Placeholder","text","MESSAGE_TEXT"),r("toPlaceholder","To Placeholder","text","MESSAGE_TEXT"),r("checkDateOrder","Check Order","bool","BOOL"),r("checkDateOrderMessage","Check Msg","text","MESSAGE_TEXT"),r("resolution","Resolution","string","SELECT",Ke),r("displayResolution","Display Resolution","string","SELECT",Ke),r("selectResolution","Select Resolution","string","SELECT",":; WEEK:Week"),r("beginYearDelta","Begin Year Delta","int","INTEGER"),r("endYearDelta","End Year Delta","int","INTEGER"),r("fromPropertyId","From Property ID","string","TEXT"),r("fromDataMapping","From Data Mapping","dataMapping","DATAMAPPING"),r("toPropertyId","To Property ID","string","TEXT"),r("toDataMapping","To Data Mapping","dataMapping","DATAMAPPING"),r("stepOfMinutes","Step of Minutes","int","INTEGER"),r("dateFieldWidth","DateField Width","string","TEXT")),Un(),h(),y()],[O(),...L()]),T("CheckBox","CheckBox",[f("CheckBox",r("checked","Checked","bool","BOOL")),A(),h(),y()],[Se(),O()]),T("RadioButton","RadioButton",[f("RadioButton"),A(),h()],[O()]),T("RadioGroup","Radio Group",[f("RadioGroup",r("dataSource","Data source","dataSource","TEXT_WITH_BUTTON"),r("codeValueType","Code Value Type","string","SELECT",be)),A(),h(),y()],[Se(),We(),O(),...L()]),T("CheckBoxGroup","CheckBox Group",[f("CheckBoxGroup",r("dataSource","Data source","dataSource","TEXT_WITH_BUTTON"),r("codeValueType","Code Value Type","string","SELECT",be),r("multiSelect","MultiSelect","bool","BOOL",void 0,v(!0))),A(),h(),y()],[Se(),We(),O(),...L()]),T("YesNoGroup","YesNo Group",[f("YesNoGroup",r("yesCaption","Yes caption","text","MESSAGE_TEXT"),r("noCaption","No caption","text","MESSAGE_TEXT")),A(),h(),y()],[Se(),We(),O(),...L()]),T("Select","Select",[f("Select",r("placeholder","Placeholder","text","MESSAGE_TEXT"),r("dataSource","Data source","dataSource","TEXT_WITH_BUTTON"),r("codeValueType","Code Value Type","string","SELECT",be),r("nullSelectionAllowed","Allow null","bool","BOOL"),r("nullCaption","Null caption","text","MESSAGE_TEXT"),r("ignoreCase","Ignore case","bool","BOOL")),A(),h(),y()],[$(),O(),...L(),w()]),T("MultiSelect","Multi Select",[f("MultiSelect",r("placeholder","Placeholder","text","MESSAGE_TEXT"),r("dataSource","Data source","dataSource","TEXT_WITH_BUTTON"),r("codeValueType","Code Value Type","string","SELECT",be),r("ignoreCase","Ignore case","bool","BOOL")),A(),h(),y()],[$(),O(),...L(),w()]),T("CategorySelect","Category Select",[f("CategorySelect",r("placeholder","Placeholder","text","MESSAGE_TEXT"),r("dataSource","Data source","dataSource","TEXT_WITH_BUTTON"),r("codeValueType","Code Value Type","string","SELECT",be),r("nullSelectionAllowed","Allow null","bool","BOOL"),r("nullCaption","Null caption","text","MESSAGE_TEXT"),r("ignoreCase","Ignore case","bool","BOOL")),A(),h(),y()],[$(),O(),...L(),w()]),T("PopupSelect","Popup Select",[f("PopupSelect",r("buttonCaption","Button caption","text","MESSAGE_TEXT"),r("captionFieldReadOnly","Text ReadOnly","bool","BOOL",void 0,v(!0)),r("captionFieldViewMode","Text ViewMode","bool","BOOL"),r("hideCaptionField","Hide TextField","bool","BOOL"),r("hideButton","Hide Button","bool","BOOL")),A(),h(),y()],[O(),...L()]),T("YesNoSelect","YesNo Select",[f("YesNoSelect",r("placeholder","Placeholder","text","MESSAGE_TEXT"),r("yesCaption","Yes caption","text","MESSAGE_TEXT"),r("noCaption","No caption","text","MESSAGE_TEXT"),r("nullSelectionAllowed","Allow null","bool","BOOL"),r("nullCaption","Null caption","text","MESSAGE_TEXT"),r("ignoreCase","Ignore case","bool","BOOL")),A(),h(),y()],[$(),O(),...L(),w()]),T("ColorField","Color Field",[f("ColorField"),A(),h(),y()],[$(),O(),w(),H(),...L()])],to=[T("VerticalLayout","Vertical Layout",[f("Vertical Layout",r("margin","Margin","bool","BOOL"),r("spacing","Spacing","bool","BOOL"),r("enableChildDragAndDrop","Enable DnD","bool","BOOL"),r("dragAndDropPositionMarkSize","DnD mark size","int","INTEGER")),h(),y(),Me(),Ye()],[ae(),Be(),je(),J(),...ie(),...le(),O(),H(),B("shadow","Shadow")]),T("HorizontalLayout","Horizontal Layout",[f("Horizontal Layout",r("margin","Margin","bool","BOOL"),r("spacing","Spacing","bool","BOOL"),r("enableChildDragAndDrop","Enable DnD","bool","BOOL"),r("dragAndDropPositionMarkSize","DnD mark size","int","INTEGER")),h(),y(),Me(),Ye()],[ae(),Be(),je(),J(),...ie(),...le(),O(),H(),B("shadow","Shadow")]),T("FormLayout","Form Layout",[f("Form Layout",r("columnCount","Column count","int","INTEGER")),h(),y(),Me(),Ae("Layout",r("colspan","Column Span","int","INTEGER"),r("takeOneRow","Merge Row","bool","BOOL"),r("hideCaptionCell","Hide Caption","bool","BOOL"),r("formCaption","Form Caption","text","MESSAGE_TEXT"),r("delegateDescription","Delegate Desc.","bool","BOOL"))],[Nt(),w(),...le(),B("exclude-adjust-caption-width","Exclude Adjust Caption Width"),B("gray-caption","Gray Caption"),B("fixed-column-height","Fixed Column Height"),B("shadow","Shadow"),H(),$()]),T("CardLayout","Card Layout",[f("Card Layout",r("margin","Margin","bool","BOOL"),r("spacing","Spacing","bool","BOOL"),r("collapsible","Collapsible","bool","BOOL",void 0,v(!0)),r("collapsed","Collapsed","bool","BOOL")),h(),y(),Me(),Ye()],[ae(),Be(),zn(),H(),B("dashboard-card","Dashboard Card")]),T("ActionLayout","Action Layout",[f("Action Layout",r("margin","Margin","bool","BOOL")),h(),y(),Ae("Layout",r("componentAlignment","Align","string","ALIGN"))],[B("top-action","Top Action"),ae(),J(),_t(),Pt(),xt(),Rt(),H()]),T("ActionLayoutArea","Action Layout Area",[Ae("Layout",r("componentAlignment","Align","string","ALIGN"))]),T("TableLayout","Table Layout",[f("Table Layout",r("rowCount","Row count","int","INTEGER"),r("colCount","Column count","int","INTEGER")),h(),y()],[B("grid","Grid style"),w(),It(),At(),Mt(),Bt(),O(),H(),B("shadow","Shadow")]),T("TableLayoutCell","Table Layout Cell",[f("Table Layout Cell",r("cellId","Cell ID","string","TEXT"),r("contentMode","Content mode","string","SELECT","TEXT:Text; HTML:Html"),r("caption","Text","text","MESSAGE_TEXTAREA"),r("addStyleNames","Style","string","ADD_STYLE"),r("mergeSameValueVertical","Merge Vertical","bool","BOOL"),r("clickable","Clickable","bool","BOOL")),y()],[B("header","Header"),q(),Yn(),_e(),ze(),w(),...le(),H()]),T("FlowLayout","Flow Layout",[f("Flow Layout",r("margin","Margin","bool","BOOL"),r("spacing","Spacing","bool","BOOL")),h(),y()],[J(),...ie(),H(),B("shadow","Shadow")]),T("ExpansionLayout","Expansion Layout",[f("Expansion Layout",r("collapsed","Collapsed","bool","BOOL"),r("bodyVisible","Body Visible","bool","BOOL")),h(),y()],[w(),...le(),H(),B("shadow","Shadow")]),T("InternalLayoutArea","",[])],no=[T("ListField","List Field",[f("List Field",r("listFieldDef","ListField Definition","string","BUTTON"),r("margin","Margin","bool","BOOL"),r("spacing","Spacing","bool","BOOL"),r("useCheckbox","Checkbox","bool","BOOL",void 0,v(!0)),r("multiSelect","Multi Select","bool","BOOL",void 0,v(!0)),r("showEmptyMsg","Show Empty Msg","bool","BOOL",void 0,v(!0))),f("Field",r("propertyId","Property ID","string","TEXT"),r("dataMapping","Data Mapping","dataMapping","DATAMAPPING"),r("validate","Validation","validator","TEXT_WITH_BUTTON")),h(),y()],[ae(),Be(),O(),...L(),w(),...le(),Nt()]),T("ListControl","List Control",[f("List Control",r("listField","ListField ID","string","COMPONENT_REF","ListField"),r("useAddRowButton","Add Row","bool","BOOL"),r("useRemoveRowButton","Remove Row","bool","BOOL"),r("useExpandAllButton","Expand All","bool","BOOL"),r("useTotalCount","Total Count","bool","BOOL"),r("useSelectedCount","Selected Count","bool","BOOL")),h()])],se=()=>[r("langPropertyId","Lang property","string","TEXT"),r("langDataMapping","Lang Data Mapping","dataMapping","DATAMAPPING"),r("textPropertyId","Text property","string","TEXT"),r("textDataMapping","Text Data Mapping","dataMapping","DATAMAPPING")],ce=(e="Item Class")=>[r("itemClass",e,"string","TEXT_WITH_BUTTON"),r("expandFields","Expand","bool","BOOL"),r("popupMode","Popup Mode","bool","BOOL")],oo=[T("MultiLangTextField","Multi Lang TextField",[f("MultiLangTextField",...se(),r("placeholder","Placeholder","text","MESSAGE_TEXT"),...ce()),A(),h(),y()]),T("MultiLangTextArea","Multi Lang TextArea",[f("MultiLangTextArea",...se(),r("placeholder","Placeholder","text","MESSAGE_TEXT"),...ce()),A(),h(),y()]),T("MultiLangStyledTextField","Multi Lang StyledTextField",[f("MultiLangStyledTextField",...se(),...ce()),A(),h(),y()]),T("MultiLangRichTextArea","Multi Lang RichTextArea",[f("MultiLangRichTextArea",...se(),...ce()),A(),h(),y()]),T("MultiLangPageBuilder","Multi Lang PageBuilder",[f("MultiLangPageBuilder",r("subFolder","Image sub folder","string","TEXT"),...se(),...ce()),A(),h(),y()]),T("MultiLangContentEditor","Multi Lang ContentEditor",[f("MultiLangContentEditor",...se(),...ce()),A(),h(),y()]),T("MultiLangFileUpload","Multi Lang FileUpload",[f("MultiLangFileUpload",...se(),...ce("Item type")),f("FileUpload",r("maxSize","Max size","int","INTEGER"),r("fileType","File type","string","SELECT","ALL:All;IMAGE:Image;"),r("fileExtString","File exts","string","TEXT"),r("thumbnailWidth","Thumbnail Width","string","TEXT"),r("thumbnailHeight","Thumbnail Height","string","TEXT")),A(),h(),y()])],ro=[T("Tree","Tree",[f("Tree",r("nullSelectionAllowed","Allow null","bool","BOOL",void 0,v(!0))),h(),y()],[J(),je(),O(),...L()]),T("TreeControl","TreeControl",[f("TreeControl",r("tree","Tree ID","string","COMPONENT_REF","Tree"),r("useAddButton","Add","bool","BOOL"),r("useRemoveButton","Remove","bool","BOOL"),r("useExpandButton","Expand","bool","BOOL"),r("useMoveUpButton","Move Up","bool","BOOL"),r("useMoveDownButton","Move Down","bool","BOOL"),r("useSaveOrderButton","Save order","bool","BOOL")),h(),y()]),T("TabSheet","Tab Sheet",[h(),y()]),T("TabSheetPanel","Tab Sheet Panel",[])],Gt=[...to,...jn,...eo,...qn,...oo,...Qn,...ro,...Zn,...no,...Kn,...Jn],ao={VerticalLayout:{role:"open"},HorizontalLayout:{role:"open"},CardLayout:{role:"open"},FormLayout:{role:"open"},FlowLayout:{role:"open"},ActionLayoutArea:{role:"open"},InternalLayoutArea:{role:"open",arity:{max:1}},TableLayoutCell:{role:"open",arity:{max:1}},TabSheetPanel:{role:"open",arity:{max:1}},GridCellPanel:{role:"open",arity:{max:1}},ListField:{role:"open",arity:{max:1}},ActionLayout:{role:"fixed",fixedChildren:["ActionLayoutArea"],arity:{min:2,max:2}},ExpansionLayout:{role:"fixed",fixedChildren:["InternalLayoutArea"],arity:{min:2,max:2}},TableLayout:{role:"fixed",fixedChildren:["TableLayoutCell"]},PopupButton:{role:"fixed",fixedChildren:["VerticalLayout"],arity:{min:1,max:1}},AuditInfoButton:{role:"fixed",fixedChildren:["VerticalLayout"],arity:{min:1,max:1}},Grid:{role:"fixed",fixedChildren:["ColumnDef"]},TabSheet:{role:"fixed",fixedChildren:["TabSheetPanel"]},Button:{role:"leaf"},Label:{role:"leaf"},Image:{role:"leaf"},Link:{role:"leaf"},LinkTab:{role:"leaf"},ProgressBar:{role:"leaf"},Console:{role:"leaf"},NativeUpload:{role:"leaf"},AuditInfo:{role:"leaf"},TextField:{role:"leaf"},TextArea:{role:"leaf"},StyledTextField:{role:"leaf"},RichTextArea:{role:"leaf"},TelField:{role:"leaf"},NumberField:{role:"leaf"},CurrencyField:{role:"leaf"},DateField:{role:"leaf"},TimeField:{role:"leaf"},DateRange:{role:"leaf"},CheckBox:{role:"leaf"},RadioButton:{role:"leaf"},RadioGroup:{role:"leaf"},CheckBoxGroup:{role:"leaf"},YesNoGroup:{role:"leaf"},Select:{role:"leaf"},MultiSelect:{role:"leaf"},CategorySelect:{role:"leaf"},PopupSelect:{role:"leaf"},YesNoSelect:{role:"leaf"},ColorField:{role:"leaf"},MultiFileUpload:{role:"leaf"},SingleFileUpload:{role:"leaf"},SingleImageUpload:{role:"leaf"},NameField:{role:"leaf"},AddressField:{role:"leaf"},PageBuilder:{role:"leaf"},ContentEditor:{role:"leaf"},MultiLangTextField:{role:"leaf"},MultiLangTextArea:{role:"leaf"},MultiLangStyledTextField:{role:"leaf"},MultiLangRichTextArea:{role:"leaf"},MultiLangPageBuilder:{role:"leaf"},MultiLangContentEditor:{role:"leaf"},MultiLangFileUpload:{role:"leaf"},ColumnDef:{role:"leaf"},GridControl:{role:"leaf"},GridLookup:{role:"leaf"},Tree:{role:"leaf"},TreeControl:{role:"leaf"},TextFilter:{role:"leaf"},NumberFilter:{role:"leaf"},SelectFilter:{role:"leaf"},MultiSelectFilter:{role:"leaf"},PopupSelectFilter:{role:"leaf"},CategorySelectFilter:{role:"leaf"},YesNoSelectFilter:{role:"leaf"},ListControl:{role:"leaf"},FlagCard:{role:"leaf"},Chart:{role:"leaf"},PageRefreshButton:{role:"leaf"},MultiLangExpandButton:{role:"leaf"},Fragment:{role:"leaf"},CommentList:{role:"leaf"},SourceCodeEditor:{role:"leaf"},MarkdownViewer:{role:"leaf"},History:{role:"leaf"}},Xt={Label:"value"};function $t(e){const t=e.category??(Oe(e.partType)?ve[e.partType]:void 0);let o=e.captionProp;o==null&&(Xt[e.partType]!=null?o=Xt[e.partType]:e.groups.some(a=>a.items.some(s=>s.id==="caption"))&&(o="caption"));const n=e.containment??(Oe(e.partType)?ao[e.partType]:void 0),i={...e,groups:e.groups};return t!=null&&(i.category=t),o!=null&&(i.captionProp=o),n!=null&&(i.containment=n),i}function io(e,t){var o,n,i,a;if(e==null)return"warn";switch(e.role){case"leaf":return"deny";case"fixed":return(o=e.fixedChildren)!=null&&o.includes(t)?"allow":"deny";case"open":{if((n=e.deny)!=null&&n.includes(t))return"deny";if(!(e.allow!=null&&e.allow.length>0||e.allowCategories!=null&&e.allowCategories.length>0)||(i=e.allow)!=null&&i.includes(t))return"allow";const c=Oe(t)?ve[t]:void 0;return c!=null&&((a=e.allowCategories)!=null&&a.includes(c))?"allow":"deny"}}}function Ut(e){const t=new Map;for(const n of e)t.set(n.partType,$t(n));const o=[...t.keys()];return{get:n=>t.get(n),all:()=>o.map(n=>t.get(n)),propertyItem:(n,i)=>{const a=t.get(n);if(a)for(const s of a.groups){const c=s.items.find(d=>d.id===i);if(c)return c}},canContain:(n,i)=>{var a;return io((a=t.get(n))==null?void 0:a.containment,i)}}}function Ht(e=Gt){return Ut(e)}function lo(e,t={}){const o=new Map;for(const n of e.all())o.set(n.partType,n);for(const n of[...t.add??[],...t.override??[]])o.set(n.partType,$t(n));for(const n of t.remove??[])o.delete(n);return Ut([...o.values()])}const so={TEXT:"text",TEXTAREA:"text",FULL_TEXTAREA:"text",ICON:"text",MESSAGE_TEXT:"multilang",MESSAGE_TEXTAREA:"multilang",INTEGER:"int",BOOL:"bool",SELECT:"enum",SIZE:"enum",TAGS:"tags"};function co(e){return e?e.split(";").map(t=>t.trim()).filter(t=>t.length>0).map(t=>{const o=t.indexOf(":");return o<0?{value:t,label:t}:{value:t.slice(0,o).trim(),label:t.slice(o+1).trim()}}):[]}function uo(e){return e?e.split(",").map(t=>t.trim()).filter(t=>t.length>0).map(t=>({value:t,label:t})):[]}function po(e){var t;return((t=e.agent)==null?void 0:t.expose)??kt[e.editor]}function fo(e){var n,i,a;const t=so[e.editor]??"text",o={id:e.id,valueType:e.valueType,kind:t};if((n=e.agent)!=null&&n.description&&(o.description=e.agent.description),t==="enum"){const s=((a=(i=e.agent)==null?void 0:i.enum)==null?void 0:a.map(c=>({value:c,label:c})))??co(e.param);s.length>0&&(o.options=s)}else if(t==="tags"){const s=uo(e.param);s.length>0&&(o.options=s)}return o}function go(e){const t=[],o=[];for(const n of e??[])if(n.kind==="toggle")o.push({css:n.css,label:n.label});else{const i=He(n.dim),a=n.only?i.filter(s=>n.only.includes(s)):i;t.push({dim:n.dim,tokens:a})}return{dims:t,toggles:o}}function To(e){const t=[];let o=!1;for(const s of e.groups)for(const c of s.items)if(c.editor!=="ADD_STYLE"){if(c.editor==="ALIGN"){o=!0;continue}po(c)&&t.push(fo(c))}const{dims:n,toggles:i}=go(e.styles),a={partType:e.partType,attrs:t,styleDims:n,styleToggles:i};return e.category!=null&&(a.category=e.category),e.captionProp!=null&&(a.captionProp=e.captionProp),o&&(a.slotAlign=He("slotAlign")),a}function Vt(e){const t=new Map,o=[];for(const n of e.all())t.set(n.partType,To(n)),o.push(n.partType);return{get:n=>t.get(n),all:()=>o.map(n=>t.get(n))}}const Yt=["part.add","part.update","part.remove"],qe=4,mo={type:"object",description:"요소 지정 핸들. id(파트 UUID) 우선, path(예: FormLayout[0]/TextField[2]) 보조, caption(사람 라벨) 최후. 모호하면 서버가 후보를 돌려주니 describeScreen으로 먼저 읽어 핸들을 확정하라.",properties:{ref:{type:"string",description:"매칭할 id/경로/캡션 문자열."},by:{type:"string",enum:["id","path","caption"],description:"매칭 축 고정(미지정 시 id→path→caption 순)."}},required:["ref"],additionalProperties:!1},Eo={type:"object",description:'locale→text 맵(예: {ko:"주문", en:"Order"}).',properties:{ko:{type:"string"},en:{type:"string"},ja:{type:"string"},zh:{type:"string"}},additionalProperties:!1},ho={type:"object",description:"메시지 카탈로그 키 참조(레거시 #{key}). 런타임에 key 조회.",properties:{key:{type:"string"},locale:{type:"string"}},required:["key"],additionalProperties:!1},yo={description:"다국어 텍스트: 평문 문자열 | locale 맵 | 메시지 키 참조.",anyOf:[{type:"string"},{$ref:"#/$defs/multiLangString"},{$ref:"#/$defs/multiLangMessage"}]},So={description:"kind로 판별되는 타입드 값.",anyOf:[{type:"object",properties:{kind:{const:"string"},value:{type:"string"}},required:["kind","value"],additionalProperties:!1},{type:"object",properties:{kind:{const:"int"},value:{type:"integer"}},required:["kind","value"],additionalProperties:!1},{type:"object",properties:{kind:{const:"bool"},value:{type:"boolean"}},required:["kind","value"],additionalProperties:!1},{type:"object",properties:{kind:{const:"text"},value:{$ref:"#/$defs/multiLang"}},required:["kind","value"],additionalProperties:!1},{type:"object",description:"SELECT/SIZE 등 저장값 직접 방출(라벨 아님 — toAgentCatalog options의 value).",properties:{kind:{const:"enum"},value:{type:"string"}},required:["kind","value"],additionalProperties:!1}]},bo={type:"object",description:"한 속성 지정. id는 카탈로그 PropertyItem.id(agent 노출 항목).",properties:{id:{type:"string"},value:{$ref:"#/$defs/propValue"}},required:["id","value"],additionalProperties:!1},ko={type:"object",description:"중립 의미 토큰(G1). resolver가 token→css(.bs-*)로 lowering — 원시 CSS 방출 금지.",properties:{dim:{type:"string",description:"스타일 차원(예: bgColor·size)."},token:{type:"string",description:"의미 토큰(예: blue·lg)."}},required:["dim","token"],additionalProperties:!1};function Co(e){const t={partType:{type:"string",description:"파트 종류(예: FormLayout·Grid·TextField)."},props:{type:"array",description:"타입드 속성(순서 무관).",items:{$ref:"#/$defs/propAssign"}},styles:{type:"array",description:"중립 스타일 토큰(G1 — slotAlign 포함, dim의 source가 하강 타깃 결정).",items:{$ref:"#/$defs/styleAssign"}}};return e<qe&&(t.children={type:"array",description:`inline-fold 자식 서브트리(깊이 ${e+1}). 더 깊은 중첩은 별도 part.add 배치로.`,items:{$ref:`#/$defs/partSpecL${e+1}`}}),{type:"object",description:e===0?"추가할 파트(및 inline-fold 자식). 신규 서브트리 자식은 별도 op가 아니라 여기 children에 담아라.":`깊이 ${e}의 inline-fold 자식 스펙.`,properties:t,required:["partType"],additionalProperties:!1}}function Oo(){const e={};for(let t=0;t<=qe;t++)e[`partSpecL${t}`]=Co(t);return e}function Je(e,t){return{type:"object",properties:{kind:{const:e},...t.properties},required:["kind",...t.required],additionalProperties:!1}}const Lo={"part.add":Je("part.add",{properties:{parent:{description:"추가 대상 부모 핸들. null이면 루트에 추가.",anyOf:[{$ref:"#/$defs/handle"},{type:"null"}]},spec:{$ref:"#/$defs/partSpecL0"},index:{type:"integer",description:"부모 children 내 삽입 위치(미지정 시 말미)."}},required:["parent","spec"]}),"part.update":Je("part.update",{properties:{target:{$ref:"#/$defs/handle"},props:{type:"array",items:{$ref:"#/$defs/propAssign"},description:"갱신할 속성(부분)."},styles:{type:"array",items:{$ref:"#/$defs/styleAssign"},description:"갱신할 스타일 토큰(부분)."}},required:["target"]}),"part.remove":Je("part.remove",{properties:{target:{$ref:"#/$defs/handle"}},required:["target"]})},zt={anyOf:Yt.map(e=>Lo[e])},Io={type:"object",description:"화면 파트 트리를 생성·수정·삭제할 때 호출한다. ops는 사람 핸들(id·path·caption)로 지정하며 서버가 partId로 해소한다. 모호하면 에러로 후보를 돌려주니 describeScreen으로 현재 화면을 먼저 읽어 핸들을 확정하라.",properties:{ops:{type:"array",items:{$ref:"#/$defs/symbolicOp"}}},required:["ops"],additionalProperties:!1,$defs:{handle:mo,multiLang:yo,multiLangString:Eo,multiLangMessage:ho,propValue:So,propAssign:bo,styleAssign:ko,...Oo(),symbolicOp:zt}},Ao=new Set(["minimum","maximum","exclusiveMinimum","exclusiveMaximum","multipleOf","minLength","maxLength","pattern","minItems","maxItems","uniqueItems","contains","minContains","maxContains","minProperties","maxProperties","oneOf","not","if","then","else","patternProperties","propertyNames","dependentSchemas","dependentRequired"]);function de(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Mo(e){return e.type==="object"||"properties"in e}function te(e,t,o,n){if(Array.isArray(e)){e.forEach((i,a)=>te(i,`${t}[${a}]`,!1,n));return}if(de(e)){!o&&("$defs"in e||"definitions"in e)&&n.push({rule:"nested-$defs",path:t,detail:"$defs는 최상위에만 허용된다."});for(const i of Object.keys(e))Ao.has(i)&&n.push({rule:"unsupported-keyword",path:`${t}.${i}`,detail:`미지원 키워드 '${i}'.`});if(Mo(e)&&e.additionalProperties!==!1&&n.push({rule:"missing-additional-properties-false",path:t,detail:"object 스키마는 additionalProperties:false 이어야 한다."}),de(e.properties))for(const[i,a]of Object.entries(e.properties))te(a,`${t}.properties.${i}`,!1,n);if(te(e.items,`${t}.items`,!1,n),te(e.anyOf,`${t}.anyOf`,!1,n),te(e.allOf,`${t}.allOf`,!1,n),de(e.additionalProperties)&&te(e.additionalProperties,`${t}.additionalProperties`,!1,n),o&&de(e.$defs))for(const[i,a]of Object.entries(e.$defs))te(a,`$defs.${i}`,!1,n)}}const Bo=/^#\/\$defs\/(.+)$/;function Pe(e,t,o,n){if(Array.isArray(e)){e.forEach(i=>Pe(i,t,o,n));return}if(de(e)){for(const[i,a]of Object.entries(e))if(i!=="$defs")if(i==="$ref"&&typeof a=="string")if(a==="#"||a==="#/")o.add("#");else{const s=Bo.exec(a);s&&(t.has(s[1])?o.add(s[1]):n.push(a))}else Pe(a,t,o,n)}}function _o(e,t){const o=de(e.$defs)?e.$defs:{},n=new Set(Object.keys(o)),i=[],a=new Map,s=new Set;Pe({...e,$defs:void 0},n,s,i),a.set("#",s);for(const E of n){const k=new Set;Pe(o[E],n,k,i),a.set(E,k)}for(const E of i)t.push({rule:"dangling-$ref",path:E,detail:`존재하지 않는 $defs 참조: ${E}.`});const c=0,d=1,u=2,g=new Map;for(const E of a.keys())g.set(E,c);const S=new Set,m=(E,k)=>{g.set(E,d),k.push(E);for(const x of a.get(E)??[])if(a.has(x))if(g.get(x)===d){const U=k.indexOf(x),b=k.slice(U).concat(x),C=b.join("->");S.has(C)||(S.add(C),t.push({rule:"recursion",path:b.join(" -> "),detail:`재귀 스키마($ref 사이클)는 엄격 서브셋 미지원: ${b.join(" -> ")}.`}))}else g.get(x)===c&&m(x,k);k.pop(),g.set(E,u)};for(const E of a.keys())g.get(E)===c&&m(E,[])}function Wt(e){const t=[];return te(e,"",!0,t),de(e)&&_o(e,t),t}function Po(e){return Wt(e).length===0}const xo=/^(.+)\[(\d+)\]$/;function Ze(e,t){const o=Ge(e,t);if(!o)return;const n=[];for(let i=1;i<o.length;i++){const a=o[i-1],s=o[i],c=(a.children??[]).filter(d=>d.partType===s.partType);n.push(`${s.partType}[${c.indexOf(s)}]`)}return n.join("/")}function ge(e,t){var i;if(!t)return;const o=(i=t.get(e.partType))==null?void 0:i.captionProp;if(!o)return;const n=e.attrs[o];if(n&&(n.kind==="string"||n.kind==="text"&&typeof n.value=="string"))return n.value}function Ro(e,t,o){const n={partId:o.partId,path:Ze(e,o.partId)??""},i=ge(o,t);return i!=null&&(n.caption=i),n}function No(e,t){let o;return W(e,n=>{n.partId===t&&(o=n.partId)}),o}function vo(e,t){let o=e;for(const n of t.split("/")){const i=xo.exec(n.trim());if(!i||!o)return;const[,a,s]=i;if(o=(o.children??[]).filter(d=>d.partType===a)[Number(s)],!o)return}return o===e||o==null?void 0:o.partId}function Do(e,t,o){const n=[];return W(e,i=>{ge(i,t)===o&&n.push(i)}),n}function xe(e,t){const o=t.root;if(!o)return{ok:!1,issue:{kind:"handle-not-found",ref:e.ref,by:e.by}};const n=()=>No(o,e.ref),i=()=>vo(o,e.ref),a=()=>{const c=Do(o,t.catalog,e.ref);if(c.length===1)return{ok:!0,partId:c[0].partId};if(c.length>1)return{ok:!1,issue:{kind:"handle-ambiguous",ref:e.ref,candidates:c.map(d=>Ro(o,t.catalog,d))}}};if(e.by==="id"){const c=n();return c?{ok:!0,partId:c}:{ok:!1,issue:{kind:"handle-not-found",ref:e.ref,by:"id"}}}if(e.by==="path"){const c=i();return c?{ok:!0,partId:c}:{ok:!1,issue:{kind:"handle-not-found",ref:e.ref,by:"path"}}}if(e.by==="caption")return a()??{ok:!1,issue:{kind:"handle-not-found",ref:e.ref,by:"caption"}};const s=n()??i();return s?{ok:!0,partId:s}:a()??{ok:!1,issue:{kind:"handle-not-found",ref:e.ref}}}function wo(e){switch(e.kind){case"string":return V(e.value);case"int":return De(e.value);case"bool":return v(e.value);case"text":return we(e.value);case"enum":return V(e.value)}}function jt(e,t,o){const n={},i={};for(const s of e??[])n[s.id]=wo(s.value);const a=[];for(const s of t??[]){const c=$e[s.dim];if(!c){o.push({kind:"unknown-style-dim",dim:s.dim});continue}const d=Tt(s.dim,s.token);if(d===void 0){o.push({kind:"unknown-style-token",dim:s.dim,token:s.token});continue}d!==""&&(c.source==="style"?a.push(d):i[c.legacyDimId]=V(d))}return a.length>0&&(n.addStyleNames=V(a.join(" "))),{attrs:n,layoutAttrs:i}}function Kt(e,t,o){const{attrs:n,layoutAttrs:i}=jt(e.props,e.styles,o),a={partId:t(),partType:e.partType,attrs:n};return Object.keys(i).length>0&&(a.layoutAttrs=i),e.children&&e.children.length>0&&(a.children=e.children.map(s=>Kt(s,t,o))),a}function Fo(e,t={}){const o=t.newId??ue,n=[],i=[];for(const a of e)if(a.kind==="part.add"){let s=null;if(a.parent!==null){const u=xe(a.parent,t);if(!u.ok){n.push(u.issue);continue}s=u.partId}const c=Kt(a.spec,o,n),d={kind:"part.add",parentId:s,part:c};a.index!=null&&(d.index=a.index),i.push(d)}else if(a.kind==="part.update"){const s=xe(a.target,t);if(!s.ok){n.push(s.issue);continue}const{attrs:c,layoutAttrs:d}=jt(a.props,a.styles,n);i.push({kind:"part.update",targetId:s.partId,attrs:c,layoutAttrs:d})}else{const s=xe(a.target,t);if(!s.ok){n.push(s.issue);continue}i.push({kind:"part.remove",targetId:s.partId})}return{ops:i,issues:n}}const Go=Object.keys({"part.add":!0,"part.update":!0,"part.move":!0,"part.remove":!0});function Qe(e){switch(e.kind){case"part.add":case"part.remove":return e.parentRef?[e.parentRef]:[];case"part.update":return e.partRef?[e.partRef]:[];case"part.move":{const t=new Set;return e.fromParentRef&&t.add(e.fromParentRef),e.toParentRef&&t.add(e.toParentRef),[...t]}}}class et{constructor(t){G(this,"undoStack",[]);G(this,"redoStack",[]);G(this,"savePoint",null);G(this,"listeners",new Set);G(this,"commandListeners",new Set);G(this,"coalesceSealed",!1);this.state=t}execute(t){t.apply(this.state);const o=this.undoStack.at(-1),n=!this.coalesceSealed&&t.coalesceKey!=null&&!!o&&o.coalesceKey===t.coalesceKey;this.coalesceSealed=!1,n?(t.invert=o.invert,this.undoStack[this.undoStack.length-1]=t):this.undoStack.push(t),this.redoStack=[],this.emitCommand(t,"do",n),this.emit()}undo(){const t=this.undoStack.pop();t&&(t.invert(this.state),this.redoStack.push(t),this.emitCommand(t,"undo",!1),this.emit())}redo(){const t=this.redoStack.pop();t&&(t.apply(this.state),this.undoStack.push(t),this.emitCommand(t,"redo",!1),this.emit())}sealCoalesce(){this.coalesceSealed=!0}get canUndo(){return this.undoStack.length>0}get canRedo(){return this.redoStack.length>0}markSavePoint(){this.savePoint=this.undoStack.at(-1)??null,this.emit()}get isDirty(){return(this.undoStack.at(-1)??null)!==this.savePoint}onChange(t){return this.listeners.add(t),()=>this.listeners.delete(t)}onCommand(t){return this.commandListeners.add(t),()=>this.commandListeners.delete(t)}emit(){for(const t of this.listeners)t()}emitCommand(t,o,n){for(const i of this.commandListeners)i(t,o,n)}}function Te(e,t){const o=z(e.root,t);if(!o)throw new Error(`파트 없음: ${t}`);return o}function tt(e,t){var i;const o=he(e.root,t),n=((i=o==null?void 0:o.children)==null?void 0:i.findIndex(a=>a.partId===t))??-1;if(!o||n<0)throw new Error(`파트를 찾을 수 없거나 root라 이동/삭제 불가: ${t}`);return{parent:o,index:n}}function qt(e,t){return e==null?t:Math.max(0,Math.min(e,t))}function Jt(e,t,o){let n=-1;return{label:`파트 추가: ${t.partType}`,apply(i){const a=Te(i,e),s=a.children??(a.children=[]);n=qt(o,s.length),s.splice(n,0,t)},invert(i){var c;const a=z(i.root,e),s=((c=a==null?void 0:a.children)==null?void 0:c.findIndex(d=>d.partId===t.partId))??-1;s>=0&&a.children.splice(s,1)},emitOps(){return{forward:[{kind:"part.add",casUnit:"part",parentRef:e,index:n,value:t}],invert:[{kind:"part.remove",casUnit:"part",partRef:t.partId,parentRef:e}]}}}}function Zt(e,t){const o=Object.keys(t),n={},i={};return{label:"파트 수정",apply(a){const s=Te(a,e);for(const c of o)i[c]=c in s,n[c]=s[c];Object.assign(s,t)},invert(a){const s=Te(a,e);for(const c of o)i[c]?s[c]=n[c]:delete s[c]},emitOps(){return{forward:[{kind:"part.update",casUnit:"part",partRef:e,patch:{...t}}],invert:[{kind:"part.update",casUnit:"part",partRef:e,patch:{...n}}]}}}}function Qt(e,t,o){let n=null;return{label:"파트 이동",coalesceKey:`move:${e}`,apply(i){const a=tt(i,e),s=a.parent.children[a.index];a.parent.children.splice(a.index,1);const c=Te(i,t),d=c.children??(c.children=[]),u=qt(o,d.length);d.splice(u,0,s),n={fromParentId:a.parent.partId,fromIndex:a.index,node:s,toIndex:u}},invert(i){if(!n)return;const a=tt(i,e);a.parent.children.splice(a.index,1);const s=Te(i,n.fromParentId);(s.children??(s.children=[])).splice(n.fromIndex,0,n.node)},emitOps(){return n?{forward:[{kind:"part.move",casUnit:"part",partRef:e,fromParentRef:n.fromParentId,toParentRef:t,index:n.toIndex}],invert:[{kind:"part.move",casUnit:"part",partRef:e,fromParentRef:t,toParentRef:n.fromParentId,index:n.fromIndex}]}:{forward:[],invert:[]}}}}function en(e){let t=null;return{label:"파트 삭제",apply(o){const n=tt(o,e);t={parentId:n.parent.partId,index:n.index,node:n.parent.children[n.index]},n.parent.children.splice(n.index,1)},invert(o){if(!t)return;const n=Te(o,t.parentId);(n.children??(n.children=[])).splice(t.index,0,t.node)},emitOps(){return t?{forward:[{kind:"part.remove",casUnit:"part",partRef:e,parentRef:t.parentId}],invert:[{kind:"part.add",casUnit:"part",parentRef:t.parentId,index:t.index,value:t.node}]}:{forward:[],invert:[]}}}}class tn{constructor(){G(this,"revs",new Map)}seed(t){this.revs.clear();for(const[o,n]of Object.entries(t.revs??{}))this.revs.set(o,n)}rev(t){return this.revs.get(t)??0}setRev(t,o){this.revs.set(t,o)}deleteRev(t){this.revs.delete(t)}snapshot(){return{revs:Object.fromEntries(this.revs)}}}class nn{constructor(t){G(this,"cache",new tn);G(this,"newClientOpId");G(this,"debounceMs");G(this,"emissions",new WeakMap);G(this,"open",null);G(this,"debounceHandle",null);G(this,"queue",[]);G(this,"sending",!1);G(this,"_frozen",!1);G(this,"stack",null);G(this,"settledWaiters",[]);this.opts=t,this.newClientOpId=t.newClientOpId??ue,this.debounceMs=t.debounceMs??300}seed(t){this.cache.seed(t)}attach(t){this.stack=t;const o=t.onCommand((n,i,a)=>this.handle(n,i,a));return()=>{o(),this.stack===t&&(this.stack=null)}}get frozen(){return this._frozen}get hasPending(){return this.open!==null||this.queue.length>0||this.sending}cacheSnapshot(){return this.cache.snapshot()}flush(){this.flushOpen(!0)}whenSettled(){return this.hasPending?new Promise(t=>this.settledWaiters.push(t)):Promise.resolve()}handle(t,o,n){var s;if(this._frozen)return;let i;if(o==="do"){const c=(s=t.emitOps)==null?void 0:s.call(t,this.opts.state);if(!c)throw new Error(`op-mode에서 emitOps 미구현 command 실행: ${t.label}`);i=c}else{const c=this.emissions.get(t);if(!c)throw new Error(`op-mode ${o} 대상 command의 emission 미기록: ${t.label}`);i=c}const a=o==="undo"?i.invert:i.forward;if(o==="do"&&n&&this.open&&this.open.coalesceKey===t.coalesceKey){this.open.fwd=a,this.emissions.set(t,{forward:a,invert:this.open.inv}),this.resetDebounce();return}if(this.flushOpen(!1),o==="do"&&(this.emissions.set(t,i),t.coalesceKey!=null)){this.open={coalesceKey:t.coalesceKey,fwd:a,inv:i.invert},this.startDebounce();return}a.length&&this.enqueue(this.buildBatch(a,i,o))}flushOpen(t){var n;this.cancelDebounce();const o=this.open;this.open=null,o&&o.fwd.length&&this.enqueue(this.buildBatch(o.fwd,{forward:o.fwd,invert:o.inv},"do")),t&&((n=this.stack)==null||n.sealCoalesce())}startDebounce(){this.cancelDebounce(),this.debounceHandle=setTimeout(()=>{this.debounceHandle=null,this.flushOpen(!0)},this.debounceMs)}resetDebounce(){this.startDebounce()}cancelDebounce(){this.debounceHandle!=null&&(clearTimeout(this.debounceHandle),this.debounceHandle=null)}buildBatch(t,o,n){const i={},a=new Set;for(const c of t)for(const d of Qe(c))a.add(d);if(a.size){i.revs={};for(const c of a){const d=this.cache.rev(c);i.revs[c]=d,this.cache.setRev(c,d+1)}}const s=n==="undo"?o.forward:o.invert;for(const c of t)if(c.kind==="part.add"&&c.value)W(c.value,d=>this.cache.setRev(d.partId,0));else if(c.kind==="part.remove"&&c.partRef){const d=s.find(u=>{var g;return u.kind==="part.add"&&((g=u.value)==null?void 0:g.partId)===c.partRef});d!=null&&d.value?W(d.value,u=>this.cache.deleteRev(u.partId)):this.cache.deleteRev(c.partRef)}return{modelId:this.opts.modelId,ops:t,cas:i,origin:this.opts.origin??"gui",clientOpId:this.newClientOpId()}}enqueue(t){this.queue.push(t),this.pump()}async pump(){var n,i;if(this.sending||this._frozen)return;const t=this.queue.shift();if(!t){this.notifySettled();return}this.sending=!0;let o=null;try{o=await this.opts.transport(t)}catch(a){this.sending=!1,console.error("[op-sync] op 전송 실패 → 하드 프리즈(kind:missing):",a),(i=(n=this.opts).onError)==null||i.call(n,a),this.freeze({kind:"missing"});return}this.sending=!1,o.ok?(this.reconcile(o),this.pump()):this.freeze(o.conflict)}reconcile(t){if(!(this.queue.length>0))for(const[o,n]of Object.entries(t.revs))this.cache.setRev(o,n)}freeze(t){var o,n;this._frozen=!0,this.queue.length=0,this.open=null,this.cancelDebounce(),(n=(o=this.opts).onFreeze)==null||n.call(o,t),this.notifySettled()}notifySettled(){if(this.hasPending)return;const t=this.settledWaiters;this.settledWaiters=[];for(const o of t)o()}}function Xo(e){switch(e.kind){case"string":return e.value;case"int":return e.value;case"bool":return e.value;case"text":return e.value;default:return}}function $o(e){var i;const t={},o=e.attrs.addStyleNames;if((o==null?void 0:o.kind)==="string"&&o.value)for(const a of o.value.split(/\s+/).filter(Boolean)){const s=Ue(a);s&&(t[s.dim]=s.token)}const n=(i=e.layoutAttrs)==null?void 0:i.componentAlignment;if((n==null?void 0:n.kind)==="string"&&n.value){const a=mt("slotAlign",n.value);a&&(t.slotAlign=a)}return t}function on(e,t,o,n){var d;const i=((d=n.get(e.partType))==null?void 0:d.attrs)??[],a={};for(const u of i){const g=e.attrs[u.id];if(g===void 0)continue;const S=Xo(g);S!==void 0&&(a[u.id]=S)}Object.assign(a,$o(e));const s={id:e.partId,partType:e.partType,path:Ze(t,e.partId)??"",attrs:a,children:(e.children??[]).map(u=>on(u,t,o,n))},c=ge(e,o);return c!=null&&(s.caption=c),s}function Uo(e,t){const o=Vt(t);return on(e,e,t,o)}function rn(e){switch(e.kind){case"part.add":{const t={kind:"part.add",casUnit:"part",value:e.part};return e.parentId!=null&&(t.parentRef=e.parentId),e.index!=null&&(t.index=e.index),t}case"part.update":{const t={};return Object.keys(e.attrs).length>0&&(t.attrs=e.attrs),Object.keys(e.layoutAttrs).length>0&&(t.layoutAttrs=e.layoutAttrs),{kind:"part.update",casUnit:"part",partRef:e.targetId,patch:t}}case"part.remove":return{kind:"part.remove",casUnit:"part",partRef:e.targetId}}}function Ho(e,t,o,n={}){const i=n.mkClientOpId??ue,a=o.map(rn),s=new Set;for(const d of a)for(const u of Qe(d))s.add(u);const c={};if(s.size>0){c.revs={};for(const d of s)c.revs[d]=t[d]??0}return{modelId:e,ops:a,cas:c,origin:n.origin??"agent",clientOpId:i()}}const ke=Symbol("uiEditorController");function an(e="FormLayout"){return{partId:ue(),partType:e,attrs:{},children:[]}}function Vo(e=an(),t={}){var Z,Ce;const o=t.catalog??Ht(),n=t.modelId??"ui-model",i=l.reactive({root:e});let a=new et(i);const s=l.ref(!1),c=l.ref(!1),d=l.ref(!1),u=l.ref(0),g=l.ref(((Z=t.meta)==null?void 0:Z.schemaVersion)??1),S=l.ref(((Ce=t.meta)==null?void 0:Ce.opWriteEnabled)??!1),m=l.computed(()=>g.value>=2&&S.value),E=l.ref(!(g.value>=2&&S.value===!1)),k=l.ref(null),x=l.ref(null),U=l.computed(()=>x.value?z(i.root,x.value)??null:null),b=l.ref(null);let C=0,N=t.meta;function X(){a.onChange(()=>{s.value=a.canUndo,c.value=a.canRedo,d.value=a.isDirty,u.value++})}X();let R=null,I=null;function F(){I==null||I(),I=null,R=null}function Ne(){if(F(),!m.value||!t.opTransport)return;const M=new nn({modelId:n,state:i,transport:t.opTransport,origin:"gui",newClientOpId:t.newClientOpId,onFreeze:P=>{E.value=!1,k.value=P},onError:t.onOpError});M.seed((N==null?void 0:N.revSeed)??{}),I=M.attach(a),R=M}Ne();const _=l.computed(()=>st(i.root,o)),oe=l.computed(()=>{const M=new Map;for(const P of _.value){if(!P.targetRef)continue;const Q=M.get(P.targetRef);Q?Q.push(P):M.set(P.targetRef,[P])}return M}),D=M=>{E.value&&a.execute(M)};function Y(M,P){const Q=z(i.root,M);return Q?o.canContain(Q.partType,P)!=="deny":!1}return{state:i,catalog:o,issues:_,issuesByRef:oe,canUndo:s,canRedo:c,dirty:d,revision:u,editable:E,setEditable(M){E.value=M?m.value||g.value<2:!1},schemaVersion:g,opWriteEnabled:S,opMode:m,opConflict:k,selection:x,selectedPart:U,select(M){x.value=M},focusRequest:b,requestFocus(M){b.value={id:M,nonce:++C}},addPart(M,P,Q){return!E.value||!Y(M,P.partType)?!1:(D(Jt(M,P,Q)),x.value=P.partId,!0)},updatePart(M,P){return!E.value||!z(i.root,M)?!1:(D(Zt(M,P)),!0)},movePart(M,P,Q){if(!E.value)return!1;const at=z(i.root,M);return!at||z(at,P)||!Y(P,at.partType)?!1:(D(Qt(M,P,Q)),!0)},removePart(M){return!E.value||M===i.root.partId||!z(i.root,M)?!1:(D(en(M)),x.value===M&&(x.value=null),!0)},undo(){E.value&&a.undo()},redo(){E.value&&a.redo()},markSaved(){R==null||R.flush(),a.markSavePoint()},loadModel(M,P){F(),i.root=M,a=new et(i),X(),g.value=(P==null?void 0:P.schemaVersion)??1,S.value=(P==null?void 0:P.opWriteEnabled)??!1,E.value=!(g.value>=2&&S.value===!1),N=P,k.value=null,x.value=null,s.value=a.canUndo,c.value=a.canRedo,d.value=a.isDirty,Ne()},flush(){R==null||R.flush()},whenOpsSettled(){return(R==null?void 0:R.whenSettled())??Promise.resolve()}}}const Yo={class:"ui-schematic-head"},zo={class:"ui-schematic-type"},Wo={key:0,class:"ui-schematic-caption"},jo={key:0,class:"ui-schematic-drop-hint"},Ko=l.defineComponent({__name:"SchematicPart",props:{partType:{},category:{},caption:{},partName:{},selected:{type:Boolean},container:{type:Boolean},empty:{type:Boolean},bodyStyle:{}},setup(e){return(t,o)=>(l.openBlock(),l.createElementBlock("div",{class:l.normalizeClass(["ui-schematic-part",[`ui-cat-${e.category??"unknown"}`,{"is-selected":e.selected,"is-container":e.container}]])},[l.createElementVNode("div",Yo,[l.createElementVNode("span",zo,l.toDisplayString(e.partName??e.partType),1),e.caption?(l.openBlock(),l.createElementBlock("span",Wo,l.toDisplayString(e.caption),1)):l.createCommentVNode("",!0)]),e.container?(l.openBlock(),l.createElementBlock("div",{key:0,class:"ui-schematic-body",style:l.normalizeStyle(e.bodyStyle)},[l.renderSlot(t.$slots,"default",{},void 0,!0),e.empty?(l.openBlock(),l.createElementBlock("span",jo,"여기에 드롭")):l.createCommentVNode("",!0)],4)):l.createCommentVNode("",!0)],2))}}),ne=(e,t)=>{const o=e.__vccOpts||e;for(const[n,i]of t)o[n]=i;return o},nt=ne(Ko,[["__scopeId","data-v-cc7b7e1c"]]);function ln(e,t){var s;const o=ge(e,t);if(o!=null)return o;const n=(s=t==null?void 0:t.get(e.partType))==null?void 0:s.captionProp;if(!n)return;const i=Fe(e.attrs[n]);if(i==null)return;if(typeof i=="string")return i||void 0;if(Le(i))return`#{${i.key}}`;const a=Object.values(i)[0];return typeof a=="string"&&a?a:void 0}function ot(e,t){const o=t.get(e.partType),n={partType:e.partType};(o==null?void 0:o.category)!=null&&(n.category=o.category),(o==null?void 0:o.partName)!=null&&(n.partName=o.partName);const i=ln(e,t);return i!=null&&(n.caption=i),n}function sn(e){var o;const t=new Map;for(const n of e.all()){const i=(o=n.containment)==null?void 0:o.role;t.set(n.partType,{component:nt,propBind:a=>ot(a,e),acceptsChildren:i!=="leaf"})}return t}function cn(e,t,o){const n=e.get(t.partType);return n||{component:nt,propBind:i=>ot(i,o),acceptsChildren:!0}}const qo={CONTAIN:"담김",ARITY:"개수",DUP:"중복",ATTR:"속성",PART:"파트"};function Jo(e){const t=e.split("-")[1];return t?qo[t]??t:e}function Zo(e){return e.contextRef}function dn(e,t,o){if(o==="into")return{parentId:t};const n=he(e,t);if(!(n!=null&&n.children))return null;const i=n.children.findIndex(a=>a.partId===t);return i<0?null:{parentId:n.partId,index:o==="after"?i+1:i}}function Qo(e,t){const o=t.orientation==="horizontal"?e.x:e.y;return t.container?t.hasParent?o<.3?"before":o>.7?"after":"into":"into":o<.5?"before":"after"}function un(e,t,o,n){const i=he(e,t);if((i==null?void 0:i.partId)===o&&i.children){const a=i.children.findIndex(s=>s.partId===t);if(a>=0&&a<n)return n-1}return n}const er={VerticalLayout:"flex-col",HorizontalLayout:"flex-row",FormLayout:"form",FlowLayout:"flex-wrap",CardLayout:"card",ActionLayout:"action",ActionLayoutArea:"flex-row",TableLayout:"table",TableLayoutCell:"slot",ExpansionLayout:"expansion",InternalLayoutArea:"slot",TabSheet:"tabs",TabSheetPanel:"slot",Grid:"grid",PopupButton:"popup",AuditInfoButton:"stack",GridCellPanel:"slot",ListField:"slot"};function tr(e){return er[e]??"stack"}function pn(e){switch(e){case"flex-row":case"flex-wrap":case"action":case"form":case"table":case"grid":return"horizontal";default:return"vertical"}}function nr(e){const t=fn(e);return t.kind==="grid"?{display:"flex",flexDirection:"row",flexWrap:"wrap",gap:"4px",alignItems:"flex-start"}:t.style}function fn(e){const t=tr(e.partType),o=e.attrs,n=Ee(o.spacing,!1)?"8px":void 0,i=Ee(o.margin,!1)?"8px":void 0,a={};let s,c;switch(t){case"flex-col":Object.assign(a,{display:"flex",flexDirection:"column"}),n&&(a.gap=n);break;case"flex-row":Object.assign(a,{display:"flex",flexDirection:"row",alignItems:"center"}),n&&(a.gap=n);break;case"flex-wrap":Object.assign(a,{display:"flex",flexDirection:"row",flexWrap:"wrap",alignItems:"center"}),a.gap=n??"6px";break;case"action":Object.assign(a,{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center"}),a.gap=n??"8px";break;case"form":{s=Math.max(1,K(o.columnCount,1)),Object.assign(a,{display:"grid",gridTemplateColumns:`repeat(${s}, minmax(0, 1fr))`,gap:n??"8px",alignItems:"center"});break}case"table":{s=Math.max(1,K(o.colCount,1)),c=Math.max(1,K(o.rowCount,1)),Object.assign(a,{display:"grid",gridTemplateColumns:`repeat(${s}, minmax(0, 1fr))`,gap:n??"6px"});break}case"expansion":Object.assign(a,{display:"flex",flexDirection:"column"});break;case"stack":Object.assign(a,{display:"flex",flexDirection:"column"}),n&&(a.gap=n);break;case"slot":a.display="block";break}return i&&t!=="card"&&t!=="tabs"&&t!=="grid"&&t!=="popup"&&(a.padding=i),{kind:t,style:a,columns:s,rows:c}}const gn=new Set(["LEFT","CENTER","RIGHT"]),Tn=new Set(["TOP","MIDDLE","BOTTOM"]),Re={LEFT:"flex-start",CENTER:"center",RIGHT:"flex-end",TOP:"flex-start",MIDDLE:"center",BOTTOM:"flex-end"};function or(e,t){const o={},n=e.layoutAttrs,i=K(n==null?void 0:n.expandRatio,0),a=me(n==null?void 0:n.componentAlignment).toUpperCase(),s=t==="flex-col",c=t==="flex-row"||t==="flex-wrap"||t==="action",d=t==="form"||t==="table";if(i>0&&(s||c)&&(o.flex=`${i} 1 0%`),a&&(s?gn.has(a)?o.alignSelf=Re[a]:a==="TOP"?o.marginBottom="auto":a==="BOTTOM"?o.marginTop="auto":a==="MIDDLE"&&(o.marginTop="auto",o.marginBottom="auto"):c?Tn.has(a)?o.alignSelf=Re[a]:a==="LEFT"?o.marginRight="auto":a==="RIGHT"?o.marginLeft="auto":a==="CENTER"&&(o.marginLeft="auto",o.marginRight="auto"):d&&(gn.has(a)?o.justifySelf=Re[a]:Tn.has(a)&&(o.alignSelf=Re[a]))),t==="form"){const u=K(n==null?void 0:n.colspan,0);if(Ee(n==null?void 0:n.takeOneRow,!1))o.gridColumn="1 / -1";else if((n==null?void 0:n.column)!==void 0){const g=K(n==null?void 0:n.column,0)+1;o.gridColumn=u>1?`${g} / span ${u}`:`${g} / span 1`}else u>1&&(o.gridColumn=`span ${u}`);(n==null?void 0:n.row)!==void 0&&(o.gridRowStart=String(K(n==null?void 0:n.row,0)+1))}return o}const rr=["draggable"],ar=ne(l.defineComponent({__name:"PartCanvas",props:{node:{},registry:{},parentId:{},index:{},parentKind:{}},setup(e){const t=e,o=l.inject(ke);if(!o)throw new Error("PartCanvas: EDITOR 컨트롤러가 provide되지 않았습니다");const n=o,i=l.computed(()=>t.registry??sn(n.catalog)),a=l.computed(()=>t.node??n.state.root),s=l.computed(()=>cn(i.value,a.value,n.catalog)),c=l.computed(()=>s.value.propBind(a.value)),d=l.computed(()=>s.value.acceptsChildren!==!1),u=l.computed(()=>n.selection.value===a.value.partId),g=l.computed(()=>d.value&&!(a.value.children&&a.value.children.length)),S=l.computed(()=>t.parentId!=null),m=l.computed(()=>d.value?fn(a.value):void 0),E=l.computed(()=>{var _;return(_=m.value)==null?void 0:_.kind}),k=l.computed(()=>d.value?nr(a.value):void 0),x=l.computed(()=>t.parentKind?or(a.value,t.parentKind):{}),U=l.computed(()=>pn(t.parentKind)==="horizontal"),b=l.ref(null);function C(_){const D=_.currentTarget.getBoundingClientRect(),Y=D.width?(_.clientX-D.left)/D.width:.5,Z=D.height?(_.clientY-D.top)/D.height:.5;return Qo({x:Y,y:Z},{container:d.value,hasParent:t.parentId!=null,orientation:pn(t.parentKind)})}function N(_){_.preventDefault(),_.stopPropagation(),b.value=C(_)}function X(){b.value=null}function R(_){var oe;_.stopPropagation(),(oe=_.dataTransfer)==null||oe.setData("partId",a.value.partId),_.dataTransfer&&(_.dataTransfer.effectAllowed="move")}function I(_){_.stopPropagation(),n.select(a.value.partId)}function F(_){return dn(n.state.root,a.value.partId,_)}function Ne(_){var Ce,M;_.preventDefault(),_.stopPropagation();const oe=b.value??C(_);b.value=null;const D=F(oe);if(!D)return;const Y=(Ce=_.dataTransfer)==null?void 0:Ce.getData("partId"),Z=(M=_.dataTransfer)==null?void 0:M.getData("partType");if(Y){const P=D.index==null?void 0:un(n.state.root,Y,D.parentId,D.index);n.movePart(Y,D.parentId,P)}else Z&&n.addPart(D.parentId,{partId:ue(),partType:Z,attrs:{},children:[]},D.index)}return(_,oe)=>{const D=l.resolveComponent("PartCanvas",!0);return l.openBlock(),l.createElementBlock("div",{class:l.normalizeClass(["ui-canvas-node",{"is-drop-into":b.value==="into","is-drop-before":b.value==="before","is-drop-after":b.value==="after","is-haxis":U.value}]),style:l.normalizeStyle(x.value),draggable:S.value,onClick:I,onDragstart:R,onDragover:N,onDragleave:X,onDrop:Ne},[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(s.value.component),l.mergeProps(c.value,{selected:u.value,container:d.value,empty:g.value,"body-style":k.value}),{default:l.withCtx(()=>[d.value?(l.openBlock(!0),l.createElementBlock(l.Fragment,{key:0},l.renderList(a.value.children??[],(Y,Z)=>(l.openBlock(),l.createBlock(D,{key:Y.partId,node:Y,registry:i.value,"parent-id":a.value.partId,index:Z,"parent-kind":E.value},null,8,["node","registry","parent-id","index","parent-kind"]))),128)):l.createCommentVNode("",!0)]),_:1},16,["selected","container","empty","body-style"]))],46,rr)}}}),[["__scopeId","data-v-9df8ebc1"]]),ir={class:"ui-palette"},lr={class:"ui-palette__title"},sr={class:"ui-palette__list"},cr=["title","onDragstart"],dr=ne(l.defineComponent({__name:"PartPalette",setup(e){const t=l.inject(ke);if(!t)throw new Error("PartPalette: EDITOR 컨트롤러가 provide되지 않았습니다");const o=t,n=l.computed(()=>{const a=new Map;for(const s of o.catalog.all()){const c=s.category??"기타",d=a.get(c);d?d.push(s):a.set(c,[s])}return[...a.entries()]});function i(a,s){var c;(c=a.dataTransfer)==null||c.setData("partType",s.partType),a.dataTransfer&&(a.dataTransfer.effectAllowed="copy")}return(a,s)=>(l.openBlock(),l.createElementBlock("div",ir,[(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(n.value,([c,d])=>(l.openBlock(),l.createElementBlock("section",{key:c,class:"ui-palette__group"},[l.createElementVNode("h4",lr,l.toDisplayString(c),1),l.createElementVNode("ul",sr,[(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(d,u=>(l.openBlock(),l.createElementBlock("li",{key:u.partType,class:"ui-palette__item",draggable:"true",title:u.partType,onDragstart:g=>i(g,u)},l.toDisplayString(u.partName),41,cr))),128))])]))),128))]))}}),[["__scopeId","data-v-ba70ed30"]]),ur=["title"],pr={key:1,class:"ui-mlang"},fr={class:"ui-mlang__tabs",role:"tablist"},gr=["aria-selected","onClick"],Tr={key:0,class:"ui-mlang__dot"},mr=["name","placeholder","value"],Er=["name","placeholder","value"],mn=ne(l.defineComponent({__name:"MultiLangTextField",props:{modelValue:{},name:{},languages:{default:()=>["ko","en","ja","zh"]},defaultLang:{},multiline:{type:Boolean,default:!1},placeholder:{}},emits:["update:modelValue"],setup(e,{emit:t}){const o=e,n=t,i=l.computed(()=>Le(o.modelValue)),a=l.computed(()=>Le(o.modelValue)?o.modelValue.key:"");function s(){const m=o.defaultLang;return m&&o.languages.includes(m)?m:o.languages[0]??"ko"}const c=l.ref(s());l.watch(()=>[o.languages,o.defaultLang],()=>{o.languages.includes(c.value)||(c.value=s())});const d=l.computed(()=>{const m=o.modelValue;return m==null||i.value?{}:typeof m=="string"?m.trim()?{[c.value]:m}:{}:m});function u(m){var E;return!!((E=d.value[m])!=null&&E.trim())}const g=l.computed(()=>d.value[c.value]??"");function S(m){const E={...d.value};m.trim()===""?delete E[c.value]:E[c.value]=m,n("update:modelValue",E)}return(m,E)=>i.value?(l.openBlock(),l.createElementBlock("code",{key:0,class:"ui-mlang__key",title:`메시지 키: ${a.value}`},"#"+l.toDisplayString("{")+l.toDisplayString(a.value)+l.toDisplayString("}"),9,ur)):(l.openBlock(),l.createElementBlock("div",pr,[l.createElementVNode("div",fr,[(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(e.languages,k=>(l.openBlock(),l.createElementBlock("button",{key:k,type:"button",class:l.normalizeClass(["ui-mlang__tab",{"is-active":c.value===k}]),role:"tab","aria-selected":c.value===k,onClick:x=>c.value=k},[l.createTextVNode(l.toDisplayString(k),1),u(k)?(l.openBlock(),l.createElementBlock("span",Tr,"•")):l.createCommentVNode("",!0)],10,gr))),128))]),e.multiline?(l.openBlock(),l.createElementBlock("textarea",{key:0,name:`${e.name}-${c.value}`,class:"ui-mlang__input",rows:"3",placeholder:e.placeholder,value:g.value,onInput:E[0]||(E[0]=k=>S(k.target.value))},null,40,mr)):(l.openBlock(),l.createElementBlock("input",{key:1,name:`${e.name}-${c.value}`,class:"ui-mlang__input",type:"text",placeholder:e.placeholder,value:g.value,onInput:E[1]||(E[1]=k=>S(k.target.value))},null,40,Er))]))}}),[["__scopeId","data-v-fa16ddef"]]),hr={class:"ui-inline-issue__mark","aria-hidden":"true"},yr={class:"ui-inline-issue__msgs"},rt=ne(l.defineComponent({__name:"InlineIssueBadge",props:{controller:{},refId:{}},setup(e){const t=e,o={error:{order:0,mark:"⛔"},warning:{order:1,mark:"⚠"},info:{order:2,mark:"ℹ"}},n=l.computed(()=>t.refId?t.controller.issuesByRef.value.get(t.refId)??[]:[]),i=l.computed(()=>{let a=null;for(const s of n.value)(a===null||o[s.severity].order<o[a].order)&&(a=s.severity);return a});return(a,s)=>i.value?(l.openBlock(),l.createElementBlock("p",{key:0,class:l.normalizeClass(["ui-inline-issue",`is-${i.value}`])},[l.createElementVNode("span",hr,l.toDisplayString(o[i.value].mark),1),l.createElementVNode("span",yr,[(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(n.value,(c,d)=>(l.openBlock(),l.createElementBlock("span",{key:d},l.toDisplayString(c.message),1))),128))])],2)):l.createCommentVNode("",!0)}}),[["__scopeId","data-v-a0454177"]]),Sr={class:"ui-props"},br={key:0,class:"ui-props__empty"},kr={class:"ui-props__head"},Cr={class:"ui-props__type"},Or={class:"ui-props__id"},Lr=["disabled"],Ir={class:"ui-props__group-title"},Ar=["title"],Mr={class:"ui-props__field"},Br=["checked","onChange"],_r=["value","onChange"],Pr=["value","onChange"],xr=["value"],Rr=["value","onChange"],Nr={key:5,class:"ui-props__readonly"},vr=["value","onChange"],Dr=ne(l.defineComponent({__name:"PropertyPanel",setup(e){const t=l.inject(ke);if(!t)throw new Error("PropertyPanel: EDITOR 컨트롤러가 provide되지 않았습니다");const o=t,n=l.computed(()=>o.selectedPart.value),i=l.computed(()=>n.value?o.catalog.get(n.value.partType):void 0),a=new Set(["SELECT","ALIGN","ADD_STYLE","SIZE","ICON"]),s=new Set(["TEXTAREA","FULL_TEXTAREA","MESSAGE_TEXTAREA"]),c=new Set(["COMPONENT_REF","DATASOURCE","DATAMAPPING","COMMENT","CASE_MESSAGES","BUTTON","SIMPLE_BUTTON","WINDOW_OPEN_BUTTON","TEXT_RO_WITH_BUTTON"]);function d(b){return c.has(b.editor)?"readonly":b.valueType==="bool"?"bool":b.valueType==="int"?"int":b.valueType==="text"?"text":b.valueType==="validator"||b.valueType==="dataSource"||b.valueType==="dataMapping"?"readonly":a.has(b.editor)?"select":s.has(b.editor)?"textarea":"string"}function u(b){var N;const C=n.value;if(C)return b.layoutAttr?(N=C.layoutAttrs)==null?void 0:N[b.id]:C.attrs[b.id]}function g(b,C){const N=n.value;if(N)if(b.layoutAttr){const X={...N.layoutAttrs??{}};C===void 0?delete X[b.id]:X[b.id]=C,o.updatePart(N.partId,{layoutAttrs:X})}else{const X={...N.attrs};C===void 0?delete X[b.id]:X[b.id]=C,o.updatePart(N.partId,{attrs:X})}}function S(b,C){g(b,C===""?void 0:V(C))}function m(b,C){g(b,C===""?void 0:De(Number(C)))}function E(b,C){g(b,v(C))}function k(b,C){const N=typeof C=="object"&&!("key"in C)&&Object.keys(C).length===0;g(b,N||C===""?void 0:we(C))}function x(b){var X;const C=(b.param??"").split(";").map(R=>R.trim()).filter(Boolean).map(R=>{const I=R.indexOf(":");return I<0?{value:R,label:R}:{value:R.slice(0,I),label:R.slice(I+1)}}),N=(X=b.agent)==null?void 0:X.enum;return N?C.filter(R=>N.includes(R.value)):C}function U(b){const C=u(b);if(!C)return"—";switch(C.kind){case"string":case"dataSource":case"dataMapping":return C.value;case"int":return String(C.value);case"bool":return C.value?"true":"false";default:return`(${C.kind})`}}return(b,C)=>{var N,X;return l.openBlock(),l.createElementBlock("div",Sr,[n.value?(l.openBlock(),l.createElementBlock(l.Fragment,{key:1},[l.createElementVNode("header",kr,[l.createElementVNode("span",Cr,l.toDisplayString(((N=i.value)==null?void 0:N.partName)??n.value.partType),1),l.createElementVNode("code",Or,l.toDisplayString(n.value.partId),1)]),l.createVNode(rt,{controller:l.unref(o),"ref-id":n.value.partId},null,8,["controller","ref-id"]),l.createElementVNode("fieldset",{class:"ui-props__form",disabled:!l.unref(o).editable.value},[(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(((X=i.value)==null?void 0:X.groups)??[],R=>(l.openBlock(),l.createElementBlock("section",{key:R.name,class:"ui-props__group"},[l.createElementVNode("h4",Ir,l.toDisplayString(R.name),1),(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(R.items,I=>(l.openBlock(),l.createElementBlock("div",{key:I.id,class:"ui-props__row"},[l.createElementVNode("label",{class:"ui-props__label",title:I.id},l.toDisplayString(I.name),9,Ar),l.createElementVNode("div",Mr,[d(I)==="bool"?(l.openBlock(),l.createElementBlock("input",{key:0,type:"checkbox",checked:l.unref(Ee)(u(I)),onChange:F=>E(I,F.target.checked)},null,40,Br)):d(I)==="int"?(l.openBlock(),l.createElementBlock("input",{key:1,type:"number",class:"ui-props__input",value:u(I)?l.unref(K)(u(I)):"",onChange:F=>m(I,F.target.value)},null,40,_r)):d(I)==="text"?(l.openBlock(),l.createBlock(mn,{key:2,name:I.id,"model-value":l.unref(Fe)(u(I)),multiline:I.editor==="MESSAGE_TEXTAREA","onUpdate:modelValue":F=>k(I,F)},null,8,["name","model-value","multiline","onUpdate:modelValue"])):d(I)==="select"?(l.openBlock(),l.createElementBlock("select",{key:3,class:"ui-props__input",value:l.unref(me)(u(I)),onChange:F=>S(I,F.target.value)},[C[0]||(C[0]=l.createElementVNode("option",{value:""},"—",-1)),(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(x(I),F=>(l.openBlock(),l.createElementBlock("option",{key:F.value,value:F.value},l.toDisplayString(F.label),9,xr))),128))],40,Pr)):d(I)==="textarea"?(l.openBlock(),l.createElementBlock("textarea",{key:4,class:"ui-props__input",rows:"3",value:l.unref(me)(u(I)),onChange:F=>S(I,F.target.value)},null,40,Rr)):d(I)==="readonly"?(l.openBlock(),l.createElementBlock("span",Nr,l.toDisplayString(U(I)),1)):(l.openBlock(),l.createElementBlock("input",{key:6,type:"text",class:"ui-props__input",value:l.unref(me)(u(I)),onChange:F=>S(I,F.target.value)},null,40,vr))])]))),128))]))),128))],8,Lr)],64)):(l.openBlock(),l.createElementBlock("p",br,"선택된 파트가 없습니다"))])}}}),[["__scopeId","data-v-74030a51"]]),wr={class:"ui-tree-node"},Fr={class:"ui-tree-type"},Gr={key:0,class:"ui-tree-caption"},Xr=ne(l.defineComponent({__name:"PartTree",props:{node:{},depth:{}},setup(e){const t=e,o=l.inject(ke);if(!o)throw new Error("PartTree: EDITOR 컨트롤러가 provide되지 않았습니다");const n=o,i=l.computed(()=>t.node??n.state.root),a=l.computed(()=>t.depth??0),s=l.computed(()=>ge(i.value,n.catalog)),c=l.computed(()=>n.selection.value===i.value.partId);return(d,u)=>{const g=l.resolveComponent("PartTree",!0);return l.openBlock(),l.createElementBlock("div",wr,[l.createElementVNode("button",{type:"button",class:l.normalizeClass(["ui-tree-row",{"is-selected":c.value}]),style:l.normalizeStyle({paddingLeft:`${a.value*14+6}px`}),onClick:u[0]||(u[0]=S=>l.unref(n).select(i.value.partId))},[l.createElementVNode("span",Fr,l.toDisplayString(i.value.partType),1),s.value?(l.openBlock(),l.createElementBlock("span",Gr,l.toDisplayString(s.value),1)):l.createCommentVNode("",!0)],6),l.createVNode(rt,{controller:l.unref(n),"ref-id":i.value.partId},null,8,["controller","ref-id"]),(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(i.value.children??[],S=>(l.openBlock(),l.createBlock(g,{key:S.partId,node:S,depth:a.value+1},null,8,["node","depth"]))),128))])}}}),[["__scopeId","data-v-cfddebcf"]]),j="ui-modeler-preview";function En(e,t){return{channel:j,type:"render",model:e,revision:t}}function $r(){return{channel:j,type:"ready"}}function Ur(e){return{channel:j,type:"resize",height:e}}function Hr(e){return{channel:j,type:"error",message:e}}function Vr(e){return{channel:j,type:"select",partId:e}}function hn(e){return{channel:j,type:"highlight",partId:e}}function yn(e){return{channel:j,type:"catalog",messages:e}}function Yr(e,t,o,n){return{channel:j,type:"drop",dragKind:e,payload:t,targetPartId:o,zone:n}}function Sn(e){return typeof e=="object"&&e!==null&&e.channel===j&&typeof e.type=="string"}const zr=new Set(["ready","resize","error","select","drop"]),Wr=new Set(["render","highlight","catalog"]);function bn(e){return Sn(e)&&zr.has(e.type)}function jr(e){return Sn(e)&&Wr.has(e.type)}const Kr={class:"ui-iframe-preview__box"},qr=["src"],Jr=ne(l.defineComponent({__name:"IframePreview",props:{model:{},revision:{default:0},selection:{default:null},messages:{default:void 0},src:{},targetOrigin:{default:"/"}},emits:["error","ready","select","addPart","movePart"],setup(e,{emit:t}){const o=e,n=t,i=l.ref(null),a=l.ref(0);let s=!1;function c(){var E;const m=(E=i.value)==null?void 0:E.contentWindow;if(!(!m||!s))try{const k=JSON.parse(JSON.stringify(o.model));m.postMessage(En(k,o.revision),o.targetOrigin)}catch(k){n("error",k instanceof Error?k.message:String(k))}}function d(){var E;const m=(E=i.value)==null?void 0:E.contentWindow;!m||!s||m.postMessage(hn(o.selection??null),o.targetOrigin)}function u(){var E;const m=(E=i.value)==null?void 0:E.contentWindow;!m||!s||m.postMessage(yn(o.messages??{}),o.targetOrigin)}function g(m){var E;if(m.source===((E=i.value)==null?void 0:E.contentWindow)&&bn(m.data))switch(m.data.type){case"ready":s=!0,u(),c(),d(),n("ready");break;case"resize":a.value=m.data.height;break;case"error":n("error",m.data.message);break;case"select":n("select",m.data.partId);break;case"drop":S(m.data);break}}function S(m){const E=m.targetPartId==null?{parentId:o.model.partId}:dn(o.model,m.targetPartId,m.zone);if(E)if(m.dragKind==="move"){const k=E.index==null?void 0:un(o.model,m.payload,E.parentId,E.index);n("movePart",m.payload,E.parentId,k)}else n("addPart",E.parentId,m.payload,E.index)}return l.onMounted(()=>window.addEventListener("message",g)),l.onBeforeUnmount(()=>window.removeEventListener("message",g)),l.watch(()=>[o.model,o.revision],()=>c(),{deep:!1}),l.watch(()=>o.selection,()=>d()),l.watch(()=>o.messages,()=>u()),(m,E)=>(l.openBlock(),l.createElementBlock("div",Kr,[l.createElementVNode("iframe",{ref_key:"frame",ref:i,class:"ui-iframe-preview",src:e.src,style:l.normalizeStyle(a.value?{height:a.value+"px"}:void 0),title:"실 미리보기"},null,12,qr)]))}}),[["__scopeId","data-v-063e5619"]]);p.AGENT_EXPOSE_DEFAULT=kt,p.APPLY_UI_OPS_INPUT_SCHEMA=Io,p.BUILTIN_PART_DEFS=Gt,p.CASE_MSG_CAPTION=An,p.CommandStack=et,p.EDITOR=ke,p.IframePreview=Jr,p.InlineIssueBadge=rt,p.MAX_INLINE_DEPTH=qe,p.MultiLangTextField=mn,p.OP_KINDS=Go,p.OpSyncAdapter=nn,p.PART_CATEGORY=ve,p.PART_TYPES=it,p.PART_TYPES_BY_CATEGORY=ee,p.PREVIEW_CHANNEL=j,p.PROPERTY_EDITORS=$n,p.PartCanvas=ar,p.PartPalette=dr,p.PartTree=Xr,p.PropertyPanel=Dr,p.RevCache=tn,p.STYLE_TOKENS=re,p.STYLE_TOKEN_DIM_META=$e,p.SYMBOLIC_OP_KINDS=Yt,p.SYMBOLIC_OP_SCHEMA=zt,p.SchematicPart=nt,p.accept=lt,p.addPart=Jt,p.applyOpsToFlat=Gn,p.asBool=Ee,p.asInt=K,p.asString=me,p.asText=Fe,p.asValidator=In,p.attrMapFrom=Xe,p.attrValFrom=gt,p.bool=v,p.buildAgentBatch=Ho,p.captionText=ge,p.catalogMessage=yn,p.checkStrictSubset=Wt,p.classifyStyleClass=Ue,p.collect=Mn,p.createCatalog=Ht,p.createSchematicRegistry=sn,p.createUiEditorController=Vo,p.cssToToken=mt,p.dataMapping=On,p.dataSource=Cn,p.decodeKeyText=dt,p.decodeToMultiLang=ye,p.describeScreen=Uo,p.displayCaptionOf=ln,p.dropMessage=Yr,p.emptyCoverageReport=Et,p.emptyRoot=an,p.errorMessage=Hr,p.extendCatalog=lo,p.findPartById=z,p.flattenSubtree=Ve,p.fromPersisted=yt,p.fromPersistedV2=wn,p.highlightMessage=hn,p.int=De,p.isMultiLangMessage=Le,p.isPartType=Oe,p.isPreviewInbound=bn,p.isPreviewOutbound=jr,p.isStrictSubset=Po,p.issueCategoryLabel=Jo,p.issueParentRef=Zo,p.migrateV1ToV2=Fn,p.movePart=Qt,p.newPartId=ue,p.parentOf=he,p.parseGridSort=ft,p.parseGridSortList=Bn,p.parseValidatorString=pt,p.pathOf=Ze,p.pathTo=Ge,p.readyMessage=$r,p.removePart=en,p.renderMessage=En,p.resizeMessage=Ur,p.resolveHandle=xe,p.resolveOps=Fo,p.resolveRenderer=cn,p.revContainersOf=Qe,p.schematicProps=ot,p.selectMessage=Vr,p.str=V,p.text=we,p.toAgentCatalog=Vt,p.toOpShape=rn,p.toPersistedV2=St,p.tokenToCss=Tt,p.tokensOf=He,p.uiKeyTextToMultiLang=ut,p.updatePart=Zt,p.validatePartModel=st,p.validator=Ln,p.walk=W,Object.defineProperty(p,Symbol.toStringTag,{value:"Module"})}));
|