@hy-bricks/canvas 0.6.1 → 0.6.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +39 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.mjs +1 -1
- package/package.json +2 -2
package/dist/index.cjs
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
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),t=require("@hy-bricks/core"),n=new Map,o=new Set;function i(e,t){const n=[...o];for(const o of n)try{o(e,t)}catch{}}function a(e,t){n.has(e)&&console.warn(`[hc-rendererDiagnostics] canvasId "${e}" already registered, overwriting`),n.set(e,t),i("register",e)}function r(e){n.has(e)&&(n.delete(e),i("unregister",e))}function c(e){return JSON.parse(JSON.stringify(e))}const s="[hc-canvas/normalizeBindings]";function d(e){if(!Array.isArray(e))return[];const t=[];for(let n=0;n<e.length;n++){const o=e[n];if(!o||"object"!=typeof o){console.warn(`${s} dropped non-object binding at index ${n}`);continue}if(l(o)){t.push(o);continue}const i=u(o);null!==i&&t.push(i)}return t}function l(e){if(!e||"object"!=typeof e)return!1;const t=e;if("string"!=typeof t.id||0===t.id.length)return!1;if("event"!==t.type&&"init"!==t.type&&"data"!==t.type)return!1;const n=t.source;if(!n||"object"!=typeof n)return!1;if("string"!=typeof n.kind)return!1;const o=t.target;return!(!o||"object"!=typeof o)&&"string"==typeof o.kind}function u(e){if("string"!=typeof e.id||0===e.id.length)return console.warn(`${s} dropped binding with missing/invalid id`),null;const t=e.target;if(!t||"object"!=typeof t||"string"!=typeof t.instanceId||""===t.instanceId||"string"!=typeof t.method)return console.warn(`${s} dropped binding "${e.id}" missing/invalid target`),null;const n=e.type;let o;if("event"===n){const t=e.source;if(!t||"object"!=typeof t||"string"!=typeof t.instanceId||""===t.instanceId||"string"!=typeof t.event)return console.warn(`${s} dropped event binding "${e.id}" missing/invalid source`),null;o={kind:"instanceEvent",instanceId:t.instanceId,event:t.event}}else{if("init"!==n)return console.warn(`${s} dropped binding "${e.id}" with unknown legacy type "${String(e.type)}"`),null;{const t=e.source;t&&"string"==typeof t.instanceId&&""!==t.instanceId&&console.warn(`${s} init binding "${e.id}" had source.instanceId, discarded`),o={kind:"page",hook:"pageInit"}}}const i={kind:"instanceMethod",instanceId:t.instanceId,method:t.method};let a;a=void 0===t.args?{kind:"passthrough"}:Array.isArray(t.args)&&0===t.args.length?{kind:"static",args:[]}:Array.isArray(t.args)?{kind:"static",args:c(t.args)}:{kind:"passthrough"};const r={},d=e.options;d&&"object"==typeof d&&(!0===d.once&&(r.once=!0),"number"==typeof d.throttleMs&&(r.throttle={windowMs:d.throttleMs}),"number"==typeof d.debounceMs&&(r.debounce={windowMs:d.debounceMs}));const l=void 0!==r.once||void 0!==r.throttle||void 0!==r.debounce,u={id:e.id,source:o,target:i,mapping:a,...void 0!==e.disabled?{disabled:e.disabled}:{},...l?{schedule:r}:{}};return"event"===n?{...u,type:"event"}:{...u,type:"init"}}function p(e){if("object"!=typeof e||null===e)return!0;const{mode:t,value:n,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"!==t&&"px"!==t||"number"!=typeof n||!Number.isFinite(n)||"ratio"===t&&n<=0||"px"===t&&n<0||a}function f(e,t=8,n=()=>Math.random().toString(36).slice(2,2+t)){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,t):n()}`}function h(){return f("lf_",10,()=>Math.floor(0xffffffffff*Math.random()).toString(36))}function g(){return{type:"leaf",leafId:h(),instanceId:null}}function m(e){const t=e.instances.map(w),n=x(e.componentOverrides,t),o=d(e.bindings);if("1"===e.schemaVersion){const i=K(T(e.layout)?e.layout:C(e.layout));return{...e,layout:i,instances:t,bindings:o,componentOverrides:n}}return{schemaVersion:"1",layout:K(C(e.layout)),instances:t,bindings:o,componentOverrides:n}}function v(e){const t=function(e){var t;const n=new Map;for(const o of e){if(!o.parentId)continue;if(void 0!==o.slot)continue;const e=n.get(o.parentId),i=null==(t=o.layoutItem)?void 0:t.ratio;e?e.push(i):n.set(o.parentId,[i])}let o=!1;const i=e.map(e=>{if(!e.containerLayout||"split"!==e.containerLayout.mode)return e;const t=n.get(e.instanceId)??[],i=e.containerLayout.ratios,a=z(i,t);return i.length===a.length&&i.every((e,t)=>e===a[t])?e:(o=!0,{...e,containerLayout:{...e.containerLayout,ratios:a}})});return o?i:e}(e.instances),n=e.layout.rootLayout?function(e,t){const n=e.rootLayout;if(!n||"split"!==n.mode)return e;const o=t.filter(e=>void 0===e.parentId).map(e=>{var t;return null==(t=e.layoutItem)?void 0:t.ratio}),i=n.ratios,a=z(i,o);return i.length===a.length&&i.every((e,t)=>e===a[t])?e:{...e,rootLayout:{...n,ratios:a}}}(e.layout,t):e.layout;return t===e.instances&&n===e.layout?e:{...e,layout:n,instances:t}}function y(e){const t=new Map,n=new Set;for(const o of e.instances){const e=o.containerLayout;if("grid"!==(null==e?void 0:e.mode))continue;n.add(o.instanceId);const i=e.cells;i&&"object"==typeof i&&Object.keys(i).length>0&&t.set(o.instanceId,I(i))}if(0===n.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(!n.has(e.parentId))return e;const i=e.layoutItem;if(i&&("number"==typeof i.row||"number"==typeof i.column)){const t=function(e){const t="number"==typeof e.row&&Number.isFinite(e.row)&&e.row<1,n="number"==typeof e.column&&Number.isFinite(e.column)&&e.column<1;if(!t&&!n)return e;const o={...e};return t&&(o.row=1),n&&(o.column=1),o}(i);return t===i?e:(o=!0,{...e,layoutItem:t})}const a=t.get(e.parentId),r=null==a?void 0:a[e.instanceId];if(!r)return e;const c=function(e){const t={};return"number"==typeof e.row&&Number.isFinite(e.row)&&(t.row=e.row<1?1:e.row),"number"==typeof e.column&&Number.isFinite(e.column)&&(t.column=e.column<1?1:e.column),void 0===t.row&&void 0===t.column?null:("number"==typeof e.rowSpan&&Number.isFinite(e.rowSpan)&&e.rowSpan>0&&e.rowSpan<=32&&(t.rowSpan=e.rowSpan),"number"==typeof e.columnSpan&&Number.isFinite(e.columnSpan)&&e.columnSpan>0&&e.columnSpan<=32&&(t.columnSpan=e.columnSpan),t)}(r);return c?(o=!0,{...e,layoutItem:{...i??{},...c}}):e});return o?{...e,instances:i}:e}function I(e){let t=!1;for(const n of Object.values(e))if(n&&(0===n.row||0===n.column)){t=!0;break}if(!t)return e;const n={};for(const[t,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),n[t]=e}return n}function x(e,t){if(!e||"object"!=typeof e||Array.isArray(e))return{};const n=new Set(t.map(e=>e.instanceId)),o={};for(const[t,i]of Object.entries(e)){if(!i||"object"!=typeof i||Array.isArray(i))continue;const e=i;e.instanceId===t&&n.has(e.instanceId)&&"string"==typeof e.baseVersionKey&&e.baseVersionKey&&A(e.source)&&F(e.contract)&&(o[t]={instanceId:e.instanceId,baseVersionKey:e.baseVersionKey,source:e.source,contract:e.contract,...O(e.contractParseError)?{contractParseError:O(e.contractParseError)}:{},..."string"==typeof e.createdAt?{createdAt:e.createdAt}:{},..."string"==typeof e.updatedAt?{updatedAt:e.updatedAt}:{}})}return o}function w(e){let t=e;void 0===t.parentId&&t.slotPlacement&&(t={...t,parentId:t.slotPlacement.parentInstanceId,slot:t.slotPlacement.slotName}),""!==t.slot&&"default"!==t.slot||(t={...t,slot:void 0}),void 0===t.placement&&(t={...t,placement:void 0===t.parentId?"absolute":"slot"});const n=S(t.sizing,t.size);if(n!==t.size&&(t={...t,size:n}),void 0!==t.containerLayout){const e=M(t.containerLayout);if(e!==t.containerLayout)if(null===e){const{containerLayout:e,...n}=t;t=n}else t={...t,containerLayout:e}}if(t=V(t),t=q(t),void 0!==t.layoutItem){const e=Y(t.layoutItem);if(null===e){const{layoutItem:e,...n}=t;t=n}else e!==t.layoutItem&&(t={...t,layoutItem:e})}if(!0===t.locked){const e={};void 0===t.lockPosition&&(e.lockPosition=!0),void 0===t.lockSize&&(e.lockSize=!0),Object.keys(e).length>0&&(t={...t,...e})}return t}const b=new Set(["px","percent","fill","hug","auto"]);function S(e,t){var n,o,i,a;const r=t?function(e){const t={},n=B(e.width),o=B(e.height);return n&&(t.width=n),o&&(t.height=o),t.width||t.height?t:void 0}(t):void 0;if(!e)return r;const c={};if(e.width){const t=k(e.width,null==(n=e.min)?void 0:n.w,null==(o=e.max)?void 0:o.w);t&&(c.width=t)}if(e.height){const t=k(e.height,null==(i=e.min)?void 0:i.h,null==(a=e.max)?void 0:a.h);t&&(c.height=t)}return r?{width:r.width??c.width,height:r.height??c.height}:Object.keys(c).length>0?c:void 0}function k(e,t,n){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 t&&(i.min=t),"number"==typeof n&&(i.max=n),i}function B(e){if(!e||"object"!=typeof e)return null;if("string"!=typeof e.mode)return null;if(!b.has(e.mode))return null;const t={mode:e.mode};return"px"!==e.mode&&"percent"!==e.mode||"number"!=typeof e.value||(t.value=e.value),"number"==typeof e.min&&(t.min=e.min),"number"==typeof e.max&&(t.max=e.max),t}function M(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 t=e,n={mode:"flex",direction:"row"===t.direction||"column"===t.direction?t.direction:"row"};return!0===t.wrap&&(n.wrap=!0),"number"==typeof t.gap&&Number.isFinite(t.gap)&&t.gap>=0&&(n.gap=t.gap),"start"!==t.justify&&"center"!==t.justify&&"end"!==t.justify&&"space-between"!==t.justify&&"space-around"!==t.justify||(n.justify=t.justify),"start"!==t.align&&"center"!==t.align&&"end"!==t.align&&"stretch"!==t.align||(n.align=t.align),n}if("split"===e.mode){const t=e;if("horizontal"!==t.direction&&"vertical"!==t.direction)return null;if(!Array.isArray(t.ratios))return null;const n=t.ratios.filter(e=>"number"==typeof e&&Number.isFinite(e)&&e>=0),o={mode:"split",direction:t.direction,ratios:n};return"number"==typeof t.gap&&Number.isFinite(t.gap)&&t.gap>=0&&(o.gap=t.gap),o}if("grid"===e.mode){const t=e;if(!Array.isArray(t.columns)||!Array.isArray(t.rows))return null;const n={mode:"grid",columns:t.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:t.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 t.gap&&Number.isFinite(t.gap)&&t.gap>=0)n.gap=t.gap;else if(t.gap&&"object"==typeof t.gap){const e={};"number"==typeof t.gap.row&&Number.isFinite(t.gap.row)&&t.gap.row>=0&&(e.row=t.gap.row),"number"==typeof t.gap.column&&Number.isFinite(t.gap.column)&&t.gap.column>=0&&(e.column=t.gap.column),Object.keys(e).length>0&&(n.gap=e)}if(t.cells&&"object"==typeof t.cells&&!Array.isArray(t.cells)){const e={};for(const[n,o]of Object.entries(t.cells)){if(!o||"object"!=typeof o)continue;if(!Number.isFinite(o.row)||!Number.isFinite(o.column))continue;const t={row:o.row,column:o.column};"number"==typeof o.rowSpan&&Number.isFinite(o.rowSpan)&&o.rowSpan>0&&o.rowSpan<=32&&(t.rowSpan=o.rowSpan),"number"==typeof o.columnSpan&&Number.isFinite(o.columnSpan)&&o.columnSpan>0&&o.columnSpan<=32&&(t.columnSpan=o.columnSpan),e[n]=t}Object.keys(e).length>0&&(n.cells=e)}return n}return"free-split"===e.mode?e:null}function z(e,t){const n=(e??[]).map(e=>"number"==typeof e&&Number.isFinite(e)&&e>=0?e:0),o=[];for(let e=0;e<t.length;e++){const i=t[e];if("number"==typeof i&&Number.isFinite(i)&&i>0){o.push(i);continue}const a=n[e];"number"==typeof a&&a>0?o.push(a):o.push(1)}return o}function C(e){if(!e)return{type:"free",canvas:{width:{mode:"px",value:1920},height:{mode:"px",value:1080}}};if(T(e))return e;const t=e,n={width:{mode:"px",value:t.canvas.w},height:{mode:"px",value:t.canvas.h}},o=function(e){if(!e)return;const t={};if(void 0!==e.color&&(t.color=e.color),void 0!==e.imageAssetId){const n={id:e.imageAssetId,type:"image"};t.image=n}return void 0!==e.fit&&(t.imageFit="original"===e.fit?"center":e.fit),Object.keys(t).length>0?t:void 0}(t.canvas.background),i={type:t.type,canvas:n};return o&&(i.background=o),void 0!==t.canvas.gridSize&&(i.guides={grid:{size:t.canvas.gridSize}}),i}function T(e){if(!e)return!1;const t=e.canvas;if(!t)return!1;const n=t.width;return"object"==typeof n&&null!==n&&"mode"in n&&"string"==typeof n.mode}function L(e,t,n=1920){switch(e.mode){case"px":return e.value;case"percent":return t>0?t*e.value/100:n;case"vw":return"undefined"!=typeof window?window.innerWidth*e.value/100:n;case"vh":return"undefined"!=typeof window?window.innerHeight*e.value/100:n;case"auto":case"fill":return t>0?t:n}}function E(e,t,n,o,i){const a=D(e.widthMode,e.width),r=D(e.heightMode,e.height),c="free"===o,s={boxSizing:"border-box",minWidth:0,minHeight:0,overflow:e.overflow??"hidden",zIndex:t};return null!==a&&(s.width=a),null!==r&&(s.height=r),"split"===o&&("vertical"===i?s.height="100%":s.width="100%"),"number"==typeof n&&Number.isFinite(n)&&0!==n&&(s.transform=`rotate(${n}deg)`),c?(s.position="absolute",s.left=`${e.x}px`,s.top=`${e.y}px`):s.position="relative",s}function D(e,t){switch(e){case"px":return`${t}px`;case"percent":return`${t}%`;case"fill":return"100%";case"auto":return"auto"}}function P(e){if(!e||"none"===e.mode||"free"===e.mode)return null;if("flex"===e.mode){const t={display:"flex"};if(t.flexDirection=e.direction??"row",e.wrap&&(t.flexWrap="wrap"),"number"==typeof e.gap&&(t.gap=`${e.gap}px`),e.justify){const n={start:"flex-start",end:"flex-end",center:"center","space-between":"space-between","space-around":"space-around"};t.justifyContent=n[e.justify]??e.justify}if(e.align){const n={start:"flex-start",end:"flex-end",center:"center",stretch:"stretch"};t.alignItems=n[e.align]??e.align}return t}if("grid"===e.mode){const t={display:"grid"},n=(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(n&&(t.gridTemplateColumns=n),o&&(t.gridTemplateRows=o),"number"==typeof e.gap)t.gap=`${e.gap}px`;else if(e.gap&&"object"==typeof e.gap){const n=e.gap.row??0,o=e.gap.column??0;t.gap=`${n}px ${o}px`}return t}if("split"===e.mode){const t=(Array.isArray(e.ratios)?e.ratios:[]).map(e=>"number"==typeof e&&Number.isFinite(e)&&e>=0?e:0).filter(e=>e>0),n=t.length>0?t.map(e=>`${e}fr`).join(" "):"1fr",o={display:"grid"};return"vertical"===e.direction?o.gridTemplateRows=n:o.gridTemplateColumns=n,"number"==typeof e.gap&&(o.gap=`${e.gap}px`),o}return e.mode,null}function R(e,t){if(!e)return null;if("flex"===t){const t={};return"number"==typeof e.order&&(t.order=e.order),"number"==typeof e.grow&&(t.flexGrow=e.grow),"number"==typeof e.shrink&&(t.flexShrink=e.shrink),Object.keys(t).length>0?t:null}if("grid"===t){const t={};if("number"==typeof e.row){const n="number"==typeof e.rowSpan&&e.rowSpan>0?e.rowSpan:1;t.gridRow=n>1?`${e.row} / span ${n}`:`${e.row}`}if("number"==typeof e.column){const n="number"==typeof e.columnSpan&&e.columnSpan>0?e.columnSpan:1;t.gridColumn=n>1?`${e.column} / span ${n}`:`${e.column}`}return Object.keys(t).length>0?t:null}return null}function $(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 A(e){return!!e&&"object"==typeof e&&!Array.isArray(e)&&"string"==typeof e.html&&"string"==typeof e.js&&"string"==typeof e.css}function F(e){if(!e||"object"!=typeof e||Array.isArray(e))return!1;const t=e;return["propsDecl","emitsDecl","methodsDecl","slotsDecl","modelDecl","dataInputsDecl","dataOutputsDecl"].every(e=>Array.isArray(t[e]))}function O(e){if(!e||"object"!=typeof e||Array.isArray(e))return;const t=e;return"string"==typeof t.message?{message:t.message,..."number"==typeof t.line?{line:t.line}:{},..."number"==typeof t.column?{column:t.column}:{}}:void 0}const N=new Set(["px","percent","fill","auto"]),j=new Set(["hidden","visible","auto"]);function V(e){const t=e.placement;return"canvas"===t||"container"===t?e:"absolute"===t?{...e,placement:"canvas"}:"slot"===t?{...e,placement:"container"}:{...e,placement:e.parentId?"container":"canvas"}}function q(e){var t,n;const o=e.rect??{x:0,y:0,w:0,h:0},i=null==(t=e.size)?void 0:t.width,a=null==(n=e.size)?void 0:n.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},c=e.layoutBox,s=c&&N.has(c.widthMode)?c.widthMode:r(i)??"px",d=c&&N.has(c.heightMode)?c.heightMode:r(a)??"px",l=(e,t)=>"number"==typeof e&&Number.isFinite(e)?e:t,u={x:l(null==c?void 0:c.x,o.x),y:l(null==c?void 0:c.y,o.y),width:l(null==c?void 0:c.width,(null==i?void 0:i.value)??o.w),height:l(null==c?void 0:c.height,(null==a?void 0:a.value)??o.h),widthMode:s,heightMode:d,overflow:(null==c?void 0:c.overflow)&&j.has(c.overflow)?c.overflow:"hidden"};return c&&c.x===u.x&&c.y===u.y&&c.width===u.width&&c.height===u.height&&c.widthMode===u.widthMode&&c.heightMode===u.heightMode&&c.overflow===u.overflow?e:{...e,layoutBox:u}}let _=!1;function K(e){if(e.rootLayout){const o=M(e.rootLayout);return null===o?{...e,rootLayout:{mode:"free"}}:"free-split"===o.mode?(_||(_=!0,console.warn("[hypercard] rootLayout.mode='free-split' 不支持(free-split 仅用于容器实例,根画布无 outlet/containerId 锚),已降级为 'free'。")),{...e,rootLayout:{mode:"free"}}):(n=o,(t=e.rootLayout).mode===n.mode&&JSON.stringify(t)===JSON.stringify(n)?e:{...e,rootLayout:o})}var t,n;return{...e,rootLayout:{mode:"free"}}}function X(e){return"container"===e||"slot"===e}function H(e,t,n){var o,i;const a=t.find(e=>e.instanceId===n);if(!a)return;if(void 0===a.parentId)return(null==(o=null==e?void 0:e.rootLayout)?void 0:o.mode)??"free";const r=t.find(e=>e.instanceId===a.parentId);return(null==(i=null==r?void 0:r.containerLayout)?void 0:i.mode)??"none"}function Y(e){if(!e||"object"!=typeof e)return null;const t={},n=["order","grow","shrink","row","column","rowSpan","columnSpan","ratio"];for(const o of n){const n=e[o];"number"==typeof n&&Number.isFinite(n)&&(t[o]=n)}return Object.keys(t).length>0?t:null}function U(t={}){const{rootMargin:n="500px",disposeDelayMs:o=1500,mountConcurrency:i=2,root:a=null}=t,r={state:e.reactive({}),elById:new Map,idByEl:new WeakMap,mountQueue:[],disposeTimers:new Map,idleScheduled:!1,io:null,counts:{pending:0,mounting:0,mounted:0,disposing:0}};function c(e,t){const n=r.state[e];n!==t&&(void 0!==n&&"idle"!==n&&r.counts[n]--,r.state[e]=t,"idle"!==t&&r.counts[t]++)}function s(e){for(const t of e){const e=r.idByEl.get(t.target);e&&(t.isIntersecting?d(e):l(e))}}function d(e){const t=r.disposeTimers.get(e);t&&(clearTimeout(t),r.disposeTimers.delete(e));const n=r.state[e];"mounted"!==n&&"disposing"!==n?(c(e,"mounting"),r.mountQueue.includes(e)||r.mountQueue.push(e),u()):c(e,"mounted")}function l(e){const t=r.state[e];if("pending"===t||"idle"===t)return;if("mounting"===t){const t=r.mountQueue.indexOf(e);return t>=0&&r.mountQueue.splice(t,1),void c(e,"pending")}c(e,"disposing");const n=r.disposeTimers.get(e);n&&clearTimeout(n);const i=setTimeout(()=>{"disposing"===r.state[e]&&(c(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,t=50){const n=globalThis;"function"==typeof n.requestIdleCallback?n.requestIdleCallback(()=>e(),{timeout:t}):setTimeout(e,16)}(()=>{r.idleScheduled=!1;let e=0;for(;e<i&&r.mountQueue.length>0;){const t=r.mountQueue.shift();"mounting"===r.state[t]&&(c(t,"mounted"),e++)}r.mountQueue.length>0&&u()}))}return{register(e,t){const o=r.elById.get(e);if(o&&o!==t){const e=r.io;e&&e.unobserve(o),r.idByEl.delete(o)}r.elById.set(e,t),r.idByEl.set(t,e),c(e,"pending");const i=r.io?r.io:"undefined"==typeof IntersectionObserver?null:(r.io=new IntersectionObserver(s,{root:a,rootMargin:n}),r.io);i?i.observe(t):c(e,"mounted")},unregister(e){const t=r.elById.get(e);if(t){const n=r.io;n&&n.unobserve(t),r.idByEl.delete(t),r.elById.delete(e)}const n=r.disposeTimers.get(e);n&&(clearTimeout(n),r.disposeTimers.delete(e));const o=r.mountQueue.indexOf(e);o>=0&&r.mountQueue.splice(o,1),function(e){const t=r.state[e];void 0!==t&&"idle"!==t&&r.counts[t]--,delete r.state[e]}(e)},isMounted(e){const t=r.state[e];return"mounted"===t||"disposing"===t},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 G(e){const t=[];switch(e.source.kind){case"instanceEvent":case"lifecycle":t.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":t.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 t}function W(e,t,n){for(const o of G(e))if(o.instanceId===t&&o.canvasId===n)return!0;return!1}function J(e){const t={type:e.type,canvas:{...e.canvas,width:{...e.canvas.width},height:{...e.canvas.height}}};return e.background&&(t.background={...e.background,...e.background.image?{image:{...e.background.image}}:{}}),e.behavior&&(t.behavior={...e.behavior}),e.guides&&(t.guides={...e.guides,...e.guides.items?{items:[...e.guides.items]}:{}}),e.rootLayout&&(t.rootLayout="grid"===(n=e.rootLayout).mode?{...n,columns:n.columns?n.columns.map(e=>({...e})):[],rows:n.rows?n.rows.map(e=>({...e})):[],...n.cells?{cells:{...n.cells}}:{},..."object"==typeof n.gap&&null!==n.gap?{gap:{...n.gap}}:{}}:"split"===n.mode?{...n,ratios:Array.isArray(n.ratios)?[...n.ratios]:[]}:{...n}),t;var n}function Q(e={}){return c(e)}function Z(t={schemaVersion:"1",layout:{type:"free",canvas:{width:{mode:"fill"},height:{mode:"fill"}}},instances:[],bindings:[]}){const n=y(m(t)),o=e.reactive({schemaVersion:"1",layout:J(n.layout),instances:n.instances.map(e=>({...e,rect:{...e.rect}})),bindings:n.bindings.map(e=>c(e)),componentOverrides:Q(n.componentOverrides)}),i=new Map;function a(){i.clear();for(const e of o.instances)i.has(e.instanceId)||i.set(e.instanceId,e)}function r(e){const t=i.get(e);return void 0===t?-1:o.instances.indexOf(t)}function s(e){return o.bindings.findIndex(t=>t.id===e)}return a(),{get document(){return o},instanceCount:e.computed(()=>o.instances.length),bindingCount:e.computed(()=>o.bindings.length),addInstance(e){if(r(e.instanceId)>=0)return void console.warn(`[hc-canvas/doc-store] instanceId "${e.instanceId}" 已存在,addInstance 忽略`);const t=e.rect?{...e.rect}:function(e){if(!e)return{x:0,y:0,w:0,h:0};const t=(e,t)=>"number"==typeof e&&Number.isFinite(e)?e:t;return{x:t(e.x,0),y:t(e.y,0),w:t(e.width,0),h:t(e.height,0)}}(e.layoutBox),n={...e,rect:t};!0===n.locked&&(void 0===n.lockPosition&&(n.lockPosition=!0),void 0===n.lockSize&&(n.lockSize=!0)),o.instances.push(n),i.set(n.instanceId,o.instances[o.instances.length-1])},removeInstance(e){var t;const n=r(e);n<0||(o.instances.splice(n,1),function(e){i.delete(e);const t=o.instances.find(t=>t.instanceId===e);t&&i.set(e,t)}(e),null==(t=o.componentOverrides)||delete t[e],o.bindings=o.bindings.filter(t=>!W(t,e)))},updateInstance(e,t){const n=i.get(e);if(n&&(Object.assign(n,t),t.rect&&n.layoutBox&&(n.layoutBox={...n.layoutBox,x:n.rect.x,y:n.rect.y,..."px"===n.layoutBox.widthMode?{width:n.rect.w}:{},..."px"===n.layoutBox.heightMode?{height:n.rect.h}:{}}),t.layoutBox)){const e=n.layoutBox??t.layoutBox,o=e=>"number"==typeof e&&Number.isFinite(e);n.rect={x:o(e.x)?e.x:n.rect.x,y:o(e.y)?e.y:n.rect.y,w:"px"===e.widthMode&&o(e.width)?e.width:n.rect.w,h:"px"===e.heightMode&&o(e.height)?e.height:n.rect.h}}},moveInstance(e,t,n){const o=i.get(e);o&&(o.rect.x=t,o.rect.y=n,o.layoutBox&&(o.layoutBox={...o.layoutBox,x:t,y:n}))},resizeInstance(e,t,n){const o=i.get(e);if(!o)return;const a=Math.max(1,t),r=Math.max(1,n);o.rect.w=a,o.rect.h=r,o.layoutBox&&(o.layoutBox={...o.layoutBox,width:a,height:r,widthMode:"px",heightMode:"px"})},setInstanceProp(e,t,n){const o=i.get(e);o&&(o.props={...o.props,[t]:n})},setInstanceLocked(e,t){const n=i.get(e);n&&(n.locked=t,t?(n.lockPosition=!0,n.lockSize=!0):(delete n.lockPosition,delete n.lockSize))},setInstanceSize(e,t){const n=i.get(e);if(n)if(null===t)delete n.size,n.layoutBox&&(n.layoutBox={...n.layoutBox,width:n.rect.w,height:n.rect.h,widthMode:"px",heightMode:"px"});else if(n.size=t,n.layoutBox){const e=t.width,o=t.height,i={...n.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=n.rect.w)):"auto"!==e.mode&&"hug"!==e.mode||(i.widthMode="auto",Number.isFinite(i.width)||(i.width=n.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=n.rect.h)):"auto"!==o.mode&&"hug"!==o.mode||(i.heightMode="auto",Number.isFinite(i.height)||(i.height=n.rect.h))),n.layoutBox=i}},setInstanceContainerLayout(e,t){const n=i.get(e);n&&(null===t?delete n.containerLayout:n.containerLayout=t)},updateInstanceLayoutBox(e,t){const n=i.get(e);if(!n)return;const o=n.layoutBox??{x:n.rect.x,y:n.rect.y,width:n.rect.w,height:n.rect.h,widthMode:"px",heightMode:"px",overflow:"hidden"},a={},r=["x","y","width","height"];for(const e of r){const n=t[e];"number"==typeof n&&Number.isFinite(n)&&(a[e]=n)}if("px"!==t.widthMode&&"percent"!==t.widthMode&&"fill"!==t.widthMode&&"auto"!==t.widthMode||(a.widthMode=t.widthMode),"px"!==t.heightMode&&"percent"!==t.heightMode&&"fill"!==t.heightMode&&"auto"!==t.heightMode||(a.heightMode=t.heightMode),"hidden"!==t.overflow&&"visible"!==t.overflow&&"auto"!==t.overflow||(a.overflow=t.overflow),0===Object.keys(a).length)return;const c={...o,...a};n.layoutBox=c;const s=a.widthMode??o.widthMode,d=a.heightMode??o.heightMode;n.rect={x:c.x,y:c.y,w:"px"===s?c.width:n.rect.w,h:"px"===d?c.height:n.rect.h}},updateInstanceLayoutItem(e,t){const n=i.get(e);if(!n)return;if(null===t)return void delete n.layoutItem;const o=["order","grow","shrink","row","column","rowSpan","columnSpan","ratio"],a={};for(const e of o){const n=t[e];"number"==typeof n&&Number.isFinite(n)&&(a[e]=n)}if(0===Object.keys(a).length)return;const r=n.layoutItem??{};n.layoutItem={...r,...a}},setInstanceRotation(e,t){const n=i.get(e);n&&Number.isFinite(t)&&(0===t?delete n.rotation:n.rotation=t)},duplicateInstance(e,t,n){var a;const r=i.get(e);if(!r)return;const s=c(r);if(s.instanceId=t,s.rect={...s.rect,x:r.rect.x+n.x,y:r.rect.y+n.y},s.layoutBox&&(s.layoutBox={...s.layoutBox,x:s.layoutBox.x+n.x,y:s.layoutBox.y+n.y}),delete s.locked,delete s.lockPosition,delete s.lockSize,i.has(t))return void console.warn(`[hc-canvas/doc-store] duplicateInstance: newInstanceId "${t}" 已存在,忽略`);o.instances.push(s),i.set(t,o.instances[o.instances.length-1]);const d=null==(a=o.componentOverrides)?void 0:a[e];d&&(o.componentOverrides={...o.componentOverrides??{},[t]:{...c(d),instanceId:t}})},addBinding(e){if(s(e.id)>=0)return void console.warn(`[hc-canvas/doc-store] binding id "${e.id}" 已存在,addBinding 忽略`);const[t]=d([e]);t?o.bindings.push(c(t)):console.warn(`[hc-canvas/doc-store] addBinding "${null==e?void 0:e.id}" dropped by normalize`)},removeBinding(e){const t=s(e);t<0||o.bindings.splice(t,1)},updateBinding(e,t){const n=o.bindings.find(t=>t.id===e);if(!n)return;const i=c(t);Object.assign(n,i)},updateLayout(e){for(const t of Object.keys(e)){const n=e[t];void 0===n?delete o.layout[t]:o.layout[t]=n}},setComponentOverride(e,t){null!==t?(o.componentOverrides||(o.componentOverrides={}),o.componentOverrides[e]=t):o.componentOverrides&&e in o.componentOverrides&&delete o.componentOverrides[e]},replaceDocument(e){const t=y(m(e));o.schemaVersion="1",o.layout=J(t.layout),o.instances=t.instances.map(e=>({...e,rect:{...e.rect}})),a(),o.bindings=t.bindings.map(e=>c(e)),o.componentOverrides=Q(t.componentOverrides)},getInstance:e=>i.get(e),listInstancesByComponentVersionKey:e=>o.instances.filter(t=>t.componentVersionKey===e)}}function ee(){const t=e.reactive({ids:[],freeSplit:null});return{selectedIds:e.computed(()=>t.ids),size:e.computed(()=>t.ids.length),primaryId:e.computed(()=>t.ids[0]),freeSplitSelection:e.computed(()=>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 te(t={}){const{minScale:n=.25,maxScale:o=4,initialScale:i=1}=t,a=e.reactive({scale:i,panX:0,panY:0});function r(e){return Math.max(n,Math.min(o,e))}return{state:a,scale:e.computed(()=>a.scale),panX:e.computed(()=>a.panX),panY:e.computed(()=>a.panY),setScale(e){a.scale=r(e)},zoomAt(e,t){const n=a.scale,o=r(n+t);if(o===n)return;const i=o/n;a.panX=e.x-(e.x-a.panX)*i,a.panY=e.y-(e.y-a.panY)*i,a.scale=o},setPan(e,t){a.panX=e,a.panY=t},panBy(e,t){a.panX+=e,a.panY+=t},resetView(){a.scale=i,a.panX=0,a.panY=0},fitToScreen(e,t,n=40){const o=Math.max(1,t.w-2*n),i=Math.max(1,t.h-2*n),c=o/e.w,s=i/e.h,d=r(Math.min(c,s)),l=e.w*d,u=e.h*d;a.scale=d,a.panX=(t.w-l)/2,a.panY=(t.h-u)/2},toCanvasPoint:e=>({x:(e.x-a.panX)/a.scale,y:(e.y-a.panY)/a.scale}),toViewportPoint:e=>({x:e.x*a.scale+a.panX,y:e.y*a.scale+a.panY})}}function ne(e){var t;return e.parentId??(null==(t=e.slotPlacement)?void 0:t.parentInstanceId)}function oe(e,t){const n=new Map;for(const t of e){const e=ne(t);if(!e)continue;const o=n.get(e);o?o.push(t.instanceId):n.set(e,[t.instanceId])}const o=[t],i=new Set([t]);for(let e=0;e<o.length;e+=1)for(const t of n.get(o[e])??[])i.has(t)||(i.add(t),o.push(t));return{instanceIds:o,descendantCount:o.length-1}}function ie(e,t){if("leaf"===e.type)return e.leafId===t?e:null;for(const n of e.children){const e=ie(n,t);if(e)return e}return null}function ae(e,t){if("leaf"===e.type)return null;if(e.nodeId===t)return e;for(const n of e.children){const e=ae(n,t);if(e)return e}return null}function re(e){return"leaf"===e.type?!0===e.locked:e.children.some(e=>re(e))}function ce(e){return"leaf"===e.type?[e]:e.children.flatMap(e=>ce(e))}const se=e=>({ok:!1,reason:e}),de=e=>({ok:!0,root:e});function le(e,t){return"leaf"===e.type?t(e):{...e,children:e.children.map(e=>le(e,t))}}function ue(e,t){if("leaf"===e.type)return e.leafId===t?e:null;for(const n of e.children){const e=ue(n,t);if(e)return e}return null}function pe(e,t){if("leaf"===e.type)return null;if(e.nodeId===t)return e;for(const n of e.children){const e=pe(n,t);if(e)return e}return null}function fe(e,t,n){const o=pe(e,t);if(!o)return se(`resize: branch "${t}" not found`);if(n.length!==o.children.length)return se(`resize: sizes arity ${n.length} !== children ${o.children.length}`);const i=n.findIndex(e=>p(e));if(i>=0)return se(`resize: sizes[${i}] invalid NodeSize`);const a=e=>"leaf"===e.type?e:e.nodeId===t?{...e,sizes:n.map(e=>({...e}))}:{...e,children:e.children.map(a)};return de(a(e))}function he(e,t){return t?[{mode:"ratio",value:e},{mode:"ratio",value:1-e}]:[{mode:"ratio",value:1-e},{mode:"ratio",value:e}]}const ge=["freeSplitFill","freeSplitClear","freeSplitSwap","freeSplitResize","freeSplitSplit","freeSplitMerge"];function me(e){return ge.includes(e.type)}function ve(e,t,n){const o=t.root,{containerId:i}=e.payload;switch(e.type){case"freeSplitFill":{const{leafId:t,instance:a}=e.payload,r=ie(o,t);if(!r||null!==r.instanceId)return null;if(n.some(e=>e.instanceId===a.instanceId))return null;const c=function(e,t,n){return ue(e,t)?de(le(e,e=>e.leafId===t?{...e,instanceId:n}:e)):se(`fill: leaf "${t}" not found`)}(o,t,a.instanceId);if(!c.ok)return null;const s={...a,parentId:i,slot:"default",placement:"container"};return{containerId:i,nextRoot:c.root,addInstance:s}}case"freeSplitClear":{const{leafId:t}=e.payload,a=ie(o,t);if(!a||null===a.instanceId)return null;if(!n.some(e=>e.instanceId===a.instanceId))return null;const r=function(e,t){return ue(e,t)?de(le(e,e=>e.leafId===t?{...e,instanceId:null}:e)):se(`clear: leaf "${t}" not found`)}(o,t);if(!r.ok)return null;const c=function(e,t){const n=[t],o=[t];for(;o.length>0;){const t=o.shift();for(const i of e)i.parentId===t&&(n.push(i.instanceId),o.push(i.instanceId))}return n}(n,a.instanceId);return{containerId:i,nextRoot:r.root,removeInstanceIds:c}}case"freeSplitSwap":{const{leafIdA:t,leafIdB:n}=e.payload,a=ie(o,t),r=ie(o,n);if(a&&r&&a.instanceId===r.instanceId)return null;const c=function(e,t,n){if(t===n)return se("swap: same leaf");const o=ue(e,t),i=ue(e,n);if(!o)return se(`swap: leaf "${t}" not found`);if(!i)return se(`swap: leaf "${n}" not found`);const a=o.instanceId,r=i.instanceId;return de(le(e,e=>e.leafId===t?{...e,instanceId:r}:e.leafId===n?{...e,instanceId:a}:e))}(o,t,n);return c.ok?{containerId:i,nextRoot:c.root}:null}case"freeSplitResize":{const{nodeId:t,sizes:n}=e.payload,a=ae(o,t);if(a&&function(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n].mode!==t[n].mode||e[n].value!==t[n].value||e[n].min!==t[n].min||e[n].max!==t[n].max)return!1;return!0}(a.sizes,n))return null;const r=fe(o,t,n);return r.ok?{containerId:i,nextRoot:r.root}:null}case"freeSplitSplit":{const{leafId:t,edge:n,newLeafShare:a,newLeafId:r,newNodeId:c}=e.payload,s=function(e,t,n,o,i,a){if(!(o>0&&o<1))return se(`split: newLeafShare ${o} not in (0,1)`);if(i===a)return se("split: newLeafId === newNodeId");const r=function(e){const t=new Set,n=e=>{"leaf"===e.type?t.add(e.leafId):(t.add(e.nodeId),e.children.forEach(n))};return n(e),t}(e);if(r.has(i))return se(`split: newLeafId "${i}" already exists`);if(r.has(a))return se(`split: newNodeId "${a}" already exists`);if(!ue(e,t))return se(`split: leaf "${t}" not found`);const c=function(e){return"left"===e||"right"===e?"row":"col"}(n),s=function(e){return"left"===e||"top"===e}(n),d={type:"leaf",leafId:i,instanceId:null},l=e=>s?[d,e]:[e,d];if("leaf"===e.type)return de({type:"split",nodeId:a,dir:c,children:l(e),sizes:he(o,s)});const u=e=>{if("leaf"===e.type)return e;const n=e.children.findIndex(e=>"leaf"===e.type&&e.leafId===t);if(n>=0){const t=e.children[n];if(e.dir===c){const[i,a]=function(e,t,n){const o=e.value*t,i=e.value*(1-t),a=t=>({mode:e.mode,value:t}),r=t=>({mode:e.mode,value:t,...void 0!==e.min?{min:e.min}:{},...void 0!==e.max?{max:e.max}:{}});return n?[a(o),r(i)]:[r(i),a(o)]}(e.sizes[n],o,s),r=[...e.children.slice(0,n),...l(t),...e.children.slice(n+1)],c=[...e.sizes.slice(0,n),i,a,...e.sizes.slice(n+1)];return{...e,children:r,sizes:c}}const i={type:"split",nodeId:a,dir:c,children:l(t),sizes:he(o,s)},r=[...e.children];return r[n]=i,{...e,children:r}}return{...e,children:e.children.map(u)}};return de(u(e))}(o,t,n,a,r,c);return s.ok?{containerId:i,nextRoot:s.root}:null}case"freeSplitMerge":{const{leafId:t}=e.payload,n=ie(o,t);if(!n||null!==n.instanceId)return null;const a=function(e,t){if("leaf"===e.type)return se("merge: root leaf has no parent");let n=!1;const o=e=>{if("leaf"===e.type)return e;const i=e.children.findIndex(e=>"leaf"===e.type&&e.leafId===t);if(i>=0){n=!0;const t=i-1>=0?i-1:i+1,o=e.sizes[i],c=e.children.filter((e,t)=>t!==i),s=e.sizes.filter((e,t)=>t!==i),d=t<i?t:t-1;return s[d]=(r=o,(a=s[d]).mode===r.mode?{...a,value:a.value+r.value}:a),1===c.length?c[0]:{...e,children:c,sizes:s}}var a,r;return{...e,children:e.children.map(o)}},i=o(e);return n?de(i):se(`merge: leaf "${t}" not found as a branch child`)}(o,t);return a.ok?{containerId:i,nextRoot:a.root}:null}}}function ye(e,t){if(!0===e.structureLocked)return!1;if("split"===t.op||"merge"===t.op){const n=ie(e.root,t.leafId);if(!n)return!1;if(!0===n.locked)return!1}return!0}function Ie(e){return!0!==e.structureLocked&&!re(e.root)}const xe=new WeakMap;function we(e){const t=new Map;return{resolve(n){const o=function(e){return e.id||e.url||""}(n);if(o&&t.has(o))return t.get(o);if(!e){const e=n.url??"";return o&&t.set(o,e),e}const i=e.resolve(n);return"string"==typeof i?(o&&t.set(o,i),i):(o&&t.set(o,i),i.then(e=>{o&&t.set(o,e)},e=>{console.warn(`[hc-canvas/assets] resolve("${o}") 失败,缓存里删条目允许重试:`,e),o&&t.delete(o)}),i)},__clearCache(){t.clear()}}}function be(e,t,n){if(!t||0===Object.keys(t).length)return`${e}::{}`;const o=Se(t,n);return null===o?`${e}::__fresh_${Date.now()}_${Math.random().toString(36).slice(2,8)}__`:`${e}::${o}`}function Se(e,t,n=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==t||t(),null;if(Array.isArray(e)){if(n.has(e))return null==t||t(),null;n.add(e);const o=[];for(const i of e){const e=Se(i,t,n);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==t||t(),null;const i=e;if(n.has(i))return null==t||t(),null;n.add(i);const a=Object.keys(i).sort(),r=[];for(const e of a){const o=Se(i[e],t,n);if(null===o)return null;r.push(`${JSON.stringify(e)}:${o}`)}return`{${r.join(",")}}`}return null==t||t(),null}function ke(e){const t=new Map,n=new Map,o=new Map,i=new Map,a=new Map,r=new Map;let c=!1,s=!1,d=0,l=null;function u(e){if(!s&&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,t){const n=o.get(t);let i;if(n)for(const e of n)if(!r.has(e)){i=e;break}void 0!==i?r.set(i,e):p(e)}function h(e,t){var n;const a=o.get(e);if(a)for(const e of a)null==(n=i.get(e))||n.onUpdate(t)}function g(e,n){let o=t.get(e);return o||(o={cacheKey:e,sourceId:n,status:"idle"},t.set(e,o)),o}function m(n,r,c){if(!e)return;const l=a.get(n);l&&l.abort();const p=new AbortController;a.set(n,p);const f=g(n,r);f.status="loading",f.requestParams=c;const m=f.writeSeq??0;Promise.resolve().then(()=>async function(e,t){return{value:await Promise.resolve(e.query(t))}}(e,{sourceId:r,params:c,signal:p.signal})).then(e=>{if(s)return;if(a.get(n)!==p)return;a.delete(n);const o=t.get(n);o&&((o.writeSeq??0)>m?u({kind:"data-query-skipped",cacheKey:n,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:n,sourceId:r,writeSeq:o.writeSeq,value:e.value}),h(n,e.value)))}).catch(e=>{if(s)return;if(function(e){return null!==e&&"object"==typeof e&&"AbortError"===e.name}(e))return;if(a.get(n)!==p)return;a.delete(n);const c=t.get(n);c&&((c.writeSeq??0)>m?u({kind:"data-query-skipped",cacheKey:n,sourceId:r,writeSeq:c.writeSeq,reason:"race-stale-reject"}):(c.status="error",c.error=e,c.lastFetchedAt=Date.now(),function(e,t){var n,a;const r=o.get(e);if(r)for(const e of r)null==(a=null==(n=i.get(e))?void 0:n.onError)||a.call(n,t)}(n,e)))})}function v(e){if(s)return;const{bindingId:d,sourceId:l,params:u,onUpdate:p,onError:h}=e,g=be(l,u,()=>{c||(console.warn(`[hc-canvas/dataStore] params for "${l}" contains non-plain values; fresh query every call (no cache)`),c=!0)});!function(e,i){const c=n.get(e);if(c===i)return;if(c){const n=o.get(c);if(n&&(n.delete(e),0===n.size)){o.delete(c);const e=a.get(c);e&&(e.abort(),a.delete(c)),t.delete(c)}const i=r.get(e);i&&(r.delete(e),f(i,c))}n.set(e,i);let s=o.get(i);s||(s=new Set,o.set(i,s)),s.add(e)}(d,g),i.set(d,{onUpdate:p,onError:h});const v=t.get(g);if(v){if("success"===v.status)return void p(v.value);if("error"===v.status)return void(null==h||h(v.error));if("loading"===v.status)return}m(g,l,u)}return{request:v,subscribe:function(t){if(s)return;const{bindingId:i,sourceId:a,params:c,onUpdate:l,onError:f}=t;let m=!0;const y=[],I=()=>{m=!1;for(const e of y)e();y.length=0};if(v({bindingId:i,sourceId:a,params:c,onUpdate:e=>{m?y.push(()=>l(e)):l(e)},onError:f?e=>{m?y.push(()=>f(e)):f(e)}:void 0}),!e)return void I();const x=n.get(i);if(!x)return void I();let w=!0;try{const t=function(e,t){if(e.subscribe)return e.subscribe(t,e=>{if(s)return;if(!w)return;if(!o.has(x))return;const t=g(x,a);t.status="success",t.value=e,t.lastFetchedAt=Date.now(),t.writeSeq=++d,u({kind:"data-source-update",cacheKey:x,sourceId:a,writeSeq:t.writeSeq,value:e}),h(x,e)})}(e,{sourceId:a,params:c});(function(e,t){const n=r.get(e);n&&p(n),r.set(e,t)})(i,t?()=>{w=!1;try{t()}catch{}}:()=>{w=!1}),I()}catch(e){w=!1,I(),s||null==f||f(e)}},removeBinding:function(e,c){if(s)return;const d=!0===(null==c?void 0:c.preserveCache),l=r.get(e);l&&r.delete(e),i.delete(e);const u=function(e){const t=n.get(e);if(!t)return;n.delete(e);const i=o.get(t);return i&&(i.delete(e),0===i.size&&o.delete(t)),t}(e);if(u){if(l&&f(l,u),!o.has(u)){const e=t.get(u);if(!d||"success"!==(null==e?void 0:e.status)){const e=a.get(u);e&&(e.abort(),a.delete(u)),t.delete(u)}}}else l&&p(l)},invalidate:function(e){if(s)return;const n=[];for(const[o,i]of t)void 0!==e&&i.sourceId!==e||n.push(o);for(const e of n){const n=t.get(e);if(!n)continue;const i=o.get(e);if(!i||0===i.size){t.delete(e);const n=a.get(e);n&&(n.abort(),a.delete(e));continue}n.status="stale",m(e,n.sourceId,n.requestParams)}},getSnapshot:function(){return{entries:Array.from(t.values()).map(e=>({cacheKey:e.cacheKey,sourceId:e.sourceId,status:e.status,value:e.value,error:e.error,lastFetchedAt:e.lastFetchedAt}))}},getCachedBySourceId:function(e,n){if(s)return;const o=be(e,n,()=>{c||(console.warn(`[hc-canvas/dataStore] params for "${e}" contains non-plain values; cannot compute stable cache key, cache lookup will miss`),c=!0)}),i=t.get(o);return i?{value:i.value,status:i.status}:void 0},disposeAll:function(){if(!s){s=!0;for(const e of a.values())try{e.abort()}catch{}a.clear();for(const e of r.values())try{e()}catch{}r.clear(),t.clear(),n.clear(),o.clear(),i.clear(),l=null}},attachTraceBridge:function(e){return s?()=>{}:(l=e,()=>{l===e&&(l=null)})},getBindingsForCacheKey:function(e){const t=o.get(e);return t?Array.from(t):[]},get isDisposed(){return s}}}const Be=Symbol("hc:canvas:context");function Me(n={}){var o,i;const a=n.canvasId??t.DEFAULT_CANVAS_ID,r=Z(n.initialDocument),s=ee(),d=te(n.viewport),l=U(n.scheduler),u=ke(null==(o=n.adapters)?void 0:o.data);let p=!1;const f=function(){const t=new WeakSet;return{mint(n){const o=e.markRaw({type:"freeSplitRestore",payload:n});return t.add(o),o},isMarked:e=>"object"==typeof e&&null!==e&&t.has(e)&&"freeSplitRestore"===e.type}}(),h=e.computed(()=>{const e=n.freeSplitEnabled;return("function"==typeof e?e():e)??!1}),g=e.computed(()=>{const e=n.freeSplitControlsAlways;return("function"==typeof e?e():e)??!1}),m=n.cascadeRemove??!0,v=[];n.hooks&&v.push(n.hooks);const y=e.ref(0),I=e.computed(()=>y.value>0),x=e.ref({}),w=e.computed(()=>x.value),b=e.computed(()=>{var e;const t=(null==(e=n.getMode)?void 0:e.call(n))??"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=r.document.layout.behavior??{};if("design"!==t){const{selectable:e,draggable:t,resizable:n,keyboardMove:a,...r}=i;return{...o,...r,...x.value}}return{...o,...i,...x.value}}),k=we(null==(i=n.adapters)?void 0:i.assets),B=e.ref("select"),z=e.ref(null),C=e.computed(()=>z.value??B.value),T=e.ref(null),E=e.computed(()=>T.value),D=e.ref(null),P=e.ref({w:0,h:0}),R=e.computed(()=>P.value),$=e.computed(()=>{const e=r.document.layout,t=P.value;return{w:L(e.canvas.width,t.w,1920),h:L(e.canvas.height,t.h,1080)}}),A=e.ref([]),F=e.computed(()=>A.value),O=e.ref(0),N=e.computed(()=>O.value>0);function j(e){if(!e)return null;const t=r.getInstance(e),n=null==t?void 0:t.containerLayout;return n&&"free-split"===n.mode?n:null}function V(){const e=s.freeSplitSelection.value;if(!e)return;const t=j(e.containerId);if(!t)return void s.clearFreeSplitSelection();if("freeSplitLeaf"===e.kind)return void(ie(t.root,e.leafId)||s.clearFreeSplitSelection());const n=ae(t.root,e.nodeId);(!n||e.dividerIndex<0||e.dividerIndex>=n.children.length-1)&&s.clearFreeSplitSelection()}const q={canvasId:a,document:r,selection:s,viewport:d,scheduler:l,adapters:n.adapters??{},dataStore:u,dispatch:function(e){var t,n;if(p)return void console.warn("[hc-canvas/context] dispatch called after dispose()");if("freeSplitRestore"===e.type)return void(f.isMarked(e)?function(e){const{containerId:t,containerLayout:n,addInstances:o,addBindings:i,removeInstanceIds:a}=e.payload;if(r.setInstanceContainerLayout(t,c(n)),o)for(const e of o)r.addInstance(c(e));if(i)for(const e of i)r.addBinding(c(e));if(a)for(const e of a)r.removeInstance(e),s.removeFromSelection(e);V()}(e):console.warn("[hypercard] freeSplitRestore 未经内部铸造(疑似伪造),已拒绝。"));const o=function(e){var t;if(me(e)){if(!h.value)return console.warn("[hypercard] free-split 布局未启用(本 canvas gate 关),free-split action 已忽略。"),null;const t=j(e.payload.containerId);if(!t)return null;if("freeSplitSplit"===e.type){if(!ye(t,{op:"split",leafId:e.payload.leafId}))return console.warn("[hypercard] free-split split 被锁(structureLocked / leaf.locked),已忽略。"),null}else if("freeSplitMerge"===e.type){if(!ye(t,{op:"merge",leafId:e.payload.leafId}))return console.warn("[hypercard] free-split merge 被锁(structureLocked / leaf.locked),已忽略。"),null;const n=ie(t.root,e.payload.leafId);if(n&&null!==n.instanceId)return console.warn("[hypercard] free-split merge 仅支持空叶(先 clear 内容),已忽略。"),null}else if("freeSplitResize"===e.type&&!ye(t,{op:"resize"}))return console.warn("[hypercard] free-split resize 被锁(structureLocked),已忽略。"),null;return e}if("removeInstance"===e.type){const t=r.getInstance(e.payload.instanceId),n=j(null==t?void 0:t.parentId);if(t&&n){const e=ce(n.root).find(e=>e.instanceId===t.instanceId);if(e)return{type:"freeSplitClear",payload:{containerId:t.parentId,leafId:e.leafId}}}}if("addInstance"===e.type){const n=e.payload.instance;if(j(n.parentId??(null==(t=n.slotPlacement)?void 0:t.parentInstanceId)))return console.warn("[hypercard] free-split 容器子实例必须通过 freeSplitFill 创建(含 slotPlacement 入口),addInstance 已拒绝。"),null}if("duplicateInstance"===e.type){const t=r.getInstance(e.payload.instanceId);if(t){if(j(t.instanceId))return console.warn("[hypercard] free-split 容器不支持浅复制(树/flat 会不一致),已拒绝。"),null;if(j(t.parentId))return console.warn("[hypercard] free-split 容器子实例不支持复制(首版),已拒绝。"),null}}if("updateInstance"===e.type&&e.payload.patch){const t=e.payload.patch;if("parentId"in t){const e=t.parentId;if(e&&j(e))return console.warn("[hypercard] 不能 reparent 进 free-split 容器(请用 freeSplitFill),已拒绝。"),null}const n=t.slotPlacement;if((null==n?void 0:n.parentInstanceId)&&j(n.parentInstanceId))return console.warn("[hypercard] 不能用 slotPlacement 把实例挂进 free-split 容器(请用 freeSplitFill),已拒绝。"),null;if(["parentId","slot","placement","slotPlacement"].some(e=>e in t)){const t=r.getInstance(e.payload.instanceId);if(t&&j(t.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 t=j(e.payload.instanceId);if(t&&!Ie(t))return console.warn("[hypercard] free-split 容器被锁(structureLocked / leaf.locked),不能整树替换 containerLayout,已忽略。"),null;if(null!==e.payload.containerLayout&&"free-split"===e.payload.containerLayout.mode&&!h.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:t,...n}=e.payload.patch;return 0===Object.keys(n).length?null:{type:"updateLayout",payload:{patch:n}}}return e}(e);if(null!==o){for(const e of v)if(!1===(null==(t=e.onBeforeAction)?void 0:t.call(e,o)))return;switch(o.type){case"addInstance":r.addInstance(o.payload.instance);break;case"removeInstance":{const e=m?oe(r.document.instances,o.payload.instanceId).instanceIds:[o.payload.instanceId];for(const t of e)r.removeInstance(t),s.removeFromSelection(t);V();break}case"updateInstance":r.updateInstance(o.payload.instanceId,o.payload.patch);break;case"moveInstance":r.moveInstance(o.payload.instanceId,o.payload.x,o.payload.y);break;case"resizeInstance":r.resizeInstance(o.payload.instanceId,o.payload.w,o.payload.h);break;case"setInstanceProp":r.setInstanceProp(o.payload.instanceId,o.payload.key,o.payload.value);break;case"addBinding":r.addBinding(o.payload.binding);break;case"removeBinding":r.removeBinding(o.payload.bindingId);break;case"updateBinding":r.updateBinding(o.payload.bindingId,o.payload.patch);break;case"updateLayout":r.updateLayout(o.payload.patch);break;case"setRootLayout":{const{rootLayout:e}=o.payload;r.updateLayout({rootLayout:null===e?void 0:e});break}case"replaceDocument":r.replaceDocument(o.payload.document),s.purgeOrphans(r.document.instances.map(e=>e.instanceId)),V();break;case"setComponentOverride":{const{instanceId:e,override:t}=o.payload;if(void 0===r.getInstance(e)){console.warn(`[hc-canvas/context] setComponentOverride: instance "${e}" 不存在,no-op`);break}r.setComponentOverride(e,t);break}case"setInstanceLocked":r.setInstanceLocked(o.payload.instanceId,o.payload.locked);break;case"duplicateInstance":r.duplicateInstance(o.payload.instanceId,o.payload.newInstanceId,o.payload.offset??{x:20,y:20});break;case"setInstanceSize":{const{instanceId:e,size:t}=o.payload;if(null===t)r.setInstanceSize(e,null);else{const n=S(void 0,t);r.setInstanceSize(e,n??null)}break}case"setContainerLayout":{const{instanceId:e,containerLayout:t}=o.payload;if(null===t)r.setInstanceContainerLayout(e,null);else{const n=M(t);null!==n&&r.setInstanceContainerLayout(e,n)}V();break}case"updateLayoutBox":r.updateInstanceLayoutBox(o.payload.instanceId,o.payload.patch);break;case"updateLayoutItem":r.updateInstanceLayoutItem(o.payload.instanceId,o.payload.patch);break;case"updateRotation":r.setInstanceRotation(o.payload.instanceId,o.payload.value);break;case"select":s.select(o.payload.instanceId);break;case"toggleSelect":s.toggleSelect(o.payload.instanceId);break;case"addToSelection":s.addToSelection(o.payload.instanceId);break;case"removeFromSelection":s.removeFromSelection(o.payload.instanceId);break;case"clearSelection":s.clearSelection();break;case"selectAll":s.selectAll(o.payload.instanceIds);break;case"freeSplitFill":case"freeSplitClear":case"freeSplitSwap":case"freeSplitResize":case"freeSplitSplit":case"freeSplitMerge":!function(e){const t=j(e.payload.containerId);if(!t)return;const n=ve(e,t,r.document.instances);if(!n)return;const o=c({...t,root:n.nextRoot});if(r.setInstanceContainerLayout(e.payload.containerId,o),n.addInstance&&r.addInstance(c(n.addInstance)),n.removeInstanceIds)for(const e of n.removeInstanceIds)r.removeInstance(e),s.removeFromSelection(e);V()}(o);break;default:{const e=o;console.warn("[hc-canvas/context] unknown action",e)}}for(const e of v)null==(n=e.onAfterAction)||n.call(e,o)}},dispose:function(){p||(p=!0,y.value=0,l.dispose(),u.disposeAll())},isBatching:I,beginBatch:function(){p||y.value++},endBatch:function(e){var t;if(!p&&0!==y.value)if(y.value>1)y.value--;else{for(const n of v)null==(t=n.onAfterBatch)||t.call(n,e);y.value=0}},registerHooks:function(e){return v.push(e),()=>{const t=v.indexOf(e);t>=0&&v.splice(t,1)}},isRecordingSuppressed:N,suppressRecording:function(e){O.value++;try{return e()}finally{O.value--}},freeSplitEnabled:h,freeSplitControlsAlways:g,cascadeRemove:m,effectiveBehavior:b,interactionOptions:w,setInteractionOptions:function(e){const t={...x.value};for(const n of Object.keys(e)){const o=e[n];void 0===o?delete t[n]:t[n]=o}x.value=t},resolveAsset:function(e){return k.resolve(e)},toolMode:C,setToolMode:function(e){B.value=e},setTemporaryToolMode:function(e){z.value=e},mouseCanvasPoint:E,setMouseCanvasPoint:function(e){T.value=e},measuredStageSize:R,measuredCanvasSize:$,setMeasuredStageSize:function(e){const t=Math.max(0,Math.round(e.w)),n=Math.max(0,Math.round(e.h));P.value.w===t&&P.value.h===n||(P.value={w:t,h:n})},layoutIssues:F,setLayoutIssues:function(e){A.value=e},cannotDragLayoutManagedChildEvent:e.readonly(D),setCannotDragLayoutManagedChildEvent:function(e){D.value=e}};return function(e,t){xe.set(e,t)}(q,{computeInverse:e=>function(e,t,n){const o=t.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,d=ve(e,s,o.document.instances);if(!d)return null;const l={containerId:i,containerLayout:c(s)};if(d.removeInstanceIds&&d.removeInstanceIds.length>0){const e=d.removeInstanceIds;l.addInstances=e.map(e=>o.getInstance(e)).filter(e=>void 0!==e).map(e=>c(e));const t=o.document.bindings.filter(t=>e.some(e=>W(t,e))).map(e=>c(e));t.length>0&&(l.addBindings=t)}return d.addInstance&&(l.removeInstanceIds=[d.addInstance.instanceId]),n.mint(l)}(e,q,f)}),q}function ze(t){e.provide(Be,t)}function Ce(){const t=e.inject(Be);if(!t)throw new Error("[hc-canvas] useCanvasContext() called outside <CanvasProvider> / <HyperCardCanvasDesigner>. Make sure the component tree is wrapped by a provider.");return t}const Te="default";function Le(e){return e.slot??Te}function Ee(e,t){const n=[],o=t.resolveContract,i=t.maxDepth??8,a=new Map;for(const t of e.instances)a.set(t.instanceId,t);for(const t of e.instances){if(void 0===t.parentId&&void 0!==t.slot&&t.slot!==Te){De(n,"orphan-slot",t.instanceId,`slot "${t.slot}" 没有 parentId,数据不完整`);continue}if(void 0===t.parentId)continue;if(!a.has(t.parentId)){De(n,"missing-parent",t.instanceId,`parentId "${t.parentId}" 指向不存在的实例`);continue}"absolute"!==t.placement&&"canvas"!==t.placement||De(n,"absolute-child-rejected",t.instanceId,"parentId + placement='absolute'|'canvas' 在 D4.5f MVP 不支持,只允许 root absolute/canvas 或 child slot/container");const e=a.get(t.parentId),i=o(e.componentVersionKey);if(!i)continue;const r=i.slotsDecl??[];if(0===r.length){De(n,"parent-not-layout",t.instanceId,`父组件 "${e.componentId}" 不是布局组件(slotsDecl 为空)`);continue}const c=Le(t),s=Pe(r,c);s?s.accepts&&s.accepts.length>0&&(s.accepts.includes(t.componentId)||De(n,"slot-not-allowed-component",t.instanceId,`slot "${c}" 不允许 componentId "${t.componentId}"(accepts: ${s.accepts.join(", ")})`)):De(n,"invalid-slot",t.instanceId,`slot "${c}" 不在父 "${e.componentId}" 的 slotsDecl 中(可能组件升级删除了该 slot)`)}const r=new Map;for(const t of e.instances){if(void 0===t.parentId)continue;const e=Le(t),n=`${t.parentId}::${e}`;let o=r.get(n);o||(o=[],r.set(n,o)),o.push(t)}for(const[e,t]of r){if(t.length<=1)continue;const[i,r]=Re(e),c=a.get(i);if(!c)continue;const s=o(c.componentVersionKey);if(!s)continue;const d=Pe(s.slotsDecl??[],r);if(d&&!0!==d.multiple)for(let e=1;e<t.length;e++)De(n,"slot-multiple-violated",t[e].instanceId,`slot "${r}" 不允许多个子实例(SlotDecl.multiple !== true)`)}const c=new Map;for(const t of e.instances)c.set(t.instanceId,0);for(const t of e.instances)0===c.get(t.instanceId)&&s(t.instanceId,[],0);function s(e,t,o){c.set(e,1);const r=a.get(e);if(o>i)return De(n,"depth-exceeded",e,`嵌套深度 ${o} 超过上限 ${i}`),void c.set(e,2);const d=r.parentId;if(void 0===d)return void c.set(e,2);if(!a.has(d))return void c.set(e,2);const l=c.get(d);if(1===l)return De(n,"cycle",e,`parentId 链成环:${[...t,e,d].join(" → ")}`),void c.set(e,2);2!==l?(s(d,[...t,e],o+1),c.set(e,2)):c.set(e,2)}return n}function De(e,t,n,o){e.push({kind:t,instanceId:n,detail:o})}function Pe(e,t){return e.find(e=>e.name===t)}function Re(e){const t=e.indexOf("::");return[e.slice(0,t),e.slice(t+2)]}const $e=["data-hc-leaf","data-hc-leaf-container"],Ae=e.defineComponent({name:"SplitTreeRenderer",__name:"SplitTreeRenderer",props:{containerId:{},node:{},register:{type:Function},unregister:{type:Function},gap:{}},setup(t){const n=t,o=e.computed(()=>"leaf"===n.node.type?n.node:null),i=e.computed(()=>"split"===n.node.type?n.node:null);function a(e){const t=o.value;t&&(e instanceof HTMLElement?n.register(n.containerId,t.leafId,e):n.unregister(n.containerId,t.leafId))}function r(e){return e?"px"===e.mode?`${e.value}px`:`minmax(0, ${e.value}fr)`:"minmax(0, 1fr)"}function c(e){return"leaf"===e.type?e.leafId:e.nodeId}const s=e.computed(()=>{const e=i.value;if(!e)return{};const t=[];for(let n=0;n<e.children.length;n++)t.push(r(e.sizes[n]));const o=t.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%"),n.gap&&n.gap>0&&(a.gap=`${n.gap}px`),a});return(n,r)=>{const d=e.resolveComponent("SplitTreeRenderer",!0);return o.value?(e.openBlock(),e.createElementBlock("div",{key:0,ref:a,"data-hc-leaf":o.value.leafId,"data-hc-leaf-container":t.containerId,class:"hc-fs-leaf",style:{width:"100%",height:"100%","box-sizing":"border-box"}},null,8,$e)):i.value?(e.openBlock(),e.createElementBlock("div",{key:1,class:"hc-fs-branch",style:e.normalizeStyle(s.value)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value.children,n=>(e.openBlock(),e.createBlock(d,{key:c(n),"container-id":t.containerId,node:n,register:t.register,unregister:t.unregister,gap:t.gap},null,8,["container-id","node","register","unregister","gap"]))),128))],4)):e.createCommentVNode("",!0)}}}),Fe={containers:new Map};function Oe(e){return"object"==typeof e&&null!==e}function Ne(e){if(!Oe(e))return{ok:!1,reason:"empty-root"};const t=new Set,n=new Set,o=new Map;let i=null;const a=(e,r)=>{if(i)return;if(r>8)return void(i="depth-exceeded");if(!Oe(e))return void(i="empty-root");const c=e.type;if("leaf"===c){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(t.has(a))return void(i="duplicate-id");if(t.add(a),"string"==typeof r){if(n.has(r))return void(i="duplicate-instance");n.add(r),o.set(r,a)}return}if("split"===c){const{nodeId:n,dir:o,children:c,sizes:s}=e;if("string"!=typeof n)return void(i="empty-root");if("row"!==o&&"col"!==o)return void(i="empty-root");if(!Array.isArray(c)||!Array.isArray(s))return void(i="empty-root");if(t.has(n))return void(i="duplicate-id");t.add(n);for(const e of s)if(p(e))return void(i="bad-size");for(const e of c)a(e,r+1);return}i="empty-root"};return a(e,1),i?{ok:!1,reason:i}:{ok:!0,instanceToLeaf:o}}function je(e,t,n){const o=(null==e?void 0:e.onError)??"log";switch(o){case"stop":return"stop";case"log":return console.error(`[hc-canvas/wirePageBindings] binding "${n}" threw:`,t),"continue";case"continue":return"continue";default:return console.error(`[hc-canvas/wirePageBindings] binding "${n}" threw (unknown onError="${String(o)}"):`,t),"continue"}}function Ve(e,t){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,t){const n=[];let o;for(const i of e){const e=qe(t,i.from);void 0===i.to?n.push(e):"number"==typeof i.to?(_e(n,i.to+1),n[i.to]=e):(o||(n.length>0&&"object"==typeof n[0]&&null!==n[0]&&!Array.isArray(n[0])?o=n[0]:(o={},0===n.length?n.push(o):n[0]=o)),o[i.to]=e)}return n}(e.paths,t):[t]:[t]}function qe(e,t){if(""===t)return e;const n=t.split(".");let o=e;for(const e of n){if(null==o)return;if("object"!=typeof o)return;o=o[e]}return o}function _e(e,t){for(;e.length<t;)e.push(void 0)}function Ke(e,t,n,o){e.debouncePendingTimer=null;const i=e.debounceDirty,a=e.debouncePendingChainId,r=e.debouncePendingPayload;e.debouncePendingChainId=null,e.debouncePendingPayload=void 0,e.debounceDirty=!1,n&&i&&null!==a&&He(t,e).pass&&o(r,a)}function Xe(e,t,n){e.throttleTrailingTimer=null;const o=e.throttleTrailingPendingChainId,i=e.throttleTrailingPendingPayload;e.throttleTrailingPendingChainId=null,e.throttleTrailingPendingPayload=void 0,e.throttleWindowStartTs=null,null!==o&&(t.once&&e.onceConsumed||(t.once&&(e.onceConsumed=!0),e.throttleLastFireTs=Ue(),n(i,o)))}function He(e,t){const n=e.throttle;if(n){n.leading;const e=n.windowMs,o=Ue(),i=t.throttleLastFireTs;if(null!==i&&o-i<e)return{pass:!1,reason:"throttle-window"};t.throttleLastFireTs=o}if(e.once){if(t.onceConsumed)return{pass:!1,reason:"once-consumed"};t.onceConsumed=!0}return{pass:!0}}function Ye(e){return!(!e||!(e.throttle&&!1===e.throttle.leading&&!1===e.throttle.trailing||e.debounce&&!1===e.debounce.leading&&!1===e.debounce.trailing))}function Ue(){return Date.now()}let Ge=0;function We(n){var o,i;const a=n.canvasId,{source:r}=n,c=n.dataStore,s=new Set;let d="off",l=0,u=!1;const p="w"+ ++Ge;let f=0;function h(){return`${p}-${++f}`}let g=0;function m(e){L.hasListeners("binding:trace")&&L.emit("binding:trace",{canvasId:a,ts:Date.now(),seq:++g,...e})}let v=!1,y=null;function I(){v&&(y&&y(),y=null,v=!1)}const x=new Map,w=new Map,b=new Set,S=new Set,k=new Set,B=new Set,M=new Map;let z=new Set;const C=[],T=[],L=function(e){const t=new Set,n=new Set,o=new Set;return{on(i,a){var r;if("binding:fire"===i){const e=a;return t.add(e),()=>t.delete(e)}if("binding:error"===i){const e=a;return n.add(e),()=>n.delete(e)}const c=a;return o.add(c),null==(r=null==e?void 0:e.onTraceListenerCountChange)||r.call(e,o.size),()=>{var t;o.delete(c),null==(t=null==e?void 0:e.onTraceListenerCountChange)||t.call(e,o.size)}},emit(e,i){if("binding:fire"===e)for(const e of t)try{e(i)}catch(e){console.error("[hc-canvas/wirePageBindings] listener threw",e)}else if("binding:error"===e)for(const e of n)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?t.size>0:"binding:error"===e?n.size>0:o.size>0,clear(){t.clear(),n.clear(),o.clear()}}}({onTraceListenerCountChange:function(e){e>0?!v&&c&&(y=c.attachTraceBridge(e=>{if(u)return;const t=c.getBindingsForCacheKey(e.cacheKey);for(const n of t)m({kind:e.kind,bindingId:n,cacheKey:e.cacheKey,sourceId:e.sourceId,writeSeq:e.writeSeq,reason:e.reason,payload:e.value})}),v=!0):I()}}),E=function(e){let t=[],n=200,o=null,i=null;return{start:function(a){i&&(i(),i=null,t=[]),n=(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)||(t.push(e),t.length>n&&t.shift())})},stop:function(){i&&(i(),i=null);const e=t.slice();return t=[],e},snapshot:function(){return t.slice()},get isRunning(){return null!==i}}}({on:(e,t)=>L.on(e,t)});function D(e){return void 0===e.canvasId||e.canvasId===a}function P(e){for(const t of G(e))if(void 0!==t.canvasId&&t.canvasId!==a)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,t){return void 0===t||R(e)!==t}function A(){var e;return(null==(e=r.getDocument())?void 0:e.bindings)??[]}function F(e){return A().find(t=>t.id===e)}function O(e){try{e()}catch(e){console.error("[hc-canvas/wirePageBindings] cleanup threw",e)}}function N(e,t){L.emit("binding:fire",e),m({kind:"fire",bindingId:e.bindingId,chainId:t,payload:e.payload,args:e.args})}function j(e,t){L.emit("binding:error",e),m({kind:(null==t?void 0:t.traceKind)??"error",bindingId:e.bindingId,chainId:null==t?void 0:t.chainId,code:e.code,message:e.message,detail:e.detail})}function V(e,t=!1){const n=x.get(e);if(n)for(const e of n)O(e);x.delete(e);const o=w.get(e);if(o){const t=function(e){const t={};return null!==e.debouncePendingTimer&&(clearTimeout(e.debouncePendingTimer),e.debouncePendingTimer=null,null!==e.debouncePendingChainId&&(t.droppedDebounce={chainId:e.debouncePendingChainId,payload:e.debouncePendingPayload})),null!==e.debouncePendingTimer||null===e.debouncePendingChainId||t.droppedDebounce||(t.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&&(t.droppedThrottleTrailing={chainId:e.throttleTrailingPendingChainId,payload:e.throttleTrailingPendingPayload}),e.throttleTrailingPendingChainId=null,e.throttleTrailingPendingPayload=void 0,e.throttleWindowStartTs=null,t}(o);t.droppedDebounce&&m({kind:"scheduled-dropped",bindingId:e,chainId:t.droppedDebounce.chainId,payload:t.droppedDebounce.payload}),t.droppedThrottleTrailing&&m({kind:"scheduled-dropped",bindingId:e,chainId:t.droppedThrottleTrailing.chainId,payload:t.droppedThrottleTrailing.payload}),w.delete(e)}S.delete(e),M.delete(e),k.delete(e),B.delete(e),s.delete(e),c&&c.removeBinding(e,{preserveCache:t})}function q(e=!1){for(const t of[...x.keys()])V(t,e)}function _(e){if(u)return;if(x.has(e.id))return;if(P(e))return void(k.has(e.id)||(j({bindingId:e.id,code:"unsupported-cross-canvas"}),k.add(e.id),m({kind:"wire-skipped",bindingId:e.id,reason:"unsupported-cross-canvas"})));const n=function(e){return e.disabled?"disabled":b.has(e.id)?"stopped":null}(e);if(n)return void m({kind:"wire-skipped",bindingId:e.id,reason:n});if("data-preview"===d&&"dataSource"!==e.source.kind)return void m({kind:"wire-skipped",bindingId:e.id,reason:"mode-matrix-data-preview"});Ye(e.schedule)&&!B.has(e.id)&&(console.warn(`[hc-canvas/wirePageBindings] schedule.{throttle|debounce}.{leading=false,trailing=false} 永远不会 fire (binding "${e.id}")`),B.add(e.id));const o=[];switch(e.source.kind){case"instanceEvent":{const n=t.getInstance(e.source.instanceId,a);if(!n)return void S.add(e.id);const i=e.source.event,r=n.on(i,t=>X(e,t));o.push(r);break}case"lifecycle":case"page":break;case"dataSource":{if(!c)return void(s.has(e.id)||(j({bindingId:e.id,code:"no-data-adapter"}),m({kind:"wire-skipped",bindingId:e.id,reason:"no-data-adapter"}),s.add(e.id)));const t=e.source,n="change"===t.watch,o=h(),i=t=>X(e,t),a=t=>{j({bindingId:e.id,code:"data-query-failed",message:t instanceof Error?t.message:String(t),detail:t},{chainId:o}),"stop"===je(e.errorPolicy,t,e.id)&&b.add(e.id)};m({kind:"data-query-started",bindingId:e.id,sourceId:t.sourceId,chainId:o}),n?c.subscribe({bindingId:e.id,sourceId:t.sourceId,onUpdate:i,onError:a}):c.request({bindingId:e.id,sourceId:t.sourceId,onUpdate:i,onError:a});break}default:return}x.set(e.id,o),M.set(e.id,R(e))}function K(){for(const e of A())_(e)}function X(e,t){if(u)return;if("off"===d)return;if("data-preview"===d&&"dataSource"!==e.source.kind)return;if(b.has(e.id))return void m({kind:"stopped-skipped",bindingId:e.id});if(P(e))return;if(l>=8){const t=h();return void j({bindingId:e.id,code:"cycle-detected"},{chainId:t,traceKind:"cycle-detected"})}const n=h(),o=function(e,t,n,o){return Ye(e)?{fire:!1,deferred:!1,reason:"schedule-no-fire"}:(null==e?void 0:e.debounce)?function(e,t,n,o){const i=e.debounce,a=i.leading??!1,r=i.trailing??!0,c=i.windowMs;if(null===t.debouncePendingTimer){if(a){const n=He(e,t);return n.pass?(t.debounceLeadingFireTs=Ue(),t.debounceDirty=!1,t.debouncePendingPayload=void 0,t.debouncePendingChainId=null,{fire:!0,deferred:!1,scheduleDeferred:n=>{t.debouncePendingTimer=setTimeout(()=>{Ke(t,e,r,n)},c)}}):{fire:!1,deferred:!1,reason:n.reason}}return t.debouncePendingPayload=n,t.debouncePendingChainId=o,t.debounceDirty=!0,{fire:!1,deferred:!0,scheduleDeferred:n=>{t.debouncePendingTimer=setTimeout(()=>{Ke(t,e,r,n)},c)}}}const s=null!==t.debouncePendingChainId?{chainId:t.debouncePendingChainId,payload:t.debouncePendingPayload}:void 0;return t.debounceDirty=!0,r&&(t.debouncePendingPayload=n,t.debouncePendingChainId=o),clearTimeout(t.debouncePendingTimer),t.debouncePendingTimer=null,r?{fire:!1,deferred:!0,droppedByReschedule:s,scheduleDeferred:n=>{t.debouncePendingTimer=setTimeout(()=>{Ke(t,e,r,n)},c)}}:{fire:!1,deferred:!1,reason:"debounce-window",scheduleDeferred:n=>{t.debouncePendingTimer=setTimeout(()=>{Ke(t,e,r,n)},c)}}}(e,t,n,o):function(e,t,n,o){const i=null==e?void 0:e.throttle;if(!i)return function(e,t){if(null==e?void 0:e.once){if(t.onceConsumed)return{fire:!1,deferred:!1,reason:"once-consumed"};t.onceConsumed=!0}return{fire:!0,deferred:!1}}(e,t);const a=i.leading??!0,r=i.trailing??!1,c=i.windowMs,s=Ue();if(a){const i=t.throttleLastFireTs;if(!(null!==i&&s-i<c))return(null==e?void 0:e.once)&&t.onceConsumed?{fire:!1,deferred:!1,reason:"once-consumed"}:((null==e?void 0:e.once)&&(t.onceConsumed=!0),t.throttleLastFireTs=s,{fire:!0,deferred:!1});if(!r)return{fire:!1,deferred:!1,reason:"throttle-window"};const a=null!==t.throttleTrailingPendingChainId?{chainId:t.throttleTrailingPendingChainId,payload:t.throttleTrailingPendingPayload}:void 0;if(t.throttleTrailingPendingPayload=n,t.throttleTrailingPendingChainId=o,null===t.throttleTrailingTimer){const n=c-(s-i);return{fire:!1,deferred:!0,scheduleDeferred:o=>{t.throttleTrailingTimer=setTimeout(()=>{Xe(t,e,o)},n)}}}return{fire:!1,deferred:!1,reason:"throttle-window",droppedByReschedule:a}}if(null===t.throttleWindowStartTs)return t.throttleWindowStartTs=s,t.throttleTrailingPendingPayload=n,t.throttleTrailingPendingChainId=o,{fire:!1,deferred:!0,reason:"leading-disabled",scheduleDeferred:n=>{t.throttleTrailingTimer=setTimeout(()=>{Xe(t,e,n)},c)}};const d=null!==t.throttleTrailingPendingChainId?{chainId:t.throttleTrailingPendingChainId,payload:t.throttleTrailingPendingPayload}:void 0;return t.throttleTrailingPendingPayload=n,t.throttleTrailingPendingChainId=o,{fire:!1,deferred:!1,reason:"throttle-window",droppedByReschedule:d}}(e,t,n,o)}(e.schedule,function(e){let t=w.get(e);return t||(t={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,t)),t}(e.id),t,n),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&&m({kind:"scheduled-dropped",bindingId:e.id,chainId:o.droppedByReschedule.chainId,payload:o.droppedByReschedule.payload,schedule:i}),o.scheduleDeferred&&o.scheduleDeferred((t,n)=>{u||(m({kind:"scheduled-flushed",bindingId:e.id,chainId:n,payload:t,schedule:i}),H(e,t,n))}),o.reason?m({kind:"scheduled-skipped",bindingId:e.id,chainId:n,reason:o.reason,payload:t,schedule:i}):!o.deferred||o.fire?o.fire&&H(e,t,n):m({kind:"scheduled-deferred",bindingId:e.id,chainId:n,payload:t,schedule:i})}function H(e,n,o){if(u)return;const i=t.getInstance(e.target.instanceId,a);if(!i)return void j({bindingId:e.id,code:"target-not-mounted"},{chainId:o});let r,c;try{r=Ve(e.mapping,n)}catch(t){return m({kind:"mapping-failed",bindingId:e.id,chainId:o,message:t instanceof Error?t.message:String(t),detail:t}),void("stop"===je(e.errorPolicy,t,e.id)&&b.add(e.id))}if("instanceDataInput"===e.target.kind){const t=i.vm.custom,a=null==t?void 0:t[e.target.key];if(!a||"object"!=typeof a||!0!==a.dataInput)return void j({bindingId:e.id,code:"unknown-target-data-input",message:t&&e.target.key in t?`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:o});try{i.setDataInput(e.target.key,r[0])}catch(t){return"stop"===je(e.errorPolicy,t,e.id)&&b.add(e.id),void j({bindingId:e.id,code:"invoke-failed",message:t instanceof Error?t.message:String(t),detail:t},{chainId:o})}return void N({bindingId:e.id,source:e.source,target:e.target,payload:n,args:r},o)}l++;try{c=function(e,t,n){switch(t.kind){case"instanceMethod":return e.call(t.method,...n);case"instanceEmit":return void e.emit(t.event,n[0]);default:return}}(i,e.target,r),N({bindingId:e.id,source:e.source,target:e.target,payload:n,args:r},o)}catch(t){return"stop"===je(e.errorPolicy,t,e.id)&&b.add(e.id),void j({bindingId:e.id,code:"invoke-failed",message:t instanceof Error?t.message:String(t),detail:t},{chainId:o})}finally{l--}var s;"object"==typeof(s=c)&&null!==s&&"function"==typeof s.then&&Promise.resolve(c).catch(t=>{u||("stop"===je(e.errorPolicy,t,e.id)&&b.add(e.id),j({bindingId:e.id,code:"invoke-failed",message:t instanceof Error?t.message:String(t),detail:t},{chainId:o}))})}const Y=null==(o=r.onAction)?void 0:o.call(r,e=>{var t,n,o,i;if(u)return;if("off"===d)return;const a=e;if(a&&"object"==typeof a)switch(a.type){case"addBinding":{const e=null==(n=null==(t=a.payload)?void 0:t.binding)?void 0:n.id;if(!e)return;const o=F(e);o&&_(o);break}case"updateBinding":{const e=null==(o=a.payload)?void 0:o.bindingId;if(!e)return;V(e);const t=F(e);t&&_(t);break}case"removeBinding":{const e=null==(i=a.payload)?void 0:i.bindingId;if(!e)return;V(e),b.delete(e);break}case"replaceDocument":q(),b.clear(),S.clear(),K();break;case"removeInstance":!function(){const e=new Set(A().map(e=>e.id));for(const t of[...x.keys()])e.has(t)||(V(t),b.delete(t));for(const e of A())_(e)}()}});Y&&C.push(Y);const U=null==(i=r.onDocumentChange)?void 0:i.call(r,()=>{if(u)return;if("off"===d)return;const e=A(),t=new Set(e.map(e=>e.id)),n=new Set(x.keys());for(const e of n)t.has(e)||V(e);for(const t of e)x.has(t.id)?$(t,M.get(t.id))&&(V(t.id),_(t)):_(t)});function W(){return new Set(t.listInstances({canvasId:a}).map(e=>e.instanceId))}U&&C.push(U),z=W();const J=e.watch(t.registryVersion,()=>{if(u)return;if("off"===d)return;const e=W(),t=Je(e,z),n=Je(z,e);z=e;for(const t of[...S]){const n=F(t);n?Q(n,e)&&(S.delete(t),_(n)):S.delete(t)}if(n.size>0)for(const e of[...x.keys()]){const t=F(e);t&&G(t).some(e=>D(e)&&n.has(e.instanceId))&&(V(e),S.add(e),b.delete(e))}!function(e){if(0!==e.size)for(const t of A())"lifecycle"===t.source.kind&&"mounted"===t.source.hook&&D({canvasId:t.source.canvasId,instanceId:t.source.instanceId})&&e.has(t.source.instanceId)&&X(t,{instanceId:t.source.instanceId,hook:"mounted"})}(t),function(e){if(0!==e.size)for(const t of A())"lifecycle"===t.source.kind&&"unmounted"===t.source.hook&&D({canvasId:t.source.canvasId,instanceId:t.source.instanceId})&&e.has(t.source.instanceId)&&X(t,{instanceId:t.source.instanceId,hook:"unmounted"})}(n)},{flush:"post"});function Q(e,t){for(const n of G(e)){if(!D(n))return!1;if(!t.has(n.instanceId))return!1}return!0}return T.push(J),{setMode:function(e){u||e!==d&&(q(!0),b.clear(),S.clear(),d=e,"off"!==e&&K(),"runtime"===e&&function(){for(const e of A())"page"===e.source.kind&&"pageInit"===e.source.hook&&X(e,{hook:"pageInit"})}())},getMode:()=>d,testBinding(e,n){const o=[],i=F(e);if(!i)return o.push({bindingId:e,phase:"skipped",details:{reason:"binding-not-found"}}),o;if(i.disabled)return o.push({bindingId:e,phase:"skipped",details:{reason:"disabled"}}),o;if(P(i))return o.push({bindingId:e,phase:"skipped",details:{reason:"unsupported-cross-canvas"}}),o;let r;try{r=Ve(i.mapping,n),o.push({bindingId:e,phase:"mapping",details:{payload:n,args:r}})}catch(t){return o.push({bindingId:e,phase:"error",details:{stage:"mapping",message:t instanceof Error?t.message:String(t)}}),o}const c=t.getInstance(i.target.instanceId,a);if(!c)return o.push({bindingId:e,phase:"skipped",details:{reason:"target-not-mounted"}}),o;if("instanceDataInput"===i.target.kind){const t=c.vm.custom,n=null==t?void 0:t[i.target.key];if(!n||"object"!=typeof n||!0!==n.dataInput)return o.push({bindingId:e,phase:"skipped",details:{reason:"unknown-target-data-input",key:i.target.key}}),o}return o.push({bindingId:e,phase:"calling-target",details:{target:i.target,dryRun:!0}}),o.push({bindingId:e,phase:"done",details:{args:r}}),o},on:(e,t)=>L.on(e,t),startTracing(e){E.start(e)},stopTracing:()=>E.stop(),getTraceBuffer:()=>E.snapshot(),dispose:function(){if(!u){"runtime"===d&&function(){for(const e of A())"page"===e.source.kind&&"pageBeforeUnmount"===e.source.hook&&X(e,{hook:"pageBeforeUnmount"})}(),u=!0,q();for(const e of C)O(e);for(const e of T)O(e);C.length=0,T.length=0,b.clear(),S.clear(),k.clear(),B.clear(),M.clear(),z.clear(),w.clear(),E.stop(),L.clear(),I(),d="off"}}}}function Je(e,t){const n=new Set;for(const o of e)t.has(o)||n.add(o);return n}const Qe=["display","gridTemplateColumns","gridTemplateRows","gridAutoFlow","flexDirection","flexWrap","gap","rowGap","columnGap","justifyContent","alignItems","position"];let Ze=!1;function et(e,n){const o="string"==typeof(null==e?void 0:e.js)?e.js:"",i="string"==typeof(null==e?void 0:e.html)?e.html:"",a=t.parseComponentSource(o,i);return!a.ok&&(null==n?void 0:n.fallback)?n.fallback:{propsDecl:a.propsDecl.map(nt),emitsDecl:a.emitsDecl.map(it),methodsDecl:a.methodsDecl.map(ot),slotsDecl:a.slotsDecl.map(at),modelDecl:a.modelDecl.map(rt),dataInputsDecl:a.dataInputsDecl.map(ct),dataOutputsDecl:a.dataOutputsDecl.map(ct)}}function tt(e){if("string"===e||"number"===e||"boolean"===e||"object"===e||"array"===e||"any"===e)return e}function nt(e){const t=e.key,n="string"==typeof e.name?e.name:void 0;return{key:t,type:tt(e.type)??"string",...void 0!==e.value?{value:e.value}:{},...n&&n!==t?{label:n}:{},...e.enum?{enum:e.enum}:{}}}function ot(e){return{key:e.name,...e.params?{params:e.params}:{}}}function it(e){return{event:e.event}}function at(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 rt(e){const t=tt(e.type);return{key:e.key,...void 0!==e.prop?{prop:e.prop}:{},...void 0!==e.event?{event:e.event}:{},...t?{type:t}:{},...void 0!==e.defaultValue?{defaultValue:e.defaultValue}:{}}}function ct(e){const t=tt(e.type);return{key:e.key,...t?{type:t}:{},...void 0!==e.label?{label:e.label}:{}}}const st=["data-hc-canvas-id"],dt=["data-instance-id","data-hc-hidden"],lt={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"}},ut={style:{opacity:"0.8"}},pt={style:{opacity:"0.6","margin-top":"4px","word-break":"break-all"}},ft={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"}},ht=["data-instance-id","data-hc-placement","data-hc-hidden"],gt={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"}},mt={style:{opacity:"0.6"}},vt=["title"],yt={key:1,class:"hc-page-renderer-empty",style:{padding:"24px",color:"#64748b","font-size":"13px"}},It=e.defineComponent({__name:"HyperCardPageRenderer",props:{payload:{},document:{},componentSourceMap:{},schedulerOptions:{},canvasId:{},adapters:{}},setup(n,{expose:o}){var i,c;const s=n,d=s.canvasId??function(){var e;const t="undefined"!=typeof globalThis&&"crypto"in globalThis?globalThis.crypto:void 0;return`auto-${(null==(e=null==t?void 0:t.randomUUID)?void 0:e.call(t).replace(/-/g,"").slice(0,8))??Math.random().toString(36).slice(2,10)}`}();e.provide(t.HC_CANVAS_ID_KEY,d);const l=U(s.schedulerOptions),u=e.ref(null);let p=!1;e.onMounted(()=>{ee||e.nextTick(()=>{var e;if(p)return;if(!u.value)return;if("fill"!==(null==(e=Q.value)?void 0:e.canvas.height.mode))return;const t=u.value.parentElement;t&&(t.getBoundingClientRect().height>0||(p=!0,console.warn("[hypercard] HyperCardPageRenderer 父容器高度为 0,fill 模式画布不可见。请给父容器设置明确 height 或改用 px 模式。")))})}),e.onBeforeUnmount(()=>{r(d),ne.value&&(ne.value.dispose(),ne.value=null),l.dispose(),oe&&oe.disposeAll(),d!==t.DEFAULT_CANVAS_ID&&t.disposeCanvas(d)});const f=e.ref(new Map),h=e.ref(new Map),g=new Map,I=e.ref(!1);let x=null;function w(){I.value=!1,x&&clearTimeout(x),x=setTimeout(()=>{I.value=!0},300)}function b(e,t){const n=new Map;if(t.querySelectorAll("[data-hc-slot]").forEach(e=>{if(e.closest("[data-instance-id]")!==t)return;const o=e.getAttribute("data-hc-slot")||Te;n.has(o)||n.set(o,e)}),function(e,t){if(!e||e.size!==t.size)return!1;for(const[n,o]of t)if(e.get(n)!==o)return!1;return!0}(h.value.get(e),n))return;const o=new Map(h.value);o.set(e,n),h.value=o,S(e,n)}function S(e,t){var n;const o=t.get(Te);if(!o)return;const i=M.value.get(e),a="active"===(null==(n=q.value.containers.get(e))?void 0:n.status);!function(e,t,n=!1){!function(e){const t=e.style;for(const e of Qe)t[e]=""}(e);const o=null==t?void 0:t.mode;if(!t||"none"===o||void 0===o)return;if("free"===o)return void(e.style.position="relative");if("free-split"===o)return void(n||Ze||(Ze=!0,console.warn("[hypercard] free-split 容器降级平铺(分割树非法 / plan fallback),子实例已平铺显示。")));const i=P(t);i&&Object.assign(e.style,i)}(o,null==i?void 0:i.containerLayout,a)}function k(e,t){const n=f.value.get(e);t&&t!==n?(f.value.set(e,t),l.register(e,t),function(e,t){const n=g.get(e);n&&n.disconnect(),b(e,t);const o=new MutationObserver(()=>b(e,t));o.observe(t,{childList:!0,subtree:!0}),g.set(e,o)}(e,t)):!t&&n&&(l.unregister(e),f.value.delete(e),function(e){const t=g.get(e);if(t&&(t.disconnect(),g.delete(e)),h.value.has(e)){const t=new Map(h.value);t.delete(e),h.value=t}}(e))}e.onMounted(w),e.watch(h,w),e.onBeforeUnmount(()=>{for(const e of g.values())e.disconnect();g.clear(),h.value=new Map,V.clearAll(),x&&clearTimeout(x)});const B=e.computed(()=>{var e;const t=(null==(e=s.payload)?void 0:e.document)??s.document??null;return t?y(v(m(t))):null}),M=e.computed(()=>{const e=new Map,t=B.value;if(!t)return e;for(const n of t.instances)e.has(n.instanceId)||e.set(n.instanceId,n);return e});e.watch(B,()=>{e.nextTick(()=>function(){for(const[e,t]of h.value)S(e,t)}())},{flush:"post"});const z=e.computed(()=>function(e){const t={};for(const n of Object.keys(e)){const o=e[n],i=o.source;o&&"ok"===o.status&&i&&("string"==typeof i.html||"string"==typeof i.js)?t[n]={...o,contract:et({html:i.html??"",js:i.js??"",css:i.css??""},{fallback:o.contract})}:t[n]=o}return t}(s.payload?s.payload.componentVersions:s.componentSourceMap??{})),C=e.computed(()=>{var e;const t=B.value,n=z.value;if(!t)return[];const o=M.value,i=null==(e=Q.value)?void 0:e.rootLayout;return t.instances.map(e=>{var a;const r=n[e.componentVersionKey]??null,c=(null==(a=t.componentOverrides)?void 0:a[e.instanceId])??null,s=c&&c.baseVersionKey===e.componentVersionKey?c:null,d=s?`${s.baseVersionKey}#override:${e.instanceId}`:e.componentVersionKey,l=function(e){var t,n;return void 0===e.parentId?(null==i?void 0:i.mode)??"free":(null==(n=null==(t=o.get(e.parentId))?void 0:t.containerLayout)?void 0:n.mode)??"none"}(e),u=function(e){var t;if(void 0===e.parentId)return"split"===(null==i?void 0:i.mode)?i.direction:void 0;const n=null==(t=o.get(e.parentId))?void 0:t.containerLayout;return"split"===(null==n?void 0:n.mode)?n.direction:void 0}(e);if(s)return{instance:e,asset:r,override:s,renderSource:s.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 T(e){const t=z.value[e];return null==t?void 0:t.contract}const L=e.computed(()=>{const e=B.value;return e?Ee(e,{resolveContract:T}):[]}),D=e.inject(Be,null);e.watch(L,e=>{D&&"function"==typeof D.setLayoutIssues&&D.setLayoutIssues(e)},{immediate:!0});const A=e.computed(()=>{const e=new Set;for(const t of L.value)"missing-parent"!==t.kind&&"invalid-slot"!==t.kind&&"parent-not-layout"!==t.kind&&"orphan-slot"!==t.kind&&"cycle"!==t.kind&&"absolute-child-rejected"!==t.kind||e.add(t.instanceId);return e}),F=e.computed(()=>C.value.filter(e=>void 0===e.instance.parentId)),O=e.computed(()=>C.value.filter(e=>void 0!==e.instance.parentId&&X(e.instance.placement)));function N(e){const t=e.instance,n=t.layoutBox??{x:t.rect.x,y:t.rect.y,width:t.rect.w,height:t.rect.h,widthMode:"px",heightMode:"px",overflow:"hidden"},o=e.parentMode,i=E(n,t.zIndex,t.rotation,o,e.parentSplitDirection),a=R(t.layoutItem,o);return a&&Object.assign(i,a),G(t)&&function(e){e.width="100%",e.height="100%",e.position="relative",delete e.left,delete e.top}(i),i}const j=e.computed(()=>{var e;return P(null==(e=Q.value)?void 0:e.rootLayout)}),V=function(){const t=e.ref(new Map);return{map:t,register:function(e,n,o){const i=t.value.get(e);if(i&&i.get(n)===o)return;const a=new Map(t.value),r=new Map(i??[]);r.set(n,o),a.set(e,r),t.value=a},unregister:function(e,n){const o=t.value.get(e);if(!o||!o.has(n))return;const i=new Map(t.value),a=new Map(o);a.delete(n),0===a.size?i.delete(e):i.set(e,a),t.value=i},get:function(e,n){var o;return null==(o=t.value.get(e))?void 0:o.get(n)},clearContainer:function(e){if(!t.value.has(e))return;const n=new Map(t.value);n.delete(e),t.value=n},clearAll:function(){0!==t.value.size&&(t.value=new Map)}}}(),q=e.computed(()=>function(e){if(!e)return Fe;const t=new Map;for(const n of e.instances){const e=n.containerLayout;if(!e||"free-split"!==e.mode)continue;const o=n.instanceId,i=e,a=Ne(i.root);a.ok?t.set(o,{status:"active",containerId:o,root:i.root,instanceToLeaf:a.instanceToLeaf}):t.set(o,{status:"fallback",containerId:o,reason:a.reason})}return{containers:t}}(B.value)),_=e.computed(()=>{const e=[];for(const t of q.value.containers.values())"active"===t.status&&e.push(t);return e});function K(e){var t;return(null==(t=h.value.get(e))?void 0:t.get(Te))??null}function H(e){const t=e.root;return e.containerId+":"+("leaf"===t.type?t.leafId:t.nodeId)}function Y(e){var t;const n=null==(t=M.value.get(e))?void 0:t.containerLayout;return"free-split"===(null==n?void 0:n.mode)?n.gap??0:0}function G(e){return function(e){const{parentId:t,instanceId:n,effectiveSlot:o,plan:i}=e;if(!t)return null;if(o!==Te)return null;const a=i.containers.get(t);if(!a||"active"!==a.status)return null;const r=a.instanceToLeaf.get(n);return r?{containerId:t,leafId:r}:null}({parentId:e.parentId,instanceId:e.instanceId,effectiveSlot:Le(e),plan:q.value})}function W(e){if(!e.parentId)return null;const t=G(e);if(t)return V.get(t.containerId,t.leafId)??null;const n=h.value.get(e.parentId);return n?n.get(Le(e))??null:null}function J(e){return"实例 "+e.instance.instanceId+':slot "'+Le(e.instance)+'" 不可用'}const Q=e.computed(()=>{var e;return(null==(e=B.value)?void 0:e.layout)??null}),Z=e.computed(()=>{if(!Q.value)return null;if(ee){const e=ee.measuredCanvasSize.value;return{width:`${e.w}px`,height:`${e.h}px`,overflow:Q.value.canvas.overflow??"hidden"}}return{width:$(Q.value.canvas.width),height:$(Q.value.canvas.height),overflow:Q.value.canvas.overflow??"hidden"}}),ee=e.inject(Be,void 0),te=ee?null:we(null==(i=s.adapters)?void 0:i.assets),ne=e.shallowRef(null),oe=ee||!(null==(c=s.adapters)?void 0:c.data)?null:ke(s.adapters.data);if(!ee){const t=We({canvasId:d,source:{getDocument:()=>B.value,onDocumentChange:t=>e.watch(B,t,{flush:"post"})},dataStore:oe??void 0});ne.value=t,e.nextTick(()=>{t.setMode("runtime")})}const ie=ee?{invalidateDataSource(e){ee.dataStore.invalidate(e)},getDataSourceSnapshot:()=>ee.dataStore.getSnapshot(),getCachedBySourceId:(e,t)=>ee.dataStore.getCachedBySourceId(e,t)}:oe?{invalidateDataSource(e){oe.invalidate(e)},getDataSourceSnapshot:()=>oe.getSnapshot(),getCachedBySourceId:(e,t)=>oe.getCachedBySourceId(e,t)}:null,ae={canvasId:d,getSchedulerStats:()=>l.getStats(),listRuntimeInstances:()=>function(){const e=B.value;if(!e)return[];const n=new Map;for(const e of L.value)n.set(e.instanceId,!0);const o=l.state;return e.instances.map(e=>{const i=o[e.instanceId];let a,r;switch(i){case"mounting":case"mounted":case"disposing":a=i;break;default:a="pending"}if(n.has(e.instanceId))r="layout-error";else if(e.componentId){const t=e.source;r=!t||t.template||t.script||t.style?"ok":"missing-source"}else r="missing-componentId";return{instanceId:e.instanceId,componentId:e.componentId,mountState:a,timings:t.getInstanceTimings(d,e.instanceId),protocolStatus:r}})}(),getInstanceTimings:e=>t.getInstanceTimings(d,e),getLayoutIssues:()=>L.value,getPageDocument:()=>B.value};e.onMounted(()=>{a(d,ae)}),o({binding:ne,data:ie});const re=e.ref(null);let ce=0;e.watch(()=>{var e,t;return null==(t=null==(e=Q.value)?void 0:e.background)?void 0:t.image},e=>{ce++;const t=ce;if(!e)return void(re.value=null);const n=(o=e,ee?ee.resolveAsset(o):te.resolve(o));var o;"string"!=typeof n?(re.value=null,n.then(n=>{var o,i;t===ce&&(null==(i=null==(o=Q.value)?void 0:o.background)?void 0:i.image)===e&&(re.value=n||null)},()=>{t===ce&&(re.value=null)})):re.value=n||null},{immediate:!0,deep:!0});const se=e.computed(()=>{var e;const t=null==(e=Q.value)?void 0:e.background;if(!t)return null;const n={position:"absolute",inset:"0",pointerEvents:"none",zIndex:-1};return t.color&&(n.background=t.color),t.image&&re.value&&(n.backgroundImage=`url("${re.value}")`,n.backgroundRepeat="repeat"===t.imageFit?"repeat":"no-repeat",n.backgroundPosition=t.imagePosition??"center","stretch"===t.imageFit?n.backgroundSize="100% 100%":t.imageFit&&"repeat"!==t.imageFit&&"center"!==t.imageFit&&(n.backgroundSize=t.imageFit)),void 0!==t.opacity&&(n.opacity=t.opacity),n});return(n,o)=>Q.value&&Z.value?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"rootEl",ref:u,class:"hc-page-renderer","data-hc-canvas-id":e.unref(d),style:e.normalizeStyle({position:"relative",...Z.value,...j.value??{}})},[se.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"hc-canvas-bg","data-hc-canvas-bg":"",style:e.normalizeStyle(se.value)},null,4)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(F.value,n=>e.withDirectives((e.openBlock(),e.createElementBlock("div",{key:n.instance.instanceId,ref_for:!0,ref:e=>k(n.instance.instanceId,e),"data-instance-id":n.instance.instanceId,"data-hc-hidden":n.instance.hidden?"true":void 0,style:e.normalizeStyle(N(n))},["ok"===n.status&&n.renderSource?e.unref(l).isMounted(n.instance.instanceId)?(e.openBlock(),e.createBlock(e.unref(t.RuntimeBox),{key:1,"canvas-id":e.unref(d),"instance-id":n.instance.instanceId,"component-id":n.instance.componentId,"scope-id":n.scopeId,"html-source":n.renderSource.html,"js-source":n.renderSource.js,"css-source":n.renderSource.css,"custom-values":{...n.instance.props,__containerLayout:n.instance.containerLayout}},null,8,["canvas-id","instance-id","component-id","scope-id","html-source","js-source","css-source","custom-values"])):(e.openBlock(),e.createElementBlock("div",ft)):(e.openBlock(),e.createElementBlock("div",lt,[o[0]||(o[0]=e.createElementVNode("div",{style:{"font-weight":"600","margin-bottom":"4px"}}," ⚠️ 组件不可渲染 ",-1)),e.createElementVNode("div",ut,e.toDisplayString(n.instance.alias??n.instance.instanceId),1),e.createElementVNode("div",pt,e.toDisplayString(n.invalidReason),1)]))],12,dt)),[[e.vShow,!n.instance.hidden]])),128)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(O.value,(n,i)=>{return e.openBlock(),e.createElementBlock(e.Fragment,{key:`child-${n.instance.instanceId}`},[W(n.instance)&&!A.value.has(n.instance.instanceId)?(e.openBlock(),e.createBlock(e.Teleport,{key:0,to:W(n.instance)},[e.withDirectives(e.createElementVNode("div",{ref_for:!0,ref:e=>k(n.instance.instanceId,e),"data-instance-id":n.instance.instanceId,"data-hc-placement":n.instance.placement,"data-hc-hidden":n.instance.hidden?"true":void 0,style:e.normalizeStyle(N(n))},["ok"===n.status&&n.renderSource?(e.openBlock(),e.createBlock(e.unref(t.RuntimeBox),{key:1,"canvas-id":e.unref(d),"instance-id":n.instance.instanceId,"component-id":n.instance.componentId,"scope-id":n.scopeId,"html-source":n.renderSource.html,"js-source":n.renderSource.js,"css-source":n.renderSource.css,"custom-values":{...n.instance.props,__containerLayout:n.instance.containerLayout}},null,8,["canvas-id","instance-id","component-id","scope-id","html-source","js-source","css-source","custom-values"])):(e.openBlock(),e.createElementBlock("div",gt,[o[1]||(o[1]=e.createElementVNode("div",{style:{"font-weight":"600"}},"⚠️ 组件不可渲染",-1)),e.createElementVNode("div",mt,e.toDisplayString(n.invalidReason),1)]))],12,ht),[[e.vShow,!n.instance.hidden]])],8,["to"])):A.value.has(n.instance.instanceId)||I.value?(e.openBlock(),e.createElementBlock("div",{key:1,class:"hc-layout-issue-warning",title:J(n),style:e.normalizeStyle((a=i,{position:"absolute",left:"8px",top:8+28*a+"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"}))}," ⚠ 布局问题:"+e.toDisplayString(n.instance.instanceId)+'(slot "'+e.toDisplayString(e.unref(Le)(n.instance))+'") ',13,vt)):e.createCommentVNode("",!0)],64);var a}),128)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(_.value,t=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:`fs-${t.containerId}`},[K(t.containerId)?(e.openBlock(),e.createBlock(e.Teleport,{key:0,to:K(t.containerId)},[(e.openBlock(),e.createBlock(Ae,{key:H(t),"container-id":t.containerId,node:t.root,register:e.unref(V).register,unregister:e.unref(V).unregister,gap:Y(t.containerId)},null,8,["container-id","node","register","unregister","gap"]))],8,["to"])):e.createCommentVNode("",!0)],64))),128))],12,st)):(e.openBlock(),e.createElementBlock("div",yt," No page to render(payload / document 都未提供) "))}}),xt=new Map,wt=new Set;function bt(){const e=Object.freeze(Array.from(xt.keys()));for(const t of wt)try{t(e)}catch{}}function St(e,t){xt.set(e,t),bt()}function kt(e){xt.delete(e)&&bt()}function Bt(e,t){var n;const o=t.document;switch(e.type){case"addInstance":{const{instance:t}=e.payload;return o.getInstance(t.instanceId)?null:[{type:"removeInstance",payload:{instanceId:t.instanceId}}]}case"removeInstance":{const{instanceId:n}=e.payload;if(!o.getInstance(n))return null;const i=t.cascadeRemove?oe(o.document.instances,n).instanceIds:[n],a=o.document.bindings.filter(e=>i.some(t=>W(e,t))),r=[];for(const e of i){const t=o.getInstance(e);t&&r.push({type:"addInstance",payload:{instance:zt(t)}})}for(const e of a)r.push({type:"addBinding",payload:{binding:c(e)}});return r}case"updateInstance":{const{instanceId:t,patch:n}=e.payload,i=o.getInstance(t);if(!i)return null;const a={},r=i,s=a;for(const e of Object.keys(n)){const t=r[e];s[e]=Mt(t)?c(t):t}return[{type:"updateInstance",payload:{instanceId:t,patch:a}}]}case"moveInstance":{const{instanceId:t,x:n,y:i}=e.payload,a=o.getInstance(t);return a?a.rect.x===n&&a.rect.y===i?null:a.layoutBox?[{type:"updateLayoutBox",payload:{instanceId:t,patch:{...a.layoutBox}}}]:[{type:"moveInstance",payload:{instanceId:t,x:a.rect.x,y:a.rect.y}}]:null}case"resizeInstance":{const{instanceId:t,w:n,h:i}=e.payload,a=o.getInstance(t);return a?a.rect.w===n&&a.rect.h===i?null:a.layoutBox?[{type:"updateLayoutBox",payload:{instanceId:t,patch:{...a.layoutBox}}}]:[{type:"resizeInstance",payload:{instanceId:t,w:a.rect.w,h:a.rect.h}}]:null}case"setInstanceProp":{const{instanceId:t,key:n,value:i}=e.payload,a=o.getInstance(t);return a?a.props[n]===i?null:[{type:"updateInstance",payload:{instanceId:t,patch:{props:{...a.props}}}}]:null}case"addBinding":{const{binding:t}=e.payload;return o.document.bindings.some(e=>e.id===t.id)?null:[{type:"removeBinding",payload:{bindingId:t.id}}]}case"removeBinding":{const{bindingId:t}=e.payload,n=o.document.bindings.find(e=>e.id===t);return n?[{type:"addBinding",payload:{binding:c(n)}}]:null}case"updateBinding":{const{bindingId:t,patch:n}=e.payload,i=o.document.bindings.find(e=>e.id===t);if(!i)return null;const a={},r=i,s=a;for(const e of Object.keys(n)){const t=r[e];s[e]=Mt(t)?c(t):t}return[{type:"updateBinding",payload:{bindingId:t,patch:a}}]}case"updateLayout":{const{patch:t}=e.payload,n=o.document.layout,i={},a=i;let r=!1;for(const e of Object.keys(t)){const o=n[e];a[e]=Mt(o)?c(o):o,Object.is(t[e],o)||(r=!0)}return r?[{type:"updateLayout",payload:{patch:i}}]:null}case"setRootLayout":{const{rootLayout:t}=e.payload,n=o.document.layout.rootLayout;return void 0===n&&null===t?null:[{type:"setRootLayout",payload:{rootLayout:void 0!==n?c(n):null}}]}case"setComponentOverride":{const{instanceId:t,override:i}=e.payload;if(void 0===o.getInstance(t))return null;const a=null==(n=o.document.componentOverrides)?void 0:n[t],r=void 0!==a;return r||null!==i?[{type:"setComponentOverride",payload:{instanceId:t,override:r?c(a):null}}]:null}case"replaceDocument":return[{type:"replaceDocument",payload:{document:c(o.document)}}];case"setInstanceLocked":{const{instanceId:t,locked:n}=e.payload,i=o.getInstance(t);if(!i)return null;const a=i.locked??!1,r=i.lockPosition,c=i.lockSize;return a===n&&r===(!!n||void 0)&&c===(!!n||void 0)?null:[{type:"updateInstance",payload:{instanceId:t,patch:{locked:a,lockPosition:r,lockSize:c}}}]}case"duplicateInstance":{const{instanceId:t,newInstanceId:n}=e.payload;return o.getInstance(t)?o.getInstance(n)?null:[{type:"removeInstance",payload:{instanceId:n}}]:null}case"setInstanceSize":{const{instanceId:t,size:n}=e.payload,i=o.getInstance(t);if(!i)return null;const a=i.size,r="size"in i&&void 0!==a;return r||null!==n?[{type:"setInstanceSize",payload:{instanceId:t,size:(r?c(a):null)??null}}]:null}case"setContainerLayout":{const{instanceId:t,containerLayout:n}=e.payload,i=o.getInstance(t);if(!i)return null;const a=i.containerLayout,r="containerLayout"in i&&void 0!==a;return r||null!==n?[{type:"setContainerLayout",payload:{instanceId:t,containerLayout:(r?c(a):null)??null}}]:null}case"updateLayoutBox":{const{instanceId:t,patch:n}=e.payload,i=o.getInstance(t);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 c=!1;const s=["x","y","width","height"];for(const e of s){const t=n[e];"number"==typeof t&&Number.isFinite(t)&&(r[e]=a[e],c=!0)}return"px"!==n.widthMode&&"percent"!==n.widthMode&&"fill"!==n.widthMode&&"auto"!==n.widthMode||(r.widthMode=a.widthMode,c=!0),"px"!==n.heightMode&&"percent"!==n.heightMode&&"fill"!==n.heightMode&&"auto"!==n.heightMode||(r.heightMode=a.heightMode,c=!0),"hidden"!==n.overflow&&"visible"!==n.overflow&&"auto"!==n.overflow||(r.overflow=a.overflow,c=!0),c?[{type:"updateLayoutBox",payload:{instanceId:t,patch:r}}]:null}case"updateLayoutItem":{const{instanceId:t,patch:n}=e.payload,i=o.getInstance(t);if(!i)return null;const a=i.layoutItem,r="layoutItem"in i&&void 0!==a,s=null===n;if(!r&&s)return null;if(!s){const e=["order","grow","shrink","row","column","rowSpan","columnSpan","ratio"];let t=!1;for(const o of e){const e=n[o];if("number"==typeof e&&Number.isFinite(e)){t=!0;break}}if(!t)return null}return[{type:"updateLayoutItem",payload:{instanceId:t,patch:(r?c(a):null)??null}}]}case"updateRotation":{const{instanceId:t,value:n}=e.payload,i=o.getInstance(t);if(!i)return null;if(!Number.isFinite(n))return null;const a=i.rotation,r="number"==typeof a&&Number.isFinite(a)?a:0;return r===n?null:[{type:"updateRotation",payload:{instanceId:t,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 t=e;return console.warn("[hc-canvas/computeInverse] unknown action",t),null}}}function Mt(e){return null!==e&&"object"==typeof e&&!Array.isArray(e)}function zt(e){return c(e)}function Ct(t,n={}){const o=n.maxSize??100,i=e.ref([]),a=e.ref([]),r=function(e){return xe.get(e)}(t);let c={redo:[],undo:[]},s=null;function d(e){var t;0===c.redo.length&&0===c.undo.length||(t={type:e,redo:c.redo,undo:c.undo,timestamp:Date.now()},i.value.push(t),i.value.length>o&&i.value.shift(),a.value.length>0&&(a.value=[]),c={redo:[],undo:[]},s=null)}const l={onBeforeAction(e){if(t.isRecordingSuppressed.value)return;if(me(e)){const t=(null==r?void 0:r.computeInverse(e))??null;if(!t)return;return c.redo.push(e),c.undo.unshift(t),void(s=e.type)}const n=Bt(e,t);if(null!==n){c.redo.push(e);for(let e=n.length-1;e>=0;e--)c.undo.unshift(n[e]);s=e.type}},onAfterAction(e){t.isRecordingSuppressed.value||t.isBatching.value||d(s??"action")},onAfterBatch(e){t.isRecordingSuppressed.value||d(e??"batch")}},u=t.registerHooks(l);function p(){i.value=[],a.value=[],c={redo:[],undo:[]},s=null}return{undo:function(){if(0===i.value.length)return;const e=i.value.pop();t.suppressRecording(()=>{t.beginBatch();for(const n of e.undo)t.dispatch(n);t.endBatch("undo")}),a.value.push(e)},redo:function(){if(0===a.value.length)return;const e=a.value.pop();t.suppressRecording(()=>{t.beginBatch();for(const n of e.redo)t.dispatch(n);t.endBatch("redo")}),i.value.push(e)},clear:p,canUndo:e.computed(()=>i.value.length>0),canRedo:e.computed(()=>a.value.length>0),undoStackSize:e.computed(()=>i.value.length),redoStackSize:e.computed(()=>a.value.length),dispose:function(){u(),p()}}}class Tt extends Error{constructor(e="CanvasHandle has been disposed"){super(e),this.name="HandleDisposedError"}}function Lt(e,t,n){let o=null;for(const i of e)for(const e of t){const t=e.pos-i,a=Math.abs(t);a<=n&&(!o||a<Math.abs(o.delta))&&(o={delta:t,candidate:e,targetPos:i})}return o}function Et(e){var t,n,o,i;const a=e.threshold??5,r=function(e){if(0===e.length)return null;let t=1/0,n=-1/0,o=1/0,i=-1/0;for(const a of e)a.x<t&&(t=a.x),a.x+a.w>n&&(n=a.x+a.w),a.y<o&&(o=a.y),a.y+a.h>i&&(i=a.y+a.h);return{left:t,right:n,top:o,bottom:i,centerX:(t+n)/2,centerY:(o+i)/2,width:n-t,height:i-o}}(e.draggedRects);if(!r)return{dx:0,dy:0,lines:[]};const c=function(e,t,n){const o=[];for(const t of e)o.push({pos:t.x,kind:"edge-left",source:t}),o.push({pos:t.x+t.w,kind:"edge-right",source:t}),o.push({pos:t.x+t.w/2,kind:"center-x",source:t});if(o.push({pos:0,kind:"canvas-edge"}),o.push({pos:t.w,kind:"canvas-edge"}),o.push({pos:t.w/2,kind:"canvas-edge"}),n)for(const e of n)o.push({pos:e,kind:"guide"});return o}(e.otherRects,e.canvasSize,null==(t=e.manualGuides)?void 0:t.x),s=function(e,t,n){const o=[];for(const t of e)o.push({pos:t.y,kind:"edge-top",source:t}),o.push({pos:t.y+t.h,kind:"edge-bottom",source:t}),o.push({pos:t.y+t.h/2,kind:"center-y",source:t});if(o.push({pos:0,kind:"canvas-edge"}),o.push({pos:t.h,kind:"canvas-edge"}),o.push({pos:t.h/2,kind:"canvas-edge"}),n)for(const e of n)o.push({pos:e,kind:"guide"});return o}(e.otherRects,e.canvasSize,null==(n=e.manualGuides)?void 0:n.y),d=[r.left,r.right,r.centerX],l=[r.top,r.bottom,r.centerY],u=Lt(d,c,a),p=Lt(l,s,a),f=(null==u?void 0:u.delta)??0,h=(null==p?void 0:p.delta)??0,g=[];if(u){const t=(null==(o=u.candidate.source)?void 0:o.y)??0,n=u.candidate.source?u.candidate.source.y+u.candidate.source.h:e.canvasSize.h,i=Math.min(r.top+h,t),a=Math.max(r.bottom+h,n);g.push({axis:"x",pos:u.candidate.pos,from:i,to:a,kind:u.candidate.kind})}if(p){const t=(null==(i=p.candidate.source)?void 0:i.x)??0,n=p.candidate.source?p.candidate.source.x+p.candidate.source.w:e.canvasSize.w,o=Math.min(r.left+f,t),a=Math.max(r.right+f,n);g.push({axis:"y",pos:p.candidate.pos,from:o,to:a,kind:p.candidate.kind})}return{dx:f,dy:h,lines:g}}function Dt(e,t,n){const o=new Map,i=new Map;for(let e=0;e<t.length;e++)o.has(t[e].instanceId)||o.set(t[e].instanceId,t[e]),i.set(t[e].instanceId,e);const a=new Map;function r(e){const t=a.get(e);if(t)return t;const n=[];let i=e;const r=new Set;for(;i&&!r.has(i);){r.add(i),n.push(i);const e=o.get(i);if(!(null==e?void 0:e.parentId))break;i=e.parentId}const c=n.reverse();return a.set(e,c),c}function c(e,t){const n=r(e),a=r(t);let c=0;for(;c<n.length&&c<a.length&&n[c]===a[c];)c++;if(c===n.length&&c===a.length)return 0;if(c===n.length)return-1;if(c===a.length)return 1;const s=n[c],d=a[c],l=o.get(s),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(s)??-1)-(i.get(d)??-1)}let s=null,d=-1;for(let o=0;o<t.length;o++){const i=t[o];if(i.hidden)continue;const a=(null==n?void 0:n(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===s){s=i.instanceId,d=o;continue}const r=c(i.instanceId,s);let l;l=r>0||!(r<0)&&o>d,l&&(s=i.instanceId,d=o)}return s}function Pt(e,t){return{x:Math.min(e.x,t.x),y:Math.min(e.y,t.y),w:Math.abs(e.x-t.x),h:Math.abs(e.y-t.y)}}function Rt(e,t,n){const o=[];for(const i of t){if(i.hidden)continue;const t=(null==n?void 0:n(i.instanceId))??i.rect;t.x>=e.x&&t.y>=e.y&&t.x+t.w<=e.x+e.w&&t.y+t.h<=e.y+e.h&&o.push(i.instanceId)}return o}function $t(e,t){if(!e||"function"!=typeof e.querySelector)return null;const n=e.querySelector(t);if(n)return n;if(e instanceof Element&&"function"==typeof e.closest){const n=e.closest("[data-hc-canvas-designer]");if(n&&n!==e){const e=n.querySelector(t);if(e)return e}}return null}function At(e,t,n){var o;const i=n??("undefined"!=typeof document&&"function"==typeof document.querySelector?document:null);if(!i)return null;const a=t??"default",r=""===a?"default":a,c="undefined"!=typeof globalThis&&(null==(o=globalThis.CSS)?void 0:o.escape)?globalThis.CSS.escape:e=>e.replace(/["\\]/g,e=>`\\${e}`),s=$t(i,`[data-instance-id="${c(e)}"] [data-hc-slot="${c(r)}"]`);return s&&s instanceof HTMLElement?s.getBoundingClientRect():null}function Ft(e,t,n){var o;const i=t??("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=n?$t(i,a):i.querySelector(a);return r&&r instanceof HTMLElement?r.getBoundingClientRect():null}function Ot(e,t){return H(e.document.document.layout,e.document.document.instances,t)}function Nt(e){return"free"===e||"none"===e||void 0===e}const jt=new Set(["e","w","ne","nw","se","sw"]),Vt=new Set(["n","s","ne","nw","se","sw"]);function qt(e,t,n,o){if(Nt(e))return!0;const i=jt.has(t),a=Vt.has(t);return!(i&&"fill"===n||a&&"fill"===o)}function _t(e,t,n){if(!t)return null;const o=Ft(e,t,!0);if(!o)return null;const i=t.getBoundingClientRect(),a=n.toCanvasPoint({x:o.left-i.left,y:o.top-i.top}),r=n.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 Kt(e,t,n){const o=Math.max(8,t);if(!e)return{mode:"px",value:o};switch(e.mode){case"px":return{...e,mode:"px",value:o};case"percent":{if(!n||n<=0)return{...e,mode:"px",value:o};const t=o/n*100,i=Math.max(0,Math.min(1e3,t));return{...e,mode:"percent",value:i}}case"fill":case"hug":case"auto":return{mode:"px",value:o,min:e.min,max:e.max}}}function Xt(e,t,n){const o=Math.max(8,t);switch(e){case"px":case"fill":case"auto":default:return{mode:"px",value:o};case"percent":{if(!n||n<=0)return{mode:"px",value:o};const e=o/n*100;return{mode:"percent",value:Math.max(0,Math.min(1e3,e))}}}}function Ht(e,t){return e===t||!(!e||!t)&&e.mode===t.mode&&e.value===t.value&&e.min===t.min&&e.max===t.max}function Yt(e){return e.shift||e.ctrl||e.meta}function Ut(e,t,n){const o=t.getBoundingClientRect(),i={x:e.x-o.left,y:e.y-o.top};return n.toCanvasPoint(i)}function Gt(e,t){const n=new Set(t.map(e=>e.instanceId));return e.filter(e=>n.has(e))}function Wt(t,n={}){const o=e.reactive({active:!1,start:null,end:null,additive:!1,priorSelection:[]}),i=e.reactive({status:"idle",startPt:null,startRects:new Map,deferredClickSelect:null}),a=e.reactive({status:"idle",handle:null,startPt:null,startRect:null,instanceId:null,placement:null,parentLayoutMode:void 0,startSize:null,startLayoutBox:null,startOutletCanvasSize:null}),r=e.ref([]),s=e.ref(null);let d=0;const l=e.ref(null);let u=0;const p=e.computed(()=>o.active&&o.start&&o.end?Pt(o.start,o.end):null),f=e.computed(()=>"active"===i.status),h=e.computed(()=>"active"===a.status);function g(){o.active=!1,o.start=null,o.end=null,o.additive=!1,o.priorSelection=[]}function m(){i.status="idle",i.startPt=null,i.startRects=new Map,i.deferredClickSelect=null,r.value=[]}function v(){a.status="idle",a.handle=null,a.startPt=null,a.startRect=null,a.instanceId=null,a.placement=null,a.startSize=null,a.startOutletCanvasSize=null,a.parentLayoutMode=void 0,a.startLayoutBox=null}return{marquee:o,marqueeRect:p,drag:i,isDragging:f,resize:a,isResizing:h,snapLines:r,cannotDragSlotChildEvent:s,cannotDragLayoutManagedChildEvent:l,handlePointerDown(e,a){var r;const c=t.effectiveBehavior.value;if(!c.selectable)return{startTracking:!1};const p=t.toolMode.value;if("hand"===p)return{startTracking:!1};const f=Yt(a),h="marquee"===p?null:Dt(e,t.document.document.instances,n.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&&c.draggable&&"inspect"!==p?i.deferredClickSelect=h:t.dispatch({type:"select",payload:{instanceId:h}});const m="slot"===(null==n?void 0:n.placement)||"container"===(null==n?void 0:n.placement),v=Ot(t,h),y="inspect"===p;if(o||!c.draggable||y||(null==n?void 0:n.hidden))return{startTracking:!1};if(!Nt(v)){if(!f){u++;const e={instanceId:h,parentId:null==n?void 0:n.parentId,parentLayoutMode:v,token:u};l.value=e,null==(r=t.setCannotDragLayoutManagedChildEvent)||r.call(t,e),m&&(d++,s.value={instanceId:h,parentId:null==n?void 0:n.parentId,token:d})}return{startTracking:!1}}return i.status="pending",i.startPt={...e},i.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"}),o.active=!0,o.start={...e},o.end={...e},o.additive=f,o.priorSelection=f?[...t.selection.selectedIds.value]:[],{startTracking:!0}},handlePointerMove(e){var c,s,d,l;if("active"===a.status&&a.startPt&&a.startRect&&a.instanceId){const n=e.x-a.startPt.x,o=e.y-a.startPt.y,i=a.startRect,r=a.handle,c=t.document.getInstance(a.instanceId);if(!c)return;const s=a.parentLayoutMode,u=void 0!==s&&!Nt(s);let p=i.x,f=i.y,h=i.w,g=i.h;const m="w"===r||"nw"===r||"sw"===r,v="e"===r||"ne"===r||"se"===r,y="n"===r||"ne"===r||"nw"===r,I="s"===r||"se"===r||"sw"===r;v?h=i.w+n:m&&(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&&m&&(p=i.x+i.w-8),h=8),g<8&&(!u&&y&&(f=i.y+i.h-8),g=8);const x=a.startLayoutBox,w=a.startOutletCanvasSize,b=v||m,S=I||y,k=!u&&m,B=!u&&y,M=b?Xt(x.widthMode,h,w?w.w:null):null,z=S?Xt(x.heightMode,g,w?w.h:null):null,C="canvas"===a.placement||"absolute"===a.placement,T=!(M&&"px"!==M.mode||z&&"px"!==z.mode||b&&"px"!==x.widthMode||S&&"px"!==x.heightMode);if(C&&T){const e={x:c.rect.x,y:c.rect.y,w:c.rect.w,h:c.rect.h};(k&&e.x!==p||B&&e.y!==f)&&t.dispatch({type:"moveInstance",payload:{instanceId:a.instanceId,x:k?p:e.x,y:B?f:e.y}}),(b&&e.w!==h||S&&e.h!==g)&&t.dispatch({type:"resizeInstance",payload:{instanceId:a.instanceId,w:b?h:e.w,h:S?g:e.h}})}else{const e={};M&&(e.widthMode=M.mode,e.width=M.value),z&&(e.heightMode=z.mode,e.height=z.value),k&&(e.x=p),B&&(e.y=f);const n=c.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:a.instanceId,patch:e}})}if(("container"===a.placement||"slot"===a.placement)&&(null!==a.startSize||T)){const e=a.startSize,n={};b?n.width=Kt(null==e?void 0:e.width,h,w?w.w:null):(null==e?void 0:e.width)&&(n.width={...e.width}),S?n.height=Kt(null==e?void 0:e.height,g,w?w.h:null):(null==e?void 0:e.height)&&(n.height={...e.height}),(d=c.size)===(l=n)||d&&l&&Ht(d.width,l.width)&&Ht(d.height,l.height)||t.dispatch({type:"setInstanceSize",payload:{instanceId:a.instanceId,size:n}})}return}if("pending"===i.status&&i.startPt){const n=e.x-i.startPt.x,o=e.y-i.startPt.y;n*n+o*o>=9&&(i.status="active",t.beginBatch())}if("active"===i.status&&i.startPt){const o=e.x-i.startPt.x,a=e.y-i.startPt.y,d=(null==(c=n.getRoot)?void 0:c.call(n))??null,l=d instanceof HTMLElement?d:null,u=t.document.document.instances,p=null!==l&&u.length<=50,f=(e,n)=>p?_t(e,l,t.viewport)??n:n,h=[];for(const[e,n]of i.startRects){const i=t.document.getInstance(e);if(!i)continue;const r=f(e,i.rect);h.push({x:n.x+o,y:n.y+a,w:r.w,h:r.h})}const g=[],m=new Set(i.startRects.keys());for(const e of u)m.has(e.instanceId)||g.push(f(e.instanceId,e.rect));const v=t.document.document.layout,y=!1!==t.effectiveBehavior.value.snap,I=(null==(s=v.guides)?void 0:s.items)??[],x=[],w=[];for(const e of I)"x"===e.axis?x.push(e.position):w.push(e.position);const b=y?Et({draggedRects:h,otherRects:g,canvasSize:{w:t.measuredCanvasSize.value.w,h:t.measuredCanvasSize.value.h},manualGuides:x.length||w.length?{x:x,y:w}:void 0}):{dx:0,dy:0,lines:[]};r.value=b.lines;const S=o+b.dx,k=a+b.dy;for(const[e,n]of i.startRects)t.document.getInstance(e)&&t.dispatch({type:"moveInstance",payload:{instanceId:e,x:n.x+S,y:n.y+k}});return}o.active&&(o.end={...e})},handlePointerUp(){if("active"===a.status){const e="slot"===a.placement||"container"===a.placement?"resize-slot-child":"resize";return t.endBatch(e),void v()}if("active"===i.status)return t.endBatch("drag"),void m();if("pending"===i.status)return i.deferredClickSelect&&t.dispatch({type:"select",payload:{instanceId:i.deferredClickSelect}}),void m();if(!o.active)return;const e=p.value,r=t.document.document.instances;if(e&&(e.w>0||e.h>0)){const i=Gt(Rt(e,r,n.getDomBox),r);if(o.additive){const e=Gt(o.priorSelection,r),n=Array.from(new Set([...e,...i]));t.dispatch({type:"selectAll",payload:{instanceIds:n}})}else i.length>0&&t.dispatch({type:"selectAll",payload:{instanceIds:i}})}g()},cancelMarquee(){g()},cancelDrag(){"active"===i.status&&t.endBatch("drag-cancel"),m()},handleResizeStart(e,o,i){var r,s,d,l,u,p;const f=t.document.getInstance(e);if(!f)return{startTracking:!1};if(!0===(f.lockSize??f.locked))return{startTracking:!1};if(f.hidden)return{startTracking:!1};if(!t.effectiveBehavior.value.resizable)return{startTracking:!1};const h="slot"===f.placement||"container"===f.placement,g=Ot(t,e);if(!qt(g,o,null==(r=f.layoutBox)?void 0:r.widthMode,null==(s=f.layoutBox)?void 0:s.heightMode))return{startTracking:!1};a.status="active",a.handle=o,a.startPt={...i};const m=_t(e,(null==(d=n.getRoot)?void 0:d.call(n))??null,t.viewport);a.startRect=m??{...f.rect},a.instanceId=e,a.placement=h?"container":"canvas",a.parentLayoutMode=g,a.startLayoutBox=f.layoutBox?c(f.layoutBox):{x:f.rect.x,y:f.rect.y,width:f.rect.w,height:f.rect.h,widthMode:"px",heightMode:"px",overflow:"hidden"},a.startSize=h&&f.size?c(f.size):null;const v=f.parentId,y=f.slot,I=(null==(l=n.getRoot)?void 0:l.call(n))??null;let x=v?At(v,y,I):null;if(v&&(!x||0===x.width&&0===x.height)){const t=$t(I,`[data-instance-id="${e.replace(/["\\]/g,e=>`\\${e}`)}"]`),n=t instanceof HTMLElement?t.parentElement:null;if(n){const e=n.getBoundingClientRect();(e.width>0||e.height>0)&&(x=e)}}if(x){const e=t.viewport.scale.value||1;a.startOutletCanvasSize={w:x.width/e,h:x.height/e}}else if(void 0===v)a.startOutletCanvasSize={w:t.measuredCanvasSize.value.w,h:t.measuredCanvasSize.value.h};else{const t=a.startLayoutBox.widthMode,n=a.startLayoutBox.heightMode,o="percent"===t||"percent"===n;o&&console.debug("[hc-canvas/interaction] resize: 父 outlet 找不到,percent 模式将退化到 px。",{instanceId:e,parentId:v,slot:y});const i=a.startSize,r="percent"===(null==(u=null==i?void 0:i.width)?void 0:u.mode)||"percent"===(null==(p=null==i?void 0:i.height)?void 0:p.mode);!o&&r&&console.debug("[hc-canvas/interaction] slot child resize: 父 outlet 找不到,percent 模式将退化到 px。",{instanceId:e,parentId:v,slot:y}),a.startOutletCanvasSize=null}return t.beginBatch(),{startTracking:!0}},cancelResize(){if("active"===a.status){const e="slot"===a.placement||"container"===a.placement?"resize-slot-child-cancel":"resize-cancel";t.endBatch(e)}v()}}}function Jt(e){var t;return"undefined"!=typeof globalThis&&(null==(t=globalThis.CSS)?void 0:t.escape)?globalThis.CSS.escape(e):e.replace(/["\\]/g,e=>`\\${e}`)}function Qt(e,t,n){const o=null==n?void 0:n.skip;let i=null;for(const n of e){if(!(n instanceof HTMLElement))continue;if(o&&o(n))continue;const e=n.getBoundingClientRect();if(0===e.width&&0===e.height)continue;if(t.x<e.left||t.x>e.right)continue;if(t.y<e.top||t.y>e.bottom)continue;let a=0,r=n;for(;r;)a++,r=r.parentElement;(!i||a>i.depth)&&(i={el:n,depth:a})}return i?i.el:null}function Zt(e,t){return{ok:!1,reason:e,message:t}}function en(e,t,n,o={}){const i=new Map;for(const t of e)i.set(t.instanceId,t);const a=i.get(t);if(!a)return Zt("instance-not-exists",`实例 "${t}" 不存在,无法 reparent`);const r=null===n.parentId||void 0===n.parentId?void 0:n.parentId;if(r===t)return Zt("self-parent",`parentId 不能等于自身 "${t}"`);if(void 0!==r){const e=i.get(r);if(!e)return Zt("parent-not-exists",`目标 parentId "${r}" 不存在`);const n=new Set;let o=e.parentId;for(;void 0!==o&&!n.has(o);){if(n.add(o),o===t)return Zt("cycle",`目标 parent "${r}" 是 "${t}" 的后代,会循环`);const e=i.get(o);o=null==e?void 0:e.parentId}}if(void 0===r)return{ok:!0};const c=o.resolveContract;if(!c)return{ok:!0};const s=i.get(r),d=c(s.componentVersionKey);if(!d)return{ok:!0};const l=d.slotsDecl??[];if(0===l.length)return Zt("parent-not-layout",`父组件 "${s.componentId}" 不是布局组件(slotsDecl 空)`);const u=void 0===n.slot||""===n.slot||"default"===n.slot?Te:n.slot,p=(f=u,l.find(e=>e.name===f));var f;if(!p)return Zt("slot-not-exists",`slot "${u}" 不在父 "${s.componentId}" 的 slotsDecl`);if(p.accepts&&p.accepts.length>0&&!p.accepts.includes(a.componentId))return Zt("accepts-violation",`slot "${u}" 不允许 componentId "${a.componentId}"(accepts: ${p.accepts.join(", ")})`);if(!0!==p.multiple){const n=e.filter(e=>e.instanceId!==t&&e.parentId===r&&Le(e)===u);if(n.length>0)return Zt("slot-multiple-violated",`slot "${u}" 不允许多个子实例(已有 "${n[0].instanceId}")`)}if("number"==typeof p.maxChildren&&Number.isFinite(p.maxChildren)&&p.maxChildren>=1){const n=e.filter(e=>e.instanceId!==t&&e.parentId===r&&Le(e)===u);if(n.length+1>p.maxChildren)return Zt("max-children-exceeded",`slot "${u}" 最多接受 ${p.maxChildren} 个子(已有 ${n.length} 个)`)}return{ok:!0}}function tn(e){const t=new Set(e.map(e=>e.instanceId)),n=new Map;for(const t of e)n.set(t.instanceId,on(t));const o=[],i=new Map;e.forEach((e,a)=>{const r={inst:e,node:n.get(e.instanceId),originalIndex:a},c=e.parentId;if(c){if(!t.has(c))return console.warn(`[hc-canvas/instance-tree] instance "${e.instanceId}" parentId="${c}" 不存在,降级当顶层`),void o.push(r);i.has(c)||i.set(c,[]),i.get(c).push(r)}else o.push(r)});for(const[e,t]of i){const o=n.get(e);o&&(o.children=nn(t).map(e=>e.node))}return o.slice().sort((e,t)=>{const n=(t.inst.zIndex??0)-(e.inst.zIndex??0);return 0!==n?n:e.originalIndex-t.originalIndex}).map(e=>e.node)}function nn(e){const t=new Map;for(const n of e){const e=n.inst.slot??"default";let o=t.get(e);o||(o={firstIndex:n.originalIndex,entries:[]},t.set(e,o)),o.entries.push(n)}return Array.from(t.values()).sort((e,t)=>e.firstIndex-t.firstIndex).flatMap(e=>e.entries.slice().sort((e,t)=>e.originalIndex-t.originalIndex))}function on(e){const t={instanceId:e.instanceId,componentId:e.componentId,componentVersionKey:e.componentVersionKey,kind:"visual",label:e.alias??e.instanceId};return void 0!==e.locked&&(t.locked=e.locked),void 0!==e.lockPosition&&(t.lockPosition=e.lockPosition),void 0!==e.lockSize&&(t.lockSize=e.lockSize),void 0!==e.hidden&&(t.hidden=e.hidden),t}function an(e,t){for(const n of e){if(n.instanceId===t)return[n];if(n.children&&n.children.length>0){const e=an(n.children,t);if(e.length>0)return[n,...e]}}return[]}function rn(e,t){const n=new Map;for(const t of e)n.set(t.instanceId,t);const o=n.get(t);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 "${t}" exceeds depth ${r},疑似环,截断`);break}const e=n.get(a.parentId);if(!e)break;i.unshift(e),a=e}return i}function cn(e,t,n){const o=t||void 0;return e.filter(e=>(e.parentId||void 0)===o&&e.slot===n).map((e,t)=>({inst:e,originalIndex:t})).sort((e,t)=>{const n=(t.inst.zIndex??0)-(e.inst.zIndex??0);return 0!==n?n:e.originalIndex-t.originalIndex}).map(e=>e.inst)}function sn(e){if(0===e.length)return null;let t=1/0,n=1/0,o=-1/0,i=-1/0;for(const a of e)a.x<t&&(t=a.x),a.y<n&&(n=a.y),a.x+a.w>o&&(o=a.x+a.w),a.y+a.h>i&&(i=a.y+a.h);return{x:t,y:n,w:o-t,h:i-n}}function dn(e){return sn(e.map(e=>e.rect))}function ln(e,t){if(0===t.length)return null;const n=new Set(t),o=[];for(const t of e)n.has(t.instanceId)&&o.push(t.rect);return sn(o)}function un(e,t,n){const o=(null==n?void 0:n.padding)??40,i=Math.max(1,t.w-2*o),a=Math.max(1,t.h-2*o),r=Math.max(1,e.w),c=Math.max(1,e.h);let s=Math.min(i/r,a/c);void 0!==(null==n?void 0:n.maxScale)&&(s=Math.min(s,n.maxScale)),void 0!==(null==n?void 0:n.minScale)&&(s=Math.max(s,n.minScale));const d=e.x+e.w/2,l=e.y+e.h/2;return{scale:s,panX:t.w/2-d*s,panY:t.h/2-l*s}}function pn(e,t){const n=e.scale||1;return{x:-e.panX/n+0,y:-e.panY/n+0,w:t.w/n,h:t.h/n}}function fn(e){const t=[];(e.metaKey||e.ctrlKey)&&t.push("mod"),e.shiftKey&&t.push("shift"),e.altKey&&t.push("alt");let n=e.key;return n="Meta"===n||"Control"===n?"mod":" "===n||"Space"===e.code?"space":(n.length,n.toLowerCase()),t[t.length-1]===n||t.push(n),t.join("+")}function hn(e){if(!(e&&e instanceof HTMLElement))return!1;const t=e.tagName;return"INPUT"===t||"TEXTAREA"===t||"SELECT"===t||!!e.isContentEditable}function gn(e,t){const n=fn(t);for(const t of e.keys)if(mn(t)===n)return!0;return!1}function mn(e){return e.split("+").map(e=>e.trim().toLowerCase()).join("+")}function vn(e){const{ctx:t}=e;function n(e){return f(`${e}_`)}return{fill(e,n,o){t.dispatch({type:"freeSplitFill",payload:{containerId:e,leafId:n,instance:o}})},clear(e,n){t.dispatch({type:"freeSplitClear",payload:{containerId:e,leafId:n}})},swap(e,n,o){t.dispatch({type:"freeSplitSwap",payload:{containerId:e,leafIdA:n,leafIdB:o}})},resize(e,n,o){t.dispatch({type:"freeSplitResize",payload:{containerId:e,nodeId:n,sizes:o}})},split(e,o,i,a){const r=n("lf"),c=n("nd");return t.dispatch({type:"freeSplitSplit",payload:{containerId:e,leafId:o,edge:i,newLeafShare:a,newLeafId:r,newNodeId:c}}),{leafId:r,nodeId:c}},merge(e,n){t.dispatch({type:"freeSplitMerge",payload:{containerId:e,leafId:n}})}}}function yn(n,o){const i=Ct(n,o.recorder),a=function(e){const{ctx:t,options:n}=e;function o(e){const o=n.getStageEl();if(!o)return console.warn("[hc-canvas/handle] clientToCanvasPoint called before stage mounted; falling back to viewport.toCanvasPoint(raw clientPt). 结果可能偏移。"),t.viewport.toCanvasPoint(e);const i=o.getBoundingClientRect();return t.viewport.toCanvasPoint({x:e.x-i.left,y:e.y-i.top})}return{clientToCanvasPoint:o,getInstanceAtClientPoint:function(e){const i=n.getStageEl();if(!i)return null;const a=Dt(o(e),t.document.document.instances,e=>_t(e,i,t.viewport));return a?t.document.getInstance(a)??null:null},getDropTarget:function(e,o,i){var a;const r=o??(null==(a=n.getStageEl)?void 0:a.call(n))??("undefined"!=typeof document&&"function"==typeof document.querySelectorAll?document:null);if(!r)return null;const c=void 0!==(null==i?void 0:i.excludeInstanceId),s=c?`[data-instance-id="${Jt(i.excludeInstanceId)}"]`:null;let d=s?r.querySelector(s):null;if(!d&&c&&r instanceof Element){const e=r.closest("[data-hc-canvas-designer]");e&&e!==r&&(d=e.querySelector(s))}let l=r.querySelectorAll("[data-hc-slot]");if(0===l.length&&c&&r instanceof Element){const e=r.closest("[data-hc-canvas-designer]");e&&e!==r&&(l=e.querySelectorAll("[data-hc-slot]"))}const u=Qt(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&&t.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=n.getStageEl)?void 0:i.call(n))??("undefined"!=typeof document&&"function"==typeof document.querySelectorAll?document:null);if(!a)return null;const r=Qt(a.querySelectorAll("[data-hc-leaf]"),e);if(!r)return null;const c=r.getAttribute("data-hc-leaf"),s=r.getAttribute("data-hc-leaf-container");if(!c||!s)return null;const d=t.document.getInstance(s),l=null==d?void 0:d.containerLayout;return l&&"free-split"===l.mode&&ie(l.root,c)?{containerId:s,leafId:c,leafEl:r}:null}}}({ctx:n,options:o}),r=function(t){const{ctx:n,options:o}=t;function i(e,t){const i=n.document.getInstance(e);if(!i)return console.warn(`[hc-canvas/handle] ${t}: instance "${e}" 不存在`),!1;const a=o.getStageEl();if(!a)return console.warn(`[hc-canvas/handle] ${t}: stage 未挂载,跳过滚动(${e})`),!1;const r=_t(e,a,n.viewport),c=r&&(r.w>0||r.h>0)?r:{x:i.rect.x,y:i.rect.y,w:i.rect.w,h:i.rect.h},s=a.getBoundingClientRect(),d=n.viewport.scale.value,l=s.width/2-(c.x+c.w/2)*d,u=s.height/2-(c.y+c.h/2)*d;return n.viewport.setPan(l,u),!0}const a=e.ref(null);let r=0;return{getInstanceTree:function(){return tn(n.document.document.instances)},getInstanceList:function(){return n.document.document.instances.map(e=>c(e))},getInstanceById:function(e){const t=n.document.getInstance(e);return t?c(t):null},getSelectedPath:function(){const e=n.selection.primaryId.value;if(!e)return[];const t=n.document.document.instances,o=tn(t),i=rn(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 c=[];for(const t of i){const n=a.get(t.instanceId);if(!n)return an(o,e);c.push(n)}return c},getBreadcrumb:function(e){return rn(n.document.document.instances,e).map(e=>c(e))},focusInstance:function(e){n.document.getInstance(e)?(n.dispatch({type:"select",payload:{instanceId:e}}),i(e,"focusInstance")):console.warn(`[hc-canvas/handle] focusInstance: instance "${e}" 不存在`)},scrollToInstance:function(e){i(e,"scrollToInstance")},canReparent:function(e,t){return en(n.document.document.instances,e,t,{resolveContract:o.resolveContract})},moveInstanceInTree:function(e,t){var i,c,s;const d=en(n.document.document.instances,e,t,{resolveContract:o.resolveContract});if(!d.ok)return console.warn(`[hc-canvas/handle] moveInstanceInTree 守门拒绝(${d.reason}): ${d.message}`),void function(e,t,n,o){r++,a.value={instanceId:e,target:{...t},reason:n,message:o,token:r}}(e,t,d.reason,d.message??`reparent rejected: ${d.reason}`);const l=n.document.getInstance(e),u=null===t.parentId?void 0:t.parentId,p=(l.parentId||void 0)!==(u||void 0),f=l.slot!==t.slot,h={};if(p&&(h.parentId=u),f&&(h.slot=t.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==(s=null==(c=n.document.getInstance(u))?void 0:c.containerLayout)?void 0:s.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,t="fill"===l.layoutBox.heightMode?"px":l.layoutBox.heightMode;e===l.layoutBox.widthMode&&t===l.layoutBox.heightMode||(h.layoutBox={...l.layoutBox,widthMode:e,heightMode:t})}}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!==t.index){const o=cn(n.document.document.instances,u,t.slot).filter(t=>t.instanceId!==e),i=Math.max(0,Math.min(t.index,o.length));o.splice(i,0,l),o.forEach((e,t)=>{const n=o.length-1-t;(e.zIndex??0)!==n&&g.push({id:e.instanceId,zIndex:n})})}if(0===Object.keys(h).length&&0===g.length)return;const m=!n.isBatching.value;m&&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{m&&n.endBatch("moveInstanceInTree")}},cannotReparentEvent:e.readonly(a)}}({ctx:n,options:o}),s=function(e){const{ctx:t,options:n}=e;function o(){const e=n.getStageEl();if(!e)return null;const t=e.getBoundingClientRect();return{w:t.width,h:t.height}}function i(){return{scale:t.viewport.scale.value,panX:t.viewport.panX.value,panY:t.viewport.panY.value}}function a(){return dn(t.document.document.instances)}function r(){return ln(t.document.document.instances,t.selection.selectedIds.value)}function c(e,n){const a=o();if(!a)return void t.viewport.setScale(e);const r=i();let c;if(null==n?void 0:n.center)c=n.center;else{const e=pn(r,a);c={x:e.x+e.w/2,y:e.y+e.h/2}}const s=c.x*r.scale+r.panX,d=c.y*r.scale+r.panY,l=s-c.x*e,u=d-c.y*e;t.viewport.setScale(e),t.viewport.setPan(l,u)}function s(e,n){const i=o();if(!i)return void console.warn("[hc-canvas/handle] scrollToRect: stage 未挂载,跳过");const a=un(e,i,n);t.viewport.setScale(a.scale),t.viewport.setPan(a.panX,a.panY)}return{getViewportState:i,getVisibleBounds:function(){const e=o();return e?pn(i(),e):{x:0,y:0,w:0,h:0}},getCanvasBounds:function(){const e=t.measuredCanvasSize.value;return{x:0,y:0,w:e.w,h:e.h}},getContentBounds:a,getSelectionBounds:r,getInstanceBounds:function(e){const n=t.document.getInstance(e);return n?{...n.rect}:null},panBy:function(e,n){t.viewport.setPan(t.viewport.panX.value+e,t.viewport.panY.value+n)},panTo:function(e,n){t.viewport.setPan(e,n)},zoomTo:c,zoomBy:function(e,n){c(t.viewport.scale.value+e,n)},zoomToPoint:function(e,o){const a=n.getStageEl();if(!a)return void console.warn("[hc-canvas/handle] zoomToPoint: stage 未挂载,跳过");const r=a.getBoundingClientRect(),c=o.x-r.left,s=o.y-r.top,d=i(),l=c-(c-d.panX)/d.scale*e,u=s-(s-d.panY)/d.scale*e;t.viewport.setScale(e),t.viewport.setPan(l,u)},resetViewport:function(){t.viewport.resetView()},scrollToRect:s,fitToContent:function(e){const t=a();t&&s(t,e)},fitToSelection:function(e){const t=r();t&&s(t,e)}}}({ctx:n,options:o}),d=function(e){const{ctx:t}=e;return{getInstanceSize:function(e){const n=t.document.getInstance(e);if(n&&void 0!==n.size)return c(n.size)},updateInstanceSize:function(e,n){t.dispatch({type:"setInstanceSize",payload:{instanceId:e,size:n}})},getContainerLayout:function(e){const n=t.document.getInstance(e);return n&&void 0!==n.containerLayout?c(n.containerLayout):null},updateContainerLayout:function(e,n){t.dispatch({type:"setContainerLayout",payload:{instanceId:e,containerLayout:n}})},getLayoutBox:function(e){const n=t.document.getInstance(e);if(n&&void 0!==n.layoutBox)return c(n.layoutBox)},updateLayoutBox:function(e,n){t.dispatch({type:"updateLayoutBox",payload:{instanceId:e,patch:n}})},getLayoutItem:function(e){const n=t.document.getInstance(e);if(n&&void 0!==n.layoutItem)return c(n.layoutItem)},updateLayoutItem:function(e,n){t.dispatch({type:"updateLayoutItem",payload:{instanceId:e,patch:n}})},getRotation:function(e){const n=t.document.getInstance(e);if(!n)return 0;const o=n.rotation;return"number"==typeof o&&Number.isFinite(o)?o:0},updateRotation:function(e,n){t.dispatch({type:"updateRotation",payload:{instanceId:e,value:n}})},getInstanceOutletRect:function(e,t){if("undefined"==typeof document||"function"!=typeof document.querySelector)return null;const n=t??"default",o=""===n?"default":n,i=`[data-instance-id="${Jt(e)}"]`,a=`[data-hc-slot="${Jt(o)}"]`,r=document.querySelector(`${i} ${a}`);return r&&r instanceof HTMLElement?r.getBoundingClientRect():null}}}({ctx:n}),l=function(e){const{ctx:t}=e;function n(){return JSON.parse(JSON.stringify(t.document.document.layout))}return{getLayoutConfig:n,updateCanvasSize:function(e){const o={...n().canvas,...e};t.dispatch({type:"updateLayout",payload:{patch:{canvas:o}}})},updateCanvasBackground:function(e){if(null===e)return void t.dispatch({type:"updateLayout",payload:{patch:{background:void 0}}});const o={...n().background??{},...e};t.dispatch({type:"updateLayout",payload:{patch:{background:o}}})},updateBehavior:function(e){const o={...n().behavior??{},...e};t.dispatch({type:"updateLayout",payload:{patch:{behavior:o}}})},setRootLayout:function(e){let n;if(null===e)n=null;else if("string"==typeof e)switch(e){case"free":n={mode:"free"};break;case"none":n={mode:"none"};break;case"split":n={mode:"split",direction:"horizontal",ratios:[.5,.5]};break;case"grid":n={mode:"grid",columns:[{mode:"fr",value:1},{mode:"fr",value:1}],rows:[{mode:"fr",value:1},{mode:"fr",value:1}]};break;case"flex":n={mode:"flex",direction:"row"};break;default:return void console.warn(`[hc-canvas/handle] setRootLayout: 未知 mode "${e}",忽略`)}else n=e;t.dispatch({type:"setRootLayout",payload:{rootLayout:n}})},setInteractionOptions:function(e){t.setInteractionOptions(e)},getEffectiveBehavior:function(){return{...t.effectiveBehavior.value}},resolveAsset:function(e){return t.resolveAsset(e)}}}({ctx:n}),u=function(e){const{ctx:t}=e;function n(){return t.document.document.layout.guides??{}}function o(e){t.dispatch({type:"updateLayout",payload:{patch:{guides:e}}})}return{setRulerVisible:function(e){const t=n();o({...t,ruler:{...t.ruler??{},visible:e}})},setGridVisible:function(e){const t=n();o({...t,grid:{...t.grid??{},visible:e}})},updateRulerConfig:function(e){const t=n();o({...t,ruler:{...t.ruler??{},...e}})},updateGridConfig:function(e){const t=n();o({...t,grid:{...t.grid??{},...e}})},addGuide:function(e){const t=n(),i=t.items??[],a=e.id??f("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({...t,items:[...i,r]}),a},removeGuide:function(e){const t=n(),i=t.items??[];i.some(t=>t.id===e)&&o({...t,items:i.filter(t=>t.id!==e)})},updateGuide:function(e,t){const i=n(),a=i.items??[],r=a.findIndex(t=>t.id===e);if(r<0)return void console.warn(`[hc-canvas/handle] updateGuide: id "${e}" 不存在,忽略`);const{id:c,...s}=t,d={...a[r],...s},l=[...a];l[r]=d,o({...i,items:l})},getGuides:function(){return(n().items??[]).map(e=>({...e}))},clearGuides:function(){const e=n();e.items&&0!==e.items.length&&o({...e,items:[]})},getMouseCanvasPoint:function(){const e=t.mouseCanvasPoint.value;return e?{x:e.x,y:e.y}:null}}}({ctx:n}),p=function(e){const{ctx:t,recorder:n,viewportApi:o,guides:i}=e;function a(e,n){const o=t.document.getInstance(e);if(!o)return null;const i=(null==n?void 0:n.newInstanceId)??f(`${o.componentId}_`);return t.dispatch({type:"duplicateInstance",payload:{instanceId:e,newInstanceId:i,...void 0!==(null==n?void 0:n.offset)?{offset:n.offset}:{}}}),t.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 c(){const e=t.selection.selectedIds.value;if(0===e.length)return!1;for(const n of e){const e=t.document.getInstance(n);if(e&&!0!==(e.lockPosition??e.locked))return!0}return!1}function s(e,n,o){const i=o?10:1,a=t.selection.selectedIds.value;if(0===a.length)return;const r=!t.isBatching.value;r&&t.beginBatch();try{for(const o of a){const a=t.document.getInstance(o);if(!a||!0===(a.lockPosition??a.locked))continue;const r=Ot(t,o);Nt(r)?t.dispatch({type:"moveInstance",payload:{instanceId:o,x:a.rect.x+e*i,y:a.rect.y+n*i}}):"undefined"!=typeof console&&"function"==typeof console.debug&&console.debug("[hc-canvas/handle] executeNudge: 拒绝 layout-managed 子 nudge",{instanceId:o,parentLayoutMode:r})}}finally{r&&t.endBatch(o?"arrow-move-large":"arrow-move")}}function d(e){const n=[...t.selection.selectedIds.value];if(0===n.length)return;const o=!t.isBatching.value;o&&t.beginBatch();try{for(const o of n)t.dispatch({type:"setInstanceLocked",payload:{instanceId:o,locked:e}})}finally{o&&t.endBatch(e?"lock-selection":"unlock-selection")}}function l(e){const n=t.selection.selectedIds.value;if(0===n.length)return;const o=t.document.document.instances;if(0===o.length)return;const i=o.map((e,t)=>({inst:e,origIdx:t})).sort((e,t)=>{const n=e.inst.zIndex??0,o=t.inst.zIndex??0;return n!==o?n-o:e.origIdx-t.origIdx}).map(e=>e.inst),a=new Set(n),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 c=r.map(e=>i[e]),s=i.filter(e=>!a.has(e.instanceId));let d;if("toFront"===e)d=[...s,...c];else if("toBack"===e)d=[...c,...s];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 t=i[e],n=s.indexOf(t);d=[...s.slice(0,n+1),...c,...s.slice(n+1)]}else{let e=r[0]-1;for(;e>=0&&a.has(i[e].instanceId);)e--;if(e<0)return;const t=i[e],n=s.indexOf(t);d=[...s.slice(0,n),...c,...s.slice(n)]}const l=[];for(let e=0;e<d.length;e++){const t=d[e];(t.zIndex??0)!==e&&l.push({id:t.instanceId,zIndex:e})}if(0===l.length)return;const u=!t.isBatching.value;u&&t.beginBatch();try{for(const e of l)t.dispatch({type:"updateInstance",payload:{instanceId:e.id,patch:{zIndex:e.zIndex}}})}finally{u&&t.endBatch(`z-order-${e}`)}}const u={undo:{execute:()=>n.undo(),canExecute:()=>n.canUndo.value},redo:{execute:()=>n.redo(),canExecute:()=>n.canRedo.value},deleteSelection:{execute:function(){const e=[...t.selection.selectedIds.value];if(0===e.length)return;const n=!t.isBatching.value;n&&t.beginBatch();try{for(const n of e)t.dispatch({type:"removeInstance",payload:{instanceId:n}})}finally{n&&t.endBatch("delete-selection")}},canExecute:()=>t.selection.selectedIds.value.length>0},duplicateSelection:{execute:function(){const e=[...t.selection.selectedIds.value];if(0===e.length)return;const n=[],o=!t.isBatching.value;o&&t.beginBatch();try{for(const t of e){const e=a(t);e&&n.push(e)}n.length>0&&t.dispatch({type:"selectAll",payload:{instanceIds:n}})}finally{o&&t.endBatch("duplicate-selection")}},canExecute:()=>t.selection.selectedIds.value.length>0},clearSelection:{execute:()=>t.dispatch({type:"clearSelection"}),canExecute:()=>t.selection.selectedIds.value.length>0},cancelInteraction:{execute:()=>t.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 t=e??{dx:0,dy:0};s(t.dx,t.dy,!1)},canExecute:c},nudgeSelectionLarge:{execute:e=>{const t=e??{dx:0,dy:0};s(t.dx,t.dy,!0)},canExecute:c},lockSelection:{execute:()=>d(!0),canExecute:()=>t.selection.selectedIds.value.length>0},unlockSelection:{execute:()=>d(!1),canExecute:()=>t.selection.selectedIds.value.length>0},bringForward:{execute:()=>l("forward"),canExecute:()=>t.selection.selectedIds.value.length>0},sendBackward:{execute:()=>l("backward"),canExecute:()=>t.selection.selectedIds.value.length>0},bringToFront:{execute:()=>l("toFront"),canExecute:()=>t.selection.selectedIds.value.length>0},sendToBack:{execute:()=>l("toBack"),canExecute:()=>t.selection.selectedIds.value.length>0},toggleGrid:{execute:function(){var e;const n=null==(e=t.document.document.layout.guides)?void 0:e.grid;i.setGridVisible(!(null==n?void 0:n.visible))},canExecute:()=>!0},toggleRuler:{execute:function(){var e;const n=null==(e=t.document.document.layout.guides)?void 0:e.ruler;i.setRulerVisible(!(null==n?void 0:n.visible))},canExecute:()=>!0}};function p(e,n){const o=null===n?null:JSON.parse(JSON.stringify(n));t.dispatch({type:"setComponentOverride",payload:{instanceId:e,override:o}})}function h(e,n){const o=e??"notEditingText";return"always"===o||("notEditingText"===o?!hn(n.target):"design"===o?!hn(n.target)&&!1!==t.effectiveBehavior.value.draggable:"hasSelection"===o&&!hn(n.target)&&t.selection.selectedIds.value.length>0)}return{duplicateInstance:a,getToolMode:function(){return t.toolMode.value},setToolMode:function(e){t.setToolMode(e)},setTemporaryToolMode:function(e){t.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 t of r){if(!gn(t,e))continue;if(!h(t.when,e))continue;const n=u[t.command];return!!n&&!!n.canExecute()&&(n.execute(t.payload),!1!==t.preventDefault&&e.preventDefault(),!0)}return!1},executeCommand:function(e,t){const n=u[e];n?n.canExecute()&&n.execute(t):console.warn(`[hc-canvas/handle] executeCommand: 未知命令 "${e}"`)},canExecuteCommand:function(e){const t=u[e];return!!t&&t.canExecute()},getStaleComponentOverrides:function(){const e=t.document.document.componentOverrides??{},n=[];for(const o of t.document.document.instances){const t=e[o.instanceId];t&&t.baseVersionKey!==o.componentVersionKey&&n.push({instanceId:o.instanceId,baseVersionKey:t.baseVersionKey,currentVersionKey:o.componentVersionKey})}return n},setComponentOverride:p,discardComponentOverride:function(e){p(e,null)},getLayoutIssues:function(){return t.layoutIssues.value}}}({ctx:n,recorder:i,viewportApi:s,guides:u}),h=function(e){const{ctx:t,options:n}=e;function o(e){var o,i,a,r,c,s,d,l,u;const p=e.parentId||void 0;if(void 0===p)return e;const f=(null==(i=null==(o=t.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,m=void 0!==h,v=null==(a=n.resolveContract)?void 0:a.call(n,e.componentVersionKey),y=null==(c=null==(r=null==v?void 0:v.layoutDecl)?void 0:r.sizing)?void 0:c.defaultChildSize,I=e.rect??{w:240,h:60},x=h??{x:0,y:0,width:I.w,height:I.h,widthMode:"px",heightMode:"px"},w=e=>{if(void 0!==e)return"hug"===e?"auto":e},b=g?x.widthMode:w(null==(s=null==y?void 0:y.width)?void 0:s.mode)??"fill",S=m?x.heightMode:w(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)?x.width:y.width.value,B=m||void 0===(null==(u=null==y?void 0:y.height)?void 0:u.value)?x.height:y.height.value;return{...e,layoutBox:{...x,x:0,y:0,width:k,height:B,widthMode:b,heightMode:S}}}return{dispatchWithDefaults:function(e){if("addInstance"===e.type){const i=function(e){var t,o,i,a;if(void 0!==e.containerLayout)return e;const r=null==(t=n.resolveContract)?void 0:t.call(n,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 c=null==(a=r.layoutDecl)?void 0:a.defaultLayout;return void 0===c?e:{...e,containerLayout:JSON.parse(JSON.stringify(c))}}(e.payload.instance);return void t.dispatch({type:"addInstance",payload:{instance:o(i)}})}t.dispatch(e)}}}({ctx:n,options:o}),g=vn({ctx:n}),m=e.computed(()=>{const e=n.selection.selectedIds.value;if(0===e.length)return[];const t=new Set(e);return n.document.document.instances.filter(e=>t.has(e.instanceId))}),v=n.selection.selectedIds,y=e.readonly(v),I=e.readonly(n.isBatching),x=function(){let e=!1;const t=new Set,n=new Set,o=[];return{isDisposed:()=>e,addPendingReady(e){t.add(e)},removePendingReady(e){t.delete(e)},registerListenerOff(e){let t=!1;const o=()=>{t||(t=!0,n.delete(o),e())};return n.add(o),o},addDisposeCleanup(e){o.push(e)},markDisposed(){if(e)return;e=!0;const i=[...t];t.clear();for(const e of i)try{e.reject(new Tt)}catch(e){console.error("[hc-canvas/handle] pending ready rejection threw on dispose",e)}const a=[...n];n.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:b,getBindingMode:S,testBinding:k,invalidateDataSource:B,getDataSourceSnapshot:M,on:z,getInstanceReady:C,getInstanceRuntime:T,getCachedBySourceId:L,startTracing:E,stopTracing:D,getTraceBuffer:P}=function(e){const{lifecycle:n,currentCanvasId:o}=e;let i=null,a=null;return n.addDisposeCleanup(()=>{i=null,a=null}),{attachBindingDelegate:function(e,t){n.isDisposed()||(i=e,null===e?a=null:arguments.length>=2&&(a=t??null))},setBindingMode:function(e){null==i||i.setMode(e)},getBindingMode:function(){return(null==i?void 0:i.getMode())??"off"},testBinding:function(e,t){return(null==i?void 0:i.testBinding(e,t))??[]},invalidateDataSource:function(e){null==a||a.invalidate(e)},getDataSourceSnapshot:function(){return(null==a?void 0:a.getSnapshot())??{entries:[]}},on:function(e,a){if(n.isDisposed())return()=>{};if("instance:ready"===e||"instance:unmounted"===e){const i=e,r=a,c=t.onInstanceLifecycle(i,e=>{e.canvasId===o&&r(e.instanceId)});return n.registerListenerOff(c)}return i?i.on(e,a):()=>{}},getInstanceReady:function(e){return n.isDisposed()?Promise.reject(new Tt):"string"!=typeof e||0===e.length?Promise.reject(new TypeError("getInstanceReady: instanceId must be a non-empty string")):t.getInstance(e,o)?Promise.resolve():new Promise((i,a)=>{let r,c,s=!1;const d=()=>{s=!0;try{null==r||r()}catch{}c&&n.removePendingReady(c)};r=t.onInstanceLifecycle("instance:ready",t=>{s||t.canvasId===o&&t.instanceId===e&&(d(),i())}),c={off:r,reject:e=>{s||(d(),a(e))}},n.addPendingReady(c),!s&&t.getInstance(e,o)&&(d(),i())})},getInstanceRuntime:function(e){return n.isDisposed()?null:t.getInstance(e,o)},getCachedBySourceId:function(e,t){return null==a?void 0:a.getCachedBySourceId(e,t)},startTracing:function(e){null==i||i.startTracing(e)},stopTracing:function(){return(null==i?void 0:i.stopTracing())??[]},getTraceBuffer:function(){return(null==i?void 0:i.getTraceBuffer())??[]}}}({lifecycle:x,currentCanvasId:n.canvasId});return x.addDisposeCleanup(()=>i.dispose()),{dispatch:e=>h.dispatchWithDefaults(e),beginBatch:()=>n.beginBatch(),endBatch:e=>n.endBatch(e),isBatching:I,getSnapshot:()=>c(n.document.document),getRemoveImpact:e=>oe(n.document.document.instances,e),selectedIds:y,selectedInstances:m,freeSplitSelection:e.readonly(n.selection.freeSplitSelection),selectFreeSplitLeaf:(e,t)=>n.selection.selectFreeSplitLeaf(e,t),selectFreeSplitDivider:(e,t,o)=>n.selection.selectFreeSplitDivider(e,t,o),clearFreeSplitSelection:()=>n.selection.clearFreeSplitSelection(),viewport:n.viewport,clientToCanvasPoint:a.clientToCanvasPoint,getInstanceAtClientPoint:a.getInstanceAtClientPoint,getDropTarget:a.getDropTarget,getFreeSplitDropTarget:a.getFreeSplitDropTarget,duplicateInstance:p.duplicateInstance,undo:i.undo,redo:i.redo,canUndo:i.canUndo,canRedo:i.canRedo,undoStackSize:i.undoStackSize,redoStackSize:i.redoStackSize,clearHistory:i.clear,getLayoutConfig:l.getLayoutConfig,updateCanvasSize:l.updateCanvasSize,updateCanvasBackground:l.updateCanvasBackground,updateBehavior:l.updateBehavior,setInteractionOptions:l.setInteractionOptions,getEffectiveBehavior:l.getEffectiveBehavior,setRootLayout:l.setRootLayout,getInstanceTree:r.getInstanceTree,getInstanceList:r.getInstanceList,getInstance:r.getInstanceById,getSelectedPath:r.getSelectedPath,getBreadcrumb:r.getBreadcrumb,focusInstance:r.focusInstance,scrollToInstance:r.scrollToInstance,moveInstanceInTree:r.moveInstanceInTree,canReparent:r.canReparent,cannotReparentEvent:r.cannotReparentEvent,cannotDragLayoutManagedChildEvent:n.cannotDragLayoutManagedChildEvent,resolveAsset:l.resolveAsset,getViewportState:s.getViewportState,getVisibleBounds:s.getVisibleBounds,getCanvasBounds:s.getCanvasBounds,getContentBounds:s.getContentBounds,getSelectionBounds:s.getSelectionBounds,getInstanceBounds:s.getInstanceBounds,panBy:s.panBy,panTo:s.panTo,zoomTo:s.zoomTo,zoomBy:s.zoomBy,zoomToPoint:s.zoomToPoint,resetViewport:s.resetViewport,fitToContent:s.fitToContent,fitToSelection:s.fitToSelection,scrollToRect:s.scrollToRect,toolMode:n.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:b,getBindingMode:S,testBinding:k,on:z,attachBindingDelegate:w,invalidateDataSource:B,getDataSourceSnapshot:M,getCachedBySourceId:L,getInstanceReady:C,getInstanceRuntime:T,startTracing:E,stopTracing:D,getTraceBuffer:P,freeSplit:g,dispose:function(){x.markDisposed()}}}const In=Symbol("hc:canvas:reparent-bridge");function xn(e){return"preview"===e||"runtime"===e?"runtime":"off"}const wn=(e,t)=>{const n=e.__vccOpts||e;for(const[e,o]of t)n[e]=o;return n},bn=wn(e.defineComponent({__name:"CanvasStage",setup(t){const n=Ce(),o=e.ref(null);let i=null;const a=e.computed(()=>{const{scale:e,panX:t,panY:o}=n.viewport.state;return`translate(${t}px, ${o}px) scale(${e})`});function r(){const e=o.value;if(!e)return;const t=e.getBoundingClientRect();n.setMeasuredStageSize({w:t.width,h:t.height})}return e.onMounted(()=>{e.nextTick(r),"undefined"!=typeof ResizeObserver&&o.value&&(i=new ResizeObserver(r),i.observe(o.value)),window.addEventListener("resize",r)}),e.onBeforeUnmount(()=>{null==i||i.disconnect(),i=null,window.removeEventListener("resize",r)}),(t,n)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"stageEl",ref:o,class:"hc-canvas-stage","data-hc-stage":""},[e.createElementVNode("div",{class:"hc-canvas-stage__world","data-hc-stage-world":"",style:e.normalizeStyle({transform:a.value,transformOrigin:"0 0"})},[e.renderSlot(t.$slots,"default",{},void 0,!0)],4)],512))}}),[["__scopeId","data-v-69f0f8c9"]]),Sn=["data-mode"],kn=e.defineComponent({__name:"RuntimeLayer",props:{componentSourceMap:{},mode:{default:"design"},schedulerOptions:{},canvasId:{}},setup(t){const n=Ce(),o=e.computed(()=>n.document.document);return(i,a)=>(e.openBlock(),e.createElementBlock("div",{class:"hc-runtime-layer","data-hc-runtime-layer":"","data-mode":t.mode,style:e.normalizeStyle({position:"absolute",top:0,left:0,pointerEvents:e.unref(n).effectiveBehavior.value.selectable?"none":"auto"})},[e.createVNode(It,{document:o.value,"component-source-map":t.componentSourceMap,"scheduler-options":t.schedulerOptions,"canvas-id":t.canvasId},null,8,["document","component-source-map","scheduler-options","canvas-id"])],12,Sn))}}),Bn=.05;function Mn(e,t,n,o=0){if(!t||t.length<2)return[];if(e.w<=0||e.h<=0)return[];const i=t.map(e=>"number"==typeof e&&Number.isFinite(e)&&e>0?e:0),a=i.reduce((e,t)=>e+t,0);if(a<=0)return[];const r=i.length-1,c=Math.max(0,o)*r,s="horizontal"===n?e.w:e.h,d=Math.max(0,s-c);if(d<=0)return[];const l=o>0?o:8,u=[];let p=0;for(let t=0;t<r;t++){p+=i[t]/a*d;const r=p+t*o+o/2;let c;c="horizontal"===n?{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:t,rect:c,direction:n})}return u}function zn(e,t,n,o,i=0){if(!e||t<0||t>=e.length-1)return e.slice();const a=e.map(e=>"number"==typeof e&&Number.isFinite(e)&&e>0?e:0),r=a[t],c=a[t+1],s=r+c;if(s<=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,t)=>e+t,0);if(p<=0)return a;const f=n/u*p,h=Bn*p;let g=r+f,m=c-f;g<h&&(g=h,m=s-h),m<h&&(m=h,g=s-h);const v=a.slice();return v[t]=g,v[t+1]=m,v}function Cn(t){const n=e.reactive({status:"idle",parentId:null,dividerIndex:null,startRatios:null,childIds:null,parentAxisPx:0,startPt:null,direction:null,gap:0}),o=e.computed(()=>"active"===n.status);function i(){n.status="idle",n.parentId=null,n.dividerIndex=null,n.startRatios=null,n.childIds=null,n.parentAxisPx=0,n.startPt=null,n.direction=null,n.gap=0}return{drag:n,isDragging:o,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 o=t.document.getInstance(e.parentId);return o&&o.containerLayout&&"split"===o.containerLayout.mode?(n.status="active",n.parentId=e.parentId,n.dividerIndex=e.dividerIndex,n.startRatios=e.startRatios.slice(),n.childIds=e.childIds.slice(),n.parentAxisPx=e.parentAxisPx,n.startPt={...e.canvasPt},n.direction=e.direction,n.gap=e.gap,t.beginBatch(),{startTracking:!0}):{startTracking:!1}},handleSplitDividerMove:function(e){var o,i;if("active"!==n.status)return;if(!(n.startPt&&n.startRatios&&n.childIds&&n.direction&&null!==n.dividerIndex))return;const a=t.document.getInstance(n.parentId);if(!a||!a.containerLayout||"split"!==a.containerLayout.mode)return;const r="horizontal"===n.direction?e.x-n.startPt.x:e.y-n.startPt.y,c=zn(n.startRatios,n.dividerIndex,r,n.parentAxisPx,n.gap),s=n.dividerIndex,d=n.childIds[s],l=n.childIds[s+1];if(!d||!l)return;const u=c[s],p=c[s+1],f=t.document.getInstance(d),h=t.document.getInstance(l),g=null==(o=null==f?void 0:f.layoutItem)?void 0:o.ratio,m=null==(i=null==h?void 0:h.layoutItem)?void 0:i.ratio;g===u&&m===p||(t.dispatch({type:"updateLayoutItem",payload:{instanceId:d,patch:{ratio:u}}}),t.dispatch({type:"updateLayoutItem",payload:{instanceId:l,patch:{ratio:p}}}))},handleSplitDividerEnd:function(){"active"===n.status&&(t.endBatch("split-divider-drag"),i())},cancelSplitDividerDrag:function(){"active"===n.status&&t.endBatch("split-divider-cancel"),i()}}}function Tn(e,t){const n=Math.min(e.x,t.x),o=Math.min(e.y,t.y);return{x:n,y:o,w:Math.max(e.x+e.w,t.x+t.w)-n,h:Math.max(e.y+e.h,t.y+t.h)-o}}function Ln(e,t){if("leaf"===e.type)return t(e.leafId);let n=null;for(const o of e.children){const e=Ln(o,t);e&&(n=n?Tn(n,e):e)}return n}function En(e,t){return Ln(e,t)}function Dn(e,t,n={}){const o=n.thickness??8,i=[],a=e=>{if("leaf"===e.type)return;const n=e.children.map(e=>Ln(e,t));for(let t=0;t<e.children.length-1;t++){const a=n[t],r=n[t+1];if(a&&r)if("row"===e.dir){const n=(a.x+a.w+r.x)/2,c=Math.min(a.y,r.y),s=Math.max(a.y+a.h,r.y+r.h);i.push({nodeId:e.nodeId,dividerIndex:t,direction:"horizontal",rect:{x:n-o/2,y:c,w:o,h:s-c}})}else{const n=(a.y+a.h+r.y)/2,c=Math.min(a.x,r.x),s=Math.max(a.x+a.w,r.x+r.w);i.push({nodeId:e.nodeId,dividerIndex:t,direction:"vertical",rect:{x:c,y:n-o/2,w:s-c,h:o}})}}e.children.forEach(a)};return a(e),i}function Pn(e,t,n,o,i={}){const{snap:a=!1,snapFractions:r=[.5],snapThreshold:c=.04,minRatioFraction:s=Bn,minPx:d=0}=i,l=e.map(e=>({...e}));if(t<0||t>=e.length-1)return l;const u=e[t],p=e[t+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+n;return r=Math.max(o,Math.min(a,r)),l[t]={...u,value:r},l[t+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,t)=>e+("ratio"===t.mode?t.value:0),0);if(d<=0)return l;const f=n/o*d;let h=u.value+f,g=p.value-f;const m=s*i;if(h<m&&(h=m,g=i-m),g<m&&(g=m,h=i-m),a){const e=h/i;for(const t of r)if(Math.abs(e-t)<=c){h=t*i,g=(1-t)*i;break}}return l[t]={...u,value:h},l[t+1]={...p,value:g},l}if("px"===u.mode){let e=u.value+n;e=Math.max(Math.max(d,u.min??0),Math.min(u.max??1/0,e)),l[t]={...u,value:e}}else{let e=p.value-n;e=Math.max(Math.max(d,p.min??0),Math.min(p.max??1/0,e)),l[t+1]={...p,value:e}}return l}function Rn(e,t,n={}){const o=n.edgeZonePx??12,{x:i,y:a,w:r,h:c}=e;if(t.x<i||t.x>i+r||t.y<a||t.y>a+c)return null;const s=t.x-i,d=i+r-t.x,l=t.y-a,u=a+c-t.y,p=Math.min(s,d,l,u);return p>o?null:p===s?{edge:"left"}:p===d?{edge:"right"}:p===l?{edge:"top"}:{edge:"bottom"}}function $n(e,t,n){const{x:o,y:i,w:a,h:r}=e;let c;return c="left"===t?(n.x-o)/a:"right"===t?(o+a-n.x)/a:"top"===t?(n.y-i)/r:(i+r-n.y)/r,Math.max(.05,Math.min(.95,c))}function An(e,t,n){const o=ae(e,t);if(!o)return null;const i=o.children[n],a=o.children[n+1];return i&&a?"leaf"===i.type&&null===i.instanceId?i.leafId:"leaf"===a.type&&null===a.instanceId?a.leafId:null:null}function Fn(e,t){const n=e.document.getInstance(t),o=null==n?void 0:n.containerLayout;return o&&"free-split"===o.mode?o:null}function On(t){const n=vn({ctx:t}),o=e.reactive({status:"idle",containerId:null,nodeId:null,dividerIndex:null,startSizes:null,branchAxisPx:0,startPt:null,direction:null,snap:!1}),i=e.computed(()=>"active"===o.status);function a(){o.status="idle",o.containerId=null,o.nodeId=null,o.dividerIndex=null,o.startSizes=null,o.branchAxisPx=0,o.startPt=null,o.direction=null,o.snap=!1}return{resizeDrag:o,isResizing:i,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=Fn(t,e.containerId);if(!n)return{startTracking:!1};const i=ae(n.root,e.nodeId);return i&&i.sizes.length===e.startSizes.length?(o.status="active",o.containerId=e.containerId,o.nodeId=e.nodeId,o.dividerIndex=e.dividerIndex,o.startSizes=e.startSizes.map(e=>({...e})),o.branchAxisPx=e.branchAxisPx,o.startPt={...e.canvasPt},o.direction=e.direction,o.snap=e.snap??!1,t.beginBatch(),{startTracking:!0}):{startTracking:!1}},handleResizeMove:function(e){if("active"!==o.status)return;if(!(o.startPt&&o.startSizes&&o.direction&&null!==o.dividerIndex&&o.containerId&&o.nodeId))return;const i=Fn(t,o.containerId);if(!i)return;const a="horizontal"===o.direction?e.x-o.startPt.x:e.y-o.startPt.y,r=Pn(o.startSizes,o.dividerIndex,a,o.branchAxisPx,{snap:o.snap}),c=ae(i.root,o.nodeId);c&&function(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n].mode!==t[n].mode||e[n].value!==t[n].value)return!1;return!0}(c.sizes,r)||n.resize(o.containerId,o.nodeId,r)},handleResizeEnd:function(){"active"===o.status&&(t.endBatch("free-split-resize"),a())},cancelResize:function(){"active"===o.status&&t.endBatch("free-split-resize-cancel"),a()},requestSplit:function(e,o,i,a){if(!Fn(t,e))return null;const r=n.split(e,o,i,a),c=Fn(t,e);return c&&ie(c.root,r.leafId)?r:null},requestMerge:function(e,o){Fn(t,e)&&n.merge(e,o)},requestDelete:function(e,o){const i=Fn(t,e);if(!i)return;const a=ie(i.root,o);if(a){t.beginBatch();try{null!==a.instanceId&&n.clear(e,o),n.merge(e,o)}finally{t.endBatch("free-split-delete-region")}}},requestSwap:function(e,o,i){o!==i&&Fn(t,e)&&n.swap(e,o,i)}}}function Nn(e){return!0===(e.lockPosition??e.locked)}function jn(e){return!0===(e.lockSize??e.locked)}function Vn(e){return Nn(e)||jn(e)}const qn=["data-mode"],_n=["data-selection-box","data-locked","data-placement"],Kn=["data-lock-badge"],Xn=["data-resize-handle","data-resize-instance","onPointerdown"],Hn=["data-hc-divider-direction","data-hc-divider-index","data-hc-parent-id","data-hc-divider-dragging","onPointerdown"],Yn=["data-hc-fs-leaf","data-hc-fs-leaf-container","onPointerdown"],Un={key:0,class:"hc-fs-leaf-empty"},Gn=["onPointerdown"],Wn=["onClick"],Jn=["onClick"],Qn=["onClick"],Zn=["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"],eo=["onClick"],to=["data-axis","data-kind"],no=["data-hc-reparent-state"],oo=["data-hc-reparent-ghost-reason"],io={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"}},ao=wn(e.defineComponent({__name:"InteractionLayer",props:{mode:{default:"design"}},emits:["cannot-drag-slot-child","cannot-drag-layout-managed-child"],setup(t,{emit:n}){const o=n,i=Ce(),a=Wt(i,{getRoot:()=>Z(),getDomBox:e=>{const t=_t(e,Z(),i.viewport);return t?0===t.w&&0===t.h?null:t:null}}),r=Cn(i),c=On(i),s=e.inject(In,null);e.watch(()=>a.cannotDragSlotChildEvent.value,e=>{e&&o("cannot-drag-slot-child",{instanceId:e.instanceId,parentId:e.parentId})},{flush:"sync"}),e.watch(()=>a.cannotDragLayoutManagedChildEvent.value,e=>{e&&o("cannot-drag-layout-managed-child",{instanceId:e.instanceId,parentId:e.parentId,parentLayoutMode:e.parentLayoutMode})},{flush:"sync"});const d=e.ref(null);let l=null;const u=e.computed(()=>{const e=new Set(i.selection.selectedIds.value);return i.document.document.instances.filter(t=>e.has(t.instanceId)&&!t.hidden)}),p=e.computed(()=>i.measuredCanvasSize.value),f=e.shallowRef({}),h=e.ref(0);function g(){const e=Z(),t={};for(const n of u.value)t[n.instanceId]=_t(n.instanceId,e,i.viewport);f.value=t,h.value++}let m=null;function v(){"undefined"!=typeof requestAnimationFrame?null===m&&(m=requestAnimationFrame(()=>{m=null,g()})):g()}let y=null;function I(){y=null,g(),(a.isResizing.value||a.isDragging.value||r.isDragging.value||c.isResizing.value)&&(y=requestAnimationFrame(I))}function x(e){const t=f.value[e.instanceId];if(t)return t;const n=_t(e.instanceId,Z(),i.viewport);if(n&&(n.w>0||n.h>0))return n;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}}e.watch(()=>i.selection.selectedIds.value,()=>{v()},{flush:"post",deep:!0}),e.watch(()=>i.viewport.scale.value,()=>v()),e.watch(()=>[i.viewport.panX.value,i.viewport.panY.value],()=>v()),e.watch(()=>u.value.map(e=>{const t=e.layoutBox;return t?`${t.x}|${t.y}|${t.width}|${t.height}|${t.widthMode}|${t.heightMode}`:""}),()=>v(),{flush:"post",deep:!0}),e.watch(()=>u.value.map(e=>{const t=e.containerLayout;return t&&"free-split"===t.mode?JSON.stringify(t):""}),()=>v(),{flush:"post",deep:!0}),e.watch(()=>a.isResizing.value,e=>{e&&null===y&&(y=requestAnimationFrame(I))}),e.watch(()=>a.isDragging.value,e=>{e&&null===y&&(y=requestAnimationFrame(I))}),e.watch(()=>r.isDragging.value,e=>{e&&null===y&&(y=requestAnimationFrame(I))}),e.watch(()=>c.isResizing.value,e=>{e&&null===y&&(y=requestAnimationFrame(I))}),e.onMounted(()=>{v()});const w=e.computed(()=>u.value.map(e=>({instance:e,box:x(e)}))),b=e.computed(()=>{var e,t;if(!i.effectiveBehavior.value.resizable)return[];const n=[];for(const o of w.value){const a=o.instance;if(!0===(a.lockSize??a.locked))continue;if(!o.box)continue;const r=Ot(i,a.instanceId),{x:c,y:s,w:d,h:l}=o.box,u=[{handle:"nw",cx:c,cy:s,cursor:"nwse-resize"},{handle:"n",cx:c+d/2,cy:s,cursor:"ns-resize"},{handle:"ne",cx:c+d,cy:s,cursor:"nesw-resize"},{handle:"e",cx:c+d,cy:s+l/2,cursor:"ew-resize"},{handle:"se",cx:c+d,cy:s+l,cursor:"nwse-resize"},{handle:"s",cx:c+d/2,cy:s+l,cursor:"ns-resize"},{handle:"sw",cx:c,cy:s+l,cursor:"nesw-resize"},{handle:"w",cx:c,cy:s+l/2,cursor:"ew-resize"}],p=null==(e=a.layoutBox)?void 0:e.widthMode,f=null==(t=a.layoutBox)?void 0:t.heightMode,h=u.filter(e=>qt(r,e.handle,p,f));for(const e of h)n.push({instanceId:a.instanceId,handle:e.handle,left:e.cx-4,top:e.cy-4,cursor:e.cursor})}return n});function S(e,t,n){return"percent"===t?`${Math.round(n)}%`:"fill"===t?"fill":"auto"===t?"auto":String(Math.round(e))}const k=e.computed(()=>{if(!a.isResizing.value)return null;const e=a.resize.instanceId;if(!e)return null;const t=i.document.getInstance(e);if(!t)return null;const n=x(t);if(!n)return null;const o=t.layoutBox,r=S(n.w,null==o?void 0:o.widthMode,(null==o?void 0:o.width)??n.w),c=S(n.h,null==o?void 0:o.heightMode,(null==o?void 0:o.height)??n.h);return{x:n.x,y:n.y,w:n.w,h:n.h,wText:r,hText:c}}),B={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 M(e){var t;const n=[],o=[];for(const a of i.document.document.instances)a.parentId===e&&void 0===a.slot&&(n.push(a.instanceId),o.push(null==(t=a.layoutItem)?void 0:t.ratio));return{ids:n,ratios:o}}const C=e.computed(()=>{var e,t;const n=new Set;for(const o of u.value)if("split"===(null==(e=o.containerLayout)?void 0:e.mode)&&n.add(o.instanceId),o.parentId){const e=i.document.getInstance(o.parentId);"split"===(null==(t=null==e?void 0:e.containerLayout)?void 0:t.mode)&&n.add(e.instanceId)}if(0===n.size)return[];const o=[];for(const e of n){const t=i.document.getInstance(e);if(!t)continue;const n=t.containerLayout;if(!n||"split"!==n.mode)continue;const a=U(e)??x(t);if(!a)continue;const r=n,c=r.direction,s=r.gap??0,{ids:d,ratios:l}=M(e),u=z(r.ratios??[],l),p=Mn(a,u,c,s);0!==p.length&&o.push({parentId:e,direction:c,gap:s,effectiveRatios:u,childIds:d,parentBox:a,dividers:p})}return o});function T(e){var t;return"undefined"!=typeof globalThis&&(null==(t=globalThis.CSS)?void 0:t.escape)?globalThis.CSS.escape(e):e.replace(/["\\]/g,e=>`\\${e}`)}function L(e){const t=i.document.getInstance(e),n=null==t?void 0:t.containerLayout;return n&&"free-split"===n.mode?n:null}function E(e,t){const n=Z();if(!n)return null;const o=$t(n,`[data-hc-leaf-container="${T(e)}"][data-hc-leaf="${T(t)}"]`);if(!(o&&o instanceof HTMLElement))return null;const i=Y(o);return i&&0===i.w&&0===i.h?null:i}const D=e.computed(()=>{const e=new Set;if(i.freeSplitControlsAlways.value){for(const t of i.document.document.instances)L(t.instanceId)&&e.add(t.instanceId);return e}for(const t of u.value){L(t.instanceId)&&e.add(t.instanceId);let n=t.parentId,o=0;for(;n&&o++<100;){if(L(n)){e.add(n);break}const t=i.document.getInstance(n);if(!t)break;n=t.parentId}}return $.active&&$.containerId&&e.add($.containerId),e}),P=e.computed(()=>{if(!i.freeSplitEnabled.value)return[];h.value;const e=[];for(const t of D.value){const n=L(t);if(!n)continue;const o=Dn(n.root,e=>E(t,e));if(0===o.length)continue;const i=o.map(e=>({...e,mergeTargetLeafId:An(n.root,e.nodeId,e.dividerIndex)}));e.push({containerId:t,dividers:i})}return e}),R=e.computed(()=>{if(!i.freeSplitEnabled.value)return[];h.value;const e=[];for(const t of D.value){const n=L(t);if(!n)continue;const o=!0===n.structureLocked,i=ce(n.root);for(const n of i){const a=E(t,n.leafId);if(!a)continue;const r=!o&&!0!==n.locked;e.push({containerId:t,leafId:n.leafId,rect:a,isEmpty:null===n.instanceId,canSplit:r,canDelete:r&&i.length>1,canMove:null!==n.instanceId&&i.length>1})}}return e}),$=e.reactive({active:!1,containerId:null,sourceLeafId:null,targetLeafId:null});function A(e){const t=$.containerId,n=Z();if(!t||!n)return null;const o=Ut({x:e.clientX,y:e.clientY},n,i.viewport);for(const e of R.value){if(e.containerId!==t||e.leafId===$.sourceLeafId)continue;const n=e.rect;if(o.x>=n.x&&o.x<=n.x+n.w&&o.y>=n.y&&o.y<=n.y+n.h)return e.leafId}return null}function F(e){$.active&&($.targetLeafId=A(e))}function O(){window.removeEventListener("pointermove",F),window.removeEventListener("pointerup",j),window.removeEventListener("keydown",ue)}function N(){$.active=!1,$.containerId=null,$.sourceLeafId=null,$.targetLeafId=null}function j(e){O();const t=$.containerId,n=$.sourceLeafId,o=$.active?A(e):null;N(),t&&n&&o&&o!==n&&c.requestSwap(t,n,o)}function V(e,t,n){c.requestSplit(e,t,n,.5)}const q=e.reactive({active:!1,containerId:null,leafId:null,edge:null,leafRect:null,startPt:null});function _(){q.active=!1,q.containerId=null,q.leafId=null,q.edge=null,q.leafRect=null,q.startPt=null}const K=e.computed(()=>a.isResizing.value&&a.resize.handle?B[a.resize.handle]:r.isDragging.value?"horizontal"===r.drag.direction?"ew-resize":"ns-resize":c.isResizing.value?"horizontal"===c.resizeDrag.direction?"ew-resize":"ns-resize":a.isDragging.value?"grabbing":"hand"===i.toolMode.value?ne?"grabbing":"grab":"marquee"===i.toolMode.value?"crosshair":"default"),X=e.shallowRef(null);function H(){if(!s)return!1;if(!a.isDragging.value)return!1;if(1!==a.drag.startRects.size)return!1;const e=Array.from(a.drag.startRects.keys())[0],t=i.document.getInstance(e);return!(!t||void 0!==t.placement&&"canvas"!==t.placement&&"absolute"!==t.placement||!0===(t.lockPosition??t.locked)||t.hidden)}function Y(e){const t=Z();if(!t)return null;const n=e.getBoundingClientRect(),o=t.getBoundingClientRect(),a=i.viewport.toCanvasPoint({x:n.left-o.left,y:n.top-o.top}),r=i.viewport.toCanvasPoint({x:n.right-o.left,y:n.bottom-o.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 U(e){var t;const n=Z();if(!n)return null;const o=$t(n,`[data-instance-id="${("undefined"!=typeof globalThis&&(null==(t=globalThis.CSS)?void 0:t.escape)?globalThis.CSS.escape:e=>e.replace(/["\\]/g,e=>`\\${e}`))(e)}"] [data-hc-slot="default"]`);return o&&o instanceof HTMLElement?Y(o):null}let G=null,W=null;function J(e){if(!H()||!s)return void(null!==X.value&&(X.value=null));const t=Array.from(a.drag.startRects.keys())[0],n=s.getDropTarget(e,{excludeInstanceId:t});if(!n)return void(null!==X.value&&(X.value=null));const o=i.document.getInstance(t);if(o&&o.parentId===n.parentId&&(o.slot??"default")===(n.slot||"default"))return void(null!==X.value&&(X.value=null));const r=Y(n.outletEl);if(!r)return void(null!==X.value&&(X.value=null));const c={parentId:n.parentId,slot:n.slot},d=s.canReparent(t,c);X.value={rect:r,target:n,result:d}}const Q=e.computed(()=>X.value);function Z(){return l||(d.value?(l=d.value.closest("[data-hc-stage]"),l):null)}function ee(e){const t=Z();if(!t)return;const n=Ut({x:e.clientX,y:e.clientY},t,i.viewport);i.setMouseCanvasPoint(n)}function te(){i.setMouseCanvasPoint(null)}let ne=null;function oe(e){if(0!==e.button)return;const t=Z();if(!t)return;if("hand"===i.toolMode.value)return ne={clientX:e.clientX,clientY:e.clientY,panX:i.viewport.panX.value,panY:i.viewport.panY.value},window.addEventListener("pointermove",ie),window.addEventListener("pointerup",re),void e.preventDefault();const n=Ut({x:e.clientX,y:e.clientY},t,i.viewport),{startTracking:o}=a.handlePointerDown(n,{shift:e.shiftKey,ctrl:e.ctrlKey,meta:e.metaKey});o&&(se(),e.preventDefault())}function ie(e){if(!ne)return;const t=e.clientX-ne.clientX,n=e.clientY-ne.clientY;i.viewport.setPan(ne.panX+t,ne.panY+n)}function re(){ne=null,window.removeEventListener("pointermove",ie),window.removeEventListener("pointerup",re)}function se(){window.addEventListener("pointermove",de),window.addEventListener("pointerup",le),window.addEventListener("keydown",ue)}function de(e){const t=Z();if(!t)return;const n=Ut({x:e.clientX,y:e.clientY},t,i.viewport);var o;a.handlePointerMove(n),r.handleSplitDividerMove(n),r.isDragging.value&&v(),c.handleResizeMove(n),c.isResizing.value&&v(),o={x:e.clientX,y:e.clientY},G=o,"undefined"!=typeof requestAnimationFrame?null===W&&(W=requestAnimationFrame(()=>{W=null,G&&J(G)})):J(o)}function le(e){if(r.isDragging.value)return r.handleSplitDividerEnd(),void pe();if(c.isResizing.value)return c.handleResizeEnd(),void pe();if(q.active){const{containerId:t,leafId:n,edge:o,leafRect:a,startPt:r}=q;if(_(),pe(),!(t&&n&&o&&a&&r))return;const s=Z(),d=e&&s?Ut({x:e.clientX,y:e.clientY},s,i.viewport):r;if(("left"===o?d.x-r.x:"right"===o?r.x-d.x:"top"===o?d.y-r.y:r.y-d.y)<3)return;const l=$n(a,o,d);return void c.requestSplit(t,n,o,l)}e&&s&&H()&&J({x:e.clientX,y:e.clientY}),null!==W&&"undefined"!=typeof cancelAnimationFrame&&(cancelAnimationFrame(W),W=null);const t=X.value;if(t&&s){const e=Array.from(a.drag.startRects.keys())[0];return t.result.ok&&e?(a.cancelDrag(),s.moveInstanceInTree(e,{parentId:t.target.parentId,slot:t.target.slot})):a.cancelDrag(),X.value=null,void pe()}a.handlePointerUp(),pe()}function ue(e){"Escape"===e.key&&(a.cancelResize(),a.cancelDrag(),a.cancelMarquee(),r.cancelSplitDividerDrag(),c.cancelResize(),_(),O(),N(),X.value=null,null!==W&&"undefined"!=typeof cancelAnimationFrame&&(cancelAnimationFrame(W),W=null),re(),pe())}function pe(){window.removeEventListener("pointermove",de),window.removeEventListener("pointerup",le),window.removeEventListener("keydown",ue)}return e.onBeforeUnmount(()=>{a.cancelResize(),a.cancelDrag(),a.cancelMarquee(),r.cancelSplitDividerDrag(),c.cancelResize(),_(),O(),N(),X.value=null,pe(),re(),null!==m&&"undefined"!=typeof cancelAnimationFrame&&(cancelAnimationFrame(m),m=null),null!==y&&"undefined"!=typeof cancelAnimationFrame&&(cancelAnimationFrame(y),y=null),null!==W&&"undefined"!=typeof cancelAnimationFrame&&(cancelAnimationFrame(W),W=null),G=null}),(n,o)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"layerEl",ref:d,class:"hc-interaction-layer","data-hc-interaction-layer":"","data-mode":t.mode,style:e.normalizeStyle({position:"absolute",top:0,left:0,width:p.value.w+"px",height:p.value.h+"px",pointerEvents:e.unref(i).effectiveBehavior.value.selectable?"auto":"none",cursor:K.value,zIndex:9999}),onPointerdown:oe,onPointermove:ee,onPointerleave:te},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(w.value,t=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:"sel-"+t.instance.instanceId},[t.box?(e.openBlock(),e.createElementBlock("div",{key:0,class:"hc-selection-box","data-selection-box":t.instance.instanceId,"data-locked":e.unref(Vn)(t.instance)?"true":"false","data-placement":t.instance.placement??"absolute",style:e.normalizeStyle({position:"absolute",left:t.box.x+"px",top:t.box.y+"px",width:t.box.w+"px",height:t.box.h+"px",border:"2px solid "+(e.unref(Vn)(t.instance)?"#9ca3af":"#3b82f6"),boxSizing:"border-box",pointerEvents:"none",boxShadow:"0 0 0 1px rgba(59, 130, 246, 0.2)"})},null,12,_n)):e.createCommentVNode("",!0)],64))),128)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(w.value.filter(t=>e.unref(Vn)(t.instance)),t=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:"lock-"+t.instance.instanceId},[t.box?(e.openBlock(),e.createElementBlock("div",{key:0,class:"hc-lock-badge","data-lock-badge":t.instance.instanceId,style:e.normalizeStyle({position:"absolute",left:t.box.x+t.box.w-18+"px",top:t.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,Kn)):e.createCommentVNode("",!0)],64))),128)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(b.value,t=>(e.openBlock(),e.createElementBlock("div",{key:"rh-"+t.instanceId+"-"+t.handle,class:"hc-resize-handle","data-resize-handle":t.handle,"data-resize-instance":t.instanceId,style:e.normalizeStyle({position:"absolute",left:t.left+"px",top:t.top+"px",width:"8px",height:"8px",background:"#fff",border:"1px solid #3b82f6",boxSizing:"border-box",cursor:t.cursor,pointerEvents:"auto",zIndex:2}),onPointerdown:e=>function(e,t,n){if(0!==e.button)return;e.stopPropagation();const o=Z();if(!o)return;const r=Ut({x:e.clientX,y:e.clientY},o,i.viewport),{startTracking:c}=a.handleResizeStart(t,n,r);c&&(se(),e.preventDefault())}(e,t.instanceId,t.handle)},null,44,Xn))),128)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(C.value,t=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:"sd-parent-"+t.parentId},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.dividers,o=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:"sd-"+t.parentId+"-"+o.index},[n.$slots["split-divider"]?e.renderSlot(n.$slots,"split-divider",{key:0,state:{parentId:t.parentId,dividerIndex:o.index,direction:o.direction,rect:o.rect,isDragging:e.unref(r).isDragging.value&&e.unref(r).drag.parentId===t.parentId&&e.unref(r).drag.dividerIndex===o.index}},void 0,!0):(e.openBlock(),e.createElementBlock("div",{key:1,class:"hc-split-divider","data-hc-divider-direction":o.direction,"data-hc-divider-index":o.index,"data-hc-parent-id":t.parentId,"data-hc-divider-dragging":e.unref(r).isDragging.value&&e.unref(r).drag.parentId===t.parentId&&e.unref(r).drag.dividerIndex===o.index?"true":"false",style:e.normalizeStyle({position:"absolute",left:o.rect.x+"px",top:o.rect.y+"px",width:o.rect.w+"px",height:o.rect.h+"px",background:e.unref(r).isDragging.value&&e.unref(r).drag.parentId===t.parentId&&e.unref(r).drag.dividerIndex===o.index?"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,t,n){if(0!==e.button)return;e.stopPropagation();const o=Z();if(!o)return;const a=i.document.getInstance(t);if(!a)return;const c=a.containerLayout;if(!c||"split"!==c.mode)return;const s=c,d=U(t)??x(a);if(!d)return;const l="horizontal"===s.direction?d.w:d.h,{ids:u,ratios:p}=M(t),f=z(s.ratios??[],p),h=Ut({x:e.clientX,y:e.clientY},o,i.viewport),{startTracking:g}=r.handleSplitDividerStart({parentId:t,dividerIndex:n,startRatios:f,childIds:u,parentAxisPx:l,direction:s.direction,gap:s.gap??0,canvasPt:h});g&&(se(),e.preventDefault())}(e,t.parentId,o.index)},null,44,Hn))],64))),128))],64))),128)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(R.value,t=>(e.openBlock(),e.createElementBlock("div",{key:"fsl-"+t.containerId+"-"+t.leafId,class:e.normalizeClass(["hc-fs-leaf-edge",{"is-empty":t.isEmpty,"is-drop-target":$.active&&$.containerId===t.containerId&&$.targetLeafId===t.leafId}]),"data-hc-fs-leaf":t.leafId,"data-hc-fs-leaf-container":t.containerId,style:e.normalizeStyle({position:"absolute",left:t.rect.x+"px",top:t.rect.y+"px",width:t.rect.w+"px",height:t.rect.h+"px",background:"transparent",pointerEvents:"auto",boxSizing:"border-box",zIndex:1}),onPointerdown:e=>function(e,t,n,o){if(0!==e.button)return;const a=Z();if(!a)return;const r=Ut({x:e.clientX,y:e.clientY},a,i.viewport),c=Rn(o,r);c&&(e.stopPropagation(),e.preventDefault(),q.active=!0,q.containerId=t,q.leafId=n,q.edge=c.edge,q.leafRect={...o},q.startPt=r,se())}(e,t.containerId,t.leafId,t.rect)},[t.isEmpty?(e.openBlock(),e.createElementBlock("div",Un,[...o[3]||(o[3]=[e.createElementVNode("span",{class:"hc-fs-leaf-hint"},"拖组件进来",-1)])])):e.createCommentVNode("",!0),t.canSplit||t.canDelete||t.canMove?(e.openBlock(),e.createElementBlock("div",{key:1,class:"hc-fs-leaf-toolbar",onPointerdown:o[0]||(o[0]=e.withModifiers(()=>{},["stop"]))},[t.canMove?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"hc-fs-leaf-btn hc-fs-leaf-move",title:"拖动:移动 / 交换到另一格",onPointerdown:e.withModifiers(e=>{return n=e,o=t.containerId,i=t.leafId,void(0===n.button&&(n.stopPropagation(),n.preventDefault(),$.active=!0,$.containerId=o,$.sourceLeafId=i,$.targetLeafId=null,window.addEventListener("pointermove",F),window.addEventListener("pointerup",j),window.addEventListener("keydown",ue)));var n,o,i},["stop"])},"⠿",40,Gn)):e.createCommentVNode("",!0),t.canSplit?(e.openBlock(),e.createElementBlock("button",{key:1,type:"button",class:"hc-fs-leaf-btn",title:"竖切(分左右)",onClick:e.withModifiers(e=>V(t.containerId,t.leafId,"right"),["stop"])},"⬌",8,Wn)):e.createCommentVNode("",!0),t.canSplit?(e.openBlock(),e.createElementBlock("button",{key:2,type:"button",class:"hc-fs-leaf-btn",title:"横切(分上下)",onClick:e.withModifiers(e=>V(t.containerId,t.leafId,"bottom"),["stop"])},"⬍",8,Jn)):e.createCommentVNode("",!0),t.canDelete?(e.openBlock(),e.createElementBlock("button",{key:3,type:"button",class:"hc-fs-leaf-btn hc-fs-leaf-btn--danger",title:"删除此区(并入相邻)",onClick:e.withModifiers(e=>{return n=t.containerId,o=t.leafId,void c.requestDelete(n,o);var n,o},["stop"])},"✕",8,Qn)):e.createCommentVNode("",!0)],32)):e.createCommentVNode("",!0)],46,Yn))),128)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(P.value,t=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:"fsd-cnt-"+t.containerId},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.dividers,a=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:"fsd-"+t.containerId+"-"+a.nodeId+"-"+a.dividerIndex},[n.$slots["free-split-divider"]?e.renderSlot(n.$slots,"free-split-divider",{key:0,state:{containerId:t.containerId,nodeId:a.nodeId,dividerIndex:a.dividerIndex,direction:a.direction,rect:a.rect,isDragging:e.unref(c).isResizing.value&&e.unref(c).resizeDrag.containerId===t.containerId&&e.unref(c).resizeDrag.nodeId===a.nodeId&&e.unref(c).resizeDrag.dividerIndex===a.dividerIndex}},void 0,!0):(e.openBlock(),e.createElementBlock("div",{key:1,class:"hc-fs-divider","data-hc-fs-divider-direction":a.direction,"data-hc-fs-divider-node":a.nodeId,"data-hc-fs-divider-index":a.dividerIndex,"data-hc-fs-container-id":t.containerId,"data-hc-fs-divider-dragging":e.unref(c).isResizing.value&&e.unref(c).resizeDrag.containerId===t.containerId&&e.unref(c).resizeDrag.nodeId===a.nodeId&&e.unref(c).resizeDrag.dividerIndex===a.dividerIndex?"true":"false",style:e.normalizeStyle({position:"absolute",left:a.rect.x+"px",top:a.rect.y+"px",width:a.rect.w+"px",height:a.rect.h+"px",background:e.unref(c).isResizing.value&&e.unref(c).resizeDrag.containerId===t.containerId&&e.unref(c).resizeDrag.nodeId===a.nodeId&&e.unref(c).resizeDrag.dividerIndex===a.dividerIndex?"rgba(59, 130, 246, 0.6)":"rgba(59, 130, 246, 0.18)",cursor:"horizontal"===a.direction?"ew-resize":"ns-resize",pointerEvents:"auto",boxSizing:"border-box",zIndex:3}),onPointerdown:e=>function(e,t,n,o){if(0!==e.button)return;e.stopPropagation();const a=Z();if(!a)return;const r=L(t);if(!r)return;const s=ae(r.root,n);if(!s)return;const d=En(s,e=>E(t,e));if(!d)return;const l="row"===s.dir?"horizontal":"vertical",u="horizontal"===l?d.w:d.h,p=Ut({x:e.clientX,y:e.clientY},a,i.viewport),{startTracking:f}=c.handleResizeStart({containerId:t,nodeId:n,dividerIndex:o,startSizes:s.sizes.map(e=>({...e})),branchAxisPx:u,direction:l,canvasPt:p});f&&(se(),e.preventDefault())}(e,t.containerId,a.nodeId,a.dividerIndex),onDblclick:e=>function(e,t,n,o){e.stopPropagation();const i=L(t);if(!i)return;const a=An(i.root,n,o);a&&c.requestMerge(t,a)}(e,t.containerId,a.nodeId,a.dividerIndex)},[o[4]||(o[4]=e.createElementVNode("span",{class:"hc-fs-divider-grip","aria-hidden":"true"},null,-1)),a.mergeTargetLeafId?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"hc-fs-merge-btn",title:"合并(并入相邻空格)",onPointerdown:o[1]||(o[1]=e.withModifiers(()=>{},["stop"])),onDblclick:o[2]||(o[2]=e.withModifiers(()=>{},["stop"])),onClick:e.withModifiers(e=>function(e,t,n){const o=L(e);if(!o)return;const i=An(o.root,t,n);i&&c.requestMerge(e,i)}(t.containerId,a.nodeId,a.dividerIndex),["stop"])},"⤧",40,eo)):e.createCommentVNode("",!0)],44,Zn))],64))),128))],64))),128)),k.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"hc-resize-badge","data-resize-badge":"",style:e.normalizeStyle({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"})},e.toDisplayString(k.value.wText)+" × "+e.toDisplayString(k.value.hText),5)):e.createCommentVNode("",!0),e.unref(a).marqueeRect.value?(e.openBlock(),e.createElementBlock("div",{key:1,class:"hc-marquee-box","data-marquee-box":"",style:e.normalizeStyle({position:"absolute",left:e.unref(a).marqueeRect.value.x+"px",top:e.unref(a).marqueeRect.value.y+"px",width:e.unref(a).marqueeRect.value.w+"px",height:e.unref(a).marqueeRect.value.h+"px",border:"1px dashed #3b82f6",background:"rgba(59, 130, 246, 0.08)",pointerEvents:"none",boxSizing:"border-box"})},null,4)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(a).snapLines.value,(t,n)=>(e.openBlock(),e.createElementBlock("div",{key:"snap-"+n,class:"hc-snap-line","data-snap-line":"","data-axis":t.axis,"data-kind":t.kind,style:e.normalizeStyle("x"===t.axis?{position:"absolute",left:t.pos+"px",top:t.from+"px",width:"0px",height:t.to-t.from+"px",borderLeft:"1px dashed #ec4899",pointerEvents:"none"}:{position:"absolute",left:t.from+"px",top:t.pos+"px",width:t.to-t.from+"px",height:"0px",borderTop:"1px dashed #ec4899",pointerEvents:"none"})},null,12,to))),128)),Q.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[n.$slots["reparent-ghost"]?e.renderSlot(n.$slots,"reparent-ghost",{key:0,state:Q.value},void 0,!0):(e.openBlock(),e.createElementBlock("div",{key:1,class:"hc-reparent-ghost","data-hc-reparent-ghost":"","data-hc-reparent-state":Q.value.result.ok?"legal":"illegal",style:e.normalizeStyle({position:"absolute",left:Q.value.rect.x+"px",top:Q.value.rect.y+"px",width:Q.value.rect.w+"px",height:Q.value.rect.h+"px",pointerEvents:"none",boxSizing:"border-box",border:"2px solid "+(Q.value.result.ok?"#22c55e":"#ef4444"),background:Q.value.result.ok?"rgba(34, 197, 94, 0.12)":"rgba(239, 68, 68, 0.12)"})},[!Q.value.result.ok&&Q.value.result.message?(e.openBlock(),e.createElementBlock("div",{key:0,class:"hc-reparent-ghost__message","data-hc-reparent-ghost-message":"","data-hc-reparent-ghost-reason":Q.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"}},[Q.value.result.reason?(e.openBlock(),e.createElementBlock("span",io,"["+e.toDisplayString(Q.value.result.reason)+"]",1)):e.createCommentVNode("",!0),e.createElementVNode("span",null,e.toDisplayString(Q.value.result.message),1)],8,oo)):e.createCommentVNode("",!0)],12,no))],64)):e.createCommentVNode("",!0)],44,qn))}}),[["__scopeId","data-v-bc77f713"]]),ro=e.defineComponent({__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(t,{expose:n,emit:o}){const i=t,a=o;let r=!1;const c=i.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)}`}(),s=Me({canvasId:c,initialDocument:i.modelValue,getMode:()=>i.mode,adapters:i.adapters,freeSplitEnabled:()=>"function"==typeof i.freeSplitEnabled?i.freeSplitEnabled():i.freeSplitEnabled,freeSplitControlsAlways:()=>"function"==typeof i.freeSplitControlsAlways?i.freeSplitControlsAlways():i.freeSplitControlsAlways,cascadeRemove:i.cascadeRemove});ze(s);const d=e.ref(null),l=yn(s,{getStageEl:()=>{var e;return(null==(e=d.value)?void 0:e.querySelector("[data-hc-stage]"))??null},resolveContract:function(e){var t;const n=null==(t=i.componentSourceMap)?void 0:t[e];if(n)return"contract"in n&&n.contract?n.contract:void 0}}),u=!!s.adapters.data,p=We({canvasId:c,source:{getDocument:()=>s.document.document,onAction:e=>s.registerHooks({onAfterAction:t=>e(t)})},initialMode:xn(i.mode),dataStore:u?s.dataStore:void 0});l.attachBindingDelegate(p,u?s.dataStore:null),a("context-ready",s),a("handle-ready",l);const f={getDropTarget:(e,t)=>l.getDropTarget(e,d.value,t),canReparent:(e,t)=>l.canReparent(e,t),moveInstanceInTree:(e,t)=>l.moveInstanceInTree(e,t),cannotReparentEvent:l.cannotReparentEvent};function h(){a("update:modelValue",JSON.parse(JSON.stringify(s.document.document)))}return e.provide(In,f),e.watch(()=>i.modelValue,(e,t)=>{if(e&&e!==t){r=!0;try{s.suppressRecording(()=>{s.dispatch({type:"replaceDocument",payload:{document:e}})})}finally{r=!1}}}),e.watch(()=>s.document.document,()=>{r||s.isBatching.value||h()},{deep:!0,flush:"sync"}),e.watch(()=>s.isBatching.value,(e,t)=>{!t||e||r||h()},{flush:"sync"}),e.onMounted(()=>{St(c,l),e.nextTick(()=>{p.setMode(xn(i.mode))})}),e.watch(()=>i.mode,e=>{p.setMode(xn(e))}),e.onBeforeUnmount(()=>{p.dispose(),l.attachBindingDelegate(null,null),kt(c),l.dispose(),s.dispose()}),n({context:s,handle:l,canvasId:c}),(n,o)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"stageContainerEl",ref:d,class:"hc-canvas-designer",style:{width:"100%",height:"100%",position:"relative"},"data-hc-canvas-designer":""},[e.createVNode(bn,null,{default:e.withCtx(()=>[e.createVNode(kn,{"component-source-map":t.componentSourceMap,mode:t.mode,"scheduler-options":t.schedulerOptions,"canvas-id":e.unref(c)},null,8,["component-source-map","mode","scheduler-options","canvas-id"]),"runtime"!==t.mode?(e.openBlock(),e.createBlock(ao,{key:0,mode:t.mode,onCannotDragSlotChild:o[0]||(o[0]=e=>a("cannot-drag-slot-child",e)),onCannotDragLayoutManagedChild:o[1]||(o[1]=e=>a("cannot-drag-layout-managed-child",e))},e.createSlots({_:2},[n.$slots["reparent-ghost"]?{name:"reparent-ghost",fn:e.withCtx(t=>[e.renderSlot(n.$slots,"reparent-ghost",e.normalizeProps(e.guardReactiveProps(t)))]),key:"0"}:void 0,n.$slots["split-divider"]?{name:"split-divider",fn:e.withCtx(t=>[e.renderSlot(n.$slots,"split-divider",e.normalizeProps(e.guardReactiveProps(t)))]),key:"1"}:void 0,n.$slots["free-split-divider"]?{name:"free-split-divider",fn:e.withCtx(t=>[e.renderSlot(n.$slots,"free-split-divider",e.normalizeProps(e.guardReactiveProps(t)))]),key:"2"}:void 0]),1032,["mode"])):e.createCommentVNode("",!0),e.renderSlot(n.$slots,"canvas-overlay",{viewport:e.unref(l).viewport,handle:e.unref(l)}),e.renderSlot(n.$slots,"default")]),_:3})],512))}});function co(e={}){const{canvasWidth:t=1280,canvasHeight:n=720,rootLayout:o="free",instances:i=[],bindings:a=[]}=e;return{schemaVersion:"1",layout:{type:"free",canvas:{width:{mode:"px",value:t},height:{mode:"px",value:n}},rootLayout:"string"==typeof o?{mode:o}:o},instances:i,bindings:a}}const so={event:["instanceEvent"],init:["lifecycle","page"],data:["dataSource"]};function lo(e){return so[e.type].includes(e.source.kind)}function uo(e,t,n,o){const i={level:t,code:e,bindingId:n.id,message:`${e} on binding "${n.id}"`};return o.instanceId&&(i.instanceId=o.instanceId),o.canvasId&&(i.canvasId=o.canvasId),i}function po(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 fo(e){switch(e.source.kind){case"instanceEvent":case"lifecycle":return e.source.canvasId;case"page":case"dataSource":return}}function ho(e){switch(e.target.kind){case"instanceMethod":case"instanceEmit":case"instanceDataInput":return e.target.canvasId}}exports.CANVAS_CONTEXT_KEY=Be,exports.CANVAS_REPARENT_BRIDGE_KEY=In,exports.CanvasStage=bn,exports.DEFAULT_FIT_PADDING=40,exports.DIVIDER_HIT_THICKNESS=8,exports.DRAG_THRESHOLD_CANVAS_PX=3,exports.EFFECTIVE_DEFAULT_SLOT=Te,exports.HandleDisposedError=Tt,exports.HyperCardCanvasDesigner=ro,exports.HyperCardPageRenderer=It,exports.InteractionLayer=ao,exports.MAX_INSTANCE_TREE_DEPTH=8,exports.MAX_SPLIT_TREE_DEPTH=8,exports.MIN_INSTANCE_SIZE=8,exports.MIN_RATIO_FRACTION=Bn,exports.RuntimeLayer=kn,exports.SLOT_CHILD_RESIZE_HANDLES=["e","s","se"],exports.VERSION="0.0.0-d3.6c-stage",exports.applyEffectiveSplitRatiosToDocument=v,exports.applyFreeSplitResizeDrag=Pn,exports.applySplitDividerDrag=zn,exports.bindingModeForCanvasMode=xn,exports.bindingReferencesInstance=W,exports.buildInstanceTree=tn,exports.canReparent=en,exports.canvasSizeToCss=$,exports.cleanLayoutItem=Y,exports.clientToCanvas=Ut,exports.computeContentBounds=dn,exports.computeEffectiveSplitRatios=z,exports.computeFit=un,exports.computeFreeSplitDividers=Dn,exports.computeFreeSplitNodeRect=En,exports.computeInverse=Bt,exports.computeNextAxisSize=Kt,exports.computeNextLayoutBoxAxis=Xt,exports.computeParentLayoutMode=H,exports.computeSelectionBounds=ln,exports.computeSlotChildCanvasRect=_t,exports.computeSnap=Et,exports.computeSplitDividers=Mn,exports.computeSplitShare=$n,exports.computeVisibleBounds=pn,exports.containerLayoutToCss=P,exports.createAssetResolver=we,exports.createCanvasContext=Me,exports.createCanvasHandle=yn,exports.createCanvasInteraction=Wt,exports.createCommandRecorder=Ct,exports.createDocumentStore=Z,exports.createFreePageDocument=function(e={}){return co({...e,rootLayout:"free"})},exports.createFreeSplitInteraction=On,exports.createMinimalPageDocument=co,exports.createRenderScheduler=U,exports.createSelectionStore=ee,exports.createSplitDividerInteraction=Cn,exports.createViewportStore=te,exports.deriveComponentContract=et,exports.deriveComponentKind=function(e,n){const o="string"==typeof(null==e?void 0:e.js)?e.js:"",i="string"==typeof(null==e?void 0:e.html)?e.html:"",a=t.parseComponentSource(o,i);return!a.ok&&(null==n?void 0:n.fallback)?n.fallback:a.kind},exports.effectiveSlot=Le,exports.emptyComponentContract=function(){return{propsDecl:[],emitsDecl:[],methodsDecl:[],slotsDecl:[],modelDecl:[],dataInputsDecl:[],dataOutputsDecl:[]}},exports.emptyPageDocument=function(){return{schemaVersion:"1",layout:{type:"free",canvas:{width:{mode:"fill"},height:{mode:"fill"}}},instances:[],bindings:[]}},exports.filterExistingIds=Gt,exports.filterInstancesInRect=Rt,exports.findInstanceBreadcrumb=rn,exports.findInstancePath=an,exports.getBindingInstanceRefs=G,exports.getDefaultShortcuts=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"}]},exports.getDesignerHandle=function(e){return xt.get(e)??null},exports.getInstanceWrapperRectFromDom=Ft,exports.getOutletRectFromDom=At,exports.getParentLayoutMode=Ot,exports.getRendererDiagnostics=function(e){return n.get(e)??null},exports.getSiblings=cn,exports.getSlotChildRectFromDom=function(e,t){var n;const o=t??("undefined"!=typeof document&&"function"==typeof document.querySelector?document:null);if(!o)return null;const i="undefined"!=typeof globalThis&&(null==(n=globalThis.CSS)?void 0:n.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},exports.hitTestInstance=Dt,exports.isAdditive=Yt,exports.isCanvasRootPlacement=function(e){return"canvas"===e||"absolute"===e||void 0===e},exports.isContainerChildPlacement=X,exports.isDraftKey=function(e){return"string"==typeof e&&e.includes("@draft:")},exports.isEditingText=hn,exports.isFreePositionLayoutMode=Nt,exports.isFreeSplitEnabled=function(){return!1},exports.isInstanceEffectivelyLocked=Vn,exports.isInstancePositionLocked=Nn,exports.isInstanceSizeLocked=jn,exports.isResizeHandleAllowed=qt,exports.isV1Layout=T,exports.layoutItemToCss=R,exports.listRegisteredCanvasIds=function(){return Object.freeze(Array.from(xt.keys()))},exports.listRendererDiagnostics=function(){return[...n.values()]},exports.matchBinding=gn,exports.migrateGridCellsToLayoutItem=y,exports.migrateInstanceToLayoutBox=q,exports.migrateLayoutV0ToV1=C,exports.migratePlacementToCanvasContainer=V,exports.migrateRootLayout=K,exports.normalizeComponentOverrides=x,exports.normalizeFreeSplitContainersInDocument=function(e){return e},exports.normalizeFreeSplitTreeShape=function e(t){if(!t||"object"!=typeof t)return g();const n=t;if("leaf"===n.type){const e={type:"leaf",leafId:"string"==typeof n.leafId&&n.leafId?n.leafId:h(),instanceId:"string"==typeof n.instanceId?n.instanceId:null};return!0===n.locked&&(e.locked=!0),e}if("split"===n.type){const t=(Array.isArray(n.children)?n.children:[]).map(t=>e(t));if(0===t.length)return g();if(1===t.length)return t[0];const o=Array.isArray(n.sizes)?n.sizes:[],i=t.map((e,t)=>function(e){if(e&&"object"==typeof e){const t=e;if("px"===t.mode){const e={mode:"px",value:"number"==typeof t.value&&Number.isFinite(t.value)&&t.value>=0?t.value:0};let n="number"==typeof t.min&&Number.isFinite(t.min)&&t.min>=0?t.min:void 0,o="number"==typeof t.max&&Number.isFinite(t.max)&&t.max>=0?t.max:void 0;return void 0!==n&&void 0!==o&&n>o&&(n=void 0,o=void 0),void 0!==n&&(e.min=n),void 0!==o&&(e.max=o),e}return{mode:"ratio",value:"number"==typeof t.value&&Number.isFinite(t.value)&&t.value>0?t.value:1}}return{mode:"ratio",value:1}}(o[t]));return{type:"split",nodeId:"string"==typeof n.nodeId&&n.nodeId?n.nodeId:f("nd_",10,()=>Math.floor(0xffffffffff*Math.random()).toString(36)),dir:"col"===n.dir?"col":"row",children:t,sizes:i}}return g()},exports.normalizeGridCells0Based=I,exports.normalizeInstanceSlotFields=w,exports.normalizeKeyString=mn,exports.normalizeMarqueeRect=Pt,exports.normalizePageBindings=d,exports.normalizePageDocument=m,exports.parseComponentVersionKey=function(e){if("string"!=typeof e||!e.includes("@"))return null;const t=e.indexOf("@"),n=e.slice(0,t),o=e.slice(t+1);if(!n)return null;if(o.startsWith("draft:")){const e=o.slice(6),t=e.indexOf(":");if(t<=0)return null;const i=e.slice(0,t),a=e.slice(t+1);return i&&a?{kind:"draft",componentId:n,pageId:i,baseVersion:a,baseVersionKey:`${n}@${a}`}:null}return o?{kind:"published",componentId:n,version:o}:null},exports.parseKeyEvent=fn,exports.provideCanvasContext=ze,exports.registerDesignerHandle=St,exports.registerRendererDiagnostics=a,exports.renderLayoutBoxStyle=E,exports.resolveCanvasSizePx=function(e,t=1920){return"px"===e.mode?e.value:t},exports.resolveFreeSplitMergeTarget=An,exports.resolveMeasuredCanvasSizePx=L,exports.resolveSplitEdge=Rn,exports.subscribeDesignerRegistry=function(e){return wt.add(e),()=>{wt.delete(e)}},exports.subscribeRendererDiagnostics=function(e){return o.add(e),()=>o.delete(e)},exports.unionRects=sn,exports.unregisterDesignerHandle=kt,exports.unregisterRendererDiagnostics=r,exports.useCanvasContext=Ce,exports.validateBindings=function(e,t){var n,o,i;const a=[],r=new Map;for(const t of e.instances)r.set(t.instanceId,t);const c=null==t?void 0:t.currentCanvasId,s=null==t?void 0:t.resolveContract;let d=null,l=null;if(s){d=new Map,l=new Map;for(const t of e.instances){const e=s(t.componentVersionKey);if(d.set(t.instanceId,e),e)for(const n of e.dataInputsDecl)if(n.required){let e=l.get(t.instanceId);e||(e=new Set,l.set(t.instanceId,e)),e.add(n.key)}}}for(const t of e.bindings)if(lo(t)){if(void 0!==c){const e=fo(t),n=ho(t);void 0!==e&&e!==c&&a.push(uo("unsupported-cross-canvas","error",t,{canvasId:e})),void 0!==n&&n!==c&&a.push(uo("unsupported-cross-canvas","error",t,{canvasId:n}))}switch(t.source.kind){case"instanceEvent":{const e=t.source.event,n=r.get(t.source.instanceId);if(n){if(d){const o=d.get(n.instanceId);o&&!o.emitsDecl.some(t=>t.event===e)&&a.push(uo("unknown-source-event","error",t,{instanceId:n.instanceId}))}}else a.push(uo("orphan-binding","warn",t,{instanceId:t.source.instanceId}));break}case"lifecycle":r.get(t.source.instanceId)||a.push(uo("orphan-binding","warn",t,{instanceId:t.source.instanceId}))}switch(t.target.kind){case"instanceMethod":{const e=t.target.method,n=r.get(t.target.instanceId);if(n){if(d){const o=d.get(n.instanceId);o&&!o.methodsDecl.some(t=>t.key===e)&&a.push(uo("unknown-target-method","error",t,{instanceId:n.instanceId}))}}else a.push(uo("orphan-binding","warn",t,{instanceId:t.target.instanceId}));break}case"instanceEmit":{const e=t.target.event,n=r.get(t.target.instanceId);if(n){if(d){const o=d.get(n.instanceId);o&&!o.emitsDecl.some(t=>t.event===e)&&a.push(uo("unknown-target-event","error",t,{instanceId:n.instanceId}))}}else a.push(uo("orphan-binding","warn",t,{instanceId:t.target.instanceId}));break}case"instanceDataInput":{const e=t.target.key,o=r.get(t.target.instanceId);if(o){if(d){const i=d.get(o.instanceId);i&&!i.dataInputsDecl.some(t=>t.key===e)?a.push(uo("unknown-target-data-input","error",t,{instanceId:o.instanceId})):l&&(null==(n=l.get(o.instanceId))||n.delete(e))}}else a.push(uo("orphan-binding","warn",t,{instanceId:t.target.instanceId}));break}}(null==(o=t.schedule)?void 0:o.throttle)&&t.schedule.throttle.windowMs<16&&a.push(uo("schedule-window-too-small","info",t,po(t))),(null==(i=t.schedule)?void 0:i.debounce)&&t.schedule.debounce.windowMs<16&&a.push(uo("schedule-window-too-small","info",t,po(t)))}else a.push(uo("invalid-type-source-kind","error",t,po(t)));if(l)for(const[e,t]of l)for(const n of t){const t={level:"warn",code:"required-data-input-missing",instanceId:e,key:n,message:`Required dataInput "${n}" on instance "${e}" is not fed by any binding`};a.push(t)}return a},exports.validateInstanceTree=Ee,exports.wirePageBindings=We;
|
|
2
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),t=require("@hy-bricks/core"),n=new Map,o=new Set;function i(e,t){const n=[...o];for(const o of n)try{o(e,t)}catch{}}function a(e,t){n.has(e)&&console.warn(`[hc-rendererDiagnostics] canvasId "${e}" already registered, overwriting`),n.set(e,t),i("register",e)}function r(e){n.has(e)&&(n.delete(e),i("unregister",e))}function c(e){return JSON.parse(JSON.stringify(e))}const s="[hc-canvas/normalizeBindings]";function d(e){if(!Array.isArray(e))return[];const t=[];for(let n=0;n<e.length;n++){const o=e[n];if(!o||"object"!=typeof o){console.warn(`${s} dropped non-object binding at index ${n}`);continue}if(l(o)){t.push(o);continue}const i=u(o);null!==i&&t.push(i)}return t}function l(e){if(!e||"object"!=typeof e)return!1;const t=e;if("string"!=typeof t.id||0===t.id.length)return!1;if("event"!==t.type&&"init"!==t.type&&"data"!==t.type)return!1;const n=t.source;if(!n||"object"!=typeof n)return!1;if("string"!=typeof n.kind)return!1;const o=t.target;return!(!o||"object"!=typeof o)&&"string"==typeof o.kind}function u(e){if("string"!=typeof e.id||0===e.id.length)return console.warn(`${s} dropped binding with missing/invalid id`),null;const t=e.target;if(!t||"object"!=typeof t||"string"!=typeof t.instanceId||""===t.instanceId||"string"!=typeof t.method)return console.warn(`${s} dropped binding "${e.id}" missing/invalid target`),null;const n=e.type;let o;if("event"===n){const t=e.source;if(!t||"object"!=typeof t||"string"!=typeof t.instanceId||""===t.instanceId||"string"!=typeof t.event)return console.warn(`${s} dropped event binding "${e.id}" missing/invalid source`),null;o={kind:"instanceEvent",instanceId:t.instanceId,event:t.event}}else{if("init"!==n)return console.warn(`${s} dropped binding "${e.id}" with unknown legacy type "${String(e.type)}"`),null;{const t=e.source;t&&"string"==typeof t.instanceId&&""!==t.instanceId&&console.warn(`${s} init binding "${e.id}" had source.instanceId, discarded`),o={kind:"page",hook:"pageInit"}}}const i={kind:"instanceMethod",instanceId:t.instanceId,method:t.method};let a;a=void 0===t.args?{kind:"passthrough"}:Array.isArray(t.args)&&0===t.args.length?{kind:"static",args:[]}:Array.isArray(t.args)?{kind:"static",args:c(t.args)}:{kind:"passthrough"};const r={},d=e.options;d&&"object"==typeof d&&(!0===d.once&&(r.once=!0),"number"==typeof d.throttleMs&&(r.throttle={windowMs:d.throttleMs}),"number"==typeof d.debounceMs&&(r.debounce={windowMs:d.debounceMs}));const l=void 0!==r.once||void 0!==r.throttle||void 0!==r.debounce,u={id:e.id,source:o,target:i,mapping:a,...void 0!==e.disabled?{disabled:e.disabled}:{},...l?{schedule:r}:{}};return"event"===n?{...u,type:"event"}:{...u,type:"init"}}function p(e){if("object"!=typeof e||null===e)return!0;const{mode:t,value:n,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"!==t&&"px"!==t||"number"!=typeof n||!Number.isFinite(n)||"ratio"===t&&n<=0||"px"===t&&n<0||a}function f(e,t=8,n=()=>Math.random().toString(36).slice(2,2+t)){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,t):n()}`}function h(){return f("lf_",10,()=>Math.floor(0xffffffffff*Math.random()).toString(36))}function g(){return{type:"leaf",leafId:h(),instanceId:null}}function m(e){const t=e.instances.map(w),n=x(e.componentOverrides,t),o=d(e.bindings);if("1"===e.schemaVersion){const i=K(T(e.layout)?e.layout:C(e.layout));return{...e,layout:i,instances:t,bindings:o,componentOverrides:n}}return{schemaVersion:"1",layout:K(C(e.layout)),instances:t,bindings:o,componentOverrides:n}}function v(e){const t=function(e){var t;const n=new Map;for(const o of e){if(!o.parentId)continue;if(void 0!==o.slot)continue;const e=n.get(o.parentId),i=null==(t=o.layoutItem)?void 0:t.ratio;e?e.push(i):n.set(o.parentId,[i])}let o=!1;const i=e.map(e=>{if(!e.containerLayout||"split"!==e.containerLayout.mode)return e;const t=n.get(e.instanceId)??[],i=e.containerLayout.ratios,a=z(i,t);return i.length===a.length&&i.every((e,t)=>e===a[t])?e:(o=!0,{...e,containerLayout:{...e.containerLayout,ratios:a}})});return o?i:e}(e.instances),n=e.layout.rootLayout?function(e,t){const n=e.rootLayout;if(!n||"split"!==n.mode)return e;const o=t.filter(e=>void 0===e.parentId).map(e=>{var t;return null==(t=e.layoutItem)?void 0:t.ratio}),i=n.ratios,a=z(i,o);return i.length===a.length&&i.every((e,t)=>e===a[t])?e:{...e,rootLayout:{...n,ratios:a}}}(e.layout,t):e.layout;return t===e.instances&&n===e.layout?e:{...e,layout:n,instances:t}}function y(e){const t=new Map,n=new Set;for(const o of e.instances){const e=o.containerLayout;if("grid"!==(null==e?void 0:e.mode))continue;n.add(o.instanceId);const i=e.cells;i&&"object"==typeof i&&Object.keys(i).length>0&&t.set(o.instanceId,I(i))}if(0===n.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(!n.has(e.parentId))return e;const i=e.layoutItem;if(i&&("number"==typeof i.row||"number"==typeof i.column)){const t=function(e){const t="number"==typeof e.row&&Number.isFinite(e.row)&&e.row<1,n="number"==typeof e.column&&Number.isFinite(e.column)&&e.column<1;if(!t&&!n)return e;const o={...e};return t&&(o.row=1),n&&(o.column=1),o}(i);return t===i?e:(o=!0,{...e,layoutItem:t})}const a=t.get(e.parentId),r=null==a?void 0:a[e.instanceId];if(!r)return e;const c=function(e){const t={};return"number"==typeof e.row&&Number.isFinite(e.row)&&(t.row=e.row<1?1:e.row),"number"==typeof e.column&&Number.isFinite(e.column)&&(t.column=e.column<1?1:e.column),void 0===t.row&&void 0===t.column?null:("number"==typeof e.rowSpan&&Number.isFinite(e.rowSpan)&&e.rowSpan>0&&e.rowSpan<=32&&(t.rowSpan=e.rowSpan),"number"==typeof e.columnSpan&&Number.isFinite(e.columnSpan)&&e.columnSpan>0&&e.columnSpan<=32&&(t.columnSpan=e.columnSpan),t)}(r);return c?(o=!0,{...e,layoutItem:{...i??{},...c}}):e});return o?{...e,instances:i}:e}function I(e){let t=!1;for(const n of Object.values(e))if(n&&(0===n.row||0===n.column)){t=!0;break}if(!t)return e;const n={};for(const[t,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),n[t]=e}return n}function x(e,t){if(!e||"object"!=typeof e||Array.isArray(e))return{};const n=new Set(t.map(e=>e.instanceId)),o={};for(const[t,i]of Object.entries(e)){if(!i||"object"!=typeof i||Array.isArray(i))continue;const e=i;e.instanceId===t&&n.has(e.instanceId)&&"string"==typeof e.baseVersionKey&&e.baseVersionKey&&A(e.source)&&F(e.contract)&&(o[t]={instanceId:e.instanceId,baseVersionKey:e.baseVersionKey,source:e.source,contract:e.contract,...O(e.contractParseError)?{contractParseError:O(e.contractParseError)}:{},..."string"==typeof e.createdAt?{createdAt:e.createdAt}:{},..."string"==typeof e.updatedAt?{updatedAt:e.updatedAt}:{}})}return o}function w(e){let t=e;void 0===t.parentId&&t.slotPlacement&&(t={...t,parentId:t.slotPlacement.parentInstanceId,slot:t.slotPlacement.slotName}),""!==t.slot&&"default"!==t.slot||(t={...t,slot:void 0}),void 0===t.placement&&(t={...t,placement:void 0===t.parentId?"absolute":"slot"});const n=S(t.sizing,t.size);if(n!==t.size&&(t={...t,size:n}),void 0!==t.containerLayout){const e=M(t.containerLayout);if(e!==t.containerLayout)if(null===e){const{containerLayout:e,...n}=t;t=n}else t={...t,containerLayout:e}}if(t=V(t),t=q(t),void 0!==t.layoutItem){const e=Y(t.layoutItem);if(null===e){const{layoutItem:e,...n}=t;t=n}else e!==t.layoutItem&&(t={...t,layoutItem:e})}if(!0===t.locked){const e={};void 0===t.lockPosition&&(e.lockPosition=!0),void 0===t.lockSize&&(e.lockSize=!0),Object.keys(e).length>0&&(t={...t,...e})}return t}const b=new Set(["px","percent","fill","hug","auto"]);function S(e,t){var n,o,i,a;const r=t?function(e){const t={},n=B(e.width),o=B(e.height);return n&&(t.width=n),o&&(t.height=o),t.width||t.height?t:void 0}(t):void 0;if(!e)return r;const c={};if(e.width){const t=k(e.width,null==(n=e.min)?void 0:n.w,null==(o=e.max)?void 0:o.w);t&&(c.width=t)}if(e.height){const t=k(e.height,null==(i=e.min)?void 0:i.h,null==(a=e.max)?void 0:a.h);t&&(c.height=t)}return r?{width:r.width??c.width,height:r.height??c.height}:Object.keys(c).length>0?c:void 0}function k(e,t,n){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 t&&(i.min=t),"number"==typeof n&&(i.max=n),i}function B(e){if(!e||"object"!=typeof e)return null;if("string"!=typeof e.mode)return null;if(!b.has(e.mode))return null;const t={mode:e.mode};return"px"!==e.mode&&"percent"!==e.mode||"number"!=typeof e.value||(t.value=e.value),"number"==typeof e.min&&(t.min=e.min),"number"==typeof e.max&&(t.max=e.max),t}function M(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 t=e,n={mode:"flex",direction:"row"===t.direction||"column"===t.direction?t.direction:"row"};return!0===t.wrap&&(n.wrap=!0),"number"==typeof t.gap&&Number.isFinite(t.gap)&&t.gap>=0&&(n.gap=t.gap),"start"!==t.justify&&"center"!==t.justify&&"end"!==t.justify&&"space-between"!==t.justify&&"space-around"!==t.justify||(n.justify=t.justify),"start"!==t.align&&"center"!==t.align&&"end"!==t.align&&"stretch"!==t.align||(n.align=t.align),n}if("split"===e.mode){const t=e;if("horizontal"!==t.direction&&"vertical"!==t.direction)return null;if(!Array.isArray(t.ratios))return null;const n=t.ratios.filter(e=>"number"==typeof e&&Number.isFinite(e)&&e>=0),o={mode:"split",direction:t.direction,ratios:n};return"number"==typeof t.gap&&Number.isFinite(t.gap)&&t.gap>=0&&(o.gap=t.gap),o}if("grid"===e.mode){const t=e;if(!Array.isArray(t.columns)||!Array.isArray(t.rows))return null;const n={mode:"grid",columns:t.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:t.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 t.gap&&Number.isFinite(t.gap)&&t.gap>=0)n.gap=t.gap;else if(t.gap&&"object"==typeof t.gap){const e={};"number"==typeof t.gap.row&&Number.isFinite(t.gap.row)&&t.gap.row>=0&&(e.row=t.gap.row),"number"==typeof t.gap.column&&Number.isFinite(t.gap.column)&&t.gap.column>=0&&(e.column=t.gap.column),Object.keys(e).length>0&&(n.gap=e)}if(t.cells&&"object"==typeof t.cells&&!Array.isArray(t.cells)){const e={};for(const[n,o]of Object.entries(t.cells)){if(!o||"object"!=typeof o)continue;if(!Number.isFinite(o.row)||!Number.isFinite(o.column))continue;const t={row:o.row,column:o.column};"number"==typeof o.rowSpan&&Number.isFinite(o.rowSpan)&&o.rowSpan>0&&o.rowSpan<=32&&(t.rowSpan=o.rowSpan),"number"==typeof o.columnSpan&&Number.isFinite(o.columnSpan)&&o.columnSpan>0&&o.columnSpan<=32&&(t.columnSpan=o.columnSpan),e[n]=t}Object.keys(e).length>0&&(n.cells=e)}return n}return"free-split"===e.mode?e:null}function z(e,t){const n=(e??[]).map(e=>"number"==typeof e&&Number.isFinite(e)&&e>=0?e:0),o=[];for(let e=0;e<t.length;e++){const i=t[e];if("number"==typeof i&&Number.isFinite(i)&&i>0){o.push(i);continue}const a=n[e];"number"==typeof a&&a>0?o.push(a):o.push(1)}return o}function C(e){if(!e)return{type:"free",canvas:{width:{mode:"px",value:1920},height:{mode:"px",value:1080}}};if(T(e))return e;const t=e,n={width:{mode:"px",value:t.canvas.w},height:{mode:"px",value:t.canvas.h}},o=function(e){if(!e)return;const t={};if(void 0!==e.color&&(t.color=e.color),void 0!==e.imageAssetId){const n={id:e.imageAssetId,type:"image"};t.image=n}return void 0!==e.fit&&(t.imageFit="original"===e.fit?"center":e.fit),Object.keys(t).length>0?t:void 0}(t.canvas.background),i={type:t.type,canvas:n};return o&&(i.background=o),void 0!==t.canvas.gridSize&&(i.guides={grid:{size:t.canvas.gridSize}}),i}function T(e){if(!e)return!1;const t=e.canvas;if(!t)return!1;const n=t.width;return"object"==typeof n&&null!==n&&"mode"in n&&"string"==typeof n.mode}function L(e,t,n=1920){switch(e.mode){case"px":return e.value;case"percent":return t>0?t*e.value/100:n;case"vw":return"undefined"!=typeof window?window.innerWidth*e.value/100:n;case"vh":return"undefined"!=typeof window?window.innerHeight*e.value/100:n;case"auto":case"fill":return t>0?t:n}}function E(e,t,n,o,i){const a=D(e.widthMode,e.width),r=D(e.heightMode,e.height),c="free"===o,s={boxSizing:"border-box",minWidth:0,minHeight:0,overflow:e.overflow??"hidden",zIndex:t};return null!==a&&(s.width=a),null!==r&&(s.height=r),"split"===o&&("vertical"===i?s.height="100%":s.width="100%"),"number"==typeof n&&Number.isFinite(n)&&0!==n&&(s.transform=`rotate(${n}deg)`),c?(s.position="absolute",s.left=`${e.x}px`,s.top=`${e.y}px`):s.position="relative",s}function D(e,t){switch(e){case"px":return`${t}px`;case"percent":return`${t}%`;case"fill":return"100%";case"auto":return"auto"}}function P(e){if(!e||"none"===e.mode||"free"===e.mode)return null;if("flex"===e.mode){const t={display:"flex"};if(t.flexDirection=e.direction??"row",e.wrap&&(t.flexWrap="wrap"),"number"==typeof e.gap&&(t.gap=`${e.gap}px`),e.justify){const n={start:"flex-start",end:"flex-end",center:"center","space-between":"space-between","space-around":"space-around"};t.justifyContent=n[e.justify]??e.justify}if(e.align){const n={start:"flex-start",end:"flex-end",center:"center",stretch:"stretch"};t.alignItems=n[e.align]??e.align}return t}if("grid"===e.mode){const t={display:"grid"},n=(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(n&&(t.gridTemplateColumns=n),o&&(t.gridTemplateRows=o),"number"==typeof e.gap)t.gap=`${e.gap}px`;else if(e.gap&&"object"==typeof e.gap){const n=e.gap.row??0,o=e.gap.column??0;t.gap=`${n}px ${o}px`}return t}if("split"===e.mode){const t=(Array.isArray(e.ratios)?e.ratios:[]).map(e=>"number"==typeof e&&Number.isFinite(e)&&e>=0?e:0).filter(e=>e>0),n=t.length>0?t.map(e=>`${e}fr`).join(" "):"1fr",o={display:"grid"};return"vertical"===e.direction?o.gridTemplateRows=n:o.gridTemplateColumns=n,"number"==typeof e.gap&&(o.gap=`${e.gap}px`),o}return e.mode,null}function R(e,t){if(!e)return null;if("flex"===t){const t={};return"number"==typeof e.order&&(t.order=e.order),"number"==typeof e.grow&&(t.flexGrow=e.grow),"number"==typeof e.shrink&&(t.flexShrink=e.shrink),Object.keys(t).length>0?t:null}if("grid"===t){const t={};if("number"==typeof e.row){const n="number"==typeof e.rowSpan&&e.rowSpan>0?e.rowSpan:1;t.gridRow=n>1?`${e.row} / span ${n}`:`${e.row}`}if("number"==typeof e.column){const n="number"==typeof e.columnSpan&&e.columnSpan>0?e.columnSpan:1;t.gridColumn=n>1?`${e.column} / span ${n}`:`${e.column}`}return Object.keys(t).length>0?t:null}return null}function $(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 A(e){return!!e&&"object"==typeof e&&!Array.isArray(e)&&"string"==typeof e.html&&"string"==typeof e.js&&"string"==typeof e.css}function F(e){if(!e||"object"!=typeof e||Array.isArray(e))return!1;const t=e;return["propsDecl","emitsDecl","methodsDecl","slotsDecl","modelDecl","dataInputsDecl","dataOutputsDecl"].every(e=>Array.isArray(t[e]))}function O(e){if(!e||"object"!=typeof e||Array.isArray(e))return;const t=e;return"string"==typeof t.message?{message:t.message,..."number"==typeof t.line?{line:t.line}:{},..."number"==typeof t.column?{column:t.column}:{}}:void 0}const N=new Set(["px","percent","fill","auto"]),j=new Set(["hidden","visible","auto"]);function V(e){const t=e.placement;return"canvas"===t||"container"===t?e:"absolute"===t?{...e,placement:"canvas"}:"slot"===t?{...e,placement:"container"}:{...e,placement:e.parentId?"container":"canvas"}}function q(e){var t,n;const o=e.rect??{x:0,y:0,w:0,h:0},i=null==(t=e.size)?void 0:t.width,a=null==(n=e.size)?void 0:n.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},c=e.layoutBox,s=c&&N.has(c.widthMode)?c.widthMode:r(i)??"px",d=c&&N.has(c.heightMode)?c.heightMode:r(a)??"px",l=(e,t)=>"number"==typeof e&&Number.isFinite(e)?e:t,u={x:l(null==c?void 0:c.x,o.x),y:l(null==c?void 0:c.y,o.y),width:l(null==c?void 0:c.width,(null==i?void 0:i.value)??o.w),height:l(null==c?void 0:c.height,(null==a?void 0:a.value)??o.h),widthMode:s,heightMode:d,overflow:(null==c?void 0:c.overflow)&&j.has(c.overflow)?c.overflow:"hidden"};return c&&c.x===u.x&&c.y===u.y&&c.width===u.width&&c.height===u.height&&c.widthMode===u.widthMode&&c.heightMode===u.heightMode&&c.overflow===u.overflow?e:{...e,layoutBox:u}}let _=!1;function K(e){if(e.rootLayout){const o=M(e.rootLayout);return null===o?{...e,rootLayout:{mode:"free"}}:"free-split"===o.mode?(_||(_=!0,console.warn("[hypercard] rootLayout.mode='free-split' 不支持(free-split 仅用于容器实例,根画布无 outlet/containerId 锚),已降级为 'free'。")),{...e,rootLayout:{mode:"free"}}):(n=o,(t=e.rootLayout).mode===n.mode&&JSON.stringify(t)===JSON.stringify(n)?e:{...e,rootLayout:o})}var t,n;return{...e,rootLayout:{mode:"free"}}}function H(e){return"container"===e||"slot"===e}function X(e,t,n){var o,i;const a=t.find(e=>e.instanceId===n);if(!a)return;if(void 0===a.parentId)return(null==(o=null==e?void 0:e.rootLayout)?void 0:o.mode)??"free";const r=t.find(e=>e.instanceId===a.parentId);return(null==(i=null==r?void 0:r.containerLayout)?void 0:i.mode)??"none"}function Y(e){if(!e||"object"!=typeof e)return null;const t={},n=["order","grow","shrink","row","column","rowSpan","columnSpan","ratio"];for(const o of n){const n=e[o];"number"==typeof n&&Number.isFinite(n)&&(t[o]=n)}return Object.keys(t).length>0?t:null}function U(t={}){const{rootMargin:n="500px",disposeDelayMs:o=1500,mountConcurrency:i=2,root:a=null}=t,r={state:e.reactive({}),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 c(e,t){const n=r.state[e];n!==t&&(void 0!==n&&"idle"!==n&&r.counts[n]--,r.state[e]=t,"idle"!==t&&r.counts[t]++)}function s(e){for(const t of e){const e=r.idByEl.get(t.target);e&&(t.isIntersecting?d(e):l(e))}}function d(e){const t=r.disposeTimers.get(e);t&&(clearTimeout(t),r.disposeTimers.delete(e));const n=r.state[e];"mounted"!==n&&"disposing"!==n?(c(e,"mounting"),r.mountQueue.includes(e)||r.mountQueue.push(e),u()):c(e,"mounted")}function l(e){if(r.held.has(e))return;const t=r.state[e];if("pending"===t||"idle"===t)return;if("mounting"===t){const t=r.mountQueue.indexOf(e);return t>=0&&r.mountQueue.splice(t,1),void c(e,"pending")}c(e,"disposing");const n=r.disposeTimers.get(e);n&&clearTimeout(n);const i=setTimeout(()=>{"disposing"===r.state[e]&&(c(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,t=50){const n=globalThis;"function"==typeof n.requestIdleCallback?n.requestIdleCallback(()=>e(),{timeout:t}):setTimeout(e,16)}(()=>{r.idleScheduled=!1;let e=0;for(;e<i&&r.mountQueue.length>0;){const t=r.mountQueue.shift();"mounting"===r.state[t]&&(c(t,"mounted"),e++)}r.mountQueue.length>0&&u()}))}return{register(e,t){const o=r.elById.get(e);if(o&&o!==t){const e=r.io;e&&e.unobserve(o),r.idByEl.delete(o)}r.elById.set(e,t),r.idByEl.set(t,e),c(e,"pending");const i=r.io?r.io:"undefined"==typeof IntersectionObserver?null:(r.io=new IntersectionObserver(s,{root:a,rootMargin:n}),r.io);i?i.observe(t):c(e,"mounted")},unregister(e){const t=r.elById.get(e);if(t){const n=r.io;n&&n.unobserve(t),r.idByEl.delete(t),r.elById.delete(e)}const n=r.disposeTimers.get(e);n&&(clearTimeout(n),r.disposeTimers.delete(e));const o=r.mountQueue.indexOf(e);o>=0&&r.mountQueue.splice(o,1),r.held.delete(e),function(e){const t=r.state[e];void 0!==t&&"idle"!==t&&r.counts[t]--,delete r.state[e]}(e)},setHeld(e,t){if(t){r.held.add(e);const t=r.disposeTimers.get(e);t&&(clearTimeout(t),r.disposeTimers.delete(e)),"disposing"===r.state[e]&&c(e,"mounted")}else r.held.delete(e)},isMounted(e){const t=r.state[e];return"mounted"===t||"disposing"===t},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 G(e){const t=[];switch(e.source.kind){case"instanceEvent":case"lifecycle":t.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":t.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 t}function W(e,t,n){for(const o of G(e))if(o.instanceId===t&&o.canvasId===n)return!0;return!1}function J(e){const t={type:e.type,canvas:{...e.canvas,width:{...e.canvas.width},height:{...e.canvas.height}}};return e.background&&(t.background={...e.background,...e.background.image?{image:{...e.background.image}}:{}}),e.behavior&&(t.behavior={...e.behavior}),e.guides&&(t.guides={...e.guides,...e.guides.items?{items:[...e.guides.items]}:{}}),e.rootLayout&&(t.rootLayout="grid"===(n=e.rootLayout).mode?{...n,columns:n.columns?n.columns.map(e=>({...e})):[],rows:n.rows?n.rows.map(e=>({...e})):[],...n.cells?{cells:{...n.cells}}:{},..."object"==typeof n.gap&&null!==n.gap?{gap:{...n.gap}}:{}}:"split"===n.mode?{...n,ratios:Array.isArray(n.ratios)?[...n.ratios]:[]}:{...n}),t;var n}function Q(e={}){return c(e)}function Z(t={schemaVersion:"1",layout:{type:"free",canvas:{width:{mode:"fill"},height:{mode:"fill"}}},instances:[],bindings:[]}){const n=y(m(t)),o=e.reactive({schemaVersion:"1",layout:J(n.layout),instances:n.instances.map(e=>({...e,rect:{...e.rect}})),bindings:n.bindings.map(e=>c(e)),componentOverrides:Q(n.componentOverrides)}),i=new Map;function a(){i.clear();for(const e of o.instances)i.has(e.instanceId)||i.set(e.instanceId,e)}function r(e){const t=i.get(e);return void 0===t?-1:o.instances.indexOf(t)}function s(e){return o.bindings.findIndex(t=>t.id===e)}return a(),{get document(){return o},instanceCount:e.computed(()=>o.instances.length),bindingCount:e.computed(()=>o.bindings.length),addInstance(e){if(r(e.instanceId)>=0)return void console.warn(`[hc-canvas/doc-store] instanceId "${e.instanceId}" 已存在,addInstance 忽略`);const t=e.rect?{...e.rect}:function(e){if(!e)return{x:0,y:0,w:0,h:0};const t=(e,t)=>"number"==typeof e&&Number.isFinite(e)?e:t;return{x:t(e.x,0),y:t(e.y,0),w:t(e.width,0),h:t(e.height,0)}}(e.layoutBox),n={...e,rect:t};!0===n.locked&&(void 0===n.lockPosition&&(n.lockPosition=!0),void 0===n.lockSize&&(n.lockSize=!0)),o.instances.push(n),i.set(n.instanceId,o.instances[o.instances.length-1])},removeInstance(e){var t;const n=r(e);n<0||(o.instances.splice(n,1),function(e){i.delete(e);const t=o.instances.find(t=>t.instanceId===e);t&&i.set(e,t)}(e),null==(t=o.componentOverrides)||delete t[e],o.bindings=o.bindings.filter(t=>!W(t,e)))},updateInstance(e,t){const n=i.get(e);if(n&&(Object.assign(n,t),t.rect&&n.layoutBox&&(n.layoutBox={...n.layoutBox,x:n.rect.x,y:n.rect.y,..."px"===n.layoutBox.widthMode?{width:n.rect.w}:{},..."px"===n.layoutBox.heightMode?{height:n.rect.h}:{}}),t.layoutBox)){const e=n.layoutBox??t.layoutBox,o=e=>"number"==typeof e&&Number.isFinite(e);n.rect={x:o(e.x)?e.x:n.rect.x,y:o(e.y)?e.y:n.rect.y,w:"px"===e.widthMode&&o(e.width)?e.width:n.rect.w,h:"px"===e.heightMode&&o(e.height)?e.height:n.rect.h}}},moveInstance(e,t,n){const o=i.get(e);o&&(o.rect.x=t,o.rect.y=n,o.layoutBox&&(o.layoutBox={...o.layoutBox,x:t,y:n}))},resizeInstance(e,t,n){const o=i.get(e);if(!o)return;const a=Math.max(1,t),r=Math.max(1,n);o.rect.w=a,o.rect.h=r,o.layoutBox&&(o.layoutBox={...o.layoutBox,width:a,height:r,widthMode:"px",heightMode:"px"})},setInstanceProp(e,t,n){const o=i.get(e);o&&(o.props={...o.props,[t]:n})},setInstanceLocked(e,t){const n=i.get(e);n&&(n.locked=t,t?(n.lockPosition=!0,n.lockSize=!0):(delete n.lockPosition,delete n.lockSize))},setInstanceSize(e,t){const n=i.get(e);if(n)if(null===t)delete n.size,n.layoutBox&&(n.layoutBox={...n.layoutBox,width:n.rect.w,height:n.rect.h,widthMode:"px",heightMode:"px"});else if(n.size=t,n.layoutBox){const e=t.width,o=t.height,i={...n.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=n.rect.w)):"auto"!==e.mode&&"hug"!==e.mode||(i.widthMode="auto",Number.isFinite(i.width)||(i.width=n.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=n.rect.h)):"auto"!==o.mode&&"hug"!==o.mode||(i.heightMode="auto",Number.isFinite(i.height)||(i.height=n.rect.h))),n.layoutBox=i}},setInstanceContainerLayout(e,t){const n=i.get(e);n&&(null===t?delete n.containerLayout:n.containerLayout=t)},updateInstanceLayoutBox(e,t){const n=i.get(e);if(!n)return;const o=n.layoutBox??{x:n.rect.x,y:n.rect.y,width:n.rect.w,height:n.rect.h,widthMode:"px",heightMode:"px",overflow:"hidden"},a={},r=["x","y","width","height"];for(const e of r){const n=t[e];"number"==typeof n&&Number.isFinite(n)&&(a[e]=n)}if("px"!==t.widthMode&&"percent"!==t.widthMode&&"fill"!==t.widthMode&&"auto"!==t.widthMode||(a.widthMode=t.widthMode),"px"!==t.heightMode&&"percent"!==t.heightMode&&"fill"!==t.heightMode&&"auto"!==t.heightMode||(a.heightMode=t.heightMode),"hidden"!==t.overflow&&"visible"!==t.overflow&&"auto"!==t.overflow||(a.overflow=t.overflow),0===Object.keys(a).length)return;const c={...o,...a};n.layoutBox=c;const s=a.widthMode??o.widthMode,d=a.heightMode??o.heightMode;n.rect={x:c.x,y:c.y,w:"px"===s?c.width:n.rect.w,h:"px"===d?c.height:n.rect.h}},updateInstanceLayoutItem(e,t){const n=i.get(e);if(!n)return;if(null===t)return void delete n.layoutItem;const o=["order","grow","shrink","row","column","rowSpan","columnSpan","ratio"],a={};for(const e of o){const n=t[e];"number"==typeof n&&Number.isFinite(n)&&(a[e]=n)}if(0===Object.keys(a).length)return;const r=n.layoutItem??{};n.layoutItem={...r,...a}},setInstanceRotation(e,t){const n=i.get(e);n&&Number.isFinite(t)&&(0===t?delete n.rotation:n.rotation=t)},duplicateInstance(e,t,n){var a;const r=i.get(e);if(!r)return;const s=c(r);if(s.instanceId=t,s.rect={...s.rect,x:r.rect.x+n.x,y:r.rect.y+n.y},s.layoutBox&&(s.layoutBox={...s.layoutBox,x:s.layoutBox.x+n.x,y:s.layoutBox.y+n.y}),delete s.locked,delete s.lockPosition,delete s.lockSize,i.has(t))return void console.warn(`[hc-canvas/doc-store] duplicateInstance: newInstanceId "${t}" 已存在,忽略`);o.instances.push(s),i.set(t,o.instances[o.instances.length-1]);const d=null==(a=o.componentOverrides)?void 0:a[e];d&&(o.componentOverrides={...o.componentOverrides??{},[t]:{...c(d),instanceId:t}})},addBinding(e){if(s(e.id)>=0)return void console.warn(`[hc-canvas/doc-store] binding id "${e.id}" 已存在,addBinding 忽略`);const[t]=d([e]);t?o.bindings.push(c(t)):console.warn(`[hc-canvas/doc-store] addBinding "${null==e?void 0:e.id}" dropped by normalize`)},removeBinding(e){const t=s(e);t<0||o.bindings.splice(t,1)},updateBinding(e,t){const n=o.bindings.find(t=>t.id===e);if(!n)return;const i=c(t);Object.assign(n,i)},updateLayout(e){for(const t of Object.keys(e)){const n=e[t];void 0===n?delete o.layout[t]:o.layout[t]=n}},setComponentOverride(e,t){null!==t?(o.componentOverrides||(o.componentOverrides={}),o.componentOverrides[e]=t):o.componentOverrides&&e in o.componentOverrides&&delete o.componentOverrides[e]},replaceDocument(e){const t=y(m(e));o.schemaVersion="1",o.layout=J(t.layout),o.instances=t.instances.map(e=>({...e,rect:{...e.rect}})),a(),o.bindings=t.bindings.map(e=>c(e)),o.componentOverrides=Q(t.componentOverrides)},getInstance:e=>i.get(e),listInstancesByComponentVersionKey:e=>o.instances.filter(t=>t.componentVersionKey===e)}}function ee(){const t=e.reactive({ids:[],freeSplit:null});return{selectedIds:e.computed(()=>t.ids),size:e.computed(()=>t.ids.length),primaryId:e.computed(()=>t.ids[0]),freeSplitSelection:e.computed(()=>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 te(t={}){const{minScale:n=.25,maxScale:o=4,initialScale:i=1}=t,a=e.reactive({scale:i,panX:0,panY:0});function r(e){return Math.max(n,Math.min(o,e))}return{state:a,scale:e.computed(()=>a.scale),panX:e.computed(()=>a.panX),panY:e.computed(()=>a.panY),setScale(e){a.scale=r(e)},zoomAt(e,t){const n=a.scale,o=r(n+t);if(o===n)return;const i=o/n;a.panX=e.x-(e.x-a.panX)*i,a.panY=e.y-(e.y-a.panY)*i,a.scale=o},setPan(e,t){a.panX=e,a.panY=t},panBy(e,t){a.panX+=e,a.panY+=t},resetView(){a.scale=i,a.panX=0,a.panY=0},fitToScreen(e,t,n=40){const o=Math.max(1,t.w-2*n),i=Math.max(1,t.h-2*n),c=o/e.w,s=i/e.h,d=r(Math.min(c,s)),l=e.w*d,u=e.h*d;a.scale=d,a.panX=(t.w-l)/2,a.panY=(t.h-u)/2},toCanvasPoint:e=>({x:(e.x-a.panX)/a.scale,y:(e.y-a.panY)/a.scale}),toViewportPoint:e=>({x:e.x*a.scale+a.panX,y:e.y*a.scale+a.panY})}}function ne(e){var t;return e.parentId??(null==(t=e.slotPlacement)?void 0:t.parentInstanceId)}function oe(e,t){const n=new Map;for(const t of e){const e=ne(t);if(!e)continue;const o=n.get(e);o?o.push(t.instanceId):n.set(e,[t.instanceId])}const o=[t],i=new Set([t]);for(let e=0;e<o.length;e+=1)for(const t of n.get(o[e])??[])i.has(t)||(i.add(t),o.push(t));return{instanceIds:o,descendantCount:o.length-1}}function ie(e,t){if("leaf"===e.type)return e.leafId===t?e:null;for(const n of e.children){const e=ie(n,t);if(e)return e}return null}function ae(e,t){if("leaf"===e.type)return null;if(e.nodeId===t)return e;for(const n of e.children){const e=ae(n,t);if(e)return e}return null}function re(e){return"leaf"===e.type?!0===e.locked:e.children.some(e=>re(e))}function ce(e){return"leaf"===e.type?[e]:e.children.flatMap(e=>ce(e))}const se=e=>({ok:!1,reason:e}),de=e=>({ok:!0,root:e});function le(e,t){return"leaf"===e.type?t(e):{...e,children:e.children.map(e=>le(e,t))}}function ue(e,t){if("leaf"===e.type)return e.leafId===t?e:null;for(const n of e.children){const e=ue(n,t);if(e)return e}return null}function pe(e,t){if("leaf"===e.type)return null;if(e.nodeId===t)return e;for(const n of e.children){const e=pe(n,t);if(e)return e}return null}function fe(e,t,n){const o=pe(e,t);if(!o)return se(`resize: branch "${t}" not found`);if(n.length!==o.children.length)return se(`resize: sizes arity ${n.length} !== children ${o.children.length}`);const i=n.findIndex(e=>p(e));if(i>=0)return se(`resize: sizes[${i}] invalid NodeSize`);const a=e=>"leaf"===e.type?e:e.nodeId===t?{...e,sizes:n.map(e=>({...e}))}:{...e,children:e.children.map(a)};return de(a(e))}function he(e,t){return t?[{mode:"ratio",value:e},{mode:"ratio",value:1-e}]:[{mode:"ratio",value:1-e},{mode:"ratio",value:e}]}const ge=["freeSplitFill","freeSplitClear","freeSplitSwap","freeSplitResize","freeSplitSplit","freeSplitMerge"];function me(e){return ge.includes(e.type)}function ve(e,t,n){const o=t.root,{containerId:i}=e.payload;switch(e.type){case"freeSplitFill":{const{leafId:t,instance:a}=e.payload,r=ie(o,t);if(!r||null!==r.instanceId)return null;if(n.some(e=>e.instanceId===a.instanceId))return null;const c=function(e,t,n){return ue(e,t)?de(le(e,e=>e.leafId===t?{...e,instanceId:n}:e)):se(`fill: leaf "${t}" not found`)}(o,t,a.instanceId);if(!c.ok)return null;const s={...a,parentId:i,slot:"default",placement:"container"};return{containerId:i,nextRoot:c.root,addInstance:s}}case"freeSplitClear":{const{leafId:t}=e.payload,a=ie(o,t);if(!a||null===a.instanceId)return null;if(!n.some(e=>e.instanceId===a.instanceId))return null;const r=function(e,t){return ue(e,t)?de(le(e,e=>e.leafId===t?{...e,instanceId:null}:e)):se(`clear: leaf "${t}" not found`)}(o,t);if(!r.ok)return null;const c=function(e,t){const n=[t],o=[t];for(;o.length>0;){const t=o.shift();for(const i of e)i.parentId===t&&(n.push(i.instanceId),o.push(i.instanceId))}return n}(n,a.instanceId);return{containerId:i,nextRoot:r.root,removeInstanceIds:c}}case"freeSplitSwap":{const{leafIdA:t,leafIdB:n}=e.payload,a=ie(o,t),r=ie(o,n);if(a&&r&&a.instanceId===r.instanceId)return null;const c=function(e,t,n){if(t===n)return se("swap: same leaf");const o=ue(e,t),i=ue(e,n);if(!o)return se(`swap: leaf "${t}" not found`);if(!i)return se(`swap: leaf "${n}" not found`);const a=o.instanceId,r=i.instanceId;return de(le(e,e=>e.leafId===t?{...e,instanceId:r}:e.leafId===n?{...e,instanceId:a}:e))}(o,t,n);return c.ok?{containerId:i,nextRoot:c.root}:null}case"freeSplitResize":{const{nodeId:t,sizes:n}=e.payload,a=ae(o,t);if(a&&function(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n].mode!==t[n].mode||e[n].value!==t[n].value||e[n].min!==t[n].min||e[n].max!==t[n].max)return!1;return!0}(a.sizes,n))return null;const r=fe(o,t,n);return r.ok?{containerId:i,nextRoot:r.root}:null}case"freeSplitSplit":{const{leafId:t,edge:n,newLeafShare:a,newLeafId:r,newNodeId:c}=e.payload,s=function(e,t,n,o,i,a){if(!(o>0&&o<1))return se(`split: newLeafShare ${o} not in (0,1)`);if(i===a)return se("split: newLeafId === newNodeId");const r=function(e){const t=new Set,n=e=>{"leaf"===e.type?t.add(e.leafId):(t.add(e.nodeId),e.children.forEach(n))};return n(e),t}(e);if(r.has(i))return se(`split: newLeafId "${i}" already exists`);if(r.has(a))return se(`split: newNodeId "${a}" already exists`);if(!ue(e,t))return se(`split: leaf "${t}" not found`);const c=function(e){return"left"===e||"right"===e?"row":"col"}(n),s=function(e){return"left"===e||"top"===e}(n),d={type:"leaf",leafId:i,instanceId:null},l=e=>s?[d,e]:[e,d];if("leaf"===e.type)return de({type:"split",nodeId:a,dir:c,children:l(e),sizes:he(o,s)});const u=e=>{if("leaf"===e.type)return e;const n=e.children.findIndex(e=>"leaf"===e.type&&e.leafId===t);if(n>=0){const t=e.children[n];if(e.dir===c){const[i,a]=function(e,t,n){const o=e.value*t,i=e.value*(1-t),a=t=>({mode:e.mode,value:t}),r=t=>({mode:e.mode,value:t,...void 0!==e.min?{min:e.min}:{},...void 0!==e.max?{max:e.max}:{}});return n?[a(o),r(i)]:[r(i),a(o)]}(e.sizes[n],o,s),r=[...e.children.slice(0,n),...l(t),...e.children.slice(n+1)],c=[...e.sizes.slice(0,n),i,a,...e.sizes.slice(n+1)];return{...e,children:r,sizes:c}}const i={type:"split",nodeId:a,dir:c,children:l(t),sizes:he(o,s)},r=[...e.children];return r[n]=i,{...e,children:r}}return{...e,children:e.children.map(u)}};return de(u(e))}(o,t,n,a,r,c);return s.ok?{containerId:i,nextRoot:s.root}:null}case"freeSplitMerge":{const{leafId:t}=e.payload,n=ie(o,t);if(!n||null!==n.instanceId)return null;const a=function(e,t){if("leaf"===e.type)return se("merge: root leaf has no parent");let n=!1;const o=e=>{if("leaf"===e.type)return e;const i=e.children.findIndex(e=>"leaf"===e.type&&e.leafId===t);if(i>=0){n=!0;const t=i-1>=0?i-1:i+1,o=e.sizes[i],c=e.children.filter((e,t)=>t!==i),s=e.sizes.filter((e,t)=>t!==i),d=t<i?t:t-1;return s[d]=(r=o,(a=s[d]).mode===r.mode?{...a,value:a.value+r.value}:a),1===c.length?c[0]:{...e,children:c,sizes:s}}var a,r;return{...e,children:e.children.map(o)}},i=o(e);return n?de(i):se(`merge: leaf "${t}" not found as a branch child`)}(o,t);return a.ok?{containerId:i,nextRoot:a.root}:null}}}function ye(e,t){if(!0===e.structureLocked)return!1;if("split"===t.op||"merge"===t.op){const n=ie(e.root,t.leafId);if(!n)return!1;if(!0===n.locked)return!1}return!0}function Ie(e){return!0!==e.structureLocked&&!re(e.root)}const xe=new WeakMap;function we(e){const t=new Map;return{resolve(n){const o=function(e){return e.id||e.url||""}(n);if(o&&t.has(o))return t.get(o);if(!e){const e=n.url??"";return o&&t.set(o,e),e}const i=e.resolve(n);return"string"==typeof i?(o&&t.set(o,i),i):(o&&t.set(o,i),i.then(e=>{o&&t.set(o,e)},e=>{console.warn(`[hc-canvas/assets] resolve("${o}") 失败,缓存里删条目允许重试:`,e),o&&t.delete(o)}),i)},__clearCache(){t.clear()}}}function be(e,t,n){if(!t||0===Object.keys(t).length)return`${e}::{}`;const o=Se(t,n);return null===o?`${e}::__fresh_${Date.now()}_${Math.random().toString(36).slice(2,8)}__`:`${e}::${o}`}function Se(e,t,n=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==t||t(),null;if(Array.isArray(e)){if(n.has(e))return null==t||t(),null;n.add(e);const o=[];for(const i of e){const e=Se(i,t,n);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==t||t(),null;const i=e;if(n.has(i))return null==t||t(),null;n.add(i);const a=Object.keys(i).sort(),r=[];for(const e of a){const o=Se(i[e],t,n);if(null===o)return null;r.push(`${JSON.stringify(e)}:${o}`)}return`{${r.join(",")}}`}return null==t||t(),null}function ke(e){const t=new Map,n=new Map,o=new Map,i=new Map,a=new Map,r=new Map;let c=!1,s=!1,d=0,l=null;function u(e){if(!s&&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,t){const n=o.get(t);let i;if(n)for(const e of n)if(!r.has(e)){i=e;break}void 0!==i?r.set(i,e):p(e)}function h(e,t){var n;const a=o.get(e);if(a)for(const e of a)null==(n=i.get(e))||n.onUpdate(t)}function g(e,n){let o=t.get(e);return o||(o={cacheKey:e,sourceId:n,status:"idle"},t.set(e,o)),o}function m(n,r,c){if(!e)return;const l=a.get(n);l&&l.abort();const p=new AbortController;a.set(n,p);const f=g(n,r);f.status="loading",f.requestParams=c;const m=f.writeSeq??0;Promise.resolve().then(()=>async function(e,t){return{value:await Promise.resolve(e.query(t))}}(e,{sourceId:r,params:c,signal:p.signal})).then(e=>{if(s)return;if(a.get(n)!==p)return;a.delete(n);const o=t.get(n);o&&((o.writeSeq??0)>m?u({kind:"data-query-skipped",cacheKey:n,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:n,sourceId:r,writeSeq:o.writeSeq,value:e.value}),h(n,e.value)))}).catch(e=>{if(s)return;if(function(e){return null!==e&&"object"==typeof e&&"AbortError"===e.name}(e))return;if(a.get(n)!==p)return;a.delete(n);const c=t.get(n);c&&((c.writeSeq??0)>m?u({kind:"data-query-skipped",cacheKey:n,sourceId:r,writeSeq:c.writeSeq,reason:"race-stale-reject"}):(c.status="error",c.error=e,c.lastFetchedAt=Date.now(),function(e,t){var n,a;const r=o.get(e);if(r)for(const e of r)null==(a=null==(n=i.get(e))?void 0:n.onError)||a.call(n,t)}(n,e)))})}function v(e){if(s)return;const{bindingId:d,sourceId:l,params:u,onUpdate:p,onError:h}=e,g=be(l,u,()=>{c||(console.warn(`[hc-canvas/dataStore] params for "${l}" contains non-plain values; fresh query every call (no cache)`),c=!0)});!function(e,i){const c=n.get(e);if(c===i)return;if(c){const n=o.get(c);if(n&&(n.delete(e),0===n.size)){o.delete(c);const e=a.get(c);e&&(e.abort(),a.delete(c)),t.delete(c)}const i=r.get(e);i&&(r.delete(e),f(i,c))}n.set(e,i);let s=o.get(i);s||(s=new Set,o.set(i,s)),s.add(e)}(d,g),i.set(d,{onUpdate:p,onError:h});const v=t.get(g);if(v){if("success"===v.status)return void p(v.value);if("error"===v.status)return void(null==h||h(v.error));if("loading"===v.status)return}m(g,l,u)}return{request:v,subscribe:function(t){if(s)return;const{bindingId:i,sourceId:a,params:c,onUpdate:l,onError:f}=t;let m=!0;const y=[],I=()=>{m=!1;for(const e of y)e();y.length=0};if(v({bindingId:i,sourceId:a,params:c,onUpdate:e=>{m?y.push(()=>l(e)):l(e)},onError:f?e=>{m?y.push(()=>f(e)):f(e)}:void 0}),!e)return void I();const x=n.get(i);if(!x)return void I();let w=!0;try{const t=function(e,t){if(e.subscribe)return e.subscribe(t,e=>{if(s)return;if(!w)return;if(!o.has(x))return;const t=g(x,a);t.status="success",t.value=e,t.lastFetchedAt=Date.now(),t.writeSeq=++d,u({kind:"data-source-update",cacheKey:x,sourceId:a,writeSeq:t.writeSeq,value:e}),h(x,e)})}(e,{sourceId:a,params:c});(function(e,t){const n=r.get(e);n&&p(n),r.set(e,t)})(i,t?()=>{w=!1;try{t()}catch{}}:()=>{w=!1}),I()}catch(e){w=!1,I(),s||null==f||f(e)}},removeBinding:function(e,c){if(s)return;const d=!0===(null==c?void 0:c.preserveCache),l=r.get(e);l&&r.delete(e),i.delete(e);const u=function(e){const t=n.get(e);if(!t)return;n.delete(e);const i=o.get(t);return i&&(i.delete(e),0===i.size&&o.delete(t)),t}(e);if(u){if(l&&f(l,u),!o.has(u)){const e=t.get(u);if(!d||"success"!==(null==e?void 0:e.status)){const e=a.get(u);e&&(e.abort(),a.delete(u)),t.delete(u)}}}else l&&p(l)},invalidate:function(e){if(s)return;const n=[];for(const[o,i]of t)void 0!==e&&i.sourceId!==e||n.push(o);for(const e of n){const n=t.get(e);if(!n)continue;const i=o.get(e);if(!i||0===i.size){t.delete(e);const n=a.get(e);n&&(n.abort(),a.delete(e));continue}n.status="stale",m(e,n.sourceId,n.requestParams)}},getSnapshot:function(){return{entries:Array.from(t.values()).map(e=>({cacheKey:e.cacheKey,sourceId:e.sourceId,status:e.status,value:e.value,error:e.error,lastFetchedAt:e.lastFetchedAt}))}},getCachedBySourceId:function(e,n){if(s)return;const o=be(e,n,()=>{c||(console.warn(`[hc-canvas/dataStore] params for "${e}" contains non-plain values; cannot compute stable cache key, cache lookup will miss`),c=!0)}),i=t.get(o);return i?{value:i.value,status:i.status}:void 0},disposeAll:function(){if(!s){s=!0;for(const e of a.values())try{e.abort()}catch{}a.clear();for(const e of r.values())try{e()}catch{}r.clear(),t.clear(),n.clear(),o.clear(),i.clear(),l=null}},attachTraceBridge:function(e){return s?()=>{}:(l=e,()=>{l===e&&(l=null)})},getBindingsForCacheKey:function(e){const t=o.get(e);return t?Array.from(t):[]},get isDisposed(){return s}}}const Be=Symbol("hc:canvas:context");function Me(n={}){var o,i;const a=n.canvasId??t.DEFAULT_CANVAS_ID,r=Z(n.initialDocument),s=ee(),d=te(n.viewport),l=U(n.scheduler),u=ke(null==(o=n.adapters)?void 0:o.data);let p=!1;const f=function(){const t=new WeakSet;return{mint(n){const o=e.markRaw({type:"freeSplitRestore",payload:n});return t.add(o),o},isMarked:e=>"object"==typeof e&&null!==e&&t.has(e)&&"freeSplitRestore"===e.type}}(),h=e.computed(()=>{const e=n.freeSplitEnabled;return("function"==typeof e?e():e)??!1}),g=e.computed(()=>{const e=n.freeSplitControlsAlways;return("function"==typeof e?e():e)??!1}),m=n.cascadeRemove??!0,v=[];n.hooks&&v.push(n.hooks);const y=e.ref(0),I=e.computed(()=>y.value>0),x=e.ref({}),w=e.computed(()=>x.value),b=e.computed(()=>{var e;const t=(null==(e=n.getMode)?void 0:e.call(n))??"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=r.document.layout.behavior??{};if("design"!==t){const{selectable:e,draggable:t,resizable:n,keyboardMove:a,...r}=i;return{...o,...r,...x.value}}return{...o,...i,...x.value}}),k=we(null==(i=n.adapters)?void 0:i.assets),B=e.ref("select"),z=e.ref(null),C=e.computed(()=>z.value??B.value),T=e.ref(null),E=e.computed(()=>T.value),D=e.ref(null),P=e.ref({w:0,h:0}),R=e.computed(()=>P.value),$=e.computed(()=>{const e=r.document.layout,t=P.value;return{w:L(e.canvas.width,t.w,1920),h:L(e.canvas.height,t.h,1080)}}),A=e.ref([]),F=e.computed(()=>A.value),O=e.ref(0),N=e.computed(()=>O.value>0);function j(e){if(!e)return null;const t=r.getInstance(e),n=null==t?void 0:t.containerLayout;return n&&"free-split"===n.mode?n:null}function V(){const e=s.freeSplitSelection.value;if(!e)return;const t=j(e.containerId);if(!t)return void s.clearFreeSplitSelection();if("freeSplitLeaf"===e.kind)return void(ie(t.root,e.leafId)||s.clearFreeSplitSelection());const n=ae(t.root,e.nodeId);(!n||e.dividerIndex<0||e.dividerIndex>=n.children.length-1)&&s.clearFreeSplitSelection()}const q={canvasId:a,document:r,selection:s,viewport:d,scheduler:l,adapters:n.adapters??{},dataStore:u,dispatch:function(e){var t,n;if(p)return void console.warn("[hc-canvas/context] dispatch called after dispose()");if("freeSplitRestore"===e.type)return void(f.isMarked(e)?function(e){const{containerId:t,containerLayout:n,addInstances:o,addBindings:i,removeInstanceIds:a}=e.payload;if(r.setInstanceContainerLayout(t,c(n)),o)for(const e of o)r.addInstance(c(e));if(i)for(const e of i)r.addBinding(c(e));if(a)for(const e of a)r.removeInstance(e),s.removeFromSelection(e);V()}(e):console.warn("[hypercard] freeSplitRestore 未经内部铸造(疑似伪造),已拒绝。"));const o=function(e){var t;if(me(e)){if(!h.value)return console.warn("[hypercard] free-split 布局未启用(本 canvas gate 关),free-split action 已忽略。"),null;const t=j(e.payload.containerId);if(!t)return null;if("freeSplitSplit"===e.type){if(!ye(t,{op:"split",leafId:e.payload.leafId}))return console.warn("[hypercard] free-split split 被锁(structureLocked / leaf.locked),已忽略。"),null}else if("freeSplitMerge"===e.type){if(!ye(t,{op:"merge",leafId:e.payload.leafId}))return console.warn("[hypercard] free-split merge 被锁(structureLocked / leaf.locked),已忽略。"),null;const n=ie(t.root,e.payload.leafId);if(n&&null!==n.instanceId)return console.warn("[hypercard] free-split merge 仅支持空叶(先 clear 内容),已忽略。"),null}else if("freeSplitResize"===e.type&&!ye(t,{op:"resize"}))return console.warn("[hypercard] free-split resize 被锁(structureLocked),已忽略。"),null;return e}if("removeInstance"===e.type){const t=r.getInstance(e.payload.instanceId),n=j(null==t?void 0:t.parentId);if(t&&n){const e=ce(n.root).find(e=>e.instanceId===t.instanceId);if(e)return{type:"freeSplitClear",payload:{containerId:t.parentId,leafId:e.leafId}}}}if("addInstance"===e.type){const n=e.payload.instance;if(j(n.parentId??(null==(t=n.slotPlacement)?void 0:t.parentInstanceId)))return console.warn("[hypercard] free-split 容器子实例必须通过 freeSplitFill 创建(含 slotPlacement 入口),addInstance 已拒绝。"),null}if("duplicateInstance"===e.type){const t=r.getInstance(e.payload.instanceId);if(t){if(j(t.instanceId))return console.warn("[hypercard] free-split 容器不支持浅复制(树/flat 会不一致),已拒绝。"),null;if(j(t.parentId))return console.warn("[hypercard] free-split 容器子实例不支持复制(首版),已拒绝。"),null}}if("updateInstance"===e.type&&e.payload.patch){const t=e.payload.patch;if("parentId"in t){const e=t.parentId;if(e&&j(e))return console.warn("[hypercard] 不能 reparent 进 free-split 容器(请用 freeSplitFill),已拒绝。"),null}const n=t.slotPlacement;if((null==n?void 0:n.parentInstanceId)&&j(n.parentInstanceId))return console.warn("[hypercard] 不能用 slotPlacement 把实例挂进 free-split 容器(请用 freeSplitFill),已拒绝。"),null;if(["parentId","slot","placement","slotPlacement"].some(e=>e in t)){const t=r.getInstance(e.payload.instanceId);if(t&&j(t.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 t=j(e.payload.instanceId);if(t&&!Ie(t))return console.warn("[hypercard] free-split 容器被锁(structureLocked / leaf.locked),不能整树替换 containerLayout,已忽略。"),null;if(null!==e.payload.containerLayout&&"free-split"===e.payload.containerLayout.mode&&!h.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:t,...n}=e.payload.patch;return 0===Object.keys(n).length?null:{type:"updateLayout",payload:{patch:n}}}return e}(e);if(null!==o){for(const e of v)if(!1===(null==(t=e.onBeforeAction)?void 0:t.call(e,o)))return;switch(o.type){case"addInstance":r.addInstance(o.payload.instance);break;case"removeInstance":{const e=m?oe(r.document.instances,o.payload.instanceId).instanceIds:[o.payload.instanceId];for(const t of e)r.removeInstance(t),s.removeFromSelection(t);V();break}case"updateInstance":r.updateInstance(o.payload.instanceId,o.payload.patch);break;case"moveInstance":r.moveInstance(o.payload.instanceId,o.payload.x,o.payload.y);break;case"resizeInstance":r.resizeInstance(o.payload.instanceId,o.payload.w,o.payload.h);break;case"setInstanceProp":r.setInstanceProp(o.payload.instanceId,o.payload.key,o.payload.value);break;case"addBinding":r.addBinding(o.payload.binding);break;case"removeBinding":r.removeBinding(o.payload.bindingId);break;case"updateBinding":r.updateBinding(o.payload.bindingId,o.payload.patch);break;case"updateLayout":r.updateLayout(o.payload.patch);break;case"setRootLayout":{const{rootLayout:e}=o.payload;r.updateLayout({rootLayout:null===e?void 0:e});break}case"replaceDocument":r.replaceDocument(o.payload.document),s.purgeOrphans(r.document.instances.map(e=>e.instanceId)),V();break;case"setComponentOverride":{const{instanceId:e,override:t}=o.payload;if(void 0===r.getInstance(e)){console.warn(`[hc-canvas/context] setComponentOverride: instance "${e}" 不存在,no-op`);break}r.setComponentOverride(e,t);break}case"setInstanceLocked":r.setInstanceLocked(o.payload.instanceId,o.payload.locked);break;case"duplicateInstance":r.duplicateInstance(o.payload.instanceId,o.payload.newInstanceId,o.payload.offset??{x:20,y:20});break;case"setInstanceSize":{const{instanceId:e,size:t}=o.payload;if(null===t)r.setInstanceSize(e,null);else{const n=S(void 0,t);r.setInstanceSize(e,n??null)}break}case"setContainerLayout":{const{instanceId:e,containerLayout:t}=o.payload;if(null===t)r.setInstanceContainerLayout(e,null);else{const n=M(t);null!==n&&r.setInstanceContainerLayout(e,n)}V();break}case"updateLayoutBox":r.updateInstanceLayoutBox(o.payload.instanceId,o.payload.patch);break;case"updateLayoutItem":r.updateInstanceLayoutItem(o.payload.instanceId,o.payload.patch);break;case"updateRotation":r.setInstanceRotation(o.payload.instanceId,o.payload.value);break;case"select":s.select(o.payload.instanceId);break;case"toggleSelect":s.toggleSelect(o.payload.instanceId);break;case"addToSelection":s.addToSelection(o.payload.instanceId);break;case"removeFromSelection":s.removeFromSelection(o.payload.instanceId);break;case"clearSelection":s.clearSelection();break;case"selectAll":s.selectAll(o.payload.instanceIds);break;case"freeSplitFill":case"freeSplitClear":case"freeSplitSwap":case"freeSplitResize":case"freeSplitSplit":case"freeSplitMerge":!function(e){const t=j(e.payload.containerId);if(!t)return;const n=ve(e,t,r.document.instances);if(!n)return;const o=c({...t,root:n.nextRoot});if(r.setInstanceContainerLayout(e.payload.containerId,o),n.addInstance&&r.addInstance(c(n.addInstance)),n.removeInstanceIds)for(const e of n.removeInstanceIds)r.removeInstance(e),s.removeFromSelection(e);V()}(o);break;default:{const e=o;console.warn("[hc-canvas/context] unknown action",e)}}for(const e of v)null==(n=e.onAfterAction)||n.call(e,o)}},dispose:function(){p||(p=!0,y.value=0,l.dispose(),u.disposeAll())},isBatching:I,beginBatch:function(){p||y.value++},endBatch:function(e){var t;if(!p&&0!==y.value)if(y.value>1)y.value--;else{for(const n of v)null==(t=n.onAfterBatch)||t.call(n,e);y.value=0}},registerHooks:function(e){return v.push(e),()=>{const t=v.indexOf(e);t>=0&&v.splice(t,1)}},isRecordingSuppressed:N,suppressRecording:function(e){O.value++;try{return e()}finally{O.value--}},freeSplitEnabled:h,freeSplitControlsAlways:g,cascadeRemove:m,effectiveBehavior:b,interactionOptions:w,setInteractionOptions:function(e){const t={...x.value};for(const n of Object.keys(e)){const o=e[n];void 0===o?delete t[n]:t[n]=o}x.value=t},resolveAsset:function(e){return k.resolve(e)},toolMode:C,setToolMode:function(e){B.value=e},setTemporaryToolMode:function(e){z.value=e},mouseCanvasPoint:E,setMouseCanvasPoint:function(e){T.value=e},measuredStageSize:R,measuredCanvasSize:$,setMeasuredStageSize:function(e){const t=Math.max(0,Math.round(e.w)),n=Math.max(0,Math.round(e.h));P.value.w===t&&P.value.h===n||(P.value={w:t,h:n})},layoutIssues:F,setLayoutIssues:function(e){A.value=e},cannotDragLayoutManagedChildEvent:e.readonly(D),setCannotDragLayoutManagedChildEvent:function(e){D.value=e}};return function(e,t){xe.set(e,t)}(q,{computeInverse:e=>function(e,t,n){const o=t.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,d=ve(e,s,o.document.instances);if(!d)return null;const l={containerId:i,containerLayout:c(s)};if(d.removeInstanceIds&&d.removeInstanceIds.length>0){const e=d.removeInstanceIds;l.addInstances=e.map(e=>o.getInstance(e)).filter(e=>void 0!==e).map(e=>c(e));const t=o.document.bindings.filter(t=>e.some(e=>W(t,e))).map(e=>c(e));t.length>0&&(l.addBindings=t)}return d.addInstance&&(l.removeInstanceIds=[d.addInstance.instanceId]),n.mint(l)}(e,q,f)}),q}function ze(t){e.provide(Be,t)}function Ce(){const t=e.inject(Be);if(!t)throw new Error("[hc-canvas] useCanvasContext() called outside <CanvasProvider> / <HyperCardCanvasDesigner>. Make sure the component tree is wrapped by a provider.");return t}const Te="default";function Le(e){return e.slot??Te}function Ee(e,t){const n=[],o=t.resolveContract,i=t.maxDepth??8,a=new Map;for(const t of e.instances)a.set(t.instanceId,t);for(const t of e.instances){if(void 0===t.parentId&&void 0!==t.slot&&t.slot!==Te){De(n,"orphan-slot",t.instanceId,`slot "${t.slot}" 没有 parentId,数据不完整`);continue}if(void 0===t.parentId)continue;if(!a.has(t.parentId)){De(n,"missing-parent",t.instanceId,`parentId "${t.parentId}" 指向不存在的实例`);continue}"absolute"!==t.placement&&"canvas"!==t.placement||De(n,"absolute-child-rejected",t.instanceId,"parentId + placement='absolute'|'canvas' 在 D4.5f MVP 不支持,只允许 root absolute/canvas 或 child slot/container");const e=a.get(t.parentId),i=o(e.componentVersionKey);if(!i)continue;const r=i.slotsDecl??[];if(0===r.length){De(n,"parent-not-layout",t.instanceId,`父组件 "${e.componentId}" 不是布局组件(slotsDecl 为空)`);continue}const c=Le(t),s=Pe(r,c);s?s.accepts&&s.accepts.length>0&&(s.accepts.includes(t.componentId)||De(n,"slot-not-allowed-component",t.instanceId,`slot "${c}" 不允许 componentId "${t.componentId}"(accepts: ${s.accepts.join(", ")})`)):De(n,"invalid-slot",t.instanceId,`slot "${c}" 不在父 "${e.componentId}" 的 slotsDecl 中(可能组件升级删除了该 slot)`)}const r=new Map;for(const t of e.instances){if(void 0===t.parentId)continue;const e=Le(t),n=`${t.parentId}::${e}`;let o=r.get(n);o||(o=[],r.set(n,o)),o.push(t)}for(const[e,t]of r){if(t.length<=1)continue;const[i,r]=Re(e),c=a.get(i);if(!c)continue;const s=o(c.componentVersionKey);if(!s)continue;const d=Pe(s.slotsDecl??[],r);if(d&&!0!==d.multiple)for(let e=1;e<t.length;e++)De(n,"slot-multiple-violated",t[e].instanceId,`slot "${r}" 不允许多个子实例(SlotDecl.multiple !== true)`)}const c=new Map;for(const t of e.instances)c.set(t.instanceId,0);for(const t of e.instances)0===c.get(t.instanceId)&&s(t.instanceId,[],0);function s(e,t,o){c.set(e,1);const r=a.get(e);if(o>i)return De(n,"depth-exceeded",e,`嵌套深度 ${o} 超过上限 ${i}`),void c.set(e,2);const d=r.parentId;if(void 0===d)return void c.set(e,2);if(!a.has(d))return void c.set(e,2);const l=c.get(d);if(1===l)return De(n,"cycle",e,`parentId 链成环:${[...t,e,d].join(" → ")}`),void c.set(e,2);2!==l?(s(d,[...t,e],o+1),c.set(e,2)):c.set(e,2)}return n}function De(e,t,n,o){e.push({kind:t,instanceId:n,detail:o})}function Pe(e,t){return e.find(e=>e.name===t)}function Re(e){const t=e.indexOf("::");return[e.slice(0,t),e.slice(t+2)]}const $e=["data-hc-leaf","data-hc-leaf-container"],Ae=e.defineComponent({name:"SplitTreeRenderer",__name:"SplitTreeRenderer",props:{containerId:{},node:{},register:{type:Function},unregister:{type:Function},gap:{}},setup(t){const n=t,o=e.computed(()=>"leaf"===n.node.type?n.node:null),i=e.computed(()=>"split"===n.node.type?n.node:null);function a(e){const t=o.value;t&&(e instanceof HTMLElement?n.register(n.containerId,t.leafId,e):n.unregister(n.containerId,t.leafId))}function r(e){return e?"px"===e.mode?`${e.value}px`:`minmax(0, ${e.value}fr)`:"minmax(0, 1fr)"}function c(e){return"leaf"===e.type?e.leafId:e.nodeId}const s=e.computed(()=>{const e=i.value;if(!e)return{};const t=[];for(let n=0;n<e.children.length;n++)t.push(r(e.sizes[n]));const o=t.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%"),n.gap&&n.gap>0&&(a.gap=`${n.gap}px`),a});return(n,r)=>{const d=e.resolveComponent("SplitTreeRenderer",!0);return o.value?(e.openBlock(),e.createElementBlock("div",{key:0,ref:a,"data-hc-leaf":o.value.leafId,"data-hc-leaf-container":t.containerId,class:"hc-fs-leaf",style:{width:"100%",height:"100%","box-sizing":"border-box"}},null,8,$e)):i.value?(e.openBlock(),e.createElementBlock("div",{key:1,class:"hc-fs-branch",style:e.normalizeStyle(s.value)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value.children,n=>(e.openBlock(),e.createBlock(d,{key:c(n),"container-id":t.containerId,node:n,register:t.register,unregister:t.unregister,gap:t.gap},null,8,["container-id","node","register","unregister","gap"]))),128))],4)):e.createCommentVNode("",!0)}}}),Fe={containers:new Map};function Oe(e){return"object"==typeof e&&null!==e}function Ne(e){if(!Oe(e))return{ok:!1,reason:"empty-root"};const t=new Set,n=new Set,o=new Map;let i=null;const a=(e,r)=>{if(i)return;if(r>8)return void(i="depth-exceeded");if(!Oe(e))return void(i="empty-root");const c=e.type;if("leaf"===c){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(t.has(a))return void(i="duplicate-id");if(t.add(a),"string"==typeof r){if(n.has(r))return void(i="duplicate-instance");n.add(r),o.set(r,a)}return}if("split"===c){const{nodeId:n,dir:o,children:c,sizes:s}=e;if("string"!=typeof n)return void(i="empty-root");if("row"!==o&&"col"!==o)return void(i="empty-root");if(!Array.isArray(c)||!Array.isArray(s))return void(i="empty-root");if(t.has(n))return void(i="duplicate-id");t.add(n);for(const e of s)if(p(e))return void(i="bad-size");for(const e of c)a(e,r+1);return}i="empty-root"};return a(e,1),i?{ok:!1,reason:i}:{ok:!0,instanceToLeaf:o}}function je(e,t,n){const o=(null==e?void 0:e.onError)??"log";switch(o){case"stop":return"stop";case"log":return console.error(`[hc-canvas/wirePageBindings] binding "${n}" threw:`,t),"continue";case"continue":return"continue";default:return console.error(`[hc-canvas/wirePageBindings] binding "${n}" threw (unknown onError="${String(o)}"):`,t),"continue"}}function Ve(e,t){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,t){const n=[];let o;for(const i of e){const e=qe(t,i.from);void 0===i.to?n.push(e):"number"==typeof i.to?(_e(n,i.to+1),n[i.to]=e):(o||(n.length>0&&"object"==typeof n[0]&&null!==n[0]&&!Array.isArray(n[0])?o=n[0]:(o={},0===n.length?n.push(o):n[0]=o)),o[i.to]=e)}return n}(e.paths,t):[t]:[t]}function qe(e,t){if(""===t)return e;const n=t.split(".");let o=e;for(const e of n){if(null==o)return;if("object"!=typeof o)return;o=o[e]}return o}function _e(e,t){for(;e.length<t;)e.push(void 0)}function Ke(e,t,n,o){e.debouncePendingTimer=null;const i=e.debounceDirty,a=e.debouncePendingChainId,r=e.debouncePendingPayload;e.debouncePendingChainId=null,e.debouncePendingPayload=void 0,e.debounceDirty=!1,n&&i&&null!==a&&Xe(t,e).pass&&o(r,a)}function He(e,t,n){e.throttleTrailingTimer=null;const o=e.throttleTrailingPendingChainId,i=e.throttleTrailingPendingPayload;e.throttleTrailingPendingChainId=null,e.throttleTrailingPendingPayload=void 0,e.throttleWindowStartTs=null,null!==o&&(t.once&&e.onceConsumed||(t.once&&(e.onceConsumed=!0),e.throttleLastFireTs=Ue(),n(i,o)))}function Xe(e,t){const n=e.throttle;if(n){n.leading;const e=n.windowMs,o=Ue(),i=t.throttleLastFireTs;if(null!==i&&o-i<e)return{pass:!1,reason:"throttle-window"};t.throttleLastFireTs=o}if(e.once){if(t.onceConsumed)return{pass:!1,reason:"once-consumed"};t.onceConsumed=!0}return{pass:!0}}function Ye(e){return!(!e||!(e.throttle&&!1===e.throttle.leading&&!1===e.throttle.trailing||e.debounce&&!1===e.debounce.leading&&!1===e.debounce.trailing))}function Ue(){return Date.now()}let Ge=0;function We(n){var o,i;const a=n.canvasId,{source:r}=n,c=n.dataStore,s=new Set;let d="off",l=0,u=!1;const p="w"+ ++Ge;let f=0;function h(){return`${p}-${++f}`}let g=0;function m(e){L.hasListeners("binding:trace")&&L.emit("binding:trace",{canvasId:a,ts:Date.now(),seq:++g,...e})}let v=!1,y=null;function I(){v&&(y&&y(),y=null,v=!1)}const x=new Map,w=new Map,b=new Set,S=new Set,k=new Set,B=new Set,M=new Map;let z=new Set;const C=[],T=[],L=function(e){const t=new Set,n=new Set,o=new Set;return{on(i,a){var r;if("binding:fire"===i){const e=a;return t.add(e),()=>t.delete(e)}if("binding:error"===i){const e=a;return n.add(e),()=>n.delete(e)}const c=a;return o.add(c),null==(r=null==e?void 0:e.onTraceListenerCountChange)||r.call(e,o.size),()=>{var t;o.delete(c),null==(t=null==e?void 0:e.onTraceListenerCountChange)||t.call(e,o.size)}},emit(e,i){if("binding:fire"===e)for(const e of t)try{e(i)}catch(e){console.error("[hc-canvas/wirePageBindings] listener threw",e)}else if("binding:error"===e)for(const e of n)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?t.size>0:"binding:error"===e?n.size>0:o.size>0,clear(){t.clear(),n.clear(),o.clear()}}}({onTraceListenerCountChange:function(e){e>0?!v&&c&&(y=c.attachTraceBridge(e=>{if(u)return;const t=c.getBindingsForCacheKey(e.cacheKey);for(const n of t)m({kind:e.kind,bindingId:n,cacheKey:e.cacheKey,sourceId:e.sourceId,writeSeq:e.writeSeq,reason:e.reason,payload:e.value})}),v=!0):I()}}),E=function(e){let t=[],n=200,o=null,i=null;return{start:function(a){i&&(i(),i=null,t=[]),n=(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)||(t.push(e),t.length>n&&t.shift())})},stop:function(){i&&(i(),i=null);const e=t.slice();return t=[],e},snapshot:function(){return t.slice()},get isRunning(){return null!==i}}}({on:(e,t)=>L.on(e,t)});function D(e){return void 0===e.canvasId||e.canvasId===a}function P(e){for(const t of G(e))if(void 0!==t.canvasId&&t.canvasId!==a)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,t){return void 0===t||R(e)!==t}function A(){var e;return(null==(e=r.getDocument())?void 0:e.bindings)??[]}function F(e){return A().find(t=>t.id===e)}function O(e){try{e()}catch(e){console.error("[hc-canvas/wirePageBindings] cleanup threw",e)}}function N(e,t){L.emit("binding:fire",e),m({kind:"fire",bindingId:e.bindingId,chainId:t,payload:e.payload,args:e.args})}function j(e,t){L.emit("binding:error",e),m({kind:(null==t?void 0:t.traceKind)??"error",bindingId:e.bindingId,chainId:null==t?void 0:t.chainId,code:e.code,message:e.message,detail:e.detail})}function V(e,t=!1){const n=x.get(e);if(n)for(const e of n)O(e);x.delete(e);const o=w.get(e);if(o){const t=function(e){const t={};return null!==e.debouncePendingTimer&&(clearTimeout(e.debouncePendingTimer),e.debouncePendingTimer=null,null!==e.debouncePendingChainId&&(t.droppedDebounce={chainId:e.debouncePendingChainId,payload:e.debouncePendingPayload})),null!==e.debouncePendingTimer||null===e.debouncePendingChainId||t.droppedDebounce||(t.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&&(t.droppedThrottleTrailing={chainId:e.throttleTrailingPendingChainId,payload:e.throttleTrailingPendingPayload}),e.throttleTrailingPendingChainId=null,e.throttleTrailingPendingPayload=void 0,e.throttleWindowStartTs=null,t}(o);t.droppedDebounce&&m({kind:"scheduled-dropped",bindingId:e,chainId:t.droppedDebounce.chainId,payload:t.droppedDebounce.payload}),t.droppedThrottleTrailing&&m({kind:"scheduled-dropped",bindingId:e,chainId:t.droppedThrottleTrailing.chainId,payload:t.droppedThrottleTrailing.payload}),w.delete(e)}S.delete(e),M.delete(e),k.delete(e),B.delete(e),s.delete(e),c&&c.removeBinding(e,{preserveCache:t})}function q(e=!1){for(const t of[...x.keys()])V(t,e)}function _(e){if(u)return;if(x.has(e.id))return;if(P(e))return void(k.has(e.id)||(j({bindingId:e.id,code:"unsupported-cross-canvas"}),k.add(e.id),m({kind:"wire-skipped",bindingId:e.id,reason:"unsupported-cross-canvas"})));const n=function(e){return e.disabled?"disabled":b.has(e.id)?"stopped":null}(e);if(n)return void m({kind:"wire-skipped",bindingId:e.id,reason:n});if("data-preview"===d&&"dataSource"!==e.source.kind)return void m({kind:"wire-skipped",bindingId:e.id,reason:"mode-matrix-data-preview"});Ye(e.schedule)&&!B.has(e.id)&&(console.warn(`[hc-canvas/wirePageBindings] schedule.{throttle|debounce}.{leading=false,trailing=false} 永远不会 fire (binding "${e.id}")`),B.add(e.id));const o=[];switch(e.source.kind){case"instanceEvent":{const n=t.getInstance(e.source.instanceId,a);if(!n)return void S.add(e.id);const i=e.source.event,r=n.on(i,t=>H(e,t));o.push(r);break}case"lifecycle":case"page":break;case"dataSource":{if(!c)return void(s.has(e.id)||(j({bindingId:e.id,code:"no-data-adapter"}),m({kind:"wire-skipped",bindingId:e.id,reason:"no-data-adapter"}),s.add(e.id)));const t=e.source,n="change"===t.watch,o=h(),i=t=>H(e,t),a=t=>{j({bindingId:e.id,code:"data-query-failed",message:t instanceof Error?t.message:String(t),detail:t},{chainId:o}),"stop"===je(e.errorPolicy,t,e.id)&&b.add(e.id)};m({kind:"data-query-started",bindingId:e.id,sourceId:t.sourceId,chainId:o}),n?c.subscribe({bindingId:e.id,sourceId:t.sourceId,onUpdate:i,onError:a}):c.request({bindingId:e.id,sourceId:t.sourceId,onUpdate:i,onError:a});break}default:return}x.set(e.id,o),M.set(e.id,R(e))}function K(){for(const e of A())_(e)}function H(e,t){if(u)return;if("off"===d)return;if("data-preview"===d&&"dataSource"!==e.source.kind)return;if(b.has(e.id))return void m({kind:"stopped-skipped",bindingId:e.id});if(P(e))return;if(l>=8){const t=h();return void j({bindingId:e.id,code:"cycle-detected"},{chainId:t,traceKind:"cycle-detected"})}const n=h(),o=function(e,t,n,o){return Ye(e)?{fire:!1,deferred:!1,reason:"schedule-no-fire"}:(null==e?void 0:e.debounce)?function(e,t,n,o){const i=e.debounce,a=i.leading??!1,r=i.trailing??!0,c=i.windowMs;if(null===t.debouncePendingTimer){if(a){const n=Xe(e,t);return n.pass?(t.debounceLeadingFireTs=Ue(),t.debounceDirty=!1,t.debouncePendingPayload=void 0,t.debouncePendingChainId=null,{fire:!0,deferred:!1,scheduleDeferred:n=>{t.debouncePendingTimer=setTimeout(()=>{Ke(t,e,r,n)},c)}}):{fire:!1,deferred:!1,reason:n.reason}}return t.debouncePendingPayload=n,t.debouncePendingChainId=o,t.debounceDirty=!0,{fire:!1,deferred:!0,scheduleDeferred:n=>{t.debouncePendingTimer=setTimeout(()=>{Ke(t,e,r,n)},c)}}}const s=null!==t.debouncePendingChainId?{chainId:t.debouncePendingChainId,payload:t.debouncePendingPayload}:void 0;return t.debounceDirty=!0,r&&(t.debouncePendingPayload=n,t.debouncePendingChainId=o),clearTimeout(t.debouncePendingTimer),t.debouncePendingTimer=null,r?{fire:!1,deferred:!0,droppedByReschedule:s,scheduleDeferred:n=>{t.debouncePendingTimer=setTimeout(()=>{Ke(t,e,r,n)},c)}}:{fire:!1,deferred:!1,reason:"debounce-window",scheduleDeferred:n=>{t.debouncePendingTimer=setTimeout(()=>{Ke(t,e,r,n)},c)}}}(e,t,n,o):function(e,t,n,o){const i=null==e?void 0:e.throttle;if(!i)return function(e,t){if(null==e?void 0:e.once){if(t.onceConsumed)return{fire:!1,deferred:!1,reason:"once-consumed"};t.onceConsumed=!0}return{fire:!0,deferred:!1}}(e,t);const a=i.leading??!0,r=i.trailing??!1,c=i.windowMs,s=Ue();if(a){const i=t.throttleLastFireTs;if(!(null!==i&&s-i<c))return(null==e?void 0:e.once)&&t.onceConsumed?{fire:!1,deferred:!1,reason:"once-consumed"}:((null==e?void 0:e.once)&&(t.onceConsumed=!0),t.throttleLastFireTs=s,{fire:!0,deferred:!1});if(!r)return{fire:!1,deferred:!1,reason:"throttle-window"};const a=null!==t.throttleTrailingPendingChainId?{chainId:t.throttleTrailingPendingChainId,payload:t.throttleTrailingPendingPayload}:void 0;if(t.throttleTrailingPendingPayload=n,t.throttleTrailingPendingChainId=o,null===t.throttleTrailingTimer){const n=c-(s-i);return{fire:!1,deferred:!0,scheduleDeferred:o=>{t.throttleTrailingTimer=setTimeout(()=>{He(t,e,o)},n)}}}return{fire:!1,deferred:!1,reason:"throttle-window",droppedByReschedule:a}}if(null===t.throttleWindowStartTs)return t.throttleWindowStartTs=s,t.throttleTrailingPendingPayload=n,t.throttleTrailingPendingChainId=o,{fire:!1,deferred:!0,reason:"leading-disabled",scheduleDeferred:n=>{t.throttleTrailingTimer=setTimeout(()=>{He(t,e,n)},c)}};const d=null!==t.throttleTrailingPendingChainId?{chainId:t.throttleTrailingPendingChainId,payload:t.throttleTrailingPendingPayload}:void 0;return t.throttleTrailingPendingPayload=n,t.throttleTrailingPendingChainId=o,{fire:!1,deferred:!1,reason:"throttle-window",droppedByReschedule:d}}(e,t,n,o)}(e.schedule,function(e){let t=w.get(e);return t||(t={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,t)),t}(e.id),t,n),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&&m({kind:"scheduled-dropped",bindingId:e.id,chainId:o.droppedByReschedule.chainId,payload:o.droppedByReschedule.payload,schedule:i}),o.scheduleDeferred&&o.scheduleDeferred((t,n)=>{u||(m({kind:"scheduled-flushed",bindingId:e.id,chainId:n,payload:t,schedule:i}),X(e,t,n))}),o.reason?m({kind:"scheduled-skipped",bindingId:e.id,chainId:n,reason:o.reason,payload:t,schedule:i}):!o.deferred||o.fire?o.fire&&X(e,t,n):m({kind:"scheduled-deferred",bindingId:e.id,chainId:n,payload:t,schedule:i})}function X(e,n,o){if(u)return;const i=t.getInstance(e.target.instanceId,a);if(!i)return void j({bindingId:e.id,code:"target-not-mounted"},{chainId:o});let r,c;try{r=Ve(e.mapping,n)}catch(t){return m({kind:"mapping-failed",bindingId:e.id,chainId:o,message:t instanceof Error?t.message:String(t),detail:t}),void("stop"===je(e.errorPolicy,t,e.id)&&b.add(e.id))}if("instanceDataInput"===e.target.kind){const t=i.vm.custom,a=null==t?void 0:t[e.target.key];if(!a||"object"!=typeof a||!0!==a.dataInput)return void j({bindingId:e.id,code:"unknown-target-data-input",message:t&&e.target.key in t?`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:o});try{i.setDataInput(e.target.key,r[0])}catch(t){return"stop"===je(e.errorPolicy,t,e.id)&&b.add(e.id),void j({bindingId:e.id,code:"invoke-failed",message:t instanceof Error?t.message:String(t),detail:t},{chainId:o})}return void N({bindingId:e.id,source:e.source,target:e.target,payload:n,args:r},o)}l++;try{c=function(e,t,n){switch(t.kind){case"instanceMethod":return e.call(t.method,...n);case"instanceEmit":return void e.emit(t.event,n[0]);default:return}}(i,e.target,r),N({bindingId:e.id,source:e.source,target:e.target,payload:n,args:r},o)}catch(t){return"stop"===je(e.errorPolicy,t,e.id)&&b.add(e.id),void j({bindingId:e.id,code:"invoke-failed",message:t instanceof Error?t.message:String(t),detail:t},{chainId:o})}finally{l--}var s;"object"==typeof(s=c)&&null!==s&&"function"==typeof s.then&&Promise.resolve(c).catch(t=>{u||("stop"===je(e.errorPolicy,t,e.id)&&b.add(e.id),j({bindingId:e.id,code:"invoke-failed",message:t instanceof Error?t.message:String(t),detail:t},{chainId:o}))})}const Y=null==(o=r.onAction)?void 0:o.call(r,e=>{var t,n,o,i;if(u)return;if("off"===d)return;const a=e;if(a&&"object"==typeof a)switch(a.type){case"addBinding":{const e=null==(n=null==(t=a.payload)?void 0:t.binding)?void 0:n.id;if(!e)return;const o=F(e);o&&_(o);break}case"updateBinding":{const e=null==(o=a.payload)?void 0:o.bindingId;if(!e)return;V(e);const t=F(e);t&&_(t);break}case"removeBinding":{const e=null==(i=a.payload)?void 0:i.bindingId;if(!e)return;V(e),b.delete(e);break}case"replaceDocument":q(),b.clear(),S.clear(),K();break;case"removeInstance":!function(){const e=new Set(A().map(e=>e.id));for(const t of[...x.keys()])e.has(t)||(V(t),b.delete(t));for(const e of A())_(e)}()}});Y&&C.push(Y);const U=null==(i=r.onDocumentChange)?void 0:i.call(r,()=>{if(u)return;if("off"===d)return;const e=A(),t=new Set(e.map(e=>e.id)),n=new Set(x.keys());for(const e of n)t.has(e)||V(e);for(const t of e)x.has(t.id)?$(t,M.get(t.id))&&(V(t.id),_(t)):_(t)});function W(){return new Set(t.listInstances({canvasId:a}).map(e=>e.instanceId))}U&&C.push(U),z=W();const J=e.watch(t.registryVersion,()=>{if(u)return;if("off"===d)return;const e=W(),t=Je(e,z),n=Je(z,e);z=e;for(const t of[...S]){const n=F(t);n?Q(n,e)&&(S.delete(t),_(n)):S.delete(t)}if(n.size>0)for(const e of[...x.keys()]){const t=F(e);t&&G(t).some(e=>D(e)&&n.has(e.instanceId))&&(V(e),S.add(e),b.delete(e))}!function(e){if(0!==e.size)for(const t of A())"lifecycle"===t.source.kind&&"mounted"===t.source.hook&&D({canvasId:t.source.canvasId,instanceId:t.source.instanceId})&&e.has(t.source.instanceId)&&H(t,{instanceId:t.source.instanceId,hook:"mounted"})}(t),function(e){if(0!==e.size)for(const t of A())"lifecycle"===t.source.kind&&"unmounted"===t.source.hook&&D({canvasId:t.source.canvasId,instanceId:t.source.instanceId})&&e.has(t.source.instanceId)&&H(t,{instanceId:t.source.instanceId,hook:"unmounted"})}(n)},{flush:"post"});function Q(e,t){for(const n of G(e)){if(!D(n))return!1;if(!t.has(n.instanceId))return!1}return!0}return T.push(J),{setMode:function(e){u||e!==d&&(q(!0),b.clear(),S.clear(),d=e,"off"!==e&&K(),"runtime"===e&&function(){for(const e of A())"page"===e.source.kind&&"pageInit"===e.source.hook&&H(e,{hook:"pageInit"})}())},getMode:()=>d,testBinding(e,n){const o=[],i=F(e);if(!i)return o.push({bindingId:e,phase:"skipped",details:{reason:"binding-not-found"}}),o;if(i.disabled)return o.push({bindingId:e,phase:"skipped",details:{reason:"disabled"}}),o;if(P(i))return o.push({bindingId:e,phase:"skipped",details:{reason:"unsupported-cross-canvas"}}),o;let r;try{r=Ve(i.mapping,n),o.push({bindingId:e,phase:"mapping",details:{payload:n,args:r}})}catch(t){return o.push({bindingId:e,phase:"error",details:{stage:"mapping",message:t instanceof Error?t.message:String(t)}}),o}const c=t.getInstance(i.target.instanceId,a);if(!c)return o.push({bindingId:e,phase:"skipped",details:{reason:"target-not-mounted"}}),o;if("instanceDataInput"===i.target.kind){const t=c.vm.custom,n=null==t?void 0:t[i.target.key];if(!n||"object"!=typeof n||!0!==n.dataInput)return o.push({bindingId:e,phase:"skipped",details:{reason:"unknown-target-data-input",key:i.target.key}}),o}return o.push({bindingId:e,phase:"calling-target",details:{target:i.target,dryRun:!0}}),o.push({bindingId:e,phase:"done",details:{args:r}}),o},on:(e,t)=>L.on(e,t),startTracing(e){E.start(e)},stopTracing:()=>E.stop(),getTraceBuffer:()=>E.snapshot(),dispose:function(){if(!u){"runtime"===d&&function(){for(const e of A())"page"===e.source.kind&&"pageBeforeUnmount"===e.source.hook&&H(e,{hook:"pageBeforeUnmount"})}(),u=!0,q();for(const e of C)O(e);for(const e of T)O(e);C.length=0,T.length=0,b.clear(),S.clear(),k.clear(),B.clear(),M.clear(),z.clear(),w.clear(),E.stop(),L.clear(),I(),d="off"}}}}function Je(e,t){const n=new Set;for(const o of e)t.has(o)||n.add(o);return n}const Qe=["display","gridTemplateColumns","gridTemplateRows","gridAutoFlow","flexDirection","flexWrap","gap","rowGap","columnGap","justifyContent","alignItems","position"];let Ze=!1;function et(e,n){const o="string"==typeof(null==e?void 0:e.js)?e.js:"",i="string"==typeof(null==e?void 0:e.html)?e.html:"",a=t.parseComponentSource(o,i);return!a.ok&&(null==n?void 0:n.fallback)?n.fallback:{propsDecl:a.propsDecl.map(nt),emitsDecl:a.emitsDecl.map(it),methodsDecl:a.methodsDecl.map(ot),slotsDecl:a.slotsDecl.map(at),modelDecl:a.modelDecl.map(rt),dataInputsDecl:a.dataInputsDecl.map(ct),dataOutputsDecl:a.dataOutputsDecl.map(ct)}}function tt(e){if("string"===e||"number"===e||"boolean"===e||"object"===e||"array"===e||"any"===e)return e}function nt(e){const t=e.key,n="string"==typeof e.name?e.name:void 0;return{key:t,type:tt(e.type)??"string",...void 0!==e.value?{value:e.value}:{},...n&&n!==t?{label:n}:{},...e.enum?{enum:e.enum}:{}}}function ot(e){return{key:e.name,...e.params?{params:e.params}:{}}}function it(e){return{event:e.event}}function at(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 rt(e){const t=tt(e.type);return{key:e.key,...void 0!==e.prop?{prop:e.prop}:{},...void 0!==e.event?{event:e.event}:{},...t?{type:t}:{},...void 0!==e.defaultValue?{defaultValue:e.defaultValue}:{}}}function ct(e){const t=tt(e.type);return{key:e.key,...t?{type:t}:{},...void 0!==e.label?{label:e.label}:{}}}const st=["data-hc-canvas-id"],dt=["data-instance-id","data-hc-hidden"],lt={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"}},ut={style:{opacity:"0.8"}},pt={style:{opacity:"0.6","margin-top":"4px","word-break":"break-all"}},ft={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"}},ht=["data-instance-id","data-hc-placement","data-hc-hidden"],gt={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"}},mt={style:{opacity:"0.6"}},vt=["title"],yt={key:1,class:"hc-page-renderer-empty",style:{padding:"24px",color:"#64748b","font-size":"13px"}},It=e.defineComponent({__name:"HyperCardPageRenderer",props:{payload:{},document:{},componentSourceMap:{},schedulerOptions:{},canvasId:{},adapters:{},keepHiddenMounted:{type:Boolean},persistInstanceState:{type:Boolean}},setup(n,{expose:o}){var i,c;const s=n,d=s.canvasId??function(){var e;const t="undefined"!=typeof globalThis&&"crypto"in globalThis?globalThis.crypto:void 0;return`auto-${(null==(e=null==t?void 0:t.randomUUID)?void 0:e.call(t).replace(/-/g,"").slice(0,8))??Math.random().toString(36).slice(2,10)}`}(),l=e.computed(()=>s.persistInstanceState??!1);e.provide(t.HC_CANVAS_ID_KEY,d);const u=U(s.schedulerOptions),p=e.ref(null);let f=!1;e.onMounted(()=>{te||e.nextTick(()=>{var e;if(f)return;if(!p.value)return;if("fill"!==(null==(e=Z.value)?void 0:e.canvas.height.mode))return;const t=p.value.parentElement;t&&(t.getBoundingClientRect().height>0||(f=!0,console.warn("[hypercard] HyperCardPageRenderer 父容器高度为 0,fill 模式画布不可见。请给父容器设置明确 height 或改用 px 模式。")))})}),e.onBeforeUnmount(()=>{r(d),oe.value&&(oe.value.dispose(),oe.value=null),u.dispose(),ie&&ie.disposeAll(),d!==t.DEFAULT_CANVAS_ID&&t.disposeCanvas(d)});const h=e.ref(new Map),g=e.ref(new Map),I=new Map,x=e.ref(!1);let w=null;function b(){x.value=!1,w&&clearTimeout(w),w=setTimeout(()=>{x.value=!0},300)}function S(e,t){const n=new Map;if(t.querySelectorAll("[data-hc-slot]").forEach(e=>{if(e.closest("[data-instance-id]")!==t)return;const o=e.getAttribute("data-hc-slot")||Te;n.has(o)||n.set(o,e)}),function(e,t){if(!e||e.size!==t.size)return!1;for(const[n,o]of t)if(e.get(n)!==o)return!1;return!0}(g.value.get(e),n))return;const o=new Map(g.value);o.set(e,n),g.value=o,k(e,n)}function k(e,t){var n;const o=t.get(Te);if(!o)return;const i=z.value.get(e),a="active"===(null==(n=_.value.containers.get(e))?void 0:n.status);!function(e,t,n=!1){!function(e){const t=e.style;for(const e of Qe)t[e]=""}(e);const o=null==t?void 0:t.mode;if(!t||"none"===o||void 0===o)return;if("free"===o)return void(e.style.position="relative");if("free-split"===o)return void(n||Ze||(Ze=!0,console.warn("[hypercard] free-split 容器降级平铺(分割树非法 / plan fallback),子实例已平铺显示。")));const i=P(t);i&&Object.assign(e.style,i)}(o,null==i?void 0:i.containerLayout,a)}function B(e,t){const n=h.value.get(e);t&&t!==n?(h.value.set(e,t),u.register(e,t),function(e,t){const n=I.get(e);n&&n.disconnect(),S(e,t);const o=new MutationObserver(()=>S(e,t));o.observe(t,{childList:!0,subtree:!0}),I.set(e,o)}(e,t)):!t&&n&&(u.unregister(e),h.value.delete(e),function(e){const t=I.get(e);if(t&&(t.disconnect(),I.delete(e)),g.value.has(e)){const t=new Map(g.value);t.delete(e),g.value=t}}(e))}e.onMounted(b),e.watch(g,b),e.onBeforeUnmount(()=>{for(const e of I.values())e.disconnect();I.clear(),g.value=new Map,q.clearAll(),w&&clearTimeout(w)});const M=e.computed(()=>{var e;const t=(null==(e=s.payload)?void 0:e.document)??s.document??null;return t?y(v(m(t))):null}),z=e.computed(()=>{const e=new Map,t=M.value;if(!t)return e;for(const n of t.instances)e.has(n.instanceId)||e.set(n.instanceId,n);return e});e.watch(M,()=>{e.nextTick(()=>function(){for(const[e,t]of g.value)k(e,t)}())},{flush:"post"});const C=e.computed(()=>function(e){const t={};for(const n of Object.keys(e)){const o=e[n],i=o.source;o&&"ok"===o.status&&i&&("string"==typeof i.html||"string"==typeof i.js)?t[n]={...o,contract:et({html:i.html??"",js:i.js??"",css:i.css??""},{fallback:o.contract})}:t[n]=o}return t}(s.payload?s.payload.componentVersions:s.componentSourceMap??{})),T=e.computed(()=>{var e;const t=M.value,n=C.value;if(!t)return[];const o=z.value,i=null==(e=Z.value)?void 0:e.rootLayout;return t.instances.map(e=>{var a;const r=n[e.componentVersionKey]??null,c=(null==(a=t.componentOverrides)?void 0:a[e.instanceId])??null,s=c&&c.baseVersionKey===e.componentVersionKey?c:null,d=s?`${s.baseVersionKey}#override:${e.instanceId}`:e.componentVersionKey,l=function(e){var t,n;return void 0===e.parentId?(null==i?void 0:i.mode)??"free":(null==(n=null==(t=o.get(e.parentId))?void 0:t.containerLayout)?void 0:n.mode)??"none"}(e),u=function(e){var t;if(void 0===e.parentId)return"split"===(null==i?void 0:i.mode)?i.direction:void 0;const n=null==(t=o.get(e.parentId))?void 0:t.containerLayout;return"split"===(null==n?void 0:n.mode)?n.direction:void 0}(e);if(s)return{instance:e,asset:r,override:s,renderSource:s.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 L(e){const t=C.value[e];return null==t?void 0:t.contract}const D=e.computed(()=>{const e=M.value;return e?Ee(e,{resolveContract:L}):[]}),A=e.inject(Be,null);e.watch(D,e=>{A&&"function"==typeof A.setLayoutIssues&&A.setLayoutIssues(e)},{immediate:!0});const F=e.computed(()=>{const e=new Set;for(const t of D.value)"missing-parent"!==t.kind&&"invalid-slot"!==t.kind&&"parent-not-layout"!==t.kind&&"orphan-slot"!==t.kind&&"cycle"!==t.kind&&"absolute-child-rejected"!==t.kind||e.add(t.instanceId);return e}),O=e.computed(()=>T.value.filter(e=>void 0===e.instance.parentId)),N=e.computed(()=>T.value.filter(e=>void 0!==e.instance.parentId&&H(e.instance.placement)));function j(e){const t=e.instance,n=t.layoutBox??{x:t.rect.x,y:t.rect.y,width:t.rect.w,height:t.rect.h,widthMode:"px",heightMode:"px",overflow:"hidden"},o=e.parentMode,i=E(n,t.zIndex,t.rotation,o,e.parentSplitDirection),a=R(t.layoutItem,o);return a&&Object.assign(i,a),W(t)&&function(e){e.width="100%",e.height="100%",e.position="relative",delete e.left,delete e.top}(i),i}const V=e.computed(()=>{var e;return P(null==(e=Z.value)?void 0:e.rootLayout)}),q=function(){const t=e.ref(new Map);return{map:t,register:function(e,n,o){const i=t.value.get(e);if(i&&i.get(n)===o)return;const a=new Map(t.value),r=new Map(i??[]);r.set(n,o),a.set(e,r),t.value=a},unregister:function(e,n){const o=t.value.get(e);if(!o||!o.has(n))return;const i=new Map(t.value),a=new Map(o);a.delete(n),0===a.size?i.delete(e):i.set(e,a),t.value=i},get:function(e,n){var o;return null==(o=t.value.get(e))?void 0:o.get(n)},clearContainer:function(e){if(!t.value.has(e))return;const n=new Map(t.value);n.delete(e),t.value=n},clearAll:function(){0!==t.value.size&&(t.value=new Map)}}}(),_=e.computed(()=>function(e){if(!e)return Fe;const t=new Map;for(const n of e.instances){const e=n.containerLayout;if(!e||"free-split"!==e.mode)continue;const o=n.instanceId,i=e,a=Ne(i.root);a.ok?t.set(o,{status:"active",containerId:o,root:i.root,instanceToLeaf:a.instanceToLeaf}):t.set(o,{status:"fallback",containerId:o,reason:a.reason})}return{containers:t}}(M.value)),K=e.computed(()=>{const e=[];for(const t of _.value.containers.values())"active"===t.status&&e.push(t);return e});function X(e){var t;return(null==(t=g.value.get(e))?void 0:t.get(Te))??null}function Y(e){const t=e.root;return e.containerId+":"+("leaf"===t.type?t.leafId:t.nodeId)}function G(e){var t;const n=null==(t=z.value.get(e))?void 0:t.containerLayout;return"free-split"===(null==n?void 0:n.mode)?n.gap??0:0}function W(e){return function(e){const{parentId:t,instanceId:n,effectiveSlot:o,plan:i}=e;if(!t)return null;if(o!==Te)return null;const a=i.containers.get(t);if(!a||"active"!==a.status)return null;const r=a.instanceToLeaf.get(n);return r?{containerId:t,leafId:r}:null}({parentId:e.parentId,instanceId:e.instanceId,effectiveSlot:Le(e),plan:_.value})}function J(e){if(!e.parentId)return null;const t=W(e);if(t){const e=q.get(t.containerId,t.leafId)??null;return e&&e.isConnected?e:null}const n=g.value.get(e.parentId);if(!n)return null;const o=n.get(Le(e))??null;return o&&o.isConnected?o:null}function Q(e){return"实例 "+e.instance.instanceId+':slot "'+Le(e.instance)+'" 不可用'}const Z=e.computed(()=>{var e;return(null==(e=M.value)?void 0:e.layout)??null});e.watch(()=>O.value.map(e=>`${e.instance.instanceId}:${e.instance.hidden?1:0}`),()=>{const e=s.keepHiddenMounted??!0;for(const t of O.value)u.setHeld(t.instance.instanceId,e&&!0===t.instance.hidden)},{flush:"post",immediate:!0});const ee=e.computed(()=>{if(!Z.value)return null;if(te){const e=te.measuredCanvasSize.value;return{width:`${e.w}px`,height:`${e.h}px`,overflow:Z.value.canvas.overflow??"hidden"}}return{width:$(Z.value.canvas.width),height:$(Z.value.canvas.height),overflow:Z.value.canvas.overflow??"hidden"}}),te=e.inject(Be,void 0),ne=te?null:we(null==(i=s.adapters)?void 0:i.assets),oe=e.shallowRef(null),ie=te||!(null==(c=s.adapters)?void 0:c.data)?null:ke(s.adapters.data);if(!te){const t=We({canvasId:d,source:{getDocument:()=>M.value,onDocumentChange:t=>e.watch(M,t,{flush:"post"})},dataStore:ie??void 0});oe.value=t,e.nextTick(()=>{t.setMode("runtime")})}const ae=te?{invalidateDataSource(e){te.dataStore.invalidate(e)},getDataSourceSnapshot:()=>te.dataStore.getSnapshot(),getCachedBySourceId:(e,t)=>te.dataStore.getCachedBySourceId(e,t)}:ie?{invalidateDataSource(e){ie.invalidate(e)},getDataSourceSnapshot:()=>ie.getSnapshot(),getCachedBySourceId:(e,t)=>ie.getCachedBySourceId(e,t)}:null,re={canvasId:d,getSchedulerStats:()=>u.getStats(),listRuntimeInstances:()=>function(){const e=M.value;if(!e)return[];const n=new Map;for(const e of D.value)n.set(e.instanceId,!0);const o=u.state;return e.instances.map(e=>{const i=o[e.instanceId];let a,r;switch(i){case"mounting":case"mounted":case"disposing":a=i;break;default:a="pending"}if(n.has(e.instanceId))r="layout-error";else if(e.componentId){const t=e.source;r=!t||t.template||t.script||t.style?"ok":"missing-source"}else r="missing-componentId";return{instanceId:e.instanceId,componentId:e.componentId,mountState:a,timings:t.getInstanceTimings(d,e.instanceId),protocolStatus:r}})}(),getInstanceTimings:e=>t.getInstanceTimings(d,e),getLayoutIssues:()=>D.value,getPageDocument:()=>M.value};e.onMounted(()=>{a(d,re)}),o({binding:oe,data:ae});const ce=e.ref(null);let se=0;e.watch(()=>{var e,t;return null==(t=null==(e=Z.value)?void 0:e.background)?void 0:t.image},e=>{se++;const t=se;if(!e)return void(ce.value=null);const n=(o=e,te?te.resolveAsset(o):ne.resolve(o));var o;"string"!=typeof n?(ce.value=null,n.then(n=>{var o,i;t===se&&(null==(i=null==(o=Z.value)?void 0:o.background)?void 0:i.image)===e&&(ce.value=n||null)},()=>{t===se&&(ce.value=null)})):ce.value=n||null},{immediate:!0,deep:!0});const de=e.computed(()=>{var e;const t=null==(e=Z.value)?void 0:e.background;if(!t)return null;const n={position:"absolute",inset:"0",pointerEvents:"none",zIndex:-1};return t.color&&(n.background=t.color),t.image&&ce.value&&(n.backgroundImage=`url("${ce.value}")`,n.backgroundRepeat="repeat"===t.imageFit?"repeat":"no-repeat",n.backgroundPosition=t.imagePosition??"center","stretch"===t.imageFit?n.backgroundSize="100% 100%":t.imageFit&&"repeat"!==t.imageFit&&"center"!==t.imageFit&&(n.backgroundSize=t.imageFit)),void 0!==t.opacity&&(n.opacity=t.opacity),n});return(n,o)=>Z.value&&ee.value?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"rootEl",ref:p,class:"hc-page-renderer","data-hc-canvas-id":e.unref(d),style:e.normalizeStyle({position:"relative",...ee.value,...V.value??{}})},[de.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"hc-canvas-bg","data-hc-canvas-bg":"",style:e.normalizeStyle(de.value)},null,4)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(O.value,n=>e.withDirectives((e.openBlock(),e.createElementBlock("div",{key:n.instance.instanceId,ref_for:!0,ref:e=>B(n.instance.instanceId,e),"data-instance-id":n.instance.instanceId,"data-hc-hidden":n.instance.hidden?"true":void 0,style:e.normalizeStyle(j(n))},["ok"===n.status&&n.renderSource?e.unref(u).isMounted(n.instance.instanceId)?(e.openBlock(),e.createBlock(e.unref(t.RuntimeBox),{key:1,"canvas-id":e.unref(d),"instance-id":n.instance.instanceId,"component-id":n.instance.componentId,"scope-id":n.scopeId,"html-source":n.renderSource.html,"js-source":n.renderSource.js,"css-source":n.renderSource.css,"custom-values":{...n.instance.props,__containerLayout:n.instance.containerLayout},"persist-instance-state":l.value},null,8,["canvas-id","instance-id","component-id","scope-id","html-source","js-source","css-source","custom-values","persist-instance-state"])):(e.openBlock(),e.createElementBlock("div",ft)):(e.openBlock(),e.createElementBlock("div",lt,[o[0]||(o[0]=e.createElementVNode("div",{style:{"font-weight":"600","margin-bottom":"4px"}}," ⚠️ 组件不可渲染 ",-1)),e.createElementVNode("div",ut,e.toDisplayString(n.instance.alias??n.instance.instanceId),1),e.createElementVNode("div",pt,e.toDisplayString(n.invalidReason),1)]))],12,dt)),[[e.vShow,!n.instance.hidden]])),128)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(N.value,(n,i)=>{return e.openBlock(),e.createElementBlock(e.Fragment,{key:`child-${n.instance.instanceId}`},[J(n.instance)&&!F.value.has(n.instance.instanceId)?(e.openBlock(),e.createBlock(e.Teleport,{key:0,to:J(n.instance)},[e.withDirectives(e.createElementVNode("div",{ref_for:!0,ref:e=>B(n.instance.instanceId,e),"data-instance-id":n.instance.instanceId,"data-hc-placement":n.instance.placement,"data-hc-hidden":n.instance.hidden?"true":void 0,style:e.normalizeStyle(j(n))},["ok"===n.status&&n.renderSource?(e.openBlock(),e.createBlock(e.unref(t.RuntimeBox),{key:1,"canvas-id":e.unref(d),"instance-id":n.instance.instanceId,"component-id":n.instance.componentId,"scope-id":n.scopeId,"html-source":n.renderSource.html,"js-source":n.renderSource.js,"css-source":n.renderSource.css,"custom-values":{...n.instance.props,__containerLayout:n.instance.containerLayout},"persist-instance-state":l.value},null,8,["canvas-id","instance-id","component-id","scope-id","html-source","js-source","css-source","custom-values","persist-instance-state"])):(e.openBlock(),e.createElementBlock("div",gt,[o[1]||(o[1]=e.createElementVNode("div",{style:{"font-weight":"600"}},"⚠️ 组件不可渲染",-1)),e.createElementVNode("div",mt,e.toDisplayString(n.invalidReason),1)]))],12,ht),[[e.vShow,!n.instance.hidden]])],8,["to"])):F.value.has(n.instance.instanceId)||x.value?(e.openBlock(),e.createElementBlock("div",{key:1,class:"hc-layout-issue-warning",title:Q(n),style:e.normalizeStyle((a=i,{position:"absolute",left:"8px",top:8+28*a+"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"}))}," ⚠ 布局问题:"+e.toDisplayString(n.instance.instanceId)+'(slot "'+e.toDisplayString(e.unref(Le)(n.instance))+'") ',13,vt)):e.createCommentVNode("",!0)],64);var a}),128)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(K.value,t=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:`fs-${t.containerId}`},[X(t.containerId)?(e.openBlock(),e.createBlock(e.Teleport,{key:0,to:X(t.containerId)},[(e.openBlock(),e.createBlock(Ae,{key:Y(t),"container-id":t.containerId,node:t.root,register:e.unref(q).register,unregister:e.unref(q).unregister,gap:G(t.containerId)},null,8,["container-id","node","register","unregister","gap"]))],8,["to"])):e.createCommentVNode("",!0)],64))),128))],12,st)):(e.openBlock(),e.createElementBlock("div",yt," No page to render(payload / document 都未提供) "))}}),xt=new Map,wt=new Set;function bt(){const e=Object.freeze(Array.from(xt.keys()));for(const t of wt)try{t(e)}catch{}}function St(e,t){xt.set(e,t),bt()}function kt(e){xt.delete(e)&&bt()}function Bt(e,t){var n;const o=t.document;switch(e.type){case"addInstance":{const{instance:t}=e.payload;return o.getInstance(t.instanceId)?null:[{type:"removeInstance",payload:{instanceId:t.instanceId}}]}case"removeInstance":{const{instanceId:n}=e.payload;if(!o.getInstance(n))return null;const i=t.cascadeRemove?oe(o.document.instances,n).instanceIds:[n],a=o.document.bindings.filter(e=>i.some(t=>W(e,t))),r=[];for(const e of i){const t=o.getInstance(e);t&&r.push({type:"addInstance",payload:{instance:zt(t)}})}for(const e of a)r.push({type:"addBinding",payload:{binding:c(e)}});return r}case"updateInstance":{const{instanceId:t,patch:n}=e.payload,i=o.getInstance(t);if(!i)return null;const a={},r=i,s=a;for(const e of Object.keys(n)){const t=r[e];s[e]=Mt(t)?c(t):t}return[{type:"updateInstance",payload:{instanceId:t,patch:a}}]}case"moveInstance":{const{instanceId:t,x:n,y:i}=e.payload,a=o.getInstance(t);return a?a.rect.x===n&&a.rect.y===i?null:a.layoutBox?[{type:"updateLayoutBox",payload:{instanceId:t,patch:{...a.layoutBox}}}]:[{type:"moveInstance",payload:{instanceId:t,x:a.rect.x,y:a.rect.y}}]:null}case"resizeInstance":{const{instanceId:t,w:n,h:i}=e.payload,a=o.getInstance(t);return a?a.rect.w===n&&a.rect.h===i?null:a.layoutBox?[{type:"updateLayoutBox",payload:{instanceId:t,patch:{...a.layoutBox}}}]:[{type:"resizeInstance",payload:{instanceId:t,w:a.rect.w,h:a.rect.h}}]:null}case"setInstanceProp":{const{instanceId:t,key:n,value:i}=e.payload,a=o.getInstance(t);return a?a.props[n]===i?null:[{type:"updateInstance",payload:{instanceId:t,patch:{props:{...a.props}}}}]:null}case"addBinding":{const{binding:t}=e.payload;return o.document.bindings.some(e=>e.id===t.id)?null:[{type:"removeBinding",payload:{bindingId:t.id}}]}case"removeBinding":{const{bindingId:t}=e.payload,n=o.document.bindings.find(e=>e.id===t);return n?[{type:"addBinding",payload:{binding:c(n)}}]:null}case"updateBinding":{const{bindingId:t,patch:n}=e.payload,i=o.document.bindings.find(e=>e.id===t);if(!i)return null;const a={},r=i,s=a;for(const e of Object.keys(n)){const t=r[e];s[e]=Mt(t)?c(t):t}return[{type:"updateBinding",payload:{bindingId:t,patch:a}}]}case"updateLayout":{const{patch:t}=e.payload,n=o.document.layout,i={},a=i;let r=!1;for(const e of Object.keys(t)){const o=n[e];a[e]=Mt(o)?c(o):o,Object.is(t[e],o)||(r=!0)}return r?[{type:"updateLayout",payload:{patch:i}}]:null}case"setRootLayout":{const{rootLayout:t}=e.payload,n=o.document.layout.rootLayout;return void 0===n&&null===t?null:[{type:"setRootLayout",payload:{rootLayout:void 0!==n?c(n):null}}]}case"setComponentOverride":{const{instanceId:t,override:i}=e.payload;if(void 0===o.getInstance(t))return null;const a=null==(n=o.document.componentOverrides)?void 0:n[t],r=void 0!==a;return r||null!==i?[{type:"setComponentOverride",payload:{instanceId:t,override:r?c(a):null}}]:null}case"replaceDocument":return[{type:"replaceDocument",payload:{document:c(o.document)}}];case"setInstanceLocked":{const{instanceId:t,locked:n}=e.payload,i=o.getInstance(t);if(!i)return null;const a=i.locked??!1,r=i.lockPosition,c=i.lockSize;return a===n&&r===(!!n||void 0)&&c===(!!n||void 0)?null:[{type:"updateInstance",payload:{instanceId:t,patch:{locked:a,lockPosition:r,lockSize:c}}}]}case"duplicateInstance":{const{instanceId:t,newInstanceId:n}=e.payload;return o.getInstance(t)?o.getInstance(n)?null:[{type:"removeInstance",payload:{instanceId:n}}]:null}case"setInstanceSize":{const{instanceId:t,size:n}=e.payload,i=o.getInstance(t);if(!i)return null;const a=i.size,r="size"in i&&void 0!==a;return r||null!==n?[{type:"setInstanceSize",payload:{instanceId:t,size:(r?c(a):null)??null}}]:null}case"setContainerLayout":{const{instanceId:t,containerLayout:n}=e.payload,i=o.getInstance(t);if(!i)return null;const a=i.containerLayout,r="containerLayout"in i&&void 0!==a;return r||null!==n?[{type:"setContainerLayout",payload:{instanceId:t,containerLayout:(r?c(a):null)??null}}]:null}case"updateLayoutBox":{const{instanceId:t,patch:n}=e.payload,i=o.getInstance(t);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 c=!1;const s=["x","y","width","height"];for(const e of s){const t=n[e];"number"==typeof t&&Number.isFinite(t)&&(r[e]=a[e],c=!0)}return"px"!==n.widthMode&&"percent"!==n.widthMode&&"fill"!==n.widthMode&&"auto"!==n.widthMode||(r.widthMode=a.widthMode,c=!0),"px"!==n.heightMode&&"percent"!==n.heightMode&&"fill"!==n.heightMode&&"auto"!==n.heightMode||(r.heightMode=a.heightMode,c=!0),"hidden"!==n.overflow&&"visible"!==n.overflow&&"auto"!==n.overflow||(r.overflow=a.overflow,c=!0),c?[{type:"updateLayoutBox",payload:{instanceId:t,patch:r}}]:null}case"updateLayoutItem":{const{instanceId:t,patch:n}=e.payload,i=o.getInstance(t);if(!i)return null;const a=i.layoutItem,r="layoutItem"in i&&void 0!==a,s=null===n;if(!r&&s)return null;if(!s){const e=["order","grow","shrink","row","column","rowSpan","columnSpan","ratio"];let t=!1;for(const o of e){const e=n[o];if("number"==typeof e&&Number.isFinite(e)){t=!0;break}}if(!t)return null}return[{type:"updateLayoutItem",payload:{instanceId:t,patch:(r?c(a):null)??null}}]}case"updateRotation":{const{instanceId:t,value:n}=e.payload,i=o.getInstance(t);if(!i)return null;if(!Number.isFinite(n))return null;const a=i.rotation,r="number"==typeof a&&Number.isFinite(a)?a:0;return r===n?null:[{type:"updateRotation",payload:{instanceId:t,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 t=e;return console.warn("[hc-canvas/computeInverse] unknown action",t),null}}}function Mt(e){return null!==e&&"object"==typeof e&&!Array.isArray(e)}function zt(e){return c(e)}function Ct(t,n={}){const o=n.maxSize??100,i=e.ref([]),a=e.ref([]),r=function(e){return xe.get(e)}(t);let c={redo:[],undo:[]},s=null;function d(e){var t;0===c.redo.length&&0===c.undo.length||(t={type:e,redo:c.redo,undo:c.undo,timestamp:Date.now()},i.value.push(t),i.value.length>o&&i.value.shift(),a.value.length>0&&(a.value=[]),c={redo:[],undo:[]},s=null)}const l={onBeforeAction(e){if(t.isRecordingSuppressed.value)return;if(me(e)){const t=(null==r?void 0:r.computeInverse(e))??null;if(!t)return;return c.redo.push(e),c.undo.unshift(t),void(s=e.type)}const n=Bt(e,t);if(null!==n){c.redo.push(e);for(let e=n.length-1;e>=0;e--)c.undo.unshift(n[e]);s=e.type}},onAfterAction(e){t.isRecordingSuppressed.value||t.isBatching.value||d(s??"action")},onAfterBatch(e){t.isRecordingSuppressed.value||d(e??"batch")}},u=t.registerHooks(l);function p(){i.value=[],a.value=[],c={redo:[],undo:[]},s=null}return{undo:function(){if(0===i.value.length)return;const e=i.value.pop();t.suppressRecording(()=>{t.beginBatch();for(const n of e.undo)t.dispatch(n);t.endBatch("undo")}),a.value.push(e)},redo:function(){if(0===a.value.length)return;const e=a.value.pop();t.suppressRecording(()=>{t.beginBatch();for(const n of e.redo)t.dispatch(n);t.endBatch("redo")}),i.value.push(e)},clear:p,canUndo:e.computed(()=>i.value.length>0),canRedo:e.computed(()=>a.value.length>0),undoStackSize:e.computed(()=>i.value.length),redoStackSize:e.computed(()=>a.value.length),dispose:function(){u(),p()}}}class Tt extends Error{constructor(e="CanvasHandle has been disposed"){super(e),this.name="HandleDisposedError"}}function Lt(e,t,n){let o=null;for(const i of e)for(const e of t){const t=e.pos-i,a=Math.abs(t);a<=n&&(!o||a<Math.abs(o.delta))&&(o={delta:t,candidate:e,targetPos:i})}return o}function Et(e){var t,n,o,i;const a=e.threshold??5,r=function(e){if(0===e.length)return null;let t=1/0,n=-1/0,o=1/0,i=-1/0;for(const a of e)a.x<t&&(t=a.x),a.x+a.w>n&&(n=a.x+a.w),a.y<o&&(o=a.y),a.y+a.h>i&&(i=a.y+a.h);return{left:t,right:n,top:o,bottom:i,centerX:(t+n)/2,centerY:(o+i)/2,width:n-t,height:i-o}}(e.draggedRects);if(!r)return{dx:0,dy:0,lines:[]};const c=function(e,t,n){const o=[];for(const t of e)o.push({pos:t.x,kind:"edge-left",source:t}),o.push({pos:t.x+t.w,kind:"edge-right",source:t}),o.push({pos:t.x+t.w/2,kind:"center-x",source:t});if(o.push({pos:0,kind:"canvas-edge"}),o.push({pos:t.w,kind:"canvas-edge"}),o.push({pos:t.w/2,kind:"canvas-edge"}),n)for(const e of n)o.push({pos:e,kind:"guide"});return o}(e.otherRects,e.canvasSize,null==(t=e.manualGuides)?void 0:t.x),s=function(e,t,n){const o=[];for(const t of e)o.push({pos:t.y,kind:"edge-top",source:t}),o.push({pos:t.y+t.h,kind:"edge-bottom",source:t}),o.push({pos:t.y+t.h/2,kind:"center-y",source:t});if(o.push({pos:0,kind:"canvas-edge"}),o.push({pos:t.h,kind:"canvas-edge"}),o.push({pos:t.h/2,kind:"canvas-edge"}),n)for(const e of n)o.push({pos:e,kind:"guide"});return o}(e.otherRects,e.canvasSize,null==(n=e.manualGuides)?void 0:n.y),d=[r.left,r.right,r.centerX],l=[r.top,r.bottom,r.centerY],u=Lt(d,c,a),p=Lt(l,s,a),f=(null==u?void 0:u.delta)??0,h=(null==p?void 0:p.delta)??0,g=[];if(u){const t=(null==(o=u.candidate.source)?void 0:o.y)??0,n=u.candidate.source?u.candidate.source.y+u.candidate.source.h:e.canvasSize.h,i=Math.min(r.top+h,t),a=Math.max(r.bottom+h,n);g.push({axis:"x",pos:u.candidate.pos,from:i,to:a,kind:u.candidate.kind})}if(p){const t=(null==(i=p.candidate.source)?void 0:i.x)??0,n=p.candidate.source?p.candidate.source.x+p.candidate.source.w:e.canvasSize.w,o=Math.min(r.left+f,t),a=Math.max(r.right+f,n);g.push({axis:"y",pos:p.candidate.pos,from:o,to:a,kind:p.candidate.kind})}return{dx:f,dy:h,lines:g}}function Dt(e,t,n){const o=new Map,i=new Map;for(let e=0;e<t.length;e++)o.has(t[e].instanceId)||o.set(t[e].instanceId,t[e]),i.set(t[e].instanceId,e);const a=new Map;function r(e){const t=a.get(e);if(t)return t;const n=[];let i=e;const r=new Set;for(;i&&!r.has(i);){r.add(i),n.push(i);const e=o.get(i);if(!(null==e?void 0:e.parentId))break;i=e.parentId}const c=n.reverse();return a.set(e,c),c}function c(e,t){const n=r(e),a=r(t);let c=0;for(;c<n.length&&c<a.length&&n[c]===a[c];)c++;if(c===n.length&&c===a.length)return 0;if(c===n.length)return-1;if(c===a.length)return 1;const s=n[c],d=a[c],l=o.get(s),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(s)??-1)-(i.get(d)??-1)}let s=null,d=-1;for(let o=0;o<t.length;o++){const i=t[o];if(i.hidden)continue;const a=(null==n?void 0:n(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===s){s=i.instanceId,d=o;continue}const r=c(i.instanceId,s);let l;l=r>0||!(r<0)&&o>d,l&&(s=i.instanceId,d=o)}return s}function Pt(e,t){return{x:Math.min(e.x,t.x),y:Math.min(e.y,t.y),w:Math.abs(e.x-t.x),h:Math.abs(e.y-t.y)}}function Rt(e,t,n){const o=[];for(const i of t){if(i.hidden)continue;const t=(null==n?void 0:n(i.instanceId))??i.rect;t.x>=e.x&&t.y>=e.y&&t.x+t.w<=e.x+e.w&&t.y+t.h<=e.y+e.h&&o.push(i.instanceId)}return o}function $t(e,t){if(!e||"function"!=typeof e.querySelector)return null;const n=e.querySelector(t);if(n)return n;if(e instanceof Element&&"function"==typeof e.closest){const n=e.closest("[data-hc-canvas-designer]");if(n&&n!==e){const e=n.querySelector(t);if(e)return e}}return null}function At(e,t,n){var o;const i=n??("undefined"!=typeof document&&"function"==typeof document.querySelector?document:null);if(!i)return null;const a=t??"default",r=""===a?"default":a,c="undefined"!=typeof globalThis&&(null==(o=globalThis.CSS)?void 0:o.escape)?globalThis.CSS.escape:e=>e.replace(/["\\]/g,e=>`\\${e}`),s=$t(i,`[data-instance-id="${c(e)}"] [data-hc-slot="${c(r)}"]`);return s&&s instanceof HTMLElement?s.getBoundingClientRect():null}function Ft(e,t,n){var o;const i=t??("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=n?$t(i,a):i.querySelector(a);return r&&r instanceof HTMLElement?r.getBoundingClientRect():null}function Ot(e,t){return X(e.document.document.layout,e.document.document.instances,t)}function Nt(e){return"free"===e||"none"===e||void 0===e}const jt=new Set(["e","w","ne","nw","se","sw"]),Vt=new Set(["n","s","ne","nw","se","sw"]);function qt(e,t,n,o){if(Nt(e))return!0;const i=jt.has(t),a=Vt.has(t);return!(i&&"fill"===n||a&&"fill"===o)}function _t(e,t,n){if(!t)return null;const o=Ft(e,t,!0);if(!o)return null;const i=t.getBoundingClientRect(),a=n.toCanvasPoint({x:o.left-i.left,y:o.top-i.top}),r=n.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 Kt(e,t,n){const o=Math.max(8,t);if(!e)return{mode:"px",value:o};switch(e.mode){case"px":return{...e,mode:"px",value:o};case"percent":{if(!n||n<=0)return{...e,mode:"px",value:o};const t=o/n*100,i=Math.max(0,Math.min(1e3,t));return{...e,mode:"percent",value:i}}case"fill":case"hug":case"auto":return{mode:"px",value:o,min:e.min,max:e.max}}}function Ht(e,t,n){const o=Math.max(8,t);switch(e){case"px":case"fill":case"auto":default:return{mode:"px",value:o};case"percent":{if(!n||n<=0)return{mode:"px",value:o};const e=o/n*100;return{mode:"percent",value:Math.max(0,Math.min(1e3,e))}}}}function Xt(e,t){return e===t||!(!e||!t)&&e.mode===t.mode&&e.value===t.value&&e.min===t.min&&e.max===t.max}function Yt(e){return e.shift||e.ctrl||e.meta}function Ut(e,t,n){const o=t.getBoundingClientRect(),i={x:e.x-o.left,y:e.y-o.top};return n.toCanvasPoint(i)}function Gt(e,t){const n=new Set(t.map(e=>e.instanceId));return e.filter(e=>n.has(e))}function Wt(t,n={}){const o=e.reactive({active:!1,start:null,end:null,additive:!1,priorSelection:[]}),i=e.reactive({status:"idle",startPt:null,startRects:new Map,deferredClickSelect:null}),a=e.reactive({status:"idle",handle:null,startPt:null,startRect:null,instanceId:null,placement:null,parentLayoutMode:void 0,startSize:null,startLayoutBox:null,startOutletCanvasSize:null}),r=e.ref([]),s=e.ref(null);let d=0;const l=e.ref(null);let u=0;const p=e.computed(()=>o.active&&o.start&&o.end?Pt(o.start,o.end):null),f=e.computed(()=>"active"===i.status),h=e.computed(()=>"active"===a.status);function g(){o.active=!1,o.start=null,o.end=null,o.additive=!1,o.priorSelection=[]}function m(){i.status="idle",i.startPt=null,i.startRects=new Map,i.deferredClickSelect=null,r.value=[]}function v(){a.status="idle",a.handle=null,a.startPt=null,a.startRect=null,a.instanceId=null,a.placement=null,a.startSize=null,a.startOutletCanvasSize=null,a.parentLayoutMode=void 0,a.startLayoutBox=null}return{marquee:o,marqueeRect:p,drag:i,isDragging:f,resize:a,isResizing:h,snapLines:r,cannotDragSlotChildEvent:s,cannotDragLayoutManagedChildEvent:l,handlePointerDown(e,a){var r;const c=t.effectiveBehavior.value;if(!c.selectable)return{startTracking:!1};const p=t.toolMode.value;if("hand"===p)return{startTracking:!1};const f=Yt(a),h="marquee"===p?null:Dt(e,t.document.document.instances,n.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&&c.draggable&&"inspect"!==p?i.deferredClickSelect=h:t.dispatch({type:"select",payload:{instanceId:h}});const m="slot"===(null==n?void 0:n.placement)||"container"===(null==n?void 0:n.placement),v=Ot(t,h),y="inspect"===p;if(o||!c.draggable||y||(null==n?void 0:n.hidden))return{startTracking:!1};if(!Nt(v)){if(!f){u++;const e={instanceId:h,parentId:null==n?void 0:n.parentId,parentLayoutMode:v,token:u};l.value=e,null==(r=t.setCannotDragLayoutManagedChildEvent)||r.call(t,e),m&&(d++,s.value={instanceId:h,parentId:null==n?void 0:n.parentId,token:d})}return{startTracking:!1}}return i.status="pending",i.startPt={...e},i.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"}),o.active=!0,o.start={...e},o.end={...e},o.additive=f,o.priorSelection=f?[...t.selection.selectedIds.value]:[],{startTracking:!0}},handlePointerMove(e){var c,s,d,l;if("active"===a.status&&a.startPt&&a.startRect&&a.instanceId){const n=e.x-a.startPt.x,o=e.y-a.startPt.y,i=a.startRect,r=a.handle,c=t.document.getInstance(a.instanceId);if(!c)return;const s=a.parentLayoutMode,u=void 0!==s&&!Nt(s);let p=i.x,f=i.y,h=i.w,g=i.h;const m="w"===r||"nw"===r||"sw"===r,v="e"===r||"ne"===r||"se"===r,y="n"===r||"ne"===r||"nw"===r,I="s"===r||"se"===r||"sw"===r;v?h=i.w+n:m&&(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&&m&&(p=i.x+i.w-8),h=8),g<8&&(!u&&y&&(f=i.y+i.h-8),g=8);const x=a.startLayoutBox,w=a.startOutletCanvasSize,b=v||m,S=I||y,k=!u&&m,B=!u&&y,M=b?Ht(x.widthMode,h,w?w.w:null):null,z=S?Ht(x.heightMode,g,w?w.h:null):null,C="canvas"===a.placement||"absolute"===a.placement,T=!(M&&"px"!==M.mode||z&&"px"!==z.mode||b&&"px"!==x.widthMode||S&&"px"!==x.heightMode);if(C&&T){const e={x:c.rect.x,y:c.rect.y,w:c.rect.w,h:c.rect.h};(k&&e.x!==p||B&&e.y!==f)&&t.dispatch({type:"moveInstance",payload:{instanceId:a.instanceId,x:k?p:e.x,y:B?f:e.y}}),(b&&e.w!==h||S&&e.h!==g)&&t.dispatch({type:"resizeInstance",payload:{instanceId:a.instanceId,w:b?h:e.w,h:S?g:e.h}})}else{const e={};M&&(e.widthMode=M.mode,e.width=M.value),z&&(e.heightMode=z.mode,e.height=z.value),k&&(e.x=p),B&&(e.y=f);const n=c.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:a.instanceId,patch:e}})}if(("container"===a.placement||"slot"===a.placement)&&(null!==a.startSize||T)){const e=a.startSize,n={};b?n.width=Kt(null==e?void 0:e.width,h,w?w.w:null):(null==e?void 0:e.width)&&(n.width={...e.width}),S?n.height=Kt(null==e?void 0:e.height,g,w?w.h:null):(null==e?void 0:e.height)&&(n.height={...e.height}),(d=c.size)===(l=n)||d&&l&&Xt(d.width,l.width)&&Xt(d.height,l.height)||t.dispatch({type:"setInstanceSize",payload:{instanceId:a.instanceId,size:n}})}return}if("pending"===i.status&&i.startPt){const n=e.x-i.startPt.x,o=e.y-i.startPt.y;n*n+o*o>=9&&(i.status="active",t.beginBatch())}if("active"===i.status&&i.startPt){const o=e.x-i.startPt.x,a=e.y-i.startPt.y,d=(null==(c=n.getRoot)?void 0:c.call(n))??null,l=d instanceof HTMLElement?d:null,u=t.document.document.instances,p=null!==l&&u.length<=50,f=(e,n)=>p?_t(e,l,t.viewport)??n:n,h=[];for(const[e,n]of i.startRects){const i=t.document.getInstance(e);if(!i)continue;const r=f(e,i.rect);h.push({x:n.x+o,y:n.y+a,w:r.w,h:r.h})}const g=[],m=new Set(i.startRects.keys());for(const e of u)m.has(e.instanceId)||g.push(f(e.instanceId,e.rect));const v=t.document.document.layout,y=!1!==t.effectiveBehavior.value.snap,I=(null==(s=v.guides)?void 0:s.items)??[],x=[],w=[];for(const e of I)"x"===e.axis?x.push(e.position):w.push(e.position);const b=y?Et({draggedRects:h,otherRects:g,canvasSize:{w:t.measuredCanvasSize.value.w,h:t.measuredCanvasSize.value.h},manualGuides:x.length||w.length?{x:x,y:w}:void 0}):{dx:0,dy:0,lines:[]};r.value=b.lines;const S=o+b.dx,k=a+b.dy;for(const[e,n]of i.startRects)t.document.getInstance(e)&&t.dispatch({type:"moveInstance",payload:{instanceId:e,x:n.x+S,y:n.y+k}});return}o.active&&(o.end={...e})},handlePointerUp(){if("active"===a.status){const e="slot"===a.placement||"container"===a.placement?"resize-slot-child":"resize";return t.endBatch(e),void v()}if("active"===i.status)return t.endBatch("drag"),void m();if("pending"===i.status)return i.deferredClickSelect&&t.dispatch({type:"select",payload:{instanceId:i.deferredClickSelect}}),void m();if(!o.active)return;const e=p.value,r=t.document.document.instances;if(e&&(e.w>0||e.h>0)){const i=Gt(Rt(e,r,n.getDomBox),r);if(o.additive){const e=Gt(o.priorSelection,r),n=Array.from(new Set([...e,...i]));t.dispatch({type:"selectAll",payload:{instanceIds:n}})}else i.length>0&&t.dispatch({type:"selectAll",payload:{instanceIds:i}})}g()},cancelMarquee(){g()},cancelDrag(){"active"===i.status&&t.endBatch("drag-cancel"),m()},handleResizeStart(e,o,i){var r,s,d,l,u,p;const f=t.document.getInstance(e);if(!f)return{startTracking:!1};if(!0===(f.lockSize??f.locked))return{startTracking:!1};if(f.hidden)return{startTracking:!1};if(!t.effectiveBehavior.value.resizable)return{startTracking:!1};const h="slot"===f.placement||"container"===f.placement,g=Ot(t,e);if(!qt(g,o,null==(r=f.layoutBox)?void 0:r.widthMode,null==(s=f.layoutBox)?void 0:s.heightMode))return{startTracking:!1};a.status="active",a.handle=o,a.startPt={...i};const m=_t(e,(null==(d=n.getRoot)?void 0:d.call(n))??null,t.viewport);a.startRect=m??{...f.rect},a.instanceId=e,a.placement=h?"container":"canvas",a.parentLayoutMode=g,a.startLayoutBox=f.layoutBox?c(f.layoutBox):{x:f.rect.x,y:f.rect.y,width:f.rect.w,height:f.rect.h,widthMode:"px",heightMode:"px",overflow:"hidden"},a.startSize=h&&f.size?c(f.size):null;const v=f.parentId,y=f.slot,I=(null==(l=n.getRoot)?void 0:l.call(n))??null;let x=v?At(v,y,I):null;if(v&&(!x||0===x.width&&0===x.height)){const t=$t(I,`[data-instance-id="${e.replace(/["\\]/g,e=>`\\${e}`)}"]`),n=t instanceof HTMLElement?t.parentElement:null;if(n){const e=n.getBoundingClientRect();(e.width>0||e.height>0)&&(x=e)}}if(x){const e=t.viewport.scale.value||1;a.startOutletCanvasSize={w:x.width/e,h:x.height/e}}else if(void 0===v)a.startOutletCanvasSize={w:t.measuredCanvasSize.value.w,h:t.measuredCanvasSize.value.h};else{const t=a.startLayoutBox.widthMode,n=a.startLayoutBox.heightMode,o="percent"===t||"percent"===n;o&&console.debug("[hc-canvas/interaction] resize: 父 outlet 找不到,percent 模式将退化到 px。",{instanceId:e,parentId:v,slot:y});const i=a.startSize,r="percent"===(null==(u=null==i?void 0:i.width)?void 0:u.mode)||"percent"===(null==(p=null==i?void 0:i.height)?void 0:p.mode);!o&&r&&console.debug("[hc-canvas/interaction] slot child resize: 父 outlet 找不到,percent 模式将退化到 px。",{instanceId:e,parentId:v,slot:y}),a.startOutletCanvasSize=null}return t.beginBatch(),{startTracking:!0}},cancelResize(){if("active"===a.status){const e="slot"===a.placement||"container"===a.placement?"resize-slot-child-cancel":"resize-cancel";t.endBatch(e)}v()}}}function Jt(e){var t;return"undefined"!=typeof globalThis&&(null==(t=globalThis.CSS)?void 0:t.escape)?globalThis.CSS.escape(e):e.replace(/["\\]/g,e=>`\\${e}`)}function Qt(e,t,n){const o=null==n?void 0:n.skip;let i=null;for(const n of e){if(!(n instanceof HTMLElement))continue;if(o&&o(n))continue;const e=n.getBoundingClientRect();if(0===e.width&&0===e.height)continue;if(t.x<e.left||t.x>e.right)continue;if(t.y<e.top||t.y>e.bottom)continue;let a=0,r=n;for(;r;)a++,r=r.parentElement;(!i||a>i.depth)&&(i={el:n,depth:a})}return i?i.el:null}function Zt(e,t){return{ok:!1,reason:e,message:t}}function en(e,t,n,o={}){const i=new Map;for(const t of e)i.set(t.instanceId,t);const a=i.get(t);if(!a)return Zt("instance-not-exists",`实例 "${t}" 不存在,无法 reparent`);const r=null===n.parentId||void 0===n.parentId?void 0:n.parentId;if(r===t)return Zt("self-parent",`parentId 不能等于自身 "${t}"`);if(void 0!==r){const e=i.get(r);if(!e)return Zt("parent-not-exists",`目标 parentId "${r}" 不存在`);const n=new Set;let o=e.parentId;for(;void 0!==o&&!n.has(o);){if(n.add(o),o===t)return Zt("cycle",`目标 parent "${r}" 是 "${t}" 的后代,会循环`);const e=i.get(o);o=null==e?void 0:e.parentId}}if(void 0===r)return{ok:!0};const c=o.resolveContract;if(!c)return{ok:!0};const s=i.get(r),d=c(s.componentVersionKey);if(!d)return{ok:!0};const l=d.slotsDecl??[];if(0===l.length)return Zt("parent-not-layout",`父组件 "${s.componentId}" 不是布局组件(slotsDecl 空)`);const u=void 0===n.slot||""===n.slot||"default"===n.slot?Te:n.slot,p=(f=u,l.find(e=>e.name===f));var f;if(!p)return Zt("slot-not-exists",`slot "${u}" 不在父 "${s.componentId}" 的 slotsDecl`);if(p.accepts&&p.accepts.length>0&&!p.accepts.includes(a.componentId))return Zt("accepts-violation",`slot "${u}" 不允许 componentId "${a.componentId}"(accepts: ${p.accepts.join(", ")})`);if(!0!==p.multiple){const n=e.filter(e=>e.instanceId!==t&&e.parentId===r&&Le(e)===u);if(n.length>0)return Zt("slot-multiple-violated",`slot "${u}" 不允许多个子实例(已有 "${n[0].instanceId}")`)}if("number"==typeof p.maxChildren&&Number.isFinite(p.maxChildren)&&p.maxChildren>=1){const n=e.filter(e=>e.instanceId!==t&&e.parentId===r&&Le(e)===u);if(n.length+1>p.maxChildren)return Zt("max-children-exceeded",`slot "${u}" 最多接受 ${p.maxChildren} 个子(已有 ${n.length} 个)`)}return{ok:!0}}function tn(e){const t=new Set(e.map(e=>e.instanceId)),n=new Map;for(const t of e)n.set(t.instanceId,on(t));const o=[],i=new Map;e.forEach((e,a)=>{const r={inst:e,node:n.get(e.instanceId),originalIndex:a},c=e.parentId;if(c){if(!t.has(c))return console.warn(`[hc-canvas/instance-tree] instance "${e.instanceId}" parentId="${c}" 不存在,降级当顶层`),void o.push(r);i.has(c)||i.set(c,[]),i.get(c).push(r)}else o.push(r)});for(const[e,t]of i){const o=n.get(e);o&&(o.children=nn(t).map(e=>e.node))}return o.slice().sort((e,t)=>{const n=(t.inst.zIndex??0)-(e.inst.zIndex??0);return 0!==n?n:e.originalIndex-t.originalIndex}).map(e=>e.node)}function nn(e){const t=new Map;for(const n of e){const e=n.inst.slot??"default";let o=t.get(e);o||(o={firstIndex:n.originalIndex,entries:[]},t.set(e,o)),o.entries.push(n)}return Array.from(t.values()).sort((e,t)=>e.firstIndex-t.firstIndex).flatMap(e=>e.entries.slice().sort((e,t)=>e.originalIndex-t.originalIndex))}function on(e){const t={instanceId:e.instanceId,componentId:e.componentId,componentVersionKey:e.componentVersionKey,kind:"visual",label:e.alias??e.instanceId};return void 0!==e.locked&&(t.locked=e.locked),void 0!==e.lockPosition&&(t.lockPosition=e.lockPosition),void 0!==e.lockSize&&(t.lockSize=e.lockSize),void 0!==e.hidden&&(t.hidden=e.hidden),t}function an(e,t){for(const n of e){if(n.instanceId===t)return[n];if(n.children&&n.children.length>0){const e=an(n.children,t);if(e.length>0)return[n,...e]}}return[]}function rn(e,t){const n=new Map;for(const t of e)n.set(t.instanceId,t);const o=n.get(t);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 "${t}" exceeds depth ${r},疑似环,截断`);break}const e=n.get(a.parentId);if(!e)break;i.unshift(e),a=e}return i}function cn(e,t,n){const o=t||void 0;return e.filter(e=>(e.parentId||void 0)===o&&e.slot===n).map((e,t)=>({inst:e,originalIndex:t})).sort((e,t)=>{const n=(t.inst.zIndex??0)-(e.inst.zIndex??0);return 0!==n?n:e.originalIndex-t.originalIndex}).map(e=>e.inst)}function sn(e){if(0===e.length)return null;let t=1/0,n=1/0,o=-1/0,i=-1/0;for(const a of e)a.x<t&&(t=a.x),a.y<n&&(n=a.y),a.x+a.w>o&&(o=a.x+a.w),a.y+a.h>i&&(i=a.y+a.h);return{x:t,y:n,w:o-t,h:i-n}}function dn(e){return sn(e.map(e=>e.rect))}function ln(e,t){if(0===t.length)return null;const n=new Set(t),o=[];for(const t of e)n.has(t.instanceId)&&o.push(t.rect);return sn(o)}function un(e,t,n){const o=(null==n?void 0:n.padding)??40,i=Math.max(1,t.w-2*o),a=Math.max(1,t.h-2*o),r=Math.max(1,e.w),c=Math.max(1,e.h);let s=Math.min(i/r,a/c);void 0!==(null==n?void 0:n.maxScale)&&(s=Math.min(s,n.maxScale)),void 0!==(null==n?void 0:n.minScale)&&(s=Math.max(s,n.minScale));const d=e.x+e.w/2,l=e.y+e.h/2;return{scale:s,panX:t.w/2-d*s,panY:t.h/2-l*s}}function pn(e,t){const n=e.scale||1;return{x:-e.panX/n+0,y:-e.panY/n+0,w:t.w/n,h:t.h/n}}function fn(e){const t=[];(e.metaKey||e.ctrlKey)&&t.push("mod"),e.shiftKey&&t.push("shift"),e.altKey&&t.push("alt");let n=e.key;return n="Meta"===n||"Control"===n?"mod":" "===n||"Space"===e.code?"space":(n.length,n.toLowerCase()),t[t.length-1]===n||t.push(n),t.join("+")}function hn(e){if(!(e&&e instanceof HTMLElement))return!1;const t=e.tagName;return"INPUT"===t||"TEXTAREA"===t||"SELECT"===t||!!e.isContentEditable}function gn(e,t){const n=fn(t);for(const t of e.keys)if(mn(t)===n)return!0;return!1}function mn(e){return e.split("+").map(e=>e.trim().toLowerCase()).join("+")}function vn(e){const{ctx:t}=e;function n(e){return f(`${e}_`)}return{fill(e,n,o){t.dispatch({type:"freeSplitFill",payload:{containerId:e,leafId:n,instance:o}})},clear(e,n){t.dispatch({type:"freeSplitClear",payload:{containerId:e,leafId:n}})},swap(e,n,o){t.dispatch({type:"freeSplitSwap",payload:{containerId:e,leafIdA:n,leafIdB:o}})},resize(e,n,o){t.dispatch({type:"freeSplitResize",payload:{containerId:e,nodeId:n,sizes:o}})},split(e,o,i,a){const r=n("lf"),c=n("nd");return t.dispatch({type:"freeSplitSplit",payload:{containerId:e,leafId:o,edge:i,newLeafShare:a,newLeafId:r,newNodeId:c}}),{leafId:r,nodeId:c}},merge(e,n){t.dispatch({type:"freeSplitMerge",payload:{containerId:e,leafId:n}})}}}function yn(n,o){const i=Ct(n,o.recorder),a=function(e){const{ctx:t,options:n}=e;function o(e){const o=n.getStageEl();if(!o)return console.warn("[hc-canvas/handle] clientToCanvasPoint called before stage mounted; falling back to viewport.toCanvasPoint(raw clientPt). 结果可能偏移。"),t.viewport.toCanvasPoint(e);const i=o.getBoundingClientRect();return t.viewport.toCanvasPoint({x:e.x-i.left,y:e.y-i.top})}return{clientToCanvasPoint:o,getInstanceAtClientPoint:function(e){const i=n.getStageEl();if(!i)return null;const a=Dt(o(e),t.document.document.instances,e=>_t(e,i,t.viewport));return a?t.document.getInstance(a)??null:null},getDropTarget:function(e,o,i){var a;const r=o??(null==(a=n.getStageEl)?void 0:a.call(n))??("undefined"!=typeof document&&"function"==typeof document.querySelectorAll?document:null);if(!r)return null;const c=void 0!==(null==i?void 0:i.excludeInstanceId),s=c?`[data-instance-id="${Jt(i.excludeInstanceId)}"]`:null;let d=s?r.querySelector(s):null;if(!d&&c&&r instanceof Element){const e=r.closest("[data-hc-canvas-designer]");e&&e!==r&&(d=e.querySelector(s))}let l=r.querySelectorAll("[data-hc-slot]");if(0===l.length&&c&&r instanceof Element){const e=r.closest("[data-hc-canvas-designer]");e&&e!==r&&(l=e.querySelectorAll("[data-hc-slot]"))}const u=Qt(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&&t.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=n.getStageEl)?void 0:i.call(n))??("undefined"!=typeof document&&"function"==typeof document.querySelectorAll?document:null);if(!a)return null;const r=Qt(a.querySelectorAll("[data-hc-leaf]"),e);if(!r)return null;const c=r.getAttribute("data-hc-leaf"),s=r.getAttribute("data-hc-leaf-container");if(!c||!s)return null;const d=t.document.getInstance(s),l=null==d?void 0:d.containerLayout;return l&&"free-split"===l.mode&&ie(l.root,c)?{containerId:s,leafId:c,leafEl:r}:null}}}({ctx:n,options:o}),r=function(t){const{ctx:n,options:o}=t;function i(e,t){const i=n.document.getInstance(e);if(!i)return console.warn(`[hc-canvas/handle] ${t}: instance "${e}" 不存在`),!1;const a=o.getStageEl();if(!a)return console.warn(`[hc-canvas/handle] ${t}: stage 未挂载,跳过滚动(${e})`),!1;const r=_t(e,a,n.viewport),c=r&&(r.w>0||r.h>0)?r:{x:i.rect.x,y:i.rect.y,w:i.rect.w,h:i.rect.h},s=a.getBoundingClientRect(),d=n.viewport.scale.value,l=s.width/2-(c.x+c.w/2)*d,u=s.height/2-(c.y+c.h/2)*d;return n.viewport.setPan(l,u),!0}const a=e.ref(null);let r=0;return{getInstanceTree:function(){return tn(n.document.document.instances)},getInstanceList:function(){return n.document.document.instances.map(e=>c(e))},getInstanceById:function(e){const t=n.document.getInstance(e);return t?c(t):null},getSelectedPath:function(){const e=n.selection.primaryId.value;if(!e)return[];const t=n.document.document.instances,o=tn(t),i=rn(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 c=[];for(const t of i){const n=a.get(t.instanceId);if(!n)return an(o,e);c.push(n)}return c},getBreadcrumb:function(e){return rn(n.document.document.instances,e).map(e=>c(e))},focusInstance:function(e){n.document.getInstance(e)?(n.dispatch({type:"select",payload:{instanceId:e}}),i(e,"focusInstance")):console.warn(`[hc-canvas/handle] focusInstance: instance "${e}" 不存在`)},scrollToInstance:function(e){i(e,"scrollToInstance")},canReparent:function(e,t){return en(n.document.document.instances,e,t,{resolveContract:o.resolveContract})},moveInstanceInTree:function(e,t){var i,c,s;const d=en(n.document.document.instances,e,t,{resolveContract:o.resolveContract});if(!d.ok)return console.warn(`[hc-canvas/handle] moveInstanceInTree 守门拒绝(${d.reason}): ${d.message}`),void function(e,t,n,o){r++,a.value={instanceId:e,target:{...t},reason:n,message:o,token:r}}(e,t,d.reason,d.message??`reparent rejected: ${d.reason}`);const l=n.document.getInstance(e),u=null===t.parentId?void 0:t.parentId,p=(l.parentId||void 0)!==(u||void 0),f=l.slot!==t.slot,h={};if(p&&(h.parentId=u),f&&(h.slot=t.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==(s=null==(c=n.document.getInstance(u))?void 0:c.containerLayout)?void 0:s.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,t="fill"===l.layoutBox.heightMode?"px":l.layoutBox.heightMode;e===l.layoutBox.widthMode&&t===l.layoutBox.heightMode||(h.layoutBox={...l.layoutBox,widthMode:e,heightMode:t})}}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!==t.index){const o=cn(n.document.document.instances,u,t.slot).filter(t=>t.instanceId!==e),i=Math.max(0,Math.min(t.index,o.length));o.splice(i,0,l),o.forEach((e,t)=>{const n=o.length-1-t;(e.zIndex??0)!==n&&g.push({id:e.instanceId,zIndex:n})})}if(0===Object.keys(h).length&&0===g.length)return;const m=!n.isBatching.value;m&&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{m&&n.endBatch("moveInstanceInTree")}},cannotReparentEvent:e.readonly(a)}}({ctx:n,options:o}),s=function(e){const{ctx:t,options:n}=e;function o(){const e=n.getStageEl();if(!e)return null;const t=e.getBoundingClientRect();return{w:t.width,h:t.height}}function i(){return{scale:t.viewport.scale.value,panX:t.viewport.panX.value,panY:t.viewport.panY.value}}function a(){return dn(t.document.document.instances)}function r(){return ln(t.document.document.instances,t.selection.selectedIds.value)}function c(e,n){const a=o();if(!a)return void t.viewport.setScale(e);const r=i();let c;if(null==n?void 0:n.center)c=n.center;else{const e=pn(r,a);c={x:e.x+e.w/2,y:e.y+e.h/2}}const s=c.x*r.scale+r.panX,d=c.y*r.scale+r.panY,l=s-c.x*e,u=d-c.y*e;t.viewport.setScale(e),t.viewport.setPan(l,u)}function s(e,n){const i=o();if(!i)return void console.warn("[hc-canvas/handle] scrollToRect: stage 未挂载,跳过");const a=un(e,i,n);t.viewport.setScale(a.scale),t.viewport.setPan(a.panX,a.panY)}return{getViewportState:i,getVisibleBounds:function(){const e=o();return e?pn(i(),e):{x:0,y:0,w:0,h:0}},getCanvasBounds:function(){const e=t.measuredCanvasSize.value;return{x:0,y:0,w:e.w,h:e.h}},getContentBounds:a,getSelectionBounds:r,getInstanceBounds:function(e){const n=t.document.getInstance(e);return n?{...n.rect}:null},panBy:function(e,n){t.viewport.setPan(t.viewport.panX.value+e,t.viewport.panY.value+n)},panTo:function(e,n){t.viewport.setPan(e,n)},zoomTo:c,zoomBy:function(e,n){c(t.viewport.scale.value+e,n)},zoomToPoint:function(e,o){const a=n.getStageEl();if(!a)return void console.warn("[hc-canvas/handle] zoomToPoint: stage 未挂载,跳过");const r=a.getBoundingClientRect(),c=o.x-r.left,s=o.y-r.top,d=i(),l=c-(c-d.panX)/d.scale*e,u=s-(s-d.panY)/d.scale*e;t.viewport.setScale(e),t.viewport.setPan(l,u)},resetViewport:function(){t.viewport.resetView()},scrollToRect:s,fitToContent:function(e){const t=a();t&&s(t,e)},fitToSelection:function(e){const t=r();t&&s(t,e)}}}({ctx:n,options:o}),d=function(e){const{ctx:t}=e;return{getInstanceSize:function(e){const n=t.document.getInstance(e);if(n&&void 0!==n.size)return c(n.size)},updateInstanceSize:function(e,n){t.dispatch({type:"setInstanceSize",payload:{instanceId:e,size:n}})},getContainerLayout:function(e){const n=t.document.getInstance(e);return n&&void 0!==n.containerLayout?c(n.containerLayout):null},updateContainerLayout:function(e,n){t.dispatch({type:"setContainerLayout",payload:{instanceId:e,containerLayout:n}})},getLayoutBox:function(e){const n=t.document.getInstance(e);if(n&&void 0!==n.layoutBox)return c(n.layoutBox)},updateLayoutBox:function(e,n){t.dispatch({type:"updateLayoutBox",payload:{instanceId:e,patch:n}})},getLayoutItem:function(e){const n=t.document.getInstance(e);if(n&&void 0!==n.layoutItem)return c(n.layoutItem)},updateLayoutItem:function(e,n){t.dispatch({type:"updateLayoutItem",payload:{instanceId:e,patch:n}})},getRotation:function(e){const n=t.document.getInstance(e);if(!n)return 0;const o=n.rotation;return"number"==typeof o&&Number.isFinite(o)?o:0},updateRotation:function(e,n){t.dispatch({type:"updateRotation",payload:{instanceId:e,value:n}})},getInstanceOutletRect:function(e,t){if("undefined"==typeof document||"function"!=typeof document.querySelector)return null;const n=t??"default",o=""===n?"default":n,i=`[data-instance-id="${Jt(e)}"]`,a=`[data-hc-slot="${Jt(o)}"]`,r=document.querySelector(`${i} ${a}`);return r&&r instanceof HTMLElement?r.getBoundingClientRect():null}}}({ctx:n}),l=function(e){const{ctx:t}=e;function n(){return JSON.parse(JSON.stringify(t.document.document.layout))}return{getLayoutConfig:n,updateCanvasSize:function(e){const o={...n().canvas,...e};t.dispatch({type:"updateLayout",payload:{patch:{canvas:o}}})},updateCanvasBackground:function(e){if(null===e)return void t.dispatch({type:"updateLayout",payload:{patch:{background:void 0}}});const o={...n().background??{},...e};t.dispatch({type:"updateLayout",payload:{patch:{background:o}}})},updateBehavior:function(e){const o={...n().behavior??{},...e};t.dispatch({type:"updateLayout",payload:{patch:{behavior:o}}})},setRootLayout:function(e){let n;if(null===e)n=null;else if("string"==typeof e)switch(e){case"free":n={mode:"free"};break;case"none":n={mode:"none"};break;case"split":n={mode:"split",direction:"horizontal",ratios:[.5,.5]};break;case"grid":n={mode:"grid",columns:[{mode:"fr",value:1},{mode:"fr",value:1}],rows:[{mode:"fr",value:1},{mode:"fr",value:1}]};break;case"flex":n={mode:"flex",direction:"row"};break;default:return void console.warn(`[hc-canvas/handle] setRootLayout: 未知 mode "${e}",忽略`)}else n=e;t.dispatch({type:"setRootLayout",payload:{rootLayout:n}})},setInteractionOptions:function(e){t.setInteractionOptions(e)},getEffectiveBehavior:function(){return{...t.effectiveBehavior.value}},resolveAsset:function(e){return t.resolveAsset(e)}}}({ctx:n}),u=function(e){const{ctx:t}=e;function n(){return t.document.document.layout.guides??{}}function o(e){t.dispatch({type:"updateLayout",payload:{patch:{guides:e}}})}return{setRulerVisible:function(e){const t=n();o({...t,ruler:{...t.ruler??{},visible:e}})},setGridVisible:function(e){const t=n();o({...t,grid:{...t.grid??{},visible:e}})},updateRulerConfig:function(e){const t=n();o({...t,ruler:{...t.ruler??{},...e}})},updateGridConfig:function(e){const t=n();o({...t,grid:{...t.grid??{},...e}})},addGuide:function(e){const t=n(),i=t.items??[],a=e.id??f("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({...t,items:[...i,r]}),a},removeGuide:function(e){const t=n(),i=t.items??[];i.some(t=>t.id===e)&&o({...t,items:i.filter(t=>t.id!==e)})},updateGuide:function(e,t){const i=n(),a=i.items??[],r=a.findIndex(t=>t.id===e);if(r<0)return void console.warn(`[hc-canvas/handle] updateGuide: id "${e}" 不存在,忽略`);const{id:c,...s}=t,d={...a[r],...s},l=[...a];l[r]=d,o({...i,items:l})},getGuides:function(){return(n().items??[]).map(e=>({...e}))},clearGuides:function(){const e=n();e.items&&0!==e.items.length&&o({...e,items:[]})},getMouseCanvasPoint:function(){const e=t.mouseCanvasPoint.value;return e?{x:e.x,y:e.y}:null}}}({ctx:n}),p=function(e){const{ctx:t,recorder:n,viewportApi:o,guides:i}=e;function a(e,n){const o=t.document.getInstance(e);if(!o)return null;const i=(null==n?void 0:n.newInstanceId)??f(`${o.componentId}_`);return t.dispatch({type:"duplicateInstance",payload:{instanceId:e,newInstanceId:i,...void 0!==(null==n?void 0:n.offset)?{offset:n.offset}:{}}}),t.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 c(){const e=t.selection.selectedIds.value;if(0===e.length)return!1;for(const n of e){const e=t.document.getInstance(n);if(e&&!0!==(e.lockPosition??e.locked))return!0}return!1}function s(e,n,o){const i=o?10:1,a=t.selection.selectedIds.value;if(0===a.length)return;const r=!t.isBatching.value;r&&t.beginBatch();try{for(const o of a){const a=t.document.getInstance(o);if(!a||!0===(a.lockPosition??a.locked))continue;const r=Ot(t,o);Nt(r)?t.dispatch({type:"moveInstance",payload:{instanceId:o,x:a.rect.x+e*i,y:a.rect.y+n*i}}):"undefined"!=typeof console&&"function"==typeof console.debug&&console.debug("[hc-canvas/handle] executeNudge: 拒绝 layout-managed 子 nudge",{instanceId:o,parentLayoutMode:r})}}finally{r&&t.endBatch(o?"arrow-move-large":"arrow-move")}}function d(e){const n=[...t.selection.selectedIds.value];if(0===n.length)return;const o=!t.isBatching.value;o&&t.beginBatch();try{for(const o of n)t.dispatch({type:"setInstanceLocked",payload:{instanceId:o,locked:e}})}finally{o&&t.endBatch(e?"lock-selection":"unlock-selection")}}function l(e){const n=t.selection.selectedIds.value;if(0===n.length)return;const o=t.document.document.instances;if(0===o.length)return;const i=o.map((e,t)=>({inst:e,origIdx:t})).sort((e,t)=>{const n=e.inst.zIndex??0,o=t.inst.zIndex??0;return n!==o?n-o:e.origIdx-t.origIdx}).map(e=>e.inst),a=new Set(n),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 c=r.map(e=>i[e]),s=i.filter(e=>!a.has(e.instanceId));let d;if("toFront"===e)d=[...s,...c];else if("toBack"===e)d=[...c,...s];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 t=i[e],n=s.indexOf(t);d=[...s.slice(0,n+1),...c,...s.slice(n+1)]}else{let e=r[0]-1;for(;e>=0&&a.has(i[e].instanceId);)e--;if(e<0)return;const t=i[e],n=s.indexOf(t);d=[...s.slice(0,n),...c,...s.slice(n)]}const l=[];for(let e=0;e<d.length;e++){const t=d[e];(t.zIndex??0)!==e&&l.push({id:t.instanceId,zIndex:e})}if(0===l.length)return;const u=!t.isBatching.value;u&&t.beginBatch();try{for(const e of l)t.dispatch({type:"updateInstance",payload:{instanceId:e.id,patch:{zIndex:e.zIndex}}})}finally{u&&t.endBatch(`z-order-${e}`)}}const u={undo:{execute:()=>n.undo(),canExecute:()=>n.canUndo.value},redo:{execute:()=>n.redo(),canExecute:()=>n.canRedo.value},deleteSelection:{execute:function(){const e=[...t.selection.selectedIds.value];if(0===e.length)return;const n=!t.isBatching.value;n&&t.beginBatch();try{for(const n of e)t.dispatch({type:"removeInstance",payload:{instanceId:n}})}finally{n&&t.endBatch("delete-selection")}},canExecute:()=>t.selection.selectedIds.value.length>0},duplicateSelection:{execute:function(){const e=[...t.selection.selectedIds.value];if(0===e.length)return;const n=[],o=!t.isBatching.value;o&&t.beginBatch();try{for(const t of e){const e=a(t);e&&n.push(e)}n.length>0&&t.dispatch({type:"selectAll",payload:{instanceIds:n}})}finally{o&&t.endBatch("duplicate-selection")}},canExecute:()=>t.selection.selectedIds.value.length>0},clearSelection:{execute:()=>t.dispatch({type:"clearSelection"}),canExecute:()=>t.selection.selectedIds.value.length>0},cancelInteraction:{execute:()=>t.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 t=e??{dx:0,dy:0};s(t.dx,t.dy,!1)},canExecute:c},nudgeSelectionLarge:{execute:e=>{const t=e??{dx:0,dy:0};s(t.dx,t.dy,!0)},canExecute:c},lockSelection:{execute:()=>d(!0),canExecute:()=>t.selection.selectedIds.value.length>0},unlockSelection:{execute:()=>d(!1),canExecute:()=>t.selection.selectedIds.value.length>0},bringForward:{execute:()=>l("forward"),canExecute:()=>t.selection.selectedIds.value.length>0},sendBackward:{execute:()=>l("backward"),canExecute:()=>t.selection.selectedIds.value.length>0},bringToFront:{execute:()=>l("toFront"),canExecute:()=>t.selection.selectedIds.value.length>0},sendToBack:{execute:()=>l("toBack"),canExecute:()=>t.selection.selectedIds.value.length>0},toggleGrid:{execute:function(){var e;const n=null==(e=t.document.document.layout.guides)?void 0:e.grid;i.setGridVisible(!(null==n?void 0:n.visible))},canExecute:()=>!0},toggleRuler:{execute:function(){var e;const n=null==(e=t.document.document.layout.guides)?void 0:e.ruler;i.setRulerVisible(!(null==n?void 0:n.visible))},canExecute:()=>!0}};function p(e,n){const o=null===n?null:JSON.parse(JSON.stringify(n));t.dispatch({type:"setComponentOverride",payload:{instanceId:e,override:o}})}function h(e,n){const o=e??"notEditingText";return"always"===o||("notEditingText"===o?!hn(n.target):"design"===o?!hn(n.target)&&!1!==t.effectiveBehavior.value.draggable:"hasSelection"===o&&!hn(n.target)&&t.selection.selectedIds.value.length>0)}return{duplicateInstance:a,getToolMode:function(){return t.toolMode.value},setToolMode:function(e){t.setToolMode(e)},setTemporaryToolMode:function(e){t.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 t of r){if(!gn(t,e))continue;if(!h(t.when,e))continue;const n=u[t.command];return!!n&&!!n.canExecute()&&(n.execute(t.payload),!1!==t.preventDefault&&e.preventDefault(),!0)}return!1},executeCommand:function(e,t){const n=u[e];n?n.canExecute()&&n.execute(t):console.warn(`[hc-canvas/handle] executeCommand: 未知命令 "${e}"`)},canExecuteCommand:function(e){const t=u[e];return!!t&&t.canExecute()},getStaleComponentOverrides:function(){const e=t.document.document.componentOverrides??{},n=[];for(const o of t.document.document.instances){const t=e[o.instanceId];t&&t.baseVersionKey!==o.componentVersionKey&&n.push({instanceId:o.instanceId,baseVersionKey:t.baseVersionKey,currentVersionKey:o.componentVersionKey})}return n},setComponentOverride:p,discardComponentOverride:function(e){p(e,null)},getLayoutIssues:function(){return t.layoutIssues.value}}}({ctx:n,recorder:i,viewportApi:s,guides:u}),h=function(e){const{ctx:t,options:n}=e;function o(e){var o,i,a,r,c,s,d,l,u;const p=e.parentId||void 0;if(void 0===p)return e;const f=(null==(i=null==(o=t.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,m=void 0!==h,v=null==(a=n.resolveContract)?void 0:a.call(n,e.componentVersionKey),y=null==(c=null==(r=null==v?void 0:v.layoutDecl)?void 0:r.sizing)?void 0:c.defaultChildSize,I=e.rect??{w:240,h:60},x=h??{x:0,y:0,width:I.w,height:I.h,widthMode:"px",heightMode:"px"},w=e=>{if(void 0!==e)return"hug"===e?"auto":e},b=g?x.widthMode:w(null==(s=null==y?void 0:y.width)?void 0:s.mode)??"fill",S=m?x.heightMode:w(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)?x.width:y.width.value,B=m||void 0===(null==(u=null==y?void 0:y.height)?void 0:u.value)?x.height:y.height.value;return{...e,layoutBox:{...x,x:0,y:0,width:k,height:B,widthMode:b,heightMode:S}}}return{dispatchWithDefaults:function(e){if("addInstance"===e.type){const i=function(e){var t,o,i,a;if(void 0!==e.containerLayout)return e;const r=null==(t=n.resolveContract)?void 0:t.call(n,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 c=null==(a=r.layoutDecl)?void 0:a.defaultLayout;return void 0===c?e:{...e,containerLayout:JSON.parse(JSON.stringify(c))}}(e.payload.instance);return void t.dispatch({type:"addInstance",payload:{instance:o(i)}})}t.dispatch(e)}}}({ctx:n,options:o}),g=vn({ctx:n}),m=e.computed(()=>{const e=n.selection.selectedIds.value;if(0===e.length)return[];const t=new Set(e);return n.document.document.instances.filter(e=>t.has(e.instanceId))}),v=n.selection.selectedIds,y=e.readonly(v),I=e.readonly(n.isBatching),x=function(){let e=!1;const t=new Set,n=new Set,o=[];return{isDisposed:()=>e,addPendingReady(e){t.add(e)},removePendingReady(e){t.delete(e)},registerListenerOff(e){let t=!1;const o=()=>{t||(t=!0,n.delete(o),e())};return n.add(o),o},addDisposeCleanup(e){o.push(e)},markDisposed(){if(e)return;e=!0;const i=[...t];t.clear();for(const e of i)try{e.reject(new Tt)}catch(e){console.error("[hc-canvas/handle] pending ready rejection threw on dispose",e)}const a=[...n];n.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:b,getBindingMode:S,testBinding:k,invalidateDataSource:B,getDataSourceSnapshot:M,on:z,getInstanceReady:C,getInstanceRuntime:T,getCachedBySourceId:L,startTracing:E,stopTracing:D,getTraceBuffer:P}=function(e){const{lifecycle:n,currentCanvasId:o}=e;let i=null,a=null;return n.addDisposeCleanup(()=>{i=null,a=null}),{attachBindingDelegate:function(e,t){n.isDisposed()||(i=e,null===e?a=null:arguments.length>=2&&(a=t??null))},setBindingMode:function(e){null==i||i.setMode(e)},getBindingMode:function(){return(null==i?void 0:i.getMode())??"off"},testBinding:function(e,t){return(null==i?void 0:i.testBinding(e,t))??[]},invalidateDataSource:function(e){null==a||a.invalidate(e)},getDataSourceSnapshot:function(){return(null==a?void 0:a.getSnapshot())??{entries:[]}},on:function(e,a){if(n.isDisposed())return()=>{};if("instance:ready"===e||"instance:unmounted"===e){const i=e,r=a,c=t.onInstanceLifecycle(i,e=>{e.canvasId===o&&r(e.instanceId)});return n.registerListenerOff(c)}return i?i.on(e,a):()=>{}},getInstanceReady:function(e){return n.isDisposed()?Promise.reject(new Tt):"string"!=typeof e||0===e.length?Promise.reject(new TypeError("getInstanceReady: instanceId must be a non-empty string")):t.getInstance(e,o)?Promise.resolve():new Promise((i,a)=>{let r,c,s=!1;const d=()=>{s=!0;try{null==r||r()}catch{}c&&n.removePendingReady(c)};r=t.onInstanceLifecycle("instance:ready",t=>{s||t.canvasId===o&&t.instanceId===e&&(d(),i())}),c={off:r,reject:e=>{s||(d(),a(e))}},n.addPendingReady(c),!s&&t.getInstance(e,o)&&(d(),i())})},getInstanceRuntime:function(e){return n.isDisposed()?null:t.getInstance(e,o)},getCachedBySourceId:function(e,t){return null==a?void 0:a.getCachedBySourceId(e,t)},startTracing:function(e){null==i||i.startTracing(e)},stopTracing:function(){return(null==i?void 0:i.stopTracing())??[]},getTraceBuffer:function(){return(null==i?void 0:i.getTraceBuffer())??[]}}}({lifecycle:x,currentCanvasId:n.canvasId});return x.addDisposeCleanup(()=>i.dispose()),{dispatch:e=>h.dispatchWithDefaults(e),beginBatch:()=>n.beginBatch(),endBatch:e=>n.endBatch(e),isBatching:I,getSnapshot:()=>c(n.document.document),getRemoveImpact:e=>oe(n.document.document.instances,e),selectedIds:y,selectedInstances:m,freeSplitSelection:e.readonly(n.selection.freeSplitSelection),selectFreeSplitLeaf:(e,t)=>n.selection.selectFreeSplitLeaf(e,t),selectFreeSplitDivider:(e,t,o)=>n.selection.selectFreeSplitDivider(e,t,o),clearFreeSplitSelection:()=>n.selection.clearFreeSplitSelection(),viewport:n.viewport,clientToCanvasPoint:a.clientToCanvasPoint,getInstanceAtClientPoint:a.getInstanceAtClientPoint,getDropTarget:a.getDropTarget,getFreeSplitDropTarget:a.getFreeSplitDropTarget,duplicateInstance:p.duplicateInstance,undo:i.undo,redo:i.redo,canUndo:i.canUndo,canRedo:i.canRedo,undoStackSize:i.undoStackSize,redoStackSize:i.redoStackSize,clearHistory:i.clear,getLayoutConfig:l.getLayoutConfig,updateCanvasSize:l.updateCanvasSize,updateCanvasBackground:l.updateCanvasBackground,updateBehavior:l.updateBehavior,setInteractionOptions:l.setInteractionOptions,getEffectiveBehavior:l.getEffectiveBehavior,setRootLayout:l.setRootLayout,getInstanceTree:r.getInstanceTree,getInstanceList:r.getInstanceList,getInstance:r.getInstanceById,getSelectedPath:r.getSelectedPath,getBreadcrumb:r.getBreadcrumb,focusInstance:r.focusInstance,scrollToInstance:r.scrollToInstance,moveInstanceInTree:r.moveInstanceInTree,canReparent:r.canReparent,cannotReparentEvent:r.cannotReparentEvent,cannotDragLayoutManagedChildEvent:n.cannotDragLayoutManagedChildEvent,resolveAsset:l.resolveAsset,getViewportState:s.getViewportState,getVisibleBounds:s.getVisibleBounds,getCanvasBounds:s.getCanvasBounds,getContentBounds:s.getContentBounds,getSelectionBounds:s.getSelectionBounds,getInstanceBounds:s.getInstanceBounds,panBy:s.panBy,panTo:s.panTo,zoomTo:s.zoomTo,zoomBy:s.zoomBy,zoomToPoint:s.zoomToPoint,resetViewport:s.resetViewport,fitToContent:s.fitToContent,fitToSelection:s.fitToSelection,scrollToRect:s.scrollToRect,toolMode:n.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:b,getBindingMode:S,testBinding:k,on:z,attachBindingDelegate:w,invalidateDataSource:B,getDataSourceSnapshot:M,getCachedBySourceId:L,getInstanceReady:C,getInstanceRuntime:T,startTracing:E,stopTracing:D,getTraceBuffer:P,freeSplit:g,dispose:function(){x.markDisposed()}}}const In=Symbol("hc:canvas:reparent-bridge");function xn(e){return"preview"===e||"runtime"===e?"runtime":"off"}const wn=(e,t)=>{const n=e.__vccOpts||e;for(const[e,o]of t)n[e]=o;return n},bn=wn(e.defineComponent({__name:"CanvasStage",setup(t){const n=Ce(),o=e.ref(null);let i=null;const a=e.computed(()=>{const{scale:e,panX:t,panY:o}=n.viewport.state;return`translate(${t}px, ${o}px) scale(${e})`});function r(){const e=o.value;if(!e)return;const t=e.getBoundingClientRect();n.setMeasuredStageSize({w:t.width,h:t.height})}return e.onMounted(()=>{e.nextTick(r),"undefined"!=typeof ResizeObserver&&o.value&&(i=new ResizeObserver(r),i.observe(o.value)),window.addEventListener("resize",r)}),e.onBeforeUnmount(()=>{null==i||i.disconnect(),i=null,window.removeEventListener("resize",r)}),(t,n)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"stageEl",ref:o,class:"hc-canvas-stage","data-hc-stage":""},[e.createElementVNode("div",{class:"hc-canvas-stage__world","data-hc-stage-world":"",style:e.normalizeStyle({transform:a.value,transformOrigin:"0 0"})},[e.renderSlot(t.$slots,"default",{},void 0,!0)],4)],512))}}),[["__scopeId","data-v-69f0f8c9"]]),Sn=["data-mode"],kn=e.defineComponent({__name:"RuntimeLayer",props:{componentSourceMap:{},mode:{default:"design"},schedulerOptions:{},canvasId:{},persistInstanceState:{type:Boolean}},setup(t){const n=Ce(),o=e.computed(()=>n.document.document);return(i,a)=>(e.openBlock(),e.createElementBlock("div",{class:"hc-runtime-layer","data-hc-runtime-layer":"","data-mode":t.mode,style:e.normalizeStyle({position:"absolute",top:0,left:0,pointerEvents:e.unref(n).effectiveBehavior.value.selectable?"none":"auto"})},[e.createVNode(It,{document:o.value,"component-source-map":t.componentSourceMap,"scheduler-options":t.schedulerOptions,"canvas-id":t.canvasId,"persist-instance-state":t.persistInstanceState},null,8,["document","component-source-map","scheduler-options","canvas-id","persist-instance-state"])],12,Sn))}}),Bn=.05;function Mn(e,t,n,o=0){if(!t||t.length<2)return[];if(e.w<=0||e.h<=0)return[];const i=t.map(e=>"number"==typeof e&&Number.isFinite(e)&&e>0?e:0),a=i.reduce((e,t)=>e+t,0);if(a<=0)return[];const r=i.length-1,c=Math.max(0,o)*r,s="horizontal"===n?e.w:e.h,d=Math.max(0,s-c);if(d<=0)return[];const l=o>0?o:8,u=[];let p=0;for(let t=0;t<r;t++){p+=i[t]/a*d;const r=p+t*o+o/2;let c;c="horizontal"===n?{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:t,rect:c,direction:n})}return u}function zn(e,t,n,o,i=0){if(!e||t<0||t>=e.length-1)return e.slice();const a=e.map(e=>"number"==typeof e&&Number.isFinite(e)&&e>0?e:0),r=a[t],c=a[t+1],s=r+c;if(s<=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,t)=>e+t,0);if(p<=0)return a;const f=n/u*p,h=Bn*p;let g=r+f,m=c-f;g<h&&(g=h,m=s-h),m<h&&(m=h,g=s-h);const v=a.slice();return v[t]=g,v[t+1]=m,v}function Cn(t){const n=e.reactive({status:"idle",parentId:null,dividerIndex:null,startRatios:null,childIds:null,parentAxisPx:0,startPt:null,direction:null,gap:0}),o=e.computed(()=>"active"===n.status);function i(){n.status="idle",n.parentId=null,n.dividerIndex=null,n.startRatios=null,n.childIds=null,n.parentAxisPx=0,n.startPt=null,n.direction=null,n.gap=0}return{drag:n,isDragging:o,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 o=t.document.getInstance(e.parentId);return o&&o.containerLayout&&"split"===o.containerLayout.mode?(n.status="active",n.parentId=e.parentId,n.dividerIndex=e.dividerIndex,n.startRatios=e.startRatios.slice(),n.childIds=e.childIds.slice(),n.parentAxisPx=e.parentAxisPx,n.startPt={...e.canvasPt},n.direction=e.direction,n.gap=e.gap,t.beginBatch(),{startTracking:!0}):{startTracking:!1}},handleSplitDividerMove:function(e){var o,i;if("active"!==n.status)return;if(!(n.startPt&&n.startRatios&&n.childIds&&n.direction&&null!==n.dividerIndex))return;const a=t.document.getInstance(n.parentId);if(!a||!a.containerLayout||"split"!==a.containerLayout.mode)return;const r="horizontal"===n.direction?e.x-n.startPt.x:e.y-n.startPt.y,c=zn(n.startRatios,n.dividerIndex,r,n.parentAxisPx,n.gap),s=n.dividerIndex,d=n.childIds[s],l=n.childIds[s+1];if(!d||!l)return;const u=c[s],p=c[s+1],f=t.document.getInstance(d),h=t.document.getInstance(l),g=null==(o=null==f?void 0:f.layoutItem)?void 0:o.ratio,m=null==(i=null==h?void 0:h.layoutItem)?void 0:i.ratio;g===u&&m===p||(t.dispatch({type:"updateLayoutItem",payload:{instanceId:d,patch:{ratio:u}}}),t.dispatch({type:"updateLayoutItem",payload:{instanceId:l,patch:{ratio:p}}}))},handleSplitDividerEnd:function(){"active"===n.status&&(t.endBatch("split-divider-drag"),i())},cancelSplitDividerDrag:function(){"active"===n.status&&t.endBatch("split-divider-cancel"),i()}}}function Tn(e,t){const n=Math.min(e.x,t.x),o=Math.min(e.y,t.y);return{x:n,y:o,w:Math.max(e.x+e.w,t.x+t.w)-n,h:Math.max(e.y+e.h,t.y+t.h)-o}}function Ln(e,t){if("leaf"===e.type)return t(e.leafId);let n=null;for(const o of e.children){const e=Ln(o,t);e&&(n=n?Tn(n,e):e)}return n}function En(e,t){return Ln(e,t)}function Dn(e,t,n={}){const o=n.thickness??8,i=[],a=e=>{if("leaf"===e.type)return;const n=e.children.map(e=>Ln(e,t));for(let t=0;t<e.children.length-1;t++){const a=n[t],r=n[t+1];if(a&&r)if("row"===e.dir){const n=(a.x+a.w+r.x)/2,c=Math.min(a.y,r.y),s=Math.max(a.y+a.h,r.y+r.h);i.push({nodeId:e.nodeId,dividerIndex:t,direction:"horizontal",rect:{x:n-o/2,y:c,w:o,h:s-c}})}else{const n=(a.y+a.h+r.y)/2,c=Math.min(a.x,r.x),s=Math.max(a.x+a.w,r.x+r.w);i.push({nodeId:e.nodeId,dividerIndex:t,direction:"vertical",rect:{x:c,y:n-o/2,w:s-c,h:o}})}}e.children.forEach(a)};return a(e),i}function Pn(e,t,n,o,i={}){const{snap:a=!1,snapFractions:r=[.5],snapThreshold:c=.04,minRatioFraction:s=Bn,minPx:d=0}=i,l=e.map(e=>({...e}));if(t<0||t>=e.length-1)return l;const u=e[t],p=e[t+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+n;return r=Math.max(o,Math.min(a,r)),l[t]={...u,value:r},l[t+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,t)=>e+("ratio"===t.mode?t.value:0),0);if(d<=0)return l;const f=n/o*d;let h=u.value+f,g=p.value-f;const m=s*i;if(h<m&&(h=m,g=i-m),g<m&&(g=m,h=i-m),a){const e=h/i;for(const t of r)if(Math.abs(e-t)<=c){h=t*i,g=(1-t)*i;break}}return l[t]={...u,value:h},l[t+1]={...p,value:g},l}if("px"===u.mode){let e=u.value+n;e=Math.max(Math.max(d,u.min??0),Math.min(u.max??1/0,e)),l[t]={...u,value:e}}else{let e=p.value-n;e=Math.max(Math.max(d,p.min??0),Math.min(p.max??1/0,e)),l[t+1]={...p,value:e}}return l}function Rn(e,t,n={}){const o=n.edgeZonePx??12,{x:i,y:a,w:r,h:c}=e;if(t.x<i||t.x>i+r||t.y<a||t.y>a+c)return null;const s=t.x-i,d=i+r-t.x,l=t.y-a,u=a+c-t.y,p=Math.min(s,d,l,u);return p>o?null:p===s?{edge:"left"}:p===d?{edge:"right"}:p===l?{edge:"top"}:{edge:"bottom"}}function $n(e,t,n){const{x:o,y:i,w:a,h:r}=e;let c;return c="left"===t?(n.x-o)/a:"right"===t?(o+a-n.x)/a:"top"===t?(n.y-i)/r:(i+r-n.y)/r,Math.max(.05,Math.min(.95,c))}function An(e,t,n){const o=ae(e,t);if(!o)return null;const i=o.children[n],a=o.children[n+1];return i&&a?"leaf"===i.type&&null===i.instanceId?i.leafId:"leaf"===a.type&&null===a.instanceId?a.leafId:null:null}function Fn(e,t){const n=e.document.getInstance(t),o=null==n?void 0:n.containerLayout;return o&&"free-split"===o.mode?o:null}function On(t){const n=vn({ctx:t}),o=e.reactive({status:"idle",containerId:null,nodeId:null,dividerIndex:null,startSizes:null,branchAxisPx:0,startPt:null,direction:null,snap:!1}),i=e.computed(()=>"active"===o.status);function a(){o.status="idle",o.containerId=null,o.nodeId=null,o.dividerIndex=null,o.startSizes=null,o.branchAxisPx=0,o.startPt=null,o.direction=null,o.snap=!1}return{resizeDrag:o,isResizing:i,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=Fn(t,e.containerId);if(!n)return{startTracking:!1};const i=ae(n.root,e.nodeId);return i&&i.sizes.length===e.startSizes.length?(o.status="active",o.containerId=e.containerId,o.nodeId=e.nodeId,o.dividerIndex=e.dividerIndex,o.startSizes=e.startSizes.map(e=>({...e})),o.branchAxisPx=e.branchAxisPx,o.startPt={...e.canvasPt},o.direction=e.direction,o.snap=e.snap??!1,t.beginBatch(),{startTracking:!0}):{startTracking:!1}},handleResizeMove:function(e){if("active"!==o.status)return;if(!(o.startPt&&o.startSizes&&o.direction&&null!==o.dividerIndex&&o.containerId&&o.nodeId))return;const i=Fn(t,o.containerId);if(!i)return;const a="horizontal"===o.direction?e.x-o.startPt.x:e.y-o.startPt.y,r=Pn(o.startSizes,o.dividerIndex,a,o.branchAxisPx,{snap:o.snap}),c=ae(i.root,o.nodeId);c&&function(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n].mode!==t[n].mode||e[n].value!==t[n].value)return!1;return!0}(c.sizes,r)||n.resize(o.containerId,o.nodeId,r)},handleResizeEnd:function(){"active"===o.status&&(t.endBatch("free-split-resize"),a())},cancelResize:function(){"active"===o.status&&t.endBatch("free-split-resize-cancel"),a()},requestSplit:function(e,o,i,a){if(!Fn(t,e))return null;const r=n.split(e,o,i,a),c=Fn(t,e);return c&&ie(c.root,r.leafId)?r:null},requestMerge:function(e,o){Fn(t,e)&&n.merge(e,o)},requestDelete:function(e,o){const i=Fn(t,e);if(!i)return;const a=ie(i.root,o);if(a){t.beginBatch();try{null!==a.instanceId&&n.clear(e,o),n.merge(e,o)}finally{t.endBatch("free-split-delete-region")}}},requestSwap:function(e,o,i){o!==i&&Fn(t,e)&&n.swap(e,o,i)}}}function Nn(e){return!0===(e.lockPosition??e.locked)}function jn(e){return!0===(e.lockSize??e.locked)}function Vn(e){return Nn(e)||jn(e)}const qn=["data-mode"],_n=["data-selection-box","data-locked","data-placement"],Kn=["data-lock-badge"],Hn=["data-resize-handle","data-resize-instance","onPointerdown"],Xn=["data-hc-divider-direction","data-hc-divider-index","data-hc-parent-id","data-hc-divider-dragging","onPointerdown"],Yn=["data-hc-fs-leaf","data-hc-fs-leaf-container","onPointerdown"],Un={key:0,class:"hc-fs-leaf-empty"},Gn=["onPointerdown"],Wn=["onClick"],Jn=["onClick"],Qn=["onClick"],Zn=["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"],eo=["onClick"],to=["data-axis","data-kind"],no=["data-hc-reparent-state"],oo=["data-hc-reparent-ghost-reason"],io={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"}},ao=wn(e.defineComponent({__name:"InteractionLayer",props:{mode:{default:"design"}},emits:["cannot-drag-slot-child","cannot-drag-layout-managed-child"],setup(t,{emit:n}){const o=n,i=Ce(),a=Wt(i,{getRoot:()=>Z(),getDomBox:e=>{const t=_t(e,Z(),i.viewport);return t?0===t.w&&0===t.h?null:t:null}}),r=Cn(i),c=On(i),s=e.inject(In,null);e.watch(()=>a.cannotDragSlotChildEvent.value,e=>{e&&o("cannot-drag-slot-child",{instanceId:e.instanceId,parentId:e.parentId})},{flush:"sync"}),e.watch(()=>a.cannotDragLayoutManagedChildEvent.value,e=>{e&&o("cannot-drag-layout-managed-child",{instanceId:e.instanceId,parentId:e.parentId,parentLayoutMode:e.parentLayoutMode})},{flush:"sync"});const d=e.ref(null);let l=null;const u=e.computed(()=>{const e=new Set(i.selection.selectedIds.value);return i.document.document.instances.filter(t=>e.has(t.instanceId)&&!t.hidden)}),p=e.computed(()=>i.measuredCanvasSize.value),f=e.shallowRef({}),h=e.ref(0);function g(){const e=Z(),t={};for(const n of u.value)t[n.instanceId]=_t(n.instanceId,e,i.viewport);f.value=t,h.value++}let m=null;function v(){"undefined"!=typeof requestAnimationFrame?null===m&&(m=requestAnimationFrame(()=>{m=null,g()})):g()}let y=null;function I(){y=null,g(),(a.isResizing.value||a.isDragging.value||r.isDragging.value||c.isResizing.value)&&(y=requestAnimationFrame(I))}function x(e){const t=f.value[e.instanceId];if(t)return t;const n=_t(e.instanceId,Z(),i.viewport);if(n&&(n.w>0||n.h>0))return n;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}}e.watch(()=>i.selection.selectedIds.value,()=>{v()},{flush:"post",deep:!0}),e.watch(()=>i.viewport.scale.value,()=>v()),e.watch(()=>[i.viewport.panX.value,i.viewport.panY.value],()=>v()),e.watch(()=>u.value.map(e=>{const t=e.layoutBox;return t?`${t.x}|${t.y}|${t.width}|${t.height}|${t.widthMode}|${t.heightMode}`:""}),()=>v(),{flush:"post",deep:!0}),e.watch(()=>u.value.map(e=>{const t=e.containerLayout;return t&&"free-split"===t.mode?JSON.stringify(t):""}),()=>v(),{flush:"post",deep:!0}),e.watch(()=>a.isResizing.value,e=>{e&&null===y&&(y=requestAnimationFrame(I))}),e.watch(()=>a.isDragging.value,e=>{e&&null===y&&(y=requestAnimationFrame(I))}),e.watch(()=>r.isDragging.value,e=>{e&&null===y&&(y=requestAnimationFrame(I))}),e.watch(()=>c.isResizing.value,e=>{e&&null===y&&(y=requestAnimationFrame(I))}),e.onMounted(()=>{v()});const w=e.computed(()=>u.value.map(e=>({instance:e,box:x(e)}))),b=e.computed(()=>{var e,t;if(!i.effectiveBehavior.value.resizable)return[];const n=[];for(const o of w.value){const a=o.instance;if(!0===(a.lockSize??a.locked))continue;if(!o.box)continue;const r=Ot(i,a.instanceId),{x:c,y:s,w:d,h:l}=o.box,u=[{handle:"nw",cx:c,cy:s,cursor:"nwse-resize"},{handle:"n",cx:c+d/2,cy:s,cursor:"ns-resize"},{handle:"ne",cx:c+d,cy:s,cursor:"nesw-resize"},{handle:"e",cx:c+d,cy:s+l/2,cursor:"ew-resize"},{handle:"se",cx:c+d,cy:s+l,cursor:"nwse-resize"},{handle:"s",cx:c+d/2,cy:s+l,cursor:"ns-resize"},{handle:"sw",cx:c,cy:s+l,cursor:"nesw-resize"},{handle:"w",cx:c,cy:s+l/2,cursor:"ew-resize"}],p=null==(e=a.layoutBox)?void 0:e.widthMode,f=null==(t=a.layoutBox)?void 0:t.heightMode,h=u.filter(e=>qt(r,e.handle,p,f));for(const e of h)n.push({instanceId:a.instanceId,handle:e.handle,left:e.cx-4,top:e.cy-4,cursor:e.cursor})}return n});function S(e,t,n){return"percent"===t?`${Math.round(n)}%`:"fill"===t?"fill":"auto"===t?"auto":String(Math.round(e))}const k=e.computed(()=>{if(!a.isResizing.value)return null;const e=a.resize.instanceId;if(!e)return null;const t=i.document.getInstance(e);if(!t)return null;const n=x(t);if(!n)return null;const o=t.layoutBox,r=S(n.w,null==o?void 0:o.widthMode,(null==o?void 0:o.width)??n.w),c=S(n.h,null==o?void 0:o.heightMode,(null==o?void 0:o.height)??n.h);return{x:n.x,y:n.y,w:n.w,h:n.h,wText:r,hText:c}}),B={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 M(e){var t;const n=[],o=[];for(const a of i.document.document.instances)a.parentId===e&&void 0===a.slot&&(n.push(a.instanceId),o.push(null==(t=a.layoutItem)?void 0:t.ratio));return{ids:n,ratios:o}}const C=e.computed(()=>{var e,t;const n=new Set;for(const o of u.value)if("split"===(null==(e=o.containerLayout)?void 0:e.mode)&&n.add(o.instanceId),o.parentId){const e=i.document.getInstance(o.parentId);"split"===(null==(t=null==e?void 0:e.containerLayout)?void 0:t.mode)&&n.add(e.instanceId)}if(0===n.size)return[];const o=[];for(const e of n){const t=i.document.getInstance(e);if(!t)continue;const n=t.containerLayout;if(!n||"split"!==n.mode)continue;const a=U(e)??x(t);if(!a)continue;const r=n,c=r.direction,s=r.gap??0,{ids:d,ratios:l}=M(e),u=z(r.ratios??[],l),p=Mn(a,u,c,s);0!==p.length&&o.push({parentId:e,direction:c,gap:s,effectiveRatios:u,childIds:d,parentBox:a,dividers:p})}return o});function T(e){var t;return"undefined"!=typeof globalThis&&(null==(t=globalThis.CSS)?void 0:t.escape)?globalThis.CSS.escape(e):e.replace(/["\\]/g,e=>`\\${e}`)}function L(e){const t=i.document.getInstance(e),n=null==t?void 0:t.containerLayout;return n&&"free-split"===n.mode?n:null}function E(e,t){const n=Z();if(!n)return null;const o=$t(n,`[data-hc-leaf-container="${T(e)}"][data-hc-leaf="${T(t)}"]`);if(!(o&&o instanceof HTMLElement))return null;const i=Y(o);return i&&0===i.w&&0===i.h?null:i}const D=e.computed(()=>{const e=new Set;if(i.freeSplitControlsAlways.value){for(const t of i.document.document.instances)L(t.instanceId)&&e.add(t.instanceId);return e}for(const t of u.value){L(t.instanceId)&&e.add(t.instanceId);let n=t.parentId,o=0;for(;n&&o++<100;){if(L(n)){e.add(n);break}const t=i.document.getInstance(n);if(!t)break;n=t.parentId}}return $.active&&$.containerId&&e.add($.containerId),e}),P=e.computed(()=>{if(!i.freeSplitEnabled.value)return[];h.value;const e=[];for(const t of D.value){const n=L(t);if(!n)continue;const o=Dn(n.root,e=>E(t,e));if(0===o.length)continue;const i=o.map(e=>({...e,mergeTargetLeafId:An(n.root,e.nodeId,e.dividerIndex)}));e.push({containerId:t,dividers:i})}return e}),R=e.computed(()=>{if(!i.freeSplitEnabled.value)return[];h.value;const e=[];for(const t of D.value){const n=L(t);if(!n)continue;const o=!0===n.structureLocked,i=ce(n.root);for(const n of i){const a=E(t,n.leafId);if(!a)continue;const r=!o&&!0!==n.locked;e.push({containerId:t,leafId:n.leafId,rect:a,isEmpty:null===n.instanceId,canSplit:r,canDelete:r&&i.length>1,canMove:null!==n.instanceId&&i.length>1})}}return e}),$=e.reactive({active:!1,containerId:null,sourceLeafId:null,targetLeafId:null});function A(e){const t=$.containerId,n=Z();if(!t||!n)return null;const o=Ut({x:e.clientX,y:e.clientY},n,i.viewport);for(const e of R.value){if(e.containerId!==t||e.leafId===$.sourceLeafId)continue;const n=e.rect;if(o.x>=n.x&&o.x<=n.x+n.w&&o.y>=n.y&&o.y<=n.y+n.h)return e.leafId}return null}function F(e){$.active&&($.targetLeafId=A(e))}function O(){window.removeEventListener("pointermove",F),window.removeEventListener("pointerup",j),window.removeEventListener("keydown",ue)}function N(){$.active=!1,$.containerId=null,$.sourceLeafId=null,$.targetLeafId=null}function j(e){O();const t=$.containerId,n=$.sourceLeafId,o=$.active?A(e):null;N(),t&&n&&o&&o!==n&&c.requestSwap(t,n,o)}function V(e,t,n){c.requestSplit(e,t,n,.5)}const q=e.reactive({active:!1,containerId:null,leafId:null,edge:null,leafRect:null,startPt:null});function _(){q.active=!1,q.containerId=null,q.leafId=null,q.edge=null,q.leafRect=null,q.startPt=null}const K=e.computed(()=>a.isResizing.value&&a.resize.handle?B[a.resize.handle]:r.isDragging.value?"horizontal"===r.drag.direction?"ew-resize":"ns-resize":c.isResizing.value?"horizontal"===c.resizeDrag.direction?"ew-resize":"ns-resize":a.isDragging.value?"grabbing":"hand"===i.toolMode.value?ne?"grabbing":"grab":"marquee"===i.toolMode.value?"crosshair":"default"),H=e.shallowRef(null);function X(){if(!s)return!1;if(!a.isDragging.value)return!1;if(1!==a.drag.startRects.size)return!1;const e=Array.from(a.drag.startRects.keys())[0],t=i.document.getInstance(e);return!(!t||void 0!==t.placement&&"canvas"!==t.placement&&"absolute"!==t.placement||!0===(t.lockPosition??t.locked)||t.hidden)}function Y(e){const t=Z();if(!t)return null;const n=e.getBoundingClientRect(),o=t.getBoundingClientRect(),a=i.viewport.toCanvasPoint({x:n.left-o.left,y:n.top-o.top}),r=i.viewport.toCanvasPoint({x:n.right-o.left,y:n.bottom-o.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 U(e){var t;const n=Z();if(!n)return null;const o=$t(n,`[data-instance-id="${("undefined"!=typeof globalThis&&(null==(t=globalThis.CSS)?void 0:t.escape)?globalThis.CSS.escape:e=>e.replace(/["\\]/g,e=>`\\${e}`))(e)}"] [data-hc-slot="default"]`);return o&&o instanceof HTMLElement?Y(o):null}let G=null,W=null;function J(e){if(!X()||!s)return void(null!==H.value&&(H.value=null));const t=Array.from(a.drag.startRects.keys())[0],n=s.getDropTarget(e,{excludeInstanceId:t});if(!n)return void(null!==H.value&&(H.value=null));const o=i.document.getInstance(t);if(o&&o.parentId===n.parentId&&(o.slot??"default")===(n.slot||"default"))return void(null!==H.value&&(H.value=null));const r=Y(n.outletEl);if(!r)return void(null!==H.value&&(H.value=null));const c={parentId:n.parentId,slot:n.slot},d=s.canReparent(t,c);H.value={rect:r,target:n,result:d}}const Q=e.computed(()=>H.value);function Z(){return l||(d.value?(l=d.value.closest("[data-hc-stage]"),l):null)}function ee(e){const t=Z();if(!t)return;const n=Ut({x:e.clientX,y:e.clientY},t,i.viewport);i.setMouseCanvasPoint(n)}function te(){i.setMouseCanvasPoint(null)}let ne=null;function oe(e){if(0!==e.button)return;const t=Z();if(!t)return;if("hand"===i.toolMode.value)return ne={clientX:e.clientX,clientY:e.clientY,panX:i.viewport.panX.value,panY:i.viewport.panY.value},window.addEventListener("pointermove",ie),window.addEventListener("pointerup",re),void e.preventDefault();const n=Ut({x:e.clientX,y:e.clientY},t,i.viewport),{startTracking:o}=a.handlePointerDown(n,{shift:e.shiftKey,ctrl:e.ctrlKey,meta:e.metaKey});o&&(se(),e.preventDefault())}function ie(e){if(!ne)return;const t=e.clientX-ne.clientX,n=e.clientY-ne.clientY;i.viewport.setPan(ne.panX+t,ne.panY+n)}function re(){ne=null,window.removeEventListener("pointermove",ie),window.removeEventListener("pointerup",re)}function se(){window.addEventListener("pointermove",de),window.addEventListener("pointerup",le),window.addEventListener("keydown",ue)}function de(e){const t=Z();if(!t)return;const n=Ut({x:e.clientX,y:e.clientY},t,i.viewport);var o;a.handlePointerMove(n),r.handleSplitDividerMove(n),r.isDragging.value&&v(),c.handleResizeMove(n),c.isResizing.value&&v(),o={x:e.clientX,y:e.clientY},G=o,"undefined"!=typeof requestAnimationFrame?null===W&&(W=requestAnimationFrame(()=>{W=null,G&&J(G)})):J(o)}function le(e){if(r.isDragging.value)return r.handleSplitDividerEnd(),void pe();if(c.isResizing.value)return c.handleResizeEnd(),void pe();if(q.active){const{containerId:t,leafId:n,edge:o,leafRect:a,startPt:r}=q;if(_(),pe(),!(t&&n&&o&&a&&r))return;const s=Z(),d=e&&s?Ut({x:e.clientX,y:e.clientY},s,i.viewport):r;if(("left"===o?d.x-r.x:"right"===o?r.x-d.x:"top"===o?d.y-r.y:r.y-d.y)<3)return;const l=$n(a,o,d);return void c.requestSplit(t,n,o,l)}e&&s&&X()&&J({x:e.clientX,y:e.clientY}),null!==W&&"undefined"!=typeof cancelAnimationFrame&&(cancelAnimationFrame(W),W=null);const t=H.value;if(t&&s){const e=Array.from(a.drag.startRects.keys())[0];return t.result.ok&&e?(a.cancelDrag(),s.moveInstanceInTree(e,{parentId:t.target.parentId,slot:t.target.slot})):a.cancelDrag(),H.value=null,void pe()}a.handlePointerUp(),pe()}function ue(e){"Escape"===e.key&&(a.cancelResize(),a.cancelDrag(),a.cancelMarquee(),r.cancelSplitDividerDrag(),c.cancelResize(),_(),O(),N(),H.value=null,null!==W&&"undefined"!=typeof cancelAnimationFrame&&(cancelAnimationFrame(W),W=null),re(),pe())}function pe(){window.removeEventListener("pointermove",de),window.removeEventListener("pointerup",le),window.removeEventListener("keydown",ue)}return e.onBeforeUnmount(()=>{a.cancelResize(),a.cancelDrag(),a.cancelMarquee(),r.cancelSplitDividerDrag(),c.cancelResize(),_(),O(),N(),H.value=null,pe(),re(),null!==m&&"undefined"!=typeof cancelAnimationFrame&&(cancelAnimationFrame(m),m=null),null!==y&&"undefined"!=typeof cancelAnimationFrame&&(cancelAnimationFrame(y),y=null),null!==W&&"undefined"!=typeof cancelAnimationFrame&&(cancelAnimationFrame(W),W=null),G=null}),(n,o)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"layerEl",ref:d,class:"hc-interaction-layer","data-hc-interaction-layer":"","data-mode":t.mode,style:e.normalizeStyle({position:"absolute",top:0,left:0,width:p.value.w+"px",height:p.value.h+"px",pointerEvents:e.unref(i).effectiveBehavior.value.selectable?"auto":"none",cursor:K.value,zIndex:9999}),onPointerdown:oe,onPointermove:ee,onPointerleave:te},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(w.value,t=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:"sel-"+t.instance.instanceId},[t.box?(e.openBlock(),e.createElementBlock("div",{key:0,class:"hc-selection-box","data-selection-box":t.instance.instanceId,"data-locked":e.unref(Vn)(t.instance)?"true":"false","data-placement":t.instance.placement??"absolute",style:e.normalizeStyle({position:"absolute",left:t.box.x+"px",top:t.box.y+"px",width:t.box.w+"px",height:t.box.h+"px",border:"2px solid "+(e.unref(Vn)(t.instance)?"#9ca3af":"#3b82f6"),boxSizing:"border-box",pointerEvents:"none",boxShadow:"0 0 0 1px rgba(59, 130, 246, 0.2)"})},null,12,_n)):e.createCommentVNode("",!0)],64))),128)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(w.value.filter(t=>e.unref(Vn)(t.instance)),t=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:"lock-"+t.instance.instanceId},[t.box?(e.openBlock(),e.createElementBlock("div",{key:0,class:"hc-lock-badge","data-lock-badge":t.instance.instanceId,style:e.normalizeStyle({position:"absolute",left:t.box.x+t.box.w-18+"px",top:t.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,Kn)):e.createCommentVNode("",!0)],64))),128)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(b.value,t=>(e.openBlock(),e.createElementBlock("div",{key:"rh-"+t.instanceId+"-"+t.handle,class:"hc-resize-handle","data-resize-handle":t.handle,"data-resize-instance":t.instanceId,style:e.normalizeStyle({position:"absolute",left:t.left+"px",top:t.top+"px",width:"8px",height:"8px",background:"#fff",border:"1px solid #3b82f6",boxSizing:"border-box",cursor:t.cursor,pointerEvents:"auto",zIndex:2}),onPointerdown:e=>function(e,t,n){if(0!==e.button)return;e.stopPropagation();const o=Z();if(!o)return;const r=Ut({x:e.clientX,y:e.clientY},o,i.viewport),{startTracking:c}=a.handleResizeStart(t,n,r);c&&(se(),e.preventDefault())}(e,t.instanceId,t.handle)},null,44,Hn))),128)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(C.value,t=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:"sd-parent-"+t.parentId},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.dividers,o=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:"sd-"+t.parentId+"-"+o.index},[n.$slots["split-divider"]?e.renderSlot(n.$slots,"split-divider",{key:0,state:{parentId:t.parentId,dividerIndex:o.index,direction:o.direction,rect:o.rect,isDragging:e.unref(r).isDragging.value&&e.unref(r).drag.parentId===t.parentId&&e.unref(r).drag.dividerIndex===o.index}},void 0,!0):(e.openBlock(),e.createElementBlock("div",{key:1,class:"hc-split-divider","data-hc-divider-direction":o.direction,"data-hc-divider-index":o.index,"data-hc-parent-id":t.parentId,"data-hc-divider-dragging":e.unref(r).isDragging.value&&e.unref(r).drag.parentId===t.parentId&&e.unref(r).drag.dividerIndex===o.index?"true":"false",style:e.normalizeStyle({position:"absolute",left:o.rect.x+"px",top:o.rect.y+"px",width:o.rect.w+"px",height:o.rect.h+"px",background:e.unref(r).isDragging.value&&e.unref(r).drag.parentId===t.parentId&&e.unref(r).drag.dividerIndex===o.index?"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,t,n){if(0!==e.button)return;e.stopPropagation();const o=Z();if(!o)return;const a=i.document.getInstance(t);if(!a)return;const c=a.containerLayout;if(!c||"split"!==c.mode)return;const s=c,d=U(t)??x(a);if(!d)return;const l="horizontal"===s.direction?d.w:d.h,{ids:u,ratios:p}=M(t),f=z(s.ratios??[],p),h=Ut({x:e.clientX,y:e.clientY},o,i.viewport),{startTracking:g}=r.handleSplitDividerStart({parentId:t,dividerIndex:n,startRatios:f,childIds:u,parentAxisPx:l,direction:s.direction,gap:s.gap??0,canvasPt:h});g&&(se(),e.preventDefault())}(e,t.parentId,o.index)},null,44,Xn))],64))),128))],64))),128)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(R.value,t=>(e.openBlock(),e.createElementBlock("div",{key:"fsl-"+t.containerId+"-"+t.leafId,class:e.normalizeClass(["hc-fs-leaf-edge",{"is-empty":t.isEmpty,"is-drop-target":$.active&&$.containerId===t.containerId&&$.targetLeafId===t.leafId}]),"data-hc-fs-leaf":t.leafId,"data-hc-fs-leaf-container":t.containerId,style:e.normalizeStyle({position:"absolute",left:t.rect.x+"px",top:t.rect.y+"px",width:t.rect.w+"px",height:t.rect.h+"px",background:"transparent",pointerEvents:"auto",boxSizing:"border-box",zIndex:1}),onPointerdown:e=>function(e,t,n,o){if(0!==e.button)return;const a=Z();if(!a)return;const r=Ut({x:e.clientX,y:e.clientY},a,i.viewport),c=Rn(o,r);c&&(e.stopPropagation(),e.preventDefault(),q.active=!0,q.containerId=t,q.leafId=n,q.edge=c.edge,q.leafRect={...o},q.startPt=r,se())}(e,t.containerId,t.leafId,t.rect)},[t.isEmpty?(e.openBlock(),e.createElementBlock("div",Un,[...o[3]||(o[3]=[e.createElementVNode("span",{class:"hc-fs-leaf-hint"},"拖组件进来",-1)])])):e.createCommentVNode("",!0),t.canSplit||t.canDelete||t.canMove?(e.openBlock(),e.createElementBlock("div",{key:1,class:"hc-fs-leaf-toolbar",onPointerdown:o[0]||(o[0]=e.withModifiers(()=>{},["stop"]))},[t.canMove?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"hc-fs-leaf-btn hc-fs-leaf-move",title:"拖动:移动 / 交换到另一格",onPointerdown:e.withModifiers(e=>{return n=e,o=t.containerId,i=t.leafId,void(0===n.button&&(n.stopPropagation(),n.preventDefault(),$.active=!0,$.containerId=o,$.sourceLeafId=i,$.targetLeafId=null,window.addEventListener("pointermove",F),window.addEventListener("pointerup",j),window.addEventListener("keydown",ue)));var n,o,i},["stop"])},"⠿",40,Gn)):e.createCommentVNode("",!0),t.canSplit?(e.openBlock(),e.createElementBlock("button",{key:1,type:"button",class:"hc-fs-leaf-btn",title:"竖切(分左右)",onClick:e.withModifiers(e=>V(t.containerId,t.leafId,"right"),["stop"])},"⬌",8,Wn)):e.createCommentVNode("",!0),t.canSplit?(e.openBlock(),e.createElementBlock("button",{key:2,type:"button",class:"hc-fs-leaf-btn",title:"横切(分上下)",onClick:e.withModifiers(e=>V(t.containerId,t.leafId,"bottom"),["stop"])},"⬍",8,Jn)):e.createCommentVNode("",!0),t.canDelete?(e.openBlock(),e.createElementBlock("button",{key:3,type:"button",class:"hc-fs-leaf-btn hc-fs-leaf-btn--danger",title:"删除此区(并入相邻)",onClick:e.withModifiers(e=>{return n=t.containerId,o=t.leafId,void c.requestDelete(n,o);var n,o},["stop"])},"✕",8,Qn)):e.createCommentVNode("",!0)],32)):e.createCommentVNode("",!0)],46,Yn))),128)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(P.value,t=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:"fsd-cnt-"+t.containerId},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.dividers,a=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:"fsd-"+t.containerId+"-"+a.nodeId+"-"+a.dividerIndex},[n.$slots["free-split-divider"]?e.renderSlot(n.$slots,"free-split-divider",{key:0,state:{containerId:t.containerId,nodeId:a.nodeId,dividerIndex:a.dividerIndex,direction:a.direction,rect:a.rect,isDragging:e.unref(c).isResizing.value&&e.unref(c).resizeDrag.containerId===t.containerId&&e.unref(c).resizeDrag.nodeId===a.nodeId&&e.unref(c).resizeDrag.dividerIndex===a.dividerIndex}},void 0,!0):(e.openBlock(),e.createElementBlock("div",{key:1,class:"hc-fs-divider","data-hc-fs-divider-direction":a.direction,"data-hc-fs-divider-node":a.nodeId,"data-hc-fs-divider-index":a.dividerIndex,"data-hc-fs-container-id":t.containerId,"data-hc-fs-divider-dragging":e.unref(c).isResizing.value&&e.unref(c).resizeDrag.containerId===t.containerId&&e.unref(c).resizeDrag.nodeId===a.nodeId&&e.unref(c).resizeDrag.dividerIndex===a.dividerIndex?"true":"false",style:e.normalizeStyle({position:"absolute",left:a.rect.x+"px",top:a.rect.y+"px",width:a.rect.w+"px",height:a.rect.h+"px",background:e.unref(c).isResizing.value&&e.unref(c).resizeDrag.containerId===t.containerId&&e.unref(c).resizeDrag.nodeId===a.nodeId&&e.unref(c).resizeDrag.dividerIndex===a.dividerIndex?"rgba(59, 130, 246, 0.6)":"rgba(59, 130, 246, 0.18)",cursor:"horizontal"===a.direction?"ew-resize":"ns-resize",pointerEvents:"auto",boxSizing:"border-box",zIndex:3}),onPointerdown:e=>function(e,t,n,o){if(0!==e.button)return;e.stopPropagation();const a=Z();if(!a)return;const r=L(t);if(!r)return;const s=ae(r.root,n);if(!s)return;const d=En(s,e=>E(t,e));if(!d)return;const l="row"===s.dir?"horizontal":"vertical",u="horizontal"===l?d.w:d.h,p=Ut({x:e.clientX,y:e.clientY},a,i.viewport),{startTracking:f}=c.handleResizeStart({containerId:t,nodeId:n,dividerIndex:o,startSizes:s.sizes.map(e=>({...e})),branchAxisPx:u,direction:l,canvasPt:p});f&&(se(),e.preventDefault())}(e,t.containerId,a.nodeId,a.dividerIndex),onDblclick:e=>function(e,t,n,o){e.stopPropagation();const i=L(t);if(!i)return;const a=An(i.root,n,o);a&&c.requestMerge(t,a)}(e,t.containerId,a.nodeId,a.dividerIndex)},[o[4]||(o[4]=e.createElementVNode("span",{class:"hc-fs-divider-grip","aria-hidden":"true"},null,-1)),a.mergeTargetLeafId?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"hc-fs-merge-btn",title:"合并(并入相邻空格)",onPointerdown:o[1]||(o[1]=e.withModifiers(()=>{},["stop"])),onDblclick:o[2]||(o[2]=e.withModifiers(()=>{},["stop"])),onClick:e.withModifiers(e=>function(e,t,n){const o=L(e);if(!o)return;const i=An(o.root,t,n);i&&c.requestMerge(e,i)}(t.containerId,a.nodeId,a.dividerIndex),["stop"])},"⤧",40,eo)):e.createCommentVNode("",!0)],44,Zn))],64))),128))],64))),128)),k.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"hc-resize-badge","data-resize-badge":"",style:e.normalizeStyle({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"})},e.toDisplayString(k.value.wText)+" × "+e.toDisplayString(k.value.hText),5)):e.createCommentVNode("",!0),e.unref(a).marqueeRect.value?(e.openBlock(),e.createElementBlock("div",{key:1,class:"hc-marquee-box","data-marquee-box":"",style:e.normalizeStyle({position:"absolute",left:e.unref(a).marqueeRect.value.x+"px",top:e.unref(a).marqueeRect.value.y+"px",width:e.unref(a).marqueeRect.value.w+"px",height:e.unref(a).marqueeRect.value.h+"px",border:"1px dashed #3b82f6",background:"rgba(59, 130, 246, 0.08)",pointerEvents:"none",boxSizing:"border-box"})},null,4)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(a).snapLines.value,(t,n)=>(e.openBlock(),e.createElementBlock("div",{key:"snap-"+n,class:"hc-snap-line","data-snap-line":"","data-axis":t.axis,"data-kind":t.kind,style:e.normalizeStyle("x"===t.axis?{position:"absolute",left:t.pos+"px",top:t.from+"px",width:"0px",height:t.to-t.from+"px",borderLeft:"1px dashed #ec4899",pointerEvents:"none"}:{position:"absolute",left:t.from+"px",top:t.pos+"px",width:t.to-t.from+"px",height:"0px",borderTop:"1px dashed #ec4899",pointerEvents:"none"})},null,12,to))),128)),Q.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[n.$slots["reparent-ghost"]?e.renderSlot(n.$slots,"reparent-ghost",{key:0,state:Q.value},void 0,!0):(e.openBlock(),e.createElementBlock("div",{key:1,class:"hc-reparent-ghost","data-hc-reparent-ghost":"","data-hc-reparent-state":Q.value.result.ok?"legal":"illegal",style:e.normalizeStyle({position:"absolute",left:Q.value.rect.x+"px",top:Q.value.rect.y+"px",width:Q.value.rect.w+"px",height:Q.value.rect.h+"px",pointerEvents:"none",boxSizing:"border-box",border:"2px solid "+(Q.value.result.ok?"#22c55e":"#ef4444"),background:Q.value.result.ok?"rgba(34, 197, 94, 0.12)":"rgba(239, 68, 68, 0.12)"})},[!Q.value.result.ok&&Q.value.result.message?(e.openBlock(),e.createElementBlock("div",{key:0,class:"hc-reparent-ghost__message","data-hc-reparent-ghost-message":"","data-hc-reparent-ghost-reason":Q.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"}},[Q.value.result.reason?(e.openBlock(),e.createElementBlock("span",io,"["+e.toDisplayString(Q.value.result.reason)+"]",1)):e.createCommentVNode("",!0),e.createElementVNode("span",null,e.toDisplayString(Q.value.result.message),1)],8,oo)):e.createCommentVNode("",!0)],12,no))],64)):e.createCommentVNode("",!0)],44,qn))}}),[["__scopeId","data-v-bc77f713"]]),ro=e.defineComponent({__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},persistInstanceState:{type:Boolean}},emits:["update:modelValue","context-ready","handle-ready","cannot-drag-slot-child","cannot-drag-layout-managed-child"],setup(t,{expose:n,emit:o}){const i=t,a=o;let r=!1;const c=i.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)}`}(),s=Me({canvasId:c,initialDocument:i.modelValue,getMode:()=>i.mode,adapters:i.adapters,freeSplitEnabled:()=>"function"==typeof i.freeSplitEnabled?i.freeSplitEnabled():i.freeSplitEnabled,freeSplitControlsAlways:()=>"function"==typeof i.freeSplitControlsAlways?i.freeSplitControlsAlways():i.freeSplitControlsAlways,cascadeRemove:i.cascadeRemove});ze(s);const d=e.ref(null),l=yn(s,{getStageEl:()=>{var e;return(null==(e=d.value)?void 0:e.querySelector("[data-hc-stage]"))??null},resolveContract:function(e){var t;const n=null==(t=i.componentSourceMap)?void 0:t[e];if(n)return"contract"in n&&n.contract?n.contract:void 0}}),u=!!s.adapters.data,p=We({canvasId:c,source:{getDocument:()=>s.document.document,onAction:e=>s.registerHooks({onAfterAction:t=>e(t)})},initialMode:xn(i.mode),dataStore:u?s.dataStore:void 0});l.attachBindingDelegate(p,u?s.dataStore:null),a("context-ready",s),a("handle-ready",l);const f={getDropTarget:(e,t)=>l.getDropTarget(e,d.value,t),canReparent:(e,t)=>l.canReparent(e,t),moveInstanceInTree:(e,t)=>l.moveInstanceInTree(e,t),cannotReparentEvent:l.cannotReparentEvent};function h(){a("update:modelValue",JSON.parse(JSON.stringify(s.document.document)))}return e.provide(In,f),e.watch(()=>i.modelValue,(e,t)=>{if(e&&e!==t){r=!0;try{s.suppressRecording(()=>{s.dispatch({type:"replaceDocument",payload:{document:e}})})}finally{r=!1}}}),e.watch(()=>s.document.document,()=>{r||s.isBatching.value||h()},{deep:!0,flush:"sync"}),e.watch(()=>s.isBatching.value,(e,t)=>{!t||e||r||h()},{flush:"sync"}),e.onMounted(()=>{St(c,l),e.nextTick(()=>{p.setMode(xn(i.mode))})}),e.watch(()=>i.mode,e=>{p.setMode(xn(e))}),e.onBeforeUnmount(()=>{p.dispose(),l.attachBindingDelegate(null,null),kt(c),l.dispose(),s.dispose()}),n({context:s,handle:l,canvasId:c}),(n,o)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"stageContainerEl",ref:d,class:"hc-canvas-designer",style:{width:"100%",height:"100%",position:"relative"},"data-hc-canvas-designer":""},[e.createVNode(bn,null,{default:e.withCtx(()=>[e.createVNode(kn,{"component-source-map":t.componentSourceMap,mode:t.mode,"scheduler-options":t.schedulerOptions,"canvas-id":e.unref(c),"persist-instance-state":t.persistInstanceState},null,8,["component-source-map","mode","scheduler-options","canvas-id","persist-instance-state"]),"runtime"!==t.mode?(e.openBlock(),e.createBlock(ao,{key:0,mode:t.mode,onCannotDragSlotChild:o[0]||(o[0]=e=>a("cannot-drag-slot-child",e)),onCannotDragLayoutManagedChild:o[1]||(o[1]=e=>a("cannot-drag-layout-managed-child",e))},e.createSlots({_:2},[n.$slots["reparent-ghost"]?{name:"reparent-ghost",fn:e.withCtx(t=>[e.renderSlot(n.$slots,"reparent-ghost",e.normalizeProps(e.guardReactiveProps(t)))]),key:"0"}:void 0,n.$slots["split-divider"]?{name:"split-divider",fn:e.withCtx(t=>[e.renderSlot(n.$slots,"split-divider",e.normalizeProps(e.guardReactiveProps(t)))]),key:"1"}:void 0,n.$slots["free-split-divider"]?{name:"free-split-divider",fn:e.withCtx(t=>[e.renderSlot(n.$slots,"free-split-divider",e.normalizeProps(e.guardReactiveProps(t)))]),key:"2"}:void 0]),1032,["mode"])):e.createCommentVNode("",!0),e.renderSlot(n.$slots,"canvas-overlay",{viewport:e.unref(l).viewport,handle:e.unref(l)}),e.renderSlot(n.$slots,"default")]),_:3})],512))}});function co(e={}){const{canvasWidth:t=1280,canvasHeight:n=720,rootLayout:o="free",instances:i=[],bindings:a=[]}=e;return{schemaVersion:"1",layout:{type:"free",canvas:{width:{mode:"px",value:t},height:{mode:"px",value:n}},rootLayout:"string"==typeof o?{mode:o}:o},instances:i,bindings:a}}const so={event:["instanceEvent"],init:["lifecycle","page"],data:["dataSource"]};function lo(e){return so[e.type].includes(e.source.kind)}function uo(e,t,n,o){const i={level:t,code:e,bindingId:n.id,message:`${e} on binding "${n.id}"`};return o.instanceId&&(i.instanceId=o.instanceId),o.canvasId&&(i.canvasId=o.canvasId),i}function po(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 fo(e){switch(e.source.kind){case"instanceEvent":case"lifecycle":return e.source.canvasId;case"page":case"dataSource":return}}function ho(e){switch(e.target.kind){case"instanceMethod":case"instanceEmit":case"instanceDataInput":return e.target.canvasId}}exports.CANVAS_CONTEXT_KEY=Be,exports.CANVAS_REPARENT_BRIDGE_KEY=In,exports.CanvasStage=bn,exports.DEFAULT_FIT_PADDING=40,exports.DIVIDER_HIT_THICKNESS=8,exports.DRAG_THRESHOLD_CANVAS_PX=3,exports.EFFECTIVE_DEFAULT_SLOT=Te,exports.HandleDisposedError=Tt,exports.HyperCardCanvasDesigner=ro,exports.HyperCardPageRenderer=It,exports.InteractionLayer=ao,exports.MAX_INSTANCE_TREE_DEPTH=8,exports.MAX_SPLIT_TREE_DEPTH=8,exports.MIN_INSTANCE_SIZE=8,exports.MIN_RATIO_FRACTION=Bn,exports.RuntimeLayer=kn,exports.SLOT_CHILD_RESIZE_HANDLES=["e","s","se"],exports.VERSION="0.0.0-d3.6c-stage",exports.applyEffectiveSplitRatiosToDocument=v,exports.applyFreeSplitResizeDrag=Pn,exports.applySplitDividerDrag=zn,exports.bindingModeForCanvasMode=xn,exports.bindingReferencesInstance=W,exports.buildInstanceTree=tn,exports.canReparent=en,exports.canvasSizeToCss=$,exports.cleanLayoutItem=Y,exports.clientToCanvas=Ut,exports.computeContentBounds=dn,exports.computeEffectiveSplitRatios=z,exports.computeFit=un,exports.computeFreeSplitDividers=Dn,exports.computeFreeSplitNodeRect=En,exports.computeInverse=Bt,exports.computeNextAxisSize=Kt,exports.computeNextLayoutBoxAxis=Ht,exports.computeParentLayoutMode=X,exports.computeSelectionBounds=ln,exports.computeSlotChildCanvasRect=_t,exports.computeSnap=Et,exports.computeSplitDividers=Mn,exports.computeSplitShare=$n,exports.computeVisibleBounds=pn,exports.containerLayoutToCss=P,exports.createAssetResolver=we,exports.createCanvasContext=Me,exports.createCanvasHandle=yn,exports.createCanvasInteraction=Wt,exports.createCommandRecorder=Ct,exports.createDocumentStore=Z,exports.createFreePageDocument=function(e={}){return co({...e,rootLayout:"free"})},exports.createFreeSplitInteraction=On,exports.createMinimalPageDocument=co,exports.createRenderScheduler=U,exports.createSelectionStore=ee,exports.createSplitDividerInteraction=Cn,exports.createViewportStore=te,exports.deriveComponentContract=et,exports.deriveComponentKind=function(e,n){const o="string"==typeof(null==e?void 0:e.js)?e.js:"",i="string"==typeof(null==e?void 0:e.html)?e.html:"",a=t.parseComponentSource(o,i);return!a.ok&&(null==n?void 0:n.fallback)?n.fallback:a.kind},exports.effectiveSlot=Le,exports.emptyComponentContract=function(){return{propsDecl:[],emitsDecl:[],methodsDecl:[],slotsDecl:[],modelDecl:[],dataInputsDecl:[],dataOutputsDecl:[]}},exports.emptyPageDocument=function(){return{schemaVersion:"1",layout:{type:"free",canvas:{width:{mode:"fill"},height:{mode:"fill"}}},instances:[],bindings:[]}},exports.filterExistingIds=Gt,exports.filterInstancesInRect=Rt,exports.findInstanceBreadcrumb=rn,exports.findInstancePath=an,exports.getBindingInstanceRefs=G,exports.getDefaultShortcuts=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"}]},exports.getDesignerHandle=function(e){return xt.get(e)??null},exports.getInstanceWrapperRectFromDom=Ft,exports.getOutletRectFromDom=At,exports.getParentLayoutMode=Ot,exports.getRendererDiagnostics=function(e){return n.get(e)??null},exports.getSiblings=cn,exports.getSlotChildRectFromDom=function(e,t){var n;const o=t??("undefined"!=typeof document&&"function"==typeof document.querySelector?document:null);if(!o)return null;const i="undefined"!=typeof globalThis&&(null==(n=globalThis.CSS)?void 0:n.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},exports.hitTestInstance=Dt,exports.isAdditive=Yt,exports.isCanvasRootPlacement=function(e){return"canvas"===e||"absolute"===e||void 0===e},exports.isContainerChildPlacement=H,exports.isDraftKey=function(e){return"string"==typeof e&&e.includes("@draft:")},exports.isEditingText=hn,exports.isFreePositionLayoutMode=Nt,exports.isFreeSplitEnabled=function(){return!1},exports.isInstanceEffectivelyLocked=Vn,exports.isInstancePositionLocked=Nn,exports.isInstanceSizeLocked=jn,exports.isResizeHandleAllowed=qt,exports.isV1Layout=T,exports.layoutItemToCss=R,exports.listRegisteredCanvasIds=function(){return Object.freeze(Array.from(xt.keys()))},exports.listRendererDiagnostics=function(){return[...n.values()]},exports.matchBinding=gn,exports.migrateGridCellsToLayoutItem=y,exports.migrateInstanceToLayoutBox=q,exports.migrateLayoutV0ToV1=C,exports.migratePlacementToCanvasContainer=V,exports.migrateRootLayout=K,exports.normalizeComponentOverrides=x,exports.normalizeFreeSplitContainersInDocument=function(e){return e},exports.normalizeFreeSplitTreeShape=function e(t){if(!t||"object"!=typeof t)return g();const n=t;if("leaf"===n.type){const e={type:"leaf",leafId:"string"==typeof n.leafId&&n.leafId?n.leafId:h(),instanceId:"string"==typeof n.instanceId?n.instanceId:null};return!0===n.locked&&(e.locked=!0),e}if("split"===n.type){const t=(Array.isArray(n.children)?n.children:[]).map(t=>e(t));if(0===t.length)return g();if(1===t.length)return t[0];const o=Array.isArray(n.sizes)?n.sizes:[],i=t.map((e,t)=>function(e){if(e&&"object"==typeof e){const t=e;if("px"===t.mode){const e={mode:"px",value:"number"==typeof t.value&&Number.isFinite(t.value)&&t.value>=0?t.value:0};let n="number"==typeof t.min&&Number.isFinite(t.min)&&t.min>=0?t.min:void 0,o="number"==typeof t.max&&Number.isFinite(t.max)&&t.max>=0?t.max:void 0;return void 0!==n&&void 0!==o&&n>o&&(n=void 0,o=void 0),void 0!==n&&(e.min=n),void 0!==o&&(e.max=o),e}return{mode:"ratio",value:"number"==typeof t.value&&Number.isFinite(t.value)&&t.value>0?t.value:1}}return{mode:"ratio",value:1}}(o[t]));return{type:"split",nodeId:"string"==typeof n.nodeId&&n.nodeId?n.nodeId:f("nd_",10,()=>Math.floor(0xffffffffff*Math.random()).toString(36)),dir:"col"===n.dir?"col":"row",children:t,sizes:i}}return g()},exports.normalizeGridCells0Based=I,exports.normalizeInstanceSlotFields=w,exports.normalizeKeyString=mn,exports.normalizeMarqueeRect=Pt,exports.normalizePageBindings=d,exports.normalizePageDocument=m,exports.parseComponentVersionKey=function(e){if("string"!=typeof e||!e.includes("@"))return null;const t=e.indexOf("@"),n=e.slice(0,t),o=e.slice(t+1);if(!n)return null;if(o.startsWith("draft:")){const e=o.slice(6),t=e.indexOf(":");if(t<=0)return null;const i=e.slice(0,t),a=e.slice(t+1);return i&&a?{kind:"draft",componentId:n,pageId:i,baseVersion:a,baseVersionKey:`${n}@${a}`}:null}return o?{kind:"published",componentId:n,version:o}:null},exports.parseKeyEvent=fn,exports.provideCanvasContext=ze,exports.registerDesignerHandle=St,exports.registerRendererDiagnostics=a,exports.renderLayoutBoxStyle=E,exports.resolveCanvasSizePx=function(e,t=1920){return"px"===e.mode?e.value:t},exports.resolveFreeSplitMergeTarget=An,exports.resolveMeasuredCanvasSizePx=L,exports.resolveSplitEdge=Rn,exports.subscribeDesignerRegistry=function(e){return wt.add(e),()=>{wt.delete(e)}},exports.subscribeRendererDiagnostics=function(e){return o.add(e),()=>o.delete(e)},exports.unionRects=sn,exports.unregisterDesignerHandle=kt,exports.unregisterRendererDiagnostics=r,exports.useCanvasContext=Ce,exports.validateBindings=function(e,t){var n,o,i;const a=[],r=new Map;for(const t of e.instances)r.set(t.instanceId,t);const c=null==t?void 0:t.currentCanvasId,s=null==t?void 0:t.resolveContract;let d=null,l=null;if(s){d=new Map,l=new Map;for(const t of e.instances){const e=s(t.componentVersionKey);if(d.set(t.instanceId,e),e)for(const n of e.dataInputsDecl)if(n.required){let e=l.get(t.instanceId);e||(e=new Set,l.set(t.instanceId,e)),e.add(n.key)}}}for(const t of e.bindings)if(lo(t)){if(void 0!==c){const e=fo(t),n=ho(t);void 0!==e&&e!==c&&a.push(uo("unsupported-cross-canvas","error",t,{canvasId:e})),void 0!==n&&n!==c&&a.push(uo("unsupported-cross-canvas","error",t,{canvasId:n}))}switch(t.source.kind){case"instanceEvent":{const e=t.source.event,n=r.get(t.source.instanceId);if(n){if(d){const o=d.get(n.instanceId);o&&!o.emitsDecl.some(t=>t.event===e)&&a.push(uo("unknown-source-event","error",t,{instanceId:n.instanceId}))}}else a.push(uo("orphan-binding","warn",t,{instanceId:t.source.instanceId}));break}case"lifecycle":r.get(t.source.instanceId)||a.push(uo("orphan-binding","warn",t,{instanceId:t.source.instanceId}))}switch(t.target.kind){case"instanceMethod":{const e=t.target.method,n=r.get(t.target.instanceId);if(n){if(d){const o=d.get(n.instanceId);o&&!o.methodsDecl.some(t=>t.key===e)&&a.push(uo("unknown-target-method","error",t,{instanceId:n.instanceId}))}}else a.push(uo("orphan-binding","warn",t,{instanceId:t.target.instanceId}));break}case"instanceEmit":{const e=t.target.event,n=r.get(t.target.instanceId);if(n){if(d){const o=d.get(n.instanceId);o&&!o.emitsDecl.some(t=>t.event===e)&&a.push(uo("unknown-target-event","error",t,{instanceId:n.instanceId}))}}else a.push(uo("orphan-binding","warn",t,{instanceId:t.target.instanceId}));break}case"instanceDataInput":{const e=t.target.key,o=r.get(t.target.instanceId);if(o){if(d){const i=d.get(o.instanceId);i&&!i.dataInputsDecl.some(t=>t.key===e)?a.push(uo("unknown-target-data-input","error",t,{instanceId:o.instanceId})):l&&(null==(n=l.get(o.instanceId))||n.delete(e))}}else a.push(uo("orphan-binding","warn",t,{instanceId:t.target.instanceId}));break}}(null==(o=t.schedule)?void 0:o.throttle)&&t.schedule.throttle.windowMs<16&&a.push(uo("schedule-window-too-small","info",t,po(t))),(null==(i=t.schedule)?void 0:i.debounce)&&t.schedule.debounce.windowMs<16&&a.push(uo("schedule-window-too-small","info",t,po(t)))}else a.push(uo("invalid-type-source-kind","error",t,po(t)));if(l)for(const[e,t]of l)for(const n of t){const t={level:"warn",code:"required-data-input-missing",instanceId:e,key:n,message:`Required dataInput "${n}" on instance "${e}" is not fed by any binding`};a.push(t)}return a},exports.validateInstanceTree=Ee,exports.wirePageBindings=We;
|