@363045841yyt/klinechart 0.7.5-alpha.2 → 0.7.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/IndicatorSelector.vue.d.ts.map +1 -1
- package/dist/components/KLineChart.vue.d.ts.map +1 -1
- package/dist/index.cjs +2 -2
- package/dist/index.d.cts +22 -1
- package/dist/index.d.ts +22 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +649 -625
- package/dist/klinechart.css +1 -1
- package/package.json +1 -1
- package/src/components/IndicatorSelector.vue +63 -61
- package/src/components/KLineChart.vue +73 -141
- package/src/index.ts +72 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IndicatorSelector.vue.d.ts","sourceRoot":"","sources":["../../src/components/IndicatorSelector.vue"],"names":[],"mappings":"AAgSA;
|
|
1
|
+
{"version":3,"file":"IndicatorSelector.vue.d.ts","sourceRoot":"","sources":["../../src/components/IndicatorSelector.vue"],"names":[],"mappings":"AAgSA;AAqqCA,KAAK,WAAW,GAAG;IACjB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;CAC1D,CAAC;AAmiCF,QAAA,MAAM,YAAY;;;;;;;;kFAGhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KLineChart.vue.d.ts","sourceRoot":"","sources":["../../src/components/KLineChart.vue"],"names":[],"mappings":"AA2GA;
|
|
1
|
+
{"version":3,"file":"KLineChart.vue.d.ts","sourceRoot":"","sources":["../../src/components/KLineChart.vue"],"names":[],"mappings":"AA2GA;AAk+CA,OAAO,EAGL,KAAK,mBAAmB,EACxB,KAAK,WAAW,EACjB,MAAM,wCAAwC,CAAA;AAc/C,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,0DAA0D,CAAA;AAiBhG,KAAK,WAAW,GAAG;IACf,sBAAsB;IACtB,cAAc,EAAE,mBAAmB,CAAA;IAEnC,kCAAkC;IAClC,WAAW,EAAE,WAAW,CAAA;IAExB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,cAAc;IACd,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,cAAc;IACd,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,gCAAgC;IAChC,eAAe,CAAC,EAAE,MAAM,CAAA;IAExB,oBAAoB;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,kCAAkC;IAClC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,WAAW;IACX,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB,CAAC;AA+EJ,iBAAS,cAAc,SAEtB;AA+XD,iBAAS,UAAU,CACjB,WAAW,GAAE,gBAA2B,EACxC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC,GACjD,OAAO,CAeT;AAGD,iBAAS,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAM3C;AAGD,iBAAS,gBAAgB,IAAI,IAAI,CAUhC;AAgDD,iBAAS,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,gBAAgB,GAAG,IAAI,CAWlF;AAmLD,iBAAS,aAAa,SAyBrB;AAGD,iBAAS,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,QAI9D;AAquBD,QAAA,MAAM,YAAY;;;;;;;;;uBAttBG,MAAM;wBACL,MAAM;;;;;;;;;;gBAtyBX,MAAM;oBAIF,MAAM;sBAEJ,MAAM;eALb,MAAM;eACN,MAAM;qBAMA,MAAM;gBAGX,MAAM;sBAEA,MAAM;kBAEV,OAAO;6EAi/CxB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
|
package/dist/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require("vue"),t=require("@363045841yyt/klinechart-core/engine/renderers/Indicator/indicatorData"),n=require("@363045841yyt/klinechart-core/semantic"),r=require("@363045841yyt/klinechart-core/engine/chart"),i=require("@363045841yyt/klinechart-core/engine/chart-store"),a=require("@363045841yyt/klinechart-core/engine/utils/zoom"),o=require("@363045841yyt/klinechart-core/engine/utils/klineConfig"),s=require("@363045841yyt/klinechart-core/engine/renderers/Indicator/subPaneConfig"),c=require("@363045841yyt/klinechart-core/engine/renderers/paneTitle"),l=require("@363045841yyt/klinechart-core/config"),u=require("@363045841yyt/klinechart-core/engine/drawing"),d=require("@363045841yyt/klinechart-core");var f={class:`toolbar-item color-item`,title:`颜色`},p=[`value`],m=[`value`],h=[`value`],g=(0,e.defineComponent)({__name:`DrawingStyleToolbar`,props:{drawing:{}},emits:[`updateStyle`,`delete`],setup(t,{emit:n}){let r=n;function i(e){e.key===`Delete`&&(e.preventDefault(),r(`delete`))}(0,e.onMounted)(()=>document.addEventListener(`keydown`,i)),(0,e.onUnmounted)(()=>document.removeEventListener(`keydown`,i));function a(e){r(`updateStyle`,{stroke:e})}function o(e){r(`updateStyle`,{strokeWidth:e})}function s(e){r(`updateStyle`,{strokeStyle:e})}return(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{class:`drawing-style-toolbar`,onPointerdown:r[4]||=(0,e.withModifiers)(()=>{},[`stop`]),onPointermove:r[5]||=(0,e.withModifiers)(()=>{},[`stop`]),onPointerup:r[6]||=(0,e.withModifiers)(()=>{},[`stop`])},[(0,e.createElementVNode)(`div`,f,[(0,e.createElementVNode)(`span`,{class:`color-swatch`,style:(0,e.normalizeStyle)({background:t.drawing.style.stroke??`#2962ff`})},null,4),(0,e.createElementVNode)(`input`,{type:`color`,class:`color-input`,value:t.drawing.style.stroke??`#2962ff`,onInput:r[0]||=e=>a(e.target.value)},null,40,p)]),(0,e.createElementVNode)(`select`,{class:`toolbar-select`,value:t.drawing.style.strokeWidth??1,onChange:r[1]||=e=>o(Number(e.target.value)),title:`线宽`},[...r[7]||=[(0,e.createElementVNode)(`option`,{value:1},`1px`,-1),(0,e.createElementVNode)(`option`,{value:2},`2px`,-1),(0,e.createElementVNode)(`option`,{value:3},`3px`,-1),(0,e.createElementVNode)(`option`,{value:4},`4px`,-1)]],40,m),(0,e.createElementVNode)(`select`,{class:`toolbar-select`,value:t.drawing.style.strokeStyle??`solid`,onChange:r[2]||=e=>s(e.target.value),title:`线型`},[...r[8]||=[(0,e.createElementVNode)(`option`,{value:`solid`},`实线`,-1),(0,e.createElementVNode)(`option`,{value:`dashed`},`虚线`,-1),(0,e.createElementVNode)(`option`,{value:`dotted`},`点线`,-1)]],40,h),(0,e.createElementVNode)(`button`,{type:`button`,class:`toolbar-btn delete-btn`,title:`删除`,onClick:r[3]||=e=>n.$emit(`delete`)},[...r[9]||=[(0,e.createElementVNode)(`svg`,{class:`delete-icon`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"aria-hidden":`true`},[(0,e.createElementVNode)(`path`,{d:`M3 6h18`}),(0,e.createElementVNode)(`path`,{d:`M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6`}),(0,e.createElementVNode)(`path`,{d:`M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2`})],-1)]])],32))}}),_=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n},v=_(g,[[`__scopeId`,`data-v-4c26f819`]]),y={class:`params-header`},b={class:`header-left`},x={class:`params-title`},S={class:`header-right`},C={key:0,class:`indicator-description`},w={class:`params-body`},T={class:`param-header`},E={class:`param-label`},D={class:`param-label-text`},O={key:0,class:`param-range`},ee={class:`input-wrapper`},te=[`disabled`,`onClick`],k=[`value`,`min`,`max`,`step`,`onInput`],ne=[`disabled`,`onClick`],re={key:0,class:`param-description`},A={class:`params-footer`},j={class:`footer-right`},ie=_((0,e.defineComponent)({__name:`IndicatorParams`,props:{visible:{type:Boolean},indicatorId:{},indicatorName:{},indicatorDescription:{},params:{},values:{}},emits:[`close`,`confirm`],setup(t,{emit:n}){let r=t,i=n,a=(0,e.ref)({...r.values}),o=(0,e.ref)(!0),s=(0,e.computed)(()=>`body`);(0,e.watch)(()=>r.values,e=>{a.value={...e}},{deep:!0,immediate:!0}),(0,e.watch)(()=>r.visible,e=>{e&&(a.value={...r.values})});function c(e,t){let n=t.target,r=parseFloat(n.value);isNaN(r)||(a.value[e]=r)}function l(e,t){let n=e.step||1,r=(a.value[e.key]||0)+t*n;e.min!==void 0&&(r=Math.max(e.min,r)),e.max!==void 0&&(r=Math.min(e.max,r)),a.value[e.key]=parseFloat(r.toFixed(10))}function u(){let e={};r.params.forEach(t=>{e[t.key]=t.default??r.values[t.key]??0}),a.value=e}function d(){i(`confirm`,{...a.value})}return(n,r)=>((0,e.openBlock)(),(0,e.createBlock)(e.Teleport,{to:s.value},[(0,e.createVNode)(e.Transition,{name:`overlay`},{default:(0,e.withCtx)(()=>[t.visible?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:0,class:`params-overlay`,onClick:r[4]||=e=>n.$emit(`close`)},[(0,e.createVNode)(e.Transition,{name:`modal`},{default:(0,e.withCtx)(()=>[(0,e.createElementVNode)(`div`,{class:`indicator-params`,onClick:r[3]||=(0,e.withModifiers)(()=>{},[`stop`])},[(0,e.createElementVNode)(`div`,y,[(0,e.createElementVNode)(`div`,b,[(0,e.createElementVNode)(`span`,x,(0,e.toDisplayString)(t.indicatorName),1),r[5]||=(0,e.createElementVNode)(`span`,{class:`params-subtitle`},`参数设置`,-1)]),(0,e.createElementVNode)(`div`,S,[(0,e.createElementVNode)(`button`,{class:(0,e.normalizeClass)([`toggle-desc-btn`,{active:o.value}]),onClick:r[0]||=e=>o.value=!o.value,title:`显示/隐藏说明`},[...r[6]||=[(0,e.createElementVNode)(`svg`,{viewBox:`0 0 1024 1024`},[(0,e.createElementVNode)(`path`,{d:`M512 97.52381c228.912762 0 414.47619 185.563429 414.47619 414.47619s-185.563429 414.47619-414.47619 414.47619S97.52381 740.912762 97.52381 512 283.087238 97.52381 512 97.52381z m0 73.142857C323.486476 170.666667 170.666667 323.486476 170.666667 512s152.81981 341.333333 341.333333 341.333333 341.333333-152.81981 341.333333-341.333333S700.513524 170.666667 512 170.666667z m36.571429 268.190476v292.571428h-73.142858V438.857143h73.142858z m0-121.904762v73.142857h-73.142858v-73.142857h73.142858z`,fill:`currentColor`})],-1)]],2),(0,e.createElementVNode)(`button`,{class:`params-close`,onClick:r[1]||=e=>n.$emit(`close`)},[...r[7]||=[(0,e.createElementVNode)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`},[(0,e.createElementVNode)(`path`,{d:`M18 6L6 18M6 6l12 12`})],-1)]])])]),(0,e.createVNode)(e.Transition,{name:`slide`},{default:(0,e.withCtx)(()=>[o.value&&t.indicatorDescription?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,C,[(0,e.createElementVNode)(`p`,null,(0,e.toDisplayString)(t.indicatorDescription),1)])):(0,e.createCommentVNode)(``,!0)]),_:1}),(0,e.createElementVNode)(`div`,w,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.params,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:t.key,class:(0,e.normalizeClass)([`param-item`,{"has-desc":o.value&&t.description}])},[(0,e.createElementVNode)(`div`,T,[(0,e.createElementVNode)(`label`,E,[(0,e.createElementVNode)(`span`,D,(0,e.toDisplayString)(t.label),1),t.min!==void 0||t.max!==void 0?((0,e.openBlock)(),(0,e.createElementBlock)(`span`,O,(0,e.toDisplayString)(t.min??`-∞`)+` ~ `+(0,e.toDisplayString)(t.max??`+∞`),1)):(0,e.createCommentVNode)(``,!0)]),(0,e.createElementVNode)(`div`,ee,[(0,e.createElementVNode)(`button`,{class:`stepper-btn`,disabled:t.min!==void 0&&(a.value[t.key]??0)<=t.min,onClick:e=>l(t,-1)},` − `,8,te),t.type===`number`?((0,e.openBlock)(),(0,e.createElementBlock)(`input`,{key:0,type:`number`,class:`param-input`,value:a.value[t.key],min:t.min,max:t.max,step:t.step||1,onInput:e=>c(t.key,e)},null,40,k)):(0,e.createCommentVNode)(``,!0),(0,e.createElementVNode)(`button`,{class:`stepper-btn`,disabled:t.max!==void 0&&(a.value[t.key]??0)>=t.max,onClick:e=>l(t,1)},` + `,8,ne)])]),(0,e.createVNode)(e.Transition,{name:`slide`},{default:(0,e.withCtx)(()=>[o.value&&t.description?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,re,(0,e.toDisplayString)(t.description),1)):(0,e.createCommentVNode)(``,!0)]),_:2},1024)],2))),128))]),(0,e.createElementVNode)(`div`,A,[(0,e.createElementVNode)(`button`,{class:`params-btn reset`,onClick:u},[...r[8]||=[(0,e.createElementVNode)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`},[(0,e.createElementVNode)(`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`}),(0,e.createElementVNode)(`path`,{d:`M3 3v5h5`})],-1),(0,e.createTextVNode)(` 重置 `,-1)]]),(0,e.createElementVNode)(`div`,j,[(0,e.createElementVNode)(`button`,{class:`params-btn cancel`,onClick:r[2]||=e=>n.$emit(`close`)},`取消`),(0,e.createElementVNode)(`button`,{class:`params-btn confirm`,onClick:d},[...r[9]||=[(0,e.createElementVNode)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2.5`},[(0,e.createElementVNode)(`path`,{d:`M20 6L9 17l-5-5`})],-1),(0,e.createTextVNode)(` 确定 `,-1)]])])])])]),_:1})])):(0,e.createCommentVNode)(``,!0)]),_:1})],8,[`to`]))}}),[[`__scopeId`,`data-v-b82e9094`]]),M=Symbol(`fullscreen-teleport-target`);function N(){let t=(0,e.inject)(M,null);return(0,e.computed)(()=>t?.value??`body`)}var ae={class:`indicator-selector`},oe={class:`indicator-scroll-container`},se={class:`indicator-list`},P={key:0,class:`indicator-divider`,"aria-hidden":`true`},F=[`draggable`,`onDragstart`,`onDragover`,`onDrop`],I=[`onMouseenter`],ce={class:`btn-content`},le={key:0,class:`param-hint`},L={key:0,class:`hover-overlay`},ue=[`onClick`],R={key:1,class:`divider`},de=[`onClick`],fe={class:`indicator-item`},pe={class:`modal-header`},me={class:`header-title`},he={class:`title-sub`},ge={class:`header-actions`},_e={key:0,viewBox:`0 0 24 24`,width:`16`,height:`16`,fill:`currentColor`},ve={key:1,viewBox:`0 0 24 24`,width:`16`,height:`16`,fill:`currentColor`},z={class:`modal-body`},ye={class:`search-box`},be={key:0,class:`indicator-section`},B={class:`section-header`},xe={class:`section-count`},Se=[`onClick`],Ce={class:`card-label`},we={class:`card-tooltip`},Te={class:`card-header`},Ee={class:`card-label`},De={class:`card-header-actions`},Oe=[`onClick`],ke={class:`card-name`},Ae={key:1,class:`section-divider`},je={key:2,class:`no-results`},Me={key:3,class:`indicator-section`},Ne={class:`section-header`},Pe={class:`section-count`},Fe=[`onClick`],Ie={class:`card-label`},Le={class:`card-tooltip`},Re={class:`card-header`},V={class:`card-label`},ze={class:`card-header-actions`},Be=[`onClick`],H={class:`card-name`},U={class:`modal-footer`},Ve={class:`footer-info`},He={class:`info-text`},Ue=_((0,e.defineComponent)({__name:`IndicatorSelector`,props:{activeIndicators:{},indicatorParams:{}},emits:[`toggle`,`updateParams`,`reorderSubIndicators`],setup(n,{emit:r}){let i=n,a=r,o=(0,e.ref)(null),s=(0,e.ref)(!1),c=(0,e.ref)(null),l=(0,e.ref)(null),u=(0,e.ref)(!1),d=(0,e.ref)(null),f=(0,e.ref)(null),p=(0,e.ref)(!1),m=(0,e.ref)(``),h=N(),g=(0,e.computed)(()=>i.activeIndicators?.length?i.activeIndicators.map(e=>(0,t.findIndicator)(e)).filter(e=>e!==void 0).sort((e,t)=>e.pane===t.pane?0:e.pane===`main`?-1:1):[]),_=(0,e.computed)(()=>g.value.some(e=>e.pane===`main`)?g.value.find(e=>e.pane===`sub`)?.id??null:null),v=(0,e.computed)(()=>c.value?(0,t.findIndicator)(c.value):null),y=(0,e.computed)(()=>t.mainIndicators.length+t.subIndicators.length),b=(0,e.computed)(()=>i.activeIndicators?.length??0),x=(0,e.computed)(()=>{if(!m.value.trim())return t.mainIndicators;let e=m.value.toLowerCase().trim();return t.mainIndicators.filter(t=>t.label.toLowerCase().includes(e)||t.name.toLowerCase().includes(e)||t.id.toLowerCase().includes(e))}),S=(0,e.computed)(()=>{if(!m.value.trim())return t.subIndicators;let e=m.value.toLowerCase().trim();return t.subIndicators.filter(t=>t.label.toLowerCase().includes(e)||t.name.toLowerCase().includes(e)||t.id.toLowerCase().includes(e))}),C=(0,e.computed)(()=>x.value.length>0||S.value.length>0);function w(e){return i.activeIndicators?.includes(e)??!1}function T(e){if(w(e))return;let n=(0,t.findIndicator)(e);n&&(n.pane===`main`&&t.mainIndicators.filter(t=>t.id!==e&&w(t.id)).forEach(e=>a(`toggle`,e.id,!1)),a(`toggle`,e,!0))}function E(e){a(`toggle`,e,!1)}function D(e){c.value=e,s.value=!0}function O(){u.value=!1}function ee(e){let n=(0,t.findIndicator)(e);if(!n?.params)return{};let r={};for(let e of n.params)r[e.key]=e.default??e.min??1;let a=i.indicatorParams?.[e]||{},o={...r};for(let[e,t]of Object.entries(a))typeof t==`number`&&(o[e]=t);return o}function te(e){let t=ee(e.id);return e.params?e.params.map(e=>t[e.key]??``).join(`,`):``}function k(e){c.value&&a(`updateParams`,c.value,e),s.value=!1}function ne(e,n){if(!(0,t.isSubIndicatorId)(n)){e.preventDefault();return}f.value=n,d.value=null,e.dataTransfer?.setData(`text/plain`,n),e.dataTransfer&&(e.dataTransfer.effectAllowed=`move`)}function re(e,n){!f.value||!(0,t.isSubIndicatorId)(n)||f.value===n||(d.value=n,e.dataTransfer&&(e.dataTransfer.dropEffect=`move`))}function A(e,n){let r=f.value||e.dataTransfer?.getData(`text/plain`)||``;if(!r||r===n){j();return}if(!(0,t.isSubIndicatorId)(r)||!(0,t.isSubIndicatorId)(n)){j();return}let i=g.value.findIndex(e=>e.id===r),o=g.value.findIndex(e=>e.id===n);if(i<0||o<0){j();return}let s=[...g.value.map(e=>e.id)],[c]=s.splice(i,1);if(!c){j();return}s.splice(o,0,c),a(`reorderSubIndicators`,s.filter(e=>(0,t.isSubIndicatorId)(e))),j()}function j(){d.value=null,f.value=null}function M(){u.value=!u.value}function Ue(e){e.key===`Escape`&&u.value&&(u.value=!1)}return(0,e.onMounted)(()=>{document.addEventListener(`keydown`,Ue)}),(0,e.onUnmounted)(()=>{document.removeEventListener(`keydown`,Ue)}),(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,ae,[(0,e.createElementVNode)(`div`,oe,[(0,e.createElementVNode)(`div`,se,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(g.value,n=>((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:n.id},[n.id===_.value?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,P)):(0,e.createCommentVNode)(``,!0),(0,e.createElementVNode)(`div`,{class:(0,e.normalizeClass)([`indicator-item`,{draggable:(0,e.unref)(t.isSubIndicatorId)(n.id),"drag-over":d.value===n.id,"is-dragging":f.value===n.id}]),draggable:(0,e.unref)(t.isSubIndicatorId)(n.id),onDragstart:e=>ne(e,n.id),onDragover:(0,e.withModifiers)(e=>re(e,n.id),[`prevent`]),onDrop:(0,e.withModifiers)(e=>A(e,n.id),[`prevent`]),onDragend:j},[(0,e.createElementVNode)(`div`,{class:`indicator-btn-wrapper`,onMouseenter:e=>l.value=n.id,onMouseleave:r[0]||=e=>l.value=null},[(0,e.createElementVNode)(`button`,{class:(0,e.normalizeClass)([`indicator-btn`,{active:!0,hovering:l.value===n.id}])},[(0,e.createElementVNode)(`span`,ce,[(0,e.createTextVNode)((0,e.toDisplayString)(n.label)+` `,1),n.params?.length?((0,e.openBlock)(),(0,e.createElementBlock)(`span`,le,` (`+(0,e.toDisplayString)(te(n))+`) `,1)):(0,e.createCommentVNode)(``,!0)]),(0,e.createVNode)(e.Transition,{name:`fade`},{default:(0,e.withCtx)(()=>[l.value===n.id?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,L,[n.params?.length?((0,e.openBlock)(),(0,e.createElementBlock)(`button`,{key:0,class:`action-btn settings-btn`,onClick:(0,e.withModifiers)(e=>D(n.id),[`stop`]),title:`编辑参数`},[...r[5]||=[(0,e.createElementVNode)(`svg`,{viewBox:`0 0 24 24`,width:`14`,height:`14`,fill:`currentColor`},[(0,e.createElementVNode)(`path`,{d:`M19.14 12.94c.04-.31.06-.63.06-.94 0-.31-.02-.63-.06-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.04.31-.06.63-.06.94s.02.63.06.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61l-2.01-1.58zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6z`})],-1)]],8,ue)):(0,e.createCommentVNode)(``,!0),n.params?.length?((0,e.openBlock)(),(0,e.createElementBlock)(`span`,R)):(0,e.createCommentVNode)(``,!0),(0,e.createElementVNode)(`button`,{class:`action-btn remove-btn`,onClick:(0,e.withModifiers)(e=>E(n.id),[`stop`]),title:`移除指标`},[...r[6]||=[(0,e.createElementVNode)(`svg`,{viewBox:`0 0 24 24`,width:`14`,height:`14`,fill:`currentColor`},[(0,e.createElementVNode)(`path`,{d:`M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z`})],-1)]],8,de)])):(0,e.createCommentVNode)(``,!0)]),_:2},1024)],2)],40,I)],42,F)],64))),128)),(0,e.createElementVNode)(`div`,fe,[(0,e.createElementVNode)(`button`,{ref_key:`addBtnRef`,ref:o,class:`add-btn`,onClick:M,title:`添加指标`},[...r[7]||=[(0,e.createElementVNode)(`svg`,{viewBox:`0 0 24 24`,width:`16`,height:`16`,fill:`currentColor`},[(0,e.createElementVNode)(`path`,{d:`M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z`})],-1)]],512)])])]),((0,e.openBlock)(),(0,e.createBlock)(e.Teleport,{to:(0,e.unref)(h)},[(0,e.createVNode)(e.Transition,{name:`overlay`},{default:(0,e.withCtx)(()=>[u.value?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:0,class:`selector-overlay`,onClick:O},[(0,e.createVNode)(e.Transition,{name:`modal`},{default:(0,e.withCtx)(()=>[u.value?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:0,class:`selector-modal`,onClick:r[3]||=(0,e.withModifiers)(()=>{},[`stop`])},[(0,e.createElementVNode)(`div`,pe,[(0,e.createElementVNode)(`div`,me,[r[8]||=(0,e.createElementVNode)(`span`,{class:`title-text`},`添加指标`,-1),(0,e.createElementVNode)(`span`,he,(0,e.toDisplayString)(y.value)+` 个可用指标`,1)]),(0,e.createElementVNode)(`div`,ge,[(0,e.createElementVNode)(`button`,{class:(0,e.normalizeClass)([`view-toggle-btn`,{active:p.value}]),onClick:r[1]||=e=>p.value=!p.value,title:`简洁模式`},[p.value?((0,e.openBlock)(),(0,e.createElementBlock)(`svg`,ve,[...r[10]||=[(0,e.createElementVNode)(`path`,{d:`M3 3h18v18H3V3zm16 16V5H5v14h14zM7 7h4v4H7V7zm0 6h4v4H7v-4zm6-6h4v4h-4V7zm0 6h4v4h-4v-4z`},null,-1)]])):((0,e.openBlock)(),(0,e.createElementBlock)(`svg`,_e,[...r[9]||=[(0,e.createElementVNode)(`path`,{d:`M4 6h16v2H4zm0 5h16v2H4zm0 5h16v2H4z`},null,-1)]]))],2),(0,e.createElementVNode)(`button`,{class:`modal-close`,onClick:O,title:`关闭`},[...r[11]||=[(0,e.createElementVNode)(`svg`,{viewBox:`0 0 24 24`,width:`14`,height:`14`,fill:`currentColor`},[(0,e.createElementVNode)(`path`,{d:`M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z`})],-1)]])])]),(0,e.createElementVNode)(`div`,z,[(0,e.createElementVNode)(`div`,ye,[r[12]||=(0,e.createElementVNode)(`svg`,{class:`search-icon`,viewBox:`0 0 24 24`,width:`16`,height:`16`,fill:`currentColor`},[(0,e.createElementVNode)(`path`,{d:`M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z`})],-1),(0,e.withDirectives)((0,e.createElementVNode)(`input`,{"onUpdate:modelValue":r[2]||=e=>m.value=e,type:`text`,class:`search-input`,placeholder:`搜索指标名称...`},null,512),[[e.vModelText,m.value]])]),x.value.length>0?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,be,[(0,e.createElementVNode)(`div`,B,[r[13]||=(0,e.createElementVNode)(`span`,{class:`section-title`},`主图指标`,-1),(0,e.createElementVNode)(`span`,xe,(0,e.toDisplayString)(x.value.length),1)]),(0,e.createElementVNode)(`div`,{class:(0,e.normalizeClass)([`indicator-grid`,{compact:p.value}])},[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(x.value,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`button`,{key:t.id,class:(0,e.normalizeClass)([`indicator-card`,{active:w(t.id),compact:p.value}]),onClick:e=>w(t.id)?E(t.id):T(t.id)},[p.value?((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:0},[(0,e.createElementVNode)(`span`,Ce,(0,e.toDisplayString)(t.label),1),(0,e.createElementVNode)(`span`,we,(0,e.toDisplayString)(t.name),1)],64)):((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:1},[(0,e.createElementVNode)(`div`,Te,[(0,e.createElementVNode)(`span`,Ee,(0,e.toDisplayString)(t.label),1),(0,e.createElementVNode)(`div`,De,[t.params?.length?((0,e.openBlock)(),(0,e.createElementBlock)(`button`,{key:0,class:`card-settings-btn`,onClick:(0,e.withModifiers)(e=>D(t.id),[`stop`]),title:`编辑参数`},[...r[14]||=[(0,e.createElementVNode)(`svg`,{viewBox:`0 0 24 24`,width:`14`,height:`14`,fill:`currentColor`},[(0,e.createElementVNode)(`path`,{d:`M19.14 12.94c.04-.31.06-.63.06-.94 0-.31-.02-.63-.06-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.04.31-.06.63-.06.94s.02.63.06.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61l-2.01-1.58zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6z`})],-1)]],8,Oe)):(0,e.createCommentVNode)(``,!0)])]),(0,e.createElementVNode)(`div`,ke,(0,e.toDisplayString)(t.name),1)],64))],10,Se))),128))],2)])):(0,e.createCommentVNode)(``,!0),x.value.length>0&&S.value.length>0?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,Ae)):(0,e.createCommentVNode)(``,!0),!C.value&&m.value.trim()?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,je,[...r[15]||=[(0,e.createElementVNode)(`svg`,{viewBox:`0 0 24 24`,width:`48`,height:`48`,fill:`currentColor`},[(0,e.createElementVNode)(`path`,{d:`M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z`})],-1),(0,e.createElementVNode)(`p`,null,`未找到匹配的指标`,-1),(0,e.createElementVNode)(`span`,{class:`no-results-hint`},`请尝试其他关键词`,-1)]])):(0,e.createCommentVNode)(``,!0),S.value.length>0?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,Me,[(0,e.createElementVNode)(`div`,Ne,[r[16]||=(0,e.createElementVNode)(`span`,{class:`section-title`},`副图指标`,-1),(0,e.createElementVNode)(`span`,Pe,(0,e.toDisplayString)(S.value.length),1)]),(0,e.createElementVNode)(`div`,{class:(0,e.normalizeClass)([`indicator-grid`,{compact:p.value}])},[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(S.value,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`button`,{key:t.id,class:(0,e.normalizeClass)([`indicator-card`,{active:w(t.id),compact:p.value}]),onClick:e=>w(t.id)?E(t.id):T(t.id)},[p.value?((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:0},[(0,e.createElementVNode)(`span`,Ie,(0,e.toDisplayString)(t.label),1),(0,e.createElementVNode)(`span`,Le,(0,e.toDisplayString)(t.name),1)],64)):((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:1},[(0,e.createElementVNode)(`div`,Re,[(0,e.createElementVNode)(`span`,V,(0,e.toDisplayString)(t.label),1),(0,e.createElementVNode)(`div`,ze,[t.params?.length?((0,e.openBlock)(),(0,e.createElementBlock)(`button`,{key:0,class:`card-settings-btn`,onClick:(0,e.withModifiers)(e=>D(t.id),[`stop`]),title:`编辑参数`},[...r[17]||=[(0,e.createElementVNode)(`svg`,{viewBox:`0 0 24 24`,width:`14`,height:`14`,fill:`currentColor`},[(0,e.createElementVNode)(`path`,{d:`M19.14 12.94c.04-.31.06-.63.06-.94 0-.31-.02-.63-.06-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.04.31-.06.63-.06.94s.02.63.06.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61l-2.01-1.58zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6z`})],-1)]],8,Be)):(0,e.createCommentVNode)(``,!0)])]),(0,e.createElementVNode)(`div`,H,(0,e.toDisplayString)(t.name),1)],64))],10,Fe))),128))],2)])):(0,e.createCommentVNode)(``,!0)]),(0,e.createElementVNode)(`div`,U,[(0,e.createElementVNode)(`div`,Ve,[(0,e.createElementVNode)(`span`,He,`已激活 `+(0,e.toDisplayString)(b.value)+` 个指标`,1)]),(0,e.createElementVNode)(`button`,{class:`btn btn-confirm`,onClick:O},`确认`)])])):(0,e.createCommentVNode)(``,!0)]),_:1})])):(0,e.createCommentVNode)(``,!0)]),_:1})],8,[`to`])),v.value?((0,e.openBlock)(),(0,e.createBlock)(ie,{key:0,visible:s.value,"indicator-id":v.value.id,"indicator-name":v.value.name,"indicator-description":v.value.description,params:v.value.params||[],values:ee(v.value.id),onClose:r[4]||=e=>s.value=!1,onConfirm:k},null,8,[`visible`,`indicator-id`,`indicator-name`,`indicator-description`,`params`,`values`])):(0,e.createCommentVNode)(``,!0)]))}}),[[`__scopeId`,`data-v-73fe46e7`]]),W={class:`kline-tooltip__title`},G={key:0},K={class:`kline-tooltip__grid`},q={class:`row`},We={class:`row`},Ge={class:`row`},Ke={class:`row`},qe={key:0,class:`row`},Je={key:1,class:`row`},Ye={key:2,class:`row`},Xe={key:3,class:`row`},Ze={key:4,class:`row`},Qe={key:5,class:`row`},J=`#ef4444`,$e=`#22c55e`,Y=`#6b7280`,et=_((0,e.defineComponent)({__name:`KLineTooltip`,props:{k:{},index:{},data:{},pos:{},useAnchor:{type:Boolean},anchorPlacement:{},setEl:{type:Function}},setup(t){let n=t,r=(0,e.computed)(()=>n.useAnchor===!0),i=(0,e.computed)(()=>n.anchorPlacement===`left-bottom`?`anchor-left-bottom`:`anchor-right-bottom`);function a(e){n.setEl?.(e)}function o(e){let t=new Date(e);return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,`0`)}-${String(t.getDate()).padStart(2,`0`)}`}function s(e){return e>=1e8?(e/1e8).toFixed(2)+`亿`:e>=1e4?(e/1e4).toFixed(2)+`万`:e.toFixed(2)}function c(e,t){return`${e>=0?`+`:``}${e.toFixed(2)}${t}`}function l(e,t,n){if(e.close>=e.open)return 1;let r=typeof n==`number`&&n>0?t[n-1]:void 0;return r&&e.close>r.close?1:r&&e.close<r.close?-1:0}let u=(0,e.computed)(()=>{let e=n.k;if(!e)return Y;let t=l(e,n.data,n.index);return t>0?J:t<0?$e:Y}),d=(0,e.computed)(()=>{let e=n.k;if(!e)return Y;let t=e.close-e.open;return t>0?J:t<0?$e:Y}),f=(0,e.computed)(()=>{let e=n.k;if(!e)return Y;let t=e.changePercent??(e.close-e.open)/e.open*100;return t>0?J:t<0?$e:Y});return(n,l)=>t.k?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:0,ref:a,class:(0,e.normalizeClass)([`kline-tooltip`,[{"use-anchor":r.value},i.value]]),style:(0,e.normalizeStyle)(r.value?void 0:{left:`${t.pos.x}px`,top:`${t.pos.y}px`})},[(0,e.createElementVNode)(`div`,W,[t.k.stockCode?((0,e.openBlock)(),(0,e.createElementBlock)(`span`,G,(0,e.toDisplayString)(t.k.stockCode),1)):(0,e.createCommentVNode)(``,!0),(0,e.createElementVNode)(`span`,null,(0,e.toDisplayString)(o(t.k.timestamp)),1)]),(0,e.createElementVNode)(`div`,K,[(0,e.createElementVNode)(`div`,q,[l[0]||=(0,e.createElementVNode)(`span`,null,`开`,-1),(0,e.createElementVNode)(`span`,{style:(0,e.normalizeStyle)({color:u.value})},(0,e.toDisplayString)(t.k.open.toFixed(2)),5)]),(0,e.createElementVNode)(`div`,We,[l[1]||=(0,e.createElementVNode)(`span`,null,`高`,-1),(0,e.createElementVNode)(`span`,null,(0,e.toDisplayString)(t.k.high.toFixed(2)),1)]),(0,e.createElementVNode)(`div`,Ge,[l[2]||=(0,e.createElementVNode)(`span`,null,`低`,-1),(0,e.createElementVNode)(`span`,null,(0,e.toDisplayString)(t.k.low.toFixed(2)),1)]),(0,e.createElementVNode)(`div`,Ke,[l[3]||=(0,e.createElementVNode)(`span`,null,`收`,-1),(0,e.createElementVNode)(`span`,{style:(0,e.normalizeStyle)({color:d.value})},(0,e.toDisplayString)(t.k.close.toFixed(2)),5)]),typeof t.k.volume==`number`?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,qe,[l[4]||=(0,e.createElementVNode)(`span`,null,`成交量`,-1),(0,e.createElementVNode)(`span`,null,(0,e.toDisplayString)(s(t.k.volume)),1)])):(0,e.createCommentVNode)(``,!0),typeof t.k.turnover==`number`?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,Je,[l[5]||=(0,e.createElementVNode)(`span`,null,`成交额`,-1),(0,e.createElementVNode)(`span`,null,(0,e.toDisplayString)(s(t.k.turnover)),1)])):(0,e.createCommentVNode)(``,!0),typeof t.k.amplitude==`number`?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,Ye,[l[6]||=(0,e.createElementVNode)(`span`,null,`振幅`,-1),(0,e.createElementVNode)(`span`,null,(0,e.toDisplayString)(t.k.amplitude)+`%`,1)])):(0,e.createCommentVNode)(``,!0),typeof t.k.changePercent==`number`?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,Xe,[l[7]||=(0,e.createElementVNode)(`span`,null,`涨跌幅`,-1),(0,e.createElementVNode)(`span`,{style:(0,e.normalizeStyle)({color:f.value})},(0,e.toDisplayString)(c(t.k.changePercent,`%`)),5)])):(0,e.createCommentVNode)(``,!0),typeof t.k.changeAmount==`number`?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,Ze,[l[8]||=(0,e.createElementVNode)(`span`,null,`涨跌额`,-1),(0,e.createElementVNode)(`span`,{style:(0,e.normalizeStyle)({color:f.value})},(0,e.toDisplayString)(c(t.k.changeAmount,``)),5)])):(0,e.createCommentVNode)(``,!0),typeof t.k.turnoverRate==`number`?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,Qe,[l[9]||=(0,e.createElementVNode)(`span`,null,`换手率`,-1),(0,e.createElementVNode)(`span`,null,(0,e.toDisplayString)(t.k.turnoverRate.toFixed(2))+`%`,1)])):(0,e.createCommentVNode)(``,!0)])],6)):(0,e.createCommentVNode)(``,!0)}}),[[`__scopeId`,`data-v-93207d24`]]),tt={class:`marker-tooltip__title`},nt={key:0,class:`marker-tooltip__content`},rt=_((0,e.defineComponent)({__name:`MarkerTooltip`,props:{marker:{},pos:{},useAnchor:{type:Boolean},anchorPlacement:{},setEl:{type:Function}},setup(t){let n={support:`支撑位`,resistance:`阻力位`,top:`顶部`,bottom:`底部`},r=t,i=(0,e.computed)(()=>r.useAnchor===!0),a=(0,e.computed)(()=>r.anchorPlacement===`left-bottom`?`anchor-left-bottom`:`anchor-right-bottom`);function o(e){r.setEl?.(e)}let s=(0,e.computed)(()=>r.marker&&`date`in r.marker),c=(0,e.computed)(()=>{if(!r.marker)return``;if(s.value){let e=r.marker;return e.label?.text||e.shape}let e=r.marker;return n[e.markerType]||e.markerType}),l=(0,e.computed)(()=>{if(!r.marker)return{};if(s.value){let e=r.marker;return{日期:e.date,...e.metadata}}return r.marker.metadata}),u=(0,e.computed)(()=>Object.keys(l.value).length>0);function d(e){return typeof e==`number`?e.toFixed(2):String(e)}return(n,r)=>t.marker?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:0,ref:o,class:(0,e.normalizeClass)([`marker-tooltip`,[{"use-anchor":i.value},a.value]]),style:(0,e.normalizeStyle)(i.value?void 0:{left:`${t.pos.x+12}px`,top:`${t.pos.y+12}px`})},[(0,e.createElementVNode)(`div`,tt,(0,e.toDisplayString)(c.value),1),u.value?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,nt,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(l.value,(t,n)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:n,class:`row`},[(0,e.createElementVNode)(`span`,null,(0,e.toDisplayString)(n),1),(0,e.createElementVNode)(`span`,null,(0,e.toDisplayString)(d(t)),1)]))),128))])):(0,e.createCommentVNode)(``,!0)],6)):(0,e.createCommentVNode)(``,!0)}}),[[`__scopeId`,`data-v-f56bc484`]]),X={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function it(t,n){return(0,e.openBlock)(),(0,e.createElementBlock)(`svg`,X,[...n[0]||=[(0,e.createElementVNode)(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M7.904 17.563a1.2 1.2 0 0 0 2.228.308l2.09-3.093l4.907 4.907a1.067 1.067 0 0 0 1.509 0l1.047-1.047a1.067 1.067 0 0 0 0-1.509l-4.907-4.907l3.113-2.09a1.2 1.2 0 0 0-.309-2.228L4 4z`},null,-1)]])}var at=(0,e.markRaw)({name:`tabler-pointer`,render:it}),ot={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function st(t,n){return(0,e.openBlock)(),(0,e.createElementBlock)(`svg`,ot,[...n[0]||=[(0,e.createElementVNode)(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M4 19h16M4 15l4-6l4 2l4-5l4 4`},null,-1)]])}var ct=(0,e.markRaw)({name:`tabler-chart-line`,render:st}),lt={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function ut(t,n){return(0,e.openBlock)(),(0,e.createElementBlock)(`svg`,lt,[...n[0]||=[(0,e.createElementVNode)(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M17 7L7 17M8 7h9v9`},null,-1)]])}var dt=(0,e.markRaw)({name:`tabler-arrow-up-right`,render:ut}),ft={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function pt(t,n){return(0,e.openBlock)(),(0,e.createElementBlock)(`svg`,ft,[...n[0]||=[(0,e.createElementVNode)(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M5 12h14m-6 6l6-6m-6-6l6 6`},null,-1)]])}var mt=(0,e.markRaw)({name:`tabler-arrow-right`,render:pt}),ht={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function gt(t,n){return(0,e.openBlock)(),(0,e.createElementBlock)(`svg`,ht,[...n[0]||=[(0,e.createElementVNode)(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M5 12h14`},null,-1)]])}var _t=(0,e.markRaw)({name:`tabler-minus`,render:gt}),vt={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function yt(t,n){return(0,e.openBlock)(),(0,e.createElementBlock)(`svg`,vt,[...n[0]||=[(0,e.createElementVNode)(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M3 12v.01M7 12h10m4 0v.01`},null,-1)]])}var bt=(0,e.markRaw)({name:`tabler-separator`,render:yt}),xt={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function St(t,n){return(0,e.openBlock)(),(0,e.createElementBlock)(`svg`,xt,[...n[0]||=[(0,e.createElementVNode)(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M4 8V6a2 2 0 0 1 2-2h2M4 16v2a2 2 0 0 0 2 2h2m8-16h2a2 2 0 0 1 2 2v2m-4 12h2a2 2 0 0 0 2-2v-2M9 12h6m-3-3v6`},null,-1)]])}var Ct=(0,e.markRaw)({name:`tabler-crosshair`,render:St}),wt={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Tt(t,n){return(0,e.openBlock)(),(0,e.createElementBlock)(`svg`,wt,[...n[0]||=[(0,e.createElementVNode)(`g`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`},[(0,e.createElementVNode)(`path`,{d:`M3 12a9 9 0 1 0 18 0a9 9 0 0 0-18 0m9-3h.01`}),(0,e.createElementVNode)(`path`,{d:`M11 12h1v4h1`})],-1)]])}var Et=(0,e.markRaw)({name:`tabler-info-circle`,render:Tt}),Dt={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Ot(t,n){return(0,e.openBlock)(),(0,e.createElementBlock)(`svg`,Dt,[...n[0]||=[(0,e.createElementVNode)(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M3 10a7 7 0 1 0 14 0a7 7 0 1 0-14 0m4 0h6m-3-3v6m11 8l-6-6`},null,-1)]])}var kt=(0,e.markRaw)({name:`tabler-zoom-in`,render:Ot}),At={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function jt(t,n){return(0,e.openBlock)(),(0,e.createElementBlock)(`svg`,At,[...n[0]||=[(0,e.createElementVNode)(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M3 10a7 7 0 1 0 14 0a7 7 0 1 0-14 0m4 0h6m8 11l-6-6`},null,-1)]])}var Mt=(0,e.markRaw)({name:`tabler-zoom-out`,render:jt}),Nt={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Pt(t,n){return(0,e.openBlock)(),(0,e.createElementBlock)(`svg`,Nt,[...n[0]||=[(0,e.createElementVNode)(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M4 8V6a2 2 0 0 1 2-2h2M4 16v2a2 2 0 0 0 2 2h2m8-16h2a2 2 0 0 1 2 2v2m-4 12h2a2 2 0 0 0 2-2v-2`},null,-1)]])}var Ft=(0,e.markRaw)({name:`tabler-maximize`,render:Pt}),It={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Lt(t,n){return(0,e.openBlock)(),(0,e.createElementBlock)(`svg`,It,[...n[0]||=[(0,e.createElementVNode)(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M15 19v-2a2 2 0 0 1 2-2h2M15 5v2a2 2 0 0 0 2 2h2M5 15h2a2 2 0 0 1 2 2v2M5 9h2a2 2 0 0 0 2-2V5`},null,-1)]])}var Rt=(0,e.markRaw)({name:`tabler-minimize`,render:Lt}),zt={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Bt(t,n){return(0,e.openBlock)(),(0,e.createElementBlock)(`svg`,zt,[...n[0]||=[(0,e.createElementVNode)(`g`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`},[(0,e.createElementVNode)(`path`,{d:`M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 0 0 2.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 0 0 1.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 0 0-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 0 0-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 0 0-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 0 0-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 0 0 1.066-2.573c-.94-1.543.826-3.31 2.37-2.37c1 .608 2.296.07 2.572-1.065`}),(0,e.createElementVNode)(`path`,{d:`M9 12a3 3 0 1 0 6 0a3 3 0 0 0-6 0`})],-1)]])}var Vt=(0,e.markRaw)({name:`tabler-settings`,render:Bt}),Ht={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Ut(t,n){return(0,e.openBlock)(),(0,e.createElementBlock)(`svg`,Ht,[...n[0]||=[(0,e.createElementVNode)(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M3 5a2 2 0 1 0 4 0a2 2 0 1 0-4 0m14 0a2 2 0 1 0 4 0a2 2 0 1 0-4 0M3 19a2 2 0 1 0 4 0a2 2 0 1 0-4 0m14 0a2 2 0 1 0 4 0a2 2 0 1 0-4 0M5 7v10M7 5h10M7 19h10m2-12v10`},null,-1)]])}var Wt=(0,e.markRaw)({name:`tabler-shape`,render:Ut}),Gt={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Kt(t,n){return(0,e.openBlock)(),(0,e.createElementBlock)(`svg`,Gt,[...n[0]||=[(0,e.createElementVNode)(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M3 7a2 2 0 1 0 4 0a2 2 0 1 0-4 0m11 8a2 2 0 1 0 4 0a2 2 0 1 0-4 0m1-9a3 3 0 1 0 6 0a3 3 0 1 0-6 0M3 18a3 3 0 1 0 6 0a3 3 0 1 0-6 0m6-1l5-1.5m-7.5-7l7.81 5.37M7 7l8-1`},null,-1)]])}var qt=(0,e.markRaw)({name:`tabler-chart-dots-3`,render:Kt}),Jt={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Yt(t,n){return(0,e.openBlock)(),(0,e.createElementBlock)(`svg`,Jt,[...n[0]||=[(0,e.createElementVNode)(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`m18 10l-6-6l-6 6zm0 4l-6 6l-6-6z`},null,-1)]])}var Xt=(0,e.markRaw)({name:`tabler-caret-up-down`,render:Yt}),Zt={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Qt(t,n){return(0,e.openBlock)(),(0,e.createElementBlock)(`svg`,Zt,[...n[0]||=[(0,e.createElementVNode)(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M8 4H5v16h3m8-16h3v16h-3`},null,-1)]])}var $t=(0,e.markRaw)({name:`tabler-brackets`,render:Qt});function Z(){return Object.create(null)}function en(){return{ctxMethods:Z(),ctxProps:Z(),canvasProps:Z(),ctxMethodSources:Object.create(null)}}function tn(e,t,n){let r=e[t]??={count:0,totalTime:0};r.count+=1,r.totalTime+=n}function nn(e,t,n,r){tn(e.ctxMethodSources[t]??=Z(),n,r)}function rn(e){return Object.entries(e).filter(([,e])=>e.count>0).map(([e,t])=>({name:e,count:t.count,totalTime:t.totalTime.toFixed(2),averageTime:(t.totalTime/t.count).toFixed(4)})).sort((e,t)=>Number(t.totalTime)-Number(e.totalTime))}var an=!1,on=new Map,sn=new Map;function cn(e){an=e,e?typeof window<`u`&&!window.__KMAP_CANVAS_PROFILER_INSTALLED__&&un():dn()}function ln(){if(!an)return`disabled`;let e=Error().stack;if(!e)return`unknown`;let t=e.split(`
|
|
2
|
-
`).map(e=>e.trim()).filter(Boolean);for(let e of t){if(e.includes(`canvasProfiler`)||e.includes(`CanvasRenderingContext2D`)||e===`Error`)continue;let t=e.replace(/^at\s+/,``),n=t.match(/((?:src|node_modules)[^\s)]+):(\d+):(\d+)/);if(n)return`${n[1]}:${n[2]}`;let r=t.match(/\(([^)]+):(\d+):(\d+)\)$/);return r?`${r[1]}:${r[2]}`:t}return`unknown`}function Q(e,t,n,r){let i=`${e.constructor?.name??`proto`}:${t}`;if(on.has(i))return;let a=Reflect.get(e,t);typeof a==`function`&&(on.set(i,a),Reflect.set(e,t,function(...e){if(!an)return a.apply(this,e);let i=r?.captureSource?ln():null,o=performance.now(),s=a.apply(this,e),c=performance.now()-o;return tn(n.ctxMethods,t,c),i&&nn(n,t,i,c),s}))}function $(e,t,n){let r=Object.getOwnPropertyDescriptor(e,t);if(!r?.set||!r.configurable)return;let i=`${e.constructor?.name??`proto`}:${t}`;sn.has(i)||(sn.set(i,r),Object.defineProperty(e,t,{configurable:!0,enumerable:r.enumerable??!1,get:r.get,set(e){if(!an){r.set.call(this,e);return}let i=performance.now();r.set.call(this,e),tn(n,t,performance.now()-i)}}))}function un(){if(typeof window>`u`||window.__KMAP_CANVAS_PROFILER_INSTALLED__)return;let e=CanvasRenderingContext2D?.prototype,t=HTMLCanvasElement?.prototype;if(!e||!t)return;let n=en();Q(e,`fillText`,n,{captureSource:!0}),Q(e,`measureText`,n,{captureSource:!0}),Q(e,`drawImage`,n),Q(e,`save`,n),Q(e,`restore`,n),Q(e,`clip`,n),Q(e,`setTransform`,n),Q(e,`scale`,n),$(e,`font`,n.ctxProps),$(e,`filter`,n.ctxProps),$(e,`shadowBlur`,n.ctxProps),$(e,`lineWidth`,n.ctxProps),$(t,`width`,n.canvasProps),$(t,`height`,n.canvasProps),window.__KMAP_CANVAS_PROFILER_METRICS__=n,window.__KMAP_CANVAS_PROFILER_INSTALLED__=!0,window.showCanvasReport=()=>{let e=window.__KMAP_CANVAS_PROFILER_METRICS__;if(e){console.group(`[kmap] Canvas profiler report`),console.log(`ctx methods`),console.table(rn(e.ctxMethods)),console.log(`ctx props`),console.table(rn(e.ctxProps)),console.log(`canvas props`),console.table(rn(e.canvasProps));for(let t of[`fillText`,`measureText`]){let n=e.ctxMethodSources[t];n&&(console.log(`${t} sources`),console.table(rn(n).slice(0,20)))}console.groupEnd()}},window.resetCanvasReport=()=>{window.__KMAP_CANVAS_PROFILER_METRICS__=en()},console.info(`[kmap] Canvas profiler enabled. Use window.showCanvasReport() and window.resetCanvasReport().`)}function dn(){if(typeof window>`u`||!window.__KMAP_CANVAS_PROFILER_INSTALLED__)return;let e=CanvasRenderingContext2D?.prototype,t=HTMLCanvasElement?.prototype;on.forEach((n,r)=>{let i=r.match(/^(.+):(.+)$/);if(!i)return;let[,a,o]=i,s=null;a===`CanvasRenderingContext2D`?s=e:a===`HTMLCanvasElement`&&(s=t),s&&Reflect.set(s,o,n)}),on.clear(),sn.forEach((n,r)=>{let i=r.match(/^(.+):(.+)$/);if(!i)return;let[,a,o]=i,s=null;a===`CanvasRenderingContext2D`?s=e:a===`HTMLCanvasElement`&&(s=t),s&&n.configurable&&Object.defineProperty(s,o,n)}),sn.clear(),window.__KMAP_CANVAS_PROFILER_INSTALLED__=!1,window.__KMAP_CANVAS_PROFILER_METRICS__=void 0,window.showCanvasReport=void 0,window.resetCanvasReport=void 0,console.info(`[kmap] Canvas profiler disabled.`)}var fn={class:`left-toolbar`,"aria-label":`图表工具栏`},pn={class:`left-toolbar__group`},mn=[`title`,`aria-label`,`onClick`],hn=[`onClick`],gn=[`title`,`aria-label`,`onClick`],_n={class:`left-toolbar__group`},vn={class:`left-toolbar__group`},yn=[`title`,`aria-label`],bn={class:`left-toolbar__group`},xn={class:`settings-body`},Sn={class:`settings-label`},Cn=[`onUpdate:modelValue`],wn=[`onUpdate:modelValue`],Tn=[`value`],En={class:`settings-label`},Dn=[`onUpdate:modelValue`],On=[`onUpdate:modelValue`],kn=[`value`],An=_((0,e.defineComponent)({__name:`LeftToolbar`,props:{isFullscreen:{type:Boolean}},emits:[`selectTool`,`toggleFullscreen`,`zoomIn`,`zoomOut`,`settingsChange`],setup(t,{expose:n,emit:r}){let i=[{id:`cursor`,title:`光标`,icon:at},{id:`lines`,title:`线条`,icon:ct,children:[{id:`trend-line`,title:`线段`,icon:ct},{id:`ray`,title:`射线`,icon:dt},{id:`h-line`,title:`水平线`,icon:_t},{id:`h-ray`,title:`水平射线`,icon:mt},{id:`v-line`,title:`垂直线`,icon:bt},{id:`crosshair-line`,title:`十字线`,icon:Ct},{id:`info-line`,title:`信息线`,icon:Et}]},{id:`channels`,title:`通道`,icon:Wt,children:[{id:`parallel-channel`,title:`平行通道`,icon:Wt},{id:`regression-channel`,title:`回归趋势`,icon:qt},{id:`flat-line`,title:`平滑顶底`,icon:Xt},{id:`disjoint-channel`,title:`不相交通道`,icon:$t}]}],a=r,o=(0,e.ref)(`cursor`),s=(0,e.ref)(null),c=(0,e.ref)(!1),u=N(),d=(0,e.computed)(()=>l.DEFAULT_SETTINGS.filter(e=>e.group===`main`)),f=(0,e.computed)(()=>l.DEFAULT_SETTINGS.filter(e=>e.group===`experimental`));function p(){try{let e=localStorage.getItem(l.SETTINGS_STORAGE_KEY);if(e){let t=JSON.parse(e),n={};return l.DEFAULT_SETTINGS.forEach(e=>{n[e.key]=t[e.key]??e.default}),n}}catch{}let e={};return l.DEFAULT_SETTINGS.forEach(t=>{e[t.key]=t.default}),e}function m(e){try{localStorage.setItem(l.SETTINGS_STORAGE_KEY,JSON.stringify(e))}catch{}}let h=(0,e.ref)(p()),g=(0,e.ref)({...h.value});function _(e){return o.value===e.id?!0:e.children?e.children.some(e=>e.id===o.value):!1}function v(e){if(e.children?.length){if(!e.children.some(e=>e.id===o.value)){let t=e.children[0];o.value=t.id,a(`selectTool`,t.id)}b(e.id);return}o.value=e.id,a(`selectTool`,e.id),s.value=null}function y(e){o.value=e.id,a(`selectTool`,e.id),s.value=null}function b(e){s.value=s.value===e?null:e}function x(){g.value={...h.value},c.value=!0}function S(){c.value=!1}function C(){let e={};l.DEFAULT_SETTINGS.forEach(t=>{e[t.key]=t.default}),g.value=e}function w(){h.value={...g.value},m(h.value),cn(!!h.value.enableCanvasProfiler),a(`settingsChange`,{...h.value}),S()}function T(){return{...h.value}}n({getSettings:T});function E(e){e.target.closest(`.tool-item`)||(s.value=null)}return(0,e.onMounted)(()=>{document.addEventListener(`click`,E,!0),a(`settingsChange`,{...h.value}),cn(!!h.value.enableCanvasProfiler)}),(0,e.onUnmounted)(()=>{document.removeEventListener(`click`,E,!0)}),(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,null,[(0,e.createElementVNode)(`nav`,fn,[(0,e.createElementVNode)(`div`,pn,[((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(i,t=>(0,e.createElementVNode)(`div`,{key:t.id,class:`tool-item`},[(0,e.createElementVNode)(`button`,{type:`button`,class:(0,e.normalizeClass)([`left-toolbar__button`,{active:_(t)}]),title:t.title,"aria-label":t.title,onClick:e=>v(t),onPointerdown:r[0]||=(0,e.withModifiers)(()=>{},[`stop`]),onPointermove:r[1]||=(0,e.withModifiers)(()=>{},[`stop`]),onPointerup:r[2]||=(0,e.withModifiers)(()=>{},[`stop`])},[((0,e.openBlock)(),(0,e.createBlock)((0,e.resolveDynamicComponent)(t.icon),{class:`tool-icon`,"aria-hidden":`true`})),t.children&&t.children.length?((0,e.openBlock)(),(0,e.createElementBlock)(`span`,{key:0,class:(0,e.normalizeClass)([`corner-indicator`,{open:s.value===t.id}]),onClick:(0,e.withModifiers)(e=>b(t.id),[`stop`]),"aria-label":`展开子菜单`},null,10,hn)):(0,e.createCommentVNode)(``,!0)],42,mn),(0,e.createVNode)(e.Transition,{name:`dropdown`},{default:(0,e.withCtx)(()=>[s.value===t.id&&t.children&&t.children.length?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:0,class:`tool-dropdown`,onPointerdown:r[3]||=(0,e.withModifiers)(()=>{},[`stop`]),onPointermove:r[4]||=(0,e.withModifiers)(()=>{},[`stop`]),onPointerup:r[5]||=(0,e.withModifiers)(()=>{},[`stop`])},[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.children,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`button`,{key:t.id,type:`button`,class:(0,e.normalizeClass)([`left-toolbar__button`,{active:o.value===t.id}]),title:t.title,"aria-label":t.title,onClick:e=>y(t)},[((0,e.openBlock)(),(0,e.createBlock)((0,e.resolveDynamicComponent)(t.icon),{class:`tool-icon`,"aria-hidden":`true`}))],10,gn))),128))],32)):(0,e.createCommentVNode)(``,!0)]),_:2},1024)])),64))]),r[22]||=(0,e.createElementVNode)(`span`,{class:`left-toolbar__divider`},null,-1),(0,e.createElementVNode)(`div`,_n,[(0,e.createElementVNode)(`button`,{type:`button`,class:`left-toolbar__button`,title:`放大`,"aria-label":`放大`,onClick:r[6]||=e=>n.$emit(`zoomIn`),onPointerdown:r[7]||=(0,e.withModifiers)(()=>{},[`stop`]),onPointermove:r[8]||=(0,e.withModifiers)(()=>{},[`stop`]),onPointerup:r[9]||=(0,e.withModifiers)(()=>{},[`stop`])},[(0,e.createVNode)((0,e.unref)(kt),{class:`tool-icon`,"aria-hidden":`true`})],32),(0,e.createElementVNode)(`button`,{type:`button`,class:`left-toolbar__button`,title:`缩小`,"aria-label":`缩小`,onClick:r[10]||=e=>n.$emit(`zoomOut`),onPointerdown:r[11]||=(0,e.withModifiers)(()=>{},[`stop`]),onPointermove:r[12]||=(0,e.withModifiers)(()=>{},[`stop`]),onPointerup:r[13]||=(0,e.withModifiers)(()=>{},[`stop`])},[(0,e.createVNode)((0,e.unref)(Mt),{class:`tool-icon`,"aria-hidden":`true`})],32)]),r[23]||=(0,e.createElementVNode)(`span`,{class:`left-toolbar__divider`},null,-1),(0,e.createElementVNode)(`div`,vn,[(0,e.createElementVNode)(`button`,{type:`button`,class:`left-toolbar__button`,title:t.isFullscreen?`退出全屏`:`全屏显示`,"aria-label":t.isFullscreen?`退出全屏`:`全屏显示`,onClick:r[14]||=e=>n.$emit(`toggleFullscreen`),onPointerdown:r[15]||=(0,e.withModifiers)(()=>{},[`stop`]),onPointermove:r[16]||=(0,e.withModifiers)(()=>{},[`stop`]),onPointerup:r[17]||=(0,e.withModifiers)(()=>{},[`stop`])},[t.isFullscreen?((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(Rt),{key:0,class:`tool-icon`,"aria-hidden":`true`})):((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(Ft),{key:1,class:`tool-icon`,"aria-hidden":`true`}))],40,yn)]),r[24]||=(0,e.createElementVNode)(`span`,{class:`left-toolbar__divider`},null,-1),(0,e.createElementVNode)(`div`,bn,[(0,e.createElementVNode)(`button`,{type:`button`,class:`left-toolbar__button`,title:`设置`,"aria-label":`设置`,onClick:x,onPointerdown:r[18]||=(0,e.withModifiers)(()=>{},[`stop`]),onPointermove:r[19]||=(0,e.withModifiers)(()=>{},[`stop`]),onPointerup:r[20]||=(0,e.withModifiers)(()=>{},[`stop`])},[(0,e.createVNode)((0,e.unref)(Vt),{class:`tool-icon`,"aria-hidden":`true`})],32)])]),((0,e.openBlock)(),(0,e.createBlock)(e.Teleport,{to:(0,e.unref)(u)},[(0,e.createVNode)(e.Transition,{name:`overlay`},{default:(0,e.withCtx)(()=>[c.value?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:0,class:`settings-overlay`,onClick:S},[(0,e.createVNode)(e.Transition,{name:`modal`},{default:(0,e.withCtx)(()=>[(0,e.createElementVNode)(`div`,{class:`settings-modal`,onClick:r[21]||=(0,e.withModifiers)(()=>{},[`stop`])},[(0,e.createElementVNode)(`div`,{class:`settings-header`},[r[26]||=(0,e.createElementVNode)(`div`,{class:`header-left`},[(0,e.createElementVNode)(`span`,{class:`settings-title`},`图表设置`),(0,e.createElementVNode)(`span`,{class:`settings-subtitle`},`个性化配置`)],-1),(0,e.createElementVNode)(`div`,{class:`header-right`},[(0,e.createElementVNode)(`button`,{class:`settings-close`,onClick:S},[...r[25]||=[(0,e.createElementVNode)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`},[(0,e.createElementVNode)(`path`,{d:`M18 6L6 18M6 6l12 12`})],-1)]])])]),(0,e.createElementVNode)(`div`,xn,[d.value.length>0?((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:0},[r[27]||=(0,e.createElementVNode)(`div`,{class:`settings-section-divider`},[(0,e.createElementVNode)(`span`,{class:`settings-section-label`},`主图设置`)],-1),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(d.value,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:t.key,class:`settings-item`},[(0,e.createElementVNode)(`label`,Sn,[(0,e.createElementVNode)(`span`,null,(0,e.toDisplayString)(t.label),1),t.type===`boolean`?(0,e.withDirectives)(((0,e.openBlock)(),(0,e.createElementBlock)(`input`,{key:0,type:`checkbox`,class:`settings-checkbox`,"onUpdate:modelValue":e=>g.value[t.key]=e},null,8,Cn)),[[e.vModelCheckbox,g.value[t.key]]]):t.type===`select`&&t.options?(0,e.withDirectives)(((0,e.openBlock)(),(0,e.createElementBlock)(`select`,{key:1,class:`settings-select`,"onUpdate:modelValue":e=>g.value[t.key]=e},[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.options,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`option`,{key:t.value,value:t.value},(0,e.toDisplayString)(t.label),9,Tn))),128))],8,wn)),[[e.vModelSelect,g.value[t.key]]]):(0,e.createCommentVNode)(``,!0)])]))),128))],64)):(0,e.createCommentVNode)(``,!0),f.value.length>0?((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:1},[r[28]||=(0,e.createElementVNode)(`div`,{class:`settings-section-divider`},[(0,e.createElementVNode)(`span`,{class:`settings-section-label`},`实验性 / 调试设置`)],-1),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(f.value,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:t.key,class:`settings-item experimental`},[(0,e.createElementVNode)(`label`,En,[(0,e.createElementVNode)(`span`,null,(0,e.toDisplayString)(t.label),1),t.type===`boolean`?(0,e.withDirectives)(((0,e.openBlock)(),(0,e.createElementBlock)(`input`,{key:0,type:`checkbox`,class:`settings-checkbox`,"onUpdate:modelValue":e=>g.value[t.key]=e},null,8,Dn)),[[e.vModelCheckbox,g.value[t.key]]]):t.type===`select`&&t.options?(0,e.withDirectives)(((0,e.openBlock)(),(0,e.createElementBlock)(`select`,{key:1,class:`settings-select`,"onUpdate:modelValue":e=>g.value[t.key]=e},[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.options,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`option`,{key:t.value,value:t.value},(0,e.toDisplayString)(t.label),9,kn))),128))],8,On)),[[e.vModelSelect,g.value[t.key]]]):(0,e.createCommentVNode)(``,!0)])]))),128))],64)):(0,e.createCommentVNode)(``,!0)]),(0,e.createElementVNode)(`div`,{class:`settings-footer`},[(0,e.createElementVNode)(`button`,{class:`settings-btn reset`,onClick:C},[...r[29]||=[(0,e.createElementVNode)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`},[(0,e.createElementVNode)(`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`}),(0,e.createElementVNode)(`path`,{d:`M3 3v5h5`})],-1),(0,e.createTextVNode)(` 重置 `,-1)]]),(0,e.createElementVNode)(`div`,{class:`footer-right`},[(0,e.createElementVNode)(`button`,{class:`settings-btn cancel`,onClick:S},`取消`),(0,e.createElementVNode)(`button`,{class:`settings-btn confirm`,onClick:w},[...r[30]||=[(0,e.createElementVNode)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2.5`},[(0,e.createElementVNode)(`path`,{d:`M20 6L9 17l-5-5`})],-1),(0,e.createTextVNode)(` 确定 `,-1)]])])])])]),_:1})])):(0,e.createCommentVNode)(``,!0)]),_:1})],8,[`to`]))],64))}}),[[`__scopeId`,`data-v-3e3ffb4f`]]),jn=[`data-theme`],Mn={class:`pane-separator-layer`,"aria-hidden":`true`},Nn=4,Pn=_((0,e.defineComponent)({__name:`KLineChart`,props:{semanticConfig:{},dataFetcher:{},yPaddingPx:{default:20},minKWidth:{default:1},maxKWidth:{default:50},rightAxisWidth:{default:0},bottomAxisHeight:{default:24},priceLabelWidth:{default:60},zoomLevels:{default:20},initialZoomLevel:{default:3},isFullscreen:{type:Boolean,default:!1}},emits:[`zoomLevelChange`,`toggleFullscreen`],setup(t,{expose:l,emit:d}){let f=t,p=(0,e.ref)(null),m=(0,e.ref)(null),h=(0,e.ref)(null),g=(0,e.ref)(null),_=(0,e.ref)(null),y=(0,e.ref)(null),b=(0,e.ref)(null),x=(0,e.shallowRef)(null),S=(0,e.shallowRef)(null),C=(0,i.createChartStore)({initialZoomLevel:f.initialZoomLevel??1,minKWidth:f.minKWidth,maxKWidth:f.maxKWidth,zoomLevels:f.zoomLevels,rightAxisWidth:f.rightAxisWidth,priceLabelWidth:f.priceLabelWidth}),w=(0,e.ref)(`light`);C.actions.setZoomState(C.state.zoomLevel,(0,a.zoomLevelToKWidth)(C.state.zoomLevel,{minKWidth:f.minKWidth,maxKWidth:f.maxKWidth,zoomLevelCount:f.zoomLevels,dpr:C.state.viewportDpr}),(0,a.kGapFromKWidth)((0,a.zoomLevelToKWidth)(C.state.zoomLevel,{minKWidth:f.minKWidth,maxKWidth:f.maxKWidth,zoomLevelCount:f.zoomLevels,dpr:C.state.viewportDpr}),C.state.viewportDpr)),(0,e.computed)(()=>C.state.dataLength),(0,e.computed)(()=>C.state.viewportDpr);let T=(0,e.computed)(()=>C.state.zoomLevel),E=(0,e.computed)(()=>C.state.kWidth),D=(0,e.computed)(()=>C.state.kGap),O=(0,e.computed)(()=>C.state.paneRatios),ee=(0,e.computed)(()=>C.state.selectedDrawingId),te=(0,e.computed)(()=>C.state.dataVersion);function k(){x.value?.scheduleDraw()}function ne(e){if(x.value?.updateSettings(e),e.performanceTest10kKlines){let e=re();console.time(`updateData-10k`),x.value?.updateData(e),console.timeEnd(`updateData-10k`),C.actions.setDataLength(e.length),C.actions.bumpDataVersion()}else S.value&&x.value?.getData()?.length===1e4&&S.value.applyConfig(f.semanticConfig)}function re(){let e=[],t=new Date(`2020-01-01`).getTime(),n=3e3;for(let r=0;r<1e4;r++){let i=t+r*864e5,a=(Math.random()-.5)*2*.02+1e-4,o=n,s=o*(1+a),c=Math.max(o,s)*(1+Math.random()*.01),l=Math.min(o,s)*(1-Math.random()*.01),u=Math.floor(1e6+Math.random()*5e6);e.push({timestamp:i,open:parseFloat(o.toFixed(2)),high:parseFloat(c.toFixed(2)),low:parseFloat(l.toFixed(2)),close:parseFloat(s.toFixed(2)),volume:u}),n=s}return e}function A(e,t,n){let r=e.getBoundingClientRect();return{width:Math.max(t,Math.round(r.width)),height:Math.max(n,Math.round(r.height))}}function j(t){t&&(0,e.nextTick)(()=>{if(!t.isConnected)return;let e=A(t,180,80);x.value?.interaction.setTooltipSize(e)})}function ie(t){t&&(0,e.nextTick)(()=>{t.isConnected&&(le.value=A(t,120,60))})}let M=(0,e.ref)({x:0,y:0}),N=(0,e.ref)(!1),ae=null;function oe(){ae=null}function se(e){return ae||=e.getBoundingClientRect(),ae}let P=(0,e.shallowRef)({crosshairPos:null,crosshairIndex:null,crosshairPrice:null,hoveredIndex:null,activePaneId:null,tooltipPos:{x:0,y:0},tooltipAnchorPlacement:`right-bottom`,hoveredMarkerData:null,hoveredCustomMarker:null,isDragging:!1,isResizingPaneBoundary:!1,isHoveringPaneBoundary:!1,hoveredPaneBoundaryId:null,isHoveringRightAxis:!1}),F=(0,e.shallowRef)(null),I=(0,e.computed)(()=>{let e=ee.value;return e?C.state.drawings.find(t=>t.id===e)??null:null}),ce=(0,e.ref)([]),le=(0,e.ref)({width:220,height:120}),L=(0,e.computed)(()=>{let e=g.value,t=_.value;return!e||!t?{x:0,y:0}:{x:e.offsetLeft,y:e.offsetTop}}),ue=(0,e.computed)(()=>P.value.hoveredMarkerData),R=(0,e.computed)(()=>P.value.hoveredCustomMarker),de=(0,e.computed)(()=>P.value.isDragging),fe=(0,e.computed)(()=>P.value.isResizingPaneBoundary),pe=(0,e.computed)(()=>P.value.isHoveringPaneBoundary),me=(0,e.computed)(()=>P.value.hoveredPaneBoundaryId),he=(0,e.computed)(()=>P.value.isHoveringRightAxis),ge=(0,e.computed)(()=>P.value.hoveredIndex),_e=(0,e.computed)(()=>P.value.crosshairIndex),ve=(0,e.computed)(()=>de.value?`grabbing`:fe.value||pe.value?`ns-resize`:ge.value===null?`crosshair`:`pointer`),z=(0,e.computed)(()=>{let e=P.value.hoveredIndex;if(typeof e!=`number`)return null;te.value;let t=x.value?.getData();return t&&e>=0&&e<t.length?t[e]:null}),ye=(0,e.computed)(()=>P.value.hoveredIndex),be=(0,e.computed)(()=>P.value.tooltipPos),B=(0,e.computed)(()=>({x:be.value.x+L.value.x,y:be.value.y+L.value.y})),xe=(0,e.computed)(()=>({left:`${B.value.x}px`,top:`${B.value.y}px`})),Se=(0,e.computed)(()=>({x:M.value.x+L.value.x,y:M.value.y+L.value.y})),Ce=(0,e.computed)(()=>({left:`${Se.value.x}px`,top:`${Se.value.y}px`})),we=(0,e.computed)(()=>P.value.tooltipAnchorPlacement),Te=(0,e.computed)(()=>{let e=x.value?.getViewport(),t=g.value,n=e?.plotWidth??(t?t.clientWidth:0);return M.value.x+12+le.value.width+12>n?`left-bottom`:`right-bottom`}),Ee=(0,e.computed)(()=>(te.value,x.value?.getData()??[]));function De(e){F.value?.setTool(e)}function Oe(e){let t=I.value;!t||!F.value||(F.value.updateDrawingStyle(t.id,e),C.actions.bumpDrawingVersion())}function ke(){let e=I.value;!e||!F.value||(F.value.removeDrawing(e.id),C.actions.setSelectedDrawingId(null),C.actions.bumpDrawingVersion(),C.actions.setDrawings(F.value.getDrawings()))}function Ae(e){x.value?.handlePointerEvent(e,{onPointerDown:(e,t)=>F.value?.onPointerDown(e,t)?(C.actions.setDrawings(F.value.getDrawings()),C.actions.bumpDrawingVersion(),!0):!1})}function je(e){let t=g.value;if(t){let n=se(t);M.value={x:e.clientX-n.left,y:e.clientY-n.top}}x.value?.handlePointerEvent(e,{onPointerMove:(e,t)=>F.value?.onPointerMove(e,t)?(C.actions.setDrawings(F.value.getDrawings()),!0):!1})}function Me(e){x.value?.handlePointerEvent(e,{onPointerUp:(e,t)=>F.value?.onPointerUp(e,t)?(C.actions.setDrawings(F.value.getDrawings()),!0):!1})}function Ne(e){x.value?.handlePointerEvent(e)}function Pe(e){x.value?.handlePointerEvent(e)}function Fe(e){x.value?.handlePointerEvent(e)}function Ie(e){x.value?.handlePointerEvent(e)}function Le(e){x.value?.handlePointerEvent(e)}function Re(){x.value?.handleScrollEvent()}let V=(0,e.ref)([]),ze=(0,e.computed)(()=>{let e=[],t=new Set;for(let n of U.value)t.has(n.indicatorId)||(t.add(n.indicatorId),e.push(n.indicatorId));return e}),Be=(0,e.computed)(()=>[...V.value,...ze.value]),H=(0,e.ref)({}),U=(0,e.ref)([]);function Ve(){let e=O.value.main??3;return U.value.length===0?[{id:`main`,ratio:e,visible:!0,role:`price`}]:[{id:`main`,ratio:e,visible:!0,role:`price`},...U.value.map(e=>({id:e.id,ratio:O.value[e.id]??1,visible:!0,role:`indicator`}))]}function He(e){return{...s.SUB_PANE_INDICATOR_CONFIGS[e].defaultParams}}let W=new Map,G=new Map;function K(e,t){let n=(0,c.createPaneTitleRendererPlugin)({paneId:e,title:t,getTitleInfo:()=>Ze(e)});x.value?.useRenderer(n),G.set(e,n.name)}function q(e){let t=G.get(e);t&&(x.value?.removeRenderer(t),G.delete(e))}function We(e=`VOLUME`,t){if(U.value.length>=Nn)return!1;let n=t??He(e),r=x.value?.addIndicator(e,`sub`,n);return r?(K(r,e),U.value.push({id:r,indicatorId:e,params:n}),k(),!0):!1}function Ge(e){let t=U.value.findIndex(t=>t.id===e);t!==-1&&U.value[t]&&(q(e),x.value?.removeIndicator(e),U.value.splice(t,1))}function Ke(){for(let e of U.value)x.value?.removeIndicator(e.id),q(e.id);U.value=[],W.clear(),G.clear()}function qe(){let e=f.semanticConfig,t=x.value;if(!t)return;let n=e.indicators?.main;if(n)for(let e of n)e.enabled&&(V.value.includes(e.type)||V.value.push(e.type),e.params&&(H.value[e.type]=e.params),t.enableMainIndicator(e.type,e.params))}(0,e.watch)([Be,H],([e])=>{let t=x.value;t&&(t.updateRendererConfig(`mainIndicatorLegend`,{indicators:{MA:{enabled:e.includes(`MA`),params:H.value.MA||{}},BOLL:{enabled:e.includes(`BOLL`),params:H.value.BOLL||{}},EXPMA:{enabled:e.includes(`EXPMA`),params:H.value.EXPMA||{}},ENE:{enabled:e.includes(`ENE`),params:H.value.ENE||{}}}}),k())},{deep:!0});function Je(){let e=x.value?.getSubPaneEntries()??[];U.value=[],G.clear();for(let t of e){let{paneId:e,indicatorId:n,params:r}=t,i=e.match(/^(.+)_(\d+)$/);if(i){let[,e,t]=i,n=parseInt(t,10);n>=(W.get(e)??0)&&W.set(e,n+1)}K(e,n),U.value.push({id:e,indicatorId:n,params:{...r}})}k()}function Ye(e,t){if(!U.value.find(t=>t.id===e))return;let n=He(t);q(e),x.value?.replaceSubPaneIndicator(e,t,n),K(e,t);let r=U.value.findIndex(t=>t.id===e);r!==-1&&(U.value[r]={id:e,indicatorId:t,params:n})}let Xe=new Map;function Ze(e){let t=U.value.find(t=>t.id===e);if(!t)return null;let n=x.value?.getData();if(!n||n.length===0)return null;let r=_e.value,i=n.length,a=Xe.get(e);if(a&&a.idx===r&&a.dataLen===i)return a.result;let o=s.SUB_PANE_INDICATOR_CONFIGS[t.indicatorId],c=t.params,l=x.value?.plugin,u=l?o.getTitleInfo(n,r,c,l,e):null;return Xe.set(e,{idx:r,dataLen:i,result:u}),u}function Qe(e,t){let n=x.value;if(n){if([`MA`,`BOLL`,`EXPMA`,`ENE`,`WMA`,`DEMA`,`TEMA`,`HMA`,`KAMA`,`SAR`,`SUPERTREND`,`KELTNER`,`DONCHIAN`,`ICHIMOKU`,`PIVOT`,`FIB`,`STRUCTURE`,`ZONES`].includes(e)){let r=V.value.find(t=>t===e);if(t&&!r)n.addIndicator(e,`main`,H.value[e]),V.value.push(e);else if(!t&&r){let t=e.toUpperCase();n.removeIndicator(t),V.value=V.value.filter(t=>t!==e)}return}if(s.SUB_PANE_INDICATORS.includes(e)){if(t){if(U.value.find(t=>t.indicatorId===e)||U.value.length>=Nn)return;let t=n.addIndicator(e,`sub`,H.value[e]);if(t)K(t,e),U.value.push({id:t,indicatorId:e,params:{...H.value[e]}});else if(U.value.length>0){let t=U.value[U.value.length-1];Ye(t.id,e)}}else U.value.filter(t=>t.indicatorId===e).forEach(e=>{n.removeIndicator(e.id),q(e.id)}),U.value=U.value.filter(t=>t.indicatorId!==e);k()}}}function J(e,t){if(H.value[e]=t,e===`MA`||e===`BOLL`||e===`EXPMA`||e===`ENE`){x.value?.updateMainIndicatorParams(e,t),k();return}if(s.SUB_PANE_INDICATORS.includes(e)){U.value.filter(t=>t.indicatorId===e).forEach(e=>{x.value?.updateSubPaneParams(e.id,t),e.params={...t}}),k();return}k()}function $e(e){if(!e.length||U.value.length<=1)return;let t=e.filter(e=>s.SUB_PANE_INDICATORS.includes(e));if(!t.length)return;let n=new Map(U.value.map(e=>[e.indicatorId,e])),r=[];for(let e of t){let t=n.get(e);t&&(r.push(t),n.delete(e))}if(r.length===0)return;for(let e of U.value)n.has(e.indicatorId)&&(r.push(e),n.delete(e.indicatorId));let i=U.value.map(e=>e.id),a=r.map(e=>e.id);if(i.join(`|`)===a.join(`|`))return;U.value=r;let o=x.value;o&&o.updatePaneLayout(Ve())}let Y=(0,e.computed)(()=>f.rightAxisWidth+f.priceLabelWidth),tt=C.computed.totalWidth;function nt(){let e=g.value,t=x.value;if(!e||!t)return;let n=t.getData()?.length??0;if(n===0)return;let r=t.getCurrentDpr(),{unitPx:i,startXPx:a}=(0,o.getPhysicalKLineConfig)(E.value,D.value,r),s=(a+n*i)/r,c=Math.max(0,e.scrollWidth-e.clientWidth),l=Math.min(c,Math.max(0,s-e.clientWidth));e.scrollLeft=Math.round(l*r)/r,k()}function X(e,t){let n=x.value;n&&n.zoomToLevel(e,t)}l({scheduleRender:k,scrollToRight:nt,addSubPane:We,removeSubPane:Ge,switchSubIndicator:Ye,clearAllSubPanes:Ke,get plugin(){return x.value?.plugin},zoomToLevel:X,zoomIn:e=>X(T.value+1,e),zoomOut:e=>X(T.value-1,e),getZoomLevel:()=>T.value,getZoomLevelCount:()=>x.value?.getZoomLevelCount()??10});function it(e){let t=e=>{e.preventDefault();let t=x.value;t&&t.handleWheelEvent(e)};return e.addEventListener(`wheel`,t,{passive:!1}),t}function at(e,t,n,i){return new r.Chart({container:e,canvasLayer:t,rightAxisLayer:n,xAxisCanvas:i},{yPaddingPx:f.yPaddingPx,rightAxisWidth:f.rightAxisWidth,bottomAxisHeight:f.bottomAxisHeight,priceLabelWidth:f.priceLabelWidth,minKWidth:f.minKWidth,maxKWidth:f.maxKWidth,panes:[{id:`main`,ratio:1}],paneGap:0,zoomLevels:f.zoomLevels,initialZoomLevel:f.initialZoomLevel})}function ot(t){t.setOnPaneLayoutChange(()=>{oe();let e=t.getPaneRenderers(),n=g.value&&parseInt(getComputedStyle(g.value).borderTopWidth)||0;ce.value=e.slice(0,-1).map(e=>{let t=e.getPane();return{id:t.id,top:t.top+t.height+n}})});let n=t.paneRatios.subscribe(()=>{let e=t.paneRatios.peek();C.actions.setPaneRatios({...e})}),r=t.viewport.subscribe(()=>{let n=t.viewport.peek();C.state.viewportDpr!==n.dpr&&C.actions.setViewportDpr(n.dpr),C.state.viewWidth!==n.plotWidth&&C.actions.setViewWidth(n.plotWidth),(C.state.zoomLevel!==n.zoomLevel||C.state.kWidth!==n.kWidth||C.state.kGap!==n.kGap)&&C.actions.setZoomState(n.zoomLevel,n.kWidth,n.kGap);let r=n.desiredScrollLeft;r!==void 0&&r!==g.value?.scrollLeft&&(oe(),(0,e.nextTick)(()=>{let e=g.value;if(!e)return;let n=Math.max(0,e.scrollWidth-e.clientWidth),i=Math.min(Math.max(0,r),n),a=t.getCurrentDpr();e.scrollLeft=Math.round(i*a)/a}))}),i=t.data.subscribe(()=>{let e=t.data.peek();C.actions.setDataLength(e.length),C.actions.bumpDataVersion()}),a=t.theme.subscribe(()=>{w.value=t.theme.peek()});(0,e.onUnmounted)(()=>{r(),i(),n(),a()})}function st(e){let t=b.value?.getSettings()??{showVolumePriceMarkers:!0};if(e.updateSettings(t),t.performanceTest10kKlines){let t=re();console.time(`updateData-10k`),e.updateData(t),console.timeEnd(`updateData-10k`)}}function ct(e){F.value=new u.DrawingInteractionController(e),F.value.setCallbacks({onDrawingCreated:e=>{C.actions.setDrawings([...C.state.drawings,e]),C.actions.setSelectedDrawingId(e.id)},onToolChange:()=>{},onDrawingSelected:e=>{C.actions.setSelectedDrawingId(e?.id??null)}})}function lt(e){e.interaction.setTooltipAnchorPositioning(N.value),e.interaction.setOnInteractionChange(e=>{P.value=e}),e.interaction.setOnPinchZoom((t,n)=>{if(!e)return;let r=g.value;if(!r)return;let i=n-r.getBoundingClientRect().left;e.handlePinchZoom(t,i)}),P.value=e.interaction.getInteractionSnapshot(),C.actions.setViewportDpr(e.getCurrentDpr()),e.resize()}function ut(t){(0,n.__setDataFetcher)(f.dataFetcher),S.value=new n.SemanticChartController(t),S.value.on(`config:error`,e=>{console.error(`Semantic config error:`,e)}),S.value.on(`config:ready`,()=>{qe(),Je(),(0,e.nextTick)(()=>nt())}),S.value.applyConfig(f.semanticConfig).then(e=>{e&&!e.success&&console.error(`Semantic config apply failed:`,e.errors)})}return(0,e.onMounted)(()=>{N.value=!1;let e=g.value,t=m.value,n=h.value,r=p.value;if(!e||!t||!n||!r)return;let i=it(e),a=at(e,t,n,r);x.value=a,ot(a),a.applyRenderState(C.state.kWidth,C.state.kGap,C.state.zoomLevel),st(a),ct(a),lt(a),ut(a),a.__onWheel=i}),(0,e.onUnmounted)(()=>{let e=x.value;if(e){let t=e.__onWheel,n=g.value;t&&n&&n.removeEventListener(`wheel`,t),e.destroy()}x.value=null,F.value=null}),(0,e.watch)(()=>f.yPaddingPx,e=>{x.value?.updateOptions({yPaddingPx:e})}),(0,e.watch)(()=>f.semanticConfig,async(e,t)=>{if(e&&e!==t){let t=await S.value?.applyConfig(e);t&&!t.success&&console.error(`Semantic config apply failed:`,t.errors)}},{deep:!0}),(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{class:`chart-wrapper`,"data-theme":w.value},[(0,e.createElementVNode)(`div`,{class:(0,e.normalizeClass)([`chart-stage`,{"is-dragging":de.value,"is-resizing-pane":fe.value,"is-hovering-pane-separator":pe.value,"is-hovering-right-axis":he.value,"is-hovering-kline":ge.value!==null}])},[(0,e.createVNode)(An,{ref_key:`toolbarRef`,ref:b,"is-fullscreen":t.isFullscreen,onSelectTool:De,onToggleFullscreen:r[0]||=e=>n.$emit(`toggleFullscreen`),onZoomIn:r[1]||=e=>X(T.value+1),onZoomOut:r[2]||=e=>X(T.value-1),onSettingsChange:ne},null,8,[`is-fullscreen`]),(0,e.createElementVNode)(`div`,{class:`chart-main`,ref_key:`chartMainRef`,ref:_},[(0,e.createElementVNode)(`div`,Mn,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(ce.value,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:t.id,class:(0,e.normalizeClass)([`pane-separator-line`,{"is-active":me.value===t.id}]),style:(0,e.normalizeStyle)({top:`${t.top}px`})},null,6))),128))]),(0,e.createElementVNode)(`div`,{ref_key:`tooltipLayerRef`,ref:y,class:`tooltip-layer`},null,512),(0,e.createElementVNode)(`div`,{class:`chart-container`,style:(0,e.normalizeStyle)({cursor:ve.value}),ref_key:`containerRef`,ref:g,onScrollPassive:Re,onPointerdown:Ae,onPointermove:je,onPointerup:Me,onPointerleave:Ne},[(0,e.createElementVNode)(`div`,{class:`scroll-content`,style:(0,e.normalizeStyle)({width:(0,e.unref)(tt)+`px`})},[(0,e.createElementVNode)(`div`,{class:`canvas-layer`,ref_key:`canvasLayerRef`,ref:m},[(0,e.createElementVNode)(`canvas`,{class:`x-axis-canvas`,ref_key:`xAxisCanvasRef`,ref:p},null,512),I.value?((0,e.openBlock)(),(0,e.createBlock)(v,{key:0,drawing:I.value,onUpdateStyle:Oe,onDelete:ke},null,8,[`drawing`])):(0,e.createCommentVNode)(``,!0)],512)],4)],36),y.value?((0,e.openBlock)(),(0,e.createBlock)(e.Teleport,{key:0,to:y.value},[z.value?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:0,class:(0,e.normalizeClass)([`tooltip-anchor kline-tooltip-anchor`,{"use-anchor":N.value}]),style:(0,e.normalizeStyle)(xe.value)},null,6)):(0,e.createCommentVNode)(``,!0),ue.value||R.value?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:1,class:(0,e.normalizeClass)([`tooltip-anchor marker-tooltip-anchor`,{"use-anchor":N.value}]),style:(0,e.normalizeStyle)(Ce.value)},null,6)):(0,e.createCommentVNode)(``,!0),z.value?((0,e.openBlock)(),(0,e.createBlock)(et,{key:2,k:z.value,index:ye.value,data:Ee.value,pos:B.value,"set-el":j,"use-anchor":N.value,"anchor-placement":we.value},null,8,[`k`,`index`,`data`,`pos`,`use-anchor`,`anchor-placement`])):(0,e.createCommentVNode)(``,!0),ue.value||R.value?((0,e.openBlock)(),(0,e.createBlock)(rt,{key:3,marker:ue.value||R.value,pos:Se.value,"use-anchor":N.value,"anchor-placement":Te.value,"set-el":ie},null,8,[`marker`,`pos`,`use-anchor`,`anchor-placement`])):(0,e.createCommentVNode)(``,!0)],8,[`to`])):(0,e.createCommentVNode)(``,!0),(0,e.createElementVNode)(`div`,{class:`right-axis-host`,ref_key:`rightAxisLayerRef`,ref:h,style:(0,e.normalizeStyle)({width:Y.value+`px`}),onPointerdown:Pe,onPointermove:Fe,onPointerup:Ie,onPointerleave:Le},null,36)],512)],2),(0,e.createVNode)(Ue,{"active-indicators":Be.value,"indicator-params":H.value,onToggle:Qe,onUpdateParams:J,onReorderSubIndicators:$e},null,8,[`active-indicators`,`indicator-params`])],8,jn))}}),[[`__scopeId`,`data-v-85be3652`]]),Fn={name:`@363045841yyt/klinechart`,version:`0.7.5-alpha.2`,description:`Vue 3 bindings for @363045841yyt/klinechart-core. Idiomatic composables, SFC components.`,license:`MIT`,repository:{type:`git`,url:`https://github.com/363045841/KLineChartQuant.git`},bugs:`https://github.com/363045841/KLineChartQuant/issues`,homepage:`https://363045841.github.io/KLineChartQuant/`,type:`module`,engines:{node:`^20.19.0 || >=22.12.0`},sideEffects:!1,main:`./dist/index.js`,module:`./dist/index.js`,types:`./dist/index.d.ts`,exports:{".":{import:{types:`./dist/index.d.ts`,default:`./dist/index.js`},require:{types:`./dist/index.d.cts`,default:`./dist/index.cjs`}},"./style.css":`./dist/klinechart.css`},files:[`dist`,`src`],publishConfig:{access:`public`},scripts:{dev:`vite --config preview/vite.config.ts`,build:`vite build && node -e "require('fs').copyFileSync('dist/index.d.ts','dist/index.d.cts')"`,postbuild:`node -e "require('fs').copyFileSync('dist/index.d.ts','dist/index.d.cts')"`,test:`vitest run`,"test:watch":`vitest`,size:`size-limit`,"lint:publish":`publint --strict .`,prepublishOnly:`npm run build`,"lint:types":`attw --pack .`},"size-limit":[{name:`vue (entry, pre-build src measurement)`,path:`src/index.ts`,limit:`8 KB`,gzip:!0,ignore:[`vue`,`@363045841yyt/klinechart-core`]}],peerDependencies:{"@363045841yyt/klinechart-core":`^`,vue:`^3.4.0`},devDependencies:{"@arethetypeswrong/cli":`^0.18.3`,"@size-limit/preset-small-lib":`^12.1.0`,"@vitejs/plugin-vue":`^6.0.0`,"@vue/test-utils":`^2.4.10`,jsdom:`^29.1.1`,publint:`^0.3.0`,"size-limit":`^12.1.0`,typescript:`~6.0.3`,"unplugin-icons":`^23.0.1`,vite:`^8.0.14`,"vite-plugin-babel":`^1.3.2`,"vite-plugin-dts":`^5.0.1`,vitest:`^4.1.5`,vue:`^3.5.0`}}.version,In=null;function Ln(e){In=e}function Rn(e){if(e.container==null)throw Error("[@363045841yyt/klinechart] createChart: `container` is required and must be a non-null HTMLElement");if(In===null)throw Error(`[@363045841yyt/klinechart] createChart: no ChartController factory registered. Call __setControllerFactory(...) before mounting (the core package wires this in production).`);return In(e)}function zn(t){let n=(0,e.shallowRef)(t.peek());return(0,e.onScopeDispose)(t.subscribe(()=>{n.value=t.peek()})),n}function Bn(t,n){let r=(0,e.shallowRef)(null),i=e=>{e==null||r.value!=null||(r.value=Rn({...n,container:e}))};i(t.value);let a=(0,e.watch)(t,e=>{i(e)},{immediate:!0,flush:`post`}),o=()=>{a();let e=r.value;e!=null&&(e.dispose(),r.value=null)};return(0,e.onScopeDispose)(o),(0,e.onBeforeUnmount)(o),{chart:r}}function Vn(t){let n=(0,e.shallowRef)(t.indicators.peek());return(0,e.onScopeDispose)(t.indicators.subscribe(()=>{n.value=t.indicators.peek()})),{indicators:n,add:t.addIndicator.bind(t),remove:t.removeIndicator.bind(t),updateParams:t.updateIndicatorParams.bind(t)}}function Hn(t){let n=(0,e.shallowRef)(t.interactionState.peek());return(0,e.onScopeDispose)(t.interactionState.subscribe(()=>{n.value=t.interactionState.peek()})),n}function Un(t){let n=(0,e.shallowRef)(t.paneRatios.peek());return(0,e.onScopeDispose)(t.paneRatios.subscribe(()=>{n.value=t.paneRatios.peek()})),n}function Wn(t){let n=(0,e.shallowRef)(t.viewport.peek());return(0,e.onScopeDispose)(t.viewport.subscribe(()=>{n.value=t.viewport.peek()})),n}var Gn=(0,e.defineComponent)({name:`KLineChart`,props:{data:{type:Array,required:!0},initialZoomLevel:{type:Number,default:3},zoomLevels:{type:Number,default:20},theme:{type:String,default:`light`},containerClass:{type:String,default:``}},emits:{ready:e=>!0,zoomLevelChange:(e,t)=>!0},setup(t,{emit:n,expose:r}){let i=(0,e.shallowRef)(null),a=(0,e.effectScope)(),o=(0,e.shallowRef)(null);(0,e.onMounted)(()=>{let r=i.value;r!=null&&(a.run(()=>{if(o.value=Rn({container:r,data:t.data,initialZoomLevel:t.initialZoomLevel,zoomLevels:t.zoomLevels,theme:t.theme}),o.value!=null){n(`ready`,o.value);let t=o.value,r=()=>{let e=t.viewport.peek();n(`zoomLevelChange`,e.zoomLevel,e.kWidth)};r(),(0,e.onScopeDispose)(t.viewport.subscribe(r))}}),(0,e.watch)(()=>t.data,e=>{o.value?.setData(e)}),(0,e.watch)(()=>t.theme,e=>{o.value?.setTheme(e)}))}),(0,e.onUnmounted)(()=>{o.value?.dispose(),o.value=null,a.stop()}),r({getController:()=>o.value,handlePointerEvent:(e,t)=>o.value?.handlePointerEvent(e,t)??!1,handleWheelEvent:e=>o.value?.handleWheelEvent(e),handleScrollEvent:()=>o.value?.handleScrollEvent(),zoomToLevel:(e,t)=>o.value?.zoomToLevel(e,t),zoomIn:e=>o.value?.zoomIn(e),zoomOut:e=>o.value?.zoomOut(e),addIndicator:(e,t,n)=>o.value?.addIndicator(e,t,n)??null,removeIndicator:e=>o.value?.removeIndicator(e)??!1,setTheme:e=>o.value?.setTheme(e),setData:e=>o.value?.setData(e)});let s=e=>{i.value=e??null};return()=>(0,e.h)(`div`,{ref:s,class:[`klinechart-quant-root`,t.containerClass].filter(Boolean).join(` `),style:{width:`100%`,height:`100%`}})}}),Kn={install(e){e.component(`KLineChart`,Gn)}};Ln(d.createChartController),Object.defineProperty(exports,"CORE_VERSION",{enumerable:!0,get:function(){return d.VERSION}}),exports.DrawingStyleToolbar=v,exports.IndicatorParams=ie,exports.IndicatorSelector=Ue,exports.KLineChart=Gn,exports.KLineChartVue=Pn,exports.KLineTooltip=et,exports.KMapPlugin=Kn,exports.LeftToolbar=An,exports.MarkerTooltip=rt,exports.VERSION=Fn,exports.__setControllerFactory=Ln,exports.coreSignalToVueRef=zn,exports.createChart=Rn,exports.useChart=Bn,exports.useIndicators=Vn,exports.useInteractionState=Hn,exports.usePaneRatios=Un,exports.useViewport=Wn;
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require("vue"),t=require("@363045841yyt/klinechart-core"),n=require("@363045841yyt/klinechart-core/engine/renderers/Indicator/indicatorData"),r=require("@363045841yyt/klinechart-core/controllers"),i=require("@363045841yyt/klinechart-core/semantic"),a=require("@363045841yyt/klinechart-core/engine/chart"),o=require("@363045841yyt/klinechart-core/engine/chart-store"),s=require("@363045841yyt/klinechart-core/engine/utils/zoom"),c=require("@363045841yyt/klinechart-core/engine/utils/klineConfig"),l=require("@363045841yyt/klinechart-core/engine/renderers/Indicator/subPaneConfig"),u=require("@363045841yyt/klinechart-core/engine/renderers/paneTitle"),d=require("@363045841yyt/klinechart-core/config"),f=require("@363045841yyt/klinechart-core/engine/drawing");var p={class:`toolbar-item color-item`,title:`颜色`},m=[`value`],h=[`value`],g=[`value`],_=(0,e.defineComponent)({__name:`DrawingStyleToolbar`,props:{drawing:{}},emits:[`updateStyle`,`delete`],setup(t,{emit:n}){let r=n;function i(e){e.key===`Delete`&&(e.preventDefault(),r(`delete`))}(0,e.onMounted)(()=>document.addEventListener(`keydown`,i)),(0,e.onUnmounted)(()=>document.removeEventListener(`keydown`,i));function a(e){r(`updateStyle`,{stroke:e})}function o(e){r(`updateStyle`,{strokeWidth:e})}function s(e){r(`updateStyle`,{strokeStyle:e})}return(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{class:`drawing-style-toolbar`,onPointerdown:r[4]||=(0,e.withModifiers)(()=>{},[`stop`]),onPointermove:r[5]||=(0,e.withModifiers)(()=>{},[`stop`]),onPointerup:r[6]||=(0,e.withModifiers)(()=>{},[`stop`])},[(0,e.createElementVNode)(`div`,p,[(0,e.createElementVNode)(`span`,{class:`color-swatch`,style:(0,e.normalizeStyle)({background:t.drawing.style.stroke??`#2962ff`})},null,4),(0,e.createElementVNode)(`input`,{type:`color`,class:`color-input`,value:t.drawing.style.stroke??`#2962ff`,onInput:r[0]||=e=>a(e.target.value)},null,40,m)]),(0,e.createElementVNode)(`select`,{class:`toolbar-select`,value:t.drawing.style.strokeWidth??1,onChange:r[1]||=e=>o(Number(e.target.value)),title:`线宽`},[...r[7]||=[(0,e.createElementVNode)(`option`,{value:1},`1px`,-1),(0,e.createElementVNode)(`option`,{value:2},`2px`,-1),(0,e.createElementVNode)(`option`,{value:3},`3px`,-1),(0,e.createElementVNode)(`option`,{value:4},`4px`,-1)]],40,h),(0,e.createElementVNode)(`select`,{class:`toolbar-select`,value:t.drawing.style.strokeStyle??`solid`,onChange:r[2]||=e=>s(e.target.value),title:`线型`},[...r[8]||=[(0,e.createElementVNode)(`option`,{value:`solid`},`实线`,-1),(0,e.createElementVNode)(`option`,{value:`dashed`},`虚线`,-1),(0,e.createElementVNode)(`option`,{value:`dotted`},`点线`,-1)]],40,g),(0,e.createElementVNode)(`button`,{type:`button`,class:`toolbar-btn delete-btn`,title:`删除`,onClick:r[3]||=e=>n.$emit(`delete`)},[...r[9]||=[(0,e.createElementVNode)(`svg`,{class:`delete-icon`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"aria-hidden":`true`},[(0,e.createElementVNode)(`path`,{d:`M3 6h18`}),(0,e.createElementVNode)(`path`,{d:`M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6`}),(0,e.createElementVNode)(`path`,{d:`M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2`})],-1)]])],32))}}),v=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n},y=v(_,[[`__scopeId`,`data-v-4c26f819`]]),b={class:`params-header`},x={class:`header-left`},S={class:`params-title`},C={class:`header-right`},w={key:0,class:`indicator-description`},T={class:`params-body`},E={class:`param-header`},D={class:`param-label`},O={class:`param-label-text`},k={key:0,class:`param-range`},A={class:`input-wrapper`},j=[`disabled`,`onClick`],ee=[`value`,`min`,`max`,`step`,`onInput`],te=[`disabled`,`onClick`],ne={key:0,class:`param-description`},re={class:`params-footer`},ie={class:`footer-right`},M=v((0,e.defineComponent)({__name:`IndicatorParams`,props:{visible:{type:Boolean},indicatorId:{},indicatorName:{},indicatorDescription:{},params:{},values:{}},emits:[`close`,`confirm`],setup(t,{emit:n}){let r=t,i=n,a=(0,e.ref)({...r.values}),o=(0,e.ref)(!0),s=(0,e.computed)(()=>`body`);(0,e.watch)(()=>r.values,e=>{a.value={...e}},{deep:!0,immediate:!0}),(0,e.watch)(()=>r.visible,e=>{e&&(a.value={...r.values})});function c(e,t){let n=t.target,r=parseFloat(n.value);isNaN(r)||(a.value[e]=r)}function l(e,t){let n=e.step||1,r=(a.value[e.key]||0)+t*n;e.min!==void 0&&(r=Math.max(e.min,r)),e.max!==void 0&&(r=Math.min(e.max,r)),a.value[e.key]=parseFloat(r.toFixed(10))}function u(){let e={};r.params.forEach(t=>{e[t.key]=t.default??r.values[t.key]??0}),a.value=e}function d(){i(`confirm`,{...a.value})}return(n,r)=>((0,e.openBlock)(),(0,e.createBlock)(e.Teleport,{to:s.value},[(0,e.createVNode)(e.Transition,{name:`overlay`},{default:(0,e.withCtx)(()=>[t.visible?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:0,class:`params-overlay`,onClick:r[4]||=e=>n.$emit(`close`)},[(0,e.createVNode)(e.Transition,{name:`modal`},{default:(0,e.withCtx)(()=>[(0,e.createElementVNode)(`div`,{class:`indicator-params`,onClick:r[3]||=(0,e.withModifiers)(()=>{},[`stop`])},[(0,e.createElementVNode)(`div`,b,[(0,e.createElementVNode)(`div`,x,[(0,e.createElementVNode)(`span`,S,(0,e.toDisplayString)(t.indicatorName),1),r[5]||=(0,e.createElementVNode)(`span`,{class:`params-subtitle`},`参数设置`,-1)]),(0,e.createElementVNode)(`div`,C,[(0,e.createElementVNode)(`button`,{class:(0,e.normalizeClass)([`toggle-desc-btn`,{active:o.value}]),onClick:r[0]||=e=>o.value=!o.value,title:`显示/隐藏说明`},[...r[6]||=[(0,e.createElementVNode)(`svg`,{viewBox:`0 0 1024 1024`},[(0,e.createElementVNode)(`path`,{d:`M512 97.52381c228.912762 0 414.47619 185.563429 414.47619 414.47619s-185.563429 414.47619-414.47619 414.47619S97.52381 740.912762 97.52381 512 283.087238 97.52381 512 97.52381z m0 73.142857C323.486476 170.666667 170.666667 323.486476 170.666667 512s152.81981 341.333333 341.333333 341.333333 341.333333-152.81981 341.333333-341.333333S700.513524 170.666667 512 170.666667z m36.571429 268.190476v292.571428h-73.142858V438.857143h73.142858z m0-121.904762v73.142857h-73.142858v-73.142857h73.142858z`,fill:`currentColor`})],-1)]],2),(0,e.createElementVNode)(`button`,{class:`params-close`,onClick:r[1]||=e=>n.$emit(`close`)},[...r[7]||=[(0,e.createElementVNode)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`},[(0,e.createElementVNode)(`path`,{d:`M18 6L6 18M6 6l12 12`})],-1)]])])]),(0,e.createVNode)(e.Transition,{name:`slide`},{default:(0,e.withCtx)(()=>[o.value&&t.indicatorDescription?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,w,[(0,e.createElementVNode)(`p`,null,(0,e.toDisplayString)(t.indicatorDescription),1)])):(0,e.createCommentVNode)(``,!0)]),_:1}),(0,e.createElementVNode)(`div`,T,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.params,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:t.key,class:(0,e.normalizeClass)([`param-item`,{"has-desc":o.value&&t.description}])},[(0,e.createElementVNode)(`div`,E,[(0,e.createElementVNode)(`label`,D,[(0,e.createElementVNode)(`span`,O,(0,e.toDisplayString)(t.label),1),t.min!==void 0||t.max!==void 0?((0,e.openBlock)(),(0,e.createElementBlock)(`span`,k,(0,e.toDisplayString)(t.min??`-∞`)+` ~ `+(0,e.toDisplayString)(t.max??`+∞`),1)):(0,e.createCommentVNode)(``,!0)]),(0,e.createElementVNode)(`div`,A,[(0,e.createElementVNode)(`button`,{class:`stepper-btn`,disabled:t.min!==void 0&&(a.value[t.key]??0)<=t.min,onClick:e=>l(t,-1)},` − `,8,j),t.type===`number`?((0,e.openBlock)(),(0,e.createElementBlock)(`input`,{key:0,type:`number`,class:`param-input`,value:a.value[t.key],min:t.min,max:t.max,step:t.step||1,onInput:e=>c(t.key,e)},null,40,ee)):(0,e.createCommentVNode)(``,!0),(0,e.createElementVNode)(`button`,{class:`stepper-btn`,disabled:t.max!==void 0&&(a.value[t.key]??0)>=t.max,onClick:e=>l(t,1)},` + `,8,te)])]),(0,e.createVNode)(e.Transition,{name:`slide`},{default:(0,e.withCtx)(()=>[o.value&&t.description?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,ne,(0,e.toDisplayString)(t.description),1)):(0,e.createCommentVNode)(``,!0)]),_:2},1024)],2))),128))]),(0,e.createElementVNode)(`div`,re,[(0,e.createElementVNode)(`button`,{class:`params-btn reset`,onClick:u},[...r[8]||=[(0,e.createElementVNode)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`},[(0,e.createElementVNode)(`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`}),(0,e.createElementVNode)(`path`,{d:`M3 3v5h5`})],-1),(0,e.createTextVNode)(` 重置 `,-1)]]),(0,e.createElementVNode)(`div`,ie,[(0,e.createElementVNode)(`button`,{class:`params-btn cancel`,onClick:r[2]||=e=>n.$emit(`close`)},`取消`),(0,e.createElementVNode)(`button`,{class:`params-btn confirm`,onClick:d},[...r[9]||=[(0,e.createElementVNode)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2.5`},[(0,e.createElementVNode)(`path`,{d:`M20 6L9 17l-5-5`})],-1),(0,e.createTextVNode)(` 确定 `,-1)]])])])])]),_:1})])):(0,e.createCommentVNode)(``,!0)]),_:1})],8,[`to`]))}}),[[`__scopeId`,`data-v-b82e9094`]]),N=Symbol(`fullscreen-teleport-target`);function P(){let t=(0,e.inject)(N,null);return(0,e.computed)(()=>t?.value??`body`)}var ae={class:`indicator-selector`},oe={class:`indicator-scroll-container`},F={class:`indicator-list`},I={key:0,class:`indicator-divider`,"aria-hidden":`true`},L=[`draggable`,`onDragstart`,`onDragover`,`onDrop`],se=[`onMouseenter`],ce={class:`btn-content`},R={key:0,class:`param-hint`},z={key:0,class:`hover-overlay`},B=[`onClick`],le={key:1,class:`divider`},ue=[`onClick`],de={class:`indicator-item`},fe={class:`modal-header`},pe={class:`header-title`},me={class:`title-sub`},he={class:`header-actions`},ge={key:0,viewBox:`0 0 24 24`,width:`16`,height:`16`,fill:`currentColor`},V={key:1,viewBox:`0 0 24 24`,width:`16`,height:`16`,fill:`currentColor`},_e={class:`modal-body`},ve={class:`search-box`},H=[`value`],ye={key:0,class:`indicator-section`},U={class:`section-header`},be={class:`section-count`},xe=[`onClick`],Se={class:`card-label`},Ce={class:`card-tooltip`},we={class:`card-header`},Te={class:`card-label`},Ee={class:`card-header-actions`},De=[`onClick`],Oe={class:`card-name`},ke={key:1,class:`section-divider`},Ae={key:2,class:`no-results`},je={key:3,class:`indicator-section`},Me={class:`section-header`},Ne={class:`section-count`},Pe=[`onClick`],Fe={class:`card-label`},Ie={class:`card-tooltip`},Le={class:`card-header`},Re={class:`card-label`},W={class:`card-header-actions`},G=[`onClick`],ze={class:`card-name`},Be={class:`modal-footer`},Ve={class:`footer-info`},K={class:`info-text`},He=v((0,e.defineComponent)({__name:`IndicatorSelector`,props:{activeIndicators:{},indicatorParams:{}},emits:[`toggle`,`updateParams`,`reorderSubIndicators`],setup(t,{emit:i}){let a=t,o=i;function s(e){return e.map(e=>({id:e.id,label:e.label,name:e.name,description:e.description,role:e.pane,params:(e.params??[]).map(e=>({key:e.key,label:e.label,type:e.type,default:e.default??(e.type===`number`?0:``),min:e.min,max:e.max,step:e.step}))}))}let c=(0,r.createIndicatorSelectorController)({catalog:s(n.allIndicators)}),l=$(c.menuOpen),u=$(c.searchQuery),d=$(c.filteredMain),f=$(c.filteredSub),p=(0,e.computed)(()=>d.value.length>0||f.value.length>0),m=c.catalog.peek().length,h=(0,e.ref)(null),g=(0,e.ref)(!1),_=(0,e.ref)(null),v=(0,e.ref)(null),y=(0,e.ref)(null),b=(0,e.ref)(null),x=(0,e.ref)(!1),S=P(),C=(0,e.computed)(()=>a.activeIndicators?.length?a.activeIndicators.map(e=>(0,n.findIndicator)(e)).filter(e=>e!==void 0).sort((e,t)=>e.pane===t.pane?0:e.pane===`main`?-1:1):[]),w=(0,e.computed)(()=>C.value.some(e=>e.pane===`main`)?C.value.find(e=>e.pane===`sub`)?.id??null:null),T=(0,e.computed)(()=>_.value?(0,n.findIndicator)(_.value):null),E=(0,e.computed)(()=>a.activeIndicators?.length??0);function D(e){return a.activeIndicators?.includes(e)??!1}function O(e){if(D(e))return;let t=(0,n.findIndicator)(e);t&&(t.pane===`main`&&n.allIndicators.filter(t=>t.id!==e&&D(t.id)&&t.pane===`main`).forEach(e=>o(`toggle`,e.id,!1)),o(`toggle`,e,!0))}function k(e){o(`toggle`,e,!1)}function A(e){_.value=e,g.value=!0}function j(e){let t=(0,n.findIndicator)(e);if(!t?.params)return{};let r={};for(let e of t.params)r[e.key]=e.default??e.min??1;let i=a.indicatorParams?.[e]||{},o={...r};for(let[e,t]of Object.entries(i))typeof t==`number`&&(o[e]=t);return o}function ee(e){let t=j(e.id);return e.params?e.params.map(e=>t[e.key]??``).join(`,`):``}function te(e){_.value&&o(`updateParams`,_.value,e),g.value=!1}function ne(e,t){if(!(0,n.isSubIndicatorId)(t)){e.preventDefault();return}b.value=t,y.value=null,e.dataTransfer?.setData(`text/plain`,t),e.dataTransfer&&(e.dataTransfer.effectAllowed=`move`)}function re(e,t){!b.value||!(0,n.isSubIndicatorId)(t)||b.value===t||(y.value=t,e.dataTransfer&&(e.dataTransfer.dropEffect=`move`))}function ie(e,t){let r=b.value||e.dataTransfer?.getData(`text/plain`)||``;if(!r||r===t){N();return}if(!(0,n.isSubIndicatorId)(r)||!(0,n.isSubIndicatorId)(t)){N();return}let i=C.value.findIndex(e=>e.id===r),a=C.value.findIndex(e=>e.id===t);if(i<0||a<0){N();return}let s=[...C.value.map(e=>e.id)],[c]=s.splice(i,1);if(!c){N();return}s.splice(a,0,c),o(`reorderSubIndicators`,s.filter(e=>(0,n.isSubIndicatorId)(e))),N()}function N(){y.value=null,b.value=null}function He(e){e.key===`Escape`&&c.menuOpen.peek()&&c.closeMenu()}return(0,e.onMounted)(()=>{document.addEventListener(`keydown`,He)}),(0,e.onUnmounted)(()=>{document.removeEventListener(`keydown`,He)}),(t,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,ae,[(0,e.createElementVNode)(`div`,oe,[(0,e.createElementVNode)(`div`,F,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(C.value,t=>((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:t.id},[t.id===w.value?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,I)):(0,e.createCommentVNode)(``,!0),(0,e.createElementVNode)(`div`,{class:(0,e.normalizeClass)([`indicator-item`,{draggable:(0,e.unref)(n.isSubIndicatorId)(t.id),"drag-over":y.value===t.id,"is-dragging":b.value===t.id}]),draggable:(0,e.unref)(n.isSubIndicatorId)(t.id),onDragstart:e=>ne(e,t.id),onDragover:(0,e.withModifiers)(e=>re(e,t.id),[`prevent`]),onDrop:(0,e.withModifiers)(e=>ie(e,t.id),[`prevent`]),onDragend:N},[(0,e.createElementVNode)(`div`,{class:`indicator-btn-wrapper`,onMouseenter:e=>v.value=t.id,onMouseleave:r[0]||=e=>v.value=null},[(0,e.createElementVNode)(`button`,{class:(0,e.normalizeClass)([`indicator-btn`,{active:!0,hovering:v.value===t.id}])},[(0,e.createElementVNode)(`span`,ce,[(0,e.createTextVNode)((0,e.toDisplayString)(t.label)+` `,1),t.params?.length?((0,e.openBlock)(),(0,e.createElementBlock)(`span`,R,` (`+(0,e.toDisplayString)(ee(t))+`) `,1)):(0,e.createCommentVNode)(``,!0)]),(0,e.createVNode)(e.Transition,{name:`fade`},{default:(0,e.withCtx)(()=>[v.value===t.id?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,z,[t.params?.length?((0,e.openBlock)(),(0,e.createElementBlock)(`button`,{key:0,class:`action-btn settings-btn`,onClick:(0,e.withModifiers)(e=>A(t.id),[`stop`]),title:`编辑参数`},[...r[9]||=[(0,e.createElementVNode)(`svg`,{viewBox:`0 0 24 24`,width:`14`,height:`14`,fill:`currentColor`},[(0,e.createElementVNode)(`path`,{d:`M19.14 12.94c.04-.31.06-.63.06-.94 0-.31-.02-.63-.06-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.04.31-.06.63-.06.94s.02.63.06.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61l-2.01-1.58zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6z`})],-1)]],8,B)):(0,e.createCommentVNode)(``,!0),t.params?.length?((0,e.openBlock)(),(0,e.createElementBlock)(`span`,le)):(0,e.createCommentVNode)(``,!0),(0,e.createElementVNode)(`button`,{class:`action-btn remove-btn`,onClick:(0,e.withModifiers)(e=>k(t.id),[`stop`]),title:`移除指标`},[...r[10]||=[(0,e.createElementVNode)(`svg`,{viewBox:`0 0 24 24`,width:`14`,height:`14`,fill:`currentColor`},[(0,e.createElementVNode)(`path`,{d:`M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z`})],-1)]],8,ue)])):(0,e.createCommentVNode)(``,!0)]),_:2},1024)],2)],40,se)],42,L)],64))),128)),(0,e.createElementVNode)(`div`,de,[(0,e.createElementVNode)(`button`,{ref_key:`addBtnRef`,ref:h,class:`add-btn`,onClick:r[1]||=(0,e.withModifiers)(t=>(0,e.unref)(c).toggleMenu(),[`stop`]),title:`添加指标`},[...r[11]||=[(0,e.createElementVNode)(`svg`,{viewBox:`0 0 24 24`,width:`16`,height:`16`,fill:`currentColor`},[(0,e.createElementVNode)(`path`,{d:`M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z`})],-1)]],512)])])]),((0,e.openBlock)(),(0,e.createBlock)(e.Teleport,{to:(0,e.unref)(S)},[(0,e.createVNode)(e.Transition,{name:`overlay`},{default:(0,e.withCtx)(()=>[(0,e.unref)(l)?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:0,class:`selector-overlay`,onClick:r[7]||=t=>(0,e.unref)(c).closeMenu()},[(0,e.createVNode)(e.Transition,{name:`modal`},{default:(0,e.withCtx)(()=>[(0,e.unref)(l)?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:0,class:`selector-modal`,onClick:r[6]||=(0,e.withModifiers)(()=>{},[`stop`])},[(0,e.createElementVNode)(`div`,fe,[(0,e.createElementVNode)(`div`,pe,[r[12]||=(0,e.createElementVNode)(`span`,{class:`title-text`},`添加指标`,-1),(0,e.createElementVNode)(`span`,me,(0,e.toDisplayString)((0,e.unref)(m))+` 个可用指标`,1)]),(0,e.createElementVNode)(`div`,he,[(0,e.createElementVNode)(`button`,{class:(0,e.normalizeClass)([`view-toggle-btn`,{active:x.value}]),onClick:r[2]||=e=>x.value=!x.value,title:`简洁模式`},[x.value?((0,e.openBlock)(),(0,e.createElementBlock)(`svg`,V,[...r[14]||=[(0,e.createElementVNode)(`path`,{d:`M3 3h18v18H3V3zm16 16V5H5v14h14zM7 7h4v4H7V7zm0 6h4v4H7v-4zm6-6h4v4h-4V7zm0 6h4v4h-4v-4z`},null,-1)]])):((0,e.openBlock)(),(0,e.createElementBlock)(`svg`,ge,[...r[13]||=[(0,e.createElementVNode)(`path`,{d:`M4 6h16v2H4zm0 5h16v2H4zm0 5h16v2H4z`},null,-1)]]))],2),(0,e.createElementVNode)(`button`,{class:`modal-close`,onClick:r[3]||=t=>(0,e.unref)(c).closeMenu(),title:`关闭`},[...r[15]||=[(0,e.createElementVNode)(`svg`,{viewBox:`0 0 24 24`,width:`14`,height:`14`,fill:`currentColor`},[(0,e.createElementVNode)(`path`,{d:`M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z`})],-1)]])])]),(0,e.createElementVNode)(`div`,_e,[(0,e.createElementVNode)(`div`,ve,[r[16]||=(0,e.createElementVNode)(`svg`,{class:`search-icon`,viewBox:`0 0 24 24`,width:`16`,height:`16`,fill:`currentColor`},[(0,e.createElementVNode)(`path`,{d:`M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z`})],-1),(0,e.createElementVNode)(`input`,{value:(0,e.unref)(u),onInput:r[4]||=t=>(0,e.unref)(c).setSearchQuery(t.target.value),type:`text`,class:`search-input`,placeholder:`搜索指标名称...`},null,40,H)]),(0,e.unref)(d).length>0?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,ye,[(0,e.createElementVNode)(`div`,U,[r[17]||=(0,e.createElementVNode)(`span`,{class:`section-title`},`主图指标`,-1),(0,e.createElementVNode)(`span`,be,(0,e.toDisplayString)((0,e.unref)(d).length),1)]),(0,e.createElementVNode)(`div`,{class:(0,e.normalizeClass)([`indicator-grid`,{compact:x.value}])},[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)((0,e.unref)(d),t=>((0,e.openBlock)(),(0,e.createElementBlock)(`button`,{key:t.id,class:(0,e.normalizeClass)([`indicator-card`,{active:D(t.id),compact:x.value}]),onClick:e=>D(t.id)?k(t.id):O(t.id)},[x.value?((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:0},[(0,e.createElementVNode)(`span`,Se,(0,e.toDisplayString)(t.label),1),(0,e.createElementVNode)(`span`,Ce,(0,e.toDisplayString)(t.name),1)],64)):((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:1},[(0,e.createElementVNode)(`div`,we,[(0,e.createElementVNode)(`span`,Te,(0,e.toDisplayString)(t.label),1),(0,e.createElementVNode)(`div`,Ee,[t.params?.length?((0,e.openBlock)(),(0,e.createElementBlock)(`button`,{key:0,class:`card-settings-btn`,onClick:(0,e.withModifiers)(e=>A(t.id),[`stop`]),title:`编辑参数`},[...r[18]||=[(0,e.createElementVNode)(`svg`,{viewBox:`0 0 24 24`,width:`14`,height:`14`,fill:`currentColor`},[(0,e.createElementVNode)(`path`,{d:`M19.14 12.94c.04-.31.06-.63.06-.94 0-.31-.02-.63-.06-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.04.31-.06.63-.06.94s.02.63.06.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61l-2.01-1.58zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6z`})],-1)]],8,De)):(0,e.createCommentVNode)(``,!0)])]),(0,e.createElementVNode)(`div`,Oe,(0,e.toDisplayString)(t.name),1)],64))],10,xe))),128))],2)])):(0,e.createCommentVNode)(``,!0),(0,e.unref)(d).length>0&&(0,e.unref)(f).length>0?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,ke)):(0,e.createCommentVNode)(``,!0),!p.value&&(0,e.unref)(u).trim()?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,Ae,[...r[19]||=[(0,e.createElementVNode)(`svg`,{viewBox:`0 0 24 24`,width:`48`,height:`48`,fill:`currentColor`},[(0,e.createElementVNode)(`path`,{d:`M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z`})],-1),(0,e.createElementVNode)(`p`,null,`未找到匹配的指标`,-1),(0,e.createElementVNode)(`span`,{class:`no-results-hint`},`请尝试其他关键词`,-1)]])):(0,e.createCommentVNode)(``,!0),(0,e.unref)(f).length>0?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,je,[(0,e.createElementVNode)(`div`,Me,[r[20]||=(0,e.createElementVNode)(`span`,{class:`section-title`},`副图指标`,-1),(0,e.createElementVNode)(`span`,Ne,(0,e.toDisplayString)((0,e.unref)(f).length),1)]),(0,e.createElementVNode)(`div`,{class:(0,e.normalizeClass)([`indicator-grid`,{compact:x.value}])},[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)((0,e.unref)(f),t=>((0,e.openBlock)(),(0,e.createElementBlock)(`button`,{key:t.id,class:(0,e.normalizeClass)([`indicator-card`,{active:D(t.id),compact:x.value}]),onClick:e=>D(t.id)?k(t.id):O(t.id)},[x.value?((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:0},[(0,e.createElementVNode)(`span`,Fe,(0,e.toDisplayString)(t.label),1),(0,e.createElementVNode)(`span`,Ie,(0,e.toDisplayString)(t.name),1)],64)):((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:1},[(0,e.createElementVNode)(`div`,Le,[(0,e.createElementVNode)(`span`,Re,(0,e.toDisplayString)(t.label),1),(0,e.createElementVNode)(`div`,W,[t.params?.length?((0,e.openBlock)(),(0,e.createElementBlock)(`button`,{key:0,class:`card-settings-btn`,onClick:(0,e.withModifiers)(e=>A(t.id),[`stop`]),title:`编辑参数`},[...r[21]||=[(0,e.createElementVNode)(`svg`,{viewBox:`0 0 24 24`,width:`14`,height:`14`,fill:`currentColor`},[(0,e.createElementVNode)(`path`,{d:`M19.14 12.94c.04-.31.06-.63.06-.94 0-.31-.02-.63-.06-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.04.31-.06.63-.06.94s.02.63.06.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61l-2.01-1.58zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6z`})],-1)]],8,G)):(0,e.createCommentVNode)(``,!0)])]),(0,e.createElementVNode)(`div`,ze,(0,e.toDisplayString)(t.name),1)],64))],10,Pe))),128))],2)])):(0,e.createCommentVNode)(``,!0)]),(0,e.createElementVNode)(`div`,Be,[(0,e.createElementVNode)(`div`,Ve,[(0,e.createElementVNode)(`span`,K,`已激活 `+(0,e.toDisplayString)(E.value)+` 个指标`,1)]),(0,e.createElementVNode)(`button`,{class:`btn btn-confirm`,onClick:r[5]||=t=>(0,e.unref)(c).closeMenu()},`确认`)])])):(0,e.createCommentVNode)(``,!0)]),_:1})])):(0,e.createCommentVNode)(``,!0)]),_:1})],8,[`to`])),T.value?((0,e.openBlock)(),(0,e.createBlock)(M,{key:0,visible:g.value,"indicator-id":T.value.id,"indicator-name":T.value.name,"indicator-description":T.value.description,params:T.value.params||[],values:j(T.value.id),onClose:r[8]||=e=>g.value=!1,onConfirm:te},null,8,[`visible`,`indicator-id`,`indicator-name`,`indicator-description`,`params`,`values`])):(0,e.createCommentVNode)(``,!0)]))}}),[[`__scopeId`,`data-v-6eb58214`]]),q={class:`kline-tooltip__title`},J={key:0},Ue={class:`kline-tooltip__grid`},We={class:`row`},Ge={class:`row`},Ke={class:`row`},qe={class:`row`},Je={key:0,class:`row`},Ye={key:1,class:`row`},Xe={key:2,class:`row`},Ze={key:3,class:`row`},Qe={key:4,class:`row`},$e={key:5,class:`row`},et=`#ef4444`,tt=`#22c55e`,Y=`#6b7280`,nt=v((0,e.defineComponent)({__name:`KLineTooltip`,props:{k:{},index:{},data:{},pos:{},useAnchor:{type:Boolean},anchorPlacement:{},setEl:{type:Function}},setup(t){let n=t,r=(0,e.computed)(()=>n.useAnchor===!0),i=(0,e.computed)(()=>n.anchorPlacement===`left-bottom`?`anchor-left-bottom`:`anchor-right-bottom`);function a(e){n.setEl?.(e)}function o(e){let t=new Date(e);return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,`0`)}-${String(t.getDate()).padStart(2,`0`)}`}function s(e){return e>=1e8?(e/1e8).toFixed(2)+`亿`:e>=1e4?(e/1e4).toFixed(2)+`万`:e.toFixed(2)}function c(e,t){return`${e>=0?`+`:``}${e.toFixed(2)}${t}`}function l(e,t,n){if(e.close>=e.open)return 1;let r=typeof n==`number`&&n>0?t[n-1]:void 0;return r&&e.close>r.close?1:r&&e.close<r.close?-1:0}let u=(0,e.computed)(()=>{let e=n.k;if(!e)return Y;let t=l(e,n.data,n.index);return t>0?et:t<0?tt:Y}),d=(0,e.computed)(()=>{let e=n.k;if(!e)return Y;let t=e.close-e.open;return t>0?et:t<0?tt:Y}),f=(0,e.computed)(()=>{let e=n.k;if(!e)return Y;let t=e.changePercent??(e.close-e.open)/e.open*100;return t>0?et:t<0?tt:Y});return(n,l)=>t.k?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:0,ref:a,class:(0,e.normalizeClass)([`kline-tooltip`,[{"use-anchor":r.value},i.value]]),style:(0,e.normalizeStyle)(r.value?void 0:{left:`${t.pos.x}px`,top:`${t.pos.y}px`})},[(0,e.createElementVNode)(`div`,q,[t.k.stockCode?((0,e.openBlock)(),(0,e.createElementBlock)(`span`,J,(0,e.toDisplayString)(t.k.stockCode),1)):(0,e.createCommentVNode)(``,!0),(0,e.createElementVNode)(`span`,null,(0,e.toDisplayString)(o(t.k.timestamp)),1)]),(0,e.createElementVNode)(`div`,Ue,[(0,e.createElementVNode)(`div`,We,[l[0]||=(0,e.createElementVNode)(`span`,null,`开`,-1),(0,e.createElementVNode)(`span`,{style:(0,e.normalizeStyle)({color:u.value})},(0,e.toDisplayString)(t.k.open.toFixed(2)),5)]),(0,e.createElementVNode)(`div`,Ge,[l[1]||=(0,e.createElementVNode)(`span`,null,`高`,-1),(0,e.createElementVNode)(`span`,null,(0,e.toDisplayString)(t.k.high.toFixed(2)),1)]),(0,e.createElementVNode)(`div`,Ke,[l[2]||=(0,e.createElementVNode)(`span`,null,`低`,-1),(0,e.createElementVNode)(`span`,null,(0,e.toDisplayString)(t.k.low.toFixed(2)),1)]),(0,e.createElementVNode)(`div`,qe,[l[3]||=(0,e.createElementVNode)(`span`,null,`收`,-1),(0,e.createElementVNode)(`span`,{style:(0,e.normalizeStyle)({color:d.value})},(0,e.toDisplayString)(t.k.close.toFixed(2)),5)]),typeof t.k.volume==`number`?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,Je,[l[4]||=(0,e.createElementVNode)(`span`,null,`成交量`,-1),(0,e.createElementVNode)(`span`,null,(0,e.toDisplayString)(s(t.k.volume)),1)])):(0,e.createCommentVNode)(``,!0),typeof t.k.turnover==`number`?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,Ye,[l[5]||=(0,e.createElementVNode)(`span`,null,`成交额`,-1),(0,e.createElementVNode)(`span`,null,(0,e.toDisplayString)(s(t.k.turnover)),1)])):(0,e.createCommentVNode)(``,!0),typeof t.k.amplitude==`number`?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,Xe,[l[6]||=(0,e.createElementVNode)(`span`,null,`振幅`,-1),(0,e.createElementVNode)(`span`,null,(0,e.toDisplayString)(t.k.amplitude)+`%`,1)])):(0,e.createCommentVNode)(``,!0),typeof t.k.changePercent==`number`?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,Ze,[l[7]||=(0,e.createElementVNode)(`span`,null,`涨跌幅`,-1),(0,e.createElementVNode)(`span`,{style:(0,e.normalizeStyle)({color:f.value})},(0,e.toDisplayString)(c(t.k.changePercent,`%`)),5)])):(0,e.createCommentVNode)(``,!0),typeof t.k.changeAmount==`number`?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,Qe,[l[8]||=(0,e.createElementVNode)(`span`,null,`涨跌额`,-1),(0,e.createElementVNode)(`span`,{style:(0,e.normalizeStyle)({color:f.value})},(0,e.toDisplayString)(c(t.k.changeAmount,``)),5)])):(0,e.createCommentVNode)(``,!0),typeof t.k.turnoverRate==`number`?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,$e,[l[9]||=(0,e.createElementVNode)(`span`,null,`换手率`,-1),(0,e.createElementVNode)(`span`,null,(0,e.toDisplayString)(t.k.turnoverRate.toFixed(2))+`%`,1)])):(0,e.createCommentVNode)(``,!0)])],6)):(0,e.createCommentVNode)(``,!0)}}),[[`__scopeId`,`data-v-93207d24`]]),X={class:`marker-tooltip__title`},rt={key:0,class:`marker-tooltip__content`},it=v((0,e.defineComponent)({__name:`MarkerTooltip`,props:{marker:{},pos:{},useAnchor:{type:Boolean},anchorPlacement:{},setEl:{type:Function}},setup(t){let n={support:`支撑位`,resistance:`阻力位`,top:`顶部`,bottom:`底部`},r=t,i=(0,e.computed)(()=>r.useAnchor===!0),a=(0,e.computed)(()=>r.anchorPlacement===`left-bottom`?`anchor-left-bottom`:`anchor-right-bottom`);function o(e){r.setEl?.(e)}let s=(0,e.computed)(()=>r.marker&&`date`in r.marker),c=(0,e.computed)(()=>{if(!r.marker)return``;if(s.value){let e=r.marker;return e.label?.text||e.shape}let e=r.marker;return n[e.markerType]||e.markerType}),l=(0,e.computed)(()=>{if(!r.marker)return{};if(s.value){let e=r.marker;return{日期:e.date,...e.metadata}}return r.marker.metadata}),u=(0,e.computed)(()=>Object.keys(l.value).length>0);function d(e){return typeof e==`number`?e.toFixed(2):String(e)}return(n,r)=>t.marker?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:0,ref:o,class:(0,e.normalizeClass)([`marker-tooltip`,[{"use-anchor":i.value},a.value]]),style:(0,e.normalizeStyle)(i.value?void 0:{left:`${t.pos.x+12}px`,top:`${t.pos.y+12}px`})},[(0,e.createElementVNode)(`div`,X,(0,e.toDisplayString)(c.value),1),u.value?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,rt,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(l.value,(t,n)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:n,class:`row`},[(0,e.createElementVNode)(`span`,null,(0,e.toDisplayString)(n),1),(0,e.createElementVNode)(`span`,null,(0,e.toDisplayString)(d(t)),1)]))),128))])):(0,e.createCommentVNode)(``,!0)],6)):(0,e.createCommentVNode)(``,!0)}}),[[`__scopeId`,`data-v-f56bc484`]]),at={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function ot(t,n){return(0,e.openBlock)(),(0,e.createElementBlock)(`svg`,at,[...n[0]||=[(0,e.createElementVNode)(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M7.904 17.563a1.2 1.2 0 0 0 2.228.308l2.09-3.093l4.907 4.907a1.067 1.067 0 0 0 1.509 0l1.047-1.047a1.067 1.067 0 0 0 0-1.509l-4.907-4.907l3.113-2.09a1.2 1.2 0 0 0-.309-2.228L4 4z`},null,-1)]])}var st=(0,e.markRaw)({name:`tabler-pointer`,render:ot}),ct={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function lt(t,n){return(0,e.openBlock)(),(0,e.createElementBlock)(`svg`,ct,[...n[0]||=[(0,e.createElementVNode)(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M4 19h16M4 15l4-6l4 2l4-5l4 4`},null,-1)]])}var ut=(0,e.markRaw)({name:`tabler-chart-line`,render:lt}),dt={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function ft(t,n){return(0,e.openBlock)(),(0,e.createElementBlock)(`svg`,dt,[...n[0]||=[(0,e.createElementVNode)(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M17 7L7 17M8 7h9v9`},null,-1)]])}var pt=(0,e.markRaw)({name:`tabler-arrow-up-right`,render:ft}),mt={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function ht(t,n){return(0,e.openBlock)(),(0,e.createElementBlock)(`svg`,mt,[...n[0]||=[(0,e.createElementVNode)(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M5 12h14m-6 6l6-6m-6-6l6 6`},null,-1)]])}var gt=(0,e.markRaw)({name:`tabler-arrow-right`,render:ht}),_t={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function vt(t,n){return(0,e.openBlock)(),(0,e.createElementBlock)(`svg`,_t,[...n[0]||=[(0,e.createElementVNode)(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M5 12h14`},null,-1)]])}var yt=(0,e.markRaw)({name:`tabler-minus`,render:vt}),bt={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function xt(t,n){return(0,e.openBlock)(),(0,e.createElementBlock)(`svg`,bt,[...n[0]||=[(0,e.createElementVNode)(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M3 12v.01M7 12h10m4 0v.01`},null,-1)]])}var St=(0,e.markRaw)({name:`tabler-separator`,render:xt}),Ct={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function wt(t,n){return(0,e.openBlock)(),(0,e.createElementBlock)(`svg`,Ct,[...n[0]||=[(0,e.createElementVNode)(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M4 8V6a2 2 0 0 1 2-2h2M4 16v2a2 2 0 0 0 2 2h2m8-16h2a2 2 0 0 1 2 2v2m-4 12h2a2 2 0 0 0 2-2v-2M9 12h6m-3-3v6`},null,-1)]])}var Tt=(0,e.markRaw)({name:`tabler-crosshair`,render:wt}),Et={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Dt(t,n){return(0,e.openBlock)(),(0,e.createElementBlock)(`svg`,Et,[...n[0]||=[(0,e.createElementVNode)(`g`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`},[(0,e.createElementVNode)(`path`,{d:`M3 12a9 9 0 1 0 18 0a9 9 0 0 0-18 0m9-3h.01`}),(0,e.createElementVNode)(`path`,{d:`M11 12h1v4h1`})],-1)]])}var Ot=(0,e.markRaw)({name:`tabler-info-circle`,render:Dt}),kt={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function At(t,n){return(0,e.openBlock)(),(0,e.createElementBlock)(`svg`,kt,[...n[0]||=[(0,e.createElementVNode)(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M3 10a7 7 0 1 0 14 0a7 7 0 1 0-14 0m4 0h6m-3-3v6m11 8l-6-6`},null,-1)]])}var jt=(0,e.markRaw)({name:`tabler-zoom-in`,render:At}),Mt={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Nt(t,n){return(0,e.openBlock)(),(0,e.createElementBlock)(`svg`,Mt,[...n[0]||=[(0,e.createElementVNode)(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M3 10a7 7 0 1 0 14 0a7 7 0 1 0-14 0m4 0h6m8 11l-6-6`},null,-1)]])}var Pt=(0,e.markRaw)({name:`tabler-zoom-out`,render:Nt}),Ft={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function It(t,n){return(0,e.openBlock)(),(0,e.createElementBlock)(`svg`,Ft,[...n[0]||=[(0,e.createElementVNode)(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M4 8V6a2 2 0 0 1 2-2h2M4 16v2a2 2 0 0 0 2 2h2m8-16h2a2 2 0 0 1 2 2v2m-4 12h2a2 2 0 0 0 2-2v-2`},null,-1)]])}var Lt=(0,e.markRaw)({name:`tabler-maximize`,render:It}),Rt={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function zt(t,n){return(0,e.openBlock)(),(0,e.createElementBlock)(`svg`,Rt,[...n[0]||=[(0,e.createElementVNode)(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M15 19v-2a2 2 0 0 1 2-2h2M15 5v2a2 2 0 0 0 2 2h2M5 15h2a2 2 0 0 1 2 2v2M5 9h2a2 2 0 0 0 2-2V5`},null,-1)]])}var Bt=(0,e.markRaw)({name:`tabler-minimize`,render:zt}),Vt={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Ht(t,n){return(0,e.openBlock)(),(0,e.createElementBlock)(`svg`,Vt,[...n[0]||=[(0,e.createElementVNode)(`g`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`},[(0,e.createElementVNode)(`path`,{d:`M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 0 0 2.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 0 0 1.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 0 0-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 0 0-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 0 0-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 0 0-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 0 0 1.066-2.573c-.94-1.543.826-3.31 2.37-2.37c1 .608 2.296.07 2.572-1.065`}),(0,e.createElementVNode)(`path`,{d:`M9 12a3 3 0 1 0 6 0a3 3 0 0 0-6 0`})],-1)]])}var Ut=(0,e.markRaw)({name:`tabler-settings`,render:Ht}),Wt={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Gt(t,n){return(0,e.openBlock)(),(0,e.createElementBlock)(`svg`,Wt,[...n[0]||=[(0,e.createElementVNode)(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M3 5a2 2 0 1 0 4 0a2 2 0 1 0-4 0m14 0a2 2 0 1 0 4 0a2 2 0 1 0-4 0M3 19a2 2 0 1 0 4 0a2 2 0 1 0-4 0m14 0a2 2 0 1 0 4 0a2 2 0 1 0-4 0M5 7v10M7 5h10M7 19h10m2-12v10`},null,-1)]])}var Kt=(0,e.markRaw)({name:`tabler-shape`,render:Gt}),qt={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Jt(t,n){return(0,e.openBlock)(),(0,e.createElementBlock)(`svg`,qt,[...n[0]||=[(0,e.createElementVNode)(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M3 7a2 2 0 1 0 4 0a2 2 0 1 0-4 0m11 8a2 2 0 1 0 4 0a2 2 0 1 0-4 0m1-9a3 3 0 1 0 6 0a3 3 0 1 0-6 0M3 18a3 3 0 1 0 6 0a3 3 0 1 0-6 0m6-1l5-1.5m-7.5-7l7.81 5.37M7 7l8-1`},null,-1)]])}var Yt=(0,e.markRaw)({name:`tabler-chart-dots-3`,render:Jt}),Xt={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Zt(t,n){return(0,e.openBlock)(),(0,e.createElementBlock)(`svg`,Xt,[...n[0]||=[(0,e.createElementVNode)(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`m18 10l-6-6l-6 6zm0 4l-6 6l-6-6z`},null,-1)]])}var Qt=(0,e.markRaw)({name:`tabler-caret-up-down`,render:Zt}),$t={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function en(t,n){return(0,e.openBlock)(),(0,e.createElementBlock)(`svg`,$t,[...n[0]||=[(0,e.createElementVNode)(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M8 4H5v16h3m8-16h3v16h-3`},null,-1)]])}var tn=(0,e.markRaw)({name:`tabler-brackets`,render:en});function nn(){return Object.create(null)}function rn(){return{ctxMethods:nn(),ctxProps:nn(),canvasProps:nn(),ctxMethodSources:Object.create(null)}}function an(e,t,n){let r=e[t]??={count:0,totalTime:0};r.count+=1,r.totalTime+=n}function on(e,t,n,r){an(e.ctxMethodSources[t]??=nn(),n,r)}function sn(e){return Object.entries(e).filter(([,e])=>e.count>0).map(([e,t])=>({name:e,count:t.count,totalTime:t.totalTime.toFixed(2),averageTime:(t.totalTime/t.count).toFixed(4)})).sort((e,t)=>Number(t.totalTime)-Number(e.totalTime))}var cn=!1,ln=new Map,un=new Map;function dn(e){cn=e,e?typeof window<`u`&&!window.__KMAP_CANVAS_PROFILER_INSTALLED__&&pn():mn()}function fn(){if(!cn)return`disabled`;let e=Error().stack;if(!e)return`unknown`;let t=e.split(`
|
|
2
|
+
`).map(e=>e.trim()).filter(Boolean);for(let e of t){if(e.includes(`canvasProfiler`)||e.includes(`CanvasRenderingContext2D`)||e===`Error`)continue;let t=e.replace(/^at\s+/,``),n=t.match(/((?:src|node_modules)[^\s)]+):(\d+):(\d+)/);if(n)return`${n[1]}:${n[2]}`;let r=t.match(/\(([^)]+):(\d+):(\d+)\)$/);return r?`${r[1]}:${r[2]}`:t}return`unknown`}function Z(e,t,n,r){let i=`${e.constructor?.name??`proto`}:${t}`;if(ln.has(i))return;let a=Reflect.get(e,t);typeof a==`function`&&(ln.set(i,a),Reflect.set(e,t,function(...e){if(!cn)return a.apply(this,e);let i=r?.captureSource?fn():null,o=performance.now(),s=a.apply(this,e),c=performance.now()-o;return an(n.ctxMethods,t,c),i&&on(n,t,i,c),s}))}function Q(e,t,n){let r=Object.getOwnPropertyDescriptor(e,t);if(!r?.set||!r.configurable)return;let i=`${e.constructor?.name??`proto`}:${t}`;un.has(i)||(un.set(i,r),Object.defineProperty(e,t,{configurable:!0,enumerable:r.enumerable??!1,get:r.get,set(e){if(!cn){r.set.call(this,e);return}let i=performance.now();r.set.call(this,e),an(n,t,performance.now()-i)}}))}function pn(){if(typeof window>`u`||window.__KMAP_CANVAS_PROFILER_INSTALLED__)return;let e=CanvasRenderingContext2D?.prototype,t=HTMLCanvasElement?.prototype;if(!e||!t)return;let n=rn();Z(e,`fillText`,n,{captureSource:!0}),Z(e,`measureText`,n,{captureSource:!0}),Z(e,`drawImage`,n),Z(e,`save`,n),Z(e,`restore`,n),Z(e,`clip`,n),Z(e,`setTransform`,n),Z(e,`scale`,n),Q(e,`font`,n.ctxProps),Q(e,`filter`,n.ctxProps),Q(e,`shadowBlur`,n.ctxProps),Q(e,`lineWidth`,n.ctxProps),Q(t,`width`,n.canvasProps),Q(t,`height`,n.canvasProps),window.__KMAP_CANVAS_PROFILER_METRICS__=n,window.__KMAP_CANVAS_PROFILER_INSTALLED__=!0,window.showCanvasReport=()=>{let e=window.__KMAP_CANVAS_PROFILER_METRICS__;if(e){console.group(`[kmap] Canvas profiler report`),console.log(`ctx methods`),console.table(sn(e.ctxMethods)),console.log(`ctx props`),console.table(sn(e.ctxProps)),console.log(`canvas props`),console.table(sn(e.canvasProps));for(let t of[`fillText`,`measureText`]){let n=e.ctxMethodSources[t];n&&(console.log(`${t} sources`),console.table(sn(n).slice(0,20)))}console.groupEnd()}},window.resetCanvasReport=()=>{window.__KMAP_CANVAS_PROFILER_METRICS__=rn()},console.info(`[kmap] Canvas profiler enabled. Use window.showCanvasReport() and window.resetCanvasReport().`)}function mn(){if(typeof window>`u`||!window.__KMAP_CANVAS_PROFILER_INSTALLED__)return;let e=CanvasRenderingContext2D?.prototype,t=HTMLCanvasElement?.prototype;ln.forEach((n,r)=>{let i=r.match(/^(.+):(.+)$/);if(!i)return;let[,a,o]=i,s=null;a===`CanvasRenderingContext2D`?s=e:a===`HTMLCanvasElement`&&(s=t),s&&Reflect.set(s,o,n)}),ln.clear(),un.forEach((n,r)=>{let i=r.match(/^(.+):(.+)$/);if(!i)return;let[,a,o]=i,s=null;a===`CanvasRenderingContext2D`?s=e:a===`HTMLCanvasElement`&&(s=t),s&&n.configurable&&Object.defineProperty(s,o,n)}),un.clear(),window.__KMAP_CANVAS_PROFILER_INSTALLED__=!1,window.__KMAP_CANVAS_PROFILER_METRICS__=void 0,window.showCanvasReport=void 0,window.resetCanvasReport=void 0,console.info(`[kmap] Canvas profiler disabled.`)}var hn={class:`left-toolbar`,"aria-label":`图表工具栏`},gn={class:`left-toolbar__group`},_n=[`title`,`aria-label`,`onClick`],vn=[`onClick`],yn=[`title`,`aria-label`,`onClick`],bn={class:`left-toolbar__group`},xn={class:`left-toolbar__group`},Sn=[`title`,`aria-label`],Cn={class:`left-toolbar__group`},wn={class:`settings-body`},Tn={class:`settings-label`},En=[`onUpdate:modelValue`],Dn=[`onUpdate:modelValue`],On=[`value`],kn={class:`settings-label`},An=[`onUpdate:modelValue`],jn=[`onUpdate:modelValue`],Mn=[`value`],Nn=v((0,e.defineComponent)({__name:`LeftToolbar`,props:{isFullscreen:{type:Boolean}},emits:[`selectTool`,`toggleFullscreen`,`zoomIn`,`zoomOut`,`settingsChange`],setup(t,{expose:n,emit:r}){let i=[{id:`cursor`,title:`光标`,icon:st},{id:`lines`,title:`线条`,icon:ut,children:[{id:`trend-line`,title:`线段`,icon:ut},{id:`ray`,title:`射线`,icon:pt},{id:`h-line`,title:`水平线`,icon:yt},{id:`h-ray`,title:`水平射线`,icon:gt},{id:`v-line`,title:`垂直线`,icon:St},{id:`crosshair-line`,title:`十字线`,icon:Tt},{id:`info-line`,title:`信息线`,icon:Ot}]},{id:`channels`,title:`通道`,icon:Kt,children:[{id:`parallel-channel`,title:`平行通道`,icon:Kt},{id:`regression-channel`,title:`回归趋势`,icon:Yt},{id:`flat-line`,title:`平滑顶底`,icon:Qt},{id:`disjoint-channel`,title:`不相交通道`,icon:tn}]}],a=r,o=(0,e.ref)(`cursor`),s=(0,e.ref)(null),c=(0,e.ref)(!1),l=P(),u=(0,e.computed)(()=>d.DEFAULT_SETTINGS.filter(e=>e.group===`main`)),f=(0,e.computed)(()=>d.DEFAULT_SETTINGS.filter(e=>e.group===`experimental`));function p(){try{let e=localStorage.getItem(d.SETTINGS_STORAGE_KEY);if(e){let t=JSON.parse(e),n={};return d.DEFAULT_SETTINGS.forEach(e=>{n[e.key]=t[e.key]??e.default}),n}}catch{}let e={};return d.DEFAULT_SETTINGS.forEach(t=>{e[t.key]=t.default}),e}function m(e){try{localStorage.setItem(d.SETTINGS_STORAGE_KEY,JSON.stringify(e))}catch{}}let h=(0,e.ref)(p()),g=(0,e.ref)({...h.value});function _(e){return o.value===e.id?!0:e.children?e.children.some(e=>e.id===o.value):!1}function v(e){if(e.children?.length){if(!e.children.some(e=>e.id===o.value)){let t=e.children[0];o.value=t.id,a(`selectTool`,t.id)}b(e.id);return}o.value=e.id,a(`selectTool`,e.id),s.value=null}function y(e){o.value=e.id,a(`selectTool`,e.id),s.value=null}function b(e){s.value=s.value===e?null:e}function x(){g.value={...h.value},c.value=!0}function S(){c.value=!1}function C(){let e={};d.DEFAULT_SETTINGS.forEach(t=>{e[t.key]=t.default}),g.value=e}function w(){h.value={...g.value},m(h.value),dn(!!h.value.enableCanvasProfiler),a(`settingsChange`,{...h.value}),S()}function T(){return{...h.value}}n({getSettings:T});function E(e){e.target.closest(`.tool-item`)||(s.value=null)}return(0,e.onMounted)(()=>{document.addEventListener(`click`,E,!0),a(`settingsChange`,{...h.value}),dn(!!h.value.enableCanvasProfiler)}),(0,e.onUnmounted)(()=>{document.removeEventListener(`click`,E,!0)}),(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,null,[(0,e.createElementVNode)(`nav`,hn,[(0,e.createElementVNode)(`div`,gn,[((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(i,t=>(0,e.createElementVNode)(`div`,{key:t.id,class:`tool-item`},[(0,e.createElementVNode)(`button`,{type:`button`,class:(0,e.normalizeClass)([`left-toolbar__button`,{active:_(t)}]),title:t.title,"aria-label":t.title,onClick:e=>v(t),onPointerdown:r[0]||=(0,e.withModifiers)(()=>{},[`stop`]),onPointermove:r[1]||=(0,e.withModifiers)(()=>{},[`stop`]),onPointerup:r[2]||=(0,e.withModifiers)(()=>{},[`stop`])},[((0,e.openBlock)(),(0,e.createBlock)((0,e.resolveDynamicComponent)(t.icon),{class:`tool-icon`,"aria-hidden":`true`})),t.children&&t.children.length?((0,e.openBlock)(),(0,e.createElementBlock)(`span`,{key:0,class:(0,e.normalizeClass)([`corner-indicator`,{open:s.value===t.id}]),onClick:(0,e.withModifiers)(e=>b(t.id),[`stop`]),"aria-label":`展开子菜单`},null,10,vn)):(0,e.createCommentVNode)(``,!0)],42,_n),(0,e.createVNode)(e.Transition,{name:`dropdown`},{default:(0,e.withCtx)(()=>[s.value===t.id&&t.children&&t.children.length?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:0,class:`tool-dropdown`,onPointerdown:r[3]||=(0,e.withModifiers)(()=>{},[`stop`]),onPointermove:r[4]||=(0,e.withModifiers)(()=>{},[`stop`]),onPointerup:r[5]||=(0,e.withModifiers)(()=>{},[`stop`])},[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.children,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`button`,{key:t.id,type:`button`,class:(0,e.normalizeClass)([`left-toolbar__button`,{active:o.value===t.id}]),title:t.title,"aria-label":t.title,onClick:e=>y(t)},[((0,e.openBlock)(),(0,e.createBlock)((0,e.resolveDynamicComponent)(t.icon),{class:`tool-icon`,"aria-hidden":`true`}))],10,yn))),128))],32)):(0,e.createCommentVNode)(``,!0)]),_:2},1024)])),64))]),r[22]||=(0,e.createElementVNode)(`span`,{class:`left-toolbar__divider`},null,-1),(0,e.createElementVNode)(`div`,bn,[(0,e.createElementVNode)(`button`,{type:`button`,class:`left-toolbar__button`,title:`放大`,"aria-label":`放大`,onClick:r[6]||=e=>n.$emit(`zoomIn`),onPointerdown:r[7]||=(0,e.withModifiers)(()=>{},[`stop`]),onPointermove:r[8]||=(0,e.withModifiers)(()=>{},[`stop`]),onPointerup:r[9]||=(0,e.withModifiers)(()=>{},[`stop`])},[(0,e.createVNode)((0,e.unref)(jt),{class:`tool-icon`,"aria-hidden":`true`})],32),(0,e.createElementVNode)(`button`,{type:`button`,class:`left-toolbar__button`,title:`缩小`,"aria-label":`缩小`,onClick:r[10]||=e=>n.$emit(`zoomOut`),onPointerdown:r[11]||=(0,e.withModifiers)(()=>{},[`stop`]),onPointermove:r[12]||=(0,e.withModifiers)(()=>{},[`stop`]),onPointerup:r[13]||=(0,e.withModifiers)(()=>{},[`stop`])},[(0,e.createVNode)((0,e.unref)(Pt),{class:`tool-icon`,"aria-hidden":`true`})],32)]),r[23]||=(0,e.createElementVNode)(`span`,{class:`left-toolbar__divider`},null,-1),(0,e.createElementVNode)(`div`,xn,[(0,e.createElementVNode)(`button`,{type:`button`,class:`left-toolbar__button`,title:t.isFullscreen?`退出全屏`:`全屏显示`,"aria-label":t.isFullscreen?`退出全屏`:`全屏显示`,onClick:r[14]||=e=>n.$emit(`toggleFullscreen`),onPointerdown:r[15]||=(0,e.withModifiers)(()=>{},[`stop`]),onPointermove:r[16]||=(0,e.withModifiers)(()=>{},[`stop`]),onPointerup:r[17]||=(0,e.withModifiers)(()=>{},[`stop`])},[t.isFullscreen?((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(Bt),{key:0,class:`tool-icon`,"aria-hidden":`true`})):((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(Lt),{key:1,class:`tool-icon`,"aria-hidden":`true`}))],40,Sn)]),r[24]||=(0,e.createElementVNode)(`span`,{class:`left-toolbar__divider`},null,-1),(0,e.createElementVNode)(`div`,Cn,[(0,e.createElementVNode)(`button`,{type:`button`,class:`left-toolbar__button`,title:`设置`,"aria-label":`设置`,onClick:x,onPointerdown:r[18]||=(0,e.withModifiers)(()=>{},[`stop`]),onPointermove:r[19]||=(0,e.withModifiers)(()=>{},[`stop`]),onPointerup:r[20]||=(0,e.withModifiers)(()=>{},[`stop`])},[(0,e.createVNode)((0,e.unref)(Ut),{class:`tool-icon`,"aria-hidden":`true`})],32)])]),((0,e.openBlock)(),(0,e.createBlock)(e.Teleport,{to:(0,e.unref)(l)},[(0,e.createVNode)(e.Transition,{name:`overlay`},{default:(0,e.withCtx)(()=>[c.value?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:0,class:`settings-overlay`,onClick:S},[(0,e.createVNode)(e.Transition,{name:`modal`},{default:(0,e.withCtx)(()=>[(0,e.createElementVNode)(`div`,{class:`settings-modal`,onClick:r[21]||=(0,e.withModifiers)(()=>{},[`stop`])},[(0,e.createElementVNode)(`div`,{class:`settings-header`},[r[26]||=(0,e.createElementVNode)(`div`,{class:`header-left`},[(0,e.createElementVNode)(`span`,{class:`settings-title`},`图表设置`),(0,e.createElementVNode)(`span`,{class:`settings-subtitle`},`个性化配置`)],-1),(0,e.createElementVNode)(`div`,{class:`header-right`},[(0,e.createElementVNode)(`button`,{class:`settings-close`,onClick:S},[...r[25]||=[(0,e.createElementVNode)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`},[(0,e.createElementVNode)(`path`,{d:`M18 6L6 18M6 6l12 12`})],-1)]])])]),(0,e.createElementVNode)(`div`,wn,[u.value.length>0?((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:0},[r[27]||=(0,e.createElementVNode)(`div`,{class:`settings-section-divider`},[(0,e.createElementVNode)(`span`,{class:`settings-section-label`},`主图设置`)],-1),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(u.value,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:t.key,class:`settings-item`},[(0,e.createElementVNode)(`label`,Tn,[(0,e.createElementVNode)(`span`,null,(0,e.toDisplayString)(t.label),1),t.type===`boolean`?(0,e.withDirectives)(((0,e.openBlock)(),(0,e.createElementBlock)(`input`,{key:0,type:`checkbox`,class:`settings-checkbox`,"onUpdate:modelValue":e=>g.value[t.key]=e},null,8,En)),[[e.vModelCheckbox,g.value[t.key]]]):t.type===`select`&&t.options?(0,e.withDirectives)(((0,e.openBlock)(),(0,e.createElementBlock)(`select`,{key:1,class:`settings-select`,"onUpdate:modelValue":e=>g.value[t.key]=e},[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.options,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`option`,{key:t.value,value:t.value},(0,e.toDisplayString)(t.label),9,On))),128))],8,Dn)),[[e.vModelSelect,g.value[t.key]]]):(0,e.createCommentVNode)(``,!0)])]))),128))],64)):(0,e.createCommentVNode)(``,!0),f.value.length>0?((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:1},[r[28]||=(0,e.createElementVNode)(`div`,{class:`settings-section-divider`},[(0,e.createElementVNode)(`span`,{class:`settings-section-label`},`实验性 / 调试设置`)],-1),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(f.value,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:t.key,class:`settings-item experimental`},[(0,e.createElementVNode)(`label`,kn,[(0,e.createElementVNode)(`span`,null,(0,e.toDisplayString)(t.label),1),t.type===`boolean`?(0,e.withDirectives)(((0,e.openBlock)(),(0,e.createElementBlock)(`input`,{key:0,type:`checkbox`,class:`settings-checkbox`,"onUpdate:modelValue":e=>g.value[t.key]=e},null,8,An)),[[e.vModelCheckbox,g.value[t.key]]]):t.type===`select`&&t.options?(0,e.withDirectives)(((0,e.openBlock)(),(0,e.createElementBlock)(`select`,{key:1,class:`settings-select`,"onUpdate:modelValue":e=>g.value[t.key]=e},[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.options,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`option`,{key:t.value,value:t.value},(0,e.toDisplayString)(t.label),9,Mn))),128))],8,jn)),[[e.vModelSelect,g.value[t.key]]]):(0,e.createCommentVNode)(``,!0)])]))),128))],64)):(0,e.createCommentVNode)(``,!0)]),(0,e.createElementVNode)(`div`,{class:`settings-footer`},[(0,e.createElementVNode)(`button`,{class:`settings-btn reset`,onClick:C},[...r[29]||=[(0,e.createElementVNode)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`},[(0,e.createElementVNode)(`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`}),(0,e.createElementVNode)(`path`,{d:`M3 3v5h5`})],-1),(0,e.createTextVNode)(` 重置 `,-1)]]),(0,e.createElementVNode)(`div`,{class:`footer-right`},[(0,e.createElementVNode)(`button`,{class:`settings-btn cancel`,onClick:S},`取消`),(0,e.createElementVNode)(`button`,{class:`settings-btn confirm`,onClick:w},[...r[30]||=[(0,e.createElementVNode)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2.5`},[(0,e.createElementVNode)(`path`,{d:`M20 6L9 17l-5-5`})],-1),(0,e.createTextVNode)(` 确定 `,-1)]])])])])]),_:1})])):(0,e.createCommentVNode)(``,!0)]),_:1})],8,[`to`]))],64))}}),[[`__scopeId`,`data-v-3e3ffb4f`]]),Pn=[`data-theme`],Fn={class:`pane-separator-layer`,"aria-hidden":`true`},In=4,Ln=v((0,e.defineComponent)({__name:`KLineChart`,props:{semanticConfig:{},dataFetcher:{},yPaddingPx:{default:20},minKWidth:{default:1},maxKWidth:{default:50},rightAxisWidth:{default:0},bottomAxisHeight:{default:24},priceLabelWidth:{default:60},zoomLevels:{default:20},initialZoomLevel:{default:3},isFullscreen:{type:Boolean,default:!1}},emits:[`zoomLevelChange`,`toggleFullscreen`],setup(t,{expose:n,emit:r}){let d=t,p=(0,e.ref)(null),m=(0,e.ref)(null),h=(0,e.ref)(null),g=(0,e.ref)(null),_=(0,e.ref)(null),v=(0,e.ref)(null),b=(0,e.ref)(null),x=(0,e.shallowRef)(null),S=(0,e.shallowRef)(null),C=(0,o.createChartStore)({initialZoomLevel:d.initialZoomLevel??1,minKWidth:d.minKWidth,maxKWidth:d.maxKWidth,zoomLevels:d.zoomLevels,rightAxisWidth:d.rightAxisWidth,priceLabelWidth:d.priceLabelWidth}),w=(0,e.ref)(`light`);C.actions.setZoomState(C.state.zoomLevel,(0,s.zoomLevelToKWidth)(C.state.zoomLevel,{minKWidth:d.minKWidth,maxKWidth:d.maxKWidth,zoomLevelCount:d.zoomLevels,dpr:C.state.viewportDpr}),(0,s.kGapFromKWidth)((0,s.zoomLevelToKWidth)(C.state.zoomLevel,{minKWidth:d.minKWidth,maxKWidth:d.maxKWidth,zoomLevelCount:d.zoomLevels,dpr:C.state.viewportDpr}),C.state.viewportDpr)),(0,e.computed)(()=>C.state.dataLength),(0,e.computed)(()=>C.state.viewportDpr);let T=(0,e.computed)(()=>C.state.zoomLevel),E=(0,e.computed)(()=>C.state.kWidth),D=(0,e.computed)(()=>C.state.kGap),O=(0,e.computed)(()=>C.state.paneRatios),k=(0,e.computed)(()=>C.state.selectedDrawingId),A=(0,e.computed)(()=>C.state.dataVersion);function j(){x.value?.scheduleDraw()}function ee(e){if(x.value?.updateSettings(e),e.performanceTest10kKlines){let e=te();console.time(`updateData-10k`),x.value?.updateData(e),console.timeEnd(`updateData-10k`),C.actions.setDataLength(e.length),C.actions.bumpDataVersion()}else S.value&&x.value?.getData()?.length===1e4&&S.value.applyConfig(d.semanticConfig)}function te(){let e=[],t=new Date(`2020-01-01`).getTime(),n=3e3;for(let r=0;r<1e4;r++){let i=t+r*864e5,a=(Math.random()-.5)*2*.02+1e-4,o=n,s=o*(1+a),c=Math.max(o,s)*(1+Math.random()*.01),l=Math.min(o,s)*(1-Math.random()*.01),u=Math.floor(1e6+Math.random()*5e6);e.push({timestamp:i,open:parseFloat(o.toFixed(2)),high:parseFloat(c.toFixed(2)),low:parseFloat(l.toFixed(2)),close:parseFloat(s.toFixed(2)),volume:u}),n=s}return e}function ne(e,t,n){let r=e.getBoundingClientRect();return{width:Math.max(t,Math.round(r.width)),height:Math.max(n,Math.round(r.height))}}function re(t){t&&(0,e.nextTick)(()=>{if(!t.isConnected)return;let e=ne(t,180,80);x.value?.interaction.setTooltipSize(e)})}function ie(t){t&&(0,e.nextTick)(()=>{t.isConnected&&(ce.value=ne(t,120,60))})}let M=(0,e.ref)({x:0,y:0}),N=(0,e.ref)(!1),P=null;function ae(){P=null}function oe(e){return P||=e.getBoundingClientRect(),P}let F=(0,e.shallowRef)({crosshairPos:null,crosshairIndex:null,crosshairPrice:null,hoveredIndex:null,activePaneId:null,tooltipPos:{x:0,y:0},tooltipAnchorPlacement:`right-bottom`,hoveredMarkerData:null,hoveredCustomMarker:null,isDragging:!1,isResizingPaneBoundary:!1,isHoveringPaneBoundary:!1,hoveredPaneBoundaryId:null,isHoveringRightAxis:!1}),I=(0,e.shallowRef)(null),L=(0,e.computed)(()=>{let e=k.value;return e?C.state.drawings.find(t=>t.id===e)??null:null}),se=(0,e.ref)([]),ce=(0,e.ref)({width:220,height:120}),R=(0,e.computed)(()=>{let e=g.value,t=_.value;return!e||!t?{x:0,y:0}:{x:e.offsetLeft,y:e.offsetTop}}),z=(0,e.computed)(()=>F.value.hoveredMarkerData),B=(0,e.computed)(()=>F.value.hoveredCustomMarker),le=(0,e.computed)(()=>F.value.isDragging),ue=(0,e.computed)(()=>F.value.isResizingPaneBoundary),de=(0,e.computed)(()=>F.value.isHoveringPaneBoundary),fe=(0,e.computed)(()=>F.value.hoveredPaneBoundaryId),pe=(0,e.computed)(()=>F.value.isHoveringRightAxis),me=(0,e.computed)(()=>F.value.hoveredIndex),he=(0,e.computed)(()=>F.value.crosshairIndex),ge=(0,e.computed)(()=>le.value?`grabbing`:ue.value||de.value?`ns-resize`:me.value===null?`crosshair`:`pointer`),V=(0,e.computed)(()=>{let e=F.value.hoveredIndex;if(typeof e!=`number`)return null;A.value;let t=x.value?.getData();return t&&e>=0&&e<t.length?t[e]:null}),_e=(0,e.computed)(()=>F.value.hoveredIndex),ve=(0,e.computed)(()=>F.value.tooltipPos),H=(0,e.computed)(()=>({x:ve.value.x+R.value.x,y:ve.value.y+R.value.y})),ye=(0,e.computed)(()=>({left:`${H.value.x}px`,top:`${H.value.y}px`})),U=(0,e.computed)(()=>({x:M.value.x+R.value.x,y:M.value.y+R.value.y})),be=(0,e.computed)(()=>({left:`${U.value.x}px`,top:`${U.value.y}px`})),xe=(0,e.computed)(()=>F.value.tooltipAnchorPlacement),Se=(0,e.computed)(()=>{let e=x.value?.getViewport(),t=g.value,n=e?.plotWidth??(t?t.clientWidth:0);return M.value.x+12+ce.value.width+12>n?`left-bottom`:`right-bottom`}),Ce=(0,e.computed)(()=>(A.value,x.value?.getData()??[]));function we(e){I.value?.setTool(e)}function Te(e){let t=L.value;!t||!I.value||(I.value.updateDrawingStyle(t.id,e),C.actions.bumpDrawingVersion())}function Ee(){let e=L.value;!e||!I.value||(I.value.removeDrawing(e.id),C.actions.setSelectedDrawingId(null),C.actions.bumpDrawingVersion(),C.actions.setDrawings(I.value.getDrawings()))}function De(e){x.value?.handlePointerEvent(e,{onPointerDown:(e,t)=>I.value?.onPointerDown(e,t)?(C.actions.setDrawings(I.value.getDrawings()),C.actions.bumpDrawingVersion(),!0):!1})}function Oe(e){let t=g.value;if(t){let n=oe(t);M.value={x:e.clientX-n.left,y:e.clientY-n.top}}x.value?.handlePointerEvent(e,{onPointerMove:(e,t)=>I.value?.onPointerMove(e,t)?(C.actions.setDrawings(I.value.getDrawings()),!0):!1})}function ke(e){x.value?.handlePointerEvent(e,{onPointerUp:(e,t)=>I.value?.onPointerUp(e,t)?(C.actions.setDrawings(I.value.getDrawings()),!0):!1})}function Ae(e){x.value?.handlePointerEvent(e)}function je(e){x.value?.handlePointerEvent(e)}function Me(e){x.value?.handlePointerEvent(e)}function Ne(e){x.value?.handlePointerEvent(e)}function Pe(e){x.value?.handlePointerEvent(e)}function Fe(){x.value?.handleScrollEvent()}let Ie=(0,e.ref)([]),Le=(0,e.computed)(()=>{let e=[],t=new Set;for(let n of G.value)t.has(n.indicatorId)||(t.add(n.indicatorId),e.push(n.indicatorId));return e}),Re=(0,e.computed)(()=>[...Ie.value,...Le.value]),W=(0,e.ref)({}),G=(0,e.ref)([]);function ze(){let e=O.value.main??3;return G.value.length===0?[{id:`main`,ratio:e,visible:!0,role:`price`}]:[{id:`main`,ratio:e,visible:!0,role:`price`},...G.value.map(e=>({id:e.id,ratio:O.value[e.id]??1,visible:!0,role:`indicator`}))]}function Be(e){return{...l.SUB_PANE_INDICATOR_CONFIGS[e].defaultParams}}let Ve=new Map,K=new Map;function q(e,t){let n=(0,u.createPaneTitleRendererPlugin)({paneId:e,title:t,getTitleInfo:()=>Xe(e)});x.value?.useRenderer(n),K.set(e,n.name)}function J(e){let t=K.get(e);t&&(x.value?.removeRenderer(t),K.delete(e))}function Ue(e=`VOLUME`,t){if(G.value.length>=In)return!1;let n=t??Be(e),r=x.value?.addIndicator(e,`sub`,n);return r?(q(r,e),!0):!1}function We(e){J(e),x.value?.removeIndicator(e)}function Ge(){for(let e of G.value)x.value?.removeIndicator(e.id),J(e.id);Ve.clear(),K.clear()}function Ke(){let e=d.semanticConfig,t=x.value;if(!t)return;let n=e.indicators?.main;if(n)for(let e of n)e.enabled&&t.enableMainIndicator(e.type,e.params)}function qe(){let e=x.value?.getSubPaneEntries()??[];K.clear();for(let t of e){let{paneId:e,indicatorId:n,params:r}=t,i=e.match(/^(.+)_(\d+)$/);if(i){let[,e,t]=i,n=parseInt(t,10);n>=(Ve.get(e)??0)&&Ve.set(e,n+1)}q(e,n)}}function Je(e,t){let n=Be(t);J(e),x.value?.replaceSubPaneIndicator(e,t,n),q(e,t)}let Ye=new Map;function Xe(e){let t=G.value.find(t=>t.id===e);if(!t)return null;let n=x.value?.getData();if(!n||n.length===0)return null;let r=he.value,i=n.length,a=Ye.get(e);if(a&&a.idx===r&&a.dataLen===i)return a.result;let o=l.SUB_PANE_INDICATOR_CONFIGS[t.indicatorId],s=t.params,c=x.value?.plugin,u=c?o.getTitleInfo(n,r,s,c,e):null;return Ye.set(e,{idx:r,dataLen:i,result:u}),u}function Ze(e,t){let n=x.value;if(n){if([`MA`,`BOLL`,`EXPMA`,`ENE`,`WMA`,`DEMA`,`TEMA`,`HMA`,`KAMA`,`SAR`,`SUPERTREND`,`KELTNER`,`DONCHIAN`,`ICHIMOKU`,`PIVOT`,`FIB`,`STRUCTURE`,`ZONES`].includes(e)){let r=Ie.value.find(t=>t===e);if(t&&!r)n.addIndicator(e,`main`,W.value[e]);else if(!t&&r){let t=e.toUpperCase();n.removeIndicator(t)}return}if(l.SUB_PANE_INDICATORS.includes(e))if(t){if(G.value.find(t=>t.indicatorId===e)||G.value.length>=In)return;let t=n.addIndicator(e,`sub`,W.value[e]);if(t)q(t,e);else if(G.value.length>0){let t=G.value[G.value.length-1];Je(t.id,e)}}else G.value.filter(t=>t.indicatorId===e).forEach(e=>{n.removeIndicator(e.id),J(e.id)})}}function Qe(e,t){if(e===`MA`||e===`BOLL`||e===`EXPMA`||e===`ENE`){x.value?.updateMainIndicatorParams(e,t);return}if(l.SUB_PANE_INDICATORS.includes(e)){G.value.filter(t=>t.indicatorId===e).forEach(e=>{x.value?.updateSubPaneParams(e.id,t)});return}}function $e(e){if(!e.length||G.value.length<=1)return;let t=e.filter(e=>l.SUB_PANE_INDICATORS.includes(e));if(!t.length)return;let n=new Map(G.value.map(e=>[e.indicatorId,e])),r=[];for(let e of t){let t=n.get(e);t&&(r.push(t),n.delete(e))}if(r.length===0)return;for(let e of G.value)n.has(e.indicatorId)&&(r.push(e),n.delete(e.indicatorId));let i=G.value.map(e=>e.id),a=r.map(e=>e.id);if(i.join(`|`)===a.join(`|`))return;G.value=r;let o=x.value;o&&o.updatePaneLayout(ze())}let et=(0,e.computed)(()=>d.rightAxisWidth+d.priceLabelWidth),tt=C.computed.totalWidth;function Y(){let e=g.value,t=x.value;if(!e||!t)return;let n=t.getData()?.length??0;if(n===0)return;let r=t.getCurrentDpr(),{unitPx:i,startXPx:a}=(0,c.getPhysicalKLineConfig)(E.value,D.value,r),o=(a+n*i)/r,s=Math.max(0,e.scrollWidth-e.clientWidth),l=Math.min(s,Math.max(0,o-e.clientWidth));e.scrollLeft=Math.round(l*r)/r,j()}function X(e,t){let n=x.value;n&&n.zoomToLevel(e,t)}n({scheduleRender:j,scrollToRight:Y,addSubPane:Ue,removeSubPane:We,switchSubIndicator:Je,clearAllSubPanes:Ge,get plugin(){return x.value?.plugin},zoomToLevel:X,zoomIn:e=>X(T.value+1,e),zoomOut:e=>X(T.value-1,e),getZoomLevel:()=>T.value,getZoomLevelCount:()=>x.value?.getZoomLevelCount()??10});function rt(e){let t=e=>{e.preventDefault();let t=x.value;t&&t.handleWheelEvent(e)};return e.addEventListener(`wheel`,t,{passive:!1}),t}function at(e,t,n,r){return new a.Chart({container:e,canvasLayer:t,rightAxisLayer:n,xAxisCanvas:r},{yPaddingPx:d.yPaddingPx,rightAxisWidth:d.rightAxisWidth,bottomAxisHeight:d.bottomAxisHeight,priceLabelWidth:d.priceLabelWidth,minKWidth:d.minKWidth,maxKWidth:d.maxKWidth,panes:[{id:`main`,ratio:1}],paneGap:0,zoomLevels:d.zoomLevels,initialZoomLevel:d.initialZoomLevel})}function ot(t){t.setOnPaneLayoutChange(()=>{ae();let e=t.getPaneRenderers(),n=g.value&&parseInt(getComputedStyle(g.value).borderTopWidth)||0;se.value=e.slice(0,-1).map(e=>{let t=e.getPane();return{id:t.id,top:t.top+t.height+n}})});let n=t.paneRatios.subscribe(()=>{let e=t.paneRatios.peek();C.actions.setPaneRatios({...e})}),r=t.viewport.subscribe(()=>{let n=t.viewport.peek();C.state.viewportDpr!==n.dpr&&C.actions.setViewportDpr(n.dpr),C.state.viewWidth!==n.plotWidth&&C.actions.setViewWidth(n.plotWidth),(C.state.zoomLevel!==n.zoomLevel||C.state.kWidth!==n.kWidth||C.state.kGap!==n.kGap)&&C.actions.setZoomState(n.zoomLevel,n.kWidth,n.kGap);let r=n.desiredScrollLeft;r!==void 0&&r!==g.value?.scrollLeft&&(ae(),(0,e.nextTick)(()=>{let e=g.value;if(!e)return;let n=Math.max(0,e.scrollWidth-e.clientWidth),i=Math.min(Math.max(0,r),n),a=t.getCurrentDpr();e.scrollLeft=Math.round(i*a)/a}))}),i=t.data.subscribe(()=>{let e=t.data.peek();C.actions.setDataLength(e.length),C.actions.bumpDataVersion()}),a=t.theme.subscribe(()=>{w.value=t.theme.peek()}),o=t.indicators.subscribe(()=>{let e=t.indicators.peek(),n=e.filter(e=>e.role===`main`).map(e=>e.definitionId);Ie.value=n;let r={...W.value};for(let t of e)t.role===`main`&&t.params&&Object.keys(t.params).length>0&&(r[t.definitionId]={...t.params});t.updateRendererConfig(`mainIndicatorLegend`,{indicators:{MA:{enabled:n.includes(`MA`),params:r.MA||{}},BOLL:{enabled:n.includes(`BOLL`),params:r.BOLL||{}},EXPMA:{enabled:n.includes(`EXPMA`),params:r.EXPMA||{}},ENE:{enabled:n.includes(`ENE`),params:r.ENE||{}}}}),W.value=r}),s=t.subPanes.subscribe(()=>{let e=t.subPanes.peek(),n=new Set(e.map(e=>e.paneId)),r=G.value.filter(e=>n.has(e.id)),i=new Set(r.map(e=>e.id));for(let t of e)i.has(t.paneId)||r.push({id:t.paneId,indicatorId:t.indicatorId,params:t.params});G.value=r;let a={...W.value};for(let t of e)t.params&&Object.keys(t.params).length>0&&(a[t.indicatorId]={...t.params});W.value=a});(0,e.onUnmounted)(()=>{r(),i(),n(),a(),o(),s()})}function st(e){let t=b.value?.getSettings()??{showVolumePriceMarkers:!0};if(e.updateSettings(t),t.performanceTest10kKlines){let t=te();console.time(`updateData-10k`),e.updateData(t),console.timeEnd(`updateData-10k`)}}function ct(e){I.value=new f.DrawingInteractionController(e),I.value.setCallbacks({onDrawingCreated:e=>{C.actions.setDrawings([...C.state.drawings,e]),C.actions.setSelectedDrawingId(e.id)},onToolChange:()=>{},onDrawingSelected:e=>{C.actions.setSelectedDrawingId(e?.id??null)}})}function lt(e){e.interaction.setTooltipAnchorPositioning(N.value),e.interaction.setOnInteractionChange(e=>{F.value=e}),e.interaction.setOnPinchZoom((t,n)=>{if(!e)return;let r=g.value;if(!r)return;let i=n-r.getBoundingClientRect().left;e.handlePinchZoom(t,i)}),F.value=e.interaction.getInteractionSnapshot(),C.actions.setViewportDpr(e.getCurrentDpr()),e.resize()}function ut(t){(0,i.__setDataFetcher)(d.dataFetcher),S.value=new i.SemanticChartController(t),S.value.on(`config:error`,e=>{console.error(`Semantic config error:`,e)}),S.value.on(`config:ready`,()=>{Ke(),qe(),(0,e.nextTick)(()=>Y())}),S.value.applyConfig(d.semanticConfig).then(e=>{e&&!e.success&&console.error(`Semantic config apply failed:`,e.errors)})}return(0,e.onMounted)(()=>{N.value=!1;let e=g.value,t=m.value,n=h.value,r=p.value;if(!e||!t||!n||!r)return;let i=rt(e),a=at(e,t,n,r);x.value=a,ot(a),a.applyRenderState(C.state.kWidth,C.state.kGap,C.state.zoomLevel),st(a),ct(a),lt(a),ut(a),a.__onWheel=i}),(0,e.onUnmounted)(()=>{let e=x.value;if(e){let t=e.__onWheel,n=g.value;t&&n&&n.removeEventListener(`wheel`,t),e.destroy()}x.value=null,I.value=null}),(0,e.watch)(()=>d.yPaddingPx,e=>{x.value?.updateOptions({yPaddingPx:e})}),(0,e.watch)(()=>d.semanticConfig,async(e,t)=>{if(e&&e!==t){let t=await S.value?.applyConfig(e);t&&!t.success&&console.error(`Semantic config apply failed:`,t.errors)}},{deep:!0}),(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{class:`chart-wrapper`,"data-theme":w.value},[(0,e.createElementVNode)(`div`,{class:(0,e.normalizeClass)([`chart-stage`,{"is-dragging":le.value,"is-resizing-pane":ue.value,"is-hovering-pane-separator":de.value,"is-hovering-right-axis":pe.value,"is-hovering-kline":me.value!==null}])},[(0,e.createVNode)(Nn,{ref_key:`toolbarRef`,ref:b,"is-fullscreen":t.isFullscreen,onSelectTool:we,onToggleFullscreen:r[0]||=e=>n.$emit(`toggleFullscreen`),onZoomIn:r[1]||=e=>X(T.value+1),onZoomOut:r[2]||=e=>X(T.value-1),onSettingsChange:ee},null,8,[`is-fullscreen`]),(0,e.createElementVNode)(`div`,{class:`chart-main`,ref_key:`chartMainRef`,ref:_},[(0,e.createElementVNode)(`div`,Fn,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(se.value,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:t.id,class:(0,e.normalizeClass)([`pane-separator-line`,{"is-active":fe.value===t.id}]),style:(0,e.normalizeStyle)({top:`${t.top}px`})},null,6))),128))]),(0,e.createElementVNode)(`div`,{ref_key:`tooltipLayerRef`,ref:v,class:`tooltip-layer`},null,512),(0,e.createElementVNode)(`div`,{class:`chart-container`,style:(0,e.normalizeStyle)({cursor:ge.value}),ref_key:`containerRef`,ref:g,onScrollPassive:Fe,onPointerdown:De,onPointermove:Oe,onPointerup:ke,onPointerleave:Ae},[(0,e.createElementVNode)(`div`,{class:`scroll-content`,style:(0,e.normalizeStyle)({width:(0,e.unref)(tt)+`px`})},[(0,e.createElementVNode)(`div`,{class:`canvas-layer`,ref_key:`canvasLayerRef`,ref:m},[(0,e.createElementVNode)(`canvas`,{class:`x-axis-canvas`,ref_key:`xAxisCanvasRef`,ref:p},null,512),L.value?((0,e.openBlock)(),(0,e.createBlock)(y,{key:0,drawing:L.value,onUpdateStyle:Te,onDelete:Ee},null,8,[`drawing`])):(0,e.createCommentVNode)(``,!0)],512)],4)],36),v.value?((0,e.openBlock)(),(0,e.createBlock)(e.Teleport,{key:0,to:v.value},[V.value?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:0,class:(0,e.normalizeClass)([`tooltip-anchor kline-tooltip-anchor`,{"use-anchor":N.value}]),style:(0,e.normalizeStyle)(ye.value)},null,6)):(0,e.createCommentVNode)(``,!0),z.value||B.value?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:1,class:(0,e.normalizeClass)([`tooltip-anchor marker-tooltip-anchor`,{"use-anchor":N.value}]),style:(0,e.normalizeStyle)(be.value)},null,6)):(0,e.createCommentVNode)(``,!0),V.value?((0,e.openBlock)(),(0,e.createBlock)(nt,{key:2,k:V.value,index:_e.value,data:Ce.value,pos:H.value,"set-el":re,"use-anchor":N.value,"anchor-placement":xe.value},null,8,[`k`,`index`,`data`,`pos`,`use-anchor`,`anchor-placement`])):(0,e.createCommentVNode)(``,!0),z.value||B.value?((0,e.openBlock)(),(0,e.createBlock)(it,{key:3,marker:z.value||B.value,pos:U.value,"use-anchor":N.value,"anchor-placement":Se.value,"set-el":ie},null,8,[`marker`,`pos`,`use-anchor`,`anchor-placement`])):(0,e.createCommentVNode)(``,!0)],8,[`to`])):(0,e.createCommentVNode)(``,!0),(0,e.createElementVNode)(`div`,{class:`right-axis-host`,ref_key:`rightAxisLayerRef`,ref:h,style:(0,e.normalizeStyle)({width:et.value+`px`}),onPointerdown:je,onPointermove:Me,onPointerup:Ne,onPointerleave:Pe},null,36)],512)],2),(0,e.createVNode)(He,{"active-indicators":Re.value,"indicator-params":W.value,onToggle:Ze,onUpdateParams:Qe,onReorderSubIndicators:$e},null,8,[`active-indicators`,`indicator-params`])],8,Pn))}}),[[`__scopeId`,`data-v-b0cae9be`]]),Rn={name:`@363045841yyt/klinechart`,version:`0.7.5`,description:`Vue 3 bindings for @363045841yyt/klinechart-core. Idiomatic composables, SFC components.`,license:`MIT`,repository:{type:`git`,url:`https://github.com/363045841/KLineChartQuant.git`},bugs:`https://github.com/363045841/KLineChartQuant/issues`,homepage:`https://363045841.github.io/KLineChartQuant/`,type:`module`,engines:{node:`^20.19.0 || >=22.12.0`},sideEffects:!1,main:`./dist/index.js`,module:`./dist/index.js`,types:`./dist/index.d.ts`,exports:{".":{import:{types:`./dist/index.d.ts`,default:`./dist/index.js`},require:{types:`./dist/index.d.cts`,default:`./dist/index.cjs`}},"./style.css":`./dist/klinechart.css`},files:[`dist`,`src`],publishConfig:{access:`public`},scripts:{dev:`vite --config preview/vite.config.ts`,build:`vite build && node -e "require('fs').copyFileSync('dist/index.d.ts','dist/index.d.cts')"`,postbuild:`node -e "require('fs').copyFileSync('dist/index.d.ts','dist/index.d.cts')"`,test:`vitest run`,"test:watch":`vitest`,size:`size-limit`,"lint:publish":`publint --strict .`,prepublishOnly:`npm run build`,"lint:types":`attw --pack .`},"size-limit":[{name:`vue (entry, pre-build src measurement)`,path:`src/index.ts`,limit:`8 KB`,gzip:!0,ignore:[`vue`,`@363045841yyt/klinechart-core`]}],peerDependencies:{"@363045841yyt/klinechart-core":`^`,vue:`^3.4.0`},devDependencies:{"@arethetypeswrong/cli":`^0.18.3`,"@size-limit/preset-small-lib":`^12.1.0`,"@vitejs/plugin-vue":`^6.0.0`,"@vue/test-utils":`^2.4.10`,jsdom:`^29.1.1`,publint:`^0.3.0`,"size-limit":`^12.1.0`,typescript:`~6.0.3`,"unplugin-icons":`^23.0.1`,vite:`^8.0.14`,"vite-plugin-babel":`^1.3.2`,"vite-plugin-dts":`^5.0.1`,vitest:`^4.1.5`,vue:`^3.5.0`}}.version,zn=null;function Bn(e){zn=e}function Vn(e){if(e.container==null)throw Error("[@363045841yyt/klinechart] createChart: `container` is required and must be a non-null HTMLElement");if(zn===null)throw Error(`[@363045841yyt/klinechart] createChart: no ChartController factory registered. Call __setControllerFactory(...) before mounting (the core package wires this in production).`);return zn(e)}function $(t){let n=(0,e.shallowRef)(t.peek());return(0,e.onScopeDispose)(t.subscribe(()=>{n.value=t.peek()})),n}function Hn(t,n){let r=(0,e.shallowRef)(null),i=e=>{e==null||r.value!=null||(r.value=Vn({...n,container:e}))};i(t.value);let a=(0,e.watch)(t,e=>{i(e)},{immediate:!0,flush:`post`}),o=()=>{a();let e=r.value;e!=null&&(e.dispose(),r.value=null)};return(0,e.onScopeDispose)(o),(0,e.onBeforeUnmount)(o),{chart:r}}function Un(t){let n=(0,e.shallowRef)(t.indicators.peek());return(0,e.onScopeDispose)(t.indicators.subscribe(()=>{n.value=t.indicators.peek()})),{indicators:n,add:t.addIndicator.bind(t),remove:t.removeIndicator.bind(t),updateParams:t.updateIndicatorParams.bind(t)}}function Wn(t){let n=(0,e.shallowRef)(t.interactionState.peek());return(0,e.onScopeDispose)(t.interactionState.subscribe(()=>{n.value=t.interactionState.peek()})),n}function Gn(t){let n=(0,e.shallowRef)(t.paneRatios.peek());return(0,e.onScopeDispose)(t.paneRatios.subscribe(()=>{n.value=t.paneRatios.peek()})),n}function Kn(t){let n=(0,e.shallowRef)(t.viewport.peek());return(0,e.onScopeDispose)(t.viewport.subscribe(()=>{n.value=t.viewport.peek()})),n}function qn(n){let r=(0,t.createIndicatorSelectorController)({catalog:n.catalog});(0,e.onScopeDispose)(()=>r.dispose());let i=$(r.filteredMain),a=$(r.filteredSub),o=$(r.menuOpen),s=$(r.searchQuery);function c(e){let t=n.catalog.find(t=>t.id===e);return t===void 0?null:n.addIndicator(e,t.role)}function l(e){return n.removeIndicator(e)}function u(e){return n.indicators.peek().some(t=>t.definitionId===e)}return{catalog:n.catalog,filteredMain:i,filteredSub:a,menuOpen:o,searchQuery:s,add:c,remove:l,openMenu:()=>r.openMenu(),closeMenu:()=>r.closeMenu(),toggleMenu:()=>r.toggleMenu(),setSearchQuery:e=>r.setSearchQuery(e),isActive:u}}var Jn=(0,e.defineComponent)({name:`KLineChart`,props:{data:{type:Array,required:!0},initialZoomLevel:{type:Number,default:3},zoomLevels:{type:Number,default:20},theme:{type:String,default:`light`},containerClass:{type:String,default:``}},emits:{ready:e=>!0,zoomLevelChange:(e,t)=>!0},setup(t,{emit:n,expose:r}){let i=(0,e.shallowRef)(null),a=(0,e.effectScope)(),o=(0,e.shallowRef)(null);(0,e.onMounted)(()=>{let r=i.value;r!=null&&(a.run(()=>{if(o.value=Vn({container:r,data:t.data,initialZoomLevel:t.initialZoomLevel,zoomLevels:t.zoomLevels,theme:t.theme}),o.value!=null){n(`ready`,o.value);let t=o.value,r=()=>{let e=t.viewport.peek();n(`zoomLevelChange`,e.zoomLevel,e.kWidth)};r(),(0,e.onScopeDispose)(t.viewport.subscribe(r))}}),(0,e.watch)(()=>t.data,e=>{o.value?.setData(e)}),(0,e.watch)(()=>t.theme,e=>{o.value?.setTheme(e)}))}),(0,e.onUnmounted)(()=>{o.value?.dispose(),o.value=null,a.stop()}),r({getController:()=>o.value,handlePointerEvent:(e,t)=>o.value?.handlePointerEvent(e,t)??!1,handleWheelEvent:e=>o.value?.handleWheelEvent(e),handleScrollEvent:()=>o.value?.handleScrollEvent(),zoomToLevel:(e,t)=>o.value?.zoomToLevel(e,t),zoomIn:e=>o.value?.zoomIn(e),zoomOut:e=>o.value?.zoomOut(e),addIndicator:(e,t,n)=>o.value?.addIndicator(e,t,n)??null,removeIndicator:e=>o.value?.removeIndicator(e)??!1,setTheme:e=>o.value?.setTheme(e),setData:e=>o.value?.setData(e)});let s=e=>{i.value=e??null};return()=>(0,e.h)(`div`,{ref:s,class:[`klinechart-quant-root`,t.containerClass].filter(Boolean).join(` `),style:{width:`100%`,height:`100%`}})}}),Yn={install(e){e.component(`KLineChart`,Jn)}};Bn(t.createChartController),Object.defineProperty(exports,"CORE_VERSION",{enumerable:!0,get:function(){return t.VERSION}}),exports.DrawingStyleToolbar=y,exports.IndicatorParams=M,exports.IndicatorSelector=He,exports.KLineChart=Jn,exports.KLineChartVue=Ln,exports.KLineTooltip=nt,exports.KMapPlugin=Yn,exports.LeftToolbar=Nn,exports.MarkerTooltip=it,exports.VERSION=Rn,exports.__setControllerFactory=Bn,exports.coreSignalToVueRef=$,exports.createChart=Vn,exports.useChart=Hn,exports.useIndicatorSelector=qn,exports.useIndicators=Un,exports.useInteractionState=Wn,exports.usePaneRatios=Gn,exports.useViewport=Kn;
|
package/dist/index.d.cts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { App, PropType, Ref } from 'vue';
|
|
2
2
|
import { Signal } from '../../core/src/reactivity/index.ts';
|
|
3
|
-
import { ChartController, ChartControllerFactory, ChartMountOptions, ChartViewport, IndicatorInstance, InteractionSnapshot, KLineData } from '../../core/src';
|
|
3
|
+
import { ChartController, ChartControllerFactory, ChartMountOptions, ChartViewport, IndicatorDefinition, IndicatorInstance, InteractionSnapshot, KLineData } from '../../core/src';
|
|
4
4
|
export type { ChartController, ChartMountOptions, ChartViewport, } from '../../core/src';
|
|
5
5
|
export { DrawingStyleToolbar, IndicatorParams, IndicatorSelector, KLineChartVue, KLineTooltip, LeftToolbar, MarkerTooltip, } from './components/index';
|
|
6
6
|
/**
|
|
@@ -59,6 +59,27 @@ export declare function usePaneRatios(controller: ChartController): Ref<Readonly
|
|
|
59
59
|
* Bridge the Chart's viewport signal into a Vue shallowRef.
|
|
60
60
|
*/
|
|
61
61
|
export declare function useViewport(controller: ChartController): Ref<ChartViewport>;
|
|
62
|
+
/**
|
|
63
|
+
* Bridge the indicator selector signals into Vue refs.
|
|
64
|
+
*
|
|
65
|
+
* Creates an internal IndicatorSelectorController for menu/search/filter UI
|
|
66
|
+
* state (catalog from `controller.catalog`), and delegates add/remove to the
|
|
67
|
+
* ChartController engine methods.
|
|
68
|
+
*/
|
|
69
|
+
export declare function useIndicatorSelector(controller: ChartController): {
|
|
70
|
+
catalog: ReadonlyArray<IndicatorDefinition>;
|
|
71
|
+
filteredMain: Ref<ReadonlyArray<IndicatorDefinition>>;
|
|
72
|
+
filteredSub: Ref<ReadonlyArray<IndicatorDefinition>>;
|
|
73
|
+
menuOpen: Ref<boolean>;
|
|
74
|
+
searchQuery: Ref<string>;
|
|
75
|
+
add: (definitionId: string) => string | null;
|
|
76
|
+
remove: (instanceId: string) => boolean;
|
|
77
|
+
openMenu: () => void;
|
|
78
|
+
closeMenu: () => void;
|
|
79
|
+
toggleMenu: () => void;
|
|
80
|
+
setSearchQuery: (q: string) => void;
|
|
81
|
+
isActive: (definitionId: string) => boolean;
|
|
82
|
+
};
|
|
62
83
|
export declare const KLineChart: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
|
|
63
84
|
data: {
|
|
64
85
|
type: PropType<ReadonlyArray<KLineData>>;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { App, PropType, Ref } from 'vue';
|
|
2
2
|
import { Signal } from '../../core/src/reactivity/index.ts';
|
|
3
|
-
import { ChartController, ChartControllerFactory, ChartMountOptions, ChartViewport, IndicatorInstance, InteractionSnapshot, KLineData } from '../../core/src';
|
|
3
|
+
import { ChartController, ChartControllerFactory, ChartMountOptions, ChartViewport, IndicatorDefinition, IndicatorInstance, InteractionSnapshot, KLineData } from '../../core/src';
|
|
4
4
|
export type { ChartController, ChartMountOptions, ChartViewport, } from '../../core/src';
|
|
5
5
|
export { DrawingStyleToolbar, IndicatorParams, IndicatorSelector, KLineChartVue, KLineTooltip, LeftToolbar, MarkerTooltip, } from './components/index';
|
|
6
6
|
/**
|
|
@@ -59,6 +59,27 @@ export declare function usePaneRatios(controller: ChartController): Ref<Readonly
|
|
|
59
59
|
* Bridge the Chart's viewport signal into a Vue shallowRef.
|
|
60
60
|
*/
|
|
61
61
|
export declare function useViewport(controller: ChartController): Ref<ChartViewport>;
|
|
62
|
+
/**
|
|
63
|
+
* Bridge the indicator selector signals into Vue refs.
|
|
64
|
+
*
|
|
65
|
+
* Creates an internal IndicatorSelectorController for menu/search/filter UI
|
|
66
|
+
* state (catalog from `controller.catalog`), and delegates add/remove to the
|
|
67
|
+
* ChartController engine methods.
|
|
68
|
+
*/
|
|
69
|
+
export declare function useIndicatorSelector(controller: ChartController): {
|
|
70
|
+
catalog: ReadonlyArray<IndicatorDefinition>;
|
|
71
|
+
filteredMain: Ref<ReadonlyArray<IndicatorDefinition>>;
|
|
72
|
+
filteredSub: Ref<ReadonlyArray<IndicatorDefinition>>;
|
|
73
|
+
menuOpen: Ref<boolean>;
|
|
74
|
+
searchQuery: Ref<string>;
|
|
75
|
+
add: (definitionId: string) => string | null;
|
|
76
|
+
remove: (instanceId: string) => boolean;
|
|
77
|
+
openMenu: () => void;
|
|
78
|
+
closeMenu: () => void;
|
|
79
|
+
toggleMenu: () => void;
|
|
80
|
+
setSearchQuery: (q: string) => void;
|
|
81
|
+
isActive: (definitionId: string) => boolean;
|
|
82
|
+
};
|
|
62
83
|
export declare const KLineChart: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
|
|
63
84
|
data: {
|
|
64
85
|
type: PropType<ReadonlyArray<KLineData>>;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAUH,KAAK,GAAG,EACR,KAAK,QAAQ,EACb,KAAK,GAAG,EACX,MAAM,KAAK,CAAA;AACZ,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0CAA0C,CAAA;AACtE,OAAO,KAAK,EACR,eAAe,EACf,sBAAsB,EACtB,iBAAiB,EACjB,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,SAAS,EACZ,MAAM,+BAA+B,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAUH,KAAK,GAAG,EACR,KAAK,QAAQ,EACb,KAAK,GAAG,EACX,MAAM,KAAK,CAAA;AACZ,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0CAA0C,CAAA;AACtE,OAAO,KAAK,EACR,eAAe,EACf,sBAAsB,EACtB,iBAAiB,EACjB,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,SAAS,EACZ,MAAM,+BAA+B,CAAA;AAKtC,YAAY,EACR,eAAe,EACf,iBAAiB,EACjB,aAAa,GAChB,MAAM,+BAA+B,CAAA;AAMtC,OAAO,EACH,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,WAAW,EACX,aAAa,GAChB,MAAM,oBAAoB,CAAA;AAY3B;;;;GAIG;AACH,wBAAgB,sBAAsB,CAClC,OAAO,EAAE,sBAAsB,GAAG,IAAI,GACvC,IAAI,CAEN;AAMD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,iBAAiB,GAAG,eAAe,CAapE;AASD;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAO/D;AAMD;;;;;GAKG;AACH,wBAAgB,QAAQ,CACpB,YAAY,EAAE,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,EACrC,IAAI,EAAE,IAAI,CAAC,iBAAiB,EAAE,WAAW,CAAC,GAC3C;IAAE,KAAK,EAAE,GAAG,CAAC,eAAe,GAAG,IAAI,CAAC,CAAA;CAAE,CAoCxC;AAMD;;GAEG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,eAAe,GAAG;IACxD,UAAU,EAAE,GAAG,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAA;IACjD,GAAG,EAAE,eAAe,CAAC,cAAc,CAAC,CAAA;IACpC,MAAM,EAAE,eAAe,CAAC,iBAAiB,CAAC,CAAA;IAC1C,YAAY,EAAE,eAAe,CAAC,uBAAuB,CAAC,CAAA;CACzD,CAeA;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAC/B,UAAU,EAAE,eAAe,GAC5B,GAAG,CAAC,mBAAmB,CAAC,CAO1B;AAED;;GAEG;AACH,wBAAgB,aAAa,CACzB,UAAU,EAAE,eAAe,GAC5B,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CASvC;AAED;;GAEG;AACH,wBAAgB,WAAW,CACvB,UAAU,EAAE,eAAe,GAC5B,GAAG,CAAC,aAAa,CAAC,CAOpB;AAMD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,eAAe,GAAG;IAC/D,OAAO,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAA;IAC3C,YAAY,EAAE,GAAG,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC,CAAA;IACrD,WAAW,EAAE,GAAG,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC,CAAA;IACpD,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;IACtB,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACxB,GAAG,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAA;IAC5C,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAA;IACvC,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,SAAS,EAAE,MAAM,IAAI,CAAA;IACrB,UAAU,EAAE,MAAM,IAAI,CAAA;IACtB,cAAc,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IACnC,QAAQ,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAA;CAC9C,CA0CA;AAWD,eAAO,MAAM,UAAU;;cAII,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;;;;;;;;;;;;cAMjC,QAAQ,CAAC,OAAO,GAAG,MAAM,CAAC;;;IAG9C,gDAAgD;;;;;;;;yBAI3B,eAAe;8BAEV,MAAM,WAAW,MAAM;;;cAf9B,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;;;;;;;;;;;;cAMjC,QAAQ,CAAC,OAAO,GAAG,MAAM,CAAC;;;IAG9C,gDAAgD;;;;;;;;;;;;;4EAgGtD,CAAA;AAUF,eAAO,MAAM,UAAU;iBACN,GAAG,GAAG,IAAI;CAG1B,CAAA;AAeD,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA"}
|