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