@changfenhuang/dsh-genui 0.9.9 → 0.10.0
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 +29 -0
- package/README.md +1 -1
- package/README.zh-CN.md +1 -1
- package/SKILL.md +128 -6
- package/lib/assets/echarts-core.js +43 -0
- package/lib/assets/{echarts.js → echarts-full.js} +1 -1
- package/lib/assets/mermaid.js +1 -1
- package/lib/client.js +5 -3
- package/lib/index.js +230 -69
- package/lib/types/client/EChartNode.d.ts +9 -0
- package/lib/types/client/GenuiBlock.d.ts +3 -4
- package/lib/types/client/asset-echarts-core.d.ts +1 -0
- package/lib/types/client/asset-echarts.d.ts +3 -2
- package/lib/types/client/asset-loader.d.ts +2 -2
- package/lib/types/client/blocks/advanced.d.ts +0 -3
- package/lib/types/client/blocks/charts.d.ts +23 -12
- package/lib/types/client/blocks/state.d.ts +5 -3
- package/lib/types/client/echarts-lazy.d.ts +4 -1
- package/lib/types/client/genui-runtime/schema.d.ts +11 -1
- package/lib/types/client/inline.d.ts +29 -0
- package/lib/types/client/spec.d.ts +76 -6
- package/lib/types/plugin/index.d.ts +1 -1
- package/package.json +4 -3
- package/src/client/EChartNode.tsx +233 -19
- package/src/client/GenuiBlock.module.css +895 -145
- package/src/client/GenuiBlock.tsx +31 -23
- package/src/client/PlotBlock.module.css +17 -1
- package/src/client/PlotBlock.tsx +33 -1
- package/src/client/asset-echarts-core.ts +39 -0
- package/src/client/asset-echarts.ts +4 -3
- package/src/client/asset-loader.ts +5 -3
- package/src/client/blocks/advanced.tsx +60 -16
- package/src/client/blocks/charts.tsx +761 -144
- package/src/client/blocks/render-node.tsx +252 -11
- package/src/client/blocks/state.ts +5 -3
- package/src/client/dom-fence.tsx +60 -6
- package/src/client/echarts-lazy.ts +11 -2
- package/src/client/fence-render.tsx +6 -5
- package/src/client/gallery.ts +78 -2
- package/src/client/genui-runtime/schema.ts +45 -11
- package/src/client/guard.ts +161 -23
- package/src/client/index.tsx +14 -3
- package/src/client/inline.ts +73 -0
- package/src/client/mermaid-core.ts +42 -5
- package/src/client/spec.ts +79 -6
- package/src/plugin/index.ts +33 -45
- package/src/plugin/tool.ts +5 -1
- package/tsdown.config.ts +2 -1
package/lib/client.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
window.__ModuleLoader__.load({id:`@changfenhuang/dsh-genui`,factory:e=>{var t={exports:{}},n=t.exports;Object.defineProperty(n,Symbol.toStringTag,{value:`Module`});var r=Object.create,i=Object.defineProperty,a=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,s=Object.getPrototypeOf,c=Object.prototype.hasOwnProperty,l=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(e){throw n=[e],e}},u=(e,t)=>{let n={};for(var r in e)i(n,r,{get:e[r],enumerable:!0});return t||i(n,Symbol.toStringTag,{value:`Module`}),n},d=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var s=o(t),l=0,u=s.length,d;l<u;l++)d=s[l],!c.call(e,d)&&d!==n&&i(e,d,{get:(e=>t[e]).bind(null,d),enumerable:!(r=a(t,d))||r.enumerable});return e},f=(e,t,n)=>(n=e==null?{}:r(s(e)),d(t||!e||!e.__esModule||!c.call(e,`default`)?i(n,`default`,{value:e,enumerable:!0}):n,e));let p=e("@deepseek-ai/dsh-client-ui-primitives");p=f(p,1);let m=e("react"),h=e("react-dom/client"),g=e("react/jsx-runtime"),_=(0,m.createContext)(void 0),v=p.GenuiActionContext??_;function y(){return(0,m.useContext)(v)}let b={copy:`复制`,copied:`复制成功`,collapseAria:`收起差异`,expandAria(e){return`展开其余 ${e} 行差异`},collapse:`收起`,expand(e){return`… 其余 ${e} 行`},files(e){return`${e} 个文件`}},x={copyLabel:`复制`,copiedLabel:`复制成功`},S={copyValue:`复制值`,copyJson:`复制 JSON`,copyPath:`复制属性路径`,copyPrettyJson:`复制格式化 JSON`,copyCompactJson:`复制紧凑 JSON`,copied:`已复制`,copyFailed:`复制失败`,collapseNode:`收起 JSON 节点`,expandNode:`展开 JSON 节点`,copyButtonTitle(e){return`${e};右键查看复制选项`}},C={display:`flex`,flexDirection:`column`,gap:`4px`,padding:`8px 12px`,margin:`4px 0`,borderRadius:`8px`,border:`1px solid rgba(127,127,127,0.35)`,background:`rgba(127,127,127,0.08)`,color:`inherit`,fontSize:`12px`,lineHeight:1.5,fontFamily:`inherit`};var w=class extends m.Component{state={error:null};static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,t){console.error(`[dsh-genui] render failed:`,e,t.componentStack??``)}render(){let{error:e}=this.state;return e===null?this.props.children:(0,g.jsxs)(`div`,{style:C,role:`alert`,"data-genui-error":!0,children:[(0,g.jsxs)(`span`,{style:{fontWeight:600},children:[`⚠️ `,this.props.label??`此界面`,`渲染失败(已隔离,不影响其他内容)`]}),(0,g.jsx)(`span`,{style:{opacity:.75,overflowWrap:`anywhere`},children:e.message})]})}};let T=`@changfenhuang/dsh-genui/GenuiBlock.module.css`;if(typeof document<`u`&&document.querySelector(`style[data-plugin-css=`+JSON.stringify(T)+`]`)===null){let e=document.createElement(`style`);e.dataset.plugin=`@changfenhuang/dsh-genui`,e.dataset.pluginCss=T,e.textContent=`.V1MMBW_block,.V1MMBW_panel{--dsl-g-radius-surface:12px;--dsl-g-radius-control:8px;--dsl-g-radius-pill:999px;--dsl-g-font-display:24px;--dsl-g-font-h1:20px;--dsl-g-font-h2:16px;--dsl-g-font-h3:14px;--dsl-g-font-body:14px;--dsl-g-font-title:13px;--dsl-g-font-meta:12px;--dsl-g-font-data:11px;--dsl-g-gap-lg:16px;--dsl-g-gap-md:12px;--dsl-g-gap-sm:8px;--dsl-g-gap-xs:4px;--dsl-g-border:var(--dsw-alias-border-l1,var(--dsw-alias-border-l2,#ffffff1f));--dsl-g-border-strong:var(--dsw-alias-border-l2,#ffffff1f);--dsl-g-accent:var(--dsw-alias-state-business-primary,#4f8ef7);--dsl-g-accent-soft:color-mix(in srgb, var(--dsl-g-accent) var(--dsl-g-tint), transparent);--dsl-g-hover:color-mix(in srgb, var(--dsw-alias-label-primary) 4%, transparent);--dsl-g-tint:8%;--dsl-g-tint-strong:14%;--dsl-g-font-mono:var(--ds-font-family-code,ui-monospace, "SF Mono", monospace)}.V1MMBW_block{color:var(--dsw-alias-label-primary);margin:8px 0}.V1MMBW_banner{font-size:var(--dsl-g-font-title);letter-spacing:.01em;color:var(--dsw-alias-label-primary);margin-bottom:var(--dsl-g-gap-lg);border-bottom:1px solid var(--dsl-g-border);padding-bottom:10px;font-weight:600}.V1MMBW_col{gap:var(--dsl-g-gap-md);flex-direction:column;display:flex}.V1MMBW_row{align-items:center;gap:var(--dsl-g-gap-md);display:flex}.V1MMBW_row.V1MMBW_wrap{flex-wrap:wrap}.V1MMBW_grid{gap:var(--dsl-g-gap-md);display:grid}.V1MMBW_spacer{flex:1}.V1MMBW_divider{background:var(--dsw-alias-markdown-hr,var(--dsl-g-border));height:1px;margin:var(--dsl-g-gap-xs) 0;border:none}.V1MMBW_card{background:var(--dsw-alias-bg-layer-1,var(--dsw-alias-markdown-code-block));border:1px solid var(--dsl-g-border);border-radius:var(--dsl-g-radius-surface);padding:var(--dsl-g-gap-lg);gap:var(--dsl-g-gap-md);flex-direction:column;display:flex}.V1MMBW_cardTitle{font-size:var(--dsl-g-font-meta);letter-spacing:.02em;color:var(--dsw-alias-label-secondary);font-weight:600}.V1MMBW_text{color:var(--dsw-alias-label-primary)}.V1MMBW_text.V1MMBW_h1{font-size:var(--dsl-g-font-h1);letter-spacing:-.02em;font-weight:700;line-height:1.3}.V1MMBW_text.V1MMBW_h2{font-size:var(--dsl-g-font-h2);letter-spacing:-.01em;font-weight:600;line-height:1.35}.V1MMBW_text.V1MMBW_h3{font-size:var(--dsl-g-font-h3);font-weight:600;line-height:1.5}.V1MMBW_text.V1MMBW_body{font-size:var(--dsl-g-font-body);color:var(--dsw-alias-label-primary);line-height:1.6}.V1MMBW_text.V1MMBW_muted{font-size:var(--dsl-g-font-title);color:var(--dsw-alias-label-secondary);line-height:1.5}.V1MMBW_text.V1MMBW_caption{font-size:var(--dsl-g-font-meta);color:var(--dsw-alias-label-tertiary);letter-spacing:.02em;line-height:1.5}.V1MMBW_text.V1MMBW_center{text-align:center}.V1MMBW_button{border:1px solid var(--dsl-g-border);background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-primary);border-radius:var(--dsl-g-radius-control);padding:8px var(--dsl-g-gap-lg);font-size:var(--dsl-g-font-title);cursor:pointer;text-align:center;font-family:inherit;font-weight:600;line-height:1.4;transition:border-color .15s,filter .15s,background .15s,transform .1s}.V1MMBW_button:hover:not(:disabled){border-color:var(--dsl-g-accent);filter:brightness(1.06)}.V1MMBW_button.V1MMBW_primary:hover:not(:disabled){filter:brightness(1.08)}.V1MMBW_button:active:not(:disabled){filter:brightness(.97);transform:translateY(1px)}.V1MMBW_button:disabled{cursor:not-allowed;opacity:.45;filter:none;box-shadow:none;pointer-events:none}.V1MMBW_button.V1MMBW_primary{background:var(--dsl-g-accent);color:#fff;border:none;box-shadow:inset 0 1px #ffffff24}.V1MMBW_button.V1MMBW_danger{background:color-mix(in srgb, var(--dsw-alias-state-error-primary,#ff6b6b) var(--dsl-g-tint), transparent);border-color:color-mix(in srgb, var(--dsw-alias-state-error-primary,#ff6b6b) 30%, transparent);color:var(--dsw-alias-state-error-primary,#ffb3b3)}.V1MMBW_button.V1MMBW_success{background:color-mix(in srgb, var(--dsw-alias-state-success-primary,#3ecf8e) var(--dsl-g-tint), transparent);border-color:color-mix(in srgb, var(--dsw-alias-state-success-primary,#3ecf8e) 30%, transparent);color:var(--dsw-alias-state-success-secondary,#9fe8c5)}.V1MMBW_button.V1MMBW_ghost{background:0 0}.V1MMBW_button.V1MMBW_full{width:100%}.V1MMBW_button.V1MMBW_small{font-size:var(--dsl-g-font-meta);border-radius:var(--dsl-g-radius-control);padding:4px 12px}.V1MMBW_field{gap:var(--dsl-g-gap-xs);flex-direction:column;display:flex}.V1MMBW_field>span{font-size:var(--dsl-g-font-meta);color:var(--dsw-alias-label-tertiary)}.V1MMBW_input,.V1MMBW_select{background:var(--dsw-alias-bg-base,#17171a);border:1px solid var(--dsl-g-border);border-radius:var(--dsl-g-radius-control);color:var(--dsw-alias-label-primary);font-size:var(--dsl-g-font-title);outline:none;width:100%;padding:8px 12px;font-family:inherit}.V1MMBW_input:focus,.V1MMBW_select:focus{border-color:var(--dsl-g-accent);box-shadow:0 0 0 3px color-mix(in srgb, var(--dsl-g-accent) var(--dsl-g-tint-strong), transparent)}.V1MMBW_input::placeholder{color:var(--dsw-alias-label-caption,#5b6378)}.V1MMBW_checkbox{align-items:center;gap:var(--dsl-g-gap-sm);font-size:var(--dsl-g-font-title);color:var(--dsw-alias-label-secondary);cursor:pointer;display:flex}.V1MMBW_checkbox input{accent-color:var(--dsl-g-accent);width:15px;height:15px}.V1MMBW_checkbox input:focus-visible{outline:2px solid var(--dsl-g-accent);outline-offset:2px;border-radius:4px}.V1MMBW_link{color:var(--dsl-g-accent);font-size:var(--dsl-g-font-title);cursor:pointer;background:0 0;border:none;padding:0;font-family:inherit;text-decoration:none}.V1MMBW_link:hover{text-decoration:underline}.V1MMBW_linkText{color:var(--dsl-g-accent);font-size:var(--dsl-g-font-title);font-family:inherit;text-decoration:none}.V1MMBW_media{padding:var(--dsl-g-gap-md);gap:var(--dsl-g-gap-sm);background:var(--dsw-alias-bg-layer-1,var(--dsw-alias-markdown-code-block));border:1px solid var(--dsl-g-border);border-radius:var(--dsl-g-radius-surface);flex-direction:column;margin:0;display:flex}.V1MMBW_mediaLabel{font-size:var(--dsl-g-font-title);color:var(--dsw-alias-label-primary);font-weight:600}.V1MMBW_mediaPlayer{width:100%;min-width:0;display:block}.V1MMBW_videoPlayer{object-fit:contain;background:#000;max-height:min(70vh,720px)}.V1MMBW_mediaError{font-size:var(--dsl-g-font-title);color:var(--dsw-alias-state-error-primary,#f25a5a)}.V1MMBW_badge{align-items:center;gap:var(--dsl-g-gap-xs);font-size:var(--dsl-g-font-meta);letter-spacing:.01em;border-radius:var(--dsl-g-radius-pill);background:color-mix(in srgb, var(--dsw-alias-label-tertiary) var(--dsl-g-tint), transparent);width:fit-content;color:var(--dsw-alias-label-secondary);border:1px solid var(--dsl-g-border);padding:1px 10px;font-weight:500;line-height:1.5;display:inline-flex}.V1MMBW_badge.V1MMBW_success{background:color-mix(in srgb, var(--dsw-alias-state-success-primary,#3ecf8e) var(--dsl-g-tint), transparent);color:var(--dsw-alias-state-success-secondary,#7fe3b4);border-color:color-mix(in srgb, var(--dsw-alias-state-success-primary,#3ecf8e) 30%, transparent)}.V1MMBW_badge.V1MMBW_warn{background:color-mix(in srgb, var(--dsw-alias-state-warn-primary,#f5b83d) var(--dsl-g-tint), transparent);color:var(--dsw-alias-state-warn-secondary,#f7cf7d);border-color:color-mix(in srgb, var(--dsw-alias-state-warn-primary,#f5b83d) 30%, transparent)}.V1MMBW_badge.V1MMBW_danger{background:color-mix(in srgb, var(--dsw-alias-state-error-primary,#ff6b6b) var(--dsl-g-tint), transparent);color:var(--dsw-alias-state-error-primary,#ff9d9d);border-color:color-mix(in srgb, var(--dsw-alias-state-error-primary,#ff6b6b) 30%, transparent)}.V1MMBW_badge.V1MMBW_accent{background:color-mix(in srgb, var(--dsl-g-accent) var(--dsl-g-tint), transparent);color:var(--dsw-alias-state-business-primary,#9cc3ff);border-color:color-mix(in srgb, var(--dsl-g-accent) 30%, transparent)}.V1MMBW_stat{padding:6px var(--dsl-g-gap-lg);flex-direction:column;gap:2px;display:flex}.V1MMBW_grid>.V1MMBW_stat,.V1MMBW_row>.V1MMBW_stat{border-left:1px solid var(--dsl-g-border)}.V1MMBW_grid>.V1MMBW_stat:first-child,.V1MMBW_row>.V1MMBW_stat:first-child{padding-left:var(--dsl-g-gap-xs);border-left:none}.V1MMBW_statLabel{font-size:var(--dsl-g-font-meta);color:var(--dsw-alias-label-tertiary);letter-spacing:.02em}.V1MMBW_statValue{font-family:var(--dsl-g-font-mono);font-size:var(--dsl-g-font-display);letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--dsw-alias-label-primary);font-weight:600;line-height:1.2}.V1MMBW_statDelta{font-size:var(--dsl-g-font-meta);font-weight:500}.V1MMBW_statDelta.V1MMBW_up{color:var(--dsw-alias-state-success-primary,#22c55e)}.V1MMBW_statDelta.V1MMBW_down{color:var(--dsw-alias-state-error-primary,#f25a5a)}.V1MMBW_progress{gap:var(--dsl-g-gap-sm);flex-direction:column;display:flex}.V1MMBW_progressRow{font-size:var(--dsl-g-font-meta);color:var(--dsw-alias-label-tertiary);justify-content:space-between;display:flex}.V1MMBW_progressRow span:last-child{font-family:var(--dsl-g-font-mono)}.V1MMBW_track{border-radius:var(--dsl-g-radius-pill);background:var(--dsw-alias-bg-layer-1);height:6px;box-shadow:inset 0 0 0 1px var(--dsl-g-border);overflow:hidden}.V1MMBW_fill{border-radius:var(--dsl-g-radius-pill);background:linear-gradient(180deg, color-mix(in srgb, var(--dsl-g-accent) 85%, white), var(--dsl-g-accent));height:100%;transition:width .5s}.V1MMBW_list{flex-direction:column;display:flex}.V1MMBW_li{padding:var(--dsl-g-gap-sm) var(--dsl-g-gap-xs);flex-direction:column;gap:2px;display:flex}.V1MMBW_li+.V1MMBW_li{border-top:1px solid var(--dsl-g-border)}.V1MMBW_li:last-child{border-bottom:none}.V1MMBW_liTitle{font-size:var(--dsl-g-font-title);color:var(--dsw-alias-label-primary);font-weight:600;line-height:1.5}.V1MMBW_liDesc{font-size:var(--dsl-g-font-meta);color:var(--dsw-alias-label-tertiary);line-height:1.5}.V1MMBW_tableWrap{border-radius:var(--dsl-g-radius-control);overscroll-behavior-x:contain;min-width:0;max-width:100%;overflow-x:auto}.V1MMBW_table{border-collapse:collapse;width:100%;font-size:var(--dsl-g-font-title)}.V1MMBW_table th{text-align:left;padding:var(--dsl-g-gap-sm) var(--dsl-g-gap-md);color:var(--dsw-alias-label-tertiary);font-weight:600;font-size:var(--dsl-g-font-meta);border-bottom:1px solid var(--dsl-g-border);white-space:nowrap}.V1MMBW_table td{padding:var(--dsl-g-gap-sm) var(--dsl-g-gap-md);border-bottom:1px solid var(--dsl-g-border);color:var(--dsw-alias-label-secondary);white-space:nowrap;font-variant-numeric:tabular-nums;line-height:1.5}.V1MMBW_table tr:last-child td{border-bottom:none}.V1MMBW_table tbody tr:hover{background:var(--dsl-g-hover)}.V1MMBW_table th.V1MMBW_thNum,.V1MMBW_table td.V1MMBW_tdNum{text-align:right}.V1MMBW_thSort{color:inherit;font:inherit;font-weight:inherit;cursor:pointer;text-align:left;background:0 0;border:none;margin:0;padding:0;transition:color .12s}.V1MMBW_table th.V1MMBW_thNum .V1MMBW_thSort{text-align:right;width:100%}.V1MMBW_thSort:hover,.V1MMBW_table th[aria-sort]:not([aria-sort=none]) .V1MMBW_thSort{color:var(--dsw-alias-label-primary)}.V1MMBW_thSortMark{color:var(--dsl-g-accent)}.V1MMBW_thSort:focus-visible{outline:2px solid var(--dsl-g-accent);outline-offset:1px;border-radius:var(--dsl-g-radius-control)}.V1MMBW_chart{gap:var(--dsl-g-gap-xs);flex-direction:column;display:flex}.V1MMBW_chartPlot{align-items:flex-end;gap:var(--dsl-g-gap-sm);height:132px;display:flex;position:relative}.V1MMBW_baseline{background:var(--dsl-g-border-strong);pointer-events:none;height:1px;position:absolute;bottom:0;left:0;right:0}.V1MMBW_gridline{background:var(--dsw-alias-border-l1,#ffffff0f);pointer-events:none;height:1px;position:absolute;left:0;right:0}.V1MMBW_chartLabels{gap:var(--dsl-g-gap-sm);display:flex}.V1MMBW_chartLabels>span{flex:1;min-width:0}.V1MMBW_barCol{justify-content:flex-end;gap:var(--dsl-g-gap-xs);flex-direction:column;flex:1;min-width:0;height:100%;display:flex}.V1MMBW_barValue{font-family:var(--dsl-g-font-mono);font-size:var(--dsl-g-font-data);font-variant-numeric:tabular-nums;color:var(--dsw-alias-label-secondary);text-align:center;line-height:1.2}.V1MMBW_barFill{background:var(--dsl-g-accent);border-radius:4px 4px 2px 2px;min-height:4px;transition:height .6s,filter .15s}.V1MMBW_barFill:hover{filter:brightness(1.18)}.V1MMBW_barLabel{font-size:var(--dsl-g-font-meta);color:var(--dsw-alias-label-tertiary);text-align:center;white-space:nowrap;text-overflow:ellipsis;line-height:1.5;overflow:hidden}.V1MMBW_tabs{gap:var(--dsl-g-gap-md);flex-direction:column;display:flex}.V1MMBW_tabBar{gap:var(--dsl-g-gap-xs);border-bottom:1px solid var(--dsl-g-border);display:flex}.V1MMBW_tab{color:var(--dsw-alias-label-tertiary);font-size:var(--dsl-g-font-title);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;padding:6px 12px;font-family:inherit;font-weight:600;line-height:1.5;transition:color .15s,border-bottom-color .15s}.V1MMBW_tab:hover{color:var(--dsw-alias-label-secondary)}.V1MMBW_tabActive{color:var(--dsw-alias-label-primary);border-bottom-color:var(--dsl-g-accent)}.V1MMBW_avatar{width:32px;height:32px;font-size:var(--dsl-g-font-title);color:#fff;border:1px solid #ffffff24;border-radius:50%;flex-shrink:0;place-items:center;font-weight:700;display:grid;box-shadow:inset 0 1px #ffffff29}.V1MMBW_callout{border-radius:var(--dsl-g-radius-control);border:1px solid var(--dsl-g-border);font-size:var(--dsl-g-font-title);background:var(--dsw-alias-bg-layer-1,var(--dsw-alias-markdown-code-block));flex-direction:column;gap:2px;padding:10px 14px;line-height:1.6;display:flex}.V1MMBW_calloutInfo{background:color-mix(in srgb, var(--dsl-g-accent) var(--dsl-g-tint), transparent)}.V1MMBW_calloutSuccess{background:color-mix(in srgb, var(--dsw-alias-state-success-primary,#3ecf8e) var(--dsl-g-tint), transparent)}.V1MMBW_calloutWarning{background:color-mix(in srgb, var(--dsw-alias-state-warn-primary,#f5b83d) var(--dsl-g-tint), transparent)}.V1MMBW_calloutError{background:color-mix(in srgb, var(--dsw-alias-state-error-primary,#ff6b6b) var(--dsl-g-tint), transparent)}.V1MMBW_calloutTitle{font-weight:600;font-size:var(--dsl-g-font-meta);letter-spacing:.02em;color:var(--dsw-alias-label-secondary);align-items:center;gap:6px;display:flex}.V1MMBW_calloutTitle:before{content:"";background:var(--dsw-alias-label-caption,var(--dsw-alias-label-tertiary));border-radius:50%;width:6px;height:6px}.V1MMBW_calloutInfo .V1MMBW_calloutTitle:before{background:var(--dsl-g-accent)}.V1MMBW_calloutSuccess .V1MMBW_calloutTitle:before{background:var(--dsw-alias-state-success-primary,#3ecf8e)}.V1MMBW_calloutWarning .V1MMBW_calloutTitle:before{background:var(--dsw-alias-state-warn-primary,#f5b83d)}.V1MMBW_calloutError .V1MMBW_calloutTitle:before{background:var(--dsw-alias-state-error-primary,#ff6b6b)}.V1MMBW_calloutBody{color:var(--dsw-alias-label-secondary)}.V1MMBW_steps{gap:var(--dsl-g-gap-sm);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.V1MMBW_step{gap:var(--dsl-g-gap-md);align-items:flex-start;display:flex}.V1MMBW_stepMarker{width:24px;height:24px;font-size:var(--dsl-g-font-meta);background:var(--dsw-alias-bg-layer-1);border:1px solid var(--dsl-g-border);color:var(--dsw-alias-label-tertiary);border-radius:50%;flex-shrink:0;place-items:center;font-weight:700;display:grid}.V1MMBW_stepDone .V1MMBW_stepMarker{background:var(--dsw-alias-state-success-primary,#3ecf8e);color:#fff;border-color:#0000;font-size:13px}.V1MMBW_stepActive .V1MMBW_stepMarker{background:color-mix(in srgb, var(--dsl-g-accent) var(--dsl-g-tint-strong), transparent);border-color:var(--dsl-g-accent);color:var(--dsl-g-accent)}.V1MMBW_stepContent{flex-direction:column;gap:2px;padding-top:3px;display:flex}.V1MMBW_stepTitle{font-size:var(--dsl-g-font-title);color:var(--dsw-alias-label-primary);font-weight:600;line-height:1.5}.V1MMBW_stepDesc{font-size:var(--dsl-g-font-meta);color:var(--dsw-alias-label-tertiary);line-height:1.5}.V1MMBW_keyvalue{flex-direction:column;margin:0;display:flex}.V1MMBW_kvRow{gap:var(--dsl-g-gap-md);font-size:var(--dsl-g-font-title);padding:6px 0;display:flex}.V1MMBW_kvRow+.V1MMBW_kvRow{border-top:1px solid var(--dsl-g-border)}.V1MMBW_kvRow:last-child{border-bottom:none}.V1MMBW_kvKey{width:96px;color:var(--dsw-alias-label-tertiary);flex-shrink:0;font-weight:600}.V1MMBW_kvValue{color:var(--dsw-alias-label-primary);word-break:break-word;margin:0;line-height:1.5}.V1MMBW_jsonScalar{font-family:var(--dsl-g-font-mono);font-size:var(--dsl-g-font-title);color:var(--dsw-alias-label-secondary)}.V1MMBW_lineChart{gap:var(--dsl-g-gap-sm);flex-direction:column;display:flex}.V1MMBW_linePath{fill:none;stroke:var(--dsl-g-accent);stroke-width:2px;stroke-linejoin:round;stroke-linecap:round}.V1MMBW_lineDot{fill:var(--dsl-g-accent);transition:filter .15s}.V1MMBW_lineDot:hover{filter:brightness(1.3)}.V1MMBW_lineGrid{stroke:var(--dsw-alias-border-l1,#ffffff12);stroke-width:1px}.V1MMBW_lineGridAxis{stroke:var(--dsl-g-border-strong);stroke-width:1px}.V1MMBW_lineTick{fill:var(--dsw-alias-label-tertiary);font-family:var(--dsl-g-font-mono);font-size:var(--dsl-g-font-data)}.V1MMBW_lineLabels{justify-content:space-between;display:flex}.V1MMBW_groupedBars{gap:var(--dsl-g-gap-xs);align-items:flex-end;width:100%;height:100%;display:flex}.V1MMBW_groupedBar{flex-direction:column;flex:1;justify-content:flex-end;align-items:center;gap:2px;min-width:0;height:100%;display:flex}.V1MMBW_groupValue{font-family:var(--dsl-g-font-mono);font-size:var(--dsl-g-font-data);font-variant-numeric:tabular-nums;color:var(--dsw-alias-label-secondary);text-overflow:ellipsis;max-width:100%;line-height:1.2;overflow:hidden}.V1MMBW_groupedFill{background:var(--dsl-g-accent);border-radius:4px 4px 2px 2px;flex:none;width:100%;min-height:3px;transition:filter .15s}.V1MMBW_groupedFill:hover{filter:brightness(1.18)}.V1MMBW_donut{align-items:center;gap:var(--dsl-g-gap-lg);display:flex}.V1MMBW_donutTrack{stroke:var(--dsw-alias-border-l1,#ffffff14)}.V1MMBW_donutSeg{transition:filter .15s}.V1MMBW_donutSeg:hover{filter:brightness(1.18)}.V1MMBW_donutTotal{fill:var(--dsw-alias-label-primary);font-size:var(--dsl-g-font-h2);font-weight:700}.V1MMBW_donutTotalLabel{fill:var(--dsw-alias-label-tertiary);font-size:10px}.V1MMBW_donutLegend{gap:var(--dsl-g-gap-xs);font-size:var(--dsl-g-font-meta);color:var(--dsw-alias-label-secondary);flex-direction:column;line-height:1.5;display:flex}.V1MMBW_fieldGroup{gap:var(--dsl-g-gap-sm);flex-direction:column;display:flex}.V1MMBW_fieldLabel{font-size:var(--dsl-g-font-meta);color:var(--dsw-alias-label-tertiary)}.V1MMBW_radio{align-items:center;gap:var(--dsl-g-gap-sm);font-size:var(--dsl-g-font-title);color:var(--dsw-alias-label-secondary);cursor:pointer;line-height:1.5;display:flex}.V1MMBW_radio input{accent-color:var(--dsl-g-accent)}.V1MMBW_radio input:focus-visible{outline:2px solid var(--dsl-g-accent);outline-offset:2px;border-radius:50%}.V1MMBW_submitRow{align-items:center;gap:var(--dsl-g-gap-md);margin-top:2px;display:flex}.V1MMBW_submit{align-self:flex-start}.V1MMBW_submitHint{font-size:var(--dsl-g-font-meta);color:var(--dsw-alias-label-tertiary)}.V1MMBW_btnSent{margin-left:var(--dsl-g-gap-sm);font-size:var(--dsl-g-font-meta);color:var(--dsw-alias-state-success-primary,#3ecf8e);font-weight:600}.V1MMBW_gradeWrap{gap:var(--dsl-g-gap-md);flex-direction:column;display:flex}.V1MMBW_gradeScore{align-items:baseline;gap:var(--dsl-g-gap-sm);display:flex}.V1MMBW_gradeScoreValue{font-size:var(--dsl-g-font-display);color:var(--dsw-alias-label-primary);font-weight:700;line-height:1.2}.V1MMBW_gradeScoreLabel{font-size:var(--dsl-g-font-meta);color:var(--dsw-alias-label-tertiary)}.V1MMBW_gradeList{gap:var(--dsl-g-gap-sm);flex-direction:column;display:flex}.V1MMBW_gradeItem{font-size:var(--dsl-g-font-title);padding:var(--dsl-g-gap-sm) 12px;border-radius:var(--dsl-g-radius-control);border:1px solid var(--dsl-g-border);background:var(--dsw-alias-bg-layer-1);grid-template-columns:auto minmax(0,1fr);align-items:baseline;gap:6px 10px;line-height:1.5;display:grid}.V1MMBW_gradeItemOk{border-color:color-mix(in srgb, var(--dsw-alias-state-success-primary,#3ecf8e) 30%, transparent)}.V1MMBW_gradeItemNo{border-color:color-mix(in srgb, var(--dsw-alias-state-error-primary,#ff6b6b) 30%, transparent)}.V1MMBW_gradeQ{overflow-wrap:anywhere;color:var(--dsw-alias-label-primary);grid-column:1/-1;margin-bottom:8px;font-weight:600}.V1MMBW_gradeTag{font-weight:700}.V1MMBW_gradeItemOk .V1MMBW_gradeTag{color:var(--dsw-alias-state-success-primary,#3ecf8e)}.V1MMBW_gradeItemNo .V1MMBW_gradeTag{color:var(--dsw-alias-state-error-primary,#ff6b6b)}.V1MMBW_gradeAns{overflow-wrap:anywhere;color:var(--dsw-alias-label-secondary)}.V1MMBW_gradeRight{color:var(--dsw-alias-state-error-primary,#ffb3b3)}.V1MMBW_gradeExp{overflow-wrap:anywhere;font-size:var(--dsl-g-font-meta);color:var(--dsw-alias-label-tertiary);grid-column:1/-1;line-height:1.5}.V1MMBW_switchRow{justify-content:space-between;align-items:center;gap:var(--dsl-g-gap-md);cursor:pointer;display:flex}.V1MMBW_switchRow:focus-within .V1MMBW_switch{box-shadow:0 0 0 3px color-mix(in srgb, var(--dsl-g-accent) var(--dsl-g-tint-strong), transparent)}.V1MMBW_switchLabel{font-size:var(--dsl-g-font-title);color:var(--dsw-alias-label-primary);line-height:1.5}.V1MMBW_switch{border-radius:var(--dsl-g-radius-pill);border:1px solid var(--dsl-g-border);background:var(--dsw-alias-bg-base,#17171a);width:38px;height:22px;transition:background .2s;position:relative}.V1MMBW_switchOn{background:var(--dsl-g-accent);border-color:#0000}.V1MMBW_switchKnob{background:#fff;border-radius:50%;width:14px;height:14px;transition:left .2s;position:absolute;top:3px;left:3px;box-shadow:0 1px 2px #0000004d}.V1MMBW_switchOn .V1MMBW_switchKnob{left:19px}.V1MMBW_sliderRow{align-items:center;gap:var(--dsl-g-gap-md);width:100%;display:flex}.V1MMBW_sliderInput{min-width:0;accent-color:var(--dsl-g-accent);flex:1}.V1MMBW_sliderInput:focus-visible{outline:2px solid var(--dsl-g-accent);outline-offset:2px;border-radius:4px}.V1MMBW_sliderValue{text-align:right;min-width:44px;font-family:var(--dsl-g-font-mono);font-size:var(--dsl-g-font-data);color:var(--dsw-alias-label-primary)}.V1MMBW_textarea{background:var(--dsw-alias-bg-base,#17171a);border:1px solid var(--dsl-g-border);border-radius:var(--dsl-g-radius-control);width:100%;color:var(--dsw-alias-label-primary);padding:var(--dsl-g-gap-sm) 12px;font-size:var(--dsl-g-font-title);resize:vertical;outline:none;font-family:inherit;line-height:1.5}.V1MMBW_textarea:focus{border-color:var(--dsl-g-accent);box-shadow:0 0 0 3px color-mix(in srgb, var(--dsl-g-accent) var(--dsl-g-tint-strong), transparent)}.V1MMBW_accordion{border:1px solid var(--dsl-g-border);border-radius:var(--dsl-g-radius-surface);flex-direction:column;display:flex;overflow:hidden}.V1MMBW_accItem{border-bottom:1px solid var(--dsl-g-border)}.V1MMBW_accItem:last-child{border-bottom:none}.V1MMBW_accHead{justify-content:space-between;align-items:center;gap:var(--dsl-g-gap-sm);background:var(--dsw-alias-bg-layer-1);width:100%;color:var(--dsw-alias-label-primary);font-size:var(--dsl-g-font-title);cursor:pointer;border:none;padding:10px 14px;font-family:inherit;font-weight:600;line-height:1.5;transition:background .15s,color .15s;display:flex}.V1MMBW_accHead:hover{background:color-mix(in srgb, var(--dsw-alias-label-primary) 5%, var(--dsw-alias-bg-layer-1))}.V1MMBW_accHead:active{color:var(--dsl-g-accent)}.V1MMBW_accChevron{color:var(--dsw-alias-label-tertiary);transition:transform .2s}.V1MMBW_accBody{padding:var(--dsl-g-gap-md) 14px;gap:var(--dsl-g-gap-sm);background:var(--dsw-alias-bg-base,#17171a);flex-direction:column;display:flex}.V1MMBW_copyChip{border:1px solid var(--dsl-g-border);background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-primary);border-radius:var(--dsl-g-radius-control);font-size:var(--dsl-g-font-title);cursor:pointer;width:fit-content;padding:6px 14px;font-family:inherit;font-weight:600;transition:all .15s}.V1MMBW_copyChip:hover{border-color:var(--dsl-g-accent)}.V1MMBW_copyChip:active{transform:translateY(1px)}.V1MMBW_copyChipDone{border-color:var(--dsw-alias-state-success-primary,#3ecf8e);color:var(--dsw-alias-state-success-primary,#3ecf8e)}.V1MMBW_mermaid{padding:var(--dsl-g-gap-xs) 0;overflow-x:auto}.V1MMBW_mermaid svg{max-width:100%;height:auto}.V1MMBW_mermaidFallback{gap:var(--dsl-g-gap-sm);flex-direction:column;display:flex}.V1MMBW_mermaidFallback pre{padding:var(--dsl-g-gap-sm) 10px;background:var(--dsw-alias-bg-base,#17171a);border:1px solid var(--dsl-g-border);border-radius:var(--dsl-g-radius-control);font-family:var(--dsl-g-font-mono);font-size:var(--dsl-g-font-meta);margin:0;overflow-x:auto}.V1MMBW_mermaidErr{color:var(--dsw-alias-state-error-primary,#ff6b6b);font-size:var(--dsl-g-font-meta)}.V1MMBW_mermaidHint{color:var(--dsw-alias-label-tertiary);font-size:var(--dsl-g-font-meta)}.V1MMBW_scene3dWrap{gap:var(--dsl-g-gap-sm);flex-direction:column;display:flex}.V1MMBW_echartWrap{gap:var(--dsl-g-gap-sm);padding:var(--dsl-g-gap-md);background:var(--dsw-alias-bg-layer-1,var(--dsw-alias-markdown-code-block));border:1px solid var(--dsl-g-border);border-radius:var(--dsl-g-radius-surface);flex-direction:column;display:flex}.V1MMBW_echartTitle{font-size:var(--dsl-g-font-title);color:var(--dsw-alias-label-primary);font-weight:600}.V1MMBW_echartCanvas{width:100%;min-height:0}.V1MMBW_echartHint{color:var(--dsw-alias-label-tertiary);font-size:var(--dsl-g-font-meta)}.V1MMBW_echartFallback{gap:var(--dsl-g-gap-sm);padding:var(--dsl-g-gap-md);background:var(--dsw-alias-bg-layer-1,var(--dsw-alias-markdown-code-block));border:1px solid var(--dsl-g-border);border-radius:var(--dsl-g-radius-surface);flex-direction:column;display:flex}.V1MMBW_echartErr{color:var(--dsw-alias-state-error-primary,#ff6b6b);font-size:var(--dsl-g-font-meta)}.V1MMBW_scene3dTitle{font-size:var(--dsl-g-font-title);color:var(--dsw-alias-label-primary);font-weight:700}.V1MMBW_scene3dCanvas{border-radius:var(--dsl-g-radius-surface);background:var(--dsw-alias-bg-base,#17171a);border:1px solid var(--dsl-g-border);height:240px;overflow:hidden}.V1MMBW_scene3dCanvas canvas{display:block}.V1MMBW_scene3dHint{color:var(--dsw-alias-label-tertiary);font-size:var(--dsl-g-font-meta)}.V1MMBW_timeline{flex-direction:column;display:flex}.V1MMBW_tlItem{gap:var(--dsl-g-gap-md);display:flex}.V1MMBW_tlRail{flex-direction:column;flex-shrink:0;align-items:center;width:12px;display:flex}.V1MMBW_tlDot{background:var(--dsl-g-accent);width:10px;height:10px;box-shadow:0 0 0 3px color-mix(in srgb, var(--dsl-g-accent) var(--dsl-g-tint-strong), transparent);border-radius:50%;flex-shrink:0;margin-top:4px}.V1MMBW_tlLine{background:var(--dsl-g-border);flex:1;width:2px;margin:2px 0}.V1MMBW_tlBody{padding-bottom:var(--dsl-g-gap-lg);flex:1;min-width:0}.V1MMBW_tlHead{align-items:baseline;gap:var(--dsl-g-gap-md);display:flex}.V1MMBW_tlTitle{font-size:var(--dsl-g-font-title);color:var(--dsw-alias-label-primary);font-weight:600;line-height:1.5}.V1MMBW_tlTime{font-size:var(--dsl-g-font-meta);color:var(--dsw-alias-label-tertiary);white-space:nowrap;margin-left:auto}.V1MMBW_tlDesc{font-size:var(--dsl-g-font-title);color:var(--dsw-alias-label-secondary);margin-top:2px;line-height:1.5}.V1MMBW_fileTree{font-family:var(--dsl-g-font-mono);font-size:var(--dsl-g-font-meta);overscroll-behavior-x:contain;flex-direction:column;min-width:0;max-width:100%;display:flex;overflow-x:auto}.V1MMBW_ftRow{align-items:center;gap:var(--dsl-g-gap-sm);padding:3px var(--dsl-g-gap-xs);border-radius:var(--dsl-g-radius-control);display:flex}.V1MMBW_ftRow:hover{background:var(--dsw-alias-bg-layer-1)}.V1MMBW_ftIcon{text-align:center;width:13px;font-size:10px;font-family:var(--dsl-g-font-mono);color:var(--dsw-alias-label-caption,var(--dsw-alias-label-tertiary));flex-shrink:0;line-height:1}.V1MMBW_ftIconDir{color:var(--dsl-g-accent);font-size:11px}.V1MMBW_ftName{color:var(--dsw-alias-label-secondary);white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}.V1MMBW_ftDir{color:var(--dsw-alias-label-primary);font-weight:600}.V1MMBW_ftNameBtn{align-items:center;gap:var(--dsl-g-gap-sm);min-width:0;max-width:100%;font-family:inherit;font-size:var(--dsl-g-font-body);cursor:default;text-align:left;background:0 0;border:none;padding:0;display:inline-flex}button.V1MMBW_ftNameBtn[aria-expanded]{cursor:pointer}.V1MMBW_ftNameBtn:focus-visible{outline:2px solid var(--dsl-g-accent);outline-offset:1px;border-radius:var(--dsl-g-radius-control)}.V1MMBW_breadcrumb{align-items:center;gap:var(--dsl-g-gap-xs);font-size:var(--dsl-g-font-title);flex-wrap:wrap;display:flex}.V1MMBW_bcItem{align-items:center;gap:var(--dsl-g-gap-xs);display:inline-flex}.V1MMBW_bcText{color:var(--dsw-alias-label-secondary);cursor:pointer}.V1MMBW_bcText:hover{color:var(--dsl-g-accent)}.V1MMBW_bcCurrent{color:var(--dsw-alias-label-primary);cursor:default;font-weight:600}.V1MMBW_bcSep{color:var(--dsw-alias-label-caption,var(--dsw-alias-label-tertiary))}@keyframes V1MMBW_genuiReveal{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes V1MMBW_genuiPopIn{0%{opacity:0;transform:translateY(2px)}to{opacity:1;transform:translateY(0)}}.V1MMBW_reveal{animation:.45s cubic-bezier(.22,1,.36,1) backwards V1MMBW_genuiReveal}.V1MMBW_btnSent{animation:.2s backwards V1MMBW_genuiPopIn}@media (prefers-reduced-motion:reduce){.V1MMBW_reveal,.V1MMBW_btnSent{animation:none}.V1MMBW_fill,.V1MMBW_barFill,.V1MMBW_switch,.V1MMBW_switchKnob{transition:none}}.V1MMBW_tableWrap,.V1MMBW_fileTree,.V1MMBW_mermaid,.V1MMBW_panelBody{scrollbar-width:thin;scrollbar-color:var(--dsw-alias-border-l2,#ffffff38) transparent}.V1MMBW_tableWrap::-webkit-scrollbar,.V1MMBW_fileTree::-webkit-scrollbar,.V1MMBW_mermaid::-webkit-scrollbar,.V1MMBW_panelBody::-webkit-scrollbar{width:8px;height:8px}.V1MMBW_tableWrap::-webkit-scrollbar-thumb,.V1MMBW_fileTree::-webkit-scrollbar-thumb,.V1MMBW_mermaid::-webkit-scrollbar-thumb,.V1MMBW_panelBody::-webkit-scrollbar-thumb{background:var(--dsw-alias-border-l2,#ffffff38);border-radius:4px}.V1MMBW_tableWrap::-webkit-scrollbar-track,.V1MMBW_fileTree::-webkit-scrollbar-track,.V1MMBW_mermaid::-webkit-scrollbar-track,.V1MMBW_panelBody::-webkit-scrollbar-track{background:0 0}.V1MMBW_visuallyHidden{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.V1MMBW_quiz{gap:var(--dsl-g-gap-md);padding:var(--dsl-g-gap-lg);background:var(--dsw-alias-bg-layer-1);border:1px solid var(--dsl-g-border);border-radius:var(--dsl-g-radius-surface);flex-direction:column;display:flex}.V1MMBW_quizQuestion{font-size:var(--dsl-g-font-body);color:var(--dsw-alias-label-primary);font-weight:600;line-height:1.6}.V1MMBW_quizOptions{gap:var(--dsl-g-gap-sm);flex-direction:column;display:flex}.V1MMBW_quizOpt{align-items:center;gap:var(--dsl-g-gap-sm);text-align:left;background:var(--dsw-alias-bg-base,#17171a);border:1px solid var(--dsl-g-border);border-radius:var(--dsl-g-radius-control);font-size:var(--dsl-g-font-title);color:var(--dsw-alias-label-secondary);cursor:pointer;padding:10px 14px;font-family:inherit;line-height:1.5;transition:border-color .15s,background .15s;display:flex}.V1MMBW_quizOpt:hover:not(:disabled){border-color:var(--dsl-g-accent);background:var(--dsl-g-accent-soft)}.V1MMBW_quizOpt:focus-visible,.V1MMBW_button:focus-visible,.V1MMBW_tab:focus-visible,.V1MMBW_accHead:focus-visible,.V1MMBW_copyChip:focus-visible,.V1MMBW_link:focus-visible,.V1MMBW_quizRetry:focus-visible,.V1MMBW_resetBtn:focus-visible,.V1MMBW_playBtn:focus-visible,.V1MMBW_bcText:focus-visible{outline:2px solid var(--dsl-g-accent);outline-offset:1px}.V1MMBW_quizOpt:disabled{cursor:default;opacity:.85}.V1MMBW_quizOptCorrect{align-items:center;gap:var(--dsl-g-gap-sm);text-align:left;background:color-mix(in srgb, var(--dsw-alias-state-success-primary,#3ecf8e) var(--dsl-g-tint), transparent);border:1px solid color-mix(in srgb, var(--dsw-alias-state-success-primary,#3ecf8e) 40%, transparent);border-radius:var(--dsl-g-radius-control);font-size:var(--dsl-g-font-title);color:var(--dsw-alias-state-success-primary,#3ecf8e);padding:10px 14px;font-family:inherit;font-weight:600;line-height:1.5;display:flex}.V1MMBW_quizOptWrong{align-items:center;gap:var(--dsl-g-gap-sm);text-align:left;background:color-mix(in srgb, var(--dsw-alias-state-error-primary,#ff6b6b) var(--dsl-g-tint), transparent);border:1px solid color-mix(in srgb, var(--dsw-alias-state-error-primary,#ff6b6b) 30%, transparent);border-radius:var(--dsl-g-radius-control);font-size:var(--dsl-g-font-title);color:var(--dsw-alias-state-error-primary,#ff6b6b);padding:10px 14px;font-family:inherit;font-weight:600;line-height:1.5;display:flex}.V1MMBW_quizOptReveal{align-items:center;gap:var(--dsl-g-gap-sm);text-align:left;background:color-mix(in srgb, var(--dsw-alias-state-success-primary,#3ecf8e) var(--dsl-g-tint), transparent);border:1px dashed color-mix(in srgb, var(--dsw-alias-state-success-primary,#3ecf8e) 40%, transparent);border-radius:var(--dsl-g-radius-control);font-size:var(--dsl-g-font-title);color:var(--dsw-alias-state-success-primary,#3ecf8e);padding:10px 14px;font-family:inherit;line-height:1.5;display:flex}.V1MMBW_quizMarker{text-align:center;width:16px;font-weight:700}.V1MMBW_quizResult{gap:var(--dsl-g-gap-sm);flex-direction:column;display:flex}.V1MMBW_quizCorrectMsg{font-size:var(--dsl-g-font-title);color:var(--dsw-alias-state-success-primary,#3ecf8e);font-weight:600}.V1MMBW_quizWrongMsg{font-size:var(--dsl-g-font-title);color:var(--dsw-alias-state-error-primary,#ff6b6b);font-weight:600}.V1MMBW_quizFeedback{font-size:var(--dsl-g-font-meta);color:var(--dsw-alias-label-secondary);margin-top:3px;font-weight:400;line-height:1.5}.V1MMBW_quizExplanation{font-size:var(--dsl-g-font-meta);color:var(--dsw-alias-label-tertiary);padding:var(--dsl-g-gap-sm) 10px;border-top:1px solid var(--dsl-g-border);line-height:1.6}.V1MMBW_quizRetry{border:1px solid var(--dsl-g-border);width:fit-content;color:var(--dsw-alias-label-secondary);border-radius:var(--dsl-g-radius-control);font-size:var(--dsl-g-font-title);cursor:pointer;background:0 0;padding:6px 14px;font-family:inherit}.V1MMBW_quizRetry:hover{border-color:var(--dsl-g-accent);color:var(--dsl-g-accent)}.V1MMBW_tool{margin:4px 0}.V1MMBW_toolFallback{align-items:center;gap:var(--dsl-g-gap-md);padding:var(--dsl-g-gap-sm) 12px;border:1px solid var(--dsl-g-border);border-radius:var(--dsl-g-radius-surface);background:var(--dsw-alias-bg-layer-1,var(--dsw-alias-markdown-code-block));font-size:var(--dsl-g-font-title);display:flex}.V1MMBW_toolFallbackTitle{color:var(--dsw-alias-label-primary);font-weight:600}.V1MMBW_toolFallbackMeta{color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.V1MMBW_panel{width:calc(100% - var(--dsh-composer-side-clearance,16px) * 2 - var(--dsh-composer-dock-inset,8px) * 4);max-width:calc(var(--dsh-composer-card-max-width,780px) - var(--dsh-composer-dock-inset,8px) * 4);border:1px solid color-mix(in srgb, var(--dsw-alias-state-business-primary,#4f8ef7) 35%, transparent);background:var(--dsw-alias-bg-layer-1,#ffffff0a);border-radius:12px;margin:10px auto 2px;overflow:hidden}.V1MMBW_panelHeader{border-bottom:1px solid var(--dsw-alias-border-l1,#7f7f7f40);align-items:center;display:flex}.V1MMBW_panelToggle{min-width:0;color:inherit;font:inherit;font-size:var(--dsl-g-font-title);cursor:pointer;background:0 0;border:0;flex:auto;align-items:center;gap:10px;padding:9px 14px;display:flex}.V1MMBW_panelToggle:hover{background:#ffffff0a}.V1MMBW_panelClose{width:26px;height:26px;color:inherit;cursor:pointer;opacity:.65;background:0 0;border:0;border-radius:6px;flex:none;justify-content:center;align-items:center;margin-right:8px;padding:0;font-size:13px;line-height:1;display:flex}.V1MMBW_panelClose:hover{opacity:1;background:#ffffff14}.V1MMBW_panelClose:focus-visible{outline:1px solid var(--dsw-alias-state-business-primary,#4f8ef7);outline-offset:1px;opacity:1}.V1MMBW_panelTpl{border:1px solid var(--dsw-alias-border-l1,#ffffff1f);height:26px;color:var(--dsw-alias-label-secondary,#fff9);cursor:pointer;opacity:.85;background:0 0;border-radius:8px;flex:none;align-items:center;margin-right:4px;padding:0 10px;font-size:12px;line-height:1.5;display:flex}.V1MMBW_panelTpl:hover{opacity:1;background:#ffffff14}.V1MMBW_panelTplActive{border-color:var(--dsw-alias-state-business-primary,#4f8ef7);color:var(--dsw-alias-state-business-primary,#4f8ef7)}.V1MMBW_panelOnboard .V1MMBW_panelHeader{cursor:default}.V1MMBW_panelOnboardText{min-width:0;color:var(--dsw-alias-label-secondary,#fff9);flex:1;padding:0 8px;font-size:12px;line-height:1.5}.V1MMBW_panelFlash{border-top:1px solid var(--dsw-alias-border-l1,#ffffff1f);color:var(--dsw-alias-state-success-primary,#6ccb5f);background:color-mix(in srgb, var(--dsw-alias-state-success-primary,#6ccb5f) 8%, transparent);padding:6px 12px;font-size:12px;line-height:1.5}.V1MMBW_panelHint{border-top:1px solid var(--dsw-alias-border-l1,#ffffff1f);color:var(--dsw-alias-state-business-primary,#4f8ef7);background:color-mix(in srgb, var(--dsw-alias-state-business-primary,#4f8ef7) 8%, transparent);padding:6px 14px;font-size:12px;line-height:1.5}.V1MMBW_achToasts{z-index:9999;pointer-events:none;flex-direction:column;gap:8px;display:flex;position:fixed;bottom:16px;right:16px}.V1MMBW_achToast{border:1px solid color-mix(in srgb, var(--dsw-alias-state-business-primary,#4f8ef7) 35%, transparent);border-radius:var(--dsl-g-radius-surface,12px);background:var(--dsw-alias-bg-layer-2,#000000d9);align-items:flex-start;gap:10px;width:300px;padding:10px 12px;display:flex;box-shadow:0 8px 24px #00000040}.V1MMBW_achToastBadge{flex:none;font-size:18px;line-height:1.2}.V1MMBW_achToastBody{min-width:0}.V1MMBW_achToastName{color:var(--dsw-alias-state-business-primary,#4f8ef7);font-size:13px;font-weight:600}.V1MMBW_achToastDesc{color:var(--dsw-alias-label-secondary,#fff9);margin-top:2px;font-size:12px;line-height:1.5}.V1MMBW_panelBadge{padding:0 var(--dsl-g-gap-sm);background:color-mix(in srgb, var(--dsw-alias-state-business-primary,#4f8ef7) var(--dsl-g-tint-strong), transparent);color:var(--dsw-alias-state-business-primary,#7ba8ff);letter-spacing:.04em;border-radius:6px;flex:none;font-size:11px;font-weight:600;line-height:1.6}.V1MMBW_panelTitle{color:var(--dsw-alias-label-primary,#e6e6e6);text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.V1MMBW_panelChevron{color:var(--dsw-alias-label-tertiary);flex:none;place-items:center;margin-left:auto;display:grid}.V1MMBW_panelBody{height:360px;padding:0 16px var(--dsl-g-gap-lg);overflow-y:auto}.V1MMBW_panelResizeHandle{cursor:ns-resize;touch-action:none;background:0 0;border-radius:3px;height:6px;transition:background .15s}.V1MMBW_panelResizeHandle:hover,.V1MMBW_panelResizeHandleActive{background:color-mix(in srgb, var(--dsw-alias-state-business-primary,#4f8ef7) 35%, transparent)}`,document.head.appendChild(e)}var E={accBody:`V1MMBW_accBody`,accChevron:`V1MMBW_accChevron`,accHead:`V1MMBW_accHead`,accItem:`V1MMBW_accItem`,accent:`V1MMBW_accent`,accordion:`V1MMBW_accordion`,achToast:`V1MMBW_achToast`,achToastBadge:`V1MMBW_achToastBadge`,achToastBody:`V1MMBW_achToastBody`,achToastDesc:`V1MMBW_achToastDesc`,achToastName:`V1MMBW_achToastName`,achToasts:`V1MMBW_achToasts`,avatar:`V1MMBW_avatar`,badge:`V1MMBW_badge`,banner:`V1MMBW_banner`,barCol:`V1MMBW_barCol`,barFill:`V1MMBW_barFill`,barLabel:`V1MMBW_barLabel`,barValue:`V1MMBW_barValue`,baseline:`V1MMBW_baseline`,bcCurrent:`V1MMBW_bcCurrent`,bcItem:`V1MMBW_bcItem`,bcSep:`V1MMBW_bcSep`,bcText:`V1MMBW_bcText`,block:`V1MMBW_block`,body:`V1MMBW_body`,breadcrumb:`V1MMBW_breadcrumb`,btnSent:`V1MMBW_btnSent`,button:`V1MMBW_button`,callout:`V1MMBW_callout`,calloutBody:`V1MMBW_calloutBody`,calloutError:`V1MMBW_calloutError`,calloutInfo:`V1MMBW_calloutInfo`,calloutSuccess:`V1MMBW_calloutSuccess`,calloutTitle:`V1MMBW_calloutTitle`,calloutWarning:`V1MMBW_calloutWarning`,caption:`V1MMBW_caption`,card:`V1MMBW_card`,cardTitle:`V1MMBW_cardTitle`,center:`V1MMBW_center`,chart:`V1MMBW_chart`,chartLabels:`V1MMBW_chartLabels`,chartPlot:`V1MMBW_chartPlot`,checkbox:`V1MMBW_checkbox`,col:`V1MMBW_col`,copyChip:`V1MMBW_copyChip`,copyChipDone:`V1MMBW_copyChipDone`,danger:`V1MMBW_danger`,divider:`V1MMBW_divider`,donut:`V1MMBW_donut`,donutLegend:`V1MMBW_donutLegend`,donutSeg:`V1MMBW_donutSeg`,donutTotal:`V1MMBW_donutTotal`,donutTotalLabel:`V1MMBW_donutTotalLabel`,donutTrack:`V1MMBW_donutTrack`,down:`V1MMBW_down`,echartCanvas:`V1MMBW_echartCanvas`,echartErr:`V1MMBW_echartErr`,echartFallback:`V1MMBW_echartFallback`,echartHint:`V1MMBW_echartHint`,echartTitle:`V1MMBW_echartTitle`,echartWrap:`V1MMBW_echartWrap`,field:`V1MMBW_field`,fieldGroup:`V1MMBW_fieldGroup`,fieldLabel:`V1MMBW_fieldLabel`,fileTree:`V1MMBW_fileTree`,fill:`V1MMBW_fill`,ftDir:`V1MMBW_ftDir`,ftIcon:`V1MMBW_ftIcon`,ftIconDir:`V1MMBW_ftIconDir`,ftName:`V1MMBW_ftName`,ftNameBtn:`V1MMBW_ftNameBtn`,ftRow:`V1MMBW_ftRow`,full:`V1MMBW_full`,genuiPopIn:`V1MMBW_genuiPopIn`,genuiReveal:`V1MMBW_genuiReveal`,ghost:`V1MMBW_ghost`,gradeAns:`V1MMBW_gradeAns`,gradeExp:`V1MMBW_gradeExp`,gradeItem:`V1MMBW_gradeItem`,gradeItemNo:`V1MMBW_gradeItemNo`,gradeItemOk:`V1MMBW_gradeItemOk`,gradeList:`V1MMBW_gradeList`,gradeQ:`V1MMBW_gradeQ`,gradeRight:`V1MMBW_gradeRight`,gradeScore:`V1MMBW_gradeScore`,gradeScoreLabel:`V1MMBW_gradeScoreLabel`,gradeScoreValue:`V1MMBW_gradeScoreValue`,gradeTag:`V1MMBW_gradeTag`,gradeWrap:`V1MMBW_gradeWrap`,grid:`V1MMBW_grid`,gridline:`V1MMBW_gridline`,groupValue:`V1MMBW_groupValue`,groupedBar:`V1MMBW_groupedBar`,groupedBars:`V1MMBW_groupedBars`,groupedFill:`V1MMBW_groupedFill`,h1:`V1MMBW_h1`,h2:`V1MMBW_h2`,h3:`V1MMBW_h3`,input:`V1MMBW_input`,jsonScalar:`V1MMBW_jsonScalar`,keyvalue:`V1MMBW_keyvalue`,kvKey:`V1MMBW_kvKey`,kvRow:`V1MMBW_kvRow`,kvValue:`V1MMBW_kvValue`,li:`V1MMBW_li`,liDesc:`V1MMBW_liDesc`,liTitle:`V1MMBW_liTitle`,lineChart:`V1MMBW_lineChart`,lineDot:`V1MMBW_lineDot`,lineGrid:`V1MMBW_lineGrid`,lineGridAxis:`V1MMBW_lineGridAxis`,lineLabels:`V1MMBW_lineLabels`,linePath:`V1MMBW_linePath`,lineTick:`V1MMBW_lineTick`,link:`V1MMBW_link`,linkText:`V1MMBW_linkText`,list:`V1MMBW_list`,media:`V1MMBW_media`,mediaError:`V1MMBW_mediaError`,mediaLabel:`V1MMBW_mediaLabel`,mediaPlayer:`V1MMBW_mediaPlayer`,mermaid:`V1MMBW_mermaid`,mermaidErr:`V1MMBW_mermaidErr`,mermaidFallback:`V1MMBW_mermaidFallback`,mermaidHint:`V1MMBW_mermaidHint`,muted:`V1MMBW_muted`,panel:`V1MMBW_panel`,panelBadge:`V1MMBW_panelBadge`,panelBody:`V1MMBW_panelBody`,panelChevron:`V1MMBW_panelChevron`,panelClose:`V1MMBW_panelClose`,panelFlash:`V1MMBW_panelFlash`,panelHeader:`V1MMBW_panelHeader`,panelHint:`V1MMBW_panelHint`,panelOnboard:`V1MMBW_panelOnboard`,panelOnboardText:`V1MMBW_panelOnboardText`,panelResizeHandle:`V1MMBW_panelResizeHandle`,panelResizeHandleActive:`V1MMBW_panelResizeHandleActive`,panelTitle:`V1MMBW_panelTitle`,panelToggle:`V1MMBW_panelToggle`,panelTpl:`V1MMBW_panelTpl`,panelTplActive:`V1MMBW_panelTplActive`,playBtn:`V1MMBW_playBtn`,primary:`V1MMBW_primary`,progress:`V1MMBW_progress`,progressRow:`V1MMBW_progressRow`,quiz:`V1MMBW_quiz`,quizCorrectMsg:`V1MMBW_quizCorrectMsg`,quizExplanation:`V1MMBW_quizExplanation`,quizFeedback:`V1MMBW_quizFeedback`,quizMarker:`V1MMBW_quizMarker`,quizOpt:`V1MMBW_quizOpt`,quizOptCorrect:`V1MMBW_quizOptCorrect`,quizOptReveal:`V1MMBW_quizOptReveal`,quizOptWrong:`V1MMBW_quizOptWrong`,quizOptions:`V1MMBW_quizOptions`,quizQuestion:`V1MMBW_quizQuestion`,quizResult:`V1MMBW_quizResult`,quizRetry:`V1MMBW_quizRetry`,quizWrongMsg:`V1MMBW_quizWrongMsg`,radio:`V1MMBW_radio`,resetBtn:`V1MMBW_resetBtn`,reveal:`V1MMBW_reveal`,row:`V1MMBW_row`,scene3dCanvas:`V1MMBW_scene3dCanvas`,scene3dHint:`V1MMBW_scene3dHint`,scene3dTitle:`V1MMBW_scene3dTitle`,scene3dWrap:`V1MMBW_scene3dWrap`,select:`V1MMBW_select`,sliderInput:`V1MMBW_sliderInput`,sliderRow:`V1MMBW_sliderRow`,sliderValue:`V1MMBW_sliderValue`,small:`V1MMBW_small`,spacer:`V1MMBW_spacer`,stat:`V1MMBW_stat`,statDelta:`V1MMBW_statDelta`,statLabel:`V1MMBW_statLabel`,statValue:`V1MMBW_statValue`,step:`V1MMBW_step`,stepActive:`V1MMBW_stepActive`,stepContent:`V1MMBW_stepContent`,stepDesc:`V1MMBW_stepDesc`,stepDone:`V1MMBW_stepDone`,stepMarker:`V1MMBW_stepMarker`,stepTitle:`V1MMBW_stepTitle`,steps:`V1MMBW_steps`,submit:`V1MMBW_submit`,submitHint:`V1MMBW_submitHint`,submitRow:`V1MMBW_submitRow`,success:`V1MMBW_success`,switch:`V1MMBW_switch`,switchKnob:`V1MMBW_switchKnob`,switchLabel:`V1MMBW_switchLabel`,switchOn:`V1MMBW_switchOn`,switchRow:`V1MMBW_switchRow`,tab:`V1MMBW_tab`,tabActive:`V1MMBW_tabActive`,tabBar:`V1MMBW_tabBar`,table:`V1MMBW_table`,tableWrap:`V1MMBW_tableWrap`,tabs:`V1MMBW_tabs`,tdNum:`V1MMBW_tdNum`,text:`V1MMBW_text`,textarea:`V1MMBW_textarea`,thNum:`V1MMBW_thNum`,thSort:`V1MMBW_thSort`,thSortMark:`V1MMBW_thSortMark`,timeline:`V1MMBW_timeline`,tlBody:`V1MMBW_tlBody`,tlDesc:`V1MMBW_tlDesc`,tlDot:`V1MMBW_tlDot`,tlHead:`V1MMBW_tlHead`,tlItem:`V1MMBW_tlItem`,tlLine:`V1MMBW_tlLine`,tlRail:`V1MMBW_tlRail`,tlTime:`V1MMBW_tlTime`,tlTitle:`V1MMBW_tlTitle`,tool:`V1MMBW_tool`,toolFallback:`V1MMBW_toolFallback`,toolFallbackMeta:`V1MMBW_toolFallbackMeta`,toolFallbackTitle:`V1MMBW_toolFallbackTitle`,track:`V1MMBW_track`,up:`V1MMBW_up`,videoPlayer:`V1MMBW_videoPlayer`,visuallyHidden:`V1MMBW_visuallyHidden`,warn:`V1MMBW_warn`,wrap:`V1MMBW_wrap`};let D=`dsh.genui.interaction`;function O(){return{order:[],blocks:{}}}function ee(){try{let e=localStorage.getItem(D);if(e===null)return O();let t=JSON.parse(e);return!Array.isArray(t.order)||typeof t.blocks!=`object`||t.blocks===null?O():{order:t.order.filter(e=>typeof e==`string`),blocks:t.blocks}}catch{return O()}}function te(e){try{localStorage.setItem(D,JSON.stringify(e))}catch{}}function ne(e){return e===``?null:ee().blocks[e]??null}function re(e,t){if(e===``)return;let n=ee(),r=n.order.filter(t=>t!==e);r.unshift(e);let i={...n.blocks,[e]:t};for(;r.length>200;){let e=r.pop();e!==void 0&&delete i[e]}te({order:r,blocks:i})}function ie(e){let t=5381;for(let n=0;n<e.length;n++)t=(t<<5)+t+e.charCodeAt(n)>>>0;return t.toString(36)}function ae(e,t,n){return`f:${e}:${String(t)}:${ie(n)}`}function oe(e,t){return`p:${e}:${ie(t)}`}function se(e,t){return`t:${e}:${t}`}function ce(){return{fences:0,panels:0,interactions:0,templates:0,charts:0,advanced:0}}let le=e=>t=>t.fences>=e,ue=[{id:`first-fence`,name:`初次相见`,description:`渲染了第一块 GenUI 界面。`,rarity:`common`,check:le(1)},{id:`fence-5`,name:`渐入佳境`,description:`累计渲染 5 个界面。`,rarity:`common`,check:le(5)},{id:`fence-25`,name:`界面编织者`,description:`累计渲染 25 个界面。`,rarity:`rare`,check:le(25)},{id:`fence-50`,name:`蓝图之魂`,description:`累计渲染 50 个界面——你是 GenUI 的老朋友了。`,rarity:`legendary`,hidden:!0,check:le(50)},{id:`first-interaction`,name:`按钮按得动`,description:`触发了一次组件交互(动作回传)。`,rarity:`common`,check:e=>e.interactions>=1},{id:`interaction-10`,name:`小小操纵者`,description:`累计触发 10 次组件交互。`,rarity:`rare`,check:e=>e.interactions>=10},{id:`first-panel`,name:`钉在墙上`,description:`第一次把内容钉进了会话面板。`,rarity:`common`,check:e=>e.panels>=1},{id:`panel-5`,name:`面板管家`,description:`5 个会话都用过面板。`,rarity:`rare`,check:e=>e.panels>=5},{id:`first-chart`,name:`图表爱好者`,description:`渲染了第一张图表(chart/plot/echart)。`,rarity:`common`,check:e=>e.charts>=1},{id:`chart-10`,name:`数据可视化人`,description:`10 个界面里出现过图表。`,rarity:`rare`,check:e=>e.charts>=10},{id:`first-advanced`,name:`高级玩家`,description:`用上了 3D/图表引擎/架构图之一。`,rarity:`rare`,check:e=>e.advanced>=1},{id:`template-1`,name:`模板学员`,description:`从模板中心试用了一个模板。`,rarity:`common`,check:e=>e.templates>=1}];function de(e){let t=0,n=0,r=e=>{if(Array.isArray(e))for(let i of e){if(typeof i!=`object`||!i)continue;let e=i,a=e.type;if((a===`chart`||a===`plot`||a===`echart`)&&(t+=1),(a===`scene3d`||a===`mermaid`||a===`diagram`)&&(n+=1),Array.isArray(e.items)&&r(e.items),Array.isArray(e.tabs))for(let t of e.tabs)r(t.items)}};return r(e.items),{charts:t,advanced:n}}function fe(e,t){let n=ue.length,r=ue.filter(e=>t[e.id]!==void 0).length;return{title:`GenUI 探索成就`,items:[{type:`grid`,cols:3,items:[{type:`stat`,label:`已解锁`,value:`${r} / ${n}`},{type:`stat`,label:`渲染界面`,value:String(e.fences)},{type:`stat`,label:`组件交互`,value:String(e.interactions)}]},{type:`progress`,label:`探索进度`,value:Math.round(r/n*100),valueLabel:`${Math.round(r/n*100)}%`},{type:`list`,items:ue.map(e=>({type:`row`,items:[{type:`badge`,label:e.rarity===`legendary`?`传说`:e.rarity===`rare`?`稀有`:`普通`,tone:t[e.id]===void 0?`warn`:`success`},{type:`text`,size:`body`,content:e.hidden&&t[e.id]===void 0?`?`:e.name},{type:`text`,size:`muted`,content:e.hidden&&t[e.id]===void 0?`继续探索以揭示`:e.description}]}))}]}}function pe(e,t){return ue.filter(n=>t[n.id]===void 0&&n.check(e))}let me=`dsh.genui.achievements`,he=`dsh.genui.achievements.seen`,k=ve(),ge=new Set,_e=[];function ve(){try{let e=localStorage.getItem(me);if(e===null)return{state:ce(),unlocked:{}};let t=JSON.parse(e);return{state:{...ce(),...t.state??{}},unlocked:typeof t.unlocked==`object`&&t.unlocked!==null?t.unlocked:{}}}catch{return{state:ce(),unlocked:{}}}}function ye(){try{localStorage.setItem(me,JSON.stringify(k))}catch{}}function be(){try{let e=localStorage.getItem(he);if(e===null)return[];let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>typeof e==`string`):[]}catch{return[]}}function xe(e){try{localStorage.setItem(he,JSON.stringify(e.slice(0,200)))}catch{}}function Se(){for(let e of ge)e()}function Ce(e){k.state={...k.state,...e};let t=pe(k.state,k.unlocked);for(let e of t)k.unlocked[e.id]=Date.now();t.length>0&&_e.push(...t),ye(),Se()}function we(e){let t=JSON.stringify(e),n=3735928559,r=1103547991;for(let e=0;e<t.length;e++){let i=t.charCodeAt(e);n=Math.imul(n^i,2654435761),r=Math.imul(r^i,1597334677)}return`${(n>>>0).toString(36)}-${(r>>>0).toString(36)}`}function Te(e){let t=we(e),n=be();if(n.includes(t))return;xe([t,...n]);let r=de(e);Ce({fences:k.state.fences+1,charts:k.state.charts+ +(r.charts>0),advanced:k.state.advanced+ +(r.advanced>0)})}function Ee(){Ce({panels:k.state.panels+1})}function De(){Ce({interactions:k.state.interactions+1})}function Oe(){Ce({templates:k.state.templates+1})}function ke(){return k}function Ae(){let e=_e;return _e=[],e}function je(e){return ge.add(e),()=>ge.delete(e)}let A={maxDepth:8,maxNodes:200,maxString:2e3,maxCode:12e3,maxMermaid:8e3,maxGridCols:12,maxTabs:12,maxAccordionItems:24,maxListItems:50,maxOptions:50,maxTableRows:50,maxTableCols:12,maxChartPoints:60,maxPlotSeries:8,maxPlotParams:6,maxMeshes:5,maxQuizOptions:8,maxSteps:24,maxTimelineItems:24,maxBreadcrumbItems:12,maxKeyValuePairs:24,maxTreeDepth:6,maxDiagramNodes:9,maxDiagramEdges:12,maxDiagramZones:3,maxDiagramFocal:2,maxDiagramLabel:14,maxEChartOptionDepth:10,maxEChartArrayLen:500,maxEChartOptionNodes:2e3},Me=[`var(--dsw-static-deepseek-400)`,`var(--dsw-static-deepseek-450)`,`var(--dsw-static-blue-450)`,`var(--dsw-static-green-400)`,`var(--dsw-static-amber-400)`,`var(--dsw-static-red-400)`,`var(--dsw-static-deepseek-300)`,`var(--dsw-static-neutral-bluish-400)`];function Ne(e){let t=0;for(let n=0;n<e.length;n++)t=t*31+e.charCodeAt(n)>>>0;return Me[t%Me.length]}function Pe({className:e,disabled:t,onClick:n,children:r}){let[i,a]=(0,m.useState)(!1),o=(0,m.useRef)(null);return(0,m.useEffect)(()=>()=>{o.current!==null&&clearTimeout(o.current)},[]),(0,g.jsxs)(g.Fragment,{children:[(0,g.jsxs)(`button`,{type:`button`,className:e,disabled:t,onClick:n===void 0?void 0:()=>{n(),o.current!==null&&clearTimeout(o.current),a(!0),o.current=setTimeout(()=>a(!1),1400)},children:[r,i&&(0,g.jsx)(`span`,{className:E.btnSent,"aria-hidden":!0,children:`✓ 已触发`})]}),(0,g.jsx)(`span`,{className:E.visuallyHidden,role:`status`,children:i?`已触发`:``})]})}let Fe=(0,m.memo)(function({node:e}){let[t,n]=(0,m.useState)(!1);return(0,g.jsxs)(`figure`,{className:E.media,children:[e.alt!==void 0&&(0,g.jsx)(`figcaption`,{className:E.mediaLabel,children:e.alt}),t?(0,g.jsx)(`div`,{className:E.mediaError,role:`alert`,children:`音频无法播放`}):(0,g.jsx)(`audio`,{className:E.mediaPlayer,src:e.src,"aria-label":e.alt??`音频`,controls:!0,preload:`metadata`,loop:e.loop===!0,onError:()=>n(!0)})]})}),Ie=(0,m.memo)(function({node:e}){let[t,n]=(0,m.useState)(!1);return(0,g.jsxs)(`figure`,{className:E.media,children:[e.alt!==void 0&&(0,g.jsx)(`figcaption`,{className:E.mediaLabel,children:e.alt}),t?(0,g.jsx)(`div`,{className:E.mediaError,role:`alert`,children:`视频无法播放`}):(0,g.jsx)(`video`,{className:`${E.mediaPlayer} ${E.videoPlayer}`,src:e.src,poster:e.poster,"aria-label":e.alt??`视频`,controls:!0,preload:`metadata`,playsInline:!0,loop:e.loop===!0,muted:e.muted===!0,style:e.aspectRatio===void 0?void 0:{aspectRatio:e.aspectRatio.replace(`:`,` / `)},onError:()=>n(!0)})]})}),Le=[`var(--dsw-static-deepseek-400)`,`var(--dsw-static-green-400)`,`var(--dsw-static-amber-400)`,`var(--dsw-static-red-400)`,`var(--dsw-static-blue-450)`,`var(--dsw-static-deepseek-450)`,`var(--dsw-static-neutral-bluish-400)`,`var(--dsw-static-deepseek-300)`],Re=(e,t,n)=>n??(t>1?Le[e%Le.length]:void 0);function ze(e){if(typeof e==`number`)return Number.isFinite(e)?e:NaN;if(typeof e!=`string`)return NaN;let t=e.trim();if(t===``)return NaN;t=t.replace(/^[¥$€£]/,``),t.endsWith(`%`)&&(t=t.slice(0,-1));let n=1;if(t.endsWith(`万`))n=1e4,t=t.slice(0,-1);else if(t.endsWith(`亿`))n=1e8,t=t.slice(0,-1);else if(/[kmb]$/i.test(t)){let e=t.slice(-1).toLowerCase();n=e===`k`?1e3:e===`m`?1e6:1e9,t=t.slice(0,-1)}t=t.replace(/[,,\s]/g,``);let r=Number(t);return Number.isFinite(r)?r*n:NaN}function Be(e,t){return Array.from({length:t},(t,n)=>{let r=!1;for(let t of e){let e=t[n];if(e!=null&&e!==``){if(!Number.isFinite(ze(e)))return!1;r=!0}}return r})}let Ve=(0,m.memo)(function({node:e}){let t=e.columns.slice(0,A.maxTableCols),n=e.rows.slice(0,A.maxTableRows),[r,i]=(0,m.useState)(null),a=r===null?n:[...n].sort((e,t)=>{let n=ze(e[r.col]),i=ze(t[r.col]);if(Number.isFinite(n)&&Number.isFinite(i)&&n!==i)return(n-i)*r.dir;if(Number.isFinite(n)!==Number.isFinite(i))return Number.isFinite(n)?-r.dir:r.dir;let a=String(e[r.col]??``),o=String(t[r.col]??``);return(a<o?-1:+(a>o))*r.dir}),o=e=>{i(t=>t!==null&&t.col===e?t.dir===1?{col:e,dir:-1}:null:{col:e,dir:1})},s=Be(n,t.length);return(0,g.jsx)(`div`,{className:E.tableWrap,children:(0,g.jsxs)(`table`,{className:E.table,children:[(0,g.jsx)(`thead`,{children:(0,g.jsx)(`tr`,{children:t.map((e,t)=>(0,g.jsx)(`th`,{className:s[t]?E.thNum:void 0,"aria-sort":r!==null&&r.col===t?r.dir===1?`ascending`:`descending`:`none`,children:(0,g.jsxs)(`button`,{type:`button`,className:E.thSort,onClick:()=>o(t),children:[e,r!==null&&r.col===t&&(0,g.jsx)(`span`,{className:E.thSortMark,"aria-hidden":!0,children:r.dir===1?` ▲`:` ▼`})]})},t))})}),(0,g.jsx)(`tbody`,{children:a.map((e,n)=>(0,g.jsx)(`tr`,{children:e.slice(0,t.length).map((e,t)=>(0,g.jsx)(`td`,{className:s[t]?E.tdNum:void 0,children:String(e)},t))},n))})]})})}),He=(0,m.memo)(function({chart:e}){let t=e.kind??`bars`;return t===`donut`?(0,g.jsx)(Ge,{chart:e}):t===`line`?(0,g.jsx)(We,{chart:e}):(0,g.jsx)(Ue,{chart:e})}),Ue=(0,m.memo)(function({chart:e}){let t=e.series===void 0?void 0:e.series.slice(0,A.maxPlotSeries);if(t!==void 0&&t.length>0){let e=t[0].data.map(e=>e.label),n=Math.max(...t.flatMap(e=>e.data.map(e=>Number(e.value)||0)),1);return(0,g.jsxs)(`div`,{className:E.chart,"data-genui-chart":`bars`,children:[(0,g.jsxs)(`div`,{className:E.chartPlot,children:[[0,25,50,75].map(e=>(0,g.jsx)(`span`,{className:e===0?E.baseline:E.gridline,style:{bottom:`${e}%`}},e)),e.map((e,r)=>(0,g.jsx)(`div`,{className:E.barCol,children:(0,g.jsx)(`div`,{className:E.groupedBars,children:t.map((e,i)=>{let a=e.data[r],o=a===void 0?0:Number(a.value)||0,s=a===void 0?0:Math.min(Math.round(Math.max(0,o)/n*100),82);return(0,g.jsxs)(`div`,{className:E.groupedBar,title:a===void 0?e.label:`${e.label}: ${String(a.value)}`,children:[(0,g.jsx)(`span`,{className:E.groupValue,children:a===void 0?``:String(a.value)}),(0,g.jsx)(`div`,{className:E.groupedFill,style:{height:`${s}%`,background:Re(i,t.length,e.color)??`var(--dsw-alias-state-business-primary, #4f8ef7)`}})]},i)})})},r))]}),(0,g.jsx)(`div`,{className:E.chartLabels,children:e.map(e=>(0,g.jsx)(`span`,{className:E.barLabel,children:e},e))})]})}let n=e.data.slice(0,A.maxChartPoints),r=Math.max(...n.map(e=>Number(e.value)||0),1);return(0,g.jsxs)(`div`,{className:E.chart,"data-genui-chart":`bars`,children:[(0,g.jsxs)(`div`,{className:E.chartPlot,children:[[0,25,50,75].map(e=>(0,g.jsx)(`span`,{className:e===0?E.baseline:E.gridline,style:{bottom:`${e}%`}},e)),n.map((e,t)=>{let n=Number(e.value)||0,i=Math.min(Math.round(Math.max(0,n)/r*100),85);return(0,g.jsxs)(`div`,{className:E.barCol,title:`${e.label}: ${String(e.value)}`,children:[(0,g.jsx)(`span`,{className:E.barValue,children:String(e.value)}),(0,g.jsx)(`div`,{className:E.barFill,style:{height:`${i}%`,...e.color===void 0?{}:{background:e.color}}})]},t)})]}),(0,g.jsx)(`div`,{className:E.chartLabels,children:n.map(e=>(0,g.jsx)(`span`,{className:E.barLabel,children:e.label},e.label))})]})}),We=(0,m.memo)(function({chart:e}){let t=e.data.slice(0,A.maxChartPoints),n=Math.max(...t.map(e=>Number(e.value)||0),1),r=Math.min(...t.map(e=>Number(e.value)||0),0),i=n-r||1,a=Math.max(t.length-1,1),o=(e,t)=>[36+e/a*416,10+(1-(t-r)/i)*134],s=t.map((e,t)=>o(t,Number(e.value)||0)).map((e,t)=>`${t===0?`M`:`L`} ${e[0].toFixed(1)} ${e[1].toFixed(1)}`).join(` `),c=[0,1,2,3].map(e=>r+i*e/3),l=e=>{let t=Math.abs(e);return t>=1e3?`${(e/1e3).toFixed(t%1e3==0?0:1)}k`:Number.isInteger(e)?String(e):e.toFixed(1)};return(0,g.jsxs)(`div`,{className:E.lineChart,"data-genui-chart":`line`,children:[(0,g.jsxs)(`svg`,{width:`100%`,viewBox:`0 0 460 150`,children:[c.map((e,t)=>{let n=10+(1-(e-r)/i)*134;return(0,g.jsxs)(`g`,{children:[(0,g.jsx)(`line`,{x1:36,x2:452,y1:n,y2:n,className:t===0?E.lineGridAxis:E.lineGrid}),(0,g.jsx)(`text`,{x:30,y:n+3,textAnchor:`end`,className:E.lineTick,children:l(e)})]},t)}),t.map((e,t)=>{let[n,r]=o(t,Number(e.value)||0);return(0,g.jsx)(`circle`,{cx:n,cy:r,r:3,className:E.lineDot,fill:e.color??void 0,children:(0,g.jsx)(`title`,{children:`${e.label}: ${String(e.value)}`})},t)}),(0,g.jsx)(`path`,{d:s,className:E.linePath})]}),(0,g.jsx)(`div`,{className:E.lineLabels,children:t.map((e,t)=>(0,g.jsx)(`span`,{className:E.barLabel,children:e.label},t))})]})}),Ge=(0,m.memo)(function({chart:e}){let t=e.data.slice(0,A.maxChartPoints),n=t.map(e=>({...e,v:Math.max(0,Number(e.value)||0)})),r=n.reduce((e,t)=>e+t.v,0)||1,i=r>=1e3?`${Math.round(r/100)/10}k`:Number.isInteger(r)?String(r):r.toFixed(1),a=2*Math.PI*42,o=0;return(0,g.jsxs)(`div`,{className:E.donut,"data-genui-chart":`donut`,children:[(0,g.jsxs)(`svg`,{width:`120`,height:`120`,viewBox:`0 0 120 120`,children:[(0,g.jsx)(`circle`,{cx:`60`,cy:`60`,r:42,fill:`none`,strokeWidth:`14`,className:E.donutTrack}),n.map((e,n)=>{let i=e.v/r*a,s=(0,g.jsx)(`circle`,{cx:`60`,cy:`60`,r:42,fill:`none`,strokeWidth:`14`,className:E.donutSeg,style:{stroke:Re(n,t.length,e.color)??`var(--dsw-alias-state-business-primary, #4f8ef7)`},strokeDasharray:`${i} ${a-i}`,strokeDashoffset:-o,transform:`rotate(-90 60 60)`,children:(0,g.jsx)(`title`,{children:`${e.label}: ${String(e.value)}`})},n);return o+=i,s}),(0,g.jsx)(`text`,{x:`60`,y:`58`,textAnchor:`middle`,className:E.donutTotal,children:i}),(0,g.jsx)(`text`,{x:`60`,y:`74`,textAnchor:`middle`,className:E.donutTotalLabel,children:`合计`})]}),(0,g.jsx)(`div`,{className:E.donutLegend,children:t.map((e,n)=>(0,g.jsxs)(`span`,{className:E.legendItem,children:[(0,g.jsx)(`span`,{className:E.legendSwatch,style:{background:Re(n,t.length,e.color)??`var(--dsw-alias-state-business-primary, #4f8ef7)`}}),e.label,` · `,String(e.value)]},n))})]})});function Ke({node:e,onAction:t,answers:n}){let r=e.action,i=e.group,a=i!==void 0,o=e.options.slice(0,A.maxOptions),s=i!==void 0&&n?.answers[i]!==void 0?o.indexOf(n.answers[i]):-1,[c,l]=(0,m.useState)(s>=0?s:e.selected??null),u=(0,m.useId)(),d=a&&n?.locked===!0;return(0,m.useEffect)(()=>{i!==void 0&&(n?.registerMeta(i,{label:e.label??i,options:o,answer:e.answer,explanation:e.explanation}),e.selected!==void 0&&o[e.selected]!==void 0&&n?.answers[i]===void 0&&n?.setAnswer(i,o[e.selected]))},[i,e.label,e.answer,e.explanation,e.options,e.selected]),(0,g.jsxs)(`div`,{className:E.fieldGroup,role:`radiogroup`,"aria-label":e.label,children:[e.label!==void 0&&(0,g.jsx)(`span`,{className:E.fieldLabel,children:e.label}),o.map((e,o)=>(0,g.jsxs)(`label`,{className:E.radio,children:[(0,g.jsx)(`input`,{type:`radio`,name:`genui-radio-${u}`,checked:c===o,disabled:d,onChange:()=>{l(o),a?n?.setAnswer(i,e):r!==void 0&&t!==void 0&&t(r,{type:`radio`,value:e})}}),(0,g.jsx)(`span`,{children:e})]},o))]})}function qe(e){if(e.answer!==void 0)return typeof e.answer==`number`?e.options[e.answer]:e.answer}function Je({node:e,onAction:t,answers:n}){let r=n?.answers??{},i=n?.multiAnswers??{},a=n?.fields??{},o=n?.meta??{},s=e.groups,c=Object.fromEntries(Object.entries(a).filter(([e,t])=>t.trim()!==``&&!n?.secretFields.has(e))),l=Object.entries(i).filter(([,e])=>Array.isArray(e)&&e.length>0).map(([e])=>e),u=new Set([...Object.keys(r),...l]),d=s===void 0?Math.max(u.size,Object.keys(c).length):s.filter(e=>r[e]!==void 0||Array.isArray(i[e])&&i[e].length>0).length,f=s?.length??d,p=s??[...u],m=!p.some(e=>Array.isArray(i[e])&&i[e].length>0)&&p.some(e=>o[e]?.answer!==void 0),h=n?.locked===!0,_={...r,...i},v=d>0&&d>=f&&(m||e.action!==void 0&&t!==void 0);if(h){let i=p.filter(e=>r[e]!==void 0&&o[e]?.answer!==void 0),a=i.filter(e=>r[e]===qe(o[e])).length;return(0,g.jsxs)(`div`,{className:E.gradeWrap,"data-genui-grade":!0,children:[(0,g.jsxs)(`div`,{className:E.gradeScore,children:[(0,g.jsxs)(`span`,{className:E.gradeScoreValue,children:[a,` / `,i.length]}),(0,g.jsxs)(`span`,{className:E.gradeScoreLabel,children:[`得分`,i.length<p.length?`(${p.length-i.length} 题无答案未计分)`:``]})]}),(0,g.jsx)(`div`,{className:E.gradeList,children:p.map(e=>{let t=r[e],n=o[e];if(t===void 0||n===void 0)return null;let i=qe(n);if(i===void 0)return(0,g.jsxs)(`div`,{className:E.gradeItem,children:[(0,g.jsx)(`span`,{className:E.gradeQ,children:n.label}),(0,g.jsxs)(`span`,{className:E.gradeAns,children:[`你的答案:`,t]})]},e);let a=t===i;return(0,g.jsxs)(`div`,{className:`${E.gradeItem} ${a?E.gradeItemOk:E.gradeItemNo}`,children:[(0,g.jsx)(`span`,{className:E.gradeQ,children:n.label}),(0,g.jsx)(`span`,{className:E.gradeTag,children:a?`✓`:`✗`}),(0,g.jsxs)(`span`,{className:E.gradeAns,children:[`你的答案:`,t,!a&&(0,g.jsxs)(`span`,{className:E.gradeRight,children:[` 正确答案:`,i]})]}),n.explanation!==void 0&&(0,g.jsx)(`span`,{className:E.gradeExp,children:n.explanation})]},e)})}),(0,g.jsx)(`button`,{type:`button`,className:`${E.button} ${E.ghost} ${E.submit}`,onClick:()=>{n?.clear(),e.resetAction!==void 0&&t!==void 0&&t(e.resetAction,{type:`submit-reset`,groups:s??Object.keys(r)})},children:`重新作答`})]})}return(0,g.jsxs)(`div`,{className:E.submitRow,children:[(0,g.jsx)(`button`,{type:`button`,className:`${E.button} ${E.primary} ${E.submit}`,disabled:!v,onClick:v?()=>{m?n?.setLocked(!0):e.action!==void 0&&t!==void 0&&t(e.action,{type:`submit`,answers:_,...Object.keys(c).length>0?{fields:c}:{},total:f,answered:d})}:void 0,children:e.label}),f>0&&(0,g.jsxs)(`span`,{className:E.submitHint,"aria-live":`polite`,children:[`已选 `,d,`/`,f]})]})}function Ye({node:e,onAction:t}){let[n,r]=(0,m.useState)(e.checked===!0),i=e.action;return(0,g.jsxs)(`label`,{className:E.switchRow,children:[(0,g.jsx)(`span`,{className:E.switchLabel,children:e.label}),(0,g.jsx)(`button`,{type:`button`,role:`switch`,"aria-checked":n,className:`${E.switch} ${n?E.switchOn:``}`,onClick:()=>{let e=!n;r(e),i!==void 0&&t!==void 0&&t(i,{type:`switch`,checked:e})},children:(0,g.jsx)(`span`,{className:E.switchKnob})})]})}function Xe({node:e,onAction:t,answers:n}){let r=e.action,i=e.id,a=i!==void 0&&n?.fields[i]!==void 0?Number(n.fields[i]):NaN,o=Number.isFinite(a)?a:e.value??e.min??0,[s,c]=(0,m.useState)(o),l=(0,m.useRef)(!1);(0,m.useEffect)(()=>{l.current||(l.current=!0,i!==void 0&&n?.setField(i,String(o)))},[]);let u=e=>{r!==void 0&&t!==void 0&&t(r,{type:`slider`,value:e,...i===void 0?{}:{id:i}})};return(0,g.jsxs)(`label`,{className:E.sliderRow,children:[e.label!==void 0&&(0,g.jsx)(`span`,{className:E.fieldLabel,children:e.label}),(0,g.jsx)(`input`,{type:`range`,className:E.sliderInput,min:e.min,max:e.max,step:e.step??1,value:s,"aria-label":e.label,onChange:e=>{let t=Number(e.currentTarget.value);c(t),i!==void 0&&n?.setField(i,String(t)),u(t)}}),(0,g.jsx)(`span`,{className:E.sliderValue,children:Math.round(s*100)/100})]})}function Ze(){let e=(0,m.useRef)(!1),t=(0,m.useRef)(null);return(0,m.useEffect)(()=>()=>{t.current!==null&&clearTimeout(t.current)},[]),{isComposing:()=>e.current,onCompositionStart:()=>{e.current=!0,t.current!==null&&(clearTimeout(t.current),t.current=null)},onCompositionEnd:()=>{t.current!==null&&clearTimeout(t.current),t.current=setTimeout(()=>{e.current=!1},10)}}}function Qe(e){let t=e.nativeEvent;return t.isComposing===!0||t.keyCode===229}function $e({node:e,onAction:t,answers:n}){let r=e.action,i=e.id,a=e.options.slice(0,A.maxOptions),o=i!==void 0&&n?.fields[i]!==void 0?a.indexOf(n.fields[i]):-1,s=o>=0?a[o]:e.selected!==void 0&&a[e.selected]!==void 0?a[e.selected]:null,[c,l]=(0,m.useState)(s),u=(0,m.useRef)(!1);(0,m.useEffect)(()=>{u.current||(u.current=!0,i!==void 0&&s!==null&&n?.setField(i,s))},[]);let d=e=>{r!==void 0&&t!==void 0&&t(r,{type:`select`,value:e,...i===void 0?{}:{id:i}})};return(0,g.jsxs)(`label`,{className:E.field,children:[e.label!==void 0&&(0,g.jsx)(`span`,{children:e.label}),(0,g.jsxs)(`select`,{className:E.select,value:c??``,onChange:e=>{let t=e.currentTarget.value;l(t),i!==void 0&&n?.setField(i,t),d(t)},children:[c===null&&(0,g.jsx)(`option`,{value:``,hidden:!0,disabled:!0,children:`请选择…`}),a.map((e,t)=>(0,g.jsx)(`option`,{value:e,children:e},t))]})]})}function et({node:e,onAction:t,answers:n}){let r=e.action,i=e.id,a=e.inputType===`password`,o=!a&&i!==void 0?n?.fields[i]:void 0,[s,c]=(0,m.useState)(()=>{let t=a?``:o??e.value??``;return e.inputType===`color`?/^#[0-9a-f]{6}$/i.test(t)?t.toLowerCase():`#000000`:t}),l=(0,m.useRef)(s),u=e=>{r!==void 0&&t!==void 0&&(l.current=s,t(r,{type:`input`,value:s,...i===void 0?{}:{id:i},...e?{submit:!0}:{}}))},d=Ze(),f=(0,m.useRef)(!1);return(0,m.useEffect)(()=>{f.current||(f.current=!0,!a&&i!==void 0&&s.trim()!==``&&n?.setField(i,s))},[]),(0,m.useEffect)(()=>{a&&i!==void 0&&n?.registerSecretField(i)},[a,i]),(0,g.jsxs)(`label`,{className:E.field,children:[e.label!==void 0&&(0,g.jsx)(`span`,{children:e.label}),(0,g.jsx)(`input`,{className:E.input,type:e.inputType??`text`,style:e.inputType===`color`?{width:64,height:40,padding:4,boxSizing:`border-box`,alignSelf:`flex-start`,cursor:`pointer`}:void 0,placeholder:e.placeholder,value:s,onChange:e=>{let t=e.currentTarget.value;c(t),i!==void 0&&n?.setField(i,t)},onBlur:()=>{s!==l.current&&u(!1)},onCompositionStart:d.onCompositionStart,onCompositionEnd:d.onCompositionEnd,onKeyDown:e=>{e.key===`Enter`&&(d.isComposing()||Qe(e)||(e.preventDefault(),u(!0)))}})]})}function tt({node:e,onAction:t,answers:n}){let r=e.action,i=e.id,[a,o]=(0,m.useState)(()=>e.value??(i===void 0?``:n?.fields[i]??``)),s=(0,m.useRef)(a),c=e=>{r!==void 0&&t!==void 0&&(s.current=a,t(r,{type:`textarea`,value:a,...i===void 0?{}:{id:i},...e?{submit:!0}:{}}))},l=Ze(),u=(0,m.useRef)(!1);return(0,m.useEffect)(()=>{u.current||(u.current=!0,i!==void 0&&e.value!==void 0&&e.value.trim()!==``&&n?.setField(i,e.value))},[]),(0,g.jsxs)(`label`,{className:E.field,children:[e.label!==void 0&&(0,g.jsx)(`span`,{children:e.label}),(0,g.jsx)(`textarea`,{className:E.textarea,placeholder:e.placeholder,rows:e.rows??4,value:a,onChange:e=>{let t=e.currentTarget.value;o(t),i!==void 0&&n?.setField(i,t)},onBlur:()=>{a!==s.current&&c(!1)},onCompositionStart:l.onCompositionStart,onCompositionEnd:l.onCompositionEnd,onKeyDown:e=>{!(e.metaKey||e.ctrlKey)||e.key!==`Enter`||l.isComposing()||Qe(e)||(e.preventDefault(),c(!0))}})]})}function nt({node:e,onAction:t,answers:n}){let r=e.group,i=r!==void 0,a=r!==void 0&&Object.prototype.hasOwnProperty.call(n?.multiAnswers??{},r),o=r===void 0?void 0:n?.multiAnswers[r],s=a?Array.isArray(o)&&o.includes(e.label):e.checked===!0,[c,l]=(0,m.useState)(e.checked===!0);return(0,m.useEffect)(()=>{r===void 0||e.checked!==!0||a||n?.setMultiAnswer(r,e.label,!0)},[r,e.checked,e.label,a]),(0,g.jsxs)(`label`,{className:E.checkbox,children:[(0,g.jsx)(`input`,{type:`checkbox`,checked:i?s:c,onChange:a=>{let o=a.currentTarget.checked;l(o),i?n?.setMultiAnswer(r,e.label,o):e.action!==void 0&&t!==void 0&&t(e.action,{type:`checkbox`,checked:o})}}),(0,g.jsx)(`span`,{children:e.label})]})}let rt={pi:Math.PI,e:Math.E,tau:Math.PI*2},it={sin:Math.sin,cos:Math.cos,tan:Math.tan,asin:Math.asin,acos:Math.acos,atan:Math.atan,sqrt:Math.sqrt,cbrt:Math.cbrt,exp:Math.exp,log:Math.log10,ln:Math.log,abs:Math.abs,floor:Math.floor,ceil:Math.ceil,round:Math.round,min:Math.min,max:Math.max,pow:(e,t)=>e**+t};var j=class extends Error{pos;constructor(e,t){super(`SafeMath parse error at ${t}: ${e}`),this.pos=t}},at=class{src;vars;i=0;constructor(e,t){this.src=e,this.vars=t}parse(){let e=this.parseExpr();if(this.skipWs(),this.i<this.src.length)throw new j(`unexpected trailing input`,this.i);return this.evalNode(e)}evalNode(e){return typeof e==`number`?()=>e:e}parseExpr(){let e=this.parseTerm();for(;;){this.skipWs();let t=this.peek();if(t===`+`||t===`-`){this.i++;let n=this.parseTerm(),r=t,i=e;e=r===`+`?e=>this.asNum(i,e)+this.asNum(n,e):e=>this.asNum(i,e)-this.asNum(n,e)}else return e}}parseTerm(){let e=this.parseUnary();for(;;){this.skipWs();let t=this.peek();if(t===`*`||t===`/`||t===`%`){this.i++;let n=this.parseUnary(),r=t,i=e;e=r===`*`?e=>this.asNum(i,e)*this.asNum(n,e):r===`/`?e=>this.asNum(i,e)/this.asNum(n,e):e=>this.asNum(i,e)%this.asNum(n,e)}else return e}}parseUnary(){this.skipWs();let e=this.char();if(e===`-`||e===`+`){this.i++;let t=this.parseUnary();return e===`-`?e=>-this.asNum(t,e):e=>this.asNum(t,e)}return this.parsePower()}parsePower(){let e=this.parseAtom();if(this.skipWs(),this.peek()===`^`){this.i++;let t=this.parsePower(),n=e;return e=>this.asNum(n,e)**+this.asNum(t,e)}return e}parseAtom(){this.skipWs();let e=this.char();if(e===`(`){this.i++;let e=this.parseExpr();if(this.skipWs(),this.peek()!==`)`)throw new j(`expected )`,this.i);return this.i++,e}if(e>=`0`&&e<=`9`||e===`.`)return this.parseNumber();if(this.isIdentStart(e))return this.parseIdent();throw new j(`unexpected character '${e}'`,this.i)}parseNumber(){let e=this.i,t=!1;for(;this.i<this.src.length&&/[0-9]/.test(this.src[this.i]);)t=!0,this.i++;if(this.peek()===`.`)for(this.i++;this.i<this.src.length&&/[0-9]/.test(this.src[this.i]);)t=!0,this.i++;if(!t)throw new j(`invalid number '${this.src.slice(e,this.i)}'`,e);if(this.peek()===`e`||this.peek()===`E`){this.i++,(this.peek()===`+`||this.peek()===`-`)&&this.i++;let t=this.i;for(;this.i<this.src.length&&/[0-9]/.test(this.src[this.i]);)this.i++;if(this.i===t)throw new j(`invalid number '${this.src.slice(e,this.i)}'`,e)}let n=this.src.slice(e,this.i),r=Number(n);if(Number.isNaN(r))throw new j(`invalid number '${n}'`,e);return r}parseIdent(){let e=this.i;for(;this.i<this.src.length&&this.isIdentChar(this.src[this.i]);)this.i++;let t=this.src.slice(e,this.i);if(this.skipWs(),this.peek()===`(`){let n=it[t];if(n===void 0)throw new j(`unknown function '${t}'`,e);this.i++;let r=[];if(this.skipWs(),this.peek()===`)`)this.i++;else for(;;){r.push(this.parseExpr()),this.skipWs();let e=this.peek();if(e===`,`){this.i++;continue}if(e===`)`){this.i++;break}throw new j(`expected , or ) in call`,this.i)}return e=>n(...r.map(t=>this.asNum(t,e)))}if(Object.hasOwn(rt,t))return rt[t];if(t===`x`)return e=>e;if(Object.hasOwn(this.vars,t)){let e=this.vars[t];return()=>e}if(/^[a-z]$/.test(t))return()=>1;throw new j(`unknown identifier '${t}'`,e)}asNum(e,t){return typeof e==`number`?e:e(t)}skipWs(){for(;this.i<this.src.length&&/\s/.test(this.src[this.i]);)this.i++}peek(){return this.src[this.i]}char(){let e=this.peek();if(e===void 0)throw new j(`unexpected end of input`,this.i);return e}isIdentStart(e){return e!==void 0&&/[a-zA-Z_]/.test(e)}isIdentChar(e){return/[a-zA-Z0-9_]/.test(e)}};function ot(e,t={}){try{let n={...t.vars};return delete n.x,new at(e,n).parse()}catch{return null}}function st(e,t,n,r=200,i={}){let a=ot(e,{vars:i});if(a===null||!Number.isFinite(t)||!Number.isFinite(n)||n<=t||r<2)return[];let o=[],s=(n-t)/(r-1);for(let e=0;e<r;e++){let n=t+s*e,r=a(n);Number.isFinite(r)&&o.push([n,r])}return o}let ct=`@changfenhuang/dsh-genui/PlotBlock.module.css`;if(typeof document<`u`&&document.querySelector(`style[data-plugin-css=`+JSON.stringify(ct)+`]`)===null){let e=document.createElement(`style`);e.dataset.plugin=`@changfenhuang/dsh-genui`,e.dataset.pluginCss=ct,e.textContent=`._ctrqa_block{--dsl-g-radius-surface:12px;--dsl-g-radius-control:8px;--dsl-g-font-title:13px;--dsl-g-font-meta:12px;--dsl-g-font-data:11px;--dsl-g-gap-md:12px;--dsl-g-gap-sm:8px;--dsl-g-gap-xs:4px;--dsl-g-border:var(--dsw-alias-border-l1,var(--dsw-alias-border-l2,#ffffff1f));--dsl-g-accent:var(--dsw-alias-state-business-primary,#4f8ef7);--dsl-g-accent-soft:color-mix(in srgb, var(--dsl-g-accent) var(--dsl-g-tint), transparent);--dsl-g-tint:8%;--dsl-g-tint-strong:14%;--dsl-g-font-mono:var(--ds-font-family-code,ui-monospace, "SF Mono", monospace);background:var(--dsw-alias-bg-layer-1,var(--dsw-alias-markdown-code-block));border:1px solid var(--dsl-g-border);border-radius:var(--dsl-g-radius-surface);gap:var(--dsl-g-gap-sm);flex-direction:column;padding:14px 16px;display:flex}._ctrqa_title{font-size:var(--dsl-g-font-title);letter-spacing:.01em;color:var(--dsw-alias-label-primary);font-weight:600}._ctrqa_gridLine{stroke:var(--dsw-alias-border-l1,#ffffff12);stroke-width:1px}._ctrqa_axis{stroke:var(--dsw-alias-label-tertiary);stroke-width:1px}._ctrqa_tick{fill:var(--dsw-alias-label-tertiary);font-size:var(--dsl-g-font-data);font-family:var(--dsl-g-font-mono)}._ctrqa_line{fill:none;stroke:var(--dsl-g-accent);stroke-width:2px;stroke-linejoin:round;stroke-linecap:round}._ctrqa_area{stroke:none;fill-opacity:.16}._ctrqa_scatterDot{stroke:var(--dsw-alias-bg-base,#17171a);stroke-width:1px}._ctrqa_legend{gap:var(--dsl-g-gap-md);flex-wrap:wrap;display:flex}._ctrqa_legendItem{align-items:center;gap:var(--dsl-g-gap-xs);font-size:var(--dsl-g-font-meta);color:var(--dsw-alias-label-secondary);display:inline-flex}._ctrqa_legendSwatch{background:var(--dsl-g-accent);border-radius:2px;width:10px;height:3px}._ctrqa_empty{color:var(--dsw-alias-label-tertiary);font-size:var(--dsl-g-font-title);gap:var(--dsl-g-gap-xs);flex-direction:column;padding:14px 0;display:flex}._ctrqa_emptyRow{font-family:var(--dsl-g-font-mono)}._ctrqa_surface{cursor:grab;touch-action:none}._ctrqa_surface:active{cursor:grabbing}._ctrqa_sliders{gap:var(--dsl-g-gap-sm);flex-direction:column;display:flex}._ctrqa_sliderRow{align-items:center;gap:var(--dsl-g-gap-sm);font-size:var(--dsl-g-font-meta);display:flex}._ctrqa_sliderName{color:var(--dsw-alias-label-secondary);white-space:nowrap;text-overflow:ellipsis;min-width:90px;overflow:hidden}._ctrqa_slider{accent-color:var(--dsl-g-accent);cursor:pointer;flex:1;height:4px}._ctrqa_sliderValue{color:var(--dsw-alias-label-primary);font-family:var(--dsl-g-font-mono);text-align:right;min-width:34px}._ctrqa_animBar{align-items:center;gap:var(--dsl-g-gap-md);display:flex}._ctrqa_playBtn{background:var(--dsl-g-accent-soft);border:1px solid color-mix(in srgb, var(--dsl-g-accent) 30%, transparent);width:fit-content;color:var(--dsl-g-accent);border-radius:var(--dsl-g-radius-control);font-size:var(--dsl-g-font-title);cursor:pointer;padding:6px 14px;font-family:inherit;font-weight:600}._ctrqa_playBtn:hover{filter:brightness(1.1)}._ctrqa_animTrack{background:var(--dsw-alias-bg-layer-1);height:5px;box-shadow:inset 0 0 0 1px var(--dsl-g-border);border-radius:999px;flex:1;overflow:hidden}._ctrqa_animFill{background:var(--dsl-g-accent);border-radius:999px;height:100%}._ctrqa_resetBtn{border:1px solid var(--dsl-g-border);width:fit-content;color:var(--dsw-alias-label-secondary);border-radius:var(--dsl-g-radius-control);font-size:var(--dsl-g-font-title);cursor:pointer;background:0 0;padding:6px 14px;font-family:inherit}._ctrqa_resetBtn:hover{border-color:var(--dsl-g-accent);color:var(--dsl-g-accent)}._ctrqa_slidersHead{justify-content:space-between;align-items:center;display:flex}._ctrqa_slidersTitle{font-size:var(--dsl-g-font-meta);color:var(--dsw-alias-label-tertiary)}`,document.head.appendChild(e)}var M={animBar:`_ctrqa_animBar`,animFill:`_ctrqa_animFill`,animTrack:`_ctrqa_animTrack`,area:`_ctrqa_area`,axis:`_ctrqa_axis`,block:`_ctrqa_block`,empty:`_ctrqa_empty`,emptyRow:`_ctrqa_emptyRow`,gridLine:`_ctrqa_gridLine`,legend:`_ctrqa_legend`,legendItem:`_ctrqa_legendItem`,legendSwatch:`_ctrqa_legendSwatch`,line:`_ctrqa_line`,playBtn:`_ctrqa_playBtn`,resetBtn:`_ctrqa_resetBtn`,scatterDot:`_ctrqa_scatterDot`,slider:`_ctrqa_slider`,sliderName:`_ctrqa_sliderName`,sliderRow:`_ctrqa_sliderRow`,sliderValue:`_ctrqa_sliderValue`,sliders:`_ctrqa_sliders`,slidersHead:`_ctrqa_slidersHead`,slidersTitle:`_ctrqa_slidersTitle`,surface:`_ctrqa_surface`,tick:`_ctrqa_tick`,title:`_ctrqa_title`};let lt=[`var(--dsw-static-deepseek-400)`,`var(--dsw-static-green-400)`,`var(--dsw-static-amber-400)`,`var(--dsw-static-red-400)`,`var(--dsw-static-blue-450)`,`var(--dsw-static-deepseek-450)`,`var(--dsw-static-neutral-bluish-400)`,`var(--dsw-static-deepseek-300)`],ut=(e,t,n)=>n??(t>1?lt[e%lt.length]:void 0);function dt(e){let t=1/0,n=-1/0;for(let[,r]of e)r<t&&(t=r),r>n&&(n=r);if(!Number.isFinite(t)||!Number.isFinite(n))return[-1,1];t===n&&(--t,n+=1);let r=(n-t)*.08;return[t-r,n+r]}function ft(e,t,n=5){let r=t-e;if(!Number.isFinite(r)||r<=0)return[];let i=10**Math.floor(Math.log10(r/n)),a=r/n/i,o=i*(a>=7.5?10:a>=3.5?5:a>=1.5?2:1),s=[];for(let n=Math.ceil(e/o)*o;n<=t+o*1e-9;n+=o)s.push(Math.round(n*1e9)/1e9);return s}function pt(e){return Math.abs(e)>=1e5||Math.abs(e)<.001&&e!==0?e.toExponential(1):String(Math.round(e*100)/100)}function mt({points:e,className:t,color:n}){let r=e.length>40?`${e.slice(0,16)}|${e.slice(-16)}`:e;return(0,g.jsx)(`polyline`,{points:e,className:t,style:n===void 0?void 0:{stroke:n}},r)}let ht=(0,m.memo)(function({series:e,xMin:t=-5,xMax:n=5,yMin:r,yMax:i,title:a}){let[o,s]=(0,m.useState)(()=>{let a={};for(let[t,n]of e.entries())for(let e of n.params??[])e!=null&&(a[`${t}:${e.name}`]=e.value);let[o,s]=dt(e.map((e,r)=>{let i={};for(let t of e.params??[])t!=null&&(i[t.name]=a[`${r}:${t.name}`]??t.value);return st(e.expr,t,n,240,i)}).flatMap(e=>e));return{xMin:t,xMax:n,yMin:r??o,yMax:i??s}}),c=(0,m.useRef)(null),[l,u]=(0,m.useState)(()=>({})),d=(()=>{for(let[t,n]of e.entries())for(let e of n.params??[])if(e!=null&&e.animateTo!==void 0)return{si:t,param:e};return null})(),[f,p]=(0,m.useState)(!1),[h,_]=(0,m.useState)(0),v=(0,m.useRef)(null);(0,m.useEffect)(()=>{if(!f||d===null)return;let e=`${d.si}:${d.param.name}`,t=l[e]??d.param.value,n=d.param.animateTo,r=Math.max(0,d.param.durationMs??4e3),i=performance.now(),a=o=>{let s=r===0?1:Math.min(1,Math.max(0,(o-i)/r)),c=1-(1-s)**3,l=t+(n-t)*c;u(t=>({...t,[e]:l})),_(s),s<1?v.current=requestAnimationFrame(a):d.param.loop===!0?(t=d.param.value,i=o,u(n=>({...n,[e]:t})),_(0),v.current=requestAnimationFrame(a)):(v.current=null,p(!1))};return v.current=requestAnimationFrame(a),()=>{v.current!==null&&cancelAnimationFrame(v.current),v.current=null}},[f,d?.si,d?.param.name,d?.param.value,d?.param.animateTo,d?.param.durationMs,d?.param.loop]);let y=o.xMin,b=o.xMax,x=o.yMin,S=o.yMax,C=e=>y+(e-34)/436*(b-y),w=e=>34+(e-y)/(b-y)*436,T=e=>14+(1-(e-x)/(S-x))*182,E=e.map((e,t)=>{let n={};for(let r of e.params??[])r!=null&&(n[r.name]=l[`${t}:${r.name}`]??r.value);return{series:e,points:st(e.expr,y,b,240,n).map(([e,t])=>`${w(e).toFixed(2)},${T(t).toFixed(2)}`).join(` `)}}),D=ft(y,b),O=ft(x,S),ee=E.some(e=>e.points.length>1),te=Number.isFinite(y)&&Number.isFinite(b)&&b>y&&Number.isFinite(S)&&Number.isFinite(x)&&S>x,ne=(e,t,n)=>{let r=ut(t,E.length,e.color)??`var(--dsw-alias-state-business-primary, #4f8ef7)`,i=e.kind??`line`;if(i===`scatter`){let e=n===``?[]:n.split(` `).map(e=>{let[t,n]=e.split(`,`);return[Number(t),Number(n)]});return(0,g.jsx)(`g`,{children:e.map(([e,t],n)=>(0,g.jsx)(`circle`,{cx:e,cy:t,r:2.6,className:M.scatterDot,style:{fill:r}},n))},t)}if(i===`area`){if(n===``)return(0,g.jsx)(mt,{points:``,className:M.line,color:r},t);let e=n.slice(0,n.indexOf(` `)).split(`,`)[0],i=n.slice(n.lastIndexOf(` `)+1).split(`,`)[0],a=T(x),o=`${e},${a.toFixed(2)} ${n} ${i},${a.toFixed(2)}`;return(0,g.jsx)(`polygon`,{points:o,className:M.area,style:{fill:r}},t)}return(0,g.jsx)(mt,{points:n,className:M.line,color:r},t)},re=e=>{c.current={startX:e.clientX,startY:e.clientY,xMin:y,xMax:b},e.target.setPointerCapture?.(e.pointerId)},ie=e=>{let t=c.current;if(t===null)return;let n=t.xMax-t.xMin,r=(t.startX-e.clientX)/436*n;s(e=>({xMin:t.xMin+r,xMax:t.xMax+r,yMin:e.yMin,yMax:e.yMax}))},ae=()=>{c.current=null},oe=(0,m.useRef)(null);(0,m.useEffect)(()=>{let e=oe.current;if(e===null)return;let t=t=>{t.preventDefault();let n=b-y,r=n*(t.deltaY>0?1.15:1/1.15),i=e.getBoundingClientRect(),a=C((t.clientX-i.left)/i.width*480),o=a-(a-y)/n*r;s(e=>({xMin:o,xMax:o+r,yMin:e.yMin,yMax:e.yMax}))};return e.addEventListener(`wheel`,t,{passive:!1}),()=>e.removeEventListener(`wheel`,t)},[y,b]);let se=e.some(e=>(e.params?.length??0)>0);return(0,g.jsxs)(`div`,{className:M.block,"data-genui-plot":!0,children:[a!==void 0&&(0,g.jsx)(`div`,{className:M.title,children:a}),ee&&te?(0,g.jsxs)(`svg`,{width:`100%`,viewBox:`0 0 480 220`,role:`img`,"aria-label":a??`function plot`,className:M.surface,ref:oe,onPointerDown:re,onPointerMove:ie,onPointerUp:ae,onPointerLeave:ae,children:[O.map(e=>(0,g.jsxs)(`g`,{children:[(0,g.jsx)(`line`,{x1:34,x2:470,y1:T(e),y2:T(e),className:M.gridLine}),(0,g.jsx)(`text`,{x:28,y:T(e)+4,className:M.tick,textAnchor:`end`,children:pt(e)})]},`y${e}`)),D.map(e=>(0,g.jsxs)(`g`,{children:[(0,g.jsx)(`line`,{x1:w(e),x2:w(e),y1:14,y2:196,className:M.gridLine}),(0,g.jsx)(`text`,{x:w(e),y:210,className:M.tick,textAnchor:`middle`,children:pt(e)})]},`x${e}`)),(0,g.jsx)(`line`,{x1:34,x2:470,y1:196,y2:196,className:M.axis}),(0,g.jsx)(`line`,{x1:34,x2:34,y1:14,y2:196,className:M.axis}),E.map(({series:e,points:t},n)=>ne(e,n,t))]}):(0,g.jsx)(`div`,{className:M.empty,children:e.map((e,t)=>(0,g.jsxs)(`div`,{className:M.emptyRow,children:[e.expr,` — 无法绘制(表达式无效或范围非法)`]},t))}),se&&(0,g.jsxs)(`div`,{className:M.sliders,children:[(0,g.jsxs)(`div`,{className:M.slidersHead,children:[(0,g.jsx)(`span`,{className:M.slidersTitle,children:`参数调节`}),(0,g.jsx)(`button`,{type:`button`,className:M.resetBtn,onClick:()=>{p(!1);let t={};for(let[n,r]of e.entries())for(let e of r.params??[])e!=null&&(t[`${n}:${e.name}`]=e.value);u(t),_(0)},children:`↺ 重置`})]}),e.map((e,t)=>(e.params??[]).map(n=>{if(n==null)return null;let r=`${t}:${n.name}`,i=l[r]??n.value;return(0,g.jsxs)(`label`,{className:M.sliderRow,children:[(0,g.jsxs)(`span`,{className:M.sliderName,children:[e.label??e.expr,` · `,n.name]}),(0,g.jsx)(`input`,{type:`range`,className:M.slider,min:n.min??0,max:n.max??10,step:n.step??.1,value:i,onChange:e=>{let t=Number(e.currentTarget.value);u(e=>({...e,[r]:t}))}}),(0,g.jsx)(`span`,{className:M.sliderValue,children:Math.round(i*100)/100})]},r)}))]}),d!==null&&(0,g.jsxs)(`div`,{className:M.animBar,children:[(0,g.jsx)(`button`,{type:`button`,className:M.playBtn,onClick:()=>{f?p(!1):(u(e=>({...e,[`${d.si}:${d.param.name}`]:d.param.value})),_(0),p(!0))},children:f?`⏸ 暂停`:`▶ 播放动画`}),f&&(0,g.jsx)(`div`,{className:M.animTrack,children:(0,g.jsx)(`div`,{className:M.animFill,style:{width:`${h*100}%`}})})]}),(e.length>1||se)&&(0,g.jsx)(`div`,{className:M.legend,children:e.map((t,n)=>(0,g.jsxs)(`span`,{className:M.legendItem,children:[(0,g.jsx)(`span`,{className:M.legendSwatch,style:{background:ut(n,e.length,t.color)??`var(--dsw-alias-state-business-primary, #4f8ef7)`}}),t.label??t.expr]},n))})]})});function gt(e){let t=window.__DSH_BOOT__?.entries?.find(e=>e.id===vt)?.rev;return`${yt}/${e}${t===void 0?``:`?rev=${t}`}`}function _t(e){let t=`${e}.js`,n=bt.get(t);if(n!==void 0)return n;let r=new Promise((n,r)=>{let i=document.createElement(`script`);i.src=gt(t),i.async=!0,i.onload=()=>{let i=(window.__GenuiAssets__??{})[e];if(i===void 0){r(Error(`genui asset '${t}' loaded but registered no '${e}' engine`));return}n(i)},i.onerror=()=>{r(Error(`genui asset '${t}' failed to load (host asset route missing?)`))},document.head.appendChild(i)});return bt.set(t,r),r}var vt,yt,bt,xt=l((()=>{vt=`@changfenhuang/dsh-genui`,yt=`/plugins/${vt}/assets`,bt=new Map}));function St(e){if(Tt.test(e))throw Error(`mermaid output failed the sanitization check; refusing to render`)}function Ct(e){let t=/^([A-Za-z]+)/.exec(e.trim())?.[1]??``;if(t!==`graph`&&t!==`flowchart`)return e;let n=e.replace(/`/g,``).replace(/<br\s*\/?>/gi,` `),r=/(--|==|-\.)(?!>)[ \t]*([^-\n]|-(?!--))*?[ \t]*(-->|==>|\.->)/g,i=[],a=n.replace(r,e=>(i.push(e),`\uE000${i.length-1}\uE001`)),o=/\|([^|\n]*[\[\]][^|\n]*)\|/g,s=[];return a.replace(o,(e,t)=>{let n=t.trim();return n.includes(`"`)?e:(s.push(n),`\uE002${s.length-1}\uE003`)}).replace(/([\[\(])([^\[\]\(\)\{\}"'\n]*)([\]\)])/g,(e,t,n,r)=>{let i=n.trim();return i===``?e:/[\u4e00-\u9fff\u3040-\u30ff\uac00-\ud7af]/.test(i)||/\s/.test(i)?`${t}"${i}"${r}`:e}).replace(/\uE000(\d+)\uE001/g,(e,t)=>i[Number(t)]??e).replace(/\uE002(\d+)\uE003/g,(e,t)=>{let n=s[Number(t)];return n===void 0?e:`|"${n}"|`})}function wt(e){let t=e.trim(),n=/^([A-Za-z]+)/.exec(t)?.[1]??``;return n===`graph`||n===`flowchart`||!Et.test(t)?e:`graph TD\n${t}`}var Tt,Et,Dt=l((()=>{Tt=/<script|[\s"']on[a-z]+\s*=|javascript:/i,Et=/-->(?!>)|==>|-\.->/})),Ot=u({assertSafeSvg:()=>St,ensureFlowchartKind:()=>wt,renderMermaid:()=>kt,repairMermaidSource:()=>Ct});async function kt(e){return(await _t(`mermaid`)).renderMermaid(e)}var At=l((()=>{xt(),Dt()})),jt=u({mountScene:()=>Mt});async function Mt(e,t){return(await _t(`three`)).mountScene(e,t)}var Nt=l((()=>{xt()}));let Pt={info:E.calloutInfo,success:E.calloutSuccess,warning:E.calloutWarning,error:E.calloutError},Ft=(0,m.memo)(function({node:e}){let t=e.tone??`info`,n=Pt[t]??E.calloutInfo;return(0,g.jsxs)(`div`,{className:`${E.callout} ${n}`,"data-genui-callout":!0,children:[e.title!==void 0&&(0,g.jsx)(`div`,{className:E.calloutTitle,children:e.title}),(0,g.jsx)(`div`,{className:E.calloutBody,children:e.content})]})}),It=(0,m.memo)(function({steps:e}){let t=e.steps.slice(0,A.maxSteps),n=e.current??t.length;return(0,g.jsx)(`ol`,{className:E.steps,children:t.map((e,t)=>{let r=t<n,i=t===n;return(0,g.jsxs)(`li`,{className:`${E.step} ${r?E.stepDone:``} ${i?E.stepActive:``}`,children:[(0,g.jsx)(`span`,{className:E.stepMarker,children:r?`✓`:String(t+1)}),(0,g.jsxs)(`span`,{className:E.stepContent,children:[(0,g.jsx)(`span`,{className:E.stepTitle,children:e.title}),e.desc!==void 0&&(0,g.jsx)(`span`,{className:E.stepDesc,children:e.desc})]})]},t)})})}),Lt=(0,m.memo)(function({node:e}){let t=e.pairs.slice(0,A.maxKeyValuePairs);return(0,g.jsx)(`dl`,{className:E.keyvalue,children:t.map((e,t)=>(0,g.jsxs)(`div`,{className:E.kvRow,children:[(0,g.jsx)(`dt`,{className:E.kvKey,children:e.key}),(0,g.jsx)(`dd`,{className:E.kvValue,children:e.value})]},t))})}),Rt=(0,m.memo)(function({plot:e}){let t=(0,m.useMemo)(()=>e.series.slice(0,A.maxPlotSeries).map(e=>({expr:e.expr,label:e.label,color:e.color,kind:e.kind,params:e.params})),[e]);return(0,g.jsx)(ht,{series:t,xMin:e.xMin,xMax:e.xMax,yMin:e.yMin,yMax:e.yMax,title:e.title})}),zt=(0,m.memo)(function({node:e}){return(0,g.jsx)(p.DiffBlock,{diffs:e.diffs,labels:b})}),Bt=(0,m.memo)(function({node:e}){let t=e.value;return typeof t!=`object`||!t?(0,g.jsx)(`div`,{className:E.jsonScalar,children:String(t)}):(0,g.jsx)(p.JsonTree,{data:t,label:`JSON`,labels:S,copyable:!0})}),Vt=(0,m.memo)(function({node:e}){return(0,g.jsx)(p.CodeBlock,{...x,code:e.code.slice(0,A.maxCode),lang:e.lang})});function Ht({tabs:e,onAction:t,depth:n=0,answers:r}){let[i,a]=(0,m.useState)(0),o=(0,m.useId)(),s=e.tabs.slice(0,A.maxTabs),c=s.length===0?0:Math.min(i,s.length-1),l=s[c];(0,m.useEffect)(()=>{c!==i&&a(c)},[i,c]);let u=e=>{if(s.length===0)return;let t=(e+s.length)%s.length;a(t),document.getElementById(`${o}-tab-${t}`)?.focus()};return(0,g.jsxs)(`div`,{className:E.tabs,children:[(0,g.jsx)(`div`,{className:E.tabBar,role:`tablist`,"aria-orientation":`horizontal`,onKeyDown:e=>{e.key===`ArrowRight`?(e.preventDefault(),u(c+1)):e.key===`ArrowLeft`?(e.preventDefault(),u(c-1)):e.key===`Home`?(e.preventDefault(),u(0)):e.key===`End`&&(e.preventDefault(),u(s.length-1))},children:s.map((e,t)=>(0,g.jsx)(`button`,{id:`${o}-tab-${t}`,type:`button`,role:`tab`,"aria-selected":t===c,"aria-controls":`${o}-panel-${t}`,tabIndex:t===c?0:-1,className:`${E.tab} ${t===c?E.tabActive:``}`,onClick:()=>a(t),children:e.label},t))}),l!==void 0&&(0,g.jsx)(`div`,{className:E.col,role:`tabpanel`,id:`${o}-panel-${c}`,"aria-labelledby":`${o}-tab-${c}`,children:l.items.map((e,i)=>I(e,i,t,n+1,r))})]})}function Ut({node:e,onAction:t,depth:n=0,answers:r}){let[i,a]=(0,m.useState)(0),o=(0,m.useId)(),s=e.items.slice(0,A.maxAccordionItems);return(0,g.jsx)(`div`,{className:E.accordion,children:s.map((e,s)=>(0,g.jsxs)(`div`,{className:E.accItem,children:[(0,g.jsxs)(`button`,{type:`button`,className:E.accHead,id:`${o}-head-${s}`,"aria-expanded":i===s,"aria-controls":`${o}-body-${s}`,onClick:()=>a(i===s?null:s),children:[(0,g.jsx)(`span`,{className:E.accTitle,children:e.title}),(0,g.jsx)(`span`,{className:E.accChevron,children:i===s?`▾`:`▸`})]}),i===s&&(0,g.jsx)(`div`,{className:E.accBody,id:`${o}-body-${s}`,"aria-labelledby":`${o}-head-${s}`,children:e.items.map((e,i)=>I(e,i,t,n+1,r))})]},s))})}async function Wt(e){let t=typeof navigator.clipboard?.writeText==`function`,n=await(0,p.writeClipboard)(e);if(n||!t)return n;let r=typeof document.execCommand==`function`?document.execCommand.bind(document):void 0;if(r===void 0)return!1;let i=document.createElement(`textarea`);i.value=e,i.setAttribute(`readonly`,``),i.style.position=`fixed`,i.style.left=`-9999px`,document.body.appendChild(i),i.select();try{return r(`copy`)}catch{return!1}finally{i.remove()}}let Gt=(0,m.memo)(function({node:e}){let[t,n]=(0,m.useState)(!1);return(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)(`button`,{type:`button`,className:`${E.copyChip} ${t?E.copyChipDone:``}`,onClick:()=>{Wt(e.text).then(e=>{e&&(n(!0),setTimeout(()=>n(!1),1500))})},children:t?`✓ 已复制`:e.label??`复制`}),(0,g.jsx)(`span`,{className:E.visuallyHidden,role:`status`,children:t?`已复制到剪贴板`:``})]})}),Kt=(0,m.memo)(function({node:e}){let[t,n]=(0,m.useState)({status:`loading`}),r=e.code.slice(0,A.maxMermaid);return(0,m.useEffect)(()=>{let e=!0;return n({status:`loading`}),(async()=>{try{let t=await(await Promise.resolve().then(()=>(At(),Ot))).renderMermaid(r);e&&n({status:`ready`,html:t})}catch{e&&n({status:`error`})}})(),()=>{e=!1}},[r]),t.status===`error`?(0,g.jsxs)(`div`,{className:E.mermaidFallback,children:[(0,g.jsx)(`pre`,{children:r}),(0,g.jsx)(`div`,{className:E.mermaidErr,children:`图语法有误,已降级显示源码`})]}):t.status===`loading`?(0,g.jsxs)(`div`,{className:E.mermaidFallback,children:[(0,g.jsx)(`pre`,{children:r}),(0,g.jsx)(`div`,{className:E.mermaidHint,children:`渲染中…`})]}):(0,g.jsx)(`div`,{className:E.mermaid,dangerouslySetInnerHTML:{__html:t.html},"data-genui-mermaid":!0})}),qt=(0,m.memo)(function({node:e}){let[t,n]=(0,m.useState)(`loading`),r=(0,m.useRef)(null),i=e.meshes.length>A.maxMeshes?{...e,meshes:e.meshes.slice(0,A.maxMeshes)}:e;return(0,m.useEffect)(()=>{let e=!0,t;return Promise.resolve().then(()=>(Nt(),jt)).then(async a=>{if(!(!e||r.current===null))try{t=await a.mountScene(r.current,i),e&&n(`ready`)}catch{e&&n(`error`)}}),()=>{e=!1,t?.()}},[i]),(0,g.jsxs)(`div`,{className:E.scene3dWrap,"data-genui-scene3d":!0,children:[e.title!==void 0&&(0,g.jsx)(`div`,{className:E.scene3dTitle,children:e.title}),(0,g.jsx)(`div`,{ref:r,className:E.scene3dCanvas}),t===`loading`&&(0,g.jsx)(`div`,{className:E.scene3dHint,children:`加载 3D 场景…`}),t===`error`&&(0,g.jsx)(`div`,{className:E.scene3dHint,children:`3D 渲染失败`})]})}),Jt=(0,m.memo)(function({node:e}){let t=e.items.slice(0,A.maxTimelineItems);return(0,g.jsx)(`div`,{className:E.timeline,children:t.map((e,n)=>(0,g.jsxs)(`div`,{className:E.tlItem,children:[(0,g.jsxs)(`div`,{className:E.tlRail,children:[(0,g.jsx)(`span`,{className:E.tlDot}),n<t.length-1&&(0,g.jsx)(`span`,{className:E.tlLine})]}),(0,g.jsxs)(`div`,{className:E.tlBody,children:[(0,g.jsxs)(`div`,{className:E.tlHead,children:[(0,g.jsx)(`span`,{className:E.tlTitle,children:e.title}),e.time!==void 0&&(0,g.jsx)(`span`,{className:E.tlTime,children:e.time})]}),e.desc!==void 0&&(0,g.jsx)(`div`,{className:E.tlDesc,children:e.desc})]})]},n))})}),Yt=(0,m.memo)(function({node:e}){let[t,n]=(0,m.useState)(new Set),r=e=>{n(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},i=(e,n,a)=>{if(n>A.maxTreeDepth)return null;let o=e.type===`dir`||e.children!==void 0&&e.children.length>0,s=o&&t.has(a);return(0,g.jsxs)(`div`,{className:E.ftRow,style:{paddingLeft:`${n*16}px`},children:[(0,g.jsxs)(`button`,{type:`button`,className:E.ftNameBtn,"aria-expanded":o?!s:void 0,onClick:o?()=>r(a):void 0,children:[(0,g.jsx)(`span`,{className:`${E.ftIcon} ${o?E.ftIconDir:``}`,"aria-hidden":!0,children:o?s?`▸`:`▾`:`·`}),(0,g.jsx)(`span`,{className:`${E.ftName} ${o?E.ftDir:``}`,children:e.name})]}),o&&!s&&(e.children??[]).map((e,t)=>i(e,n+1,`${a}/${t}`))]},a)};return(0,g.jsx)(`div`,{className:E.fileTree,children:e.items.slice(0,A.maxListItems).map((e,t)=>i(e,0,String(t)))})}),Xt=(0,m.memo)(function({node:e,onAction:t}){let[n,r]=(0,m.useState)(null),i=e.options.slice(0,A.maxQuizOptions),a=n!==null,o=n===null?void 0:i[n],s=o?.correct===!0,c=e.action;return(0,g.jsxs)(`div`,{className:E.quiz,"data-genui-quiz":!0,children:[(0,g.jsx)(`div`,{className:E.quizQuestion,children:e.question}),(0,g.jsx)(`div`,{className:E.quizOptions,children:i.map((i,o)=>{let s=n===o,l=a?s?i.correct===!0?E.quizOptCorrect:E.quizOptWrong:i.correct===!0?E.quizOptReveal:E.quizOpt:E.quizOpt;return(0,g.jsxs)(`button`,{type:`button`,className:l,disabled:a,onClick:()=>{r(o),c!==void 0&&t!==void 0&&t(c,{type:`quiz`,question:e.question,answer:i.label,correct:i.correct===!0})},children:[(0,g.jsx)(`span`,{className:E.quizMarker,children:a&&(i.correct===!0?`✓`:s?`✗`:``)}),i.label]},o)})}),a&&(0,g.jsxs)(`div`,{className:E.quizResult,"aria-live":`polite`,children:[(0,g.jsxs)(`div`,{className:s?E.quizCorrectMsg:E.quizWrongMsg,children:[s?`✓ 回答正确!`:`✗ 再想想看`,o?.feedback!==void 0&&(0,g.jsx)(`div`,{className:E.quizFeedback,children:o.feedback})]}),e.explanation!==void 0&&(0,g.jsx)(`div`,{className:E.quizExplanation,children:e.explanation}),(0,g.jsx)(`button`,{type:`button`,className:E.quizRetry,onClick:()=>r(null),children:`重新作答`})]})]})}),Zt=(0,m.memo)(function({node:e}){let t=e.items.slice(0,A.maxBreadcrumbItems);return(0,g.jsx)(`nav`,{className:E.breadcrumb,"aria-label":`breadcrumb`,children:t.map((e,n)=>(0,g.jsxs)(`span`,{className:E.bcItem,children:[(0,g.jsx)(`span`,{className:`${E.bcText} ${n===t.length-1?E.bcCurrent:``}`,children:e}),n<t.length-1&&(0,g.jsx)(`span`,{className:E.bcSep,children:`/`})]},n))})}),Qt=[`architecture`,`it-state`,`high-level`,`process`,`medallion`,`data-flow`,`dp-integration`];function $t(e){return Qt.includes(e)}function en(e,t){let n=e%t,r=Math.floor(e/t);return{x:40+n*160,y:40+r*96,w:128,h:64}}function tn(e){return e.map((e,t)=>({node:e,box:{x:40,y:40+t*96,w:128,h:64}}))}function nn(e){return e.map((e,t)=>({node:e,box:{x:40+t*160,y:40,w:128,h:64}}))}function rn(e,t=3){return e.map((e,n)=>{let r=Math.floor(n/t);return{node:e,box:{x:40+n%t*160,y:40+r*96,w:128,h:64}}})}function an(e,t){let n=new Map(e.map(e=>[e.id,e])),r=new Map,i=[];for(let a of e){let e=t(a.id);if(e===void 0||!n.has(e))i.push(a.id);else{let t=r.get(e)??[];t.push(a.id),r.set(e,t)}}let a=new Map,o=new Map,s=(e,t)=>{let n=o.get(e)??0,i=r.get(e)??[],c=t;if(i.length===0)return a.set(e,{x:t,y:40+n*112,w:128,h:64}),t+128;for(let e of i)c=s(e,c);let l=a.get(i[0]),u=a.get(i[i.length-1]),d=(l.x+u.x+u.w)/2-64;return a.set(e,{x:Math.max(t,d),y:40+n*112,w:128,h:64}),c},c=40;for(let e of i)c=s(e,c)+32;return e.map(e=>({node:e,box:a.get(e.id)??{x:40,y:40,w:128,h:64}}))}function on(e,t){let n=e.nodes,r=e.edges??[],i;i=$t(e.kind)?n.map((e,t)=>({node:e,box:{x:e.x??40+t%3*160,y:e.y??40+Math.floor(t/3)*96,w:e.w??128,h:e.h??64}})):e.kind===`tree`||e.kind===`org-chart`||e.kind===`nested`?an(n,t??(()=>void 0)):e.kind===`layers`||e.kind===`pyramid`||e.kind===`gantt`?rn(n):e.kind===`flowchart`||e.kind===`process`||e.kind===`sequence`?tn(n):e.kind===`timeline`||e.kind===`line`||e.kind===`scatter`||e.kind===`bar`?nn(n):n.map((e,t)=>({node:e,box:en(t,3)}));let a=0,o=0;for(let e of i)a=Math.max(a,e.box.x+e.box.w),o=Math.max(o,e.box.y+e.box.h);a=Math.max(320,Math.ceil((a+40)/4)*4),o=Math.max(200,Math.ceil((o+40)/4)*4);let s=r.map(e=>({edge:e,fromId:e.from,toId:e.to}));return{nodes:i,edges:s,width:a,height:o}}function sn(e){return{x:e.x+e.w/2,y:e.y+e.h/2}}function cn(e,t,n){if(n===`left`)return{x:e.x,y:e.y+e.h/2,port:`left`};if(n===`right`)return{x:e.x+e.w,y:e.y+e.h/2,port:`right`};if(n===`top`)return{x:e.x+e.w/2,y:e.y,port:`top`};if(n===`bottom`)return{x:e.x+e.w/2,y:e.y+e.h,port:`bottom`};let r=sn(e),i=sn(t),a=i.x-r.x,o=i.y-r.y;return Math.abs(a)>=Math.abs(o)?a>=0?{x:e.x+e.w,y:e.y+e.h/2,port:`right`}:{x:e.x,y:e.y+e.h/2,port:`left`}:o>=0?{x:e.x+e.w/2,y:e.y+e.h,port:`bottom`}:{x:e.x+e.w/2,y:e.y,port:`top`}}function ln(e,t){if(e.x===t.x||e.y===t.y)return`M ${e.x} ${e.y} L ${t.x} ${t.y}`;let n=e.port===`left`||e.port===`right`,r=t.port===`left`||t.port===`right`;if(n&&r){let n=(e.x+t.x)/2,r=e.port===`right`?1:-1;return`M ${e.x} ${e.y} H ${n-r*8} Q ${n} ${e.y} ${n} ${e.y+8} V ${t.y-8} Q ${n} ${t.y} ${n+8} ${t.y} H ${t.x}`}if(!n&&!r){let n=(e.y+t.y)/2,r=e.port===`bottom`?1:-1;return`M ${e.x} ${e.y} V ${n-r*8} Q ${e.x} ${n} ${e.x+8} ${n} H ${t.x-8} Q ${t.x} ${n} ${t.x} ${n+8} V ${t.y}`}if(n){let n=e.port===`right`?1:-1;return`M ${e.x} ${e.y} H ${e.x+n*8*2} Q ${e.x+n*8*2} ${e.y} ${e.x+n*8*2} ${t.y} V ${t.y} H ${t.x}`}let i=e.port===`bottom`?1:-1;return`M ${e.x} ${e.y} V ${e.y+i*8*2} Q ${e.x} ${e.y+i*8*2} ${t.x} ${e.y+i*8*2} H ${t.x} V ${t.y}`}function un(e,t,n){let r=cn(e,t,n?.fromPort),i=cn(t,e,n?.toPort);return{d:ln(r,i),a:r,b:i}}function dn(e,t){let n=(e.x+t.x)/2,r=(e.y+t.y)/2,i=Math.abs(e.x-t.x)<Math.abs(e.y-t.y);return i?{cx:n+(t.x>=e.x?1:-1)*16,cy:r,maskY:r-6,vertical:i}:{cx:n,cy:r,maskY:r-20,vertical:i}}let fn={paper:`#f5f5f5`,paper2:`#ececec`,ink:`#2d3142`,muted:`#4f5d75`,soft:`#7a8399`,rule:`rgba(45,49,66,0.12)`,accent:`#eb6c36`,accentTint:`rgba(235,108,54,0.08)`,link:`#2e5aa8`},pn={paper:`#2d3142`,paper2:`#393e53`,ink:`#f5f5f5`,muted:`#bfc0c0`,soft:`#8e98ac`,rule:`rgba(245,245,245,0.12)`,accent:`#f08a59`,accentTint:`rgba(240,138,89,0.10)`,link:`#6a95d8`};function mn(e,t){let n=e===`dark`?pn:fn;return t===void 0?n:{paper:t.paper??n.paper,paper2:t[`paper-2`]??n.paper2,ink:t.ink??n.ink,muted:t.muted??n.muted,soft:t.soft??n.soft,rule:t.rule??n.rule,accent:t.accent??n.accent,accentTint:t[`accent-tint`]??n.accentTint,link:t.link??n.link}}function hn(e,t){switch(e){case`focal`:return{fill:t.accentTint,stroke:t.accent};case`store`:return{fill:N(t.ink,.05),stroke:t.muted};case`external`:return{fill:N(t.ink,.03),stroke:N(t.ink,.3)};case`input`:return{fill:N(t.muted,.1),stroke:t.soft};case`optional`:return{fill:N(t.ink,.02),stroke:N(t.ink,.2),dashed:!0};case`security`:return{fill:N(t.accent,.05),stroke:N(t.accent,.5),dashed:!0};default:return{fill:`#ffffff`,stroke:t.ink}}}function gn(e,t){switch(e){case`accent`:return t.accent;case`link`:return t.link;default:return t.muted}}function N(e,t){if(e.startsWith(`#`)){let n=e.slice(1),r=n.length===3?n.split(``).map(e=>e+e).join(``):n;return`rgba(${parseInt(r.slice(0,2),16)},${parseInt(r.slice(2,4),16)},${parseInt(r.slice(4,6),16)},${t})`}return e.replace(/rgba?\(([^)]*)\)/,(n,r)=>{let i=r.split(`,`).map(e=>e.trim());return i.length===3?`rgba(${i.join(`,`)},${t})`:i.length===4?`rgba(${i[0]},${i[1]},${i[2]},${t})`:e})}let _n=`'Geist', -apple-system, 'Segoe UI', sans-serif`,P=`'Geist Mono', ui-monospace, 'SF Mono', monospace`;function vn(e){let t=new Map;for(let n of e)t.has(n.to)||t.set(n.to,n.from);return e=>t.get(e)}function yn(e,t,n,r,i,a,o){let s=hn(r,o),c=e.x+e.w/2,l=e.y+(e.h-64)/2+28,u=e.y+(e.h-64)/2+44,d=Math.min(44,Math.max(24,(i??``).length*7+8));return(0,g.jsxs)(`g`,{children:[(0,g.jsx)(`rect`,{x:e.x,y:e.y,width:e.w,height:e.h,rx:6,fill:o.paper}),(0,g.jsx)(`rect`,{x:e.x,y:e.y,width:e.w,height:e.h,rx:6,fill:s.fill,stroke:s.stroke,strokeWidth:1,strokeDasharray:s.dashed===!0?`5,4`:void 0}),i!==void 0&&(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)(`rect`,{x:e.x+8,y:e.y+6,width:d,height:12,rx:2,fill:`transparent`,stroke:N(s.stroke,.4),strokeWidth:.8}),(0,g.jsx)(`text`,{x:e.x+8+d/2,y:e.y+15,fill:N(s.stroke,.8),fontSize:7,fontFamily:P,textAnchor:`middle`,letterSpacing:.8,children:i})]}),(0,g.jsx)(`text`,{x:e.x+e.w-6,y:e.y+e.h-6,fill:N(s.stroke,.12),fontSize:24,fontWeight:600,fontFamily:P,textAnchor:`end`,children:String(a).padStart(2,`0`)}),(0,g.jsx)(`text`,{x:c,y:l,fill:o.ink,fontSize:12,fontWeight:600,fontFamily:_n,textAnchor:`middle`,children:t}),n!==void 0&&(0,g.jsx)(`text`,{x:c,y:u,fill:o.soft,fontSize:9,fontFamily:P,textAnchor:`middle`,children:n})]})}function bn(e,t,n,r){let i=un(e.from,e.to),a=gn(e.kind,n),o=e.kind===`dashed`,s=e.kind===`accent`?1.4:1.2,c=dn(i.a,i.b);return(0,g.jsxs)(`g`,{children:[(0,g.jsx)(`path`,{d:i.d,fill:`none`,stroke:a,strokeWidth:s,strokeDasharray:o?`5,4`:void 0,markerEnd:`url(#${r})`}),e.label!==void 0&&(0,g.jsxs)(`g`,{children:[(0,g.jsx)(`rect`,{x:c.cx-(e.label.length*5+8)/2,y:c.maskY,width:e.label.length*5+8,height:12,rx:2,fill:n.paper}),(0,g.jsx)(`text`,{x:c.cx,y:c.maskY+9,fill:n.soft,fontSize:8,fontFamily:P,textAnchor:`middle`,letterSpacing:.5,children:e.label})]})]},t)}function xn(e,t){return(0,g.jsxs)(`defs`,{children:[(0,g.jsx)(`marker`,{id:`${e}-arrow`,markerWidth:8,markerHeight:6,refX:7,refY:3,orient:`auto`,children:(0,g.jsx)(`polygon`,{points:`0 0, 8 3, 0 6`,fill:t.muted})}),(0,g.jsx)(`marker`,{id:`${e}-arrow-accent`,markerWidth:8,markerHeight:6,refX:7,refY:3,orient:`auto`,children:(0,g.jsx)(`polygon`,{points:`0 0, 8 3, 0 6`,fill:t.accent})}),(0,g.jsx)(`marker`,{id:`${e}-arrow-link`,markerWidth:8,markerHeight:6,refX:7,refY:3,orient:`auto`,children:(0,g.jsx)(`polygon`,{points:`0 0, 8 3, 0 6`,fill:t.link})})]})}function Sn(e,t){return(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)(`defs`,{children:(0,g.jsx)(`pattern`,{id:`${e}-dots`,width:22,height:22,patternUnits:`userSpaceOnUse`,children:(0,g.jsx)(`circle`,{cx:1,cy:1,r:.9,fill:N(t.ink,.1)})})}),(0,g.jsx)(`rect`,{width:`100%`,height:`100%`,fill:t.paper}),(0,g.jsx)(`rect`,{width:`100%`,height:`100%`,fill:`url(#${e}-dots)`,opacity:.55})]})}function Cn(e,t){let n=e.label.length*7+12,r=e.x+e.w/2;return(0,g.jsxs)(`g`,{children:[(0,g.jsx)(`rect`,{x:e.x,y:e.y,width:e.w,height:e.h,rx:8,fill:N(t.ink,.02),stroke:N(t.ink,.1),strokeWidth:.8}),(0,g.jsx)(`rect`,{x:r-n/2,y:e.y+4,width:n,height:12,rx:2,fill:t.paper}),(0,g.jsx)(`text`,{x:r,y:e.y+13,fill:N(t.ink,.4),fontSize:7,fontFamily:P,textAnchor:`middle`,letterSpacing:1.2,children:e.label})]})}function wn(e){return(0,g.jsxs)(`g`,{children:[(0,g.jsx)(`line`,{x1:40,y1:0,x2:1e3,y2:0,stroke:N(e.ink,.1),strokeWidth:.8}),(0,g.jsx)(`text`,{x:40,y:16,fill:e.soft,fontSize:8,fontFamily:P,letterSpacing:1.6,children:`LEGEND`}),[{label:`Focal`,type:`focal`},{label:`Backend`,type:`backend`},{label:`Store`,type:`store`},{label:`External`,type:`external`},{label:`Optional`,type:`optional`},{label:`Security`,type:`security`}].map((t,n)=>{let r=hn(t.type,e),i=40+n*170;return(0,g.jsxs)(`g`,{children:[(0,g.jsx)(`rect`,{x:i,y:32,width:14,height:10,rx:2,fill:r.fill,stroke:r.stroke,strokeWidth:1,strokeDasharray:r.dashed===!0?`3,2`:void 0}),(0,g.jsx)(`text`,{x:i+20,y:41,fill:e.soft,fontSize:8.5,fontFamily:_n,children:t.label})]},t.label)})]})}function Tn(e,t){return e===`accent`?`${t}-arrow-accent`:e===`link`?`${t}-arrow-link`:`${t}-arrow`}let En=0;function Dn(){return En+=1,`genui-diagram-${En}`}function On({node:e}){let t=(0,m.useMemo)(Dn,[]),n=(0,m.useMemo)(()=>mn(e.variant,e.theme),[e.variant,e.theme]),r=(0,m.useMemo)(()=>on(e,vn(e.edges??[])),[e]),i=(0,m.useMemo)(()=>new Map(r.nodes.map(e=>[e.node.id,e.box])),[r]),a=`${t}-title`,o=`${t}-caption`,s=`${t}-desc`,c=r.nodes.slice(0,A.maxDiagramNodes),l=r.edges.slice(0,A.maxDiagramEdges),u=(e.zones??[]).slice(0,A.maxDiagramZones),d=0,f=A.maxDiagramFocal,p=r.height,h=p+56+24;return(0,g.jsxs)(`figure`,{className:`genui-diagram`,"data-genui-diagram":!0,children:[e.title!==void 0&&(0,g.jsx)(`figcaption`,{id:o,style:{fontFamily:`Instrument Serif, 'Times New Roman', serif`,fontSize:20,marginBottom:8,color:n.ink},children:e.title}),(0,g.jsxs)(`svg`,{role:`img`,"aria-labelledby":a,"aria-describedby":s,viewBox:`0 0 ${r.width} ${h}`,style:{maxWidth:`100%`,height:`auto`,background:n.paper},children:[(0,g.jsx)(`title`,{id:a,children:e.title??e.kind}),(0,g.jsx)(`desc`,{id:s,children:`${e.kind} diagram with ${c.length} nodes and ${l.length} connectors`}),xn(t,n),Sn(t,n),(0,g.jsx)(`g`,{children:u.map((e,t)=>(0,g.jsx)(`g`,{children:Cn({label:e.label,x:e.x??0,y:e.y??0,w:e.w??100,h:e.h??100},n)},`zone-${t}`))}),(0,g.jsx)(`g`,{children:l.map((e,r)=>{let a=i.get(e.fromId),o=i.get(e.toId);return a===void 0||o===void 0?null:bn({from:a,to:o,label:e.edge.label,kind:e.edge.kind},r,n,Tn(e.edge.kind,t))})}),(0,g.jsx)(`g`,{children:c.map((e,t)=>{let r=e.node.type===`focal`&&d>=f?void 0:e.node.type;return e.node.type===`focal`&&(d+=1),(0,g.jsx)(`g`,{children:yn(e.box,e.node.label,e.node.sub,r,e.node.tag,t+1,n)},e.node.id)})}),(0,g.jsx)(`g`,{transform:`translate(0, ${p+8})`,children:wn(n)})]})]})}function kn({node:e}){let[t,n]=(0,m.useState)(!1);return(0,g.jsxs)(`figure`,{className:E.media,children:[e.alt!==void 0&&(0,g.jsx)(`figcaption`,{className:E.mediaLabel,children:e.alt}),t?(0,g.jsx)(`div`,{className:E.mediaError,role:`alert`,children:`图片无法加载`}):(0,g.jsx)(`img`,{className:E.mediaPlayer,src:e.src,alt:e.alt??`图片`,loading:`lazy`,decoding:`async`,style:{maxHeight:`min(70vh, 720px)`,objectFit:`contain`},onError:()=>n(!0)})]})}xt();async function An(e,t,n){return(await _t(`echarts`)).createChart(e,t,n)}function F(e,t){return getComputedStyle(document.documentElement).getPropertyValue(e).trim()||t}function jn(){return{accent:F(`--dsw-alias-state-business-primary`,`#4f8ef7`),labelPrimary:F(`--dsw-alias-label-primary`,`#e6e6e6`),labelSecondary:F(`--dsw-alias-label-secondary`,`#a0a0a0`),labelTertiary:F(`--dsw-alias-label-tertiary`,`#6b6b6b`),border:F(`--dsw-alias-border-l1`,`rgba(255,255,255,0.12)`),bgLayer1:F(`--dsw-alias-bg-layer-1`,`#1a1a1e`)}}function Mn(e){let t=jn(),n=Le.map(e=>F(e.replace(`var(`,``).replace(`)`,``),t.accent)),r=e.data??[],i=e.series,a=(e={})=>({renderMode:`richText`,backgroundColor:t.bgLayer1,borderColor:t.border,textStyle:{color:t.labelPrimary},...e}),o={color:n,textStyle:{color:t.labelSecondary,fontFamily:`inherit`},backgroundColor:`transparent`,grid:{left:48,right:16,top:24,bottom:32},tooltip:a({trigger:`item`})};switch(e.preset){case`pie`:return{...o,tooltip:a({trigger:`item`,formatter:`{b}: {c} ({d}%)`}),legend:{bottom:0,textStyle:{color:t.labelTertiary}},series:[{type:`pie`,radius:[`40%`,`70%`],avoidLabelOverlap:!0,itemStyle:{borderRadius:6,borderColor:t.bgLayer1,borderWidth:2},label:{color:t.labelSecondary},data:r.map(e=>({name:e.label,value:e.value}))}]};case`scatter`:return{...o,tooltip:a({trigger:`item`}),xAxis:{type:`category`,data:r.map(e=>e.label),axisLine:{lineStyle:{color:t.border}},axisLabel:{color:t.labelTertiary},splitLine:{lineStyle:{color:t.border,opacity:.5}}},yAxis:{type:`value`,axisLine:{lineStyle:{color:t.border}},axisLabel:{color:t.labelTertiary},splitLine:{lineStyle:{color:t.border,opacity:.5}}},series:[{type:`scatter`,symbolSize:10,data:r.map(e=>e.value)}]};case`area`:return{...o,tooltip:a({trigger:`axis`}),xAxis:{type:`category`,data:r.map(e=>e.label),axisLine:{lineStyle:{color:t.border}},axisLabel:{color:t.labelTertiary}},yAxis:{type:`value`,axisLine:{lineStyle:{color:t.border}},axisLabel:{color:t.labelTertiary},splitLine:{lineStyle:{color:t.border,opacity:.5}}},series:(i??[{label:``,data:r}]).map((e,t)=>({name:e.label,type:`line`,smooth:!0,areaStyle:{opacity:.15},data:e.data.map(e=>e.value),...Nn(e.color,t,i)})),legend:i===void 0?void 0:{bottom:0,textStyle:{color:t.labelTertiary}}};case`line`:return{...o,tooltip:a({trigger:`axis`}),xAxis:{type:`category`,data:r.map(e=>e.label),axisLine:{lineStyle:{color:t.border}},axisLabel:{color:t.labelTertiary}},yAxis:{type:`value`,axisLine:{lineStyle:{color:t.border}},axisLabel:{color:t.labelTertiary},splitLine:{lineStyle:{color:t.border,opacity:.5}}},series:(i??[{label:``,data:r}]).map((e,t)=>({name:e.label,type:`line`,smooth:!0,showSymbol:!0,symbolSize:6,data:e.data.map(e=>e.value),...Nn(e.color,t,i)})),legend:i===void 0?void 0:{bottom:0,textStyle:{color:t.labelTertiary}}};default:return{...o,tooltip:a({trigger:`axis`,axisPointer:{type:`shadow`}}),xAxis:{type:`category`,data:r.map(e=>e.label),axisLine:{lineStyle:{color:t.border}},axisLabel:{color:t.labelTertiary}},yAxis:{type:`value`,axisLine:{lineStyle:{color:t.border}},axisLabel:{color:t.labelTertiary},splitLine:{lineStyle:{color:t.border,opacity:.5}}},series:(i??[{label:``,data:r}]).map(e=>({name:e.label,type:`bar`,barMaxWidth:40,itemStyle:{borderRadius:[4,4,2,2],...e.color===void 0?{}:{color:e.color}},data:e.data.map(e=>e.value)})),legend:i===void 0?void 0:{bottom:0,textStyle:{color:t.labelTertiary}}}}}function Nn(e,t,n){return e===void 0?{}:{itemStyle:{color:e}}}function Pn({node:e}){let t=(0,m.useRef)(null),[n,r]=(0,m.useState)(`loading`),i=(0,m.useRef)(null);return(0,m.useEffect)(()=>{let n=!0,a=t.current;return a===null?void 0:(An(a,e.option??Mn(e),{height:e.height??300}).then(e=>{if(!n){e.dispose();return}i.current=e,r(`ready`)}).catch(()=>{n&&r(`error`)}),()=>{n=!1,i.current?.dispose(),i.current=null})},[]),(0,m.useEffect)(()=>{if(n!==`ready`)return;let e=t.current;if(e===null)return;let r=new ResizeObserver(()=>{i.current?.resize()});return r.observe(e),()=>{r.disconnect()}},[n]),(0,m.useEffect)(()=>{if(n!==`ready`||i.current===null)return;let t=e.option??Mn(e);i.current.setOption(t,!0)},[e,n]),n===`error`?(0,g.jsxs)(`div`,{className:E.echartFallback,"data-genui-echart":!0,children:[(0,g.jsx)(`div`,{className:E.echartErr,children:`ECharts 渲染失败`}),e.title!==void 0&&(0,g.jsx)(`div`,{className:E.echartHint,children:e.title})]}):(0,g.jsxs)(`div`,{className:E.echartWrap,"data-genui-echart":!0,children:[e.title!==void 0&&(0,g.jsx)(`div`,{className:E.echartTitle,children:e.title}),(0,g.jsx)(`div`,{ref:t,className:E.echartCanvas,style:{height:`${e.height??300}px`},role:`img`,"aria-label":e.title??`ECharts chart`}),n===`loading`&&(0,g.jsx)(`div`,{className:E.echartHint,children:`加载图表…`})]})}let Fn=p.getGenuiComponent;function In(e){return typeof e==`object`&&!!e&&`type`in e}function I(e,t,n,r=0,i){if(r>A.maxDepth)return null;switch(e.type){case`text`:{let n=e.size??`body`;return(0,g.jsx)(`div`,{className:`${E.text} ${E[n]}`+(e.center?` ${E.center}`:``),children:e.content},t)}case`row`:return(0,g.jsxs)(`div`,{className:E.row+(e.wrap?` ${E.wrap}`:``),children:[e.items.map((e,t)=>I(e,t,n,r+1,i)),e.spacer&&(0,g.jsx)(`div`,{className:E.spacer})]},t);case`col`:return(0,g.jsx)(`div`,{className:E.col,style:e.gap===void 0?void 0:{gap:`${e.gap}px`},children:e.items.map((e,t)=>I(e,t,n,r+1,i))},t);case`grid`:return(0,g.jsx)(`div`,{className:E.grid,style:{gridTemplateColumns:`repeat(${Math.max(1,e.cols)}, minmax(0, 1fr))`},children:e.items.map((e,t)=>I(e,t,n,r+1,i))},t);case`card`:return(0,g.jsxs)(`div`,{className:E.card,children:[e.title!==void 0&&(0,g.jsx)(`div`,{className:E.cardTitle,children:e.title}),e.items.map((e,t)=>I(e,t,n,r+1,i))]},t);case`button`:{let r=e.tone??``,i=`${E.button} ${E[r]||``}`+(e.full?` ${E.full}`:``)+(e.small?` ${E.small}`:``),a=e.action,o=a!==void 0&&n!==void 0;return(0,g.jsxs)(Pe,{className:i,disabled:!o,onClick:o?()=>n(a,{type:`button`,label:e.label}):void 0,children:[e.icon!==void 0&&(0,g.jsxs)(`span`,{"aria-hidden":!0,children:[e.icon,` `]}),e.label]},t)}case`input`:return(0,g.jsx)(et,{node:e,onAction:n,answers:i},t);case`select`:return(0,g.jsx)($e,{node:e,onAction:n,answers:i},t);case`checkbox`:return(0,g.jsx)(nt,{node:e,onAction:n,answers:i},t);case`link`:{let n=e.href;return n===void 0?(0,g.jsx)(`span`,{className:E.linkText,children:e.label},t):(0,g.jsx)(`a`,{className:E.link,href:n,target:`_blank`,rel:`noopener noreferrer`,children:e.label},t)}case`image`:return(0,g.jsx)(kn,{node:e},`${t}:${e.src}`);case`audio`:return(0,g.jsx)(Fe,{node:e},`${t}:${e.src}`);case`video`:return(0,g.jsx)(Ie,{node:e},`${t}:${e.src}`);case`badge`:{let n=e.tone??``;return(0,g.jsxs)(`span`,{className:`${E.badge} ${E[n]||``}`,children:[e.icon!==void 0&&(0,g.jsxs)(`span`,{"aria-hidden":!0,children:[e.icon,` `]}),e.label]},t)}case`stat`:{let n=e.delta!==void 0&&e.delta.startsWith(`-`);return(0,g.jsxs)(`div`,{className:E.stat,children:[(0,g.jsx)(`span`,{className:E.statLabel,children:e.label}),(0,g.jsx)(`span`,{className:E.statValue,children:e.value}),e.delta!==void 0&&(0,g.jsx)(`span`,{className:`${E.statDelta} ${n?E.down:E.up}`,children:e.delta})]},t)}case`progress`:{let n=Math.max(0,Math.min(100,Number(e.value)||0));return(0,g.jsxs)(`div`,{className:E.progress,role:`progressbar`,"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":n,"aria-label":e.label??e.valueLabel??void 0,children:[(e.label!==void 0||e.valueLabel!==void 0)&&(0,g.jsxs)(`div`,{className:E.progressRow,children:[(0,g.jsx)(`span`,{children:e.label}),e.valueLabel!==void 0&&(0,g.jsx)(`span`,{children:e.valueLabel})]}),(0,g.jsx)(`div`,{className:E.track,children:(0,g.jsx)(`div`,{className:E.fill,style:{width:`${n}%`}})})]},t)}case`divider`:return(0,g.jsx)(`hr`,{className:E.divider},t);case`list`:{let a=e.items.slice(0,A.maxListItems);return(0,g.jsx)(`div`,{className:E.list,children:a.map((e,t)=>(0,g.jsx)(`div`,{className:E.li,children:In(e)?I(e,t,n,r+1,i):(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)(`span`,{className:E.liTitle,children:typeof e==`string`?e:e.title}),typeof e!=`string`&&e.desc!==void 0&&(0,g.jsx)(`span`,{className:E.liDesc,children:e.desc})]})},t))},t)}case`table`:return(0,g.jsx)(Ve,{node:e},t);case`chart`:return(0,g.jsx)(He,{chart:e},t);case`tabs`:return(0,g.jsx)(Ht,{tabs:e,onAction:n,depth:r+1,answers:i},t);case`avatar`:return(0,g.jsx)(`div`,{className:E.avatar,style:{background:e.color??Ne(e.name)},children:e.name.slice(0,1).toUpperCase()},t);case`spacer`:return(0,g.jsx)(`div`,{className:E.spacer},t);case`plot`:return(0,g.jsx)(Rt,{plot:e},t);case`callout`:return(0,g.jsx)(Ft,{node:e},t);case`steps`:return(0,g.jsx)(It,{steps:e},t);case`keyvalue`:return(0,g.jsx)(Lt,{node:e},t);case`diff`:return(0,g.jsx)(zt,{node:e},t);case`json`:return(0,g.jsx)(Bt,{node:e},t);case`code`:return(0,g.jsx)(Vt,{node:e},t);case`radio`:return(0,g.jsx)(Ke,{node:e,onAction:n,answers:i},`${t}:r${i?.round??0}`);case`submit`:return(0,g.jsx)(Je,{node:e,onAction:n,answers:i},t);case`switch`:return(0,g.jsx)(Ye,{node:e,onAction:n},t);case`slider`:return(0,g.jsx)(Xe,{node:e,onAction:n,answers:i},t);case`textarea`:return(0,g.jsx)(tt,{node:e,onAction:n,answers:i},t);case`accordion`:return(0,g.jsx)(Ut,{node:e,onAction:n,depth:r+1,answers:i},t);case`copy`:return(0,g.jsx)(Gt,{node:e},t);case`mermaid`:return(0,g.jsx)(Kt,{node:e},t);case`scene3d`:return(0,g.jsx)(qt,{node:e},t);case`timeline`:return(0,g.jsx)(Jt,{node:e},t);case`file-tree`:return(0,g.jsx)(Yt,{node:e},t);case`breadcrumb`:return(0,g.jsx)(Zt,{node:e},t);case`quiz`:return(0,g.jsx)(Xt,{node:e,onAction:n},t);case`diagram`:return(0,g.jsx)(On,{node:e},t);case`echart`:return(0,g.jsx)(Pn,{node:e},t);default:{let a=e,o=Fn?.(a.type);return o===void 0?null:(0,g.jsx)(o,{node:a,onAction:n,renderChildren:(e,t)=>e.map((e,a)=>I(e,Number(t)+a,n,r+1,i))},t)}}}function Ln(e){let t=(0,m.useRef)(new Map),n=(0,m.useRef)(e);n.current=e,(0,m.useEffect)(()=>()=>{for(let e of t.current.values())clearTimeout(e);t.current.clear()},[]);let r=(0,m.useCallback)((e,r)=>{let i=t.current.get(e);i!==void 0&&clearTimeout(i),t.current.set(e,setTimeout(()=>{t.current.delete(e),n.current?.(e,r)},300))},[]);return e===void 0?void 0:r}function Rn(e,t){return e===t||JSON.stringify(e)===JSON.stringify(t)}function zn({spec:e,stateKey:t}){let n=e.gap??16,r=Ln(y()),[i]=(0,m.useState)(()=>t===void 0?null:ne(t)),[a,o]=(0,m.useState)(i?.answers??{}),[s,c]=(0,m.useState)(i?.multiAnswers??{}),[l,u]=(0,m.useState)(i?.fields??{}),[d,f]=(0,m.useState)({}),[p,h]=(0,m.useState)(i?.locked===!0),[_,v]=(0,m.useState)(0),[b,x]=(0,m.useState)(new Set),S=(0,m.useCallback)((e,t)=>{o(n=>n[e]===t?n:{...n,[e]:t})},[]),C=(0,m.useCallback)((e,t,n)=>{c(r=>{let i=r[e]??[],a=n?i.includes(t)?i:[...i,t]:i.filter(e=>e!==t);return Object.prototype.hasOwnProperty.call(r,e)&&a.length===i.length&&a.every((e,t)=>e===i[t])?r:{...r,[e]:a}})},[]),w=(0,m.useCallback)((e,t)=>{u(n=>{if(t.trim()===``){if(!(e in n))return n;let t={...n};return delete t[e],t}return n[e]===t?n:{...n,[e]:t}})},[]),T=(0,m.useCallback)(e=>{x(t=>t.has(e)?t:new Set(t).add(e))},[]),D=(0,m.useCallback)((e,t)=>{f(n=>{let r=n[e];return r!==void 0&&r.label===t.label&&r.answer===t.answer&&r.explanation===t.explanation?n:{...n,[e]:t}})},[]),O=(0,m.useCallback)(()=>{o({}),c({}),h(!1),v(e=>e+1)},[]),ee=(0,m.useMemo)(()=>({answers:a,multiAnswers:s,fields:l,secretFields:b,meta:d,locked:p,round:_,setAnswer:S,setMultiAnswer:C,setField:w,registerSecretField:T,registerMeta:D,clear:O,setLocked:h}),[a,s,l,b,d,p,_,S,C,w,T,D,O]),te=(0,m.useMemo)(()=>{if(r!==void 0)return(e,t)=>{De(),r(e,t)}},[r]);return(0,m.useEffect)(()=>{if(t===void 0)return;let e=setTimeout(()=>{let e=Object.fromEntries(Object.entries(l).filter(([e])=>!b.has(e)));re(t,{answers:a,...Object.keys(s).length>0?{multiAnswers:s}:{},locked:p,...Object.keys(e).length>0?{fields:e}:{}})},300);return()=>clearTimeout(e)},[t,a,s,p,l,b]),(0,m.useEffect)(()=>{Te(e)},[e]),(0,g.jsxs)(`div`,{className:E.block,"data-genui":!0,children:[e.title!==void 0&&(0,g.jsx)(`div`,{className:E.banner,children:e.title}),(0,g.jsx)(`div`,{className:E.col,style:{gap:`${n}px`},children:e.items.map((e,t)=>(0,g.jsx)(`div`,{className:E.reveal,style:{animationDelay:`${Math.min(t*90,720)}ms`},children:I(e,t,te,0,ee)},t))})]})}let Bn=(0,m.memo)(function(e){let t=e.stateKey===void 0?`volatile`:`durable:${e.stateKey}`;return(0,g.jsx)(zn,{...e},t)},(e,t)=>e.stateKey===t.stateKey&&Rn(e.spec,t.spec));function Vn(e){if(typeof e!=`object`||!e)return null;let t=e;if(typeof t.type!=`string`||t.type===``)return null;let n={type:`col`,items:[e]};return t.panel===!0&&(n.panel=!0),t.append===!0&&(n.append=!0),n}function Hn(e){if(typeof e!=`object`||!e)return!1;let t=e;return!(!Array.isArray(t.items)||t.title!==void 0&&typeof t.title!=`string`||t.gap!==void 0&&typeof t.gap!=`number`)}let Un=[`h1`,`h2`,`h3`,`body`,`muted`,`caption`],Wn=[`primary`,`danger`,`success`,`ghost`],Gn=[`success`,`warn`,`danger`,`accent`],Kn=[`text`,`email`,`password`,`color`],qn=[`info`,`success`,`warning`,`error`],Jn=[`bars`,`line`,`donut`],Yn=[`line`,`area`,`scatter`],Xn=[`16:9`,`4:3`,`1:1`,`9:16`],Zn=[`box`,`sphere`,`cone`,`cylinder`,`torus`],Qn=[`file`,`dir`],$n=`architecture.it-state.flowchart.sequence.state.er.timeline.swimlane.quadrant.radar.loop.nested.tree.org-chart.layers.venn.pyramid.bar.line.gantt.scatter.high-level.process.medallion.data-flow.dp-integration.dp-security-matrix`.split(`.`),er=[`focal`,`backend`,`store`,`external`,`input`,`optional`,`security`],tr=[`light`,`dark`,`editorial`],nr=[`solid`,`dashed`,`accent`,`link`],rr=[`auto`,`orthogonal`,`straight`],ir=[`bar`,`line`,`area`,`pie`,`scatter`],L=(e,t,n={},r={})=>{let i=Object.fromEntries(Object.entries(t).filter(([t])=>t!==`type`&&!e.includes(t))),a=r.oneOfRequired??[],o=r.conditionalRequired??[];return{required:e,fields:t,optional:i,aliases:n,oneOfRequired:a,conditionalRequired:o,rules:[...a.map(e=>({kind:`one-of-required`,fields:e})),...o],enums:r.enums??{},nested:r.nested??{},...r.validator===void 0?{}:{validator:r.validator}}},R=(e,t,n={},r={})=>({required:e,fields:t,enums:r,nested:n}),z={type:`string`},ar=R([`label`,`value`],{label:`string`,value:`number`,color:`string`}),or=R([`label`,`data`],{label:`string`,color:`string`,data:`array`},{data:ar}),sr=R([`title`],{title:`string`,desc:`string`}),cr=R([`key`,`value`],{key:`string`,value:`string`}),lr=R([`title`],{title:`string`,desc:`string`,time:`string`}),ur=R([`path`,`newText`],{path:`string`,oldText:`string-or-null`,newText:`string`}),dr=R([`expr`],{expr:`string`,label:`string`,color:`string`,kind:`string`,params:`array`},{params:R([`name`,`value`],{name:`string`,value:`number`,min:`number`,max:`number`,step:`number`,animateTo:`number`,durationMs:`number`,loop:`boolean`})},{kind:Yn}),fr=R([`shape`],{shape:`string`,color:`string`,position:`array`,rotation:`array`,scale:`unknown`,size:`unknown`},{},{shape:Zn});function pr(e){return R([`name`],{name:`string`,type:`string`,children:`array`},e>0?{children:pr(e-1)}:{},{type:Qn})}let mr=pr(6),hr=R([`label`,`items`],{label:`string`,items:`nodes`,content:`nodes`}),gr=R([`title`,`items`],{title:`string`,items:`nodes`}),_r=R([`id`,`label`],{id:`string`,label:`string`,sub:`string`,type:`string`,x:`number`,y:`number`,w:`number`,h:`number`,tag:`string`},{},{type:er}),vr=R([`from`,`to`],{from:`string`,to:`string`,label:`string`,kind:`string`,route:`string`},{},{kind:nr,route:rr}),yr=R([`label`],{label:`string`,x:`number`,y:`number`,w:`number`,h:`number`}),br=R([],{paper:`string`,"paper-2":`string`,ink:`string`,muted:`string`,soft:`string`,rule:`string`,accent:`string`,"accent-tint":`string`,link:`string`}),xr=L([`items`],{title:`string`,gap:`number`,panel:`boolean`,append:`boolean`,items:`nodes`}),Sr={accordion:L([`items`],{...z,items:`array`},{},{nested:{items:gr}}),audio:L([`src`],{...z,src:`string`,alt:`string`,loop:`boolean`}),avatar:L([`name`],{...z,name:`string`,color:`string`}),badge:L([`label`],{...z,label:`string`,tone:`string`,icon:`string`},{text:`label`,value:`label`},{enums:{tone:Gn}}),breadcrumb:L([`items`],{...z,items:`array`}),button:L([`label`],{...z,label:`string`,tone:`string`,full:`boolean`,small:`boolean`,icon:`string`,action:`string`},{},{enums:{tone:Wn}}),callout:L([`content`],{...z,title:`string`,content:`string`,tone:`string`},{kind:`tone`},{enums:{tone:qn}}),card:L([`items`],{...z,title:`string`,items:`nodes`},{label:`title`,content:`items`}),chart:L([],{...z,kind:`string`,data:`array`,series:`array`},{},{oneOfRequired:[[`data`,`series`]],conditionalRequired:[{kind:`required-if`,when:{field:`kind`,equals:`line`},required:[`data`]},{kind:`required-if`,when:{field:`kind`,equals:`donut`},required:[`data`]}],nested:{data:ar,series:or},enums:{kind:Jn},validator:{name:`chart-renderability`}}),checkbox:L([`label`],{...z,label:`string`,checked:`boolean`,action:`string`,group:`string`}),code:L([`code`],{...z,lang:`string`,code:`string`}),col:L([`items`],{...z,items:`nodes`,gap:`number`}),copy:L([`text`],{...z,label:`string`,text:`string`}),diagram:L([`kind`,`nodes`],{...z,kind:`string`,variant:`string`,title:`string`,nodes:`array`,edges:`array`,zones:`array`,theme:`object`},{},{nested:{nodes:_r,edges:vr,zones:yr,theme:br},enums:{kind:$n,variant:tr}}),diff:L([`diffs`],{...z,diffs:`array`},{},{nested:{diffs:ur}}),divider:L([],z),echart:L([],{...z,title:`string`,height:`number`,preset:`string`,data:`array`,series:`array`,option:`object`},{},{oneOfRequired:[[`option`,`data`,`series`]],enums:{preset:ir}}),"file-tree":L([`items`],{...z,items:`array`},{},{nested:{items:mr}}),grid:L([`items`],{...z,cols:`number`,items:`nodes`}),image:L([`src`],{...z,src:`string`,alt:`string`}),input:L([],{...z,label:`string`,placeholder:`string`,value:`string`,inputType:`string`,action:`string`,id:`string`},{},{enums:{inputType:Kn}}),json:L([`value`],{...z,value:`unknown`}),keyvalue:L([`pairs`],{...z,pairs:`array`},{},{nested:{pairs:cr}}),link:L([`label`],{...z,label:`string`,href:`string`}),list:L([`items`],{...z,items:`array`}),mermaid:L([`code`],{...z,code:`string`}),plot:L([`series`],{...z,series:`array`,xMin:`number`,xMax:`number`,yMin:`number`,yMax:`number`,title:`string`},{},{nested:{series:dr}}),progress:L([`value`],{...z,value:`number`,label:`string`,valueLabel:`string`}),quiz:L([`question`,`options`],{...z,question:`string`,options:`array`,explanation:`string`,id:`string`,action:`string`}),radio:L([`options`],{...z,label:`string`,options:`array`,selected:`number`,action:`string`,group:`string`,answer:`unknown`,explanation:`string`}),row:L([`items`],{...z,items:`nodes`,wrap:`boolean`,spacer:`boolean`}),scene3d:L([`meshes`],{...z,title:`string`,meshes:`array`,ambient:`number`,background:`string`},{},{nested:{meshes:fr}}),select:L([`options`],{...z,label:`string`,options:`array`,action:`string`,selected:`number`,id:`string`}),slider:L([],{...z,label:`string`,min:`number`,max:`number`,step:`number`,value:`number`,action:`string`,id:`string`}),spacer:L([],z),stat:L([`label`,`value`],{...z,label:`string`,value:`string`,delta:`string`}),steps:L([`steps`],{...z,steps:`array`,current:`number`},{items:`steps`},{nested:{steps:sr}}),submit:L([`label`],{...z,label:`string`,action:`string`,resetAction:`string`,groups:`array`}),switch:L([`label`],{...z,label:`string`,checked:`boolean`,action:`string`}),table:L([`columns`,`rows`],{...z,columns:`array`,rows:`array`},{headers:`columns`,data:`rows`}),tabs:L([`tabs`],{...z,tabs:`array`},{},{nested:{tabs:hr}}),text:L([`content`],{...z,content:`string`,size:`string`,center:`boolean`},{text:`content`},{enums:{size:Un}}),textarea:L([],{...z,label:`string`,placeholder:`string`,rows:`number`,value:`string`,action:`string`,id:`string`}),timeline:L([`items`],{...z,items:`array`},{},{nested:{items:lr}}),video:L([`src`],{...z,src:`string`,alt:`string`,poster:`string`,loop:`boolean`,muted:`boolean`,aspectRatio:`string`},{},{enums:{aspectRatio:Xn}})},Cr=new Set(Object.keys(Sr));function wr(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:void 0}function Tr(e){let t=wr(e);return t!==void 0&&typeof t.type==`string`}function Er(e,t,n,r){let i=Sr[n];if(i===void 0)return e;let a={...e};for(let[e,o]of Object.entries(i.aliases)){if(!(e in a))continue;let i=`${t}.${e}`,s=o in a;s||(a[o]=a[e]),delete a[e],r.push({kind:`alias`,path:i,message:s?`${i} is ignored because canonical field '${o}' is present`:`${i} normalized/adopted as '${o}'`,type:n,field:e,canonical:o})}return a}function Dr(e,t,n){if(!Tr(e))return e;let r=e.type;if(Sr[r]===void 0)return e;let i=Er(e,t,r,n),a=(e,t)=>Dr(e,t,n);return r===`row`||r===`col`||r===`grid`||r===`card`||r===`file-tree`||r===`timeline`||r===`breadcrumb`?r!==`file-tree`&&r!==`timeline`&&r!==`breadcrumb`&&(i.items=((e,t)=>Array.isArray(e)?e.map((e,n)=>a(e,`${t}[${n}]`)):e)(i.items,`${t}.items`)):r===`list`&&Array.isArray(i.items)?i.items=i.items.map((e,n)=>Tr(e)?a(e,`${t}.items[${n}]`):e):r===`tabs`&&Array.isArray(i.tabs)?i.tabs=i.tabs.map((e,i)=>{let o=wr(e);if(o===void 0)return e;let s={...o};if(`content`in s){let e=`${t}.tabs[${i}].content`,a=`items`in s;a||(s.items=s.content),delete s.content,n.push({kind:`alias`,path:e,message:a?`${e} is ignored because canonical field 'items' is present`:`${e} normalized/adopted as 'items'`,type:r,field:`content`,canonical:`items`})}return s.items=Array.isArray(s.items)?s.items.map((e,n)=>a(e,`${t}.tabs[${i}].items[${n}]`)):s.items===void 0?s.items:[a(s.items,`${t}.tabs[${i}].items[0]`)],s}):r===`accordion`&&Array.isArray(i.items)&&(i.items=i.items.map((e,n)=>{let r=wr(e);return r===void 0?e:{...r,items:Array.isArray(r.items)?r.items.map((e,r)=>a(e,`${t}.items[${n}].items[${r}]`)):r.items}})),i}function Or(e){let t=[],n=wr(e);if(n===void 0)return{value:e,warnings:t};let r={...n};if(Array.isArray(r.items))r.items=r.items.map((e,n)=>Dr(e,`items[${n}]`,t));else if(typeof r.type==`string`)return{value:Dr(r,`spec`,t),warnings:t};return{value:r,warnings:t}}function kr(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:void 0}function Ar(e){let t=kr(e);return t!==void 0&&typeof t.type==`string`}function jr(e,t,n){if(!Ar(e))return;let r=e.type,i=Sr[r];if(i===void 0)return;n(e,t,i);let a=(e,t)=>jr(e,t,n);(r===`row`||r===`col`||r===`grid`||r===`card`)&&Array.isArray(e.items)||r===`list`&&Array.isArray(e.items)?e.items.forEach((e,n)=>a(e,`${t}.items[${n}]`)):r===`tabs`&&Array.isArray(e.tabs)?e.tabs.forEach((e,n)=>{let r=kr(e);r!==void 0&&(Array.isArray(r.items)?r.items.forEach((e,r)=>a(e,`${t}.tabs[${n}].items[${r}]`)):a(r.items,`${t}.tabs[${n}].items`))}):r===`accordion`&&Array.isArray(e.items)&&e.items.forEach((e,n)=>{let r=kr(e);r?.items!==void 0&&Array.isArray(r.items)&&r.items.forEach((e,r)=>a(e,`${t}.items[${n}].items[${r}]`))})}function Mr(e,t,n,r){e.push({kind:`unknown-field`,path:`${t}.${n}`,message:`${t}.${n}: unknown field for '${r}'`,type:r,field:n})}function Nr(e,t,n,r,i){let a=kr(e);if(a!==void 0){for(let e of Object.keys(a))e in n.fields||Mr(i,t,e,r);for(let[e,o]of Object.entries(n.nested)){let n=a[e];Array.isArray(n)?n.forEach((n,a)=>Nr(n,`${t}.${e}[${a}]`,o,r,i)):n!==void 0&&Nr(n,`${t}.${e}`,o,r,i)}}}function Pr(e,t,n,r){for(let[i,a]of Object.entries(n.nested)){let n=e[i];Array.isArray(n)?n.forEach((n,o)=>Nr(n,`${t}.${i}[${o}]`,a,e.type,r)):n!==void 0&&Nr(n,`${t}.${i}`,a,e.type,r)}}function Fr(e){let t=[],n=kr(e);if(n===void 0)return t;let r=(e,n,r)=>{for(let i of Object.keys(e))i===`type`||i in r.fields||Mr(t,n,i,e.type);Pr(e,n,r,t)};if(Array.isArray(n.items)){for(let e of Object.keys(n))e in xr.fields||Mr(t,`spec`,e,`spec`);n.items.forEach((e,t)=>jr(e,`items[${t}]`,r))}else if(typeof n.type==`string`)jr(n,`spec`,r);else for(let e of Object.keys(n))e in xr.fields||Mr(t,`spec`,e,`spec`);return t}function Ir(e,t){return typeof e==`string`&&t.includes(e)}function B(e,t){return typeof e==`string`?e.slice(0,t):void 0}let Lr=/^(?:#[\da-fA-F]{3,8}|rgba?\([^)]{0,64}\)|hsla?\([^)]{0,64}\)|var\(--dsw-[\w-]+(?:,\s*#[0-9a-fA-F]{3,8})?\))$/;function V(e){if(typeof e!=`string`)return;let t=e.trim();return t.length<=64&&Lr.test(t)?t:void 0}function Rr(e){if(typeof e!=`string`)return;let t=e.trim();if(!(t.length>2048))return/^https?:\/\//i.test(t)||/^mailto:[^@\s]+@[^@\s]+$/i.test(t)?t:void 0}function zr(e){if(typeof e!=`string`)return;let t=e.trim();if(!(t===``||t.length>2048)&&(/^https?:\/\//i.test(t)||!(/^[a-z][a-z0-9+.-]*:/i.test(t)||/^[/\\]{2}/.test(t))))return t}function H(e,t,n){return typeof e==`number`&&Number.isFinite(e)?Math.min(n,Math.max(t,e)):void 0}function U(e,t,n){return typeof e==`number`&&Number.isFinite(e)?Math.min(n,Math.max(t,Math.trunc(e))):void 0}function W(e,t){return Ir(e,t)?e:void 0}function G(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:void 0}function K(e,t){return t===void 0?{}:{[e]:t}}function Br(e,t){switch(t){case`string`:return typeof e==`string`;case`string-or-null`:return e===null||typeof e==`string`;case`number`:return typeof e==`number`&&Number.isFinite(e);case`boolean`:return typeof e==`boolean`;case`nodes`:return Array.isArray(e);case`array`:return Array.isArray(e);case`object`:return G(e)!==void 0;case`unknown`:return!0}}function q(e){switch(e){case`string-or-null`:return`a string or null`;case`number`:return`a finite number`;case`boolean`:return`a boolean`;case`nodes`:case`array`:return`an array`;case`object`:return`an object`;case`unknown`:return`a value`;default:return`a string`}}function J(e,t,n){return e.some(e=>e.startsWith(`${t}.${n} `)||e.includes(`'${n}'`)||e.includes(`requires ${n}`))}function Vr(e,t,n,r,i=[]){for(let[a,o]of Object.entries(n.fields))i.includes(a)||e[a]===void 0||!Br(e[a],o)&&!J(r,t,a)&&r.push(`${t}.${a} must be ${q(o)}`);for(let[a,o]of Object.entries(n.enums))i.includes(a)||e[a]===void 0||!Br(e[a],`string`)||!o.includes(e[a])&&!J(r,t,a)&&r.push(`${t}.${a} must be one of ${o.join(`, `)}`)}function Hr(e,t,n,r){let i=G(e);if(i===void 0){r.push(`${t} must be an object`);return}for(let e of n.required){let a=n.fields[e];i[e]===void 0?J(r,t,e)||r.push(`${t}: requires ${e}${a===void 0?``:` (${q(a)})`}`):a!==void 0&&!Br(i[e],a)&&(J(r,t,e)||r.push(`${t}.${e} must be ${q(a)}`))}for(let[e,a]of Object.entries(n.fields))i[e]!==void 0&&!Br(i[e],a)&&(J(r,t,e)||r.push(`${t}.${e} must be ${q(a)}`));for(let[e,a]of Object.entries(n.enums))i[e]!==void 0&&typeof i[e]==`string`&&!a.includes(i[e])&&(J(r,t,e)||r.push(`${t}.${e} must be one of ${a.join(`, `)}`));for(let[e,a]of Object.entries(n.nested)){let n=i[e];n!==void 0&&(Array.isArray(n)?n.forEach((n,i)=>Hr(n,`${t}.${e}[${i}]`,a,r)):Hr(n,`${t}.${e}`,a,r))}}function Ur(e,t,n,r){for(let[i,a]of Object.entries(n.nested)){let n=e[i];n!==void 0&&(Array.isArray(n)?n.forEach((e,n)=>Hr(e,`${t}.${i}[${n}]`,a,r)):Hr(n,`${t}.${i}`,a,r))}}function Wr(e,t,n,r){let i=String(e.type),a=e=>J(r,t,e);for(let o of n.required){let s=n.fields[o];if(s===void 0||e[o]===void 0){a(o)||r.push(`${t}: type '${i}' requires ${o}${s===void 0?``:` (${q(s)})`}`);continue}!Br(e[o],s)&&!a(o)&&r.push(`${t}.${o} must be ${q(s)}`)}Vr(e,t,n,r,[`type`]);for(let a of n.oneOfRequired)!a.some(t=>e[t]!==void 0)&&!r.some(e=>e.includes(`requires ${a.join(` or `)}`))&&r.push(`${t}: type '${i}' requires one of ${a.join(` or `)}`);for(let o of n.conditionalRequired)if(e[o.when.field]===o.when.equals)for(let n of o.required)e[n]===void 0&&!a(n)&&r.push(`${t}: type '${i}' requires ${n}${o.message===void 0?``:` (${o.message})`}`);Ur(e,t,n,r)}function Y(e,t,n){if(!Array.isArray(e))return[];let r=[];for(let i of e){if(t.remaining<=0)break;--t.remaining;let e=Gr(i,t,n);e!==null&&r.push(e)}return r}function Gr(e,t,n){if(n>A.maxDepth)return null;let r=G(e);if(r===void 0)return null;let i=r.type;if(typeof i!=`string`)return null;switch(i){case`text`:{let e=B(r.content,A.maxString)??B(r.text,A.maxString);return e===void 0?null:{type:`text`,content:e,...K(`size`,W(r.size,Un)),...K(`center`,r.center===!0||void 0)}}case`row`:return{type:`row`,items:Y(r.items,t,n+1),...K(`wrap`,r.wrap===!0||void 0),...K(`spacer`,r.spacer===!0||void 0)};case`col`:return{type:`col`,items:Y(r.items,t,n+1),...K(`gap`,H(r.gap,0,96))};case`grid`:return{type:`grid`,cols:U(r.cols,1,A.maxGridCols)??1,items:Y(r.items,t,n+1)};case`card`:return{type:`card`,items:Y(r.items,t,n+1),...K(`title`,B(r.title,A.maxString))};case`button`:{let e=B(r.label,A.maxString);return e===void 0?null:{type:`button`,label:e,...K(`tone`,W(r.tone,Wn)),...K(`full`,r.full===!0||void 0),...K(`small`,r.small===!0||void 0),...K(`icon`,B(r.icon,64)),...K(`action`,B(r.action,200))}}case`input`:return{type:`input`,...K(`label`,B(r.label,A.maxString)),...K(`placeholder`,B(r.placeholder,A.maxString)),...K(`value`,B(r.value,A.maxString)),...K(`inputType`,W(r.inputType,Kn)),...K(`action`,B(r.action,200)),...K(`id`,B(r.id,200))};case`select`:{let e=Kr(r.options,A.maxOptions,A.maxString);return e===void 0?null:{type:`select`,options:e,...K(`label`,B(r.label,A.maxString)),...K(`action`,B(r.action,200)),...K(`selected`,U(r.selected,0,e.length-1)),...K(`id`,B(r.id,200))}}case`checkbox`:{let e=B(r.label,A.maxString);return e===void 0?null:{type:`checkbox`,label:e,...K(`checked`,r.checked===!0||void 0),...K(`action`,B(r.action,200)),...K(`group`,B(r.group,200))}}case`link`:{let e=B(r.label,A.maxString);return e===void 0?null:{type:`link`,label:e,...K(`href`,Rr(r.href))}}case`image`:{let e=zr(r.src);return e===void 0?null:{type:`image`,src:e,...K(`alt`,B(r.alt,A.maxString))}}case`audio`:{let e=zr(r.src);return e===void 0?null:{type:`audio`,src:e,...K(`alt`,B(r.alt,A.maxString)),...K(`loop`,r.loop===!0||void 0)}}case`video`:{let e=zr(r.src);return e===void 0?null:{type:`video`,src:e,...K(`alt`,B(r.alt,A.maxString)),...K(`poster`,zr(r.poster)),...K(`loop`,r.loop===!0||void 0),...K(`muted`,r.muted===!0||void 0),...K(`aspectRatio`,W(r.aspectRatio,Xn))}}case`badge`:{let e=B(r.label,A.maxString)??B(r.text,A.maxString)??B(r.value,A.maxString);return e===void 0?null:{type:`badge`,label:e,...K(`tone`,W(r.tone,Gn)),...K(`icon`,B(r.icon,64))}}case`stat`:{let e=B(r.label,A.maxString),t=B(r.value,128);return e===void 0||t===void 0?null:{type:`stat`,label:e,value:t,...K(`delta`,B(r.delta,64))}}case`progress`:{let e=H(r.value,0,100);return e===void 0?null:{type:`progress`,value:e,...K(`label`,B(r.label,A.maxString)),...K(`valueLabel`,B(r.valueLabel,64))}}case`divider`:return{type:`divider`};case`spacer`:return{type:`spacer`};case`avatar`:{let e=B(r.name,64);return e===void 0?null:{type:`avatar`,name:e,...K(`color`,V(r.color))}}case`list`:{let e=qr(r.items,A.maxListItems,t,n+1);return e===void 0?null:{type:`list`,items:e}}case`table`:{let e=r.columns,t=r.rows===void 0?r.data:r.rows;if(Array.isArray(e)&&e.length>0&&typeof e[0]==`object`&&e[0]!==null&&(e=e.map(e=>Qr(e))),Array.isArray(t)&&t.length>0&&typeof t[0]==`object`&&t[0]!==null&&!Array.isArray(t[0])){let e=Array.isArray(r.columns)&&r.columns.length>0&&typeof r.columns[0]==`object`&&r.columns[0]!==null?r.columns.map(e=>$r(e)).filter(e=>e!==void 0):Object.keys(t[0]);t=t.map(t=>e.map(e=>ei(t[e])))}let n=Kr(e,A.maxTableCols,128),i=Jr(t,A.maxTableRows,A.maxTableCols);return n===void 0||i===void 0?null:{type:`table`,columns:n,rows:i}}case`chart`:{let e=Yr(r.data,A.maxChartPoints),t=Array.isArray(r.series)?Xr(r.series,A.maxPlotSeries,A.maxChartPoints):void 0;return e===void 0&&t===void 0?null:{type:`chart`,data:e??[],...K(`kind`,W(r.kind,Jn)),...K(`series`,t)}}case`tabs`:{let e=Zr(r.tabs,t,n);return e===void 0?null:{type:`tabs`,tabs:e}}case`plot`:{let e=ti(r.series,A.maxPlotSeries);return e===void 0?null:{type:`plot`,series:e,...K(`xMin`,H(r.xMin,-1e6,1e6)),...K(`xMax`,H(r.xMax,-1e6,1e6)),...K(`yMin`,H(r.yMin,-1e9,1e9)),...K(`yMax`,H(r.yMax,-1e9,1e9)),...K(`title`,B(r.title,A.maxString))}}case`callout`:{let e=B(r.content,A.maxString);return e===void 0?null:{type:`callout`,content:e,...K(`tone`,W(r.tone,qn)),...K(`title`,B(r.title,A.maxString))}}case`steps`:{let e=ni(r.steps);return e===void 0?null:{type:`steps`,steps:e,...K(`current`,U(r.current,0,e.length))}}case`keyvalue`:{let e=ri(r.pairs,A.maxKeyValuePairs);return e===void 0?null:{type:`keyvalue`,pairs:e}}case`diff`:{let e=ii(r.diffs);return e===void 0?null:{type:`diff`,diffs:e}}case`json`:return`value`in r?{type:`json`,value:r.value}:null;case`code`:{let e=B(r.code,A.maxCode);return e===void 0?null:{type:`code`,code:e,...K(`lang`,B(r.lang,64))}}case`radio`:{let e=Kr(r.options,A.maxOptions,A.maxString);return e===void 0?null:{type:`radio`,options:e,...K(`label`,B(r.label,A.maxString)),...K(`selected`,U(r.selected,0,e.length-1)),...K(`action`,B(r.action,200)),...K(`group`,B(r.group,200)),...K(`answer`,typeof r.answer==`number`&&Number.isFinite(r.answer)&&r.answer>=0&&r.answer<e.length?Math.trunc(r.answer):typeof r.answer==`string`?r.answer.slice(0,512):void 0),...K(`explanation`,B(r.explanation,A.maxString))}}case`submit`:{let e=B(r.label,A.maxString),t=B(r.action,200);return e===void 0?null:{type:`submit`,label:e,...K(`action`,t),...K(`resetAction`,B(r.resetAction,200)),...K(`groups`,Kr(r.groups,A.maxOptions,200))}}case`switch`:{let e=B(r.label,A.maxString);return e===void 0?null:{type:`switch`,label:e,...K(`checked`,r.checked===!0||void 0),...K(`action`,B(r.action,200))}}case`slider`:{let e=H(r.min,-1e9,1e9)??0,t=H(r.max,-1e9,1e9)??100,n=Math.min(e,t),i=Math.max(e,t),a=H(r.step,1e-9,Math.max(i-n,1e-9)),o=H(r.value,n,i)??n;return{type:`slider`,min:n,max:i,...K(`step`,a),value:o,...K(`label`,B(r.label,A.maxString)),...K(`action`,B(r.action,200)),...K(`id`,B(r.id,200))}}case`textarea`:return{type:`textarea`,...K(`label`,B(r.label,A.maxString)),...K(`placeholder`,B(r.placeholder,A.maxString)),...K(`rows`,U(r.rows,1,30)),...K(`value`,B(r.value,A.maxString)),...K(`action`,B(r.action,200)),...K(`id`,B(r.id,200))};case`accordion`:{let e=ai(r.items,t,n);return e===void 0?null:{type:`accordion`,items:e}}case`copy`:{let e=B(r.text,A.maxCode);return e===void 0?null:{type:`copy`,text:e,...K(`label`,B(r.label,128))}}case`mermaid`:{let e=B(r.code,A.maxMermaid);return e===void 0?null:{type:`mermaid`,code:e}}case`scene3d`:{let e=oi(r.meshes);return e===void 0?null:{type:`scene3d`,meshes:e,...K(`title`,B(r.title,A.maxString)),...K(`ambient`,H(r.ambient,0,2)),...K(`background`,V(r.background))}}case`diagram`:return fi(r);case`timeline`:{let e=pi(r.items,A.maxTimelineItems);return e===void 0?null:{type:`timeline`,items:e}}case`file-tree`:{let e=mi(r.items,A.maxListItems);return e===void 0?null:{type:`file-tree`,items:e}}case`breadcrumb`:{let e=Kr(r.items,A.maxBreadcrumbItems,A.maxString);return e===void 0?null:{type:`breadcrumb`,items:e}}case`quiz`:{let e=B(r.question,A.maxString),t=gi(r.options,r.answer);return e===void 0||t===void 0?null:{type:`quiz`,question:e,options:t,...K(`explanation`,B(r.explanation,A.maxString)),...K(`id`,B(r.id,200)),...K(`action`,B(r.action,200))}}case`echart`:{let e=r.data===void 0?void 0:Yr(r.data,A.maxChartPoints),t=r.series!==void 0&&Array.isArray(r.series)?Xr(r.series,A.maxPlotSeries,A.maxChartPoints):void 0,n=r.option===void 0?void 0:vi(r.option,0,{count:A.maxEChartOptionNodes}),i=n===void 0||typeof n!=`object`||!n||Array.isArray(n)?void 0:n;return i===void 0&&e===void 0&&t===void 0?null:{type:`echart`,...K(`title`,B(r.title,A.maxString)),...K(`height`,U(r.height,100,800)),...K(`preset`,W(r.preset,ir)),...K(`data`,e),...K(`series`,t),...K(`option`,i)}}default:return e}}function Kr(e,t,n){if(!Array.isArray(e))return;let r=[];for(let i of e){if(r.length>=t)break;if(typeof i==`string`)r.push(i.slice(0,n));else if(typeof i==`object`&&i){let e=i,t=typeof e.label==`string`?e.label:typeof e.value==`string`?e.value:typeof e.title==`string`?e.title:JSON.stringify(i);r.push(t.slice(0,n))}}return r}function qr(e,t,n,r){if(!Array.isArray(e))return;let i=[];for(let a of e){if(i.length>=t)break;if(typeof a==`string`){i.push(a.slice(0,A.maxString));continue}let e=G(a),o=e===void 0?void 0:B(e.title,A.maxString);if(o!==void 0){i.push({title:o,...K(`desc`,e===void 0?void 0:B(e.desc,A.maxString))});continue}if(e!==void 0&&typeof e.type==`string`){if(n.remaining<=0)break;--n.remaining;let t=Gr(e,n,r);t!==null&&i.push(t)}}return i}function Jr(e,t,n){if(!Array.isArray(e))return;let r=[];for(let i of e){if(r.length>=t)break;if(!Array.isArray(i))continue;let e=[];for(let t of i){if(e.length>=n)break;typeof t==`string`?e.push(t.slice(0,256)):typeof t==`number`&&Number.isFinite(t)&&e.push(t)}e.length>0&&r.push(e)}return r}function Yr(e,t){if(!Array.isArray(e))return;let n=[];for(let r of e){if(n.length>=t)break;let e=G(r),i=e===void 0?void 0:B(e.label,128),a=e===void 0?void 0:H(e.value,-0xe8d4a51000,0xe8d4a51000);i!==void 0&&a!==void 0&&n.push({label:i,value:a,...K(`color`,e===void 0?void 0:V(e.color))})}return n}function Xr(e,t,n){if(!Array.isArray(e))return;let r=[];for(let i of e){if(r.length>=t)break;let e=G(i),a=e===void 0?void 0:B(e.label,128),o=e===void 0?void 0:Yr(e.data,n);a!==void 0&&o!==void 0&&r.push({label:a,data:o,...K(`color`,e===void 0?void 0:V(e.color))})}return r}function Zr(e,t,n){if(!Array.isArray(e))return;let r=[];for(let i of e){if(r.length>=A.maxTabs)break;let e=G(i),a=e===void 0?void 0:B(e.label,128);if(a===void 0||e===void 0)continue;let o=e.items===void 0?e.content===void 0?void 0:Array.isArray(e.content)?e.content:[e.content]:e.items;r.push({label:a,items:Y(o,t,n+1)})}return r}function Qr(e){let t=G(e);if(t===void 0)return String(e);for(let e of[`title`,`label`,`key`,`dataIndex`]){let n=t[e];if(typeof n==`string`&&n!==``)return n}return JSON.stringify(e)}function $r(e){let t=G(e);if(t!==void 0)for(let e of[`key`,`dataIndex`,`title`,`label`]){let n=t[e];if(typeof n==`string`&&n!==``)return n}}function ei(e){return typeof e==`string`||typeof e==`number`&&Number.isFinite(e)?e:e==null?``:JSON.stringify(e)}function ti(e,t){if(!Array.isArray(e))return;let n=[];for(let r of e){if(n.length>=t)break;let e=G(r),i=e===void 0?void 0:B(e.expr,512);if(i===void 0||e===void 0)continue;let a=[];if(Array.isArray(e.params))for(let t of e.params){if(a.length>=A.maxPlotParams)break;let e=G(t),n=e===void 0?void 0:B(e.name,64),r=e===void 0?void 0:H(e.value,-1e9,1e9);n!==void 0&&r!==void 0&&a.push({name:n,value:r,...K(`min`,e===void 0?void 0:H(e.min,-1e9,1e9)),...K(`max`,e===void 0?void 0:H(e.max,-1e9,1e9)),...K(`step`,e===void 0?void 0:H(e.step,1e-9,1e9)),...K(`animateTo`,e===void 0?void 0:H(e.animateTo,-1e9,1e9)),...K(`durationMs`,e===void 0?void 0:H(e.durationMs,1,12e4)),...K(`loop`,e===void 0?void 0:e.loop===!0||void 0)})}n.push({expr:i,...K(`label`,B(e.label,128)),...K(`color`,V(e.color)),...K(`kind`,W(e.kind,Yn)),...K(`params`,a.length>0?a:void 0)})}return n}function ni(e){if(!Array.isArray(e))return;let t=[];for(let n of e){if(t.length>=A.maxSteps)break;let e=G(n),r=e===void 0?void 0:B(e.title,256);r!==void 0&&t.push({title:r,...K(`desc`,e===void 0?void 0:B(e.desc,A.maxString))})}return t}function ri(e,t){if(!Array.isArray(e))return;let n=[];for(let r of e){if(n.length>=t)break;let e=G(r),i=e===void 0?void 0:B(e.key,256),a=e===void 0?void 0:B(e.value,A.maxString);i!==void 0&&a!==void 0&&n.push({key:i,value:a})}return n}function ii(e){if(!Array.isArray(e))return;let t=[];for(let n of e){if(t.length>=24)break;let e=G(n),r=e===void 0?void 0:B(e.path,1024),i=e===void 0?void 0:B(e.newText,2e4);if(r===void 0||i===void 0)continue;let a=e===void 0?void 0:e.oldText;t.push({path:r,newText:i,oldText:a===null||typeof a!=`string`?null:a.slice(0,2e4)})}return t}function ai(e,t,n){if(!Array.isArray(e))return;let r=[];for(let i of e){if(r.length>=A.maxAccordionItems)break;let e=G(i),a=e===void 0?void 0:B(e.title,256);a!==void 0&&e!==void 0&&r.push({title:a,items:Y(e.items,t,n+1)})}return r}function oi(e){if(!Array.isArray(e))return;let t=[];for(let n of e){if(t.length>=A.maxMeshes)break;let e=G(n),r=e===void 0?void 0:W(e.shape,Zn);if(r===void 0)continue;let i=e===void 0?void 0:H(e.scale,-1e6,1e6)??si(e.scale),a=e===void 0?void 0:H(e.size,-1e6,1e6)??si(e.size);t.push({shape:r,...K(`color`,e===void 0?void 0:V(e.color)),...K(`position`,e===void 0?void 0:si(e.position)),...K(`rotation`,e===void 0?void 0:si(e.rotation)),...K(`scale`,i),...K(`size`,a)})}return t}function si(e){if(!Array.isArray(e)||e.length!==3)return;let[t,n,r]=e;if(!(typeof t!=`number`||!Number.isFinite(t)||typeof n!=`number`||!Number.isFinite(n)||typeof r!=`number`||!Number.isFinite(r)))return[Math.min(1e6,Math.max(-1e6,t)),Math.min(1e6,Math.max(-1e6,n)),Math.min(1e6,Math.max(-1e6,r))]}function X(e,t,n){return Math.min(n,Math.max(t,Math.round(e/4)*4))}function ci(e){if(!Array.isArray(e))return;let t=[],n=new Set;for(let r of e){if(t.length>=A.maxDiagramNodes)break;let e=G(r);if(e===void 0)continue;let i=B(e.id,128),a=B(e.label,A.maxString);if(i===void 0||a===void 0||n.has(i))continue;n.add(i);let o=W(e.type,er),s=e.x===void 0?void 0:X(H(e.x,-1e6,1e6)??0,0,1e6),c=e.y===void 0?void 0:X(H(e.y,-1e6,1e6)??0,0,1e6),l=e.w===void 0?void 0:X(H(e.w,-1e6,1e6)??96,40,2e3),u=e.h===void 0?void 0:X(H(e.h,-1e6,1e6)??48,24,1200);t.push({id:i,label:a,...K(`sub`,B(e.sub,256)),...K(`type`,o),...K(`x`,s),...K(`y`,c),...K(`w`,l),...K(`h`,u),...K(`tag`,B(e.tag,32))})}return t}function li(e){if(e===void 0)return[];if(!Array.isArray(e))return;let t=[];for(let n of e){if(t.length>=A.maxDiagramEdges)break;let e=G(n);if(e===void 0)continue;let r=B(e.from,128),i=B(e.to,128);r!==void 0&&i!==void 0&&t.push({from:r,to:i,...K(`label`,B(e.label,A.maxDiagramLabel)),...K(`kind`,W(e.kind,nr)),...K(`route`,W(e.route,rr))})}return t}function ui(e){let t=G(e);if(t===void 0)return;let n={};for(let e of[`paper`,`paper-2`,`ink`,`muted`,`soft`,`rule`,`accent`,`accent-tint`,`link`]){let r=V(t[e]);r!==void 0&&(n[e]=r)}return Object.keys(n).length===0?void 0:n}function di(e){if(e===void 0)return[];if(!Array.isArray(e))return;let t=[];for(let n of e){if(t.length>=A.maxDiagramZones)break;let e=G(n);if(e===void 0)continue;let r=B(e.label,64);r!==void 0&&t.push({label:r,...K(`x`,e.x===void 0?void 0:X(H(e.x,-1e6,1e6)??0,0,1e6)),...K(`y`,e.y===void 0?void 0:X(H(e.y,-1e6,1e6)??0,0,1e6)),...K(`w`,e.w===void 0?void 0:X(H(e.w,-1e6,1e6)??100,40,2e3)),...K(`h`,e.h===void 0?void 0:X(H(e.h,-1e6,1e6)??100,40,1200))})}return t}function fi(e){let t=G(e);if(t===void 0)return null;let n=W(t.kind,$n);if(n===void 0)return null;let r=ci(t.nodes);if(r===void 0)return null;let i=li(t.edges);if(i===void 0)return null;let a=di(t.zones);return a===void 0?null:{type:`diagram`,kind:n,nodes:r,edges:i,zones:a,...K(`variant`,W(t.variant,tr)),...K(`title`,B(t.title,256)),...K(`theme`,ui(t.theme))}}function pi(e,t){if(!Array.isArray(e))return;let n=[];for(let r of e){if(n.length>=t)break;let e=G(r),i=e===void 0?void 0:B(e.title,256);i!==void 0&&n.push({title:i,...K(`desc`,e===void 0?void 0:B(e.desc,A.maxString)),...K(`time`,e===void 0?void 0:B(e.time,128))})}return n}function mi(e,t){return hi(e,t,A.maxTreeDepth)}function hi(e,t,n){if(!Array.isArray(e))return;let r=[];for(let i of e){if(r.length>=t)break;let e=G(i),a=e===void 0?void 0:B(e.name,256);if(a===void 0)continue;let o=e!==void 0&&n>0&&Array.isArray(e.children)?hi(e.children,t,n-1):void 0;r.push({name:a,...K(`type`,e===void 0?void 0:W(e.type,Qn)),...K(`children`,o)})}return r}function gi(e,t){if(!Array.isArray(e))return;let n=[];for(let t of e){if(n.length>=A.maxQuizOptions)break;let e=G(t),r=typeof t==`string`?B(t,512):e===void 0?void 0:B(e.label,512);r!==void 0&&n.push({label:r,...K(`correct`,e===void 0?void 0:e.correct===!0||void 0),...K(`feedback`,e===void 0?void 0:B(e.feedback,A.maxString))})}if(n.length===0)return;if(n.some(e=>e.correct===!0))return n;let r=typeof t==`number`&&Number.isFinite(t)?Math.trunc(t):typeof t==`string`?n.findIndex(e=>e.label===t.slice(0,512)):-1;return r<0||r>=n.length?n:n.map((e,t)=>t===r?{...e,correct:!0}:e)}let _i=/<(?:script|img|svg|iframe|video|audio|object|embed|source)\b|on[a-z]+\s*=|javascript:/i;function vi(e,t,n){if(n.count<=0||(--n.count,t>A.maxEChartOptionDepth))return;if(typeof e==`string`){let t=e.slice(0,A.maxString);return t.toLowerCase().includes(`url(`)||_i.test(t)?void 0:t}if(typeof e==`number`&&Number.isFinite(e)||typeof e==`boolean`)return e;if(e===null)return null;if(Array.isArray(e)){let r=Math.min(e.length,A.maxEChartArrayLen),i=[];for(let a=0;a<r;a++){let r=vi(e[a],t+1,n);r!==void 0&&i.push(r)}return i.length>0?i:void 0}let r=G(e);if(r===void 0)return;let i={};for(let[e,a]of Object.entries(r)){let r=vi(a,t+1,n);r!==void 0&&(e===`tooltip`&&typeof r==`object`&&r&&!Array.isArray(r)&&(r.renderMode=`richText`),i[e]=r)}return Object.keys(i).length>0?i:void 0}function yi(e){let t=G(e);if(t===void 0)return null;if(!Array.isArray(t.items)){let t=Vn(e);return t===null?null:yi(t)}let n={remaining:A.maxNodes};return{...K(`title`,B(t.title,A.maxString)),...K(`gap`,H(t.gap,0,96)),...K(`panel`,t.panel===!0||void 0),...K(`append`,t.append===!0||void 0),items:Y(t.items,n,0)}}function bi(e){return yi(Or(e).value)}function xi(e,t=1/0){let n=0,r=e=>{if(Array.isArray(e))for(let i of e){if(n>=t)return;n+=1;let e=G(i);if(e!==void 0){if(e.type===`tabs`&&Array.isArray(e.tabs))for(let i of e.tabs){if(n>=t)return;let e=G(i);e!==void 0&&r(e.items)}else if(e.type===`accordion`&&Array.isArray(e.items))for(let i of e.items){if(n>=t)return;let e=G(i);e!==void 0&&r(e.items)}else if((e.type===`row`||e.type===`col`||e.type===`grid`||e.type===`card`)&&Array.isArray(e.items))r(e.items);else if(e.type!==`file-tree`&&e.type===`list`&&Array.isArray(e.items))for(let i of e.items){if(n>=t)return;let e=G(i);e!==void 0&&typeof e.type==`string`&&r([e])}}}},i=G(e);return r(i===void 0?[]:i.items),n}let Si=Cr;function Ci(e,t,n){let r=0,i=e=>{let t=G(e);return t!==void 0&&typeof t.type==`string`&&Si.has(t.type)};function a(e,n){if(Array.isArray(e)){for(let i=0;i<e.length;i++)if(o(e[i],`${n}[${i}]`),r>=t)return}}function o(e,c){if(r>=t||!i(e))return;let l=G(e);if(l!==void 0){if(r+=1,n(l,c),l.type===`tabs`&&Array.isArray(l.tabs))for(let e=0;e<l.tabs.length;e++)s(l.tabs[e],`${c}.tabs[${e}]`);else if(l.type===`accordion`&&Array.isArray(l.items))for(let e=0;e<l.items.length;e++)s(l.items[e],`${c}.items[${e}]`);else if((l.type===`row`||l.type===`col`||l.type===`grid`||l.type===`card`)&&Array.isArray(l.items))a(l.items,`${c}.items`);else if(l.type===`list`&&Array.isArray(l.items))for(let e=0;e<l.items.length;e++)o(l.items[e],`${c}.items[${e}]`)}}function s(e,t){let n=G(e);if(n===void 0)return;let r=n.items===void 0?n.content:n.items;Array.isArray(r)?a(r,`${t}.items`):o(r,`${t}.items`)}let c=G(e);return c===void 0||(!Array.isArray(c.items)&&i(e)?o(e,`spec`):a(c.items,`items`)),r}function wi(e,t=1/0){return Ci(e,t,()=>{})}function Ti(e,t=1/0){return wi(e,t)}function Ei(e){let t=[],n=G(e);if(n===void 0)return{ok:!1,errors:[`spec root must be an object`]};if(!Array.isArray(n.items)){let t=Vn(e);return t===null?{ok:!1,errors:[`spec.items must be an array`]}:Ei(t)}Vr(n,`spec`,xr,t,[`items`]);let r=0,i=!1,a=(e,n,o)=>{if(!i){if(!Array.isArray(e)){t.push(`${o} must be an array`);return}for(let s=0;s<e.length;s++){if(i||r>=A.maxNodes){i||=(t.push(`spec exceeds ${A.maxNodes} nodes; tail elided`),!0);return}r+=1;let c=`${o}[${s}]`;Pi(e[s],n,c,t,a)}}};return a(n.items,0,`items`),{ok:t.length===0,errors:t}}function Di(e){let t=Or(e),n=yi(t.value),r=Ei(t.value),i=wi(t.value,A.maxNodes+1),a=n===null?0:Ti(n),o=n===null?0:xi(n),s=r.errors.filter(e=>!e.includes(`: unknown type `));return i>a&&s.push(`repair dropped ${i-a} declared native node(s): declared ${i}, rendered ${a}`),{value:t.value,normalized:t.value,repaired:n,spec:n,errors:s,warnings:[...t.warnings,...Fr(t.value)],declaredCount:i,renderedCount:o,declaredNativeCount:i,renderedNativeCount:a,renderedTotalCount:o}}function Oi(e){return e.errors.length>0&&e.errors.every(e=>e.startsWith(`spec exceeds `)||e.startsWith(`repair dropped `))&&e.renderedNativeCount===A.maxNodes&&e.declaredNativeCount===A.maxNodes+1}function ki(e){return e.spec!==null&&(e.errors.length===0||Oi(e))}function Ai(e,t,n){if(Array.isArray(e))for(let r=0;r<e.length;r++){let i=G(e[r]),a=`${t}[${r}]`;if(i===void 0){n.push(`${a} must be an object`);continue}typeof i.label!=`string`&&n.push(`${a}.label must be a string`),(typeof i.value!=`number`||!Number.isFinite(i.value))&&n.push(`${a}.value must be a finite number`),i.color!==void 0&&typeof i.color!=`string`&&n.push(`${a}.color must be a string`)}}function ji(e,t,n){if(Array.isArray(e))for(let r=0;r<e.length;r++){let i=G(e[r]),a=`${t}[${r}]`;if(i===void 0){n.push(`${a} must be an object`);continue}typeof i.label!=`string`&&n.push(`${a}.label must be a string`),i.color!==void 0&&typeof i.color!=`string`&&n.push(`${a}.color must be a string`),Array.isArray(i.data)||n.push(`${a}.data must be an array`),Ai(i.data,`${a}.data`,n)}}function Mi(e,t,n){!Array.isArray(e.data)&&!Array.isArray(e.series)&&n.push(`${t}: type 'chart' requires data or series (array)`),e.variant!==void 0&&n.push(`${t}.variant is unsupported; use kind`),e.data!==void 0&&!Array.isArray(e.data)&&n.push(`${t}.data must be an array`),e.series!==void 0&&!Array.isArray(e.series)&&n.push(`${t}.series must be an array`),e.kind!==void 0&&(typeof e.kind!=`string`||!Jn.includes(e.kind))&&n.push(`${t}.kind must be bars, line, or donut`);let r=e.kind===void 0?`bars`:e.kind;if(Array.isArray(e.data)&&e.data.length===0&&n.push(`${t}.data must not be empty`),Array.isArray(e.series)){e.series.length===0&&n.push(`${t}.series must not be empty`),(r===`line`||r===`donut`)&&n.push(`${t}.series is only supported for bars`);for(let r=0;r<e.series.length;r++){let i=G(e.series[r]);i!==void 0&&Array.isArray(i.data)&&i.data.length===0&&n.push(`${t}.series[${r}].data must not be empty`)}}(r===`line`||r===`donut`)&&e.data===void 0&&n.push(`${t}.data is required for ${r}`),Ai(e.data,`${t}.data`,n),ji(e.series,`${t}.series`,n)}function Ni(e,t,n){if(Array.isArray(e))for(let r=0;r<e.length;r++){let i=e[r];if(G(i)===void 0){if(!Array.isArray(i)){n.push(`${t}[${r}] must be an array or object`);continue}for(let e=0;e<i.length;e++){let a=i[e];typeof a!=`string`&&(typeof a!=`number`||!Number.isFinite(a))&&n.push(`${t}[${r}][${e}] must be a string or finite number`)}}}}function Pi(e,t,n,r,i){if(t>A.maxDepth){r.push(`${n}: exceeds max depth ${A.maxDepth}`);return}let a=G(e);if(a===void 0){r.push(`${n}: must be an object`);return}let o=a.type;if(typeof o!=`string`){r.push(`${n}: missing string 'type'`);return}let s=e=>{a[e]!==void 0&&typeof a[e]!=`string`&&r.push(`${n}: '${e}' must be a string`)},c=e=>{a[e]!==void 0&&(typeof a[e]!=`number`||!Number.isFinite(a[e]))&&r.push(`${n}: '${e}' must be a finite number`)};switch(o){case`text`:typeof a.content!=`string`&&typeof a.text!=`string`&&r.push(`${n}: type 'text' requires content or text (string)`),s(`content`),s(`text`);break;case`row`:case`col`:case`card`:case`grid`:Array.isArray(a.items)||r.push(`${n}: type '${o}' requires items (array)`),i(a.items,t+1,`${n}.items`),o===`grid`&&c(`cols`);break;case`button`:case`checkbox`:case`link`:case`switch`:typeof a.label!=`string`&&r.push(`${n}: type '${o}' requires label (string)`),s(`label`);break;case`image`:case`audio`:case`video`:typeof a.src!=`string`&&r.push(`${n}: type '${o}' requires src (string)`),s(`src`),s(`alt`),o===`video`&&s(`poster`);break;case`slider`:s(`label`),c(`min`),c(`max`),c(`step`),c(`value`);break;case`input`:case`textarea`:s(`label`),s(`placeholder`),s(`value`);break;case`select`:case`radio`:Array.isArray(a.options)||r.push(`${n}: type '${o}' requires options (array)`);break;case`submit`:typeof a.label!=`string`&&r.push(`${n}: type 'submit' requires label (string)`);break;case`badge`:typeof a.label!=`string`&&typeof a.text!=`string`&&typeof a.value!=`string`&&r.push(`${n}: type 'badge' requires label, text, or value (string)`),s(`label`),s(`text`),s(`value`);break;case`stat`:typeof a.label!=`string`&&r.push(`${n}: type 'stat' requires label (string)`),typeof a.value!=`string`&&r.push(`${n}: type 'stat' requires value (string)`),s(`delta`);break;case`progress`:(typeof a.value!=`number`||!Number.isFinite(a.value)||a.value<0||a.value>100)&&r.push(`${n}: type 'progress' requires value (number 0..100)`),c(`value`);break;case`avatar`:typeof a.name!=`string`&&r.push(`${n}: type 'avatar' requires name (string)`);break;case`list`:if(Array.isArray(a.items)||r.push(`${n}: type 'list' requires items (array)`),Array.isArray(a.items))for(let e=0;e<a.items.length;e++){let o=G(a.items[e]);o!==void 0&&typeof o.type==`string`&&Pi(o,t+1,`${n}.items[${e}]`,r,i)}break;case`table`:Array.isArray(a.columns)||r.push(`${n}: type 'table' requires columns (array)`),Array.isArray(a.rows)||r.push(`${n}: type 'table' requires rows (array)`),Ni(a.rows,`${n}.rows`,r);break;case`chart`:Mi(a,n,r);break;case`tabs`:if(Array.isArray(a.tabs)||r.push(`${n}: type 'tabs' requires tabs (array)`),Array.isArray(a.tabs))for(let e=0;e<a.tabs.length;e++){let o=G(a.tabs[e]);if(o===void 0){r.push(`${n}.tabs[${e}] must be an object`);continue}typeof o.label!=`string`&&r.push(`${n}.tabs[${e}].label must be a string`),i(o.items,t+1,`${n}.tabs[${e}].items`)}break;case`plot`:Array.isArray(a.series)||r.push(`${n}: type 'plot' requires series (array)`);break;case`callout`:typeof a.content!=`string`&&r.push(`${n}: type 'callout' requires content (string)`);break;case`steps`:Array.isArray(a.steps)||r.push(`${n}: type 'steps' requires steps (array)`);break;case`keyvalue`:Array.isArray(a.pairs)||r.push(`${n}: type 'keyvalue' requires pairs (array)`);break;case`diff`:Array.isArray(a.diffs)||r.push(`${n}: type 'diff' requires diffs (array)`);break;case`json`:`value`in a||r.push(`${n}: type 'json' requires value`);break;case`code`:typeof a.code!=`string`&&r.push(`${n}: type 'code' requires code (string)`);break;case`accordion`:if(Array.isArray(a.items)||r.push(`${n}: type 'accordion' requires items (array)`),Array.isArray(a.items))for(let e=0;e<a.items.length;e++){let o=G(a.items[e]);if(o===void 0){r.push(`${n}.items[${e}] must be an object`);continue}typeof o.title!=`string`&&r.push(`${n}.items[${e}].title must be a string`),i(o.items,t+1,`${n}.items[${e}].items`)}break;case`copy`:typeof a.text!=`string`&&r.push(`${n}: type 'copy' requires text (string)`);break;case`mermaid`:typeof a.code!=`string`&&r.push(`${n}: type 'mermaid' requires code (string)`);break;case`scene3d`:Array.isArray(a.meshes)||r.push(`${n}: type 'scene3d' requires meshes (array)`);break;case`timeline`:Array.isArray(a.items)||r.push(`${n}: type 'timeline' requires items (array)`);break;case`file-tree`:Array.isArray(a.items)||r.push(`${n}: type 'file-tree' requires items (array)`);break;case`breadcrumb`:Array.isArray(a.items)||r.push(`${n}: type 'breadcrumb' requires items (array)`);break;case`quiz`:typeof a.question!=`string`&&r.push(`${n}: type 'quiz' requires question (string)`),Array.isArray(a.options)||r.push(`${n}: type 'quiz' requires options (array)`);break;case`diagram`:typeof a.kind!=`string`&&r.push(`${n}: type 'diagram' requires kind (string)`),Array.isArray(a.nodes)||r.push(`${n}: type 'diagram' requires nodes (array)`),a.edges!==void 0&&!Array.isArray(a.edges)&&r.push(`${n}: type 'diagram' requires edges (array) when present`);break;case`echart`:a.option===void 0&&a.data===void 0&&a.series===void 0&&r.push(`${n}: type 'echart' requires option, data, or series`),c(`height`);break;default:r.push(`${n}: unknown type '${o}' (custom renderer?)`)}let l=Sr[o];l!==void 0&&Wr(a,n,l,r)}function Fi(e){let t=[],n=[],r=e=>{n.length>=32&&n.shift(),n.push(e)},i=!1,a=!1,o=0;for(;o<e.length;o++){let n=e[o];if(i){a?a=!1:n===`\\`?a=!0:n===`"`&&(i=!1);continue}if(n===`"`){i=!0;continue}if(n===`{`||n===`[`){t.push(n);continue}if(n===`}`||n===`]`){if(t.pop()!==(n===`}`?`{`:`[`))break;n===`}`&&t.length===2&&t[0]===`{`&&t[1]===`[`&&r({end:o+1,closingSuffix:`]}`}),t.length===0&&r({end:o+1,closingSuffix:``});continue}}n.sort((e,t)=>t.end-e.end);let s=[];for(let e of n)(s.length===0||s[s.length-1].end!==e.end)&&s.push(e);return{candidates:s.slice(0,32),scannedChars:o}}function Ii(e,t){try{let n=JSON.parse(e);return Hn(n)?n:t?Vn(n):null}catch{return null}}function Li(e){let t=e.trim();if(t===``)return null;let n=Ii(t,!0);if(n!==null)return n;let{candidates:r}=Fi(t);for(let e of r){let n=Ii(t.slice(0,e.end)+e.closingSuffix,!1);if(n!==null)return n}return null}let Z={maxNodes:200,maxAppends:200},Ri=new Map,zi=new Set;function Bi(){return{ops:new Map,seen:new Map,overflow:null,local:null,localBarrier:-1,replayBarrier:-1,maxSeenSeq:-1,snapshot:null}}let Vi=`dsh.genui.panel`;function Hi(){try{let e=localStorage.getItem(Vi);if(e===null)return{order:[],sessions:{}};let t=JSON.parse(e);return!Array.isArray(t.order)||typeof t.sessions!=`object`||t.sessions===null?{order:[],sessions:{}}:{order:t.order.filter(e=>typeof e==`string`),sessions:t.sessions}}catch{return{order:[],sessions:{}}}}function Ui(e,t){try{let n=Hi(),r=n.order.filter(t=>t!==e);r.unshift(e);let i={...n.sessions,[e]:t};for(;r.length>50;){let e=r.pop();e!==void 0&&delete i[e]}localStorage.setItem(Vi,JSON.stringify({order:r,sessions:i}))}catch{}}function Wi(e){let t=Ri.get(e);if(t!==void 0)return t;let n=Bi();try{let t=Hi().sessions[e];t!==void 0&&(n={ops:new Map,seen:new Map,overflow:null,local:t.local??null,localBarrier:t.localBarrier??-1,replayBarrier:t.maxSeenSeq??-1,maxSeenSeq:t.maxSeenSeq??-1,snapshot:t.snapshot??null})}catch{}return Ri.set(e,n),n}function Gi(e,t){for(let n=0;n<3;n++){let r=e[n]-t[n];if(r!==0)return r}return 0}function Ki(e,t){if(t!==null&&(t.order[0]<=e.localBarrier||t.order[0]<=e.replayBarrier||e.seen.has(t.sourceId)||e.overflow!==null&&e.overflow.sourceId===t.sourceId||t.mode===`append`&&e.overflow!==null&&Gi(t.order,e.overflow.order)>0))return null;let n=[...e.ops.values()].filter(t=>t.order[0]>e.localBarrier&&t.order[0]>e.replayBarrier);t!==null&&n.push(t),n.sort((e,t)=>Gi(e.order,t.order));let r=0;for(let e=0;e<n.length;e++){let t=n[e];t.mode===`replace`&&xi(t.spec,Z.maxNodes+1)<=Z.maxNodes&&(r=e)}let i=e.local,a=null,o=0,s=[],c=e.maxSeenSeq;for(let e=r;e<n.length;e++){let t=n[e];if(t.order[0]>c&&(c=t.order[0]),t.mode===`replace`){if(xi(t.spec,Z.maxNodes+1)>Z.maxNodes){(a===null||Gi(t.order,a.order)<0)&&(a=t);continue}a=null,i=t.spec,s.length=0,o=0,s.push(t);continue}let r=ia(i,t.spec);if(o>=Z.maxAppends||xi(r,Z.maxNodes+1)>Z.maxNodes){(a===null||Gi(t.order,a.order)<0)&&(a=t);continue}i=r,o+=1,s.push(t)}return t!==null&&s.length===e.ops.size&&s.every(t=>e.ops.get(t.sourceId)?.mode===t.mode)&&(a===null&&e.overflow===null||a!==null&&e.overflow!==null&&a.sourceId===e.overflow.sourceId)?null:{snapshot:i,kept:s,overflow:a,maxSeenSeq:c}}function qi(e,t,n){e.snapshot=t.snapshot,e.overflow=t.overflow,e.maxSeenSeq=t.maxSeenSeq,e.ops=new Map(t.kept.map(e=>[e.sourceId,e]));for(let n of t.kept)e.seen.set(n.sourceId,n.order);t.overflow!==null&&e.seen.set(t.overflow.sourceId,t.overflow.order),Ui(n,{snapshot:e.snapshot,local:e.local,localBarrier:e.localBarrier,maxSeenSeq:e.maxSeenSeq})}function Ji(e,t){let n=Wi(e),r=Ki(n,t);if(r===null)return n.seen.has(t.sourceId)||n.overflow?.sourceId===t.sourceId?`idempotent`:(n.overflow!==null&&t.mode===`append`&&Gi(t.order,n.overflow.order)>0||Xi(e,t,n),`blocked`);let i=r.overflow!==null&&r.overflow.sourceId===t.sourceId?`overflow`:`accepted`,a=n.snapshot!==r.snapshot;if(qi(n,r,e),a)for(let e of zi)e();return i}let Yi=new Set;function Xi(e,t,n){let r=`${e}\u0000${t.sourceId}`;Yi.has(r)||(Yi.add(r),console.warn(`[genui] 面板操作被重放屏障拒绝(source ${t.sourceId},order[0]=${t.order[0]} ≤ replayBarrier ${n.replayBarrier} / localBarrier ${n.localBarrier})。历史消息重放被拒是预期行为;若是刚发送的新消息,说明消息序号推导异常,请报告。`))}function Zi(e,t){let n=Wi(e),r=n.maxSeenSeq;if(n.local!==t||n.localBarrier!==r){n.local=t,n.localBarrier=r,qi(n,Ki(n,null),e);for(let e of zi)e()}}let Qi=new Set;function $i(e,t){let n=`${e}\u0000${t}`;Qi.has(n)||(Qi.add(n),console.warn(`[genui] 面板已到节点/操作上限(${Z.maxNodes} 节点、${Z.maxAppends} 条追加),本次 append 被拒绝;请让模型发送 replace 更新面板。`))}function ea(e){let t=Ri.delete(e),n=aa.delete(e),r=`${e}\u0000`;for(let e of Qi)e.startsWith(r)&&Qi.delete(e);for(let e of Yi)e.startsWith(r)&&Yi.delete(e);if(!(!t&&!n)){for(let e of zi)e();for(let e of oa)e()}}function ta(e){return Wi(e).snapshot}function na(e){return zi.add(e),()=>{zi.delete(e)}}function ra(e){if(e.items.length!==1)return null;let t=e.items[0];return t?.type!==`tabs`||!Array.isArray(t.tabs)?null:t.tabs}function ia(e,t){if(e===null||e.items.length===0)return t;let n=e.title??t.title,r={...e,...n===void 0?{}:{title:n}},i=ra(e),a=ra(t);if(i!==null&&a!==null){let e=new Map(i.map(e=>[e.label,{label:e.label,items:[...e.items]}]));for(let t of a){let n=e.get(t.label);n===void 0?e.set(t.label,{label:t.label,items:[...t.items]}):n.items.push(...t.items)}return{...r,items:[{type:`tabs`,tabs:[...e.values()]}]}}return{...r,items:[...e.items,...t.items]}}let aa=new Map,oa=new Set;function sa(e){aa.set(e,(aa.get(e)??0)+1);for(let e of oa)e()}function ca(e){return aa.get(e)??0}function la(e){return oa.add(e),()=>{oa.delete(e)}}function ua(e){try{return JSON.parse(e),!0}catch{return!1}}function da(e){try{return JSON.parse(e),null}catch(e){let t=e instanceof Error?e.message:String(e),n=t.match(/position (\d+)/i);return`${n===null?``:`(字符 ${n[1]} 附近)`}${t.slice(0,140)}`}}function fa(e){try{return JSON.parse(e),null}catch{}let t=``,n=!1,r=!1,i=0;for(let a=0;a<e.length;a++){let o=e[a];if(r){t+=o,r=!1;continue}if(n&&o===`\\`){t+=o,r=!0;continue}if(o===`"`){if(!n){n=!0,t+=o;continue}let r=a+1;for(;r<e.length&&(e[r]===` `||e[r]===` `||e[r]===`
|
|
1
|
+
window.__ModuleLoader__.load({id:`@changfenhuang/dsh-genui`,factory:e=>{var t={exports:{}},n=t.exports;Object.defineProperty(n,Symbol.toStringTag,{value:`Module`});var r=Object.create,i=Object.defineProperty,a=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,s=Object.getPrototypeOf,c=Object.prototype.hasOwnProperty,l=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(e){throw n=[e],e}},u=(e,t)=>{let n={};for(var r in e)i(n,r,{get:e[r],enumerable:!0});return t||i(n,Symbol.toStringTag,{value:`Module`}),n},d=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var s=o(t),l=0,u=s.length,d;l<u;l++)d=s[l],!c.call(e,d)&&d!==n&&i(e,d,{get:(e=>t[e]).bind(null,d),enumerable:!(r=a(t,d))||r.enumerable});return e},f=(e,t,n)=>(n=e==null?{}:r(s(e)),d(t||!e||!e.__esModule||!c.call(e,`default`)?i(n,`default`,{value:e,enumerable:!0}):n,e));let p=e("@deepseek-ai/dsh-client-ui-primitives");p=f(p,1);let m=e("react"),h=e("react-dom/client"),g=e("react/jsx-runtime"),_=(0,m.createContext)(void 0),v=p.GenuiActionContext??_;function y(){return(0,m.useContext)(v)}let b=`@changfenhuang/dsh-genui/GenuiBlock.module.css`;if(typeof document<`u`&&document.querySelector(`style[data-plugin-css=`+JSON.stringify(b)+`]`)===null){let e=document.createElement(`style`);e.dataset.plugin=`@changfenhuang/dsh-genui`,e.dataset.pluginCss=b,e.textContent=`body[data-ds-dark-theme] .V1MMBW_block,body[data-ds-dark-theme] .V1MMBW_panel{--dsl-g-surface:color-mix(in srgb, var(--dsw-alias-label-primary) 4%, var(--dsw-alias-bg-layer-2,var(--dsw-alias-bg-layer-1,var(--dsw-alias-markdown-code-block,transparent))));--dsl-g-shadow-card:0 1px 2px #0000003d, 0 8px 24px #0000002e}.V1MMBW_block,.V1MMBW_panel{--dsl-g-radius-surface:12px;--dsl-g-radius-control:8px;--dsl-g-radius-sm:6px;--dsl-g-radius-pill:999px;--dsl-g-font-hero:34px;--dsl-g-font-display:28px;--dsl-g-font-h1:24px;--dsl-g-font-h2:19px;--dsl-g-font-h3:16px;--dsl-g-font-body:14.5px;--dsl-g-font-title:13.5px;--dsl-g-font-meta:12.5px;--dsl-g-font-data:12px;--dsl-g-gap-lg:16px;--dsl-g-gap-md:12px;--dsl-g-gap-sm:8px;--dsl-g-gap-xs:4px;--dsl-g-border:var(--dsw-alias-border-l1,var(--dsw-alias-border-l2,#ffffff1f));--dsl-g-border-strong:var(--dsw-alias-border-l2,#ffffff1f);--dsl-g-accent:var(--dsw-alias-state-business-primary,#4f8ef7);--dsl-g-accent-soft:color-mix(in srgb, var(--dsl-g-accent) var(--dsl-g-tint), transparent);--dsl-g-hover:color-mix(in srgb, var(--dsw-alias-label-primary) 4%, transparent);--dsl-g-zebra:color-mix(in srgb, var(--dsw-alias-label-primary) 2.5%, transparent);--dsl-g-tint:8%;--dsl-g-tint-strong:14%;--dsl-g-font-mono:var(--ds-font-family-code,ui-monospace, "SF Mono", monospace);--dsl-g-surface:color-mix(in srgb, var(--dsw-alias-label-primary) 10%, var(--dsw-alias-bg-layer-2,var(--dsw-alias-bg-layer-1,var(--dsw-alias-markdown-code-block,transparent))));--dsl-g-border-surface:color-mix(in srgb, var(--dsw-alias-label-primary) 12%, transparent);--dsl-g-shadow-card:0 1px 3px #0000001a, 0 8px 24px #0000000f}.V1MMBW_block{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;margin:8px 0}.V1MMBW_block *,.V1MMBW_block :before,.V1MMBW_block :after,.V1MMBW_panel *,.V1MMBW_panel :before,.V1MMBW_panel :after{box-sizing:border-box}.V1MMBW_banner{letter-spacing:-.02em;color:var(--dsw-alias-label-primary);border-bottom:1px solid var(--dsl-g-border);margin-bottom:18px;padding-bottom:14px;font-size:22px;font-weight:800}.V1MMBW_col{gap:var(--dsl-g-gap-md);flex-direction:column;display:flex}.V1MMBW_row{align-items:center;gap:var(--dsl-g-gap-md);display:flex}.V1MMBW_row.V1MMBW_wrap{flex-wrap:wrap}.V1MMBW_grid{gap:var(--dsl-g-gap-md);display:grid}.V1MMBW_gridSpan{flex-direction:column;min-width:0;display:flex}.V1MMBW_gridSpan>*{flex:1}@media (width<=560px){.V1MMBW_grid{grid-template-columns:1fr!important}.V1MMBW_row{flex-wrap:wrap}}.V1MMBW_spacer{flex:1}.V1MMBW_divider{background:var(--dsw-alias-markdown-hr,var(--dsl-g-border));height:1px;margin:var(--dsl-g-gap-xs) 0;border:none}.V1MMBW_card{background:var(--dsl-g-surface);border:1px solid var(--dsl-g-border-surface);border-radius:var(--dsl-g-radius-surface);padding:var(--dsl-g-gap-lg);gap:var(--dsl-g-gap-md);min-width:0;box-shadow:var(--dsl-g-shadow-card);flex-direction:column;display:flex}.V1MMBW_card>:last-child{flex:auto;min-height:0}.V1MMBW_card>.V1MMBW_chart,.V1MMBW_card>.V1MMBW_lineChart,.V1MMBW_card>.V1MMBW_donut,.V1MMBW_card>.V1MMBW_hbars,.V1MMBW_card>.V1MMBW_col{justify-content:center}.V1MMBW_cardTitle{font-size:var(--dsl-g-font-h3);letter-spacing:-.01em;text-transform:none;color:var(--dsw-alias-label-secondary);font-weight:650}.V1MMBW_text{color:var(--dsw-alias-label-primary)}.V1MMBW_text.V1MMBW_h1{font-size:var(--dsl-g-font-h1);letter-spacing:-.02em;font-weight:800;line-height:1.25}.V1MMBW_text.V1MMBW_h2{font-size:var(--dsl-g-font-h2);letter-spacing:-.015em;font-weight:700;line-height:1.3}.V1MMBW_text.V1MMBW_h3{font-size:var(--dsl-g-font-h3);font-weight:650;line-height:1.45}.V1MMBW_text.V1MMBW_body{font-size:var(--dsl-g-font-body);color:var(--dsw-alias-label-primary);text-wrap:pretty;max-width:68ch;line-height:1.7}.V1MMBW_text.V1MMBW_muted{font-size:var(--dsl-g-font-title);color:var(--dsw-alias-label-secondary);line-height:1.65}.V1MMBW_text.V1MMBW_caption{font-size:var(--dsl-g-font-meta);color:var(--dsw-alias-label-secondary);line-height:1.6}.V1MMBW_text.V1MMBW_center{text-align:center}.V1MMBW_button{border:1px solid var(--dsl-g-border);background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-primary);border-radius:var(--dsl-g-radius-control);padding:8px var(--dsl-g-gap-lg);font-size:var(--dsl-g-font-title);cursor:pointer;text-align:center;align-self:flex-start;font-family:inherit;font-weight:600;line-height:1.4;transition:border-color .15s,filter .15s,background .15s,transform .1s}.V1MMBW_button:hover:not(:disabled){border-color:var(--dsl-g-accent);filter:brightness(1.06)}.V1MMBW_button.V1MMBW_primary:hover:not(:disabled){filter:brightness(1.08)}.V1MMBW_button:active:not(:disabled){filter:brightness(.97);transform:translateY(1px)}.V1MMBW_button:disabled{cursor:not-allowed;opacity:.45;filter:none;box-shadow:none;pointer-events:none}.V1MMBW_button.V1MMBW_primary{background:var(--dsl-g-accent);color:#fff;border:none;box-shadow:inset 0 1px #ffffff24}.V1MMBW_button.V1MMBW_danger{background:color-mix(in srgb, var(--dsw-alias-state-error-primary,#ff6b6b) var(--dsl-g-tint), transparent);border-color:color-mix(in srgb, var(--dsw-alias-state-error-primary,#ff6b6b) 30%, transparent);color:var(--dsw-alias-state-error-primary,#ffb3b3)}.V1MMBW_button.V1MMBW_success{background:color-mix(in srgb, var(--dsw-alias-state-success-primary,#3ecf8e) var(--dsl-g-tint), transparent);border-color:color-mix(in srgb, var(--dsw-alias-state-success-primary,#3ecf8e) 30%, transparent);color:var(--dsw-alias-state-success-secondary,#9fe8c5)}.V1MMBW_button.V1MMBW_ghost{background:0 0}.V1MMBW_button.V1MMBW_full{width:100%}.V1MMBW_button.V1MMBW_small{font-size:var(--dsl-g-font-meta);border-radius:var(--dsl-g-radius-control);padding:4px 12px}.V1MMBW_field{gap:var(--dsl-g-gap-xs);flex-direction:column;display:flex}.V1MMBW_field>span{font-size:var(--dsl-g-font-meta);color:var(--dsw-alias-label-tertiary)}.V1MMBW_input,.V1MMBW_select{background:var(--dsl-g-surface);border:1px solid var(--dsl-g-border-surface);border-radius:var(--dsl-g-radius-control);color:var(--dsw-alias-label-primary);font-size:var(--dsl-g-font-title);outline:none;width:100%;padding:8px 12px;font-family:inherit}.V1MMBW_input:focus,.V1MMBW_select:focus{border-color:var(--dsl-g-accent);box-shadow:0 0 0 3px color-mix(in srgb, var(--dsl-g-accent) var(--dsl-g-tint-strong), transparent)}.V1MMBW_input::placeholder{color:var(--dsw-alias-label-caption,#5b6378)}.V1MMBW_checkbox{align-items:center;gap:var(--dsl-g-gap-sm);font-size:var(--dsl-g-font-title);color:var(--dsw-alias-label-secondary);cursor:pointer;display:flex}.V1MMBW_checkbox input{accent-color:var(--dsl-g-accent);width:15px;height:15px}.V1MMBW_checkbox input:focus-visible{outline:2px solid var(--dsl-g-accent);outline-offset:2px;border-radius:4px}.V1MMBW_link{color:var(--dsl-g-accent);font-size:var(--dsl-g-font-title);cursor:pointer;background:0 0;border:none;padding:0;font-family:inherit;text-decoration:none}.V1MMBW_link:hover{text-decoration:underline}.V1MMBW_linkText{color:var(--dsl-g-accent);font-size:var(--dsl-g-font-title);font-family:inherit;text-decoration:none}.V1MMBW_media{padding:var(--dsl-g-gap-md);gap:var(--dsl-g-gap-sm);background:var(--dsl-g-surface);border:1px solid var(--dsl-g-border-surface);border-radius:var(--dsl-g-radius-surface);flex-direction:column;margin:0;display:flex}.V1MMBW_mediaLabel{font-size:var(--dsl-g-font-title);color:var(--dsw-alias-label-primary);font-weight:600}.V1MMBW_mediaPlayer{border-radius:var(--dsl-g-radius-control);width:100%;min-width:0;display:block}img.V1MMBW_mediaPlayer{aspect-ratio:16/9;object-fit:cover;background:var(--dsl-g-surface)}.V1MMBW_videoPlayer{object-fit:contain;background:#000;max-height:min(70vh,720px)}.V1MMBW_mediaError{font-size:var(--dsl-g-font-title);color:var(--dsw-alias-state-error-primary,#f25a5a)}.V1MMBW_hero{border:1px solid var(--dsl-g-border-surface);background:radial-gradient(120% 140% at 100% 0%, color-mix(in srgb, var(--dsl-g-accent) 22%, transparent) 0%, transparent 58%), linear-gradient(180deg, color-mix(in srgb, var(--dsl-g-accent) 7%, transparent), transparent 70%), var(--dsw-alias-bg-layer-2,var(--dsw-alias-bg-layer-1,transparent));box-shadow:var(--dsl-g-shadow-card);border-radius:14px;flex-direction:column;gap:6px;padding:22px 24px 24px;display:flex;position:relative;overflow:hidden}.V1MMBW_heroSuccess{background:radial-gradient(120% 140% at 100% 0%, color-mix(in srgb, var(--dsw-alias-state-success-primary,#3ecf8e) 20%, transparent) 0%, transparent 58%), linear-gradient(180deg, color-mix(in srgb, var(--dsw-alias-state-success-primary,#3ecf8e) 6%, transparent), transparent 70%), var(--dsw-alias-bg-layer-2,var(--dsw-alias-bg-layer-1,transparent))}.V1MMBW_heroWarning{background:radial-gradient(120% 140% at 100% 0%, color-mix(in srgb, var(--dsw-alias-state-warn-primary,#f5b83d) 20%, transparent) 0%, transparent 58%), linear-gradient(180deg, color-mix(in srgb, var(--dsw-alias-state-warn-primary,#f5b83d) 6%, transparent), transparent 70%), var(--dsw-alias-bg-layer-2,var(--dsw-alias-bg-layer-1,transparent))}.V1MMBW_heroDanger{background:radial-gradient(120% 140% at 100% 0%, color-mix(in srgb, var(--dsw-alias-state-error-primary,#ff6b6b) 18%, transparent) 0%, transparent 58%), linear-gradient(180deg, color-mix(in srgb, var(--dsw-alias-state-error-primary,#ff6b6b) 6%, transparent), transparent 70%), var(--dsw-alias-bg-layer-2,var(--dsw-alias-bg-layer-1,transparent))}.V1MMBW_heroLabel{font-size:var(--dsl-g-font-meta);letter-spacing:.1em;text-transform:uppercase;color:var(--dsw-alias-label-secondary);font-weight:700}.V1MMBW_heroTop{align-items:baseline;gap:var(--dsl-g-gap-md);flex-wrap:wrap;display:flex}.V1MMBW_heroValue{font-family:var(--dsl-g-font-mono);letter-spacing:-.028em;color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;align-items:baseline;gap:4px;font-size:52px;font-weight:750;line-height:1;display:inline-flex}.V1MMBW_heroUnit{letter-spacing:0;color:var(--dsw-alias-label-secondary);font-size:.44em;font-weight:650}.V1MMBW_heroSpark{align-self:center;width:168px;margin-left:auto}.V1MMBW_heroTitle{letter-spacing:-.01em;color:var(--dsw-alias-label-primary);font-size:20px;font-weight:700;line-height:1.3}.V1MMBW_heroSubtitle{font-size:var(--dsl-g-font-title);color:var(--dsw-alias-label-secondary);text-wrap:pretty;line-height:1.6}.V1MMBW_inlineCode{font-family:var(--dsl-g-font-mono);background:var(--dsl-g-surface);border:1px solid var(--dsl-g-border-surface);white-space:nowrap;border-radius:5px;padding:1px 5px;font-size:.92em}.V1MMBW_inlineStrong{color:var(--dsw-alias-label-primary);font-weight:680}.V1MMBW_inlineMark{background:color-mix(in srgb, var(--dsl-g-accent) 20%, transparent);color:inherit;border-radius:4px;padding:0 3px}.V1MMBW_inlineLink{color:var(--dsl-g-accent);text-underline-offset:2px;text-decoration:underline}.V1MMBW_inlineLink:hover{text-decoration-thickness:2px}.V1MMBW_badge{align-items:center;gap:var(--dsl-g-gap-xs);font-size:var(--dsl-g-font-meta);letter-spacing:.01em;border-radius:var(--dsl-g-radius-pill);background:color-mix(in srgb, var(--dsw-alias-label-tertiary) var(--dsl-g-tint), transparent);width:fit-content;color:var(--dsw-alias-label-secondary);border:1px solid var(--dsl-g-border);padding:1px 10px;font-weight:500;line-height:1.5;display:inline-flex}.V1MMBW_badge.V1MMBW_success{background:color-mix(in srgb, var(--dsw-alias-state-success-primary,#3ecf8e) var(--dsl-g-tint), transparent);color:var(--dsw-alias-state-success-secondary,#7fe3b4);border-color:color-mix(in srgb, var(--dsw-alias-state-success-primary,#3ecf8e) 30%, transparent)}.V1MMBW_badge.V1MMBW_warn{background:color-mix(in srgb, var(--dsw-alias-state-warn-primary,#f5b83d) var(--dsl-g-tint), transparent);color:var(--dsw-alias-state-warn-secondary,#f7cf7d);border-color:color-mix(in srgb, var(--dsw-alias-state-warn-primary,#f5b83d) 30%, transparent)}.V1MMBW_badge.V1MMBW_danger{background:color-mix(in srgb, var(--dsw-alias-state-error-primary,#ff6b6b) var(--dsl-g-tint), transparent);color:var(--dsw-alias-state-error-primary,#ff9d9d);border-color:color-mix(in srgb, var(--dsw-alias-state-error-primary,#ff6b6b) 30%, transparent)}.V1MMBW_badge.V1MMBW_accent{background:color-mix(in srgb, var(--dsl-g-accent) var(--dsl-g-tint), transparent);color:var(--dsw-alias-state-business-primary,#9cc3ff);border-color:color-mix(in srgb, var(--dsl-g-accent) 30%, transparent)}.V1MMBW_stat{border:1px solid var(--dsl-g-border-surface);border-radius:var(--dsl-g-radius-surface);background:var(--dsl-g-surface);min-width:0;box-shadow:var(--dsl-g-shadow-card);flex-direction:column;gap:4px;padding:14px 16px 15px;display:flex;overflow:hidden}.V1MMBW_statHero{padding:18px 20px 20px}.V1MMBW_statHero .V1MMBW_statValue{letter-spacing:-.035em;font-size:44px;line-height:1.02}.V1MMBW_statHero .V1MMBW_statLabel{font-size:13px}.V1MMBW_grid>.V1MMBW_stat,.V1MMBW_row>.V1MMBW_stat{border-left:1px solid var(--dsl-g-border)}.V1MMBW_statLabel{font-size:var(--dsl-g-font-meta);color:var(--dsw-alias-label-secondary);letter-spacing:.05em;text-transform:uppercase;line-height:1.4}.V1MMBW_statValue{font-family:var(--dsl-g-font-mono);font-size:var(--dsl-g-font-hero);letter-spacing:-.03em;font-variant-numeric:tabular-nums;color:var(--dsw-alias-label-primary);overflow-wrap:anywhere;align-items:baseline;gap:3px;font-weight:700;line-height:1.05;display:flex}.V1MMBW_statUnit{letter-spacing:0;color:var(--dsw-alias-label-secondary);font-size:.5em;font-weight:600}.V1MMBW_statHero .V1MMBW_statUnit{font-size:.46em}.V1MMBW_statDelta{font-size:var(--dsl-g-font-meta);border-radius:var(--dsl-g-radius-pill);width:fit-content;color:var(--dsw-alias-label-secondary);background:color-mix(in srgb, var(--dsw-alias-label-primary) 5%, transparent);padding:0 6px;font-weight:600}.V1MMBW_statDelta.V1MMBW_up{color:var(--dsw-alias-state-success-secondary,#1f9d63);background:color-mix(in srgb, var(--dsw-alias-state-success-primary,#22c55e) 12%, transparent)}.V1MMBW_statSpark{width:calc(100% + 32px);max-width:none;height:30px;margin:6px -16px -15px;display:block;overflow:visible}.V1MMBW_statHero .V1MMBW_statSpark{width:calc(100% + 40px);margin:8px -20px -20px}.V1MMBW_statDelta.V1MMBW_down{color:var(--dsw-alias-state-error-primary,#d94848);background:color-mix(in srgb, var(--dsw-alias-state-error-primary,#f25a5a) 12%, transparent)}.V1MMBW_progress{gap:var(--dsl-g-gap-sm);flex-direction:column;display:flex}.V1MMBW_progressRow{justify-content:space-between;gap:var(--dsl-g-gap-md);font-size:var(--dsl-g-font-meta);color:var(--dsw-alias-label-secondary);display:flex}.V1MMBW_progressRow span:last-child{font-family:var(--dsl-g-font-mono);color:var(--dsw-alias-label-primary);font-weight:600}.V1MMBW_track{border-radius:var(--dsl-g-radius-pill);background:color-mix(in srgb, var(--dsw-alias-label-primary) 7%, transparent);height:8px;box-shadow:inset 0 0 0 1px var(--dsl-g-border);overflow:hidden}.V1MMBW_fill{border-radius:var(--dsl-g-radius-pill);background:linear-gradient(180deg, color-mix(in srgb, var(--dsl-g-accent) 85%, white), var(--dsl-g-accent));height:100%;transition:width .5s}.V1MMBW_list{flex-direction:column;display:flex}.V1MMBW_li{padding:9px var(--dsl-g-gap-xs) 9px 16px;flex-direction:column;gap:3px;display:flex;position:relative}.V1MMBW_li:before{content:"";background:var(--dsl-g-accent);opacity:.6;border-radius:50%;width:5px;height:5px;position:absolute;top:15px;left:2px}.V1MMBW_li+.V1MMBW_li{border-top:1px solid var(--dsl-g-border)}.V1MMBW_li:last-child{border-bottom:none}.V1MMBW_liTitle{font-size:var(--dsl-g-font-body);color:var(--dsw-alias-label-primary);font-weight:650;line-height:1.5}.V1MMBW_liDesc{font-size:var(--dsl-g-font-meta);color:var(--dsw-alias-label-secondary);line-height:1.55}.V1MMBW_tableWrap{border-radius:var(--dsl-g-radius-control);border:1px solid var(--dsl-g-border-surface);overscroll-behavior-x:contain;min-width:0;max-width:100%;overflow-x:auto}.V1MMBW_table{border-collapse:collapse;width:100%;font-size:var(--dsl-g-font-title)}.V1MMBW_table th{text-align:left;padding:9px var(--dsl-g-gap-md);color:var(--dsw-alias-label-secondary);font-weight:700;font-size:var(--dsl-g-font-meta);letter-spacing:.06em;text-transform:uppercase;border-bottom:1px solid var(--dsl-g-border-strong);background:var(--dsl-g-zebra);white-space:nowrap}.V1MMBW_table td{padding:10px var(--dsl-g-gap-md);border-bottom:1px solid var(--dsl-g-border);color:var(--dsw-alias-label-primary);white-space:nowrap;font-variant-numeric:tabular-nums;vertical-align:middle;line-height:1.5}.V1MMBW_table td:first-child{font-weight:600}.V1MMBW_table th:first-child{color:var(--dsw-alias-label-primary)}.V1MMBW_table tbody tr:nth-child(2n){background:var(--dsl-g-zebra)}.V1MMBW_table tbody tr:hover{background:var(--dsl-g-hover)}.V1MMBW_table tr:last-child td{border-bottom:none}.V1MMBW_table th.V1MMBW_thNum,.V1MMBW_table td.V1MMBW_tdNum{text-align:right}.V1MMBW_tdDelta{font-weight:600}.V1MMBW_tdDeltaUp{color:var(--dsw-alias-state-success-secondary,#1f9d63)}.V1MMBW_tdDeltaDown{color:var(--dsw-alias-state-error-primary,#d94848)}.V1MMBW_thSort{color:inherit;font:inherit;font-weight:inherit;cursor:pointer;text-align:left;background:0 0;border:none;margin:0;padding:0;transition:color .12s}.V1MMBW_table th.V1MMBW_thNum .V1MMBW_thSort{text-align:right;width:100%}.V1MMBW_thSort:hover,.V1MMBW_table th[aria-sort]:not([aria-sort=none]) .V1MMBW_thSort{color:var(--dsw-alias-label-primary)}.V1MMBW_thSortMark{color:var(--dsl-g-accent)}.V1MMBW_thSort:focus-visible{outline:2px solid var(--dsl-g-accent);outline-offset:1px;border-radius:var(--dsl-g-radius-control)}.V1MMBW_chart{gap:var(--dsl-g-gap-sm);flex-direction:column;display:flex;position:relative}.V1MMBW_chartBody{align-items:stretch;gap:6px;display:flex}.V1MMBW_chartYAxis{flex-shrink:0;width:42px;position:relative}.V1MMBW_chartYTick{font-family:var(--dsl-g-font-mono);font-size:var(--dsl-g-font-data);color:var(--dsw-alias-label-tertiary);white-space:nowrap;position:absolute;right:0;transform:translateY(50%)}.V1MMBW_chartPlot{align-items:flex-end;gap:var(--dsl-g-gap-sm);flex:1;min-width:0;height:160px;display:flex;position:relative}.V1MMBW_baseline{background:var(--dsl-g-border-strong);pointer-events:none;height:1px;position:absolute;bottom:0;left:0;right:0}.V1MMBW_gridline{background:var(--dsw-alias-border-l1,#ffffff0f);pointer-events:none;height:1px;position:absolute;left:0;right:0}.V1MMBW_chartLabels{gap:var(--dsl-g-gap-sm);display:flex}.V1MMBW_chartLabels>span{flex:1;min-width:0}.V1MMBW_chartLegend{gap:var(--dsl-g-gap-md);font-size:var(--dsl-g-font-meta);color:var(--dsw-alias-label-secondary);flex-wrap:wrap;line-height:1.5;display:flex}.V1MMBW_legendItem{align-items:center;gap:6px;display:inline-flex}.V1MMBW_legendSwatch{border-radius:3px;flex-shrink:0;width:10px;height:10px}.V1MMBW_lineArea{fill:var(--dsl-g-accent);opacity:.1}.V1MMBW_chartTip{border-radius:var(--dsl-g-radius-control);border:1px solid var(--dsl-g-border-strong);background:var(--dsw-alias-bg-layer-3,var(--dsw-alias-bg-layer-2,var(--dsw-alias-bg-layer-1,#1c1c1e)));color:var(--dsw-alias-label-primary);font-size:var(--dsl-g-font-meta);white-space:nowrap;pointer-events:none;z-index:6;flex-direction:column;gap:2px;padding:6px 10px;line-height:1.4;display:flex;position:absolute;transform:translate(-50%,calc(-100% - 10px));box-shadow:0 8px 22px #0000004d}.V1MMBW_chartTipRow{justify-content:space-between;gap:14px;display:flex}.V1MMBW_chartTipValue{font-family:var(--dsl-g-font-mono);font-variant-numeric:tabular-nums;font-weight:600}.V1MMBW_stackValue{text-align:center;font-family:var(--dsl-g-font-mono);font-size:var(--dsl-g-font-data);color:#fff;text-shadow:0 1px 2px #0006;font-variant-numeric:tabular-nums;font-weight:700;line-height:1.5;display:block}.V1MMBW_barCol{flex:1;min-width:0;height:100%;position:relative}.V1MMBW_barValue{font-family:var(--dsl-g-font-mono);font-size:var(--dsl-g-font-data);font-variant-numeric:tabular-nums;color:var(--dsw-alias-label-primary);text-align:center;font-weight:600;line-height:1.2;position:absolute;left:0;right:0}.V1MMBW_stack{border-radius:5px 5px 0 0;flex-direction:column-reverse;gap:2px;transition:height .6s;display:flex;position:absolute;bottom:0;left:0;right:0;overflow:hidden}.V1MMBW_stackSeg{width:100%;transition:height .6s,filter .15s}.V1MMBW_stackSeg:hover{filter:brightness(1.15)}.V1MMBW_barFill{background:linear-gradient(180deg, color-mix(in srgb, var(--dsl-g-accent) 78%, white), var(--dsl-g-accent));border-radius:5px 5px 0 0;min-height:2px;transition:height .6s,filter .15s;position:absolute;left:0;right:0}.V1MMBW_barFill:hover{filter:brightness(1.18)}.V1MMBW_barLabel{font-size:var(--dsl-g-font-meta);color:var(--dsw-alias-label-secondary);text-align:center;white-space:nowrap;text-overflow:ellipsis;line-height:1.5;overflow:hidden}.V1MMBW_tabs{gap:var(--dsl-g-gap-md);flex-direction:column;display:flex}.V1MMBW_tabBar{border-bottom:1px solid var(--dsl-g-border);gap:2px;display:flex}.V1MMBW_tab{color:var(--dsw-alias-label-secondary);font-size:var(--dsl-g-font-title);border-radius:var(--dsl-g-radius-sm) var(--dsl-g-radius-sm) 0 0;cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;padding:8px 14px;font-family:inherit;font-weight:600;line-height:1.5;transition:color .15s,background .15s,border-bottom-color .15s}.V1MMBW_tab:hover{color:var(--dsw-alias-label-primary);background:var(--dsl-g-hover)}.V1MMBW_tabActive{color:var(--dsw-alias-label-primary);border-bottom-color:var(--dsl-g-accent);font-weight:650}.V1MMBW_tab:focus-visible{outline:2px solid var(--dsl-g-accent);outline-offset:-2px}.V1MMBW_avatar{width:32px;height:32px;font-size:var(--dsl-g-font-title);color:#fff;border:1px solid #ffffff24;border-radius:50%;flex-shrink:0;place-items:center;font-weight:700;display:grid;box-shadow:inset 0 1px #ffffff29}.V1MMBW_callout{border-radius:var(--dsl-g-radius-surface);border:1px solid var(--dsl-g-border-surface);font-size:var(--dsl-g-font-title);background:var(--dsl-g-surface);box-shadow:var(--dsl-g-shadow-card);flex-direction:column;gap:3px;padding:12px 15px;line-height:1.65;display:flex}.V1MMBW_calloutInfo{background:color-mix(in srgb, var(--dsl-g-accent) var(--dsl-g-tint), transparent)}.V1MMBW_calloutSuccess{background:color-mix(in srgb, var(--dsw-alias-state-success-primary,#3ecf8e) var(--dsl-g-tint), transparent)}.V1MMBW_calloutWarning{background:color-mix(in srgb, var(--dsw-alias-state-warn-primary,#f5b83d) var(--dsl-g-tint), transparent)}.V1MMBW_calloutError{background:color-mix(in srgb, var(--dsw-alias-state-error-primary,#ff6b6b) var(--dsl-g-tint), transparent)}.V1MMBW_calloutInfo .V1MMBW_calloutTitle{color:var(--dsw-alias-state-business-primary,#4f8ef7)}.V1MMBW_calloutSuccess .V1MMBW_calloutTitle{color:var(--dsw-alias-state-success-primary,#2f9e6b)}.V1MMBW_calloutWarning .V1MMBW_calloutTitle{color:var(--dsw-alias-state-warn-primary,#b8860b)}.V1MMBW_calloutError .V1MMBW_calloutTitle{color:var(--dsw-alias-state-error-primary,#d94848)}.V1MMBW_calloutTitle{font-weight:700;font-size:var(--dsl-g-font-h3);letter-spacing:-.005em;color:var(--dsw-alias-label-primary);align-items:center;gap:6px;display:flex}.V1MMBW_calloutBody{color:var(--dsw-alias-label-secondary)}.V1MMBW_steps{gap:var(--dsl-g-gap-md);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.V1MMBW_step{gap:var(--dsl-g-gap-md);align-items:flex-start;display:flex;position:relative}.V1MMBW_step:not(:last-child):before{content:"";top:27px;left:11px;bottom:calc(-1 * var(--dsl-g-gap-md));background:var(--dsl-g-border);width:1px;position:absolute}.V1MMBW_stepDone:not(:last-child):before{background:color-mix(in srgb, var(--dsw-alias-state-success-primary,#3ecf8e) 45%, transparent)}.V1MMBW_stepTitle{transition:color .15s}.V1MMBW_stepActive .V1MMBW_stepTitle{color:var(--dsl-g-accent)}.V1MMBW_stepMarker{width:24px;height:24px;font-size:var(--dsl-g-font-meta);background:var(--dsl-g-surface);border:1px solid var(--dsl-g-border-surface);color:var(--dsw-alias-label-secondary);z-index:1;border-radius:50%;flex-shrink:0;place-items:center;font-weight:700;display:grid}.V1MMBW_stepDone .V1MMBW_stepMarker{background:color-mix(in srgb, var(--dsw-alias-state-success-primary,#3ecf8e) 18%, transparent);border-color:color-mix(in srgb, var(--dsw-alias-state-success-primary,#3ecf8e) 55%, transparent);color:var(--dsw-alias-state-success-primary,#2f9e6b);font-size:13px}.V1MMBW_stepActive .V1MMBW_stepMarker{background:color-mix(in srgb, var(--dsl-g-accent) var(--dsl-g-tint-strong), transparent);border-color:var(--dsl-g-accent);color:var(--dsl-g-accent)}.V1MMBW_stepContent{flex-direction:column;gap:2px;padding-top:2px;display:flex}.V1MMBW_stepTitle{font-size:var(--dsl-g-font-body);color:var(--dsw-alias-label-primary);font-weight:650;line-height:1.45}.V1MMBW_stepDesc{font-size:var(--dsl-g-font-meta);color:var(--dsw-alias-label-secondary);line-height:1.55}.V1MMBW_keyvalue{flex-direction:column;margin:0;display:flex}.V1MMBW_kvRow{gap:var(--dsl-g-gap-md);font-size:var(--dsl-g-font-title);align-items:baseline;padding:7px 0;display:flex}.V1MMBW_kvRow+.V1MMBW_kvRow{border-top:1px solid var(--dsl-g-border)}.V1MMBW_kvRow:last-child{border-bottom:none}.V1MMBW_kvKey{width:120px;color:var(--dsw-alias-label-secondary);flex-shrink:0;font-weight:600}.V1MMBW_kvValue{color:var(--dsw-alias-label-primary);word-break:break-word;font-variant-numeric:tabular-nums;margin:0;font-weight:600;line-height:1.5}.V1MMBW_jsonScalar{font-family:var(--dsl-g-font-mono);font-size:var(--dsl-g-font-title);color:var(--dsw-alias-label-secondary)}.V1MMBW_lineChart{gap:var(--dsl-g-gap-sm);flex-direction:column;display:flex;position:relative}.V1MMBW_linePath{fill:none;stroke:var(--dsl-g-accent);stroke-width:2px;stroke-linejoin:round;stroke-linecap:round}.V1MMBW_lineDot{fill:var(--dsl-g-accent);transition:filter .15s}.V1MMBW_lineDot:hover{filter:brightness(1.3)}.V1MMBW_lineGrid{stroke:var(--dsw-alias-border-l1,#ffffff12);stroke-width:1px}.V1MMBW_lineGridAxis{stroke:var(--dsl-g-border-strong);stroke-width:1px}.V1MMBW_lineTick{fill:var(--dsw-alias-label-tertiary);font-family:var(--dsl-g-font-mono);font-size:var(--dsl-g-font-data)}.V1MMBW_lineLabel{fill:var(--dsw-alias-label-secondary);font-size:var(--dsl-g-font-meta)}.V1MMBW_lineLabels{justify-content:space-between;display:flex}.V1MMBW_groupedBars{gap:var(--dsl-g-gap-xs);align-items:flex-end;width:100%;height:100%;display:flex}.V1MMBW_groupedBar{flex-direction:column;flex:1;justify-content:flex-end;align-items:center;gap:2px;min-width:0;height:100%;display:flex}.V1MMBW_groupValue{font-family:var(--dsl-g-font-mono);font-size:var(--dsl-g-font-data);font-variant-numeric:tabular-nums;color:var(--dsw-alias-label-secondary);text-overflow:ellipsis;max-width:100%;line-height:1.2;overflow:hidden}.V1MMBW_groupedFill{background:var(--dsl-g-accent);border-radius:4px 4px 2px 2px;flex:none;width:100%;min-height:3px;transition:filter .15s}.V1MMBW_groupedFill:hover{filter:brightness(1.18)}.V1MMBW_donut{align-items:center;gap:var(--dsl-g-gap-lg);display:flex;position:relative}.V1MMBW_donutTrack{stroke:var(--dsw-alias-border-l1,#ffffff14)}.V1MMBW_donutSeg{transition:filter .15s}.V1MMBW_donutSeg:hover{filter:brightness(1.18)}.V1MMBW_donutTotal{fill:var(--dsw-alias-label-primary);font-size:var(--dsl-g-font-h2);font-weight:700}.V1MMBW_donutTotalLabel{fill:var(--dsw-alias-label-tertiary);font-size:10px}.V1MMBW_donutLegend{justify-content:center;gap:var(--dsl-g-gap-sm);font-size:var(--dsl-g-font-meta);color:var(--dsw-alias-label-secondary);flex-direction:column;line-height:1.5;display:flex}.V1MMBW_donutPct{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums}.V1MMBW_ring{align-items:center;gap:var(--dsl-g-gap-md);display:flex}.V1MMBW_ringTrack{stroke:color-mix(in srgb, var(--dsw-alias-label-primary) 8%, transparent)}.V1MMBW_ringFill{stroke:var(--dsl-g-accent);transition:stroke-dasharray .6s}.V1MMBW_ringValue{fill:var(--dsw-alias-label-primary);font-family:var(--dsl-g-font-mono);font-variant-numeric:tabular-nums;font-size:17px;font-weight:700}.V1MMBW_ringMeta{flex-direction:column;gap:2px;min-width:0;display:flex}.V1MMBW_ringLabel{font-size:var(--dsl-g-font-body);color:var(--dsw-alias-label-primary);font-weight:650}.V1MMBW_ringSub{font-size:var(--dsl-g-font-meta);color:var(--dsw-alias-label-secondary)}.V1MMBW_track{position:relative;overflow:visible}.V1MMBW_targetMark{background:var(--dsw-alias-label-primary);opacity:.6;border-radius:1px;width:2px;margin-left:-1px;position:absolute;top:-3px;bottom:-3px}.V1MMBW_filterRow td{padding:7px var(--dsl-g-gap-md);border-top:1px solid var(--dsl-g-border);color:var(--dsw-alias-label-secondary);font-size:var(--dsl-g-font-meta);font-variant-numeric:tabular-nums;background:0 0}.V1MMBW_filterHint{color:var(--dsw-alias-label-secondary);font-size:var(--dsl-g-font-meta);padding-top:6px;display:block}.V1MMBW_tableTools{justify-content:flex-end;gap:6px;padding:6px 8px 4px;display:flex}.V1MMBW_tableTool{border:1px solid var(--dsl-g-border);border-radius:var(--dsl-g-radius-pill);color:var(--dsw-alias-label-secondary);font-family:inherit;font-size:var(--dsl-g-font-meta);cursor:pointer;background:0 0;padding:2px 9px;transition:color .15s,border-color .15s,background .15s}.V1MMBW_tableTool:hover{color:var(--dsw-alias-label-primary);border-color:var(--dsl-g-border-strong);background:var(--dsl-g-hover)}.V1MMBW_tableTool:focus-visible{outline:2px solid var(--dsl-g-accent);outline-offset:1px}.V1MMBW_card[style*=--dsl-card-accent]>.V1MMBW_cardTitle{color:color-mix(in srgb, var(--dsl-card-accent) 38%, var(--dsw-alias-label-primary))}.V1MMBW_detailCell{padding-left:var(--dsl-g-gap-sm)}.V1MMBW_detailToggle{font:inherit;color:inherit;cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:6px;padding:0;font-weight:600;display:inline-flex}.V1MMBW_detailToggle:hover{color:var(--dsl-g-accent)}.V1MMBW_detailToggle:focus-visible{outline:2px solid var(--dsl-g-accent);outline-offset:2px;border-radius:4px}.V1MMBW_detailChevron{color:var(--dsw-alias-label-tertiary);flex-shrink:0;font-size:10px;transition:transform .18s}.V1MMBW_detailChevron[data-open=true]{transform:rotate(90deg)}.V1MMBW_table tbody tr.V1MMBW_detailRow>td{padding:0 var(--dsl-g-gap-md) 12px;background:color-mix(in srgb, var(--dsw-alias-label-primary) 3%, transparent);border-bottom:1px solid var(--dsl-g-border)}.V1MMBW_table tbody tr.V1MMBW_detailRow:hover>td{background:color-mix(in srgb, var(--dsw-alias-label-primary) 3%, transparent)}.V1MMBW_detailBody{gap:var(--dsl-g-gap-sm);border-radius:var(--dsl-g-radius-control);background:var(--dsw-alias-bg-layer-1,transparent);box-shadow:inset 2px 0 0 color-mix(in srgb, var(--dsl-g-accent) 45%, transparent);flex-direction:column;padding:12px 14px;display:flex}.V1MMBW_groupRow td{padding:22px var(--dsl-g-gap-md) 6px;box-shadow:inset 0 1px 0 var(--dsl-g-border);background:0 0;border-top:none;border-bottom:none}.V1MMBW_table tbody tr.V1MMBW_groupRow:first-child td{box-shadow:none;padding-top:10px}.V1MMBW_table tbody tr.V1MMBW_groupRow:hover,.V1MMBW_table tbody tr.V1MMBW_groupRow:nth-child(2n){background:0 0}.V1MMBW_groupToggle{font:inherit;font-size:var(--dsl-g-font-title);letter-spacing:.02em;color:var(--dsw-alias-label-primary);cursor:pointer;background:0 0;border:none;align-items:center;gap:7px;padding:0;font-weight:650;display:inline-flex}.V1MMBW_groupToggle:hover{color:var(--dsl-g-accent)}.V1MMBW_groupToggle:focus-visible{outline:2px solid var(--dsl-g-accent);outline-offset:2px;border-radius:4px}.V1MMBW_groupChevron{color:var(--dsw-alias-label-tertiary);width:10px;font-size:11px}.V1MMBW_groupCount{border-radius:var(--dsl-g-radius-pill);background:color-mix(in srgb, var(--dsw-alias-label-primary) 7%, transparent);color:var(--dsw-alias-label-secondary);font-size:var(--dsl-g-font-meta);font-variant-numeric:tabular-nums;padding:0 7px;font-weight:600}.V1MMBW_table tbody tr.V1MMBW_groupChild td:first-child{padding-left:calc(var(--dsl-g-gap-md) + 22px);position:relative}.V1MMBW_table tbody tr.V1MMBW_groupChild td:first-child:before{content:"";left:calc(var(--dsl-g-gap-md) + 8px);background:var(--dsl-g-border);width:1px;position:absolute;top:0;bottom:0}.V1MMBW_table tbody tr.V1MMBW_groupChild:last-child td:first-child:before{bottom:50%}.V1MMBW_table tfoot td{border-top:1px solid var(--dsl-g-border-strong);color:var(--dsw-alias-label-primary);background:color-mix(in srgb, var(--dsw-alias-label-primary) 4%, transparent);border-bottom:none;font-weight:700}.V1MMBW_cardInfo{background:color-mix(in srgb, var(--dsl-g-accent) var(--dsl-g-tint), transparent)}.V1MMBW_cardSuccess{background:color-mix(in srgb, var(--dsw-alias-state-success-primary,#3ecf8e) var(--dsl-g-tint), transparent)}.V1MMBW_cardWarning{background:color-mix(in srgb, var(--dsw-alias-state-warn-primary,#f5b83d) var(--dsl-g-tint), transparent)}.V1MMBW_cardDanger{background:color-mix(in srgb, var(--dsw-alias-state-error-primary,#ff6b6b) var(--dsl-g-tint), transparent)}.V1MMBW_cardInfo>.V1MMBW_cardTitle{color:var(--dsw-alias-state-business-primary,#4f8ef7)}.V1MMBW_cardSuccess>.V1MMBW_cardTitle{color:var(--dsw-alias-state-success-primary,#2f9e6b)}.V1MMBW_cardWarning>.V1MMBW_cardTitle{color:var(--dsw-alias-state-warn-primary,#b8860b)}.V1MMBW_cardDanger>.V1MMBW_cardTitle{color:var(--dsw-alias-state-error-primary,#d94848)}.V1MMBW_hbars{gap:var(--dsl-g-gap-sm);flex-direction:column;display:flex}.V1MMBW_hbarRow{align-items:center;gap:var(--dsl-g-gap-md);display:flex}.V1MMBW_hbarLabel{text-align:right;width:96px;font-size:var(--dsl-g-font-meta);color:var(--dsw-alias-label-secondary);white-space:nowrap;text-overflow:ellipsis;flex-shrink:0;overflow:hidden}.V1MMBW_hbarTracks{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.V1MMBW_hbarSeg{height:100%}.V1MMBW_hbarTrack{border-radius:var(--dsl-g-radius-sm);background:color-mix(in srgb, var(--dsw-alias-label-primary) 7%, transparent);height:14px;display:flex;overflow:hidden}.V1MMBW_hbarFill{border-radius:var(--dsl-g-radius-sm);background:var(--dsl-g-accent);min-width:2px;height:100%;transition:width .6s}.V1MMBW_hbarValue{text-align:right;width:64px;font-family:var(--dsl-g-font-mono);font-size:var(--dsl-g-font-data);color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;flex-shrink:0}.V1MMBW_cellBadge{border-radius:var(--dsl-g-radius-pill);background:color-mix(in srgb, var(--dsl-g-accent) var(--dsl-g-tint), transparent);color:var(--dsw-alias-label-primary);font-size:var(--dsl-g-font-meta);padding:1px 8px;font-weight:600;display:inline-block}.V1MMBW_cellSpark{width:88px;height:22px;display:block;overflow:visible}.V1MMBW_cellRing{align-items:center;gap:6px;display:inline-flex}.V1MMBW_cellRingText{font-family:var(--dsl-g-font-mono);font-size:var(--dsl-g-font-data);color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums}.V1MMBW_cellIndex{min-width:18px;font-family:var(--dsl-g-font-mono);font-size:var(--dsl-g-font-data);color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;display:inline-block}.V1MMBW_cellBar{border-radius:var(--dsl-g-radius-sm);background:color-mix(in srgb, var(--dsw-alias-label-primary) 7%, transparent);min-width:104px;height:18px;display:block;position:relative;overflow:hidden}.V1MMBW_cellBarFill{border-radius:var(--dsl-g-radius-sm);background:color-mix(in srgb, var(--dsl-g-accent) 72%, transparent);position:absolute;inset:0 auto 0 0}.V1MMBW_cellBarText{text-align:right;font-family:var(--dsl-g-font-mono);font-size:var(--dsl-g-font-data);color:var(--dsw-alias-label-primary);padding:0 6px;line-height:18px;display:block;position:relative}.V1MMBW_fieldGroup{gap:var(--dsl-g-gap-sm);flex-direction:column;display:flex}.V1MMBW_fieldLabel{font-size:var(--dsl-g-font-meta);color:var(--dsw-alias-label-tertiary)}.V1MMBW_radio{align-items:center;gap:var(--dsl-g-gap-sm);font-size:var(--dsl-g-font-title);color:var(--dsw-alias-label-secondary);cursor:pointer;line-height:1.5;display:flex}.V1MMBW_radio input{accent-color:var(--dsl-g-accent)}.V1MMBW_radio input:focus-visible{outline:2px solid var(--dsl-g-accent);outline-offset:2px;border-radius:50%}.V1MMBW_submitRow{align-items:center;gap:var(--dsl-g-gap-md);margin-top:2px;display:flex}.V1MMBW_submit{align-self:flex-start}.V1MMBW_submitHint{font-size:var(--dsl-g-font-meta);color:var(--dsw-alias-label-tertiary)}.V1MMBW_btnSent{margin-left:var(--dsl-g-gap-sm);font-size:var(--dsl-g-font-meta);color:var(--dsw-alias-state-success-primary,#3ecf8e);font-weight:600}.V1MMBW_gradeWrap{gap:var(--dsl-g-gap-md);flex-direction:column;display:flex}.V1MMBW_gradeScore{align-items:baseline;gap:var(--dsl-g-gap-sm);display:flex}.V1MMBW_gradeScoreValue{font-size:var(--dsl-g-font-display);color:var(--dsw-alias-label-primary);font-weight:700;line-height:1.2}.V1MMBW_gradeScoreLabel{font-size:var(--dsl-g-font-meta);color:var(--dsw-alias-label-tertiary)}.V1MMBW_gradeList{gap:var(--dsl-g-gap-sm);flex-direction:column;display:flex}.V1MMBW_gradeItem{font-size:var(--dsl-g-font-title);padding:var(--dsl-g-gap-sm) 12px;border-radius:var(--dsl-g-radius-control);border:1px solid var(--dsl-g-border);background:var(--dsw-alias-bg-layer-1);grid-template-columns:auto minmax(0,1fr);align-items:baseline;gap:6px 10px;line-height:1.5;display:grid}.V1MMBW_gradeItemOk{border-color:color-mix(in srgb, var(--dsw-alias-state-success-primary,#3ecf8e) 30%, transparent)}.V1MMBW_gradeItemNo{border-color:color-mix(in srgb, var(--dsw-alias-state-error-primary,#ff6b6b) 30%, transparent)}.V1MMBW_gradeQ{overflow-wrap:anywhere;color:var(--dsw-alias-label-primary);grid-column:1/-1;margin-bottom:8px;font-weight:600}.V1MMBW_gradeTag{font-weight:700}.V1MMBW_gradeItemOk .V1MMBW_gradeTag{color:var(--dsw-alias-state-success-primary,#3ecf8e)}.V1MMBW_gradeItemNo .V1MMBW_gradeTag{color:var(--dsw-alias-state-error-primary,#ff6b6b)}.V1MMBW_gradeAns{overflow-wrap:anywhere;color:var(--dsw-alias-label-secondary)}.V1MMBW_gradeRight{color:var(--dsw-alias-state-error-primary,#ffb3b3)}.V1MMBW_gradeExp{overflow-wrap:anywhere;font-size:var(--dsl-g-font-meta);color:var(--dsw-alias-label-tertiary);grid-column:1/-1;line-height:1.5}.V1MMBW_switchRow{justify-content:space-between;align-items:center;gap:var(--dsl-g-gap-md);cursor:pointer;display:flex}.V1MMBW_switchRow:focus-within .V1MMBW_switch{box-shadow:0 0 0 3px color-mix(in srgb, var(--dsl-g-accent) var(--dsl-g-tint-strong), transparent)}.V1MMBW_switchLabel{font-size:var(--dsl-g-font-title);color:var(--dsw-alias-label-primary);line-height:1.5}.V1MMBW_switch{border-radius:var(--dsl-g-radius-pill);border:1px solid var(--dsl-g-border);background:var(--dsw-alias-bg-base,#17171a);width:38px;height:22px;transition:background .2s;position:relative}.V1MMBW_switchOn{background:var(--dsl-g-accent);border-color:#0000}.V1MMBW_switchKnob{background:#fff;border-radius:50%;width:14px;height:14px;transition:left .2s;position:absolute;top:3px;left:3px;box-shadow:0 1px 2px #0000004d}.V1MMBW_switchOn .V1MMBW_switchKnob{left:19px}.V1MMBW_sliderRow{align-items:center;gap:var(--dsl-g-gap-md);width:100%;display:flex}.V1MMBW_sliderInput{min-width:0;accent-color:var(--dsl-g-accent);flex:1}.V1MMBW_sliderInput:focus-visible{outline:2px solid var(--dsl-g-accent);outline-offset:2px;border-radius:4px}.V1MMBW_sliderValue{text-align:right;min-width:44px;font-family:var(--dsl-g-font-mono);font-size:var(--dsl-g-font-data);color:var(--dsw-alias-label-primary)}.V1MMBW_textarea{background:var(--dsl-g-surface);border:1px solid var(--dsl-g-border-surface);border-radius:var(--dsl-g-radius-control);width:100%;color:var(--dsw-alias-label-primary);padding:var(--dsl-g-gap-sm) 12px;font-size:var(--dsl-g-font-title);resize:vertical;outline:none;font-family:inherit;line-height:1.5}.V1MMBW_textarea:focus{border-color:var(--dsl-g-accent);box-shadow:0 0 0 3px color-mix(in srgb, var(--dsl-g-accent) var(--dsl-g-tint-strong), transparent)}.V1MMBW_accordion{border:1px solid var(--dsl-g-border-surface);border-radius:var(--dsl-g-radius-surface);background:var(--dsl-g-surface);box-shadow:var(--dsl-g-shadow-card);flex-direction:column;display:flex;overflow:hidden}.V1MMBW_accItem{border-bottom:1px solid var(--dsl-g-border)}.V1MMBW_accItem:last-child{border-bottom:none}.V1MMBW_accHead{justify-content:space-between;align-items:center;gap:var(--dsl-g-gap-sm);width:100%;color:var(--dsw-alias-label-primary);font-size:var(--dsl-g-font-body);cursor:pointer;text-align:left;background:0 0;border:none;padding:12px 15px;font-family:inherit;font-weight:600;line-height:1.5;transition:background .15s,color .15s;display:flex}.V1MMBW_accHead:hover{background:var(--dsl-g-hover)}.V1MMBW_accHead[aria-expanded=true]{border-bottom:1px solid var(--dsl-g-border)}.V1MMBW_accChevron{color:var(--dsw-alias-label-tertiary);flex-shrink:0;font-size:11px;transition:transform .2s}.V1MMBW_accChevron[data-open=true]{transform:rotate(90deg)}.V1MMBW_accBody{gap:var(--dsl-g-gap-sm);background:color-mix(in srgb, var(--dsw-alias-label-primary) 2%, transparent);flex-direction:column;padding:12px 15px 14px;display:flex}.V1MMBW_copyChip{border:1px solid var(--dsl-g-border);background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-primary);border-radius:var(--dsl-g-radius-control);font-size:var(--dsl-g-font-title);cursor:pointer;width:fit-content;padding:6px 14px;font-family:inherit;font-weight:600;transition:all .15s}.V1MMBW_copyChip:hover{border-color:var(--dsl-g-accent)}.V1MMBW_copyChip:active{transform:translateY(1px)}.V1MMBW_copyChipDone{border-color:var(--dsw-alias-state-success-primary,#3ecf8e);color:var(--dsw-alias-state-success-primary,#3ecf8e)}.V1MMBW_mermaid{padding:var(--dsl-g-gap-xs) 0;overflow-x:auto}.V1MMBW_mermaid svg{max-width:100%;height:auto}.V1MMBW_mermaidFallback{gap:var(--dsl-g-gap-sm);flex-direction:column;display:flex}.V1MMBW_mermaidFallback pre{padding:var(--dsl-g-gap-sm) 10px;background:var(--dsw-alias-bg-base,#17171a);border:1px solid var(--dsl-g-border);border-radius:var(--dsl-g-radius-control);font-family:var(--dsl-g-font-mono);font-size:var(--dsl-g-font-meta);margin:0;overflow-x:auto}.V1MMBW_mermaidErr{color:var(--dsw-alias-state-error-primary,#ff6b6b);font-size:var(--dsl-g-font-meta)}.V1MMBW_mermaidHint{color:var(--dsw-alias-label-tertiary);font-size:var(--dsl-g-font-meta)}.V1MMBW_scene3dWrap{gap:var(--dsl-g-gap-sm);flex-direction:column;display:flex}.V1MMBW_echartWrap{gap:var(--dsl-g-gap-sm);padding:var(--dsl-g-gap-md);background:var(--dsw-alias-bg-layer-1,var(--dsw-alias-markdown-code-block));border:1px solid var(--dsl-g-border);border-radius:var(--dsl-g-radius-surface);flex-direction:column;display:flex}.V1MMBW_echartTitle{font-size:var(--dsl-g-font-title);color:var(--dsw-alias-label-primary);font-weight:600}.V1MMBW_echartCanvas{width:100%;min-height:0}.V1MMBW_echartHint{color:var(--dsw-alias-label-tertiary);font-size:var(--dsl-g-font-meta)}.V1MMBW_echartFallback{gap:var(--dsl-g-gap-sm);padding:var(--dsl-g-gap-md);background:var(--dsw-alias-bg-layer-1,var(--dsw-alias-markdown-code-block));border:1px solid var(--dsl-g-border);border-radius:var(--dsl-g-radius-surface);flex-direction:column;display:flex}.V1MMBW_echartErr{color:var(--dsw-alias-state-error-primary,#ff6b6b);font-size:var(--dsl-g-font-meta)}.V1MMBW_scene3dTitle{font-size:var(--dsl-g-font-title);color:var(--dsw-alias-label-primary);font-weight:700}.V1MMBW_scene3dCanvas{border-radius:var(--dsl-g-radius-surface);background:var(--dsw-alias-bg-base,#17171a);border:1px solid var(--dsl-g-border);height:240px;overflow:hidden}.V1MMBW_scene3dCanvas canvas{display:block}.V1MMBW_scene3dHint{color:var(--dsw-alias-label-tertiary);font-size:var(--dsl-g-font-meta)}.V1MMBW_timeline{flex-direction:column;display:flex}.V1MMBW_tlItem{gap:var(--dsl-g-gap-md);display:flex}.V1MMBW_tlRail{flex-direction:column;flex-shrink:0;align-items:center;width:10px;display:flex}.V1MMBW_tlDot{background:var(--dsl-g-accent);width:9px;height:9px;box-shadow:0 0 0 3px color-mix(in srgb, var(--dsl-g-accent) 16%, transparent);border-radius:50%;flex-shrink:0;margin-top:5px;transition:transform .15s}.V1MMBW_tlItem:hover .V1MMBW_tlDot{transform:scale(1.15)}.V1MMBW_tlLine{background:var(--dsl-g-border);flex:1;width:1px;margin:4px 0 0}.V1MMBW_tlBody{flex:1;min-width:0;padding-bottom:18px}.V1MMBW_tlItem:last-child .V1MMBW_tlBody{padding-bottom:0}.V1MMBW_tlHead{align-items:baseline;gap:var(--dsl-g-gap-md);display:flex}.V1MMBW_tlTitle{font-size:var(--dsl-g-font-body);color:var(--dsw-alias-label-primary);font-weight:650;line-height:1.45}.V1MMBW_tlTime{white-space:nowrap;font-family:var(--dsl-g-font-mono);font-size:var(--dsl-g-font-data);color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;margin-left:auto}.V1MMBW_tlDesc{font-size:var(--dsl-g-font-title);color:var(--dsw-alias-label-secondary);margin-top:3px;line-height:1.55}.V1MMBW_fileTree{font-family:var(--dsl-g-font-mono);font-size:var(--dsl-g-font-meta);overscroll-behavior-x:contain;flex-direction:column;min-width:0;max-width:100%;display:flex;overflow-x:auto}.V1MMBW_ftChildren{display:block}.V1MMBW_ftRow{min-height:26px;padding:2px var(--dsl-g-gap-xs);border-radius:var(--dsl-g-radius-sm);align-items:center;gap:6px;transition:background .12s;display:flex;position:relative}.V1MMBW_ftRow:hover{background:color-mix(in srgb, var(--dsw-alias-label-primary) 5%, transparent)}.V1MMBW_ftGuide{background:var(--dsl-g-border);width:1px;position:absolute;top:0;bottom:0}.V1MMBW_ftChevron{width:10px;color:var(--dsw-alias-label-tertiary);transform-origin:50%;flex-shrink:0;font-size:10px;line-height:1;transition:transform .15s}.V1MMBW_ftChevron[data-open=true]{transform:rotate(90deg)}.V1MMBW_ftGlyph{color:var(--dsw-alias-label-tertiary);flex-shrink:0;display:inline-flex}.V1MMBW_ftGlyphDir{color:var(--dsl-g-accent)}.V1MMBW_ftName{color:var(--dsw-alias-label-secondary);font-size:var(--dsl-g-font-title);white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}.V1MMBW_ftDir{color:var(--dsw-alias-label-primary);font-weight:650}.V1MMBW_ftNameBtn{align-items:center;gap:var(--dsl-g-gap-sm);min-width:0;max-width:100%;font-family:inherit;font-size:var(--dsl-g-font-title);cursor:default;text-align:left;background:0 0;border:none;padding:0;display:inline-flex}button.V1MMBW_ftNameBtn[aria-expanded]{cursor:pointer}.V1MMBW_ftNameBtn:focus-visible{outline:2px solid var(--dsl-g-accent);outline-offset:1px;border-radius:var(--dsl-g-radius-control)}.V1MMBW_breadcrumb{align-items:center;gap:var(--dsl-g-gap-xs);font-size:var(--dsl-g-font-title);flex-wrap:wrap;display:flex}.V1MMBW_bcItem{align-items:center;gap:var(--dsl-g-gap-xs);display:inline-flex}.V1MMBW_bcText{color:var(--dsw-alias-label-secondary);cursor:pointer}.V1MMBW_bcText:hover{color:var(--dsl-g-accent)}.V1MMBW_bcCurrent{color:var(--dsw-alias-label-primary);cursor:default;font-weight:600}.V1MMBW_bcSep{color:var(--dsw-alias-label-caption,var(--dsw-alias-label-tertiary))}.V1MMBW_skeleton{gap:var(--dsl-g-gap-md);padding:var(--dsl-g-gap-lg);border:1px solid var(--dsl-g-border);border-radius:var(--dsl-g-radius-surface);background:var(--dsl-g-surface);flex-direction:column;display:flex}.V1MMBW_skeletonTitle{border-radius:var(--dsl-g-radius-pill);width:34%;height:12px;display:block}.V1MMBW_skeletonBars{gap:var(--dsl-g-gap-sm);display:flex}.V1MMBW_skeletonBars>span{border-radius:var(--dsl-g-radius-control);height:44px;display:block}.V1MMBW_skeletonBlock{border-radius:var(--dsl-g-radius-control);height:76px;display:block}.V1MMBW_skeletonTitle,.V1MMBW_skeletonBars>span,.V1MMBW_skeletonBlock{background:linear-gradient(90deg, color-mix(in srgb, var(--dsw-alias-label-primary) 6%, transparent) 0%, color-mix(in srgb, var(--dsw-alias-label-primary) 13%, transparent) 50%, color-mix(in srgb, var(--dsw-alias-label-primary) 6%, transparent) 100%);background-size:200% 100%;animation:1.4s ease-in-out infinite V1MMBW_dsl-skeleton}@keyframes V1MMBW_dsl-skeleton{0%{background-position:200% 0}to{background-position:-200% 0}}@media (prefers-reduced-motion:reduce){.V1MMBW_skeletonTitle,.V1MMBW_skeletonBars>span,.V1MMBW_skeletonBlock{animation:none}}@keyframes V1MMBW_genuiReveal{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes V1MMBW_genuiPopIn{0%{opacity:0;transform:translateY(2px)}to{opacity:1;transform:translateY(0)}}.V1MMBW_reveal{animation:.45s cubic-bezier(.22,1,.36,1) backwards V1MMBW_genuiReveal}.V1MMBW_btnSent{animation:.2s backwards V1MMBW_genuiPopIn}@media (prefers-reduced-motion:reduce){.V1MMBW_reveal,.V1MMBW_btnSent{animation:none}.V1MMBW_fill,.V1MMBW_barFill,.V1MMBW_switch,.V1MMBW_switchKnob{transition:none}}.V1MMBW_tableWrap,.V1MMBW_fileTree,.V1MMBW_mermaid,.V1MMBW_panelBody{scrollbar-width:thin;scrollbar-color:var(--dsw-alias-border-l2,#ffffff38) transparent}.V1MMBW_tableWrap::-webkit-scrollbar,.V1MMBW_fileTree::-webkit-scrollbar,.V1MMBW_mermaid::-webkit-scrollbar,.V1MMBW_panelBody::-webkit-scrollbar{width:8px;height:8px}.V1MMBW_tableWrap::-webkit-scrollbar-thumb,.V1MMBW_fileTree::-webkit-scrollbar-thumb,.V1MMBW_mermaid::-webkit-scrollbar-thumb,.V1MMBW_panelBody::-webkit-scrollbar-thumb{background:var(--dsw-alias-border-l2,#ffffff38);border-radius:4px}.V1MMBW_tableWrap::-webkit-scrollbar-track,.V1MMBW_fileTree::-webkit-scrollbar-track,.V1MMBW_mermaid::-webkit-scrollbar-track,.V1MMBW_panelBody::-webkit-scrollbar-track{background:0 0}.V1MMBW_visuallyHidden{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.V1MMBW_quiz{gap:var(--dsl-g-gap-md);padding:var(--dsl-g-gap-lg);background:var(--dsw-alias-bg-layer-1);border:1px solid var(--dsl-g-border);border-radius:var(--dsl-g-radius-surface);flex-direction:column;display:flex}.V1MMBW_quizQuestion{font-size:var(--dsl-g-font-body);color:var(--dsw-alias-label-primary);font-weight:600;line-height:1.6}.V1MMBW_quizOptions{gap:var(--dsl-g-gap-sm);flex-direction:column;display:flex}.V1MMBW_quizOpt{align-items:center;gap:var(--dsl-g-gap-sm);text-align:left;background:var(--dsw-alias-bg-base,#17171a);border:1px solid var(--dsl-g-border);border-radius:var(--dsl-g-radius-control);font-size:var(--dsl-g-font-title);color:var(--dsw-alias-label-secondary);cursor:pointer;padding:10px 14px;font-family:inherit;line-height:1.5;transition:border-color .15s,background .15s;display:flex}.V1MMBW_quizOpt:hover:not(:disabled){border-color:var(--dsl-g-accent);background:var(--dsl-g-accent-soft)}.V1MMBW_quizOpt:focus-visible,.V1MMBW_button:focus-visible,.V1MMBW_tab:focus-visible,.V1MMBW_accHead:focus-visible,.V1MMBW_copyChip:focus-visible,.V1MMBW_link:focus-visible,.V1MMBW_quizRetry:focus-visible,.V1MMBW_resetBtn:focus-visible,.V1MMBW_playBtn:focus-visible,.V1MMBW_bcText:focus-visible{outline:2px solid var(--dsl-g-accent);outline-offset:1px}.V1MMBW_quizOpt:disabled{cursor:default;opacity:.85}.V1MMBW_quizOptCorrect{align-items:center;gap:var(--dsl-g-gap-sm);text-align:left;background:color-mix(in srgb, var(--dsw-alias-state-success-primary,#3ecf8e) var(--dsl-g-tint), transparent);border:1px solid color-mix(in srgb, var(--dsw-alias-state-success-primary,#3ecf8e) 40%, transparent);border-radius:var(--dsl-g-radius-control);font-size:var(--dsl-g-font-title);color:var(--dsw-alias-state-success-primary,#3ecf8e);padding:10px 14px;font-family:inherit;font-weight:600;line-height:1.5;display:flex}.V1MMBW_quizOptWrong{align-items:center;gap:var(--dsl-g-gap-sm);text-align:left;background:color-mix(in srgb, var(--dsw-alias-state-error-primary,#ff6b6b) var(--dsl-g-tint), transparent);border:1px solid color-mix(in srgb, var(--dsw-alias-state-error-primary,#ff6b6b) 30%, transparent);border-radius:var(--dsl-g-radius-control);font-size:var(--dsl-g-font-title);color:var(--dsw-alias-state-error-primary,#ff6b6b);padding:10px 14px;font-family:inherit;font-weight:600;line-height:1.5;display:flex}.V1MMBW_quizOptReveal{align-items:center;gap:var(--dsl-g-gap-sm);text-align:left;background:color-mix(in srgb, var(--dsw-alias-state-success-primary,#3ecf8e) var(--dsl-g-tint), transparent);border:1px dashed color-mix(in srgb, var(--dsw-alias-state-success-primary,#3ecf8e) 40%, transparent);border-radius:var(--dsl-g-radius-control);font-size:var(--dsl-g-font-title);color:var(--dsw-alias-state-success-primary,#3ecf8e);padding:10px 14px;font-family:inherit;line-height:1.5;display:flex}.V1MMBW_quizMarker{text-align:center;width:14px;color:var(--dsw-alias-label-tertiary);flex-shrink:0;font-weight:700;display:inline-block}.V1MMBW_quizOptCorrect .V1MMBW_quizMarker{color:var(--dsw-alias-state-success-primary,#3ecf8e)}.V1MMBW_quizOptWrong .V1MMBW_quizMarker{color:var(--dsw-alias-state-error-primary,#ff6b6b)}.V1MMBW_quizResult{gap:var(--dsl-g-gap-sm);flex-direction:column;display:flex}.V1MMBW_quizCorrectMsg{font-size:var(--dsl-g-font-title);color:var(--dsw-alias-state-success-primary,#3ecf8e);font-weight:600}.V1MMBW_quizWrongMsg{font-size:var(--dsl-g-font-title);color:var(--dsw-alias-state-error-primary,#ff6b6b);font-weight:600}.V1MMBW_quizFeedback{font-size:var(--dsl-g-font-meta);color:var(--dsw-alias-label-secondary);margin-top:3px;font-weight:400;line-height:1.5}.V1MMBW_quizExplanation{font-size:var(--dsl-g-font-meta);color:var(--dsw-alias-label-tertiary);padding:var(--dsl-g-gap-sm) 10px;border-top:1px solid var(--dsl-g-border);line-height:1.6}.V1MMBW_quizRetry{border:1px solid var(--dsl-g-border);width:fit-content;color:var(--dsw-alias-label-secondary);border-radius:var(--dsl-g-radius-control);font-size:var(--dsl-g-font-title);cursor:pointer;background:0 0;padding:6px 14px;font-family:inherit}.V1MMBW_quizRetry:hover{border-color:var(--dsl-g-accent);color:var(--dsl-g-accent)}.V1MMBW_tool{margin:4px 0}.V1MMBW_toolFallback{align-items:center;gap:var(--dsl-g-gap-md);padding:var(--dsl-g-gap-sm) 12px;border:1px solid var(--dsl-g-border);border-radius:var(--dsl-g-radius-surface);background:var(--dsw-alias-bg-layer-1,var(--dsw-alias-markdown-code-block));font-size:var(--dsl-g-font-title);display:flex}.V1MMBW_toolFallbackTitle{color:var(--dsw-alias-label-primary);font-weight:600}.V1MMBW_toolFallbackMeta{color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.V1MMBW_panel{width:calc(100% - var(--dsh-composer-side-clearance,16px) * 2 - var(--dsh-composer-dock-inset,8px) * 4);max-width:calc(var(--dsh-composer-card-max-width,780px) - var(--dsh-composer-dock-inset,8px) * 4);border:1px solid color-mix(in srgb, var(--dsw-alias-state-business-primary,#4f8ef7) 35%, transparent);background:var(--dsw-alias-bg-layer-1,#ffffff0a);border-radius:12px;margin:10px auto 2px;overflow:hidden}.V1MMBW_panelHeader{border-bottom:1px solid var(--dsw-alias-border-l1,#7f7f7f40);align-items:center;display:flex}.V1MMBW_panelToggle{min-width:0;color:inherit;font:inherit;font-size:var(--dsl-g-font-title);cursor:pointer;background:0 0;border:0;flex:auto;align-items:center;gap:10px;padding:9px 14px;display:flex}.V1MMBW_panelToggle:hover{background:#ffffff0a}.V1MMBW_panelClose{width:26px;height:26px;color:inherit;cursor:pointer;opacity:.65;background:0 0;border:0;border-radius:6px;flex:none;justify-content:center;align-items:center;margin-right:8px;padding:0;font-size:13px;line-height:1;display:flex}.V1MMBW_panelClose:hover{opacity:1;background:#ffffff14}.V1MMBW_panelClose:focus-visible{outline:1px solid var(--dsw-alias-state-business-primary,#4f8ef7);outline-offset:1px;opacity:1}.V1MMBW_panelTpl{border:1px solid var(--dsw-alias-border-l1,#ffffff1f);height:26px;color:var(--dsw-alias-label-secondary,#fff9);cursor:pointer;opacity:.85;background:0 0;border-radius:8px;flex:none;align-items:center;margin-right:4px;padding:0 10px;font-size:12px;line-height:1.5;display:flex}.V1MMBW_panelTpl:hover{opacity:1;background:#ffffff14}.V1MMBW_panelTplActive{border-color:var(--dsw-alias-state-business-primary,#4f8ef7);color:var(--dsw-alias-state-business-primary,#4f8ef7)}.V1MMBW_panelOnboard .V1MMBW_panelHeader{cursor:default}.V1MMBW_panelOnboardText{min-width:0;color:var(--dsw-alias-label-secondary,#fff9);flex:1;padding:0 8px;font-size:12px;line-height:1.5}.V1MMBW_panelFlash{border-top:1px solid var(--dsw-alias-border-l1,#ffffff1f);color:var(--dsw-alias-state-success-primary,#6ccb5f);background:color-mix(in srgb, var(--dsw-alias-state-success-primary,#6ccb5f) 8%, transparent);padding:6px 12px;font-size:12px;line-height:1.5}.V1MMBW_panelHint{border-top:1px solid var(--dsw-alias-border-l1,#ffffff1f);color:var(--dsw-alias-state-business-primary,#4f8ef7);background:color-mix(in srgb, var(--dsw-alias-state-business-primary,#4f8ef7) 8%, transparent);padding:6px 14px;font-size:12px;line-height:1.5}.V1MMBW_achToasts{z-index:9999;pointer-events:none;flex-direction:column;gap:8px;display:flex;position:fixed;bottom:16px;right:16px}.V1MMBW_achToast{border:1px solid color-mix(in srgb, var(--dsw-alias-state-business-primary,#4f8ef7) 35%, transparent);border-radius:var(--dsl-g-radius-surface,12px);background:var(--dsw-alias-bg-layer-2,#000000d9);align-items:flex-start;gap:10px;width:300px;padding:10px 12px;display:flex;box-shadow:0 8px 24px #00000040}.V1MMBW_achToastBadge{flex:none;font-size:18px;line-height:1.2}.V1MMBW_achToastBody{min-width:0}.V1MMBW_achToastName{color:var(--dsw-alias-state-business-primary,#4f8ef7);font-size:13px;font-weight:600}.V1MMBW_achToastDesc{color:var(--dsw-alias-label-secondary,#fff9);margin-top:2px;font-size:12px;line-height:1.5}.V1MMBW_panelBadge{padding:0 var(--dsl-g-gap-sm);background:color-mix(in srgb, var(--dsw-alias-state-business-primary,#4f8ef7) var(--dsl-g-tint-strong), transparent);color:var(--dsw-alias-state-business-primary,#7ba8ff);letter-spacing:.04em;border-radius:6px;flex:none;font-size:11px;font-weight:600;line-height:1.6}.V1MMBW_panelTitle{color:var(--dsw-alias-label-primary,#e6e6e6);text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.V1MMBW_panelChevron{color:var(--dsw-alias-label-tertiary);flex:none;place-items:center;margin-left:auto;display:grid}.V1MMBW_panelBody{height:360px;padding:0 16px var(--dsl-g-gap-lg);overflow-y:auto}.V1MMBW_panelResizeHandle{cursor:ns-resize;touch-action:none;background:0 0;border-radius:3px;height:6px;transition:background .15s}.V1MMBW_panelResizeHandle:hover,.V1MMBW_panelResizeHandleActive{background:color-mix(in srgb, var(--dsw-alias-state-business-primary,#4f8ef7) 35%, transparent)}`,document.head.appendChild(e)}var x={accBody:`V1MMBW_accBody`,accChevron:`V1MMBW_accChevron`,accHead:`V1MMBW_accHead`,accItem:`V1MMBW_accItem`,accent:`V1MMBW_accent`,accordion:`V1MMBW_accordion`,achToast:`V1MMBW_achToast`,achToastBadge:`V1MMBW_achToastBadge`,achToastBody:`V1MMBW_achToastBody`,achToastDesc:`V1MMBW_achToastDesc`,achToastName:`V1MMBW_achToastName`,achToasts:`V1MMBW_achToasts`,avatar:`V1MMBW_avatar`,badge:`V1MMBW_badge`,banner:`V1MMBW_banner`,barCol:`V1MMBW_barCol`,barFill:`V1MMBW_barFill`,barLabel:`V1MMBW_barLabel`,barValue:`V1MMBW_barValue`,baseline:`V1MMBW_baseline`,bcCurrent:`V1MMBW_bcCurrent`,bcItem:`V1MMBW_bcItem`,bcSep:`V1MMBW_bcSep`,bcText:`V1MMBW_bcText`,block:`V1MMBW_block`,body:`V1MMBW_body`,breadcrumb:`V1MMBW_breadcrumb`,btnSent:`V1MMBW_btnSent`,button:`V1MMBW_button`,callout:`V1MMBW_callout`,calloutBody:`V1MMBW_calloutBody`,calloutError:`V1MMBW_calloutError`,calloutInfo:`V1MMBW_calloutInfo`,calloutSuccess:`V1MMBW_calloutSuccess`,calloutTitle:`V1MMBW_calloutTitle`,calloutWarning:`V1MMBW_calloutWarning`,caption:`V1MMBW_caption`,card:`V1MMBW_card`,cardDanger:`V1MMBW_cardDanger`,cardInfo:`V1MMBW_cardInfo`,cardSuccess:`V1MMBW_cardSuccess`,cardTitle:`V1MMBW_cardTitle`,cardWarning:`V1MMBW_cardWarning`,cellBadge:`V1MMBW_cellBadge`,cellBar:`V1MMBW_cellBar`,cellBarFill:`V1MMBW_cellBarFill`,cellBarText:`V1MMBW_cellBarText`,cellIndex:`V1MMBW_cellIndex`,cellRing:`V1MMBW_cellRing`,cellRingText:`V1MMBW_cellRingText`,cellSpark:`V1MMBW_cellSpark`,center:`V1MMBW_center`,chart:`V1MMBW_chart`,chartBody:`V1MMBW_chartBody`,chartLabels:`V1MMBW_chartLabels`,chartLegend:`V1MMBW_chartLegend`,chartPlot:`V1MMBW_chartPlot`,chartTip:`V1MMBW_chartTip`,chartTipRow:`V1MMBW_chartTipRow`,chartTipValue:`V1MMBW_chartTipValue`,chartYAxis:`V1MMBW_chartYAxis`,chartYTick:`V1MMBW_chartYTick`,checkbox:`V1MMBW_checkbox`,col:`V1MMBW_col`,copyChip:`V1MMBW_copyChip`,copyChipDone:`V1MMBW_copyChipDone`,danger:`V1MMBW_danger`,detailBody:`V1MMBW_detailBody`,detailCell:`V1MMBW_detailCell`,detailChevron:`V1MMBW_detailChevron`,detailRow:`V1MMBW_detailRow`,detailToggle:`V1MMBW_detailToggle`,divider:`V1MMBW_divider`,donut:`V1MMBW_donut`,donutLegend:`V1MMBW_donutLegend`,donutPct:`V1MMBW_donutPct`,donutSeg:`V1MMBW_donutSeg`,donutTotal:`V1MMBW_donutTotal`,donutTotalLabel:`V1MMBW_donutTotalLabel`,donutTrack:`V1MMBW_donutTrack`,down:`V1MMBW_down`,"dsl-skeleton":`V1MMBW_dsl-skeleton`,echartCanvas:`V1MMBW_echartCanvas`,echartErr:`V1MMBW_echartErr`,echartFallback:`V1MMBW_echartFallback`,echartHint:`V1MMBW_echartHint`,echartTitle:`V1MMBW_echartTitle`,echartWrap:`V1MMBW_echartWrap`,field:`V1MMBW_field`,fieldGroup:`V1MMBW_fieldGroup`,fieldLabel:`V1MMBW_fieldLabel`,fileTree:`V1MMBW_fileTree`,fill:`V1MMBW_fill`,filterHint:`V1MMBW_filterHint`,filterRow:`V1MMBW_filterRow`,ftChevron:`V1MMBW_ftChevron`,ftChildren:`V1MMBW_ftChildren`,ftDir:`V1MMBW_ftDir`,ftGlyph:`V1MMBW_ftGlyph`,ftGlyphDir:`V1MMBW_ftGlyphDir`,ftGuide:`V1MMBW_ftGuide`,ftName:`V1MMBW_ftName`,ftNameBtn:`V1MMBW_ftNameBtn`,ftRow:`V1MMBW_ftRow`,full:`V1MMBW_full`,genuiPopIn:`V1MMBW_genuiPopIn`,genuiReveal:`V1MMBW_genuiReveal`,ghost:`V1MMBW_ghost`,gradeAns:`V1MMBW_gradeAns`,gradeExp:`V1MMBW_gradeExp`,gradeItem:`V1MMBW_gradeItem`,gradeItemNo:`V1MMBW_gradeItemNo`,gradeItemOk:`V1MMBW_gradeItemOk`,gradeList:`V1MMBW_gradeList`,gradeQ:`V1MMBW_gradeQ`,gradeRight:`V1MMBW_gradeRight`,gradeScore:`V1MMBW_gradeScore`,gradeScoreLabel:`V1MMBW_gradeScoreLabel`,gradeScoreValue:`V1MMBW_gradeScoreValue`,gradeTag:`V1MMBW_gradeTag`,gradeWrap:`V1MMBW_gradeWrap`,grid:`V1MMBW_grid`,gridSpan:`V1MMBW_gridSpan`,gridline:`V1MMBW_gridline`,groupChevron:`V1MMBW_groupChevron`,groupChild:`V1MMBW_groupChild`,groupCount:`V1MMBW_groupCount`,groupRow:`V1MMBW_groupRow`,groupToggle:`V1MMBW_groupToggle`,groupValue:`V1MMBW_groupValue`,groupedBar:`V1MMBW_groupedBar`,groupedBars:`V1MMBW_groupedBars`,groupedFill:`V1MMBW_groupedFill`,h1:`V1MMBW_h1`,h2:`V1MMBW_h2`,h3:`V1MMBW_h3`,hbarFill:`V1MMBW_hbarFill`,hbarLabel:`V1MMBW_hbarLabel`,hbarRow:`V1MMBW_hbarRow`,hbarSeg:`V1MMBW_hbarSeg`,hbarTrack:`V1MMBW_hbarTrack`,hbarTracks:`V1MMBW_hbarTracks`,hbarValue:`V1MMBW_hbarValue`,hbars:`V1MMBW_hbars`,hero:`V1MMBW_hero`,heroDanger:`V1MMBW_heroDanger`,heroLabel:`V1MMBW_heroLabel`,heroSpark:`V1MMBW_heroSpark`,heroSubtitle:`V1MMBW_heroSubtitle`,heroSuccess:`V1MMBW_heroSuccess`,heroTitle:`V1MMBW_heroTitle`,heroTop:`V1MMBW_heroTop`,heroUnit:`V1MMBW_heroUnit`,heroValue:`V1MMBW_heroValue`,heroWarning:`V1MMBW_heroWarning`,inlineCode:`V1MMBW_inlineCode`,inlineLink:`V1MMBW_inlineLink`,inlineMark:`V1MMBW_inlineMark`,inlineStrong:`V1MMBW_inlineStrong`,input:`V1MMBW_input`,jsonScalar:`V1MMBW_jsonScalar`,keyvalue:`V1MMBW_keyvalue`,kvKey:`V1MMBW_kvKey`,kvRow:`V1MMBW_kvRow`,kvValue:`V1MMBW_kvValue`,legendItem:`V1MMBW_legendItem`,legendSwatch:`V1MMBW_legendSwatch`,li:`V1MMBW_li`,liDesc:`V1MMBW_liDesc`,liTitle:`V1MMBW_liTitle`,lineArea:`V1MMBW_lineArea`,lineChart:`V1MMBW_lineChart`,lineDot:`V1MMBW_lineDot`,lineGrid:`V1MMBW_lineGrid`,lineGridAxis:`V1MMBW_lineGridAxis`,lineLabel:`V1MMBW_lineLabel`,lineLabels:`V1MMBW_lineLabels`,linePath:`V1MMBW_linePath`,lineTick:`V1MMBW_lineTick`,link:`V1MMBW_link`,linkText:`V1MMBW_linkText`,list:`V1MMBW_list`,media:`V1MMBW_media`,mediaError:`V1MMBW_mediaError`,mediaLabel:`V1MMBW_mediaLabel`,mediaPlayer:`V1MMBW_mediaPlayer`,mermaid:`V1MMBW_mermaid`,mermaidErr:`V1MMBW_mermaidErr`,mermaidFallback:`V1MMBW_mermaidFallback`,mermaidHint:`V1MMBW_mermaidHint`,muted:`V1MMBW_muted`,panel:`V1MMBW_panel`,panelBadge:`V1MMBW_panelBadge`,panelBody:`V1MMBW_panelBody`,panelChevron:`V1MMBW_panelChevron`,panelClose:`V1MMBW_panelClose`,panelFlash:`V1MMBW_panelFlash`,panelHeader:`V1MMBW_panelHeader`,panelHint:`V1MMBW_panelHint`,panelOnboard:`V1MMBW_panelOnboard`,panelOnboardText:`V1MMBW_panelOnboardText`,panelResizeHandle:`V1MMBW_panelResizeHandle`,panelResizeHandleActive:`V1MMBW_panelResizeHandleActive`,panelTitle:`V1MMBW_panelTitle`,panelToggle:`V1MMBW_panelToggle`,panelTpl:`V1MMBW_panelTpl`,panelTplActive:`V1MMBW_panelTplActive`,playBtn:`V1MMBW_playBtn`,primary:`V1MMBW_primary`,progress:`V1MMBW_progress`,progressRow:`V1MMBW_progressRow`,quiz:`V1MMBW_quiz`,quizCorrectMsg:`V1MMBW_quizCorrectMsg`,quizExplanation:`V1MMBW_quizExplanation`,quizFeedback:`V1MMBW_quizFeedback`,quizMarker:`V1MMBW_quizMarker`,quizOpt:`V1MMBW_quizOpt`,quizOptCorrect:`V1MMBW_quizOptCorrect`,quizOptReveal:`V1MMBW_quizOptReveal`,quizOptWrong:`V1MMBW_quizOptWrong`,quizOptions:`V1MMBW_quizOptions`,quizQuestion:`V1MMBW_quizQuestion`,quizResult:`V1MMBW_quizResult`,quizRetry:`V1MMBW_quizRetry`,quizWrongMsg:`V1MMBW_quizWrongMsg`,radio:`V1MMBW_radio`,resetBtn:`V1MMBW_resetBtn`,reveal:`V1MMBW_reveal`,ring:`V1MMBW_ring`,ringFill:`V1MMBW_ringFill`,ringLabel:`V1MMBW_ringLabel`,ringMeta:`V1MMBW_ringMeta`,ringSub:`V1MMBW_ringSub`,ringTrack:`V1MMBW_ringTrack`,ringValue:`V1MMBW_ringValue`,row:`V1MMBW_row`,scene3dCanvas:`V1MMBW_scene3dCanvas`,scene3dHint:`V1MMBW_scene3dHint`,scene3dTitle:`V1MMBW_scene3dTitle`,scene3dWrap:`V1MMBW_scene3dWrap`,select:`V1MMBW_select`,skeleton:`V1MMBW_skeleton`,skeletonBars:`V1MMBW_skeletonBars`,skeletonBlock:`V1MMBW_skeletonBlock`,skeletonTitle:`V1MMBW_skeletonTitle`,sliderInput:`V1MMBW_sliderInput`,sliderRow:`V1MMBW_sliderRow`,sliderValue:`V1MMBW_sliderValue`,small:`V1MMBW_small`,spacer:`V1MMBW_spacer`,stack:`V1MMBW_stack`,stackSeg:`V1MMBW_stackSeg`,stackValue:`V1MMBW_stackValue`,stat:`V1MMBW_stat`,statDelta:`V1MMBW_statDelta`,statHero:`V1MMBW_statHero`,statLabel:`V1MMBW_statLabel`,statSpark:`V1MMBW_statSpark`,statUnit:`V1MMBW_statUnit`,statValue:`V1MMBW_statValue`,step:`V1MMBW_step`,stepActive:`V1MMBW_stepActive`,stepContent:`V1MMBW_stepContent`,stepDesc:`V1MMBW_stepDesc`,stepDone:`V1MMBW_stepDone`,stepMarker:`V1MMBW_stepMarker`,stepTitle:`V1MMBW_stepTitle`,steps:`V1MMBW_steps`,submit:`V1MMBW_submit`,submitHint:`V1MMBW_submitHint`,submitRow:`V1MMBW_submitRow`,success:`V1MMBW_success`,switch:`V1MMBW_switch`,switchKnob:`V1MMBW_switchKnob`,switchLabel:`V1MMBW_switchLabel`,switchOn:`V1MMBW_switchOn`,switchRow:`V1MMBW_switchRow`,tab:`V1MMBW_tab`,tabActive:`V1MMBW_tabActive`,tabBar:`V1MMBW_tabBar`,table:`V1MMBW_table`,tableTool:`V1MMBW_tableTool`,tableTools:`V1MMBW_tableTools`,tableWrap:`V1MMBW_tableWrap`,tabs:`V1MMBW_tabs`,targetMark:`V1MMBW_targetMark`,tdDelta:`V1MMBW_tdDelta`,tdDeltaDown:`V1MMBW_tdDeltaDown`,tdDeltaUp:`V1MMBW_tdDeltaUp`,tdNum:`V1MMBW_tdNum`,text:`V1MMBW_text`,textarea:`V1MMBW_textarea`,thNum:`V1MMBW_thNum`,thSort:`V1MMBW_thSort`,thSortMark:`V1MMBW_thSortMark`,timeline:`V1MMBW_timeline`,tlBody:`V1MMBW_tlBody`,tlDesc:`V1MMBW_tlDesc`,tlDot:`V1MMBW_tlDot`,tlHead:`V1MMBW_tlHead`,tlItem:`V1MMBW_tlItem`,tlLine:`V1MMBW_tlLine`,tlRail:`V1MMBW_tlRail`,tlTime:`V1MMBW_tlTime`,tlTitle:`V1MMBW_tlTitle`,tool:`V1MMBW_tool`,toolFallback:`V1MMBW_toolFallback`,toolFallbackMeta:`V1MMBW_toolFallbackMeta`,toolFallbackTitle:`V1MMBW_toolFallbackTitle`,track:`V1MMBW_track`,up:`V1MMBW_up`,videoPlayer:`V1MMBW_videoPlayer`,visuallyHidden:`V1MMBW_visuallyHidden`,warn:`V1MMBW_warn`,wrap:`V1MMBW_wrap`};let S={copy:`复制`,copied:`复制成功`,collapseAria:`收起差异`,expandAria(e){return`展开其余 ${e} 行差异`},collapse:`收起`,expand(e){return`… 其余 ${e} 行`},files(e){return`${e} 个文件`}},C={copyLabel:`复制`,copiedLabel:`复制成功`},w={copyValue:`复制值`,copyJson:`复制 JSON`,copyPath:`复制属性路径`,copyPrettyJson:`复制格式化 JSON`,copyCompactJson:`复制紧凑 JSON`,copied:`已复制`,copyFailed:`复制失败`,collapseNode:`收起 JSON 节点`,expandNode:`展开 JSON 节点`,copyButtonTitle(e){return`${e};右键查看复制选项`}},T={display:`flex`,flexDirection:`column`,gap:`4px`,padding:`8px 12px`,margin:`4px 0`,borderRadius:`8px`,border:`1px solid rgba(127,127,127,0.35)`,background:`rgba(127,127,127,0.08)`,color:`inherit`,fontSize:`12px`,lineHeight:1.5,fontFamily:`inherit`};var E=class extends m.Component{state={error:null};static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,t){console.error(`[dsh-genui] render failed:`,e,t.componentStack??``)}render(){let{error:e}=this.state;return e===null?this.props.children:(0,g.jsxs)(`div`,{style:T,role:`alert`,"data-genui-error":!0,children:[(0,g.jsxs)(`span`,{style:{fontWeight:600},children:[`⚠️ `,this.props.label??`此界面`,`渲染失败(已隔离,不影响其他内容)`]}),(0,g.jsx)(`span`,{style:{opacity:.75,overflowWrap:`anywhere`},children:e.message})]})}};let D=`dsh.genui.interaction`;function O(){return{order:[],blocks:{}}}function k(){try{let e=localStorage.getItem(D);if(e===null)return O();let t=JSON.parse(e);return!Array.isArray(t.order)||typeof t.blocks!=`object`||t.blocks===null?O():{order:t.order.filter(e=>typeof e==`string`),blocks:t.blocks}}catch{return O()}}function A(e){try{localStorage.setItem(D,JSON.stringify(e))}catch{}}function ee(e){return e===``?null:k().blocks[e]??null}function te(e,t){if(e===``)return;let n=k(),r=n.order.filter(t=>t!==e);r.unshift(e);let i={...n.blocks,[e]:t};for(;r.length>200;){let e=r.pop();e!==void 0&&delete i[e]}A({order:r,blocks:i})}function ne(e){let t=5381;for(let n=0;n<e.length;n++)t=(t<<5)+t+e.charCodeAt(n)>>>0;return t.toString(36)}function re(e,t,n){return`f:${e}:${String(t)}:${ne(n)}`}function ie(e,t){return`p:${e}:${ne(t)}`}function ae(e,t){return`t:${e}:${t}`}function oe(){return{fences:0,panels:0,interactions:0,templates:0,charts:0,advanced:0}}let se=e=>t=>t.fences>=e,ce=[{id:`first-fence`,name:`初次相见`,description:`渲染了第一块 GenUI 界面。`,rarity:`common`,check:se(1)},{id:`fence-5`,name:`渐入佳境`,description:`累计渲染 5 个界面。`,rarity:`common`,check:se(5)},{id:`fence-25`,name:`界面编织者`,description:`累计渲染 25 个界面。`,rarity:`rare`,check:se(25)},{id:`fence-50`,name:`蓝图之魂`,description:`累计渲染 50 个界面——你是 GenUI 的老朋友了。`,rarity:`legendary`,hidden:!0,check:se(50)},{id:`first-interaction`,name:`按钮按得动`,description:`触发了一次组件交互(动作回传)。`,rarity:`common`,check:e=>e.interactions>=1},{id:`interaction-10`,name:`小小操纵者`,description:`累计触发 10 次组件交互。`,rarity:`rare`,check:e=>e.interactions>=10},{id:`first-panel`,name:`钉在墙上`,description:`第一次把内容钉进了会话面板。`,rarity:`common`,check:e=>e.panels>=1},{id:`panel-5`,name:`面板管家`,description:`5 个会话都用过面板。`,rarity:`rare`,check:e=>e.panels>=5},{id:`first-chart`,name:`图表爱好者`,description:`渲染了第一张图表(chart/plot/echart)。`,rarity:`common`,check:e=>e.charts>=1},{id:`chart-10`,name:`数据可视化人`,description:`10 个界面里出现过图表。`,rarity:`rare`,check:e=>e.charts>=10},{id:`first-advanced`,name:`高级玩家`,description:`用上了 3D/图表引擎/架构图之一。`,rarity:`rare`,check:e=>e.advanced>=1},{id:`template-1`,name:`模板学员`,description:`从模板中心试用了一个模板。`,rarity:`common`,check:e=>e.templates>=1}];function le(e){let t=0,n=0,r=e=>{if(Array.isArray(e))for(let i of e){if(typeof i!=`object`||!i)continue;let e=i,a=e.type;if((a===`chart`||a===`plot`||a===`echart`)&&(t+=1),(a===`scene3d`||a===`mermaid`||a===`diagram`)&&(n+=1),Array.isArray(e.items)&&r(e.items),Array.isArray(e.tabs))for(let t of e.tabs)r(t.items)}};return r(e.items),{charts:t,advanced:n}}function ue(e,t){let n=ce.length,r=ce.filter(e=>t[e.id]!==void 0).length;return{title:`GenUI 探索成就`,items:[{type:`grid`,cols:3,items:[{type:`stat`,label:`已解锁`,value:`${r} / ${n}`},{type:`stat`,label:`渲染界面`,value:String(e.fences)},{type:`stat`,label:`组件交互`,value:String(e.interactions)}]},{type:`progress`,label:`探索进度`,value:Math.round(r/n*100),valueLabel:`${Math.round(r/n*100)}%`},{type:`list`,items:ce.map(e=>({type:`row`,items:[{type:`badge`,label:e.rarity===`legendary`?`传说`:e.rarity===`rare`?`稀有`:`普通`,tone:t[e.id]===void 0?`warn`:`success`},{type:`text`,size:`body`,content:e.hidden&&t[e.id]===void 0?`?`:e.name},{type:`text`,size:`muted`,content:e.hidden&&t[e.id]===void 0?`继续探索以揭示`:e.description}]}))}]}}function de(e,t){return ce.filter(n=>t[n.id]===void 0&&n.check(e))}let fe=`dsh.genui.achievements`,pe=`dsh.genui.achievements.seen`,j=ge(),me=new Set,he=[];function ge(){try{let e=localStorage.getItem(fe);if(e===null)return{state:oe(),unlocked:{}};let t=JSON.parse(e);return{state:{...oe(),...t.state??{}},unlocked:typeof t.unlocked==`object`&&t.unlocked!==null?t.unlocked:{}}}catch{return{state:oe(),unlocked:{}}}}function _e(){try{localStorage.setItem(fe,JSON.stringify(j))}catch{}}function ve(){try{let e=localStorage.getItem(pe);if(e===null)return[];let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>typeof e==`string`):[]}catch{return[]}}function ye(e){try{localStorage.setItem(pe,JSON.stringify(e.slice(0,200)))}catch{}}function be(){for(let e of me)e()}function xe(e){j.state={...j.state,...e};let t=de(j.state,j.unlocked);for(let e of t)j.unlocked[e.id]=Date.now();t.length>0&&he.push(...t),_e(),be()}function Se(e){let t=JSON.stringify(e),n=3735928559,r=1103547991;for(let e=0;e<t.length;e++){let i=t.charCodeAt(e);n=Math.imul(n^i,2654435761),r=Math.imul(r^i,1597334677)}return`${(n>>>0).toString(36)}-${(r>>>0).toString(36)}`}function Ce(e){let t=Se(e),n=ve();if(n.includes(t))return;ye([t,...n]);let r=le(e);xe({fences:j.state.fences+1,charts:j.state.charts+ +(r.charts>0),advanced:j.state.advanced+ +(r.advanced>0)})}function we(){xe({panels:j.state.panels+1})}function Te(){xe({interactions:j.state.interactions+1})}function Ee(){xe({templates:j.state.templates+1})}function De(){return j}function Oe(){let e=he;return he=[],e}function ke(e){return me.add(e),()=>me.delete(e)}let M={maxDepth:8,maxNodes:200,maxString:2e3,maxCode:12e3,maxMermaid:8e3,maxGridCols:12,maxTabs:12,maxAccordionItems:24,maxListItems:50,maxOptions:50,maxTableRows:50,maxTableCols:12,maxChartPoints:60,maxPlotSeries:8,maxPlotParams:6,maxMeshes:5,maxQuizOptions:8,maxSteps:24,maxTimelineItems:24,maxBreadcrumbItems:12,maxKeyValuePairs:24,maxTreeDepth:6,maxDiagramNodes:9,maxDiagramEdges:12,maxDiagramZones:3,maxDiagramFocal:2,maxDiagramLabel:14,maxEChartOptionDepth:10,maxEChartArrayLen:500,maxEChartOptionNodes:2e3};function Ae(e,t){return typeof e==`string`&&t.includes(e)}function N(e,t){return typeof e==`string`?e.slice(0,t):void 0}let je=/^(?:#[\da-fA-F]{3,8}|rgba?\([^)]{0,64}\)|hsla?\([^)]{0,64}\)|var\(--dsw-[\w-]+(?:,\s*#[0-9a-fA-F]{3,8})?\))$/;function P(e){if(typeof e!=`string`)return;let t=e.trim();return t.length<=64&&je.test(t)?t:void 0}function Me(e){if(typeof e!=`string`)return;let t=e.trim();if(!(t.length>2048))return/^https?:\/\//i.test(t)||/^mailto:[^@\s]+@[^@\s]+$/i.test(t)?t:void 0}function Ne(e){if(typeof e!=`string`)return;let t=e.trim();if(!(t===``||t.length>2048)&&(/^https?:\/\//i.test(t)||!(/^[a-z][a-z0-9+.-]*:/i.test(t)||/^[/\\]{2}/.test(t))))return t}function F(e,t,n){return typeof e==`number`&&Number.isFinite(e)?Math.min(n,Math.max(t,e)):void 0}function I(e,t,n){return typeof e==`number`&&Number.isFinite(e)?Math.min(n,Math.max(t,Math.trunc(e))):void 0}function L(e,t){return Ae(e,t)?e:void 0}function R(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:void 0}function z(e,t){return t===void 0?{}:{[e]:t}}let Pe=/`[^`\n]+`|\*\*[^*\n]+\*\*|==[^=\n]+==|\[[^\]\n]+\]\([^)\s]+\)/g;function Fe(e){return typeof e==`string`&&/[`*=]|\[/.test(e)}function B(e){if(typeof e!=`string`||e===``||!Fe(e))return e;let t=[],n=0,r=0;for(let i of e.matchAll(Pe)){let a=i.index??0,o=i[0];if(a>n&&t.push(e.slice(n,a)),o.startsWith("`"))t.push((0,m.createElement)(`code`,{key:r++,className:x.inlineCode},o.slice(1,-1)));else if(o.startsWith(`**`))t.push((0,m.createElement)(`strong`,{key:r++,className:x.inlineStrong},o.slice(2,-2)));else if(o.startsWith(`==`))t.push((0,m.createElement)(`mark`,{key:r++,className:x.inlineMark},o.slice(2,-2)));else{let e=/^\[([^\]\n]+)\]\(([^)\s]+)\)$/.exec(o);if(e===null)t.push(o);else{let n=Me(e[2]);t.push(n===void 0?e[1]:(0,m.createElement)(`a`,{key:r++,className:x.inlineLink,href:n,target:`_blank`,rel:`noreferrer noopener`},e[1]))}}n=a+o.length}return n<e.length&&t.push(e.slice(n)),t.length===0?e:t}let Ie=[`var(--dsw-static-deepseek-400)`,`var(--dsw-static-deepseek-450)`,`var(--dsw-static-blue-450)`,`var(--dsw-static-green-400)`,`var(--dsw-static-amber-400)`,`var(--dsw-static-red-400)`,`var(--dsw-static-deepseek-300)`,`var(--dsw-static-neutral-bluish-400)`];function Le(e){let t=0;for(let n=0;n<e.length;n++)t=t*31+e.charCodeAt(n)>>>0;return Ie[t%Ie.length]}function Re({className:e,disabled:t,onClick:n,children:r}){let[i,a]=(0,m.useState)(!1),o=(0,m.useRef)(null);return(0,m.useEffect)(()=>()=>{o.current!==null&&clearTimeout(o.current)},[]),(0,g.jsxs)(g.Fragment,{children:[(0,g.jsxs)(`button`,{type:`button`,className:e,disabled:t,onClick:n===void 0?void 0:()=>{n(),o.current!==null&&clearTimeout(o.current),a(!0),o.current=setTimeout(()=>a(!1),1400)},children:[r,i&&(0,g.jsx)(`span`,{className:x.btnSent,"aria-hidden":!0,children:`✓ 已触发`})]}),(0,g.jsx)(`span`,{className:x.visuallyHidden,role:`status`,children:i?`已触发`:``})]})}let ze=(0,m.memo)(function({node:e}){let[t,n]=(0,m.useState)(!1);return(0,g.jsxs)(`figure`,{className:x.media,children:[e.alt!==void 0&&(0,g.jsx)(`figcaption`,{className:x.mediaLabel,children:e.alt}),t?(0,g.jsx)(`div`,{className:x.mediaError,role:`alert`,children:`音频无法播放`}):(0,g.jsx)(`audio`,{className:x.mediaPlayer,src:e.src,"aria-label":e.alt??`音频`,controls:!0,preload:`metadata`,loop:e.loop===!0,onError:()=>n(!0)})]})}),Be=(0,m.memo)(function({node:e}){let[t,n]=(0,m.useState)(!1);return(0,g.jsxs)(`figure`,{className:x.media,children:[e.alt!==void 0&&(0,g.jsx)(`figcaption`,{className:x.mediaLabel,children:e.alt}),t?(0,g.jsx)(`div`,{className:x.mediaError,role:`alert`,children:`视频无法播放`}):(0,g.jsx)(`video`,{className:`${x.mediaPlayer} ${x.videoPlayer}`,src:e.src,poster:e.poster,"aria-label":e.alt??`视频`,controls:!0,preload:`metadata`,playsInline:!0,loop:e.loop===!0,muted:e.muted===!0,style:e.aspectRatio===void 0?void 0:{aspectRatio:e.aspectRatio.replace(`:`,` / `)},onError:()=>n(!0)})]})}),Ve=[`var(--dsw-static-deepseek-400)`,`var(--dsw-static-green-400)`,`var(--dsw-static-amber-400)`,`var(--dsw-static-red-400)`,`var(--dsw-static-blue-450)`,`var(--dsw-static-deepseek-450)`,`var(--dsw-static-neutral-bluish-400)`,`var(--dsw-static-deepseek-300)`],He=(e,t,n,r)=>n??(r!==void 0&&r.length>0?r[e%r.length]:t>1?Ve[e%Ve.length]:void 0);function Ue(e){if(typeof e==`number`)return Number.isFinite(e)?e:NaN;if(typeof e!=`string`)return NaN;let t=e.trim();if(t===``)return NaN;t=t.replace(/^[¥$€£]/,``),t.endsWith(`%`)&&(t=t.slice(0,-1));let n=1;if(t.endsWith(`万`))n=1e4,t=t.slice(0,-1);else if(t.endsWith(`亿`))n=1e8,t=t.slice(0,-1);else if(/[kmb]$/i.test(t)){let e=t.slice(-1).toLowerCase();n=e===`k`?1e3:e===`m`?1e6:1e9,t=t.slice(0,-1)}t=t.replace(/[,,\s]/g,``);let r=Number(t);return Number.isFinite(r)?r*n:NaN}function We(e,t){return Array.from({length:t},(t,n)=>{let r=!1;for(let t of e){let e=t[n];if(e!=null&&e!==``){if(!Number.isFinite(Ue(e)))return!1;r=!0}}return r})}function Ge(e){if(typeof e!=`string`)return null;let t=e.trim();return!/^[+][\s]*[\d.]/.test(t)&&!/^[-−][\s]*[\d.]/.test(t)?null:t.startsWith(`+`)?`up`:`down`}function Ke({cell:e}){let t=String(e).split(/[\s,;]+/).map(Number).filter(Number.isFinite);if(t.length<2)return(0,g.jsx)(g.Fragment,{children:String(e)});let n=Math.min(...t),r=Math.max(...t)-n||1,i=84/(t.length-1),a=t.map((e,t)=>[2+t*i,20-(e-n)/r*18]),o=a.map(([e,t])=>`${e.toFixed(1)},${t.toFixed(1)}`).join(` `),s=a[a.length-1],c=`M 2,20 L ${o.split(` `).join(` L `)} L ${s[0].toFixed(1)},20 Z`;return(0,g.jsxs)(`svg`,{className:x.cellSpark,viewBox:`0 0 88 22`,preserveAspectRatio:`none`,"aria-hidden":`true`,children:[(0,g.jsx)(`path`,{d:c,fill:`var(--dsl-g-accent)`,opacity:`0.14`}),(0,g.jsx)(`polyline`,{points:o,fill:`none`,stroke:`var(--dsl-g-accent)`,strokeWidth:`1.5`,strokeLinejoin:`round`,strokeLinecap:`round`,vectorEffect:`non-scaling-stroke`}),(0,g.jsx)(`path`,{d:`M ${s[0].toFixed(1)} ${s[1].toFixed(1)} L ${s[0].toFixed(1)} ${s[1].toFixed(1)}`,stroke:`var(--dsl-g-accent)`,strokeWidth:4,strokeLinecap:`round`,vectorEffect:`non-scaling-stroke`,fill:`none`})]})}function qe({cell:e}){let t=Ue(e),n=Number.isFinite(t)?Math.max(0,Math.min(100,t)):0,r=2*Math.PI*11;return(0,g.jsxs)(`span`,{className:x.cellRing,children:[(0,g.jsxs)(`svg`,{width:28,height:28,viewBox:`0 0 28 28`,"aria-hidden":`true`,children:[(0,g.jsx)(`circle`,{cx:14,cy:14,r:11,fill:`none`,strokeWidth:4,className:x.ringTrack}),(0,g.jsx)(`circle`,{cx:14,cy:14,r:11,fill:`none`,strokeWidth:4,strokeLinecap:`round`,className:x.ringFill,strokeDasharray:`${n/100*r} ${r}`,transform:`rotate(-90 14 14)`})]}),(0,g.jsx)(`span`,{className:x.cellRingText,children:String(e)})]})}function Je(e,t){let n=e=>String(e??``).replace(/\|/g,`\\|`).replace(/\n/g,` `);return[`| ${e.map(n).join(` | `)} |`,`| ${e.map(()=>`---`).join(` | `)} |`,...t.map(t=>`| ${e.map((e,r)=>n(t[r])).join(` | `)} |`)].join(`
|
|
2
|
+
`)}function Ye(e){let t=e=>{let t=String(e??``);return/[",\n]/.test(t)?`"${t.replace(/"/g,`""`)}"`:t};return e.map(e=>e.map(t).join(`,`)).join(`
|
|
3
|
+
`)}function Xe({columns:e,rows:t}){let[n,r]=(0,m.useState)(null),i=n=>{let i=n===`md`?Je(e,t):Ye(t);(0,p.writeClipboard)(i).then(e=>{e&&(r(n),window.setTimeout(()=>r(null),1200))})};return(0,g.jsxs)(`div`,{className:x.tableTools,children:[(0,g.jsx)(`button`,{type:`button`,className:x.tableTool,onClick:()=>i(`md`),children:n===`md`?`已复制`:`复制 Markdown`}),(0,g.jsx)(`button`,{type:`button`,className:x.tableTool,onClick:()=>i(`csv`),children:n===`csv`?`已复制`:`复制 CSV`})]})}function Ze({cell:e}){let t=Ue(e),n=Number.isFinite(t)?Math.max(0,Math.min(100,t)):0;return(0,g.jsxs)(`span`,{className:x.cellBar,children:[(0,g.jsx)(`span`,{className:x.cellBarFill,style:{width:`${n}%`}}),(0,g.jsx)(`span`,{className:x.cellBarText,children:String(e)})]})}let Qe=(0,m.memo)(function({node:e,renderDetail:t,filterValue:n,sortValue:r}){let i=e.columns.slice(0,M.maxTableCols),a=e.rows.slice(0,M.maxTableRows),o=e.types??[],s=o[0]===`group`,[c,l]=(0,m.useState)(null),[u,d]=(0,m.useState)(()=>new Set),[f,p]=(0,m.useState)(()=>new Set),h=(e,t,n,r)=>{let i=Ue(e[n]),a=Ue(t[n]);if(Number.isFinite(i)&&Number.isFinite(a)&&i!==a)return(i-a)*r;if(Number.isFinite(i)!==Number.isFinite(a))return Number.isFinite(i)?-r:r;let o=String(e[n]??``),s=String(t[n]??``);return(o<s?-1:+(o>s))*r},_=e=>s&&String(e[0]??``).trim()!==``&&e.slice(1).every(e=>String(e??``).trim()===``),v=n?.trim().toLowerCase(),y=(v===void 0||v===``?a.map((e,t)=>({row:e,index:t})):a.map((e,t)=>({row:e,index:t})).filter(({row:t})=>(e.filterColumn===void 0?t:[t[e.filterColumn]]).some(e=>String(e??``).toLowerCase().includes(v)))).map(e=>e.row),b=a.length-y.length,S=[];y.forEach((e,t)=>{if(_(e)){S.push({header:{row:e,index:t},children:[]});return}(S.length===0||S[S.length-1].header===null)&&S.length===0&&S.push({header:null,children:[]}),S[S.length-1].children.push({row:e,index:t})});let C=r===void 0?-1:i.indexOf(r),w=c===null?C>=0?{col:C,dir:1}:null:c,T=S.map(e=>({header:e.header,children:w===null?e.children:[...e.children].sort((e,t)=>h(e.row,t.row,w.col,w.dir))})),E=We(y,i.length),D=e=>{d(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},O=e=>{p(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},k=e=>{l(t=>t!==null&&t.col===e?t.dir===1?{col:e,dir:-1}:null:{col:e,dir:1})},A=i.map((e,t)=>{if(!E[t])return null;let n=0;for(let e of y){if(_(e))continue;let r=Ue(e[t]);Number.isFinite(r)&&(n+=r)}return n}),ee=e.total===!0&&A.some(e=>e!==null),te=e=>Number.isInteger(e)?e.toLocaleString(`en-US`):String(Math.round(e*100)/100),ne=(e,t,n)=>{let r=o[t],i=r===`delta`?String(e).trim().startsWith(`-`)?`down`:`up`:Ge(e);return(0,g.jsx)(`td`,{className:E[t]||r===`num`?x.tdNum:void 0,children:r===`badge`?(0,g.jsx)(`span`,{className:x.cellBadge,children:String(e)}):r===`bar`?(0,g.jsx)(Ze,{cell:e}):r===`spark`?(0,g.jsx)(Ke,{cell:e}):r===`ring`?(0,g.jsx)(qe,{cell:e}):r===`index`?(0,g.jsx)(`span`,{className:x.cellIndex,children:n+1}):i===null?B(String(e)):(0,g.jsx)(`span`,{className:`${x.tdDelta} ${i===`up`?x.tdDeltaUp:x.tdDeltaDown}`,children:String(e)})},t)};return(0,g.jsxs)(`div`,{className:x.tableWrap,children:[e.export===!0&&(0,g.jsx)(Xe,{columns:i,rows:a}),(0,g.jsxs)(`table`,{className:x.table,children:[(0,g.jsx)(`thead`,{children:(0,g.jsx)(`tr`,{children:i.map((e,t)=>(0,g.jsx)(`th`,{className:E[t]?x.thNum:void 0,"aria-sort":c!==null&&c.col===t?c.dir===1?`ascending`:`descending`:`none`,children:(0,g.jsxs)(`button`,{type:`button`,className:x.thSort,onClick:()=>k(t),children:[e,c!==null&&c.col===t&&(0,g.jsx)(`span`,{className:x.thSortMark,"aria-hidden":!0,children:c.dir===1?` ▲`:` ▼`})]})},t))})}),(0,g.jsx)(`tbody`,{children:T.map((n,r)=>{let a=n.header?.index??r,o=u.has(a);return(0,g.jsxs)(m.Fragment,{children:[n.header!==null&&(0,g.jsx)(`tr`,{className:x.groupRow,children:(0,g.jsx)(`td`,{colSpan:i.length,children:(0,g.jsxs)(`button`,{type:`button`,className:x.groupToggle,"aria-expanded":!o,onClick:()=>D(a),children:[(0,g.jsx)(`span`,{className:x.groupChevron,"aria-hidden":!0,children:o?`▸`:`▾`}),String(n.header.row[0]),(0,g.jsx)(`span`,{className:x.groupCount,children:n.children.length})]})})}),!o&&n.children.map(r=>{let a=e.details?.[r.index]??null,o=f.has(r.index);return(0,g.jsxs)(m.Fragment,{children:[(0,g.jsx)(`tr`,{className:n.header===null?void 0:x.groupChild,children:r.row.slice(0,i.length).map((e,t)=>t===0&&a!==null?(0,g.jsx)(`td`,{className:x.detailCell,children:(0,g.jsxs)(`button`,{type:`button`,className:x.detailToggle,"aria-expanded":o,onClick:()=>O(r.index),children:[(0,g.jsx)(`span`,{className:x.detailChevron,"data-open":o,"aria-hidden":!0,children:`▸`}),String(e)]})},t):ne(e,t,r.index))}),o&&a!==null&&(0,g.jsx)(`tr`,{className:x.detailRow,children:(0,g.jsx)(`td`,{colSpan:i.length,children:(0,g.jsx)(`div`,{className:x.detailBody,children:t===void 0?null:t(a)})})})]},r.index)})]},n.header===null?`s-${r}`:`g-${n.header.index}`)})}),b>0&&(0,g.jsx)(`tfoot`,{children:(0,g.jsx)(`tr`,{className:x.filterRow,children:(0,g.jsxs)(`td`,{colSpan:i.length,children:[`筛选后 `,y.length,` / `,a.length,` 行`]})})}),ee&&(0,g.jsx)(`tfoot`,{children:(0,g.jsx)(`tr`,{children:i.map((e,t)=>(0,g.jsx)(`td`,{className:E[t]?x.tdNum:void 0,children:t===0?`合计`:A[t]===null?``:te(A[t])},t))})})]})]})});function $e(){let[e,t]=(0,m.useState)(null);return{tip:e,show:(0,m.useCallback)((e,n)=>{let r=e.currentTarget,i=r.closest(`[data-genui-chart], [data-genui-line], [data-genui-donut]`);if(i===null)return;let a=i.getBoundingClientRect(),o=r.getBoundingClientRect();t({x:o.left-a.left+o.width/2,y:o.top-a.top,rows:n})},[]),hide:(0,m.useCallback)(()=>t(null),[])}}function et({tip:e}){return e===null?null:(0,g.jsx)(`div`,{className:x.chartTip,style:{left:`${e.x}px`,top:`${e.y}px`},role:`tooltip`,children:e.rows.map(([e,t],n)=>(0,g.jsxs)(`span`,{className:x.chartTipRow,children:[(0,g.jsx)(`span`,{children:e}),(0,g.jsx)(`span`,{className:x.chartTipValue,children:t})]},`${e}-${n}`))})}function tt(){let e=(0,m.useRef)(null),[t,n]=(0,m.useState)(560);return(0,m.useLayoutEffect)(()=>{let t=e.current;if(t===null)return;let r=()=>{let e=t.clientWidth;e>0&&n(e)};if(r(),typeof ResizeObserver>`u`)return;let i=new ResizeObserver(r);return i.observe(t),()=>i.disconnect()},[]),[e,t]}function nt(e,t,n=4){let r=Math.min(e,0),i=Math.max(t,0);if(r===i)return[0,1];let a=(i-r)/Math.max(n,1),o=10**Math.floor(Math.log10(Math.max(a,Number.MIN_VALUE))),s=a/o,c=(s<=1?1:s<=2?2:s<=5?5:10)*o,l=Math.floor(r/c)*c,u=Math.ceil(i/c)*c,d=[];for(let e=l;e<=u+c/2;e+=c)d.push(Math.abs(e)<c/1e6?0:e);return d}function rt(e){let t=Math.abs(e);return t>=1e9?`${(e/1e9).toFixed(t%1e9==0?0:1)}b`:t>=1e6?`${(e/1e6).toFixed(t%1e6==0?0:1)}m`:t>=1e3?`${(e/1e3).toFixed(t%1e3==0?0:1)}k`:String(Number.isInteger(e)?e:Math.round(e*100)/100)}function it({ticks:e,lo:t,span:n}){return(0,g.jsx)(`div`,{className:x.chartYAxis,style:{height:160},children:e.map(e=>(0,g.jsx)(`span`,{className:x.chartYTick,style:{bottom:`${(e-t)/n*100}%`},children:rt(e)},e))})}let at=(0,m.memo)(function({chart:e,filterValue:t}){let n=(0,m.useMemo)(()=>ot(e,t),[e,t]),r=n.kind??`bars`;return r===`donut`?(0,g.jsx)(lt,{chart:n}):r===`line`?(0,g.jsx)(ct,{chart:n}):(0,g.jsx)(st,{chart:n})});function ot(e,t){let n=t?.trim().toLowerCase();if(n===void 0||n===``)return e;let r=e=>e.label.toLowerCase().includes(n),i=e.data.filter(r);if(e.series===void 0)return i.length===e.data.length?e:{...e,data:i};let a=e.series.map(e=>({...e,data:e.data.filter(r)}));return{...e,data:i,series:a}}let st=(0,m.memo)(function({chart:e}){let{tip:t,show:n,hide:r}=$e(),i=e.series===void 0?void 0:e.series.slice(0,M.maxPlotSeries),a=i!==void 0&&i.length>0,o=e.data.slice(0,M.maxChartPoints),s=a?i[0].data.map(e=>e.label):o.map(e=>e.label),c=a?i.map(e=>e.data.map(e=>Number(e.value)||0)):[o.map(e=>Number(e.value)||0)],l=c.map((t,n)=>He(n,c.length,a?i[n]?.color:void 0,e.palette)??`var(--dsw-alias-state-business-primary, #4f8ef7)`),u=c.flat(),d=s.length<=12,f=e.stacked===!0&&a,p=s.map((e,t)=>c.reduce((e,n)=>e+Math.max(0,n[t]??0),0));if(e.horizontal===!0){let e=Math.max(Math.max(...u,0),1),m=a?(0,g.jsx)(`div`,{className:x.chartLegend,children:i.map((e,t)=>(0,g.jsxs)(`span`,{className:x.legendItem,children:[(0,g.jsx)(`span`,{className:x.legendSwatch,style:{background:l[t]}}),e.label]},t))}):null;return(0,g.jsxs)(`div`,{className:x.chart,"data-genui-chart":`bars`,role:`img`,"aria-label":`横向柱状图,${s.length} 组`,onMouseLeave:r,children:[(0,g.jsx)(`div`,{className:x.hbars,children:s.map((t,r)=>(0,g.jsxs)(`div`,{className:x.hbarRow,children:[(0,g.jsx)(`span`,{className:x.hbarLabel,title:t,children:t}),(0,g.jsx)(`div`,{className:x.hbarTracks,children:f?(0,g.jsx)(`div`,{className:x.hbarTrack,title:`${t}: ${p[r]??0}`,children:c.map((t,a)=>{let o=Math.max(0,t[r]??0),s=p[r]??0,c=s===0?0:o/s*Math.max(0,Math.min(100,s/e*100));return(0,g.jsx)(`div`,{className:x.hbarSeg,style:{width:`${c}%`,background:l[a]},onMouseEnter:e=>n(e,[[i[a].label,String(o)],[`合计`,String(s)]]),onMouseMove:e=>n(e,[[i[a].label,String(o)],[`合计`,String(s)]])},a)})}):c.map((o,s)=>{let c=o[r]??0,u=Math.max(0,Math.min(100,Math.max(0,c)/e*100));return(0,g.jsx)(`div`,{className:x.hbarTrack,children:(0,g.jsx)(`div`,{className:x.hbarFill,style:{width:`${u}%`,background:l[s]},onMouseEnter:e=>n(e,a?[[i[s].label,String(c)],[`合计`,String(p[r]??0)]]:[[t,String(c)]]),onMouseMove:e=>n(e,a?[[i[s].label,String(c)],[`合计`,String(p[r]??0)]]:[[t,String(c)]])})},s)})}),d&&(0,g.jsx)(`span`,{className:x.hbarValue,children:a?p[r]??0:String(o[r]?.value??``)})]},r))}),m,(0,g.jsx)(et,{tip:t})]})}let m=nt(a?0:Math.min(...u,0),Math.max(...u,0),4),h=m[0],_=m[m.length-1]-h||1,v=e=>(e-h)/_*100,y=v(0),b=`柱状图,${s.length} 组,最大 ${rt(Math.max(...u,0))}`;return(0,g.jsxs)(`div`,{className:x.chart,"data-genui-chart":`bars`,role:`img`,"aria-label":b,onMouseLeave:r,children:[(0,g.jsx)(et,{tip:t}),(0,g.jsxs)(`div`,{className:x.chartBody,children:[(0,g.jsx)(it,{ticks:m,lo:h,span:_}),(0,g.jsxs)(`div`,{className:x.chartPlot,children:[m.map(e=>(0,g.jsx)(`span`,{className:e===0?x.baseline:x.gridline,style:{bottom:`${v(e)}%`}},e)),s.map((e,t)=>(0,g.jsx)(`div`,{className:x.barCol,children:f?(0,g.jsxs)(g.Fragment,{children:[d&&(0,g.jsx)(`span`,{className:x.barValue,style:{bottom:`calc(${v(p[t]??0)}% + 4px)`},children:String(p[t]??0)}),(0,g.jsx)(`div`,{className:x.stack,style:{height:`${Math.max(0,v(p[t]??0))}%`},children:i.map((e,r)=>{let i=e.data[t],a=i===void 0?0:Number(i.value)||0,o=Math.max(0,a),s=p[t]??0,c=s===0?0:o/s*v(s),u=[[e.label,String(a)],[`合计`,String(s)]];return(0,g.jsx)(`div`,{className:x.stackSeg,style:{height:s===0?`0%`:`${o/s*100}%`,background:l[r]},onMouseEnter:e=>n(e,u),onMouseMove:e=>n(e,u),children:c>=11&&(0,g.jsx)(`span`,{className:x.stackValue,children:a})},r)})})]}):a?(0,g.jsx)(`div`,{className:x.groupedBars,children:i.map((e,r)=>{let i=e.data[t],a=i===void 0?0:Number(i.value)||0;return(0,g.jsxs)(`div`,{className:x.groupedBar,children:[d&&(0,g.jsx)(`span`,{className:x.groupValue,children:i===void 0?``:String(i.value)}),(0,g.jsx)(`div`,{className:x.groupedFill,style:{height:`${Math.max(0,v(Math.max(0,a)))}%`,background:l[r]},onMouseEnter:r=>n(r,[[e.label,String(i?.value??``)],[`合计`,String(p[t]??0)]]),onMouseMove:r=>n(r,[[e.label,String(i?.value??``)],[`合计`,String(p[t]??0)]])})]},r)})}):(()=>{let r=c[0][t]??0,i=Math.max(v(r),y),a=Math.min(v(r),y);return(0,g.jsxs)(g.Fragment,{children:[d&&(0,g.jsx)(`span`,{className:x.barValue,style:{bottom:`calc(${i}% + 4px)`},children:String(o[t]?.value??``)}),(0,g.jsx)(`div`,{className:x.barFill,style:{bottom:`${a}%`,height:`${Math.max(i-a,.6)}%`,...r<0?{borderRadius:`0 0 5px 5px`}:{},...o[t]?.color===void 0?{}:{background:o[t].color}},onMouseEnter:r=>n(r,[[e,String(o[t]?.value??``)]]),onMouseMove:r=>n(r,[[e,String(o[t]?.value??``)]])})]})})()},t))]})]}),(0,g.jsx)(`div`,{className:x.chartLabels,children:s.map((e,t)=>(0,g.jsx)(`span`,{className:x.barLabel,children:e},`${e}-${t}`))}),a&&(0,g.jsx)(`div`,{className:x.chartLegend,children:i.map((e,t)=>(0,g.jsxs)(`span`,{className:x.legendItem,children:[(0,g.jsx)(`span`,{className:x.legendSwatch,style:{background:l[t]}}),e.label]},t))})]})}),ct=(0,m.memo)(function({chart:e}){let[t,n]=tt(),{tip:r,show:i,hide:a}=$e(),o=`genui-line-${(0,m.useId)().replace(/:/g,``)}`,s=e.series!==void 0&&e.series.length>0?e.series.slice(0,M.maxPlotSeries):void 0,c=e.data.slice(0,M.maxChartPoints),l=s===void 0?c.map(e=>e.label):s[0].data.map(e=>e.label),u=s===void 0?[c.map(e=>Number(e.value)||0)]:s.map(e=>e.data.map(e=>Number(e.value)||0)),d=u.map((t,n)=>He(n,u.length,s===void 0?void 0:s[n]?.color,e.palette)??`var(--dsl-g-accent)`),f=u.length>1,p=u.flat(),h=Math.max(...u.map(e=>e.length),0),_=Math.max(n,260),v=nt(Math.min(...p,0),Math.max(...p,0),4),y=v[0],b=v[v.length-1]-y||1,S=_-44-12,C=e=>44+(h<=1?S/2:e/(h-1)*S),w=e=>14+(1-(e-y)/b)*136,T=u.map(e=>e.map((e,t)=>`${t===0?`M`:`L`} ${C(t).toFixed(1)} ${w(e).toFixed(1)}`).join(` `)),E=!f&&h>1?`${T[0]} L ${C(h-1).toFixed(1)} ${w(y).toFixed(1)} L ${C(0).toFixed(1)} ${w(y).toFixed(1)} Z`:null,D=Math.max(1,Math.ceil(h/Math.max(1,Math.floor(S/64)))),O=`折线图,${f?`${u.length} 条序列`:`${h} 个点`},范围 ${rt(Math.min(...p,0))} 到 ${rt(Math.max(...p,0))}`;return(0,g.jsxs)(`div`,{className:x.lineChart,"data-genui-chart":`line`,"data-genui-line":!0,ref:t,role:`img`,"aria-label":O,onMouseLeave:a,children:[(0,g.jsx)(et,{tip:r}),(0,g.jsxs)(`svg`,{width:`100%`,viewBox:`0 0 ${_} 176`,preserveAspectRatio:`none`,children:[(0,g.jsx)(`defs`,{children:(0,g.jsxs)(`linearGradient`,{id:o,x1:`0`,y1:`0`,x2:`0`,y2:`1`,children:[(0,g.jsx)(`stop`,{offset:`0%`,stopColor:`var(--dsl-g-accent)`,stopOpacity:`0.22`}),(0,g.jsx)(`stop`,{offset:`100%`,stopColor:`var(--dsl-g-accent)`,stopOpacity:`0.02`})]})}),v.map((e,t)=>{let n=w(e);return(0,g.jsxs)(`g`,{children:[(0,g.jsx)(`line`,{x1:44,x2:_-12,y1:n,y2:n,className:t===0?x.lineGridAxis:x.lineGrid}),(0,g.jsx)(`text`,{x:36,y:n+4,textAnchor:`end`,className:x.lineTick,children:rt(e)})]},e)}),E!==null&&(0,g.jsx)(`path`,{d:E,fill:`url(#${o})`}),T.map((e,t)=>(0,g.jsx)(`path`,{d:e,className:x.linePath,style:{stroke:d[t]}},t)),u.map((e,t)=>e.map((e,n)=>{let r=f?[[s[t].label,String(e)],[`节点`,l[n]??``]]:[[l[n]??``,String(e)]];return(0,g.jsx)(`circle`,{cx:C(n),cy:w(e),r:f?3:3.5,className:x.lineDot,style:{fill:d[t]},onMouseEnter:e=>i(e,r),onMouseMove:e=>i(e,r)},`${t}-${n}`)})),l.map((e,t)=>t%D===0?(0,g.jsx)(`text`,{x:C(t),y:168,textAnchor:`middle`,className:x.lineLabel,children:e},`l-${t}`):null)]}),f&&(0,g.jsx)(`div`,{className:x.chartLegend,children:s.map((e,t)=>(0,g.jsxs)(`span`,{className:x.legendItem,children:[(0,g.jsx)(`span`,{className:x.legendSwatch,style:{background:d[t]}}),e.label]},t))})]})}),lt=(0,m.memo)(function({chart:e}){let{tip:t,show:n,hide:r}=$e(),i=e.data.slice(0,M.maxChartPoints),a=i.map(e=>({...e,v:Math.max(0,Number(e.value)||0)})),o=a.reduce((e,t)=>e+t.v,0)||1,s=o>=1e3?`${Math.round(o/100)/10}k`:Number.isInteger(o)?String(o):o.toFixed(1),c=2*Math.PI*62,l=0,u=`环形图,${a.length} 项,合计 ${s}`;return(0,g.jsxs)(`div`,{className:x.donut,"data-genui-chart":`donut`,"data-genui-donut":!0,role:`img`,"aria-label":u,onMouseLeave:r,children:[(0,g.jsx)(et,{tip:t}),(0,g.jsxs)(`svg`,{width:160,height:160,viewBox:`0 0 160 160`,children:[(0,g.jsx)(`circle`,{cx:80,cy:80,r:62,fill:`none`,strokeWidth:18,className:x.donutTrack}),a.map((t,r)=>{let a=t.v/o,s=a*c,u=(0,g.jsx)(`circle`,{cx:80,cy:80,r:62,fill:`none`,strokeWidth:18,className:x.donutSeg,style:{stroke:He(r,i.length,t.color,e.palette)??`var(--dsw-alias-state-business-primary, #4f8ef7)`},strokeDasharray:`${s} ${c-s}`,strokeDashoffset:-l,transform:`rotate(-90 80 80)`,onMouseEnter:e=>n(e,[[t.label,`${String(t.value)} · ${(a*100).toFixed(1)}%`]]),onMouseMove:e=>n(e,[[t.label,`${String(t.value)} · ${(a*100).toFixed(1)}%`]])},r);return l+=s,u}),(0,g.jsx)(`text`,{x:80,y:78,textAnchor:`middle`,className:x.donutTotal,children:s}),(0,g.jsx)(`text`,{x:80,y:96,textAnchor:`middle`,className:x.donutTotalLabel,children:`合计`})]}),(0,g.jsx)(`div`,{className:x.donutLegend,children:a.map((t,n)=>(0,g.jsxs)(`span`,{className:x.legendItem,children:[(0,g.jsx)(`span`,{className:x.legendSwatch,style:{background:He(n,i.length,t.color,e.palette)??`var(--dsw-alias-state-business-primary, #4f8ef7)`}}),(0,g.jsx)(`span`,{children:t.label}),(0,g.jsxs)(`span`,{className:x.donutPct,children:[String(t.value),` · `,(t.v/o*100).toFixed(1),`%`]})]},n))})]})});function ut({node:e,onAction:t,answers:n}){let r=e.action,i=e.group,a=i!==void 0,o=e.options.slice(0,M.maxOptions),s=i!==void 0&&n?.answers[i]!==void 0?o.indexOf(n.answers[i]):-1,[c,l]=(0,m.useState)(s>=0?s:e.selected??null),u=(0,m.useId)(),d=a&&n?.locked===!0;return(0,m.useEffect)(()=>{i!==void 0&&(n?.registerMeta(i,{label:e.label??i,options:o,answer:e.answer,explanation:e.explanation}),e.selected!==void 0&&o[e.selected]!==void 0&&n?.answers[i]===void 0&&n?.setAnswer(i,o[e.selected]))},[i,e.label,e.answer,e.explanation,e.options,e.selected]),(0,g.jsxs)(`div`,{className:x.fieldGroup,role:`radiogroup`,"aria-label":e.label,children:[e.label!==void 0&&(0,g.jsx)(`span`,{className:x.fieldLabel,children:e.label}),o.map((e,o)=>(0,g.jsxs)(`label`,{className:x.radio,children:[(0,g.jsx)(`input`,{type:`radio`,name:`genui-radio-${u}`,checked:c===o,disabled:d,onChange:()=>{l(o),a?n?.setAnswer(i,e):r!==void 0&&t!==void 0&&t(r,{type:`radio`,value:e})}}),(0,g.jsx)(`span`,{children:e})]},o))]})}function dt(e){if(e.answer!==void 0)return typeof e.answer==`number`?e.options[e.answer]:e.answer}function ft({node:e,onAction:t,answers:n}){let r=n?.answers??{},i=n?.multiAnswers??{},a=n?.fields??{},o=n?.meta??{},s=e.groups,c=Object.fromEntries(Object.entries(a).filter(([e,t])=>t.trim()!==``&&!n?.secretFields.has(e))),l=Object.entries(i).filter(([,e])=>Array.isArray(e)&&e.length>0).map(([e])=>e),u=new Set([...Object.keys(r),...l]),d=s===void 0?Math.max(u.size,Object.keys(c).length):s.filter(e=>r[e]!==void 0||Array.isArray(i[e])&&i[e].length>0).length,f=s?.length??d,p=s??[...u],m=!p.some(e=>Array.isArray(i[e])&&i[e].length>0)&&p.some(e=>o[e]?.answer!==void 0),h=n?.locked===!0,_={...r,...i},v=d>0&&d>=f&&(m||e.action!==void 0&&t!==void 0);if(h){let i=p.filter(e=>r[e]!==void 0&&o[e]?.answer!==void 0),a=i.filter(e=>r[e]===dt(o[e])).length;return(0,g.jsxs)(`div`,{className:x.gradeWrap,"data-genui-grade":!0,children:[(0,g.jsxs)(`div`,{className:x.gradeScore,children:[(0,g.jsxs)(`span`,{className:x.gradeScoreValue,children:[a,` / `,i.length]}),(0,g.jsxs)(`span`,{className:x.gradeScoreLabel,children:[`得分`,i.length<p.length?`(${p.length-i.length} 题无答案未计分)`:``]})]}),(0,g.jsx)(`div`,{className:x.gradeList,children:p.map(e=>{let t=r[e],n=o[e];if(t===void 0||n===void 0)return null;let i=dt(n);if(i===void 0)return(0,g.jsxs)(`div`,{className:x.gradeItem,children:[(0,g.jsx)(`span`,{className:x.gradeQ,children:n.label}),(0,g.jsxs)(`span`,{className:x.gradeAns,children:[`你的答案:`,t]})]},e);let a=t===i;return(0,g.jsxs)(`div`,{className:`${x.gradeItem} ${a?x.gradeItemOk:x.gradeItemNo}`,children:[(0,g.jsx)(`span`,{className:x.gradeQ,children:n.label}),(0,g.jsx)(`span`,{className:x.gradeTag,children:a?`✓`:`✗`}),(0,g.jsxs)(`span`,{className:x.gradeAns,children:[`你的答案:`,t,!a&&(0,g.jsxs)(`span`,{className:x.gradeRight,children:[` 正确答案:`,i]})]}),n.explanation!==void 0&&(0,g.jsx)(`span`,{className:x.gradeExp,children:n.explanation})]},e)})}),(0,g.jsx)(`button`,{type:`button`,className:`${x.button} ${x.ghost} ${x.submit}`,onClick:()=>{n?.clear(),e.resetAction!==void 0&&t!==void 0&&t(e.resetAction,{type:`submit-reset`,groups:s??Object.keys(r)})},children:`重新作答`})]})}return(0,g.jsxs)(`div`,{className:x.submitRow,children:[(0,g.jsx)(`button`,{type:`button`,className:`${x.button} ${x.primary} ${x.submit}`,disabled:!v,onClick:v?()=>{m?n?.setLocked(!0):e.action!==void 0&&t!==void 0&&t(e.action,{type:`submit`,answers:_,...Object.keys(c).length>0?{fields:c}:{},total:f,answered:d})}:void 0,children:e.label}),f>0&&(0,g.jsxs)(`span`,{className:x.submitHint,"aria-live":`polite`,children:[`已选 `,d,`/`,f]})]})}function pt({node:e,onAction:t}){let[n,r]=(0,m.useState)(e.checked===!0),i=e.action;return(0,g.jsxs)(`label`,{className:x.switchRow,children:[(0,g.jsx)(`span`,{className:x.switchLabel,children:e.label}),(0,g.jsx)(`button`,{type:`button`,role:`switch`,"aria-checked":n,className:`${x.switch} ${n?x.switchOn:``}`,onClick:()=>{let e=!n;r(e),i!==void 0&&t!==void 0&&t(i,{type:`switch`,checked:e})},children:(0,g.jsx)(`span`,{className:x.switchKnob})})]})}function mt({node:e,onAction:t,answers:n}){let r=e.action,i=e.id,a=i!==void 0&&n?.fields[i]!==void 0?Number(n.fields[i]):NaN,o=Number.isFinite(a)?a:e.value??e.min??0,[s,c]=(0,m.useState)(o),l=(0,m.useRef)(!1);(0,m.useEffect)(()=>{l.current||(l.current=!0,i!==void 0&&n?.setField(i,String(o)))},[]);let u=e=>{r!==void 0&&t!==void 0&&t(r,{type:`slider`,value:e,...i===void 0?{}:{id:i}})};return(0,g.jsxs)(`label`,{className:x.sliderRow,children:[e.label!==void 0&&(0,g.jsx)(`span`,{className:x.fieldLabel,children:e.label}),(0,g.jsx)(`input`,{type:`range`,className:x.sliderInput,min:e.min,max:e.max,step:e.step??1,value:s,"aria-label":e.label,onChange:e=>{let t=Number(e.currentTarget.value);c(t),i!==void 0&&n?.setField(i,String(t)),u(t)}}),(0,g.jsx)(`span`,{className:x.sliderValue,children:Math.round(s*100)/100})]})}function ht(){let e=(0,m.useRef)(!1),t=(0,m.useRef)(null);return(0,m.useEffect)(()=>()=>{t.current!==null&&clearTimeout(t.current)},[]),{isComposing:()=>e.current,onCompositionStart:()=>{e.current=!0,t.current!==null&&(clearTimeout(t.current),t.current=null)},onCompositionEnd:()=>{t.current!==null&&clearTimeout(t.current),t.current=setTimeout(()=>{e.current=!1},10)}}}function gt(e){let t=e.nativeEvent;return t.isComposing===!0||t.keyCode===229}function _t({node:e,onAction:t,answers:n}){let r=e.action,i=e.id,a=e.options.slice(0,M.maxOptions),o=i!==void 0&&n?.fields[i]!==void 0?a.indexOf(n.fields[i]):-1,s=o>=0?a[o]:e.selected!==void 0&&a[e.selected]!==void 0?a[e.selected]:null,[c,l]=(0,m.useState)(s),u=(0,m.useRef)(!1);(0,m.useEffect)(()=>{u.current||(u.current=!0,i!==void 0&&s!==null&&n?.setField(i,s))},[]);let d=e=>{r!==void 0&&t!==void 0&&t(r,{type:`select`,value:e,...i===void 0?{}:{id:i}})};return(0,g.jsxs)(`label`,{className:x.field,children:[e.label!==void 0&&(0,g.jsx)(`span`,{children:e.label}),(0,g.jsxs)(`select`,{className:x.select,value:c??``,onChange:e=>{let t=e.currentTarget.value;l(t),i!==void 0&&n?.setField(i,t),d(t)},children:[c===null&&(0,g.jsx)(`option`,{value:``,hidden:!0,disabled:!0,children:`请选择…`}),a.map((e,t)=>(0,g.jsx)(`option`,{value:e,children:e},t))]})]})}function vt({node:e,onAction:t,answers:n}){let r=e.action,i=e.id,a=e.inputType===`password`,o=!a&&i!==void 0?n?.fields[i]:void 0,[s,c]=(0,m.useState)(()=>{let t=a?``:o??e.value??``;return e.inputType===`color`?/^#[0-9a-f]{6}$/i.test(t)?t.toLowerCase():`#000000`:t}),l=(0,m.useRef)(s),u=e=>{r!==void 0&&t!==void 0&&(l.current=s,t(r,{type:`input`,value:s,...i===void 0?{}:{id:i},...e?{submit:!0}:{}}))},d=ht(),f=(0,m.useRef)(!1);return(0,m.useEffect)(()=>{f.current||(f.current=!0,!a&&i!==void 0&&s.trim()!==``&&n?.setField(i,s))},[]),(0,m.useEffect)(()=>{a&&i!==void 0&&n?.registerSecretField(i)},[a,i]),(0,g.jsxs)(`label`,{className:x.field,children:[e.label!==void 0&&(0,g.jsx)(`span`,{children:e.label}),(0,g.jsx)(`input`,{className:x.input,type:e.inputType??`text`,style:e.inputType===`color`?{width:64,height:40,padding:4,boxSizing:`border-box`,alignSelf:`flex-start`,cursor:`pointer`}:void 0,placeholder:e.placeholder,value:s,onChange:e=>{let t=e.currentTarget.value;c(t),i!==void 0&&n?.setField(i,t)},onBlur:()=>{s!==l.current&&u(!1)},onCompositionStart:d.onCompositionStart,onCompositionEnd:d.onCompositionEnd,onKeyDown:e=>{e.key===`Enter`&&(d.isComposing()||gt(e)||(e.preventDefault(),u(!0)))}})]})}function yt({node:e,onAction:t,answers:n}){let r=e.action,i=e.id,[a,o]=(0,m.useState)(()=>e.value??(i===void 0?``:n?.fields[i]??``)),s=(0,m.useRef)(a),c=e=>{r!==void 0&&t!==void 0&&(s.current=a,t(r,{type:`textarea`,value:a,...i===void 0?{}:{id:i},...e?{submit:!0}:{}}))},l=ht(),u=(0,m.useRef)(!1);return(0,m.useEffect)(()=>{u.current||(u.current=!0,i!==void 0&&e.value!==void 0&&e.value.trim()!==``&&n?.setField(i,e.value))},[]),(0,g.jsxs)(`label`,{className:x.field,children:[e.label!==void 0&&(0,g.jsx)(`span`,{children:e.label}),(0,g.jsx)(`textarea`,{className:x.textarea,placeholder:e.placeholder,rows:e.rows??4,value:a,onChange:e=>{let t=e.currentTarget.value;o(t),i!==void 0&&n?.setField(i,t)},onBlur:()=>{a!==s.current&&c(!1)},onCompositionStart:l.onCompositionStart,onCompositionEnd:l.onCompositionEnd,onKeyDown:e=>{!(e.metaKey||e.ctrlKey)||e.key!==`Enter`||l.isComposing()||gt(e)||(e.preventDefault(),c(!0))}})]})}function bt({node:e,onAction:t,answers:n}){let r=e.group,i=r!==void 0,a=r!==void 0&&Object.prototype.hasOwnProperty.call(n?.multiAnswers??{},r),o=r===void 0?void 0:n?.multiAnswers[r],s=a?Array.isArray(o)&&o.includes(e.label):e.checked===!0,[c,l]=(0,m.useState)(e.checked===!0);return(0,m.useEffect)(()=>{r===void 0||e.checked!==!0||a||n?.setMultiAnswer(r,e.label,!0)},[r,e.checked,e.label,a]),(0,g.jsxs)(`label`,{className:x.checkbox,children:[(0,g.jsx)(`input`,{type:`checkbox`,checked:i?s:c,onChange:a=>{let o=a.currentTarget.checked;l(o),i?n?.setMultiAnswer(r,e.label,o):e.action!==void 0&&t!==void 0&&t(e.action,{type:`checkbox`,checked:o})}}),(0,g.jsx)(`span`,{children:e.label})]})}let xt={pi:Math.PI,e:Math.E,tau:Math.PI*2},St={sin:Math.sin,cos:Math.cos,tan:Math.tan,asin:Math.asin,acos:Math.acos,atan:Math.atan,sqrt:Math.sqrt,cbrt:Math.cbrt,exp:Math.exp,log:Math.log10,ln:Math.log,abs:Math.abs,floor:Math.floor,ceil:Math.ceil,round:Math.round,min:Math.min,max:Math.max,pow:(e,t)=>e**+t};var V=class extends Error{pos;constructor(e,t){super(`SafeMath parse error at ${t}: ${e}`),this.pos=t}},Ct=class{src;vars;i=0;constructor(e,t){this.src=e,this.vars=t}parse(){let e=this.parseExpr();if(this.skipWs(),this.i<this.src.length)throw new V(`unexpected trailing input`,this.i);return this.evalNode(e)}evalNode(e){return typeof e==`number`?()=>e:e}parseExpr(){let e=this.parseTerm();for(;;){this.skipWs();let t=this.peek();if(t===`+`||t===`-`){this.i++;let n=this.parseTerm(),r=t,i=e;e=r===`+`?e=>this.asNum(i,e)+this.asNum(n,e):e=>this.asNum(i,e)-this.asNum(n,e)}else return e}}parseTerm(){let e=this.parseUnary();for(;;){this.skipWs();let t=this.peek();if(t===`*`||t===`/`||t===`%`){this.i++;let n=this.parseUnary(),r=t,i=e;e=r===`*`?e=>this.asNum(i,e)*this.asNum(n,e):r===`/`?e=>this.asNum(i,e)/this.asNum(n,e):e=>this.asNum(i,e)%this.asNum(n,e)}else return e}}parseUnary(){this.skipWs();let e=this.char();if(e===`-`||e===`+`){this.i++;let t=this.parseUnary();return e===`-`?e=>-this.asNum(t,e):e=>this.asNum(t,e)}return this.parsePower()}parsePower(){let e=this.parseAtom();if(this.skipWs(),this.peek()===`^`){this.i++;let t=this.parsePower(),n=e;return e=>this.asNum(n,e)**+this.asNum(t,e)}return e}parseAtom(){this.skipWs();let e=this.char();if(e===`(`){this.i++;let e=this.parseExpr();if(this.skipWs(),this.peek()!==`)`)throw new V(`expected )`,this.i);return this.i++,e}if(e>=`0`&&e<=`9`||e===`.`)return this.parseNumber();if(this.isIdentStart(e))return this.parseIdent();throw new V(`unexpected character '${e}'`,this.i)}parseNumber(){let e=this.i,t=!1;for(;this.i<this.src.length&&/[0-9]/.test(this.src[this.i]);)t=!0,this.i++;if(this.peek()===`.`)for(this.i++;this.i<this.src.length&&/[0-9]/.test(this.src[this.i]);)t=!0,this.i++;if(!t)throw new V(`invalid number '${this.src.slice(e,this.i)}'`,e);if(this.peek()===`e`||this.peek()===`E`){this.i++,(this.peek()===`+`||this.peek()===`-`)&&this.i++;let t=this.i;for(;this.i<this.src.length&&/[0-9]/.test(this.src[this.i]);)this.i++;if(this.i===t)throw new V(`invalid number '${this.src.slice(e,this.i)}'`,e)}let n=this.src.slice(e,this.i),r=Number(n);if(Number.isNaN(r))throw new V(`invalid number '${n}'`,e);return r}parseIdent(){let e=this.i;for(;this.i<this.src.length&&this.isIdentChar(this.src[this.i]);)this.i++;let t=this.src.slice(e,this.i);if(this.skipWs(),this.peek()===`(`){let n=St[t];if(n===void 0)throw new V(`unknown function '${t}'`,e);this.i++;let r=[];if(this.skipWs(),this.peek()===`)`)this.i++;else for(;;){r.push(this.parseExpr()),this.skipWs();let e=this.peek();if(e===`,`){this.i++;continue}if(e===`)`){this.i++;break}throw new V(`expected , or ) in call`,this.i)}return e=>n(...r.map(t=>this.asNum(t,e)))}if(Object.hasOwn(xt,t))return xt[t];if(t===`x`)return e=>e;if(Object.hasOwn(this.vars,t)){let e=this.vars[t];return()=>e}if(/^[a-z]$/.test(t))return()=>1;throw new V(`unknown identifier '${t}'`,e)}asNum(e,t){return typeof e==`number`?e:e(t)}skipWs(){for(;this.i<this.src.length&&/\s/.test(this.src[this.i]);)this.i++}peek(){return this.src[this.i]}char(){let e=this.peek();if(e===void 0)throw new V(`unexpected end of input`,this.i);return e}isIdentStart(e){return e!==void 0&&/[a-zA-Z_]/.test(e)}isIdentChar(e){return/[a-zA-Z0-9_]/.test(e)}};function wt(e,t={}){try{let n={...t.vars};return delete n.x,new Ct(e,n).parse()}catch{return null}}function Tt(e,t,n,r=200,i={}){let a=wt(e,{vars:i});if(a===null||!Number.isFinite(t)||!Number.isFinite(n)||n<=t||r<2)return[];let o=[],s=(n-t)/(r-1);for(let e=0;e<r;e++){let n=t+s*e,r=a(n);Number.isFinite(r)&&o.push([n,r])}return o}let Et=`@changfenhuang/dsh-genui/PlotBlock.module.css`;if(typeof document<`u`&&document.querySelector(`style[data-plugin-css=`+JSON.stringify(Et)+`]`)===null){let e=document.createElement(`style`);e.dataset.plugin=`@changfenhuang/dsh-genui`,e.dataset.pluginCss=Et,e.textContent=`._ctrqa_block{--dsl-g-radius-surface:12px;--dsl-g-radius-control:8px;--dsl-g-font-title:13px;--dsl-g-font-meta:12px;--dsl-g-font-data:11px;--dsl-g-gap-md:12px;--dsl-g-gap-sm:8px;--dsl-g-gap-xs:4px;--dsl-g-border:var(--dsw-alias-border-l1,var(--dsw-alias-border-l2,#ffffff1f));--dsl-g-accent:var(--dsw-alias-state-business-primary,#4f8ef7);--dsl-g-accent-soft:color-mix(in srgb, var(--dsl-g-accent) var(--dsl-g-tint), transparent);--dsl-g-tint:8%;--dsl-g-tint-strong:14%;--dsl-g-font-mono:var(--ds-font-family-code,ui-monospace, "SF Mono", monospace);background:var(--dsw-alias-bg-layer-1,var(--dsw-alias-markdown-code-block));border:1px solid var(--dsl-g-border);border-radius:var(--dsl-g-radius-surface);gap:var(--dsl-g-gap-sm);flex-direction:column;padding:14px 16px;display:flex}._ctrqa_title{font-size:var(--dsl-g-font-title);letter-spacing:.01em;color:var(--dsw-alias-label-primary);font-weight:600}._ctrqa_gridLine{stroke:var(--dsw-alias-border-l1,#ffffff12);stroke-width:1px}._ctrqa_axis{stroke:var(--dsw-alias-label-tertiary);stroke-width:1px}._ctrqa_tick{fill:var(--dsw-alias-label-tertiary);font-size:var(--dsl-g-font-data);font-family:var(--dsl-g-font-mono)}._ctrqa_line{fill:none;stroke:var(--dsl-g-accent);stroke-width:2px;stroke-linejoin:round;stroke-linecap:round}._ctrqa_area{stroke:none;fill-opacity:.16}._ctrqa_scatterDot{stroke:var(--dsw-alias-bg-base,#17171a);stroke-width:1px}._ctrqa_legend{gap:var(--dsl-g-gap-md);flex-wrap:wrap;display:flex}._ctrqa_legendItem{align-items:center;gap:var(--dsl-g-gap-xs);font-size:var(--dsl-g-font-meta);color:var(--dsw-alias-label-secondary);display:inline-flex}._ctrqa_legendSwatch{background:var(--dsl-g-accent);border-radius:2px;width:10px;height:3px}._ctrqa_empty{color:var(--dsw-alias-label-tertiary);font-size:var(--dsl-g-font-title);gap:var(--dsl-g-gap-xs);flex-direction:column;padding:14px 0;display:flex}._ctrqa_emptyRow{font-family:var(--dsl-g-font-mono)}._ctrqa_surface{cursor:grab;touch-action:pan-y}._ctrqa_plotTools{justify-content:space-between;align-items:center;gap:8px;margin:0 0 4px;display:flex}._ctrqa_plotHint{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;font-size:12.5px}._ctrqa_plotReset{border:1px solid var(--dsw-alias-border-l2,#ffffff1f);color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border-radius:999px;padding:2px 9px;font-family:inherit;font-size:12.5px}._ctrqa_plotReset:hover{color:var(--dsw-alias-label-primary);border-color:var(--dsw-alias-state-business-primary,#4f8ef7)}._ctrqa_surface:active{cursor:grabbing}._ctrqa_sliders{gap:var(--dsl-g-gap-sm);flex-direction:column;display:flex}._ctrqa_sliderRow{align-items:center;gap:var(--dsl-g-gap-sm);font-size:var(--dsl-g-font-meta);display:flex}._ctrqa_sliderName{color:var(--dsw-alias-label-secondary);white-space:nowrap;text-overflow:ellipsis;min-width:90px;overflow:hidden}._ctrqa_slider{accent-color:var(--dsl-g-accent);cursor:pointer;flex:1;height:4px}._ctrqa_sliderValue{color:var(--dsw-alias-label-primary);font-family:var(--dsl-g-font-mono);text-align:right;min-width:34px}._ctrqa_animBar{align-items:center;gap:var(--dsl-g-gap-md);display:flex}._ctrqa_playBtn{background:var(--dsl-g-accent-soft);border:1px solid color-mix(in srgb, var(--dsl-g-accent) 30%, transparent);width:fit-content;color:var(--dsl-g-accent);border-radius:var(--dsl-g-radius-control);font-size:var(--dsl-g-font-title);cursor:pointer;padding:6px 14px;font-family:inherit;font-weight:600}._ctrqa_playBtn:hover{filter:brightness(1.1)}._ctrqa_animTrack{background:var(--dsw-alias-bg-layer-1);height:5px;box-shadow:inset 0 0 0 1px var(--dsl-g-border);border-radius:999px;flex:1;overflow:hidden}._ctrqa_animFill{background:var(--dsl-g-accent);border-radius:999px;height:100%}._ctrqa_resetBtn{border:1px solid var(--dsl-g-border);width:fit-content;color:var(--dsw-alias-label-secondary);border-radius:var(--dsl-g-radius-control);font-size:var(--dsl-g-font-title);cursor:pointer;background:0 0;padding:6px 14px;font-family:inherit}._ctrqa_resetBtn:hover{border-color:var(--dsl-g-accent);color:var(--dsl-g-accent)}._ctrqa_slidersHead{justify-content:space-between;align-items:center;display:flex}._ctrqa_slidersTitle{font-size:var(--dsl-g-font-meta);color:var(--dsw-alias-label-tertiary)}`,document.head.appendChild(e)}var H={animBar:`_ctrqa_animBar`,animFill:`_ctrqa_animFill`,animTrack:`_ctrqa_animTrack`,area:`_ctrqa_area`,axis:`_ctrqa_axis`,block:`_ctrqa_block`,empty:`_ctrqa_empty`,emptyRow:`_ctrqa_emptyRow`,gridLine:`_ctrqa_gridLine`,legend:`_ctrqa_legend`,legendItem:`_ctrqa_legendItem`,legendSwatch:`_ctrqa_legendSwatch`,line:`_ctrqa_line`,playBtn:`_ctrqa_playBtn`,plotHint:`_ctrqa_plotHint`,plotReset:`_ctrqa_plotReset`,plotTools:`_ctrqa_plotTools`,resetBtn:`_ctrqa_resetBtn`,scatterDot:`_ctrqa_scatterDot`,slider:`_ctrqa_slider`,sliderName:`_ctrqa_sliderName`,sliderRow:`_ctrqa_sliderRow`,sliderValue:`_ctrqa_sliderValue`,sliders:`_ctrqa_sliders`,slidersHead:`_ctrqa_slidersHead`,slidersTitle:`_ctrqa_slidersTitle`,surface:`_ctrqa_surface`,tick:`_ctrqa_tick`,title:`_ctrqa_title`};let Dt=[`var(--dsw-static-deepseek-400)`,`var(--dsw-static-green-400)`,`var(--dsw-static-amber-400)`,`var(--dsw-static-red-400)`,`var(--dsw-static-blue-450)`,`var(--dsw-static-deepseek-450)`,`var(--dsw-static-neutral-bluish-400)`,`var(--dsw-static-deepseek-300)`],Ot=(e,t,n)=>n??(t>1?Dt[e%Dt.length]:void 0);function kt(e){let t=1/0,n=-1/0;for(let[,r]of e)r<t&&(t=r),r>n&&(n=r);if(!Number.isFinite(t)||!Number.isFinite(n))return[-1,1];t===n&&(--t,n+=1);let r=(n-t)*.08;return[t-r,n+r]}function At(e,t,n=5){let r=t-e;if(!Number.isFinite(r)||r<=0)return[];let i=10**Math.floor(Math.log10(r/n)),a=r/n/i,o=i*(a>=7.5?10:a>=3.5?5:a>=1.5?2:1),s=[];for(let n=Math.ceil(e/o)*o;n<=t+o*1e-9;n+=o)s.push(Math.round(n*1e9)/1e9);return s}function jt(e){return Math.abs(e)>=1e5||Math.abs(e)<.001&&e!==0?e.toExponential(1):String(Math.round(e*100)/100)}function Mt({points:e,className:t,color:n}){let r=e.length>40?`${e.slice(0,16)}|${e.slice(-16)}`:e;return(0,g.jsx)(`polyline`,{points:e,className:t,style:n===void 0?void 0:{stroke:n}},r)}let Nt=(0,m.memo)(function({series:e,xMin:t=-5,xMax:n=5,yMin:r,yMax:i,title:a}){let[o,s]=(0,m.useState)(()=>{let a={};for(let[t,n]of e.entries())for(let e of n.params??[])e!=null&&(a[`${t}:${e.name}`]=e.value);let[o,s]=kt(e.map((e,r)=>{let i={};for(let t of e.params??[])t!=null&&(i[t.name]=a[`${r}:${t.name}`]??t.value);return Tt(e.expr,t,n,240,i)}).flatMap(e=>e));return{xMin:t,xMax:n,yMin:r??o,yMax:i??s}}),c=(0,m.useRef)(null),[l,u]=(0,m.useState)(()=>({})),d=(()=>{for(let[t,n]of e.entries())for(let e of n.params??[])if(e!=null&&e.animateTo!==void 0)return{si:t,param:e};return null})(),[f,p]=(0,m.useState)(!1),[h,_]=(0,m.useState)(0),v=(0,m.useRef)(null);(0,m.useEffect)(()=>{if(!f||d===null)return;let e=`${d.si}:${d.param.name}`,t=l[e]??d.param.value,n=d.param.animateTo,r=Math.max(0,d.param.durationMs??4e3),i=performance.now(),a=o=>{let s=r===0?1:Math.min(1,Math.max(0,(o-i)/r)),c=1-(1-s)**3,l=t+(n-t)*c;u(t=>({...t,[e]:l})),_(s),s<1?v.current=requestAnimationFrame(a):d.param.loop===!0?(t=d.param.value,i=o,u(n=>({...n,[e]:t})),_(0),v.current=requestAnimationFrame(a)):(v.current=null,p(!1))};return v.current=requestAnimationFrame(a),()=>{v.current!==null&&cancelAnimationFrame(v.current),v.current=null}},[f,d?.si,d?.param.name,d?.param.value,d?.param.animateTo,d?.param.durationMs,d?.param.loop]);let y=o.xMin,b=o.xMax,x=o.yMin,S=o.yMax,C=e=>y+(e-34)/436*(b-y),w=e=>34+(e-y)/(b-y)*436,T=e=>14+(1-(e-x)/(S-x))*182,E=e.map((e,t)=>{let n={};for(let r of e.params??[])r!=null&&(n[r.name]=l[`${t}:${r.name}`]??r.value);return{series:e,points:Tt(e.expr,y,b,240,n).map(([e,t])=>`${w(e).toFixed(2)},${T(t).toFixed(2)}`).join(` `)}}),D=At(y,b),O=At(x,S),k=E.some(e=>e.points.length>1),A=Number.isFinite(y)&&Number.isFinite(b)&&b>y&&Number.isFinite(S)&&Number.isFinite(x)&&S>x,ee=(e,t,n)=>{let r=Ot(t,E.length,e.color)??`var(--dsw-alias-state-business-primary, #4f8ef7)`,i=e.kind??`line`;if(i===`scatter`){let e=n===``?[]:n.split(` `).map(e=>{let[t,n]=e.split(`,`);return[Number(t),Number(n)]});return(0,g.jsx)(`g`,{children:e.map(([e,t],n)=>(0,g.jsx)(`circle`,{cx:e,cy:t,r:2.6,className:H.scatterDot,style:{fill:r}},n))},t)}if(i===`area`){if(n===``)return(0,g.jsx)(Mt,{points:``,className:H.line,color:r},t);let e=n.slice(0,n.indexOf(` `)).split(`,`)[0],i=n.slice(n.lastIndexOf(` `)+1).split(`,`)[0],a=T(x),o=`${e},${a.toFixed(2)} ${n} ${i},${a.toFixed(2)}`;return(0,g.jsx)(`polygon`,{points:o,className:H.area,style:{fill:r}},t)}return(0,g.jsx)(Mt,{points:n,className:H.line,color:r},t)},te=e=>{c.current={startX:e.clientX,startY:e.clientY,xMin:y,xMax:b},e.target.setPointerCapture?.(e.pointerId)},ne=e=>{let t=c.current;if(t===null||Math.abs(e.clientX-t.startX)<4)return;let n=t.xMax-t.xMin,r=(t.startX-e.clientX)/436*n;s(e=>({xMin:t.xMin+r,xMax:t.xMax+r,yMin:e.yMin,yMax:e.yMax}))},re=()=>{c.current=null},ie=(0,m.useRef)(null);(0,m.useEffect)(()=>{let e=ie.current;if(e===null)return;let t=t=>{if(!t.metaKey&&!t.ctrlKey)return;t.preventDefault();let n=b-y,r=n*(t.deltaY>0?1.15:1/1.15),i=e.getBoundingClientRect(),a=C((t.clientX-i.left)/i.width*480),o=a-(a-y)/n*r;s(e=>({xMin:o,xMax:o+r,yMin:e.yMin,yMax:e.yMax}))};return e.addEventListener(`wheel`,t,{passive:!1}),()=>e.removeEventListener(`wheel`,t)},[y,b,C]);let ae=e.some(e=>(e.params?.length??0)>0),oe=(0,m.useRef)({min:t,max:n}),se=Math.abs(y-oe.current.min)>1e-6||Math.abs(b-oe.current.max)>1e-6;return(0,g.jsxs)(`div`,{className:H.block,"data-genui-plot":!0,children:[a!==void 0&&(0,g.jsx)(`div`,{className:H.title,children:a}),k&&A&&(0,g.jsxs)(`div`,{className:H.plotTools,children:[(0,g.jsx)(`span`,{className:H.plotHint,children:se?`x ∈ [${jt(y)}, ${jt(b)}]`:`⌘/Ctrl + 滚轮缩放 · 拖拽平移`}),se&&(0,g.jsx)(`button`,{type:`button`,className:H.plotReset,onClick:()=>{s(e=>({...e,xMin:oe.current.min,xMax:oe.current.max}))},children:`↺ 回到初始区间`})]}),k&&A?(0,g.jsxs)(`svg`,{width:`100%`,viewBox:`0 0 480 220`,role:`img`,"aria-label":a??`function plot`,className:H.surface,ref:ie,onPointerDown:te,onPointerMove:ne,onPointerUp:re,onPointerLeave:re,children:[O.map(e=>(0,g.jsxs)(`g`,{children:[(0,g.jsx)(`line`,{x1:34,x2:470,y1:T(e),y2:T(e),className:H.gridLine}),(0,g.jsx)(`text`,{x:28,y:T(e)+4,className:H.tick,textAnchor:`end`,children:jt(e)})]},`y${e}`)),D.map(e=>(0,g.jsxs)(`g`,{children:[(0,g.jsx)(`line`,{x1:w(e),x2:w(e),y1:14,y2:196,className:H.gridLine}),(0,g.jsx)(`text`,{x:w(e),y:210,className:H.tick,textAnchor:`middle`,children:jt(e)})]},`x${e}`)),(0,g.jsx)(`line`,{x1:34,x2:470,y1:196,y2:196,className:H.axis}),(0,g.jsx)(`line`,{x1:34,x2:34,y1:14,y2:196,className:H.axis}),E.map(({series:e,points:t},n)=>ee(e,n,t))]}):(0,g.jsx)(`div`,{className:H.empty,children:e.map((e,t)=>(0,g.jsxs)(`div`,{className:H.emptyRow,children:[e.expr,` — 无法绘制(表达式无效或范围非法)`]},t))}),ae&&(0,g.jsxs)(`div`,{className:H.sliders,children:[(0,g.jsxs)(`div`,{className:H.slidersHead,children:[(0,g.jsx)(`span`,{className:H.slidersTitle,children:`参数调节`}),(0,g.jsx)(`button`,{type:`button`,className:H.resetBtn,onClick:()=>{p(!1);let t={};for(let[n,r]of e.entries())for(let e of r.params??[])e!=null&&(t[`${n}:${e.name}`]=e.value);u(t),_(0)},children:`↺ 重置`})]}),e.map((e,t)=>(e.params??[]).map(n=>{if(n==null)return null;let r=`${t}:${n.name}`,i=l[r]??n.value;return(0,g.jsxs)(`label`,{className:H.sliderRow,children:[(0,g.jsxs)(`span`,{className:H.sliderName,children:[e.label??e.expr,` · `,n.name]}),(0,g.jsx)(`input`,{type:`range`,className:H.slider,min:n.min??0,max:n.max??10,step:n.step??.1,value:i,onChange:e=>{let t=Number(e.currentTarget.value);u(e=>({...e,[r]:t}))}}),(0,g.jsx)(`span`,{className:H.sliderValue,children:Math.round(i*100)/100})]},r)}))]}),d!==null&&(0,g.jsxs)(`div`,{className:H.animBar,children:[(0,g.jsx)(`button`,{type:`button`,className:H.playBtn,onClick:()=>{f?p(!1):(u(e=>({...e,[`${d.si}:${d.param.name}`]:d.param.value})),_(0),p(!0))},children:f?`⏸ 暂停`:`▶ 播放动画`}),f&&(0,g.jsx)(`div`,{className:H.animTrack,children:(0,g.jsx)(`div`,{className:H.animFill,style:{width:`${h*100}%`}})})]}),(e.length>1||ae)&&(0,g.jsx)(`div`,{className:H.legend,children:e.map((t,n)=>(0,g.jsxs)(`span`,{className:H.legendItem,children:[(0,g.jsx)(`span`,{className:H.legendSwatch,style:{background:Ot(n,e.length,t.color)??`var(--dsw-alias-state-business-primary, #4f8ef7)`}}),t.label??t.expr]},n))})]})});function Pt(e){let t=window.__DSH_BOOT__?.entries?.find(e=>e.id===It)?.rev;return`${Lt}/${e}${t===void 0?``:`?rev=${t}`}`}function Ft(e){let t=`${e}.js`,n=Rt.get(t);if(n!==void 0)return n;let r=new Promise((n,r)=>{let i=document.createElement(`script`);i.src=Pt(t),i.async=!0,i.onload=()=>{let i=(window.__GenuiAssets__??{})[e.replace(/-(\w)/g,(e,t)=>t.toUpperCase())];if(i===void 0){r(Error(`genui asset '${t}' loaded but registered no '${e}' engine`));return}n(i)},i.onerror=()=>{r(Error(`genui asset '${t}' failed to load (host asset route missing?)`))},document.head.appendChild(i)});return Rt.set(t,r),r}var It,Lt,Rt,zt=l((()=>{It=`@changfenhuang/dsh-genui`,Lt=`/plugins/${It}/assets`,Rt=new Map}));function Bt(e){if(Ut.test(e))throw Error(`mermaid output failed the sanitization check; refusing to render`)}function Vt(e){let t=/^([A-Za-z]+)/.exec(e.trim())?.[1]??``;if(t!==`graph`&&t!==`flowchart`)return e;let n=e.replace(/`/g,``).replace(/<br\s*\/?>/gi,` `),r=/(--|==|-\.)(?!>)[ \t]*([^-\n]|-(?!--))*?[ \t]*(-->|==>|\.->)/g,i=[],a=n.replace(r,e=>(i.push(e),`\uE000${i.length-1}\uE001`)),o=/\|([^|\n]*[\[\]][^|\n]*)\|/g,s=[];return a.replace(o,(e,t)=>{let n=t.trim();return n.includes(`"`)?e:(s.push(n),`\uE002${s.length-1}\uE003`)}).replace(/([\[\(])([^\[\]\(\)\{\}"'\n]*)([\]\)])/g,(e,t,n,r)=>{let i=n.trim();return i===``?e:/[\u4e00-\u9fff\u3040-\u30ff\uac00-\ud7af]/.test(i)||/\s/.test(i)?`${t}"${i}"${r}`:e}).replace(/\uE000(\d+)\uE001/g,(e,t)=>i[Number(t)]??e).replace(/\uE002(\d+)\uE003/g,(e,t)=>{let n=s[Number(t)];return n===void 0?e:`|"${n}"|`})}function Ht(e){let t=e.trim(),n=/^([A-Za-z]+)/.exec(t)?.[1]??``;return n===`graph`||n===`flowchart`||!Wt.test(t)?e:`graph TD\n${t}`}var Ut,Wt,Gt=l((()=>{Ut=/<script|[\s"']on[a-z]+\s*=|javascript:/i,Wt=/-->(?!>)|==>|-\.->/})),Kt=u({assertSafeSvg:()=>Bt,ensureFlowchartKind:()=>Ht,renderMermaid:()=>qt,repairMermaidSource:()=>Vt});async function qt(e){return(await Ft(`mermaid`)).renderMermaid(e)}var Jt=l((()=>{zt(),Gt()})),Yt=u({mountScene:()=>Xt});async function Xt(e,t){return(await Ft(`three`)).mountScene(e,t)}var Zt=l((()=>{zt()}));let Qt={info:x.calloutInfo,success:x.calloutSuccess,warning:x.calloutWarning,error:x.calloutError},$t=(0,m.memo)(function({node:e}){let t=e.tone??`info`,n=Qt[t]??x.calloutInfo;return(0,g.jsxs)(`div`,{className:`${x.callout} ${n}`,"data-genui-callout":!0,children:[e.title!==void 0&&(0,g.jsx)(`div`,{className:x.calloutTitle,children:B(e.title)}),(0,g.jsx)(`div`,{className:x.calloutBody,children:B(e.content)})]})}),en=(0,m.memo)(function({steps:e}){let t=e.steps.slice(0,M.maxSteps),n=e.current??t.length;return(0,g.jsx)(`ol`,{className:x.steps,children:t.map((e,t)=>{let r=t<n,i=t===n;return(0,g.jsxs)(`li`,{className:`${x.step} ${r?x.stepDone:``} ${i?x.stepActive:``}`,children:[(0,g.jsx)(`span`,{className:x.stepMarker,children:r?`✓`:String(t+1)}),(0,g.jsxs)(`span`,{className:x.stepContent,children:[(0,g.jsx)(`span`,{className:x.stepTitle,children:e.title}),e.desc!==void 0&&(0,g.jsx)(`span`,{className:x.stepDesc,children:e.desc})]})]},t)})})}),tn=(0,m.memo)(function({node:e}){let t=e.pairs.slice(0,M.maxKeyValuePairs);return(0,g.jsx)(`dl`,{className:x.keyvalue,children:t.map((e,t)=>(0,g.jsxs)(`div`,{className:x.kvRow,children:[(0,g.jsx)(`dt`,{className:x.kvKey,children:e.key}),(0,g.jsx)(`dd`,{className:x.kvValue,children:B(e.value)})]},t))})}),nn=(0,m.memo)(function({plot:e}){let t=(0,m.useMemo)(()=>e.series.slice(0,M.maxPlotSeries).map(e=>({expr:e.expr,label:e.label,color:e.color,kind:e.kind,params:e.params})),[e]);return(0,g.jsx)(Nt,{series:t,xMin:e.xMin,xMax:e.xMax,yMin:e.yMin,yMax:e.yMax,title:e.title})}),rn=(0,m.memo)(function({node:e}){return(0,g.jsx)(p.DiffBlock,{diffs:e.diffs,labels:S})}),an=(0,m.memo)(function({node:e}){let t=e.value;return typeof t!=`object`||!t?(0,g.jsx)(`div`,{className:x.jsonScalar,children:String(t)}):(0,g.jsx)(p.JsonTree,{data:t,label:`JSON`,labels:w,copyable:!0})}),on=(0,m.memo)(function({node:e}){return(0,g.jsx)(p.CodeBlock,{...C,code:e.code.slice(0,M.maxCode),lang:e.lang})});function sn({tabs:e,onAction:t,depth:n=0,answers:r}){let[i,a]=(0,m.useState)(0),o=(0,m.useId)(),s=e.tabs.slice(0,M.maxTabs),c=s.length===0?0:Math.min(i,s.length-1),l=s[c];(0,m.useEffect)(()=>{c!==i&&a(c)},[i,c]);let u=e=>{if(s.length===0)return;let t=(e+s.length)%s.length;a(t),document.getElementById(`${o}-tab-${t}`)?.focus()};return(0,g.jsxs)(`div`,{className:x.tabs,children:[(0,g.jsx)(`div`,{className:x.tabBar,role:`tablist`,"aria-orientation":`horizontal`,onKeyDown:e=>{e.key===`ArrowRight`?(e.preventDefault(),u(c+1)):e.key===`ArrowLeft`?(e.preventDefault(),u(c-1)):e.key===`Home`?(e.preventDefault(),u(0)):e.key===`End`&&(e.preventDefault(),u(s.length-1))},children:s.map((e,t)=>(0,g.jsx)(`button`,{id:`${o}-tab-${t}`,type:`button`,role:`tab`,"aria-selected":t===c,"aria-controls":`${o}-panel-${t}`,tabIndex:t===c?0:-1,className:`${x.tab} ${t===c?x.tabActive:``}`,onClick:()=>a(t),children:e.label},t))}),l!==void 0&&(0,g.jsx)(`div`,{className:x.col,role:`tabpanel`,id:`${o}-panel-${c}`,"aria-labelledby":`${o}-tab-${c}`,children:l.items.map((e,i)=>G(e,i,t,n+1,r))})]})}function cn({node:e,onAction:t,depth:n=0,answers:r}){let[i,a]=(0,m.useState)(0),o=(0,m.useId)(),s=e.items.slice(0,M.maxAccordionItems);return(0,g.jsx)(`div`,{className:x.accordion,children:s.map((e,s)=>(0,g.jsxs)(`div`,{className:x.accItem,children:[(0,g.jsxs)(`button`,{type:`button`,className:x.accHead,id:`${o}-head-${s}`,"aria-expanded":i===s,"aria-controls":`${o}-body-${s}`,onClick:()=>a(i===s?null:s),children:[(0,g.jsx)(`span`,{className:x.accTitle,children:e.title}),(0,g.jsx)(`span`,{className:x.accChevron,"data-open":i===s,"aria-hidden":!0,children:`▸`})]}),i===s&&(0,g.jsx)(`div`,{className:x.accBody,id:`${o}-body-${s}`,"aria-labelledby":`${o}-head-${s}`,children:e.items.map((e,i)=>G(e,i,t,n+1,r))})]},s))})}async function ln(e){let t=typeof navigator.clipboard?.writeText==`function`,n=await(0,p.writeClipboard)(e);if(n||!t)return n;let r=typeof document.execCommand==`function`?document.execCommand.bind(document):void 0;if(r===void 0)return!1;let i=document.createElement(`textarea`);i.value=e,i.setAttribute(`readonly`,``),i.style.position=`fixed`,i.style.left=`-9999px`,document.body.appendChild(i),i.select();try{return r(`copy`)}catch{return!1}finally{i.remove()}}let un=(0,m.memo)(function({node:e}){let[t,n]=(0,m.useState)(!1);return(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)(`button`,{type:`button`,className:`${x.copyChip} ${t?x.copyChipDone:``}`,onClick:()=>{ln(e.text).then(e=>{e&&(n(!0),setTimeout(()=>n(!1),1500))})},children:t?`✓ 已复制`:e.label??`复制`}),(0,g.jsx)(`span`,{className:x.visuallyHidden,role:`status`,children:t?`已复制到剪贴板`:``})]})}),dn=(0,m.memo)(function({node:e}){let[t,n]=(0,m.useState)({status:`loading`}),r=e.code.slice(0,M.maxMermaid);return(0,m.useEffect)(()=>{let e=!0;return n({status:`loading`}),(async()=>{try{let t=await(await Promise.resolve().then(()=>(Jt(),Kt))).renderMermaid(r);e&&n({status:`ready`,html:t})}catch{e&&n({status:`error`})}})(),()=>{e=!1}},[r]),t.status===`error`?(0,g.jsxs)(`div`,{className:x.mermaidFallback,children:[(0,g.jsx)(`pre`,{children:r}),(0,g.jsx)(`div`,{className:x.mermaidErr,children:`图语法有误,已降级显示源码`})]}):t.status===`loading`?(0,g.jsxs)(`div`,{className:x.mermaidFallback,children:[(0,g.jsx)(`pre`,{children:r}),(0,g.jsx)(`div`,{className:x.mermaidHint,children:`渲染中…`})]}):(0,g.jsx)(`div`,{className:x.mermaid,dangerouslySetInnerHTML:{__html:t.html},"data-genui-mermaid":!0})}),fn=(0,m.memo)(function({node:e}){let[t,n]=(0,m.useState)(`loading`),r=(0,m.useRef)(null),i=e.meshes.length>M.maxMeshes?{...e,meshes:e.meshes.slice(0,M.maxMeshes)}:e;return(0,m.useEffect)(()=>{let e=!0,t;return Promise.resolve().then(()=>(Zt(),Yt)).then(async a=>{if(!(!e||r.current===null))try{t=await a.mountScene(r.current,i),e&&n(`ready`)}catch{e&&n(`error`)}}),()=>{e=!1,t?.()}},[i]),(0,g.jsxs)(`div`,{className:x.scene3dWrap,"data-genui-scene3d":!0,children:[e.title!==void 0&&(0,g.jsx)(`div`,{className:x.scene3dTitle,children:e.title}),(0,g.jsx)(`div`,{ref:r,className:x.scene3dCanvas}),t===`loading`&&(0,g.jsx)(`div`,{className:x.scene3dHint,children:`加载 3D 场景…`}),t===`error`&&(0,g.jsx)(`div`,{className:x.scene3dHint,children:`3D 渲染失败`})]})}),pn=(0,m.memo)(function({node:e}){let t=e.items.slice(0,M.maxTimelineItems);return(0,g.jsx)(`div`,{className:x.timeline,children:t.map((e,n)=>(0,g.jsxs)(`div`,{className:x.tlItem,children:[(0,g.jsxs)(`div`,{className:x.tlRail,children:[(0,g.jsx)(`span`,{className:x.tlDot}),n<t.length-1&&(0,g.jsx)(`span`,{className:x.tlLine})]}),(0,g.jsxs)(`div`,{className:x.tlBody,children:[(0,g.jsxs)(`div`,{className:x.tlHead,children:[(0,g.jsx)(`span`,{className:x.tlTitle,children:e.title}),e.time!==void 0&&(0,g.jsx)(`span`,{className:x.tlTime,children:e.time})]}),e.desc!==void 0&&(0,g.jsx)(`div`,{className:x.tlDesc,children:e.desc})]})]},n))})});function mn(){return(0,g.jsx)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 16 16`,"aria-hidden":`true`,focusable:`false`,children:(0,g.jsx)(`path`,{d:`M1.6 3.4h4.1l1.3 1.7h7.4v7.2a1 1 0 0 1-1 1H2.6a1 1 0 0 1-1-1z`,fill:`currentColor`,opacity:`0.85`})})}function hn(){return(0,g.jsxs)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 16 16`,"aria-hidden":`true`,focusable:`false`,children:[(0,g.jsx)(`path`,{d:`M3.8 1.6h4.9L13 5.9v8.5a1 1 0 0 1-1 1H4.8a1 1 0 0 1-1-1z`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.2`}),(0,g.jsx)(`path`,{d:`M8.7 1.7v4.3h4.2`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.2`})]})}let gn=(0,m.memo)(function({node:e}){let[t,n]=(0,m.useState)(new Set),r=e=>{n(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},i=(e,n,a)=>{if(n>M.maxTreeDepth)return null;let o=e.type===`dir`||e.children!==void 0&&e.children.length>0,s=o&&t.has(a);return(0,g.jsxs)(`div`,{children:[(0,g.jsxs)(`div`,{className:x.ftRow,style:{paddingLeft:`${n*14+4}px`},children:[Array.from({length:n},(e,t)=>(0,g.jsx)(`span`,{className:x.ftGuide,style:{left:`${4+t*14+6}px`},"aria-hidden":!0},t)),(0,g.jsxs)(`button`,{type:`button`,className:x.ftNameBtn,"aria-expanded":o?!s:void 0,onClick:o?()=>r(a):void 0,children:[(0,g.jsx)(`span`,{className:x.ftChevron,"data-open":o?String(!s):void 0,"aria-hidden":!0,children:o?`▸`:``}),(0,g.jsx)(`span`,{className:`${x.ftGlyph} ${o?x.ftGlyphDir:``}`,"aria-hidden":!0,children:o?(0,g.jsx)(mn,{}):(0,g.jsx)(hn,{})}),(0,g.jsx)(`span`,{className:`${x.ftName} ${o?x.ftDir:``}`,children:e.name})]})]}),o&&!s&&(0,g.jsx)(`div`,{className:x.ftChildren,children:(e.children??[]).map((e,t)=>i(e,n+1,`${a}/${t}`))})]},a)};return(0,g.jsx)(`div`,{className:x.fileTree,children:e.items.slice(0,M.maxListItems).map((e,t)=>i(e,0,String(t)))})}),_n=(0,m.memo)(function({node:e,onAction:t}){let[n,r]=(0,m.useState)(null),i=e.options.slice(0,M.maxQuizOptions),a=n!==null,o=n===null?void 0:i[n],s=o?.correct===!0,c=e.action;return(0,g.jsxs)(`div`,{className:x.quiz,"data-genui-quiz":!0,children:[(0,g.jsx)(`div`,{className:x.quizQuestion,children:e.question}),(0,g.jsx)(`div`,{className:x.quizOptions,children:i.map((i,o)=>{let s=n===o,l=a?s?i.correct===!0?x.quizOptCorrect:x.quizOptWrong:i.correct===!0?x.quizOptReveal:x.quizOpt:x.quizOpt;return(0,g.jsxs)(`button`,{type:`button`,className:l,disabled:a,onClick:()=>{r(o),c!==void 0&&t!==void 0&&t(c,{type:`quiz`,question:e.question,answer:i.label,correct:i.correct===!0})},children:[(0,g.jsx)(`span`,{className:x.quizMarker,children:a?i.correct===!0?`✓`:s?`✗`:``:s?`●`:`○`}),i.label]},o)})}),a&&(0,g.jsxs)(`div`,{className:x.quizResult,"aria-live":`polite`,children:[(0,g.jsxs)(`div`,{className:s?x.quizCorrectMsg:x.quizWrongMsg,children:[s?`✓ 回答正确!`:`✗ 再想想看`,o?.feedback!==void 0&&(0,g.jsx)(`div`,{className:x.quizFeedback,children:o.feedback})]}),e.explanation!==void 0&&(0,g.jsx)(`div`,{className:x.quizExplanation,children:e.explanation}),(0,g.jsx)(`button`,{type:`button`,className:x.quizRetry,onClick:()=>r(null),children:`重新作答`})]})]})}),vn=(0,m.memo)(function({node:e}){let t=e.items.slice(0,M.maxBreadcrumbItems);return(0,g.jsx)(`nav`,{className:x.breadcrumb,"aria-label":`breadcrumb`,children:t.map((e,n)=>(0,g.jsxs)(`span`,{className:x.bcItem,children:[(0,g.jsx)(`span`,{className:`${x.bcText} ${n===t.length-1?x.bcCurrent:``}`,children:e}),n<t.length-1&&(0,g.jsx)(`span`,{className:x.bcSep,children:`/`})]},n))})}),yn=[`architecture`,`it-state`,`high-level`,`process`,`medallion`,`data-flow`,`dp-integration`];function bn(e){return yn.includes(e)}function xn(e,t){let n=e%t,r=Math.floor(e/t);return{x:40+n*160,y:40+r*96,w:128,h:64}}function Sn(e){return e.map((e,t)=>({node:e,box:{x:40,y:40+t*96,w:128,h:64}}))}function Cn(e){return e.map((e,t)=>({node:e,box:{x:40+t*160,y:40,w:128,h:64}}))}function wn(e,t=3){return e.map((e,n)=>{let r=Math.floor(n/t);return{node:e,box:{x:40+n%t*160,y:40+r*96,w:128,h:64}}})}function Tn(e,t){let n=new Map(e.map(e=>[e.id,e])),r=new Map,i=[];for(let a of e){let e=t(a.id);if(e===void 0||!n.has(e))i.push(a.id);else{let t=r.get(e)??[];t.push(a.id),r.set(e,t)}}let a=new Map,o=new Map,s=(e,t)=>{let n=o.get(e)??0,i=r.get(e)??[],c=t;if(i.length===0)return a.set(e,{x:t,y:40+n*112,w:128,h:64}),t+128;for(let e of i)c=s(e,c);let l=a.get(i[0]),u=a.get(i[i.length-1]),d=(l.x+u.x+u.w)/2-64;return a.set(e,{x:Math.max(t,d),y:40+n*112,w:128,h:64}),c},c=40;for(let e of i)c=s(e,c)+32;return e.map(e=>({node:e,box:a.get(e.id)??{x:40,y:40,w:128,h:64}}))}function En(e,t){let n=e.nodes,r=e.edges??[],i;i=bn(e.kind)?n.map((e,t)=>({node:e,box:{x:e.x??40+t%3*160,y:e.y??40+Math.floor(t/3)*96,w:e.w??128,h:e.h??64}})):e.kind===`tree`||e.kind===`org-chart`||e.kind===`nested`?Tn(n,t??(()=>void 0)):e.kind===`layers`||e.kind===`pyramid`||e.kind===`gantt`?wn(n):e.kind===`flowchart`||e.kind===`process`||e.kind===`sequence`?Sn(n):e.kind===`timeline`||e.kind===`line`||e.kind===`scatter`||e.kind===`bar`?Cn(n):n.map((e,t)=>({node:e,box:xn(t,3)}));let a=0,o=0;for(let e of i)a=Math.max(a,e.box.x+e.box.w),o=Math.max(o,e.box.y+e.box.h);a=Math.max(320,Math.ceil((a+40)/4)*4),o=Math.max(200,Math.ceil((o+40)/4)*4);let s=r.map(e=>({edge:e,fromId:e.from,toId:e.to}));return{nodes:i,edges:s,width:a,height:o}}function Dn(e){return{x:e.x+e.w/2,y:e.y+e.h/2}}function On(e,t,n){if(n===`left`)return{x:e.x,y:e.y+e.h/2,port:`left`};if(n===`right`)return{x:e.x+e.w,y:e.y+e.h/2,port:`right`};if(n===`top`)return{x:e.x+e.w/2,y:e.y,port:`top`};if(n===`bottom`)return{x:e.x+e.w/2,y:e.y+e.h,port:`bottom`};let r=Dn(e),i=Dn(t),a=i.x-r.x,o=i.y-r.y;return Math.abs(a)>=Math.abs(o)?a>=0?{x:e.x+e.w,y:e.y+e.h/2,port:`right`}:{x:e.x,y:e.y+e.h/2,port:`left`}:o>=0?{x:e.x+e.w/2,y:e.y+e.h,port:`bottom`}:{x:e.x+e.w/2,y:e.y,port:`top`}}function kn(e,t){if(e.x===t.x||e.y===t.y)return`M ${e.x} ${e.y} L ${t.x} ${t.y}`;let n=e.port===`left`||e.port===`right`,r=t.port===`left`||t.port===`right`;if(n&&r){let n=(e.x+t.x)/2,r=e.port===`right`?1:-1;return`M ${e.x} ${e.y} H ${n-r*8} Q ${n} ${e.y} ${n} ${e.y+8} V ${t.y-8} Q ${n} ${t.y} ${n+8} ${t.y} H ${t.x}`}if(!n&&!r){let n=(e.y+t.y)/2,r=e.port===`bottom`?1:-1;return`M ${e.x} ${e.y} V ${n-r*8} Q ${e.x} ${n} ${e.x+8} ${n} H ${t.x-8} Q ${t.x} ${n} ${t.x} ${n+8} V ${t.y}`}if(n){let n=e.port===`right`?1:-1;return`M ${e.x} ${e.y} H ${e.x+n*8*2} Q ${e.x+n*8*2} ${e.y} ${e.x+n*8*2} ${t.y} V ${t.y} H ${t.x}`}let i=e.port===`bottom`?1:-1;return`M ${e.x} ${e.y} V ${e.y+i*8*2} Q ${e.x} ${e.y+i*8*2} ${t.x} ${e.y+i*8*2} H ${t.x} V ${t.y}`}function An(e,t,n){let r=On(e,t,n?.fromPort),i=On(t,e,n?.toPort);return{d:kn(r,i),a:r,b:i}}function jn(e,t){let n=(e.x+t.x)/2,r=(e.y+t.y)/2,i=Math.abs(e.x-t.x)<Math.abs(e.y-t.y);return i?{cx:n+(t.x>=e.x?1:-1)*16,cy:r,maskY:r-6,vertical:i}:{cx:n,cy:r,maskY:r-20,vertical:i}}let Mn={paper:`#f5f5f5`,paper2:`#ececec`,ink:`#2d3142`,muted:`#4f5d75`,soft:`#7a8399`,rule:`rgba(45,49,66,0.12)`,accent:`#eb6c36`,accentTint:`rgba(235,108,54,0.08)`,link:`#2e5aa8`},Nn={paper:`#2d3142`,paper2:`#393e53`,ink:`#f5f5f5`,muted:`#bfc0c0`,soft:`#8e98ac`,rule:`rgba(245,245,245,0.12)`,accent:`#f08a59`,accentTint:`rgba(240,138,89,0.10)`,link:`#6a95d8`};function Pn(e,t){let n=e===`dark`?Nn:Mn;return t===void 0?n:{paper:t.paper??n.paper,paper2:t[`paper-2`]??n.paper2,ink:t.ink??n.ink,muted:t.muted??n.muted,soft:t.soft??n.soft,rule:t.rule??n.rule,accent:t.accent??n.accent,accentTint:t[`accent-tint`]??n.accentTint,link:t.link??n.link}}function Fn(e,t){switch(e){case`focal`:return{fill:t.accentTint,stroke:t.accent};case`store`:return{fill:U(t.ink,.05),stroke:t.muted};case`external`:return{fill:U(t.ink,.03),stroke:U(t.ink,.3)};case`input`:return{fill:U(t.muted,.1),stroke:t.soft};case`optional`:return{fill:U(t.ink,.02),stroke:U(t.ink,.2),dashed:!0};case`security`:return{fill:U(t.accent,.05),stroke:U(t.accent,.5),dashed:!0};default:return{fill:`#ffffff`,stroke:t.ink}}}function In(e,t){switch(e){case`accent`:return t.accent;case`link`:return t.link;default:return t.muted}}function U(e,t){if(e.startsWith(`#`)){let n=e.slice(1),r=n.length===3?n.split(``).map(e=>e+e).join(``):n;return`rgba(${parseInt(r.slice(0,2),16)},${parseInt(r.slice(2,4),16)},${parseInt(r.slice(4,6),16)},${t})`}return e.replace(/rgba?\(([^)]*)\)/,(n,r)=>{let i=r.split(`,`).map(e=>e.trim());return i.length===3?`rgba(${i.join(`,`)},${t})`:i.length===4?`rgba(${i[0]},${i[1]},${i[2]},${t})`:e})}let Ln=`'Geist', -apple-system, 'Segoe UI', sans-serif`,Rn=`'Geist Mono', ui-monospace, 'SF Mono', monospace`;function zn(e){let t=new Map;for(let n of e)t.has(n.to)||t.set(n.to,n.from);return e=>t.get(e)}function Bn(e,t,n,r,i,a,o){let s=Fn(r,o),c=e.x+e.w/2,l=e.y+(e.h-64)/2+28,u=e.y+(e.h-64)/2+44,d=Math.min(44,Math.max(24,(i??``).length*7+8));return(0,g.jsxs)(`g`,{children:[(0,g.jsx)(`rect`,{x:e.x,y:e.y,width:e.w,height:e.h,rx:6,fill:o.paper}),(0,g.jsx)(`rect`,{x:e.x,y:e.y,width:e.w,height:e.h,rx:6,fill:s.fill,stroke:s.stroke,strokeWidth:1,strokeDasharray:s.dashed===!0?`5,4`:void 0}),i!==void 0&&(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)(`rect`,{x:e.x+8,y:e.y+6,width:d,height:12,rx:2,fill:`transparent`,stroke:U(s.stroke,.4),strokeWidth:.8}),(0,g.jsx)(`text`,{x:e.x+8+d/2,y:e.y+15,fill:U(s.stroke,.8),fontSize:7,fontFamily:Rn,textAnchor:`middle`,letterSpacing:.8,children:i})]}),(0,g.jsx)(`text`,{x:e.x+e.w-6,y:e.y+e.h-6,fill:U(s.stroke,.12),fontSize:24,fontWeight:600,fontFamily:Rn,textAnchor:`end`,children:String(a).padStart(2,`0`)}),(0,g.jsx)(`text`,{x:c,y:l,fill:o.ink,fontSize:12,fontWeight:600,fontFamily:Ln,textAnchor:`middle`,children:t}),n!==void 0&&(0,g.jsx)(`text`,{x:c,y:u,fill:o.soft,fontSize:9,fontFamily:Rn,textAnchor:`middle`,children:n})]})}function Vn(e,t,n,r){let i=An(e.from,e.to),a=In(e.kind,n),o=e.kind===`dashed`,s=e.kind===`accent`?1.4:1.2,c=jn(i.a,i.b);return(0,g.jsxs)(`g`,{children:[(0,g.jsx)(`path`,{d:i.d,fill:`none`,stroke:a,strokeWidth:s,strokeDasharray:o?`5,4`:void 0,markerEnd:`url(#${r})`}),e.label!==void 0&&(0,g.jsxs)(`g`,{children:[(0,g.jsx)(`rect`,{x:c.cx-(e.label.length*5+8)/2,y:c.maskY,width:e.label.length*5+8,height:12,rx:2,fill:n.paper}),(0,g.jsx)(`text`,{x:c.cx,y:c.maskY+9,fill:n.soft,fontSize:8,fontFamily:Rn,textAnchor:`middle`,letterSpacing:.5,children:e.label})]})]},t)}function Hn(e,t){return(0,g.jsxs)(`defs`,{children:[(0,g.jsx)(`marker`,{id:`${e}-arrow`,markerWidth:8,markerHeight:6,refX:7,refY:3,orient:`auto`,children:(0,g.jsx)(`polygon`,{points:`0 0, 8 3, 0 6`,fill:t.muted})}),(0,g.jsx)(`marker`,{id:`${e}-arrow-accent`,markerWidth:8,markerHeight:6,refX:7,refY:3,orient:`auto`,children:(0,g.jsx)(`polygon`,{points:`0 0, 8 3, 0 6`,fill:t.accent})}),(0,g.jsx)(`marker`,{id:`${e}-arrow-link`,markerWidth:8,markerHeight:6,refX:7,refY:3,orient:`auto`,children:(0,g.jsx)(`polygon`,{points:`0 0, 8 3, 0 6`,fill:t.link})})]})}function Un(e,t){return(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)(`defs`,{children:(0,g.jsx)(`pattern`,{id:`${e}-dots`,width:22,height:22,patternUnits:`userSpaceOnUse`,children:(0,g.jsx)(`circle`,{cx:1,cy:1,r:.9,fill:U(t.ink,.1)})})}),(0,g.jsx)(`rect`,{width:`100%`,height:`100%`,fill:t.paper}),(0,g.jsx)(`rect`,{width:`100%`,height:`100%`,fill:`url(#${e}-dots)`,opacity:.55})]})}function Wn(e,t){let n=e.label.length*7+12,r=e.x+e.w/2;return(0,g.jsxs)(`g`,{children:[(0,g.jsx)(`rect`,{x:e.x,y:e.y,width:e.w,height:e.h,rx:8,fill:U(t.ink,.02),stroke:U(t.ink,.1),strokeWidth:.8}),(0,g.jsx)(`rect`,{x:r-n/2,y:e.y+4,width:n,height:12,rx:2,fill:t.paper}),(0,g.jsx)(`text`,{x:r,y:e.y+13,fill:U(t.ink,.4),fontSize:7,fontFamily:Rn,textAnchor:`middle`,letterSpacing:1.2,children:e.label})]})}function Gn(e){return(0,g.jsxs)(`g`,{children:[(0,g.jsx)(`line`,{x1:40,y1:0,x2:1e3,y2:0,stroke:U(e.ink,.1),strokeWidth:.8}),(0,g.jsx)(`text`,{x:40,y:16,fill:e.soft,fontSize:8,fontFamily:Rn,letterSpacing:1.6,children:`LEGEND`}),[{label:`Focal`,type:`focal`},{label:`Backend`,type:`backend`},{label:`Store`,type:`store`},{label:`External`,type:`external`},{label:`Optional`,type:`optional`},{label:`Security`,type:`security`}].map((t,n)=>{let r=Fn(t.type,e),i=40+n*170;return(0,g.jsxs)(`g`,{children:[(0,g.jsx)(`rect`,{x:i,y:32,width:14,height:10,rx:2,fill:r.fill,stroke:r.stroke,strokeWidth:1,strokeDasharray:r.dashed===!0?`3,2`:void 0}),(0,g.jsx)(`text`,{x:i+20,y:41,fill:e.soft,fontSize:8.5,fontFamily:Ln,children:t.label})]},t.label)})]})}function Kn(e,t){return e===`accent`?`${t}-arrow-accent`:e===`link`?`${t}-arrow-link`:`${t}-arrow`}let qn=0;function Jn(){return qn+=1,`genui-diagram-${qn}`}function Yn({node:e}){let t=(0,m.useMemo)(Jn,[]),n=(0,m.useMemo)(()=>Pn(e.variant,e.theme),[e.variant,e.theme]),r=(0,m.useMemo)(()=>En(e,zn(e.edges??[])),[e]),i=(0,m.useMemo)(()=>new Map(r.nodes.map(e=>[e.node.id,e.box])),[r]),a=`${t}-title`,o=`${t}-caption`,s=`${t}-desc`,c=r.nodes.slice(0,M.maxDiagramNodes),l=r.edges.slice(0,M.maxDiagramEdges),u=(e.zones??[]).slice(0,M.maxDiagramZones),d=0,f=M.maxDiagramFocal,p=r.height,h=p+56+24;return(0,g.jsxs)(`figure`,{className:`genui-diagram`,"data-genui-diagram":!0,children:[e.title!==void 0&&(0,g.jsx)(`figcaption`,{id:o,style:{fontFamily:`Instrument Serif, 'Times New Roman', serif`,fontSize:20,marginBottom:8,color:n.ink},children:e.title}),(0,g.jsxs)(`svg`,{role:`img`,"aria-labelledby":a,"aria-describedby":s,viewBox:`0 0 ${r.width} ${h}`,style:{maxWidth:`100%`,height:`auto`,background:n.paper},children:[(0,g.jsx)(`title`,{id:a,children:e.title??e.kind}),(0,g.jsx)(`desc`,{id:s,children:`${e.kind} diagram with ${c.length} nodes and ${l.length} connectors`}),Hn(t,n),Un(t,n),(0,g.jsx)(`g`,{children:u.map((e,t)=>(0,g.jsx)(`g`,{children:Wn({label:e.label,x:e.x??0,y:e.y??0,w:e.w??100,h:e.h??100},n)},`zone-${t}`))}),(0,g.jsx)(`g`,{children:l.map((e,r)=>{let a=i.get(e.fromId),o=i.get(e.toId);return a===void 0||o===void 0?null:Vn({from:a,to:o,label:e.edge.label,kind:e.edge.kind},r,n,Kn(e.edge.kind,t))})}),(0,g.jsx)(`g`,{children:c.map((e,t)=>{let r=e.node.type===`focal`&&d>=f?void 0:e.node.type;return e.node.type===`focal`&&(d+=1),(0,g.jsx)(`g`,{children:Bn(e.box,e.node.label,e.node.sub,r,e.node.tag,t+1,n)},e.node.id)})}),(0,g.jsx)(`g`,{transform:`translate(0, ${p+8})`,children:Gn(n)})]})]})}function Xn({node:e}){let[t,n]=(0,m.useState)(!1);return(0,g.jsxs)(`figure`,{className:x.media,children:[e.alt!==void 0&&(0,g.jsx)(`figcaption`,{className:x.mediaLabel,children:e.alt}),t?(0,g.jsx)(`div`,{className:x.mediaError,role:`alert`,children:`图片无法加载`}):(0,g.jsx)(`img`,{className:x.mediaPlayer,src:e.src,alt:e.alt??`图片`,loading:`lazy`,decoding:`async`,style:{maxHeight:`min(70vh, 720px)`,objectFit:`contain`},onError:()=>n(!0)})]})}zt();async function Zn(e,t,n,r=`core`){return(await Ft(r===`full`?`echarts-full`:`echarts-core`)).createChart(e,t,n)}let Qn=new Set([`bar`,`line`,`area`,`pie`,`scatter`,`bigline`]);function $n(e){return e.option===void 0&&Qn.has(e.preset??`bar`)?`core`:`full`}let er=[`#679efe`,`#4ed17e`,`#f5b83d`,`#f2707a`,`#8b7ff0`,`#3fc7d4`,`#b7c8fe`,`#9aa3b2`];function W(e,t,n){let r=[n??null,typeof document>`u`?null:document.body,typeof document>`u`?null:document.documentElement];for(let t of r){if(t===null)continue;let n=getComputedStyle(t).getPropertyValue(e).trim();if(n!==``)return n}return t}function tr(e){return{accent:W(`--dsw-alias-state-business-primary`,`#4f8ef7`,e),labelPrimary:W(`--dsw-alias-label-primary`,`#e6e6e6`,e),labelSecondary:W(`--dsw-alias-label-secondary`,`#a0a0a0`,e),labelTertiary:W(`--dsw-alias-label-tertiary`,`#6b6b6b`,e),border:W(`--dsw-alias-border-l1`,`rgba(255,255,255,0.12)`,e),bgLayer1:W(`--dsw-alias-bg-layer-1`,`#1a1a1e`,e)}}function nr(e,t){let n=tr(t),r=e.palette!==void 0&&e.palette.length>0?[...e.palette]:Ve.map((e,n)=>W(e.replace(`var(`,``).replace(`)`,``),er[n%er.length],t)),i=e.data??[],a=e.series,o=(e={})=>({renderMode:`richText`,backgroundColor:n.bgLayer1,borderColor:n.border,textStyle:{color:n.labelPrimary},...e}),s={color:r,textStyle:{color:n.labelSecondary,fontFamily:`inherit`},backgroundColor:`transparent`,grid:{left:48,right:16,top:24,bottom:32},tooltip:o({trigger:`item`})};switch(e.preset){case`pie`:return{...s,tooltip:o({trigger:`item`,formatter:`{b}: {c} ({d}%)`}),legend:{bottom:0,textStyle:{color:n.labelTertiary}},series:[{type:`pie`,radius:[`40%`,`70%`],avoidLabelOverlap:!0,itemStyle:{borderRadius:6,borderColor:n.bgLayer1,borderWidth:2},label:{color:n.labelSecondary},data:i.map(e=>({name:e.label,value:e.value}))}]};case`scatter`:return{...s,tooltip:o({trigger:`item`}),xAxis:{type:`category`,data:i.map(e=>e.label),axisLine:{lineStyle:{color:n.border}},axisLabel:{color:n.labelTertiary},splitLine:{lineStyle:{color:n.border,opacity:.5}}},yAxis:{type:`value`,axisLine:{lineStyle:{color:n.border}},axisLabel:{color:n.labelTertiary},splitLine:{lineStyle:{color:n.border,opacity:.5}}},series:[{type:`scatter`,symbolSize:10,data:i.map(e=>e.value)}]};case`area`:return{...s,tooltip:o({trigger:`axis`}),xAxis:{type:`category`,data:i.map(e=>e.label),axisLine:{lineStyle:{color:n.border}},axisLabel:{color:n.labelTertiary}},yAxis:{type:`value`,axisLine:{lineStyle:{color:n.border}},axisLabel:{color:n.labelTertiary},splitLine:{lineStyle:{color:n.border,opacity:.5}}},series:(a??[{label:``,data:i}]).map((e,t)=>({name:e.label,type:`line`,smooth:!0,areaStyle:{opacity:.15},data:e.data.map(e=>e.value),...rr(e.color,t,a)})),legend:a===void 0?void 0:{bottom:0,textStyle:{color:n.labelTertiary}}};case`line`:return{...s,tooltip:o({trigger:`axis`}),xAxis:{type:`category`,data:i.map(e=>e.label),axisLine:{lineStyle:{color:n.border}},axisLabel:{color:n.labelTertiary}},yAxis:{type:`value`,axisLine:{lineStyle:{color:n.border}},axisLabel:{color:n.labelTertiary},splitLine:{lineStyle:{color:n.border,opacity:.5}}},series:(a??[{label:``,data:i}]).map((e,t)=>({name:e.label,type:`line`,smooth:!0,showSymbol:!0,symbolSize:6,data:e.data.map(e=>e.value),...rr(e.color,t,a)})),legend:a===void 0?void 0:{bottom:0,textStyle:{color:n.labelTertiary}}};case`radar`:{let e=a??[{label:``,data:i}],t=(e[0]?.data??[]).map(e=>({name:e.label,max:void 0})),r=Math.max(...e.flatMap(e=>e.data.map(e=>Number(e.value)||0)),1);return{...s,tooltip:o({trigger:`item`}),legend:{bottom:0,textStyle:{color:n.labelTertiary}},radar:{indicator:t.map(e=>({name:e.name,max:Math.ceil(r*1.1)})),splitLine:{lineStyle:{color:n.border}},splitArea:{show:!1},axisLine:{lineStyle:{color:n.border}},axisName:{color:n.labelTertiary}},series:[{type:`radar`,symbolSize:5,areaStyle:{opacity:.12},data:e.map((e,t)=>({name:e.label,value:e.data.map(e=>Number(e.value)||0),...rr(e.color,t,a)}))}]}}case`gauge`:return{...s,tooltip:o({trigger:`item`}),series:i.slice(0,4).map((e,t)=>({type:`gauge`,startAngle:210,endAngle:-30,min:0,max:Math.max(Number(e.value)||0,100),center:i.length>1?[`${(t+.5)*(100/Math.min(i.length,4))}%`,`58%`]:[`50%`,`58%`],radius:i.length>1?`62%`:`82%`,progress:{show:!0,width:12},axisLine:{lineStyle:{width:12,color:[[1,n.border]]}},axisTick:{show:!1},splitLine:{show:!1},axisLabel:{show:!1},pointer:{show:!1},title:{offsetCenter:[0,`32%`],color:n.labelTertiary,fontSize:12},detail:{valueAnimation:!0,fontSize:26,offsetCenter:[0,`2%`],formatter:`{value}`,color:n.labelPrimary},data:[{value:Number(e.value)||0,name:e.label}]}))};case`funnel`:return{...s,tooltip:o({trigger:`item`,formatter:`{b}: {c}`}),legend:{bottom:0,textStyle:{color:n.labelTertiary}},series:[{type:`funnel`,left:`8%`,width:`84%`,top:16,bottom:40,gap:2,label:{position:`inside`,color:`#fff`,formatter:`{b} {c}`},itemStyle:{borderWidth:0},data:i.map(e=>({name:e.label,value:Number(e.value)||0}))}]};case`treemap`:return{...s,tooltip:o({trigger:`item`,formatter:`{b}: {c}`}),series:[{type:`treemap`,roam:!1,nodeClick:!1,breadcrumb:{show:!1},upperLabel:{show:!1},label:{color:n.labelPrimary},itemStyle:{borderColor:n.bgLayer1,borderWidth:2,gapWidth:2},data:i.map(e=>({name:e.label,value:Number(e.value)||0}))}]};case`sankey`:{let t=e.links??[],r=i.length>0?i.map(e=>e.label):[...new Set(t.flatMap(e=>[e.from,e.to]))];return{...s,tooltip:o({trigger:`item`}),series:[{type:`sankey`,left:8,right:8,top:12,bottom:12,nodeGap:12,lineStyle:{color:`gradient`,curveness:.5,opacity:.32},label:{color:n.labelSecondary},emphasis:{focus:`adjacency`},data:r.map(e=>({name:e})),links:t.map(e=>({source:e.from,target:e.to,value:e.value??1}))}]}}case`graph`:{let t=e.links??[],r=i.length>0?i.map(e=>e.label):[...new Set(t.flatMap(e=>[e.from,e.to]))],a=new Map;for(let e of t)a.set(e.from,(a.get(e.from)??0)+1),a.set(e.to,(a.get(e.to)??0)+1);return{...s,tooltip:o({trigger:`item`}),series:[{type:`graph`,layout:`force`,roam:!0,label:{show:!0,color:n.labelSecondary,fontSize:11},force:{repulsion:200,edgeLength:80},lineStyle:{color:n.border,curveness:.1},emphasis:{focus:`adjacency`},data:r.map(e=>({name:e,symbolSize:16+(a.get(e)??0)*5})),links:t.map(e=>({source:e.from,target:e.to}))}]}}case`heatmap`:{let e=a??[{label:``,data:i}],t=(e[0]?.data??[]).map(e=>e.label),r=e.flatMap((e,t)=>e.data.map((e,n)=>[n,t,Number(e.value)||0])),c=Math.max(...r.map(e=>e[2]),1);return{...s,tooltip:o({trigger:`item`,position:`top`}),grid:{left:64,right:16,top:16,bottom:48},xAxis:{type:`category`,data:t,splitArea:{show:!1},axisLabel:{color:n.labelTertiary},axisLine:{lineStyle:{color:n.border}}},yAxis:{type:`category`,data:e.map(e=>e.label),splitArea:{show:!1},axisLabel:{color:n.labelTertiary},axisLine:{lineStyle:{color:n.border}}},visualMap:{min:0,max:c,calculable:!0,orient:`horizontal`,left:`center`,bottom:0,textStyle:{color:n.labelTertiary}},series:[{type:`heatmap`,data:r,label:{show:r.length<=60,color:n.labelPrimary},itemStyle:{borderColor:n.bgLayer1,borderWidth:2}}]}}case`bigline`:return{...s,tooltip:o({trigger:`axis`}),grid:{left:48,right:20,top:24,bottom:56},dataZoom:[{type:`inside`,start:0,end:45},{type:`slider`,height:16,bottom:8,borderColor:n.border,textStyle:{color:n.labelTertiary}}],xAxis:{type:`category`,boundaryGap:!1,data:i.map(e=>e.label),axisLabel:{color:n.labelTertiary},axisLine:{lineStyle:{color:n.border}}},yAxis:{type:`value`,axisLabel:{color:n.labelTertiary},splitLine:{lineStyle:{color:n.border,opacity:.5}}},series:(a??[{label:``,data:i}]).map((e,t)=>({name:e.label,type:`line`,smooth:!0,showSymbol:!1,areaStyle:{opacity:.12},data:e.data.map(e=>e.value),...rr(e.color,t,a)})),legend:a===void 0?void 0:{bottom:26,textStyle:{color:n.labelTertiary}}};default:return{...s,tooltip:o({trigger:`axis`,axisPointer:{type:`shadow`}}),xAxis:{type:`category`,data:i.map(e=>e.label),axisLine:{lineStyle:{color:n.border}},axisLabel:{color:n.labelTertiary}},yAxis:{type:`value`,axisLine:{lineStyle:{color:n.border}},axisLabel:{color:n.labelTertiary},splitLine:{lineStyle:{color:n.border,opacity:.5}}},series:(a??[{label:``,data:i}]).map(e=>({name:e.label,type:`bar`,barMaxWidth:40,itemStyle:{borderRadius:[4,4,2,2],...e.color===void 0?{}:{color:e.color}},data:e.data.map(e=>e.value)})),legend:a===void 0?void 0:{bottom:0,textStyle:{color:n.labelTertiary}}}}}function rr(e,t,n){return e===void 0?{}:{itemStyle:{color:e}}}function ir({node:e}){let t=(0,m.useRef)(null),[n,r]=(0,m.useState)(`loading`),i=(0,m.useRef)(null);return(0,m.useEffect)(()=>{let n=!0,a=t.current;return a===null?void 0:(Zn(a,e.option??nr(e,a),{height:e.height??300},$n(e)).then(e=>{if(!n){e.dispose();return}i.current=e,r(`ready`)}).catch(()=>{n&&r(`error`)}),()=>{n=!1,i.current?.dispose(),i.current=null})},[]),(0,m.useEffect)(()=>{if(n!==`ready`)return;let e=t.current;if(e===null)return;let r=new ResizeObserver(()=>{i.current?.resize()});return r.observe(e),()=>{r.disconnect()}},[n]),(0,m.useEffect)(()=>{if(n!==`ready`||i.current===null)return;let r=e.option??nr(e,t.current);i.current.setOption(r,!0)},[e,n]),n===`error`?(0,g.jsxs)(`div`,{className:x.echartFallback,"data-genui-echart":!0,children:[(0,g.jsx)(`div`,{className:x.echartErr,children:`ECharts 渲染失败`}),e.title!==void 0&&(0,g.jsx)(`div`,{className:x.echartHint,children:e.title})]}):(0,g.jsxs)(`div`,{className:x.echartWrap,"data-genui-echart":!0,children:[e.title!==void 0&&(0,g.jsx)(`div`,{className:x.echartTitle,children:e.title}),(0,g.jsx)(`div`,{ref:t,className:x.echartCanvas,style:{height:`${e.height??300}px`},role:`img`,"aria-label":e.title??`ECharts chart`}),n===`loading`&&(0,g.jsx)(`div`,{className:x.echartHint,children:`加载图表…`})]})}let ar=p.getGenuiComponent;function or(e){return typeof e==`object`&&!!e&&`type`in e}function sr(e){let t=/^([+\-−]?[\d.,]+(?:[eE][+\-]?\d+)?)\s*(.*)$/.exec(e.trim());if(t===null||t[1]===void 0)return{num:e,unit:``,numeric:void 0,decimals:0};let n=t[1],r=n.replace(/[,,]/g,``),i=Number(r),a=Number.isFinite(i)&&!/[eE]/.test(r)?i:void 0,o=r.includes(`.`)?(r.split(`.`)[1]??``).length:0;return{num:n,unit:t[2]??``,numeric:a,decimals:Math.min(o,4)}}function cr({values:e}){let t=Math.min(...e),n=Math.max(...e)-t||1,r=e.length<=1?0:92/(e.length-1),i=e.map((e,i)=>[2+i*r,22-(e-t)/n*20]),a=i.map(([e,t])=>`${e.toFixed(1)},${t.toFixed(1)}`).join(` `),o=i[i.length-1],s=`M 2,22 L ${a.split(` `).join(` L `)} L ${o[0].toFixed(1)},22 Z`;return(0,g.jsxs)(`svg`,{className:x.statSpark,viewBox:`0 0 96 24`,preserveAspectRatio:`none`,"aria-hidden":`true`,children:[(0,g.jsx)(`path`,{d:s,fill:`var(--dsl-g-accent)`,opacity:`0.14`}),(0,g.jsx)(`polyline`,{points:a,fill:`none`,stroke:`var(--dsl-g-accent)`,strokeWidth:`1.5`,strokeLinejoin:`round`,strokeLinecap:`round`,vectorEffect:`non-scaling-stroke`}),(0,g.jsx)(`path`,{d:`M ${o[0].toFixed(1)} ${o[1].toFixed(1)} L ${o[0].toFixed(1)} ${o[1].toFixed(1)}`,stroke:`var(--dsl-g-accent)`,strokeWidth:5,strokeLinecap:`round`,vectorEffect:`non-scaling-stroke`,fill:`none`})]})}function lr(e,t,n){let[r,i]=(0,m.useState)(n?0:e);return(0,m.useEffect)(()=>{if(!n){i(e);return}if(typeof window<`u`&&typeof window.matchMedia==`function`&&window.matchMedia(`(prefers-reduced-motion: reduce)`).matches){i(e);return}let t=0,r=performance.now(),a=n=>{let o=Math.min(1,(n-r)/720),s=1-(1-o)**3;i(e*s),o<1&&(t=requestAnimationFrame(a))};return t=requestAnimationFrame(a),()=>cancelAnimationFrame(t)},[e,n]),r.toFixed(t)}function ur({value:e,unitClass:t,animate:n=!1}){let r=sr(e),i=r.numeric,a=lr(i??0,r.decimals,n&&i!==void 0);return(0,g.jsxs)(g.Fragment,{children:[i===void 0?r.num:a,r.unit!==``&&(0,g.jsx)(`span`,{className:t??x.statUnit,children:r.unit})]})}function dr(e){return typeof e==`string`?e:or(e)?``:`${e.title} ${e.desc??``}`}function fr(e,t){if(t===void 0)return;let n=e?.fields[t];return n===void 0||n===``?void 0:n}function G(e,t,n,r=0,i){if(r>M.maxDepth)return null;switch(e.type){case`text`:{let n=e.size??`body`;return(0,g.jsx)(`div`,{className:`${x.text} ${x[n]}`+(e.center?` ${x.center}`:``),children:B(e.content)},t)}case`row`:return(0,g.jsxs)(`div`,{className:x.row+(e.wrap?` ${x.wrap}`:``),children:[e.items.map((e,t)=>G(e,t,n,r+1,i)),e.spacer&&(0,g.jsx)(`div`,{className:x.spacer})]},t);case`col`:return(0,g.jsx)(`div`,{className:x.col,style:e.gap===void 0?void 0:{gap:`${e.gap}px`},children:e.items.map((e,t)=>G(e,t,n,r+1,i))},t);case`grid`:return(0,g.jsx)(`div`,{className:x.grid,style:{gridTemplateColumns:`repeat(${Math.max(1,e.cols)}, minmax(0, 1fr))`},children:e.items.map((e,t)=>{let a=G(e,t,n,r+1,i),o=typeof e==`object`&&e&&typeof e.span==`number`?Math.max(1,Math.min(12,e.span)):1;return o>1?(0,g.jsx)(`div`,{className:x.gridSpan,style:{gridColumn:`span ${o}`},children:a},t):a})},t);case`card`:{let a=e.tone===void 0?``:` ${x[`card${e.tone[0].toUpperCase()}${e.tone.slice(1)}`]??``}`,o=e.accent===void 0?void 0:{borderColor:`color-mix(in srgb, ${e.accent} 18%, var(--dsl-g-border))`,"--dsl-card-accent":e.accent};return(0,g.jsxs)(`div`,{className:`${x.card}${a}`,style:o,children:[e.title!==void 0&&(0,g.jsx)(`div`,{className:x.cardTitle,children:e.title}),e.items.map((e,t)=>G(e,t,n,r+1,i))]},t)}case`button`:{let r=e.tone??``,i=`${x.button} ${x[r]||``}`+(e.full?` ${x.full}`:``)+(e.small?` ${x.small}`:``),a=e.action,o=a!==void 0&&n!==void 0;return(0,g.jsxs)(Re,{className:i,disabled:!o,onClick:o?()=>n(a,{type:`button`,label:e.label}):void 0,children:[e.icon!==void 0&&(0,g.jsxs)(`span`,{"aria-hidden":!0,children:[e.icon,` `]}),e.label]},t)}case`input`:return(0,g.jsx)(vt,{node:e,onAction:n,answers:i},t);case`select`:return(0,g.jsx)(_t,{node:e,onAction:n,answers:i},t);case`checkbox`:return(0,g.jsx)(bt,{node:e,onAction:n,answers:i},t);case`link`:{let n=e.href;return n===void 0?(0,g.jsx)(`span`,{className:x.linkText,children:e.label},t):(0,g.jsx)(`a`,{className:x.link,href:n,target:`_blank`,rel:`noopener noreferrer`,children:e.label},t)}case`image`:return(0,g.jsx)(Xn,{node:e},`${t}:${e.src}`);case`audio`:return(0,g.jsx)(ze,{node:e},`${t}:${e.src}`);case`video`:return(0,g.jsx)(Be,{node:e},`${t}:${e.src}`);case`badge`:{let n=e.tone??``;return(0,g.jsxs)(`span`,{className:`${x.badge} ${x[n]||``}`,children:[e.icon!==void 0&&(0,g.jsxs)(`span`,{"aria-hidden":!0,children:[e.icon,` `]}),e.label]},t)}case`hero`:{let n=e.tone??`accent`,r=x[`hero${n[0].toUpperCase()}${n.slice(1)}`]??``,i=e.delta!==void 0&&e.delta.startsWith(`-`);return(0,g.jsxs)(`div`,{className:`${x.hero} ${r}`,children:[e.label!==void 0&&(0,g.jsx)(`span`,{className:x.heroLabel,children:e.label}),(0,g.jsxs)(`div`,{className:x.heroTop,children:[e.value!==void 0&&(0,g.jsx)(`span`,{className:x.heroValue,children:(0,g.jsx)(ur,{value:e.value,unitClass:x.heroUnit,animate:!0})}),e.delta!==void 0&&(0,g.jsx)(`span`,{className:`${x.statDelta} ${i?x.down:x.up}`,children:e.delta}),e.spark!==void 0&&(0,g.jsx)(`span`,{className:x.heroSpark,children:(0,g.jsx)(cr,{values:e.spark})})]}),(0,g.jsx)(`span`,{className:x.heroTitle,children:e.title}),e.subtitle!==void 0&&(0,g.jsx)(`span`,{className:x.heroSubtitle,children:e.subtitle})]},t)}case`stat`:{let n=e.delta!==void 0&&e.delta.startsWith(`-`);return(0,g.jsxs)(`div`,{className:`${x.stat}${e.size===`hero`?` ${x.statHero}`:``}`,children:[(0,g.jsx)(`span`,{className:x.statLabel,children:e.label}),(0,g.jsx)(`span`,{className:x.statValue,children:(0,g.jsx)(ur,{value:e.value,animate:e.size===`hero`})}),e.delta!==void 0&&(0,g.jsx)(`span`,{className:`${x.statDelta} ${n?x.down:x.up}`,children:e.delta}),e.spark!==void 0&&(0,g.jsx)(cr,{values:e.spark})]},t)}case`progress`:{let n=Math.max(0,Math.min(100,Number(e.value)||0));if(e.variant===`ring`){let r=2*Math.PI*34;return(0,g.jsxs)(`div`,{className:x.ring,role:`progressbar`,"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":n,"aria-label":e.label??e.valueLabel??void 0,children:[(0,g.jsxs)(`svg`,{width:92,height:92,viewBox:`0 0 92 92`,"aria-hidden":`true`,children:[(0,g.jsx)(`circle`,{cx:46,cy:46,r:34,fill:`none`,strokeWidth:9,className:x.ringTrack}),(0,g.jsx)(`circle`,{cx:46,cy:46,r:34,fill:`none`,strokeWidth:9,strokeLinecap:`round`,className:x.ringFill,strokeDasharray:`${n/100*r} ${r}`,transform:`rotate(-90 46 46)`}),(0,g.jsxs)(`text`,{x:46,y:51,textAnchor:`middle`,className:x.ringValue,children:[n,`%`]})]}),(e.label!==void 0||e.valueLabel!==void 0)&&(0,g.jsxs)(`div`,{className:x.ringMeta,children:[e.label!==void 0&&(0,g.jsx)(`span`,{className:x.ringLabel,children:e.label}),e.valueLabel!==void 0&&(0,g.jsx)(`span`,{className:x.ringSub,children:e.valueLabel})]})]},t)}return(0,g.jsxs)(`div`,{className:x.progress,role:`progressbar`,"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":n,"aria-label":e.label??e.valueLabel??void 0,children:[(e.label!==void 0||e.valueLabel!==void 0)&&(0,g.jsxs)(`div`,{className:x.progressRow,children:[(0,g.jsx)(`span`,{children:e.label}),e.valueLabel!==void 0&&(0,g.jsx)(`span`,{children:e.valueLabel})]}),(0,g.jsxs)(`div`,{className:x.track,children:[(0,g.jsx)(`div`,{className:x.fill,style:{width:`${n}%`}}),e.target!==void 0&&(0,g.jsx)(`span`,{className:x.targetMark,style:{left:`${e.target}%`},title:`目标 ${e.target}%`})]})]},t)}case`divider`:return(0,g.jsx)(`hr`,{className:x.divider},t);case`list`:{let a=fr(i,e.filter)?.toLowerCase(),o=e.items.slice(0,M.maxListItems),s=a===void 0?o:o.filter(e=>dr(e).toLowerCase().includes(a));return(0,g.jsxs)(`div`,{className:x.list,children:[s.map((e,t)=>(0,g.jsx)(`div`,{className:x.li,children:or(e)?G(e,t,n,r+1,i):(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)(`span`,{className:x.liTitle,children:B(typeof e==`string`?e:e.title)}),typeof e!=`string`&&e.desc!==void 0&&(0,g.jsx)(`span`,{className:x.liDesc,children:B(e.desc)})]})},t)),a!==void 0&&(0,g.jsxs)(`span`,{className:x.filterHint,children:[`匹配 `,s.length,` / `,o.length,` 项`]})]},t)}case`table`:return(0,g.jsx)(Qe,{node:e,filterValue:fr(i,e.filter),sortValue:fr(i,e.sortField),renderDetail:e=>e.map((e,t)=>G(e,t,n,r+1,i))},t);case`chart`:return(0,g.jsx)(at,{chart:e,filterValue:fr(i,e.filter)},t);case`tabs`:return(0,g.jsx)(sn,{tabs:e,onAction:n,depth:r+1,answers:i},t);case`avatar`:return(0,g.jsx)(`div`,{className:x.avatar,style:{background:e.color??Le(e.name)},children:e.name.slice(0,1).toUpperCase()},t);case`spacer`:return(0,g.jsx)(`div`,{className:x.spacer},t);case`plot`:return(0,g.jsx)(nn,{plot:e},t);case`callout`:return(0,g.jsx)($t,{node:e},t);case`steps`:return(0,g.jsx)(en,{steps:e},t);case`keyvalue`:return(0,g.jsx)(tn,{node:e},t);case`diff`:return(0,g.jsx)(rn,{node:e},t);case`json`:return(0,g.jsx)(an,{node:e},t);case`code`:return(0,g.jsx)(on,{node:e},t);case`radio`:return(0,g.jsx)(ut,{node:e,onAction:n,answers:i},`${t}:r${i?.round??0}`);case`submit`:return(0,g.jsx)(ft,{node:e,onAction:n,answers:i},t);case`switch`:return(0,g.jsx)(pt,{node:e,onAction:n},t);case`slider`:return(0,g.jsx)(mt,{node:e,onAction:n,answers:i},t);case`textarea`:return(0,g.jsx)(yt,{node:e,onAction:n,answers:i},t);case`accordion`:return(0,g.jsx)(cn,{node:e,onAction:n,depth:r+1,answers:i},t);case`copy`:return(0,g.jsx)(un,{node:e},t);case`mermaid`:return(0,g.jsx)(dn,{node:e},t);case`scene3d`:return(0,g.jsx)(fn,{node:e},t);case`timeline`:return(0,g.jsx)(pn,{node:e},t);case`file-tree`:return(0,g.jsx)(gn,{node:e},t);case`breadcrumb`:return(0,g.jsx)(vn,{node:e},t);case`quiz`:return(0,g.jsx)(_n,{node:e,onAction:n},t);case`diagram`:return(0,g.jsx)(Yn,{node:e},t);case`echart`:return(0,g.jsx)(ir,{node:e},t);default:{let a=e,o=ar?.(a.type);return o===void 0?null:(0,g.jsx)(o,{node:a,onAction:n,renderChildren:(e,t)=>e.map((e,a)=>G(e,Number(t)+a,n,r+1,i))},t)}}}function pr(e){let t=(0,m.useRef)(new Map),n=(0,m.useRef)(e);n.current=e,(0,m.useEffect)(()=>()=>{for(let e of t.current.values())clearTimeout(e);t.current.clear()},[]);let r=(0,m.useCallback)((e,r)=>{let i=t.current.get(e);i!==void 0&&clearTimeout(i),t.current.set(e,setTimeout(()=>{t.current.delete(e),n.current?.(e,r)},300))},[]);return e===void 0?void 0:r}function mr(e,t){return e===t||JSON.stringify(e)===JSON.stringify(t)}function hr({spec:e,stateKey:t,animateEntrance:n=!0}){let r=e.gap??16,i=pr(y()),[a]=(0,m.useState)(()=>t===void 0?null:ee(t)),[o,s]=(0,m.useState)(a?.answers??{}),[c,l]=(0,m.useState)(a?.multiAnswers??{}),[u,d]=(0,m.useState)(a?.fields??{}),[f,p]=(0,m.useState)({}),[h,_]=(0,m.useState)(a?.locked===!0),[v,b]=(0,m.useState)(0),[S,C]=(0,m.useState)(new Set),w=(0,m.useCallback)((e,t)=>{s(n=>n[e]===t?n:{...n,[e]:t})},[]),T=(0,m.useCallback)((e,t,n)=>{l(r=>{let i=r[e]??[],a=n?i.includes(t)?i:[...i,t]:i.filter(e=>e!==t);return Object.prototype.hasOwnProperty.call(r,e)&&a.length===i.length&&a.every((e,t)=>e===i[t])?r:{...r,[e]:a}})},[]),E=(0,m.useCallback)((e,t)=>{d(n=>n[e]===t?n:{...n,[e]:t})},[]),D=(0,m.useCallback)(e=>{C(t=>t.has(e)?t:new Set(t).add(e))},[]),O=(0,m.useCallback)((e,t)=>{p(n=>{let r=n[e];return r!==void 0&&r.label===t.label&&r.answer===t.answer&&r.explanation===t.explanation?n:{...n,[e]:t}})},[]),k=(0,m.useCallback)(()=>{s({}),l({}),_(!1),b(e=>e+1)},[]),A=(0,m.useMemo)(()=>({answers:o,multiAnswers:c,fields:u,secretFields:S,meta:f,locked:h,round:v,setAnswer:w,setMultiAnswer:T,setField:E,registerSecretField:D,registerMeta:O,clear:k,setLocked:_}),[o,c,u,S,f,h,v,w,T,E,D,O,k]),ne=(0,m.useMemo)(()=>{if(i!==void 0)return(e,t)=>{Te(),i(e,t)}},[i]);return(0,m.useEffect)(()=>{if(t===void 0)return;let e=setTimeout(()=>{let e=Object.fromEntries(Object.entries(u).filter(([e])=>!S.has(e)));te(t,{answers:o,...Object.keys(c).length>0?{multiAnswers:c}:{},locked:h,...Object.keys(e).length>0?{fields:e}:{}})},300);return()=>clearTimeout(e)},[t,o,c,h,u,S]),(0,m.useEffect)(()=>{Ce(e)},[e]),(0,g.jsxs)(`div`,{className:x.block,"data-genui":!0,children:[e.title!==void 0&&(0,g.jsx)(`div`,{className:x.banner,children:e.title}),(0,g.jsx)(`div`,{className:x.col,style:{gap:`${r}px`},children:e.items.map((e,t)=>(0,g.jsx)(`div`,{className:x.reveal,style:{animationDelay:`${Math.min(t*90,720)}ms`,...!n||a!==null?{animation:`none`}:{}},onAnimationEnd:e=>{e.target===e.currentTarget&&(e.currentTarget.style.animation=`none`)},children:G(e,t,ne,0,A)},t))})]})}let gr=(0,m.memo)(function(e){let[t,n]=(0,m.useState)({stateKey:e.stateKey,generation:0});return t.stateKey!==e.stateKey&&n({stateKey:e.stateKey,generation:t.generation+(t.stateKey===void 0?0:1)}),(0,g.jsx)(hr,{...e},t.generation)},(e,t)=>e.stateKey===t.stateKey&&e.animateEntrance===t.animateEntrance&&mr(e.spec,t.spec));function _r(e){if(typeof e!=`object`||!e)return null;let t=e;if(typeof t.type!=`string`||t.type===``)return null;let n={type:`col`,items:[e]};return t.panel===!0&&(n.panel=!0),t.append===!0&&(n.append=!0),n}function vr(e){if(typeof e!=`object`||!e)return!1;let t=e;return!(!Array.isArray(t.items)||t.title!==void 0&&typeof t.title!=`string`||t.gap!==void 0&&typeof t.gap!=`number`)}let yr=[`h1`,`h2`,`h3`,`body`,`muted`,`caption`],br=[`primary`,`danger`,`success`,`ghost`],xr=[`success`,`warn`,`danger`,`accent`],Sr=[`text`,`email`,`password`,`color`],Cr=[`info`,`success`,`warning`,`error`],wr=[`bars`,`line`,`donut`],Tr=[`line`,`area`,`scatter`],Er=[`16:9`,`4:3`,`1:1`,`9:16`],Dr=[`box`,`sphere`,`cone`,`cylinder`,`torus`],Or=[`file`,`dir`],kr=`architecture.it-state.flowchart.sequence.state.er.timeline.swimlane.quadrant.radar.loop.nested.tree.org-chart.layers.venn.pyramid.bar.line.gantt.scatter.high-level.process.medallion.data-flow.dp-integration.dp-security-matrix`.split(`.`),Ar=[`focal`,`backend`,`store`,`external`,`input`,`optional`,`security`],jr=[`light`,`dark`,`editorial`],Mr=[`solid`,`dashed`,`accent`,`link`],Nr=[`auto`,`orthogonal`,`straight`],Pr=[`bar`,`line`,`area`,`pie`,`scatter`,`radar`,`gauge`,`funnel`,`treemap`,`sankey`,`graph`,`heatmap`,`bigline`],Fr=[`hero`],Ir=[`bar`,`ring`],Lr=[`info`,`success`,`warning`,`danger`],Rr=[`accent`,`success`,`warning`,`danger`],zr=[`text`,`num`,`delta`,`bar`,`badge`,`spark`,`ring`,`index`,`group`],K=(e,t,n={},r={})=>{let i=Object.fromEntries(Object.entries(t).filter(([t])=>t!==`type`&&!e.includes(t))),a=r.oneOfRequired??[],o=r.conditionalRequired??[];return{required:e,fields:t,optional:i,aliases:n,oneOfRequired:a,conditionalRequired:o,rules:[...a.map(e=>({kind:`one-of-required`,fields:e})),...o],enums:r.enums??{},nested:r.nested??{},...r.validator===void 0?{}:{validator:r.validator}}},q=(e,t,n={},r={})=>({required:e,fields:t,enums:r,nested:n}),J={type:`string`,span:`number`},Br=q([`label`,`value`],{label:`string`,value:`number`,color:`string`}),Vr=q([`label`,`data`],{label:`string`,color:`string`,data:`array`},{data:Br}),Hr=q([`title`],{title:`string`,desc:`string`}),Ur=q([`key`,`value`],{key:`string`,value:`string`}),Wr=q([`title`],{title:`string`,desc:`string`,time:`string`}),Gr=q([`path`,`newText`],{path:`string`,oldText:`string-or-null`,newText:`string`}),Kr=q([`expr`],{expr:`string`,label:`string`,color:`string`,kind:`string`,params:`array`},{params:q([`name`,`value`],{name:`string`,value:`number`,min:`number`,max:`number`,step:`number`,animateTo:`number`,durationMs:`number`,loop:`boolean`})},{kind:Tr}),qr=q([`shape`],{shape:`string`,color:`string`,position:`array`,rotation:`array`,scale:`unknown`,size:`unknown`},{},{shape:Dr});function Jr(e){return q([`name`],{name:`string`,type:`string`,children:`array`},e>0?{children:Jr(e-1)}:{},{type:Or})}let Yr=Jr(6),Xr=q([`label`,`items`],{label:`string`,items:`nodes`,content:`nodes`}),Zr=q([`title`,`items`],{title:`string`,items:`nodes`}),Qr=q([`id`,`label`],{id:`string`,label:`string`,sub:`string`,type:`string`,x:`number`,y:`number`,w:`number`,h:`number`,tag:`string`},{},{type:Ar}),$r=q([`from`,`to`],{from:`string`,to:`string`,label:`string`,kind:`string`,route:`string`},{},{kind:Mr,route:Nr}),ei=q([`label`],{label:`string`,x:`number`,y:`number`,w:`number`,h:`number`}),ti=q([],{paper:`string`,"paper-2":`string`,ink:`string`,muted:`string`,soft:`string`,rule:`string`,accent:`string`,"accent-tint":`string`,link:`string`}),ni=K([`items`],{title:`string`,gap:`number`,panel:`boolean`,append:`boolean`,items:`nodes`}),ri={accordion:K([`items`],{...J,items:`array`},{},{nested:{items:Zr}}),audio:K([`src`],{...J,src:`string`,alt:`string`,loop:`boolean`}),avatar:K([`name`],{...J,name:`string`,color:`string`}),badge:K([`label`],{...J,label:`string`,tone:`string`,icon:`string`},{text:`label`,value:`label`},{enums:{tone:xr}}),breadcrumb:K([`items`],{...J,items:`array`}),button:K([`label`],{...J,label:`string`,tone:`string`,full:`boolean`,small:`boolean`,icon:`string`,action:`string`},{},{enums:{tone:br}}),callout:K([`content`],{...J,title:`string`,content:`string`,tone:`string`},{kind:`tone`},{enums:{tone:Cr}}),card:K([`items`],{...J,title:`string`,items:`nodes`,tone:`string`,accent:`string`},{label:`title`,content:`items`},{enums:{tone:Lr}}),chart:K([],{...J,kind:`string`,data:`array`,series:`array`,horizontal:`boolean`,stacked:`boolean`,filter:`string`,palette:`array`},{},{oneOfRequired:[[`data`,`series`]],conditionalRequired:[{kind:`required-if`,when:{field:`kind`,equals:`donut`},required:[`data`]}],nested:{data:Br,series:Vr},enums:{kind:wr},validator:{name:`chart-renderability`}}),checkbox:K([`label`],{...J,label:`string`,checked:`boolean`,action:`string`,group:`string`}),code:K([`code`],{...J,lang:`string`,code:`string`}),col:K([`items`],{...J,items:`nodes`,gap:`number`}),copy:K([`text`],{...J,label:`string`,text:`string`}),diagram:K([`kind`,`nodes`],{...J,kind:`string`,variant:`string`,title:`string`,nodes:`array`,edges:`array`,zones:`array`,theme:`object`},{},{nested:{nodes:Qr,edges:$r,zones:ei,theme:ti},enums:{kind:kr,variant:jr}}),diff:K([`diffs`],{...J,diffs:`array`},{},{nested:{diffs:Gr}}),divider:K([],J),echart:K([],{...J,title:`string`,height:`number`,preset:`string`,data:`array`,series:`array`,links:`array`,palette:`array`,option:`object`},{},{oneOfRequired:[[`option`,`data`,`series`,`links`]],enums:{preset:Pr}}),"file-tree":K([`items`],{...J,items:`array`},{},{nested:{items:Yr}}),grid:K([`items`],{...J,cols:`number`,items:`nodes`}),image:K([`src`],{...J,src:`string`,alt:`string`}),input:K([],{...J,label:`string`,placeholder:`string`,value:`string`,inputType:`string`,action:`string`,id:`string`},{},{enums:{inputType:Sr}}),json:K([`value`],{...J,value:`unknown`}),keyvalue:K([`pairs`],{...J,pairs:`array`},{},{nested:{pairs:Ur}}),link:K([`label`],{...J,label:`string`,href:`string`}),list:K([`items`],{...J,items:`array`,filter:`string`}),mermaid:K([`code`],{...J,code:`string`}),plot:K([`series`],{...J,series:`array`,xMin:`number`,xMax:`number`,yMin:`number`,yMax:`number`,title:`string`},{},{nested:{series:Kr}}),progress:K([`value`],{...J,value:`number`,label:`string`,valueLabel:`string`,variant:`string`,target:`number`},{},{enums:{variant:Ir}}),quiz:K([`question`,`options`],{...J,question:`string`,options:`array`,explanation:`string`,id:`string`,action:`string`}),radio:K([`options`],{...J,label:`string`,options:`array`,selected:`number`,action:`string`,group:`string`,answer:`unknown`,explanation:`string`}),row:K([`items`],{...J,items:`nodes`,wrap:`boolean`,spacer:`boolean`}),scene3d:K([`meshes`],{...J,title:`string`,meshes:`array`,ambient:`number`,background:`string`},{},{nested:{meshes:qr}}),select:K([`options`],{...J,label:`string`,options:`array`,action:`string`,selected:`number`,id:`string`}),slider:K([],{...J,label:`string`,min:`number`,max:`number`,step:`number`,value:`number`,action:`string`,id:`string`}),spacer:K([],J),hero:K([`title`],{...J,title:`string`,subtitle:`string`,value:`string`,label:`string`,delta:`string`,spark:`array`,tone:`string`},{},{enums:{tone:Rr}}),stat:K([`label`,`value`],{...J,label:`string`,value:`string`,delta:`string`,spark:`array`,size:`string`},{},{enums:{size:Fr}}),steps:K([`steps`],{...J,steps:`array`,current:`number`},{items:`steps`},{nested:{steps:Hr}}),submit:K([`label`],{...J,label:`string`,action:`string`,resetAction:`string`,groups:`array`}),switch:K([`label`],{...J,label:`string`,checked:`boolean`,action:`string`}),table:K([`columns`,`rows`],{...J,columns:`array`,rows:`array`,types:`array`,total:`boolean`,details:`array`,filter:`string`,filterColumn:`number`,sortField:`string`,export:`boolean`},{headers:`columns`,data:`rows`}),tabs:K([`tabs`],{...J,tabs:`array`},{},{nested:{tabs:Xr}}),text:K([`content`],{...J,content:`string`,size:`string`,center:`boolean`},{text:`content`},{enums:{size:yr}}),textarea:K([],{...J,label:`string`,placeholder:`string`,rows:`number`,value:`string`,action:`string`,id:`string`}),timeline:K([`items`],{...J,items:`array`},{},{nested:{items:Wr}}),video:K([`src`],{...J,src:`string`,alt:`string`,poster:`string`,loop:`boolean`,muted:`boolean`,aspectRatio:`string`},{},{enums:{aspectRatio:Er}})},ii=new Set(Object.keys(ri));function ai(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:void 0}function oi(e){let t=ai(e);return t!==void 0&&typeof t.type==`string`}function si(e,t,n,r){let i=ri[n];if(i===void 0)return e;let a={...e};for(let[e,o]of Object.entries(i.aliases)){if(!(e in a))continue;let i=`${t}.${e}`,s=o in a;s||(a[o]=a[e]),delete a[e],r.push({kind:`alias`,path:i,message:s?`${i} is ignored because canonical field '${o}' is present`:`${i} normalized/adopted as '${o}'`,type:n,field:e,canonical:o})}return a}function ci(e,t,n){if(!oi(e))return e;let r=e.type;if(ri[r]===void 0)return e;let i=si(e,t,r,n),a=(e,t)=>ci(e,t,n);return r===`row`||r===`col`||r===`grid`||r===`card`||r===`file-tree`||r===`timeline`||r===`breadcrumb`?r!==`file-tree`&&r!==`timeline`&&r!==`breadcrumb`&&(i.items=((e,t)=>Array.isArray(e)?e.map((e,n)=>a(e,`${t}[${n}]`)):e)(i.items,`${t}.items`)):r===`list`&&Array.isArray(i.items)?i.items=i.items.map((e,n)=>oi(e)?a(e,`${t}.items[${n}]`):e):r===`tabs`&&Array.isArray(i.tabs)?i.tabs=i.tabs.map((e,i)=>{let o=ai(e);if(o===void 0)return e;let s={...o};if(`content`in s){let e=`${t}.tabs[${i}].content`,a=`items`in s;a||(s.items=s.content),delete s.content,n.push({kind:`alias`,path:e,message:a?`${e} is ignored because canonical field 'items' is present`:`${e} normalized/adopted as 'items'`,type:r,field:`content`,canonical:`items`})}return s.items=Array.isArray(s.items)?s.items.map((e,n)=>a(e,`${t}.tabs[${i}].items[${n}]`)):s.items===void 0?s.items:[a(s.items,`${t}.tabs[${i}].items[0]`)],s}):r===`accordion`&&Array.isArray(i.items)&&(i.items=i.items.map((e,n)=>{let r=ai(e);return r===void 0?e:{...r,items:Array.isArray(r.items)?r.items.map((e,r)=>a(e,`${t}.items[${n}].items[${r}]`)):r.items}})),i}function li(e){let t=[],n=ai(e);if(n===void 0)return{value:e,warnings:t};let r={...n};if(Array.isArray(r.items))r.items=r.items.map((e,n)=>ci(e,`items[${n}]`,t));else if(typeof r.type==`string`)return{value:ci(r,`spec`,t),warnings:t};return{value:r,warnings:t}}function ui(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:void 0}function di(e){let t=ui(e);return t!==void 0&&typeof t.type==`string`}function fi(e,t,n){if(!di(e))return;let r=e.type,i=ri[r];if(i===void 0)return;n(e,t,i);let a=(e,t)=>fi(e,t,n);(r===`row`||r===`col`||r===`grid`||r===`card`)&&Array.isArray(e.items)||r===`list`&&Array.isArray(e.items)?e.items.forEach((e,n)=>a(e,`${t}.items[${n}]`)):r===`tabs`&&Array.isArray(e.tabs)?e.tabs.forEach((e,n)=>{let r=ui(e);r!==void 0&&(Array.isArray(r.items)?r.items.forEach((e,r)=>a(e,`${t}.tabs[${n}].items[${r}]`)):a(r.items,`${t}.tabs[${n}].items`))}):r===`accordion`&&Array.isArray(e.items)&&e.items.forEach((e,n)=>{let r=ui(e);r?.items!==void 0&&Array.isArray(r.items)&&r.items.forEach((e,r)=>a(e,`${t}.items[${n}].items[${r}]`))})}function pi(e,t,n,r){e.push({kind:`unknown-field`,path:`${t}.${n}`,message:`${t}.${n}: unknown field for '${r}'`,type:r,field:n})}function mi(e,t,n,r,i){let a=ui(e);if(a!==void 0){for(let e of Object.keys(a))e in n.fields||pi(i,t,e,r);for(let[e,o]of Object.entries(n.nested)){let n=a[e];Array.isArray(n)?n.forEach((n,a)=>mi(n,`${t}.${e}[${a}]`,o,r,i)):n!==void 0&&mi(n,`${t}.${e}`,o,r,i)}}}function hi(e,t,n,r){for(let[i,a]of Object.entries(n.nested)){let n=e[i];Array.isArray(n)?n.forEach((n,o)=>mi(n,`${t}.${i}[${o}]`,a,e.type,r)):n!==void 0&&mi(n,`${t}.${i}`,a,e.type,r)}}function gi(e){let t=[],n=ui(e);if(n===void 0)return t;let r=(e,n,r)=>{for(let i of Object.keys(e))i===`type`||i in r.fields||pi(t,n,i,e.type);hi(e,n,r,t)};if(Array.isArray(n.items)){for(let e of Object.keys(n))e in ni.fields||pi(t,`spec`,e,`spec`);n.items.forEach((e,t)=>fi(e,`items[${t}]`,r))}else if(typeof n.type==`string`)fi(n,`spec`,r);else for(let e of Object.keys(n))e in ni.fields||pi(t,`spec`,e,`spec`);return t}function _i(e,t){switch(t){case`string`:return typeof e==`string`;case`string-or-null`:return e===null||typeof e==`string`;case`number`:return typeof e==`number`&&Number.isFinite(e);case`boolean`:return typeof e==`boolean`;case`nodes`:return Array.isArray(e);case`array`:return Array.isArray(e);case`object`:return R(e)!==void 0;case`unknown`:return!0}}function vi(e){switch(e){case`string-or-null`:return`a string or null`;case`number`:return`a finite number`;case`boolean`:return`a boolean`;case`nodes`:case`array`:return`an array`;case`object`:return`an object`;case`unknown`:return`a value`;default:return`a string`}}function Y(e,t,n){return e.some(e=>e.startsWith(`${t}.${n} `)||e.includes(`'${n}'`)||e.includes(`requires ${n}`))}function yi(e,t,n,r,i=[]){for(let[a,o]of Object.entries(n.fields))i.includes(a)||e[a]===void 0||!_i(e[a],o)&&!Y(r,t,a)&&r.push(`${t}.${a} must be ${vi(o)}`);for(let[a,o]of Object.entries(n.enums))i.includes(a)||e[a]===void 0||!_i(e[a],`string`)||!o.includes(e[a])&&!Y(r,t,a)&&r.push(`${t}.${a} must be one of ${o.join(`, `)}`)}function bi(e,t,n,r){let i=R(e);if(i===void 0){r.push(`${t} must be an object`);return}for(let e of n.required){let a=n.fields[e];i[e]===void 0?Y(r,t,e)||r.push(`${t}: requires ${e}${a===void 0?``:` (${vi(a)})`}`):a!==void 0&&!_i(i[e],a)&&(Y(r,t,e)||r.push(`${t}.${e} must be ${vi(a)}`))}for(let[e,a]of Object.entries(n.fields))i[e]!==void 0&&!_i(i[e],a)&&(Y(r,t,e)||r.push(`${t}.${e} must be ${vi(a)}`));for(let[e,a]of Object.entries(n.enums))i[e]!==void 0&&typeof i[e]==`string`&&!a.includes(i[e])&&(Y(r,t,e)||r.push(`${t}.${e} must be one of ${a.join(`, `)}`));for(let[e,a]of Object.entries(n.nested)){let n=i[e];n!==void 0&&(Array.isArray(n)?n.forEach((n,i)=>bi(n,`${t}.${e}[${i}]`,a,r)):bi(n,`${t}.${e}`,a,r))}}function xi(e,t,n,r){for(let[i,a]of Object.entries(n.nested)){let n=e[i];n!==void 0&&(Array.isArray(n)?n.forEach((e,n)=>bi(e,`${t}.${i}[${n}]`,a,r)):bi(n,`${t}.${i}`,a,r))}}function Si(e,t,n,r){let i=String(e.type),a=e=>Y(r,t,e);for(let o of n.required){let s=n.fields[o];if(s===void 0||e[o]===void 0){a(o)||r.push(`${t}: type '${i}' requires ${o}${s===void 0?``:` (${vi(s)})`}`);continue}!_i(e[o],s)&&!a(o)&&r.push(`${t}.${o} must be ${vi(s)}`)}yi(e,t,n,r,[`type`]);for(let a of n.oneOfRequired)!a.some(t=>e[t]!==void 0)&&!r.some(e=>e.includes(`requires ${a.join(` or `)}`))&&r.push(`${t}: type '${i}' requires one of ${a.join(` or `)}`);for(let o of n.conditionalRequired)if(e[o.when.field]===o.when.equals)for(let n of o.required)e[n]===void 0&&!a(n)&&r.push(`${t}: type '${i}' requires ${n}${o.message===void 0?``:` (${o.message})`}`);xi(e,t,n,r)}function X(e,t,n){if(!Array.isArray(e))return[];let r=[];for(let i of e){if(t.remaining<=0)break;--t.remaining;let e=Ti(i,t,n);e!==null&&r.push(e)}return r}function Ci(e){if(!Array.isArray(e))return;let t=[];for(let n of e.slice(0,12)){let e=P(n);e!==void 0&&t.push(e)}return t.length>0?t:void 0}function wi(e){if(!Array.isArray(e))return;let t=[];for(let n of e.slice(0,60)){let e=typeof n==`number`?n:Number(n);if(!Number.isFinite(e))return;t.push(e)}return t.length>=2?t:void 0}function Ti(e,t,n){let r=Ei(e,t,n);if(r===null)return null;let i=I(R(e)?.span,2,12);return i===void 0?r:{...r,span:i}}function Ei(e,t,n){if(n>M.maxDepth)return null;let r=R(e);if(r===void 0)return null;let i=r.type;if(typeof i!=`string`)return null;switch(i){case`text`:{let e=N(r.content,M.maxString)??N(r.text,M.maxString);return e===void 0?null:{type:`text`,content:e,...z(`size`,L(r.size,yr)),...z(`center`,r.center===!0||void 0)}}case`row`:return{type:`row`,items:X(r.items,t,n+1),...z(`wrap`,r.wrap===!0||void 0),...z(`spacer`,r.spacer===!0||void 0)};case`col`:return{type:`col`,items:X(r.items,t,n+1),...z(`gap`,F(r.gap,0,96))};case`grid`:return{type:`grid`,cols:I(r.cols,1,M.maxGridCols)??1,items:X(r.items,t,n+1)};case`card`:return{type:`card`,items:X(r.items,t,n+1),...z(`title`,N(r.title,M.maxString)),...z(`tone`,L(r.tone,Lr)),...z(`accent`,P(r.accent))};case`button`:{let e=N(r.label,M.maxString);return e===void 0?null:{type:`button`,label:e,...z(`tone`,L(r.tone,br)),...z(`full`,r.full===!0||void 0),...z(`small`,r.small===!0||void 0),...z(`icon`,N(r.icon,64)),...z(`action`,N(r.action,200))}}case`input`:return{type:`input`,...z(`label`,N(r.label,M.maxString)),...z(`placeholder`,N(r.placeholder,M.maxString)),...z(`value`,N(r.value,M.maxString)),...z(`inputType`,L(r.inputType,Sr)),...z(`action`,N(r.action,200)),...z(`id`,N(r.id,200))};case`select`:{let e=Di(r.options,M.maxOptions,M.maxString);return e===void 0?null:{type:`select`,options:e,...z(`label`,N(r.label,M.maxString)),...z(`action`,N(r.action,200)),...z(`selected`,I(r.selected,0,e.length-1)),...z(`id`,N(r.id,200))}}case`checkbox`:{let e=N(r.label,M.maxString);return e===void 0?null:{type:`checkbox`,label:e,...z(`checked`,r.checked===!0||void 0),...z(`action`,N(r.action,200)),...z(`group`,N(r.group,200))}}case`link`:{let e=N(r.label,M.maxString);return e===void 0?null:{type:`link`,label:e,...z(`href`,Me(r.href))}}case`image`:{let e=Ne(r.src);return e===void 0?null:{type:`image`,src:e,...z(`alt`,N(r.alt,M.maxString))}}case`audio`:{let e=Ne(r.src);return e===void 0?null:{type:`audio`,src:e,...z(`alt`,N(r.alt,M.maxString)),...z(`loop`,r.loop===!0||void 0)}}case`video`:{let e=Ne(r.src);return e===void 0?null:{type:`video`,src:e,...z(`alt`,N(r.alt,M.maxString)),...z(`poster`,Ne(r.poster)),...z(`loop`,r.loop===!0||void 0),...z(`muted`,r.muted===!0||void 0),...z(`aspectRatio`,L(r.aspectRatio,Er))}}case`badge`:{let e=N(r.label,M.maxString)??N(r.text,M.maxString)??N(r.value,M.maxString);return e===void 0?null:{type:`badge`,label:e,...z(`tone`,L(r.tone,xr)),...z(`icon`,N(r.icon,64))}}case`hero`:{let e=N(r.title,M.maxString);return e===void 0?null:{type:`hero`,title:e,...z(`subtitle`,N(r.subtitle,M.maxString)),...z(`value`,N(r.value,128)),...z(`label`,N(r.label,M.maxString)),...z(`delta`,N(r.delta,64)),...z(`spark`,wi(r.spark)),...z(`tone`,L(r.tone,Rr))}}case`stat`:{let e=N(r.label,M.maxString),t=N(r.value,128);return e===void 0||t===void 0?null:{type:`stat`,label:e,value:t,...z(`delta`,N(r.delta,64)),...z(`spark`,wi(r.spark)),...z(`size`,r.size===`hero`?`hero`:void 0)}}case`progress`:{let e=F(r.value,0,100);return e===void 0?null:{type:`progress`,value:e,...z(`label`,N(r.label,M.maxString)),...z(`valueLabel`,N(r.valueLabel,64)),...z(`variant`,L(r.variant,Ir)),...z(`target`,F(r.target,0,100))}}case`divider`:return{type:`divider`};case`spacer`:return{type:`spacer`};case`avatar`:{let e=N(r.name,64);return e===void 0?null:{type:`avatar`,name:e,...z(`color`,P(r.color))}}case`list`:{let e=Oi(r.items,M.maxListItems,t,n+1);return e===void 0?null:{type:`list`,items:e,...z(`filter`,N(r.filter,64))}}case`table`:{let e=r.columns,i=r.rows===void 0?r.data:r.rows;if(Array.isArray(e)&&e.length>0&&typeof e[0]==`object`&&e[0]!==null&&(e=e.map(e=>Ni(e))),Array.isArray(i)&&i.length>0&&typeof i[0]==`object`&&i[0]!==null&&!Array.isArray(i[0])){let e=Array.isArray(r.columns)&&r.columns.length>0&&typeof r.columns[0]==`object`&&r.columns[0]!==null?r.columns.map(e=>Pi(e)).filter(e=>e!==void 0):Object.keys(i[0]);i=i.map(t=>e.map(e=>Fi(t[e])))}let a=Di(e,M.maxTableCols,128),o=ki(i,M.maxTableRows,M.maxTableCols);if(a===void 0||o===void 0)return null;let s=Array.isArray(r.types)?r.types:void 0,c=s===void 0?void 0:a.map((e,t)=>{let n=s[t];return typeof n==`string`&&zr.includes(n)?n:`text`}),l=Array.isArray(r.details)?r.details:void 0,u=l===void 0?void 0:o.map((e,r)=>{let i=X(l[r],t,n+1);return i.length===0?null:i});return{type:`table`,columns:a,rows:o,...z(`types`,c),...z(`total`,r.total===!0||void 0),...z(`export`,r.export===!0||void 0),...z(`filter`,N(r.filter,64)),...z(`filterColumn`,I(r.filterColumn,0,M.maxTableCols-1)),...z(`sortField`,N(r.sortField,64)),...z(`details`,u!==void 0&&u.some(e=>e!==null)?u:void 0)}}case`chart`:{let e=Ai(r.data,M.maxChartPoints),t=Array.isArray(r.series)?ji(r.series,M.maxPlotSeries,M.maxChartPoints):void 0;return e===void 0&&t===void 0?null:{type:`chart`,data:e??[],...z(`kind`,L(r.kind,wr)),...z(`series`,t),...z(`horizontal`,r.horizontal===!0||void 0),...z(`stacked`,r.stacked===!0||void 0),...z(`filter`,N(r.filter,64)),...z(`palette`,Ci(r.palette))}}case`tabs`:{let e=Mi(r.tabs,t,n);return e===void 0?null:{type:`tabs`,tabs:e}}case`plot`:{let e=Ii(r.series,M.maxPlotSeries);return e===void 0?null:{type:`plot`,series:e,...z(`xMin`,F(r.xMin,-1e6,1e6)),...z(`xMax`,F(r.xMax,-1e6,1e6)),...z(`yMin`,F(r.yMin,-1e9,1e9)),...z(`yMax`,F(r.yMax,-1e9,1e9)),...z(`title`,N(r.title,M.maxString))}}case`callout`:{let e=N(r.content,M.maxString);return e===void 0?null:{type:`callout`,content:e,...z(`tone`,L(r.tone,Cr)),...z(`title`,N(r.title,M.maxString))}}case`steps`:{let e=Li(r.steps);return e===void 0?null:{type:`steps`,steps:e,...z(`current`,I(r.current,0,e.length))}}case`keyvalue`:{let e=Ri(r.pairs,M.maxKeyValuePairs);return e===void 0?null:{type:`keyvalue`,pairs:e}}case`diff`:{let e=zi(r.diffs);return e===void 0?null:{type:`diff`,diffs:e}}case`json`:return`value`in r?{type:`json`,value:r.value}:null;case`code`:{let e=N(r.code,M.maxCode);return e===void 0?null:{type:`code`,code:e,...z(`lang`,N(r.lang,64))}}case`radio`:{let e=Di(r.options,M.maxOptions,M.maxString);return e===void 0?null:{type:`radio`,options:e,...z(`label`,N(r.label,M.maxString)),...z(`selected`,I(r.selected,0,e.length-1)),...z(`action`,N(r.action,200)),...z(`group`,N(r.group,200)),...z(`answer`,typeof r.answer==`number`&&Number.isFinite(r.answer)&&r.answer>=0&&r.answer<e.length?Math.trunc(r.answer):typeof r.answer==`string`?r.answer.slice(0,512):void 0),...z(`explanation`,N(r.explanation,M.maxString))}}case`submit`:{let e=N(r.label,M.maxString),t=N(r.action,200);return e===void 0?null:{type:`submit`,label:e,...z(`action`,t),...z(`resetAction`,N(r.resetAction,200)),...z(`groups`,Di(r.groups,M.maxOptions,200))}}case`switch`:{let e=N(r.label,M.maxString);return e===void 0?null:{type:`switch`,label:e,...z(`checked`,r.checked===!0||void 0),...z(`action`,N(r.action,200))}}case`slider`:{let e=F(r.min,-1e9,1e9)??0,t=F(r.max,-1e9,1e9)??100,n=Math.min(e,t),i=Math.max(e,t),a=F(r.step,1e-9,Math.max(i-n,1e-9)),o=F(r.value,n,i)??n;return{type:`slider`,min:n,max:i,...z(`step`,a),value:o,...z(`label`,N(r.label,M.maxString)),...z(`action`,N(r.action,200)),...z(`id`,N(r.id,200))}}case`textarea`:return{type:`textarea`,...z(`label`,N(r.label,M.maxString)),...z(`placeholder`,N(r.placeholder,M.maxString)),...z(`rows`,I(r.rows,1,30)),...z(`value`,N(r.value,M.maxString)),...z(`action`,N(r.action,200)),...z(`id`,N(r.id,200))};case`accordion`:{let e=Bi(r.items,t,n);return e===void 0?null:{type:`accordion`,items:e}}case`copy`:{let e=N(r.text,M.maxCode);return e===void 0?null:{type:`copy`,text:e,...z(`label`,N(r.label,128))}}case`mermaid`:{let e=N(r.code,M.maxMermaid);return e===void 0?null:{type:`mermaid`,code:e}}case`scene3d`:{let e=Vi(r.meshes);return e===void 0?null:{type:`scene3d`,meshes:e,...z(`title`,N(r.title,M.maxString)),...z(`ambient`,F(r.ambient,0,2)),...z(`background`,P(r.background))}}case`diagram`:return qi(r);case`timeline`:{let e=Ji(r.items,M.maxTimelineItems);return e===void 0?null:{type:`timeline`,items:e}}case`file-tree`:{let e=Yi(r.items,M.maxListItems);return e===void 0?null:{type:`file-tree`,items:e}}case`breadcrumb`:{let e=Di(r.items,M.maxBreadcrumbItems,M.maxString);return e===void 0?null:{type:`breadcrumb`,items:e}}case`quiz`:{let e=N(r.question,M.maxString),t=Zi(r.options,r.answer);return e===void 0||t===void 0?null:{type:`quiz`,question:e,options:t,...z(`explanation`,N(r.explanation,M.maxString)),...z(`id`,N(r.id,200)),...z(`action`,N(r.action,200))}}case`echart`:{let e=r.data===void 0?void 0:Ai(r.data,M.maxChartPoints),t=r.series!==void 0&&Array.isArray(r.series)?ji(r.series,M.maxPlotSeries,M.maxChartPoints):void 0,n=Array.isArray(r.links)?r.links.slice(0,M.maxChartPoints).flatMap(e=>{let t=R(e),n=t===void 0?void 0:N(t.from,64),r=t===void 0?void 0:N(t.to,64);return n===void 0||r===void 0?[]:[{from:n,to:r,...z(`value`,F(t.value,0,1e9))}]}):void 0,i=r.option===void 0?void 0:$i(r.option,0,{count:M.maxEChartOptionNodes}),a=i===void 0||typeof i!=`object`||!i||Array.isArray(i)?void 0:i;return a===void 0&&e===void 0&&t===void 0&&(n===void 0||n.length===0)?null:{type:`echart`,...z(`title`,N(r.title,M.maxString)),...z(`height`,I(r.height,100,800)),...z(`preset`,L(r.preset,Pr)),...z(`data`,e),...z(`series`,t),...z(`links`,n!==void 0&&n.length>0?n:void 0),...z(`palette`,Ci(r.palette)),...z(`option`,a)}}default:return e}}function Di(e,t,n){if(!Array.isArray(e))return;let r=[];for(let i of e){if(r.length>=t)break;if(typeof i==`string`)r.push(i.slice(0,n));else if(typeof i==`object`&&i){let e=i,t=typeof e.label==`string`?e.label:typeof e.value==`string`?e.value:typeof e.title==`string`?e.title:JSON.stringify(i);r.push(t.slice(0,n))}}return r}function Oi(e,t,n,r){if(!Array.isArray(e))return;let i=[];for(let a of e){if(i.length>=t)break;if(typeof a==`string`){i.push(a.slice(0,M.maxString));continue}let e=R(a),o=e===void 0?void 0:N(e.title,M.maxString);if(o!==void 0){i.push({title:o,...z(`desc`,e===void 0?void 0:N(e.desc,M.maxString))});continue}if(e!==void 0&&typeof e.type==`string`){if(n.remaining<=0)break;--n.remaining;let t=Ti(e,n,r);t!==null&&i.push(t)}}return i}function ki(e,t,n){if(!Array.isArray(e))return;let r=[];for(let i of e){if(r.length>=t)break;if(!Array.isArray(i))continue;let e=[];for(let t of i){if(e.length>=n)break;typeof t==`string`?e.push(t.slice(0,256)):typeof t==`number`&&Number.isFinite(t)&&e.push(t)}e.length>0&&r.push(e)}return r}function Ai(e,t){if(!Array.isArray(e))return;let n=[];for(let r of e){if(n.length>=t)break;let e=R(r),i=e===void 0?void 0:N(e.label,128),a=e===void 0?void 0:F(e.value,-0xe8d4a51000,0xe8d4a51000);i!==void 0&&a!==void 0&&n.push({label:i,value:a,...z(`color`,e===void 0?void 0:P(e.color))})}return n}function ji(e,t,n){if(!Array.isArray(e))return;let r=[];for(let i of e){if(r.length>=t)break;let e=R(i),a=e===void 0?void 0:N(e.label,128),o=e===void 0?void 0:Ai(e.data,n);a!==void 0&&o!==void 0&&r.push({label:a,data:o,...z(`color`,e===void 0?void 0:P(e.color))})}return r}function Mi(e,t,n){if(!Array.isArray(e))return;let r=[];for(let i of e){if(r.length>=M.maxTabs)break;let e=R(i),a=e===void 0?void 0:N(e.label,128);if(a===void 0||e===void 0)continue;let o=e.items===void 0?e.content===void 0?void 0:Array.isArray(e.content)?e.content:[e.content]:e.items;r.push({label:a,items:X(o,t,n+1)})}return r}function Ni(e){let t=R(e);if(t===void 0)return String(e);for(let e of[`title`,`label`,`key`,`dataIndex`]){let n=t[e];if(typeof n==`string`&&n!==``)return n}return JSON.stringify(e)}function Pi(e){let t=R(e);if(t!==void 0)for(let e of[`key`,`dataIndex`,`title`,`label`]){let n=t[e];if(typeof n==`string`&&n!==``)return n}}function Fi(e){return typeof e==`string`||typeof e==`number`&&Number.isFinite(e)?e:e==null?``:JSON.stringify(e)}function Ii(e,t){if(!Array.isArray(e))return;let n=[];for(let r of e){if(n.length>=t)break;let e=R(r),i=e===void 0?void 0:N(e.expr,512);if(i===void 0||e===void 0)continue;let a=[];if(Array.isArray(e.params))for(let t of e.params){if(a.length>=M.maxPlotParams)break;let e=R(t),n=e===void 0?void 0:N(e.name,64),r=e===void 0?void 0:F(e.value,-1e9,1e9);n!==void 0&&r!==void 0&&a.push({name:n,value:r,...z(`min`,e===void 0?void 0:F(e.min,-1e9,1e9)),...z(`max`,e===void 0?void 0:F(e.max,-1e9,1e9)),...z(`step`,e===void 0?void 0:F(e.step,1e-9,1e9)),...z(`animateTo`,e===void 0?void 0:F(e.animateTo,-1e9,1e9)),...z(`durationMs`,e===void 0?void 0:F(e.durationMs,1,12e4)),...z(`loop`,e===void 0?void 0:e.loop===!0||void 0)})}n.push({expr:i,...z(`label`,N(e.label,128)),...z(`color`,P(e.color)),...z(`kind`,L(e.kind,Tr)),...z(`params`,a.length>0?a:void 0)})}return n}function Li(e){if(!Array.isArray(e))return;let t=[];for(let n of e){if(t.length>=M.maxSteps)break;let e=R(n),r=e===void 0?void 0:N(e.title,256);r!==void 0&&t.push({title:r,...z(`desc`,e===void 0?void 0:N(e.desc,M.maxString))})}return t}function Ri(e,t){if(!Array.isArray(e))return;let n=[];for(let r of e){if(n.length>=t)break;let e=R(r),i=e===void 0?void 0:N(e.key,256),a=e===void 0?void 0:N(e.value,M.maxString);i!==void 0&&a!==void 0&&n.push({key:i,value:a})}return n}function zi(e){if(!Array.isArray(e))return;let t=[];for(let n of e){if(t.length>=24)break;let e=R(n),r=e===void 0?void 0:N(e.path,1024),i=e===void 0?void 0:N(e.newText,2e4);if(r===void 0||i===void 0)continue;let a=e===void 0?void 0:e.oldText;t.push({path:r,newText:i,oldText:a===null||typeof a!=`string`?null:a.slice(0,2e4)})}return t}function Bi(e,t,n){if(!Array.isArray(e))return;let r=[];for(let i of e){if(r.length>=M.maxAccordionItems)break;let e=R(i),a=e===void 0?void 0:N(e.title,256);a!==void 0&&e!==void 0&&r.push({title:a,items:X(e.items,t,n+1)})}return r}function Vi(e){if(!Array.isArray(e))return;let t=[];for(let n of e){if(t.length>=M.maxMeshes)break;let e=R(n),r=e===void 0?void 0:L(e.shape,Dr);if(r===void 0)continue;let i=e===void 0?void 0:F(e.scale,-1e6,1e6)??Hi(e.scale),a=e===void 0?void 0:F(e.size,-1e6,1e6)??Hi(e.size);t.push({shape:r,...z(`color`,e===void 0?void 0:P(e.color)),...z(`position`,e===void 0?void 0:Hi(e.position)),...z(`rotation`,e===void 0?void 0:Hi(e.rotation)),...z(`scale`,i),...z(`size`,a)})}return t}function Hi(e){if(!Array.isArray(e)||e.length!==3)return;let[t,n,r]=e;if(!(typeof t!=`number`||!Number.isFinite(t)||typeof n!=`number`||!Number.isFinite(n)||typeof r!=`number`||!Number.isFinite(r)))return[Math.min(1e6,Math.max(-1e6,t)),Math.min(1e6,Math.max(-1e6,n)),Math.min(1e6,Math.max(-1e6,r))]}function Z(e,t,n){return Math.min(n,Math.max(t,Math.round(e/4)*4))}function Ui(e){if(!Array.isArray(e))return;let t=[],n=new Set;for(let r of e){if(t.length>=M.maxDiagramNodes)break;let e=R(r);if(e===void 0)continue;let i=N(e.id,128),a=N(e.label,M.maxString);if(i===void 0||a===void 0||n.has(i))continue;n.add(i);let o=L(e.type,Ar),s=e.x===void 0?void 0:Z(F(e.x,-1e6,1e6)??0,0,1e6),c=e.y===void 0?void 0:Z(F(e.y,-1e6,1e6)??0,0,1e6),l=e.w===void 0?void 0:Z(F(e.w,-1e6,1e6)??96,40,2e3),u=e.h===void 0?void 0:Z(F(e.h,-1e6,1e6)??48,24,1200);t.push({id:i,label:a,...z(`sub`,N(e.sub,256)),...z(`type`,o),...z(`x`,s),...z(`y`,c),...z(`w`,l),...z(`h`,u),...z(`tag`,N(e.tag,32))})}return t}function Wi(e){if(e===void 0)return[];if(!Array.isArray(e))return;let t=[];for(let n of e){if(t.length>=M.maxDiagramEdges)break;let e=R(n);if(e===void 0)continue;let r=N(e.from,128),i=N(e.to,128);r!==void 0&&i!==void 0&&t.push({from:r,to:i,...z(`label`,N(e.label,M.maxDiagramLabel)),...z(`kind`,L(e.kind,Mr)),...z(`route`,L(e.route,Nr))})}return t}function Gi(e){let t=R(e);if(t===void 0)return;let n={};for(let e of[`paper`,`paper-2`,`ink`,`muted`,`soft`,`rule`,`accent`,`accent-tint`,`link`]){let r=P(t[e]);r!==void 0&&(n[e]=r)}return Object.keys(n).length===0?void 0:n}function Ki(e){if(e===void 0)return[];if(!Array.isArray(e))return;let t=[];for(let n of e){if(t.length>=M.maxDiagramZones)break;let e=R(n);if(e===void 0)continue;let r=N(e.label,64);r!==void 0&&t.push({label:r,...z(`x`,e.x===void 0?void 0:Z(F(e.x,-1e6,1e6)??0,0,1e6)),...z(`y`,e.y===void 0?void 0:Z(F(e.y,-1e6,1e6)??0,0,1e6)),...z(`w`,e.w===void 0?void 0:Z(F(e.w,-1e6,1e6)??100,40,2e3)),...z(`h`,e.h===void 0?void 0:Z(F(e.h,-1e6,1e6)??100,40,1200))})}return t}function qi(e){let t=R(e);if(t===void 0)return null;let n=L(t.kind,kr);if(n===void 0)return null;let r=Ui(t.nodes);if(r===void 0)return null;let i=Wi(t.edges);if(i===void 0)return null;let a=Ki(t.zones);return a===void 0?null:{type:`diagram`,kind:n,nodes:r,edges:i,zones:a,...z(`variant`,L(t.variant,jr)),...z(`title`,N(t.title,256)),...z(`theme`,Gi(t.theme))}}function Ji(e,t){if(!Array.isArray(e))return;let n=[];for(let r of e){if(n.length>=t)break;let e=R(r),i=e===void 0?void 0:N(e.title,256);i!==void 0&&n.push({title:i,...z(`desc`,e===void 0?void 0:N(e.desc,M.maxString)),...z(`time`,e===void 0?void 0:N(e.time,128))})}return n}function Yi(e,t){return Xi(e,t,M.maxTreeDepth)}function Xi(e,t,n){if(!Array.isArray(e))return;let r=[];for(let i of e){if(r.length>=t)break;let e=R(i),a=e===void 0?void 0:N(e.name,256);if(a===void 0)continue;let o=e!==void 0&&n>0&&Array.isArray(e.children)?Xi(e.children,t,n-1):void 0;r.push({name:a,...z(`type`,e===void 0?void 0:L(e.type,Or)),...z(`children`,o)})}return r}function Zi(e,t){if(!Array.isArray(e))return;let n=[];for(let t of e){if(n.length>=M.maxQuizOptions)break;let e=R(t),r=typeof t==`string`?N(t,512):e===void 0?void 0:N(e.label,512);r!==void 0&&n.push({label:r,...z(`correct`,e===void 0?void 0:e.correct===!0||void 0),...z(`feedback`,e===void 0?void 0:N(e.feedback,M.maxString))})}if(n.length===0)return;if(n.some(e=>e.correct===!0))return n;let r=typeof t==`number`&&Number.isFinite(t)?Math.trunc(t):typeof t==`string`?n.findIndex(e=>e.label===t.slice(0,512)):-1;return r<0||r>=n.length?n:n.map((e,t)=>t===r?{...e,correct:!0}:e)}let Qi=/<(?:script|img|svg|iframe|video|audio|object|embed|source)\b|on[a-z]+\s*=|javascript:/i;function $i(e,t,n){if(n.count<=0||(--n.count,t>M.maxEChartOptionDepth))return;if(typeof e==`string`){let t=e.slice(0,M.maxString);return t.toLowerCase().includes(`url(`)||Qi.test(t)?void 0:t}if(typeof e==`number`&&Number.isFinite(e)||typeof e==`boolean`)return e;if(e===null)return null;if(Array.isArray(e)){let r=Math.min(e.length,M.maxEChartArrayLen),i=[];for(let a=0;a<r;a++){let r=$i(e[a],t+1,n);r!==void 0&&i.push(r)}return i.length>0?i:void 0}let r=R(e);if(r===void 0)return;let i={};for(let[e,a]of Object.entries(r)){let r=$i(a,t+1,n);r!==void 0&&(e===`tooltip`&&typeof r==`object`&&r&&!Array.isArray(r)&&(r.renderMode=`richText`),i[e]=r)}return Object.keys(i).length>0?i:void 0}function ea(e){let t=R(e);if(t===void 0)return null;if(!Array.isArray(t.items)){let t=_r(e);return t===null?null:ea(t)}let n={remaining:M.maxNodes};return{...z(`title`,N(t.title,M.maxString)),...z(`gap`,F(t.gap,0,96)),...z(`panel`,t.panel===!0||void 0),...z(`append`,t.append===!0||void 0),items:X(t.items,n,0)}}function ta(e){return ea(li(e).value)}function na(e,t=1/0){let n=0,r=e=>{if(Array.isArray(e))for(let i of e){if(n>=t)return;n+=1;let e=R(i);if(e!==void 0){if(e.type===`tabs`&&Array.isArray(e.tabs))for(let i of e.tabs){if(n>=t)return;let e=R(i);e!==void 0&&r(e.items)}else if(e.type===`accordion`&&Array.isArray(e.items))for(let i of e.items){if(n>=t)return;let e=R(i);e!==void 0&&r(e.items)}else if((e.type===`row`||e.type===`col`||e.type===`grid`||e.type===`card`)&&Array.isArray(e.items))r(e.items);else if(e.type!==`file-tree`&&e.type===`list`&&Array.isArray(e.items))for(let i of e.items){if(n>=t)return;let e=R(i);e!==void 0&&typeof e.type==`string`&&r([e])}}}},i=R(e);return r(i===void 0?[]:i.items),n}let ra=ii;function ia(e,t,n){let r=0,i=e=>{let t=R(e);return t!==void 0&&typeof t.type==`string`&&ra.has(t.type)};function a(e,n){if(Array.isArray(e)){for(let i=0;i<e.length;i++)if(o(e[i],`${n}[${i}]`),r>=t)return}}function o(e,c){if(r>=t||!i(e))return;let l=R(e);if(l!==void 0){if(r+=1,n(l,c),l.type===`tabs`&&Array.isArray(l.tabs))for(let e=0;e<l.tabs.length;e++)s(l.tabs[e],`${c}.tabs[${e}]`);else if(l.type===`accordion`&&Array.isArray(l.items))for(let e=0;e<l.items.length;e++)s(l.items[e],`${c}.items[${e}]`);else if((l.type===`row`||l.type===`col`||l.type===`grid`||l.type===`card`)&&Array.isArray(l.items))a(l.items,`${c}.items`);else if(l.type===`list`&&Array.isArray(l.items))for(let e=0;e<l.items.length;e++)o(l.items[e],`${c}.items[${e}]`)}}function s(e,t){let n=R(e);if(n===void 0)return;let r=n.items===void 0?n.content:n.items;Array.isArray(r)?a(r,`${t}.items`):o(r,`${t}.items`)}let c=R(e);return c===void 0||(!Array.isArray(c.items)&&i(e)?o(e,`spec`):a(c.items,`items`)),r}function aa(e,t=1/0){return ia(e,t,()=>{})}function oa(e,t=1/0){return aa(e,t)}function sa(e){let t=[],n=R(e);if(n===void 0)return{ok:!1,errors:[`spec root must be an object`]};if(!Array.isArray(n.items)){let t=_r(e);return t===null?{ok:!1,errors:[`spec.items must be an array`]}:sa(t)}yi(n,`spec`,ni,t,[`items`]);let r=0,i=!1,a=(e,n,o)=>{if(!i){if(!Array.isArray(e)){t.push(`${o} must be an array`);return}for(let s=0;s<e.length;s++){if(i||r>=M.maxNodes){i||=(t.push(`spec exceeds ${M.maxNodes} nodes; tail elided`),!0);return}r+=1;let c=`${o}[${s}]`;ha(e[s],n,c,t,a)}}};return a(n.items,0,`items`),{ok:t.length===0,errors:t}}function ca(e){let t=li(e),n=ea(t.value),r=sa(t.value),i=aa(t.value,M.maxNodes+1),a=n===null?0:oa(n),o=n===null?0:na(n),s=r.errors.filter(e=>!e.includes(`: unknown type `));return i>a&&s.push(`repair dropped ${i-a} declared native node(s): declared ${i}, rendered ${a}`),{value:t.value,normalized:t.value,repaired:n,spec:n,errors:s,warnings:[...t.warnings,...gi(t.value)],declaredCount:i,renderedCount:o,declaredNativeCount:i,renderedNativeCount:a,renderedTotalCount:o}}function la(e){return e.errors.length>0&&e.errors.every(e=>e.startsWith(`spec exceeds `)||e.startsWith(`repair dropped `))&&e.renderedNativeCount===M.maxNodes&&e.declaredNativeCount===M.maxNodes+1}function ua(e){return e.spec!==null&&(e.errors.length===0||la(e))}function da(e,t,n){if(Array.isArray(e))for(let r=0;r<e.length;r++){let i=R(e[r]),a=`${t}[${r}]`;if(i===void 0){n.push(`${a} must be an object`);continue}typeof i.label!=`string`&&n.push(`${a}.label must be a string`),(typeof i.value!=`number`||!Number.isFinite(i.value))&&n.push(`${a}.value must be a finite number`),i.color!==void 0&&typeof i.color!=`string`&&n.push(`${a}.color must be a string`)}}function fa(e,t,n){if(Array.isArray(e))for(let r=0;r<e.length;r++){let i=R(e[r]),a=`${t}[${r}]`;if(i===void 0){n.push(`${a} must be an object`);continue}typeof i.label!=`string`&&n.push(`${a}.label must be a string`),i.color!==void 0&&typeof i.color!=`string`&&n.push(`${a}.color must be a string`),Array.isArray(i.data)||n.push(`${a}.data must be an array`),da(i.data,`${a}.data`,n)}}function pa(e,t,n){!Array.isArray(e.data)&&!Array.isArray(e.series)&&n.push(`${t}: type 'chart' requires data or series (array)`),e.variant!==void 0&&n.push(`${t}.variant is unsupported; use kind`),e.data!==void 0&&!Array.isArray(e.data)&&n.push(`${t}.data must be an array`),e.series!==void 0&&!Array.isArray(e.series)&&n.push(`${t}.series must be an array`),e.kind!==void 0&&(typeof e.kind!=`string`||!wr.includes(e.kind))&&n.push(`${t}.kind must be bars, line, or donut`);let r=e.kind===void 0?`bars`:e.kind,i=Array.isArray(e.series)?e.series:void 0;if(Array.isArray(e.data)&&e.data.length===0&&(i===void 0||i.length===0)&&n.push(`${t}.data must not be empty`),i!==void 0){i.length===0&&n.push(`${t}.series must not be empty`),r===`donut`&&n.push(`${t}.series is only supported for bars and line`);for(let e=0;e<i.length;e++){let r=R(i[e]);r!==void 0&&Array.isArray(r.data)&&r.data.length===0&&n.push(`${t}.series[${e}].data must not be empty`)}}r===`donut`&&e.data===void 0&&n.push(`${t}.data is required for donut`),r===`line`&&e.data===void 0&&(i===void 0||i.length===0)&&n.push(`${t}.data is required for line (or provide series)`),da(e.data,`${t}.data`,n),fa(e.series,`${t}.series`,n)}function ma(e,t,n){if(Array.isArray(e))for(let r=0;r<e.length;r++){let i=e[r];if(R(i)===void 0){if(!Array.isArray(i)){n.push(`${t}[${r}] must be an array or object`);continue}for(let e=0;e<i.length;e++){let a=i[e];typeof a!=`string`&&(typeof a!=`number`||!Number.isFinite(a))&&n.push(`${t}[${r}][${e}] must be a string or finite number`)}}}}function ha(e,t,n,r,i){if(t>M.maxDepth){r.push(`${n}: exceeds max depth ${M.maxDepth}`);return}let a=R(e);if(a===void 0){r.push(`${n}: must be an object`);return}let o=a.type;if(typeof o!=`string`){r.push(`${n}: missing string 'type'`);return}let s=e=>{a[e]!==void 0&&typeof a[e]!=`string`&&r.push(`${n}: '${e}' must be a string`)},c=e=>{a[e]!==void 0&&(typeof a[e]!=`number`||!Number.isFinite(a[e]))&&r.push(`${n}: '${e}' must be a finite number`)};switch(o){case`text`:typeof a.content!=`string`&&typeof a.text!=`string`&&r.push(`${n}: type 'text' requires content or text (string)`),s(`content`),s(`text`);break;case`row`:case`col`:case`card`:case`grid`:Array.isArray(a.items)||r.push(`${n}: type '${o}' requires items (array)`),i(a.items,t+1,`${n}.items`),o===`grid`&&c(`cols`);break;case`button`:case`checkbox`:case`link`:case`switch`:typeof a.label!=`string`&&r.push(`${n}: type '${o}' requires label (string)`),s(`label`);break;case`image`:case`audio`:case`video`:typeof a.src!=`string`&&r.push(`${n}: type '${o}' requires src (string)`),s(`src`),s(`alt`),o===`video`&&s(`poster`);break;case`slider`:s(`label`),c(`min`),c(`max`),c(`step`),c(`value`);break;case`input`:case`textarea`:s(`label`),s(`placeholder`),s(`value`);break;case`select`:case`radio`:Array.isArray(a.options)||r.push(`${n}: type '${o}' requires options (array)`);break;case`submit`:typeof a.label!=`string`&&r.push(`${n}: type 'submit' requires label (string)`);break;case`badge`:typeof a.label!=`string`&&typeof a.text!=`string`&&typeof a.value!=`string`&&r.push(`${n}: type 'badge' requires label, text, or value (string)`),s(`label`),s(`text`),s(`value`);break;case`hero`:typeof a.title!=`string`&&r.push(`${n}: type 'hero' requires title (string)`),s(`subtitle`);break;case`stat`:typeof a.label!=`string`&&r.push(`${n}: type 'stat' requires label (string)`),typeof a.value!=`string`&&r.push(`${n}: type 'stat' requires value (string)`),s(`delta`);break;case`progress`:(typeof a.value!=`number`||!Number.isFinite(a.value)||a.value<0||a.value>100)&&r.push(`${n}: type 'progress' requires value (number 0..100)`),c(`value`);break;case`avatar`:typeof a.name!=`string`&&r.push(`${n}: type 'avatar' requires name (string)`);break;case`list`:if(Array.isArray(a.items)||r.push(`${n}: type 'list' requires items (array)`),Array.isArray(a.items))for(let e=0;e<a.items.length;e++){let o=R(a.items[e]);o!==void 0&&typeof o.type==`string`&&ha(o,t+1,`${n}.items[${e}]`,r,i)}break;case`table`:Array.isArray(a.columns)||r.push(`${n}: type 'table' requires columns (array)`),Array.isArray(a.rows)||r.push(`${n}: type 'table' requires rows (array)`),a.types!==void 0&&!Array.isArray(a.types)&&r.push(`${n}.types must be an array of column cell types`),a.details!==void 0&&!Array.isArray(a.details)&&r.push(`${n}.details must be an array aligned with rows`),ma(a.rows,`${n}.rows`,r);break;case`chart`:pa(a,n,r);break;case`tabs`:if(Array.isArray(a.tabs)||r.push(`${n}: type 'tabs' requires tabs (array)`),Array.isArray(a.tabs))for(let e=0;e<a.tabs.length;e++){let o=R(a.tabs[e]);if(o===void 0){r.push(`${n}.tabs[${e}] must be an object`);continue}typeof o.label!=`string`&&r.push(`${n}.tabs[${e}].label must be a string`),i(o.items,t+1,`${n}.tabs[${e}].items`)}break;case`plot`:Array.isArray(a.series)||r.push(`${n}: type 'plot' requires series (array)`);break;case`callout`:typeof a.content!=`string`&&r.push(`${n}: type 'callout' requires content (string)`);break;case`steps`:Array.isArray(a.steps)||r.push(`${n}: type 'steps' requires steps (array)`);break;case`keyvalue`:Array.isArray(a.pairs)||r.push(`${n}: type 'keyvalue' requires pairs (array)`);break;case`diff`:Array.isArray(a.diffs)||r.push(`${n}: type 'diff' requires diffs (array)`);break;case`json`:`value`in a||r.push(`${n}: type 'json' requires value`);break;case`code`:typeof a.code!=`string`&&r.push(`${n}: type 'code' requires code (string)`);break;case`accordion`:if(Array.isArray(a.items)||r.push(`${n}: type 'accordion' requires items (array)`),Array.isArray(a.items))for(let e=0;e<a.items.length;e++){let o=R(a.items[e]);if(o===void 0){r.push(`${n}.items[${e}] must be an object`);continue}typeof o.title!=`string`&&r.push(`${n}.items[${e}].title must be a string`),i(o.items,t+1,`${n}.items[${e}].items`)}break;case`copy`:typeof a.text!=`string`&&r.push(`${n}: type 'copy' requires text (string)`);break;case`mermaid`:typeof a.code!=`string`&&r.push(`${n}: type 'mermaid' requires code (string)`);break;case`scene3d`:Array.isArray(a.meshes)||r.push(`${n}: type 'scene3d' requires meshes (array)`);break;case`timeline`:Array.isArray(a.items)||r.push(`${n}: type 'timeline' requires items (array)`);break;case`file-tree`:Array.isArray(a.items)||r.push(`${n}: type 'file-tree' requires items (array)`);break;case`breadcrumb`:Array.isArray(a.items)||r.push(`${n}: type 'breadcrumb' requires items (array)`);break;case`quiz`:typeof a.question!=`string`&&r.push(`${n}: type 'quiz' requires question (string)`),Array.isArray(a.options)||r.push(`${n}: type 'quiz' requires options (array)`);break;case`diagram`:typeof a.kind!=`string`&&r.push(`${n}: type 'diagram' requires kind (string)`),Array.isArray(a.nodes)||r.push(`${n}: type 'diagram' requires nodes (array)`),a.edges!==void 0&&!Array.isArray(a.edges)&&r.push(`${n}: type 'diagram' requires edges (array) when present`);break;case`echart`:a.option===void 0&&a.data===void 0&&a.series===void 0&&(!Array.isArray(a.links)||a.links.length===0)&&r.push(`${n}: type 'echart' requires option, data, series, or links`),c(`height`);break;default:r.push(`${n}: unknown type '${o}' (custom renderer?)`)}let l=ri[o];l!==void 0&&Si(a,n,l,r)}function ga(e){let t=[],n=[],r=e=>{n.length>=32&&n.shift(),n.push(e)},i=!1,a=!1,o=0;for(;o<e.length;o++){let n=e[o];if(i){a?a=!1:n===`\\`?a=!0:n===`"`&&(i=!1);continue}if(n===`"`){i=!0;continue}if(n===`{`||n===`[`){t.push(n);continue}if(n===`}`||n===`]`){if(t.pop()!==(n===`}`?`{`:`[`))break;n===`}`&&t.length===2&&t[0]===`{`&&t[1]===`[`&&r({end:o+1,closingSuffix:`]}`}),t.length===0&&r({end:o+1,closingSuffix:``});continue}}n.sort((e,t)=>t.end-e.end);let s=[];for(let e of n)(s.length===0||s[s.length-1].end!==e.end)&&s.push(e);return{candidates:s.slice(0,32),scannedChars:o}}function _a(e,t){try{let n=JSON.parse(e);return vr(n)?n:t?_r(n):null}catch{return null}}function va(e){let t=e.trim();if(t===``)return null;let n=_a(t,!0);if(n!==null)return n;let{candidates:r}=ga(t);for(let e of r){let n=_a(t.slice(0,e.end)+e.closingSuffix,!1);if(n!==null)return n}return null}let Q={maxNodes:200,maxAppends:200},ya=new Map,ba=new Set;function xa(){return{ops:new Map,seen:new Map,overflow:null,local:null,localBarrier:-1,replayBarrier:-1,maxSeenSeq:-1,snapshot:null}}let Sa=`dsh.genui.panel`;function Ca(){try{let e=localStorage.getItem(Sa);if(e===null)return{order:[],sessions:{}};let t=JSON.parse(e);return!Array.isArray(t.order)||typeof t.sessions!=`object`||t.sessions===null?{order:[],sessions:{}}:{order:t.order.filter(e=>typeof e==`string`),sessions:t.sessions}}catch{return{order:[],sessions:{}}}}function wa(e,t){try{let n=Ca(),r=n.order.filter(t=>t!==e);r.unshift(e);let i={...n.sessions,[e]:t};for(;r.length>50;){let e=r.pop();e!==void 0&&delete i[e]}localStorage.setItem(Sa,JSON.stringify({order:r,sessions:i}))}catch{}}function Ta(e){let t=ya.get(e);if(t!==void 0)return t;let n=xa();try{let t=Ca().sessions[e];t!==void 0&&(n={ops:new Map,seen:new Map,overflow:null,local:t.local??null,localBarrier:t.localBarrier??-1,replayBarrier:t.maxSeenSeq??-1,maxSeenSeq:t.maxSeenSeq??-1,snapshot:t.snapshot??null})}catch{}return ya.set(e,n),n}function Ea(e,t){for(let n=0;n<3;n++){let r=e[n]-t[n];if(r!==0)return r}return 0}function Da(e,t){if(t!==null&&(t.order[0]<=e.localBarrier||t.order[0]<=e.replayBarrier||e.seen.has(t.sourceId)||e.overflow!==null&&e.overflow.sourceId===t.sourceId||t.mode===`append`&&e.overflow!==null&&Ea(t.order,e.overflow.order)>0))return null;let n=[...e.ops.values()].filter(t=>t.order[0]>e.localBarrier&&t.order[0]>e.replayBarrier);t!==null&&n.push(t),n.sort((e,t)=>Ea(e.order,t.order));let r=0;for(let e=0;e<n.length;e++){let t=n[e];t.mode===`replace`&&na(t.spec,Q.maxNodes+1)<=Q.maxNodes&&(r=e)}let i=e.local,a=null,o=0,s=[],c=e.maxSeenSeq;for(let e=r;e<n.length;e++){let t=n[e];if(t.order[0]>c&&(c=t.order[0]),t.mode===`replace`){if(na(t.spec,Q.maxNodes+1)>Q.maxNodes){(a===null||Ea(t.order,a.order)<0)&&(a=t);continue}a=null,i=t.spec,s.length=0,o=0,s.push(t);continue}let r=za(i,t.spec);if(o>=Q.maxAppends||na(r,Q.maxNodes+1)>Q.maxNodes){(a===null||Ea(t.order,a.order)<0)&&(a=t);continue}i=r,o+=1,s.push(t)}return t!==null&&s.length===e.ops.size&&s.every(t=>e.ops.get(t.sourceId)?.mode===t.mode)&&(a===null&&e.overflow===null||a!==null&&e.overflow!==null&&a.sourceId===e.overflow.sourceId)?null:{snapshot:i,kept:s,overflow:a,maxSeenSeq:c}}function Oa(e,t,n){e.snapshot=t.snapshot,e.overflow=t.overflow,e.maxSeenSeq=t.maxSeenSeq,e.ops=new Map(t.kept.map(e=>[e.sourceId,e]));for(let n of t.kept)e.seen.set(n.sourceId,n.order);t.overflow!==null&&e.seen.set(t.overflow.sourceId,t.overflow.order),wa(n,{snapshot:e.snapshot,local:e.local,localBarrier:e.localBarrier,maxSeenSeq:e.maxSeenSeq})}function ka(e,t){let n=Ta(e),r=Da(n,t);if(r===null)return n.seen.has(t.sourceId)||n.overflow?.sourceId===t.sourceId?`idempotent`:(n.overflow!==null&&t.mode===`append`&&Ea(t.order,n.overflow.order)>0||ja(e,t,n),`blocked`);let i=r.overflow!==null&&r.overflow.sourceId===t.sourceId?`overflow`:`accepted`,a=n.snapshot!==r.snapshot;if(Oa(n,r,e),a)for(let e of ba)e();return i}let Aa=new Set;function ja(e,t,n){let r=`${e}\u0000${t.sourceId}`;Aa.has(r)||(Aa.add(r),console.warn(`[genui] 面板操作被重放屏障拒绝(source ${t.sourceId},order[0]=${t.order[0]} ≤ replayBarrier ${n.replayBarrier} / localBarrier ${n.localBarrier})。历史消息重放被拒是预期行为;若是刚发送的新消息,说明消息序号推导异常,请报告。`))}function Ma(e,t){let n=Ta(e),r=n.maxSeenSeq;if(n.local!==t||n.localBarrier!==r){n.local=t,n.localBarrier=r,Oa(n,Da(n,null),e);for(let e of ba)e()}}let Na=new Set;function Pa(e,t){let n=`${e}\u0000${t}`;Na.has(n)||(Na.add(n),console.warn(`[genui] 面板已到节点/操作上限(${Q.maxNodes} 节点、${Q.maxAppends} 条追加),本次 append 被拒绝;请让模型发送 replace 更新面板。`))}function Fa(e){let t=ya.delete(e),n=Ba.delete(e),r=`${e}\u0000`;for(let e of Na)e.startsWith(r)&&Na.delete(e);for(let e of Aa)e.startsWith(r)&&Aa.delete(e);if(!(!t&&!n)){for(let e of ba)e();for(let e of Va)e()}}function Ia(e){return Ta(e).snapshot}function La(e){return ba.add(e),()=>{ba.delete(e)}}function Ra(e){if(e.items.length!==1)return null;let t=e.items[0];return t?.type!==`tabs`||!Array.isArray(t.tabs)?null:t.tabs}function za(e,t){if(e===null||e.items.length===0)return t;let n=e.title??t.title,r={...e,...n===void 0?{}:{title:n}},i=Ra(e),a=Ra(t);if(i!==null&&a!==null){let e=new Map(i.map(e=>[e.label,{label:e.label,items:[...e.items]}]));for(let t of a){let n=e.get(t.label);n===void 0?e.set(t.label,{label:t.label,items:[...t.items]}):n.items.push(...t.items)}return{...r,items:[{type:`tabs`,tabs:[...e.values()]}]}}return{...r,items:[...e.items,...t.items]}}let Ba=new Map,Va=new Set;function Ha(e){Ba.set(e,(Ba.get(e)??0)+1);for(let e of Va)e()}function Ua(e){return Ba.get(e)??0}function Wa(e){return Va.add(e),()=>{Va.delete(e)}}function Ga(e){try{return JSON.parse(e),!0}catch{return!1}}function Ka(e){try{return JSON.parse(e),null}catch(e){let t=e instanceof Error?e.message:String(e),n=t.match(/position (\d+)/i);return`${n===null?``:`(字符 ${n[1]} 附近)`}${t.slice(0,140)}`}}function qa(e){try{return JSON.parse(e),null}catch{}let t=``,n=!1,r=!1,i=0;for(let a=0;a<e.length;a++){let o=e[a];if(r){t+=o,r=!1;continue}if(n&&o===`\\`){t+=o,r=!0;continue}if(o===`"`){if(!n){n=!0,t+=o;continue}let r=a+1;for(;r<e.length&&(e[r]===` `||e[r]===` `||e[r]===`
|
|
2
4
|
`||e[r]===`\r`);)r++;let s=r<e.length?e[r]:``;s===`,`||s===`]`||s===`}`||s===`:`||s===``?(n=!1,t+=o):(t+=`\\"`,i++);continue}if(o===`,`){let t=a+1;for(;t<e.length&&(e[t]===` `||e[t]===` `||e[t]===`
|
|
3
|
-
`||e[t]===`\r`);)t++;let n=t<e.length?e[t]:``;if(n===`}`||n===`]`||n===``){i++;continue}}t+=o}if(i===0)return null;try{return JSON.parse(t),{text:t,repairs:i}}catch{return null}}function
|
|
5
|
+
`||e[t]===`\r`);)t++;let n=t<e.length?e[t]:``;if(n===`}`||n===`]`||n===``){i++;continue}}t+=o}if(i===0)return null;try{return JSON.parse(t),{text:t,repairs:i}}catch{return null}}function Ja(e){try{return JSON.parse(e),null}catch{}let t=``,n=[],r=!1,i=!1,a=0;for(let o=0;o<e.length;o++){let s=e[o];if(i){t+=s,i=!1;continue}if(r){if(s===`\\`){t+=s,i=!0;continue}if(s!==`"`){t+=s;continue}let n=o+1;for(;n<e.length&&(e[n]===` `||e[n]===` `||e[n]===`
|
|
4
6
|
`||e[n]===`\r`);)n++;let c=n<e.length?e[n]:``;c===`,`||c===`]`||c===`}`||c===`:`||c===``?(r=!1,t+=s):(t+=`\\"`,a++);continue}if(s===`"`){r=!0,t+=s;continue}if(s===`{`){n.push(`}`),t+=s;continue}if(s===`[`){n.push(`]`),t+=s;continue}if(s===`}`||s===`]`){n[n.length-1]===s?(n.pop(),t+=s):a++;continue}if(s===`,`){let t=o+1;for(;t<e.length&&(e[t]===` `||e[t]===` `||e[t]===`
|
|
5
|
-
`||e[t]===`\r`);)t++;let n=t<e.length?e[t]:``;if(n===`}`||n===`]`||n===``){a++;continue}}t+=s}for(r&&(t+=`"`,a++);n.length>0;)t+=n.pop(),a++;if(a===0)return null;try{return JSON.parse(t),{text:t,repairs:a}}catch{return null}}let ma={margin:`0 0 6px`,padding:`6px 10px`,borderRadius:6,background:`rgba(239, 68, 68, 0.14)`,border:`1px solid rgba(239, 68, 68, 0.4)`,color:`#f87171`,fontSize:12,lineHeight:1.55,whiteSpace:`pre-wrap`};function ha(e){let t=e.filter(e=>/(?:variant is unsupported|kind must be bars, line, or donut|requires data or series|(?:data|series) is required for|(?:\.data|\.series)(?:\[\d+\])?(?:\.(?:data|label|value|color))? must|series is only supported for bars)/.test(e));return t.length===0?null:t.join(`;`)}function ga(e){let t=Li(e);if(t===null)return null;let n=Di(t);if(ki(n))return null;let r=ha(n.errors);return r===null?`GenUI 字段验证失败:${n.errors.join(`;`)}`:`chart 字段验证失败:${r}`}function _a({raw:e,fenceKey:t}){let n=(0,m.useRef)(null),[r,i]=(0,m.useState)(!1);(0,m.useLayoutEffect)(()=>{let e=n.current;e!==null&&e.closest(`[data-streaming]`)===null&&i(!0)});let a=r?ga(e):null,o=r&&a===null&&e.trim()!==``?da(e):null;return(0,g.jsxs)(`div`,{ref:n,children:[a!==null&&(0,g.jsxs)(`div`,{style:ma,role:`alert`,children:[`⚠️ dsh-ui `,a,` —— 围栏保持为代码块;请修正后重发。`]}),a===null&&o!==null&&(0,g.jsxs)(`div`,{style:ma,role:`alert`,children:[`⚠️ dsh-ui fence JSON 解析失败`,o,` —— 围栏保持为代码块;请让模型检查并修复 JSON 后重发。`]}),(0,g.jsx)(p.CodeBlock,{...x,code:`${e}\n`,lang:`dsh-ui`},t)]})}function va({sessionId:e,sourceId:t,order:n,spec:r}){return(0,m.useEffect)(()=>{Ji(e,{sourceId:t,order:n,mode:r.append===!0?`append`:`replace`,spec:r})===`overflow`&&$i(e,t)},[e,t,n,r]),null}function ya(e){let t=Di(e);return ki(t)?t.spec:null}function ba(e,t){let n=Li(e),r=n===null?null:ya(n);if(r===null){let n=fa(e);if(n!==null){let e=Li(n.text);r=e===null?null:ya(e)}if(r===null&&t?.source!==void 0){let t=pa(e);if(t!==null){let e=Li(t.text);r=e===null?null:ya(e)}}}return r}function xa(e,t,n){let r=t?.sessionId;return(0,g.jsx)(w,{label:`该界面`,children:(0,g.jsx)(Bn,{spec:n,stateKey:r===void 0?void 0:ae(r,t?.source?.id??String(e),JSON.stringify(n))})},t?.source?.id??e)}function Sa(e,t,n){let r=ba(e,n);return r===null?null:r.panel===!0?n!==void 0&&n.sessionId!==void 0&&n.source!==void 0?r.append===!0&&!ua(e)?(0,g.jsx)(m.Fragment,{},t):(0,g.jsx)(va,{sessionId:n.sessionId,sourceId:n.source.id,order:n.source.order,spec:r},t):(0,g.jsx)(m.Fragment,{},t):xa(t,n,r)}function Ca(e,t,n){let r=ba(e,n);return r===null?(0,g.jsx)(_a,{fenceKey:t,raw:e},t):r.panel===!0?n!==void 0&&n.sessionId!==void 0&&n.source!==void 0?r.append===!0&&!ua(e)?null:(0,g.jsx)(va,{sessionId:n.sessionId,sourceId:n.source.id,order:n.source.order,spec:r},t):null:xa(t,n,r)}let wa=`.md-code-block, .code-block, .code-block-small`,Q=`data-genui-rendered`,Ta=`[data-streaming]`,Ea=`genui-dom-fence`;function Da(e){let t=e.querySelectorAll(`pre`);if(t.length>1)return!1;let n=t[0]??null;for(let t of e.querySelectorAll(`p, ul, ol, dl, table, h1, h2, h3, h4, h5, h6, blockquote, hr, img, figure`))if(!(n!==null&&n.contains(t)))return!1;return!0}function Oa(e){return(0,m.isValidElement)(e)&&e.type===m.Fragment}function ka(e){return e.nodeType===Node.TEXT_NODE}function Aa(e){let t=e.querySelector(`pre`);for(let n of e.querySelectorAll(`*`)){if(n.childElementCount!==0||n.textContent!==`dsh-ui`||t!==null&&t.contains(n))continue;let r=n.closest(wa);if(r===null||r===e)return`dsh-ui`}return null}function ja(e){let t=e.querySelector(`pre`);for(let n of e.querySelectorAll(`*`))if(n.childElementCount===0&&!(t!==null&&t.contains(n)))return n.textContent??``;return``}function Ma(e){let t=e.querySelector(`pre`);if(t===null)return``;let n=``;for(let e of t.childNodes)ka(e),n+=e.textContent??``;return n}function Na(e){return e.closest(Ta)===null}function Pa(e,t=document){let n=e.parentElement;for(let e=0;n!==null&&n!==t&&e<4;e+=1,n=n.parentElement)if(Aa(n)===`dsh-ui`)return Da(n)?n:null;return null}function Fa(e,t=document){let n=e.parentElement;for(let e=0;n!==null&&n!==t&&e<4;e+=1,n=n.parentElement)if(Aa(n)===`dsh-ui`&&!Da(n))return n;return null}function Ia(e=document){let t=new Set,n=[];for(let r of e.querySelectorAll(wa))(r.parentElement===null||r.parentElement.closest(wa)===null)&&(t.has(r)||Da(r)&&(n.push(r),t.add(r)));for(let r of e.querySelectorAll(`pre`)){if(r.closest(wa)!==null)continue;let i=Pa(r,e);if(i===null){Fa(r,e)!==null&&!Ra&&(Ra=!0,console.warn(`[dsh-genui] 跳过带 dsh-ui 标签但疑似消息容器的节点(含段落或多个代码体)——防止 DOM 通道隐藏整条消息(issue #19)`));continue}t.has(i)||(La||(La=!0,console.warn(`[dsh-genui] 围栏表面类名未被已知选择器命中(宿主 DOM 漂移),已按 label+pre 结构识别 dsh-ui 围栏`)),n.push(i),t.add(i))}return n}let La=!1,Ra=!1,za=h.createRoot,Ba=`[data-chat-flow-key], [data-chat-flow-kind]`;function Va(e){return e.closest(`[data-chat-anchor-key]`)??e.closest(Ba)??e}function Ha(e,t){let n=e===t?document:e,r=0;for(let e of Ia(n))if(e.closest(Ta)===null&&Aa(e)!==null&&(r+=1,e===t))return r;return r+1}function Ua(e){let t=e.getAttribute(`data-chat-anchor-key`)??``,n=/assistant-step(\d+):(\d+)$/.exec(t);if(n!==null){let e=Number(n[1]),t=Number(n[2]);if(Number.isFinite(e)&&Number.isFinite(t))return e*1e3+t}let r=document.querySelectorAll(`[data-chat-anchor-key], ${Ba}`);for(let t=0;t<r.length;t+=1)if(r[t]===e)return t;return 0}function Wa(e,t){if(typeof document>`u`)return()=>{};La=!1,Ra=!1;let n=new Map,r=!1,i=null,a=()=>{try{return e.sessions.list.getSnapshot().current}catch{return}};function o(e,t,n){n&&e.getAttribute(`data-chat-anchor-key`)===null&&l(t,`no [data-chat-anchor-key] ancestor for a dsh-ui fence (host render path without row anchor — e.g. Safari); using fallback identity dom:unknown:N`);let r=Ha(e,t),i=`dom:${e.getAttribute(`data-chat-anchor-key`)??`unknown`}:${r}`,o=a();return{key:i,context:{...o===void 0?{}:{sessionId:o},...n?{source:{id:i,order:[Ua(e),0,r]}}:{}}}}function s(e){let t=n.get(e);t!==void 0&&(n.delete(e),t.root.unmount(),t.container.remove(),e.style.display=``,e.removeAttribute(Q))}let c=new WeakSet;function l(e,t){c.has(e)||(c.add(e),console.warn(`[dsh-genui] ${t}`))}function u(e){if(e.hasAttribute(Q))return;let r=Va(e),i=Na(e);if(i&&Aa(e)===null)return;let s=Ma(e);if(s.trim()===``){i&&l(e,`settled dsh-ui fence has an empty body; keeping the code block`);return}let{key:c,context:u}=o(r,e,i),d=Sa(s,c,u);if(d===null){i&&l(e,`settled dsh-ui fence body does not parse; keeping the code block`);return}let f=document.createElement(`div`);f.className=Ea,e.after(f);let p;try{p=za(f)}catch(t){f.remove(),l(e,`failed to create a React root for a dsh-ui fence (${t instanceof Error?t.message:String(t)}); keeping the stock code block visible`);return}try{p.render((0,g.jsx)(v.Provider,{value:(e,n)=>{let r=a();r!==void 0&&t(r,e,n)},children:d}))}catch(t){try{p.unmount()}catch{}f.remove(),l(e,`failed to mount a dsh-ui fence (${t instanceof Error?t.message:String(t)}); keeping the stock code block visible`);return}e.style.display=`none`,e.setAttribute(Q,``),n.set(e,{root:p,container:f,block:e,lastRaw:s,lastSettled:i,lastNode:d})}function d(){for(let e of Array.from(n.values())){let t=e.block;if(!t.isConnected){e.container.isConnected&&s(t);continue}if((e.container.parentElement!==t.parentElement||e.container.previousElementSibling!==t)&&t.after(e.container),!e.container.isConnected){t.style.display=``,t.removeAttribute(Q),n.delete(t);try{e.root.unmount()}catch{}e.container.remove(),l(t,`dsh-ui replacement container could not be re-attached after a host re-render; restoring the stock code block`);continue}t.style.display!==`none`&&(t.style.display=`none`),t.hasAttribute(Q)||t.setAttribute(Q,``)}}function f(){if(!r){for(let[e,r]of n){if(!e.isConnected){s(e);continue}let i=Ma(e),c=Na(e);if(c&&!r.lastSettled){let t=ja(e);if(t!==``&&t!==`dsh-ui`){s(e);continue}}let u=!Oa(r.lastNode)&&r.container.childElementCount===0;if(r.lastRaw!==i||r.lastSettled!==c||u){let{key:d,context:f}=o(Va(e),e,c),p=Sa(i,d,f);if(p===null){s(e);continue}if(u){try{r.root.unmount()}catch{}let i=document.createElement(`div`);i.className=Ea,r.container.remove(),e.after(i);try{let e=za(i);e.render((0,g.jsx)(v.Provider,{value:(e,n)=>{let r=a();r!==void 0&&t(r,e,n)},children:p})),r.root=e,r.container=i}catch(t){i.remove(),e.style.display=``,e.removeAttribute(Q),n.delete(e),l(e,`failed to rebuild a wiped dsh-ui mount (${t instanceof Error?t.message:String(t)}); restoring the stock code block`);continue}}else try{r.root.render((0,g.jsx)(v.Provider,{value:(e,n)=>{let r=a();r!==void 0&&t(r,e,n)},children:p}))}catch(t){s(e),l(e,`failed to re-render a dsh-ui fence (${t instanceof Error?t.message:String(t)}); restoring the stock code block`);continue}r.lastRaw=i,r.lastSettled=c,r.lastNode=p}}d();for(let e of Ia())u(e)}}let p=()=>{r||i!==null||(i=requestAnimationFrame(()=>{i=null,!r&&f()}))},m=new MutationObserver(()=>{d(),p()});m.observe(document.body,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`data-streaming`],characterData:!0});let h=window.setInterval(f,1e3);return f(),()=>{r=!0,m.disconnect(),window.clearInterval(h),i!==null&&(cancelAnimationFrame(i),i=null);for(let e of Array.from(n.keys()))s(e)}}let Ga={title:`GenUI 面板`,items:[{type:`text`,size:`h3`,content:`GenUI 生成式界面`},{type:`text`,size:`muted`,content:`面板会原地更新:对话里说「更新面板」,或再次执行 /panel 刷新。`},{type:`grid`,cols:4,items:[{type:`stat`,label:`组件`,value:`38`},{type:`stat`,label:`单个`,value:`12`},{type:`stat`,label:`组合`,value:`8`},{type:`stat`,label:`高级`,value:`18`}]},{type:`list`,items:[{title:`单个 ×12`,desc:`text button input select checkbox link badge stat progress divider avatar spacer`},{title:`组合 ×8`,desc:`row col grid card list table chart tabs`},{title:`数据 ×7`,desc:`plot callout steps keyvalue diff json code`},{title:`交互 ×5`,desc:`radio switch textarea accordion copy`},{title:`高级 ×5`,desc:`mermaid scene3d timeline file-tree breadcrumb`},{title:`教学 ×1`,desc:`quiz`}]},{type:`callout`,tone:`info`,title:`更新方式`,content:`对话说「更新面板」→ 模型输出 panel:true 围栏;/panel clear 清空面板。`}]};function Ka(e,t){let n=t.trim().toLowerCase();if(n===`clear`||n===`off`||n===`close`){Zi(e,null);return}Zi(e,Ga),sa(e)}function qa(e,t){return{token:`/panel`,hint:`开启 GenUI 面板;/panel <指令> 让模型定制;/panel clear 清空`,submit:async(n,r)=>{let i=n.trim();return i===``?Ka(e,``):/^(clear|off|close)$/i.test(i)?Ka(e,i):(Ka(e,``),t(e,i)),{kind:`success`}}}}function Ja(e){return{trigger:`/`,name:`genui`,order:60,candidates:async(e,t)=>{let n=t.query.toLowerCase();return n!==``&&!`panel`.startsWith(n)?[]:[{name:`panel`,description:`开启 GenUI 面板(/panel clear 清空;/panel <指令> 定制内容)`,hint:`/panel`}]},onPick(t){return{claim:qa(t.session.sessionId,e)}},matchEnter:async(t,n,r)=>{if(/^\/panel(?:\s|$)/.test(n.trim()))return{claim:qa(t.sessionId,e)}}}}let Ya=[{id:`tpl-dashboard`,category:`仪表盘`,name:`项目仪表盘`,description:`一张卡片汇总核心指标:数字 + 环比 + 进度条,决策一眼可见。`,instruction:`请用 dsh-ui 给当前项目做一个仪表盘:4 个关键指标的 stat 卡片(带环比 delta)、整体进度 progress 条、今天的 3 件待办 list。标题用「项目仪表盘」。`,demo:{title:`项目仪表盘(示例)`,gap:12,items:[{type:`card`,title:`本周关键指标`,items:[{type:`grid`,cols:2,items:[{type:`stat`,label:`本周完成`,value:`12 / 18`,delta:`+4`},{type:`stat`,label:`阻塞事项`,value:`2`,delta:`-1`},{type:`stat`,label:`平均耗时`,value:`3.2h`,delta:`-8%`},{type:`stat`,label:`覆盖率`,value:`86%`}]}]},{type:`card`,title:`整体进度`,items:[{type:`progress`,label:`v1.0 里程碑`,value:68,valueLabel:`68 / 100`}]},{type:`card`,title:`今日待办`,items:[{type:`list`,items:[`评审 M1 模板中心 PR`,`同步 vendor 到 SSiD`,`周三周会材料`]}]}]}},{id:`tpl-compare`,category:`数据`,name:`方案对比表`,description:`多方案逐维度对照,表格直接可读,争议点一目了然。`,instruction:`请用 dsh-ui 把以下方案的对比做成一张 table:方案 A/B/C × 维度(成本/复杂度/风险/收益),列首高亮推荐项;顶部加一行 callout 说明结论。`,demo:{title:`方案对比(示例)`,items:[{type:`callout`,tone:`info`,title:`结论`,content:`方案 B 综合最优:成本中、复杂度低、风险低。`},{type:`table`,columns:[`维度`,`方案 A`,`方案 B ★`,`方案 C`],rows:[[`成本`,`高`,`中`,`低`],[`复杂度`,`高`,`中`,`低`],[`风险`,`低`,`低`,`高`],[`收益`,`大`,`中`,`小`]]}]}},{id:`tpl-steps`,category:`流程`,name:`五步上手流程`,description:`关键步骤排成时间线,每步一句要点,适合教程/交接/发布流程。`,instruction:`请用 dsh-ui 把操作步骤做成 steps 教程:5 步(按实际流程),每步标题 + 一两句要点,顶部用 badge 标出预计耗时。`,demo:{title:`上手流程(示例)`,items:[{type:`badge`,label:`约 5 分钟`,tone:`accent`},{type:`steps`,current:2,steps:[{title:`安装插件`,desc:`从插件中心安装,或 npm 安装到 profile`},{title:`发送第一条指令`,desc:`让模型用 dsh-ui 输出一个界面`},{title:`体验交互`,desc:`点按钮/判卷/切 tab,动作会回传模型`},{title:`常驻面板`,desc:`模型用 panel:true 把结果钉在会话面板`},{title:`进阶组件`,desc:`图表/流程/3D 按需懒加载`}]}]}},{id:`tpl-quiz`,category:`测验`,name:`随堂测验`,description:`一题一答即时判卷:选中即知对错,附讲解,适合培训问答。`,instruction:`请用 dsh-ui 出 3 道随堂测验(quiz 组件:question + options,其中一项 correct,附 explanation),标题「随堂测验」,每题即选即评。`,demo:{title:`随堂测验(示例)`,gap:10,items:[{type:`text`,content:`选中即判卷并显示讲解。`,size:`muted`},{type:`quiz`,id:`q-dsh`,question:`DSH 插件的最小单位是?`,options:[{label:`服务`},{label:`插件(cordis 插件)`,correct:!0,feedback:`✓ 一切皆插件:服务、工具、UI 都通过插件注册。`},{label:`工具`}],explanation:`DSH 基于 cordis,任何能力(含服务与工具)都以插件形式注册。`},{type:`quiz`,id:`q-fence`,question:`dsh-ui 围栏由谁输出?`,options:[{label:`用户`},{label:`模型`,correct:!0,feedback:`✓ 模型在回复中输出 dsh-ui fence。`},{label:`宿主`}],explanation:`模型输出 fence,渲染器将其画成真实组件。`},{type:`quiz`,id:`q-panel`,question:`panel:true 的围栏渲染到哪里?`,options:[{label:`消息流`},{label:`会话面板 dock`,correct:!0,feedback:`✓ 面板更新不刷屏。`},{label:`设置页`}]}]}},{id:`tpl-stats`,category:`数据`,name:`关键值 + 进度`,description:`一次交付:数值、进度、里程碑三件套,周报/复盘通用。`,instruction:`请用 dsh-ui 总结本周关键数据:keyvalue 列 3 组关键值、两根 progress 进度(计划 vs 实际)、timeline 放 3 个里程碑,标题「周报速览」。`,demo:{title:`周报速览(示例)`,items:[{type:`keyvalue`,pairs:[{key:`完成项`,value:`12`},{key:`延期`,value:`1`},{key:`风险`,value:`2(均已有缓解)`}]},{type:`progress`,label:`计划进度`,value:75,valueLabel:`75%`},{type:`progress`,label:`实际进度`,value:82,valueLabel:`82%`},{type:`timeline`,items:[{title:`周一`,desc:`完成 M1 开发`,time:`08-25`},{title:`周三`,desc:`全链路验证通过`,time:`08-27`},{title:`周五`,desc:`发布 0.9.4`,time:`08-29`}]}]}},{id:`tpl-chart`,category:`图表`,name:`趋势柱状图`,description:`数据直接画成柱状图,多序列对比,走势一眼看清。`,instruction:`请用 dsh-ui 把下列数据画成 chart(bars,多序列):近 6 周完成量 vs 计划量;图表上方给一句趋势结论。`,demo:{title:`趋势对比(示例)`,items:[{type:`text`,content:`结论:近 3 周完成量连续上升,本周首次反超计划。`},{type:`chart`,kind:`line`,data:[{label:`W21`,value:8},{label:`W22`,value:10},{label:`W23`,value:9},{label:`W24`,value:12},{label:`W25`,value:15},{label:`W26`,value:18}]}]}},{id:`tpl-tabs`,category:`交互`,name:`分标签页`,description:`一大块内容拆成标签页,锚点清晰;面板不挤、消息不刷屏。`,instruction:`请用 dsh-ui 把内容分成 tabs 三个标签:概览/明细/FAQ,每个标签 3 条以内要点;标题「功能速览」。`,demo:{title:`功能速览(示例)`,items:[{type:`tabs`,tabs:[{label:`概览`,items:[{type:`text`,content:`三项能力:实时渲染、交互回传、常驻面板。`}]},{label:`明细`,items:[{type:`list`,items:[`渲染:fence 增量解析,边流边出`,`交互:动作回传模型增量更新`,`面板:会话级 dock,折叠/调高`]}]},{label:`FAQ`,items:[{type:`text`,content:`问:不动模型会怎样?答:组件仍可本地判卷/展开。`}]}]}]}},{id:`tpl-checklist`,category:`流程`,name:`交付检查清单`,description:`提交前逐项打勾:清单即流程,漏项看得见。`,instruction:`请用 dsh-ui 做一张交付检查清单:6 项(测试/文档/发布/回滚/监控/公告),checkbox 可勾选,顶部 badge 提示「全部勾选再合并」。`,demo:{title:`交付清单(示例)`,items:[{type:`badge`,label:`全部勾选再合并`,tone:`warn`},{type:`list`,items:[{type:`checkbox`,label:`单元测试通过`},{type:`checkbox`,label:`文档同步`},{type:`checkbox`,label:`发布套餐就绪`},{type:`checkbox`,label:`回滚预案`}]}]}},{id:`tpl-accordion`,category:`高级`,name:`FAQ 手风琴`,description:`一问一答收在折叠面板里,长文档变短,回答不吓人。`,instruction:`请用 dsh-ui 做 FAQ 手风琴(accordion):5 个高频问题,标题栏就是问题、展开一条给答案;第一问默认展开。`,demo:{title:`FAQ(示例)`,items:[{type:`accordion`,items:[{title:`支持哪些图表?`,items:[{type:`text`,content:`chart(bars/line/donut)、plot 函数图、echart 全功能图表。`}]},{title:`面板能持久吗?`,items:[{type:`text`,content:`同一内容指纹刷新/重放恢复状态;新内容重置。`}]},{title:`交互会打扰模型吗?`,items:[{type:`text`,content:`带 action 的组件才回传;纯展示组件零往返。`}]}]}]}},{id:`tpl-diagram`,category:`高级`,name:`系统架构图`,description:`框架图画成 SVG:节点分层、连接线、分区标注,比截图清楚。`,instruction:`请用 dsh-ui 画一幅架构图(diagram):描述当前系统的 5 个节点与连接(kind: architecture 或 flowchart),包含一个安全区 zone。`,demo:{title:`架构图(示例)`,items:[{type:`diagram`,kind:`flowchart`,title:`DSH 插件链路`,nodes:[{id:`a`,label:`模型`,x:20,y:20,w:120,h:48},{id:`b`,label:`插件`,x:20,y:120,w:120,h:48},{id:`c`,label:`宿主`,x:200,y:70,w:120,h:48}],edges:[{from:`a`,to:`b`},{from:`b`,to:`c`}]}]}},{id:`tpl-3d`,category:`高级`,name:`3D 场景`,description:`一个可旋转的 3D 场景:产品演示/空间示意用得上。`,instruction:`请用 dsh-ui 渲染一个 3D 场景(scene3d):一个立方体 + 一个球体,标题「示例场景」,附一句使用场景说明。`,demo:{title:`3D 场景(示例)`,items:[{type:`text`,content:`首次加载需下载 three.js(约 700KB,懒加载),之后走缓存。`,size:`muted`},{type:`scene3d`,title:`示例场景`,meshes:[{shape:`box`,size:1,color:`#4FC3F7`,position:[-1.2,0,0]},{shape:`sphere`,size:.6,color:`#81C784`,position:[1.2,0,0]}]}]}},{id:`tpl-breadcrumb`,category:`数据`,name:`路径面包屑`,description:`长路径拆成面包屑:文件位置、组织层级一读就懂。`,instruction:`请用 dsh-ui 展示当前工作区结构:breadcrumb 显示文件路径(4 段)、file-tree 描述项目目录(3 个目录、每个 2 个子项)。`,demo:{title:`目录结构(示例)`,items:[{type:`breadcrumb`,items:[`工作区`,`dsh-genui`,`src`,`client`]},{type:`file-tree`,items:[{name:`src`,type:`dir`,children:[{name:`client`,type:`dir`,children:[{name:`panel.tsx`},{name:`templates.ts`}]},{name:`index.tsx`}]},{name:`tests`,type:`dir`,children:[{name:`templates.spec.ts`}]}]}]}}],Xa=`@changfenhuang/dsh-genui/TemplateDrawer.module.css`;if(typeof document<`u`&&document.querySelector(`style[data-plugin-css=`+JSON.stringify(Xa)+`]`)===null){let e=document.createElement(`style`);e.dataset.plugin=`@changfenhuang/dsh-genui`,e.dataset.pluginCss=Xa,e.textContent=`.fEkRPW_wrap{flex-direction:column;gap:12px;min-height:0;padding:12px 14px;display:flex;overflow:auto}.fEkRPW_achievements{flex-direction:column;gap:8px;min-height:0;display:flex;overflow:auto}.fEkRPW_cats{flex-wrap:wrap;gap:8px;display:flex}.fEkRPW_cat{border:1px solid var(--dsw-alias-border-l1,#ffffff1f);color:var(--dsw-alias-label-secondary,var(--dsl-g-font-muted-fallback,#fff9));cursor:pointer;background:0 0;border-radius:999px;padding:4px 12px;font-size:12px;line-height:1.5}.fEkRPW_cat:hover{background:var(--dsw-alias-fill-hover,#ffffff0f)}.fEkRPW_catActive{border-color:var(--dsw-alias-state-business-primary,#4f8ef7);color:var(--dsw-alias-state-business-primary,#4f8ef7);background:color-mix(in srgb, var(--dsw-alias-state-business-primary,#4f8ef7) 14%, transparent)}.fEkRPW_list{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px;display:grid}.fEkRPW_card{border:1px solid var(--dsw-alias-border-l1,#ffffff1f);border-radius:var(--dsl-g-radius-surface,12px);background:var(--dsw-alias-bg-layer-2,#ffffff0a);color:var(--dsw-alias-label-primary);text-align:left;cursor:pointer;flex-direction:column;gap:4px;padding:10px 12px;display:flex}.fEkRPW_card:hover{border-color:var(--dsw-alias-border-l2,#fff3)}.fEkRPW_cardActive{border-color:var(--dsw-alias-state-business-primary,#4f8ef7)}.fEkRPW_cardName{font-size:13px;font-weight:600;line-height:1.5}.fEkRPW_cardMeta{color:var(--dsw-alias-label-tertiary,#ffffff73);font-size:11px}.fEkRPW_cardDesc{color:var(--dsw-alias-label-secondary,#fff9);font-size:12px;line-height:1.5}.fEkRPW_detail{border-top:1px solid var(--dsw-alias-border-l1,#ffffff1f);flex-direction:column;gap:8px;padding-top:12px;display:flex}.fEkRPW_toolbar{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.fEkRPW_toolbarTitle{min-width:0;color:var(--dsw-alias-label-primary);flex:1;font-size:13px;font-weight:600}.fEkRPW_try,.fEkRPW_copy{border-radius:var(--dsl-g-radius-control,8px);cursor:pointer;border:1px solid #0000;padding:5px 12px;font-size:12px;line-height:1.5}.fEkRPW_try{border-color:var(--dsw-alias-state-business-primary,#4f8ef7);color:var(--dsw-alias-state-business-primary,#4f8ef7);background:color-mix(in srgb, var(--dsw-alias-state-business-primary,#4f8ef7) 14%, transparent)}.fEkRPW_try:hover{background:color-mix(in srgb, var(--dsw-alias-state-business-primary,#4f8ef7) 22%, transparent)}.fEkRPW_copy{border-color:var(--dsw-alias-border-l1,#ffffff1f);color:var(--dsw-alias-label-secondary,#fff9);background:0 0}.fEkRPW_preview{border:1px solid var(--dsw-alias-border-l1,#ffffff1f);border-radius:var(--dsl-g-radius-surface,12px);background:var(--dsw-alias-bg-layer-1,#00000014);min-height:0;padding:12px;overflow:auto}`,document.head.appendChild(e)}var $={achievements:`fEkRPW_achievements`,card:`fEkRPW_card`,cardActive:`fEkRPW_cardActive`,cardDesc:`fEkRPW_cardDesc`,cardMeta:`fEkRPW_cardMeta`,cardName:`fEkRPW_cardName`,cat:`fEkRPW_cat`,catActive:`fEkRPW_catActive`,cats:`fEkRPW_cats`,copy:`fEkRPW_copy`,detail:`fEkRPW_detail`,list:`fEkRPW_list`,preview:`fEkRPW_preview`,toolbar:`fEkRPW_toolbar`,toolbarTitle:`fEkRPW_toolbarTitle`,try:`fEkRPW_try`,wrap:`fEkRPW_wrap`};let Za=[`全部`,`仪表盘`,`数据`,`流程`,`图表`,`交互`,`测验`,`高级`];function Qa(e){return navigator.clipboard===void 0?new Promise((t,n)=>{try{let n=document.createElement(`textarea`);n.value=e,n.style.position=`fixed`,n.style.opacity=`0`,document.body.appendChild(n),n.select(),document.execCommand(`copy`),n.remove(),t()}catch(e){n(e instanceof Error?e:Error(String(e)))}}):navigator.clipboard.writeText(e)}function $a({onUse:e,tab:t}){let[n,r]=(0,m.useState)(`全部`),[i,a]=(0,m.useState)(null),[o,s]=(0,m.useState)(!1),c=(0,m.useRef)(0),l=(0,m.useSyncExternalStore)(je,()=>ke()),u=(0,m.useMemo)(()=>fe(l.state,l.unlocked),[l]),d=(0,m.useMemo)(()=>n===`全部`?[...Ya]:Ya.filter(e=>e.category===n),[n]),f=async e=>{try{await Qa(e),s(!0),window.clearTimeout(c.current),c.current=window.setTimeout(()=>s(!1),1500)}catch{}};return(0,g.jsx)(`div`,{className:$.wrap,"data-genui-templates":t===`templates`?void 0:`achievements`,children:t===`achievements`?(0,g.jsx)(`div`,{className:$.achievements,"data-genui-achievements":!0,children:(0,g.jsx)(w,{label:`成就页`,children:(0,g.jsx)(Bn,{spec:u,stateKey:oe(`genui-achievements`,JSON.stringify(u))})})}):(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)(`div`,{className:$.cats,role:`tablist`,"aria-label":`模板分类`,children:Za.map(e=>(0,g.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":n===e,className:`${$.cat}${n===e?` ${$.catActive}`:``}`,onClick:()=>{r(e),a(null)},children:e},e))}),(0,g.jsx)(`div`,{className:$.list,children:d.map(e=>(0,g.jsxs)(`button`,{type:`button`,className:`${$.card}${i?.id===e.id?` ${$.cardActive}`:``}`,onClick:()=>a(t=>t?.id===e.id?null:e),children:[(0,g.jsx)(`span`,{className:$.cardName,children:e.name}),(0,g.jsx)(`span`,{className:$.cardMeta,children:e.category}),(0,g.jsx)(`span`,{className:$.cardDesc,children:e.description})]},e.id))}),i!==null&&(0,g.jsxs)(`div`,{className:$.detail,"data-genui-template-preview":!0,children:[(0,g.jsxs)(`div`,{className:$.toolbar,children:[(0,g.jsx)(`span`,{className:$.toolbarTitle,children:i.name}),(0,g.jsx)(`button`,{type:`button`,className:$.try,onClick:()=>e(i.instruction),children:`试用:插入输入框`}),(0,g.jsx)(`button`,{type:`button`,className:$.copy,onClick:()=>void f(i.instruction),children:o?`✓ 已复制`:`复制指令`})]}),(0,g.jsx)(`div`,{className:$.preview,children:(0,g.jsx)(w,{label:`模板预览`,children:(0,g.jsx)(Bn,{spec:i.demo,stateKey:oe(`genui-tpl`,i.id)})})})]})]})})}let eo=`dsh.genui.panel-hint`;function to({sessionId:e,sendGenuiAction:t,insertTemplate:n}){let r=(0,m.useSyncExternalStore)(na,()=>ta(e)),i=(0,m.useSyncExternalStore)(la,()=>ca(e)),[a,o]=(0,m.useState)(!0),[s,c]=(0,m.useState)(null),[l,u]=(0,m.useState)(!1),d=(0,m.useRef)(null),f=(0,m.useRef)(null),[h,_]=(0,m.useState)(null),[y,b]=(0,m.useState)(null),x=(0,m.useRef)(0),S=r!==null&&r.items.length>0,[C,T]=(0,m.useState)(()=>{try{return S&&localStorage.getItem(eo)!==`1`}catch{return S}});(0,m.useEffect)(()=>{if(!C)return;let e=window.setTimeout(()=>{try{localStorage.setItem(eo,`1`)}catch{}T(!1)},6e3);return()=>window.clearTimeout(e)},[C]),(0,m.useEffect)(()=>{S&&Ee()},[S]),(0,m.useEffect)(()=>{i>0&&o(!1)},[i]),(0,m.useEffect)(()=>()=>{ea(e)},[e]),(0,m.useEffect)(()=>{if(l)return()=>{d.current=null}},[l]),(0,m.useEffect)(()=>()=>window.clearTimeout(x.current),[]);let D=(0,m.useCallback)(e=>{e.preventDefault();let t=e.currentTarget,n=s??360;d.current={y:e.clientY,height:n},u(!0);try{t.setPointerCapture(e.pointerId)}catch{}let r=e=>{let t=d.current;if(t===null)return;let n=Math.min(600,Math.max(120,t.height+(t.y-e.clientY)));c(n)},i=()=>{d.current=null,u(!1),t.removeEventListener(`pointermove`,r),t.removeEventListener(`pointerup`,i),t.removeEventListener(`pointercancel`,i)};t.addEventListener(`pointermove`,r),t.addEventListener(`pointerup`,i),t.addEventListener(`pointercancel`,i)},[s]);if(!S)return null;let O=e=>{b(e),window.clearTimeout(x.current),x.current=window.setTimeout(()=>b(null),2500)};return(0,g.jsxs)(`div`,{className:E.panel,"data-genui-panel":!0,children:[!a&&(0,g.jsx)(`div`,{role:`separator`,"aria-orientation":`horizontal`,"aria-label":`调整面板高度`,className:`${E.panelResizeHandle}${l?` ${E.panelResizeHandleActive}`:``}`,onPointerDown:D}),(0,g.jsxs)(`div`,{className:E.panelHeader,children:[(0,g.jsxs)(`button`,{type:`button`,className:E.panelToggle,"aria-expanded":!a,onClick:()=>o(e=>!e),children:[(0,g.jsx)(`span`,{className:E.panelBadge,children:`面板`}),(0,g.jsx)(`span`,{className:E.panelTitle,children:r?.title??(h===null?`GenUI 面板`:`GenUI 探索`)}),(0,g.jsx)(`span`,{className:E.panelChevron,"aria-hidden":!0,children:a?(0,g.jsx)(p.IconChevronUpOutline14,{}):(0,g.jsx)(p.IconChevronDownOutline14,{})})]}),(0,g.jsx)(`button`,{type:`button`,className:`${E.panelTpl}${h===`templates`?` ${E.panelTplActive}`:``}`,"aria-label":`模板中心`,title:`模板中心:预览并试用 GenUI 示例`,onClick:()=>{o(!1),_(e=>e===`templates`?null:`templates`)},children:`模板`}),(0,g.jsx)(`button`,{type:`button`,className:`${E.panelTpl}${h===`achievements`?` ${E.panelTplActive}`:``}`,"aria-label":`探索成就`,title:`探索成就:解锁徽章与进度`,onClick:()=>{o(!1),_(e=>e===`achievements`?null:`achievements`)},children:`成就`}),(0,g.jsx)(`button`,{type:`button`,className:E.panelClose,"aria-label":`关闭面板`,title:`关闭面板`,onClick:()=>Zi(e,null),children:(0,g.jsx)(`span`,{"aria-hidden":!0,children:`✕`})})]}),C&&h===null&&(0,g.jsx)(`div`,{className:E.panelHint,role:`status`,children:`💡 这是 GenUI 会话面板:点右上角「模板」可浏览并试用示例`}),!a&&(0,g.jsx)(`div`,{ref:f,className:E.panelBody,"data-genui-panel-body":!0,style:s===null?void 0:{height:s},children:h===null?r===null?null:(0,g.jsx)(v.Provider,{value:t,children:(0,g.jsx)(w,{label:`面板`,children:(0,g.jsx)(Bn,{spec:r,stateKey:oe(e,JSON.stringify(r))})})}):(0,g.jsx)($a,{tab:h,onUse:e=>{Oe(),n(e),O(`指令已插入输入框,发送即可让模型生成`)}})}),y!==null&&(0,g.jsx)(`div`,{className:E.panelFlash,role:`status`,children:y})]})}function no({toolName:e,block:t,sessionId:n}){let r=`meta`in t?t.meta:void 0,i=(0,m.useMemo)(()=>r===void 0?null:bi(r),[r]);return(0,m.useEffect)(()=>{i!==null&&i.items.length>0&&Ji(n,{sourceId:JSON.stringify([`render_ui`,t.callId]),order:[`seq`in t&&typeof t.seq==`number`?t.seq:0,-1,0],mode:`replace`,spec:i})},[n,i,t]),i===null||i.items.length===0?(0,g.jsxs)(`div`,{className:E.toolFallback,"data-genui-tool":!0,children:[(0,g.jsx)(`span`,{className:E.toolFallbackTitle,children:e}),(0,g.jsx)(`span`,{className:E.toolFallbackMeta,children:t.callId})]}):(0,g.jsx)(`div`,{className:E.tool,"data-genui-tool":!0,children:(0,g.jsx)(w,{label:`工具卡片`,children:(0,g.jsx)(Bn,{spec:i,stateKey:se(n,t.callId)})})})}let ro=0;function io(){let[,e]=(0,m.useSyncExternalStore)(je,()=>``),[t,n]=(0,m.useState)([]),r=(0,m.useRef)(new Map);return(0,m.useEffect)(()=>{let e=Ae();if(e.length===0)return;let t=e.map(e=>({key:++ro,ach:e}));n(e=>[...e,...t]);for(let e of t){let t=window.setTimeout(()=>{n(t=>t.filter(t=>t.key!==e.key)),r.current.delete(e.key)},3600);r.current.set(e.key,t)}},[e]),(0,m.useEffect)(()=>()=>{for(let e of r.current.values())window.clearTimeout(e)},[]),t.length===0?null:(0,m.createElement)(`div`,{className:E.achToasts,"data-genui-achievement-toasts":!0},t.map(e=>(0,m.createElement)(`div`,{key:e.key,className:E.achToast},(0,m.createElement)(`span`,{className:E.achToastBadge,"aria-hidden":!0},`🏆`),(0,m.createElement)(`div`,{className:E.achToastBody},(0,m.createElement)(`div`,{className:E.achToastName},`成就解锁:${e.ach.name}`),(0,m.createElement)(`div`,{className:E.achToastDesc},e.ach.description)))))}function ao(){if(typeof document>`u`)return()=>{};let e=document.createElement(`div`);e.dataset.dshGenuiAchievements=`1`,document.body.appendChild(e);let t=(0,h.createRoot)(e);return t.render((0,m.createElement)(io)),()=>{t.unmount(),e.remove()}}xt();function oo(){if(!(typeof document>`u`))for(let e of[`mermaid.js`,`three.js`]){if(document.head.querySelector(`link[rel="prefetch"][href="${gt(e)}"]`)!==null)continue;let t=document.createElement(`link`);t.rel=`prefetch`,t.as=`script`,t.href=gt(e),document.head.appendChild(t)}}function so(e,t){let n=e.sessions.scope(t),r=n?.get(`conversation`);return{sessionId:t,sendGenuiAction:(e,n)=>{if(r===void 0)return;let i=Object.keys(n).length===0?``:` 组件数据: ${JSON.stringify(n)}`;r.send(`[genui-action] ${e}。用户刚刚在面板中触发了动作 "${e}",请根据组件数据执行相应操作,只输出一个 panel:true 的 dsh-ui 围栏来更新面板,回复文本至多一行 10 字以内的确认(如"已刷新"),不要解释、不要普通围栏。${i}`).catch(n=>{console.warn(`[genui] 面板动作 "${e}" 发送失败(session ${t}):`,n instanceof Error?n.message:String(n))})},insertTemplate:e=>{(r?.input?.for?.(n))?.setDraft(e)}}}function co(e,t,n){let r=e.sessions.scope(t)?.get(`conversation`);r!==void 0&&r.send(`用户执行了 /panel 并请求:${n}。请只输出一个 panel:true 的 dsh-ui 围栏来更新会话面板,内容按请求定制;回复文本至多一行 10 字以内的确认(如"已更新"),不要解释、不要普通围栏。`).catch(e=>{console.warn(`[genui] /panel 指令发送失败(session ${t}):`,e instanceof Error?e.message:String(e))})}function lo(e,t,n,r){let i=e.sessions.scope(t)?.get(`conversation`);if(i===void 0)return;let a=Object.keys(r).length===0?``:` 组件数据: ${JSON.stringify(r)}`;i.send(`[genui-action] ${n}。用户刚刚在界面中触发了动作 "${n}",请根据组件数据执行相应操作,并用 dsh-ui 输出更新后的界面。${a}`).catch(()=>{})}function uo(e){let t=p.registerFenceRenderer;console.info(`[genui] client active; fence-channel=${typeof t==`function`?`registry`:`dom`}`);let n=typeof t==`function`?[t(`dsh-ui`,Ca)]:[Wa(e,(t,n,r)=>lo(e,t,n,r))];return oo(),n.push(ao()),n.push(e.slots.inject(`tool.call.toolview`,()=>e.slots.register({name:`tool.call.toolview`,key:`render_ui`},no))),n.push(e.slots.inject(`conversation.input.dock`,()=>e.slots.register({name:`conversation.input.dock`,id:`genui-panel`,order:50,inject:t=>so(e,t)},to))),e.inject([`inputTriggers`],t=>{let n=t.get(`inputTriggers`);n!==void 0&&t.effect(()=>n.registerSource(Ja((t,n)=>co(e,t,n))),`genui: /panel`)}),()=>{for(let e of n)e()}}return n.apply=uo,n.inject=[`slots`,`sessions`],n.prefetchGenuiAssets=oo,n.renderGenuiFence=Ca,t.exports}});
|
|
7
|
+
`||e[t]===`\r`);)t++;let n=t<e.length?e[t]:``;if(n===`}`||n===`]`||n===``){a++;continue}}t+=s}for(r&&(t+=`"`,a++);n.length>0;)t+=n.pop(),a++;if(a===0)return null;try{return JSON.parse(t),{text:t,repairs:a}}catch{return null}}let Ya={margin:`0 0 6px`,padding:`6px 10px`,borderRadius:6,background:`rgba(239, 68, 68, 0.14)`,border:`1px solid rgba(239, 68, 68, 0.4)`,color:`#f87171`,fontSize:12,lineHeight:1.55,whiteSpace:`pre-wrap`};function Xa(e){let t=e.filter(e=>/(?:variant is unsupported|kind must be bars, line, or donut|requires data or series|(?:data|series) is required for|(?:\.data|\.series)(?:\[\d+\])?(?:\.(?:data|label|value|color))? must|series is only supported for bars)/.test(e));return t.length===0?null:t.join(`;`)}function Za(e){let t=va(e);if(t===null)return null;let n=ca(t);if(ua(n))return null;let r=Xa(n.errors);return r===null?`GenUI 字段验证失败:${n.errors.join(`;`)}`:`chart 字段验证失败:${r}`}function Qa({raw:e,fenceKey:t}){let n=(0,m.useRef)(null),[r,i]=(0,m.useState)(!1);(0,m.useLayoutEffect)(()=>{let e=n.current;e!==null&&e.closest(`[data-streaming]`)===null&&i(!0)});let a=r?Za(e):null,o=r&&a===null&&e.trim()!==``?Ka(e):null;return(0,g.jsxs)(`div`,{ref:n,children:[a!==null&&(0,g.jsxs)(`div`,{style:Ya,role:`alert`,children:[`⚠️ dsh-ui `,a,` —— 围栏保持为代码块;请修正后重发。`]}),a===null&&o!==null&&(0,g.jsxs)(`div`,{style:Ya,role:`alert`,children:[`⚠️ dsh-ui fence JSON 解析失败`,o,` —— 围栏保持为代码块;请让模型检查并修复 JSON 后重发。`]}),(0,g.jsx)(p.CodeBlock,{...C,code:`${e}\n`,lang:`dsh-ui`},t)]})}function $a({sessionId:e,sourceId:t,order:n,spec:r}){return(0,m.useEffect)(()=>{ka(e,{sourceId:t,order:n,mode:r.append===!0?`append`:`replace`,spec:r})===`overflow`&&Pa(e,t)},[e,t,n,r]),null}function eo(e){let t=ca(e);return ua(t)?t.spec:null}function to(e,t){let n=va(e),r=n===null?null:eo(n);if(r===null){let n=qa(e);if(n!==null){let e=va(n.text);r=e===null?null:eo(e)}if(r===null&&t?.source!==void 0){let t=Ja(e);if(t!==null){let e=va(t.text);r=e===null?null:eo(e)}}}return r}function no(e,t,n){let r=t?.sessionId;return(0,g.jsx)(E,{label:`该界面`,children:(0,g.jsx)(gr,{spec:n,animateEntrance:t?.source===void 0,stateKey:r===void 0||t?.source===void 0?void 0:re(r,t.source.id,JSON.stringify(n))})},JSON.stringify([r,e]))}function ro(e,t,n){let r=to(e,n);return r===null?null:r.panel===!0?n!==void 0&&n.sessionId!==void 0&&n.source!==void 0?r.append===!0&&!Ga(e)?(0,g.jsx)(m.Fragment,{},t):(0,g.jsx)($a,{sessionId:n.sessionId,sourceId:n.source.id,order:n.source.order,spec:r},t):(0,g.jsx)(m.Fragment,{},t):no(t,n,r)}function io(e,t,n){let r=to(e,n);return r===null?(0,g.jsx)(Qa,{fenceKey:t,raw:e},t):r.panel===!0?n!==void 0&&n.sessionId!==void 0&&n.source!==void 0?r.append===!0&&!Ga(e)?null:(0,g.jsx)($a,{sessionId:n.sessionId,sourceId:n.source.id,order:n.source.order,spec:r},t):null:no(t,n,r)}let ao=`.md-code-block, .code-block, .code-block-small`,oo=`data-genui-rendered`,so=`[data-streaming]`,co=`genui-dom-fence`;function lo(e){let t=e.querySelectorAll(`pre`);if(t.length>1)return!1;let n=t[0]??null;for(let t of e.querySelectorAll(`p, ul, ol, dl, table, h1, h2, h3, h4, h5, h6, blockquote, hr, img, figure`))if(!(n!==null&&n.contains(t)))return!1;return!0}function uo(e){return(0,m.isValidElement)(e)&&e.type===m.Fragment}function fo(e){let t=e.trimStart();return t.length<8||!t.startsWith(`{`)?!1:/"(items|type|title|panel)"\s*:/.test(t)}function po(){return(0,g.jsxs)(`div`,{className:x.skeleton,role:`status`,"aria-label":`正在生成界面`,children:[(0,g.jsx)(`span`,{className:x.skeletonTitle}),(0,g.jsxs)(`span`,{className:x.skeletonBars,children:[(0,g.jsx)(`span`,{style:{width:`32%`}}),(0,g.jsx)(`span`,{style:{width:`52%`}}),(0,g.jsx)(`span`,{style:{width:`24%`}})]}),(0,g.jsx)(`span`,{className:x.skeletonBlock})]})}function mo(e){return e.nodeType===Node.TEXT_NODE}function ho(e){let t=e.querySelector(`pre`);for(let n of e.querySelectorAll(`*`)){if(n.childElementCount!==0||n.textContent!==`dsh-ui`||t!==null&&t.contains(n))continue;let r=n.closest(ao);if(r===null||r===e)return`dsh-ui`}return null}function go(e){let t=e.querySelector(`pre`);for(let n of e.querySelectorAll(`*`))if(n.childElementCount===0&&!(t!==null&&t.contains(n)))return n.textContent??``;return``}function _o(e){let t=e.querySelector(`pre`);if(t===null)return``;let n=``;for(let e of t.childNodes)mo(e),n+=e.textContent??``;return n}function vo(e){return e.closest(so)===null}function yo(e,t=document){let n=e.parentElement;for(let e=0;n!==null&&n!==t&&e<4;e+=1,n=n.parentElement)if(ho(n)===`dsh-ui`)return lo(n)?n:null;return null}function bo(e,t=document){let n=e.parentElement;for(let e=0;n!==null&&n!==t&&e<4;e+=1,n=n.parentElement)if(ho(n)===`dsh-ui`&&!lo(n))return n;return null}function xo(e=document){let t=new Set,n=[];for(let r of e.querySelectorAll(ao))(r.parentElement===null||r.parentElement.closest(ao)===null)&&(t.has(r)||lo(r)&&(n.push(r),t.add(r)));for(let r of e.querySelectorAll(`pre`)){if(r.closest(ao)!==null)continue;let i=yo(r,e);if(i===null){bo(r,e)!==null&&!Co&&(Co=!0,console.warn(`[dsh-genui] 跳过带 dsh-ui 标签但疑似消息容器的节点(含段落或多个代码体)——防止 DOM 通道隐藏整条消息(issue #19)`));continue}t.has(i)||(So||(So=!0,console.warn(`[dsh-genui] 围栏表面类名未被已知选择器命中(宿主 DOM 漂移),已按 label+pre 结构识别 dsh-ui 围栏`)),n.push(i),t.add(i))}return n}let So=!1,Co=!1,wo=h.createRoot,To=`[data-chat-flow-key], [data-chat-flow-kind]`;function Eo(e){return e.closest(`[data-chat-anchor-key]`)??e.closest(To)??e}function Do(e,t){let n=e===t?document:e,r=0;for(let e of xo(n))if(e.closest(so)===null&&ho(e)!==null&&(r+=1,e===t))return r;return r+1}function Oo(e){let t=e.getAttribute(`data-chat-anchor-key`)??``,n=/assistant-step(\d+):(\d+)$/.exec(t);if(n!==null){let e=Number(n[1]),t=Number(n[2]);if(Number.isFinite(e)&&Number.isFinite(t))return e*1e3+t}let r=document.querySelectorAll(`[data-chat-anchor-key], ${To}`);for(let t=0;t<r.length;t+=1)if(r[t]===e)return t;return 0}function ko(e,t){if(typeof document>`u`)return()=>{};So=!1,Co=!1;let n=new Map,r=!1,i=null,a=()=>{try{return e.sessions.list.getSnapshot().current}catch{return}};function o(e,t,n){n&&e.getAttribute(`data-chat-anchor-key`)===null&&l(t,`no [data-chat-anchor-key] ancestor for a dsh-ui fence (host render path without row anchor — e.g. Safari); using fallback identity dom:unknown:N`);let r=Do(e,t),i=`dom:${e.getAttribute(`data-chat-anchor-key`)??`unknown`}:${r}`,o=a();return{key:i,context:{...o===void 0?{}:{sessionId:o},...n?{source:{id:i,order:[Oo(e),0,r]}}:{}}}}function s(e){let t=n.get(e);t!==void 0&&(n.delete(e),t.root.unmount(),t.container.remove(),e.style.display=``,e.removeAttribute(oo))}let c=new WeakSet;function l(e,t){c.has(e)||(c.add(e),console.warn(`[dsh-genui] ${t}`))}function u(e){if(e.hasAttribute(oo))return;let r=Eo(e),i=vo(e);if(i&&ho(e)===null)return;let s=_o(e);if(s.trim()===``){i&&l(e,`settled dsh-ui fence has an empty body; keeping the code block`);return}let{key:c,context:u}=o(r,e,i),d=ro(s,c,u),f=d;if(f===null){if(i||!fo(s)){i&&l(e,`settled dsh-ui fence body does not parse; keeping the code block`);return}f=(0,g.jsx)(po,{})}let p=document.createElement(`div`);p.className=co,e.after(p);let m;try{m=wo(p)}catch(t){p.remove(),l(e,`failed to create a React root for a dsh-ui fence (${t instanceof Error?t.message:String(t)}); keeping the stock code block visible`);return}try{m.render((0,g.jsx)(v.Provider,{value:(e,n)=>{let r=a();r!==void 0&&t(r,e,n)},children:f}))}catch(t){try{m.unmount()}catch{}p.remove(),l(e,`failed to mount a dsh-ui fence (${t instanceof Error?t.message:String(t)}); keeping the stock code block visible`);return}e.style.display=`none`,e.setAttribute(oo,``),n.set(e,{root:m,container:p,block:e,lastRaw:s,lastSettled:i,lastNode:f,skeleton:d===null})}function d(){for(let e of Array.from(n.values())){let t=e.block;if(!t.isConnected){e.container.isConnected&&s(t);continue}if((e.container.parentElement!==t.parentElement||e.container.previousElementSibling!==t)&&t.after(e.container),!e.container.isConnected){t.style.display=``,t.removeAttribute(oo),n.delete(t);try{e.root.unmount()}catch{}e.container.remove(),l(t,`dsh-ui replacement container could not be re-attached after a host re-render; restoring the stock code block`);continue}t.style.display!==`none`&&(t.style.display=`none`),t.hasAttribute(oo)||t.setAttribute(oo,``)}}function f(){if(!r){for(let[e,r]of n){if(!e.isConnected){s(e);continue}let i=_o(e),c=vo(e);if(c&&!r.lastSettled){let t=go(e);if(t!==``&&t!==`dsh-ui`){s(e);continue}}let u=!uo(r.lastNode)&&r.container.childElementCount===0;if(r.lastRaw!==i||r.lastSettled!==c||u){let{key:d,context:f}=o(Eo(e),e,c),p=ro(i,d,f);if(p===null){if(r.skeleton&&!c){r.lastRaw=i,r.lastSettled=c;continue}s(e);continue}if(u){try{r.root.unmount()}catch{}let i=document.createElement(`div`);i.className=co,r.container.remove(),e.after(i);try{let e=wo(i);e.render((0,g.jsx)(v.Provider,{value:(e,n)=>{let r=a();r!==void 0&&t(r,e,n)},children:p})),r.root=e,r.container=i}catch(t){i.remove(),e.style.display=``,e.removeAttribute(oo),n.delete(e),l(e,`failed to rebuild a wiped dsh-ui mount (${t instanceof Error?t.message:String(t)}); restoring the stock code block`);continue}}else try{r.root.render((0,g.jsx)(v.Provider,{value:(e,n)=>{let r=a();r!==void 0&&t(r,e,n)},children:p}))}catch(t){s(e),l(e,`failed to re-render a dsh-ui fence (${t instanceof Error?t.message:String(t)}); restoring the stock code block`);continue}r.lastRaw=i,r.lastSettled=c,r.lastNode=p,r.skeleton=!1}}d();for(let e of xo())u(e)}}let p=()=>{r||i!==null||(i=requestAnimationFrame(()=>{i=null,!r&&f()}))},m=new MutationObserver(e=>{for(let t of[...e].reverse()){if(t.removedNodes.length===0||t.target.childNodes.length>0)continue;let e=[...n.values()].find(e=>e.container===t.target);e===void 0||!e.block.isConnected||uo(e.lastNode)||e.container.append(...t.removedNodes)}d(),p()});m.observe(document.body,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`data-streaming`],characterData:!0});let h=window.setInterval(f,1e3);return f(),()=>{r=!0,m.disconnect(),window.clearInterval(h),i!==null&&(cancelAnimationFrame(i),i=null);for(let e of Array.from(n.keys()))s(e)}}let Ao={title:`GenUI 面板`,items:[{type:`text`,size:`h3`,content:`GenUI 生成式界面`},{type:`text`,size:`muted`,content:`面板会原地更新:对话里说「更新面板」,或再次执行 /panel 刷新。`},{type:`grid`,cols:4,items:[{type:`stat`,label:`组件`,value:`38`},{type:`stat`,label:`单个`,value:`12`},{type:`stat`,label:`组合`,value:`8`},{type:`stat`,label:`高级`,value:`18`}]},{type:`list`,items:[{title:`单个 ×12`,desc:`text button input select checkbox link badge stat progress divider avatar spacer`},{title:`组合 ×8`,desc:`row col grid card list table chart tabs`},{title:`数据 ×7`,desc:`plot callout steps keyvalue diff json code`},{title:`交互 ×5`,desc:`radio switch textarea accordion copy`},{title:`高级 ×5`,desc:`mermaid scene3d timeline file-tree breadcrumb`},{title:`教学 ×1`,desc:`quiz`}]},{type:`callout`,tone:`info`,title:`更新方式`,content:`对话说「更新面板」→ 模型输出 panel:true 围栏;/panel clear 清空面板。`}]};function jo(e,t){let n=t.trim().toLowerCase();if(n===`clear`||n===`off`||n===`close`){Ma(e,null);return}Ma(e,Ao),Ha(e)}function Mo(e,t){return{token:`/panel`,hint:`开启 GenUI 面板;/panel <指令> 让模型定制;/panel clear 清空`,submit:async(n,r)=>{let i=n.trim();return i===``?jo(e,``):/^(clear|off|close)$/i.test(i)?jo(e,i):(jo(e,``),t(e,i)),{kind:`success`}}}}function No(e){return{trigger:`/`,name:`genui`,order:60,candidates:async(e,t)=>{let n=t.query.toLowerCase();return n!==``&&!`panel`.startsWith(n)?[]:[{name:`panel`,description:`开启 GenUI 面板(/panel clear 清空;/panel <指令> 定制内容)`,hint:`/panel`}]},onPick(t){return{claim:Mo(t.session.sessionId,e)}},matchEnter:async(t,n,r)=>{if(/^\/panel(?:\s|$)/.test(n.trim()))return{claim:Mo(t.sessionId,e)}}}}let Po=[{id:`tpl-dashboard`,category:`仪表盘`,name:`项目仪表盘`,description:`一张卡片汇总核心指标:数字 + 环比 + 进度条,决策一眼可见。`,instruction:`请用 dsh-ui 给当前项目做一个仪表盘:4 个关键指标的 stat 卡片(带环比 delta)、整体进度 progress 条、今天的 3 件待办 list。标题用「项目仪表盘」。`,demo:{title:`项目仪表盘(示例)`,gap:12,items:[{type:`card`,title:`本周关键指标`,items:[{type:`grid`,cols:2,items:[{type:`stat`,label:`本周完成`,value:`12 / 18`,delta:`+4`},{type:`stat`,label:`阻塞事项`,value:`2`,delta:`-1`},{type:`stat`,label:`平均耗时`,value:`3.2h`,delta:`-8%`},{type:`stat`,label:`覆盖率`,value:`86%`}]}]},{type:`card`,title:`整体进度`,items:[{type:`progress`,label:`v1.0 里程碑`,value:68,valueLabel:`68 / 100`}]},{type:`card`,title:`今日待办`,items:[{type:`list`,items:[`评审 M1 模板中心 PR`,`同步 vendor 到 SSiD`,`周三周会材料`]}]}]}},{id:`tpl-compare`,category:`数据`,name:`方案对比表`,description:`多方案逐维度对照,表格直接可读,争议点一目了然。`,instruction:`请用 dsh-ui 把以下方案的对比做成一张 table:方案 A/B/C × 维度(成本/复杂度/风险/收益),列首高亮推荐项;顶部加一行 callout 说明结论。`,demo:{title:`方案对比(示例)`,items:[{type:`callout`,tone:`info`,title:`结论`,content:`方案 B 综合最优:成本中、复杂度低、风险低。`},{type:`table`,columns:[`维度`,`方案 A`,`方案 B ★`,`方案 C`],rows:[[`成本`,`高`,`中`,`低`],[`复杂度`,`高`,`中`,`低`],[`风险`,`低`,`低`,`高`],[`收益`,`大`,`中`,`小`]]}]}},{id:`tpl-steps`,category:`流程`,name:`五步上手流程`,description:`关键步骤排成时间线,每步一句要点,适合教程/交接/发布流程。`,instruction:`请用 dsh-ui 把操作步骤做成 steps 教程:5 步(按实际流程),每步标题 + 一两句要点,顶部用 badge 标出预计耗时。`,demo:{title:`上手流程(示例)`,items:[{type:`badge`,label:`约 5 分钟`,tone:`accent`},{type:`steps`,current:2,steps:[{title:`安装插件`,desc:`从插件中心安装,或 npm 安装到 profile`},{title:`发送第一条指令`,desc:`让模型用 dsh-ui 输出一个界面`},{title:`体验交互`,desc:`点按钮/判卷/切 tab,动作会回传模型`},{title:`常驻面板`,desc:`模型用 panel:true 把结果钉在会话面板`},{title:`进阶组件`,desc:`图表/流程/3D 按需懒加载`}]}]}},{id:`tpl-quiz`,category:`测验`,name:`随堂测验`,description:`一题一答即时判卷:选中即知对错,附讲解,适合培训问答。`,instruction:`请用 dsh-ui 出 3 道随堂测验(quiz 组件:question + options,其中一项 correct,附 explanation),标题「随堂测验」,每题即选即评。`,demo:{title:`随堂测验(示例)`,gap:10,items:[{type:`text`,content:`选中即判卷并显示讲解。`,size:`muted`},{type:`quiz`,id:`q-dsh`,question:`DSH 插件的最小单位是?`,options:[{label:`服务`},{label:`插件(cordis 插件)`,correct:!0,feedback:`✓ 一切皆插件:服务、工具、UI 都通过插件注册。`},{label:`工具`}],explanation:`DSH 基于 cordis,任何能力(含服务与工具)都以插件形式注册。`},{type:`quiz`,id:`q-fence`,question:`dsh-ui 围栏由谁输出?`,options:[{label:`用户`},{label:`模型`,correct:!0,feedback:`✓ 模型在回复中输出 dsh-ui fence。`},{label:`宿主`}],explanation:`模型输出 fence,渲染器将其画成真实组件。`},{type:`quiz`,id:`q-panel`,question:`panel:true 的围栏渲染到哪里?`,options:[{label:`消息流`},{label:`会话面板 dock`,correct:!0,feedback:`✓ 面板更新不刷屏。`},{label:`设置页`}]}]}},{id:`tpl-stats`,category:`数据`,name:`关键值 + 进度`,description:`一次交付:数值、进度、里程碑三件套,周报/复盘通用。`,instruction:`请用 dsh-ui 总结本周关键数据:keyvalue 列 3 组关键值、两根 progress 进度(计划 vs 实际)、timeline 放 3 个里程碑,标题「周报速览」。`,demo:{title:`周报速览(示例)`,items:[{type:`keyvalue`,pairs:[{key:`完成项`,value:`12`},{key:`延期`,value:`1`},{key:`风险`,value:`2(均已有缓解)`}]},{type:`progress`,label:`计划进度`,value:75,valueLabel:`75%`},{type:`progress`,label:`实际进度`,value:82,valueLabel:`82%`},{type:`timeline`,items:[{title:`周一`,desc:`完成 M1 开发`,time:`08-25`},{title:`周三`,desc:`全链路验证通过`,time:`08-27`},{title:`周五`,desc:`发布 0.9.4`,time:`08-29`}]}]}},{id:`tpl-chart`,category:`图表`,name:`趋势柱状图`,description:`数据直接画成柱状图,多序列对比,走势一眼看清。`,instruction:`请用 dsh-ui 把下列数据画成 chart(bars,多序列):近 6 周完成量 vs 计划量;图表上方给一句趋势结论。`,demo:{title:`趋势对比(示例)`,items:[{type:`text`,content:`结论:近 3 周完成量连续上升,本周首次反超计划。`},{type:`chart`,kind:`line`,data:[{label:`W21`,value:8},{label:`W22`,value:10},{label:`W23`,value:9},{label:`W24`,value:12},{label:`W25`,value:15},{label:`W26`,value:18}]}]}},{id:`tpl-tabs`,category:`交互`,name:`分标签页`,description:`一大块内容拆成标签页,锚点清晰;面板不挤、消息不刷屏。`,instruction:`请用 dsh-ui 把内容分成 tabs 三个标签:概览/明细/FAQ,每个标签 3 条以内要点;标题「功能速览」。`,demo:{title:`功能速览(示例)`,items:[{type:`tabs`,tabs:[{label:`概览`,items:[{type:`text`,content:`三项能力:实时渲染、交互回传、常驻面板。`}]},{label:`明细`,items:[{type:`list`,items:[`渲染:fence 增量解析,边流边出`,`交互:动作回传模型增量更新`,`面板:会话级 dock,折叠/调高`]}]},{label:`FAQ`,items:[{type:`text`,content:`问:不动模型会怎样?答:组件仍可本地判卷/展开。`}]}]}]}},{id:`tpl-checklist`,category:`流程`,name:`交付检查清单`,description:`提交前逐项打勾:清单即流程,漏项看得见。`,instruction:`请用 dsh-ui 做一张交付检查清单:6 项(测试/文档/发布/回滚/监控/公告),checkbox 可勾选,顶部 badge 提示「全部勾选再合并」。`,demo:{title:`交付清单(示例)`,items:[{type:`badge`,label:`全部勾选再合并`,tone:`warn`},{type:`list`,items:[{type:`checkbox`,label:`单元测试通过`},{type:`checkbox`,label:`文档同步`},{type:`checkbox`,label:`发布套餐就绪`},{type:`checkbox`,label:`回滚预案`}]}]}},{id:`tpl-accordion`,category:`高级`,name:`FAQ 手风琴`,description:`一问一答收在折叠面板里,长文档变短,回答不吓人。`,instruction:`请用 dsh-ui 做 FAQ 手风琴(accordion):5 个高频问题,标题栏就是问题、展开一条给答案;第一问默认展开。`,demo:{title:`FAQ(示例)`,items:[{type:`accordion`,items:[{title:`支持哪些图表?`,items:[{type:`text`,content:`chart(bars/line/donut)、plot 函数图、echart 全功能图表。`}]},{title:`面板能持久吗?`,items:[{type:`text`,content:`同一内容指纹刷新/重放恢复状态;新内容重置。`}]},{title:`交互会打扰模型吗?`,items:[{type:`text`,content:`带 action 的组件才回传;纯展示组件零往返。`}]}]}]}},{id:`tpl-diagram`,category:`高级`,name:`系统架构图`,description:`框架图画成 SVG:节点分层、连接线、分区标注,比截图清楚。`,instruction:`请用 dsh-ui 画一幅架构图(diagram):描述当前系统的 5 个节点与连接(kind: architecture 或 flowchart),包含一个安全区 zone。`,demo:{title:`架构图(示例)`,items:[{type:`diagram`,kind:`flowchart`,title:`DSH 插件链路`,nodes:[{id:`a`,label:`模型`,x:20,y:20,w:120,h:48},{id:`b`,label:`插件`,x:20,y:120,w:120,h:48},{id:`c`,label:`宿主`,x:200,y:70,w:120,h:48}],edges:[{from:`a`,to:`b`},{from:`b`,to:`c`}]}]}},{id:`tpl-3d`,category:`高级`,name:`3D 场景`,description:`一个可旋转的 3D 场景:产品演示/空间示意用得上。`,instruction:`请用 dsh-ui 渲染一个 3D 场景(scene3d):一个立方体 + 一个球体,标题「示例场景」,附一句使用场景说明。`,demo:{title:`3D 场景(示例)`,items:[{type:`text`,content:`首次加载需下载 three.js(约 700KB,懒加载),之后走缓存。`,size:`muted`},{type:`scene3d`,title:`示例场景`,meshes:[{shape:`box`,size:1,color:`#4FC3F7`,position:[-1.2,0,0]},{shape:`sphere`,size:.6,color:`#81C784`,position:[1.2,0,0]}]}]}},{id:`tpl-breadcrumb`,category:`数据`,name:`路径面包屑`,description:`长路径拆成面包屑:文件位置、组织层级一读就懂。`,instruction:`请用 dsh-ui 展示当前工作区结构:breadcrumb 显示文件路径(4 段)、file-tree 描述项目目录(3 个目录、每个 2 个子项)。`,demo:{title:`目录结构(示例)`,items:[{type:`breadcrumb`,items:[`工作区`,`dsh-genui`,`src`,`client`]},{type:`file-tree`,items:[{name:`src`,type:`dir`,children:[{name:`client`,type:`dir`,children:[{name:`panel.tsx`},{name:`templates.ts`}]},{name:`index.tsx`}]},{name:`tests`,type:`dir`,children:[{name:`templates.spec.ts`}]}]}]}}],Fo=`@changfenhuang/dsh-genui/TemplateDrawer.module.css`;if(typeof document<`u`&&document.querySelector(`style[data-plugin-css=`+JSON.stringify(Fo)+`]`)===null){let e=document.createElement(`style`);e.dataset.plugin=`@changfenhuang/dsh-genui`,e.dataset.pluginCss=Fo,e.textContent=`.fEkRPW_wrap{flex-direction:column;gap:12px;min-height:0;padding:12px 14px;display:flex;overflow:auto}.fEkRPW_achievements{flex-direction:column;gap:8px;min-height:0;display:flex;overflow:auto}.fEkRPW_cats{flex-wrap:wrap;gap:8px;display:flex}.fEkRPW_cat{border:1px solid var(--dsw-alias-border-l1,#ffffff1f);color:var(--dsw-alias-label-secondary,var(--dsl-g-font-muted-fallback,#fff9));cursor:pointer;background:0 0;border-radius:999px;padding:4px 12px;font-size:12px;line-height:1.5}.fEkRPW_cat:hover{background:var(--dsw-alias-fill-hover,#ffffff0f)}.fEkRPW_catActive{border-color:var(--dsw-alias-state-business-primary,#4f8ef7);color:var(--dsw-alias-state-business-primary,#4f8ef7);background:color-mix(in srgb, var(--dsw-alias-state-business-primary,#4f8ef7) 14%, transparent)}.fEkRPW_list{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px;display:grid}.fEkRPW_card{border:1px solid var(--dsw-alias-border-l1,#ffffff1f);border-radius:var(--dsl-g-radius-surface,12px);background:var(--dsw-alias-bg-layer-2,#ffffff0a);color:var(--dsw-alias-label-primary);text-align:left;cursor:pointer;flex-direction:column;gap:4px;padding:10px 12px;display:flex}.fEkRPW_card:hover{border-color:var(--dsw-alias-border-l2,#fff3)}.fEkRPW_cardActive{border-color:var(--dsw-alias-state-business-primary,#4f8ef7)}.fEkRPW_cardName{font-size:13px;font-weight:600;line-height:1.5}.fEkRPW_cardMeta{color:var(--dsw-alias-label-tertiary,#ffffff73);font-size:11px}.fEkRPW_cardDesc{color:var(--dsw-alias-label-secondary,#fff9);font-size:12px;line-height:1.5}.fEkRPW_detail{border-top:1px solid var(--dsw-alias-border-l1,#ffffff1f);flex-direction:column;gap:8px;padding-top:12px;display:flex}.fEkRPW_toolbar{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.fEkRPW_toolbarTitle{min-width:0;color:var(--dsw-alias-label-primary);flex:1;font-size:13px;font-weight:600}.fEkRPW_try,.fEkRPW_copy{border-radius:var(--dsl-g-radius-control,8px);cursor:pointer;border:1px solid #0000;padding:5px 12px;font-size:12px;line-height:1.5}.fEkRPW_try{border-color:var(--dsw-alias-state-business-primary,#4f8ef7);color:var(--dsw-alias-state-business-primary,#4f8ef7);background:color-mix(in srgb, var(--dsw-alias-state-business-primary,#4f8ef7) 14%, transparent)}.fEkRPW_try:hover{background:color-mix(in srgb, var(--dsw-alias-state-business-primary,#4f8ef7) 22%, transparent)}.fEkRPW_copy{border-color:var(--dsw-alias-border-l1,#ffffff1f);color:var(--dsw-alias-label-secondary,#fff9);background:0 0}.fEkRPW_preview{border:1px solid var(--dsw-alias-border-l1,#ffffff1f);border-radius:var(--dsl-g-radius-surface,12px);background:var(--dsw-alias-bg-layer-1,#00000014);min-height:0;padding:12px;overflow:auto}`,document.head.appendChild(e)}var $={achievements:`fEkRPW_achievements`,card:`fEkRPW_card`,cardActive:`fEkRPW_cardActive`,cardDesc:`fEkRPW_cardDesc`,cardMeta:`fEkRPW_cardMeta`,cardName:`fEkRPW_cardName`,cat:`fEkRPW_cat`,catActive:`fEkRPW_catActive`,cats:`fEkRPW_cats`,copy:`fEkRPW_copy`,detail:`fEkRPW_detail`,list:`fEkRPW_list`,preview:`fEkRPW_preview`,toolbar:`fEkRPW_toolbar`,toolbarTitle:`fEkRPW_toolbarTitle`,try:`fEkRPW_try`,wrap:`fEkRPW_wrap`};let Io=[`全部`,`仪表盘`,`数据`,`流程`,`图表`,`交互`,`测验`,`高级`];function Lo(e){return navigator.clipboard===void 0?new Promise((t,n)=>{try{let n=document.createElement(`textarea`);n.value=e,n.style.position=`fixed`,n.style.opacity=`0`,document.body.appendChild(n),n.select(),document.execCommand(`copy`),n.remove(),t()}catch(e){n(e instanceof Error?e:Error(String(e)))}}):navigator.clipboard.writeText(e)}function Ro({onUse:e,tab:t}){let[n,r]=(0,m.useState)(`全部`),[i,a]=(0,m.useState)(null),[o,s]=(0,m.useState)(!1),c=(0,m.useRef)(0),l=(0,m.useSyncExternalStore)(ke,()=>De()),u=(0,m.useMemo)(()=>ue(l.state,l.unlocked),[l]),d=(0,m.useMemo)(()=>n===`全部`?[...Po]:Po.filter(e=>e.category===n),[n]),f=async e=>{try{await Lo(e),s(!0),window.clearTimeout(c.current),c.current=window.setTimeout(()=>s(!1),1500)}catch{}};return(0,g.jsx)(`div`,{className:$.wrap,"data-genui-templates":t===`templates`?void 0:`achievements`,children:t===`achievements`?(0,g.jsx)(`div`,{className:$.achievements,"data-genui-achievements":!0,children:(0,g.jsx)(E,{label:`成就页`,children:(0,g.jsx)(gr,{spec:u,stateKey:ie(`genui-achievements`,JSON.stringify(u))})})}):(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)(`div`,{className:$.cats,role:`tablist`,"aria-label":`模板分类`,children:Io.map(e=>(0,g.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":n===e,className:`${$.cat}${n===e?` ${$.catActive}`:``}`,onClick:()=>{r(e),a(null)},children:e},e))}),(0,g.jsx)(`div`,{className:$.list,children:d.map(e=>(0,g.jsxs)(`button`,{type:`button`,className:`${$.card}${i?.id===e.id?` ${$.cardActive}`:``}`,onClick:()=>a(t=>t?.id===e.id?null:e),children:[(0,g.jsx)(`span`,{className:$.cardName,children:e.name}),(0,g.jsx)(`span`,{className:$.cardMeta,children:e.category}),(0,g.jsx)(`span`,{className:$.cardDesc,children:e.description})]},e.id))}),i!==null&&(0,g.jsxs)(`div`,{className:$.detail,"data-genui-template-preview":!0,children:[(0,g.jsxs)(`div`,{className:$.toolbar,children:[(0,g.jsx)(`span`,{className:$.toolbarTitle,children:i.name}),(0,g.jsx)(`button`,{type:`button`,className:$.try,onClick:()=>e(i.instruction),children:`试用:插入输入框`}),(0,g.jsx)(`button`,{type:`button`,className:$.copy,onClick:()=>void f(i.instruction),children:o?`✓ 已复制`:`复制指令`})]}),(0,g.jsx)(`div`,{className:$.preview,children:(0,g.jsx)(E,{label:`模板预览`,children:(0,g.jsx)(gr,{spec:i.demo,stateKey:ie(`genui-tpl`,i.id)})})})]})]})})}let zo=`dsh.genui.panel-hint`;function Bo({sessionId:e,sendGenuiAction:t,insertTemplate:n}){let r=(0,m.useSyncExternalStore)(La,()=>Ia(e)),i=(0,m.useSyncExternalStore)(Wa,()=>Ua(e)),[a,o]=(0,m.useState)(!0),[s,c]=(0,m.useState)(null),[l,u]=(0,m.useState)(!1),d=(0,m.useRef)(null),f=(0,m.useRef)(null),[h,_]=(0,m.useState)(null),[y,b]=(0,m.useState)(null),S=(0,m.useRef)(0),C=r!==null&&r.items.length>0,[w,T]=(0,m.useState)(()=>{try{return C&&localStorage.getItem(zo)!==`1`}catch{return C}});(0,m.useEffect)(()=>{if(!w)return;let e=window.setTimeout(()=>{try{localStorage.setItem(zo,`1`)}catch{}T(!1)},6e3);return()=>window.clearTimeout(e)},[w]),(0,m.useEffect)(()=>{C&&we()},[C]),(0,m.useEffect)(()=>{i>0&&o(!1)},[i]),(0,m.useEffect)(()=>()=>{Fa(e)},[e]),(0,m.useEffect)(()=>{if(l)return()=>{d.current=null}},[l]),(0,m.useEffect)(()=>()=>window.clearTimeout(S.current),[]);let D=(0,m.useCallback)(e=>{e.preventDefault();let t=e.currentTarget,n=s??360;d.current={y:e.clientY,height:n},u(!0);try{t.setPointerCapture(e.pointerId)}catch{}let r=e=>{let t=d.current;if(t===null)return;let n=Math.min(600,Math.max(120,t.height+(t.y-e.clientY)));c(n)},i=()=>{d.current=null,u(!1),t.removeEventListener(`pointermove`,r),t.removeEventListener(`pointerup`,i),t.removeEventListener(`pointercancel`,i)};t.addEventListener(`pointermove`,r),t.addEventListener(`pointerup`,i),t.addEventListener(`pointercancel`,i)},[s]);if(!C)return null;let O=e=>{b(e),window.clearTimeout(S.current),S.current=window.setTimeout(()=>b(null),2500)};return(0,g.jsxs)(`div`,{className:x.panel,"data-genui-panel":!0,children:[!a&&(0,g.jsx)(`div`,{role:`separator`,"aria-orientation":`horizontal`,"aria-label":`调整面板高度`,className:`${x.panelResizeHandle}${l?` ${x.panelResizeHandleActive}`:``}`,onPointerDown:D}),(0,g.jsxs)(`div`,{className:x.panelHeader,children:[(0,g.jsxs)(`button`,{type:`button`,className:x.panelToggle,"aria-expanded":!a,onClick:()=>o(e=>!e),children:[(0,g.jsx)(`span`,{className:x.panelBadge,children:`面板`}),(0,g.jsx)(`span`,{className:x.panelTitle,children:r?.title??(h===null?`GenUI 面板`:`GenUI 探索`)}),(0,g.jsx)(`span`,{className:x.panelChevron,"aria-hidden":!0,children:a?(0,g.jsx)(p.IconChevronUpOutline14,{}):(0,g.jsx)(p.IconChevronDownOutline14,{})})]}),(0,g.jsx)(`button`,{type:`button`,className:`${x.panelTpl}${h===`templates`?` ${x.panelTplActive}`:``}`,"aria-label":`模板中心`,title:`模板中心:预览并试用 GenUI 示例`,onClick:()=>{o(!1),_(e=>e===`templates`?null:`templates`)},children:`模板`}),(0,g.jsx)(`button`,{type:`button`,className:`${x.panelTpl}${h===`achievements`?` ${x.panelTplActive}`:``}`,"aria-label":`探索成就`,title:`探索成就:解锁徽章与进度`,onClick:()=>{o(!1),_(e=>e===`achievements`?null:`achievements`)},children:`成就`}),(0,g.jsx)(`button`,{type:`button`,className:x.panelClose,"aria-label":`关闭面板`,title:`关闭面板`,onClick:()=>Ma(e,null),children:(0,g.jsx)(`span`,{"aria-hidden":!0,children:`✕`})})]}),w&&h===null&&(0,g.jsx)(`div`,{className:x.panelHint,role:`status`,children:`💡 这是 GenUI 会话面板:点右上角「模板」可浏览并试用示例`}),!a&&(0,g.jsx)(`div`,{ref:f,className:x.panelBody,"data-genui-panel-body":!0,style:s===null?void 0:{height:s},children:h===null?r===null?null:(0,g.jsx)(v.Provider,{value:t,children:(0,g.jsx)(E,{label:`面板`,children:(0,g.jsx)(gr,{spec:r,stateKey:ie(e,JSON.stringify(r))})})}):(0,g.jsx)(Ro,{tab:h,onUse:e=>{Ee(),n(e),O(`指令已插入输入框,发送即可让模型生成`)}})}),y!==null&&(0,g.jsx)(`div`,{className:x.panelFlash,role:`status`,children:y})]})}function Vo({toolName:e,block:t,sessionId:n}){let r=`meta`in t?t.meta:void 0,i=(0,m.useMemo)(()=>r===void 0?null:ta(r),[r]);return(0,m.useEffect)(()=>{i!==null&&i.items.length>0&&ka(n,{sourceId:JSON.stringify([`render_ui`,t.callId]),order:[`seq`in t&&typeof t.seq==`number`?t.seq:0,-1,0],mode:`replace`,spec:i})},[n,i,t]),i===null||i.items.length===0?(0,g.jsxs)(`div`,{className:x.toolFallback,"data-genui-tool":!0,children:[(0,g.jsx)(`span`,{className:x.toolFallbackTitle,children:e}),(0,g.jsx)(`span`,{className:x.toolFallbackMeta,children:t.callId})]}):(0,g.jsx)(`div`,{className:x.tool,"data-genui-tool":!0,children:(0,g.jsx)(E,{label:`工具卡片`,children:(0,g.jsx)(gr,{spec:i,stateKey:ae(n,t.callId)})})})}let Ho=0;function Uo(){let[,e]=(0,m.useSyncExternalStore)(ke,()=>``),[t,n]=(0,m.useState)([]),r=(0,m.useRef)(new Map);return(0,m.useEffect)(()=>{let e=Oe();if(e.length===0)return;let t=e.map(e=>({key:++Ho,ach:e}));n(e=>[...e,...t]);for(let e of t){let t=window.setTimeout(()=>{n(t=>t.filter(t=>t.key!==e.key)),r.current.delete(e.key)},3600);r.current.set(e.key,t)}},[e]),(0,m.useEffect)(()=>()=>{for(let e of r.current.values())window.clearTimeout(e)},[]),t.length===0?null:(0,m.createElement)(`div`,{className:x.achToasts,"data-genui-achievement-toasts":!0},t.map(e=>(0,m.createElement)(`div`,{key:e.key,className:x.achToast},(0,m.createElement)(`span`,{className:x.achToastBadge,"aria-hidden":!0},`🏆`),(0,m.createElement)(`div`,{className:x.achToastBody},(0,m.createElement)(`div`,{className:x.achToastName},`成就解锁:${e.ach.name}`),(0,m.createElement)(`div`,{className:x.achToastDesc},e.ach.description)))))}function Wo(){if(typeof document>`u`)return()=>{};let e=document.createElement(`div`);e.dataset.dshGenuiAchievements=`1`,document.body.appendChild(e);let t=(0,h.createRoot)(e);return t.render((0,m.createElement)(Uo)),()=>{t.unmount(),e.remove()}}zt();function Go(){if(!(typeof document>`u`))for(let e of[`mermaid.js`,`three.js`]){if(document.head.querySelector(`link[rel="prefetch"][href="${Pt(e)}"]`)!==null)continue;let t=document.createElement(`link`);t.rel=`prefetch`,t.as=`script`,t.href=Pt(e),document.head.appendChild(t)}}function Ko(e,t){let n=e.sessions.scope(t),r=n?.get(`conversation`);return{sessionId:t,sendGenuiAction:(e,n)=>{if(r===void 0)return;let i=Object.keys(n).length===0?``:` 组件数据: ${JSON.stringify(n)}`;r.send(`[genui-action] ${e}。用户刚刚在面板中触发了动作 "${e}",请根据组件数据执行相应操作,只输出一个 panel:true 的 dsh-ui 围栏来更新面板,回复文本至多一行 10 字以内的确认(如"已刷新"),不要解释、不要普通围栏。${i}`).catch(n=>{console.warn(`[genui] 面板动作 "${e}" 发送失败(session ${t}):`,n instanceof Error?n.message:String(n))})},insertTemplate:e=>{(r?.input?.for?.(n))?.setDraft(e)}}}function qo(e,t,n){let r=e.sessions.scope(t)?.get(`conversation`);r!==void 0&&r.send(`用户执行了 /panel 并请求:${n}。请只输出一个 panel:true 的 dsh-ui 围栏来更新会话面板,内容按请求定制;回复文本至多一行 10 字以内的确认(如"已更新"),不要解释、不要普通围栏。`).catch(e=>{console.warn(`[genui] /panel 指令发送失败(session ${t}):`,e instanceof Error?e.message:String(e))})}function Jo(e,t,n,r){let i=e.sessions.scope(t)?.get(`conversation`);if(i===void 0)return;let a=Object.keys(r).length===0?``:` 组件数据: ${JSON.stringify(r)}`;i.send(`[genui-action] ${n}。用户刚刚在界面中触发了动作 "${n}",请根据组件数据执行相应操作,并用 dsh-ui 输出更新后的界面。${a}`).catch(()=>{})}function Yo(){return globalThis.__DSH_GENUI_E2E__===!0}function Xo(e){let t=p.registerFenceRenderer,n=typeof t==`function`&&!Yo();console.info(`[genui] client active; fence-channel=${n?`registry`:`dom`}`);let r=n?[t(`dsh-ui`,io)]:[ko(e,(t,n,r)=>Jo(e,t,n,r))];return Go(),r.push(Wo()),r.push(e.slots.inject(`tool.call.toolview`,()=>e.slots.register({name:`tool.call.toolview`,key:`render_ui`},Vo))),r.push(e.slots.inject(`conversation.input.dock`,()=>e.slots.register({name:`conversation.input.dock`,id:`genui-panel`,order:50,inject:t=>Ko(e,t)},Bo))),e.inject([`inputTriggers`],t=>{let n=t.get(`inputTriggers`);n!==void 0&&t.effect(()=>n.registerSource(No((t,n)=>qo(e,t,n))),`genui: /panel`)}),()=>{for(let e of r)e()}}return n.apply=Xo,n.inject=[`slots`,`sessions`],n.prefetchGenuiAssets=Go,n.renderGenuiFence=io,t.exports}});
|