@hy-bricks/canvas 0.6.1 → 0.6.2
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/CHANGELOG.md +15 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.mjs +1 -1
- package/package.json +2 -2
package/dist/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
!function(){"use strict";try{if("undefined"!=typeof document){var e=document.createElement("style");e.appendChild(document.createTextNode(".hc-canvas-stage[data-v-69f0f8c9]{position:relative;width:100%;height:100%;overflow:hidden;background:#f1f5f9;isolation:isolate}.hc-canvas-stage__world[data-v-69f0f8c9]{position:absolute;top:0;left:0;will-change:transform}.hc-fs-leaf-empty[data-v-bc77f713]{position:absolute;top:3px;right:3px;bottom:3px;left:3px;border:1px dashed rgba(100,116,139,.5);border-radius:4px;display:flex;align-items:center;justify-content:center;pointer-events:none}.hc-fs-leaf-hint[data-v-bc77f713]{font-size:12px;color:#64748bd9;pointer-events:none;-webkit-user-select:none;user-select:none}.hc-fs-leaf-edge[data-v-bc77f713]:hover{box-shadow:inset 0 0 0 1px #3b82f64d}.hc-fs-leaf-toolbar[data-v-bc77f713]{position:absolute;top:4px;right:4px;display:inline-flex;gap:4px;pointer-events:none;opacity:0;transition:opacity .12s ease}.hc-fs-leaf-edge:hover .hc-fs-leaf-toolbar[data-v-bc77f713],.hc-fs-leaf-edge.is-empty .hc-fs-leaf-toolbar[data-v-bc77f713]{opacity:1}.hc-fs-leaf-btn[data-v-bc77f713]{pointer-events:auto;width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;border:1px solid rgba(59,130,246,.5);background:#fffffff2;color:#2563eb;border-radius:6px;cursor:pointer;font-size:13px;line-height:1;box-shadow:0 1px 2px #0000001f}.hc-fs-leaf-btn[data-v-bc77f713]:hover{background:#eff6ff;border-color:#3b82f6}.hc-fs-leaf-btn--danger[data-v-bc77f713]{color:#dc2626;border-color:#dc262680}.hc-fs-leaf-btn--danger[data-v-bc77f713]:hover{background:#fef2f2;border-color:#dc2626}.hc-fs-leaf-move[data-v-bc77f713]{cursor:grab;color:#475569;border-color:#47556973}.hc-fs-leaf-move[data-v-bc77f713]:active{cursor:grabbing}.hc-fs-leaf-edge.is-drop-target[data-v-bc77f713]{box-shadow:inset 0 0 0 2px #3b82f6e6}.hc-fs-divider[data-v-bc77f713]:hover{box-shadow:inset 0 0 0 1px #3b82f680}.hc-fs-divider-grip[data-v-bc77f713]{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:#3b82f6bf;border-radius:999px;pointer-events:none}.hc-fs-divider[data-hc-fs-divider-direction=horizontal] .hc-fs-divider-grip[data-v-bc77f713]{width:4px;height:26px}.hc-fs-divider[data-hc-fs-divider-direction=vertical] .hc-fs-divider-grip[data-v-bc77f713]{width:26px;height:4px}.hc-fs-merge-btn[data-v-bc77f713]{position:absolute;pointer-events:none;opacity:0;transition:opacity .12s ease;width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;border:1px solid rgba(59,130,246,.6);background:#fffffff7;color:#2563eb;border-radius:999px;cursor:pointer;font-size:12px;line-height:1;box-shadow:0 1px 3px #0000002e}.hc-fs-divider[data-hc-fs-divider-direction=horizontal] .hc-fs-merge-btn[data-v-bc77f713]{top:10px;left:50%;transform:translate(-50%)}.hc-fs-divider[data-hc-fs-divider-direction=vertical] .hc-fs-merge-btn[data-v-bc77f713]{left:10px;top:50%;transform:translateY(-50%)}.hc-fs-divider:hover .hc-fs-merge-btn[data-v-bc77f713]{pointer-events:auto;opacity:1}.hc-fs-merge-btn[data-v-bc77f713]:hover{background:#eff6ff;border-color:#3b82f6}")),document.head.appendChild(e)}}catch(t){console.error("vite-plugin-css-injected-by-js",t)}}();
|
|
2
|
-
import{reactive as e,computed as n,markRaw as t,inject as o,ref as i,readonly as a,provide as r,defineComponent as s,resolveComponent as c,openBlock as d,createElementBlock as l,normalizeStyle as u,Fragment as p,renderList as f,createBlock as h,createCommentVNode as g,watch as v,onMounted as m,nextTick as y,onBeforeUnmount as I,shallowRef as w,unref as x,withDirectives as b,createElementVNode as S,toDisplayString as k,vShow as M,Teleport as z,renderSlot as T,createVNode as L,normalizeClass as C,withModifiers as B,withCtx as P,createSlots as D,normalizeProps as R,guardReactiveProps as E}from"vue";import{DEFAULT_CANVAS_ID as $,registryVersion as A,getInstance as O,listInstances as F,parseComponentSource as j,HC_CANVAS_ID_KEY as q,disposeCanvas as N,RuntimeBox as V,getInstanceTimings as K,onInstanceLifecycle as _}from"@hy-bricks/core";const X=new Map,Y=new Set;function G(e,n){const t=[...Y];for(const o of t)try{o(e,n)}catch{}}function U(e,n){X.has(e)&&console.warn(`[hc-rendererDiagnostics] canvasId "${e}" already registered, overwriting`),X.set(e,n),G("register",e)}function H(e){X.has(e)&&(X.delete(e),G("unregister",e))}function W(e){return X.get(e)??null}function J(){return[...X.values()]}function Q(e){return Y.add(e),()=>Y.delete(e)}function Z(e){return JSON.parse(JSON.stringify(e))}const ee="[hc-canvas/normalizeBindings]";function ne(e){if(!Array.isArray(e))return[];const n=[];for(let t=0;t<e.length;t++){const o=e[t];if(!o||"object"!=typeof o){console.warn(`${ee} dropped non-object binding at index ${t}`);continue}if(te(o)){n.push(o);continue}const i=oe(o);null!==i&&n.push(i)}return n}function te(e){if(!e||"object"!=typeof e)return!1;const n=e;if("string"!=typeof n.id||0===n.id.length)return!1;if("event"!==n.type&&"init"!==n.type&&"data"!==n.type)return!1;const t=n.source;if(!t||"object"!=typeof t)return!1;if("string"!=typeof t.kind)return!1;const o=n.target;return!(!o||"object"!=typeof o)&&"string"==typeof o.kind}function oe(e){if("string"!=typeof e.id||0===e.id.length)return console.warn(`${ee} dropped binding with missing/invalid id`),null;const n=e.target;if(!n||"object"!=typeof n||"string"!=typeof n.instanceId||""===n.instanceId||"string"!=typeof n.method)return console.warn(`${ee} dropped binding "${e.id}" missing/invalid target`),null;const t=e.type;let o;if("event"===t){const n=e.source;if(!n||"object"!=typeof n||"string"!=typeof n.instanceId||""===n.instanceId||"string"!=typeof n.event)return console.warn(`${ee} dropped event binding "${e.id}" missing/invalid source`),null;o={kind:"instanceEvent",instanceId:n.instanceId,event:n.event}}else{if("init"!==t)return console.warn(`${ee} dropped binding "${e.id}" with unknown legacy type "${String(e.type)}"`),null;{const n=e.source;n&&"string"==typeof n.instanceId&&""!==n.instanceId&&console.warn(`${ee} init binding "${e.id}" had source.instanceId, discarded`),o={kind:"page",hook:"pageInit"}}}const i={kind:"instanceMethod",instanceId:n.instanceId,method:n.method};let a;a=void 0===n.args?{kind:"passthrough"}:Array.isArray(n.args)&&0===n.args.length?{kind:"static",args:[]}:Array.isArray(n.args)?{kind:"static",args:Z(n.args)}:{kind:"passthrough"};const r={},s=e.options;s&&"object"==typeof s&&(!0===s.once&&(r.once=!0),"number"==typeof s.throttleMs&&(r.throttle={windowMs:s.throttleMs}),"number"==typeof s.debounceMs&&(r.debounce={windowMs:s.debounceMs}));const c=void 0!==r.once||void 0!==r.throttle||void 0!==r.debounce,d={id:e.id,source:o,target:i,mapping:a,...void 0!==e.disabled?{disabled:e.disabled}:{},...c?{schedule:r}:{}};return"event"===t?{...d,type:"event"}:{...d,type:"init"}}function ie(){return!1}function ae(e){if("object"!=typeof e||null===e)return!0;const{mode:n,value:t,min:o,max:i}=e,a=void 0!==o&&("number"!=typeof o||!Number.isFinite(o)||o<0)||void 0!==i&&("number"!=typeof i||!Number.isFinite(i)||i<0)||"number"==typeof o&&"number"==typeof i&&o>i;return"ratio"!==n&&"px"!==n||"number"!=typeof t||!Number.isFinite(t)||"ratio"===n&&t<=0||"px"===n&&t<0||a}function re(e,n=8,t=()=>Math.random().toString(36).slice(2,2+n)){const o=function(){const e="undefined"!=typeof globalThis&&"crypto"in globalThis?globalThis.crypto:void 0;return"function"==typeof(null==e?void 0:e.randomUUID)?()=>e.randomUUID():void 0}();return`${e}${o?o().replace(/-/g,"").slice(0,n):t()}`}function se(){return re("lf_",10,()=>Math.floor(0xffffffffff*Math.random()).toString(36))}function ce(){return{type:"leaf",leafId:se(),instanceId:null}}function de(e){if(!e||"object"!=typeof e)return ce();const n=e;if("leaf"===n.type){const e={type:"leaf",leafId:"string"==typeof n.leafId&&n.leafId?n.leafId:se(),instanceId:"string"==typeof n.instanceId?n.instanceId:null};return!0===n.locked&&(e.locked=!0),e}if("split"===n.type){const e=(Array.isArray(n.children)?n.children:[]).map(e=>de(e));if(0===e.length)return ce();if(1===e.length)return e[0];const t=Array.isArray(n.sizes)?n.sizes:[],o=e.map((e,n)=>function(e){if(e&&"object"==typeof e){const n=e;if("px"===n.mode){const e={mode:"px",value:"number"==typeof n.value&&Number.isFinite(n.value)&&n.value>=0?n.value:0};let t="number"==typeof n.min&&Number.isFinite(n.min)&&n.min>=0?n.min:void 0,o="number"==typeof n.max&&Number.isFinite(n.max)&&n.max>=0?n.max:void 0;return void 0!==t&&void 0!==o&&t>o&&(t=void 0,o=void 0),void 0!==t&&(e.min=t),void 0!==o&&(e.max=o),e}return{mode:"ratio",value:"number"==typeof n.value&&Number.isFinite(n.value)&&n.value>0?n.value:1}}return{mode:"ratio",value:1}}(t[n]));return{type:"split",nodeId:"string"==typeof n.nodeId&&n.nodeId?n.nodeId:re("nd_",10,()=>Math.floor(0xffffffffff*Math.random()).toString(36)),dir:"col"===n.dir?"col":"row",children:e,sizes:o}}return ce()}function le(e){return e}function ue(e){const n=e.instances.map(ve),t=ge(e.componentOverrides,n),o=ne(e.bindings);if("1"===e.schemaVersion){const i=qe(ke(e.layout)?e.layout:Se(e.layout));return{...e,layout:i,instances:n,bindings:o,componentOverrides:t}}return{schemaVersion:"1",layout:qe(Se(e.layout)),instances:n,bindings:o,componentOverrides:t}}function pe(e){const n=function(e){var n;const t=new Map;for(const o of e){if(!o.parentId)continue;if(void 0!==o.slot)continue;const e=t.get(o.parentId),i=null==(n=o.layoutItem)?void 0:n.ratio;e?e.push(i):t.set(o.parentId,[i])}let o=!1;const i=e.map(e=>{if(!e.containerLayout||"split"!==e.containerLayout.mode)return e;const n=t.get(e.instanceId)??[],i=e.containerLayout.ratios,a=be(i,n);return i.length===a.length&&i.every((e,n)=>e===a[n])?e:(o=!0,{...e,containerLayout:{...e.containerLayout,ratios:a}})});return o?i:e}(e.instances),t=e.layout.rootLayout?function(e,n){const t=e.rootLayout;if(!t||"split"!==t.mode)return e;const o=n.filter(e=>void 0===e.parentId).map(e=>{var n;return null==(n=e.layoutItem)?void 0:n.ratio}),i=t.ratios,a=be(i,o);return i.length===a.length&&i.every((e,n)=>e===a[n])?e:{...e,rootLayout:{...t,ratios:a}}}(e.layout,n):e.layout;return n===e.instances&&t===e.layout?e:{...e,layout:t,instances:n}}function fe(e){const n=new Map,t=new Set;for(const o of e.instances){const e=o.containerLayout;if("grid"!==(null==e?void 0:e.mode))continue;t.add(o.instanceId);const i=e.cells;i&&"object"==typeof i&&Object.keys(i).length>0&&n.set(o.instanceId,he(i))}if(0===t.size)return e;let o=!1;const i=e.instances.map(e=>{if(!e.parentId)return e;if(void 0!==e.slot)return e;if(!t.has(e.parentId))return e;const i=e.layoutItem;if(i&&("number"==typeof i.row||"number"==typeof i.column)){const n=function(e){const n="number"==typeof e.row&&Number.isFinite(e.row)&&e.row<1,t="number"==typeof e.column&&Number.isFinite(e.column)&&e.column<1;if(!n&&!t)return e;const o={...e};return n&&(o.row=1),t&&(o.column=1),o}(i);return n===i?e:(o=!0,{...e,layoutItem:n})}const a=n.get(e.parentId),r=null==a?void 0:a[e.instanceId];if(!r)return e;const s=function(e){const n={};return"number"==typeof e.row&&Number.isFinite(e.row)&&(n.row=e.row<1?1:e.row),"number"==typeof e.column&&Number.isFinite(e.column)&&(n.column=e.column<1?1:e.column),void 0===n.row&&void 0===n.column?null:("number"==typeof e.rowSpan&&Number.isFinite(e.rowSpan)&&e.rowSpan>0&&e.rowSpan<=32&&(n.rowSpan=e.rowSpan),"number"==typeof e.columnSpan&&Number.isFinite(e.columnSpan)&&e.columnSpan>0&&e.columnSpan<=32&&(n.columnSpan=e.columnSpan),n)}(r);return s?(o=!0,{...e,layoutItem:{...i??{},...s}}):e});return o?{...e,instances:i}:e}function he(e){let n=!1;for(const t of Object.values(e))if(t&&(0===t.row||0===t.column)){n=!0;break}if(!n)return e;const t={};for(const[n,o]of Object.entries(e)){if(!o)continue;const e={...o};"number"==typeof e.row&&Number.isFinite(e.row)&&(e.row=e.row+1),"number"==typeof e.column&&Number.isFinite(e.column)&&(e.column=e.column+1),t[n]=e}return t}function ge(e,n){if(!e||"object"!=typeof e||Array.isArray(e))return{};const t=new Set(n.map(e=>e.instanceId)),o={};for(const[n,i]of Object.entries(e)){if(!i||"object"!=typeof i||Array.isArray(i))continue;const e=i;e.instanceId===n&&t.has(e.instanceId)&&"string"==typeof e.baseVersionKey&&e.baseVersionKey&&De(e.source)&&Re(e.contract)&&(o[n]={instanceId:e.instanceId,baseVersionKey:e.baseVersionKey,source:e.source,contract:e.contract,...Ee(e.contractParseError)?{contractParseError:Ee(e.contractParseError)}:{},..."string"==typeof e.createdAt?{createdAt:e.createdAt}:{},..."string"==typeof e.updatedAt?{updatedAt:e.updatedAt}:{}})}return o}function ve(e){let n=e;void 0===n.parentId&&n.slotPlacement&&(n={...n,parentId:n.slotPlacement.parentInstanceId,slot:n.slotPlacement.slotName}),""!==n.slot&&"default"!==n.slot||(n={...n,slot:void 0}),void 0===n.placement&&(n={...n,placement:void 0===n.parentId?"absolute":"slot"});const t=ye(n.sizing,n.size);if(t!==n.size&&(n={...n,size:t}),void 0!==n.containerLayout){const e=xe(n.containerLayout);if(e!==n.containerLayout)if(null===e){const{containerLayout:e,...t}=n;n=t}else n={...n,containerLayout:e}}if(n=Oe(n),n=Fe(n),void 0!==n.layoutItem){const e=_e(n.layoutItem);if(null===e){const{layoutItem:e,...t}=n;n=t}else e!==n.layoutItem&&(n={...n,layoutItem:e})}if(!0===n.locked){const e={};void 0===n.lockPosition&&(e.lockPosition=!0),void 0===n.lockSize&&(e.lockSize=!0),Object.keys(e).length>0&&(n={...n,...e})}return n}const me=new Set(["px","percent","fill","hug","auto"]);function ye(e,n){var t,o,i,a;const r=n?function(e){const n={},t=we(e.width),o=we(e.height);return t&&(n.width=t),o&&(n.height=o),n.width||n.height?n:void 0}(n):void 0;if(!e)return r;const s={};if(e.width){const n=Ie(e.width,null==(t=e.min)?void 0:t.w,null==(o=e.max)?void 0:o.w);n&&(s.width=n)}if(e.height){const n=Ie(e.height,null==(i=e.min)?void 0:i.h,null==(a=e.max)?void 0:a.h);n&&(s.height=n)}return r?{width:r.width??s.width,height:r.height??s.height}:Object.keys(s).length>0?s:void 0}function Ie(e,n,t){if(!e||"object"!=typeof e)return null;let o;switch(e.mode){case"fixed":o="px";break;case"percent":o="percent";break;case"fill":o="fill";break;case"hug":o="hug";break;default:return null}const i={mode:o};return"px"!==o&&"percent"!==o||"number"!=typeof e.value||(i.value=e.value),"number"==typeof n&&(i.min=n),"number"==typeof t&&(i.max=t),i}function we(e){if(!e||"object"!=typeof e)return null;if("string"!=typeof e.mode)return null;if(!me.has(e.mode))return null;const n={mode:e.mode};return"px"!==e.mode&&"percent"!==e.mode||"number"!=typeof e.value||(n.value=e.value),"number"==typeof e.min&&(n.min=e.min),"number"==typeof e.max&&(n.max=e.max),n}function xe(e){if(!e||"object"!=typeof e)return null;if("none"===e.mode)return{mode:"none"};if("free"===e.mode)return{mode:"free"};if("flex"===e.mode){const n=e,t={mode:"flex",direction:"row"===n.direction||"column"===n.direction?n.direction:"row"};return!0===n.wrap&&(t.wrap=!0),"number"==typeof n.gap&&Number.isFinite(n.gap)&&n.gap>=0&&(t.gap=n.gap),"start"!==n.justify&&"center"!==n.justify&&"end"!==n.justify&&"space-between"!==n.justify&&"space-around"!==n.justify||(t.justify=n.justify),"start"!==n.align&&"center"!==n.align&&"end"!==n.align&&"stretch"!==n.align||(t.align=n.align),t}if("split"===e.mode){const n=e;if("horizontal"!==n.direction&&"vertical"!==n.direction)return null;if(!Array.isArray(n.ratios))return null;const t=n.ratios.filter(e=>"number"==typeof e&&Number.isFinite(e)&&e>=0),o={mode:"split",direction:n.direction,ratios:t};return"number"==typeof n.gap&&Number.isFinite(n.gap)&&n.gap>=0&&(o.gap=n.gap),o}if("grid"===e.mode){const n=e;if(!Array.isArray(n.columns)||!Array.isArray(n.rows))return null;const t={mode:"grid",columns:n.columns.filter(e=>!!e&&("fr"===e.mode||"px"===e.mode||"percent"===e.mode)&&"number"==typeof e.value&&Number.isFinite(e.value)&&e.value>=0).slice(0,32),rows:n.rows.filter(e=>!!e&&("fr"===e.mode||"px"===e.mode||"percent"===e.mode||"auto"===e.mode)&&("auto"===e.mode&&void 0===e.value||"number"==typeof e.value&&Number.isFinite(e.value)&&e.value>=0)).slice(0,32)};if("number"==typeof n.gap&&Number.isFinite(n.gap)&&n.gap>=0)t.gap=n.gap;else if(n.gap&&"object"==typeof n.gap){const e={};"number"==typeof n.gap.row&&Number.isFinite(n.gap.row)&&n.gap.row>=0&&(e.row=n.gap.row),"number"==typeof n.gap.column&&Number.isFinite(n.gap.column)&&n.gap.column>=0&&(e.column=n.gap.column),Object.keys(e).length>0&&(t.gap=e)}if(n.cells&&"object"==typeof n.cells&&!Array.isArray(n.cells)){const e={};for(const[t,o]of Object.entries(n.cells)){if(!o||"object"!=typeof o)continue;if(!Number.isFinite(o.row)||!Number.isFinite(o.column))continue;const n={row:o.row,column:o.column};"number"==typeof o.rowSpan&&Number.isFinite(o.rowSpan)&&o.rowSpan>0&&o.rowSpan<=32&&(n.rowSpan=o.rowSpan),"number"==typeof o.columnSpan&&Number.isFinite(o.columnSpan)&&o.columnSpan>0&&o.columnSpan<=32&&(n.columnSpan=o.columnSpan),e[t]=n}Object.keys(e).length>0&&(t.cells=e)}return t}return"free-split"===e.mode?e:null}function be(e,n){const t=(e??[]).map(e=>"number"==typeof e&&Number.isFinite(e)&&e>=0?e:0),o=[];for(let e=0;e<n.length;e++){const i=n[e];if("number"==typeof i&&Number.isFinite(i)&&i>0){o.push(i);continue}const a=t[e];"number"==typeof a&&a>0?o.push(a):o.push(1)}return o}function Se(e){if(!e)return{type:"free",canvas:{width:{mode:"px",value:1920},height:{mode:"px",value:1080}}};if(ke(e))return e;const n=e,t={width:{mode:"px",value:n.canvas.w},height:{mode:"px",value:n.canvas.h}},o=function(e){if(!e)return;const n={};if(void 0!==e.color&&(n.color=e.color),void 0!==e.imageAssetId){const t={id:e.imageAssetId,type:"image"};n.image=t}return void 0!==e.fit&&(n.imageFit="original"===e.fit?"center":e.fit),Object.keys(n).length>0?n:void 0}(n.canvas.background),i={type:n.type,canvas:t};return o&&(i.background=o),void 0!==n.canvas.gridSize&&(i.guides={grid:{size:n.canvas.gridSize}}),i}function ke(e){if(!e)return!1;const n=e.canvas;if(!n)return!1;const t=n.width;return"object"==typeof t&&null!==t&&"mode"in t&&"string"==typeof t.mode}function Me(e,n=1920){return"px"===e.mode?e.value:n}function ze(e,n,t=1920){switch(e.mode){case"px":return e.value;case"percent":return n>0?n*e.value/100:t;case"vw":return"undefined"!=typeof window?window.innerWidth*e.value/100:t;case"vh":return"undefined"!=typeof window?window.innerHeight*e.value/100:t;case"auto":case"fill":return n>0?n:t}}function Te(e,n,t,o,i){const a=Le(e.widthMode,e.width),r=Le(e.heightMode,e.height),s="free"===o,c={boxSizing:"border-box",minWidth:0,minHeight:0,overflow:e.overflow??"hidden",zIndex:n};return null!==a&&(c.width=a),null!==r&&(c.height=r),"split"===o&&("vertical"===i?c.height="100%":c.width="100%"),"number"==typeof t&&Number.isFinite(t)&&0!==t&&(c.transform=`rotate(${t}deg)`),s?(c.position="absolute",c.left=`${e.x}px`,c.top=`${e.y}px`):c.position="relative",c}function Le(e,n){switch(e){case"px":return`${n}px`;case"percent":return`${n}%`;case"fill":return"100%";case"auto":return"auto"}}function Ce(e){if(!e||"none"===e.mode||"free"===e.mode)return null;if("flex"===e.mode){const n={display:"flex"};if(n.flexDirection=e.direction??"row",e.wrap&&(n.flexWrap="wrap"),"number"==typeof e.gap&&(n.gap=`${e.gap}px`),e.justify){const t={start:"flex-start",end:"flex-end",center:"center","space-between":"space-between","space-around":"space-around"};n.justifyContent=t[e.justify]??e.justify}if(e.align){const t={start:"flex-start",end:"flex-end",center:"center",stretch:"stretch"};n.alignItems=t[e.align]??e.align}return n}if("grid"===e.mode){const n={display:"grid"},t=(e.columns??[]).map(e=>"fr"===e.mode?`${e.value}fr`:"px"===e.mode?`${e.value}px`:`${e.value}%`).join(" "),o=(e.rows??[]).map(e=>"auto"===e.mode?"auto":"fr"===e.mode?`${e.value??1}fr`:"px"===e.mode?`${e.value??0}px`:`${e.value??0}%`).join(" ");if(t&&(n.gridTemplateColumns=t),o&&(n.gridTemplateRows=o),"number"==typeof e.gap)n.gap=`${e.gap}px`;else if(e.gap&&"object"==typeof e.gap){const t=e.gap.row??0,o=e.gap.column??0;n.gap=`${t}px ${o}px`}return n}if("split"===e.mode){const n=(Array.isArray(e.ratios)?e.ratios:[]).map(e=>"number"==typeof e&&Number.isFinite(e)&&e>=0?e:0).filter(e=>e>0),t=n.length>0?n.map(e=>`${e}fr`).join(" "):"1fr",o={display:"grid"};return"vertical"===e.direction?o.gridTemplateRows=t:o.gridTemplateColumns=t,"number"==typeof e.gap&&(o.gap=`${e.gap}px`),o}return e.mode,null}function Be(e,n){if(!e)return null;if("flex"===n){const n={};return"number"==typeof e.order&&(n.order=e.order),"number"==typeof e.grow&&(n.flexGrow=e.grow),"number"==typeof e.shrink&&(n.flexShrink=e.shrink),Object.keys(n).length>0?n:null}if("grid"===n){const n={};if("number"==typeof e.row){const t="number"==typeof e.rowSpan&&e.rowSpan>0?e.rowSpan:1;n.gridRow=t>1?`${e.row} / span ${t}`:`${e.row}`}if("number"==typeof e.column){const t="number"==typeof e.columnSpan&&e.columnSpan>0?e.columnSpan:1;n.gridColumn=t>1?`${e.column} / span ${t}`:`${e.column}`}return Object.keys(n).length>0?n:null}return null}function Pe(e){switch(e.mode){case"px":return`${e.value}px`;case"percent":return`${e.value}%`;case"vw":return`${e.value}vw`;case"vh":return`${e.value}vh`;case"auto":return"auto";case"fill":return"100%"}}function De(e){return!!e&&"object"==typeof e&&!Array.isArray(e)&&"string"==typeof e.html&&"string"==typeof e.js&&"string"==typeof e.css}function Re(e){if(!e||"object"!=typeof e||Array.isArray(e))return!1;const n=e;return["propsDecl","emitsDecl","methodsDecl","slotsDecl","modelDecl","dataInputsDecl","dataOutputsDecl"].every(e=>Array.isArray(n[e]))}function Ee(e){if(!e||"object"!=typeof e||Array.isArray(e))return;const n=e;return"string"==typeof n.message?{message:n.message,..."number"==typeof n.line?{line:n.line}:{},..."number"==typeof n.column?{column:n.column}:{}}:void 0}const $e=new Set(["px","percent","fill","auto"]),Ae=new Set(["hidden","visible","auto"]);function Oe(e){const n=e.placement;return"canvas"===n||"container"===n?e:"absolute"===n?{...e,placement:"canvas"}:"slot"===n?{...e,placement:"container"}:{...e,placement:e.parentId?"container":"canvas"}}function Fe(e){var n,t;const o=e.rect??{x:0,y:0,w:0,h:0},i=null==(n=e.size)?void 0:n.width,a=null==(t=e.size)?void 0:t.height,r=e=>{if(e)return"hug"===e.mode?"auto":"percent"===e.mode?"percent":"fill"===e.mode?"fill":"auto"===e.mode?"auto":"px"===e.mode?"px":void 0},s=e.layoutBox,c=s&&$e.has(s.widthMode)?s.widthMode:r(i)??"px",d=s&&$e.has(s.heightMode)?s.heightMode:r(a)??"px",l=(e,n)=>"number"==typeof e&&Number.isFinite(e)?e:n,u={x:l(null==s?void 0:s.x,o.x),y:l(null==s?void 0:s.y,o.y),width:l(null==s?void 0:s.width,(null==i?void 0:i.value)??o.w),height:l(null==s?void 0:s.height,(null==a?void 0:a.value)??o.h),widthMode:c,heightMode:d,overflow:(null==s?void 0:s.overflow)&&Ae.has(s.overflow)?s.overflow:"hidden"};return s&&s.x===u.x&&s.y===u.y&&s.width===u.width&&s.height===u.height&&s.widthMode===u.widthMode&&s.heightMode===u.heightMode&&s.overflow===u.overflow?e:{...e,layoutBox:u}}let je=!1;function qe(e){if(e.rootLayout){const o=xe(e.rootLayout);return null===o?{...e,rootLayout:{mode:"free"}}:"free-split"===o.mode?(je||(je=!0,console.warn("[hypercard] rootLayout.mode='free-split' 不支持(free-split 仅用于容器实例,根画布无 outlet/containerId 锚),已降级为 'free'。")),{...e,rootLayout:{mode:"free"}}):(t=o,(n=e.rootLayout).mode===t.mode&&JSON.stringify(n)===JSON.stringify(t)?e:{...e,rootLayout:o})}var n,t;return{...e,rootLayout:{mode:"free"}}}function Ne(e){return"container"===e||"slot"===e}function Ve(e,n,t){var o,i;const a=n.find(e=>e.instanceId===t);if(!a)return;if(void 0===a.parentId)return(null==(o=null==e?void 0:e.rootLayout)?void 0:o.mode)??"free";const r=n.find(e=>e.instanceId===a.parentId);return(null==(i=null==r?void 0:r.containerLayout)?void 0:i.mode)??"none"}function Ke(e){return"canvas"===e||"absolute"===e||void 0===e}function _e(e){if(!e||"object"!=typeof e)return null;const n={},t=["order","grow","shrink","row","column","rowSpan","columnSpan","ratio"];for(const o of t){const t=e[o];"number"==typeof t&&Number.isFinite(t)&&(n[o]=t)}return Object.keys(n).length>0?n:null}function Xe(n={}){const{rootMargin:t="500px",disposeDelayMs:o=1500,mountConcurrency:i=2,root:a=null}=n,r={state:e({}),elById:new Map,idByEl:new WeakMap,mountQueue:[],disposeTimers:new Map,idleScheduled:!1,io:null,counts:{pending:0,mounting:0,mounted:0,disposing:0}};function s(e,n){const t=r.state[e];t!==n&&(void 0!==t&&"idle"!==t&&r.counts[t]--,r.state[e]=n,"idle"!==n&&r.counts[n]++)}function c(e){for(const n of e){const e=r.idByEl.get(n.target);e&&(n.isIntersecting?d(e):l(e))}}function d(e){const n=r.disposeTimers.get(e);n&&(clearTimeout(n),r.disposeTimers.delete(e));const t=r.state[e];"mounted"!==t&&"disposing"!==t?(s(e,"mounting"),r.mountQueue.includes(e)||r.mountQueue.push(e),u()):s(e,"mounted")}function l(e){const n=r.state[e];if("pending"===n||"idle"===n)return;if("mounting"===n){const n=r.mountQueue.indexOf(e);return n>=0&&r.mountQueue.splice(n,1),void s(e,"pending")}s(e,"disposing");const t=r.disposeTimers.get(e);t&&clearTimeout(t);const i=setTimeout(()=>{"disposing"===r.state[e]&&(s(e,"pending"),r.disposeTimers.delete(e))},o);r.disposeTimers.set(e,i)}function u(){r.idleScheduled||0===r.mountQueue.length||(r.idleScheduled=!0,function(e,n=50){const t=globalThis;"function"==typeof t.requestIdleCallback?t.requestIdleCallback(()=>e(),{timeout:n}):setTimeout(e,16)}(()=>{r.idleScheduled=!1;let e=0;for(;e<i&&r.mountQueue.length>0;){const n=r.mountQueue.shift();"mounting"===r.state[n]&&(s(n,"mounted"),e++)}r.mountQueue.length>0&&u()}))}return{register(e,n){const o=r.elById.get(e);if(o&&o!==n){const e=r.io;e&&e.unobserve(o),r.idByEl.delete(o)}r.elById.set(e,n),r.idByEl.set(n,e),s(e,"pending");const i=r.io?r.io:"undefined"==typeof IntersectionObserver?null:(r.io=new IntersectionObserver(c,{root:a,rootMargin:t}),r.io);i?i.observe(n):s(e,"mounted")},unregister(e){const n=r.elById.get(e);if(n){const t=r.io;t&&t.unobserve(n),r.idByEl.delete(n),r.elById.delete(e)}const t=r.disposeTimers.get(e);t&&(clearTimeout(t),r.disposeTimers.delete(e));const o=r.mountQueue.indexOf(e);o>=0&&r.mountQueue.splice(o,1),function(e){const n=r.state[e];void 0!==n&&"idle"!==n&&r.counts[n]--,delete r.state[e]}(e)},isMounted(e){const n=r.state[e];return"mounted"===n||"disposing"===n},getState:e=>r.state[e]??"idle",get state(){return r.state},getStats:()=>({...r.counts}),dispose(){r.io&&(r.io.disconnect(),r.io=null);for(const e of r.disposeTimers.values())clearTimeout(e);r.disposeTimers.clear(),r.elById.clear(),r.mountQueue.length=0;for(const e of Object.keys(r.state))delete r.state[e];r.counts.pending=0,r.counts.mounting=0,r.counts.mounted=0,r.counts.disposing=0}}}function Ye(e){const n=[];switch(e.source.kind){case"instanceEvent":case"lifecycle":n.push({canvasId:e.source.canvasId,instanceId:e.source.instanceId});break;case"page":case"dataSource":break;default:!function(e){throw new Error(`[hc-canvas/bindingRefs] Unhandled BindingSource.kind: ${e.kind}`)}(e.source)}switch(e.target.kind){case"instanceMethod":case"instanceEmit":case"instanceDataInput":n.push({canvasId:e.target.canvasId,instanceId:e.target.instanceId});break;default:!function(e){throw new Error(`[hc-canvas/bindingRefs] Unhandled BindingTarget.kind: ${e.kind}`)}(e.target)}return n}function Ge(e,n,t){for(const o of Ye(e))if(o.instanceId===n&&o.canvasId===t)return!0;return!1}function Ue(e){const n={type:e.type,canvas:{...e.canvas,width:{...e.canvas.width},height:{...e.canvas.height}}};return e.background&&(n.background={...e.background,...e.background.image?{image:{...e.background.image}}:{}}),e.behavior&&(n.behavior={...e.behavior}),e.guides&&(n.guides={...e.guides,...e.guides.items?{items:[...e.guides.items]}:{}}),e.rootLayout&&(n.rootLayout="grid"===(t=e.rootLayout).mode?{...t,columns:t.columns?t.columns.map(e=>({...e})):[],rows:t.rows?t.rows.map(e=>({...e})):[],...t.cells?{cells:{...t.cells}}:{},..."object"==typeof t.gap&&null!==t.gap?{gap:{...t.gap}}:{}}:"split"===t.mode?{...t,ratios:Array.isArray(t.ratios)?[...t.ratios]:[]}:{...t}),n;var t}function He(e={}){return Z(e)}function We(){return{schemaVersion:"1",layout:{type:"free",canvas:{width:{mode:"fill"},height:{mode:"fill"}}},instances:[],bindings:[]}}function Je(t={schemaVersion:"1",layout:{type:"free",canvas:{width:{mode:"fill"},height:{mode:"fill"}}},instances:[],bindings:[]}){const o=fe(ue(t)),i=e({schemaVersion:"1",layout:Ue(o.layout),instances:o.instances.map(e=>({...e,rect:{...e.rect}})),bindings:o.bindings.map(e=>Z(e)),componentOverrides:He(o.componentOverrides)}),a=new Map;function r(){a.clear();for(const e of i.instances)a.has(e.instanceId)||a.set(e.instanceId,e)}function s(e){const n=a.get(e);return void 0===n?-1:i.instances.indexOf(n)}function c(e){return i.bindings.findIndex(n=>n.id===e)}return r(),{get document(){return i},instanceCount:n(()=>i.instances.length),bindingCount:n(()=>i.bindings.length),addInstance(e){if(s(e.instanceId)>=0)return void console.warn(`[hc-canvas/doc-store] instanceId "${e.instanceId}" 已存在,addInstance 忽略`);const n=e.rect?{...e.rect}:function(e){if(!e)return{x:0,y:0,w:0,h:0};const n=(e,n)=>"number"==typeof e&&Number.isFinite(e)?e:n;return{x:n(e.x,0),y:n(e.y,0),w:n(e.width,0),h:n(e.height,0)}}(e.layoutBox),t={...e,rect:n};!0===t.locked&&(void 0===t.lockPosition&&(t.lockPosition=!0),void 0===t.lockSize&&(t.lockSize=!0)),i.instances.push(t),a.set(t.instanceId,i.instances[i.instances.length-1])},removeInstance(e){var n;const t=s(e);t<0||(i.instances.splice(t,1),function(e){a.delete(e);const n=i.instances.find(n=>n.instanceId===e);n&&a.set(e,n)}(e),null==(n=i.componentOverrides)||delete n[e],i.bindings=i.bindings.filter(n=>!Ge(n,e)))},updateInstance(e,n){const t=a.get(e);if(t&&(Object.assign(t,n),n.rect&&t.layoutBox&&(t.layoutBox={...t.layoutBox,x:t.rect.x,y:t.rect.y,..."px"===t.layoutBox.widthMode?{width:t.rect.w}:{},..."px"===t.layoutBox.heightMode?{height:t.rect.h}:{}}),n.layoutBox)){const e=t.layoutBox??n.layoutBox,o=e=>"number"==typeof e&&Number.isFinite(e);t.rect={x:o(e.x)?e.x:t.rect.x,y:o(e.y)?e.y:t.rect.y,w:"px"===e.widthMode&&o(e.width)?e.width:t.rect.w,h:"px"===e.heightMode&&o(e.height)?e.height:t.rect.h}}},moveInstance(e,n,t){const o=a.get(e);o&&(o.rect.x=n,o.rect.y=t,o.layoutBox&&(o.layoutBox={...o.layoutBox,x:n,y:t}))},resizeInstance(e,n,t){const o=a.get(e);if(!o)return;const i=Math.max(1,n),r=Math.max(1,t);o.rect.w=i,o.rect.h=r,o.layoutBox&&(o.layoutBox={...o.layoutBox,width:i,height:r,widthMode:"px",heightMode:"px"})},setInstanceProp(e,n,t){const o=a.get(e);o&&(o.props={...o.props,[n]:t})},setInstanceLocked(e,n){const t=a.get(e);t&&(t.locked=n,n?(t.lockPosition=!0,t.lockSize=!0):(delete t.lockPosition,delete t.lockSize))},setInstanceSize(e,n){const t=a.get(e);if(t)if(null===n)delete t.size,t.layoutBox&&(t.layoutBox={...t.layoutBox,width:t.rect.w,height:t.rect.h,widthMode:"px",heightMode:"px"});else if(t.size=n,t.layoutBox){const e=n.width,o=n.height,i={...t.layoutBox};e&&("px"===e.mode?(i.widthMode="px","number"==typeof e.value&&Number.isFinite(e.value)&&(i.width=e.value)):"percent"===e.mode?(i.widthMode="percent","number"==typeof e.value&&Number.isFinite(e.value)&&(i.width=e.value)):"fill"===e.mode?(i.widthMode="fill",Number.isFinite(i.width)||(i.width=t.rect.w)):"auto"!==e.mode&&"hug"!==e.mode||(i.widthMode="auto",Number.isFinite(i.width)||(i.width=t.rect.w))),o&&("px"===o.mode?(i.heightMode="px","number"==typeof o.value&&Number.isFinite(o.value)&&(i.height=o.value)):"percent"===o.mode?(i.heightMode="percent","number"==typeof o.value&&Number.isFinite(o.value)&&(i.height=o.value)):"fill"===o.mode?(i.heightMode="fill",Number.isFinite(i.height)||(i.height=t.rect.h)):"auto"!==o.mode&&"hug"!==o.mode||(i.heightMode="auto",Number.isFinite(i.height)||(i.height=t.rect.h))),t.layoutBox=i}},setInstanceContainerLayout(e,n){const t=a.get(e);t&&(null===n?delete t.containerLayout:t.containerLayout=n)},updateInstanceLayoutBox(e,n){const t=a.get(e);if(!t)return;const o=t.layoutBox??{x:t.rect.x,y:t.rect.y,width:t.rect.w,height:t.rect.h,widthMode:"px",heightMode:"px",overflow:"hidden"},i={},r=["x","y","width","height"];for(const e of r){const t=n[e];"number"==typeof t&&Number.isFinite(t)&&(i[e]=t)}if("px"!==n.widthMode&&"percent"!==n.widthMode&&"fill"!==n.widthMode&&"auto"!==n.widthMode||(i.widthMode=n.widthMode),"px"!==n.heightMode&&"percent"!==n.heightMode&&"fill"!==n.heightMode&&"auto"!==n.heightMode||(i.heightMode=n.heightMode),"hidden"!==n.overflow&&"visible"!==n.overflow&&"auto"!==n.overflow||(i.overflow=n.overflow),0===Object.keys(i).length)return;const s={...o,...i};t.layoutBox=s;const c=i.widthMode??o.widthMode,d=i.heightMode??o.heightMode;t.rect={x:s.x,y:s.y,w:"px"===c?s.width:t.rect.w,h:"px"===d?s.height:t.rect.h}},updateInstanceLayoutItem(e,n){const t=a.get(e);if(!t)return;if(null===n)return void delete t.layoutItem;const o=["order","grow","shrink","row","column","rowSpan","columnSpan","ratio"],i={};for(const e of o){const t=n[e];"number"==typeof t&&Number.isFinite(t)&&(i[e]=t)}if(0===Object.keys(i).length)return;const r=t.layoutItem??{};t.layoutItem={...r,...i}},setInstanceRotation(e,n){const t=a.get(e);t&&Number.isFinite(n)&&(0===n?delete t.rotation:t.rotation=n)},duplicateInstance(e,n,t){var o;const r=a.get(e);if(!r)return;const s=Z(r);if(s.instanceId=n,s.rect={...s.rect,x:r.rect.x+t.x,y:r.rect.y+t.y},s.layoutBox&&(s.layoutBox={...s.layoutBox,x:s.layoutBox.x+t.x,y:s.layoutBox.y+t.y}),delete s.locked,delete s.lockPosition,delete s.lockSize,a.has(n))return void console.warn(`[hc-canvas/doc-store] duplicateInstance: newInstanceId "${n}" 已存在,忽略`);i.instances.push(s),a.set(n,i.instances[i.instances.length-1]);const c=null==(o=i.componentOverrides)?void 0:o[e];c&&(i.componentOverrides={...i.componentOverrides??{},[n]:{...Z(c),instanceId:n}})},addBinding(e){if(c(e.id)>=0)return void console.warn(`[hc-canvas/doc-store] binding id "${e.id}" 已存在,addBinding 忽略`);const[n]=ne([e]);n?i.bindings.push(Z(n)):console.warn(`[hc-canvas/doc-store] addBinding "${null==e?void 0:e.id}" dropped by normalize`)},removeBinding(e){const n=c(e);n<0||i.bindings.splice(n,1)},updateBinding(e,n){const t=i.bindings.find(n=>n.id===e);if(!t)return;const o=Z(n);Object.assign(t,o)},updateLayout(e){for(const n of Object.keys(e)){const t=e[n];void 0===t?delete i.layout[n]:i.layout[n]=t}},setComponentOverride(e,n){null!==n?(i.componentOverrides||(i.componentOverrides={}),i.componentOverrides[e]=n):i.componentOverrides&&e in i.componentOverrides&&delete i.componentOverrides[e]},replaceDocument(e){const n=fe(ue(e));i.schemaVersion="1",i.layout=Ue(n.layout),i.instances=n.instances.map(e=>({...e,rect:{...e.rect}})),r(),i.bindings=n.bindings.map(e=>Z(e)),i.componentOverrides=He(n.componentOverrides)},getInstance:e=>a.get(e),listInstancesByComponentVersionKey:e=>i.instances.filter(n=>n.componentVersionKey===e)}}function Qe(){const t=e({ids:[],freeSplit:null});return{selectedIds:n(()=>t.ids),size:n(()=>t.ids.length),primaryId:n(()=>t.ids[0]),freeSplitSelection:n(()=>t.freeSplit),select(e){t.ids=[e],t.freeSplit=null},toggleSelect(e){const n=t.ids.indexOf(e);n>=0?t.ids.splice(n,1):t.ids.push(e),t.freeSplit=null},addToSelection(e){t.freeSplit=null,t.ids.includes(e)||t.ids.push(e)},removeFromSelection(e){const n=t.ids.indexOf(e);n>=0&&t.ids.splice(n,1)},clearSelection(){t.ids=[],t.freeSplit=null},selectAll(e){t.ids=Array.from(new Set(e)),t.freeSplit=null},purgeOrphans(e){const n=new Set(e);t.ids=t.ids.filter(e=>n.has(e))},isSelected:e=>t.ids.includes(e),selectFreeSplitLeaf(e,n){t.freeSplit={kind:"freeSplitLeaf",containerId:e,leafId:n},t.ids=[]},selectFreeSplitDivider(e,n,o){t.freeSplit={kind:"freeSplitDivider",containerId:e,nodeId:n,dividerIndex:o},t.ids=[]},clearFreeSplitSelection(){t.freeSplit=null}}}function Ze(t={}){const{minScale:o=.25,maxScale:i=4,initialScale:a=1}=t,r=e({scale:a,panX:0,panY:0});function s(e){return Math.max(o,Math.min(i,e))}return{state:r,scale:n(()=>r.scale),panX:n(()=>r.panX),panY:n(()=>r.panY),setScale(e){r.scale=s(e)},zoomAt(e,n){const t=r.scale,o=s(t+n);if(o===t)return;const i=o/t;r.panX=e.x-(e.x-r.panX)*i,r.panY=e.y-(e.y-r.panY)*i,r.scale=o},setPan(e,n){r.panX=e,r.panY=n},panBy(e,n){r.panX+=e,r.panY+=n},resetView(){r.scale=a,r.panX=0,r.panY=0},fitToScreen(e,n,t=40){const o=Math.max(1,n.w-2*t),i=Math.max(1,n.h-2*t),a=o/e.w,c=i/e.h,d=s(Math.min(a,c)),l=e.w*d,u=e.h*d;r.scale=d,r.panX=(n.w-l)/2,r.panY=(n.h-u)/2},toCanvasPoint:e=>({x:(e.x-r.panX)/r.scale,y:(e.y-r.panY)/r.scale}),toViewportPoint:e=>({x:e.x*r.scale+r.panX,y:e.y*r.scale+r.panY})}}function en(e){var n;return e.parentId??(null==(n=e.slotPlacement)?void 0:n.parentInstanceId)}function nn(e,n){const t=new Map;for(const n of e){const e=en(n);if(!e)continue;const o=t.get(e);o?o.push(n.instanceId):t.set(e,[n.instanceId])}const o=[n],i=new Set([n]);for(let e=0;e<o.length;e+=1)for(const n of t.get(o[e])??[])i.has(n)||(i.add(n),o.push(n));return{instanceIds:o,descendantCount:o.length-1}}function tn(e,n){if("leaf"===e.type)return e.leafId===n?e:null;for(const t of e.children){const e=tn(t,n);if(e)return e}return null}function on(e,n){if("leaf"===e.type)return null;if(e.nodeId===n)return e;for(const t of e.children){const e=on(t,n);if(e)return e}return null}function an(e){return"leaf"===e.type?!0===e.locked:e.children.some(e=>an(e))}function rn(e){return"leaf"===e.type?[e]:e.children.flatMap(e=>rn(e))}const sn=e=>({ok:!1,reason:e}),cn=e=>({ok:!0,root:e});function dn(e,n){return"leaf"===e.type?n(e):{...e,children:e.children.map(e=>dn(e,n))}}function ln(e,n){if("leaf"===e.type)return e.leafId===n?e:null;for(const t of e.children){const e=ln(t,n);if(e)return e}return null}function un(e,n){if("leaf"===e.type)return null;if(e.nodeId===n)return e;for(const t of e.children){const e=un(t,n);if(e)return e}return null}function pn(e,n,t){const o=un(e,n);if(!o)return sn(`resize: branch "${n}" not found`);if(t.length!==o.children.length)return sn(`resize: sizes arity ${t.length} !== children ${o.children.length}`);const i=t.findIndex(e=>ae(e));if(i>=0)return sn(`resize: sizes[${i}] invalid NodeSize`);const a=e=>"leaf"===e.type?e:e.nodeId===n?{...e,sizes:t.map(e=>({...e}))}:{...e,children:e.children.map(a)};return cn(a(e))}function fn(e,n){return n?[{mode:"ratio",value:e},{mode:"ratio",value:1-e}]:[{mode:"ratio",value:1-e},{mode:"ratio",value:e}]}const hn=["freeSplitFill","freeSplitClear","freeSplitSwap","freeSplitResize","freeSplitSplit","freeSplitMerge"];function gn(e){return hn.includes(e.type)}function vn(e,n,t){const o=n.root,{containerId:i}=e.payload;switch(e.type){case"freeSplitFill":{const{leafId:n,instance:a}=e.payload,r=tn(o,n);if(!r||null!==r.instanceId)return null;if(t.some(e=>e.instanceId===a.instanceId))return null;const s=function(e,n,t){return ln(e,n)?cn(dn(e,e=>e.leafId===n?{...e,instanceId:t}:e)):sn(`fill: leaf "${n}" not found`)}(o,n,a.instanceId);if(!s.ok)return null;const c={...a,parentId:i,slot:"default",placement:"container"};return{containerId:i,nextRoot:s.root,addInstance:c}}case"freeSplitClear":{const{leafId:n}=e.payload,a=tn(o,n);if(!a||null===a.instanceId)return null;if(!t.some(e=>e.instanceId===a.instanceId))return null;const r=function(e,n){return ln(e,n)?cn(dn(e,e=>e.leafId===n?{...e,instanceId:null}:e)):sn(`clear: leaf "${n}" not found`)}(o,n);if(!r.ok)return null;const s=function(e,n){const t=[n],o=[n];for(;o.length>0;){const n=o.shift();for(const i of e)i.parentId===n&&(t.push(i.instanceId),o.push(i.instanceId))}return t}(t,a.instanceId);return{containerId:i,nextRoot:r.root,removeInstanceIds:s}}case"freeSplitSwap":{const{leafIdA:n,leafIdB:t}=e.payload,a=tn(o,n),r=tn(o,t);if(a&&r&&a.instanceId===r.instanceId)return null;const s=function(e,n,t){if(n===t)return sn("swap: same leaf");const o=ln(e,n),i=ln(e,t);if(!o)return sn(`swap: leaf "${n}" not found`);if(!i)return sn(`swap: leaf "${t}" not found`);const a=o.instanceId,r=i.instanceId;return cn(dn(e,e=>e.leafId===n?{...e,instanceId:r}:e.leafId===t?{...e,instanceId:a}:e))}(o,n,t);return s.ok?{containerId:i,nextRoot:s.root}:null}case"freeSplitResize":{const{nodeId:n,sizes:t}=e.payload,a=on(o,n);if(a&&function(e,n){if(e.length!==n.length)return!1;for(let t=0;t<e.length;t++)if(e[t].mode!==n[t].mode||e[t].value!==n[t].value||e[t].min!==n[t].min||e[t].max!==n[t].max)return!1;return!0}(a.sizes,t))return null;const r=pn(o,n,t);return r.ok?{containerId:i,nextRoot:r.root}:null}case"freeSplitSplit":{const{leafId:n,edge:t,newLeafShare:a,newLeafId:r,newNodeId:s}=e.payload,c=function(e,n,t,o,i,a){if(!(o>0&&o<1))return sn(`split: newLeafShare ${o} not in (0,1)`);if(i===a)return sn("split: newLeafId === newNodeId");const r=function(e){const n=new Set,t=e=>{"leaf"===e.type?n.add(e.leafId):(n.add(e.nodeId),e.children.forEach(t))};return t(e),n}(e);if(r.has(i))return sn(`split: newLeafId "${i}" already exists`);if(r.has(a))return sn(`split: newNodeId "${a}" already exists`);if(!ln(e,n))return sn(`split: leaf "${n}" not found`);const s=function(e){return"left"===e||"right"===e?"row":"col"}(t),c=function(e){return"left"===e||"top"===e}(t),d={type:"leaf",leafId:i,instanceId:null},l=e=>c?[d,e]:[e,d];if("leaf"===e.type)return cn({type:"split",nodeId:a,dir:s,children:l(e),sizes:fn(o,c)});const u=e=>{if("leaf"===e.type)return e;const t=e.children.findIndex(e=>"leaf"===e.type&&e.leafId===n);if(t>=0){const n=e.children[t];if(e.dir===s){const[i,a]=function(e,n,t){const o=e.value*n,i=e.value*(1-n),a=n=>({mode:e.mode,value:n}),r=n=>({mode:e.mode,value:n,...void 0!==e.min?{min:e.min}:{},...void 0!==e.max?{max:e.max}:{}});return t?[a(o),r(i)]:[r(i),a(o)]}(e.sizes[t],o,c),r=[...e.children.slice(0,t),...l(n),...e.children.slice(t+1)],s=[...e.sizes.slice(0,t),i,a,...e.sizes.slice(t+1)];return{...e,children:r,sizes:s}}const i={type:"split",nodeId:a,dir:s,children:l(n),sizes:fn(o,c)},r=[...e.children];return r[t]=i,{...e,children:r}}return{...e,children:e.children.map(u)}};return cn(u(e))}(o,n,t,a,r,s);return c.ok?{containerId:i,nextRoot:c.root}:null}case"freeSplitMerge":{const{leafId:n}=e.payload,t=tn(o,n);if(!t||null!==t.instanceId)return null;const a=function(e,n){if("leaf"===e.type)return sn("merge: root leaf has no parent");let t=!1;const o=e=>{if("leaf"===e.type)return e;const i=e.children.findIndex(e=>"leaf"===e.type&&e.leafId===n);if(i>=0){t=!0;const n=i-1>=0?i-1:i+1,o=e.sizes[i],s=e.children.filter((e,n)=>n!==i),c=e.sizes.filter((e,n)=>n!==i),d=n<i?n:n-1;return c[d]=(r=o,(a=c[d]).mode===r.mode?{...a,value:a.value+r.value}:a),1===s.length?s[0]:{...e,children:s,sizes:c}}var a,r;return{...e,children:e.children.map(o)}},i=o(e);return t?cn(i):sn(`merge: leaf "${n}" not found as a branch child`)}(o,n);return a.ok?{containerId:i,nextRoot:a.root}:null}}}function mn(e,n){if(!0===e.structureLocked)return!1;if("split"===n.op||"merge"===n.op){const t=tn(e.root,n.leafId);if(!t)return!1;if(!0===t.locked)return!1}return!0}function yn(e){return!0!==e.structureLocked&&!an(e.root)}const In=new WeakMap;function wn(e){const n=new Map;return{resolve(t){const o=function(e){return e.id||e.url||""}(t);if(o&&n.has(o))return n.get(o);if(!e){const e=t.url??"";return o&&n.set(o,e),e}const i=e.resolve(t);return"string"==typeof i?(o&&n.set(o,i),i):(o&&n.set(o,i),i.then(e=>{o&&n.set(o,e)},e=>{console.warn(`[hc-canvas/assets] resolve("${o}") 失败,缓存里删条目允许重试:`,e),o&&n.delete(o)}),i)},__clearCache(){n.clear()}}}function xn(e,n,t){if(!n||0===Object.keys(n).length)return`${e}::{}`;const o=bn(n,t);return null===o?`${e}::__fresh_${Date.now()}_${Math.random().toString(36).slice(2,8)}__`:`${e}::${o}`}function bn(e,n,t=new WeakSet){if(null==e)return JSON.stringify(e);const o=typeof e;if("string"===o||"number"===o||"boolean"===o)return JSON.stringify(e);if("function"===o||"symbol"===o||"bigint"===o)return null==n||n(),null;if(Array.isArray(e)){if(t.has(e))return null==n||n(),null;t.add(e);const o=[];for(const i of e){const e=bn(i,n,t);if(null===e)return null;o.push(e)}return`[${o.join(",")}]`}if("object"===o){const o=Object.getPrototypeOf(e);if(o!==Object.prototype&&null!==o)return null==n||n(),null;const i=e;if(t.has(i))return null==n||n(),null;t.add(i);const a=Object.keys(i).sort(),r=[];for(const e of a){const o=bn(i[e],n,t);if(null===o)return null;r.push(`${JSON.stringify(e)}:${o}`)}return`{${r.join(",")}}`}return null==n||n(),null}function Sn(e){const n=new Map,t=new Map,o=new Map,i=new Map,a=new Map,r=new Map;let s=!1,c=!1,d=0,l=null;function u(e){if(!c&&null!==l)try{l(e)}catch(e){console.error("[hc-canvas/dataStore] trace bridge listener threw",e)}}function p(e){try{e()}catch{}}function f(e,n){const t=o.get(n);let i;if(t)for(const e of t)if(!r.has(e)){i=e;break}void 0!==i?r.set(i,e):p(e)}function h(e,n){var t;const a=o.get(e);if(a)for(const e of a)null==(t=i.get(e))||t.onUpdate(n)}function g(e,t){let o=n.get(e);return o||(o={cacheKey:e,sourceId:t,status:"idle"},n.set(e,o)),o}function v(t,r,s){if(!e)return;const l=a.get(t);l&&l.abort();const p=new AbortController;a.set(t,p);const f=g(t,r);f.status="loading",f.requestParams=s;const v=f.writeSeq??0;Promise.resolve().then(()=>async function(e,n){return{value:await Promise.resolve(e.query(n))}}(e,{sourceId:r,params:s,signal:p.signal})).then(e=>{if(c)return;if(a.get(t)!==p)return;a.delete(t);const o=n.get(t);o&&((o.writeSeq??0)>v?u({kind:"data-query-skipped",cacheKey:t,sourceId:r,writeSeq:o.writeSeq,reason:"race-stale"}):(o.status="success",o.value=e.value,o.error=void 0,o.lastFetchedAt=Date.now(),o.writeSeq=++d,u({kind:"data-source-update",cacheKey:t,sourceId:r,writeSeq:o.writeSeq,value:e.value}),h(t,e.value)))}).catch(e=>{if(c)return;if(function(e){if(null===e||"object"!=typeof e)return!1;return"AbortError"===e.name}(e))return;if(a.get(t)!==p)return;a.delete(t);const s=n.get(t);s&&((s.writeSeq??0)>v?u({kind:"data-query-skipped",cacheKey:t,sourceId:r,writeSeq:s.writeSeq,reason:"race-stale-reject"}):(s.status="error",s.error=e,s.lastFetchedAt=Date.now(),function(e,n){var t,a;const r=o.get(e);if(r)for(const e of r)null==(a=null==(t=i.get(e))?void 0:t.onError)||a.call(t,n)}(t,e)))})}function m(e){if(c)return;const{bindingId:d,sourceId:l,params:u,onUpdate:p,onError:h}=e,g=xn(l,u,()=>{s||(console.warn(`[hc-canvas/dataStore] params for "${l}" contains non-plain values; fresh query every call (no cache)`),s=!0)});!function(e,i){const s=t.get(e);if(s===i)return;if(s){const t=o.get(s);if(t&&(t.delete(e),0===t.size)){o.delete(s);const e=a.get(s);e&&(e.abort(),a.delete(s)),n.delete(s)}const i=r.get(e);i&&(r.delete(e),f(i,s))}t.set(e,i);let c=o.get(i);c||(c=new Set,o.set(i,c)),c.add(e)}(d,g),i.set(d,{onUpdate:p,onError:h});const m=n.get(g);if(m){if("success"===m.status)return void p(m.value);if("error"===m.status)return void(null==h||h(m.error));if("loading"===m.status)return}v(g,l,u)}return{request:m,subscribe:function(n){if(c)return;const{bindingId:i,sourceId:a,params:s,onUpdate:l,onError:f}=n;let v=!0;const y=[],I=()=>{v=!1;for(const e of y)e();y.length=0};if(m({bindingId:i,sourceId:a,params:s,onUpdate:e=>{v?y.push(()=>l(e)):l(e)},onError:f?e=>{v?y.push(()=>f(e)):f(e)}:void 0}),!e)return void I();const w=t.get(i);if(!w)return void I();let x=!0;try{const n=function(e,n){if(e.subscribe)return e.subscribe(n,e=>{if(c)return;if(!x)return;if(!o.has(w))return;const n=g(w,a);n.status="success",n.value=e,n.lastFetchedAt=Date.now(),n.writeSeq=++d,u({kind:"data-source-update",cacheKey:w,sourceId:a,writeSeq:n.writeSeq,value:e}),h(w,e)})}(e,{sourceId:a,params:s});(function(e,n){const t=r.get(e);t&&p(t),r.set(e,n)})(i,n?()=>{x=!1;try{n()}catch{}}:()=>{x=!1}),I()}catch(e){x=!1,I(),c||null==f||f(e)}},removeBinding:function(e,s){if(c)return;const d=!0===(null==s?void 0:s.preserveCache),l=r.get(e);l&&r.delete(e),i.delete(e);const u=function(e){const n=t.get(e);if(!n)return;t.delete(e);const i=o.get(n);return i&&(i.delete(e),0===i.size&&o.delete(n)),n}(e);if(u){if(l&&f(l,u),!o.has(u)){const e=n.get(u);if(!d||"success"!==(null==e?void 0:e.status)){const e=a.get(u);e&&(e.abort(),a.delete(u)),n.delete(u)}}}else l&&p(l)},invalidate:function(e){if(c)return;const t=[];for(const[o,i]of n)void 0!==e&&i.sourceId!==e||t.push(o);for(const e of t){const t=n.get(e);if(!t)continue;const i=o.get(e);if(!i||0===i.size){n.delete(e);const t=a.get(e);t&&(t.abort(),a.delete(e));continue}t.status="stale",v(e,t.sourceId,t.requestParams)}},getSnapshot:function(){return{entries:Array.from(n.values()).map(e=>({cacheKey:e.cacheKey,sourceId:e.sourceId,status:e.status,value:e.value,error:e.error,lastFetchedAt:e.lastFetchedAt}))}},getCachedBySourceId:function(e,t){if(c)return;const o=xn(e,t,()=>{s||(console.warn(`[hc-canvas/dataStore] params for "${e}" contains non-plain values; cannot compute stable cache key, cache lookup will miss`),s=!0)}),i=n.get(o);return i?{value:i.value,status:i.status}:void 0},disposeAll:function(){if(!c){c=!0;for(const e of a.values())try{e.abort()}catch{}a.clear();for(const e of r.values())try{e()}catch{}r.clear(),n.clear(),t.clear(),o.clear(),i.clear(),l=null}},attachTraceBridge:function(e){return c?()=>{}:(l=e,()=>{l===e&&(l=null)})},getBindingsForCacheKey:function(e){const n=o.get(e);return n?Array.from(n):[]},get isDisposed(){return c}}}const kn=Symbol("hc:canvas:context");function Mn(e={}){var o,r;const s=e.canvasId??$,c=Je(e.initialDocument),d=Qe(),l=Ze(e.viewport),u=Xe(e.scheduler),p=Sn(null==(o=e.adapters)?void 0:o.data);let f=!1;const h=function(){const e=new WeakSet;return{mint(n){const o=t({type:"freeSplitRestore",payload:n});return e.add(o),o},isMarked:n=>"object"==typeof n&&null!==n&&e.has(n)&&"freeSplitRestore"===n.type}}(),g=n(()=>{const n=e.freeSplitEnabled;return("function"==typeof n?n():n)??!1}),v=n(()=>{const n=e.freeSplitControlsAlways;return("function"==typeof n?n():n)??!1}),m=e.cascadeRemove??!0,y=[];e.hooks&&y.push(e.hooks);const I=i(0),w=n(()=>I.value>0),x=i({}),b=n(()=>x.value),S=n(()=>{var n;const t=(null==(n=e.getMode)?void 0:n.call(e))??"design",o=function(e){switch(e){case"design":return{selectable:!0,draggable:!0,resizable:!0,keyboardMove:!0,snap:!0,grid:!1,allowOverflow:!0,locked:!1};case"preview":case"runtime":return{selectable:!1,draggable:!1,resizable:!1,keyboardMove:!1,snap:!0,grid:!1,allowOverflow:!0,locked:!1};case"inspect":return{selectable:!0,draggable:!1,resizable:!1,keyboardMove:!1,snap:!0,grid:!1,allowOverflow:!0,locked:!1}}}(t),i=c.document.layout.behavior??{};if("design"!==t){const{selectable:e,draggable:n,resizable:t,keyboardMove:a,...r}=i;return{...o,...r,...x.value}}return{...o,...i,...x.value}}),k=wn(null==(r=e.adapters)?void 0:r.assets),M=i("select"),z=i(null),T=n(()=>z.value??M.value),L=i(null),C=n(()=>L.value),B=i(null),P=i({w:0,h:0}),D=n(()=>P.value),R=n(()=>{const e=c.document.layout,n=P.value;return{w:ze(e.canvas.width,n.w,1920),h:ze(e.canvas.height,n.h,1080)}}),E=i([]),A=n(()=>E.value),O=i(0),F=n(()=>O.value>0);function j(e){if(!e)return null;const n=c.getInstance(e),t=null==n?void 0:n.containerLayout;return t&&"free-split"===t.mode?t:null}function q(){const e=d.freeSplitSelection.value;if(!e)return;const n=j(e.containerId);if(!n)return void d.clearFreeSplitSelection();if("freeSplitLeaf"===e.kind)return void(tn(n.root,e.leafId)||d.clearFreeSplitSelection());const t=on(n.root,e.nodeId);(!t||e.dividerIndex<0||e.dividerIndex>=t.children.length-1)&&d.clearFreeSplitSelection()}const N={canvasId:s,document:c,selection:d,viewport:l,scheduler:u,adapters:e.adapters??{},dataStore:p,dispatch:function(e){var n,t;if(f)return void console.warn("[hc-canvas/context] dispatch called after dispose()");if("freeSplitRestore"===e.type)return void(h.isMarked(e)?function(e){const{containerId:n,containerLayout:t,addInstances:o,addBindings:i,removeInstanceIds:a}=e.payload;if(c.setInstanceContainerLayout(n,Z(t)),o)for(const e of o)c.addInstance(Z(e));if(i)for(const e of i)c.addBinding(Z(e));if(a)for(const e of a)c.removeInstance(e),d.removeFromSelection(e);q()}(e):console.warn("[hypercard] freeSplitRestore 未经内部铸造(疑似伪造),已拒绝。"));const o=function(e){var n;if(gn(e)){if(!g.value)return console.warn("[hypercard] free-split 布局未启用(本 canvas gate 关),free-split action 已忽略。"),null;const n=j(e.payload.containerId);if(!n)return null;if("freeSplitSplit"===e.type){if(!mn(n,{op:"split",leafId:e.payload.leafId}))return console.warn("[hypercard] free-split split 被锁(structureLocked / leaf.locked),已忽略。"),null}else if("freeSplitMerge"===e.type){if(!mn(n,{op:"merge",leafId:e.payload.leafId}))return console.warn("[hypercard] free-split merge 被锁(structureLocked / leaf.locked),已忽略。"),null;const t=tn(n.root,e.payload.leafId);if(t&&null!==t.instanceId)return console.warn("[hypercard] free-split merge 仅支持空叶(先 clear 内容),已忽略。"),null}else if("freeSplitResize"===e.type&&!mn(n,{op:"resize"}))return console.warn("[hypercard] free-split resize 被锁(structureLocked),已忽略。"),null;return e}if("removeInstance"===e.type){const n=c.getInstance(e.payload.instanceId),t=j(null==n?void 0:n.parentId);if(n&&t){const e=rn(t.root).find(e=>e.instanceId===n.instanceId);if(e)return{type:"freeSplitClear",payload:{containerId:n.parentId,leafId:e.leafId}}}}if("addInstance"===e.type){const t=e.payload.instance;if(j(t.parentId??(null==(n=t.slotPlacement)?void 0:n.parentInstanceId)))return console.warn("[hypercard] free-split 容器子实例必须通过 freeSplitFill 创建(含 slotPlacement 入口),addInstance 已拒绝。"),null}if("duplicateInstance"===e.type){const n=c.getInstance(e.payload.instanceId);if(n){if(j(n.instanceId))return console.warn("[hypercard] free-split 容器不支持浅复制(树/flat 会不一致),已拒绝。"),null;if(j(n.parentId))return console.warn("[hypercard] free-split 容器子实例不支持复制(首版),已拒绝。"),null}}if("updateInstance"===e.type&&e.payload.patch){const n=e.payload.patch;if("parentId"in n){const e=n.parentId;if(e&&j(e))return console.warn("[hypercard] 不能 reparent 进 free-split 容器(请用 freeSplitFill),已拒绝。"),null}const t=n.slotPlacement;if((null==t?void 0:t.parentInstanceId)&&j(t.parentInstanceId))return console.warn("[hypercard] 不能用 slotPlacement 把实例挂进 free-split 容器(请用 freeSplitFill),已拒绝。"),null;if(["parentId","slot","placement","slotPlacement"].some(e=>e in n)){const n=c.getInstance(e.payload.instanceId);if(n&&j(n.parentId))return console.warn("[hypercard] 不能用 updateInstance 改 free-split 子实例的归属(parentId/slot/placement/slotPlacement);请用 freeSplitClear/freeSplitFill,已拒绝。"),null}}if("setRootLayout"===e.type&&null!==e.payload.rootLayout&&"free-split"===e.payload.rootLayout.mode)return console.warn("[hypercard] setRootLayout: rootLayout 不支持 free-split(仅容器实例),已忽略。"),null;if("setContainerLayout"===e.type){const n=j(e.payload.instanceId);if(n&&!yn(n))return console.warn("[hypercard] free-split 容器被锁(structureLocked / leaf.locked),不能整树替换 containerLayout,已忽略。"),null;if(null!==e.payload.containerLayout&&"free-split"===e.payload.containerLayout.mode&&!g.value)return console.warn("[hypercard] free-split 布局未启用(本 canvas gate 关),setContainerLayout 已忽略。"),null}if("updateLayout"===e.type&&e.payload.patch.rootLayout&&"free-split"===e.payload.patch.rootLayout.mode){console.warn("[hypercard] updateLayout: rootLayout 不支持 free-split(仅容器实例),已剥除该字段。");const{rootLayout:n,...t}=e.payload.patch;return 0===Object.keys(t).length?null:{type:"updateLayout",payload:{patch:t}}}return e}(e);if(null!==o){for(const e of y)if(!1===(null==(n=e.onBeforeAction)?void 0:n.call(e,o)))return;switch(o.type){case"addInstance":c.addInstance(o.payload.instance);break;case"removeInstance":{const e=m?nn(c.document.instances,o.payload.instanceId).instanceIds:[o.payload.instanceId];for(const n of e)c.removeInstance(n),d.removeFromSelection(n);q();break}case"updateInstance":c.updateInstance(o.payload.instanceId,o.payload.patch);break;case"moveInstance":c.moveInstance(o.payload.instanceId,o.payload.x,o.payload.y);break;case"resizeInstance":c.resizeInstance(o.payload.instanceId,o.payload.w,o.payload.h);break;case"setInstanceProp":c.setInstanceProp(o.payload.instanceId,o.payload.key,o.payload.value);break;case"addBinding":c.addBinding(o.payload.binding);break;case"removeBinding":c.removeBinding(o.payload.bindingId);break;case"updateBinding":c.updateBinding(o.payload.bindingId,o.payload.patch);break;case"updateLayout":c.updateLayout(o.payload.patch);break;case"setRootLayout":{const{rootLayout:e}=o.payload;c.updateLayout({rootLayout:null===e?void 0:e});break}case"replaceDocument":c.replaceDocument(o.payload.document),d.purgeOrphans(c.document.instances.map(e=>e.instanceId)),q();break;case"setComponentOverride":{const{instanceId:e,override:n}=o.payload;if(void 0===c.getInstance(e)){console.warn(`[hc-canvas/context] setComponentOverride: instance "${e}" 不存在,no-op`);break}c.setComponentOverride(e,n);break}case"setInstanceLocked":c.setInstanceLocked(o.payload.instanceId,o.payload.locked);break;case"duplicateInstance":c.duplicateInstance(o.payload.instanceId,o.payload.newInstanceId,o.payload.offset??{x:20,y:20});break;case"setInstanceSize":{const{instanceId:e,size:n}=o.payload;if(null===n)c.setInstanceSize(e,null);else{const t=ye(void 0,n);c.setInstanceSize(e,t??null)}break}case"setContainerLayout":{const{instanceId:e,containerLayout:n}=o.payload;if(null===n)c.setInstanceContainerLayout(e,null);else{const t=xe(n);null!==t&&c.setInstanceContainerLayout(e,t)}q();break}case"updateLayoutBox":c.updateInstanceLayoutBox(o.payload.instanceId,o.payload.patch);break;case"updateLayoutItem":c.updateInstanceLayoutItem(o.payload.instanceId,o.payload.patch);break;case"updateRotation":c.setInstanceRotation(o.payload.instanceId,o.payload.value);break;case"select":d.select(o.payload.instanceId);break;case"toggleSelect":d.toggleSelect(o.payload.instanceId);break;case"addToSelection":d.addToSelection(o.payload.instanceId);break;case"removeFromSelection":d.removeFromSelection(o.payload.instanceId);break;case"clearSelection":d.clearSelection();break;case"selectAll":d.selectAll(o.payload.instanceIds);break;case"freeSplitFill":case"freeSplitClear":case"freeSplitSwap":case"freeSplitResize":case"freeSplitSplit":case"freeSplitMerge":!function(e){const n=j(e.payload.containerId);if(!n)return;const t=vn(e,n,c.document.instances);if(!t)return;const o=Z({...n,root:t.nextRoot});if(c.setInstanceContainerLayout(e.payload.containerId,o),t.addInstance&&c.addInstance(Z(t.addInstance)),t.removeInstanceIds)for(const e of t.removeInstanceIds)c.removeInstance(e),d.removeFromSelection(e);q()}(o);break;default:{const e=o;console.warn("[hc-canvas/context] unknown action",e)}}for(const e of y)null==(t=e.onAfterAction)||t.call(e,o)}},dispose:function(){f||(f=!0,I.value=0,u.dispose(),p.disposeAll())},isBatching:w,beginBatch:function(){f||I.value++},endBatch:function(e){var n;if(!f&&0!==I.value)if(I.value>1)I.value--;else{for(const t of y)null==(n=t.onAfterBatch)||n.call(t,e);I.value=0}},registerHooks:function(e){return y.push(e),()=>{const n=y.indexOf(e);n>=0&&y.splice(n,1)}},isRecordingSuppressed:F,suppressRecording:function(e){O.value++;try{return e()}finally{O.value--}},freeSplitEnabled:g,freeSplitControlsAlways:v,cascadeRemove:m,effectiveBehavior:S,interactionOptions:b,setInteractionOptions:function(e){const n={...x.value};for(const t of Object.keys(e)){const o=e[t];void 0===o?delete n[t]:n[t]=o}x.value=n},resolveAsset:function(e){return k.resolve(e)},toolMode:T,setToolMode:function(e){M.value=e},setTemporaryToolMode:function(e){z.value=e},mouseCanvasPoint:C,setMouseCanvasPoint:function(e){L.value=e},measuredStageSize:D,measuredCanvasSize:R,setMeasuredStageSize:function(e){const n=Math.max(0,Math.round(e.w)),t=Math.max(0,Math.round(e.h));P.value.w===n&&P.value.h===t||(P.value={w:n,h:t})},layoutIssues:A,setLayoutIssues:function(e){E.value=e},cannotDragLayoutManagedChildEvent:a(B),setCannotDragLayoutManagedChildEvent:function(e){B.value=e}};return function(e,n){In.set(e,n)}(N,{computeInverse:e=>function(e,n,t){const o=n.document,{containerId:i}=e.payload,a=o.getInstance(i),r=null==a?void 0:a.containerLayout;if(!r||"free-split"!==r.mode)return null;const s=r,c=vn(e,s,o.document.instances);if(!c)return null;const d={containerId:i,containerLayout:Z(s)};if(c.removeInstanceIds&&c.removeInstanceIds.length>0){const e=c.removeInstanceIds;d.addInstances=e.map(e=>o.getInstance(e)).filter(e=>void 0!==e).map(e=>Z(e));const n=o.document.bindings.filter(n=>e.some(e=>Ge(n,e))).map(e=>Z(e));n.length>0&&(d.addBindings=n)}return c.addInstance&&(d.removeInstanceIds=[c.addInstance.instanceId]),t.mint(d)}(e,N,h)}),N}function zn(e){r(kn,e)}function Tn(){const e=o(kn);if(!e)throw new Error("[hc-canvas] useCanvasContext() called outside <CanvasProvider> / <HyperCardCanvasDesigner>. Make sure the component tree is wrapped by a provider.");return e}const Ln="default",Cn=8,Bn=8;function Pn(e){return e.slot??Ln}function Dn(e,n){const t=[],o=n.resolveContract,i=n.maxDepth??8,a=new Map;for(const n of e.instances)a.set(n.instanceId,n);for(const n of e.instances){if(void 0===n.parentId&&void 0!==n.slot&&n.slot!==Ln){Rn(t,"orphan-slot",n.instanceId,`slot "${n.slot}" 没有 parentId,数据不完整`);continue}if(void 0===n.parentId)continue;if(!a.has(n.parentId)){Rn(t,"missing-parent",n.instanceId,`parentId "${n.parentId}" 指向不存在的实例`);continue}"absolute"!==n.placement&&"canvas"!==n.placement||Rn(t,"absolute-child-rejected",n.instanceId,"parentId + placement='absolute'|'canvas' 在 D4.5f MVP 不支持,只允许 root absolute/canvas 或 child slot/container");const e=a.get(n.parentId),i=o(e.componentVersionKey);if(!i)continue;const r=i.slotsDecl??[];if(0===r.length){Rn(t,"parent-not-layout",n.instanceId,`父组件 "${e.componentId}" 不是布局组件(slotsDecl 为空)`);continue}const s=Pn(n),c=En(r,s);c?c.accepts&&c.accepts.length>0&&(c.accepts.includes(n.componentId)||Rn(t,"slot-not-allowed-component",n.instanceId,`slot "${s}" 不允许 componentId "${n.componentId}"(accepts: ${c.accepts.join(", ")})`)):Rn(t,"invalid-slot",n.instanceId,`slot "${s}" 不在父 "${e.componentId}" 的 slotsDecl 中(可能组件升级删除了该 slot)`)}const r=new Map;for(const n of e.instances){if(void 0===n.parentId)continue;const e=Pn(n),t=`${n.parentId}::${e}`;let o=r.get(t);o||(o=[],r.set(t,o)),o.push(n)}for(const[e,n]of r){if(n.length<=1)continue;const[i,r]=$n(e),s=a.get(i);if(!s)continue;const c=o(s.componentVersionKey);if(!c)continue;const d=En(c.slotsDecl??[],r);if(d&&!0!==d.multiple)for(let e=1;e<n.length;e++)Rn(t,"slot-multiple-violated",n[e].instanceId,`slot "${r}" 不允许多个子实例(SlotDecl.multiple !== true)`)}const s=new Map;for(const n of e.instances)s.set(n.instanceId,0);for(const n of e.instances)0===s.get(n.instanceId)&&c(n.instanceId,[],0);function c(e,n,o){s.set(e,1);const r=a.get(e);if(o>i)return Rn(t,"depth-exceeded",e,`嵌套深度 ${o} 超过上限 ${i}`),void s.set(e,2);const d=r.parentId;if(void 0===d)return void s.set(e,2);if(!a.has(d))return void s.set(e,2);const l=s.get(d);if(1===l)return Rn(t,"cycle",e,`parentId 链成环:${[...n,e,d].join(" → ")}`),void s.set(e,2);2!==l?(c(d,[...n,e],o+1),s.set(e,2)):s.set(e,2)}return t}function Rn(e,n,t,o){e.push({kind:n,instanceId:t,detail:o})}function En(e,n){return e.find(e=>e.name===n)}function $n(e){const n=e.indexOf("::");return[e.slice(0,n),e.slice(n+2)]}const An=["data-hc-leaf","data-hc-leaf-container"],On=s({name:"SplitTreeRenderer",__name:"SplitTreeRenderer",props:{containerId:{},node:{},register:{type:Function},unregister:{type:Function},gap:{}},setup(e){const t=e,o=n(()=>"leaf"===t.node.type?t.node:null),i=n(()=>"split"===t.node.type?t.node:null);function a(e){const n=o.value;n&&(e instanceof HTMLElement?t.register(t.containerId,n.leafId,e):t.unregister(t.containerId,n.leafId))}function r(e){return e?"px"===e.mode?`${e.value}px`:`minmax(0, ${e.value}fr)`:"minmax(0, 1fr)"}function s(e){return"leaf"===e.type?e.leafId:e.nodeId}const v=n(()=>{const e=i.value;if(!e)return{};const n=[];for(let t=0;t<e.children.length;t++)n.push(r(e.sizes[t]));const o=n.join(" ")||"minmax(0, 1fr)",a={display:"grid",width:"100%",height:"100%",boxSizing:"border-box"};return"row"===e.dir?(a.gridTemplateColumns=o,a.gridTemplateRows="100%"):(a.gridTemplateRows=o,a.gridTemplateColumns="100%"),t.gap&&t.gap>0&&(a.gap=`${t.gap}px`),a});return(n,t)=>{const r=c("SplitTreeRenderer",!0);return o.value?(d(),l("div",{key:0,ref:a,"data-hc-leaf":o.value.leafId,"data-hc-leaf-container":e.containerId,class:"hc-fs-leaf",style:{width:"100%",height:"100%","box-sizing":"border-box"}},null,8,An)):i.value?(d(),l("div",{key:1,class:"hc-fs-branch",style:u(v.value)},[(d(!0),l(p,null,f(i.value.children,n=>(d(),h(r,{key:s(n),"container-id":e.containerId,node:n,register:e.register,unregister:e.unregister,gap:e.gap},null,8,["container-id","node","register","unregister","gap"]))),128))],4)):g("",!0)}}}),Fn={containers:new Map};function jn(e){return"object"==typeof e&&null!==e}function qn(e){if(!jn(e))return{ok:!1,reason:"empty-root"};const n=new Set,t=new Set,o=new Map;let i=null;const a=(e,r)=>{if(i)return;if(r>8)return void(i="depth-exceeded");if(!jn(e))return void(i="empty-root");const s=e.type;if("leaf"===s){const{leafId:a,instanceId:r}=e;if("string"!=typeof a)return void(i="empty-root");if(null!=r&&"string"!=typeof r)return void(i="empty-root");if(n.has(a))return void(i="duplicate-id");if(n.add(a),"string"==typeof r){if(t.has(r))return void(i="duplicate-instance");t.add(r),o.set(r,a)}return}if("split"===s){const{nodeId:t,dir:o,children:s,sizes:c}=e;if("string"!=typeof t)return void(i="empty-root");if("row"!==o&&"col"!==o)return void(i="empty-root");if(!Array.isArray(s)||!Array.isArray(c))return void(i="empty-root");if(n.has(t))return void(i="duplicate-id");n.add(t);for(const e of c)if(ae(e))return void(i="bad-size");for(const e of s)a(e,r+1);return}i="empty-root"};return a(e,1),i?{ok:!1,reason:i}:{ok:!0,instanceToLeaf:o}}function Nn(e,n,t){const o=(null==e?void 0:e.onError)??"log";switch(o){case"stop":return"stop";case"log":return console.error(`[hc-canvas/wirePageBindings] binding "${t}" threw:`,n),"continue";case"continue":return"continue";default:return console.error(`[hc-canvas/wirePageBindings] binding "${t}" threw (unknown onError="${String(o)}"):`,n),"continue"}}function Vn(e,n){return e&&"passthrough"!==e.kind?"static"===e.kind?function(e){if("function"==typeof structuredClone)try{return structuredClone(e)}catch{}try{return JSON.parse(JSON.stringify(e))}catch{return[...e]}}(e.args):"pickPath"===e.kind?function(e,n){const t=[];let o;for(const i of e){const e=Kn(n,i.from);void 0===i.to?t.push(e):"number"==typeof i.to?(_n(t,i.to+1),t[i.to]=e):(o||(t.length>0&&"object"==typeof t[0]&&null!==t[0]&&!Array.isArray(t[0])?o=t[0]:(o={},0===t.length?t.push(o):t[0]=o)),o[i.to]=e)}return t}(e.paths,n):[n]:[n]}function Kn(e,n){if(""===n)return e;const t=n.split(".");let o=e;for(const e of t){if(null==o)return;if("object"!=typeof o)return;o=o[e]}return o}function _n(e,n){for(;e.length<n;)e.push(void 0)}function Xn(e,n,t,o){e.debouncePendingTimer=null;const i=e.debounceDirty,a=e.debouncePendingChainId,r=e.debouncePendingPayload;e.debouncePendingChainId=null,e.debouncePendingPayload=void 0,e.debounceDirty=!1,t&&i&&null!==a&&Gn(n,e).pass&&o(r,a)}function Yn(e,n,t){e.throttleTrailingTimer=null;const o=e.throttleTrailingPendingChainId,i=e.throttleTrailingPendingPayload;e.throttleTrailingPendingChainId=null,e.throttleTrailingPendingPayload=void 0,e.throttleWindowStartTs=null,null!==o&&(n.once&&e.onceConsumed||(n.once&&(e.onceConsumed=!0),e.throttleLastFireTs=Hn(),t(i,o)))}function Gn(e,n){const t=e.throttle;if(t){t.leading;const e=t.windowMs,o=Hn(),i=n.throttleLastFireTs;if(null!==i&&o-i<e)return{pass:!1,reason:"throttle-window"};n.throttleLastFireTs=o}if(e.once){if(n.onceConsumed)return{pass:!1,reason:"once-consumed"};n.onceConsumed=!0}return{pass:!0}}function Un(e){return!!(e&&(e.throttle&&!1===e.throttle.leading&&!1===e.throttle.trailing||e.debounce&&!1===e.debounce.leading&&!1===e.debounce.trailing))}function Hn(){return Date.now()}let Wn=0;function Jn(e){var n,t;const o=e.canvasId,{source:i}=e,a=e.dataStore,r=new Set;let s="off",c=0,d=!1;const l="w"+ ++Wn;let u=0;function p(){return`${l}-${++u}`}let f=0;function h(e){C.hasListeners("binding:trace")&&C.emit("binding:trace",{canvasId:o,ts:Date.now(),seq:++f,...e})}let g=!1,m=null;function y(){g&&(m&&m(),m=null,g=!1)}const I=new Map,w=new Map,x=new Set,b=new Set,S=new Set,k=new Set,M=new Map;let z=new Set;const T=[],L=[],C=function(e){const n=new Set,t=new Set,o=new Set;return{on(i,a){var r;if("binding:fire"===i){const e=a;return n.add(e),()=>n.delete(e)}if("binding:error"===i){const e=a;return t.add(e),()=>t.delete(e)}const s=a;return o.add(s),null==(r=null==e?void 0:e.onTraceListenerCountChange)||r.call(e,o.size),()=>{var n;o.delete(s),null==(n=null==e?void 0:e.onTraceListenerCountChange)||n.call(e,o.size)}},emit(e,i){if("binding:fire"===e)for(const e of n)try{e(i)}catch(e){console.error("[hc-canvas/wirePageBindings] listener threw",e)}else if("binding:error"===e)for(const e of t)try{e(i)}catch(e){console.error("[hc-canvas/wirePageBindings] listener threw",e)}else for(const e of o)try{e(i)}catch(e){console.error("[hc-canvas/wirePageBindings] trace listener threw",e)}},hasListeners:e=>"binding:fire"===e?n.size>0:"binding:error"===e?t.size>0:o.size>0,clear(){n.clear(),t.clear(),o.clear()}}}({onTraceListenerCountChange:function(e){e>0?!g&&a&&(m=a.attachTraceBridge(e=>{if(d)return;const n=a.getBindingsForCacheKey(e.cacheKey);for(const t of n)h({kind:e.kind,bindingId:t,cacheKey:e.cacheKey,sourceId:e.sourceId,writeSeq:e.writeSeq,reason:e.reason,payload:e.value})}),g=!0):y()}}),B=function(e){let n=[],t=200,o=null,i=null;return{start:function(a){i&&(i(),i=null,n=[]),t=(null==a?void 0:a.capacity)??200,o=(null==a?void 0:a.filterKinds)&&a.filterKinds.length>0?new Set(a.filterKinds):null,i=e.on("binding:trace",e=>{o&&!o.has(e.kind)||(n.push(e),n.length>t&&n.shift())})},stop:function(){i&&(i(),i=null);const e=n.slice();return n=[],e},snapshot:function(){return n.slice()},get isRunning(){return null!==i}}}({on:(e,n)=>C.on(e,n)});function P(e){return void 0===e.canvasId||e.canvasId===o}function D(e){for(const n of Ye(e))if(void 0!==n.canvasId&&n.canvasId!==o)return!0;return!1}function R(e){return JSON.stringify({id:e.id,type:e.type,disabled:e.disabled??!1,source:e.source,target:e.target,mapping:e.mapping??null,schedule:e.schedule??null,errorPolicy:e.errorPolicy??null})}function E(e,n){return void 0===n||R(e)!==n}function $(){var e;return(null==(e=i.getDocument())?void 0:e.bindings)??[]}function j(e){return $().find(n=>n.id===e)}function q(e){try{e()}catch(e){console.error("[hc-canvas/wirePageBindings] cleanup threw",e)}}function N(e,n){C.emit("binding:fire",e),h({kind:"fire",bindingId:e.bindingId,chainId:n,payload:e.payload,args:e.args})}function V(e,n){C.emit("binding:error",e),h({kind:(null==n?void 0:n.traceKind)??"error",bindingId:e.bindingId,chainId:null==n?void 0:n.chainId,code:e.code,message:e.message,detail:e.detail})}function K(e,n=!1){const t=I.get(e);if(t)for(const e of t)q(e);I.delete(e);const o=w.get(e);if(o){const n=function(e){const n={};return null!==e.debouncePendingTimer&&(clearTimeout(e.debouncePendingTimer),e.debouncePendingTimer=null,null!==e.debouncePendingChainId&&(n.droppedDebounce={chainId:e.debouncePendingChainId,payload:e.debouncePendingPayload})),null!==e.debouncePendingTimer||null===e.debouncePendingChainId||n.droppedDebounce||(n.droppedDebounce={chainId:e.debouncePendingChainId,payload:e.debouncePendingPayload}),e.debouncePendingChainId=null,e.debouncePendingPayload=void 0,e.debounceDirty=!1,null!==e.throttleTrailingTimer&&(clearTimeout(e.throttleTrailingTimer),e.throttleTrailingTimer=null),null!==e.throttleTrailingPendingChainId&&(n.droppedThrottleTrailing={chainId:e.throttleTrailingPendingChainId,payload:e.throttleTrailingPendingPayload}),e.throttleTrailingPendingChainId=null,e.throttleTrailingPendingPayload=void 0,e.throttleWindowStartTs=null,n}(o);n.droppedDebounce&&h({kind:"scheduled-dropped",bindingId:e,chainId:n.droppedDebounce.chainId,payload:n.droppedDebounce.payload}),n.droppedThrottleTrailing&&h({kind:"scheduled-dropped",bindingId:e,chainId:n.droppedThrottleTrailing.chainId,payload:n.droppedThrottleTrailing.payload}),w.delete(e)}b.delete(e),M.delete(e),S.delete(e),k.delete(e),r.delete(e),a&&a.removeBinding(e,{preserveCache:n})}function _(e=!1){for(const n of[...I.keys()])K(n,e)}function X(e){if(d)return;if(I.has(e.id))return;if(D(e))return void(S.has(e.id)||(V({bindingId:e.id,code:"unsupported-cross-canvas"}),S.add(e.id),h({kind:"wire-skipped",bindingId:e.id,reason:"unsupported-cross-canvas"})));const n=function(e){return e.disabled?"disabled":x.has(e.id)?"stopped":null}(e);if(n)return void h({kind:"wire-skipped",bindingId:e.id,reason:n});if("data-preview"===s&&"dataSource"!==e.source.kind)return void h({kind:"wire-skipped",bindingId:e.id,reason:"mode-matrix-data-preview"});Un(e.schedule)&&!k.has(e.id)&&(console.warn(`[hc-canvas/wirePageBindings] schedule.{throttle|debounce}.{leading=false,trailing=false} 永远不会 fire (binding "${e.id}")`),k.add(e.id));const t=[];switch(e.source.kind){case"instanceEvent":{const n=O(e.source.instanceId,o);if(!n)return void b.add(e.id);const i=e.source.event,a=n.on(i,n=>G(e,n));t.push(a);break}case"lifecycle":case"page":break;case"dataSource":{if(!a)return void(r.has(e.id)||(V({bindingId:e.id,code:"no-data-adapter"}),h({kind:"wire-skipped",bindingId:e.id,reason:"no-data-adapter"}),r.add(e.id)));const n=e.source,t="change"===n.watch,o=p(),i=n=>G(e,n),s=n=>{V({bindingId:e.id,code:"data-query-failed",message:n instanceof Error?n.message:String(n),detail:n},{chainId:o}),"stop"===Nn(e.errorPolicy,n,e.id)&&x.add(e.id)};h({kind:"data-query-started",bindingId:e.id,sourceId:n.sourceId,chainId:o}),t?a.subscribe({bindingId:e.id,sourceId:n.sourceId,onUpdate:i,onError:s}):a.request({bindingId:e.id,sourceId:n.sourceId,onUpdate:i,onError:s});break}default:return}I.set(e.id,t),M.set(e.id,R(e))}function Y(){for(const e of $())X(e)}function G(e,n){if(d)return;if("off"===s)return;if("data-preview"===s&&"dataSource"!==e.source.kind)return;if(x.has(e.id))return void h({kind:"stopped-skipped",bindingId:e.id});if(D(e))return;if(c>=8){const n=p();return void V({bindingId:e.id,code:"cycle-detected"},{chainId:n,traceKind:"cycle-detected"})}const t=p(),o=function(e,n,t,o){return Un(e)?{fire:!1,deferred:!1,reason:"schedule-no-fire"}:(null==e?void 0:e.debounce)?function(e,n,t,o){const i=e.debounce,a=i.leading??!1,r=i.trailing??!0,s=i.windowMs;if(null===n.debouncePendingTimer){if(a){const t=Gn(e,n);return t.pass?(n.debounceLeadingFireTs=Hn(),n.debounceDirty=!1,n.debouncePendingPayload=void 0,n.debouncePendingChainId=null,{fire:!0,deferred:!1,scheduleDeferred:t=>{n.debouncePendingTimer=setTimeout(()=>{Xn(n,e,r,t)},s)}}):{fire:!1,deferred:!1,reason:t.reason}}return n.debouncePendingPayload=t,n.debouncePendingChainId=o,n.debounceDirty=!0,{fire:!1,deferred:!0,scheduleDeferred:t=>{n.debouncePendingTimer=setTimeout(()=>{Xn(n,e,r,t)},s)}}}const c=null!==n.debouncePendingChainId?{chainId:n.debouncePendingChainId,payload:n.debouncePendingPayload}:void 0;return n.debounceDirty=!0,r&&(n.debouncePendingPayload=t,n.debouncePendingChainId=o),clearTimeout(n.debouncePendingTimer),n.debouncePendingTimer=null,r?{fire:!1,deferred:!0,droppedByReschedule:c,scheduleDeferred:t=>{n.debouncePendingTimer=setTimeout(()=>{Xn(n,e,r,t)},s)}}:{fire:!1,deferred:!1,reason:"debounce-window",scheduleDeferred:t=>{n.debouncePendingTimer=setTimeout(()=>{Xn(n,e,r,t)},s)}}}(e,n,t,o):function(e,n,t,o){const i=null==e?void 0:e.throttle;if(!i)return function(e,n){if(null==e?void 0:e.once){if(n.onceConsumed)return{fire:!1,deferred:!1,reason:"once-consumed"};n.onceConsumed=!0}return{fire:!0,deferred:!1}}(e,n);const a=i.leading??!0,r=i.trailing??!1,s=i.windowMs,c=Hn();if(a){const i=n.throttleLastFireTs;if(!(null!==i&&c-i<s))return(null==e?void 0:e.once)&&n.onceConsumed?{fire:!1,deferred:!1,reason:"once-consumed"}:((null==e?void 0:e.once)&&(n.onceConsumed=!0),n.throttleLastFireTs=c,{fire:!0,deferred:!1});if(!r)return{fire:!1,deferred:!1,reason:"throttle-window"};const a=null!==n.throttleTrailingPendingChainId?{chainId:n.throttleTrailingPendingChainId,payload:n.throttleTrailingPendingPayload}:void 0;if(n.throttleTrailingPendingPayload=t,n.throttleTrailingPendingChainId=o,null===n.throttleTrailingTimer){const t=s-(c-i);return{fire:!1,deferred:!0,scheduleDeferred:o=>{n.throttleTrailingTimer=setTimeout(()=>{Yn(n,e,o)},t)}}}return{fire:!1,deferred:!1,reason:"throttle-window",droppedByReschedule:a}}if(null===n.throttleWindowStartTs)return n.throttleWindowStartTs=c,n.throttleTrailingPendingPayload=t,n.throttleTrailingPendingChainId=o,{fire:!1,deferred:!0,reason:"leading-disabled",scheduleDeferred:t=>{n.throttleTrailingTimer=setTimeout(()=>{Yn(n,e,t)},s)}};const d=null!==n.throttleTrailingPendingChainId?{chainId:n.throttleTrailingPendingChainId,payload:n.throttleTrailingPendingPayload}:void 0;return n.throttleTrailingPendingPayload=t,n.throttleTrailingPendingChainId=o,{fire:!1,deferred:!1,reason:"throttle-window",droppedByReschedule:d}}(e,n,t,o)}(e.schedule,function(e){let n=w.get(e);return n||(n={onceConsumed:!1,throttleLastFireTs:null,throttleWindowStartTs:null,throttleTrailingPendingPayload:void 0,throttleTrailingPendingChainId:null,throttleTrailingTimer:null,debouncePendingTimer:null,debouncePendingPayload:void 0,debouncePendingChainId:null,debounceDirty:!1,debounceLeadingFireTs:null},w.set(e,n)),n}(e.id),n,t),i=function(e){if(e)return e.throttle?{kind:"throttle",windowMs:e.throttle.windowMs,leading:e.throttle.leading,trailing:e.throttle.trailing}:e.debounce?{kind:"debounce",windowMs:e.debounce.windowMs,leading:e.debounce.leading,trailing:e.debounce.trailing}:void 0}(e.schedule);o.droppedByReschedule&&h({kind:"scheduled-dropped",bindingId:e.id,chainId:o.droppedByReschedule.chainId,payload:o.droppedByReschedule.payload,schedule:i}),o.scheduleDeferred&&o.scheduleDeferred((n,t)=>{d||(h({kind:"scheduled-flushed",bindingId:e.id,chainId:t,payload:n,schedule:i}),U(e,n,t))}),o.reason?h({kind:"scheduled-skipped",bindingId:e.id,chainId:t,reason:o.reason,payload:n,schedule:i}):!o.deferred||o.fire?o.fire&&U(e,n,t):h({kind:"scheduled-deferred",bindingId:e.id,chainId:t,payload:n,schedule:i})}function U(e,n,t){if(d)return;const i=O(e.target.instanceId,o);if(!i)return void V({bindingId:e.id,code:"target-not-mounted"},{chainId:t});let a,r;try{a=Vn(e.mapping,n)}catch(n){return h({kind:"mapping-failed",bindingId:e.id,chainId:t,message:n instanceof Error?n.message:String(n),detail:n}),void("stop"===Nn(e.errorPolicy,n,e.id)&&x.add(e.id))}if("instanceDataInput"===e.target.kind){const o=i.vm.custom,r=null==o?void 0:o[e.target.key];if(!r||"object"!=typeof r||!0!==r.dataInput)return void V({bindingId:e.id,code:"unknown-target-data-input",message:o&&e.target.key in o?`target.key "${e.target.key}" on instance "${e.target.instanceId}" is not declared with dataInput:true`:`target.key "${e.target.key}" not declared on instance "${e.target.instanceId}"`},{chainId:t});try{i.setDataInput(e.target.key,a[0])}catch(n){return"stop"===Nn(e.errorPolicy,n,e.id)&&x.add(e.id),void V({bindingId:e.id,code:"invoke-failed",message:n instanceof Error?n.message:String(n),detail:n},{chainId:t})}return void N({bindingId:e.id,source:e.source,target:e.target,payload:n,args:a},t)}c++;try{r=function(e,n,t){switch(n.kind){case"instanceMethod":return e.call(n.method,...t);case"instanceEmit":return void e.emit(n.event,t[0]);default:return}}(i,e.target,a),N({bindingId:e.id,source:e.source,target:e.target,payload:n,args:a},t)}catch(n){return"stop"===Nn(e.errorPolicy,n,e.id)&&x.add(e.id),void V({bindingId:e.id,code:"invoke-failed",message:n instanceof Error?n.message:String(n),detail:n},{chainId:t})}finally{c--}var s;"object"==typeof(s=r)&&null!==s&&"function"==typeof s.then&&Promise.resolve(r).catch(n=>{d||("stop"===Nn(e.errorPolicy,n,e.id)&&x.add(e.id),V({bindingId:e.id,code:"invoke-failed",message:n instanceof Error?n.message:String(n),detail:n},{chainId:t}))})}const H=null==(n=i.onAction)?void 0:n.call(i,e=>{var n,t,o,i;if(d)return;if("off"===s)return;const a=e;if(a&&"object"==typeof a)switch(a.type){case"addBinding":{const e=null==(t=null==(n=a.payload)?void 0:n.binding)?void 0:t.id;if(!e)return;const o=j(e);o&&X(o);break}case"updateBinding":{const e=null==(o=a.payload)?void 0:o.bindingId;if(!e)return;K(e);const n=j(e);n&&X(n);break}case"removeBinding":{const e=null==(i=a.payload)?void 0:i.bindingId;if(!e)return;K(e),x.delete(e);break}case"replaceDocument":_(),x.clear(),b.clear(),Y();break;case"removeInstance":!function(){const e=new Set($().map(e=>e.id));for(const n of[...I.keys()])e.has(n)||(K(n),x.delete(n));for(const e of $())X(e)}()}});H&&T.push(H);const W=null==(t=i.onDocumentChange)?void 0:t.call(i,()=>{if(d)return;if("off"===s)return;const e=$(),n=new Set(e.map(e=>e.id)),t=new Set(I.keys());for(const e of t)n.has(e)||K(e);for(const n of e)I.has(n.id)?E(n,M.get(n.id))&&(K(n.id),X(n)):X(n)});function J(){return new Set(F({canvasId:o}).map(e=>e.instanceId))}W&&T.push(W),z=J();const Q=v(A,()=>{if(d)return;if("off"===s)return;const e=J(),n=Qn(e,z),t=Qn(z,e);z=e;for(const n of[...b]){const t=j(n);t?Z(t,e)&&(b.delete(n),X(t)):b.delete(n)}if(t.size>0)for(const e of[...I.keys()]){const n=j(e);n&&(Ye(n).some(e=>P(e)&&t.has(e.instanceId))&&(K(e),b.add(e),x.delete(e)))}!function(e){if(0!==e.size)for(const n of $())"lifecycle"===n.source.kind&&"mounted"===n.source.hook&&P({canvasId:n.source.canvasId,instanceId:n.source.instanceId})&&e.has(n.source.instanceId)&&G(n,{instanceId:n.source.instanceId,hook:"mounted"})}(n),function(e){if(0!==e.size)for(const n of $())"lifecycle"===n.source.kind&&"unmounted"===n.source.hook&&P({canvasId:n.source.canvasId,instanceId:n.source.instanceId})&&e.has(n.source.instanceId)&&G(n,{instanceId:n.source.instanceId,hook:"unmounted"})}(t)},{flush:"post"});function Z(e,n){for(const t of Ye(e)){if(!P(t))return!1;if(!n.has(t.instanceId))return!1}return!0}return L.push(Q),{setMode:function(e){d||e!==s&&(_(!0),x.clear(),b.clear(),s=e,"off"!==e&&Y(),"runtime"===e&&function(){for(const e of $())"page"===e.source.kind&&"pageInit"===e.source.hook&&G(e,{hook:"pageInit"})}())},getMode:()=>s,testBinding(e,n){const t=[],i=j(e);if(!i)return t.push({bindingId:e,phase:"skipped",details:{reason:"binding-not-found"}}),t;if(i.disabled)return t.push({bindingId:e,phase:"skipped",details:{reason:"disabled"}}),t;if(D(i))return t.push({bindingId:e,phase:"skipped",details:{reason:"unsupported-cross-canvas"}}),t;let a;try{a=Vn(i.mapping,n),t.push({bindingId:e,phase:"mapping",details:{payload:n,args:a}})}catch(n){return t.push({bindingId:e,phase:"error",details:{stage:"mapping",message:n instanceof Error?n.message:String(n)}}),t}const r=O(i.target.instanceId,o);if(!r)return t.push({bindingId:e,phase:"skipped",details:{reason:"target-not-mounted"}}),t;if("instanceDataInput"===i.target.kind){const n=r.vm.custom,o=null==n?void 0:n[i.target.key];if(!o||"object"!=typeof o||!0!==o.dataInput)return t.push({bindingId:e,phase:"skipped",details:{reason:"unknown-target-data-input",key:i.target.key}}),t}return t.push({bindingId:e,phase:"calling-target",details:{target:i.target,dryRun:!0}}),t.push({bindingId:e,phase:"done",details:{args:a}}),t},on:(e,n)=>C.on(e,n),startTracing(e){B.start(e)},stopTracing:()=>B.stop(),getTraceBuffer:()=>B.snapshot(),dispose:function(){if(!d){"runtime"===s&&function(){for(const e of $())"page"===e.source.kind&&"pageBeforeUnmount"===e.source.hook&&G(e,{hook:"pageBeforeUnmount"})}(),d=!0,_();for(const e of T)q(e);for(const e of L)q(e);T.length=0,L.length=0,x.clear(),b.clear(),S.clear(),k.clear(),M.clear(),z.clear(),w.clear(),B.stop(),C.clear(),y(),s="off"}}}}function Qn(e,n){const t=new Set;for(const o of e)n.has(o)||t.add(o);return t}const Zn=["display","gridTemplateColumns","gridTemplateRows","gridAutoFlow","flexDirection","flexWrap","gap","rowGap","columnGap","justifyContent","alignItems","position"];let et=!1;function nt(e,n){const t="string"==typeof(null==e?void 0:e.js)?e.js:"",o="string"==typeof(null==e?void 0:e.html)?e.html:"",i=j(t,o);return!i.ok&&(null==n?void 0:n.fallback)?n.fallback:{propsDecl:i.propsDecl.map(at),emitsDecl:i.emitsDecl.map(st),methodsDecl:i.methodsDecl.map(rt),slotsDecl:i.slotsDecl.map(ct),modelDecl:i.modelDecl.map(dt),dataInputsDecl:i.dataInputsDecl.map(lt),dataOutputsDecl:i.dataOutputsDecl.map(lt)}}function tt(e,n){const t="string"==typeof(null==e?void 0:e.js)?e.js:"",o="string"==typeof(null==e?void 0:e.html)?e.html:"",i=j(t,o);return!i.ok&&(null==n?void 0:n.fallback)?n.fallback:i.kind}function ot(){return{propsDecl:[],emitsDecl:[],methodsDecl:[],slotsDecl:[],modelDecl:[],dataInputsDecl:[],dataOutputsDecl:[]}}function it(e){if("string"===e||"number"===e||"boolean"===e||"object"===e||"array"===e||"any"===e)return e}function at(e){const n=e.key,t="string"==typeof e.name?e.name:void 0;return{key:n,type:it(e.type)??"string",...void 0!==e.value?{value:e.value}:{},...t&&t!==n?{label:t}:{},...e.enum?{enum:e.enum}:{}}}function rt(e){return{key:e.name,...e.params?{params:e.params}:{}}}function st(e){return{event:e.event}}function ct(e){return{name:e.name,...void 0!==e.multiple?{multiple:e.multiple}:{},...void 0!==e.accepts?{accepts:e.accepts}:{},...void 0!==e.maxChildren?{maxChildren:e.maxChildren}:{},...void 0!==e.label?{label:e.label}:{}}}function dt(e){const n=it(e.type);return{key:e.key,...void 0!==e.prop?{prop:e.prop}:{},...void 0!==e.event?{event:e.event}:{},...n?{type:n}:{},...void 0!==e.defaultValue?{defaultValue:e.defaultValue}:{}}}function lt(e){const n=it(e.type);return{key:e.key,...n?{type:n}:{},...void 0!==e.label?{label:e.label}:{}}}const ut=["data-hc-canvas-id"],pt=["data-instance-id","data-hc-hidden"],ft={key:0,class:"hc-page-instance-fallback",style:{width:"100%",height:"100%",border:"2px dashed #f59e0b",background:"#fef3c7",color:"#92400e",padding:"8px",fontSize:"11px",fontFamily:"monospace",overflow:"hidden",borderRadius:"4px",boxSizing:"border-box"}},ht={style:{opacity:"0.8"}},gt={style:{opacity:"0.6","margin-top":"4px","word-break":"break-all"}},vt={key:2,class:"hc-page-instance-skeleton",style:{width:"100%",height:"100%",background:"linear-gradient(90deg, #f1f5f9 0%, #e2e8f0 50%, #f1f5f9 100%)",backgroundSize:"200% 100%",animation:"hc-skeleton-shimmer 1.5s infinite ease-in-out",borderRadius:"4px",boxSizing:"border-box"}},mt=["data-instance-id","data-hc-placement","data-hc-hidden"],yt={key:0,class:"hc-page-instance-fallback",style:{width:"100%",height:"100%",border:"2px dashed #f59e0b",background:"#fef3c7",color:"#92400e",padding:"8px","font-size":"11px","font-family":"monospace",overflow:"hidden","border-radius":"4px","box-sizing":"border-box"}},It={style:{opacity:"0.6"}},wt=["title"],xt={key:1,class:"hc-page-renderer-empty",style:{padding:"24px",color:"#64748b","font-size":"13px"}},bt=s({__name:"HyperCardPageRenderer",props:{payload:{},document:{},componentSourceMap:{},schedulerOptions:{},canvasId:{},adapters:{}},setup(e,{expose:t}){var a,s;const c=e,T=c.canvasId??function(){var e;const n="undefined"!=typeof globalThis&&"crypto"in globalThis?globalThis.crypto:void 0;return`auto-${(null==(e=null==n?void 0:n.randomUUID)?void 0:e.call(n).replace(/-/g,"").slice(0,8))??Math.random().toString(36).slice(2,10)}`}();r(q,T);const L=Xe(c.schedulerOptions),C=i(null);let B=!1;m(()=>{Ie||y(()=>{var e;if(B)return;if(!C.value)return;if("fill"!==(null==(e=me.value)?void 0:e.canvas.height.mode))return;const n=C.value.parentElement;n&&(n.getBoundingClientRect().height>0||(B=!0,console.warn("[hypercard] HyperCardPageRenderer 父容器高度为 0,fill 模式画布不可见。请给父容器设置明确 height 或改用 px 模式。")))})}),I(()=>{H(T),xe.value&&(xe.value.dispose(),xe.value=null),L.dispose(),be&&be.disposeAll(),T!==$&&N(T)});const P=i(new Map),D=i(new Map),R=new Map,E=i(!1);let A=null;function O(){E.value=!1,A&&clearTimeout(A),A=setTimeout(()=>{E.value=!0},300)}function F(e,n){const t=new Map;if(n.querySelectorAll("[data-hc-slot]").forEach(e=>{if(e.closest("[data-instance-id]")!==n)return;const o=e.getAttribute("data-hc-slot")||Ln;t.has(o)||t.set(o,e)}),function(e,n){if(!e||e.size!==n.size)return!1;for(const[t,o]of n)if(e.get(t)!==o)return!1;return!0}(D.value.get(e),t))return;const o=new Map(D.value);o.set(e,t),D.value=o,j(e,t)}function j(e,n){var t;const o=n.get(Ln);if(!o)return;const i=Y.value.get(e),a="active"===(null==(t=re.value.containers.get(e))?void 0:t.status);!function(e,n,t=!1){!function(e){const n=e.style;for(const e of Zn)n[e]=""}(e);const o=null==n?void 0:n.mode;if(!n||"none"===o||void 0===o)return;if("free"===o)return void(e.style.position="relative");if("free-split"===o)return void(t||et||(et=!0,console.warn("[hypercard] free-split 容器降级平铺(分割树非法 / plan fallback),子实例已平铺显示。")));const i=Ce(n);i&&Object.assign(e.style,i)}(o,null==i?void 0:i.containerLayout,a)}function _(e,n){const t=P.value.get(e);n&&n!==t?(P.value.set(e,n),L.register(e,n),function(e,n){const t=R.get(e);t&&t.disconnect(),F(e,n);const o=new MutationObserver(()=>F(e,n));o.observe(n,{childList:!0,subtree:!0}),R.set(e,o)}(e,n)):!n&&t&&(L.unregister(e),P.value.delete(e),function(e){const n=R.get(e);if(n&&(n.disconnect(),R.delete(e)),D.value.has(e)){const n=new Map(D.value);n.delete(e),D.value=n}}(e))}m(O),v(D,O),I(()=>{for(const e of R.values())e.disconnect();R.clear(),D.value=new Map,ae.clearAll(),A&&clearTimeout(A)});const X=n(()=>{var e;const n=(null==(e=c.payload)?void 0:e.document)??c.document??null;return n?fe(pe(ue(n))):null}),Y=n(()=>{const e=new Map,n=X.value;if(!n)return e;for(const t of n.instances)e.has(t.instanceId)||e.set(t.instanceId,t);return e});v(X,()=>{y(()=>function(){for(const[e,n]of D.value)j(e,n)}())},{flush:"post"});const G=n(()=>function(e){const n={};for(const t of Object.keys(e)){const o=e[t],i=o.source;o&&"ok"===o.status&&i&&("string"==typeof i.html||"string"==typeof i.js)?n[t]={...o,contract:nt({html:i.html??"",js:i.js??"",css:i.css??""},{fallback:o.contract})}:n[t]=o}return n}(c.payload?c.payload.componentVersions:c.componentSourceMap??{})),W=n(()=>{var e;const n=X.value,t=G.value;if(!n)return[];const o=Y.value,i=null==(e=me.value)?void 0:e.rootLayout;return n.instances.map(e=>{var a;const r=t[e.componentVersionKey]??null,s=(null==(a=n.componentOverrides)?void 0:a[e.instanceId])??null,c=s&&s.baseVersionKey===e.componentVersionKey?s:null,d=c?`${c.baseVersionKey}#override:${e.instanceId}`:e.componentVersionKey,l=function(e){var n,t;return void 0===e.parentId?(null==i?void 0:i.mode)??"free":(null==(t=null==(n=o.get(e.parentId))?void 0:n.containerLayout)?void 0:t.mode)??"none"}(e),u=function(e){var n;if(void 0===e.parentId)return"split"===(null==i?void 0:i.mode)?i.direction:void 0;const t=null==(n=o.get(e.parentId))?void 0:n.containerLayout;return"split"===(null==t?void 0:t.mode)?t.direction:void 0}(e);if(c)return{instance:e,asset:r,override:c,renderSource:c.source,scopeId:d,status:"ok",parentMode:l,parentSplitDirection:u};if(!r)return{instance:e,asset:null,override:null,renderSource:null,scopeId:d,status:"missing-source",invalidReason:`componentVersionKey "${e.componentVersionKey}" not in sourceMap`,parentMode:l,parentSplitDirection:u};if("ok"!==r.status)return{instance:e,asset:r,override:null,renderSource:null,scopeId:d,status:"unavailable",invalidReason:r.invalidReason??`component version unavailable (${r.status})`,parentMode:l,parentSplitDirection:u};let p=null;return p=function(e){return!!e&&!0===e.isDraft}(r)?r.lastGoodSource:r.source??null,p?{instance:e,asset:r,override:null,renderSource:p,scopeId:d,status:"ok",parentMode:l,parentSplitDirection:u}:{instance:e,asset:r,override:null,renderSource:null,scopeId:d,status:"missing-source",invalidReason:"asset.status=ok but source missing",parentMode:l,parentSplitDirection:u}})});function J(e){const n=G.value[e];return null==n?void 0:n.contract}const Q=n(()=>{const e=X.value;return e?Dn(e,{resolveContract:J}):[]}),Z=o(kn,null);v(Q,e=>{Z&&"function"==typeof Z.setLayoutIssues&&Z.setLayoutIssues(e)},{immediate:!0});const ee=n(()=>{const e=new Set;for(const n of Q.value)"missing-parent"!==n.kind&&"invalid-slot"!==n.kind&&"parent-not-layout"!==n.kind&&"orphan-slot"!==n.kind&&"cycle"!==n.kind&&"absolute-child-rejected"!==n.kind||e.add(n.instanceId);return e}),ne=n(()=>W.value.filter(e=>void 0===e.instance.parentId)),te=n(()=>W.value.filter(e=>void 0!==e.instance.parentId&&Ne(e.instance.placement)));function oe(e){const n=e.instance,t=n.layoutBox??{x:n.rect.x,y:n.rect.y,width:n.rect.w,height:n.rect.h,widthMode:"px",heightMode:"px",overflow:"hidden"},o=e.parentMode,i=Te(t,n.zIndex,n.rotation,o,e.parentSplitDirection),a=Be(n.layoutItem,o);return a&&Object.assign(i,a),he(n)&&function(e){e.width="100%",e.height="100%",e.position="relative",delete e.left,delete e.top}(i),i}const ie=n(()=>{var e;return Ce(null==(e=me.value)?void 0:e.rootLayout)}),ae=function(){const e=i(new Map);return{map:e,register:function(n,t,o){const i=e.value.get(n);if(i&&i.get(t)===o)return;const a=new Map(e.value),r=new Map(i??[]);r.set(t,o),a.set(n,r),e.value=a},unregister:function(n,t){const o=e.value.get(n);if(!o||!o.has(t))return;const i=new Map(e.value),a=new Map(o);a.delete(t),0===a.size?i.delete(n):i.set(n,a),e.value=i},get:function(n,t){var o;return null==(o=e.value.get(n))?void 0:o.get(t)},clearContainer:function(n){if(!e.value.has(n))return;const t=new Map(e.value);t.delete(n),e.value=t},clearAll:function(){0!==e.value.size&&(e.value=new Map)}}}(),re=n(()=>function(e){if(!e)return Fn;const n=new Map;for(const t of e.instances){const e=t.containerLayout;if(!e||"free-split"!==e.mode)continue;const o=t.instanceId,i=e,a=qn(i.root);a.ok?n.set(o,{status:"active",containerId:o,root:i.root,instanceToLeaf:a.instanceToLeaf}):n.set(o,{status:"fallback",containerId:o,reason:a.reason})}return{containers:n}}(X.value)),se=n(()=>{const e=[];for(const n of re.value.containers.values())"active"===n.status&&e.push(n);return e});function ce(e){var n;return(null==(n=D.value.get(e))?void 0:n.get(Ln))??null}function de(e){const n=e.root;return e.containerId+":"+("leaf"===n.type?n.leafId:n.nodeId)}function le(e){var n;const t=null==(n=Y.value.get(e))?void 0:n.containerLayout;return"free-split"===(null==t?void 0:t.mode)?t.gap??0:0}function he(e){return function(e){const{parentId:n,instanceId:t,effectiveSlot:o,plan:i}=e;if(!n)return null;if(o!==Ln)return null;const a=i.containers.get(n);if(!a||"active"!==a.status)return null;const r=a.instanceToLeaf.get(t);return r?{containerId:n,leafId:r}:null}({parentId:e.parentId,instanceId:e.instanceId,effectiveSlot:Pn(e),plan:re.value})}function ge(e){if(!e.parentId)return null;const n=he(e);if(n)return ae.get(n.containerId,n.leafId)??null;const t=D.value.get(e.parentId);return t?t.get(Pn(e))??null:null}function ve(e){return"实例 "+e.instance.instanceId+':slot "'+Pn(e.instance)+'" 不可用'}const me=n(()=>{var e;return(null==(e=X.value)?void 0:e.layout)??null}),ye=n(()=>{if(!me.value)return null;if(Ie){const e=Ie.measuredCanvasSize.value;return{width:`${e.w}px`,height:`${e.h}px`,overflow:me.value.canvas.overflow??"hidden"}}return{width:Pe(me.value.canvas.width),height:Pe(me.value.canvas.height),overflow:me.value.canvas.overflow??"hidden"}}),Ie=o(kn,void 0),we=Ie?null:wn(null==(a=c.adapters)?void 0:a.assets),xe=w(null),be=Ie||!(null==(s=c.adapters)?void 0:s.data)?null:Sn(c.adapters.data);if(!Ie){const e=Jn({canvasId:T,source:{getDocument:()=>X.value,onDocumentChange:e=>v(X,e,{flush:"post"})},dataStore:be??void 0});xe.value=e,y(()=>{e.setMode("runtime")})}const Se=Ie?{invalidateDataSource(e){Ie.dataStore.invalidate(e)},getDataSourceSnapshot:()=>Ie.dataStore.getSnapshot(),getCachedBySourceId:(e,n)=>Ie.dataStore.getCachedBySourceId(e,n)}:be?{invalidateDataSource(e){be.invalidate(e)},getDataSourceSnapshot:()=>be.getSnapshot(),getCachedBySourceId:(e,n)=>be.getCachedBySourceId(e,n)}:null,ke={canvasId:T,getSchedulerStats:()=>L.getStats(),listRuntimeInstances:()=>function(){const e=X.value;if(!e)return[];const n=new Map;for(const e of Q.value)n.set(e.instanceId,!0);const t=L.state;return e.instances.map(e=>{const o=t[e.instanceId];let i,a;switch(o){case"mounting":case"mounted":case"disposing":i=o;break;default:i="pending"}if(n.has(e.instanceId))a="layout-error";else if(e.componentId){const n=e.source;a=!n||n.template||n.script||n.style?"ok":"missing-source"}else a="missing-componentId";return{instanceId:e.instanceId,componentId:e.componentId,mountState:i,timings:K(T,e.instanceId),protocolStatus:a}})}(),getInstanceTimings:e=>K(T,e),getLayoutIssues:()=>Q.value,getPageDocument:()=>X.value};m(()=>{U(T,ke)}),t({binding:xe,data:Se});const Me=i(null);let ze=0;v(()=>{var e,n;return null==(n=null==(e=me.value)?void 0:e.background)?void 0:n.image},e=>{ze++;const n=ze;if(!e)return void(Me.value=null);const t=(o=e,Ie?Ie.resolveAsset(o):we.resolve(o));var o;"string"!=typeof t?(Me.value=null,t.then(t=>{var o,i;n===ze&&(null==(i=null==(o=me.value)?void 0:o.background)?void 0:i.image)===e&&(Me.value=t||null)},()=>{n===ze&&(Me.value=null)})):Me.value=t||null},{immediate:!0,deep:!0});const Le=n(()=>{var e;const n=null==(e=me.value)?void 0:e.background;if(!n)return null;const t={position:"absolute",inset:"0",pointerEvents:"none",zIndex:-1};return n.color&&(t.background=n.color),n.image&&Me.value&&(t.backgroundImage=`url("${Me.value}")`,t.backgroundRepeat="repeat"===n.imageFit?"repeat":"no-repeat",t.backgroundPosition=n.imagePosition??"center","stretch"===n.imageFit?t.backgroundSize="100% 100%":n.imageFit&&"repeat"!==n.imageFit&&"center"!==n.imageFit&&(t.backgroundSize=n.imageFit)),void 0!==n.opacity&&(t.opacity=n.opacity),t});return(e,n)=>me.value&&ye.value?(d(),l("div",{key:0,ref_key:"rootEl",ref:C,class:"hc-page-renderer","data-hc-canvas-id":x(T),style:u({position:"relative",...ye.value,...ie.value??{}})},[Le.value?(d(),l("div",{key:0,class:"hc-canvas-bg","data-hc-canvas-bg":"",style:u(Le.value)},null,4)):g("",!0),(d(!0),l(p,null,f(ne.value,e=>b((d(),l("div",{key:e.instance.instanceId,ref_for:!0,ref:n=>_(e.instance.instanceId,n),"data-instance-id":e.instance.instanceId,"data-hc-hidden":e.instance.hidden?"true":void 0,style:u(oe(e))},["ok"===e.status&&e.renderSource?x(L).isMounted(e.instance.instanceId)?(d(),h(x(V),{key:1,"canvas-id":x(T),"instance-id":e.instance.instanceId,"component-id":e.instance.componentId,"scope-id":e.scopeId,"html-source":e.renderSource.html,"js-source":e.renderSource.js,"css-source":e.renderSource.css,"custom-values":{...e.instance.props,__containerLayout:e.instance.containerLayout}},null,8,["canvas-id","instance-id","component-id","scope-id","html-source","js-source","css-source","custom-values"])):(d(),l("div",vt)):(d(),l("div",ft,[n[0]||(n[0]=S("div",{style:{"font-weight":"600","margin-bottom":"4px"}}," ⚠️ 组件不可渲染 ",-1)),S("div",ht,k(e.instance.alias??e.instance.instanceId),1),S("div",gt,k(e.invalidReason),1)]))],12,pt)),[[M,!e.instance.hidden]])),128)),(d(!0),l(p,null,f(te.value,(e,t)=>{return d(),l(p,{key:`child-${e.instance.instanceId}`},[ge(e.instance)&&!ee.value.has(e.instance.instanceId)?(d(),h(z,{key:0,to:ge(e.instance)},[b(S("div",{ref_for:!0,ref:n=>_(e.instance.instanceId,n),"data-instance-id":e.instance.instanceId,"data-hc-placement":e.instance.placement,"data-hc-hidden":e.instance.hidden?"true":void 0,style:u(oe(e))},["ok"===e.status&&e.renderSource?(d(),h(x(V),{key:1,"canvas-id":x(T),"instance-id":e.instance.instanceId,"component-id":e.instance.componentId,"scope-id":e.scopeId,"html-source":e.renderSource.html,"js-source":e.renderSource.js,"css-source":e.renderSource.css,"custom-values":{...e.instance.props,__containerLayout:e.instance.containerLayout}},null,8,["canvas-id","instance-id","component-id","scope-id","html-source","js-source","css-source","custom-values"])):(d(),l("div",yt,[n[1]||(n[1]=S("div",{style:{"font-weight":"600"}},"⚠️ 组件不可渲染",-1)),S("div",It,k(e.invalidReason),1)]))],12,mt),[[M,!e.instance.hidden]])],8,["to"])):ee.value.has(e.instance.instanceId)||E.value?(d(),l("div",{key:1,class:"hc-layout-issue-warning",title:ve(e),style:u((o=t,{position:"absolute",left:"8px",top:8+28*o+"px",padding:"4px 8px",background:"hsla(40, 90%, 50%, 0.95)",color:"#5b3a00",fontSize:"11px",fontFamily:"ui-monospace, monospace",borderRadius:"4px",zIndex:9999,maxWidth:"60%",textOverflow:"ellipsis",overflow:"hidden",whiteSpace:"nowrap"}))}," ⚠ 布局问题:"+k(e.instance.instanceId)+'(slot "'+k(x(Pn)(e.instance))+'") ',13,wt)):g("",!0)],64);var o}),128)),(d(!0),l(p,null,f(se.value,e=>(d(),l(p,{key:`fs-${e.containerId}`},[ce(e.containerId)?(d(),h(z,{key:0,to:ce(e.containerId)},[(d(),h(On,{key:de(e),"container-id":e.containerId,node:e.root,register:x(ae).register,unregister:x(ae).unregister,gap:le(e.containerId)},null,8,["container-id","node","register","unregister","gap"]))],8,["to"])):g("",!0)],64))),128))],12,ut)):(d(),l("div",xt," No page to render(payload / document 都未提供) "))}}),St=new Map,kt=new Set;function Mt(){const e=Object.freeze(Array.from(St.keys()));for(const n of kt)try{n(e)}catch{}}function zt(e,n){St.set(e,n),Mt()}function Tt(e){St.delete(e)&&Mt()}function Lt(e){return St.get(e)??null}function Ct(){return Object.freeze(Array.from(St.keys()))}function Bt(e){return kt.add(e),()=>{kt.delete(e)}}function Pt(e,n){var t;const o=n.document;switch(e.type){case"addInstance":{const{instance:n}=e.payload;return o.getInstance(n.instanceId)?null:[{type:"removeInstance",payload:{instanceId:n.instanceId}}]}case"removeInstance":{const{instanceId:t}=e.payload;if(!o.getInstance(t))return null;const i=n.cascadeRemove?nn(o.document.instances,t).instanceIds:[t],a=o.document.bindings.filter(e=>i.some(n=>Ge(e,n))),r=[];for(const e of i){const n=o.getInstance(e);n&&r.push({type:"addInstance",payload:{instance:Rt(n)}})}for(const e of a)r.push({type:"addBinding",payload:{binding:Z(e)}});return r}case"updateInstance":{const{instanceId:n,patch:t}=e.payload,i=o.getInstance(n);if(!i)return null;const a={},r=i,s=a;for(const e of Object.keys(t)){const n=r[e];s[e]=Dt(n)?Z(n):n}return[{type:"updateInstance",payload:{instanceId:n,patch:a}}]}case"moveInstance":{const{instanceId:n,x:t,y:i}=e.payload,a=o.getInstance(n);return a?a.rect.x===t&&a.rect.y===i?null:a.layoutBox?[{type:"updateLayoutBox",payload:{instanceId:n,patch:{...a.layoutBox}}}]:[{type:"moveInstance",payload:{instanceId:n,x:a.rect.x,y:a.rect.y}}]:null}case"resizeInstance":{const{instanceId:n,w:t,h:i}=e.payload,a=o.getInstance(n);return a?a.rect.w===t&&a.rect.h===i?null:a.layoutBox?[{type:"updateLayoutBox",payload:{instanceId:n,patch:{...a.layoutBox}}}]:[{type:"resizeInstance",payload:{instanceId:n,w:a.rect.w,h:a.rect.h}}]:null}case"setInstanceProp":{const{instanceId:n,key:t,value:i}=e.payload,a=o.getInstance(n);return a?a.props[t]===i?null:[{type:"updateInstance",payload:{instanceId:n,patch:{props:{...a.props}}}}]:null}case"addBinding":{const{binding:n}=e.payload;return o.document.bindings.some(e=>e.id===n.id)?null:[{type:"removeBinding",payload:{bindingId:n.id}}]}case"removeBinding":{const{bindingId:n}=e.payload,t=o.document.bindings.find(e=>e.id===n);return t?[{type:"addBinding",payload:{binding:Z(t)}}]:null}case"updateBinding":{const{bindingId:n,patch:t}=e.payload,i=o.document.bindings.find(e=>e.id===n);if(!i)return null;const a={},r=i,s=a;for(const e of Object.keys(t)){const n=r[e];s[e]=Dt(n)?Z(n):n}return[{type:"updateBinding",payload:{bindingId:n,patch:a}}]}case"updateLayout":{const{patch:n}=e.payload,t=o.document.layout,i={},a=i;let r=!1;for(const e of Object.keys(n)){const o=t[e];a[e]=Dt(o)?Z(o):o,Object.is(n[e],o)||(r=!0)}return r?[{type:"updateLayout",payload:{patch:i}}]:null}case"setRootLayout":{const{rootLayout:n}=e.payload,t=o.document.layout.rootLayout;return void 0===t&&null===n?null:[{type:"setRootLayout",payload:{rootLayout:void 0!==t?Z(t):null}}]}case"setComponentOverride":{const{instanceId:n,override:i}=e.payload;if(void 0===o.getInstance(n))return null;const a=null==(t=o.document.componentOverrides)?void 0:t[n],r=void 0!==a;return r||null!==i?[{type:"setComponentOverride",payload:{instanceId:n,override:r?Z(a):null}}]:null}case"replaceDocument":return[{type:"replaceDocument",payload:{document:Z(o.document)}}];case"setInstanceLocked":{const{instanceId:n,locked:t}=e.payload,i=o.getInstance(n);if(!i)return null;const a=i.locked??!1,r=i.lockPosition,s=i.lockSize;return a===t&&r===(!!t||void 0)&&s===(!!t||void 0)?null:[{type:"updateInstance",payload:{instanceId:n,patch:{locked:a,lockPosition:r,lockSize:s}}}]}case"duplicateInstance":{const{instanceId:n,newInstanceId:t}=e.payload;return o.getInstance(n)?o.getInstance(t)?null:[{type:"removeInstance",payload:{instanceId:t}}]:null}case"setInstanceSize":{const{instanceId:n,size:t}=e.payload,i=o.getInstance(n);if(!i)return null;const a=i.size,r="size"in i&&void 0!==a;return r||null!==t?[{type:"setInstanceSize",payload:{instanceId:n,size:(r?Z(a):null)??null}}]:null}case"setContainerLayout":{const{instanceId:n,containerLayout:t}=e.payload,i=o.getInstance(n);if(!i)return null;const a=i.containerLayout,r="containerLayout"in i&&void 0!==a;return r||null!==t?[{type:"setContainerLayout",payload:{instanceId:n,containerLayout:(r?Z(a):null)??null}}]:null}case"updateLayoutBox":{const{instanceId:n,patch:t}=e.payload,i=o.getInstance(n);if(!i)return null;const a=i.layoutBox??{x:i.rect.x,y:i.rect.y,width:i.rect.w,height:i.rect.h,widthMode:"px",heightMode:"px",overflow:"hidden"},r={};let s=!1;const c=["x","y","width","height"];for(const e of c){const n=t[e];"number"==typeof n&&Number.isFinite(n)&&(r[e]=a[e],s=!0)}return"px"!==t.widthMode&&"percent"!==t.widthMode&&"fill"!==t.widthMode&&"auto"!==t.widthMode||(r.widthMode=a.widthMode,s=!0),"px"!==t.heightMode&&"percent"!==t.heightMode&&"fill"!==t.heightMode&&"auto"!==t.heightMode||(r.heightMode=a.heightMode,s=!0),"hidden"!==t.overflow&&"visible"!==t.overflow&&"auto"!==t.overflow||(r.overflow=a.overflow,s=!0),s?[{type:"updateLayoutBox",payload:{instanceId:n,patch:r}}]:null}case"updateLayoutItem":{const{instanceId:n,patch:t}=e.payload,i=o.getInstance(n);if(!i)return null;const a=i.layoutItem,r="layoutItem"in i&&void 0!==a,s=null===t;if(!r&&s)return null;if(!s){const e=["order","grow","shrink","row","column","rowSpan","columnSpan","ratio"];let n=!1;for(const o of e){const e=t[o];if("number"==typeof e&&Number.isFinite(e)){n=!0;break}}if(!n)return null}return[{type:"updateLayoutItem",payload:{instanceId:n,patch:(r?Z(a):null)??null}}]}case"updateRotation":{const{instanceId:n,value:t}=e.payload,i=o.getInstance(n);if(!i)return null;if(!Number.isFinite(t))return null;const a=i.rotation,r="number"==typeof a&&Number.isFinite(a)?a:0;return r===t?null:[{type:"updateRotation",payload:{instanceId:n,value:r}}]}case"select":case"toggleSelect":case"addToSelection":case"removeFromSelection":case"clearSelection":case"selectAll":case"freeSplitFill":case"freeSplitClear":case"freeSplitSwap":case"freeSplitResize":case"freeSplitSplit":case"freeSplitMerge":return null;default:{const n=e;return console.warn("[hc-canvas/computeInverse] unknown action",n),null}}}function Dt(e){return null!==e&&"object"==typeof e&&!Array.isArray(e)}function Rt(e){return Z(e)}function Et(e,t={}){const o=t.maxSize??100,a=i([]),r=i([]),s=function(e){return In.get(e)}(e);let c={redo:[],undo:[]},d=null;function l(e){var n;0===c.redo.length&&0===c.undo.length||(n={type:e,redo:c.redo,undo:c.undo,timestamp:Date.now()},a.value.push(n),a.value.length>o&&a.value.shift(),r.value.length>0&&(r.value=[]),c={redo:[],undo:[]},d=null)}const u={onBeforeAction(n){if(e.isRecordingSuppressed.value)return;if(gn(n)){const e=(null==s?void 0:s.computeInverse(n))??null;if(!e)return;return c.redo.push(n),c.undo.unshift(e),void(d=n.type)}const t=Pt(n,e);if(null!==t){c.redo.push(n);for(let e=t.length-1;e>=0;e--)c.undo.unshift(t[e]);d=n.type}},onAfterAction(n){e.isRecordingSuppressed.value||e.isBatching.value||l(d??"action")},onAfterBatch(n){e.isRecordingSuppressed.value||l(n??"batch")}},p=e.registerHooks(u);function f(){a.value=[],r.value=[],c={redo:[],undo:[]},d=null}return{undo:function(){if(0===a.value.length)return;const n=a.value.pop();e.suppressRecording(()=>{e.beginBatch();for(const t of n.undo)e.dispatch(t);e.endBatch("undo")}),r.value.push(n)},redo:function(){if(0===r.value.length)return;const n=r.value.pop();e.suppressRecording(()=>{e.beginBatch();for(const t of n.redo)e.dispatch(t);e.endBatch("redo")}),a.value.push(n)},clear:f,canUndo:n(()=>a.value.length>0),canRedo:n(()=>r.value.length>0),undoStackSize:n(()=>a.value.length),redoStackSize:n(()=>r.value.length),dispose:function(){p(),f()}}}class $t extends Error{constructor(e="CanvasHandle has been disposed"){super(e),this.name="HandleDisposedError"}}function At(e,n,t){let o=null;for(const i of e)for(const e of n){const n=e.pos-i,a=Math.abs(n);a<=t&&(!o||a<Math.abs(o.delta))&&(o={delta:n,candidate:e,targetPos:i})}return o}function Ot(e){var n,t,o,i;const a=e.threshold??5,r=function(e){if(0===e.length)return null;let n=1/0,t=-1/0,o=1/0,i=-1/0;for(const a of e)a.x<n&&(n=a.x),a.x+a.w>t&&(t=a.x+a.w),a.y<o&&(o=a.y),a.y+a.h>i&&(i=a.y+a.h);return{left:n,right:t,top:o,bottom:i,centerX:(n+t)/2,centerY:(o+i)/2,width:t-n,height:i-o}}(e.draggedRects);if(!r)return{dx:0,dy:0,lines:[]};const s=function(e,n,t){const o=[];for(const n of e)o.push({pos:n.x,kind:"edge-left",source:n}),o.push({pos:n.x+n.w,kind:"edge-right",source:n}),o.push({pos:n.x+n.w/2,kind:"center-x",source:n});if(o.push({pos:0,kind:"canvas-edge"}),o.push({pos:n.w,kind:"canvas-edge"}),o.push({pos:n.w/2,kind:"canvas-edge"}),t)for(const e of t)o.push({pos:e,kind:"guide"});return o}(e.otherRects,e.canvasSize,null==(n=e.manualGuides)?void 0:n.x),c=function(e,n,t){const o=[];for(const n of e)o.push({pos:n.y,kind:"edge-top",source:n}),o.push({pos:n.y+n.h,kind:"edge-bottom",source:n}),o.push({pos:n.y+n.h/2,kind:"center-y",source:n});if(o.push({pos:0,kind:"canvas-edge"}),o.push({pos:n.h,kind:"canvas-edge"}),o.push({pos:n.h/2,kind:"canvas-edge"}),t)for(const e of t)o.push({pos:e,kind:"guide"});return o}(e.otherRects,e.canvasSize,null==(t=e.manualGuides)?void 0:t.y),d=[r.left,r.right,r.centerX],l=[r.top,r.bottom,r.centerY],u=At(d,s,a),p=At(l,c,a),f=(null==u?void 0:u.delta)??0,h=(null==p?void 0:p.delta)??0,g=[];if(u){const n=(null==(o=u.candidate.source)?void 0:o.y)??0,t=u.candidate.source?u.candidate.source.y+u.candidate.source.h:e.canvasSize.h,i=Math.min(r.top+h,n),a=Math.max(r.bottom+h,t);g.push({axis:"x",pos:u.candidate.pos,from:i,to:a,kind:u.candidate.kind})}if(p){const n=(null==(i=p.candidate.source)?void 0:i.x)??0,t=p.candidate.source?p.candidate.source.x+p.candidate.source.w:e.canvasSize.w,o=Math.min(r.left+f,n),a=Math.max(r.right+f,t);g.push({axis:"y",pos:p.candidate.pos,from:o,to:a,kind:p.candidate.kind})}return{dx:f,dy:h,lines:g}}const Ft=8;function jt(e,n,t){const o=new Map,i=new Map;for(let e=0;e<n.length;e++)o.has(n[e].instanceId)||o.set(n[e].instanceId,n[e]),i.set(n[e].instanceId,e);const a=new Map;function r(e){const n=a.get(e);if(n)return n;const t=[];let i=e;const r=new Set;for(;i&&!r.has(i);){r.add(i),t.push(i);const e=o.get(i);if(!(null==e?void 0:e.parentId))break;i=e.parentId}const s=t.reverse();return a.set(e,s),s}function s(e,n){const t=r(e),a=r(n);let s=0;for(;s<t.length&&s<a.length&&t[s]===a[s];)s++;if(s===t.length&&s===a.length)return 0;if(s===t.length)return-1;if(s===a.length)return 1;const c=t[s],d=a[s],l=o.get(c),u=o.get(d),p=(null==l?void 0:l.zIndex)??0,f=(null==u?void 0:u.zIndex)??0;return p!==f?p-f:(i.get(c)??-1)-(i.get(d)??-1)}let c=null,d=-1;for(let o=0;o<n.length;o++){const i=n[o];if(i.hidden)continue;const a=(null==t?void 0:t(i.instanceId))??i.rect;if(!(e.x>=a.x&&e.x<=a.x+a.w&&e.y>=a.y&&e.y<=a.y+a.h))continue;if(null===c){c=i.instanceId,d=o;continue}const r=s(i.instanceId,c);let l;l=r>0||!(r<0)&&o>d,l&&(c=i.instanceId,d=o)}return c}function qt(e,n){return{x:Math.min(e.x,n.x),y:Math.min(e.y,n.y),w:Math.abs(e.x-n.x),h:Math.abs(e.y-n.y)}}function Nt(e,n,t){const o=[];for(const i of n){if(i.hidden)continue;const n=(null==t?void 0:t(i.instanceId))??i.rect;n.x>=e.x&&n.y>=e.y&&n.x+n.w<=e.x+e.w&&n.y+n.h<=e.y+e.h&&o.push(i.instanceId)}return o}function Vt(e,n){if(!e||"function"!=typeof e.querySelector)return null;const t=e.querySelector(n);if(t)return t;if(e instanceof Element&&"function"==typeof e.closest){const t=e.closest("[data-hc-canvas-designer]");if(t&&t!==e){const e=t.querySelector(n);if(e)return e}}return null}function Kt(e,n,t){var o;const i=t??("undefined"!=typeof document&&"function"==typeof document.querySelector?document:null);if(!i)return null;const a=n??"default",r=""===a?"default":a,s="undefined"!=typeof globalThis&&(null==(o=globalThis.CSS)?void 0:o.escape)?globalThis.CSS.escape:e=>e.replace(/["\\]/g,e=>`\\${e}`),c=Vt(i,`[data-instance-id="${s(e)}"] [data-hc-slot="${s(r)}"]`);return c&&c instanceof HTMLElement?c.getBoundingClientRect():null}function _t(e,n){var t;const o=n??("undefined"!=typeof document&&"function"==typeof document.querySelector?document:null);if(!o)return null;const i="undefined"!=typeof globalThis&&(null==(t=globalThis.CSS)?void 0:t.escape)?globalThis.CSS.escape:e=>e.replace(/["\\]/g,e=>`\\${e}`),a=o.querySelector(`[data-instance-id="${i(e)}"][data-hc-placement="slot"]`);return a&&a instanceof HTMLElement?a.getBoundingClientRect():null}function Xt(e,n,t){var o;const i=n??("undefined"!=typeof document&&"function"==typeof document.querySelector?document:null);if(!i)return null;if("function"!=typeof i.querySelector)return null;const a=`[data-instance-id="${("undefined"!=typeof globalThis&&(null==(o=globalThis.CSS)?void 0:o.escape)?globalThis.CSS.escape:e=>e.replace(/["\\]/g,e=>`\\${e}`))(e)}"]`,r=t?Vt(i,a):i.querySelector(a);return r&&r instanceof HTMLElement?r.getBoundingClientRect():null}function Yt(e,n){return Ve(e.document.document.layout,e.document.document.instances,n)}function Gt(e){return"free"===e||"none"===e||void 0===e}const Ut=new Set(["e","w","ne","nw","se","sw"]),Ht=new Set(["n","s","ne","nw","se","sw"]);function Wt(e,n,t,o){if(Gt(e))return!0;const i=Ut.has(n),a=Ht.has(n);return!(i&&"fill"===t||a&&"fill"===o)}function Jt(e,n,t){if(!n)return null;const o=Xt(e,n,!0);if(!o)return null;const i=n.getBoundingClientRect(),a=t.toCanvasPoint({x:o.left-i.left,y:o.top-i.top}),r=t.toCanvasPoint({x:o.right-i.left,y:o.bottom-i.top});return{x:a.x,y:a.y,w:Math.max(0,r.x-a.x),h:Math.max(0,r.y-a.y)}}function Qt(e,n,t){const o=Math.max(8,n);if(!e)return{mode:"px",value:o};switch(e.mode){case"px":return{...e,mode:"px",value:o};case"percent":{if(!t||t<=0)return{...e,mode:"px",value:o};const n=o/t*100,i=Math.max(0,Math.min(1e3,n));return{...e,mode:"percent",value:i}}case"fill":case"hug":case"auto":return{mode:"px",value:o,min:e.min,max:e.max}}}function Zt(e,n,t){const o=Math.max(8,n);switch(e){case"px":case"fill":case"auto":default:return{mode:"px",value:o};case"percent":{if(!t||t<=0)return{mode:"px",value:o};const e=o/t*100;return{mode:"percent",value:Math.max(0,Math.min(1e3,e))}}}}function eo(e,n){return e===n||!(!e||!n)&&e.mode===n.mode&&e.value===n.value&&e.min===n.min&&e.max===n.max}const no=3;function to(e){return e.shift||e.ctrl||e.meta}function oo(e,n,t){const o=n.getBoundingClientRect(),i={x:e.x-o.left,y:e.y-o.top};return t.toCanvasPoint(i)}const io=["e","s","se"];function ao(e,n){const t=new Set(n.map(e=>e.instanceId));return e.filter(e=>t.has(e))}function ro(t,o={}){const a=e({active:!1,start:null,end:null,additive:!1,priorSelection:[]}),r=e({status:"idle",startPt:null,startRects:new Map,deferredClickSelect:null}),s=e({status:"idle",handle:null,startPt:null,startRect:null,instanceId:null,placement:null,parentLayoutMode:void 0,startSize:null,startLayoutBox:null,startOutletCanvasSize:null}),c=i([]),d=i(null);let l=0;const u=i(null);let p=0;const f=n(()=>a.active&&a.start&&a.end?qt(a.start,a.end):null),h=n(()=>"active"===r.status),g=n(()=>"active"===s.status);function v(){a.active=!1,a.start=null,a.end=null,a.additive=!1,a.priorSelection=[]}function m(){r.status="idle",r.startPt=null,r.startRects=new Map,r.deferredClickSelect=null,c.value=[]}function y(){s.status="idle",s.handle=null,s.startPt=null,s.startRect=null,s.instanceId=null,s.placement=null,s.startSize=null,s.startOutletCanvasSize=null,s.parentLayoutMode=void 0,s.startLayoutBox=null}return{marquee:a,marqueeRect:f,drag:r,isDragging:h,resize:s,isResizing:g,snapLines:c,cannotDragSlotChildEvent:d,cannotDragLayoutManagedChildEvent:u,handlePointerDown(e,n){var i;const s=t.effectiveBehavior.value;if(!s.selectable)return{startTracking:!1};const c=t.toolMode.value;if("hand"===c)return{startTracking:!1};const f=to(n),h="marquee"===c?null:jt(e,t.document.document.instances,o.getDomBox);if(h){const n=t.document.getInstance(h),o=!0===((null==n?void 0:n.lockPosition)??(null==n?void 0:n.locked)),a=t.selection.selectedIds.value.includes(h),g=t.selection.size.value>1;f?t.dispatch({type:"toggleSelect",payload:{instanceId:h}}):o?t.dispatch({type:"select",payload:{instanceId:h}}):a&&g&&s.draggable&&"inspect"!==c?r.deferredClickSelect=h:t.dispatch({type:"select",payload:{instanceId:h}});const v="slot"===(null==n?void 0:n.placement)||"container"===(null==n?void 0:n.placement),m=Yt(t,h),y="inspect"===c;if(o||!s.draggable||y||(null==n?void 0:n.hidden))return{startTracking:!1};if(!Gt(m)){if(!f){p++;const e={instanceId:h,parentId:null==n?void 0:n.parentId,parentLayoutMode:m,token:p};u.value=e,null==(i=t.setCannotDragLayoutManagedChildEvent)||i.call(t,e),v&&(l++,d.value={instanceId:h,parentId:null==n?void 0:n.parentId,token:l})}return{startTracking:!1}}return r.status="pending",r.startPt={...e},r.startRects=function(){const e=t.selection.selectedIds.value,n=new Map;for(const o of e){const e=t.document.getInstance(o);e&&!0!==(e.lockPosition??e.locked)&&n.set(o,{x:e.rect.x,y:e.rect.y})}return n}(),{startTracking:!0}}return f||t.dispatch({type:"clearSelection"}),a.active=!0,a.start={...e},a.end={...e},a.additive=f,a.priorSelection=f?[...t.selection.selectedIds.value]:[],{startTracking:!0}},handlePointerMove(e){var n,i,d,l;if("active"===s.status&&s.startPt&&s.startRect&&s.instanceId){const n=e.x-s.startPt.x,o=e.y-s.startPt.y,i=s.startRect,a=s.handle,r=t.document.getInstance(s.instanceId);if(!r)return;const c=s.parentLayoutMode,u=void 0!==c&&!Gt(c);let p=i.x,f=i.y,h=i.w,g=i.h;const v="w"===a||"nw"===a||"sw"===a,m="e"===a||"ne"===a||"se"===a,y="n"===a||"ne"===a||"nw"===a,I="s"===a||"se"===a||"sw"===a;m?h=i.w+n:v&&(h=i.w-n,u||(p=i.x+n)),I?g=i.h+o:y&&(g=i.h-o,u||(f=i.y+o)),h<8&&(!u&&v&&(p=i.x+i.w-8),h=8),g<8&&(!u&&y&&(f=i.y+i.h-8),g=8);const w=s.startLayoutBox,x=s.startOutletCanvasSize,b=m||v,S=I||y,k=!u&&v,M=!u&&y,z=b?Zt(w.widthMode,h,x?x.w:null):null,T=S?Zt(w.heightMode,g,x?x.h:null):null,L="canvas"===s.placement||"absolute"===s.placement,C=!(z&&"px"!==z.mode||T&&"px"!==T.mode||b&&"px"!==w.widthMode||S&&"px"!==w.heightMode);if(L&&C){const e={x:r.rect.x,y:r.rect.y,w:r.rect.w,h:r.rect.h};(k&&e.x!==p||M&&e.y!==f)&&t.dispatch({type:"moveInstance",payload:{instanceId:s.instanceId,x:k?p:e.x,y:M?f:e.y}}),(b&&e.w!==h||S&&e.h!==g)&&t.dispatch({type:"resizeInstance",payload:{instanceId:s.instanceId,w:b?h:e.w,h:S?g:e.h}})}else{const e={};z&&(e.widthMode=z.mode,e.width=z.value),T&&(e.heightMode=T.mode,e.height=T.value),k&&(e.x=p),M&&(e.y=f);const n=r.layoutBox;let o=!1;n?(void 0!==e.x&&e.x!==n.x&&(o=!0),void 0!==e.y&&e.y!==n.y&&(o=!0),void 0!==e.width&&e.width!==n.width&&(o=!0),void 0!==e.height&&e.height!==n.height&&(o=!0),void 0!==e.widthMode&&e.widthMode!==n.widthMode&&(o=!0),void 0!==e.heightMode&&e.heightMode!==n.heightMode&&(o=!0)):o=Object.keys(e).length>0,o&&t.dispatch({type:"updateLayoutBox",payload:{instanceId:s.instanceId,patch:e}})}if(("container"===s.placement||"slot"===s.placement)&&(null!==s.startSize||C)){const e=s.startSize,n={};b?n.width=Qt(null==e?void 0:e.width,h,x?x.w:null):(null==e?void 0:e.width)&&(n.width={...e.width}),S?n.height=Qt(null==e?void 0:e.height,g,x?x.h:null):(null==e?void 0:e.height)&&(n.height={...e.height});(d=r.size)===(l=n)||d&&l&&eo(d.width,l.width)&&eo(d.height,l.height)||t.dispatch({type:"setInstanceSize",payload:{instanceId:s.instanceId,size:n}})}return}if("pending"===r.status&&r.startPt){const n=e.x-r.startPt.x,o=e.y-r.startPt.y;n*n+o*o>=9&&(r.status="active",t.beginBatch())}if("active"===r.status&&r.startPt){const a=e.x-r.startPt.x,s=e.y-r.startPt.y,d=(null==(n=o.getRoot)?void 0:n.call(o))??null,l=d instanceof HTMLElement?d:null,u=t.document.document.instances,p=null!==l&&u.length<=50,f=(e,n)=>p?Jt(e,l,t.viewport)??n:n,h=[];for(const[e,n]of r.startRects){const o=t.document.getInstance(e);if(!o)continue;const i=f(e,o.rect);h.push({x:n.x+a,y:n.y+s,w:i.w,h:i.h})}const g=[],v=new Set(r.startRects.keys());for(const e of u)v.has(e.instanceId)||g.push(f(e.instanceId,e.rect));const m=t.document.document.layout,y=!1!==t.effectiveBehavior.value.snap,I=(null==(i=m.guides)?void 0:i.items)??[],w=[],x=[];for(const e of I)"x"===e.axis?w.push(e.position):x.push(e.position);const b=y?Ot({draggedRects:h,otherRects:g,canvasSize:{w:t.measuredCanvasSize.value.w,h:t.measuredCanvasSize.value.h},manualGuides:w.length||x.length?{x:w,y:x}:void 0}):{dx:0,dy:0,lines:[]};c.value=b.lines;const S=a+b.dx,k=s+b.dy;for(const[e,n]of r.startRects)t.document.getInstance(e)&&t.dispatch({type:"moveInstance",payload:{instanceId:e,x:n.x+S,y:n.y+k}});return}a.active&&(a.end={...e})},handlePointerUp(){if("active"===s.status){const e="slot"===s.placement||"container"===s.placement?"resize-slot-child":"resize";return t.endBatch(e),void y()}if("active"===r.status)return t.endBatch("drag"),void m();if("pending"===r.status)return r.deferredClickSelect&&t.dispatch({type:"select",payload:{instanceId:r.deferredClickSelect}}),void m();if(!a.active)return;const e=f.value,n=t.document.document.instances;if(e&&(e.w>0||e.h>0)){const i=ao(Nt(e,n,o.getDomBox),n);if(a.additive){const e=ao(a.priorSelection,n),o=Array.from(new Set([...e,...i]));t.dispatch({type:"selectAll",payload:{instanceIds:o}})}else i.length>0&&t.dispatch({type:"selectAll",payload:{instanceIds:i}})}v()},cancelMarquee(){v()},cancelDrag(){"active"===r.status&&t.endBatch("drag-cancel"),m()},handleResizeStart(e,n,i){var a,r,c,d,l,u;const p=t.document.getInstance(e);if(!p)return{startTracking:!1};if(!0===(p.lockSize??p.locked))return{startTracking:!1};if(p.hidden)return{startTracking:!1};if(!t.effectiveBehavior.value.resizable)return{startTracking:!1};const f="slot"===p.placement||"container"===p.placement,h=Yt(t,e);if(!Wt(h,n,null==(a=p.layoutBox)?void 0:a.widthMode,null==(r=p.layoutBox)?void 0:r.heightMode))return{startTracking:!1};s.status="active",s.handle=n,s.startPt={...i};const g=Jt(e,(null==(c=o.getRoot)?void 0:c.call(o))??null,t.viewport);s.startRect=g??{...p.rect},s.instanceId=e,s.placement=f?"container":"canvas",s.parentLayoutMode=h,s.startLayoutBox=p.layoutBox?Z(p.layoutBox):{x:p.rect.x,y:p.rect.y,width:p.rect.w,height:p.rect.h,widthMode:"px",heightMode:"px",overflow:"hidden"},s.startSize=f&&p.size?Z(p.size):null;const v=p.parentId,m=p.slot,y=(null==(d=o.getRoot)?void 0:d.call(o))??null;let I=v?Kt(v,m,y):null;if(v&&(!I||0===I.width&&0===I.height)){const n=Vt(y,`[data-instance-id="${e.replace(/["\\]/g,e=>`\\${e}`)}"]`),t=n instanceof HTMLElement?n.parentElement:null;if(t){const e=t.getBoundingClientRect();(e.width>0||e.height>0)&&(I=e)}}if(I){const e=t.viewport.scale.value||1;s.startOutletCanvasSize={w:I.width/e,h:I.height/e}}else if(void 0===v)s.startOutletCanvasSize={w:t.measuredCanvasSize.value.w,h:t.measuredCanvasSize.value.h};else{const n=s.startLayoutBox.widthMode,t=s.startLayoutBox.heightMode,o="percent"===n||"percent"===t;o&&console.debug("[hc-canvas/interaction] resize: 父 outlet 找不到,percent 模式将退化到 px。",{instanceId:e,parentId:v,slot:m});const i=s.startSize,a="percent"===(null==(l=null==i?void 0:i.width)?void 0:l.mode)||"percent"===(null==(u=null==i?void 0:i.height)?void 0:u.mode);!o&&a&&console.debug("[hc-canvas/interaction] slot child resize: 父 outlet 找不到,percent 模式将退化到 px。",{instanceId:e,parentId:v,slot:m}),s.startOutletCanvasSize=null}return t.beginBatch(),{startTracking:!0}},cancelResize(){if("active"===s.status){const e="slot"===s.placement||"container"===s.placement?"resize-slot-child-cancel":"resize-cancel";t.endBatch(e)}y()}}}function so(e){var n;return"undefined"!=typeof globalThis&&(null==(n=globalThis.CSS)?void 0:n.escape)?globalThis.CSS.escape(e):e.replace(/["\\]/g,e=>`\\${e}`)}function co(e,n,t){const o=null==t?void 0:t.skip;let i=null;for(const t of e){if(!(t instanceof HTMLElement))continue;if(o&&o(t))continue;const e=t.getBoundingClientRect();if(0===e.width&&0===e.height)continue;if(n.x<e.left||n.x>e.right)continue;if(n.y<e.top||n.y>e.bottom)continue;let a=0,r=t;for(;r;)a++,r=r.parentElement;(!i||a>i.depth)&&(i={el:t,depth:a})}return i?i.el:null}function lo(e,n){return{ok:!1,reason:e,message:n}}function uo(e,n,t,o={}){const i=new Map;for(const n of e)i.set(n.instanceId,n);const a=i.get(n);if(!a)return lo("instance-not-exists",`实例 "${n}" 不存在,无法 reparent`);const r=null===t.parentId||void 0===t.parentId?void 0:t.parentId;if(r===n)return lo("self-parent",`parentId 不能等于自身 "${n}"`);if(void 0!==r){const e=i.get(r);if(!e)return lo("parent-not-exists",`目标 parentId "${r}" 不存在`);const t=new Set;let o=e.parentId;for(;void 0!==o&&!t.has(o);){if(t.add(o),o===n)return lo("cycle",`目标 parent "${r}" 是 "${n}" 的后代,会循环`);const e=i.get(o);o=null==e?void 0:e.parentId}}if(void 0===r)return{ok:!0};const s=o.resolveContract;if(!s)return{ok:!0};const c=i.get(r),d=s(c.componentVersionKey);if(!d)return{ok:!0};const l=d.slotsDecl??[];if(0===l.length)return lo("parent-not-layout",`父组件 "${c.componentId}" 不是布局组件(slotsDecl 空)`);const u=void 0===t.slot||""===t.slot||"default"===t.slot?Ln:t.slot,p=(f=u,l.find(e=>e.name===f));var f;if(!p)return lo("slot-not-exists",`slot "${u}" 不在父 "${c.componentId}" 的 slotsDecl`);if(p.accepts&&p.accepts.length>0&&!p.accepts.includes(a.componentId))return lo("accepts-violation",`slot "${u}" 不允许 componentId "${a.componentId}"(accepts: ${p.accepts.join(", ")})`);if(!0!==p.multiple){const t=e.filter(e=>e.instanceId!==n&&e.parentId===r&&Pn(e)===u);if(t.length>0)return lo("slot-multiple-violated",`slot "${u}" 不允许多个子实例(已有 "${t[0].instanceId}")`)}if("number"==typeof p.maxChildren&&Number.isFinite(p.maxChildren)&&p.maxChildren>=1){const t=e.filter(e=>e.instanceId!==n&&e.parentId===r&&Pn(e)===u);if(t.length+1>p.maxChildren)return lo("max-children-exceeded",`slot "${u}" 最多接受 ${p.maxChildren} 个子(已有 ${t.length} 个)`)}return{ok:!0}}function po(e){const n=new Set(e.map(e=>e.instanceId)),t=new Map;for(const n of e)t.set(n.instanceId,ho(n));const o=[],i=new Map;e.forEach((e,a)=>{const r={inst:e,node:t.get(e.instanceId),originalIndex:a},s=e.parentId;if(s){if(!n.has(s))return console.warn(`[hc-canvas/instance-tree] instance "${e.instanceId}" parentId="${s}" 不存在,降级当顶层`),void o.push(r);i.has(s)||i.set(s,[]),i.get(s).push(r)}else o.push(r)});for(const[e,n]of i){const o=t.get(e);o&&(o.children=fo(n).map(e=>e.node))}return o.slice().sort((e,n)=>{const t=(n.inst.zIndex??0)-(e.inst.zIndex??0);return 0!==t?t:e.originalIndex-n.originalIndex}).map(e=>e.node)}function fo(e){const n=new Map;for(const t of e){const e=t.inst.slot??"default";let o=n.get(e);o||(o={firstIndex:t.originalIndex,entries:[]},n.set(e,o)),o.entries.push(t)}return Array.from(n.values()).sort((e,n)=>e.firstIndex-n.firstIndex).flatMap(e=>e.entries.slice().sort((e,n)=>e.originalIndex-n.originalIndex))}function ho(e){const n={instanceId:e.instanceId,componentId:e.componentId,componentVersionKey:e.componentVersionKey,kind:"visual",label:e.alias??e.instanceId};return void 0!==e.locked&&(n.locked=e.locked),void 0!==e.lockPosition&&(n.lockPosition=e.lockPosition),void 0!==e.lockSize&&(n.lockSize=e.lockSize),void 0!==e.hidden&&(n.hidden=e.hidden),n}function go(e,n){for(const t of e){if(t.instanceId===n)return[t];if(t.children&&t.children.length>0){const e=go(t.children,n);if(e.length>0)return[t,...e]}}return[]}function vo(e,n){const t=new Map;for(const n of e)t.set(n.instanceId,n);const o=t.get(n);if(!o)return[];const i=[o];let a=o;const r=e.length;for(;a&&a.parentId;){if(i.length>r){console.warn(`[hc-canvas/instance-tree] breadcrumb for "${n}" exceeds depth ${r},疑似环,截断`);break}const e=t.get(a.parentId);if(!e)break;i.unshift(e),a=e}return i}function mo(e,n,t){const o=n||void 0;return e.filter(e=>(e.parentId||void 0)===o&&e.slot===t).map((e,n)=>({inst:e,originalIndex:n})).sort((e,n)=>{const t=(n.inst.zIndex??0)-(e.inst.zIndex??0);return 0!==t?t:e.originalIndex-n.originalIndex}).map(e=>e.inst)}const yo=40;function Io(e){if(0===e.length)return null;let n=1/0,t=1/0,o=-1/0,i=-1/0;for(const a of e)a.x<n&&(n=a.x),a.y<t&&(t=a.y),a.x+a.w>o&&(o=a.x+a.w),a.y+a.h>i&&(i=a.y+a.h);return{x:n,y:t,w:o-n,h:i-t}}function wo(e){return Io(e.map(e=>e.rect))}function xo(e,n){if(0===n.length)return null;const t=new Set(n),o=[];for(const n of e)t.has(n.instanceId)&&o.push(n.rect);return Io(o)}function bo(e,n,t){const o=(null==t?void 0:t.padding)??40,i=Math.max(1,n.w-2*o),a=Math.max(1,n.h-2*o),r=Math.max(1,e.w),s=Math.max(1,e.h);let c=Math.min(i/r,a/s);void 0!==(null==t?void 0:t.maxScale)&&(c=Math.min(c,t.maxScale)),void 0!==(null==t?void 0:t.minScale)&&(c=Math.max(c,t.minScale));const d=e.x+e.w/2,l=e.y+e.h/2;return{scale:c,panX:n.w/2-d*c,panY:n.h/2-l*c}}function So(e,n){const t=e.scale||1;return{x:-e.panX/t+0,y:-e.panY/t+0,w:n.w/t,h:n.h/t}}function ko(e){const n=[];(e.metaKey||e.ctrlKey)&&n.push("mod"),e.shiftKey&&n.push("shift"),e.altKey&&n.push("alt");let t=e.key;return t="Meta"===t||"Control"===t?"mod":" "===t||"Space"===e.code?"space":(t.length,t.toLowerCase()),n[n.length-1]===t||n.push(t),n.join("+")}function Mo(e){if(!(e&&e instanceof HTMLElement))return!1;const n=e.tagName;return"INPUT"===n||"TEXTAREA"===n||"SELECT"===n||!!e.isContentEditable}function zo(e,n){const t=ko(n);for(const n of e.keys)if(To(n)===t)return!0;return!1}function To(e){return e.split("+").map(e=>e.trim().toLowerCase()).join("+")}function Lo(){return[{id:"undo",keys:["mod+z"],command:"undo",when:"notEditingText"},{id:"redo",keys:["mod+shift+z","mod+y"],command:"redo",when:"notEditingText"},{id:"deleteSelection",keys:["delete","backspace"],command:"deleteSelection",when:"hasSelection"},{id:"duplicateSelection",keys:["mod+d"],command:"duplicateSelection",when:"hasSelection"},{id:"fitToSelectionOrContent",keys:["f"],command:"fitToSelectionOrContent",when:"notEditingText"},{id:"zoom100",keys:["1"],command:"zoom100",when:"notEditingText"},{id:"resetViewport",keys:["0"],command:"resetViewport",when:"notEditingText"},{id:"zoomIn",keys:["+","="],command:"zoomIn",when:"notEditingText"},{id:"zoomOut",keys:["-"],command:"zoomOut",when:"notEditingText"},{id:"nudgeLeft",keys:["arrowleft"],command:"nudgeSelection",payload:{dx:-1,dy:0},when:"hasSelection"},{id:"nudgeRight",keys:["arrowright"],command:"nudgeSelection",payload:{dx:1,dy:0},when:"hasSelection"},{id:"nudgeUp",keys:["arrowup"],command:"nudgeSelection",payload:{dx:0,dy:-1},when:"hasSelection"},{id:"nudgeDown",keys:["arrowdown"],command:"nudgeSelection",payload:{dx:0,dy:1},when:"hasSelection"},{id:"nudgeLeftLarge",keys:["shift+arrowleft"],command:"nudgeSelectionLarge",payload:{dx:-1,dy:0},when:"hasSelection"},{id:"nudgeRightLarge",keys:["shift+arrowright"],command:"nudgeSelectionLarge",payload:{dx:1,dy:0},when:"hasSelection"},{id:"nudgeUpLarge",keys:["shift+arrowup"],command:"nudgeSelectionLarge",payload:{dx:0,dy:-1},when:"hasSelection"},{id:"nudgeDownLarge",keys:["shift+arrowdown"],command:"nudgeSelectionLarge",payload:{dx:0,dy:1},when:"hasSelection"},{id:"cancelInteraction",keys:["escape"],command:"cancelInteraction",when:"notEditingText"}]}function Co(e){const{ctx:n}=e;function t(e){return re(`${e}_`)}return{fill(e,t,o){n.dispatch({type:"freeSplitFill",payload:{containerId:e,leafId:t,instance:o}})},clear(e,t){n.dispatch({type:"freeSplitClear",payload:{containerId:e,leafId:t}})},swap(e,t,o){n.dispatch({type:"freeSplitSwap",payload:{containerId:e,leafIdA:t,leafIdB:o}})},resize(e,t,o){n.dispatch({type:"freeSplitResize",payload:{containerId:e,nodeId:t,sizes:o}})},split(e,o,i,a){const r=t("lf"),s=t("nd");return n.dispatch({type:"freeSplitSplit",payload:{containerId:e,leafId:o,edge:i,newLeafShare:a,newLeafId:r,newNodeId:s}}),{leafId:r,nodeId:s}},merge(e,t){n.dispatch({type:"freeSplitMerge",payload:{containerId:e,leafId:t}})}}}function Bo(e,t){const o=Et(e,t.recorder),r=function(e){const{ctx:n,options:t}=e;function o(e){const o=t.getStageEl();if(!o)return console.warn("[hc-canvas/handle] clientToCanvasPoint called before stage mounted; falling back to viewport.toCanvasPoint(raw clientPt). 结果可能偏移。"),n.viewport.toCanvasPoint(e);const i=o.getBoundingClientRect();return n.viewport.toCanvasPoint({x:e.x-i.left,y:e.y-i.top})}return{clientToCanvasPoint:o,getInstanceAtClientPoint:function(e){const i=t.getStageEl();if(!i)return null;const a=jt(o(e),n.document.document.instances,e=>Jt(e,i,n.viewport));return a?n.document.getInstance(a)??null:null},getDropTarget:function(e,o,i){var a;const r=o??(null==(a=t.getStageEl)?void 0:a.call(t))??("undefined"!=typeof document&&"function"==typeof document.querySelectorAll?document:null);if(!r)return null;const s=void 0!==(null==i?void 0:i.excludeInstanceId),c=s?`[data-instance-id="${so(i.excludeInstanceId)}"]`:null;let d=c?r.querySelector(c):null;if(!d&&s&&r instanceof Element){const e=r.closest("[data-hc-canvas-designer]");e&&e!==r&&(d=e.querySelector(c))}let l=r.querySelectorAll("[data-hc-slot]");if(0===l.length&&s&&r instanceof Element){const e=r.closest("[data-hc-canvas-designer]");e&&e!==r&&(l=e.querySelectorAll("[data-hc-slot]"))}const u=co(l,e,{skip:d?e=>d.contains(e):void 0});if(!u)return null;const p=u.closest("[data-instance-id]");if(!p)return null;const f=p.getAttribute("data-instance-id");return f&&n.document.getInstance(f)?{parentId:f,slot:u.getAttribute("data-hc-slot")||"default",outletEl:u}:null},getFreeSplitDropTarget:function(e,o){var i;const a=o??(null==(i=t.getStageEl)?void 0:i.call(t))??("undefined"!=typeof document&&"function"==typeof document.querySelectorAll?document:null);if(!a)return null;const r=co(a.querySelectorAll("[data-hc-leaf]"),e);if(!r)return null;const s=r.getAttribute("data-hc-leaf"),c=r.getAttribute("data-hc-leaf-container");if(!s||!c)return null;const d=n.document.getInstance(c),l=null==d?void 0:d.containerLayout;return l&&"free-split"===l.mode&&tn(l.root,s)?{containerId:c,leafId:s,leafEl:r}:null}}}({ctx:e,options:t}),s=function(e){const{ctx:n,options:t}=e;function o(e,o){const i=n.document.getInstance(e);if(!i)return console.warn(`[hc-canvas/handle] ${o}: instance "${e}" 不存在`),!1;const a=t.getStageEl();if(!a)return console.warn(`[hc-canvas/handle] ${o}: stage 未挂载,跳过滚动(${e})`),!1;const r=Jt(e,a,n.viewport),s=r&&(r.w>0||r.h>0)?r:{x:i.rect.x,y:i.rect.y,w:i.rect.w,h:i.rect.h},c=a.getBoundingClientRect(),d=n.viewport.scale.value,l=c.width/2-(s.x+s.w/2)*d,u=c.height/2-(s.y+s.h/2)*d;return n.viewport.setPan(l,u),!0}const r=i(null);let s=0;return{getInstanceTree:function(){return po(n.document.document.instances)},getInstanceList:function(){return n.document.document.instances.map(e=>Z(e))},getInstanceById:function(e){const t=n.document.getInstance(e);return t?Z(t):null},getSelectedPath:function(){const e=n.selection.primaryId.value;if(!e)return[];const t=n.document.document.instances,o=po(t),i=vo(t,e);if(0===i.length)return[];const a=new Map,r=[...o];for(;r.length>0;){const e=r.pop();a.set(e.instanceId,e),e.children&&e.children.length>0&&r.push(...e.children)}const s=[];for(const n of i){const t=a.get(n.instanceId);if(!t)return go(o,e);s.push(t)}return s},getBreadcrumb:function(e){return vo(n.document.document.instances,e).map(e=>Z(e))},focusInstance:function(e){n.document.getInstance(e)?(n.dispatch({type:"select",payload:{instanceId:e}}),o(e,"focusInstance")):console.warn(`[hc-canvas/handle] focusInstance: instance "${e}" 不存在`)},scrollToInstance:function(e){o(e,"scrollToInstance")},canReparent:function(e,o){return uo(n.document.document.instances,e,o,{resolveContract:t.resolveContract})},moveInstanceInTree:function(e,o){var i,a,c;const d=uo(n.document.document.instances,e,o,{resolveContract:t.resolveContract});if(!d.ok)return console.warn(`[hc-canvas/handle] moveInstanceInTree 守门拒绝(${d.reason}): ${d.message}`),void function(e,n,t,o){s++,r.value={instanceId:e,target:{...n},reason:t,message:o,token:s}}(e,o,d.reason,d.message??`reparent rejected: ${d.reason}`);const l=n.document.getInstance(e),u=null===o.parentId?void 0:o.parentId,p=(l.parentId||void 0)!==(u||void 0),f=l.slot!==o.slot,h={};if(p&&(h.parentId=u),f&&(h.slot=o.slot),p){const e=void 0===u?"canvas":"container";l.placement!==e&&(h.placement=e);const t=n.document.document.layout,o=void 0===u?(null==(i=null==t?void 0:t.rootLayout)?void 0:i.mode)??"free":(null==(c=null==(a=n.document.getInstance(u))?void 0:a.containerLayout)?void 0:c.mode)??"none";if(l.layoutBox)if("container"!==e||"flex"!==o&&"split"!==o&&"grid"!==o){if("canvas"===e){const e="fill"===l.layoutBox.widthMode?"px":l.layoutBox.widthMode,n="fill"===l.layoutBox.heightMode?"px":l.layoutBox.heightMode;e===l.layoutBox.widthMode&&n===l.layoutBox.heightMode||(h.layoutBox={...l.layoutBox,widthMode:e,heightMode:n})}}else h.layoutBox={...l.layoutBox,x:0,y:0,widthMode:"fill",heightMode:"fill"},h.rect={x:0,y:0,w:l.rect.w,h:l.rect.h};if("container"===e&&"grid"===o){const e=l.layoutItem??{};void 0!==e.row&&void 0!==e.column||(h.layoutItem={...e,row:e.row??1,column:e.column??1})}}const g=[];if(void 0!==o.index){const t=mo(n.document.document.instances,u,o.slot).filter(n=>n.instanceId!==e),i=Math.max(0,Math.min(o.index,t.length));t.splice(i,0,l),t.forEach((e,n)=>{const o=t.length-1-n;(e.zIndex??0)!==o&&g.push({id:e.instanceId,zIndex:o})})}if(0===Object.keys(h).length&&0===g.length)return;const v=!n.isBatching.value;v&&n.beginBatch();try{Object.keys(h).length>0&&n.dispatch({type:"updateInstance",payload:{instanceId:e,patch:h}});for(const e of g)n.dispatch({type:"updateInstance",payload:{instanceId:e.id,patch:{zIndex:e.zIndex}}})}finally{v&&n.endBatch("moveInstanceInTree")}},cannotReparentEvent:a(r)}}({ctx:e,options:t}),c=function(e){const{ctx:n,options:t}=e;function o(){const e=t.getStageEl();if(!e)return null;const n=e.getBoundingClientRect();return{w:n.width,h:n.height}}function i(){return{scale:n.viewport.scale.value,panX:n.viewport.panX.value,panY:n.viewport.panY.value}}function a(){return wo(n.document.document.instances)}function r(){return xo(n.document.document.instances,n.selection.selectedIds.value)}function s(e,t){const a=o();if(!a)return void n.viewport.setScale(e);const r=i();let s;if(null==t?void 0:t.center)s=t.center;else{const e=So(r,a);s={x:e.x+e.w/2,y:e.y+e.h/2}}const c=s.x*r.scale+r.panX,d=s.y*r.scale+r.panY,l=c-s.x*e,u=d-s.y*e;n.viewport.setScale(e),n.viewport.setPan(l,u)}function c(e,t){const i=o();if(!i)return void console.warn("[hc-canvas/handle] scrollToRect: stage 未挂载,跳过");const a=bo(e,i,t);n.viewport.setScale(a.scale),n.viewport.setPan(a.panX,a.panY)}return{getViewportState:i,getVisibleBounds:function(){const e=o();return e?So(i(),e):{x:0,y:0,w:0,h:0}},getCanvasBounds:function(){const e=n.measuredCanvasSize.value;return{x:0,y:0,w:e.w,h:e.h}},getContentBounds:a,getSelectionBounds:r,getInstanceBounds:function(e){const t=n.document.getInstance(e);return t?{...t.rect}:null},panBy:function(e,t){n.viewport.setPan(n.viewport.panX.value+e,n.viewport.panY.value+t)},panTo:function(e,t){n.viewport.setPan(e,t)},zoomTo:s,zoomBy:function(e,t){s(n.viewport.scale.value+e,t)},zoomToPoint:function(e,o){const a=t.getStageEl();if(!a)return void console.warn("[hc-canvas/handle] zoomToPoint: stage 未挂载,跳过");const r=a.getBoundingClientRect(),s=o.x-r.left,c=o.y-r.top,d=i(),l=s-(s-d.panX)/d.scale*e,u=c-(c-d.panY)/d.scale*e;n.viewport.setScale(e),n.viewport.setPan(l,u)},resetViewport:function(){n.viewport.resetView()},scrollToRect:c,fitToContent:function(e){const n=a();n&&c(n,e)},fitToSelection:function(e){const n=r();n&&c(n,e)}}}({ctx:e,options:t}),d=function(e){const{ctx:n}=e;return{getInstanceSize:function(e){const t=n.document.getInstance(e);if(t&&void 0!==t.size)return Z(t.size)},updateInstanceSize:function(e,t){n.dispatch({type:"setInstanceSize",payload:{instanceId:e,size:t}})},getContainerLayout:function(e){const t=n.document.getInstance(e);return t&&void 0!==t.containerLayout?Z(t.containerLayout):null},updateContainerLayout:function(e,t){n.dispatch({type:"setContainerLayout",payload:{instanceId:e,containerLayout:t}})},getLayoutBox:function(e){const t=n.document.getInstance(e);if(t&&void 0!==t.layoutBox)return Z(t.layoutBox)},updateLayoutBox:function(e,t){n.dispatch({type:"updateLayoutBox",payload:{instanceId:e,patch:t}})},getLayoutItem:function(e){const t=n.document.getInstance(e);if(t&&void 0!==t.layoutItem)return Z(t.layoutItem)},updateLayoutItem:function(e,t){n.dispatch({type:"updateLayoutItem",payload:{instanceId:e,patch:t}})},getRotation:function(e){const t=n.document.getInstance(e);if(!t)return 0;const o=t.rotation;return"number"==typeof o&&Number.isFinite(o)?o:0},updateRotation:function(e,t){n.dispatch({type:"updateRotation",payload:{instanceId:e,value:t}})},getInstanceOutletRect:function(e,n){if("undefined"==typeof document||"function"!=typeof document.querySelector)return null;const t=n??"default",o=""===t?"default":t,i=`[data-instance-id="${so(e)}"]`,a=`[data-hc-slot="${so(o)}"]`,r=document.querySelector(`${i} ${a}`);return r&&r instanceof HTMLElement?r.getBoundingClientRect():null}}}({ctx:e}),l=function(e){const{ctx:n}=e;function t(){return JSON.parse(JSON.stringify(n.document.document.layout))}return{getLayoutConfig:t,updateCanvasSize:function(e){const o={...t().canvas,...e};n.dispatch({type:"updateLayout",payload:{patch:{canvas:o}}})},updateCanvasBackground:function(e){if(null===e)return void n.dispatch({type:"updateLayout",payload:{patch:{background:void 0}}});const o={...t().background??{},...e};n.dispatch({type:"updateLayout",payload:{patch:{background:o}}})},updateBehavior:function(e){const o={...t().behavior??{},...e};n.dispatch({type:"updateLayout",payload:{patch:{behavior:o}}})},setRootLayout:function(e){let t;if(null===e)t=null;else if("string"==typeof e)switch(e){case"free":t={mode:"free"};break;case"none":t={mode:"none"};break;case"split":t={mode:"split",direction:"horizontal",ratios:[.5,.5]};break;case"grid":t={mode:"grid",columns:[{mode:"fr",value:1},{mode:"fr",value:1}],rows:[{mode:"fr",value:1},{mode:"fr",value:1}]};break;case"flex":t={mode:"flex",direction:"row"};break;default:return void console.warn(`[hc-canvas/handle] setRootLayout: 未知 mode "${e}",忽略`)}else t=e;n.dispatch({type:"setRootLayout",payload:{rootLayout:t}})},setInteractionOptions:function(e){n.setInteractionOptions(e)},getEffectiveBehavior:function(){return{...n.effectiveBehavior.value}},resolveAsset:function(e){return n.resolveAsset(e)}}}({ctx:e}),u=function(e){const{ctx:n}=e;function t(){return n.document.document.layout.guides??{}}function o(e){n.dispatch({type:"updateLayout",payload:{patch:{guides:e}}})}return{setRulerVisible:function(e){const n=t();o({...n,ruler:{...n.ruler??{},visible:e}})},setGridVisible:function(e){const n=t();o({...n,grid:{...n.grid??{},visible:e}})},updateRulerConfig:function(e){const n=t();o({...n,ruler:{...n.ruler??{},...e}})},updateGridConfig:function(e){const n=t();o({...n,grid:{...n.grid??{},...e}})},addGuide:function(e){const n=t(),i=n.items??[],a=e.id??re("g_");if(i.some(e=>e.id===a))return console.warn(`[hc-canvas/handle] addGuide: id "${a}" 已存在,忽略`),a;const r={id:a,axis:e.axis,position:e.position};return void 0!==e.locked&&(r.locked=e.locked),void 0!==e.label&&(r.label=e.label),o({...n,items:[...i,r]}),a},removeGuide:function(e){const n=t(),i=n.items??[];i.some(n=>n.id===e)&&o({...n,items:i.filter(n=>n.id!==e)})},updateGuide:function(e,n){const i=t(),a=i.items??[],r=a.findIndex(n=>n.id===e);if(r<0)return void console.warn(`[hc-canvas/handle] updateGuide: id "${e}" 不存在,忽略`);const{id:s,...c}=n,d={...a[r],...c},l=[...a];l[r]=d,o({...i,items:l})},getGuides:function(){return(t().items??[]).map(e=>({...e}))},clearGuides:function(){const e=t();e.items&&0!==e.items.length&&o({...e,items:[]})},getMouseCanvasPoint:function(){const e=n.mouseCanvasPoint.value;return e?{x:e.x,y:e.y}:null}}}({ctx:e}),p=function(e){const{ctx:n,recorder:t,viewportApi:o,guides:i}=e;function a(e,t){const o=n.document.getInstance(e);if(!o)return null;const i=(null==t?void 0:t.newInstanceId)??re(`${o.componentId}_`);return n.dispatch({type:"duplicateInstance",payload:{instanceId:e,newInstanceId:i,...void 0!==(null==t?void 0:t.offset)?{offset:t.offset}:{}}}),n.document.getInstance(i)?i:null}const r=Object.freeze([{id:"undo",keys:["mod+z"],command:"undo",when:"notEditingText"},{id:"redo",keys:["mod+shift+z","mod+y"],command:"redo",when:"notEditingText"},{id:"deleteSelection",keys:["delete","backspace"],command:"deleteSelection",when:"hasSelection"},{id:"duplicateSelection",keys:["mod+d"],command:"duplicateSelection",when:"hasSelection"},{id:"fitToSelectionOrContent",keys:["f"],command:"fitToSelectionOrContent",when:"notEditingText"},{id:"zoom100",keys:["1"],command:"zoom100",when:"notEditingText"},{id:"resetViewport",keys:["0"],command:"resetViewport",when:"notEditingText"},{id:"zoomIn",keys:["+","="],command:"zoomIn",when:"notEditingText"},{id:"zoomOut",keys:["-"],command:"zoomOut",when:"notEditingText"},{id:"nudgeLeft",keys:["arrowleft"],command:"nudgeSelection",payload:{dx:-1,dy:0},when:"hasSelection"},{id:"nudgeRight",keys:["arrowright"],command:"nudgeSelection",payload:{dx:1,dy:0},when:"hasSelection"},{id:"nudgeUp",keys:["arrowup"],command:"nudgeSelection",payload:{dx:0,dy:-1},when:"hasSelection"},{id:"nudgeDown",keys:["arrowdown"],command:"nudgeSelection",payload:{dx:0,dy:1},when:"hasSelection"},{id:"nudgeLeftLarge",keys:["shift+arrowleft"],command:"nudgeSelectionLarge",payload:{dx:-1,dy:0},when:"hasSelection"},{id:"nudgeRightLarge",keys:["shift+arrowright"],command:"nudgeSelectionLarge",payload:{dx:1,dy:0},when:"hasSelection"},{id:"nudgeUpLarge",keys:["shift+arrowup"],command:"nudgeSelectionLarge",payload:{dx:0,dy:-1},when:"hasSelection"},{id:"nudgeDownLarge",keys:["shift+arrowdown"],command:"nudgeSelectionLarge",payload:{dx:0,dy:1},when:"hasSelection"},{id:"cancelInteraction",keys:["escape"],command:"cancelInteraction",when:"notEditingText"}]);function s(){const e=n.selection.selectedIds.value;if(0===e.length)return!1;for(const t of e){const e=n.document.getInstance(t);if(e&&!0!==(e.lockPosition??e.locked))return!0}return!1}function c(e,t,o){const i=o?10:1,a=n.selection.selectedIds.value;if(0===a.length)return;const r=!n.isBatching.value;r&&n.beginBatch();try{for(const o of a){const a=n.document.getInstance(o);if(!a||!0===(a.lockPosition??a.locked))continue;const r=Yt(n,o);Gt(r)?n.dispatch({type:"moveInstance",payload:{instanceId:o,x:a.rect.x+e*i,y:a.rect.y+t*i}}):"undefined"!=typeof console&&"function"==typeof console.debug&&console.debug("[hc-canvas/handle] executeNudge: 拒绝 layout-managed 子 nudge",{instanceId:o,parentLayoutMode:r})}}finally{r&&n.endBatch(o?"arrow-move-large":"arrow-move")}}function d(e){const t=[...n.selection.selectedIds.value];if(0===t.length)return;const o=!n.isBatching.value;o&&n.beginBatch();try{for(const o of t)n.dispatch({type:"setInstanceLocked",payload:{instanceId:o,locked:e}})}finally{o&&n.endBatch(e?"lock-selection":"unlock-selection")}}function l(e){const t=n.selection.selectedIds.value;if(0===t.length)return;const o=n.document.document.instances;if(0===o.length)return;const i=o.map((e,n)=>({inst:e,origIdx:n})).sort((e,n)=>{const t=e.inst.zIndex??0,o=n.inst.zIndex??0;return t!==o?t-o:e.origIdx-n.origIdx}).map(e=>e.inst),a=new Set(t),r=[];for(let e=0;e<i.length;e++)a.has(i[e].instanceId)&&r.push(e);if(0===r.length)return;if(r.length===i.length)return;const s=r.map(e=>i[e]),c=i.filter(e=>!a.has(e.instanceId));let d;if("toFront"===e)d=[...c,...s];else if("toBack"===e)d=[...s,...c];else if("forward"===e){let e=r[r.length-1]+1;for(;e<i.length&&a.has(i[e].instanceId);)e++;if(e>=i.length)return;const n=i[e],t=c.indexOf(n);d=[...c.slice(0,t+1),...s,...c.slice(t+1)]}else{let e=r[0]-1;for(;e>=0&&a.has(i[e].instanceId);)e--;if(e<0)return;const n=i[e],t=c.indexOf(n);d=[...c.slice(0,t),...s,...c.slice(t)]}const l=[];for(let e=0;e<d.length;e++){const n=d[e];(n.zIndex??0)!==e&&l.push({id:n.instanceId,zIndex:e})}if(0===l.length)return;const u=!n.isBatching.value;u&&n.beginBatch();try{for(const e of l)n.dispatch({type:"updateInstance",payload:{instanceId:e.id,patch:{zIndex:e.zIndex}}})}finally{u&&n.endBatch(`z-order-${e}`)}}const u={undo:{execute:()=>t.undo(),canExecute:()=>t.canUndo.value},redo:{execute:()=>t.redo(),canExecute:()=>t.canRedo.value},deleteSelection:{execute:function(){const e=[...n.selection.selectedIds.value];if(0===e.length)return;const t=!n.isBatching.value;t&&n.beginBatch();try{for(const t of e)n.dispatch({type:"removeInstance",payload:{instanceId:t}})}finally{t&&n.endBatch("delete-selection")}},canExecute:()=>n.selection.selectedIds.value.length>0},duplicateSelection:{execute:function(){const e=[...n.selection.selectedIds.value];if(0===e.length)return;const t=[],o=!n.isBatching.value;o&&n.beginBatch();try{for(const n of e){const e=a(n);e&&t.push(e)}t.length>0&&n.dispatch({type:"selectAll",payload:{instanceIds:t}})}finally{o&&n.endBatch("duplicate-selection")}},canExecute:()=>n.selection.selectedIds.value.length>0},clearSelection:{execute:()=>n.dispatch({type:"clearSelection"}),canExecute:()=>n.selection.selectedIds.value.length>0},cancelInteraction:{execute:()=>n.dispatch({type:"clearSelection"}),canExecute:()=>!0},zoomIn:{execute:()=>o.zoomBy(.1),canExecute:()=>!0},zoomOut:{execute:()=>o.zoomBy(-.1),canExecute:()=>!0},zoom100:{execute:()=>o.zoomTo(1),canExecute:()=>!0},resetViewport:{execute:()=>o.resetViewport(),canExecute:()=>!0},fitToContent:{execute:()=>o.fitToContent(),canExecute:()=>null!==o.getContentBounds()},fitToSelection:{execute:()=>o.fitToSelection(),canExecute:()=>null!==o.getSelectionBounds()},fitToSelectionOrContent:{execute:()=>{o.getSelectionBounds()?o.fitToSelection():o.fitToContent()},canExecute:()=>null!==o.getSelectionBounds()||null!==o.getContentBounds()},nudgeSelection:{execute:e=>{const n=e??{dx:0,dy:0};c(n.dx,n.dy,!1)},canExecute:s},nudgeSelectionLarge:{execute:e=>{const n=e??{dx:0,dy:0};c(n.dx,n.dy,!0)},canExecute:s},lockSelection:{execute:()=>d(!0),canExecute:()=>n.selection.selectedIds.value.length>0},unlockSelection:{execute:()=>d(!1),canExecute:()=>n.selection.selectedIds.value.length>0},bringForward:{execute:()=>l("forward"),canExecute:()=>n.selection.selectedIds.value.length>0},sendBackward:{execute:()=>l("backward"),canExecute:()=>n.selection.selectedIds.value.length>0},bringToFront:{execute:()=>l("toFront"),canExecute:()=>n.selection.selectedIds.value.length>0},sendToBack:{execute:()=>l("toBack"),canExecute:()=>n.selection.selectedIds.value.length>0},toggleGrid:{execute:function(){var e;const t=null==(e=n.document.document.layout.guides)?void 0:e.grid;i.setGridVisible(!(null==t?void 0:t.visible))},canExecute:()=>!0},toggleRuler:{execute:function(){var e;const t=null==(e=n.document.document.layout.guides)?void 0:e.ruler;i.setRulerVisible(!(null==t?void 0:t.visible))},canExecute:()=>!0}};function p(e,t){const o=null===t?null:JSON.parse(JSON.stringify(t));n.dispatch({type:"setComponentOverride",payload:{instanceId:e,override:o}})}function f(e,t){const o=e??"notEditingText";return"always"===o||("notEditingText"===o?!Mo(t.target):"design"===o?!Mo(t.target)&&!1!==n.effectiveBehavior.value.draggable:"hasSelection"===o&&!Mo(t.target)&&n.selection.selectedIds.value.length>0)}return{duplicateInstance:a,getToolMode:function(){return n.toolMode.value},setToolMode:function(e){n.setToolMode(e)},setTemporaryToolMode:function(e){n.setTemporaryToolMode(e)},handleGetDefaultShortcuts:function(){return[{id:"undo",keys:["mod+z"],command:"undo",when:"notEditingText"},{id:"redo",keys:["mod+shift+z","mod+y"],command:"redo",when:"notEditingText"},{id:"deleteSelection",keys:["delete","backspace"],command:"deleteSelection",when:"hasSelection"},{id:"duplicateSelection",keys:["mod+d"],command:"duplicateSelection",when:"hasSelection"},{id:"fitToSelectionOrContent",keys:["f"],command:"fitToSelectionOrContent",when:"notEditingText"},{id:"zoom100",keys:["1"],command:"zoom100",when:"notEditingText"},{id:"resetViewport",keys:["0"],command:"resetViewport",when:"notEditingText"},{id:"zoomIn",keys:["+","="],command:"zoomIn",when:"notEditingText"},{id:"zoomOut",keys:["-"],command:"zoomOut",when:"notEditingText"},{id:"nudgeLeft",keys:["arrowleft"],command:"nudgeSelection",payload:{dx:-1,dy:0},when:"hasSelection"},{id:"nudgeRight",keys:["arrowright"],command:"nudgeSelection",payload:{dx:1,dy:0},when:"hasSelection"},{id:"nudgeUp",keys:["arrowup"],command:"nudgeSelection",payload:{dx:0,dy:-1},when:"hasSelection"},{id:"nudgeDown",keys:["arrowdown"],command:"nudgeSelection",payload:{dx:0,dy:1},when:"hasSelection"},{id:"nudgeLeftLarge",keys:["shift+arrowleft"],command:"nudgeSelectionLarge",payload:{dx:-1,dy:0},when:"hasSelection"},{id:"nudgeRightLarge",keys:["shift+arrowright"],command:"nudgeSelectionLarge",payload:{dx:1,dy:0},when:"hasSelection"},{id:"nudgeUpLarge",keys:["shift+arrowup"],command:"nudgeSelectionLarge",payload:{dx:0,dy:-1},when:"hasSelection"},{id:"nudgeDownLarge",keys:["shift+arrowdown"],command:"nudgeSelectionLarge",payload:{dx:0,dy:1},when:"hasSelection"},{id:"cancelInteraction",keys:["escape"],command:"cancelInteraction",when:"notEditingText"}]},executeShortcut:function(e){for(const n of r){if(!zo(n,e))continue;if(!f(n.when,e))continue;const t=u[n.command];return!!t&&!!t.canExecute()&&(t.execute(n.payload),!1!==n.preventDefault&&e.preventDefault(),!0)}return!1},executeCommand:function(e,n){const t=u[e];t?t.canExecute()&&t.execute(n):console.warn(`[hc-canvas/handle] executeCommand: 未知命令 "${e}"`)},canExecuteCommand:function(e){const n=u[e];return!!n&&n.canExecute()},getStaleComponentOverrides:function(){const e=n.document.document.componentOverrides??{},t=[];for(const o of n.document.document.instances){const n=e[o.instanceId];n&&n.baseVersionKey!==o.componentVersionKey&&t.push({instanceId:o.instanceId,baseVersionKey:n.baseVersionKey,currentVersionKey:o.componentVersionKey})}return t},setComponentOverride:p,discardComponentOverride:function(e){p(e,null)},getLayoutIssues:function(){return n.layoutIssues.value}}}({ctx:e,recorder:o,viewportApi:c,guides:u}),f=function(e){const{ctx:n,options:t}=e;function o(e){var o,i,a,r,s,c,d,l,u;const p=e.parentId||void 0;if(void 0===p)return e;const f=(null==(i=null==(o=n.document.getInstance(p))?void 0:o.containerLayout)?void 0:i.mode)??"none";if("flex"!==f&&"split"!==f&&"grid"!==f)return e;const h=e.layoutBox,g=void 0!==h,v=void 0!==h,m=null==(a=t.resolveContract)?void 0:a.call(t,e.componentVersionKey),y=null==(s=null==(r=null==m?void 0:m.layoutDecl)?void 0:r.sizing)?void 0:s.defaultChildSize,I=e.rect??{w:240,h:60},w=h??{x:0,y:0,width:I.w,height:I.h,widthMode:"px",heightMode:"px"},x=e=>{if(void 0!==e)return"hug"===e?"auto":e},b=g?w.widthMode:x(null==(c=null==y?void 0:y.width)?void 0:c.mode)??"fill",S=v?w.heightMode:x(null==(d=null==y?void 0:y.height)?void 0:d.mode)??"fill",k=g||void 0===(null==(l=null==y?void 0:y.width)?void 0:l.value)?w.width:y.width.value,M=v||void 0===(null==(u=null==y?void 0:y.height)?void 0:u.value)?w.height:y.height.value;return{...e,layoutBox:{...w,x:0,y:0,width:k,height:M,widthMode:b,heightMode:S}}}return{dispatchWithDefaults:function(e){if("addInstance"===e.type){const i=function(e){var n,o,i,a;if(void 0!==e.containerLayout)return e;const r=null==(n=t.resolveContract)?void 0:n.call(t,e.componentVersionKey);if(!r)return e;if(!("container"===(null==(o=r.layoutDecl)?void 0:o.role)||((null==(i=r.slotsDecl)?void 0:i.length)??0)>0))return e;const s=null==(a=r.layoutDecl)?void 0:a.defaultLayout;return void 0===s?e:{...e,containerLayout:JSON.parse(JSON.stringify(s))}}(e.payload.instance);return void n.dispatch({type:"addInstance",payload:{instance:o(i)}})}n.dispatch(e)}}}({ctx:e,options:t}),h=Co({ctx:e}),g=n(()=>{const n=e.selection.selectedIds.value;if(0===n.length)return[];const t=new Set(n);return e.document.document.instances.filter(e=>t.has(e.instanceId))}),v=e.selection.selectedIds,m=a(v),y=a(e.isBatching),I=function(){let e=!1;const n=new Set,t=new Set,o=[];return{isDisposed:()=>e,addPendingReady(e){n.add(e)},removePendingReady(e){n.delete(e)},registerListenerOff(e){let n=!1;const o=()=>{n||(n=!0,t.delete(o),e())};return t.add(o),o},addDisposeCleanup(e){o.push(e)},markDisposed(){if(e)return;e=!0;const i=[...n];n.clear();for(const e of i)try{e.reject(new $t)}catch(e){console.error("[hc-canvas/handle] pending ready rejection threw on dispose",e)}const a=[...t];t.clear();for(const e of a)try{e()}catch(e){console.error("[hc-canvas/handle] instance listener off threw on dispose",e)}for(const e of o)e()}}}(),{attachBindingDelegate:w,setBindingMode:x,getBindingMode:b,testBinding:S,invalidateDataSource:k,getDataSourceSnapshot:M,on:z,getInstanceReady:T,getInstanceRuntime:L,getCachedBySourceId:C,startTracing:B,stopTracing:P,getTraceBuffer:D}=function(e){const{lifecycle:n,currentCanvasId:t}=e;let o=null,i=null;return n.addDisposeCleanup(()=>{o=null,i=null}),{attachBindingDelegate:function(e,t){n.isDisposed()||(o=e,null===e?i=null:arguments.length>=2&&(i=t??null))},setBindingMode:function(e){null==o||o.setMode(e)},getBindingMode:function(){return(null==o?void 0:o.getMode())??"off"},testBinding:function(e,n){return(null==o?void 0:o.testBinding(e,n))??[]},invalidateDataSource:function(e){null==i||i.invalidate(e)},getDataSourceSnapshot:function(){return(null==i?void 0:i.getSnapshot())??{entries:[]}},on:function(e,i){if(n.isDisposed())return()=>{};if("instance:ready"===e||"instance:unmounted"===e){const o=i,a=_(e,e=>{e.canvasId===t&&o(e.instanceId)});return n.registerListenerOff(a)}return o?o.on(e,i):()=>{}},getInstanceReady:function(e){return n.isDisposed()?Promise.reject(new $t):"string"!=typeof e||0===e.length?Promise.reject(new TypeError("getInstanceReady: instanceId must be a non-empty string")):O(e,t)?Promise.resolve():new Promise((o,i)=>{let a,r,s=!1;const c=()=>{s=!0;try{null==a||a()}catch{}r&&n.removePendingReady(r)};a=_("instance:ready",n=>{s||n.canvasId===t&&n.instanceId===e&&(c(),o())}),r={off:a,reject:e=>{s||(c(),i(e))}},n.addPendingReady(r),!s&&O(e,t)&&(c(),o())})},getInstanceRuntime:function(e){return n.isDisposed()?null:O(e,t)},getCachedBySourceId:function(e,n){return null==i?void 0:i.getCachedBySourceId(e,n)},startTracing:function(e){null==o||o.startTracing(e)},stopTracing:function(){return(null==o?void 0:o.stopTracing())??[]},getTraceBuffer:function(){return(null==o?void 0:o.getTraceBuffer())??[]}}}({lifecycle:I,currentCanvasId:e.canvasId});return I.addDisposeCleanup(()=>o.dispose()),{dispatch:e=>f.dispatchWithDefaults(e),beginBatch:()=>e.beginBatch(),endBatch:n=>e.endBatch(n),isBatching:y,getSnapshot:()=>Z(e.document.document),getRemoveImpact:n=>nn(e.document.document.instances,n),selectedIds:m,selectedInstances:g,freeSplitSelection:a(e.selection.freeSplitSelection),selectFreeSplitLeaf:(n,t)=>e.selection.selectFreeSplitLeaf(n,t),selectFreeSplitDivider:(n,t,o)=>e.selection.selectFreeSplitDivider(n,t,o),clearFreeSplitSelection:()=>e.selection.clearFreeSplitSelection(),viewport:e.viewport,clientToCanvasPoint:r.clientToCanvasPoint,getInstanceAtClientPoint:r.getInstanceAtClientPoint,getDropTarget:r.getDropTarget,getFreeSplitDropTarget:r.getFreeSplitDropTarget,duplicateInstance:p.duplicateInstance,undo:o.undo,redo:o.redo,canUndo:o.canUndo,canRedo:o.canRedo,undoStackSize:o.undoStackSize,redoStackSize:o.redoStackSize,clearHistory:o.clear,getLayoutConfig:l.getLayoutConfig,updateCanvasSize:l.updateCanvasSize,updateCanvasBackground:l.updateCanvasBackground,updateBehavior:l.updateBehavior,setInteractionOptions:l.setInteractionOptions,getEffectiveBehavior:l.getEffectiveBehavior,setRootLayout:l.setRootLayout,getInstanceTree:s.getInstanceTree,getInstanceList:s.getInstanceList,getInstance:s.getInstanceById,getSelectedPath:s.getSelectedPath,getBreadcrumb:s.getBreadcrumb,focusInstance:s.focusInstance,scrollToInstance:s.scrollToInstance,moveInstanceInTree:s.moveInstanceInTree,canReparent:s.canReparent,cannotReparentEvent:s.cannotReparentEvent,cannotDragLayoutManagedChildEvent:e.cannotDragLayoutManagedChildEvent,resolveAsset:l.resolveAsset,getViewportState:c.getViewportState,getVisibleBounds:c.getVisibleBounds,getCanvasBounds:c.getCanvasBounds,getContentBounds:c.getContentBounds,getSelectionBounds:c.getSelectionBounds,getInstanceBounds:c.getInstanceBounds,panBy:c.panBy,panTo:c.panTo,zoomTo:c.zoomTo,zoomBy:c.zoomBy,zoomToPoint:c.zoomToPoint,resetViewport:c.resetViewport,fitToContent:c.fitToContent,fitToSelection:c.fitToSelection,scrollToRect:c.scrollToRect,toolMode:e.toolMode,getToolMode:p.getToolMode,setToolMode:p.setToolMode,setTemporaryToolMode:p.setTemporaryToolMode,getDefaultShortcuts:p.handleGetDefaultShortcuts,executeShortcut:p.executeShortcut,executeCommand:p.executeCommand,canExecuteCommand:p.canExecuteCommand,getStaleComponentOverrides:p.getStaleComponentOverrides,setComponentOverride:p.setComponentOverride,discardComponentOverride:p.discardComponentOverride,getLayoutIssues:p.getLayoutIssues,setRulerVisible:u.setRulerVisible,setGridVisible:u.setGridVisible,updateRulerConfig:u.updateRulerConfig,updateGridConfig:u.updateGridConfig,addGuide:u.addGuide,removeGuide:u.removeGuide,updateGuide:u.updateGuide,getGuides:u.getGuides,clearGuides:u.clearGuides,getMouseCanvasPoint:u.getMouseCanvasPoint,getInstanceSize:d.getInstanceSize,updateInstanceSize:d.updateInstanceSize,getContainerLayout:d.getContainerLayout,updateContainerLayout:d.updateContainerLayout,getInstanceOutletRect:d.getInstanceOutletRect,getLayoutBox:d.getLayoutBox,updateLayoutBox:d.updateLayoutBox,getLayoutItem:d.getLayoutItem,updateLayoutItem:d.updateLayoutItem,getRotation:d.getRotation,updateRotation:d.updateRotation,setBindingMode:x,getBindingMode:b,testBinding:S,on:z,attachBindingDelegate:w,invalidateDataSource:k,getDataSourceSnapshot:M,getCachedBySourceId:C,getInstanceReady:T,getInstanceRuntime:L,startTracing:B,stopTracing:P,getTraceBuffer:D,freeSplit:h,dispose:function(){I.markDisposed()}}}const Po=Symbol("hc:canvas:reparent-bridge");function Do(e){return"string"==typeof e&&e.includes("@draft:")}function Ro(e){if("string"!=typeof e||!e.includes("@"))return null;const n=e.indexOf("@"),t=e.slice(0,n),o=e.slice(n+1);if(!t)return null;if(o.startsWith("draft:")){const e=o.slice(6),n=e.indexOf(":");if(n<=0)return null;const i=e.slice(0,n),a=e.slice(n+1);return i&&a?{kind:"draft",componentId:t,pageId:i,baseVersion:a,baseVersionKey:`${t}@${a}`}:null}return o?{kind:"published",componentId:t,version:o}:null}function Eo(e){return"preview"===e||"runtime"===e?"runtime":"off"}const $o=(e,n)=>{const t=e.__vccOpts||e;for(const[e,o]of n)t[e]=o;return t},Ao=$o(s({__name:"CanvasStage",setup(e){const t=Tn(),o=i(null);let a=null;const r=n(()=>{const{scale:e,panX:n,panY:o}=t.viewport.state;return`translate(${n}px, ${o}px) scale(${e})`});function s(){const e=o.value;if(!e)return;const n=e.getBoundingClientRect();t.setMeasuredStageSize({w:n.width,h:n.height})}return m(()=>{y(s),"undefined"!=typeof ResizeObserver&&o.value&&(a=new ResizeObserver(s),a.observe(o.value)),window.addEventListener("resize",s)}),I(()=>{null==a||a.disconnect(),a=null,window.removeEventListener("resize",s)}),(e,n)=>(d(),l("div",{ref_key:"stageEl",ref:o,class:"hc-canvas-stage","data-hc-stage":""},[S("div",{class:"hc-canvas-stage__world","data-hc-stage-world":"",style:u({transform:r.value,transformOrigin:"0 0"})},[T(e.$slots,"default",{},void 0,!0)],4)],512))}}),[["__scopeId","data-v-69f0f8c9"]]),Oo=["data-mode"],Fo=s({__name:"RuntimeLayer",props:{componentSourceMap:{},mode:{default:"design"},schedulerOptions:{},canvasId:{}},setup(e){const t=Tn(),o=n(()=>t.document.document);return(n,i)=>(d(),l("div",{class:"hc-runtime-layer","data-hc-runtime-layer":"","data-mode":e.mode,style:u({position:"absolute",top:0,left:0,pointerEvents:x(t).effectiveBehavior.value.selectable?"none":"auto"})},[L(bt,{document:o.value,"component-source-map":e.componentSourceMap,"scheduler-options":e.schedulerOptions,"canvas-id":e.canvasId},null,8,["document","component-source-map","scheduler-options","canvas-id"])],12,Oo))}}),jo=8,qo=.05;function No(e,n,t,o=0){if(!n||n.length<2)return[];if(e.w<=0||e.h<=0)return[];const i=n.map(e=>"number"==typeof e&&Number.isFinite(e)&&e>0?e:0),a=i.reduce((e,n)=>e+n,0);if(a<=0)return[];const r=i.length-1,s=Math.max(0,o)*r,c="horizontal"===t?e.w:e.h,d=Math.max(0,c-s);if(d<=0)return[];const l=o>0?o:8,u=[];let p=0;for(let n=0;n<r;n++){p+=i[n]/a*d;const r=p+n*o+o/2;let s;s="horizontal"===t?{x:e.x+r-l/2,y:e.y,w:l,h:e.h}:{x:e.x,y:e.y+r-l/2,w:e.w,h:l},u.push({index:n,rect:s,direction:t})}return u}function Vo(e,n,t,o,i=0){if(!e||n<0||n>=e.length-1)return e.slice();const a=e.map(e=>"number"==typeof e&&Number.isFinite(e)&&e>0?e:0),r=a[n],s=a[n+1],c=r+s;if(c<=0)return a;const d=a.length-1,l=Math.max(0,i)*d,u=Math.max(0,o-l);if(u<=0)return a;const p=a.reduce((e,n)=>e+n,0);if(p<=0)return a;const f=t/u*p,h=qo*p;let g=r+f,v=s-f;g<h&&(g=h,v=c-h),v<h&&(v=h,g=c-h);const m=a.slice();return m[n]=g,m[n+1]=v,m}function Ko(t){const o=e({status:"idle",parentId:null,dividerIndex:null,startRatios:null,childIds:null,parentAxisPx:0,startPt:null,direction:null,gap:0}),i=n(()=>"active"===o.status);function a(){o.status="idle",o.parentId=null,o.dividerIndex=null,o.startRatios=null,o.childIds=null,o.parentAxisPx=0,o.startPt=null,o.direction=null,o.gap=0}return{drag:o,isDragging:i,handleSplitDividerStart:function(e){if(!e.parentId)return{startTracking:!1};if(e.dividerIndex<0)return{startTracking:!1};if(!e.startRatios||e.startRatios.length<2)return{startTracking:!1};if(!e.childIds||e.childIds.length<=e.dividerIndex+1||!e.childIds[e.dividerIndex]||!e.childIds[e.dividerIndex+1])return{startTracking:!1};const n=t.document.getInstance(e.parentId);return n&&n.containerLayout&&"split"===n.containerLayout.mode?(o.status="active",o.parentId=e.parentId,o.dividerIndex=e.dividerIndex,o.startRatios=e.startRatios.slice(),o.childIds=e.childIds.slice(),o.parentAxisPx=e.parentAxisPx,o.startPt={...e.canvasPt},o.direction=e.direction,o.gap=e.gap,t.beginBatch(),{startTracking:!0}):{startTracking:!1}},handleSplitDividerMove:function(e){var n,i;if("active"!==o.status)return;if(!(o.startPt&&o.startRatios&&o.childIds&&o.direction&&null!==o.dividerIndex))return;const a=t.document.getInstance(o.parentId);if(!a||!a.containerLayout||"split"!==a.containerLayout.mode)return;const r="horizontal"===o.direction?e.x-o.startPt.x:e.y-o.startPt.y,s=Vo(o.startRatios,o.dividerIndex,r,o.parentAxisPx,o.gap),c=o.dividerIndex,d=o.childIds[c],l=o.childIds[c+1];if(!d||!l)return;const u=s[c],p=s[c+1],f=t.document.getInstance(d),h=t.document.getInstance(l),g=null==(n=null==f?void 0:f.layoutItem)?void 0:n.ratio,v=null==(i=null==h?void 0:h.layoutItem)?void 0:i.ratio;g===u&&v===p||(t.dispatch({type:"updateLayoutItem",payload:{instanceId:d,patch:{ratio:u}}}),t.dispatch({type:"updateLayoutItem",payload:{instanceId:l,patch:{ratio:p}}}))},handleSplitDividerEnd:function(){"active"===o.status&&(t.endBatch("split-divider-drag"),a())},cancelSplitDividerDrag:function(){"active"===o.status&&t.endBatch("split-divider-cancel"),a()}}}function _o(e,n){const t=Math.min(e.x,n.x),o=Math.min(e.y,n.y);return{x:t,y:o,w:Math.max(e.x+e.w,n.x+n.w)-t,h:Math.max(e.y+e.h,n.y+n.h)-o}}function Xo(e,n){if("leaf"===e.type)return n(e.leafId);let t=null;for(const o of e.children){const e=Xo(o,n);e&&(t=t?_o(t,e):e)}return t}function Yo(e,n){return Xo(e,n)}function Go(e,n,t={}){const o=t.thickness??8,i=[],a=e=>{if("leaf"===e.type)return;const t=e.children.map(e=>Xo(e,n));for(let n=0;n<e.children.length-1;n++){const a=t[n],r=t[n+1];if(a&&r)if("row"===e.dir){const t=(a.x+a.w+r.x)/2,s=Math.min(a.y,r.y),c=Math.max(a.y+a.h,r.y+r.h);i.push({nodeId:e.nodeId,dividerIndex:n,direction:"horizontal",rect:{x:t-o/2,y:s,w:o,h:c-s}})}else{const t=(a.y+a.h+r.y)/2,s=Math.min(a.x,r.x),c=Math.max(a.x+a.w,r.x+r.w);i.push({nodeId:e.nodeId,dividerIndex:n,direction:"vertical",rect:{x:s,y:t-o/2,w:c-s,h:o}})}}e.children.forEach(a)};return a(e),i}function Uo(e,n,t,o,i={}){const{snap:a=!1,snapFractions:r=[.5],snapThreshold:s=.04,minRatioFraction:c=qo,minPx:d=0}=i,l=e.map(e=>({...e}));if(n<0||n>=e.length-1)return l;const u=e[n],p=e[n+1];if("px"===u.mode&&"px"===p.mode){const e=u.value+p.value,o=Math.max(d,u.min??0),i=Math.max(d,p.min??0),a=Math.min(u.max??1/0,e-i);let r=u.value+t;return r=Math.max(o,Math.min(a,r)),l[n]={...u,value:r},l[n+1]={...p,value:e-r},l}if("ratio"===u.mode&&"ratio"===p.mode){const i=u.value+p.value;if(i<=0||o<=0)return l;const d=e.reduce((e,n)=>e+("ratio"===n.mode?n.value:0),0);if(d<=0)return l;const f=t/o*d;let h=u.value+f,g=p.value-f;const v=c*i;if(h<v&&(h=v,g=i-v),g<v&&(g=v,h=i-v),a){const e=h/i;for(const n of r)if(Math.abs(e-n)<=s){h=n*i,g=(1-n)*i;break}}return l[n]={...u,value:h},l[n+1]={...p,value:g},l}if("px"===u.mode){let e=u.value+t;e=Math.max(Math.max(d,u.min??0),Math.min(u.max??1/0,e)),l[n]={...u,value:e}}else{let e=p.value-t;e=Math.max(Math.max(d,p.min??0),Math.min(p.max??1/0,e)),l[n+1]={...p,value:e}}return l}function Ho(e,n,t={}){const o=t.edgeZonePx??12,{x:i,y:a,w:r,h:s}=e;if(n.x<i||n.x>i+r||n.y<a||n.y>a+s)return null;const c=n.x-i,d=i+r-n.x,l=n.y-a,u=a+s-n.y,p=Math.min(c,d,l,u);return p>o?null:p===c?{edge:"left"}:p===d?{edge:"right"}:p===l?{edge:"top"}:{edge:"bottom"}}function Wo(e,n,t){const{x:o,y:i,w:a,h:r}=e;let s;return s="left"===n?(t.x-o)/a:"right"===n?(o+a-t.x)/a:"top"===n?(t.y-i)/r:(i+r-t.y)/r,Math.max(.05,Math.min(.95,s))}function Jo(e,n,t){const o=on(e,n);if(!o)return null;const i=o.children[t],a=o.children[t+1];return i&&a?"leaf"===i.type&&null===i.instanceId?i.leafId:"leaf"===a.type&&null===a.instanceId?a.leafId:null:null}function Qo(e,n){const t=e.document.getInstance(n),o=null==t?void 0:t.containerLayout;return o&&"free-split"===o.mode?o:null}function Zo(t){const o=Co({ctx:t}),i=e({status:"idle",containerId:null,nodeId:null,dividerIndex:null,startSizes:null,branchAxisPx:0,startPt:null,direction:null,snap:!1}),a=n(()=>"active"===i.status);function r(){i.status="idle",i.containerId=null,i.nodeId=null,i.dividerIndex=null,i.startSizes=null,i.branchAxisPx=0,i.startPt=null,i.direction=null,i.snap=!1}return{resizeDrag:i,isResizing:a,handleResizeStart:function(e){if(!e.containerId||e.dividerIndex<0)return{startTracking:!1};if(!e.startSizes||e.startSizes.length<2)return{startTracking:!1};if(e.dividerIndex>=e.startSizes.length-1)return{startTracking:!1};const n=Qo(t,e.containerId);if(!n)return{startTracking:!1};const o=on(n.root,e.nodeId);return o&&o.sizes.length===e.startSizes.length?(i.status="active",i.containerId=e.containerId,i.nodeId=e.nodeId,i.dividerIndex=e.dividerIndex,i.startSizes=e.startSizes.map(e=>({...e})),i.branchAxisPx=e.branchAxisPx,i.startPt={...e.canvasPt},i.direction=e.direction,i.snap=e.snap??!1,t.beginBatch(),{startTracking:!0}):{startTracking:!1}},handleResizeMove:function(e){if("active"!==i.status)return;if(!(i.startPt&&i.startSizes&&i.direction&&null!==i.dividerIndex&&i.containerId&&i.nodeId))return;const n=Qo(t,i.containerId);if(!n)return;const a="horizontal"===i.direction?e.x-i.startPt.x:e.y-i.startPt.y,r=Uo(i.startSizes,i.dividerIndex,a,i.branchAxisPx,{snap:i.snap}),s=on(n.root,i.nodeId);s&&function(e,n){if(e.length!==n.length)return!1;for(let t=0;t<e.length;t++)if(e[t].mode!==n[t].mode||e[t].value!==n[t].value)return!1;return!0}(s.sizes,r)||o.resize(i.containerId,i.nodeId,r)},handleResizeEnd:function(){"active"===i.status&&(t.endBatch("free-split-resize"),r())},cancelResize:function(){"active"===i.status&&t.endBatch("free-split-resize-cancel"),r()},requestSplit:function(e,n,i,a){if(!Qo(t,e))return null;const r=o.split(e,n,i,a),s=Qo(t,e);return s&&tn(s.root,r.leafId)?r:null},requestMerge:function(e,n){Qo(t,e)&&o.merge(e,n)},requestDelete:function(e,n){const i=Qo(t,e);if(!i)return;const a=tn(i.root,n);if(a){t.beginBatch();try{null!==a.instanceId&&o.clear(e,n),o.merge(e,n)}finally{t.endBatch("free-split-delete-region")}}},requestSwap:function(e,n,i){n!==i&&Qo(t,e)&&o.swap(e,n,i)}}}function ei(e){return!0===(e.lockPosition??e.locked)}function ni(e){return!0===(e.lockSize??e.locked)}function ti(e){return ei(e)||ni(e)}const oi=["data-mode"],ii=["data-selection-box","data-locked","data-placement"],ai=["data-lock-badge"],ri=["data-resize-handle","data-resize-instance","onPointerdown"],si=["data-hc-divider-direction","data-hc-divider-index","data-hc-parent-id","data-hc-divider-dragging","onPointerdown"],ci=["data-hc-fs-leaf","data-hc-fs-leaf-container","onPointerdown"],di={key:0,class:"hc-fs-leaf-empty"},li=["onPointerdown"],ui=["onClick"],pi=["onClick"],fi=["onClick"],hi=["data-hc-fs-divider-direction","data-hc-fs-divider-node","data-hc-fs-divider-index","data-hc-fs-container-id","data-hc-fs-divider-dragging","onPointerdown","onDblclick"],gi=["onClick"],vi=["data-axis","data-kind"],mi=["data-hc-reparent-state"],yi=["data-hc-reparent-ghost-reason"],Ii={key:0,"data-hc-reparent-ghost-reason-chip":"",style:{flex:"none",fontFamily:"ui-monospace, SFMono-Regular, Menlo, Consolas, monospace",fontSize:"10px",lineHeight:"14px",padding:"0 4px",borderRadius:"2px",background:"rgba(0, 0, 0, 0.25)",color:"#fff",whiteSpace:"nowrap"}},wi=$o(s({__name:"InteractionLayer",props:{mode:{default:"design"}},emits:["cannot-drag-slot-child","cannot-drag-layout-managed-child"],setup(t,{emit:a}){const r=a,s=Tn(),c=ro(s,{getRoot:()=>me(),getDomBox:e=>{const n=Jt(e,me(),s.viewport);return n?0===n.w&&0===n.h?null:n:null}}),h=Ko(s),y=Zo(s),b=o(Po,null);v(()=>c.cannotDragSlotChildEvent.value,e=>{e&&r("cannot-drag-slot-child",{instanceId:e.instanceId,parentId:e.parentId})},{flush:"sync"}),v(()=>c.cannotDragLayoutManagedChildEvent.value,e=>{e&&r("cannot-drag-layout-managed-child",{instanceId:e.instanceId,parentId:e.parentId,parentLayoutMode:e.parentLayoutMode})},{flush:"sync"});const M=i(null);let z=null;const L=n(()=>{const e=new Set(s.selection.selectedIds.value);return s.document.document.instances.filter(n=>e.has(n.instanceId)&&!n.hidden)}),P=n(()=>s.measuredCanvasSize.value),D=w({}),R=i(0);function E(){const e=me(),n={};for(const t of L.value)n[t.instanceId]=Jt(t.instanceId,e,s.viewport);D.value=n,R.value++}let $=null;function A(){"undefined"!=typeof requestAnimationFrame?null===$&&($=requestAnimationFrame(()=>{$=null,E()})):E()}let O=null;function F(){O=null,E(),(c.isResizing.value||c.isDragging.value||h.isDragging.value||y.isResizing.value)&&(O=requestAnimationFrame(F))}function j(e){const n=D.value[e.instanceId];if(n)return n;const t=Jt(e.instanceId,me(),s.viewport);if(t&&(t.w>0||t.h>0))return t;const o=e.layoutBox;return o?{x:o.x,y:o.y,w:o.width,h:o.height}:{x:e.rect.x,y:e.rect.y,w:e.rect.w,h:e.rect.h}}v(()=>s.selection.selectedIds.value,()=>{A()},{flush:"post",deep:!0}),v(()=>s.viewport.scale.value,()=>A()),v(()=>[s.viewport.panX.value,s.viewport.panY.value],()=>A()),v(()=>L.value.map(e=>{const n=e.layoutBox;return n?`${n.x}|${n.y}|${n.width}|${n.height}|${n.widthMode}|${n.heightMode}`:""}),()=>A(),{flush:"post",deep:!0}),v(()=>L.value.map(e=>{const n=e.containerLayout;return n&&"free-split"===n.mode?JSON.stringify(n):""}),()=>A(),{flush:"post",deep:!0}),v(()=>c.isResizing.value,e=>{e&&null===O&&(O=requestAnimationFrame(F))}),v(()=>c.isDragging.value,e=>{e&&null===O&&(O=requestAnimationFrame(F))}),v(()=>h.isDragging.value,e=>{e&&null===O&&(O=requestAnimationFrame(F))}),v(()=>y.isResizing.value,e=>{e&&null===O&&(O=requestAnimationFrame(F))}),m(()=>{A()});const q=n(()=>L.value.map(e=>({instance:e,box:j(e)}))),N=n(()=>{var e,n;if(!s.effectiveBehavior.value.resizable)return[];const t=[];for(const o of q.value){const i=o.instance;if(!0===(i.lockSize??i.locked))continue;if(!o.box)continue;const a=Yt(s,i.instanceId),{x:r,y:c,w:d,h:l}=o.box,u=[{handle:"nw",cx:r,cy:c,cursor:"nwse-resize"},{handle:"n",cx:r+d/2,cy:c,cursor:"ns-resize"},{handle:"ne",cx:r+d,cy:c,cursor:"nesw-resize"},{handle:"e",cx:r+d,cy:c+l/2,cursor:"ew-resize"},{handle:"se",cx:r+d,cy:c+l,cursor:"nwse-resize"},{handle:"s",cx:r+d/2,cy:c+l,cursor:"ns-resize"},{handle:"sw",cx:r,cy:c+l,cursor:"nesw-resize"},{handle:"w",cx:r,cy:c+l/2,cursor:"ew-resize"}],p=null==(e=i.layoutBox)?void 0:e.widthMode,f=null==(n=i.layoutBox)?void 0:n.heightMode,h=u.filter(e=>Wt(a,e.handle,p,f));for(const e of h)t.push({instanceId:i.instanceId,handle:e.handle,left:e.cx-4,top:e.cy-4,cursor:e.cursor})}return t});function V(e,n,t){return"percent"===n?`${Math.round(t)}%`:"fill"===n?"fill":"auto"===n?"auto":String(Math.round(e))}const K=n(()=>{if(!c.isResizing.value)return null;const e=c.resize.instanceId;if(!e)return null;const n=s.document.getInstance(e);if(!n)return null;const t=j(n);if(!t)return null;const o=n.layoutBox,i=V(t.w,null==o?void 0:o.widthMode,(null==o?void 0:o.width)??t.w),a=V(t.h,null==o?void 0:o.heightMode,(null==o?void 0:o.height)??t.h);return{x:t.x,y:t.y,w:t.w,h:t.h,wText:i,hText:a}}),_={nw:"nwse-resize",se:"nwse-resize",ne:"nesw-resize",sw:"nesw-resize",n:"ns-resize",s:"ns-resize",w:"ew-resize",e:"ew-resize"};function X(e){var n;const t=[],o=[];for(const i of s.document.document.instances)i.parentId===e&&void 0===i.slot&&(t.push(i.instanceId),o.push(null==(n=i.layoutItem)?void 0:n.ratio));return{ids:t,ratios:o}}const Y=n(()=>{var e,n;const t=new Set;for(const o of L.value)if("split"===(null==(e=o.containerLayout)?void 0:e.mode)&&t.add(o.instanceId),o.parentId){const e=s.document.getInstance(o.parentId);"split"===(null==(n=null==e?void 0:e.containerLayout)?void 0:n.mode)&&t.add(e.instanceId)}if(0===t.size)return[];const o=[];for(const e of t){const n=s.document.getInstance(e);if(!n)continue;const t=n.containerLayout;if(!t||"split"!==t.mode)continue;const i=pe(e)??j(n);if(!i)continue;const a=t,r=a.direction,c=a.gap??0,{ids:d,ratios:l}=X(e),u=be(a.ratios??[],l),p=No(i,u,r,c);0!==p.length&&o.push({parentId:e,direction:r,gap:c,effectiveRatios:u,childIds:d,parentBox:i,dividers:p})}return o});function G(e){var n;return"undefined"!=typeof globalThis&&(null==(n=globalThis.CSS)?void 0:n.escape)?globalThis.CSS.escape(e):e.replace(/["\\]/g,e=>`\\${e}`)}function U(e){const n=s.document.getInstance(e),t=null==n?void 0:n.containerLayout;return t&&"free-split"===t.mode?t:null}function H(e,n){const t=me();if(!t)return null;const o=Vt(t,`[data-hc-leaf-container="${G(e)}"][data-hc-leaf="${G(n)}"]`);if(!(o&&o instanceof HTMLElement))return null;const i=ue(o);return i&&0===i.w&&0===i.h?null:i}const W=n(()=>{const e=new Set;if(s.freeSplitControlsAlways.value){for(const n of s.document.document.instances)U(n.instanceId)&&e.add(n.instanceId);return e}for(const n of L.value){U(n.instanceId)&&e.add(n.instanceId);let t=n.parentId,o=0;for(;t&&o++<100;){if(U(t)){e.add(t);break}const n=s.document.getInstance(t);if(!n)break;t=n.parentId}}return Z.active&&Z.containerId&&e.add(Z.containerId),e}),J=n(()=>{if(!s.freeSplitEnabled.value)return[];R.value;const e=[];for(const n of W.value){const t=U(n);if(!t)continue;const o=Go(t.root,e=>H(n,e));if(0===o.length)continue;const i=o.map(e=>({...e,mergeTargetLeafId:Jo(t.root,e.nodeId,e.dividerIndex)}));e.push({containerId:n,dividers:i})}return e}),Q=n(()=>{if(!s.freeSplitEnabled.value)return[];R.value;const e=[];for(const n of W.value){const t=U(n);if(!t)continue;const o=!0===t.structureLocked,i=rn(t.root);for(const t of i){const a=H(n,t.leafId);if(!a)continue;const r=!o&&!0!==t.locked;e.push({containerId:n,leafId:t.leafId,rect:a,isEmpty:null===t.instanceId,canSplit:r,canDelete:r&&i.length>1,canMove:null!==t.instanceId&&i.length>1})}}return e}),Z=e({active:!1,containerId:null,sourceLeafId:null,targetLeafId:null});function ee(e){const n=Z.containerId,t=me();if(!n||!t)return null;const o=oo({x:e.clientX,y:e.clientY},t,s.viewport);for(const e of Q.value){if(e.containerId!==n||e.leafId===Z.sourceLeafId)continue;const t=e.rect;if(o.x>=t.x&&o.x<=t.x+t.w&&o.y>=t.y&&o.y<=t.y+t.h)return e.leafId}return null}function ne(e){Z.active&&(Z.targetLeafId=ee(e))}function te(){window.removeEventListener("pointermove",ne),window.removeEventListener("pointerup",ie),window.removeEventListener("keydown",Le)}function oe(){Z.active=!1,Z.containerId=null,Z.sourceLeafId=null,Z.targetLeafId=null}function ie(e){te();const n=Z.containerId,t=Z.sourceLeafId,o=Z.active?ee(e):null;oe(),n&&t&&o&&o!==t&&y.requestSwap(n,t,o)}function ae(e,n,t){y.requestSplit(e,n,t,.5)}const re=e({active:!1,containerId:null,leafId:null,edge:null,leafRect:null,startPt:null});function se(){re.active=!1,re.containerId=null,re.leafId=null,re.edge=null,re.leafRect=null,re.startPt=null}const ce=n(()=>c.isResizing.value&&c.resize.handle?_[c.resize.handle]:h.isDragging.value?"horizontal"===h.drag.direction?"ew-resize":"ns-resize":y.isResizing.value?"horizontal"===y.resizeDrag.direction?"ew-resize":"ns-resize":c.isDragging.value?"grabbing":"hand"===s.toolMode.value?we?"grabbing":"grab":"marquee"===s.toolMode.value?"crosshair":"default"),de=w(null);function le(){if(!b)return!1;if(!c.isDragging.value)return!1;if(1!==c.drag.startRects.size)return!1;const e=Array.from(c.drag.startRects.keys())[0],n=s.document.getInstance(e);return!!n&&((void 0===n.placement||"canvas"===n.placement||"absolute"===n.placement)&&!0!==(n.lockPosition??n.locked)&&!n.hidden)}function ue(e){const n=me();if(!n)return null;const t=e.getBoundingClientRect(),o=n.getBoundingClientRect(),i=s.viewport.toCanvasPoint({x:t.left-o.left,y:t.top-o.top}),a=s.viewport.toCanvasPoint({x:t.right-o.left,y:t.bottom-o.top});return{x:i.x,y:i.y,w:Math.max(0,a.x-i.x),h:Math.max(0,a.y-i.y)}}function pe(e){var n;const t=me();if(!t)return null;const o=Vt(t,`[data-instance-id="${("undefined"!=typeof globalThis&&(null==(n=globalThis.CSS)?void 0:n.escape)?globalThis.CSS.escape:e=>e.replace(/["\\]/g,e=>`\\${e}`))(e)}"] [data-hc-slot="default"]`);return o&&o instanceof HTMLElement?ue(o):null}let fe=null,he=null;function ge(e){if(!le()||!b)return void(null!==de.value&&(de.value=null));const n=Array.from(c.drag.startRects.keys())[0],t=b.getDropTarget(e,{excludeInstanceId:n});if(!t)return void(null!==de.value&&(de.value=null));const o=s.document.getInstance(n);if(o&&o.parentId===t.parentId&&(o.slot??"default")===(t.slot||"default"))return void(null!==de.value&&(de.value=null));const i=ue(t.outletEl);if(!i)return void(null!==de.value&&(de.value=null));const a={parentId:t.parentId,slot:t.slot},r=b.canReparent(n,a);de.value={rect:i,target:t,result:r}}const ve=n(()=>de.value);function me(){return z||(M.value?(z=M.value.closest("[data-hc-stage]"),z):null)}function ye(e){const n=me();if(!n)return;const t=oo({x:e.clientX,y:e.clientY},n,s.viewport);s.setMouseCanvasPoint(t)}function Ie(){s.setMouseCanvasPoint(null)}let we=null;function xe(e){if(0!==e.button)return;const n=me();if(!n)return;if("hand"===s.toolMode.value)return we={clientX:e.clientX,clientY:e.clientY,panX:s.viewport.panX.value,panY:s.viewport.panY.value},window.addEventListener("pointermove",Se),window.addEventListener("pointerup",ke),void e.preventDefault();const t=oo({x:e.clientX,y:e.clientY},n,s.viewport),{startTracking:o}=c.handlePointerDown(t,{shift:e.shiftKey,ctrl:e.ctrlKey,meta:e.metaKey});o&&(Me(),e.preventDefault())}function Se(e){if(!we)return;const n=e.clientX-we.clientX,t=e.clientY-we.clientY;s.viewport.setPan(we.panX+n,we.panY+t)}function ke(){we=null,window.removeEventListener("pointermove",Se),window.removeEventListener("pointerup",ke)}function Me(){window.addEventListener("pointermove",ze),window.addEventListener("pointerup",Te),window.addEventListener("keydown",Le)}function ze(e){const n=me();if(!n)return;const t=oo({x:e.clientX,y:e.clientY},n,s.viewport);var o;c.handlePointerMove(t),h.handleSplitDividerMove(t),h.isDragging.value&&A(),y.handleResizeMove(t),y.isResizing.value&&A(),o={x:e.clientX,y:e.clientY},fe=o,"undefined"!=typeof requestAnimationFrame?null===he&&(he=requestAnimationFrame(()=>{he=null,fe&&ge(fe)})):ge(o)}function Te(e){if(h.isDragging.value)return h.handleSplitDividerEnd(),void Ce();if(y.isResizing.value)return y.handleResizeEnd(),void Ce();if(re.active){const{containerId:n,leafId:t,edge:o,leafRect:i,startPt:a}=re;if(se(),Ce(),!(n&&t&&o&&i&&a))return;const r=me(),c=e&&r?oo({x:e.clientX,y:e.clientY},r,s.viewport):a;if(("left"===o?c.x-a.x:"right"===o?a.x-c.x:"top"===o?c.y-a.y:a.y-c.y)<3)return;const d=Wo(i,o,c);return void y.requestSplit(n,t,o,d)}e&&b&&le()&&ge({x:e.clientX,y:e.clientY}),null!==he&&"undefined"!=typeof cancelAnimationFrame&&(cancelAnimationFrame(he),he=null);const n=de.value;if(n&&b){const e=Array.from(c.drag.startRects.keys())[0];return n.result.ok&&e?(c.cancelDrag(),b.moveInstanceInTree(e,{parentId:n.target.parentId,slot:n.target.slot})):c.cancelDrag(),de.value=null,void Ce()}c.handlePointerUp(),Ce()}function Le(e){"Escape"===e.key&&(c.cancelResize(),c.cancelDrag(),c.cancelMarquee(),h.cancelSplitDividerDrag(),y.cancelResize(),se(),te(),oe(),de.value=null,null!==he&&"undefined"!=typeof cancelAnimationFrame&&(cancelAnimationFrame(he),he=null),ke(),Ce())}function Ce(){window.removeEventListener("pointermove",ze),window.removeEventListener("pointerup",Te),window.removeEventListener("keydown",Le)}return I(()=>{c.cancelResize(),c.cancelDrag(),c.cancelMarquee(),h.cancelSplitDividerDrag(),y.cancelResize(),se(),te(),oe(),de.value=null,Ce(),ke(),null!==$&&"undefined"!=typeof cancelAnimationFrame&&(cancelAnimationFrame($),$=null),null!==O&&"undefined"!=typeof cancelAnimationFrame&&(cancelAnimationFrame(O),O=null),null!==he&&"undefined"!=typeof cancelAnimationFrame&&(cancelAnimationFrame(he),he=null),fe=null}),(e,n)=>(d(),l("div",{ref_key:"layerEl",ref:M,class:"hc-interaction-layer","data-hc-interaction-layer":"","data-mode":t.mode,style:u({position:"absolute",top:0,left:0,width:P.value.w+"px",height:P.value.h+"px",pointerEvents:x(s).effectiveBehavior.value.selectable?"auto":"none",cursor:ce.value,zIndex:9999}),onPointerdown:xe,onPointermove:ye,onPointerleave:Ie},[(d(!0),l(p,null,f(q.value,e=>(d(),l(p,{key:"sel-"+e.instance.instanceId},[e.box?(d(),l("div",{key:0,class:"hc-selection-box","data-selection-box":e.instance.instanceId,"data-locked":x(ti)(e.instance)?"true":"false","data-placement":e.instance.placement??"absolute",style:u({position:"absolute",left:e.box.x+"px",top:e.box.y+"px",width:e.box.w+"px",height:e.box.h+"px",border:"2px solid "+(x(ti)(e.instance)?"#9ca3af":"#3b82f6"),boxSizing:"border-box",pointerEvents:"none",boxShadow:"0 0 0 1px rgba(59, 130, 246, 0.2)"})},null,12,ii)):g("",!0)],64))),128)),(d(!0),l(p,null,f(q.value.filter(e=>x(ti)(e.instance)),e=>(d(),l(p,{key:"lock-"+e.instance.instanceId},[e.box?(d(),l("div",{key:0,class:"hc-lock-badge","data-lock-badge":e.instance.instanceId,style:u({position:"absolute",left:e.box.x+e.box.w-18+"px",top:e.box.y+2+"px",width:"16px",height:"16px",background:"#9ca3af",color:"#fff",fontSize:"11px",lineHeight:"16px",textAlign:"center",borderRadius:"3px",pointerEvents:"none",userSelect:"none"})},"🔒",12,ai)):g("",!0)],64))),128)),(d(!0),l(p,null,f(N.value,e=>(d(),l("div",{key:"rh-"+e.instanceId+"-"+e.handle,class:"hc-resize-handle","data-resize-handle":e.handle,"data-resize-instance":e.instanceId,style:u({position:"absolute",left:e.left+"px",top:e.top+"px",width:"8px",height:"8px",background:"#fff",border:"1px solid #3b82f6",boxSizing:"border-box",cursor:e.cursor,pointerEvents:"auto",zIndex:2}),onPointerdown:n=>function(e,n,t){if(0!==e.button)return;e.stopPropagation();const o=me();if(!o)return;const i=oo({x:e.clientX,y:e.clientY},o,s.viewport),{startTracking:a}=c.handleResizeStart(n,t,i);a&&(Me(),e.preventDefault())}(n,e.instanceId,e.handle)},null,44,ri))),128)),(d(!0),l(p,null,f(Y.value,n=>(d(),l(p,{key:"sd-parent-"+n.parentId},[(d(!0),l(p,null,f(n.dividers,t=>(d(),l(p,{key:"sd-"+n.parentId+"-"+t.index},[e.$slots["split-divider"]?T(e.$slots,"split-divider",{key:0,state:{parentId:n.parentId,dividerIndex:t.index,direction:t.direction,rect:t.rect,isDragging:x(h).isDragging.value&&x(h).drag.parentId===n.parentId&&x(h).drag.dividerIndex===t.index}},void 0,!0):(d(),l("div",{key:1,class:"hc-split-divider","data-hc-divider-direction":t.direction,"data-hc-divider-index":t.index,"data-hc-parent-id":n.parentId,"data-hc-divider-dragging":x(h).isDragging.value&&x(h).drag.parentId===n.parentId&&x(h).drag.dividerIndex===t.index?"true":"false",style:u({position:"absolute",left:t.rect.x+"px",top:t.rect.y+"px",width:t.rect.w+"px",height:t.rect.h+"px",background:x(h).isDragging.value&&x(h).drag.parentId===n.parentId&&x(h).drag.dividerIndex===t.index?"rgba(59, 130, 246, 0.6)":"rgba(59, 130, 246, 0.18)",cursor:"horizontal"===t.direction?"ew-resize":"ns-resize",pointerEvents:"auto",boxSizing:"border-box",zIndex:3}),onPointerdown:e=>function(e,n,t){if(0!==e.button)return;e.stopPropagation();const o=me();if(!o)return;const i=s.document.getInstance(n);if(!i)return;const a=i.containerLayout;if(!a||"split"!==a.mode)return;const r=a,c=pe(n)??j(i);if(!c)return;const d="horizontal"===r.direction?c.w:c.h,{ids:l,ratios:u}=X(n),p=be(r.ratios??[],u),f=oo({x:e.clientX,y:e.clientY},o,s.viewport),{startTracking:g}=h.handleSplitDividerStart({parentId:n,dividerIndex:t,startRatios:p,childIds:l,parentAxisPx:d,direction:r.direction,gap:r.gap??0,canvasPt:f});g&&(Me(),e.preventDefault())}(e,n.parentId,t.index)},null,44,si))],64))),128))],64))),128)),(d(!0),l(p,null,f(Q.value,e=>(d(),l("div",{key:"fsl-"+e.containerId+"-"+e.leafId,class:C(["hc-fs-leaf-edge",{"is-empty":e.isEmpty,"is-drop-target":Z.active&&Z.containerId===e.containerId&&Z.targetLeafId===e.leafId}]),"data-hc-fs-leaf":e.leafId,"data-hc-fs-leaf-container":e.containerId,style:u({position:"absolute",left:e.rect.x+"px",top:e.rect.y+"px",width:e.rect.w+"px",height:e.rect.h+"px",background:"transparent",pointerEvents:"auto",boxSizing:"border-box",zIndex:1}),onPointerdown:n=>function(e,n,t,o){if(0!==e.button)return;const i=me();if(!i)return;const a=oo({x:e.clientX,y:e.clientY},i,s.viewport),r=Ho(o,a);r&&(e.stopPropagation(),e.preventDefault(),re.active=!0,re.containerId=n,re.leafId=t,re.edge=r.edge,re.leafRect={...o},re.startPt=a,Me())}(n,e.containerId,e.leafId,e.rect)},[e.isEmpty?(d(),l("div",di,[...n[3]||(n[3]=[S("span",{class:"hc-fs-leaf-hint"},"拖组件进来",-1)])])):g("",!0),e.canSplit||e.canDelete||e.canMove?(d(),l("div",{key:1,class:"hc-fs-leaf-toolbar",onPointerdown:n[0]||(n[0]=B(()=>{},["stop"]))},[e.canMove?(d(),l("button",{key:0,type:"button",class:"hc-fs-leaf-btn hc-fs-leaf-move",title:"拖动:移动 / 交换到另一格",onPointerdown:B(n=>{return t=n,o=e.containerId,i=e.leafId,void(0===t.button&&(t.stopPropagation(),t.preventDefault(),Z.active=!0,Z.containerId=o,Z.sourceLeafId=i,Z.targetLeafId=null,window.addEventListener("pointermove",ne),window.addEventListener("pointerup",ie),window.addEventListener("keydown",Le)));var t,o,i},["stop"])},"⠿",40,li)):g("",!0),e.canSplit?(d(),l("button",{key:1,type:"button",class:"hc-fs-leaf-btn",title:"竖切(分左右)",onClick:B(n=>ae(e.containerId,e.leafId,"right"),["stop"])},"⬌",8,ui)):g("",!0),e.canSplit?(d(),l("button",{key:2,type:"button",class:"hc-fs-leaf-btn",title:"横切(分上下)",onClick:B(n=>ae(e.containerId,e.leafId,"bottom"),["stop"])},"⬍",8,pi)):g("",!0),e.canDelete?(d(),l("button",{key:3,type:"button",class:"hc-fs-leaf-btn hc-fs-leaf-btn--danger",title:"删除此区(并入相邻)",onClick:B(n=>{return t=e.containerId,o=e.leafId,void y.requestDelete(t,o);var t,o},["stop"])},"✕",8,fi)):g("",!0)],32)):g("",!0)],46,ci))),128)),(d(!0),l(p,null,f(J.value,t=>(d(),l(p,{key:"fsd-cnt-"+t.containerId},[(d(!0),l(p,null,f(t.dividers,o=>(d(),l(p,{key:"fsd-"+t.containerId+"-"+o.nodeId+"-"+o.dividerIndex},[e.$slots["free-split-divider"]?T(e.$slots,"free-split-divider",{key:0,state:{containerId:t.containerId,nodeId:o.nodeId,dividerIndex:o.dividerIndex,direction:o.direction,rect:o.rect,isDragging:x(y).isResizing.value&&x(y).resizeDrag.containerId===t.containerId&&x(y).resizeDrag.nodeId===o.nodeId&&x(y).resizeDrag.dividerIndex===o.dividerIndex}},void 0,!0):(d(),l("div",{key:1,class:"hc-fs-divider","data-hc-fs-divider-direction":o.direction,"data-hc-fs-divider-node":o.nodeId,"data-hc-fs-divider-index":o.dividerIndex,"data-hc-fs-container-id":t.containerId,"data-hc-fs-divider-dragging":x(y).isResizing.value&&x(y).resizeDrag.containerId===t.containerId&&x(y).resizeDrag.nodeId===o.nodeId&&x(y).resizeDrag.dividerIndex===o.dividerIndex?"true":"false",style:u({position:"absolute",left:o.rect.x+"px",top:o.rect.y+"px",width:o.rect.w+"px",height:o.rect.h+"px",background:x(y).isResizing.value&&x(y).resizeDrag.containerId===t.containerId&&x(y).resizeDrag.nodeId===o.nodeId&&x(y).resizeDrag.dividerIndex===o.dividerIndex?"rgba(59, 130, 246, 0.6)":"rgba(59, 130, 246, 0.18)",cursor:"horizontal"===o.direction?"ew-resize":"ns-resize",pointerEvents:"auto",boxSizing:"border-box",zIndex:3}),onPointerdown:e=>function(e,n,t,o){if(0!==e.button)return;e.stopPropagation();const i=me();if(!i)return;const a=U(n);if(!a)return;const r=on(a.root,t);if(!r)return;const c=Yo(r,e=>H(n,e));if(!c)return;const d="row"===r.dir?"horizontal":"vertical",l="horizontal"===d?c.w:c.h,u=oo({x:e.clientX,y:e.clientY},i,s.viewport),{startTracking:p}=y.handleResizeStart({containerId:n,nodeId:t,dividerIndex:o,startSizes:r.sizes.map(e=>({...e})),branchAxisPx:l,direction:d,canvasPt:u});p&&(Me(),e.preventDefault())}(e,t.containerId,o.nodeId,o.dividerIndex),onDblclick:e=>function(e,n,t,o){e.stopPropagation();const i=U(n);if(!i)return;const a=Jo(i.root,t,o);a&&y.requestMerge(n,a)}(e,t.containerId,o.nodeId,o.dividerIndex)},[n[4]||(n[4]=S("span",{class:"hc-fs-divider-grip","aria-hidden":"true"},null,-1)),o.mergeTargetLeafId?(d(),l("button",{key:0,type:"button",class:"hc-fs-merge-btn",title:"合并(并入相邻空格)",onPointerdown:n[1]||(n[1]=B(()=>{},["stop"])),onDblclick:n[2]||(n[2]=B(()=>{},["stop"])),onClick:B(e=>function(e,n,t){const o=U(e);if(!o)return;const i=Jo(o.root,n,t);i&&y.requestMerge(e,i)}(t.containerId,o.nodeId,o.dividerIndex),["stop"])},"⤧",40,gi)):g("",!0)],44,hi))],64))),128))],64))),128)),K.value?(d(),l("div",{key:0,class:"hc-resize-badge","data-resize-badge":"",style:u({position:"absolute",left:K.value.x+"px",top:K.value.y-22+"px",padding:"2px 6px",background:"#3b82f6",color:"#fff",fontSize:"11px",lineHeight:"14px",borderRadius:"3px",pointerEvents:"none",userSelect:"none",whiteSpace:"nowrap",fontFamily:"ui-monospace, SFMono-Regular, monospace"})},k(K.value.wText)+" × "+k(K.value.hText),5)):g("",!0),x(c).marqueeRect.value?(d(),l("div",{key:1,class:"hc-marquee-box","data-marquee-box":"",style:u({position:"absolute",left:x(c).marqueeRect.value.x+"px",top:x(c).marqueeRect.value.y+"px",width:x(c).marqueeRect.value.w+"px",height:x(c).marqueeRect.value.h+"px",border:"1px dashed #3b82f6",background:"rgba(59, 130, 246, 0.08)",pointerEvents:"none",boxSizing:"border-box"})},null,4)):g("",!0),(d(!0),l(p,null,f(x(c).snapLines.value,(e,n)=>(d(),l("div",{key:"snap-"+n,class:"hc-snap-line","data-snap-line":"","data-axis":e.axis,"data-kind":e.kind,style:u("x"===e.axis?{position:"absolute",left:e.pos+"px",top:e.from+"px",width:"0px",height:e.to-e.from+"px",borderLeft:"1px dashed #ec4899",pointerEvents:"none"}:{position:"absolute",left:e.from+"px",top:e.pos+"px",width:e.to-e.from+"px",height:"0px",borderTop:"1px dashed #ec4899",pointerEvents:"none"})},null,12,vi))),128)),ve.value?(d(),l(p,{key:2},[e.$slots["reparent-ghost"]?T(e.$slots,"reparent-ghost",{key:0,state:ve.value},void 0,!0):(d(),l("div",{key:1,class:"hc-reparent-ghost","data-hc-reparent-ghost":"","data-hc-reparent-state":ve.value.result.ok?"legal":"illegal",style:u({position:"absolute",left:ve.value.rect.x+"px",top:ve.value.rect.y+"px",width:ve.value.rect.w+"px",height:ve.value.rect.h+"px",pointerEvents:"none",boxSizing:"border-box",border:"2px solid "+(ve.value.result.ok?"#22c55e":"#ef4444"),background:ve.value.result.ok?"rgba(34, 197, 94, 0.12)":"rgba(239, 68, 68, 0.12)"})},[!ve.value.result.ok&&ve.value.result.message?(d(),l("div",{key:0,class:"hc-reparent-ghost__message","data-hc-reparent-ghost-message":"","data-hc-reparent-ghost-reason":ve.value.result.reason||"",style:{position:"absolute",left:"0",top:"100%",marginTop:"4px",maxWidth:"280px",padding:"3px 6px",background:"#ef4444",color:"#fff",fontSize:"11px",lineHeight:"16px",borderRadius:"3px",whiteSpace:"normal",wordBreak:"break-all",pointerEvents:"none",display:"flex",flexWrap:"wrap",alignItems:"baseline",gap:"4px"}},[ve.value.result.reason?(d(),l("span",Ii,"["+k(ve.value.result.reason)+"]",1)):g("",!0),S("span",null,k(ve.value.result.message),1)],8,yi)):g("",!0)],12,mi))],64)):g("",!0)],44,oi))}}),[["__scopeId","data-v-bc77f713"]]),xi=s({__name:"HyperCardCanvasDesigner",props:{modelValue:{},componentSourceMap:{},mode:{default:"design"},schedulerOptions:{},adapters:{},canvasId:{},freeSplitEnabled:{type:[Boolean,Function],default:void 0},freeSplitControlsAlways:{type:[Boolean,Function],default:void 0},cascadeRemove:{type:Boolean,default:void 0}},emits:["update:modelValue","context-ready","handle-ready","cannot-drag-slot-child","cannot-drag-layout-managed-child"],setup(e,{expose:n,emit:t}){const o=e,a=t;let s=!1;const c=o.canvasId??function(){const e=globalThis.crypto;return e&&"function"==typeof e.randomUUID?`hc-designer-${e.randomUUID()}`:`hc-designer-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}(),u=Mn({canvasId:c,initialDocument:o.modelValue,getMode:()=>o.mode,adapters:o.adapters,freeSplitEnabled:()=>"function"==typeof o.freeSplitEnabled?o.freeSplitEnabled():o.freeSplitEnabled,freeSplitControlsAlways:()=>"function"==typeof o.freeSplitControlsAlways?o.freeSplitControlsAlways():o.freeSplitControlsAlways,cascadeRemove:o.cascadeRemove});zn(u);const p=i(null),f=Bo(u,{getStageEl:()=>{var e;return(null==(e=p.value)?void 0:e.querySelector("[data-hc-stage]"))??null},resolveContract:function(e){var n;const t=null==(n=o.componentSourceMap)?void 0:n[e];if(t)return"contract"in t&&t.contract?t.contract:void 0}}),w=!!u.adapters.data,b=Jn({canvasId:c,source:{getDocument:()=>u.document.document,onAction:e=>u.registerHooks({onAfterAction:n=>e(n)})},initialMode:Eo(o.mode),dataStore:w?u.dataStore:void 0});f.attachBindingDelegate(b,w?u.dataStore:null),a("context-ready",u),a("handle-ready",f);const S={getDropTarget:(e,n)=>f.getDropTarget(e,p.value,n),canReparent:(e,n)=>f.canReparent(e,n),moveInstanceInTree:(e,n)=>f.moveInstanceInTree(e,n),cannotReparentEvent:f.cannotReparentEvent};function k(){a("update:modelValue",JSON.parse(JSON.stringify(u.document.document)))}return r(Po,S),v(()=>o.modelValue,(e,n)=>{if(e&&e!==n){s=!0;try{u.suppressRecording(()=>{u.dispatch({type:"replaceDocument",payload:{document:e}})})}finally{s=!1}}}),v(()=>u.document.document,()=>{s||u.isBatching.value||k()},{deep:!0,flush:"sync"}),v(()=>u.isBatching.value,(e,n)=>{!n||e||s||k()},{flush:"sync"}),m(()=>{zt(c,f),y(()=>{b.setMode(Eo(o.mode))})}),v(()=>o.mode,e=>{b.setMode(Eo(e))}),I(()=>{b.dispose(),f.attachBindingDelegate(null,null),Tt(c),f.dispose(),u.dispose()}),n({context:u,handle:f,canvasId:c}),(n,t)=>(d(),l("div",{ref_key:"stageContainerEl",ref:p,class:"hc-canvas-designer",style:{width:"100%",height:"100%",position:"relative"},"data-hc-canvas-designer":""},[L(Ao,null,{default:P(()=>[L(Fo,{"component-source-map":e.componentSourceMap,mode:e.mode,"scheduler-options":e.schedulerOptions,"canvas-id":x(c)},null,8,["component-source-map","mode","scheduler-options","canvas-id"]),"runtime"!==e.mode?(d(),h(wi,{key:0,mode:e.mode,onCannotDragSlotChild:t[0]||(t[0]=e=>a("cannot-drag-slot-child",e)),onCannotDragLayoutManagedChild:t[1]||(t[1]=e=>a("cannot-drag-layout-managed-child",e))},D({_:2},[n.$slots["reparent-ghost"]?{name:"reparent-ghost",fn:P(e=>[T(n.$slots,"reparent-ghost",R(E(e)))]),key:"0"}:void 0,n.$slots["split-divider"]?{name:"split-divider",fn:P(e=>[T(n.$slots,"split-divider",R(E(e)))]),key:"1"}:void 0,n.$slots["free-split-divider"]?{name:"free-split-divider",fn:P(e=>[T(n.$slots,"free-split-divider",R(E(e)))]),key:"2"}:void 0]),1032,["mode"])):g("",!0),T(n.$slots,"canvas-overlay",{viewport:x(f).viewport,handle:x(f)}),T(n.$slots,"default")]),_:3})],512))}});function bi(e={}){const{canvasWidth:n=1280,canvasHeight:t=720,rootLayout:o="free",instances:i=[],bindings:a=[]}=e;return{schemaVersion:"1",layout:{type:"free",canvas:{width:{mode:"px",value:n},height:{mode:"px",value:t}},rootLayout:"string"==typeof o?{mode:o}:o},instances:i,bindings:a}}function Si(e={}){return bi({...e,rootLayout:"free"})}const ki={event:["instanceEvent"],init:["lifecycle","page"],data:["dataSource"]};function Mi(e){return ki[e.type].includes(e.source.kind)}function zi(e,n){var t,o,i;const a=[],r=new Map;for(const n of e.instances)r.set(n.instanceId,n);const s=null==n?void 0:n.currentCanvasId,c=null==n?void 0:n.resolveContract;let d=null,l=null;if(c){d=new Map,l=new Map;for(const n of e.instances){const e=c(n.componentVersionKey);if(d.set(n.instanceId,e),e)for(const t of e.dataInputsDecl)if(t.required){let e=l.get(n.instanceId);e||(e=new Set,l.set(n.instanceId,e)),e.add(t.key)}}}for(const n of e.bindings)if(Mi(n)){if(void 0!==s){const e=Ci(n),t=Bi(n);void 0!==e&&e!==s&&a.push(Ti("unsupported-cross-canvas","error",n,{canvasId:e})),void 0!==t&&t!==s&&a.push(Ti("unsupported-cross-canvas","error",n,{canvasId:t}))}switch(n.source.kind){case"instanceEvent":{const e=n.source.event,t=r.get(n.source.instanceId);if(t){if(d){const o=d.get(t.instanceId);o&&!o.emitsDecl.some(n=>n.event===e)&&a.push(Ti("unknown-source-event","error",n,{instanceId:t.instanceId}))}}else a.push(Ti("orphan-binding","warn",n,{instanceId:n.source.instanceId}));break}case"lifecycle":r.get(n.source.instanceId)||a.push(Ti("orphan-binding","warn",n,{instanceId:n.source.instanceId}))}switch(n.target.kind){case"instanceMethod":{const e=n.target.method,t=r.get(n.target.instanceId);if(t){if(d){const o=d.get(t.instanceId);o&&!o.methodsDecl.some(n=>n.key===e)&&a.push(Ti("unknown-target-method","error",n,{instanceId:t.instanceId}))}}else a.push(Ti("orphan-binding","warn",n,{instanceId:n.target.instanceId}));break}case"instanceEmit":{const e=n.target.event,t=r.get(n.target.instanceId);if(t){if(d){const o=d.get(t.instanceId);o&&!o.emitsDecl.some(n=>n.event===e)&&a.push(Ti("unknown-target-event","error",n,{instanceId:t.instanceId}))}}else a.push(Ti("orphan-binding","warn",n,{instanceId:n.target.instanceId}));break}case"instanceDataInput":{const e=n.target.key,o=r.get(n.target.instanceId);if(o){if(d){const i=d.get(o.instanceId);i&&!i.dataInputsDecl.some(n=>n.key===e)?a.push(Ti("unknown-target-data-input","error",n,{instanceId:o.instanceId})):l&&(null==(t=l.get(o.instanceId))||t.delete(e))}}else a.push(Ti("orphan-binding","warn",n,{instanceId:n.target.instanceId}));break}}(null==(o=n.schedule)?void 0:o.throttle)&&n.schedule.throttle.windowMs<16&&a.push(Ti("schedule-window-too-small","info",n,Li(n))),(null==(i=n.schedule)?void 0:i.debounce)&&n.schedule.debounce.windowMs<16&&a.push(Ti("schedule-window-too-small","info",n,Li(n)))}else a.push(Ti("invalid-type-source-kind","error",n,Li(n)));if(l)for(const[e,n]of l)for(const t of n){const n={level:"warn",code:"required-data-input-missing",instanceId:e,key:t,message:`Required dataInput "${t}" on instance "${e}" is not fed by any binding`};a.push(n)}return a}function Ti(e,n,t,o){const i={level:n,code:e,bindingId:t.id,message:`${e} on binding "${t.id}"`};return o.instanceId&&(i.instanceId=o.instanceId),o.canvasId&&(i.canvasId=o.canvasId),i}function Li(e){return"instanceEvent"===e.source.kind||"lifecycle"===e.source.kind?{instanceId:e.source.instanceId}:"instanceMethod"===e.target.kind||"instanceDataInput"===e.target.kind||"instanceEmit"===e.target.kind?{instanceId:e.target.instanceId}:{}}function Ci(e){switch(e.source.kind){case"instanceEvent":case"lifecycle":return e.source.canvasId;case"page":case"dataSource":return}}function Bi(e){switch(e.target.kind){case"instanceMethod":case"instanceEmit":case"instanceDataInput":return e.target.canvasId}}const Pi="0.0.0-d3.6c-stage";export{kn as CANVAS_CONTEXT_KEY,Po as CANVAS_REPARENT_BRIDGE_KEY,Ao as CanvasStage,yo as DEFAULT_FIT_PADDING,jo as DIVIDER_HIT_THICKNESS,no as DRAG_THRESHOLD_CANVAS_PX,Ln as EFFECTIVE_DEFAULT_SLOT,$t as HandleDisposedError,xi as HyperCardCanvasDesigner,bt as HyperCardPageRenderer,wi as InteractionLayer,Cn as MAX_INSTANCE_TREE_DEPTH,Bn as MAX_SPLIT_TREE_DEPTH,Ft as MIN_INSTANCE_SIZE,qo as MIN_RATIO_FRACTION,Fo as RuntimeLayer,io as SLOT_CHILD_RESIZE_HANDLES,Pi as VERSION,pe as applyEffectiveSplitRatiosToDocument,Uo as applyFreeSplitResizeDrag,Vo as applySplitDividerDrag,Eo as bindingModeForCanvasMode,Ge as bindingReferencesInstance,po as buildInstanceTree,uo as canReparent,Pe as canvasSizeToCss,_e as cleanLayoutItem,oo as clientToCanvas,wo as computeContentBounds,be as computeEffectiveSplitRatios,bo as computeFit,Go as computeFreeSplitDividers,Yo as computeFreeSplitNodeRect,Pt as computeInverse,Qt as computeNextAxisSize,Zt as computeNextLayoutBoxAxis,Ve as computeParentLayoutMode,xo as computeSelectionBounds,Jt as computeSlotChildCanvasRect,Ot as computeSnap,No as computeSplitDividers,Wo as computeSplitShare,So as computeVisibleBounds,Ce as containerLayoutToCss,wn as createAssetResolver,Mn as createCanvasContext,Bo as createCanvasHandle,ro as createCanvasInteraction,Et as createCommandRecorder,Je as createDocumentStore,Si as createFreePageDocument,Zo as createFreeSplitInteraction,bi as createMinimalPageDocument,Xe as createRenderScheduler,Qe as createSelectionStore,Ko as createSplitDividerInteraction,Ze as createViewportStore,nt as deriveComponentContract,tt as deriveComponentKind,Pn as effectiveSlot,ot as emptyComponentContract,We as emptyPageDocument,ao as filterExistingIds,Nt as filterInstancesInRect,vo as findInstanceBreadcrumb,go as findInstancePath,Ye as getBindingInstanceRefs,Lo as getDefaultShortcuts,Lt as getDesignerHandle,Xt as getInstanceWrapperRectFromDom,Kt as getOutletRectFromDom,Yt as getParentLayoutMode,W as getRendererDiagnostics,mo as getSiblings,_t as getSlotChildRectFromDom,jt as hitTestInstance,to as isAdditive,Ke as isCanvasRootPlacement,Ne as isContainerChildPlacement,Do as isDraftKey,Mo as isEditingText,Gt as isFreePositionLayoutMode,ie as isFreeSplitEnabled,ti as isInstanceEffectivelyLocked,ei as isInstancePositionLocked,ni as isInstanceSizeLocked,Wt as isResizeHandleAllowed,ke as isV1Layout,Be as layoutItemToCss,Ct as listRegisteredCanvasIds,J as listRendererDiagnostics,zo as matchBinding,fe as migrateGridCellsToLayoutItem,Fe as migrateInstanceToLayoutBox,Se as migrateLayoutV0ToV1,Oe as migratePlacementToCanvasContainer,qe as migrateRootLayout,ge as normalizeComponentOverrides,le as normalizeFreeSplitContainersInDocument,de as normalizeFreeSplitTreeShape,he as normalizeGridCells0Based,ve as normalizeInstanceSlotFields,To as normalizeKeyString,qt as normalizeMarqueeRect,ne as normalizePageBindings,ue as normalizePageDocument,Ro as parseComponentVersionKey,ko as parseKeyEvent,zn as provideCanvasContext,zt as registerDesignerHandle,U as registerRendererDiagnostics,Te as renderLayoutBoxStyle,Me as resolveCanvasSizePx,Jo as resolveFreeSplitMergeTarget,ze as resolveMeasuredCanvasSizePx,Ho as resolveSplitEdge,Bt as subscribeDesignerRegistry,Q as subscribeRendererDiagnostics,Io as unionRects,Tt as unregisterDesignerHandle,H as unregisterRendererDiagnostics,Tn as useCanvasContext,zi as validateBindings,Dn as validateInstanceTree,Jn as wirePageBindings};
|
|
2
|
+
import{reactive as e,computed as n,markRaw as t,inject as o,ref as i,readonly as a,provide as r,defineComponent as s,resolveComponent as c,openBlock as d,createElementBlock as l,normalizeStyle as u,Fragment as p,renderList as f,createBlock as h,createCommentVNode as g,watch as v,onMounted as m,nextTick as y,onBeforeUnmount as I,shallowRef as w,unref as x,withDirectives as b,createElementVNode as S,toDisplayString as k,vShow as M,Teleport as z,renderSlot as T,createVNode as L,normalizeClass as C,withModifiers as B,withCtx as P,createSlots as D,normalizeProps as R,guardReactiveProps as E}from"vue";import{DEFAULT_CANVAS_ID as $,registryVersion as A,getInstance as O,listInstances as F,parseComponentSource as j,HC_CANVAS_ID_KEY as q,disposeCanvas as N,RuntimeBox as V,getInstanceTimings as K,onInstanceLifecycle as _}from"@hy-bricks/core";const X=new Map,Y=new Set;function G(e,n){const t=[...Y];for(const o of t)try{o(e,n)}catch{}}function H(e,n){X.has(e)&&console.warn(`[hc-rendererDiagnostics] canvasId "${e}" already registered, overwriting`),X.set(e,n),G("register",e)}function U(e){X.has(e)&&(X.delete(e),G("unregister",e))}function W(e){return X.get(e)??null}function J(){return[...X.values()]}function Q(e){return Y.add(e),()=>Y.delete(e)}function Z(e){return JSON.parse(JSON.stringify(e))}const ee="[hc-canvas/normalizeBindings]";function ne(e){if(!Array.isArray(e))return[];const n=[];for(let t=0;t<e.length;t++){const o=e[t];if(!o||"object"!=typeof o){console.warn(`${ee} dropped non-object binding at index ${t}`);continue}if(te(o)){n.push(o);continue}const i=oe(o);null!==i&&n.push(i)}return n}function te(e){if(!e||"object"!=typeof e)return!1;const n=e;if("string"!=typeof n.id||0===n.id.length)return!1;if("event"!==n.type&&"init"!==n.type&&"data"!==n.type)return!1;const t=n.source;if(!t||"object"!=typeof t)return!1;if("string"!=typeof t.kind)return!1;const o=n.target;return!(!o||"object"!=typeof o)&&"string"==typeof o.kind}function oe(e){if("string"!=typeof e.id||0===e.id.length)return console.warn(`${ee} dropped binding with missing/invalid id`),null;const n=e.target;if(!n||"object"!=typeof n||"string"!=typeof n.instanceId||""===n.instanceId||"string"!=typeof n.method)return console.warn(`${ee} dropped binding "${e.id}" missing/invalid target`),null;const t=e.type;let o;if("event"===t){const n=e.source;if(!n||"object"!=typeof n||"string"!=typeof n.instanceId||""===n.instanceId||"string"!=typeof n.event)return console.warn(`${ee} dropped event binding "${e.id}" missing/invalid source`),null;o={kind:"instanceEvent",instanceId:n.instanceId,event:n.event}}else{if("init"!==t)return console.warn(`${ee} dropped binding "${e.id}" with unknown legacy type "${String(e.type)}"`),null;{const n=e.source;n&&"string"==typeof n.instanceId&&""!==n.instanceId&&console.warn(`${ee} init binding "${e.id}" had source.instanceId, discarded`),o={kind:"page",hook:"pageInit"}}}const i={kind:"instanceMethod",instanceId:n.instanceId,method:n.method};let a;a=void 0===n.args?{kind:"passthrough"}:Array.isArray(n.args)&&0===n.args.length?{kind:"static",args:[]}:Array.isArray(n.args)?{kind:"static",args:Z(n.args)}:{kind:"passthrough"};const r={},s=e.options;s&&"object"==typeof s&&(!0===s.once&&(r.once=!0),"number"==typeof s.throttleMs&&(r.throttle={windowMs:s.throttleMs}),"number"==typeof s.debounceMs&&(r.debounce={windowMs:s.debounceMs}));const c=void 0!==r.once||void 0!==r.throttle||void 0!==r.debounce,d={id:e.id,source:o,target:i,mapping:a,...void 0!==e.disabled?{disabled:e.disabled}:{},...c?{schedule:r}:{}};return"event"===t?{...d,type:"event"}:{...d,type:"init"}}function ie(){return!1}function ae(e){if("object"!=typeof e||null===e)return!0;const{mode:n,value:t,min:o,max:i}=e,a=void 0!==o&&("number"!=typeof o||!Number.isFinite(o)||o<0)||void 0!==i&&("number"!=typeof i||!Number.isFinite(i)||i<0)||"number"==typeof o&&"number"==typeof i&&o>i;return"ratio"!==n&&"px"!==n||"number"!=typeof t||!Number.isFinite(t)||"ratio"===n&&t<=0||"px"===n&&t<0||a}function re(e,n=8,t=()=>Math.random().toString(36).slice(2,2+n)){const o=function(){const e="undefined"!=typeof globalThis&&"crypto"in globalThis?globalThis.crypto:void 0;return"function"==typeof(null==e?void 0:e.randomUUID)?()=>e.randomUUID():void 0}();return`${e}${o?o().replace(/-/g,"").slice(0,n):t()}`}function se(){return re("lf_",10,()=>Math.floor(0xffffffffff*Math.random()).toString(36))}function ce(){return{type:"leaf",leafId:se(),instanceId:null}}function de(e){if(!e||"object"!=typeof e)return ce();const n=e;if("leaf"===n.type){const e={type:"leaf",leafId:"string"==typeof n.leafId&&n.leafId?n.leafId:se(),instanceId:"string"==typeof n.instanceId?n.instanceId:null};return!0===n.locked&&(e.locked=!0),e}if("split"===n.type){const e=(Array.isArray(n.children)?n.children:[]).map(e=>de(e));if(0===e.length)return ce();if(1===e.length)return e[0];const t=Array.isArray(n.sizes)?n.sizes:[],o=e.map((e,n)=>function(e){if(e&&"object"==typeof e){const n=e;if("px"===n.mode){const e={mode:"px",value:"number"==typeof n.value&&Number.isFinite(n.value)&&n.value>=0?n.value:0};let t="number"==typeof n.min&&Number.isFinite(n.min)&&n.min>=0?n.min:void 0,o="number"==typeof n.max&&Number.isFinite(n.max)&&n.max>=0?n.max:void 0;return void 0!==t&&void 0!==o&&t>o&&(t=void 0,o=void 0),void 0!==t&&(e.min=t),void 0!==o&&(e.max=o),e}return{mode:"ratio",value:"number"==typeof n.value&&Number.isFinite(n.value)&&n.value>0?n.value:1}}return{mode:"ratio",value:1}}(t[n]));return{type:"split",nodeId:"string"==typeof n.nodeId&&n.nodeId?n.nodeId:re("nd_",10,()=>Math.floor(0xffffffffff*Math.random()).toString(36)),dir:"col"===n.dir?"col":"row",children:e,sizes:o}}return ce()}function le(e){return e}function ue(e){const n=e.instances.map(ve),t=ge(e.componentOverrides,n),o=ne(e.bindings);if("1"===e.schemaVersion){const i=qe(ke(e.layout)?e.layout:Se(e.layout));return{...e,layout:i,instances:n,bindings:o,componentOverrides:t}}return{schemaVersion:"1",layout:qe(Se(e.layout)),instances:n,bindings:o,componentOverrides:t}}function pe(e){const n=function(e){var n;const t=new Map;for(const o of e){if(!o.parentId)continue;if(void 0!==o.slot)continue;const e=t.get(o.parentId),i=null==(n=o.layoutItem)?void 0:n.ratio;e?e.push(i):t.set(o.parentId,[i])}let o=!1;const i=e.map(e=>{if(!e.containerLayout||"split"!==e.containerLayout.mode)return e;const n=t.get(e.instanceId)??[],i=e.containerLayout.ratios,a=be(i,n);return i.length===a.length&&i.every((e,n)=>e===a[n])?e:(o=!0,{...e,containerLayout:{...e.containerLayout,ratios:a}})});return o?i:e}(e.instances),t=e.layout.rootLayout?function(e,n){const t=e.rootLayout;if(!t||"split"!==t.mode)return e;const o=n.filter(e=>void 0===e.parentId).map(e=>{var n;return null==(n=e.layoutItem)?void 0:n.ratio}),i=t.ratios,a=be(i,o);return i.length===a.length&&i.every((e,n)=>e===a[n])?e:{...e,rootLayout:{...t,ratios:a}}}(e.layout,n):e.layout;return n===e.instances&&t===e.layout?e:{...e,layout:t,instances:n}}function fe(e){const n=new Map,t=new Set;for(const o of e.instances){const e=o.containerLayout;if("grid"!==(null==e?void 0:e.mode))continue;t.add(o.instanceId);const i=e.cells;i&&"object"==typeof i&&Object.keys(i).length>0&&n.set(o.instanceId,he(i))}if(0===t.size)return e;let o=!1;const i=e.instances.map(e=>{if(!e.parentId)return e;if(void 0!==e.slot)return e;if(!t.has(e.parentId))return e;const i=e.layoutItem;if(i&&("number"==typeof i.row||"number"==typeof i.column)){const n=function(e){const n="number"==typeof e.row&&Number.isFinite(e.row)&&e.row<1,t="number"==typeof e.column&&Number.isFinite(e.column)&&e.column<1;if(!n&&!t)return e;const o={...e};return n&&(o.row=1),t&&(o.column=1),o}(i);return n===i?e:(o=!0,{...e,layoutItem:n})}const a=n.get(e.parentId),r=null==a?void 0:a[e.instanceId];if(!r)return e;const s=function(e){const n={};return"number"==typeof e.row&&Number.isFinite(e.row)&&(n.row=e.row<1?1:e.row),"number"==typeof e.column&&Number.isFinite(e.column)&&(n.column=e.column<1?1:e.column),void 0===n.row&&void 0===n.column?null:("number"==typeof e.rowSpan&&Number.isFinite(e.rowSpan)&&e.rowSpan>0&&e.rowSpan<=32&&(n.rowSpan=e.rowSpan),"number"==typeof e.columnSpan&&Number.isFinite(e.columnSpan)&&e.columnSpan>0&&e.columnSpan<=32&&(n.columnSpan=e.columnSpan),n)}(r);return s?(o=!0,{...e,layoutItem:{...i??{},...s}}):e});return o?{...e,instances:i}:e}function he(e){let n=!1;for(const t of Object.values(e))if(t&&(0===t.row||0===t.column)){n=!0;break}if(!n)return e;const t={};for(const[n,o]of Object.entries(e)){if(!o)continue;const e={...o};"number"==typeof e.row&&Number.isFinite(e.row)&&(e.row=e.row+1),"number"==typeof e.column&&Number.isFinite(e.column)&&(e.column=e.column+1),t[n]=e}return t}function ge(e,n){if(!e||"object"!=typeof e||Array.isArray(e))return{};const t=new Set(n.map(e=>e.instanceId)),o={};for(const[n,i]of Object.entries(e)){if(!i||"object"!=typeof i||Array.isArray(i))continue;const e=i;e.instanceId===n&&t.has(e.instanceId)&&"string"==typeof e.baseVersionKey&&e.baseVersionKey&&De(e.source)&&Re(e.contract)&&(o[n]={instanceId:e.instanceId,baseVersionKey:e.baseVersionKey,source:e.source,contract:e.contract,...Ee(e.contractParseError)?{contractParseError:Ee(e.contractParseError)}:{},..."string"==typeof e.createdAt?{createdAt:e.createdAt}:{},..."string"==typeof e.updatedAt?{updatedAt:e.updatedAt}:{}})}return o}function ve(e){let n=e;void 0===n.parentId&&n.slotPlacement&&(n={...n,parentId:n.slotPlacement.parentInstanceId,slot:n.slotPlacement.slotName}),""!==n.slot&&"default"!==n.slot||(n={...n,slot:void 0}),void 0===n.placement&&(n={...n,placement:void 0===n.parentId?"absolute":"slot"});const t=ye(n.sizing,n.size);if(t!==n.size&&(n={...n,size:t}),void 0!==n.containerLayout){const e=xe(n.containerLayout);if(e!==n.containerLayout)if(null===e){const{containerLayout:e,...t}=n;n=t}else n={...n,containerLayout:e}}if(n=Oe(n),n=Fe(n),void 0!==n.layoutItem){const e=_e(n.layoutItem);if(null===e){const{layoutItem:e,...t}=n;n=t}else e!==n.layoutItem&&(n={...n,layoutItem:e})}if(!0===n.locked){const e={};void 0===n.lockPosition&&(e.lockPosition=!0),void 0===n.lockSize&&(e.lockSize=!0),Object.keys(e).length>0&&(n={...n,...e})}return n}const me=new Set(["px","percent","fill","hug","auto"]);function ye(e,n){var t,o,i,a;const r=n?function(e){const n={},t=we(e.width),o=we(e.height);return t&&(n.width=t),o&&(n.height=o),n.width||n.height?n:void 0}(n):void 0;if(!e)return r;const s={};if(e.width){const n=Ie(e.width,null==(t=e.min)?void 0:t.w,null==(o=e.max)?void 0:o.w);n&&(s.width=n)}if(e.height){const n=Ie(e.height,null==(i=e.min)?void 0:i.h,null==(a=e.max)?void 0:a.h);n&&(s.height=n)}return r?{width:r.width??s.width,height:r.height??s.height}:Object.keys(s).length>0?s:void 0}function Ie(e,n,t){if(!e||"object"!=typeof e)return null;let o;switch(e.mode){case"fixed":o="px";break;case"percent":o="percent";break;case"fill":o="fill";break;case"hug":o="hug";break;default:return null}const i={mode:o};return"px"!==o&&"percent"!==o||"number"!=typeof e.value||(i.value=e.value),"number"==typeof n&&(i.min=n),"number"==typeof t&&(i.max=t),i}function we(e){if(!e||"object"!=typeof e)return null;if("string"!=typeof e.mode)return null;if(!me.has(e.mode))return null;const n={mode:e.mode};return"px"!==e.mode&&"percent"!==e.mode||"number"!=typeof e.value||(n.value=e.value),"number"==typeof e.min&&(n.min=e.min),"number"==typeof e.max&&(n.max=e.max),n}function xe(e){if(!e||"object"!=typeof e)return null;if("none"===e.mode)return{mode:"none"};if("free"===e.mode)return{mode:"free"};if("flex"===e.mode){const n=e,t={mode:"flex",direction:"row"===n.direction||"column"===n.direction?n.direction:"row"};return!0===n.wrap&&(t.wrap=!0),"number"==typeof n.gap&&Number.isFinite(n.gap)&&n.gap>=0&&(t.gap=n.gap),"start"!==n.justify&&"center"!==n.justify&&"end"!==n.justify&&"space-between"!==n.justify&&"space-around"!==n.justify||(t.justify=n.justify),"start"!==n.align&&"center"!==n.align&&"end"!==n.align&&"stretch"!==n.align||(t.align=n.align),t}if("split"===e.mode){const n=e;if("horizontal"!==n.direction&&"vertical"!==n.direction)return null;if(!Array.isArray(n.ratios))return null;const t=n.ratios.filter(e=>"number"==typeof e&&Number.isFinite(e)&&e>=0),o={mode:"split",direction:n.direction,ratios:t};return"number"==typeof n.gap&&Number.isFinite(n.gap)&&n.gap>=0&&(o.gap=n.gap),o}if("grid"===e.mode){const n=e;if(!Array.isArray(n.columns)||!Array.isArray(n.rows))return null;const t={mode:"grid",columns:n.columns.filter(e=>!!e&&("fr"===e.mode||"px"===e.mode||"percent"===e.mode)&&"number"==typeof e.value&&Number.isFinite(e.value)&&e.value>=0).slice(0,32),rows:n.rows.filter(e=>!!e&&("fr"===e.mode||"px"===e.mode||"percent"===e.mode||"auto"===e.mode)&&("auto"===e.mode&&void 0===e.value||"number"==typeof e.value&&Number.isFinite(e.value)&&e.value>=0)).slice(0,32)};if("number"==typeof n.gap&&Number.isFinite(n.gap)&&n.gap>=0)t.gap=n.gap;else if(n.gap&&"object"==typeof n.gap){const e={};"number"==typeof n.gap.row&&Number.isFinite(n.gap.row)&&n.gap.row>=0&&(e.row=n.gap.row),"number"==typeof n.gap.column&&Number.isFinite(n.gap.column)&&n.gap.column>=0&&(e.column=n.gap.column),Object.keys(e).length>0&&(t.gap=e)}if(n.cells&&"object"==typeof n.cells&&!Array.isArray(n.cells)){const e={};for(const[t,o]of Object.entries(n.cells)){if(!o||"object"!=typeof o)continue;if(!Number.isFinite(o.row)||!Number.isFinite(o.column))continue;const n={row:o.row,column:o.column};"number"==typeof o.rowSpan&&Number.isFinite(o.rowSpan)&&o.rowSpan>0&&o.rowSpan<=32&&(n.rowSpan=o.rowSpan),"number"==typeof o.columnSpan&&Number.isFinite(o.columnSpan)&&o.columnSpan>0&&o.columnSpan<=32&&(n.columnSpan=o.columnSpan),e[t]=n}Object.keys(e).length>0&&(t.cells=e)}return t}return"free-split"===e.mode?e:null}function be(e,n){const t=(e??[]).map(e=>"number"==typeof e&&Number.isFinite(e)&&e>=0?e:0),o=[];for(let e=0;e<n.length;e++){const i=n[e];if("number"==typeof i&&Number.isFinite(i)&&i>0){o.push(i);continue}const a=t[e];"number"==typeof a&&a>0?o.push(a):o.push(1)}return o}function Se(e){if(!e)return{type:"free",canvas:{width:{mode:"px",value:1920},height:{mode:"px",value:1080}}};if(ke(e))return e;const n=e,t={width:{mode:"px",value:n.canvas.w},height:{mode:"px",value:n.canvas.h}},o=function(e){if(!e)return;const n={};if(void 0!==e.color&&(n.color=e.color),void 0!==e.imageAssetId){const t={id:e.imageAssetId,type:"image"};n.image=t}return void 0!==e.fit&&(n.imageFit="original"===e.fit?"center":e.fit),Object.keys(n).length>0?n:void 0}(n.canvas.background),i={type:n.type,canvas:t};return o&&(i.background=o),void 0!==n.canvas.gridSize&&(i.guides={grid:{size:n.canvas.gridSize}}),i}function ke(e){if(!e)return!1;const n=e.canvas;if(!n)return!1;const t=n.width;return"object"==typeof t&&null!==t&&"mode"in t&&"string"==typeof t.mode}function Me(e,n=1920){return"px"===e.mode?e.value:n}function ze(e,n,t=1920){switch(e.mode){case"px":return e.value;case"percent":return n>0?n*e.value/100:t;case"vw":return"undefined"!=typeof window?window.innerWidth*e.value/100:t;case"vh":return"undefined"!=typeof window?window.innerHeight*e.value/100:t;case"auto":case"fill":return n>0?n:t}}function Te(e,n,t,o,i){const a=Le(e.widthMode,e.width),r=Le(e.heightMode,e.height),s="free"===o,c={boxSizing:"border-box",minWidth:0,minHeight:0,overflow:e.overflow??"hidden",zIndex:n};return null!==a&&(c.width=a),null!==r&&(c.height=r),"split"===o&&("vertical"===i?c.height="100%":c.width="100%"),"number"==typeof t&&Number.isFinite(t)&&0!==t&&(c.transform=`rotate(${t}deg)`),s?(c.position="absolute",c.left=`${e.x}px`,c.top=`${e.y}px`):c.position="relative",c}function Le(e,n){switch(e){case"px":return`${n}px`;case"percent":return`${n}%`;case"fill":return"100%";case"auto":return"auto"}}function Ce(e){if(!e||"none"===e.mode||"free"===e.mode)return null;if("flex"===e.mode){const n={display:"flex"};if(n.flexDirection=e.direction??"row",e.wrap&&(n.flexWrap="wrap"),"number"==typeof e.gap&&(n.gap=`${e.gap}px`),e.justify){const t={start:"flex-start",end:"flex-end",center:"center","space-between":"space-between","space-around":"space-around"};n.justifyContent=t[e.justify]??e.justify}if(e.align){const t={start:"flex-start",end:"flex-end",center:"center",stretch:"stretch"};n.alignItems=t[e.align]??e.align}return n}if("grid"===e.mode){const n={display:"grid"},t=(e.columns??[]).map(e=>"fr"===e.mode?`${e.value}fr`:"px"===e.mode?`${e.value}px`:`${e.value}%`).join(" "),o=(e.rows??[]).map(e=>"auto"===e.mode?"auto":"fr"===e.mode?`${e.value??1}fr`:"px"===e.mode?`${e.value??0}px`:`${e.value??0}%`).join(" ");if(t&&(n.gridTemplateColumns=t),o&&(n.gridTemplateRows=o),"number"==typeof e.gap)n.gap=`${e.gap}px`;else if(e.gap&&"object"==typeof e.gap){const t=e.gap.row??0,o=e.gap.column??0;n.gap=`${t}px ${o}px`}return n}if("split"===e.mode){const n=(Array.isArray(e.ratios)?e.ratios:[]).map(e=>"number"==typeof e&&Number.isFinite(e)&&e>=0?e:0).filter(e=>e>0),t=n.length>0?n.map(e=>`${e}fr`).join(" "):"1fr",o={display:"grid"};return"vertical"===e.direction?o.gridTemplateRows=t:o.gridTemplateColumns=t,"number"==typeof e.gap&&(o.gap=`${e.gap}px`),o}return e.mode,null}function Be(e,n){if(!e)return null;if("flex"===n){const n={};return"number"==typeof e.order&&(n.order=e.order),"number"==typeof e.grow&&(n.flexGrow=e.grow),"number"==typeof e.shrink&&(n.flexShrink=e.shrink),Object.keys(n).length>0?n:null}if("grid"===n){const n={};if("number"==typeof e.row){const t="number"==typeof e.rowSpan&&e.rowSpan>0?e.rowSpan:1;n.gridRow=t>1?`${e.row} / span ${t}`:`${e.row}`}if("number"==typeof e.column){const t="number"==typeof e.columnSpan&&e.columnSpan>0?e.columnSpan:1;n.gridColumn=t>1?`${e.column} / span ${t}`:`${e.column}`}return Object.keys(n).length>0?n:null}return null}function Pe(e){switch(e.mode){case"px":return`${e.value}px`;case"percent":return`${e.value}%`;case"vw":return`${e.value}vw`;case"vh":return`${e.value}vh`;case"auto":return"auto";case"fill":return"100%"}}function De(e){return!!e&&"object"==typeof e&&!Array.isArray(e)&&"string"==typeof e.html&&"string"==typeof e.js&&"string"==typeof e.css}function Re(e){if(!e||"object"!=typeof e||Array.isArray(e))return!1;const n=e;return["propsDecl","emitsDecl","methodsDecl","slotsDecl","modelDecl","dataInputsDecl","dataOutputsDecl"].every(e=>Array.isArray(n[e]))}function Ee(e){if(!e||"object"!=typeof e||Array.isArray(e))return;const n=e;return"string"==typeof n.message?{message:n.message,..."number"==typeof n.line?{line:n.line}:{},..."number"==typeof n.column?{column:n.column}:{}}:void 0}const $e=new Set(["px","percent","fill","auto"]),Ae=new Set(["hidden","visible","auto"]);function Oe(e){const n=e.placement;return"canvas"===n||"container"===n?e:"absolute"===n?{...e,placement:"canvas"}:"slot"===n?{...e,placement:"container"}:{...e,placement:e.parentId?"container":"canvas"}}function Fe(e){var n,t;const o=e.rect??{x:0,y:0,w:0,h:0},i=null==(n=e.size)?void 0:n.width,a=null==(t=e.size)?void 0:t.height,r=e=>{if(e)return"hug"===e.mode?"auto":"percent"===e.mode?"percent":"fill"===e.mode?"fill":"auto"===e.mode?"auto":"px"===e.mode?"px":void 0},s=e.layoutBox,c=s&&$e.has(s.widthMode)?s.widthMode:r(i)??"px",d=s&&$e.has(s.heightMode)?s.heightMode:r(a)??"px",l=(e,n)=>"number"==typeof e&&Number.isFinite(e)?e:n,u={x:l(null==s?void 0:s.x,o.x),y:l(null==s?void 0:s.y,o.y),width:l(null==s?void 0:s.width,(null==i?void 0:i.value)??o.w),height:l(null==s?void 0:s.height,(null==a?void 0:a.value)??o.h),widthMode:c,heightMode:d,overflow:(null==s?void 0:s.overflow)&&Ae.has(s.overflow)?s.overflow:"hidden"};return s&&s.x===u.x&&s.y===u.y&&s.width===u.width&&s.height===u.height&&s.widthMode===u.widthMode&&s.heightMode===u.heightMode&&s.overflow===u.overflow?e:{...e,layoutBox:u}}let je=!1;function qe(e){if(e.rootLayout){const o=xe(e.rootLayout);return null===o?{...e,rootLayout:{mode:"free"}}:"free-split"===o.mode?(je||(je=!0,console.warn("[hypercard] rootLayout.mode='free-split' 不支持(free-split 仅用于容器实例,根画布无 outlet/containerId 锚),已降级为 'free'。")),{...e,rootLayout:{mode:"free"}}):(t=o,(n=e.rootLayout).mode===t.mode&&JSON.stringify(n)===JSON.stringify(t)?e:{...e,rootLayout:o})}var n,t;return{...e,rootLayout:{mode:"free"}}}function Ne(e){return"container"===e||"slot"===e}function Ve(e,n,t){var o,i;const a=n.find(e=>e.instanceId===t);if(!a)return;if(void 0===a.parentId)return(null==(o=null==e?void 0:e.rootLayout)?void 0:o.mode)??"free";const r=n.find(e=>e.instanceId===a.parentId);return(null==(i=null==r?void 0:r.containerLayout)?void 0:i.mode)??"none"}function Ke(e){return"canvas"===e||"absolute"===e||void 0===e}function _e(e){if(!e||"object"!=typeof e)return null;const n={},t=["order","grow","shrink","row","column","rowSpan","columnSpan","ratio"];for(const o of t){const t=e[o];"number"==typeof t&&Number.isFinite(t)&&(n[o]=t)}return Object.keys(n).length>0?n:null}function Xe(n={}){const{rootMargin:t="500px",disposeDelayMs:o=1500,mountConcurrency:i=2,root:a=null}=n,r={state:e({}),elById:new Map,idByEl:new WeakMap,mountQueue:[],disposeTimers:new Map,idleScheduled:!1,io:null,held:new Set,counts:{pending:0,mounting:0,mounted:0,disposing:0}};function s(e,n){const t=r.state[e];t!==n&&(void 0!==t&&"idle"!==t&&r.counts[t]--,r.state[e]=n,"idle"!==n&&r.counts[n]++)}function c(e){for(const n of e){const e=r.idByEl.get(n.target);e&&(n.isIntersecting?d(e):l(e))}}function d(e){const n=r.disposeTimers.get(e);n&&(clearTimeout(n),r.disposeTimers.delete(e));const t=r.state[e];"mounted"!==t&&"disposing"!==t?(s(e,"mounting"),r.mountQueue.includes(e)||r.mountQueue.push(e),u()):s(e,"mounted")}function l(e){if(r.held.has(e))return;const n=r.state[e];if("pending"===n||"idle"===n)return;if("mounting"===n){const n=r.mountQueue.indexOf(e);return n>=0&&r.mountQueue.splice(n,1),void s(e,"pending")}s(e,"disposing");const t=r.disposeTimers.get(e);t&&clearTimeout(t);const i=setTimeout(()=>{"disposing"===r.state[e]&&(s(e,"pending"),r.disposeTimers.delete(e))},o);r.disposeTimers.set(e,i)}function u(){r.idleScheduled||0===r.mountQueue.length||(r.idleScheduled=!0,function(e,n=50){const t=globalThis;"function"==typeof t.requestIdleCallback?t.requestIdleCallback(()=>e(),{timeout:n}):setTimeout(e,16)}(()=>{r.idleScheduled=!1;let e=0;for(;e<i&&r.mountQueue.length>0;){const n=r.mountQueue.shift();"mounting"===r.state[n]&&(s(n,"mounted"),e++)}r.mountQueue.length>0&&u()}))}return{register(e,n){const o=r.elById.get(e);if(o&&o!==n){const e=r.io;e&&e.unobserve(o),r.idByEl.delete(o)}r.elById.set(e,n),r.idByEl.set(n,e),s(e,"pending");const i=r.io?r.io:"undefined"==typeof IntersectionObserver?null:(r.io=new IntersectionObserver(c,{root:a,rootMargin:t}),r.io);i?i.observe(n):s(e,"mounted")},unregister(e){const n=r.elById.get(e);if(n){const t=r.io;t&&t.unobserve(n),r.idByEl.delete(n),r.elById.delete(e)}const t=r.disposeTimers.get(e);t&&(clearTimeout(t),r.disposeTimers.delete(e));const o=r.mountQueue.indexOf(e);o>=0&&r.mountQueue.splice(o,1),r.held.delete(e),function(e){const n=r.state[e];void 0!==n&&"idle"!==n&&r.counts[n]--,delete r.state[e]}(e)},setHeld(e,n){if(n){r.held.add(e);const n=r.disposeTimers.get(e);n&&(clearTimeout(n),r.disposeTimers.delete(e)),"disposing"===r.state[e]&&s(e,"mounted")}else r.held.delete(e)},isMounted(e){const n=r.state[e];return"mounted"===n||"disposing"===n},getState:e=>r.state[e]??"idle",get state(){return r.state},getStats:()=>({...r.counts}),dispose(){r.io&&(r.io.disconnect(),r.io=null);for(const e of r.disposeTimers.values())clearTimeout(e);r.disposeTimers.clear(),r.elById.clear(),r.held.clear(),r.mountQueue.length=0;for(const e of Object.keys(r.state))delete r.state[e];r.counts.pending=0,r.counts.mounting=0,r.counts.mounted=0,r.counts.disposing=0}}}function Ye(e){const n=[];switch(e.source.kind){case"instanceEvent":case"lifecycle":n.push({canvasId:e.source.canvasId,instanceId:e.source.instanceId});break;case"page":case"dataSource":break;default:!function(e){throw new Error(`[hc-canvas/bindingRefs] Unhandled BindingSource.kind: ${e.kind}`)}(e.source)}switch(e.target.kind){case"instanceMethod":case"instanceEmit":case"instanceDataInput":n.push({canvasId:e.target.canvasId,instanceId:e.target.instanceId});break;default:!function(e){throw new Error(`[hc-canvas/bindingRefs] Unhandled BindingTarget.kind: ${e.kind}`)}(e.target)}return n}function Ge(e,n,t){for(const o of Ye(e))if(o.instanceId===n&&o.canvasId===t)return!0;return!1}function He(e){const n={type:e.type,canvas:{...e.canvas,width:{...e.canvas.width},height:{...e.canvas.height}}};return e.background&&(n.background={...e.background,...e.background.image?{image:{...e.background.image}}:{}}),e.behavior&&(n.behavior={...e.behavior}),e.guides&&(n.guides={...e.guides,...e.guides.items?{items:[...e.guides.items]}:{}}),e.rootLayout&&(n.rootLayout="grid"===(t=e.rootLayout).mode?{...t,columns:t.columns?t.columns.map(e=>({...e})):[],rows:t.rows?t.rows.map(e=>({...e})):[],...t.cells?{cells:{...t.cells}}:{},..."object"==typeof t.gap&&null!==t.gap?{gap:{...t.gap}}:{}}:"split"===t.mode?{...t,ratios:Array.isArray(t.ratios)?[...t.ratios]:[]}:{...t}),n;var t}function Ue(e={}){return Z(e)}function We(){return{schemaVersion:"1",layout:{type:"free",canvas:{width:{mode:"fill"},height:{mode:"fill"}}},instances:[],bindings:[]}}function Je(t={schemaVersion:"1",layout:{type:"free",canvas:{width:{mode:"fill"},height:{mode:"fill"}}},instances:[],bindings:[]}){const o=fe(ue(t)),i=e({schemaVersion:"1",layout:He(o.layout),instances:o.instances.map(e=>({...e,rect:{...e.rect}})),bindings:o.bindings.map(e=>Z(e)),componentOverrides:Ue(o.componentOverrides)}),a=new Map;function r(){a.clear();for(const e of i.instances)a.has(e.instanceId)||a.set(e.instanceId,e)}function s(e){const n=a.get(e);return void 0===n?-1:i.instances.indexOf(n)}function c(e){return i.bindings.findIndex(n=>n.id===e)}return r(),{get document(){return i},instanceCount:n(()=>i.instances.length),bindingCount:n(()=>i.bindings.length),addInstance(e){if(s(e.instanceId)>=0)return void console.warn(`[hc-canvas/doc-store] instanceId "${e.instanceId}" 已存在,addInstance 忽略`);const n=e.rect?{...e.rect}:function(e){if(!e)return{x:0,y:0,w:0,h:0};const n=(e,n)=>"number"==typeof e&&Number.isFinite(e)?e:n;return{x:n(e.x,0),y:n(e.y,0),w:n(e.width,0),h:n(e.height,0)}}(e.layoutBox),t={...e,rect:n};!0===t.locked&&(void 0===t.lockPosition&&(t.lockPosition=!0),void 0===t.lockSize&&(t.lockSize=!0)),i.instances.push(t),a.set(t.instanceId,i.instances[i.instances.length-1])},removeInstance(e){var n;const t=s(e);t<0||(i.instances.splice(t,1),function(e){a.delete(e);const n=i.instances.find(n=>n.instanceId===e);n&&a.set(e,n)}(e),null==(n=i.componentOverrides)||delete n[e],i.bindings=i.bindings.filter(n=>!Ge(n,e)))},updateInstance(e,n){const t=a.get(e);if(t&&(Object.assign(t,n),n.rect&&t.layoutBox&&(t.layoutBox={...t.layoutBox,x:t.rect.x,y:t.rect.y,..."px"===t.layoutBox.widthMode?{width:t.rect.w}:{},..."px"===t.layoutBox.heightMode?{height:t.rect.h}:{}}),n.layoutBox)){const e=t.layoutBox??n.layoutBox,o=e=>"number"==typeof e&&Number.isFinite(e);t.rect={x:o(e.x)?e.x:t.rect.x,y:o(e.y)?e.y:t.rect.y,w:"px"===e.widthMode&&o(e.width)?e.width:t.rect.w,h:"px"===e.heightMode&&o(e.height)?e.height:t.rect.h}}},moveInstance(e,n,t){const o=a.get(e);o&&(o.rect.x=n,o.rect.y=t,o.layoutBox&&(o.layoutBox={...o.layoutBox,x:n,y:t}))},resizeInstance(e,n,t){const o=a.get(e);if(!o)return;const i=Math.max(1,n),r=Math.max(1,t);o.rect.w=i,o.rect.h=r,o.layoutBox&&(o.layoutBox={...o.layoutBox,width:i,height:r,widthMode:"px",heightMode:"px"})},setInstanceProp(e,n,t){const o=a.get(e);o&&(o.props={...o.props,[n]:t})},setInstanceLocked(e,n){const t=a.get(e);t&&(t.locked=n,n?(t.lockPosition=!0,t.lockSize=!0):(delete t.lockPosition,delete t.lockSize))},setInstanceSize(e,n){const t=a.get(e);if(t)if(null===n)delete t.size,t.layoutBox&&(t.layoutBox={...t.layoutBox,width:t.rect.w,height:t.rect.h,widthMode:"px",heightMode:"px"});else if(t.size=n,t.layoutBox){const e=n.width,o=n.height,i={...t.layoutBox};e&&("px"===e.mode?(i.widthMode="px","number"==typeof e.value&&Number.isFinite(e.value)&&(i.width=e.value)):"percent"===e.mode?(i.widthMode="percent","number"==typeof e.value&&Number.isFinite(e.value)&&(i.width=e.value)):"fill"===e.mode?(i.widthMode="fill",Number.isFinite(i.width)||(i.width=t.rect.w)):"auto"!==e.mode&&"hug"!==e.mode||(i.widthMode="auto",Number.isFinite(i.width)||(i.width=t.rect.w))),o&&("px"===o.mode?(i.heightMode="px","number"==typeof o.value&&Number.isFinite(o.value)&&(i.height=o.value)):"percent"===o.mode?(i.heightMode="percent","number"==typeof o.value&&Number.isFinite(o.value)&&(i.height=o.value)):"fill"===o.mode?(i.heightMode="fill",Number.isFinite(i.height)||(i.height=t.rect.h)):"auto"!==o.mode&&"hug"!==o.mode||(i.heightMode="auto",Number.isFinite(i.height)||(i.height=t.rect.h))),t.layoutBox=i}},setInstanceContainerLayout(e,n){const t=a.get(e);t&&(null===n?delete t.containerLayout:t.containerLayout=n)},updateInstanceLayoutBox(e,n){const t=a.get(e);if(!t)return;const o=t.layoutBox??{x:t.rect.x,y:t.rect.y,width:t.rect.w,height:t.rect.h,widthMode:"px",heightMode:"px",overflow:"hidden"},i={},r=["x","y","width","height"];for(const e of r){const t=n[e];"number"==typeof t&&Number.isFinite(t)&&(i[e]=t)}if("px"!==n.widthMode&&"percent"!==n.widthMode&&"fill"!==n.widthMode&&"auto"!==n.widthMode||(i.widthMode=n.widthMode),"px"!==n.heightMode&&"percent"!==n.heightMode&&"fill"!==n.heightMode&&"auto"!==n.heightMode||(i.heightMode=n.heightMode),"hidden"!==n.overflow&&"visible"!==n.overflow&&"auto"!==n.overflow||(i.overflow=n.overflow),0===Object.keys(i).length)return;const s={...o,...i};t.layoutBox=s;const c=i.widthMode??o.widthMode,d=i.heightMode??o.heightMode;t.rect={x:s.x,y:s.y,w:"px"===c?s.width:t.rect.w,h:"px"===d?s.height:t.rect.h}},updateInstanceLayoutItem(e,n){const t=a.get(e);if(!t)return;if(null===n)return void delete t.layoutItem;const o=["order","grow","shrink","row","column","rowSpan","columnSpan","ratio"],i={};for(const e of o){const t=n[e];"number"==typeof t&&Number.isFinite(t)&&(i[e]=t)}if(0===Object.keys(i).length)return;const r=t.layoutItem??{};t.layoutItem={...r,...i}},setInstanceRotation(e,n){const t=a.get(e);t&&Number.isFinite(n)&&(0===n?delete t.rotation:t.rotation=n)},duplicateInstance(e,n,t){var o;const r=a.get(e);if(!r)return;const s=Z(r);if(s.instanceId=n,s.rect={...s.rect,x:r.rect.x+t.x,y:r.rect.y+t.y},s.layoutBox&&(s.layoutBox={...s.layoutBox,x:s.layoutBox.x+t.x,y:s.layoutBox.y+t.y}),delete s.locked,delete s.lockPosition,delete s.lockSize,a.has(n))return void console.warn(`[hc-canvas/doc-store] duplicateInstance: newInstanceId "${n}" 已存在,忽略`);i.instances.push(s),a.set(n,i.instances[i.instances.length-1]);const c=null==(o=i.componentOverrides)?void 0:o[e];c&&(i.componentOverrides={...i.componentOverrides??{},[n]:{...Z(c),instanceId:n}})},addBinding(e){if(c(e.id)>=0)return void console.warn(`[hc-canvas/doc-store] binding id "${e.id}" 已存在,addBinding 忽略`);const[n]=ne([e]);n?i.bindings.push(Z(n)):console.warn(`[hc-canvas/doc-store] addBinding "${null==e?void 0:e.id}" dropped by normalize`)},removeBinding(e){const n=c(e);n<0||i.bindings.splice(n,1)},updateBinding(e,n){const t=i.bindings.find(n=>n.id===e);if(!t)return;const o=Z(n);Object.assign(t,o)},updateLayout(e){for(const n of Object.keys(e)){const t=e[n];void 0===t?delete i.layout[n]:i.layout[n]=t}},setComponentOverride(e,n){null!==n?(i.componentOverrides||(i.componentOverrides={}),i.componentOverrides[e]=n):i.componentOverrides&&e in i.componentOverrides&&delete i.componentOverrides[e]},replaceDocument(e){const n=fe(ue(e));i.schemaVersion="1",i.layout=He(n.layout),i.instances=n.instances.map(e=>({...e,rect:{...e.rect}})),r(),i.bindings=n.bindings.map(e=>Z(e)),i.componentOverrides=Ue(n.componentOverrides)},getInstance:e=>a.get(e),listInstancesByComponentVersionKey:e=>i.instances.filter(n=>n.componentVersionKey===e)}}function Qe(){const t=e({ids:[],freeSplit:null});return{selectedIds:n(()=>t.ids),size:n(()=>t.ids.length),primaryId:n(()=>t.ids[0]),freeSplitSelection:n(()=>t.freeSplit),select(e){t.ids=[e],t.freeSplit=null},toggleSelect(e){const n=t.ids.indexOf(e);n>=0?t.ids.splice(n,1):t.ids.push(e),t.freeSplit=null},addToSelection(e){t.freeSplit=null,t.ids.includes(e)||t.ids.push(e)},removeFromSelection(e){const n=t.ids.indexOf(e);n>=0&&t.ids.splice(n,1)},clearSelection(){t.ids=[],t.freeSplit=null},selectAll(e){t.ids=Array.from(new Set(e)),t.freeSplit=null},purgeOrphans(e){const n=new Set(e);t.ids=t.ids.filter(e=>n.has(e))},isSelected:e=>t.ids.includes(e),selectFreeSplitLeaf(e,n){t.freeSplit={kind:"freeSplitLeaf",containerId:e,leafId:n},t.ids=[]},selectFreeSplitDivider(e,n,o){t.freeSplit={kind:"freeSplitDivider",containerId:e,nodeId:n,dividerIndex:o},t.ids=[]},clearFreeSplitSelection(){t.freeSplit=null}}}function Ze(t={}){const{minScale:o=.25,maxScale:i=4,initialScale:a=1}=t,r=e({scale:a,panX:0,panY:0});function s(e){return Math.max(o,Math.min(i,e))}return{state:r,scale:n(()=>r.scale),panX:n(()=>r.panX),panY:n(()=>r.panY),setScale(e){r.scale=s(e)},zoomAt(e,n){const t=r.scale,o=s(t+n);if(o===t)return;const i=o/t;r.panX=e.x-(e.x-r.panX)*i,r.panY=e.y-(e.y-r.panY)*i,r.scale=o},setPan(e,n){r.panX=e,r.panY=n},panBy(e,n){r.panX+=e,r.panY+=n},resetView(){r.scale=a,r.panX=0,r.panY=0},fitToScreen(e,n,t=40){const o=Math.max(1,n.w-2*t),i=Math.max(1,n.h-2*t),a=o/e.w,c=i/e.h,d=s(Math.min(a,c)),l=e.w*d,u=e.h*d;r.scale=d,r.panX=(n.w-l)/2,r.panY=(n.h-u)/2},toCanvasPoint:e=>({x:(e.x-r.panX)/r.scale,y:(e.y-r.panY)/r.scale}),toViewportPoint:e=>({x:e.x*r.scale+r.panX,y:e.y*r.scale+r.panY})}}function en(e){var n;return e.parentId??(null==(n=e.slotPlacement)?void 0:n.parentInstanceId)}function nn(e,n){const t=new Map;for(const n of e){const e=en(n);if(!e)continue;const o=t.get(e);o?o.push(n.instanceId):t.set(e,[n.instanceId])}const o=[n],i=new Set([n]);for(let e=0;e<o.length;e+=1)for(const n of t.get(o[e])??[])i.has(n)||(i.add(n),o.push(n));return{instanceIds:o,descendantCount:o.length-1}}function tn(e,n){if("leaf"===e.type)return e.leafId===n?e:null;for(const t of e.children){const e=tn(t,n);if(e)return e}return null}function on(e,n){if("leaf"===e.type)return null;if(e.nodeId===n)return e;for(const t of e.children){const e=on(t,n);if(e)return e}return null}function an(e){return"leaf"===e.type?!0===e.locked:e.children.some(e=>an(e))}function rn(e){return"leaf"===e.type?[e]:e.children.flatMap(e=>rn(e))}const sn=e=>({ok:!1,reason:e}),cn=e=>({ok:!0,root:e});function dn(e,n){return"leaf"===e.type?n(e):{...e,children:e.children.map(e=>dn(e,n))}}function ln(e,n){if("leaf"===e.type)return e.leafId===n?e:null;for(const t of e.children){const e=ln(t,n);if(e)return e}return null}function un(e,n){if("leaf"===e.type)return null;if(e.nodeId===n)return e;for(const t of e.children){const e=un(t,n);if(e)return e}return null}function pn(e,n,t){const o=un(e,n);if(!o)return sn(`resize: branch "${n}" not found`);if(t.length!==o.children.length)return sn(`resize: sizes arity ${t.length} !== children ${o.children.length}`);const i=t.findIndex(e=>ae(e));if(i>=0)return sn(`resize: sizes[${i}] invalid NodeSize`);const a=e=>"leaf"===e.type?e:e.nodeId===n?{...e,sizes:t.map(e=>({...e}))}:{...e,children:e.children.map(a)};return cn(a(e))}function fn(e,n){return n?[{mode:"ratio",value:e},{mode:"ratio",value:1-e}]:[{mode:"ratio",value:1-e},{mode:"ratio",value:e}]}const hn=["freeSplitFill","freeSplitClear","freeSplitSwap","freeSplitResize","freeSplitSplit","freeSplitMerge"];function gn(e){return hn.includes(e.type)}function vn(e,n,t){const o=n.root,{containerId:i}=e.payload;switch(e.type){case"freeSplitFill":{const{leafId:n,instance:a}=e.payload,r=tn(o,n);if(!r||null!==r.instanceId)return null;if(t.some(e=>e.instanceId===a.instanceId))return null;const s=function(e,n,t){return ln(e,n)?cn(dn(e,e=>e.leafId===n?{...e,instanceId:t}:e)):sn(`fill: leaf "${n}" not found`)}(o,n,a.instanceId);if(!s.ok)return null;const c={...a,parentId:i,slot:"default",placement:"container"};return{containerId:i,nextRoot:s.root,addInstance:c}}case"freeSplitClear":{const{leafId:n}=e.payload,a=tn(o,n);if(!a||null===a.instanceId)return null;if(!t.some(e=>e.instanceId===a.instanceId))return null;const r=function(e,n){return ln(e,n)?cn(dn(e,e=>e.leafId===n?{...e,instanceId:null}:e)):sn(`clear: leaf "${n}" not found`)}(o,n);if(!r.ok)return null;const s=function(e,n){const t=[n],o=[n];for(;o.length>0;){const n=o.shift();for(const i of e)i.parentId===n&&(t.push(i.instanceId),o.push(i.instanceId))}return t}(t,a.instanceId);return{containerId:i,nextRoot:r.root,removeInstanceIds:s}}case"freeSplitSwap":{const{leafIdA:n,leafIdB:t}=e.payload,a=tn(o,n),r=tn(o,t);if(a&&r&&a.instanceId===r.instanceId)return null;const s=function(e,n,t){if(n===t)return sn("swap: same leaf");const o=ln(e,n),i=ln(e,t);if(!o)return sn(`swap: leaf "${n}" not found`);if(!i)return sn(`swap: leaf "${t}" not found`);const a=o.instanceId,r=i.instanceId;return cn(dn(e,e=>e.leafId===n?{...e,instanceId:r}:e.leafId===t?{...e,instanceId:a}:e))}(o,n,t);return s.ok?{containerId:i,nextRoot:s.root}:null}case"freeSplitResize":{const{nodeId:n,sizes:t}=e.payload,a=on(o,n);if(a&&function(e,n){if(e.length!==n.length)return!1;for(let t=0;t<e.length;t++)if(e[t].mode!==n[t].mode||e[t].value!==n[t].value||e[t].min!==n[t].min||e[t].max!==n[t].max)return!1;return!0}(a.sizes,t))return null;const r=pn(o,n,t);return r.ok?{containerId:i,nextRoot:r.root}:null}case"freeSplitSplit":{const{leafId:n,edge:t,newLeafShare:a,newLeafId:r,newNodeId:s}=e.payload,c=function(e,n,t,o,i,a){if(!(o>0&&o<1))return sn(`split: newLeafShare ${o} not in (0,1)`);if(i===a)return sn("split: newLeafId === newNodeId");const r=function(e){const n=new Set,t=e=>{"leaf"===e.type?n.add(e.leafId):(n.add(e.nodeId),e.children.forEach(t))};return t(e),n}(e);if(r.has(i))return sn(`split: newLeafId "${i}" already exists`);if(r.has(a))return sn(`split: newNodeId "${a}" already exists`);if(!ln(e,n))return sn(`split: leaf "${n}" not found`);const s=function(e){return"left"===e||"right"===e?"row":"col"}(t),c=function(e){return"left"===e||"top"===e}(t),d={type:"leaf",leafId:i,instanceId:null},l=e=>c?[d,e]:[e,d];if("leaf"===e.type)return cn({type:"split",nodeId:a,dir:s,children:l(e),sizes:fn(o,c)});const u=e=>{if("leaf"===e.type)return e;const t=e.children.findIndex(e=>"leaf"===e.type&&e.leafId===n);if(t>=0){const n=e.children[t];if(e.dir===s){const[i,a]=function(e,n,t){const o=e.value*n,i=e.value*(1-n),a=n=>({mode:e.mode,value:n}),r=n=>({mode:e.mode,value:n,...void 0!==e.min?{min:e.min}:{},...void 0!==e.max?{max:e.max}:{}});return t?[a(o),r(i)]:[r(i),a(o)]}(e.sizes[t],o,c),r=[...e.children.slice(0,t),...l(n),...e.children.slice(t+1)],s=[...e.sizes.slice(0,t),i,a,...e.sizes.slice(t+1)];return{...e,children:r,sizes:s}}const i={type:"split",nodeId:a,dir:s,children:l(n),sizes:fn(o,c)},r=[...e.children];return r[t]=i,{...e,children:r}}return{...e,children:e.children.map(u)}};return cn(u(e))}(o,n,t,a,r,s);return c.ok?{containerId:i,nextRoot:c.root}:null}case"freeSplitMerge":{const{leafId:n}=e.payload,t=tn(o,n);if(!t||null!==t.instanceId)return null;const a=function(e,n){if("leaf"===e.type)return sn("merge: root leaf has no parent");let t=!1;const o=e=>{if("leaf"===e.type)return e;const i=e.children.findIndex(e=>"leaf"===e.type&&e.leafId===n);if(i>=0){t=!0;const n=i-1>=0?i-1:i+1,o=e.sizes[i],s=e.children.filter((e,n)=>n!==i),c=e.sizes.filter((e,n)=>n!==i),d=n<i?n:n-1;return c[d]=(r=o,(a=c[d]).mode===r.mode?{...a,value:a.value+r.value}:a),1===s.length?s[0]:{...e,children:s,sizes:c}}var a,r;return{...e,children:e.children.map(o)}},i=o(e);return t?cn(i):sn(`merge: leaf "${n}" not found as a branch child`)}(o,n);return a.ok?{containerId:i,nextRoot:a.root}:null}}}function mn(e,n){if(!0===e.structureLocked)return!1;if("split"===n.op||"merge"===n.op){const t=tn(e.root,n.leafId);if(!t)return!1;if(!0===t.locked)return!1}return!0}function yn(e){return!0!==e.structureLocked&&!an(e.root)}const In=new WeakMap;function wn(e){const n=new Map;return{resolve(t){const o=function(e){return e.id||e.url||""}(t);if(o&&n.has(o))return n.get(o);if(!e){const e=t.url??"";return o&&n.set(o,e),e}const i=e.resolve(t);return"string"==typeof i?(o&&n.set(o,i),i):(o&&n.set(o,i),i.then(e=>{o&&n.set(o,e)},e=>{console.warn(`[hc-canvas/assets] resolve("${o}") 失败,缓存里删条目允许重试:`,e),o&&n.delete(o)}),i)},__clearCache(){n.clear()}}}function xn(e,n,t){if(!n||0===Object.keys(n).length)return`${e}::{}`;const o=bn(n,t);return null===o?`${e}::__fresh_${Date.now()}_${Math.random().toString(36).slice(2,8)}__`:`${e}::${o}`}function bn(e,n,t=new WeakSet){if(null==e)return JSON.stringify(e);const o=typeof e;if("string"===o||"number"===o||"boolean"===o)return JSON.stringify(e);if("function"===o||"symbol"===o||"bigint"===o)return null==n||n(),null;if(Array.isArray(e)){if(t.has(e))return null==n||n(),null;t.add(e);const o=[];for(const i of e){const e=bn(i,n,t);if(null===e)return null;o.push(e)}return`[${o.join(",")}]`}if("object"===o){const o=Object.getPrototypeOf(e);if(o!==Object.prototype&&null!==o)return null==n||n(),null;const i=e;if(t.has(i))return null==n||n(),null;t.add(i);const a=Object.keys(i).sort(),r=[];for(const e of a){const o=bn(i[e],n,t);if(null===o)return null;r.push(`${JSON.stringify(e)}:${o}`)}return`{${r.join(",")}}`}return null==n||n(),null}function Sn(e){const n=new Map,t=new Map,o=new Map,i=new Map,a=new Map,r=new Map;let s=!1,c=!1,d=0,l=null;function u(e){if(!c&&null!==l)try{l(e)}catch(e){console.error("[hc-canvas/dataStore] trace bridge listener threw",e)}}function p(e){try{e()}catch{}}function f(e,n){const t=o.get(n);let i;if(t)for(const e of t)if(!r.has(e)){i=e;break}void 0!==i?r.set(i,e):p(e)}function h(e,n){var t;const a=o.get(e);if(a)for(const e of a)null==(t=i.get(e))||t.onUpdate(n)}function g(e,t){let o=n.get(e);return o||(o={cacheKey:e,sourceId:t,status:"idle"},n.set(e,o)),o}function v(t,r,s){if(!e)return;const l=a.get(t);l&&l.abort();const p=new AbortController;a.set(t,p);const f=g(t,r);f.status="loading",f.requestParams=s;const v=f.writeSeq??0;Promise.resolve().then(()=>async function(e,n){return{value:await Promise.resolve(e.query(n))}}(e,{sourceId:r,params:s,signal:p.signal})).then(e=>{if(c)return;if(a.get(t)!==p)return;a.delete(t);const o=n.get(t);o&&((o.writeSeq??0)>v?u({kind:"data-query-skipped",cacheKey:t,sourceId:r,writeSeq:o.writeSeq,reason:"race-stale"}):(o.status="success",o.value=e.value,o.error=void 0,o.lastFetchedAt=Date.now(),o.writeSeq=++d,u({kind:"data-source-update",cacheKey:t,sourceId:r,writeSeq:o.writeSeq,value:e.value}),h(t,e.value)))}).catch(e=>{if(c)return;if(function(e){if(null===e||"object"!=typeof e)return!1;return"AbortError"===e.name}(e))return;if(a.get(t)!==p)return;a.delete(t);const s=n.get(t);s&&((s.writeSeq??0)>v?u({kind:"data-query-skipped",cacheKey:t,sourceId:r,writeSeq:s.writeSeq,reason:"race-stale-reject"}):(s.status="error",s.error=e,s.lastFetchedAt=Date.now(),function(e,n){var t,a;const r=o.get(e);if(r)for(const e of r)null==(a=null==(t=i.get(e))?void 0:t.onError)||a.call(t,n)}(t,e)))})}function m(e){if(c)return;const{bindingId:d,sourceId:l,params:u,onUpdate:p,onError:h}=e,g=xn(l,u,()=>{s||(console.warn(`[hc-canvas/dataStore] params for "${l}" contains non-plain values; fresh query every call (no cache)`),s=!0)});!function(e,i){const s=t.get(e);if(s===i)return;if(s){const t=o.get(s);if(t&&(t.delete(e),0===t.size)){o.delete(s);const e=a.get(s);e&&(e.abort(),a.delete(s)),n.delete(s)}const i=r.get(e);i&&(r.delete(e),f(i,s))}t.set(e,i);let c=o.get(i);c||(c=new Set,o.set(i,c)),c.add(e)}(d,g),i.set(d,{onUpdate:p,onError:h});const m=n.get(g);if(m){if("success"===m.status)return void p(m.value);if("error"===m.status)return void(null==h||h(m.error));if("loading"===m.status)return}v(g,l,u)}return{request:m,subscribe:function(n){if(c)return;const{bindingId:i,sourceId:a,params:s,onUpdate:l,onError:f}=n;let v=!0;const y=[],I=()=>{v=!1;for(const e of y)e();y.length=0};if(m({bindingId:i,sourceId:a,params:s,onUpdate:e=>{v?y.push(()=>l(e)):l(e)},onError:f?e=>{v?y.push(()=>f(e)):f(e)}:void 0}),!e)return void I();const w=t.get(i);if(!w)return void I();let x=!0;try{const n=function(e,n){if(e.subscribe)return e.subscribe(n,e=>{if(c)return;if(!x)return;if(!o.has(w))return;const n=g(w,a);n.status="success",n.value=e,n.lastFetchedAt=Date.now(),n.writeSeq=++d,u({kind:"data-source-update",cacheKey:w,sourceId:a,writeSeq:n.writeSeq,value:e}),h(w,e)})}(e,{sourceId:a,params:s});(function(e,n){const t=r.get(e);t&&p(t),r.set(e,n)})(i,n?()=>{x=!1;try{n()}catch{}}:()=>{x=!1}),I()}catch(e){x=!1,I(),c||null==f||f(e)}},removeBinding:function(e,s){if(c)return;const d=!0===(null==s?void 0:s.preserveCache),l=r.get(e);l&&r.delete(e),i.delete(e);const u=function(e){const n=t.get(e);if(!n)return;t.delete(e);const i=o.get(n);return i&&(i.delete(e),0===i.size&&o.delete(n)),n}(e);if(u){if(l&&f(l,u),!o.has(u)){const e=n.get(u);if(!d||"success"!==(null==e?void 0:e.status)){const e=a.get(u);e&&(e.abort(),a.delete(u)),n.delete(u)}}}else l&&p(l)},invalidate:function(e){if(c)return;const t=[];for(const[o,i]of n)void 0!==e&&i.sourceId!==e||t.push(o);for(const e of t){const t=n.get(e);if(!t)continue;const i=o.get(e);if(!i||0===i.size){n.delete(e);const t=a.get(e);t&&(t.abort(),a.delete(e));continue}t.status="stale",v(e,t.sourceId,t.requestParams)}},getSnapshot:function(){return{entries:Array.from(n.values()).map(e=>({cacheKey:e.cacheKey,sourceId:e.sourceId,status:e.status,value:e.value,error:e.error,lastFetchedAt:e.lastFetchedAt}))}},getCachedBySourceId:function(e,t){if(c)return;const o=xn(e,t,()=>{s||(console.warn(`[hc-canvas/dataStore] params for "${e}" contains non-plain values; cannot compute stable cache key, cache lookup will miss`),s=!0)}),i=n.get(o);return i?{value:i.value,status:i.status}:void 0},disposeAll:function(){if(!c){c=!0;for(const e of a.values())try{e.abort()}catch{}a.clear();for(const e of r.values())try{e()}catch{}r.clear(),n.clear(),t.clear(),o.clear(),i.clear(),l=null}},attachTraceBridge:function(e){return c?()=>{}:(l=e,()=>{l===e&&(l=null)})},getBindingsForCacheKey:function(e){const n=o.get(e);return n?Array.from(n):[]},get isDisposed(){return c}}}const kn=Symbol("hc:canvas:context");function Mn(e={}){var o,r;const s=e.canvasId??$,c=Je(e.initialDocument),d=Qe(),l=Ze(e.viewport),u=Xe(e.scheduler),p=Sn(null==(o=e.adapters)?void 0:o.data);let f=!1;const h=function(){const e=new WeakSet;return{mint(n){const o=t({type:"freeSplitRestore",payload:n});return e.add(o),o},isMarked:n=>"object"==typeof n&&null!==n&&e.has(n)&&"freeSplitRestore"===n.type}}(),g=n(()=>{const n=e.freeSplitEnabled;return("function"==typeof n?n():n)??!1}),v=n(()=>{const n=e.freeSplitControlsAlways;return("function"==typeof n?n():n)??!1}),m=e.cascadeRemove??!0,y=[];e.hooks&&y.push(e.hooks);const I=i(0),w=n(()=>I.value>0),x=i({}),b=n(()=>x.value),S=n(()=>{var n;const t=(null==(n=e.getMode)?void 0:n.call(e))??"design",o=function(e){switch(e){case"design":return{selectable:!0,draggable:!0,resizable:!0,keyboardMove:!0,snap:!0,grid:!1,allowOverflow:!0,locked:!1};case"preview":case"runtime":return{selectable:!1,draggable:!1,resizable:!1,keyboardMove:!1,snap:!0,grid:!1,allowOverflow:!0,locked:!1};case"inspect":return{selectable:!0,draggable:!1,resizable:!1,keyboardMove:!1,snap:!0,grid:!1,allowOverflow:!0,locked:!1}}}(t),i=c.document.layout.behavior??{};if("design"!==t){const{selectable:e,draggable:n,resizable:t,keyboardMove:a,...r}=i;return{...o,...r,...x.value}}return{...o,...i,...x.value}}),k=wn(null==(r=e.adapters)?void 0:r.assets),M=i("select"),z=i(null),T=n(()=>z.value??M.value),L=i(null),C=n(()=>L.value),B=i(null),P=i({w:0,h:0}),D=n(()=>P.value),R=n(()=>{const e=c.document.layout,n=P.value;return{w:ze(e.canvas.width,n.w,1920),h:ze(e.canvas.height,n.h,1080)}}),E=i([]),A=n(()=>E.value),O=i(0),F=n(()=>O.value>0);function j(e){if(!e)return null;const n=c.getInstance(e),t=null==n?void 0:n.containerLayout;return t&&"free-split"===t.mode?t:null}function q(){const e=d.freeSplitSelection.value;if(!e)return;const n=j(e.containerId);if(!n)return void d.clearFreeSplitSelection();if("freeSplitLeaf"===e.kind)return void(tn(n.root,e.leafId)||d.clearFreeSplitSelection());const t=on(n.root,e.nodeId);(!t||e.dividerIndex<0||e.dividerIndex>=t.children.length-1)&&d.clearFreeSplitSelection()}const N={canvasId:s,document:c,selection:d,viewport:l,scheduler:u,adapters:e.adapters??{},dataStore:p,dispatch:function(e){var n,t;if(f)return void console.warn("[hc-canvas/context] dispatch called after dispose()");if("freeSplitRestore"===e.type)return void(h.isMarked(e)?function(e){const{containerId:n,containerLayout:t,addInstances:o,addBindings:i,removeInstanceIds:a}=e.payload;if(c.setInstanceContainerLayout(n,Z(t)),o)for(const e of o)c.addInstance(Z(e));if(i)for(const e of i)c.addBinding(Z(e));if(a)for(const e of a)c.removeInstance(e),d.removeFromSelection(e);q()}(e):console.warn("[hypercard] freeSplitRestore 未经内部铸造(疑似伪造),已拒绝。"));const o=function(e){var n;if(gn(e)){if(!g.value)return console.warn("[hypercard] free-split 布局未启用(本 canvas gate 关),free-split action 已忽略。"),null;const n=j(e.payload.containerId);if(!n)return null;if("freeSplitSplit"===e.type){if(!mn(n,{op:"split",leafId:e.payload.leafId}))return console.warn("[hypercard] free-split split 被锁(structureLocked / leaf.locked),已忽略。"),null}else if("freeSplitMerge"===e.type){if(!mn(n,{op:"merge",leafId:e.payload.leafId}))return console.warn("[hypercard] free-split merge 被锁(structureLocked / leaf.locked),已忽略。"),null;const t=tn(n.root,e.payload.leafId);if(t&&null!==t.instanceId)return console.warn("[hypercard] free-split merge 仅支持空叶(先 clear 内容),已忽略。"),null}else if("freeSplitResize"===e.type&&!mn(n,{op:"resize"}))return console.warn("[hypercard] free-split resize 被锁(structureLocked),已忽略。"),null;return e}if("removeInstance"===e.type){const n=c.getInstance(e.payload.instanceId),t=j(null==n?void 0:n.parentId);if(n&&t){const e=rn(t.root).find(e=>e.instanceId===n.instanceId);if(e)return{type:"freeSplitClear",payload:{containerId:n.parentId,leafId:e.leafId}}}}if("addInstance"===e.type){const t=e.payload.instance;if(j(t.parentId??(null==(n=t.slotPlacement)?void 0:n.parentInstanceId)))return console.warn("[hypercard] free-split 容器子实例必须通过 freeSplitFill 创建(含 slotPlacement 入口),addInstance 已拒绝。"),null}if("duplicateInstance"===e.type){const n=c.getInstance(e.payload.instanceId);if(n){if(j(n.instanceId))return console.warn("[hypercard] free-split 容器不支持浅复制(树/flat 会不一致),已拒绝。"),null;if(j(n.parentId))return console.warn("[hypercard] free-split 容器子实例不支持复制(首版),已拒绝。"),null}}if("updateInstance"===e.type&&e.payload.patch){const n=e.payload.patch;if("parentId"in n){const e=n.parentId;if(e&&j(e))return console.warn("[hypercard] 不能 reparent 进 free-split 容器(请用 freeSplitFill),已拒绝。"),null}const t=n.slotPlacement;if((null==t?void 0:t.parentInstanceId)&&j(t.parentInstanceId))return console.warn("[hypercard] 不能用 slotPlacement 把实例挂进 free-split 容器(请用 freeSplitFill),已拒绝。"),null;if(["parentId","slot","placement","slotPlacement"].some(e=>e in n)){const n=c.getInstance(e.payload.instanceId);if(n&&j(n.parentId))return console.warn("[hypercard] 不能用 updateInstance 改 free-split 子实例的归属(parentId/slot/placement/slotPlacement);请用 freeSplitClear/freeSplitFill,已拒绝。"),null}}if("setRootLayout"===e.type&&null!==e.payload.rootLayout&&"free-split"===e.payload.rootLayout.mode)return console.warn("[hypercard] setRootLayout: rootLayout 不支持 free-split(仅容器实例),已忽略。"),null;if("setContainerLayout"===e.type){const n=j(e.payload.instanceId);if(n&&!yn(n))return console.warn("[hypercard] free-split 容器被锁(structureLocked / leaf.locked),不能整树替换 containerLayout,已忽略。"),null;if(null!==e.payload.containerLayout&&"free-split"===e.payload.containerLayout.mode&&!g.value)return console.warn("[hypercard] free-split 布局未启用(本 canvas gate 关),setContainerLayout 已忽略。"),null}if("updateLayout"===e.type&&e.payload.patch.rootLayout&&"free-split"===e.payload.patch.rootLayout.mode){console.warn("[hypercard] updateLayout: rootLayout 不支持 free-split(仅容器实例),已剥除该字段。");const{rootLayout:n,...t}=e.payload.patch;return 0===Object.keys(t).length?null:{type:"updateLayout",payload:{patch:t}}}return e}(e);if(null!==o){for(const e of y)if(!1===(null==(n=e.onBeforeAction)?void 0:n.call(e,o)))return;switch(o.type){case"addInstance":c.addInstance(o.payload.instance);break;case"removeInstance":{const e=m?nn(c.document.instances,o.payload.instanceId).instanceIds:[o.payload.instanceId];for(const n of e)c.removeInstance(n),d.removeFromSelection(n);q();break}case"updateInstance":c.updateInstance(o.payload.instanceId,o.payload.patch);break;case"moveInstance":c.moveInstance(o.payload.instanceId,o.payload.x,o.payload.y);break;case"resizeInstance":c.resizeInstance(o.payload.instanceId,o.payload.w,o.payload.h);break;case"setInstanceProp":c.setInstanceProp(o.payload.instanceId,o.payload.key,o.payload.value);break;case"addBinding":c.addBinding(o.payload.binding);break;case"removeBinding":c.removeBinding(o.payload.bindingId);break;case"updateBinding":c.updateBinding(o.payload.bindingId,o.payload.patch);break;case"updateLayout":c.updateLayout(o.payload.patch);break;case"setRootLayout":{const{rootLayout:e}=o.payload;c.updateLayout({rootLayout:null===e?void 0:e});break}case"replaceDocument":c.replaceDocument(o.payload.document),d.purgeOrphans(c.document.instances.map(e=>e.instanceId)),q();break;case"setComponentOverride":{const{instanceId:e,override:n}=o.payload;if(void 0===c.getInstance(e)){console.warn(`[hc-canvas/context] setComponentOverride: instance "${e}" 不存在,no-op`);break}c.setComponentOverride(e,n);break}case"setInstanceLocked":c.setInstanceLocked(o.payload.instanceId,o.payload.locked);break;case"duplicateInstance":c.duplicateInstance(o.payload.instanceId,o.payload.newInstanceId,o.payload.offset??{x:20,y:20});break;case"setInstanceSize":{const{instanceId:e,size:n}=o.payload;if(null===n)c.setInstanceSize(e,null);else{const t=ye(void 0,n);c.setInstanceSize(e,t??null)}break}case"setContainerLayout":{const{instanceId:e,containerLayout:n}=o.payload;if(null===n)c.setInstanceContainerLayout(e,null);else{const t=xe(n);null!==t&&c.setInstanceContainerLayout(e,t)}q();break}case"updateLayoutBox":c.updateInstanceLayoutBox(o.payload.instanceId,o.payload.patch);break;case"updateLayoutItem":c.updateInstanceLayoutItem(o.payload.instanceId,o.payload.patch);break;case"updateRotation":c.setInstanceRotation(o.payload.instanceId,o.payload.value);break;case"select":d.select(o.payload.instanceId);break;case"toggleSelect":d.toggleSelect(o.payload.instanceId);break;case"addToSelection":d.addToSelection(o.payload.instanceId);break;case"removeFromSelection":d.removeFromSelection(o.payload.instanceId);break;case"clearSelection":d.clearSelection();break;case"selectAll":d.selectAll(o.payload.instanceIds);break;case"freeSplitFill":case"freeSplitClear":case"freeSplitSwap":case"freeSplitResize":case"freeSplitSplit":case"freeSplitMerge":!function(e){const n=j(e.payload.containerId);if(!n)return;const t=vn(e,n,c.document.instances);if(!t)return;const o=Z({...n,root:t.nextRoot});if(c.setInstanceContainerLayout(e.payload.containerId,o),t.addInstance&&c.addInstance(Z(t.addInstance)),t.removeInstanceIds)for(const e of t.removeInstanceIds)c.removeInstance(e),d.removeFromSelection(e);q()}(o);break;default:{const e=o;console.warn("[hc-canvas/context] unknown action",e)}}for(const e of y)null==(t=e.onAfterAction)||t.call(e,o)}},dispose:function(){f||(f=!0,I.value=0,u.dispose(),p.disposeAll())},isBatching:w,beginBatch:function(){f||I.value++},endBatch:function(e){var n;if(!f&&0!==I.value)if(I.value>1)I.value--;else{for(const t of y)null==(n=t.onAfterBatch)||n.call(t,e);I.value=0}},registerHooks:function(e){return y.push(e),()=>{const n=y.indexOf(e);n>=0&&y.splice(n,1)}},isRecordingSuppressed:F,suppressRecording:function(e){O.value++;try{return e()}finally{O.value--}},freeSplitEnabled:g,freeSplitControlsAlways:v,cascadeRemove:m,effectiveBehavior:S,interactionOptions:b,setInteractionOptions:function(e){const n={...x.value};for(const t of Object.keys(e)){const o=e[t];void 0===o?delete n[t]:n[t]=o}x.value=n},resolveAsset:function(e){return k.resolve(e)},toolMode:T,setToolMode:function(e){M.value=e},setTemporaryToolMode:function(e){z.value=e},mouseCanvasPoint:C,setMouseCanvasPoint:function(e){L.value=e},measuredStageSize:D,measuredCanvasSize:R,setMeasuredStageSize:function(e){const n=Math.max(0,Math.round(e.w)),t=Math.max(0,Math.round(e.h));P.value.w===n&&P.value.h===t||(P.value={w:n,h:t})},layoutIssues:A,setLayoutIssues:function(e){E.value=e},cannotDragLayoutManagedChildEvent:a(B),setCannotDragLayoutManagedChildEvent:function(e){B.value=e}};return function(e,n){In.set(e,n)}(N,{computeInverse:e=>function(e,n,t){const o=n.document,{containerId:i}=e.payload,a=o.getInstance(i),r=null==a?void 0:a.containerLayout;if(!r||"free-split"!==r.mode)return null;const s=r,c=vn(e,s,o.document.instances);if(!c)return null;const d={containerId:i,containerLayout:Z(s)};if(c.removeInstanceIds&&c.removeInstanceIds.length>0){const e=c.removeInstanceIds;d.addInstances=e.map(e=>o.getInstance(e)).filter(e=>void 0!==e).map(e=>Z(e));const n=o.document.bindings.filter(n=>e.some(e=>Ge(n,e))).map(e=>Z(e));n.length>0&&(d.addBindings=n)}return c.addInstance&&(d.removeInstanceIds=[c.addInstance.instanceId]),t.mint(d)}(e,N,h)}),N}function zn(e){r(kn,e)}function Tn(){const e=o(kn);if(!e)throw new Error("[hc-canvas] useCanvasContext() called outside <CanvasProvider> / <HyperCardCanvasDesigner>. Make sure the component tree is wrapped by a provider.");return e}const Ln="default",Cn=8,Bn=8;function Pn(e){return e.slot??Ln}function Dn(e,n){const t=[],o=n.resolveContract,i=n.maxDepth??8,a=new Map;for(const n of e.instances)a.set(n.instanceId,n);for(const n of e.instances){if(void 0===n.parentId&&void 0!==n.slot&&n.slot!==Ln){Rn(t,"orphan-slot",n.instanceId,`slot "${n.slot}" 没有 parentId,数据不完整`);continue}if(void 0===n.parentId)continue;if(!a.has(n.parentId)){Rn(t,"missing-parent",n.instanceId,`parentId "${n.parentId}" 指向不存在的实例`);continue}"absolute"!==n.placement&&"canvas"!==n.placement||Rn(t,"absolute-child-rejected",n.instanceId,"parentId + placement='absolute'|'canvas' 在 D4.5f MVP 不支持,只允许 root absolute/canvas 或 child slot/container");const e=a.get(n.parentId),i=o(e.componentVersionKey);if(!i)continue;const r=i.slotsDecl??[];if(0===r.length){Rn(t,"parent-not-layout",n.instanceId,`父组件 "${e.componentId}" 不是布局组件(slotsDecl 为空)`);continue}const s=Pn(n),c=En(r,s);c?c.accepts&&c.accepts.length>0&&(c.accepts.includes(n.componentId)||Rn(t,"slot-not-allowed-component",n.instanceId,`slot "${s}" 不允许 componentId "${n.componentId}"(accepts: ${c.accepts.join(", ")})`)):Rn(t,"invalid-slot",n.instanceId,`slot "${s}" 不在父 "${e.componentId}" 的 slotsDecl 中(可能组件升级删除了该 slot)`)}const r=new Map;for(const n of e.instances){if(void 0===n.parentId)continue;const e=Pn(n),t=`${n.parentId}::${e}`;let o=r.get(t);o||(o=[],r.set(t,o)),o.push(n)}for(const[e,n]of r){if(n.length<=1)continue;const[i,r]=$n(e),s=a.get(i);if(!s)continue;const c=o(s.componentVersionKey);if(!c)continue;const d=En(c.slotsDecl??[],r);if(d&&!0!==d.multiple)for(let e=1;e<n.length;e++)Rn(t,"slot-multiple-violated",n[e].instanceId,`slot "${r}" 不允许多个子实例(SlotDecl.multiple !== true)`)}const s=new Map;for(const n of e.instances)s.set(n.instanceId,0);for(const n of e.instances)0===s.get(n.instanceId)&&c(n.instanceId,[],0);function c(e,n,o){s.set(e,1);const r=a.get(e);if(o>i)return Rn(t,"depth-exceeded",e,`嵌套深度 ${o} 超过上限 ${i}`),void s.set(e,2);const d=r.parentId;if(void 0===d)return void s.set(e,2);if(!a.has(d))return void s.set(e,2);const l=s.get(d);if(1===l)return Rn(t,"cycle",e,`parentId 链成环:${[...n,e,d].join(" → ")}`),void s.set(e,2);2!==l?(c(d,[...n,e],o+1),s.set(e,2)):s.set(e,2)}return t}function Rn(e,n,t,o){e.push({kind:n,instanceId:t,detail:o})}function En(e,n){return e.find(e=>e.name===n)}function $n(e){const n=e.indexOf("::");return[e.slice(0,n),e.slice(n+2)]}const An=["data-hc-leaf","data-hc-leaf-container"],On=s({name:"SplitTreeRenderer",__name:"SplitTreeRenderer",props:{containerId:{},node:{},register:{type:Function},unregister:{type:Function},gap:{}},setup(e){const t=e,o=n(()=>"leaf"===t.node.type?t.node:null),i=n(()=>"split"===t.node.type?t.node:null);function a(e){const n=o.value;n&&(e instanceof HTMLElement?t.register(t.containerId,n.leafId,e):t.unregister(t.containerId,n.leafId))}function r(e){return e?"px"===e.mode?`${e.value}px`:`minmax(0, ${e.value}fr)`:"minmax(0, 1fr)"}function s(e){return"leaf"===e.type?e.leafId:e.nodeId}const v=n(()=>{const e=i.value;if(!e)return{};const n=[];for(let t=0;t<e.children.length;t++)n.push(r(e.sizes[t]));const o=n.join(" ")||"minmax(0, 1fr)",a={display:"grid",width:"100%",height:"100%",boxSizing:"border-box"};return"row"===e.dir?(a.gridTemplateColumns=o,a.gridTemplateRows="100%"):(a.gridTemplateRows=o,a.gridTemplateColumns="100%"),t.gap&&t.gap>0&&(a.gap=`${t.gap}px`),a});return(n,t)=>{const r=c("SplitTreeRenderer",!0);return o.value?(d(),l("div",{key:0,ref:a,"data-hc-leaf":o.value.leafId,"data-hc-leaf-container":e.containerId,class:"hc-fs-leaf",style:{width:"100%",height:"100%","box-sizing":"border-box"}},null,8,An)):i.value?(d(),l("div",{key:1,class:"hc-fs-branch",style:u(v.value)},[(d(!0),l(p,null,f(i.value.children,n=>(d(),h(r,{key:s(n),"container-id":e.containerId,node:n,register:e.register,unregister:e.unregister,gap:e.gap},null,8,["container-id","node","register","unregister","gap"]))),128))],4)):g("",!0)}}}),Fn={containers:new Map};function jn(e){return"object"==typeof e&&null!==e}function qn(e){if(!jn(e))return{ok:!1,reason:"empty-root"};const n=new Set,t=new Set,o=new Map;let i=null;const a=(e,r)=>{if(i)return;if(r>8)return void(i="depth-exceeded");if(!jn(e))return void(i="empty-root");const s=e.type;if("leaf"===s){const{leafId:a,instanceId:r}=e;if("string"!=typeof a)return void(i="empty-root");if(null!=r&&"string"!=typeof r)return void(i="empty-root");if(n.has(a))return void(i="duplicate-id");if(n.add(a),"string"==typeof r){if(t.has(r))return void(i="duplicate-instance");t.add(r),o.set(r,a)}return}if("split"===s){const{nodeId:t,dir:o,children:s,sizes:c}=e;if("string"!=typeof t)return void(i="empty-root");if("row"!==o&&"col"!==o)return void(i="empty-root");if(!Array.isArray(s)||!Array.isArray(c))return void(i="empty-root");if(n.has(t))return void(i="duplicate-id");n.add(t);for(const e of c)if(ae(e))return void(i="bad-size");for(const e of s)a(e,r+1);return}i="empty-root"};return a(e,1),i?{ok:!1,reason:i}:{ok:!0,instanceToLeaf:o}}function Nn(e,n,t){const o=(null==e?void 0:e.onError)??"log";switch(o){case"stop":return"stop";case"log":return console.error(`[hc-canvas/wirePageBindings] binding "${t}" threw:`,n),"continue";case"continue":return"continue";default:return console.error(`[hc-canvas/wirePageBindings] binding "${t}" threw (unknown onError="${String(o)}"):`,n),"continue"}}function Vn(e,n){return e&&"passthrough"!==e.kind?"static"===e.kind?function(e){if("function"==typeof structuredClone)try{return structuredClone(e)}catch{}try{return JSON.parse(JSON.stringify(e))}catch{return[...e]}}(e.args):"pickPath"===e.kind?function(e,n){const t=[];let o;for(const i of e){const e=Kn(n,i.from);void 0===i.to?t.push(e):"number"==typeof i.to?(_n(t,i.to+1),t[i.to]=e):(o||(t.length>0&&"object"==typeof t[0]&&null!==t[0]&&!Array.isArray(t[0])?o=t[0]:(o={},0===t.length?t.push(o):t[0]=o)),o[i.to]=e)}return t}(e.paths,n):[n]:[n]}function Kn(e,n){if(""===n)return e;const t=n.split(".");let o=e;for(const e of t){if(null==o)return;if("object"!=typeof o)return;o=o[e]}return o}function _n(e,n){for(;e.length<n;)e.push(void 0)}function Xn(e,n,t,o){e.debouncePendingTimer=null;const i=e.debounceDirty,a=e.debouncePendingChainId,r=e.debouncePendingPayload;e.debouncePendingChainId=null,e.debouncePendingPayload=void 0,e.debounceDirty=!1,t&&i&&null!==a&&Gn(n,e).pass&&o(r,a)}function Yn(e,n,t){e.throttleTrailingTimer=null;const o=e.throttleTrailingPendingChainId,i=e.throttleTrailingPendingPayload;e.throttleTrailingPendingChainId=null,e.throttleTrailingPendingPayload=void 0,e.throttleWindowStartTs=null,null!==o&&(n.once&&e.onceConsumed||(n.once&&(e.onceConsumed=!0),e.throttleLastFireTs=Un(),t(i,o)))}function Gn(e,n){const t=e.throttle;if(t){t.leading;const e=t.windowMs,o=Un(),i=n.throttleLastFireTs;if(null!==i&&o-i<e)return{pass:!1,reason:"throttle-window"};n.throttleLastFireTs=o}if(e.once){if(n.onceConsumed)return{pass:!1,reason:"once-consumed"};n.onceConsumed=!0}return{pass:!0}}function Hn(e){return!!(e&&(e.throttle&&!1===e.throttle.leading&&!1===e.throttle.trailing||e.debounce&&!1===e.debounce.leading&&!1===e.debounce.trailing))}function Un(){return Date.now()}let Wn=0;function Jn(e){var n,t;const o=e.canvasId,{source:i}=e,a=e.dataStore,r=new Set;let s="off",c=0,d=!1;const l="w"+ ++Wn;let u=0;function p(){return`${l}-${++u}`}let f=0;function h(e){C.hasListeners("binding:trace")&&C.emit("binding:trace",{canvasId:o,ts:Date.now(),seq:++f,...e})}let g=!1,m=null;function y(){g&&(m&&m(),m=null,g=!1)}const I=new Map,w=new Map,x=new Set,b=new Set,S=new Set,k=new Set,M=new Map;let z=new Set;const T=[],L=[],C=function(e){const n=new Set,t=new Set,o=new Set;return{on(i,a){var r;if("binding:fire"===i){const e=a;return n.add(e),()=>n.delete(e)}if("binding:error"===i){const e=a;return t.add(e),()=>t.delete(e)}const s=a;return o.add(s),null==(r=null==e?void 0:e.onTraceListenerCountChange)||r.call(e,o.size),()=>{var n;o.delete(s),null==(n=null==e?void 0:e.onTraceListenerCountChange)||n.call(e,o.size)}},emit(e,i){if("binding:fire"===e)for(const e of n)try{e(i)}catch(e){console.error("[hc-canvas/wirePageBindings] listener threw",e)}else if("binding:error"===e)for(const e of t)try{e(i)}catch(e){console.error("[hc-canvas/wirePageBindings] listener threw",e)}else for(const e of o)try{e(i)}catch(e){console.error("[hc-canvas/wirePageBindings] trace listener threw",e)}},hasListeners:e=>"binding:fire"===e?n.size>0:"binding:error"===e?t.size>0:o.size>0,clear(){n.clear(),t.clear(),o.clear()}}}({onTraceListenerCountChange:function(e){e>0?!g&&a&&(m=a.attachTraceBridge(e=>{if(d)return;const n=a.getBindingsForCacheKey(e.cacheKey);for(const t of n)h({kind:e.kind,bindingId:t,cacheKey:e.cacheKey,sourceId:e.sourceId,writeSeq:e.writeSeq,reason:e.reason,payload:e.value})}),g=!0):y()}}),B=function(e){let n=[],t=200,o=null,i=null;return{start:function(a){i&&(i(),i=null,n=[]),t=(null==a?void 0:a.capacity)??200,o=(null==a?void 0:a.filterKinds)&&a.filterKinds.length>0?new Set(a.filterKinds):null,i=e.on("binding:trace",e=>{o&&!o.has(e.kind)||(n.push(e),n.length>t&&n.shift())})},stop:function(){i&&(i(),i=null);const e=n.slice();return n=[],e},snapshot:function(){return n.slice()},get isRunning(){return null!==i}}}({on:(e,n)=>C.on(e,n)});function P(e){return void 0===e.canvasId||e.canvasId===o}function D(e){for(const n of Ye(e))if(void 0!==n.canvasId&&n.canvasId!==o)return!0;return!1}function R(e){return JSON.stringify({id:e.id,type:e.type,disabled:e.disabled??!1,source:e.source,target:e.target,mapping:e.mapping??null,schedule:e.schedule??null,errorPolicy:e.errorPolicy??null})}function E(e,n){return void 0===n||R(e)!==n}function $(){var e;return(null==(e=i.getDocument())?void 0:e.bindings)??[]}function j(e){return $().find(n=>n.id===e)}function q(e){try{e()}catch(e){console.error("[hc-canvas/wirePageBindings] cleanup threw",e)}}function N(e,n){C.emit("binding:fire",e),h({kind:"fire",bindingId:e.bindingId,chainId:n,payload:e.payload,args:e.args})}function V(e,n){C.emit("binding:error",e),h({kind:(null==n?void 0:n.traceKind)??"error",bindingId:e.bindingId,chainId:null==n?void 0:n.chainId,code:e.code,message:e.message,detail:e.detail})}function K(e,n=!1){const t=I.get(e);if(t)for(const e of t)q(e);I.delete(e);const o=w.get(e);if(o){const n=function(e){const n={};return null!==e.debouncePendingTimer&&(clearTimeout(e.debouncePendingTimer),e.debouncePendingTimer=null,null!==e.debouncePendingChainId&&(n.droppedDebounce={chainId:e.debouncePendingChainId,payload:e.debouncePendingPayload})),null!==e.debouncePendingTimer||null===e.debouncePendingChainId||n.droppedDebounce||(n.droppedDebounce={chainId:e.debouncePendingChainId,payload:e.debouncePendingPayload}),e.debouncePendingChainId=null,e.debouncePendingPayload=void 0,e.debounceDirty=!1,null!==e.throttleTrailingTimer&&(clearTimeout(e.throttleTrailingTimer),e.throttleTrailingTimer=null),null!==e.throttleTrailingPendingChainId&&(n.droppedThrottleTrailing={chainId:e.throttleTrailingPendingChainId,payload:e.throttleTrailingPendingPayload}),e.throttleTrailingPendingChainId=null,e.throttleTrailingPendingPayload=void 0,e.throttleWindowStartTs=null,n}(o);n.droppedDebounce&&h({kind:"scheduled-dropped",bindingId:e,chainId:n.droppedDebounce.chainId,payload:n.droppedDebounce.payload}),n.droppedThrottleTrailing&&h({kind:"scheduled-dropped",bindingId:e,chainId:n.droppedThrottleTrailing.chainId,payload:n.droppedThrottleTrailing.payload}),w.delete(e)}b.delete(e),M.delete(e),S.delete(e),k.delete(e),r.delete(e),a&&a.removeBinding(e,{preserveCache:n})}function _(e=!1){for(const n of[...I.keys()])K(n,e)}function X(e){if(d)return;if(I.has(e.id))return;if(D(e))return void(S.has(e.id)||(V({bindingId:e.id,code:"unsupported-cross-canvas"}),S.add(e.id),h({kind:"wire-skipped",bindingId:e.id,reason:"unsupported-cross-canvas"})));const n=function(e){return e.disabled?"disabled":x.has(e.id)?"stopped":null}(e);if(n)return void h({kind:"wire-skipped",bindingId:e.id,reason:n});if("data-preview"===s&&"dataSource"!==e.source.kind)return void h({kind:"wire-skipped",bindingId:e.id,reason:"mode-matrix-data-preview"});Hn(e.schedule)&&!k.has(e.id)&&(console.warn(`[hc-canvas/wirePageBindings] schedule.{throttle|debounce}.{leading=false,trailing=false} 永远不会 fire (binding "${e.id}")`),k.add(e.id));const t=[];switch(e.source.kind){case"instanceEvent":{const n=O(e.source.instanceId,o);if(!n)return void b.add(e.id);const i=e.source.event,a=n.on(i,n=>G(e,n));t.push(a);break}case"lifecycle":case"page":break;case"dataSource":{if(!a)return void(r.has(e.id)||(V({bindingId:e.id,code:"no-data-adapter"}),h({kind:"wire-skipped",bindingId:e.id,reason:"no-data-adapter"}),r.add(e.id)));const n=e.source,t="change"===n.watch,o=p(),i=n=>G(e,n),s=n=>{V({bindingId:e.id,code:"data-query-failed",message:n instanceof Error?n.message:String(n),detail:n},{chainId:o}),"stop"===Nn(e.errorPolicy,n,e.id)&&x.add(e.id)};h({kind:"data-query-started",bindingId:e.id,sourceId:n.sourceId,chainId:o}),t?a.subscribe({bindingId:e.id,sourceId:n.sourceId,onUpdate:i,onError:s}):a.request({bindingId:e.id,sourceId:n.sourceId,onUpdate:i,onError:s});break}default:return}I.set(e.id,t),M.set(e.id,R(e))}function Y(){for(const e of $())X(e)}function G(e,n){if(d)return;if("off"===s)return;if("data-preview"===s&&"dataSource"!==e.source.kind)return;if(x.has(e.id))return void h({kind:"stopped-skipped",bindingId:e.id});if(D(e))return;if(c>=8){const n=p();return void V({bindingId:e.id,code:"cycle-detected"},{chainId:n,traceKind:"cycle-detected"})}const t=p(),o=function(e,n,t,o){return Hn(e)?{fire:!1,deferred:!1,reason:"schedule-no-fire"}:(null==e?void 0:e.debounce)?function(e,n,t,o){const i=e.debounce,a=i.leading??!1,r=i.trailing??!0,s=i.windowMs;if(null===n.debouncePendingTimer){if(a){const t=Gn(e,n);return t.pass?(n.debounceLeadingFireTs=Un(),n.debounceDirty=!1,n.debouncePendingPayload=void 0,n.debouncePendingChainId=null,{fire:!0,deferred:!1,scheduleDeferred:t=>{n.debouncePendingTimer=setTimeout(()=>{Xn(n,e,r,t)},s)}}):{fire:!1,deferred:!1,reason:t.reason}}return n.debouncePendingPayload=t,n.debouncePendingChainId=o,n.debounceDirty=!0,{fire:!1,deferred:!0,scheduleDeferred:t=>{n.debouncePendingTimer=setTimeout(()=>{Xn(n,e,r,t)},s)}}}const c=null!==n.debouncePendingChainId?{chainId:n.debouncePendingChainId,payload:n.debouncePendingPayload}:void 0;return n.debounceDirty=!0,r&&(n.debouncePendingPayload=t,n.debouncePendingChainId=o),clearTimeout(n.debouncePendingTimer),n.debouncePendingTimer=null,r?{fire:!1,deferred:!0,droppedByReschedule:c,scheduleDeferred:t=>{n.debouncePendingTimer=setTimeout(()=>{Xn(n,e,r,t)},s)}}:{fire:!1,deferred:!1,reason:"debounce-window",scheduleDeferred:t=>{n.debouncePendingTimer=setTimeout(()=>{Xn(n,e,r,t)},s)}}}(e,n,t,o):function(e,n,t,o){const i=null==e?void 0:e.throttle;if(!i)return function(e,n){if(null==e?void 0:e.once){if(n.onceConsumed)return{fire:!1,deferred:!1,reason:"once-consumed"};n.onceConsumed=!0}return{fire:!0,deferred:!1}}(e,n);const a=i.leading??!0,r=i.trailing??!1,s=i.windowMs,c=Un();if(a){const i=n.throttleLastFireTs;if(!(null!==i&&c-i<s))return(null==e?void 0:e.once)&&n.onceConsumed?{fire:!1,deferred:!1,reason:"once-consumed"}:((null==e?void 0:e.once)&&(n.onceConsumed=!0),n.throttleLastFireTs=c,{fire:!0,deferred:!1});if(!r)return{fire:!1,deferred:!1,reason:"throttle-window"};const a=null!==n.throttleTrailingPendingChainId?{chainId:n.throttleTrailingPendingChainId,payload:n.throttleTrailingPendingPayload}:void 0;if(n.throttleTrailingPendingPayload=t,n.throttleTrailingPendingChainId=o,null===n.throttleTrailingTimer){const t=s-(c-i);return{fire:!1,deferred:!0,scheduleDeferred:o=>{n.throttleTrailingTimer=setTimeout(()=>{Yn(n,e,o)},t)}}}return{fire:!1,deferred:!1,reason:"throttle-window",droppedByReschedule:a}}if(null===n.throttleWindowStartTs)return n.throttleWindowStartTs=c,n.throttleTrailingPendingPayload=t,n.throttleTrailingPendingChainId=o,{fire:!1,deferred:!0,reason:"leading-disabled",scheduleDeferred:t=>{n.throttleTrailingTimer=setTimeout(()=>{Yn(n,e,t)},s)}};const d=null!==n.throttleTrailingPendingChainId?{chainId:n.throttleTrailingPendingChainId,payload:n.throttleTrailingPendingPayload}:void 0;return n.throttleTrailingPendingPayload=t,n.throttleTrailingPendingChainId=o,{fire:!1,deferred:!1,reason:"throttle-window",droppedByReschedule:d}}(e,n,t,o)}(e.schedule,function(e){let n=w.get(e);return n||(n={onceConsumed:!1,throttleLastFireTs:null,throttleWindowStartTs:null,throttleTrailingPendingPayload:void 0,throttleTrailingPendingChainId:null,throttleTrailingTimer:null,debouncePendingTimer:null,debouncePendingPayload:void 0,debouncePendingChainId:null,debounceDirty:!1,debounceLeadingFireTs:null},w.set(e,n)),n}(e.id),n,t),i=function(e){if(e)return e.throttle?{kind:"throttle",windowMs:e.throttle.windowMs,leading:e.throttle.leading,trailing:e.throttle.trailing}:e.debounce?{kind:"debounce",windowMs:e.debounce.windowMs,leading:e.debounce.leading,trailing:e.debounce.trailing}:void 0}(e.schedule);o.droppedByReschedule&&h({kind:"scheduled-dropped",bindingId:e.id,chainId:o.droppedByReschedule.chainId,payload:o.droppedByReschedule.payload,schedule:i}),o.scheduleDeferred&&o.scheduleDeferred((n,t)=>{d||(h({kind:"scheduled-flushed",bindingId:e.id,chainId:t,payload:n,schedule:i}),H(e,n,t))}),o.reason?h({kind:"scheduled-skipped",bindingId:e.id,chainId:t,reason:o.reason,payload:n,schedule:i}):!o.deferred||o.fire?o.fire&&H(e,n,t):h({kind:"scheduled-deferred",bindingId:e.id,chainId:t,payload:n,schedule:i})}function H(e,n,t){if(d)return;const i=O(e.target.instanceId,o);if(!i)return void V({bindingId:e.id,code:"target-not-mounted"},{chainId:t});let a,r;try{a=Vn(e.mapping,n)}catch(n){return h({kind:"mapping-failed",bindingId:e.id,chainId:t,message:n instanceof Error?n.message:String(n),detail:n}),void("stop"===Nn(e.errorPolicy,n,e.id)&&x.add(e.id))}if("instanceDataInput"===e.target.kind){const o=i.vm.custom,r=null==o?void 0:o[e.target.key];if(!r||"object"!=typeof r||!0!==r.dataInput)return void V({bindingId:e.id,code:"unknown-target-data-input",message:o&&e.target.key in o?`target.key "${e.target.key}" on instance "${e.target.instanceId}" is not declared with dataInput:true`:`target.key "${e.target.key}" not declared on instance "${e.target.instanceId}"`},{chainId:t});try{i.setDataInput(e.target.key,a[0])}catch(n){return"stop"===Nn(e.errorPolicy,n,e.id)&&x.add(e.id),void V({bindingId:e.id,code:"invoke-failed",message:n instanceof Error?n.message:String(n),detail:n},{chainId:t})}return void N({bindingId:e.id,source:e.source,target:e.target,payload:n,args:a},t)}c++;try{r=function(e,n,t){switch(n.kind){case"instanceMethod":return e.call(n.method,...t);case"instanceEmit":return void e.emit(n.event,t[0]);default:return}}(i,e.target,a),N({bindingId:e.id,source:e.source,target:e.target,payload:n,args:a},t)}catch(n){return"stop"===Nn(e.errorPolicy,n,e.id)&&x.add(e.id),void V({bindingId:e.id,code:"invoke-failed",message:n instanceof Error?n.message:String(n),detail:n},{chainId:t})}finally{c--}var s;"object"==typeof(s=r)&&null!==s&&"function"==typeof s.then&&Promise.resolve(r).catch(n=>{d||("stop"===Nn(e.errorPolicy,n,e.id)&&x.add(e.id),V({bindingId:e.id,code:"invoke-failed",message:n instanceof Error?n.message:String(n),detail:n},{chainId:t}))})}const U=null==(n=i.onAction)?void 0:n.call(i,e=>{var n,t,o,i;if(d)return;if("off"===s)return;const a=e;if(a&&"object"==typeof a)switch(a.type){case"addBinding":{const e=null==(t=null==(n=a.payload)?void 0:n.binding)?void 0:t.id;if(!e)return;const o=j(e);o&&X(o);break}case"updateBinding":{const e=null==(o=a.payload)?void 0:o.bindingId;if(!e)return;K(e);const n=j(e);n&&X(n);break}case"removeBinding":{const e=null==(i=a.payload)?void 0:i.bindingId;if(!e)return;K(e),x.delete(e);break}case"replaceDocument":_(),x.clear(),b.clear(),Y();break;case"removeInstance":!function(){const e=new Set($().map(e=>e.id));for(const n of[...I.keys()])e.has(n)||(K(n),x.delete(n));for(const e of $())X(e)}()}});U&&T.push(U);const W=null==(t=i.onDocumentChange)?void 0:t.call(i,()=>{if(d)return;if("off"===s)return;const e=$(),n=new Set(e.map(e=>e.id)),t=new Set(I.keys());for(const e of t)n.has(e)||K(e);for(const n of e)I.has(n.id)?E(n,M.get(n.id))&&(K(n.id),X(n)):X(n)});function J(){return new Set(F({canvasId:o}).map(e=>e.instanceId))}W&&T.push(W),z=J();const Q=v(A,()=>{if(d)return;if("off"===s)return;const e=J(),n=Qn(e,z),t=Qn(z,e);z=e;for(const n of[...b]){const t=j(n);t?Z(t,e)&&(b.delete(n),X(t)):b.delete(n)}if(t.size>0)for(const e of[...I.keys()]){const n=j(e);n&&(Ye(n).some(e=>P(e)&&t.has(e.instanceId))&&(K(e),b.add(e),x.delete(e)))}!function(e){if(0!==e.size)for(const n of $())"lifecycle"===n.source.kind&&"mounted"===n.source.hook&&P({canvasId:n.source.canvasId,instanceId:n.source.instanceId})&&e.has(n.source.instanceId)&&G(n,{instanceId:n.source.instanceId,hook:"mounted"})}(n),function(e){if(0!==e.size)for(const n of $())"lifecycle"===n.source.kind&&"unmounted"===n.source.hook&&P({canvasId:n.source.canvasId,instanceId:n.source.instanceId})&&e.has(n.source.instanceId)&&G(n,{instanceId:n.source.instanceId,hook:"unmounted"})}(t)},{flush:"post"});function Z(e,n){for(const t of Ye(e)){if(!P(t))return!1;if(!n.has(t.instanceId))return!1}return!0}return L.push(Q),{setMode:function(e){d||e!==s&&(_(!0),x.clear(),b.clear(),s=e,"off"!==e&&Y(),"runtime"===e&&function(){for(const e of $())"page"===e.source.kind&&"pageInit"===e.source.hook&&G(e,{hook:"pageInit"})}())},getMode:()=>s,testBinding(e,n){const t=[],i=j(e);if(!i)return t.push({bindingId:e,phase:"skipped",details:{reason:"binding-not-found"}}),t;if(i.disabled)return t.push({bindingId:e,phase:"skipped",details:{reason:"disabled"}}),t;if(D(i))return t.push({bindingId:e,phase:"skipped",details:{reason:"unsupported-cross-canvas"}}),t;let a;try{a=Vn(i.mapping,n),t.push({bindingId:e,phase:"mapping",details:{payload:n,args:a}})}catch(n){return t.push({bindingId:e,phase:"error",details:{stage:"mapping",message:n instanceof Error?n.message:String(n)}}),t}const r=O(i.target.instanceId,o);if(!r)return t.push({bindingId:e,phase:"skipped",details:{reason:"target-not-mounted"}}),t;if("instanceDataInput"===i.target.kind){const n=r.vm.custom,o=null==n?void 0:n[i.target.key];if(!o||"object"!=typeof o||!0!==o.dataInput)return t.push({bindingId:e,phase:"skipped",details:{reason:"unknown-target-data-input",key:i.target.key}}),t}return t.push({bindingId:e,phase:"calling-target",details:{target:i.target,dryRun:!0}}),t.push({bindingId:e,phase:"done",details:{args:a}}),t},on:(e,n)=>C.on(e,n),startTracing(e){B.start(e)},stopTracing:()=>B.stop(),getTraceBuffer:()=>B.snapshot(),dispose:function(){if(!d){"runtime"===s&&function(){for(const e of $())"page"===e.source.kind&&"pageBeforeUnmount"===e.source.hook&&G(e,{hook:"pageBeforeUnmount"})}(),d=!0,_();for(const e of T)q(e);for(const e of L)q(e);T.length=0,L.length=0,x.clear(),b.clear(),S.clear(),k.clear(),M.clear(),z.clear(),w.clear(),B.stop(),C.clear(),y(),s="off"}}}}function Qn(e,n){const t=new Set;for(const o of e)n.has(o)||t.add(o);return t}const Zn=["display","gridTemplateColumns","gridTemplateRows","gridAutoFlow","flexDirection","flexWrap","gap","rowGap","columnGap","justifyContent","alignItems","position"];let et=!1;function nt(e,n){const t="string"==typeof(null==e?void 0:e.js)?e.js:"",o="string"==typeof(null==e?void 0:e.html)?e.html:"",i=j(t,o);return!i.ok&&(null==n?void 0:n.fallback)?n.fallback:{propsDecl:i.propsDecl.map(at),emitsDecl:i.emitsDecl.map(st),methodsDecl:i.methodsDecl.map(rt),slotsDecl:i.slotsDecl.map(ct),modelDecl:i.modelDecl.map(dt),dataInputsDecl:i.dataInputsDecl.map(lt),dataOutputsDecl:i.dataOutputsDecl.map(lt)}}function tt(e,n){const t="string"==typeof(null==e?void 0:e.js)?e.js:"",o="string"==typeof(null==e?void 0:e.html)?e.html:"",i=j(t,o);return!i.ok&&(null==n?void 0:n.fallback)?n.fallback:i.kind}function ot(){return{propsDecl:[],emitsDecl:[],methodsDecl:[],slotsDecl:[],modelDecl:[],dataInputsDecl:[],dataOutputsDecl:[]}}function it(e){if("string"===e||"number"===e||"boolean"===e||"object"===e||"array"===e||"any"===e)return e}function at(e){const n=e.key,t="string"==typeof e.name?e.name:void 0;return{key:n,type:it(e.type)??"string",...void 0!==e.value?{value:e.value}:{},...t&&t!==n?{label:t}:{},...e.enum?{enum:e.enum}:{}}}function rt(e){return{key:e.name,...e.params?{params:e.params}:{}}}function st(e){return{event:e.event}}function ct(e){return{name:e.name,...void 0!==e.multiple?{multiple:e.multiple}:{},...void 0!==e.accepts?{accepts:e.accepts}:{},...void 0!==e.maxChildren?{maxChildren:e.maxChildren}:{},...void 0!==e.label?{label:e.label}:{}}}function dt(e){const n=it(e.type);return{key:e.key,...void 0!==e.prop?{prop:e.prop}:{},...void 0!==e.event?{event:e.event}:{},...n?{type:n}:{},...void 0!==e.defaultValue?{defaultValue:e.defaultValue}:{}}}function lt(e){const n=it(e.type);return{key:e.key,...n?{type:n}:{},...void 0!==e.label?{label:e.label}:{}}}const ut=["data-hc-canvas-id"],pt=["data-instance-id","data-hc-hidden"],ft={key:0,class:"hc-page-instance-fallback",style:{width:"100%",height:"100%",border:"2px dashed #f59e0b",background:"#fef3c7",color:"#92400e",padding:"8px",fontSize:"11px",fontFamily:"monospace",overflow:"hidden",borderRadius:"4px",boxSizing:"border-box"}},ht={style:{opacity:"0.8"}},gt={style:{opacity:"0.6","margin-top":"4px","word-break":"break-all"}},vt={key:2,class:"hc-page-instance-skeleton",style:{width:"100%",height:"100%",background:"linear-gradient(90deg, #f1f5f9 0%, #e2e8f0 50%, #f1f5f9 100%)",backgroundSize:"200% 100%",animation:"hc-skeleton-shimmer 1.5s infinite ease-in-out",borderRadius:"4px",boxSizing:"border-box"}},mt=["data-instance-id","data-hc-placement","data-hc-hidden"],yt={key:0,class:"hc-page-instance-fallback",style:{width:"100%",height:"100%",border:"2px dashed #f59e0b",background:"#fef3c7",color:"#92400e",padding:"8px","font-size":"11px","font-family":"monospace",overflow:"hidden","border-radius":"4px","box-sizing":"border-box"}},It={style:{opacity:"0.6"}},wt=["title"],xt={key:1,class:"hc-page-renderer-empty",style:{padding:"24px",color:"#64748b","font-size":"13px"}},bt=s({__name:"HyperCardPageRenderer",props:{payload:{},document:{},componentSourceMap:{},schedulerOptions:{},canvasId:{},adapters:{},keepHiddenMounted:{type:Boolean}},setup(e,{expose:t}){var a,s;const c=e,T=c.canvasId??function(){var e;const n="undefined"!=typeof globalThis&&"crypto"in globalThis?globalThis.crypto:void 0;return`auto-${(null==(e=null==n?void 0:n.randomUUID)?void 0:e.call(n).replace(/-/g,"").slice(0,8))??Math.random().toString(36).slice(2,10)}`}();r(q,T);const L=Xe(c.schedulerOptions),C=i(null);let B=!1;m(()=>{Ie||y(()=>{var e;if(B)return;if(!C.value)return;if("fill"!==(null==(e=me.value)?void 0:e.canvas.height.mode))return;const n=C.value.parentElement;n&&(n.getBoundingClientRect().height>0||(B=!0,console.warn("[hypercard] HyperCardPageRenderer 父容器高度为 0,fill 模式画布不可见。请给父容器设置明确 height 或改用 px 模式。")))})}),I(()=>{U(T),xe.value&&(xe.value.dispose(),xe.value=null),L.dispose(),be&&be.disposeAll(),T!==$&&N(T)});const P=i(new Map),D=i(new Map),R=new Map,E=i(!1);let A=null;function O(){E.value=!1,A&&clearTimeout(A),A=setTimeout(()=>{E.value=!0},300)}function F(e,n){const t=new Map;if(n.querySelectorAll("[data-hc-slot]").forEach(e=>{if(e.closest("[data-instance-id]")!==n)return;const o=e.getAttribute("data-hc-slot")||Ln;t.has(o)||t.set(o,e)}),function(e,n){if(!e||e.size!==n.size)return!1;for(const[t,o]of n)if(e.get(t)!==o)return!1;return!0}(D.value.get(e),t))return;const o=new Map(D.value);o.set(e,t),D.value=o,j(e,t)}function j(e,n){var t;const o=n.get(Ln);if(!o)return;const i=Y.value.get(e),a="active"===(null==(t=re.value.containers.get(e))?void 0:t.status);!function(e,n,t=!1){!function(e){const n=e.style;for(const e of Zn)n[e]=""}(e);const o=null==n?void 0:n.mode;if(!n||"none"===o||void 0===o)return;if("free"===o)return void(e.style.position="relative");if("free-split"===o)return void(t||et||(et=!0,console.warn("[hypercard] free-split 容器降级平铺(分割树非法 / plan fallback),子实例已平铺显示。")));const i=Ce(n);i&&Object.assign(e.style,i)}(o,null==i?void 0:i.containerLayout,a)}function _(e,n){const t=P.value.get(e);n&&n!==t?(P.value.set(e,n),L.register(e,n),function(e,n){const t=R.get(e);t&&t.disconnect(),F(e,n);const o=new MutationObserver(()=>F(e,n));o.observe(n,{childList:!0,subtree:!0}),R.set(e,o)}(e,n)):!n&&t&&(L.unregister(e),P.value.delete(e),function(e){const n=R.get(e);if(n&&(n.disconnect(),R.delete(e)),D.value.has(e)){const n=new Map(D.value);n.delete(e),D.value=n}}(e))}m(O),v(D,O),I(()=>{for(const e of R.values())e.disconnect();R.clear(),D.value=new Map,ae.clearAll(),A&&clearTimeout(A)});const X=n(()=>{var e;const n=(null==(e=c.payload)?void 0:e.document)??c.document??null;return n?fe(pe(ue(n))):null}),Y=n(()=>{const e=new Map,n=X.value;if(!n)return e;for(const t of n.instances)e.has(t.instanceId)||e.set(t.instanceId,t);return e});v(X,()=>{y(()=>function(){for(const[e,n]of D.value)j(e,n)}())},{flush:"post"});const G=n(()=>function(e){const n={};for(const t of Object.keys(e)){const o=e[t],i=o.source;o&&"ok"===o.status&&i&&("string"==typeof i.html||"string"==typeof i.js)?n[t]={...o,contract:nt({html:i.html??"",js:i.js??"",css:i.css??""},{fallback:o.contract})}:n[t]=o}return n}(c.payload?c.payload.componentVersions:c.componentSourceMap??{})),W=n(()=>{var e;const n=X.value,t=G.value;if(!n)return[];const o=Y.value,i=null==(e=me.value)?void 0:e.rootLayout;return n.instances.map(e=>{var a;const r=t[e.componentVersionKey]??null,s=(null==(a=n.componentOverrides)?void 0:a[e.instanceId])??null,c=s&&s.baseVersionKey===e.componentVersionKey?s:null,d=c?`${c.baseVersionKey}#override:${e.instanceId}`:e.componentVersionKey,l=function(e){var n,t;return void 0===e.parentId?(null==i?void 0:i.mode)??"free":(null==(t=null==(n=o.get(e.parentId))?void 0:n.containerLayout)?void 0:t.mode)??"none"}(e),u=function(e){var n;if(void 0===e.parentId)return"split"===(null==i?void 0:i.mode)?i.direction:void 0;const t=null==(n=o.get(e.parentId))?void 0:n.containerLayout;return"split"===(null==t?void 0:t.mode)?t.direction:void 0}(e);if(c)return{instance:e,asset:r,override:c,renderSource:c.source,scopeId:d,status:"ok",parentMode:l,parentSplitDirection:u};if(!r)return{instance:e,asset:null,override:null,renderSource:null,scopeId:d,status:"missing-source",invalidReason:`componentVersionKey "${e.componentVersionKey}" not in sourceMap`,parentMode:l,parentSplitDirection:u};if("ok"!==r.status)return{instance:e,asset:r,override:null,renderSource:null,scopeId:d,status:"unavailable",invalidReason:r.invalidReason??`component version unavailable (${r.status})`,parentMode:l,parentSplitDirection:u};let p=null;return p=function(e){return!!e&&!0===e.isDraft}(r)?r.lastGoodSource:r.source??null,p?{instance:e,asset:r,override:null,renderSource:p,scopeId:d,status:"ok",parentMode:l,parentSplitDirection:u}:{instance:e,asset:r,override:null,renderSource:null,scopeId:d,status:"missing-source",invalidReason:"asset.status=ok but source missing",parentMode:l,parentSplitDirection:u}})});function J(e){const n=G.value[e];return null==n?void 0:n.contract}const Q=n(()=>{const e=X.value;return e?Dn(e,{resolveContract:J}):[]}),Z=o(kn,null);v(Q,e=>{Z&&"function"==typeof Z.setLayoutIssues&&Z.setLayoutIssues(e)},{immediate:!0});const ee=n(()=>{const e=new Set;for(const n of Q.value)"missing-parent"!==n.kind&&"invalid-slot"!==n.kind&&"parent-not-layout"!==n.kind&&"orphan-slot"!==n.kind&&"cycle"!==n.kind&&"absolute-child-rejected"!==n.kind||e.add(n.instanceId);return e}),ne=n(()=>W.value.filter(e=>void 0===e.instance.parentId)),te=n(()=>W.value.filter(e=>void 0!==e.instance.parentId&&Ne(e.instance.placement)));function oe(e){const n=e.instance,t=n.layoutBox??{x:n.rect.x,y:n.rect.y,width:n.rect.w,height:n.rect.h,widthMode:"px",heightMode:"px",overflow:"hidden"},o=e.parentMode,i=Te(t,n.zIndex,n.rotation,o,e.parentSplitDirection),a=Be(n.layoutItem,o);return a&&Object.assign(i,a),he(n)&&function(e){e.width="100%",e.height="100%",e.position="relative",delete e.left,delete e.top}(i),i}const ie=n(()=>{var e;return Ce(null==(e=me.value)?void 0:e.rootLayout)}),ae=function(){const e=i(new Map);return{map:e,register:function(n,t,o){const i=e.value.get(n);if(i&&i.get(t)===o)return;const a=new Map(e.value),r=new Map(i??[]);r.set(t,o),a.set(n,r),e.value=a},unregister:function(n,t){const o=e.value.get(n);if(!o||!o.has(t))return;const i=new Map(e.value),a=new Map(o);a.delete(t),0===a.size?i.delete(n):i.set(n,a),e.value=i},get:function(n,t){var o;return null==(o=e.value.get(n))?void 0:o.get(t)},clearContainer:function(n){if(!e.value.has(n))return;const t=new Map(e.value);t.delete(n),e.value=t},clearAll:function(){0!==e.value.size&&(e.value=new Map)}}}(),re=n(()=>function(e){if(!e)return Fn;const n=new Map;for(const t of e.instances){const e=t.containerLayout;if(!e||"free-split"!==e.mode)continue;const o=t.instanceId,i=e,a=qn(i.root);a.ok?n.set(o,{status:"active",containerId:o,root:i.root,instanceToLeaf:a.instanceToLeaf}):n.set(o,{status:"fallback",containerId:o,reason:a.reason})}return{containers:n}}(X.value)),se=n(()=>{const e=[];for(const n of re.value.containers.values())"active"===n.status&&e.push(n);return e});function ce(e){var n;return(null==(n=D.value.get(e))?void 0:n.get(Ln))??null}function de(e){const n=e.root;return e.containerId+":"+("leaf"===n.type?n.leafId:n.nodeId)}function le(e){var n;const t=null==(n=Y.value.get(e))?void 0:n.containerLayout;return"free-split"===(null==t?void 0:t.mode)?t.gap??0:0}function he(e){return function(e){const{parentId:n,instanceId:t,effectiveSlot:o,plan:i}=e;if(!n)return null;if(o!==Ln)return null;const a=i.containers.get(n);if(!a||"active"!==a.status)return null;const r=a.instanceToLeaf.get(t);return r?{containerId:n,leafId:r}:null}({parentId:e.parentId,instanceId:e.instanceId,effectiveSlot:Pn(e),plan:re.value})}function ge(e){if(!e.parentId)return null;const n=he(e);if(n){const e=ae.get(n.containerId,n.leafId)??null;return e&&e.isConnected?e:null}const t=D.value.get(e.parentId);if(!t)return null;const o=t.get(Pn(e))??null;return o&&o.isConnected?o:null}function ve(e){return"实例 "+e.instance.instanceId+':slot "'+Pn(e.instance)+'" 不可用'}const me=n(()=>{var e;return(null==(e=X.value)?void 0:e.layout)??null});v(()=>ne.value.map(e=>`${e.instance.instanceId}:${e.instance.hidden?1:0}`),()=>{const e=c.keepHiddenMounted??!0;for(const n of ne.value)L.setHeld(n.instance.instanceId,e&&!0===n.instance.hidden)},{flush:"post",immediate:!0});const ye=n(()=>{if(!me.value)return null;if(Ie){const e=Ie.measuredCanvasSize.value;return{width:`${e.w}px`,height:`${e.h}px`,overflow:me.value.canvas.overflow??"hidden"}}return{width:Pe(me.value.canvas.width),height:Pe(me.value.canvas.height),overflow:me.value.canvas.overflow??"hidden"}}),Ie=o(kn,void 0),we=Ie?null:wn(null==(a=c.adapters)?void 0:a.assets),xe=w(null),be=Ie||!(null==(s=c.adapters)?void 0:s.data)?null:Sn(c.adapters.data);if(!Ie){const e=Jn({canvasId:T,source:{getDocument:()=>X.value,onDocumentChange:e=>v(X,e,{flush:"post"})},dataStore:be??void 0});xe.value=e,y(()=>{e.setMode("runtime")})}const Se=Ie?{invalidateDataSource(e){Ie.dataStore.invalidate(e)},getDataSourceSnapshot:()=>Ie.dataStore.getSnapshot(),getCachedBySourceId:(e,n)=>Ie.dataStore.getCachedBySourceId(e,n)}:be?{invalidateDataSource(e){be.invalidate(e)},getDataSourceSnapshot:()=>be.getSnapshot(),getCachedBySourceId:(e,n)=>be.getCachedBySourceId(e,n)}:null,ke={canvasId:T,getSchedulerStats:()=>L.getStats(),listRuntimeInstances:()=>function(){const e=X.value;if(!e)return[];const n=new Map;for(const e of Q.value)n.set(e.instanceId,!0);const t=L.state;return e.instances.map(e=>{const o=t[e.instanceId];let i,a;switch(o){case"mounting":case"mounted":case"disposing":i=o;break;default:i="pending"}if(n.has(e.instanceId))a="layout-error";else if(e.componentId){const n=e.source;a=!n||n.template||n.script||n.style?"ok":"missing-source"}else a="missing-componentId";return{instanceId:e.instanceId,componentId:e.componentId,mountState:i,timings:K(T,e.instanceId),protocolStatus:a}})}(),getInstanceTimings:e=>K(T,e),getLayoutIssues:()=>Q.value,getPageDocument:()=>X.value};m(()=>{H(T,ke)}),t({binding:xe,data:Se});const Me=i(null);let ze=0;v(()=>{var e,n;return null==(n=null==(e=me.value)?void 0:e.background)?void 0:n.image},e=>{ze++;const n=ze;if(!e)return void(Me.value=null);const t=(o=e,Ie?Ie.resolveAsset(o):we.resolve(o));var o;"string"!=typeof t?(Me.value=null,t.then(t=>{var o,i;n===ze&&(null==(i=null==(o=me.value)?void 0:o.background)?void 0:i.image)===e&&(Me.value=t||null)},()=>{n===ze&&(Me.value=null)})):Me.value=t||null},{immediate:!0,deep:!0});const Le=n(()=>{var e;const n=null==(e=me.value)?void 0:e.background;if(!n)return null;const t={position:"absolute",inset:"0",pointerEvents:"none",zIndex:-1};return n.color&&(t.background=n.color),n.image&&Me.value&&(t.backgroundImage=`url("${Me.value}")`,t.backgroundRepeat="repeat"===n.imageFit?"repeat":"no-repeat",t.backgroundPosition=n.imagePosition??"center","stretch"===n.imageFit?t.backgroundSize="100% 100%":n.imageFit&&"repeat"!==n.imageFit&&"center"!==n.imageFit&&(t.backgroundSize=n.imageFit)),void 0!==n.opacity&&(t.opacity=n.opacity),t});return(e,n)=>me.value&&ye.value?(d(),l("div",{key:0,ref_key:"rootEl",ref:C,class:"hc-page-renderer","data-hc-canvas-id":x(T),style:u({position:"relative",...ye.value,...ie.value??{}})},[Le.value?(d(),l("div",{key:0,class:"hc-canvas-bg","data-hc-canvas-bg":"",style:u(Le.value)},null,4)):g("",!0),(d(!0),l(p,null,f(ne.value,e=>b((d(),l("div",{key:e.instance.instanceId,ref_for:!0,ref:n=>_(e.instance.instanceId,n),"data-instance-id":e.instance.instanceId,"data-hc-hidden":e.instance.hidden?"true":void 0,style:u(oe(e))},["ok"===e.status&&e.renderSource?x(L).isMounted(e.instance.instanceId)?(d(),h(x(V),{key:1,"canvas-id":x(T),"instance-id":e.instance.instanceId,"component-id":e.instance.componentId,"scope-id":e.scopeId,"html-source":e.renderSource.html,"js-source":e.renderSource.js,"css-source":e.renderSource.css,"custom-values":{...e.instance.props,__containerLayout:e.instance.containerLayout}},null,8,["canvas-id","instance-id","component-id","scope-id","html-source","js-source","css-source","custom-values"])):(d(),l("div",vt)):(d(),l("div",ft,[n[0]||(n[0]=S("div",{style:{"font-weight":"600","margin-bottom":"4px"}}," ⚠️ 组件不可渲染 ",-1)),S("div",ht,k(e.instance.alias??e.instance.instanceId),1),S("div",gt,k(e.invalidReason),1)]))],12,pt)),[[M,!e.instance.hidden]])),128)),(d(!0),l(p,null,f(te.value,(e,t)=>{return d(),l(p,{key:`child-${e.instance.instanceId}`},[ge(e.instance)&&!ee.value.has(e.instance.instanceId)?(d(),h(z,{key:0,to:ge(e.instance)},[b(S("div",{ref_for:!0,ref:n=>_(e.instance.instanceId,n),"data-instance-id":e.instance.instanceId,"data-hc-placement":e.instance.placement,"data-hc-hidden":e.instance.hidden?"true":void 0,style:u(oe(e))},["ok"===e.status&&e.renderSource?(d(),h(x(V),{key:1,"canvas-id":x(T),"instance-id":e.instance.instanceId,"component-id":e.instance.componentId,"scope-id":e.scopeId,"html-source":e.renderSource.html,"js-source":e.renderSource.js,"css-source":e.renderSource.css,"custom-values":{...e.instance.props,__containerLayout:e.instance.containerLayout}},null,8,["canvas-id","instance-id","component-id","scope-id","html-source","js-source","css-source","custom-values"])):(d(),l("div",yt,[n[1]||(n[1]=S("div",{style:{"font-weight":"600"}},"⚠️ 组件不可渲染",-1)),S("div",It,k(e.invalidReason),1)]))],12,mt),[[M,!e.instance.hidden]])],8,["to"])):ee.value.has(e.instance.instanceId)||E.value?(d(),l("div",{key:1,class:"hc-layout-issue-warning",title:ve(e),style:u((o=t,{position:"absolute",left:"8px",top:8+28*o+"px",padding:"4px 8px",background:"hsla(40, 90%, 50%, 0.95)",color:"#5b3a00",fontSize:"11px",fontFamily:"ui-monospace, monospace",borderRadius:"4px",zIndex:9999,maxWidth:"60%",textOverflow:"ellipsis",overflow:"hidden",whiteSpace:"nowrap"}))}," ⚠ 布局问题:"+k(e.instance.instanceId)+'(slot "'+k(x(Pn)(e.instance))+'") ',13,wt)):g("",!0)],64);var o}),128)),(d(!0),l(p,null,f(se.value,e=>(d(),l(p,{key:`fs-${e.containerId}`},[ce(e.containerId)?(d(),h(z,{key:0,to:ce(e.containerId)},[(d(),h(On,{key:de(e),"container-id":e.containerId,node:e.root,register:x(ae).register,unregister:x(ae).unregister,gap:le(e.containerId)},null,8,["container-id","node","register","unregister","gap"]))],8,["to"])):g("",!0)],64))),128))],12,ut)):(d(),l("div",xt," No page to render(payload / document 都未提供) "))}}),St=new Map,kt=new Set;function Mt(){const e=Object.freeze(Array.from(St.keys()));for(const n of kt)try{n(e)}catch{}}function zt(e,n){St.set(e,n),Mt()}function Tt(e){St.delete(e)&&Mt()}function Lt(e){return St.get(e)??null}function Ct(){return Object.freeze(Array.from(St.keys()))}function Bt(e){return kt.add(e),()=>{kt.delete(e)}}function Pt(e,n){var t;const o=n.document;switch(e.type){case"addInstance":{const{instance:n}=e.payload;return o.getInstance(n.instanceId)?null:[{type:"removeInstance",payload:{instanceId:n.instanceId}}]}case"removeInstance":{const{instanceId:t}=e.payload;if(!o.getInstance(t))return null;const i=n.cascadeRemove?nn(o.document.instances,t).instanceIds:[t],a=o.document.bindings.filter(e=>i.some(n=>Ge(e,n))),r=[];for(const e of i){const n=o.getInstance(e);n&&r.push({type:"addInstance",payload:{instance:Rt(n)}})}for(const e of a)r.push({type:"addBinding",payload:{binding:Z(e)}});return r}case"updateInstance":{const{instanceId:n,patch:t}=e.payload,i=o.getInstance(n);if(!i)return null;const a={},r=i,s=a;for(const e of Object.keys(t)){const n=r[e];s[e]=Dt(n)?Z(n):n}return[{type:"updateInstance",payload:{instanceId:n,patch:a}}]}case"moveInstance":{const{instanceId:n,x:t,y:i}=e.payload,a=o.getInstance(n);return a?a.rect.x===t&&a.rect.y===i?null:a.layoutBox?[{type:"updateLayoutBox",payload:{instanceId:n,patch:{...a.layoutBox}}}]:[{type:"moveInstance",payload:{instanceId:n,x:a.rect.x,y:a.rect.y}}]:null}case"resizeInstance":{const{instanceId:n,w:t,h:i}=e.payload,a=o.getInstance(n);return a?a.rect.w===t&&a.rect.h===i?null:a.layoutBox?[{type:"updateLayoutBox",payload:{instanceId:n,patch:{...a.layoutBox}}}]:[{type:"resizeInstance",payload:{instanceId:n,w:a.rect.w,h:a.rect.h}}]:null}case"setInstanceProp":{const{instanceId:n,key:t,value:i}=e.payload,a=o.getInstance(n);return a?a.props[t]===i?null:[{type:"updateInstance",payload:{instanceId:n,patch:{props:{...a.props}}}}]:null}case"addBinding":{const{binding:n}=e.payload;return o.document.bindings.some(e=>e.id===n.id)?null:[{type:"removeBinding",payload:{bindingId:n.id}}]}case"removeBinding":{const{bindingId:n}=e.payload,t=o.document.bindings.find(e=>e.id===n);return t?[{type:"addBinding",payload:{binding:Z(t)}}]:null}case"updateBinding":{const{bindingId:n,patch:t}=e.payload,i=o.document.bindings.find(e=>e.id===n);if(!i)return null;const a={},r=i,s=a;for(const e of Object.keys(t)){const n=r[e];s[e]=Dt(n)?Z(n):n}return[{type:"updateBinding",payload:{bindingId:n,patch:a}}]}case"updateLayout":{const{patch:n}=e.payload,t=o.document.layout,i={},a=i;let r=!1;for(const e of Object.keys(n)){const o=t[e];a[e]=Dt(o)?Z(o):o,Object.is(n[e],o)||(r=!0)}return r?[{type:"updateLayout",payload:{patch:i}}]:null}case"setRootLayout":{const{rootLayout:n}=e.payload,t=o.document.layout.rootLayout;return void 0===t&&null===n?null:[{type:"setRootLayout",payload:{rootLayout:void 0!==t?Z(t):null}}]}case"setComponentOverride":{const{instanceId:n,override:i}=e.payload;if(void 0===o.getInstance(n))return null;const a=null==(t=o.document.componentOverrides)?void 0:t[n],r=void 0!==a;return r||null!==i?[{type:"setComponentOverride",payload:{instanceId:n,override:r?Z(a):null}}]:null}case"replaceDocument":return[{type:"replaceDocument",payload:{document:Z(o.document)}}];case"setInstanceLocked":{const{instanceId:n,locked:t}=e.payload,i=o.getInstance(n);if(!i)return null;const a=i.locked??!1,r=i.lockPosition,s=i.lockSize;return a===t&&r===(!!t||void 0)&&s===(!!t||void 0)?null:[{type:"updateInstance",payload:{instanceId:n,patch:{locked:a,lockPosition:r,lockSize:s}}}]}case"duplicateInstance":{const{instanceId:n,newInstanceId:t}=e.payload;return o.getInstance(n)?o.getInstance(t)?null:[{type:"removeInstance",payload:{instanceId:t}}]:null}case"setInstanceSize":{const{instanceId:n,size:t}=e.payload,i=o.getInstance(n);if(!i)return null;const a=i.size,r="size"in i&&void 0!==a;return r||null!==t?[{type:"setInstanceSize",payload:{instanceId:n,size:(r?Z(a):null)??null}}]:null}case"setContainerLayout":{const{instanceId:n,containerLayout:t}=e.payload,i=o.getInstance(n);if(!i)return null;const a=i.containerLayout,r="containerLayout"in i&&void 0!==a;return r||null!==t?[{type:"setContainerLayout",payload:{instanceId:n,containerLayout:(r?Z(a):null)??null}}]:null}case"updateLayoutBox":{const{instanceId:n,patch:t}=e.payload,i=o.getInstance(n);if(!i)return null;const a=i.layoutBox??{x:i.rect.x,y:i.rect.y,width:i.rect.w,height:i.rect.h,widthMode:"px",heightMode:"px",overflow:"hidden"},r={};let s=!1;const c=["x","y","width","height"];for(const e of c){const n=t[e];"number"==typeof n&&Number.isFinite(n)&&(r[e]=a[e],s=!0)}return"px"!==t.widthMode&&"percent"!==t.widthMode&&"fill"!==t.widthMode&&"auto"!==t.widthMode||(r.widthMode=a.widthMode,s=!0),"px"!==t.heightMode&&"percent"!==t.heightMode&&"fill"!==t.heightMode&&"auto"!==t.heightMode||(r.heightMode=a.heightMode,s=!0),"hidden"!==t.overflow&&"visible"!==t.overflow&&"auto"!==t.overflow||(r.overflow=a.overflow,s=!0),s?[{type:"updateLayoutBox",payload:{instanceId:n,patch:r}}]:null}case"updateLayoutItem":{const{instanceId:n,patch:t}=e.payload,i=o.getInstance(n);if(!i)return null;const a=i.layoutItem,r="layoutItem"in i&&void 0!==a,s=null===t;if(!r&&s)return null;if(!s){const e=["order","grow","shrink","row","column","rowSpan","columnSpan","ratio"];let n=!1;for(const o of e){const e=t[o];if("number"==typeof e&&Number.isFinite(e)){n=!0;break}}if(!n)return null}return[{type:"updateLayoutItem",payload:{instanceId:n,patch:(r?Z(a):null)??null}}]}case"updateRotation":{const{instanceId:n,value:t}=e.payload,i=o.getInstance(n);if(!i)return null;if(!Number.isFinite(t))return null;const a=i.rotation,r="number"==typeof a&&Number.isFinite(a)?a:0;return r===t?null:[{type:"updateRotation",payload:{instanceId:n,value:r}}]}case"select":case"toggleSelect":case"addToSelection":case"removeFromSelection":case"clearSelection":case"selectAll":case"freeSplitFill":case"freeSplitClear":case"freeSplitSwap":case"freeSplitResize":case"freeSplitSplit":case"freeSplitMerge":return null;default:{const n=e;return console.warn("[hc-canvas/computeInverse] unknown action",n),null}}}function Dt(e){return null!==e&&"object"==typeof e&&!Array.isArray(e)}function Rt(e){return Z(e)}function Et(e,t={}){const o=t.maxSize??100,a=i([]),r=i([]),s=function(e){return In.get(e)}(e);let c={redo:[],undo:[]},d=null;function l(e){var n;0===c.redo.length&&0===c.undo.length||(n={type:e,redo:c.redo,undo:c.undo,timestamp:Date.now()},a.value.push(n),a.value.length>o&&a.value.shift(),r.value.length>0&&(r.value=[]),c={redo:[],undo:[]},d=null)}const u={onBeforeAction(n){if(e.isRecordingSuppressed.value)return;if(gn(n)){const e=(null==s?void 0:s.computeInverse(n))??null;if(!e)return;return c.redo.push(n),c.undo.unshift(e),void(d=n.type)}const t=Pt(n,e);if(null!==t){c.redo.push(n);for(let e=t.length-1;e>=0;e--)c.undo.unshift(t[e]);d=n.type}},onAfterAction(n){e.isRecordingSuppressed.value||e.isBatching.value||l(d??"action")},onAfterBatch(n){e.isRecordingSuppressed.value||l(n??"batch")}},p=e.registerHooks(u);function f(){a.value=[],r.value=[],c={redo:[],undo:[]},d=null}return{undo:function(){if(0===a.value.length)return;const n=a.value.pop();e.suppressRecording(()=>{e.beginBatch();for(const t of n.undo)e.dispatch(t);e.endBatch("undo")}),r.value.push(n)},redo:function(){if(0===r.value.length)return;const n=r.value.pop();e.suppressRecording(()=>{e.beginBatch();for(const t of n.redo)e.dispatch(t);e.endBatch("redo")}),a.value.push(n)},clear:f,canUndo:n(()=>a.value.length>0),canRedo:n(()=>r.value.length>0),undoStackSize:n(()=>a.value.length),redoStackSize:n(()=>r.value.length),dispose:function(){p(),f()}}}class $t extends Error{constructor(e="CanvasHandle has been disposed"){super(e),this.name="HandleDisposedError"}}function At(e,n,t){let o=null;for(const i of e)for(const e of n){const n=e.pos-i,a=Math.abs(n);a<=t&&(!o||a<Math.abs(o.delta))&&(o={delta:n,candidate:e,targetPos:i})}return o}function Ot(e){var n,t,o,i;const a=e.threshold??5,r=function(e){if(0===e.length)return null;let n=1/0,t=-1/0,o=1/0,i=-1/0;for(const a of e)a.x<n&&(n=a.x),a.x+a.w>t&&(t=a.x+a.w),a.y<o&&(o=a.y),a.y+a.h>i&&(i=a.y+a.h);return{left:n,right:t,top:o,bottom:i,centerX:(n+t)/2,centerY:(o+i)/2,width:t-n,height:i-o}}(e.draggedRects);if(!r)return{dx:0,dy:0,lines:[]};const s=function(e,n,t){const o=[];for(const n of e)o.push({pos:n.x,kind:"edge-left",source:n}),o.push({pos:n.x+n.w,kind:"edge-right",source:n}),o.push({pos:n.x+n.w/2,kind:"center-x",source:n});if(o.push({pos:0,kind:"canvas-edge"}),o.push({pos:n.w,kind:"canvas-edge"}),o.push({pos:n.w/2,kind:"canvas-edge"}),t)for(const e of t)o.push({pos:e,kind:"guide"});return o}(e.otherRects,e.canvasSize,null==(n=e.manualGuides)?void 0:n.x),c=function(e,n,t){const o=[];for(const n of e)o.push({pos:n.y,kind:"edge-top",source:n}),o.push({pos:n.y+n.h,kind:"edge-bottom",source:n}),o.push({pos:n.y+n.h/2,kind:"center-y",source:n});if(o.push({pos:0,kind:"canvas-edge"}),o.push({pos:n.h,kind:"canvas-edge"}),o.push({pos:n.h/2,kind:"canvas-edge"}),t)for(const e of t)o.push({pos:e,kind:"guide"});return o}(e.otherRects,e.canvasSize,null==(t=e.manualGuides)?void 0:t.y),d=[r.left,r.right,r.centerX],l=[r.top,r.bottom,r.centerY],u=At(d,s,a),p=At(l,c,a),f=(null==u?void 0:u.delta)??0,h=(null==p?void 0:p.delta)??0,g=[];if(u){const n=(null==(o=u.candidate.source)?void 0:o.y)??0,t=u.candidate.source?u.candidate.source.y+u.candidate.source.h:e.canvasSize.h,i=Math.min(r.top+h,n),a=Math.max(r.bottom+h,t);g.push({axis:"x",pos:u.candidate.pos,from:i,to:a,kind:u.candidate.kind})}if(p){const n=(null==(i=p.candidate.source)?void 0:i.x)??0,t=p.candidate.source?p.candidate.source.x+p.candidate.source.w:e.canvasSize.w,o=Math.min(r.left+f,n),a=Math.max(r.right+f,t);g.push({axis:"y",pos:p.candidate.pos,from:o,to:a,kind:p.candidate.kind})}return{dx:f,dy:h,lines:g}}const Ft=8;function jt(e,n,t){const o=new Map,i=new Map;for(let e=0;e<n.length;e++)o.has(n[e].instanceId)||o.set(n[e].instanceId,n[e]),i.set(n[e].instanceId,e);const a=new Map;function r(e){const n=a.get(e);if(n)return n;const t=[];let i=e;const r=new Set;for(;i&&!r.has(i);){r.add(i),t.push(i);const e=o.get(i);if(!(null==e?void 0:e.parentId))break;i=e.parentId}const s=t.reverse();return a.set(e,s),s}function s(e,n){const t=r(e),a=r(n);let s=0;for(;s<t.length&&s<a.length&&t[s]===a[s];)s++;if(s===t.length&&s===a.length)return 0;if(s===t.length)return-1;if(s===a.length)return 1;const c=t[s],d=a[s],l=o.get(c),u=o.get(d),p=(null==l?void 0:l.zIndex)??0,f=(null==u?void 0:u.zIndex)??0;return p!==f?p-f:(i.get(c)??-1)-(i.get(d)??-1)}let c=null,d=-1;for(let o=0;o<n.length;o++){const i=n[o];if(i.hidden)continue;const a=(null==t?void 0:t(i.instanceId))??i.rect;if(!(e.x>=a.x&&e.x<=a.x+a.w&&e.y>=a.y&&e.y<=a.y+a.h))continue;if(null===c){c=i.instanceId,d=o;continue}const r=s(i.instanceId,c);let l;l=r>0||!(r<0)&&o>d,l&&(c=i.instanceId,d=o)}return c}function qt(e,n){return{x:Math.min(e.x,n.x),y:Math.min(e.y,n.y),w:Math.abs(e.x-n.x),h:Math.abs(e.y-n.y)}}function Nt(e,n,t){const o=[];for(const i of n){if(i.hidden)continue;const n=(null==t?void 0:t(i.instanceId))??i.rect;n.x>=e.x&&n.y>=e.y&&n.x+n.w<=e.x+e.w&&n.y+n.h<=e.y+e.h&&o.push(i.instanceId)}return o}function Vt(e,n){if(!e||"function"!=typeof e.querySelector)return null;const t=e.querySelector(n);if(t)return t;if(e instanceof Element&&"function"==typeof e.closest){const t=e.closest("[data-hc-canvas-designer]");if(t&&t!==e){const e=t.querySelector(n);if(e)return e}}return null}function Kt(e,n,t){var o;const i=t??("undefined"!=typeof document&&"function"==typeof document.querySelector?document:null);if(!i)return null;const a=n??"default",r=""===a?"default":a,s="undefined"!=typeof globalThis&&(null==(o=globalThis.CSS)?void 0:o.escape)?globalThis.CSS.escape:e=>e.replace(/["\\]/g,e=>`\\${e}`),c=Vt(i,`[data-instance-id="${s(e)}"] [data-hc-slot="${s(r)}"]`);return c&&c instanceof HTMLElement?c.getBoundingClientRect():null}function _t(e,n){var t;const o=n??("undefined"!=typeof document&&"function"==typeof document.querySelector?document:null);if(!o)return null;const i="undefined"!=typeof globalThis&&(null==(t=globalThis.CSS)?void 0:t.escape)?globalThis.CSS.escape:e=>e.replace(/["\\]/g,e=>`\\${e}`),a=o.querySelector(`[data-instance-id="${i(e)}"][data-hc-placement="slot"]`);return a&&a instanceof HTMLElement?a.getBoundingClientRect():null}function Xt(e,n,t){var o;const i=n??("undefined"!=typeof document&&"function"==typeof document.querySelector?document:null);if(!i)return null;if("function"!=typeof i.querySelector)return null;const a=`[data-instance-id="${("undefined"!=typeof globalThis&&(null==(o=globalThis.CSS)?void 0:o.escape)?globalThis.CSS.escape:e=>e.replace(/["\\]/g,e=>`\\${e}`))(e)}"]`,r=t?Vt(i,a):i.querySelector(a);return r&&r instanceof HTMLElement?r.getBoundingClientRect():null}function Yt(e,n){return Ve(e.document.document.layout,e.document.document.instances,n)}function Gt(e){return"free"===e||"none"===e||void 0===e}const Ht=new Set(["e","w","ne","nw","se","sw"]),Ut=new Set(["n","s","ne","nw","se","sw"]);function Wt(e,n,t,o){if(Gt(e))return!0;const i=Ht.has(n),a=Ut.has(n);return!(i&&"fill"===t||a&&"fill"===o)}function Jt(e,n,t){if(!n)return null;const o=Xt(e,n,!0);if(!o)return null;const i=n.getBoundingClientRect(),a=t.toCanvasPoint({x:o.left-i.left,y:o.top-i.top}),r=t.toCanvasPoint({x:o.right-i.left,y:o.bottom-i.top});return{x:a.x,y:a.y,w:Math.max(0,r.x-a.x),h:Math.max(0,r.y-a.y)}}function Qt(e,n,t){const o=Math.max(8,n);if(!e)return{mode:"px",value:o};switch(e.mode){case"px":return{...e,mode:"px",value:o};case"percent":{if(!t||t<=0)return{...e,mode:"px",value:o};const n=o/t*100,i=Math.max(0,Math.min(1e3,n));return{...e,mode:"percent",value:i}}case"fill":case"hug":case"auto":return{mode:"px",value:o,min:e.min,max:e.max}}}function Zt(e,n,t){const o=Math.max(8,n);switch(e){case"px":case"fill":case"auto":default:return{mode:"px",value:o};case"percent":{if(!t||t<=0)return{mode:"px",value:o};const e=o/t*100;return{mode:"percent",value:Math.max(0,Math.min(1e3,e))}}}}function eo(e,n){return e===n||!(!e||!n)&&e.mode===n.mode&&e.value===n.value&&e.min===n.min&&e.max===n.max}const no=3;function to(e){return e.shift||e.ctrl||e.meta}function oo(e,n,t){const o=n.getBoundingClientRect(),i={x:e.x-o.left,y:e.y-o.top};return t.toCanvasPoint(i)}const io=["e","s","se"];function ao(e,n){const t=new Set(n.map(e=>e.instanceId));return e.filter(e=>t.has(e))}function ro(t,o={}){const a=e({active:!1,start:null,end:null,additive:!1,priorSelection:[]}),r=e({status:"idle",startPt:null,startRects:new Map,deferredClickSelect:null}),s=e({status:"idle",handle:null,startPt:null,startRect:null,instanceId:null,placement:null,parentLayoutMode:void 0,startSize:null,startLayoutBox:null,startOutletCanvasSize:null}),c=i([]),d=i(null);let l=0;const u=i(null);let p=0;const f=n(()=>a.active&&a.start&&a.end?qt(a.start,a.end):null),h=n(()=>"active"===r.status),g=n(()=>"active"===s.status);function v(){a.active=!1,a.start=null,a.end=null,a.additive=!1,a.priorSelection=[]}function m(){r.status="idle",r.startPt=null,r.startRects=new Map,r.deferredClickSelect=null,c.value=[]}function y(){s.status="idle",s.handle=null,s.startPt=null,s.startRect=null,s.instanceId=null,s.placement=null,s.startSize=null,s.startOutletCanvasSize=null,s.parentLayoutMode=void 0,s.startLayoutBox=null}return{marquee:a,marqueeRect:f,drag:r,isDragging:h,resize:s,isResizing:g,snapLines:c,cannotDragSlotChildEvent:d,cannotDragLayoutManagedChildEvent:u,handlePointerDown(e,n){var i;const s=t.effectiveBehavior.value;if(!s.selectable)return{startTracking:!1};const c=t.toolMode.value;if("hand"===c)return{startTracking:!1};const f=to(n),h="marquee"===c?null:jt(e,t.document.document.instances,o.getDomBox);if(h){const n=t.document.getInstance(h),o=!0===((null==n?void 0:n.lockPosition)??(null==n?void 0:n.locked)),a=t.selection.selectedIds.value.includes(h),g=t.selection.size.value>1;f?t.dispatch({type:"toggleSelect",payload:{instanceId:h}}):o?t.dispatch({type:"select",payload:{instanceId:h}}):a&&g&&s.draggable&&"inspect"!==c?r.deferredClickSelect=h:t.dispatch({type:"select",payload:{instanceId:h}});const v="slot"===(null==n?void 0:n.placement)||"container"===(null==n?void 0:n.placement),m=Yt(t,h),y="inspect"===c;if(o||!s.draggable||y||(null==n?void 0:n.hidden))return{startTracking:!1};if(!Gt(m)){if(!f){p++;const e={instanceId:h,parentId:null==n?void 0:n.parentId,parentLayoutMode:m,token:p};u.value=e,null==(i=t.setCannotDragLayoutManagedChildEvent)||i.call(t,e),v&&(l++,d.value={instanceId:h,parentId:null==n?void 0:n.parentId,token:l})}return{startTracking:!1}}return r.status="pending",r.startPt={...e},r.startRects=function(){const e=t.selection.selectedIds.value,n=new Map;for(const o of e){const e=t.document.getInstance(o);e&&!0!==(e.lockPosition??e.locked)&&n.set(o,{x:e.rect.x,y:e.rect.y})}return n}(),{startTracking:!0}}return f||t.dispatch({type:"clearSelection"}),a.active=!0,a.start={...e},a.end={...e},a.additive=f,a.priorSelection=f?[...t.selection.selectedIds.value]:[],{startTracking:!0}},handlePointerMove(e){var n,i,d,l;if("active"===s.status&&s.startPt&&s.startRect&&s.instanceId){const n=e.x-s.startPt.x,o=e.y-s.startPt.y,i=s.startRect,a=s.handle,r=t.document.getInstance(s.instanceId);if(!r)return;const c=s.parentLayoutMode,u=void 0!==c&&!Gt(c);let p=i.x,f=i.y,h=i.w,g=i.h;const v="w"===a||"nw"===a||"sw"===a,m="e"===a||"ne"===a||"se"===a,y="n"===a||"ne"===a||"nw"===a,I="s"===a||"se"===a||"sw"===a;m?h=i.w+n:v&&(h=i.w-n,u||(p=i.x+n)),I?g=i.h+o:y&&(g=i.h-o,u||(f=i.y+o)),h<8&&(!u&&v&&(p=i.x+i.w-8),h=8),g<8&&(!u&&y&&(f=i.y+i.h-8),g=8);const w=s.startLayoutBox,x=s.startOutletCanvasSize,b=m||v,S=I||y,k=!u&&v,M=!u&&y,z=b?Zt(w.widthMode,h,x?x.w:null):null,T=S?Zt(w.heightMode,g,x?x.h:null):null,L="canvas"===s.placement||"absolute"===s.placement,C=!(z&&"px"!==z.mode||T&&"px"!==T.mode||b&&"px"!==w.widthMode||S&&"px"!==w.heightMode);if(L&&C){const e={x:r.rect.x,y:r.rect.y,w:r.rect.w,h:r.rect.h};(k&&e.x!==p||M&&e.y!==f)&&t.dispatch({type:"moveInstance",payload:{instanceId:s.instanceId,x:k?p:e.x,y:M?f:e.y}}),(b&&e.w!==h||S&&e.h!==g)&&t.dispatch({type:"resizeInstance",payload:{instanceId:s.instanceId,w:b?h:e.w,h:S?g:e.h}})}else{const e={};z&&(e.widthMode=z.mode,e.width=z.value),T&&(e.heightMode=T.mode,e.height=T.value),k&&(e.x=p),M&&(e.y=f);const n=r.layoutBox;let o=!1;n?(void 0!==e.x&&e.x!==n.x&&(o=!0),void 0!==e.y&&e.y!==n.y&&(o=!0),void 0!==e.width&&e.width!==n.width&&(o=!0),void 0!==e.height&&e.height!==n.height&&(o=!0),void 0!==e.widthMode&&e.widthMode!==n.widthMode&&(o=!0),void 0!==e.heightMode&&e.heightMode!==n.heightMode&&(o=!0)):o=Object.keys(e).length>0,o&&t.dispatch({type:"updateLayoutBox",payload:{instanceId:s.instanceId,patch:e}})}if(("container"===s.placement||"slot"===s.placement)&&(null!==s.startSize||C)){const e=s.startSize,n={};b?n.width=Qt(null==e?void 0:e.width,h,x?x.w:null):(null==e?void 0:e.width)&&(n.width={...e.width}),S?n.height=Qt(null==e?void 0:e.height,g,x?x.h:null):(null==e?void 0:e.height)&&(n.height={...e.height});(d=r.size)===(l=n)||d&&l&&eo(d.width,l.width)&&eo(d.height,l.height)||t.dispatch({type:"setInstanceSize",payload:{instanceId:s.instanceId,size:n}})}return}if("pending"===r.status&&r.startPt){const n=e.x-r.startPt.x,o=e.y-r.startPt.y;n*n+o*o>=9&&(r.status="active",t.beginBatch())}if("active"===r.status&&r.startPt){const a=e.x-r.startPt.x,s=e.y-r.startPt.y,d=(null==(n=o.getRoot)?void 0:n.call(o))??null,l=d instanceof HTMLElement?d:null,u=t.document.document.instances,p=null!==l&&u.length<=50,f=(e,n)=>p?Jt(e,l,t.viewport)??n:n,h=[];for(const[e,n]of r.startRects){const o=t.document.getInstance(e);if(!o)continue;const i=f(e,o.rect);h.push({x:n.x+a,y:n.y+s,w:i.w,h:i.h})}const g=[],v=new Set(r.startRects.keys());for(const e of u)v.has(e.instanceId)||g.push(f(e.instanceId,e.rect));const m=t.document.document.layout,y=!1!==t.effectiveBehavior.value.snap,I=(null==(i=m.guides)?void 0:i.items)??[],w=[],x=[];for(const e of I)"x"===e.axis?w.push(e.position):x.push(e.position);const b=y?Ot({draggedRects:h,otherRects:g,canvasSize:{w:t.measuredCanvasSize.value.w,h:t.measuredCanvasSize.value.h},manualGuides:w.length||x.length?{x:w,y:x}:void 0}):{dx:0,dy:0,lines:[]};c.value=b.lines;const S=a+b.dx,k=s+b.dy;for(const[e,n]of r.startRects)t.document.getInstance(e)&&t.dispatch({type:"moveInstance",payload:{instanceId:e,x:n.x+S,y:n.y+k}});return}a.active&&(a.end={...e})},handlePointerUp(){if("active"===s.status){const e="slot"===s.placement||"container"===s.placement?"resize-slot-child":"resize";return t.endBatch(e),void y()}if("active"===r.status)return t.endBatch("drag"),void m();if("pending"===r.status)return r.deferredClickSelect&&t.dispatch({type:"select",payload:{instanceId:r.deferredClickSelect}}),void m();if(!a.active)return;const e=f.value,n=t.document.document.instances;if(e&&(e.w>0||e.h>0)){const i=ao(Nt(e,n,o.getDomBox),n);if(a.additive){const e=ao(a.priorSelection,n),o=Array.from(new Set([...e,...i]));t.dispatch({type:"selectAll",payload:{instanceIds:o}})}else i.length>0&&t.dispatch({type:"selectAll",payload:{instanceIds:i}})}v()},cancelMarquee(){v()},cancelDrag(){"active"===r.status&&t.endBatch("drag-cancel"),m()},handleResizeStart(e,n,i){var a,r,c,d,l,u;const p=t.document.getInstance(e);if(!p)return{startTracking:!1};if(!0===(p.lockSize??p.locked))return{startTracking:!1};if(p.hidden)return{startTracking:!1};if(!t.effectiveBehavior.value.resizable)return{startTracking:!1};const f="slot"===p.placement||"container"===p.placement,h=Yt(t,e);if(!Wt(h,n,null==(a=p.layoutBox)?void 0:a.widthMode,null==(r=p.layoutBox)?void 0:r.heightMode))return{startTracking:!1};s.status="active",s.handle=n,s.startPt={...i};const g=Jt(e,(null==(c=o.getRoot)?void 0:c.call(o))??null,t.viewport);s.startRect=g??{...p.rect},s.instanceId=e,s.placement=f?"container":"canvas",s.parentLayoutMode=h,s.startLayoutBox=p.layoutBox?Z(p.layoutBox):{x:p.rect.x,y:p.rect.y,width:p.rect.w,height:p.rect.h,widthMode:"px",heightMode:"px",overflow:"hidden"},s.startSize=f&&p.size?Z(p.size):null;const v=p.parentId,m=p.slot,y=(null==(d=o.getRoot)?void 0:d.call(o))??null;let I=v?Kt(v,m,y):null;if(v&&(!I||0===I.width&&0===I.height)){const n=Vt(y,`[data-instance-id="${e.replace(/["\\]/g,e=>`\\${e}`)}"]`),t=n instanceof HTMLElement?n.parentElement:null;if(t){const e=t.getBoundingClientRect();(e.width>0||e.height>0)&&(I=e)}}if(I){const e=t.viewport.scale.value||1;s.startOutletCanvasSize={w:I.width/e,h:I.height/e}}else if(void 0===v)s.startOutletCanvasSize={w:t.measuredCanvasSize.value.w,h:t.measuredCanvasSize.value.h};else{const n=s.startLayoutBox.widthMode,t=s.startLayoutBox.heightMode,o="percent"===n||"percent"===t;o&&console.debug("[hc-canvas/interaction] resize: 父 outlet 找不到,percent 模式将退化到 px。",{instanceId:e,parentId:v,slot:m});const i=s.startSize,a="percent"===(null==(l=null==i?void 0:i.width)?void 0:l.mode)||"percent"===(null==(u=null==i?void 0:i.height)?void 0:u.mode);!o&&a&&console.debug("[hc-canvas/interaction] slot child resize: 父 outlet 找不到,percent 模式将退化到 px。",{instanceId:e,parentId:v,slot:m}),s.startOutletCanvasSize=null}return t.beginBatch(),{startTracking:!0}},cancelResize(){if("active"===s.status){const e="slot"===s.placement||"container"===s.placement?"resize-slot-child-cancel":"resize-cancel";t.endBatch(e)}y()}}}function so(e){var n;return"undefined"!=typeof globalThis&&(null==(n=globalThis.CSS)?void 0:n.escape)?globalThis.CSS.escape(e):e.replace(/["\\]/g,e=>`\\${e}`)}function co(e,n,t){const o=null==t?void 0:t.skip;let i=null;for(const t of e){if(!(t instanceof HTMLElement))continue;if(o&&o(t))continue;const e=t.getBoundingClientRect();if(0===e.width&&0===e.height)continue;if(n.x<e.left||n.x>e.right)continue;if(n.y<e.top||n.y>e.bottom)continue;let a=0,r=t;for(;r;)a++,r=r.parentElement;(!i||a>i.depth)&&(i={el:t,depth:a})}return i?i.el:null}function lo(e,n){return{ok:!1,reason:e,message:n}}function uo(e,n,t,o={}){const i=new Map;for(const n of e)i.set(n.instanceId,n);const a=i.get(n);if(!a)return lo("instance-not-exists",`实例 "${n}" 不存在,无法 reparent`);const r=null===t.parentId||void 0===t.parentId?void 0:t.parentId;if(r===n)return lo("self-parent",`parentId 不能等于自身 "${n}"`);if(void 0!==r){const e=i.get(r);if(!e)return lo("parent-not-exists",`目标 parentId "${r}" 不存在`);const t=new Set;let o=e.parentId;for(;void 0!==o&&!t.has(o);){if(t.add(o),o===n)return lo("cycle",`目标 parent "${r}" 是 "${n}" 的后代,会循环`);const e=i.get(o);o=null==e?void 0:e.parentId}}if(void 0===r)return{ok:!0};const s=o.resolveContract;if(!s)return{ok:!0};const c=i.get(r),d=s(c.componentVersionKey);if(!d)return{ok:!0};const l=d.slotsDecl??[];if(0===l.length)return lo("parent-not-layout",`父组件 "${c.componentId}" 不是布局组件(slotsDecl 空)`);const u=void 0===t.slot||""===t.slot||"default"===t.slot?Ln:t.slot,p=(f=u,l.find(e=>e.name===f));var f;if(!p)return lo("slot-not-exists",`slot "${u}" 不在父 "${c.componentId}" 的 slotsDecl`);if(p.accepts&&p.accepts.length>0&&!p.accepts.includes(a.componentId))return lo("accepts-violation",`slot "${u}" 不允许 componentId "${a.componentId}"(accepts: ${p.accepts.join(", ")})`);if(!0!==p.multiple){const t=e.filter(e=>e.instanceId!==n&&e.parentId===r&&Pn(e)===u);if(t.length>0)return lo("slot-multiple-violated",`slot "${u}" 不允许多个子实例(已有 "${t[0].instanceId}")`)}if("number"==typeof p.maxChildren&&Number.isFinite(p.maxChildren)&&p.maxChildren>=1){const t=e.filter(e=>e.instanceId!==n&&e.parentId===r&&Pn(e)===u);if(t.length+1>p.maxChildren)return lo("max-children-exceeded",`slot "${u}" 最多接受 ${p.maxChildren} 个子(已有 ${t.length} 个)`)}return{ok:!0}}function po(e){const n=new Set(e.map(e=>e.instanceId)),t=new Map;for(const n of e)t.set(n.instanceId,ho(n));const o=[],i=new Map;e.forEach((e,a)=>{const r={inst:e,node:t.get(e.instanceId),originalIndex:a},s=e.parentId;if(s){if(!n.has(s))return console.warn(`[hc-canvas/instance-tree] instance "${e.instanceId}" parentId="${s}" 不存在,降级当顶层`),void o.push(r);i.has(s)||i.set(s,[]),i.get(s).push(r)}else o.push(r)});for(const[e,n]of i){const o=t.get(e);o&&(o.children=fo(n).map(e=>e.node))}return o.slice().sort((e,n)=>{const t=(n.inst.zIndex??0)-(e.inst.zIndex??0);return 0!==t?t:e.originalIndex-n.originalIndex}).map(e=>e.node)}function fo(e){const n=new Map;for(const t of e){const e=t.inst.slot??"default";let o=n.get(e);o||(o={firstIndex:t.originalIndex,entries:[]},n.set(e,o)),o.entries.push(t)}return Array.from(n.values()).sort((e,n)=>e.firstIndex-n.firstIndex).flatMap(e=>e.entries.slice().sort((e,n)=>e.originalIndex-n.originalIndex))}function ho(e){const n={instanceId:e.instanceId,componentId:e.componentId,componentVersionKey:e.componentVersionKey,kind:"visual",label:e.alias??e.instanceId};return void 0!==e.locked&&(n.locked=e.locked),void 0!==e.lockPosition&&(n.lockPosition=e.lockPosition),void 0!==e.lockSize&&(n.lockSize=e.lockSize),void 0!==e.hidden&&(n.hidden=e.hidden),n}function go(e,n){for(const t of e){if(t.instanceId===n)return[t];if(t.children&&t.children.length>0){const e=go(t.children,n);if(e.length>0)return[t,...e]}}return[]}function vo(e,n){const t=new Map;for(const n of e)t.set(n.instanceId,n);const o=t.get(n);if(!o)return[];const i=[o];let a=o;const r=e.length;for(;a&&a.parentId;){if(i.length>r){console.warn(`[hc-canvas/instance-tree] breadcrumb for "${n}" exceeds depth ${r},疑似环,截断`);break}const e=t.get(a.parentId);if(!e)break;i.unshift(e),a=e}return i}function mo(e,n,t){const o=n||void 0;return e.filter(e=>(e.parentId||void 0)===o&&e.slot===t).map((e,n)=>({inst:e,originalIndex:n})).sort((e,n)=>{const t=(n.inst.zIndex??0)-(e.inst.zIndex??0);return 0!==t?t:e.originalIndex-n.originalIndex}).map(e=>e.inst)}const yo=40;function Io(e){if(0===e.length)return null;let n=1/0,t=1/0,o=-1/0,i=-1/0;for(const a of e)a.x<n&&(n=a.x),a.y<t&&(t=a.y),a.x+a.w>o&&(o=a.x+a.w),a.y+a.h>i&&(i=a.y+a.h);return{x:n,y:t,w:o-n,h:i-t}}function wo(e){return Io(e.map(e=>e.rect))}function xo(e,n){if(0===n.length)return null;const t=new Set(n),o=[];for(const n of e)t.has(n.instanceId)&&o.push(n.rect);return Io(o)}function bo(e,n,t){const o=(null==t?void 0:t.padding)??40,i=Math.max(1,n.w-2*o),a=Math.max(1,n.h-2*o),r=Math.max(1,e.w),s=Math.max(1,e.h);let c=Math.min(i/r,a/s);void 0!==(null==t?void 0:t.maxScale)&&(c=Math.min(c,t.maxScale)),void 0!==(null==t?void 0:t.minScale)&&(c=Math.max(c,t.minScale));const d=e.x+e.w/2,l=e.y+e.h/2;return{scale:c,panX:n.w/2-d*c,panY:n.h/2-l*c}}function So(e,n){const t=e.scale||1;return{x:-e.panX/t+0,y:-e.panY/t+0,w:n.w/t,h:n.h/t}}function ko(e){const n=[];(e.metaKey||e.ctrlKey)&&n.push("mod"),e.shiftKey&&n.push("shift"),e.altKey&&n.push("alt");let t=e.key;return t="Meta"===t||"Control"===t?"mod":" "===t||"Space"===e.code?"space":(t.length,t.toLowerCase()),n[n.length-1]===t||n.push(t),n.join("+")}function Mo(e){if(!(e&&e instanceof HTMLElement))return!1;const n=e.tagName;return"INPUT"===n||"TEXTAREA"===n||"SELECT"===n||!!e.isContentEditable}function zo(e,n){const t=ko(n);for(const n of e.keys)if(To(n)===t)return!0;return!1}function To(e){return e.split("+").map(e=>e.trim().toLowerCase()).join("+")}function Lo(){return[{id:"undo",keys:["mod+z"],command:"undo",when:"notEditingText"},{id:"redo",keys:["mod+shift+z","mod+y"],command:"redo",when:"notEditingText"},{id:"deleteSelection",keys:["delete","backspace"],command:"deleteSelection",when:"hasSelection"},{id:"duplicateSelection",keys:["mod+d"],command:"duplicateSelection",when:"hasSelection"},{id:"fitToSelectionOrContent",keys:["f"],command:"fitToSelectionOrContent",when:"notEditingText"},{id:"zoom100",keys:["1"],command:"zoom100",when:"notEditingText"},{id:"resetViewport",keys:["0"],command:"resetViewport",when:"notEditingText"},{id:"zoomIn",keys:["+","="],command:"zoomIn",when:"notEditingText"},{id:"zoomOut",keys:["-"],command:"zoomOut",when:"notEditingText"},{id:"nudgeLeft",keys:["arrowleft"],command:"nudgeSelection",payload:{dx:-1,dy:0},when:"hasSelection"},{id:"nudgeRight",keys:["arrowright"],command:"nudgeSelection",payload:{dx:1,dy:0},when:"hasSelection"},{id:"nudgeUp",keys:["arrowup"],command:"nudgeSelection",payload:{dx:0,dy:-1},when:"hasSelection"},{id:"nudgeDown",keys:["arrowdown"],command:"nudgeSelection",payload:{dx:0,dy:1},when:"hasSelection"},{id:"nudgeLeftLarge",keys:["shift+arrowleft"],command:"nudgeSelectionLarge",payload:{dx:-1,dy:0},when:"hasSelection"},{id:"nudgeRightLarge",keys:["shift+arrowright"],command:"nudgeSelectionLarge",payload:{dx:1,dy:0},when:"hasSelection"},{id:"nudgeUpLarge",keys:["shift+arrowup"],command:"nudgeSelectionLarge",payload:{dx:0,dy:-1},when:"hasSelection"},{id:"nudgeDownLarge",keys:["shift+arrowdown"],command:"nudgeSelectionLarge",payload:{dx:0,dy:1},when:"hasSelection"},{id:"cancelInteraction",keys:["escape"],command:"cancelInteraction",when:"notEditingText"}]}function Co(e){const{ctx:n}=e;function t(e){return re(`${e}_`)}return{fill(e,t,o){n.dispatch({type:"freeSplitFill",payload:{containerId:e,leafId:t,instance:o}})},clear(e,t){n.dispatch({type:"freeSplitClear",payload:{containerId:e,leafId:t}})},swap(e,t,o){n.dispatch({type:"freeSplitSwap",payload:{containerId:e,leafIdA:t,leafIdB:o}})},resize(e,t,o){n.dispatch({type:"freeSplitResize",payload:{containerId:e,nodeId:t,sizes:o}})},split(e,o,i,a){const r=t("lf"),s=t("nd");return n.dispatch({type:"freeSplitSplit",payload:{containerId:e,leafId:o,edge:i,newLeafShare:a,newLeafId:r,newNodeId:s}}),{leafId:r,nodeId:s}},merge(e,t){n.dispatch({type:"freeSplitMerge",payload:{containerId:e,leafId:t}})}}}function Bo(e,t){const o=Et(e,t.recorder),r=function(e){const{ctx:n,options:t}=e;function o(e){const o=t.getStageEl();if(!o)return console.warn("[hc-canvas/handle] clientToCanvasPoint called before stage mounted; falling back to viewport.toCanvasPoint(raw clientPt). 结果可能偏移。"),n.viewport.toCanvasPoint(e);const i=o.getBoundingClientRect();return n.viewport.toCanvasPoint({x:e.x-i.left,y:e.y-i.top})}return{clientToCanvasPoint:o,getInstanceAtClientPoint:function(e){const i=t.getStageEl();if(!i)return null;const a=jt(o(e),n.document.document.instances,e=>Jt(e,i,n.viewport));return a?n.document.getInstance(a)??null:null},getDropTarget:function(e,o,i){var a;const r=o??(null==(a=t.getStageEl)?void 0:a.call(t))??("undefined"!=typeof document&&"function"==typeof document.querySelectorAll?document:null);if(!r)return null;const s=void 0!==(null==i?void 0:i.excludeInstanceId),c=s?`[data-instance-id="${so(i.excludeInstanceId)}"]`:null;let d=c?r.querySelector(c):null;if(!d&&s&&r instanceof Element){const e=r.closest("[data-hc-canvas-designer]");e&&e!==r&&(d=e.querySelector(c))}let l=r.querySelectorAll("[data-hc-slot]");if(0===l.length&&s&&r instanceof Element){const e=r.closest("[data-hc-canvas-designer]");e&&e!==r&&(l=e.querySelectorAll("[data-hc-slot]"))}const u=co(l,e,{skip:d?e=>d.contains(e):void 0});if(!u)return null;const p=u.closest("[data-instance-id]");if(!p)return null;const f=p.getAttribute("data-instance-id");return f&&n.document.getInstance(f)?{parentId:f,slot:u.getAttribute("data-hc-slot")||"default",outletEl:u}:null},getFreeSplitDropTarget:function(e,o){var i;const a=o??(null==(i=t.getStageEl)?void 0:i.call(t))??("undefined"!=typeof document&&"function"==typeof document.querySelectorAll?document:null);if(!a)return null;const r=co(a.querySelectorAll("[data-hc-leaf]"),e);if(!r)return null;const s=r.getAttribute("data-hc-leaf"),c=r.getAttribute("data-hc-leaf-container");if(!s||!c)return null;const d=n.document.getInstance(c),l=null==d?void 0:d.containerLayout;return l&&"free-split"===l.mode&&tn(l.root,s)?{containerId:c,leafId:s,leafEl:r}:null}}}({ctx:e,options:t}),s=function(e){const{ctx:n,options:t}=e;function o(e,o){const i=n.document.getInstance(e);if(!i)return console.warn(`[hc-canvas/handle] ${o}: instance "${e}" 不存在`),!1;const a=t.getStageEl();if(!a)return console.warn(`[hc-canvas/handle] ${o}: stage 未挂载,跳过滚动(${e})`),!1;const r=Jt(e,a,n.viewport),s=r&&(r.w>0||r.h>0)?r:{x:i.rect.x,y:i.rect.y,w:i.rect.w,h:i.rect.h},c=a.getBoundingClientRect(),d=n.viewport.scale.value,l=c.width/2-(s.x+s.w/2)*d,u=c.height/2-(s.y+s.h/2)*d;return n.viewport.setPan(l,u),!0}const r=i(null);let s=0;return{getInstanceTree:function(){return po(n.document.document.instances)},getInstanceList:function(){return n.document.document.instances.map(e=>Z(e))},getInstanceById:function(e){const t=n.document.getInstance(e);return t?Z(t):null},getSelectedPath:function(){const e=n.selection.primaryId.value;if(!e)return[];const t=n.document.document.instances,o=po(t),i=vo(t,e);if(0===i.length)return[];const a=new Map,r=[...o];for(;r.length>0;){const e=r.pop();a.set(e.instanceId,e),e.children&&e.children.length>0&&r.push(...e.children)}const s=[];for(const n of i){const t=a.get(n.instanceId);if(!t)return go(o,e);s.push(t)}return s},getBreadcrumb:function(e){return vo(n.document.document.instances,e).map(e=>Z(e))},focusInstance:function(e){n.document.getInstance(e)?(n.dispatch({type:"select",payload:{instanceId:e}}),o(e,"focusInstance")):console.warn(`[hc-canvas/handle] focusInstance: instance "${e}" 不存在`)},scrollToInstance:function(e){o(e,"scrollToInstance")},canReparent:function(e,o){return uo(n.document.document.instances,e,o,{resolveContract:t.resolveContract})},moveInstanceInTree:function(e,o){var i,a,c;const d=uo(n.document.document.instances,e,o,{resolveContract:t.resolveContract});if(!d.ok)return console.warn(`[hc-canvas/handle] moveInstanceInTree 守门拒绝(${d.reason}): ${d.message}`),void function(e,n,t,o){s++,r.value={instanceId:e,target:{...n},reason:t,message:o,token:s}}(e,o,d.reason,d.message??`reparent rejected: ${d.reason}`);const l=n.document.getInstance(e),u=null===o.parentId?void 0:o.parentId,p=(l.parentId||void 0)!==(u||void 0),f=l.slot!==o.slot,h={};if(p&&(h.parentId=u),f&&(h.slot=o.slot),p){const e=void 0===u?"canvas":"container";l.placement!==e&&(h.placement=e);const t=n.document.document.layout,o=void 0===u?(null==(i=null==t?void 0:t.rootLayout)?void 0:i.mode)??"free":(null==(c=null==(a=n.document.getInstance(u))?void 0:a.containerLayout)?void 0:c.mode)??"none";if(l.layoutBox)if("container"!==e||"flex"!==o&&"split"!==o&&"grid"!==o){if("canvas"===e){const e="fill"===l.layoutBox.widthMode?"px":l.layoutBox.widthMode,n="fill"===l.layoutBox.heightMode?"px":l.layoutBox.heightMode;e===l.layoutBox.widthMode&&n===l.layoutBox.heightMode||(h.layoutBox={...l.layoutBox,widthMode:e,heightMode:n})}}else h.layoutBox={...l.layoutBox,x:0,y:0,widthMode:"fill",heightMode:"fill"},h.rect={x:0,y:0,w:l.rect.w,h:l.rect.h};if("container"===e&&"grid"===o){const e=l.layoutItem??{};void 0!==e.row&&void 0!==e.column||(h.layoutItem={...e,row:e.row??1,column:e.column??1})}}const g=[];if(void 0!==o.index){const t=mo(n.document.document.instances,u,o.slot).filter(n=>n.instanceId!==e),i=Math.max(0,Math.min(o.index,t.length));t.splice(i,0,l),t.forEach((e,n)=>{const o=t.length-1-n;(e.zIndex??0)!==o&&g.push({id:e.instanceId,zIndex:o})})}if(0===Object.keys(h).length&&0===g.length)return;const v=!n.isBatching.value;v&&n.beginBatch();try{Object.keys(h).length>0&&n.dispatch({type:"updateInstance",payload:{instanceId:e,patch:h}});for(const e of g)n.dispatch({type:"updateInstance",payload:{instanceId:e.id,patch:{zIndex:e.zIndex}}})}finally{v&&n.endBatch("moveInstanceInTree")}},cannotReparentEvent:a(r)}}({ctx:e,options:t}),c=function(e){const{ctx:n,options:t}=e;function o(){const e=t.getStageEl();if(!e)return null;const n=e.getBoundingClientRect();return{w:n.width,h:n.height}}function i(){return{scale:n.viewport.scale.value,panX:n.viewport.panX.value,panY:n.viewport.panY.value}}function a(){return wo(n.document.document.instances)}function r(){return xo(n.document.document.instances,n.selection.selectedIds.value)}function s(e,t){const a=o();if(!a)return void n.viewport.setScale(e);const r=i();let s;if(null==t?void 0:t.center)s=t.center;else{const e=So(r,a);s={x:e.x+e.w/2,y:e.y+e.h/2}}const c=s.x*r.scale+r.panX,d=s.y*r.scale+r.panY,l=c-s.x*e,u=d-s.y*e;n.viewport.setScale(e),n.viewport.setPan(l,u)}function c(e,t){const i=o();if(!i)return void console.warn("[hc-canvas/handle] scrollToRect: stage 未挂载,跳过");const a=bo(e,i,t);n.viewport.setScale(a.scale),n.viewport.setPan(a.panX,a.panY)}return{getViewportState:i,getVisibleBounds:function(){const e=o();return e?So(i(),e):{x:0,y:0,w:0,h:0}},getCanvasBounds:function(){const e=n.measuredCanvasSize.value;return{x:0,y:0,w:e.w,h:e.h}},getContentBounds:a,getSelectionBounds:r,getInstanceBounds:function(e){const t=n.document.getInstance(e);return t?{...t.rect}:null},panBy:function(e,t){n.viewport.setPan(n.viewport.panX.value+e,n.viewport.panY.value+t)},panTo:function(e,t){n.viewport.setPan(e,t)},zoomTo:s,zoomBy:function(e,t){s(n.viewport.scale.value+e,t)},zoomToPoint:function(e,o){const a=t.getStageEl();if(!a)return void console.warn("[hc-canvas/handle] zoomToPoint: stage 未挂载,跳过");const r=a.getBoundingClientRect(),s=o.x-r.left,c=o.y-r.top,d=i(),l=s-(s-d.panX)/d.scale*e,u=c-(c-d.panY)/d.scale*e;n.viewport.setScale(e),n.viewport.setPan(l,u)},resetViewport:function(){n.viewport.resetView()},scrollToRect:c,fitToContent:function(e){const n=a();n&&c(n,e)},fitToSelection:function(e){const n=r();n&&c(n,e)}}}({ctx:e,options:t}),d=function(e){const{ctx:n}=e;return{getInstanceSize:function(e){const t=n.document.getInstance(e);if(t&&void 0!==t.size)return Z(t.size)},updateInstanceSize:function(e,t){n.dispatch({type:"setInstanceSize",payload:{instanceId:e,size:t}})},getContainerLayout:function(e){const t=n.document.getInstance(e);return t&&void 0!==t.containerLayout?Z(t.containerLayout):null},updateContainerLayout:function(e,t){n.dispatch({type:"setContainerLayout",payload:{instanceId:e,containerLayout:t}})},getLayoutBox:function(e){const t=n.document.getInstance(e);if(t&&void 0!==t.layoutBox)return Z(t.layoutBox)},updateLayoutBox:function(e,t){n.dispatch({type:"updateLayoutBox",payload:{instanceId:e,patch:t}})},getLayoutItem:function(e){const t=n.document.getInstance(e);if(t&&void 0!==t.layoutItem)return Z(t.layoutItem)},updateLayoutItem:function(e,t){n.dispatch({type:"updateLayoutItem",payload:{instanceId:e,patch:t}})},getRotation:function(e){const t=n.document.getInstance(e);if(!t)return 0;const o=t.rotation;return"number"==typeof o&&Number.isFinite(o)?o:0},updateRotation:function(e,t){n.dispatch({type:"updateRotation",payload:{instanceId:e,value:t}})},getInstanceOutletRect:function(e,n){if("undefined"==typeof document||"function"!=typeof document.querySelector)return null;const t=n??"default",o=""===t?"default":t,i=`[data-instance-id="${so(e)}"]`,a=`[data-hc-slot="${so(o)}"]`,r=document.querySelector(`${i} ${a}`);return r&&r instanceof HTMLElement?r.getBoundingClientRect():null}}}({ctx:e}),l=function(e){const{ctx:n}=e;function t(){return JSON.parse(JSON.stringify(n.document.document.layout))}return{getLayoutConfig:t,updateCanvasSize:function(e){const o={...t().canvas,...e};n.dispatch({type:"updateLayout",payload:{patch:{canvas:o}}})},updateCanvasBackground:function(e){if(null===e)return void n.dispatch({type:"updateLayout",payload:{patch:{background:void 0}}});const o={...t().background??{},...e};n.dispatch({type:"updateLayout",payload:{patch:{background:o}}})},updateBehavior:function(e){const o={...t().behavior??{},...e};n.dispatch({type:"updateLayout",payload:{patch:{behavior:o}}})},setRootLayout:function(e){let t;if(null===e)t=null;else if("string"==typeof e)switch(e){case"free":t={mode:"free"};break;case"none":t={mode:"none"};break;case"split":t={mode:"split",direction:"horizontal",ratios:[.5,.5]};break;case"grid":t={mode:"grid",columns:[{mode:"fr",value:1},{mode:"fr",value:1}],rows:[{mode:"fr",value:1},{mode:"fr",value:1}]};break;case"flex":t={mode:"flex",direction:"row"};break;default:return void console.warn(`[hc-canvas/handle] setRootLayout: 未知 mode "${e}",忽略`)}else t=e;n.dispatch({type:"setRootLayout",payload:{rootLayout:t}})},setInteractionOptions:function(e){n.setInteractionOptions(e)},getEffectiveBehavior:function(){return{...n.effectiveBehavior.value}},resolveAsset:function(e){return n.resolveAsset(e)}}}({ctx:e}),u=function(e){const{ctx:n}=e;function t(){return n.document.document.layout.guides??{}}function o(e){n.dispatch({type:"updateLayout",payload:{patch:{guides:e}}})}return{setRulerVisible:function(e){const n=t();o({...n,ruler:{...n.ruler??{},visible:e}})},setGridVisible:function(e){const n=t();o({...n,grid:{...n.grid??{},visible:e}})},updateRulerConfig:function(e){const n=t();o({...n,ruler:{...n.ruler??{},...e}})},updateGridConfig:function(e){const n=t();o({...n,grid:{...n.grid??{},...e}})},addGuide:function(e){const n=t(),i=n.items??[],a=e.id??re("g_");if(i.some(e=>e.id===a))return console.warn(`[hc-canvas/handle] addGuide: id "${a}" 已存在,忽略`),a;const r={id:a,axis:e.axis,position:e.position};return void 0!==e.locked&&(r.locked=e.locked),void 0!==e.label&&(r.label=e.label),o({...n,items:[...i,r]}),a},removeGuide:function(e){const n=t(),i=n.items??[];i.some(n=>n.id===e)&&o({...n,items:i.filter(n=>n.id!==e)})},updateGuide:function(e,n){const i=t(),a=i.items??[],r=a.findIndex(n=>n.id===e);if(r<0)return void console.warn(`[hc-canvas/handle] updateGuide: id "${e}" 不存在,忽略`);const{id:s,...c}=n,d={...a[r],...c},l=[...a];l[r]=d,o({...i,items:l})},getGuides:function(){return(t().items??[]).map(e=>({...e}))},clearGuides:function(){const e=t();e.items&&0!==e.items.length&&o({...e,items:[]})},getMouseCanvasPoint:function(){const e=n.mouseCanvasPoint.value;return e?{x:e.x,y:e.y}:null}}}({ctx:e}),p=function(e){const{ctx:n,recorder:t,viewportApi:o,guides:i}=e;function a(e,t){const o=n.document.getInstance(e);if(!o)return null;const i=(null==t?void 0:t.newInstanceId)??re(`${o.componentId}_`);return n.dispatch({type:"duplicateInstance",payload:{instanceId:e,newInstanceId:i,...void 0!==(null==t?void 0:t.offset)?{offset:t.offset}:{}}}),n.document.getInstance(i)?i:null}const r=Object.freeze([{id:"undo",keys:["mod+z"],command:"undo",when:"notEditingText"},{id:"redo",keys:["mod+shift+z","mod+y"],command:"redo",when:"notEditingText"},{id:"deleteSelection",keys:["delete","backspace"],command:"deleteSelection",when:"hasSelection"},{id:"duplicateSelection",keys:["mod+d"],command:"duplicateSelection",when:"hasSelection"},{id:"fitToSelectionOrContent",keys:["f"],command:"fitToSelectionOrContent",when:"notEditingText"},{id:"zoom100",keys:["1"],command:"zoom100",when:"notEditingText"},{id:"resetViewport",keys:["0"],command:"resetViewport",when:"notEditingText"},{id:"zoomIn",keys:["+","="],command:"zoomIn",when:"notEditingText"},{id:"zoomOut",keys:["-"],command:"zoomOut",when:"notEditingText"},{id:"nudgeLeft",keys:["arrowleft"],command:"nudgeSelection",payload:{dx:-1,dy:0},when:"hasSelection"},{id:"nudgeRight",keys:["arrowright"],command:"nudgeSelection",payload:{dx:1,dy:0},when:"hasSelection"},{id:"nudgeUp",keys:["arrowup"],command:"nudgeSelection",payload:{dx:0,dy:-1},when:"hasSelection"},{id:"nudgeDown",keys:["arrowdown"],command:"nudgeSelection",payload:{dx:0,dy:1},when:"hasSelection"},{id:"nudgeLeftLarge",keys:["shift+arrowleft"],command:"nudgeSelectionLarge",payload:{dx:-1,dy:0},when:"hasSelection"},{id:"nudgeRightLarge",keys:["shift+arrowright"],command:"nudgeSelectionLarge",payload:{dx:1,dy:0},when:"hasSelection"},{id:"nudgeUpLarge",keys:["shift+arrowup"],command:"nudgeSelectionLarge",payload:{dx:0,dy:-1},when:"hasSelection"},{id:"nudgeDownLarge",keys:["shift+arrowdown"],command:"nudgeSelectionLarge",payload:{dx:0,dy:1},when:"hasSelection"},{id:"cancelInteraction",keys:["escape"],command:"cancelInteraction",when:"notEditingText"}]);function s(){const e=n.selection.selectedIds.value;if(0===e.length)return!1;for(const t of e){const e=n.document.getInstance(t);if(e&&!0!==(e.lockPosition??e.locked))return!0}return!1}function c(e,t,o){const i=o?10:1,a=n.selection.selectedIds.value;if(0===a.length)return;const r=!n.isBatching.value;r&&n.beginBatch();try{for(const o of a){const a=n.document.getInstance(o);if(!a||!0===(a.lockPosition??a.locked))continue;const r=Yt(n,o);Gt(r)?n.dispatch({type:"moveInstance",payload:{instanceId:o,x:a.rect.x+e*i,y:a.rect.y+t*i}}):"undefined"!=typeof console&&"function"==typeof console.debug&&console.debug("[hc-canvas/handle] executeNudge: 拒绝 layout-managed 子 nudge",{instanceId:o,parentLayoutMode:r})}}finally{r&&n.endBatch(o?"arrow-move-large":"arrow-move")}}function d(e){const t=[...n.selection.selectedIds.value];if(0===t.length)return;const o=!n.isBatching.value;o&&n.beginBatch();try{for(const o of t)n.dispatch({type:"setInstanceLocked",payload:{instanceId:o,locked:e}})}finally{o&&n.endBatch(e?"lock-selection":"unlock-selection")}}function l(e){const t=n.selection.selectedIds.value;if(0===t.length)return;const o=n.document.document.instances;if(0===o.length)return;const i=o.map((e,n)=>({inst:e,origIdx:n})).sort((e,n)=>{const t=e.inst.zIndex??0,o=n.inst.zIndex??0;return t!==o?t-o:e.origIdx-n.origIdx}).map(e=>e.inst),a=new Set(t),r=[];for(let e=0;e<i.length;e++)a.has(i[e].instanceId)&&r.push(e);if(0===r.length)return;if(r.length===i.length)return;const s=r.map(e=>i[e]),c=i.filter(e=>!a.has(e.instanceId));let d;if("toFront"===e)d=[...c,...s];else if("toBack"===e)d=[...s,...c];else if("forward"===e){let e=r[r.length-1]+1;for(;e<i.length&&a.has(i[e].instanceId);)e++;if(e>=i.length)return;const n=i[e],t=c.indexOf(n);d=[...c.slice(0,t+1),...s,...c.slice(t+1)]}else{let e=r[0]-1;for(;e>=0&&a.has(i[e].instanceId);)e--;if(e<0)return;const n=i[e],t=c.indexOf(n);d=[...c.slice(0,t),...s,...c.slice(t)]}const l=[];for(let e=0;e<d.length;e++){const n=d[e];(n.zIndex??0)!==e&&l.push({id:n.instanceId,zIndex:e})}if(0===l.length)return;const u=!n.isBatching.value;u&&n.beginBatch();try{for(const e of l)n.dispatch({type:"updateInstance",payload:{instanceId:e.id,patch:{zIndex:e.zIndex}}})}finally{u&&n.endBatch(`z-order-${e}`)}}const u={undo:{execute:()=>t.undo(),canExecute:()=>t.canUndo.value},redo:{execute:()=>t.redo(),canExecute:()=>t.canRedo.value},deleteSelection:{execute:function(){const e=[...n.selection.selectedIds.value];if(0===e.length)return;const t=!n.isBatching.value;t&&n.beginBatch();try{for(const t of e)n.dispatch({type:"removeInstance",payload:{instanceId:t}})}finally{t&&n.endBatch("delete-selection")}},canExecute:()=>n.selection.selectedIds.value.length>0},duplicateSelection:{execute:function(){const e=[...n.selection.selectedIds.value];if(0===e.length)return;const t=[],o=!n.isBatching.value;o&&n.beginBatch();try{for(const n of e){const e=a(n);e&&t.push(e)}t.length>0&&n.dispatch({type:"selectAll",payload:{instanceIds:t}})}finally{o&&n.endBatch("duplicate-selection")}},canExecute:()=>n.selection.selectedIds.value.length>0},clearSelection:{execute:()=>n.dispatch({type:"clearSelection"}),canExecute:()=>n.selection.selectedIds.value.length>0},cancelInteraction:{execute:()=>n.dispatch({type:"clearSelection"}),canExecute:()=>!0},zoomIn:{execute:()=>o.zoomBy(.1),canExecute:()=>!0},zoomOut:{execute:()=>o.zoomBy(-.1),canExecute:()=>!0},zoom100:{execute:()=>o.zoomTo(1),canExecute:()=>!0},resetViewport:{execute:()=>o.resetViewport(),canExecute:()=>!0},fitToContent:{execute:()=>o.fitToContent(),canExecute:()=>null!==o.getContentBounds()},fitToSelection:{execute:()=>o.fitToSelection(),canExecute:()=>null!==o.getSelectionBounds()},fitToSelectionOrContent:{execute:()=>{o.getSelectionBounds()?o.fitToSelection():o.fitToContent()},canExecute:()=>null!==o.getSelectionBounds()||null!==o.getContentBounds()},nudgeSelection:{execute:e=>{const n=e??{dx:0,dy:0};c(n.dx,n.dy,!1)},canExecute:s},nudgeSelectionLarge:{execute:e=>{const n=e??{dx:0,dy:0};c(n.dx,n.dy,!0)},canExecute:s},lockSelection:{execute:()=>d(!0),canExecute:()=>n.selection.selectedIds.value.length>0},unlockSelection:{execute:()=>d(!1),canExecute:()=>n.selection.selectedIds.value.length>0},bringForward:{execute:()=>l("forward"),canExecute:()=>n.selection.selectedIds.value.length>0},sendBackward:{execute:()=>l("backward"),canExecute:()=>n.selection.selectedIds.value.length>0},bringToFront:{execute:()=>l("toFront"),canExecute:()=>n.selection.selectedIds.value.length>0},sendToBack:{execute:()=>l("toBack"),canExecute:()=>n.selection.selectedIds.value.length>0},toggleGrid:{execute:function(){var e;const t=null==(e=n.document.document.layout.guides)?void 0:e.grid;i.setGridVisible(!(null==t?void 0:t.visible))},canExecute:()=>!0},toggleRuler:{execute:function(){var e;const t=null==(e=n.document.document.layout.guides)?void 0:e.ruler;i.setRulerVisible(!(null==t?void 0:t.visible))},canExecute:()=>!0}};function p(e,t){const o=null===t?null:JSON.parse(JSON.stringify(t));n.dispatch({type:"setComponentOverride",payload:{instanceId:e,override:o}})}function f(e,t){const o=e??"notEditingText";return"always"===o||("notEditingText"===o?!Mo(t.target):"design"===o?!Mo(t.target)&&!1!==n.effectiveBehavior.value.draggable:"hasSelection"===o&&!Mo(t.target)&&n.selection.selectedIds.value.length>0)}return{duplicateInstance:a,getToolMode:function(){return n.toolMode.value},setToolMode:function(e){n.setToolMode(e)},setTemporaryToolMode:function(e){n.setTemporaryToolMode(e)},handleGetDefaultShortcuts:function(){return[{id:"undo",keys:["mod+z"],command:"undo",when:"notEditingText"},{id:"redo",keys:["mod+shift+z","mod+y"],command:"redo",when:"notEditingText"},{id:"deleteSelection",keys:["delete","backspace"],command:"deleteSelection",when:"hasSelection"},{id:"duplicateSelection",keys:["mod+d"],command:"duplicateSelection",when:"hasSelection"},{id:"fitToSelectionOrContent",keys:["f"],command:"fitToSelectionOrContent",when:"notEditingText"},{id:"zoom100",keys:["1"],command:"zoom100",when:"notEditingText"},{id:"resetViewport",keys:["0"],command:"resetViewport",when:"notEditingText"},{id:"zoomIn",keys:["+","="],command:"zoomIn",when:"notEditingText"},{id:"zoomOut",keys:["-"],command:"zoomOut",when:"notEditingText"},{id:"nudgeLeft",keys:["arrowleft"],command:"nudgeSelection",payload:{dx:-1,dy:0},when:"hasSelection"},{id:"nudgeRight",keys:["arrowright"],command:"nudgeSelection",payload:{dx:1,dy:0},when:"hasSelection"},{id:"nudgeUp",keys:["arrowup"],command:"nudgeSelection",payload:{dx:0,dy:-1},when:"hasSelection"},{id:"nudgeDown",keys:["arrowdown"],command:"nudgeSelection",payload:{dx:0,dy:1},when:"hasSelection"},{id:"nudgeLeftLarge",keys:["shift+arrowleft"],command:"nudgeSelectionLarge",payload:{dx:-1,dy:0},when:"hasSelection"},{id:"nudgeRightLarge",keys:["shift+arrowright"],command:"nudgeSelectionLarge",payload:{dx:1,dy:0},when:"hasSelection"},{id:"nudgeUpLarge",keys:["shift+arrowup"],command:"nudgeSelectionLarge",payload:{dx:0,dy:-1},when:"hasSelection"},{id:"nudgeDownLarge",keys:["shift+arrowdown"],command:"nudgeSelectionLarge",payload:{dx:0,dy:1},when:"hasSelection"},{id:"cancelInteraction",keys:["escape"],command:"cancelInteraction",when:"notEditingText"}]},executeShortcut:function(e){for(const n of r){if(!zo(n,e))continue;if(!f(n.when,e))continue;const t=u[n.command];return!!t&&!!t.canExecute()&&(t.execute(n.payload),!1!==n.preventDefault&&e.preventDefault(),!0)}return!1},executeCommand:function(e,n){const t=u[e];t?t.canExecute()&&t.execute(n):console.warn(`[hc-canvas/handle] executeCommand: 未知命令 "${e}"`)},canExecuteCommand:function(e){const n=u[e];return!!n&&n.canExecute()},getStaleComponentOverrides:function(){const e=n.document.document.componentOverrides??{},t=[];for(const o of n.document.document.instances){const n=e[o.instanceId];n&&n.baseVersionKey!==o.componentVersionKey&&t.push({instanceId:o.instanceId,baseVersionKey:n.baseVersionKey,currentVersionKey:o.componentVersionKey})}return t},setComponentOverride:p,discardComponentOverride:function(e){p(e,null)},getLayoutIssues:function(){return n.layoutIssues.value}}}({ctx:e,recorder:o,viewportApi:c,guides:u}),f=function(e){const{ctx:n,options:t}=e;function o(e){var o,i,a,r,s,c,d,l,u;const p=e.parentId||void 0;if(void 0===p)return e;const f=(null==(i=null==(o=n.document.getInstance(p))?void 0:o.containerLayout)?void 0:i.mode)??"none";if("flex"!==f&&"split"!==f&&"grid"!==f)return e;const h=e.layoutBox,g=void 0!==h,v=void 0!==h,m=null==(a=t.resolveContract)?void 0:a.call(t,e.componentVersionKey),y=null==(s=null==(r=null==m?void 0:m.layoutDecl)?void 0:r.sizing)?void 0:s.defaultChildSize,I=e.rect??{w:240,h:60},w=h??{x:0,y:0,width:I.w,height:I.h,widthMode:"px",heightMode:"px"},x=e=>{if(void 0!==e)return"hug"===e?"auto":e},b=g?w.widthMode:x(null==(c=null==y?void 0:y.width)?void 0:c.mode)??"fill",S=v?w.heightMode:x(null==(d=null==y?void 0:y.height)?void 0:d.mode)??"fill",k=g||void 0===(null==(l=null==y?void 0:y.width)?void 0:l.value)?w.width:y.width.value,M=v||void 0===(null==(u=null==y?void 0:y.height)?void 0:u.value)?w.height:y.height.value;return{...e,layoutBox:{...w,x:0,y:0,width:k,height:M,widthMode:b,heightMode:S}}}return{dispatchWithDefaults:function(e){if("addInstance"===e.type){const i=function(e){var n,o,i,a;if(void 0!==e.containerLayout)return e;const r=null==(n=t.resolveContract)?void 0:n.call(t,e.componentVersionKey);if(!r)return e;if(!("container"===(null==(o=r.layoutDecl)?void 0:o.role)||((null==(i=r.slotsDecl)?void 0:i.length)??0)>0))return e;const s=null==(a=r.layoutDecl)?void 0:a.defaultLayout;return void 0===s?e:{...e,containerLayout:JSON.parse(JSON.stringify(s))}}(e.payload.instance);return void n.dispatch({type:"addInstance",payload:{instance:o(i)}})}n.dispatch(e)}}}({ctx:e,options:t}),h=Co({ctx:e}),g=n(()=>{const n=e.selection.selectedIds.value;if(0===n.length)return[];const t=new Set(n);return e.document.document.instances.filter(e=>t.has(e.instanceId))}),v=e.selection.selectedIds,m=a(v),y=a(e.isBatching),I=function(){let e=!1;const n=new Set,t=new Set,o=[];return{isDisposed:()=>e,addPendingReady(e){n.add(e)},removePendingReady(e){n.delete(e)},registerListenerOff(e){let n=!1;const o=()=>{n||(n=!0,t.delete(o),e())};return t.add(o),o},addDisposeCleanup(e){o.push(e)},markDisposed(){if(e)return;e=!0;const i=[...n];n.clear();for(const e of i)try{e.reject(new $t)}catch(e){console.error("[hc-canvas/handle] pending ready rejection threw on dispose",e)}const a=[...t];t.clear();for(const e of a)try{e()}catch(e){console.error("[hc-canvas/handle] instance listener off threw on dispose",e)}for(const e of o)e()}}}(),{attachBindingDelegate:w,setBindingMode:x,getBindingMode:b,testBinding:S,invalidateDataSource:k,getDataSourceSnapshot:M,on:z,getInstanceReady:T,getInstanceRuntime:L,getCachedBySourceId:C,startTracing:B,stopTracing:P,getTraceBuffer:D}=function(e){const{lifecycle:n,currentCanvasId:t}=e;let o=null,i=null;return n.addDisposeCleanup(()=>{o=null,i=null}),{attachBindingDelegate:function(e,t){n.isDisposed()||(o=e,null===e?i=null:arguments.length>=2&&(i=t??null))},setBindingMode:function(e){null==o||o.setMode(e)},getBindingMode:function(){return(null==o?void 0:o.getMode())??"off"},testBinding:function(e,n){return(null==o?void 0:o.testBinding(e,n))??[]},invalidateDataSource:function(e){null==i||i.invalidate(e)},getDataSourceSnapshot:function(){return(null==i?void 0:i.getSnapshot())??{entries:[]}},on:function(e,i){if(n.isDisposed())return()=>{};if("instance:ready"===e||"instance:unmounted"===e){const o=i,a=_(e,e=>{e.canvasId===t&&o(e.instanceId)});return n.registerListenerOff(a)}return o?o.on(e,i):()=>{}},getInstanceReady:function(e){return n.isDisposed()?Promise.reject(new $t):"string"!=typeof e||0===e.length?Promise.reject(new TypeError("getInstanceReady: instanceId must be a non-empty string")):O(e,t)?Promise.resolve():new Promise((o,i)=>{let a,r,s=!1;const c=()=>{s=!0;try{null==a||a()}catch{}r&&n.removePendingReady(r)};a=_("instance:ready",n=>{s||n.canvasId===t&&n.instanceId===e&&(c(),o())}),r={off:a,reject:e=>{s||(c(),i(e))}},n.addPendingReady(r),!s&&O(e,t)&&(c(),o())})},getInstanceRuntime:function(e){return n.isDisposed()?null:O(e,t)},getCachedBySourceId:function(e,n){return null==i?void 0:i.getCachedBySourceId(e,n)},startTracing:function(e){null==o||o.startTracing(e)},stopTracing:function(){return(null==o?void 0:o.stopTracing())??[]},getTraceBuffer:function(){return(null==o?void 0:o.getTraceBuffer())??[]}}}({lifecycle:I,currentCanvasId:e.canvasId});return I.addDisposeCleanup(()=>o.dispose()),{dispatch:e=>f.dispatchWithDefaults(e),beginBatch:()=>e.beginBatch(),endBatch:n=>e.endBatch(n),isBatching:y,getSnapshot:()=>Z(e.document.document),getRemoveImpact:n=>nn(e.document.document.instances,n),selectedIds:m,selectedInstances:g,freeSplitSelection:a(e.selection.freeSplitSelection),selectFreeSplitLeaf:(n,t)=>e.selection.selectFreeSplitLeaf(n,t),selectFreeSplitDivider:(n,t,o)=>e.selection.selectFreeSplitDivider(n,t,o),clearFreeSplitSelection:()=>e.selection.clearFreeSplitSelection(),viewport:e.viewport,clientToCanvasPoint:r.clientToCanvasPoint,getInstanceAtClientPoint:r.getInstanceAtClientPoint,getDropTarget:r.getDropTarget,getFreeSplitDropTarget:r.getFreeSplitDropTarget,duplicateInstance:p.duplicateInstance,undo:o.undo,redo:o.redo,canUndo:o.canUndo,canRedo:o.canRedo,undoStackSize:o.undoStackSize,redoStackSize:o.redoStackSize,clearHistory:o.clear,getLayoutConfig:l.getLayoutConfig,updateCanvasSize:l.updateCanvasSize,updateCanvasBackground:l.updateCanvasBackground,updateBehavior:l.updateBehavior,setInteractionOptions:l.setInteractionOptions,getEffectiveBehavior:l.getEffectiveBehavior,setRootLayout:l.setRootLayout,getInstanceTree:s.getInstanceTree,getInstanceList:s.getInstanceList,getInstance:s.getInstanceById,getSelectedPath:s.getSelectedPath,getBreadcrumb:s.getBreadcrumb,focusInstance:s.focusInstance,scrollToInstance:s.scrollToInstance,moveInstanceInTree:s.moveInstanceInTree,canReparent:s.canReparent,cannotReparentEvent:s.cannotReparentEvent,cannotDragLayoutManagedChildEvent:e.cannotDragLayoutManagedChildEvent,resolveAsset:l.resolveAsset,getViewportState:c.getViewportState,getVisibleBounds:c.getVisibleBounds,getCanvasBounds:c.getCanvasBounds,getContentBounds:c.getContentBounds,getSelectionBounds:c.getSelectionBounds,getInstanceBounds:c.getInstanceBounds,panBy:c.panBy,panTo:c.panTo,zoomTo:c.zoomTo,zoomBy:c.zoomBy,zoomToPoint:c.zoomToPoint,resetViewport:c.resetViewport,fitToContent:c.fitToContent,fitToSelection:c.fitToSelection,scrollToRect:c.scrollToRect,toolMode:e.toolMode,getToolMode:p.getToolMode,setToolMode:p.setToolMode,setTemporaryToolMode:p.setTemporaryToolMode,getDefaultShortcuts:p.handleGetDefaultShortcuts,executeShortcut:p.executeShortcut,executeCommand:p.executeCommand,canExecuteCommand:p.canExecuteCommand,getStaleComponentOverrides:p.getStaleComponentOverrides,setComponentOverride:p.setComponentOverride,discardComponentOverride:p.discardComponentOverride,getLayoutIssues:p.getLayoutIssues,setRulerVisible:u.setRulerVisible,setGridVisible:u.setGridVisible,updateRulerConfig:u.updateRulerConfig,updateGridConfig:u.updateGridConfig,addGuide:u.addGuide,removeGuide:u.removeGuide,updateGuide:u.updateGuide,getGuides:u.getGuides,clearGuides:u.clearGuides,getMouseCanvasPoint:u.getMouseCanvasPoint,getInstanceSize:d.getInstanceSize,updateInstanceSize:d.updateInstanceSize,getContainerLayout:d.getContainerLayout,updateContainerLayout:d.updateContainerLayout,getInstanceOutletRect:d.getInstanceOutletRect,getLayoutBox:d.getLayoutBox,updateLayoutBox:d.updateLayoutBox,getLayoutItem:d.getLayoutItem,updateLayoutItem:d.updateLayoutItem,getRotation:d.getRotation,updateRotation:d.updateRotation,setBindingMode:x,getBindingMode:b,testBinding:S,on:z,attachBindingDelegate:w,invalidateDataSource:k,getDataSourceSnapshot:M,getCachedBySourceId:C,getInstanceReady:T,getInstanceRuntime:L,startTracing:B,stopTracing:P,getTraceBuffer:D,freeSplit:h,dispose:function(){I.markDisposed()}}}const Po=Symbol("hc:canvas:reparent-bridge");function Do(e){return"string"==typeof e&&e.includes("@draft:")}function Ro(e){if("string"!=typeof e||!e.includes("@"))return null;const n=e.indexOf("@"),t=e.slice(0,n),o=e.slice(n+1);if(!t)return null;if(o.startsWith("draft:")){const e=o.slice(6),n=e.indexOf(":");if(n<=0)return null;const i=e.slice(0,n),a=e.slice(n+1);return i&&a?{kind:"draft",componentId:t,pageId:i,baseVersion:a,baseVersionKey:`${t}@${a}`}:null}return o?{kind:"published",componentId:t,version:o}:null}function Eo(e){return"preview"===e||"runtime"===e?"runtime":"off"}const $o=(e,n)=>{const t=e.__vccOpts||e;for(const[e,o]of n)t[e]=o;return t},Ao=$o(s({__name:"CanvasStage",setup(e){const t=Tn(),o=i(null);let a=null;const r=n(()=>{const{scale:e,panX:n,panY:o}=t.viewport.state;return`translate(${n}px, ${o}px) scale(${e})`});function s(){const e=o.value;if(!e)return;const n=e.getBoundingClientRect();t.setMeasuredStageSize({w:n.width,h:n.height})}return m(()=>{y(s),"undefined"!=typeof ResizeObserver&&o.value&&(a=new ResizeObserver(s),a.observe(o.value)),window.addEventListener("resize",s)}),I(()=>{null==a||a.disconnect(),a=null,window.removeEventListener("resize",s)}),(e,n)=>(d(),l("div",{ref_key:"stageEl",ref:o,class:"hc-canvas-stage","data-hc-stage":""},[S("div",{class:"hc-canvas-stage__world","data-hc-stage-world":"",style:u({transform:r.value,transformOrigin:"0 0"})},[T(e.$slots,"default",{},void 0,!0)],4)],512))}}),[["__scopeId","data-v-69f0f8c9"]]),Oo=["data-mode"],Fo=s({__name:"RuntimeLayer",props:{componentSourceMap:{},mode:{default:"design"},schedulerOptions:{},canvasId:{}},setup(e){const t=Tn(),o=n(()=>t.document.document);return(n,i)=>(d(),l("div",{class:"hc-runtime-layer","data-hc-runtime-layer":"","data-mode":e.mode,style:u({position:"absolute",top:0,left:0,pointerEvents:x(t).effectiveBehavior.value.selectable?"none":"auto"})},[L(bt,{document:o.value,"component-source-map":e.componentSourceMap,"scheduler-options":e.schedulerOptions,"canvas-id":e.canvasId},null,8,["document","component-source-map","scheduler-options","canvas-id"])],12,Oo))}}),jo=8,qo=.05;function No(e,n,t,o=0){if(!n||n.length<2)return[];if(e.w<=0||e.h<=0)return[];const i=n.map(e=>"number"==typeof e&&Number.isFinite(e)&&e>0?e:0),a=i.reduce((e,n)=>e+n,0);if(a<=0)return[];const r=i.length-1,s=Math.max(0,o)*r,c="horizontal"===t?e.w:e.h,d=Math.max(0,c-s);if(d<=0)return[];const l=o>0?o:8,u=[];let p=0;for(let n=0;n<r;n++){p+=i[n]/a*d;const r=p+n*o+o/2;let s;s="horizontal"===t?{x:e.x+r-l/2,y:e.y,w:l,h:e.h}:{x:e.x,y:e.y+r-l/2,w:e.w,h:l},u.push({index:n,rect:s,direction:t})}return u}function Vo(e,n,t,o,i=0){if(!e||n<0||n>=e.length-1)return e.slice();const a=e.map(e=>"number"==typeof e&&Number.isFinite(e)&&e>0?e:0),r=a[n],s=a[n+1],c=r+s;if(c<=0)return a;const d=a.length-1,l=Math.max(0,i)*d,u=Math.max(0,o-l);if(u<=0)return a;const p=a.reduce((e,n)=>e+n,0);if(p<=0)return a;const f=t/u*p,h=qo*p;let g=r+f,v=s-f;g<h&&(g=h,v=c-h),v<h&&(v=h,g=c-h);const m=a.slice();return m[n]=g,m[n+1]=v,m}function Ko(t){const o=e({status:"idle",parentId:null,dividerIndex:null,startRatios:null,childIds:null,parentAxisPx:0,startPt:null,direction:null,gap:0}),i=n(()=>"active"===o.status);function a(){o.status="idle",o.parentId=null,o.dividerIndex=null,o.startRatios=null,o.childIds=null,o.parentAxisPx=0,o.startPt=null,o.direction=null,o.gap=0}return{drag:o,isDragging:i,handleSplitDividerStart:function(e){if(!e.parentId)return{startTracking:!1};if(e.dividerIndex<0)return{startTracking:!1};if(!e.startRatios||e.startRatios.length<2)return{startTracking:!1};if(!e.childIds||e.childIds.length<=e.dividerIndex+1||!e.childIds[e.dividerIndex]||!e.childIds[e.dividerIndex+1])return{startTracking:!1};const n=t.document.getInstance(e.parentId);return n&&n.containerLayout&&"split"===n.containerLayout.mode?(o.status="active",o.parentId=e.parentId,o.dividerIndex=e.dividerIndex,o.startRatios=e.startRatios.slice(),o.childIds=e.childIds.slice(),o.parentAxisPx=e.parentAxisPx,o.startPt={...e.canvasPt},o.direction=e.direction,o.gap=e.gap,t.beginBatch(),{startTracking:!0}):{startTracking:!1}},handleSplitDividerMove:function(e){var n,i;if("active"!==o.status)return;if(!(o.startPt&&o.startRatios&&o.childIds&&o.direction&&null!==o.dividerIndex))return;const a=t.document.getInstance(o.parentId);if(!a||!a.containerLayout||"split"!==a.containerLayout.mode)return;const r="horizontal"===o.direction?e.x-o.startPt.x:e.y-o.startPt.y,s=Vo(o.startRatios,o.dividerIndex,r,o.parentAxisPx,o.gap),c=o.dividerIndex,d=o.childIds[c],l=o.childIds[c+1];if(!d||!l)return;const u=s[c],p=s[c+1],f=t.document.getInstance(d),h=t.document.getInstance(l),g=null==(n=null==f?void 0:f.layoutItem)?void 0:n.ratio,v=null==(i=null==h?void 0:h.layoutItem)?void 0:i.ratio;g===u&&v===p||(t.dispatch({type:"updateLayoutItem",payload:{instanceId:d,patch:{ratio:u}}}),t.dispatch({type:"updateLayoutItem",payload:{instanceId:l,patch:{ratio:p}}}))},handleSplitDividerEnd:function(){"active"===o.status&&(t.endBatch("split-divider-drag"),a())},cancelSplitDividerDrag:function(){"active"===o.status&&t.endBatch("split-divider-cancel"),a()}}}function _o(e,n){const t=Math.min(e.x,n.x),o=Math.min(e.y,n.y);return{x:t,y:o,w:Math.max(e.x+e.w,n.x+n.w)-t,h:Math.max(e.y+e.h,n.y+n.h)-o}}function Xo(e,n){if("leaf"===e.type)return n(e.leafId);let t=null;for(const o of e.children){const e=Xo(o,n);e&&(t=t?_o(t,e):e)}return t}function Yo(e,n){return Xo(e,n)}function Go(e,n,t={}){const o=t.thickness??8,i=[],a=e=>{if("leaf"===e.type)return;const t=e.children.map(e=>Xo(e,n));for(let n=0;n<e.children.length-1;n++){const a=t[n],r=t[n+1];if(a&&r)if("row"===e.dir){const t=(a.x+a.w+r.x)/2,s=Math.min(a.y,r.y),c=Math.max(a.y+a.h,r.y+r.h);i.push({nodeId:e.nodeId,dividerIndex:n,direction:"horizontal",rect:{x:t-o/2,y:s,w:o,h:c-s}})}else{const t=(a.y+a.h+r.y)/2,s=Math.min(a.x,r.x),c=Math.max(a.x+a.w,r.x+r.w);i.push({nodeId:e.nodeId,dividerIndex:n,direction:"vertical",rect:{x:s,y:t-o/2,w:c-s,h:o}})}}e.children.forEach(a)};return a(e),i}function Ho(e,n,t,o,i={}){const{snap:a=!1,snapFractions:r=[.5],snapThreshold:s=.04,minRatioFraction:c=qo,minPx:d=0}=i,l=e.map(e=>({...e}));if(n<0||n>=e.length-1)return l;const u=e[n],p=e[n+1];if("px"===u.mode&&"px"===p.mode){const e=u.value+p.value,o=Math.max(d,u.min??0),i=Math.max(d,p.min??0),a=Math.min(u.max??1/0,e-i);let r=u.value+t;return r=Math.max(o,Math.min(a,r)),l[n]={...u,value:r},l[n+1]={...p,value:e-r},l}if("ratio"===u.mode&&"ratio"===p.mode){const i=u.value+p.value;if(i<=0||o<=0)return l;const d=e.reduce((e,n)=>e+("ratio"===n.mode?n.value:0),0);if(d<=0)return l;const f=t/o*d;let h=u.value+f,g=p.value-f;const v=c*i;if(h<v&&(h=v,g=i-v),g<v&&(g=v,h=i-v),a){const e=h/i;for(const n of r)if(Math.abs(e-n)<=s){h=n*i,g=(1-n)*i;break}}return l[n]={...u,value:h},l[n+1]={...p,value:g},l}if("px"===u.mode){let e=u.value+t;e=Math.max(Math.max(d,u.min??0),Math.min(u.max??1/0,e)),l[n]={...u,value:e}}else{let e=p.value-t;e=Math.max(Math.max(d,p.min??0),Math.min(p.max??1/0,e)),l[n+1]={...p,value:e}}return l}function Uo(e,n,t={}){const o=t.edgeZonePx??12,{x:i,y:a,w:r,h:s}=e;if(n.x<i||n.x>i+r||n.y<a||n.y>a+s)return null;const c=n.x-i,d=i+r-n.x,l=n.y-a,u=a+s-n.y,p=Math.min(c,d,l,u);return p>o?null:p===c?{edge:"left"}:p===d?{edge:"right"}:p===l?{edge:"top"}:{edge:"bottom"}}function Wo(e,n,t){const{x:o,y:i,w:a,h:r}=e;let s;return s="left"===n?(t.x-o)/a:"right"===n?(o+a-t.x)/a:"top"===n?(t.y-i)/r:(i+r-t.y)/r,Math.max(.05,Math.min(.95,s))}function Jo(e,n,t){const o=on(e,n);if(!o)return null;const i=o.children[t],a=o.children[t+1];return i&&a?"leaf"===i.type&&null===i.instanceId?i.leafId:"leaf"===a.type&&null===a.instanceId?a.leafId:null:null}function Qo(e,n){const t=e.document.getInstance(n),o=null==t?void 0:t.containerLayout;return o&&"free-split"===o.mode?o:null}function Zo(t){const o=Co({ctx:t}),i=e({status:"idle",containerId:null,nodeId:null,dividerIndex:null,startSizes:null,branchAxisPx:0,startPt:null,direction:null,snap:!1}),a=n(()=>"active"===i.status);function r(){i.status="idle",i.containerId=null,i.nodeId=null,i.dividerIndex=null,i.startSizes=null,i.branchAxisPx=0,i.startPt=null,i.direction=null,i.snap=!1}return{resizeDrag:i,isResizing:a,handleResizeStart:function(e){if(!e.containerId||e.dividerIndex<0)return{startTracking:!1};if(!e.startSizes||e.startSizes.length<2)return{startTracking:!1};if(e.dividerIndex>=e.startSizes.length-1)return{startTracking:!1};const n=Qo(t,e.containerId);if(!n)return{startTracking:!1};const o=on(n.root,e.nodeId);return o&&o.sizes.length===e.startSizes.length?(i.status="active",i.containerId=e.containerId,i.nodeId=e.nodeId,i.dividerIndex=e.dividerIndex,i.startSizes=e.startSizes.map(e=>({...e})),i.branchAxisPx=e.branchAxisPx,i.startPt={...e.canvasPt},i.direction=e.direction,i.snap=e.snap??!1,t.beginBatch(),{startTracking:!0}):{startTracking:!1}},handleResizeMove:function(e){if("active"!==i.status)return;if(!(i.startPt&&i.startSizes&&i.direction&&null!==i.dividerIndex&&i.containerId&&i.nodeId))return;const n=Qo(t,i.containerId);if(!n)return;const a="horizontal"===i.direction?e.x-i.startPt.x:e.y-i.startPt.y,r=Ho(i.startSizes,i.dividerIndex,a,i.branchAxisPx,{snap:i.snap}),s=on(n.root,i.nodeId);s&&function(e,n){if(e.length!==n.length)return!1;for(let t=0;t<e.length;t++)if(e[t].mode!==n[t].mode||e[t].value!==n[t].value)return!1;return!0}(s.sizes,r)||o.resize(i.containerId,i.nodeId,r)},handleResizeEnd:function(){"active"===i.status&&(t.endBatch("free-split-resize"),r())},cancelResize:function(){"active"===i.status&&t.endBatch("free-split-resize-cancel"),r()},requestSplit:function(e,n,i,a){if(!Qo(t,e))return null;const r=o.split(e,n,i,a),s=Qo(t,e);return s&&tn(s.root,r.leafId)?r:null},requestMerge:function(e,n){Qo(t,e)&&o.merge(e,n)},requestDelete:function(e,n){const i=Qo(t,e);if(!i)return;const a=tn(i.root,n);if(a){t.beginBatch();try{null!==a.instanceId&&o.clear(e,n),o.merge(e,n)}finally{t.endBatch("free-split-delete-region")}}},requestSwap:function(e,n,i){n!==i&&Qo(t,e)&&o.swap(e,n,i)}}}function ei(e){return!0===(e.lockPosition??e.locked)}function ni(e){return!0===(e.lockSize??e.locked)}function ti(e){return ei(e)||ni(e)}const oi=["data-mode"],ii=["data-selection-box","data-locked","data-placement"],ai=["data-lock-badge"],ri=["data-resize-handle","data-resize-instance","onPointerdown"],si=["data-hc-divider-direction","data-hc-divider-index","data-hc-parent-id","data-hc-divider-dragging","onPointerdown"],ci=["data-hc-fs-leaf","data-hc-fs-leaf-container","onPointerdown"],di={key:0,class:"hc-fs-leaf-empty"},li=["onPointerdown"],ui=["onClick"],pi=["onClick"],fi=["onClick"],hi=["data-hc-fs-divider-direction","data-hc-fs-divider-node","data-hc-fs-divider-index","data-hc-fs-container-id","data-hc-fs-divider-dragging","onPointerdown","onDblclick"],gi=["onClick"],vi=["data-axis","data-kind"],mi=["data-hc-reparent-state"],yi=["data-hc-reparent-ghost-reason"],Ii={key:0,"data-hc-reparent-ghost-reason-chip":"",style:{flex:"none",fontFamily:"ui-monospace, SFMono-Regular, Menlo, Consolas, monospace",fontSize:"10px",lineHeight:"14px",padding:"0 4px",borderRadius:"2px",background:"rgba(0, 0, 0, 0.25)",color:"#fff",whiteSpace:"nowrap"}},wi=$o(s({__name:"InteractionLayer",props:{mode:{default:"design"}},emits:["cannot-drag-slot-child","cannot-drag-layout-managed-child"],setup(t,{emit:a}){const r=a,s=Tn(),c=ro(s,{getRoot:()=>me(),getDomBox:e=>{const n=Jt(e,me(),s.viewport);return n?0===n.w&&0===n.h?null:n:null}}),h=Ko(s),y=Zo(s),b=o(Po,null);v(()=>c.cannotDragSlotChildEvent.value,e=>{e&&r("cannot-drag-slot-child",{instanceId:e.instanceId,parentId:e.parentId})},{flush:"sync"}),v(()=>c.cannotDragLayoutManagedChildEvent.value,e=>{e&&r("cannot-drag-layout-managed-child",{instanceId:e.instanceId,parentId:e.parentId,parentLayoutMode:e.parentLayoutMode})},{flush:"sync"});const M=i(null);let z=null;const L=n(()=>{const e=new Set(s.selection.selectedIds.value);return s.document.document.instances.filter(n=>e.has(n.instanceId)&&!n.hidden)}),P=n(()=>s.measuredCanvasSize.value),D=w({}),R=i(0);function E(){const e=me(),n={};for(const t of L.value)n[t.instanceId]=Jt(t.instanceId,e,s.viewport);D.value=n,R.value++}let $=null;function A(){"undefined"!=typeof requestAnimationFrame?null===$&&($=requestAnimationFrame(()=>{$=null,E()})):E()}let O=null;function F(){O=null,E(),(c.isResizing.value||c.isDragging.value||h.isDragging.value||y.isResizing.value)&&(O=requestAnimationFrame(F))}function j(e){const n=D.value[e.instanceId];if(n)return n;const t=Jt(e.instanceId,me(),s.viewport);if(t&&(t.w>0||t.h>0))return t;const o=e.layoutBox;return o?{x:o.x,y:o.y,w:o.width,h:o.height}:{x:e.rect.x,y:e.rect.y,w:e.rect.w,h:e.rect.h}}v(()=>s.selection.selectedIds.value,()=>{A()},{flush:"post",deep:!0}),v(()=>s.viewport.scale.value,()=>A()),v(()=>[s.viewport.panX.value,s.viewport.panY.value],()=>A()),v(()=>L.value.map(e=>{const n=e.layoutBox;return n?`${n.x}|${n.y}|${n.width}|${n.height}|${n.widthMode}|${n.heightMode}`:""}),()=>A(),{flush:"post",deep:!0}),v(()=>L.value.map(e=>{const n=e.containerLayout;return n&&"free-split"===n.mode?JSON.stringify(n):""}),()=>A(),{flush:"post",deep:!0}),v(()=>c.isResizing.value,e=>{e&&null===O&&(O=requestAnimationFrame(F))}),v(()=>c.isDragging.value,e=>{e&&null===O&&(O=requestAnimationFrame(F))}),v(()=>h.isDragging.value,e=>{e&&null===O&&(O=requestAnimationFrame(F))}),v(()=>y.isResizing.value,e=>{e&&null===O&&(O=requestAnimationFrame(F))}),m(()=>{A()});const q=n(()=>L.value.map(e=>({instance:e,box:j(e)}))),N=n(()=>{var e,n;if(!s.effectiveBehavior.value.resizable)return[];const t=[];for(const o of q.value){const i=o.instance;if(!0===(i.lockSize??i.locked))continue;if(!o.box)continue;const a=Yt(s,i.instanceId),{x:r,y:c,w:d,h:l}=o.box,u=[{handle:"nw",cx:r,cy:c,cursor:"nwse-resize"},{handle:"n",cx:r+d/2,cy:c,cursor:"ns-resize"},{handle:"ne",cx:r+d,cy:c,cursor:"nesw-resize"},{handle:"e",cx:r+d,cy:c+l/2,cursor:"ew-resize"},{handle:"se",cx:r+d,cy:c+l,cursor:"nwse-resize"},{handle:"s",cx:r+d/2,cy:c+l,cursor:"ns-resize"},{handle:"sw",cx:r,cy:c+l,cursor:"nesw-resize"},{handle:"w",cx:r,cy:c+l/2,cursor:"ew-resize"}],p=null==(e=i.layoutBox)?void 0:e.widthMode,f=null==(n=i.layoutBox)?void 0:n.heightMode,h=u.filter(e=>Wt(a,e.handle,p,f));for(const e of h)t.push({instanceId:i.instanceId,handle:e.handle,left:e.cx-4,top:e.cy-4,cursor:e.cursor})}return t});function V(e,n,t){return"percent"===n?`${Math.round(t)}%`:"fill"===n?"fill":"auto"===n?"auto":String(Math.round(e))}const K=n(()=>{if(!c.isResizing.value)return null;const e=c.resize.instanceId;if(!e)return null;const n=s.document.getInstance(e);if(!n)return null;const t=j(n);if(!t)return null;const o=n.layoutBox,i=V(t.w,null==o?void 0:o.widthMode,(null==o?void 0:o.width)??t.w),a=V(t.h,null==o?void 0:o.heightMode,(null==o?void 0:o.height)??t.h);return{x:t.x,y:t.y,w:t.w,h:t.h,wText:i,hText:a}}),_={nw:"nwse-resize",se:"nwse-resize",ne:"nesw-resize",sw:"nesw-resize",n:"ns-resize",s:"ns-resize",w:"ew-resize",e:"ew-resize"};function X(e){var n;const t=[],o=[];for(const i of s.document.document.instances)i.parentId===e&&void 0===i.slot&&(t.push(i.instanceId),o.push(null==(n=i.layoutItem)?void 0:n.ratio));return{ids:t,ratios:o}}const Y=n(()=>{var e,n;const t=new Set;for(const o of L.value)if("split"===(null==(e=o.containerLayout)?void 0:e.mode)&&t.add(o.instanceId),o.parentId){const e=s.document.getInstance(o.parentId);"split"===(null==(n=null==e?void 0:e.containerLayout)?void 0:n.mode)&&t.add(e.instanceId)}if(0===t.size)return[];const o=[];for(const e of t){const n=s.document.getInstance(e);if(!n)continue;const t=n.containerLayout;if(!t||"split"!==t.mode)continue;const i=pe(e)??j(n);if(!i)continue;const a=t,r=a.direction,c=a.gap??0,{ids:d,ratios:l}=X(e),u=be(a.ratios??[],l),p=No(i,u,r,c);0!==p.length&&o.push({parentId:e,direction:r,gap:c,effectiveRatios:u,childIds:d,parentBox:i,dividers:p})}return o});function G(e){var n;return"undefined"!=typeof globalThis&&(null==(n=globalThis.CSS)?void 0:n.escape)?globalThis.CSS.escape(e):e.replace(/["\\]/g,e=>`\\${e}`)}function H(e){const n=s.document.getInstance(e),t=null==n?void 0:n.containerLayout;return t&&"free-split"===t.mode?t:null}function U(e,n){const t=me();if(!t)return null;const o=Vt(t,`[data-hc-leaf-container="${G(e)}"][data-hc-leaf="${G(n)}"]`);if(!(o&&o instanceof HTMLElement))return null;const i=ue(o);return i&&0===i.w&&0===i.h?null:i}const W=n(()=>{const e=new Set;if(s.freeSplitControlsAlways.value){for(const n of s.document.document.instances)H(n.instanceId)&&e.add(n.instanceId);return e}for(const n of L.value){H(n.instanceId)&&e.add(n.instanceId);let t=n.parentId,o=0;for(;t&&o++<100;){if(H(t)){e.add(t);break}const n=s.document.getInstance(t);if(!n)break;t=n.parentId}}return Z.active&&Z.containerId&&e.add(Z.containerId),e}),J=n(()=>{if(!s.freeSplitEnabled.value)return[];R.value;const e=[];for(const n of W.value){const t=H(n);if(!t)continue;const o=Go(t.root,e=>U(n,e));if(0===o.length)continue;const i=o.map(e=>({...e,mergeTargetLeafId:Jo(t.root,e.nodeId,e.dividerIndex)}));e.push({containerId:n,dividers:i})}return e}),Q=n(()=>{if(!s.freeSplitEnabled.value)return[];R.value;const e=[];for(const n of W.value){const t=H(n);if(!t)continue;const o=!0===t.structureLocked,i=rn(t.root);for(const t of i){const a=U(n,t.leafId);if(!a)continue;const r=!o&&!0!==t.locked;e.push({containerId:n,leafId:t.leafId,rect:a,isEmpty:null===t.instanceId,canSplit:r,canDelete:r&&i.length>1,canMove:null!==t.instanceId&&i.length>1})}}return e}),Z=e({active:!1,containerId:null,sourceLeafId:null,targetLeafId:null});function ee(e){const n=Z.containerId,t=me();if(!n||!t)return null;const o=oo({x:e.clientX,y:e.clientY},t,s.viewport);for(const e of Q.value){if(e.containerId!==n||e.leafId===Z.sourceLeafId)continue;const t=e.rect;if(o.x>=t.x&&o.x<=t.x+t.w&&o.y>=t.y&&o.y<=t.y+t.h)return e.leafId}return null}function ne(e){Z.active&&(Z.targetLeafId=ee(e))}function te(){window.removeEventListener("pointermove",ne),window.removeEventListener("pointerup",ie),window.removeEventListener("keydown",Le)}function oe(){Z.active=!1,Z.containerId=null,Z.sourceLeafId=null,Z.targetLeafId=null}function ie(e){te();const n=Z.containerId,t=Z.sourceLeafId,o=Z.active?ee(e):null;oe(),n&&t&&o&&o!==t&&y.requestSwap(n,t,o)}function ae(e,n,t){y.requestSplit(e,n,t,.5)}const re=e({active:!1,containerId:null,leafId:null,edge:null,leafRect:null,startPt:null});function se(){re.active=!1,re.containerId=null,re.leafId=null,re.edge=null,re.leafRect=null,re.startPt=null}const ce=n(()=>c.isResizing.value&&c.resize.handle?_[c.resize.handle]:h.isDragging.value?"horizontal"===h.drag.direction?"ew-resize":"ns-resize":y.isResizing.value?"horizontal"===y.resizeDrag.direction?"ew-resize":"ns-resize":c.isDragging.value?"grabbing":"hand"===s.toolMode.value?we?"grabbing":"grab":"marquee"===s.toolMode.value?"crosshair":"default"),de=w(null);function le(){if(!b)return!1;if(!c.isDragging.value)return!1;if(1!==c.drag.startRects.size)return!1;const e=Array.from(c.drag.startRects.keys())[0],n=s.document.getInstance(e);return!!n&&((void 0===n.placement||"canvas"===n.placement||"absolute"===n.placement)&&!0!==(n.lockPosition??n.locked)&&!n.hidden)}function ue(e){const n=me();if(!n)return null;const t=e.getBoundingClientRect(),o=n.getBoundingClientRect(),i=s.viewport.toCanvasPoint({x:t.left-o.left,y:t.top-o.top}),a=s.viewport.toCanvasPoint({x:t.right-o.left,y:t.bottom-o.top});return{x:i.x,y:i.y,w:Math.max(0,a.x-i.x),h:Math.max(0,a.y-i.y)}}function pe(e){var n;const t=me();if(!t)return null;const o=Vt(t,`[data-instance-id="${("undefined"!=typeof globalThis&&(null==(n=globalThis.CSS)?void 0:n.escape)?globalThis.CSS.escape:e=>e.replace(/["\\]/g,e=>`\\${e}`))(e)}"] [data-hc-slot="default"]`);return o&&o instanceof HTMLElement?ue(o):null}let fe=null,he=null;function ge(e){if(!le()||!b)return void(null!==de.value&&(de.value=null));const n=Array.from(c.drag.startRects.keys())[0],t=b.getDropTarget(e,{excludeInstanceId:n});if(!t)return void(null!==de.value&&(de.value=null));const o=s.document.getInstance(n);if(o&&o.parentId===t.parentId&&(o.slot??"default")===(t.slot||"default"))return void(null!==de.value&&(de.value=null));const i=ue(t.outletEl);if(!i)return void(null!==de.value&&(de.value=null));const a={parentId:t.parentId,slot:t.slot},r=b.canReparent(n,a);de.value={rect:i,target:t,result:r}}const ve=n(()=>de.value);function me(){return z||(M.value?(z=M.value.closest("[data-hc-stage]"),z):null)}function ye(e){const n=me();if(!n)return;const t=oo({x:e.clientX,y:e.clientY},n,s.viewport);s.setMouseCanvasPoint(t)}function Ie(){s.setMouseCanvasPoint(null)}let we=null;function xe(e){if(0!==e.button)return;const n=me();if(!n)return;if("hand"===s.toolMode.value)return we={clientX:e.clientX,clientY:e.clientY,panX:s.viewport.panX.value,panY:s.viewport.panY.value},window.addEventListener("pointermove",Se),window.addEventListener("pointerup",ke),void e.preventDefault();const t=oo({x:e.clientX,y:e.clientY},n,s.viewport),{startTracking:o}=c.handlePointerDown(t,{shift:e.shiftKey,ctrl:e.ctrlKey,meta:e.metaKey});o&&(Me(),e.preventDefault())}function Se(e){if(!we)return;const n=e.clientX-we.clientX,t=e.clientY-we.clientY;s.viewport.setPan(we.panX+n,we.panY+t)}function ke(){we=null,window.removeEventListener("pointermove",Se),window.removeEventListener("pointerup",ke)}function Me(){window.addEventListener("pointermove",ze),window.addEventListener("pointerup",Te),window.addEventListener("keydown",Le)}function ze(e){const n=me();if(!n)return;const t=oo({x:e.clientX,y:e.clientY},n,s.viewport);var o;c.handlePointerMove(t),h.handleSplitDividerMove(t),h.isDragging.value&&A(),y.handleResizeMove(t),y.isResizing.value&&A(),o={x:e.clientX,y:e.clientY},fe=o,"undefined"!=typeof requestAnimationFrame?null===he&&(he=requestAnimationFrame(()=>{he=null,fe&&ge(fe)})):ge(o)}function Te(e){if(h.isDragging.value)return h.handleSplitDividerEnd(),void Ce();if(y.isResizing.value)return y.handleResizeEnd(),void Ce();if(re.active){const{containerId:n,leafId:t,edge:o,leafRect:i,startPt:a}=re;if(se(),Ce(),!(n&&t&&o&&i&&a))return;const r=me(),c=e&&r?oo({x:e.clientX,y:e.clientY},r,s.viewport):a;if(("left"===o?c.x-a.x:"right"===o?a.x-c.x:"top"===o?c.y-a.y:a.y-c.y)<3)return;const d=Wo(i,o,c);return void y.requestSplit(n,t,o,d)}e&&b&&le()&&ge({x:e.clientX,y:e.clientY}),null!==he&&"undefined"!=typeof cancelAnimationFrame&&(cancelAnimationFrame(he),he=null);const n=de.value;if(n&&b){const e=Array.from(c.drag.startRects.keys())[0];return n.result.ok&&e?(c.cancelDrag(),b.moveInstanceInTree(e,{parentId:n.target.parentId,slot:n.target.slot})):c.cancelDrag(),de.value=null,void Ce()}c.handlePointerUp(),Ce()}function Le(e){"Escape"===e.key&&(c.cancelResize(),c.cancelDrag(),c.cancelMarquee(),h.cancelSplitDividerDrag(),y.cancelResize(),se(),te(),oe(),de.value=null,null!==he&&"undefined"!=typeof cancelAnimationFrame&&(cancelAnimationFrame(he),he=null),ke(),Ce())}function Ce(){window.removeEventListener("pointermove",ze),window.removeEventListener("pointerup",Te),window.removeEventListener("keydown",Le)}return I(()=>{c.cancelResize(),c.cancelDrag(),c.cancelMarquee(),h.cancelSplitDividerDrag(),y.cancelResize(),se(),te(),oe(),de.value=null,Ce(),ke(),null!==$&&"undefined"!=typeof cancelAnimationFrame&&(cancelAnimationFrame($),$=null),null!==O&&"undefined"!=typeof cancelAnimationFrame&&(cancelAnimationFrame(O),O=null),null!==he&&"undefined"!=typeof cancelAnimationFrame&&(cancelAnimationFrame(he),he=null),fe=null}),(e,n)=>(d(),l("div",{ref_key:"layerEl",ref:M,class:"hc-interaction-layer","data-hc-interaction-layer":"","data-mode":t.mode,style:u({position:"absolute",top:0,left:0,width:P.value.w+"px",height:P.value.h+"px",pointerEvents:x(s).effectiveBehavior.value.selectable?"auto":"none",cursor:ce.value,zIndex:9999}),onPointerdown:xe,onPointermove:ye,onPointerleave:Ie},[(d(!0),l(p,null,f(q.value,e=>(d(),l(p,{key:"sel-"+e.instance.instanceId},[e.box?(d(),l("div",{key:0,class:"hc-selection-box","data-selection-box":e.instance.instanceId,"data-locked":x(ti)(e.instance)?"true":"false","data-placement":e.instance.placement??"absolute",style:u({position:"absolute",left:e.box.x+"px",top:e.box.y+"px",width:e.box.w+"px",height:e.box.h+"px",border:"2px solid "+(x(ti)(e.instance)?"#9ca3af":"#3b82f6"),boxSizing:"border-box",pointerEvents:"none",boxShadow:"0 0 0 1px rgba(59, 130, 246, 0.2)"})},null,12,ii)):g("",!0)],64))),128)),(d(!0),l(p,null,f(q.value.filter(e=>x(ti)(e.instance)),e=>(d(),l(p,{key:"lock-"+e.instance.instanceId},[e.box?(d(),l("div",{key:0,class:"hc-lock-badge","data-lock-badge":e.instance.instanceId,style:u({position:"absolute",left:e.box.x+e.box.w-18+"px",top:e.box.y+2+"px",width:"16px",height:"16px",background:"#9ca3af",color:"#fff",fontSize:"11px",lineHeight:"16px",textAlign:"center",borderRadius:"3px",pointerEvents:"none",userSelect:"none"})},"🔒",12,ai)):g("",!0)],64))),128)),(d(!0),l(p,null,f(N.value,e=>(d(),l("div",{key:"rh-"+e.instanceId+"-"+e.handle,class:"hc-resize-handle","data-resize-handle":e.handle,"data-resize-instance":e.instanceId,style:u({position:"absolute",left:e.left+"px",top:e.top+"px",width:"8px",height:"8px",background:"#fff",border:"1px solid #3b82f6",boxSizing:"border-box",cursor:e.cursor,pointerEvents:"auto",zIndex:2}),onPointerdown:n=>function(e,n,t){if(0!==e.button)return;e.stopPropagation();const o=me();if(!o)return;const i=oo({x:e.clientX,y:e.clientY},o,s.viewport),{startTracking:a}=c.handleResizeStart(n,t,i);a&&(Me(),e.preventDefault())}(n,e.instanceId,e.handle)},null,44,ri))),128)),(d(!0),l(p,null,f(Y.value,n=>(d(),l(p,{key:"sd-parent-"+n.parentId},[(d(!0),l(p,null,f(n.dividers,t=>(d(),l(p,{key:"sd-"+n.parentId+"-"+t.index},[e.$slots["split-divider"]?T(e.$slots,"split-divider",{key:0,state:{parentId:n.parentId,dividerIndex:t.index,direction:t.direction,rect:t.rect,isDragging:x(h).isDragging.value&&x(h).drag.parentId===n.parentId&&x(h).drag.dividerIndex===t.index}},void 0,!0):(d(),l("div",{key:1,class:"hc-split-divider","data-hc-divider-direction":t.direction,"data-hc-divider-index":t.index,"data-hc-parent-id":n.parentId,"data-hc-divider-dragging":x(h).isDragging.value&&x(h).drag.parentId===n.parentId&&x(h).drag.dividerIndex===t.index?"true":"false",style:u({position:"absolute",left:t.rect.x+"px",top:t.rect.y+"px",width:t.rect.w+"px",height:t.rect.h+"px",background:x(h).isDragging.value&&x(h).drag.parentId===n.parentId&&x(h).drag.dividerIndex===t.index?"rgba(59, 130, 246, 0.6)":"rgba(59, 130, 246, 0.18)",cursor:"horizontal"===t.direction?"ew-resize":"ns-resize",pointerEvents:"auto",boxSizing:"border-box",zIndex:3}),onPointerdown:e=>function(e,n,t){if(0!==e.button)return;e.stopPropagation();const o=me();if(!o)return;const i=s.document.getInstance(n);if(!i)return;const a=i.containerLayout;if(!a||"split"!==a.mode)return;const r=a,c=pe(n)??j(i);if(!c)return;const d="horizontal"===r.direction?c.w:c.h,{ids:l,ratios:u}=X(n),p=be(r.ratios??[],u),f=oo({x:e.clientX,y:e.clientY},o,s.viewport),{startTracking:g}=h.handleSplitDividerStart({parentId:n,dividerIndex:t,startRatios:p,childIds:l,parentAxisPx:d,direction:r.direction,gap:r.gap??0,canvasPt:f});g&&(Me(),e.preventDefault())}(e,n.parentId,t.index)},null,44,si))],64))),128))],64))),128)),(d(!0),l(p,null,f(Q.value,e=>(d(),l("div",{key:"fsl-"+e.containerId+"-"+e.leafId,class:C(["hc-fs-leaf-edge",{"is-empty":e.isEmpty,"is-drop-target":Z.active&&Z.containerId===e.containerId&&Z.targetLeafId===e.leafId}]),"data-hc-fs-leaf":e.leafId,"data-hc-fs-leaf-container":e.containerId,style:u({position:"absolute",left:e.rect.x+"px",top:e.rect.y+"px",width:e.rect.w+"px",height:e.rect.h+"px",background:"transparent",pointerEvents:"auto",boxSizing:"border-box",zIndex:1}),onPointerdown:n=>function(e,n,t,o){if(0!==e.button)return;const i=me();if(!i)return;const a=oo({x:e.clientX,y:e.clientY},i,s.viewport),r=Uo(o,a);r&&(e.stopPropagation(),e.preventDefault(),re.active=!0,re.containerId=n,re.leafId=t,re.edge=r.edge,re.leafRect={...o},re.startPt=a,Me())}(n,e.containerId,e.leafId,e.rect)},[e.isEmpty?(d(),l("div",di,[...n[3]||(n[3]=[S("span",{class:"hc-fs-leaf-hint"},"拖组件进来",-1)])])):g("",!0),e.canSplit||e.canDelete||e.canMove?(d(),l("div",{key:1,class:"hc-fs-leaf-toolbar",onPointerdown:n[0]||(n[0]=B(()=>{},["stop"]))},[e.canMove?(d(),l("button",{key:0,type:"button",class:"hc-fs-leaf-btn hc-fs-leaf-move",title:"拖动:移动 / 交换到另一格",onPointerdown:B(n=>{return t=n,o=e.containerId,i=e.leafId,void(0===t.button&&(t.stopPropagation(),t.preventDefault(),Z.active=!0,Z.containerId=o,Z.sourceLeafId=i,Z.targetLeafId=null,window.addEventListener("pointermove",ne),window.addEventListener("pointerup",ie),window.addEventListener("keydown",Le)));var t,o,i},["stop"])},"⠿",40,li)):g("",!0),e.canSplit?(d(),l("button",{key:1,type:"button",class:"hc-fs-leaf-btn",title:"竖切(分左右)",onClick:B(n=>ae(e.containerId,e.leafId,"right"),["stop"])},"⬌",8,ui)):g("",!0),e.canSplit?(d(),l("button",{key:2,type:"button",class:"hc-fs-leaf-btn",title:"横切(分上下)",onClick:B(n=>ae(e.containerId,e.leafId,"bottom"),["stop"])},"⬍",8,pi)):g("",!0),e.canDelete?(d(),l("button",{key:3,type:"button",class:"hc-fs-leaf-btn hc-fs-leaf-btn--danger",title:"删除此区(并入相邻)",onClick:B(n=>{return t=e.containerId,o=e.leafId,void y.requestDelete(t,o);var t,o},["stop"])},"✕",8,fi)):g("",!0)],32)):g("",!0)],46,ci))),128)),(d(!0),l(p,null,f(J.value,t=>(d(),l(p,{key:"fsd-cnt-"+t.containerId},[(d(!0),l(p,null,f(t.dividers,o=>(d(),l(p,{key:"fsd-"+t.containerId+"-"+o.nodeId+"-"+o.dividerIndex},[e.$slots["free-split-divider"]?T(e.$slots,"free-split-divider",{key:0,state:{containerId:t.containerId,nodeId:o.nodeId,dividerIndex:o.dividerIndex,direction:o.direction,rect:o.rect,isDragging:x(y).isResizing.value&&x(y).resizeDrag.containerId===t.containerId&&x(y).resizeDrag.nodeId===o.nodeId&&x(y).resizeDrag.dividerIndex===o.dividerIndex}},void 0,!0):(d(),l("div",{key:1,class:"hc-fs-divider","data-hc-fs-divider-direction":o.direction,"data-hc-fs-divider-node":o.nodeId,"data-hc-fs-divider-index":o.dividerIndex,"data-hc-fs-container-id":t.containerId,"data-hc-fs-divider-dragging":x(y).isResizing.value&&x(y).resizeDrag.containerId===t.containerId&&x(y).resizeDrag.nodeId===o.nodeId&&x(y).resizeDrag.dividerIndex===o.dividerIndex?"true":"false",style:u({position:"absolute",left:o.rect.x+"px",top:o.rect.y+"px",width:o.rect.w+"px",height:o.rect.h+"px",background:x(y).isResizing.value&&x(y).resizeDrag.containerId===t.containerId&&x(y).resizeDrag.nodeId===o.nodeId&&x(y).resizeDrag.dividerIndex===o.dividerIndex?"rgba(59, 130, 246, 0.6)":"rgba(59, 130, 246, 0.18)",cursor:"horizontal"===o.direction?"ew-resize":"ns-resize",pointerEvents:"auto",boxSizing:"border-box",zIndex:3}),onPointerdown:e=>function(e,n,t,o){if(0!==e.button)return;e.stopPropagation();const i=me();if(!i)return;const a=H(n);if(!a)return;const r=on(a.root,t);if(!r)return;const c=Yo(r,e=>U(n,e));if(!c)return;const d="row"===r.dir?"horizontal":"vertical",l="horizontal"===d?c.w:c.h,u=oo({x:e.clientX,y:e.clientY},i,s.viewport),{startTracking:p}=y.handleResizeStart({containerId:n,nodeId:t,dividerIndex:o,startSizes:r.sizes.map(e=>({...e})),branchAxisPx:l,direction:d,canvasPt:u});p&&(Me(),e.preventDefault())}(e,t.containerId,o.nodeId,o.dividerIndex),onDblclick:e=>function(e,n,t,o){e.stopPropagation();const i=H(n);if(!i)return;const a=Jo(i.root,t,o);a&&y.requestMerge(n,a)}(e,t.containerId,o.nodeId,o.dividerIndex)},[n[4]||(n[4]=S("span",{class:"hc-fs-divider-grip","aria-hidden":"true"},null,-1)),o.mergeTargetLeafId?(d(),l("button",{key:0,type:"button",class:"hc-fs-merge-btn",title:"合并(并入相邻空格)",onPointerdown:n[1]||(n[1]=B(()=>{},["stop"])),onDblclick:n[2]||(n[2]=B(()=>{},["stop"])),onClick:B(e=>function(e,n,t){const o=H(e);if(!o)return;const i=Jo(o.root,n,t);i&&y.requestMerge(e,i)}(t.containerId,o.nodeId,o.dividerIndex),["stop"])},"⤧",40,gi)):g("",!0)],44,hi))],64))),128))],64))),128)),K.value?(d(),l("div",{key:0,class:"hc-resize-badge","data-resize-badge":"",style:u({position:"absolute",left:K.value.x+"px",top:K.value.y-22+"px",padding:"2px 6px",background:"#3b82f6",color:"#fff",fontSize:"11px",lineHeight:"14px",borderRadius:"3px",pointerEvents:"none",userSelect:"none",whiteSpace:"nowrap",fontFamily:"ui-monospace, SFMono-Regular, monospace"})},k(K.value.wText)+" × "+k(K.value.hText),5)):g("",!0),x(c).marqueeRect.value?(d(),l("div",{key:1,class:"hc-marquee-box","data-marquee-box":"",style:u({position:"absolute",left:x(c).marqueeRect.value.x+"px",top:x(c).marqueeRect.value.y+"px",width:x(c).marqueeRect.value.w+"px",height:x(c).marqueeRect.value.h+"px",border:"1px dashed #3b82f6",background:"rgba(59, 130, 246, 0.08)",pointerEvents:"none",boxSizing:"border-box"})},null,4)):g("",!0),(d(!0),l(p,null,f(x(c).snapLines.value,(e,n)=>(d(),l("div",{key:"snap-"+n,class:"hc-snap-line","data-snap-line":"","data-axis":e.axis,"data-kind":e.kind,style:u("x"===e.axis?{position:"absolute",left:e.pos+"px",top:e.from+"px",width:"0px",height:e.to-e.from+"px",borderLeft:"1px dashed #ec4899",pointerEvents:"none"}:{position:"absolute",left:e.from+"px",top:e.pos+"px",width:e.to-e.from+"px",height:"0px",borderTop:"1px dashed #ec4899",pointerEvents:"none"})},null,12,vi))),128)),ve.value?(d(),l(p,{key:2},[e.$slots["reparent-ghost"]?T(e.$slots,"reparent-ghost",{key:0,state:ve.value},void 0,!0):(d(),l("div",{key:1,class:"hc-reparent-ghost","data-hc-reparent-ghost":"","data-hc-reparent-state":ve.value.result.ok?"legal":"illegal",style:u({position:"absolute",left:ve.value.rect.x+"px",top:ve.value.rect.y+"px",width:ve.value.rect.w+"px",height:ve.value.rect.h+"px",pointerEvents:"none",boxSizing:"border-box",border:"2px solid "+(ve.value.result.ok?"#22c55e":"#ef4444"),background:ve.value.result.ok?"rgba(34, 197, 94, 0.12)":"rgba(239, 68, 68, 0.12)"})},[!ve.value.result.ok&&ve.value.result.message?(d(),l("div",{key:0,class:"hc-reparent-ghost__message","data-hc-reparent-ghost-message":"","data-hc-reparent-ghost-reason":ve.value.result.reason||"",style:{position:"absolute",left:"0",top:"100%",marginTop:"4px",maxWidth:"280px",padding:"3px 6px",background:"#ef4444",color:"#fff",fontSize:"11px",lineHeight:"16px",borderRadius:"3px",whiteSpace:"normal",wordBreak:"break-all",pointerEvents:"none",display:"flex",flexWrap:"wrap",alignItems:"baseline",gap:"4px"}},[ve.value.result.reason?(d(),l("span",Ii,"["+k(ve.value.result.reason)+"]",1)):g("",!0),S("span",null,k(ve.value.result.message),1)],8,yi)):g("",!0)],12,mi))],64)):g("",!0)],44,oi))}}),[["__scopeId","data-v-bc77f713"]]),xi=s({__name:"HyperCardCanvasDesigner",props:{modelValue:{},componentSourceMap:{},mode:{default:"design"},schedulerOptions:{},adapters:{},canvasId:{},freeSplitEnabled:{type:[Boolean,Function],default:void 0},freeSplitControlsAlways:{type:[Boolean,Function],default:void 0},cascadeRemove:{type:Boolean,default:void 0}},emits:["update:modelValue","context-ready","handle-ready","cannot-drag-slot-child","cannot-drag-layout-managed-child"],setup(e,{expose:n,emit:t}){const o=e,a=t;let s=!1;const c=o.canvasId??function(){const e=globalThis.crypto;return e&&"function"==typeof e.randomUUID?`hc-designer-${e.randomUUID()}`:`hc-designer-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}(),u=Mn({canvasId:c,initialDocument:o.modelValue,getMode:()=>o.mode,adapters:o.adapters,freeSplitEnabled:()=>"function"==typeof o.freeSplitEnabled?o.freeSplitEnabled():o.freeSplitEnabled,freeSplitControlsAlways:()=>"function"==typeof o.freeSplitControlsAlways?o.freeSplitControlsAlways():o.freeSplitControlsAlways,cascadeRemove:o.cascadeRemove});zn(u);const p=i(null),f=Bo(u,{getStageEl:()=>{var e;return(null==(e=p.value)?void 0:e.querySelector("[data-hc-stage]"))??null},resolveContract:function(e){var n;const t=null==(n=o.componentSourceMap)?void 0:n[e];if(t)return"contract"in t&&t.contract?t.contract:void 0}}),w=!!u.adapters.data,b=Jn({canvasId:c,source:{getDocument:()=>u.document.document,onAction:e=>u.registerHooks({onAfterAction:n=>e(n)})},initialMode:Eo(o.mode),dataStore:w?u.dataStore:void 0});f.attachBindingDelegate(b,w?u.dataStore:null),a("context-ready",u),a("handle-ready",f);const S={getDropTarget:(e,n)=>f.getDropTarget(e,p.value,n),canReparent:(e,n)=>f.canReparent(e,n),moveInstanceInTree:(e,n)=>f.moveInstanceInTree(e,n),cannotReparentEvent:f.cannotReparentEvent};function k(){a("update:modelValue",JSON.parse(JSON.stringify(u.document.document)))}return r(Po,S),v(()=>o.modelValue,(e,n)=>{if(e&&e!==n){s=!0;try{u.suppressRecording(()=>{u.dispatch({type:"replaceDocument",payload:{document:e}})})}finally{s=!1}}}),v(()=>u.document.document,()=>{s||u.isBatching.value||k()},{deep:!0,flush:"sync"}),v(()=>u.isBatching.value,(e,n)=>{!n||e||s||k()},{flush:"sync"}),m(()=>{zt(c,f),y(()=>{b.setMode(Eo(o.mode))})}),v(()=>o.mode,e=>{b.setMode(Eo(e))}),I(()=>{b.dispose(),f.attachBindingDelegate(null,null),Tt(c),f.dispose(),u.dispose()}),n({context:u,handle:f,canvasId:c}),(n,t)=>(d(),l("div",{ref_key:"stageContainerEl",ref:p,class:"hc-canvas-designer",style:{width:"100%",height:"100%",position:"relative"},"data-hc-canvas-designer":""},[L(Ao,null,{default:P(()=>[L(Fo,{"component-source-map":e.componentSourceMap,mode:e.mode,"scheduler-options":e.schedulerOptions,"canvas-id":x(c)},null,8,["component-source-map","mode","scheduler-options","canvas-id"]),"runtime"!==e.mode?(d(),h(wi,{key:0,mode:e.mode,onCannotDragSlotChild:t[0]||(t[0]=e=>a("cannot-drag-slot-child",e)),onCannotDragLayoutManagedChild:t[1]||(t[1]=e=>a("cannot-drag-layout-managed-child",e))},D({_:2},[n.$slots["reparent-ghost"]?{name:"reparent-ghost",fn:P(e=>[T(n.$slots,"reparent-ghost",R(E(e)))]),key:"0"}:void 0,n.$slots["split-divider"]?{name:"split-divider",fn:P(e=>[T(n.$slots,"split-divider",R(E(e)))]),key:"1"}:void 0,n.$slots["free-split-divider"]?{name:"free-split-divider",fn:P(e=>[T(n.$slots,"free-split-divider",R(E(e)))]),key:"2"}:void 0]),1032,["mode"])):g("",!0),T(n.$slots,"canvas-overlay",{viewport:x(f).viewport,handle:x(f)}),T(n.$slots,"default")]),_:3})],512))}});function bi(e={}){const{canvasWidth:n=1280,canvasHeight:t=720,rootLayout:o="free",instances:i=[],bindings:a=[]}=e;return{schemaVersion:"1",layout:{type:"free",canvas:{width:{mode:"px",value:n},height:{mode:"px",value:t}},rootLayout:"string"==typeof o?{mode:o}:o},instances:i,bindings:a}}function Si(e={}){return bi({...e,rootLayout:"free"})}const ki={event:["instanceEvent"],init:["lifecycle","page"],data:["dataSource"]};function Mi(e){return ki[e.type].includes(e.source.kind)}function zi(e,n){var t,o,i;const a=[],r=new Map;for(const n of e.instances)r.set(n.instanceId,n);const s=null==n?void 0:n.currentCanvasId,c=null==n?void 0:n.resolveContract;let d=null,l=null;if(c){d=new Map,l=new Map;for(const n of e.instances){const e=c(n.componentVersionKey);if(d.set(n.instanceId,e),e)for(const t of e.dataInputsDecl)if(t.required){let e=l.get(n.instanceId);e||(e=new Set,l.set(n.instanceId,e)),e.add(t.key)}}}for(const n of e.bindings)if(Mi(n)){if(void 0!==s){const e=Ci(n),t=Bi(n);void 0!==e&&e!==s&&a.push(Ti("unsupported-cross-canvas","error",n,{canvasId:e})),void 0!==t&&t!==s&&a.push(Ti("unsupported-cross-canvas","error",n,{canvasId:t}))}switch(n.source.kind){case"instanceEvent":{const e=n.source.event,t=r.get(n.source.instanceId);if(t){if(d){const o=d.get(t.instanceId);o&&!o.emitsDecl.some(n=>n.event===e)&&a.push(Ti("unknown-source-event","error",n,{instanceId:t.instanceId}))}}else a.push(Ti("orphan-binding","warn",n,{instanceId:n.source.instanceId}));break}case"lifecycle":r.get(n.source.instanceId)||a.push(Ti("orphan-binding","warn",n,{instanceId:n.source.instanceId}))}switch(n.target.kind){case"instanceMethod":{const e=n.target.method,t=r.get(n.target.instanceId);if(t){if(d){const o=d.get(t.instanceId);o&&!o.methodsDecl.some(n=>n.key===e)&&a.push(Ti("unknown-target-method","error",n,{instanceId:t.instanceId}))}}else a.push(Ti("orphan-binding","warn",n,{instanceId:n.target.instanceId}));break}case"instanceEmit":{const e=n.target.event,t=r.get(n.target.instanceId);if(t){if(d){const o=d.get(t.instanceId);o&&!o.emitsDecl.some(n=>n.event===e)&&a.push(Ti("unknown-target-event","error",n,{instanceId:t.instanceId}))}}else a.push(Ti("orphan-binding","warn",n,{instanceId:n.target.instanceId}));break}case"instanceDataInput":{const e=n.target.key,o=r.get(n.target.instanceId);if(o){if(d){const i=d.get(o.instanceId);i&&!i.dataInputsDecl.some(n=>n.key===e)?a.push(Ti("unknown-target-data-input","error",n,{instanceId:o.instanceId})):l&&(null==(t=l.get(o.instanceId))||t.delete(e))}}else a.push(Ti("orphan-binding","warn",n,{instanceId:n.target.instanceId}));break}}(null==(o=n.schedule)?void 0:o.throttle)&&n.schedule.throttle.windowMs<16&&a.push(Ti("schedule-window-too-small","info",n,Li(n))),(null==(i=n.schedule)?void 0:i.debounce)&&n.schedule.debounce.windowMs<16&&a.push(Ti("schedule-window-too-small","info",n,Li(n)))}else a.push(Ti("invalid-type-source-kind","error",n,Li(n)));if(l)for(const[e,n]of l)for(const t of n){const n={level:"warn",code:"required-data-input-missing",instanceId:e,key:t,message:`Required dataInput "${t}" on instance "${e}" is not fed by any binding`};a.push(n)}return a}function Ti(e,n,t,o){const i={level:n,code:e,bindingId:t.id,message:`${e} on binding "${t.id}"`};return o.instanceId&&(i.instanceId=o.instanceId),o.canvasId&&(i.canvasId=o.canvasId),i}function Li(e){return"instanceEvent"===e.source.kind||"lifecycle"===e.source.kind?{instanceId:e.source.instanceId}:"instanceMethod"===e.target.kind||"instanceDataInput"===e.target.kind||"instanceEmit"===e.target.kind?{instanceId:e.target.instanceId}:{}}function Ci(e){switch(e.source.kind){case"instanceEvent":case"lifecycle":return e.source.canvasId;case"page":case"dataSource":return}}function Bi(e){switch(e.target.kind){case"instanceMethod":case"instanceEmit":case"instanceDataInput":return e.target.canvasId}}const Pi="0.0.0-d3.6c-stage";export{kn as CANVAS_CONTEXT_KEY,Po as CANVAS_REPARENT_BRIDGE_KEY,Ao as CanvasStage,yo as DEFAULT_FIT_PADDING,jo as DIVIDER_HIT_THICKNESS,no as DRAG_THRESHOLD_CANVAS_PX,Ln as EFFECTIVE_DEFAULT_SLOT,$t as HandleDisposedError,xi as HyperCardCanvasDesigner,bt as HyperCardPageRenderer,wi as InteractionLayer,Cn as MAX_INSTANCE_TREE_DEPTH,Bn as MAX_SPLIT_TREE_DEPTH,Ft as MIN_INSTANCE_SIZE,qo as MIN_RATIO_FRACTION,Fo as RuntimeLayer,io as SLOT_CHILD_RESIZE_HANDLES,Pi as VERSION,pe as applyEffectiveSplitRatiosToDocument,Ho as applyFreeSplitResizeDrag,Vo as applySplitDividerDrag,Eo as bindingModeForCanvasMode,Ge as bindingReferencesInstance,po as buildInstanceTree,uo as canReparent,Pe as canvasSizeToCss,_e as cleanLayoutItem,oo as clientToCanvas,wo as computeContentBounds,be as computeEffectiveSplitRatios,bo as computeFit,Go as computeFreeSplitDividers,Yo as computeFreeSplitNodeRect,Pt as computeInverse,Qt as computeNextAxisSize,Zt as computeNextLayoutBoxAxis,Ve as computeParentLayoutMode,xo as computeSelectionBounds,Jt as computeSlotChildCanvasRect,Ot as computeSnap,No as computeSplitDividers,Wo as computeSplitShare,So as computeVisibleBounds,Ce as containerLayoutToCss,wn as createAssetResolver,Mn as createCanvasContext,Bo as createCanvasHandle,ro as createCanvasInteraction,Et as createCommandRecorder,Je as createDocumentStore,Si as createFreePageDocument,Zo as createFreeSplitInteraction,bi as createMinimalPageDocument,Xe as createRenderScheduler,Qe as createSelectionStore,Ko as createSplitDividerInteraction,Ze as createViewportStore,nt as deriveComponentContract,tt as deriveComponentKind,Pn as effectiveSlot,ot as emptyComponentContract,We as emptyPageDocument,ao as filterExistingIds,Nt as filterInstancesInRect,vo as findInstanceBreadcrumb,go as findInstancePath,Ye as getBindingInstanceRefs,Lo as getDefaultShortcuts,Lt as getDesignerHandle,Xt as getInstanceWrapperRectFromDom,Kt as getOutletRectFromDom,Yt as getParentLayoutMode,W as getRendererDiagnostics,mo as getSiblings,_t as getSlotChildRectFromDom,jt as hitTestInstance,to as isAdditive,Ke as isCanvasRootPlacement,Ne as isContainerChildPlacement,Do as isDraftKey,Mo as isEditingText,Gt as isFreePositionLayoutMode,ie as isFreeSplitEnabled,ti as isInstanceEffectivelyLocked,ei as isInstancePositionLocked,ni as isInstanceSizeLocked,Wt as isResizeHandleAllowed,ke as isV1Layout,Be as layoutItemToCss,Ct as listRegisteredCanvasIds,J as listRendererDiagnostics,zo as matchBinding,fe as migrateGridCellsToLayoutItem,Fe as migrateInstanceToLayoutBox,Se as migrateLayoutV0ToV1,Oe as migratePlacementToCanvasContainer,qe as migrateRootLayout,ge as normalizeComponentOverrides,le as normalizeFreeSplitContainersInDocument,de as normalizeFreeSplitTreeShape,he as normalizeGridCells0Based,ve as normalizeInstanceSlotFields,To as normalizeKeyString,qt as normalizeMarqueeRect,ne as normalizePageBindings,ue as normalizePageDocument,Ro as parseComponentVersionKey,ko as parseKeyEvent,zn as provideCanvasContext,zt as registerDesignerHandle,H as registerRendererDiagnostics,Te as renderLayoutBoxStyle,Me as resolveCanvasSizePx,Jo as resolveFreeSplitMergeTarget,ze as resolveMeasuredCanvasSizePx,Uo as resolveSplitEdge,Bt as subscribeDesignerRegistry,Q as subscribeRendererDiagnostics,Io as unionRects,Tt as unregisterDesignerHandle,U as unregisterRendererDiagnostics,Tn as useCanvasContext,zi as validateBindings,Dn as validateInstanceTree,Jn as wirePageBindings};
|