@363045841yyt/klinechart 0.2.11 → 0.2.13

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.
@@ -1,2 +1,2 @@
1
- .kline-tooltip[data-v-95daa55c]{z-index:10;color:#000000c7;pointer-events:none;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#ffffffeb;border:1px solid #0000001f;border-radius:8px;min-width:200px;max-width:260px;padding:10px 12px;font-size:12px;line-height:1.4;position:absolute;box-shadow:0 6px 18px #0000001f}.kline-tooltip__title[data-v-95daa55c]{justify-content:space-between;gap:10px;margin-bottom:6px;font-weight:600;display:flex}.kline-tooltip__grid[data-v-95daa55c]{grid-template-columns:1fr;gap:2px;display:grid}.kline-tooltip__grid .row[data-v-95daa55c]{justify-content:space-between;gap:10px;display:flex}.kline-tooltip__grid .row span[data-v-95daa55c]:first-child{color:#0000008f}.marker-tooltip[data-v-dd43da4f]{z-index:10;color:#000000c7;pointer-events:none;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#ffffffeb;border:1px solid #0000001f;border-radius:8px;min-width:180px;max-width:260px;padding:10px 12px;font-size:12px;line-height:1.4;position:absolute;box-shadow:0 6px 18px #0000001f}.marker-tooltip__title[data-v-dd43da4f]{justify-content:space-between;gap:10px;margin-bottom:6px;font-weight:600;display:flex}.marker-tooltip__content[data-v-dd43da4f]{grid-template-columns:1fr;gap:2px;display:grid}.marker-tooltip__content .row[data-v-dd43da4f]{justify-content:space-between;gap:10px;display:flex}.marker-tooltip__content .row span[data-v-dd43da4f]:first-child{color:#0000008f}.params-overlay[data-v-730f2212]{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:1000;background:#0000004d;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.indicator-params[data-v-730f2212]{background:#fff;border:1px solid #e0e0e0;border-radius:12px;width:90vw;min-width:340px;max-width:420px;overflow:hidden;box-shadow:0 8px 40px #00000026}.params-header[data-v-730f2212]{background:#f8f8f8;border-bottom:1px solid #e8e8e8;justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.header-left[data-v-730f2212]{align-items:baseline;gap:8px;display:flex}.header-right[data-v-730f2212]{align-items:center;gap:8px;display:flex}.params-title[data-v-730f2212]{color:#1a1a1a;letter-spacing:.2px;font-size:14px;font-weight:600}.params-subtitle[data-v-730f2212]{color:#999;font-size:11px}.toggle-desc-btn[data-v-730f2212]{cursor:pointer;color:#888;background:#fff;border:1px solid #e0e0e0;border-radius:6px;justify-content:center;align-items:center;width:28px;height:28px;padding:0;transition:all .2s;display:flex}.toggle-desc-btn[data-v-730f2212]:hover{color:#555;background:#f0f0f0;border-color:#ccc}.toggle-desc-btn.active[data-v-730f2212]{color:#fff;background:#1a1a1a;border-color:#1a1a1a}.toggle-desc-btn svg[data-v-730f2212]{width:14px;height:14px}.params-close[data-v-730f2212]{cursor:pointer;color:#888;background:#fff;border:1px solid #e0e0e0;border-radius:6px;justify-content:center;align-items:center;width:26px;height:26px;padding:0;transition:background .15s,color .15s,border-color .15s;display:flex}.params-close[data-v-730f2212]:hover{color:#333;background:#f0f0f0;border-color:#ccc}.params-close svg[data-v-730f2212]{width:13px;height:13px}.indicator-description[data-v-730f2212]{background:#f0f7ff;border-bottom:1px solid #d6e8f5;padding:12px 20px}.indicator-description p[data-v-730f2212]{color:#2c5282;margin:0;font-size:12px;line-height:1.6}.params-body[data-v-730f2212]{flex-direction:column;gap:10px;padding:16px 20px;display:flex}.param-item[data-v-730f2212]{background:#f8f8f8;border:1px solid #e8e8e8;border-radius:8px;padding:10px 14px;transition:border-color .2s}.param-item[data-v-730f2212]:has(.param-input:focus){border-color:#bbb}.param-item.has-desc[data-v-730f2212]{padding:10px 14px 8px}.param-header[data-v-730f2212]{justify-content:space-between;align-items:center;gap:16px;display:flex}.param-label[data-v-730f2212]{flex-direction:column;gap:3px;display:flex}.param-label-text[data-v-730f2212]{color:#333;font-size:13px;font-weight:500}.param-range[data-v-730f2212]{color:#999;font-size:11px}.param-description[data-v-730f2212]{color:#666;border-top:1px dashed #e0e0e0;margin-top:8px;padding-top:8px;font-size:11px;line-height:1.5}.input-wrapper[data-v-730f2212]{background:#fff;border:1px solid #d0d0d0;border-radius:7px;align-items:stretch;height:32px;transition:border-color .2s;display:flex;overflow:hidden}.input-wrapper[data-v-730f2212]:focus-within{border-color:#999}.stepper-btn[data-v-730f2212]{cursor:pointer;color:#666;background:#f0f0f0;border:none;flex-shrink:0;justify-content:center;align-items:center;width:28px;font-size:15px;font-weight:400;line-height:1;transition:background .15s,color .15s;display:flex}.stepper-btn[data-v-730f2212]:hover:not(:disabled){color:#333;background:#e0e0e0}.stepper-btn[data-v-730f2212]:disabled{color:#ccc;cursor:not-allowed}.param-input[data-v-730f2212]{text-align:center;color:#1a1a1a;appearance:textfield;background:0 0;border:none;border-left:1px solid #e8e8e8;border-right:1px solid #e8e8e8;width:60px;font-size:13px;font-weight:600}.param-input[data-v-730f2212]::-webkit-inner-spin-button{-webkit-appearance:none}.param-input[data-v-730f2212]::-webkit-outer-spin-button{-webkit-appearance:none}.param-input[data-v-730f2212]:focus{outline:none}.params-footer[data-v-730f2212]{background:#f8f8f8;border-top:1px solid #e8e8e8;justify-content:space-between;align-items:center;padding:12px 20px;display:flex}.footer-right[data-v-730f2212]{gap:8px;display:flex}.params-btn[data-v-730f2212]{cursor:pointer;border:1px solid #0000;border-radius:7px;align-items:center;gap:5px;padding:6px 14px;font-size:13px;font-weight:500;line-height:1.4;transition:all .15s;display:flex}.params-btn svg[data-v-730f2212]{flex-shrink:0;width:12px;height:12px}.params-btn.reset[data-v-730f2212]{color:#666;background:0 0;border-color:#d0d0d0}.params-btn.reset[data-v-730f2212]:hover{color:#e74c3c;background:#e74c3c14;border-color:#c0392b}.params-btn.cancel[data-v-730f2212]{color:#666;background:0 0;border-color:#d0d0d0}.params-btn.cancel[data-v-730f2212]:hover{color:#333;background:#f0f0f0;border-color:#bbb}.params-btn.confirm[data-v-730f2212]{color:#fff;background:#1a1a1a;border-color:#1a1a1a}.params-btn.confirm[data-v-730f2212]:hover{background:#333;border-color:#333;transform:translateY(-1px);box-shadow:0 2px 10px #00000026}.params-btn.confirm[data-v-730f2212]:active{box-shadow:none;transform:translateY(0)}.overlay-enter-active[data-v-730f2212],.overlay-leave-active[data-v-730f2212]{transition:opacity .2s}.overlay-enter-from[data-v-730f2212],.overlay-leave-to[data-v-730f2212]{opacity:0}.modal-enter-active[data-v-730f2212]{transition:all .22s cubic-bezier(.34,1.56,.64,1)}.modal-leave-active[data-v-730f2212]{transition:all .16s ease-in}.modal-enter-from[data-v-730f2212]{opacity:0;transform:scale(.88)translateY(-16px)}.modal-leave-to[data-v-730f2212]{opacity:0;transform:scale(.94)translateY(8px)}.slide-enter-active[data-v-730f2212],.slide-leave-active[data-v-730f2212]{transition:all .2s;overflow:hidden}.slide-enter-from[data-v-730f2212],.slide-leave-to[data-v-730f2212]{opacity:0;max-height:0;margin-top:0;padding-top:0;padding-bottom:0}.indicator-selector[data-v-ef3141f5]{width:80%;margin:20px;position:relative}.indicator-scroll-container[data-v-ef3141f5]{scrollbar-width:none;-webkit-overflow-scrolling:touch;text-align:center;width:100%;overflow:auto hidden}.indicator-scroll-container[data-v-ef3141f5]::-webkit-scrollbar{display:none}.indicator-list[data-v-ef3141f5]{gap:8px;margin:0 auto;padding:2px;display:inline-flex}.indicator-item[data-v-ef3141f5]{align-items:center;gap:4px;display:flex}.indicator-btn-wrapper[data-v-ef3141f5]{position:relative}.indicator-btn[data-v-ef3141f5]{color:#666;cursor:pointer;white-space:nowrap;background:#fff;border:1px solid #e0e0e0;border-radius:16px;flex-shrink:0;justify-content:center;align-items:center;gap:4px;padding:6px 16px;font-size:13px;font-weight:500;transition:all .3s;display:flex;position:relative;overflow:hidden}.indicator-btn[data-v-ef3141f5]:hover:not(.hovering){color:#333;background:#f8f8f8;border-color:#ccc}.indicator-btn.active[data-v-ef3141f5]{color:#1a1a1a;background:#f8f8f8;border-color:#1a1a1a}.indicator-btn.active[data-v-ef3141f5]:hover:not(.hovering){background:#f0f0f0;border-color:#333}.btn-content[data-v-ef3141f5]{z-index:1;position:relative}.param-hint[data-v-ef3141f5]{opacity:.85;font-size:11px}.hover-overlay[data-v-ef3141f5]{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:2;background:#ffffffd9;border-radius:16px;justify-content:center;align-items:center;gap:4px;display:flex;position:absolute;inset:0}.action-btn[data-v-ef3141f5]{color:#666;cursor:pointer;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;width:24px;height:24px;padding:0;transition:all .2s;display:flex}.action-btn[data-v-ef3141f5]:hover{color:#333;background:#0000000f}.settings-btn[data-v-ef3141f5]:hover{color:#1a1a1a}.remove-btn[data-v-ef3141f5]:hover{color:#ff4d4f}.divider[data-v-ef3141f5]{background:#e0e0e0;width:1px;height:14px}.add-btn[data-v-ef3141f5]{color:#999;cursor:pointer;background:0 0;border:1px dashed #d9d9d9;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;padding:0;transition:all .3s;display:flex}.add-btn[data-v-ef3141f5]:hover{color:#1a1a1a;background:#1a1a1a0a;border-color:#1a1a1a}.add-menu[data-v-ef3141f5]{white-space:nowrap;z-index:9999;background:#fff;border-radius:8px;padding:8px 0;position:fixed;transform:translate(-50%);box-shadow:0 6px 16px #00000014,0 3px 6px -4px #0000001f,0 9px 28px 8px #0000000d}.menu-section[data-v-ef3141f5]{padding:4px 0}.menu-section[data-v-ef3141f5]:not(:last-child){border-bottom:1px solid #f0f0f0}.menu-title[data-v-ef3141f5]{color:#999;padding:4px 16px;font-size:12px;font-weight:500}.menu-items[data-v-ef3141f5]{flex-direction:column;gap:2px;display:flex}.menu-item[data-v-ef3141f5]{text-align:left;color:#333;cursor:pointer;background:0 0;border:none;align-items:center;gap:8px;width:100%;padding:8px 16px;font-size:13px;transition:background .2s;display:flex}.menu-item[data-v-ef3141f5]:hover:not(.disabled){background:#f5f5f5}.menu-item.disabled[data-v-ef3141f5]{color:#999;cursor:not-allowed}.menu-item .param-hint[data-v-ef3141f5]{color:#999;font-size:11px}.active-tag[data-v-ef3141f5]{color:#1a1a1a;align-items:center;margin-left:auto;display:flex}.fade-enter-active[data-v-ef3141f5],.fade-leave-active[data-v-ef3141f5]{transition:opacity .2s}.fade-enter-from[data-v-ef3141f5],.fade-leave-to[data-v-ef3141f5]{opacity:0}.slide-enter-active[data-v-ef3141f5],.slide-leave-active[data-v-ef3141f5]{transition:all .2s}.slide-enter-from[data-v-ef3141f5],.slide-leave-to[data-v-ef3141f5]{opacity:0;transform:translate(-50%)translateY(8px)}.chart-wrapper[data-v-cb99e513]{--kmap-height:var(--kmap-chart-height,100%);--kmap-width:var(--kmap-chart-width,100%);width:var(--kmap-width);height:var(--kmap-height);flex-direction:column;justify-content:center;align-items:center;min-height:300px;display:flex}.chart-container[data-v-cb99e513]{scrollbar-width:none;-ms-overflow-style:none;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;touch-action:none;width:95%;height:85%;min-height:255px;position:relative;overflow:auto hidden}.chart-container[data-v-cb99e513]::-webkit-scrollbar{display:none}.chart-container[data-v-cb99e513]:hover{cursor:grab}.chart-container[data-v-cb99e513]:active{cursor:grabbing}.scroll-content[data-v-cb99e513]{height:100%;min-height:inherit;position:relative}.canvas-layer[data-v-cb99e513]{pointer-events:none;position:sticky;top:0;left:0}.plot-canvas{display:block;position:absolute;top:0;left:0}.main,.sub{border-top:1px solid #e0e0e0;border-left:1px solid #e0e0e0;border-right:1px solid #e0e0e0}.right-axis{border-top:1px solid #e0e0e0;border-right:1px solid #e0e0e0;display:block;position:absolute;right:0}.x-axis-canvas{z-index:10;display:block;position:absolute;bottom:0;left:0}.bottom-axis{border:1px solid #e0e0e0}.right-axis-corner{border-top:1px solid #e0e0e0;border-bottom:1px solid #e0e0e0;border-right:1px solid #e0e0e0}.x-axis-corner{z-index:10;display:block;position:absolute;bottom:0;right:0}
1
+ .kline-tooltip[data-v-95daa55c]{z-index:10;color:#000000c7;pointer-events:none;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#ffffffeb;border:1px solid #0000001f;border-radius:8px;min-width:200px;max-width:260px;padding:10px 12px;font-size:12px;line-height:1.4;position:absolute;box-shadow:0 6px 18px #0000001f}.kline-tooltip__title[data-v-95daa55c]{justify-content:space-between;gap:10px;margin-bottom:6px;font-weight:600;display:flex}.kline-tooltip__grid[data-v-95daa55c]{grid-template-columns:1fr;gap:2px;display:grid}.kline-tooltip__grid .row[data-v-95daa55c]{justify-content:space-between;gap:10px;display:flex}.kline-tooltip__grid .row span[data-v-95daa55c]:first-child{color:#0000008f}.marker-tooltip[data-v-dd43da4f]{z-index:10;color:#000000c7;pointer-events:none;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#ffffffeb;border:1px solid #0000001f;border-radius:8px;min-width:180px;max-width:260px;padding:10px 12px;font-size:12px;line-height:1.4;position:absolute;box-shadow:0 6px 18px #0000001f}.marker-tooltip__title[data-v-dd43da4f]{justify-content:space-between;gap:10px;margin-bottom:6px;font-weight:600;display:flex}.marker-tooltip__content[data-v-dd43da4f]{grid-template-columns:1fr;gap:2px;display:grid}.marker-tooltip__content .row[data-v-dd43da4f]{justify-content:space-between;gap:10px;display:flex}.marker-tooltip__content .row span[data-v-dd43da4f]:first-child{color:#0000008f}.params-overlay[data-v-730f2212]{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:1000;background:#0000004d;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.indicator-params[data-v-730f2212]{background:#fff;border:1px solid #e0e0e0;border-radius:12px;width:90vw;min-width:340px;max-width:420px;overflow:hidden;box-shadow:0 8px 40px #00000026}.params-header[data-v-730f2212]{background:#f8f8f8;border-bottom:1px solid #e8e8e8;justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.header-left[data-v-730f2212]{align-items:baseline;gap:8px;display:flex}.header-right[data-v-730f2212]{align-items:center;gap:8px;display:flex}.params-title[data-v-730f2212]{color:#1a1a1a;letter-spacing:.2px;font-size:14px;font-weight:600}.params-subtitle[data-v-730f2212]{color:#999;font-size:11px}.toggle-desc-btn[data-v-730f2212]{cursor:pointer;color:#888;background:#fff;border:1px solid #e0e0e0;border-radius:6px;justify-content:center;align-items:center;width:28px;height:28px;padding:0;transition:all .2s;display:flex}.toggle-desc-btn[data-v-730f2212]:hover{color:#555;background:#f0f0f0;border-color:#ccc}.toggle-desc-btn.active[data-v-730f2212]{color:#fff;background:#1a1a1a;border-color:#1a1a1a}.toggle-desc-btn svg[data-v-730f2212]{width:14px;height:14px}.params-close[data-v-730f2212]{cursor:pointer;color:#888;background:#fff;border:1px solid #e0e0e0;border-radius:6px;justify-content:center;align-items:center;width:26px;height:26px;padding:0;transition:background .15s,color .15s,border-color .15s;display:flex}.params-close[data-v-730f2212]:hover{color:#333;background:#f0f0f0;border-color:#ccc}.params-close svg[data-v-730f2212]{width:13px;height:13px}.indicator-description[data-v-730f2212]{background:#f0f7ff;border-bottom:1px solid #d6e8f5;padding:12px 20px}.indicator-description p[data-v-730f2212]{color:#2c5282;margin:0;font-size:12px;line-height:1.6}.params-body[data-v-730f2212]{flex-direction:column;gap:10px;padding:16px 20px;display:flex}.param-item[data-v-730f2212]{background:#f8f8f8;border:1px solid #e8e8e8;border-radius:8px;padding:10px 14px;transition:border-color .2s}.param-item[data-v-730f2212]:has(.param-input:focus){border-color:#bbb}.param-item.has-desc[data-v-730f2212]{padding:10px 14px 8px}.param-header[data-v-730f2212]{justify-content:space-between;align-items:center;gap:16px;display:flex}.param-label[data-v-730f2212]{flex-direction:column;gap:3px;display:flex}.param-label-text[data-v-730f2212]{color:#333;font-size:13px;font-weight:500}.param-range[data-v-730f2212]{color:#999;font-size:11px}.param-description[data-v-730f2212]{color:#666;border-top:1px dashed #e0e0e0;margin-top:8px;padding-top:8px;font-size:11px;line-height:1.5}.input-wrapper[data-v-730f2212]{background:#fff;border:1px solid #d0d0d0;border-radius:7px;align-items:stretch;height:32px;transition:border-color .2s;display:flex;overflow:hidden}.input-wrapper[data-v-730f2212]:focus-within{border-color:#999}.stepper-btn[data-v-730f2212]{cursor:pointer;color:#666;background:#f0f0f0;border:none;flex-shrink:0;justify-content:center;align-items:center;width:28px;font-size:15px;font-weight:400;line-height:1;transition:background .15s,color .15s;display:flex}.stepper-btn[data-v-730f2212]:hover:not(:disabled){color:#333;background:#e0e0e0}.stepper-btn[data-v-730f2212]:disabled{color:#ccc;cursor:not-allowed}.param-input[data-v-730f2212]{text-align:center;color:#1a1a1a;appearance:textfield;background:0 0;border:none;border-left:1px solid #e8e8e8;border-right:1px solid #e8e8e8;width:60px;font-size:13px;font-weight:600}.param-input[data-v-730f2212]::-webkit-inner-spin-button{-webkit-appearance:none}.param-input[data-v-730f2212]::-webkit-outer-spin-button{-webkit-appearance:none}.param-input[data-v-730f2212]:focus{outline:none}.params-footer[data-v-730f2212]{background:#f8f8f8;border-top:1px solid #e8e8e8;justify-content:space-between;align-items:center;padding:12px 20px;display:flex}.footer-right[data-v-730f2212]{gap:8px;display:flex}.params-btn[data-v-730f2212]{cursor:pointer;border:1px solid #0000;border-radius:7px;align-items:center;gap:5px;padding:6px 14px;font-size:13px;font-weight:500;line-height:1.4;transition:all .15s;display:flex}.params-btn svg[data-v-730f2212]{flex-shrink:0;width:12px;height:12px}.params-btn.reset[data-v-730f2212]{color:#666;background:0 0;border-color:#d0d0d0}.params-btn.reset[data-v-730f2212]:hover{color:#e74c3c;background:#e74c3c14;border-color:#c0392b}.params-btn.cancel[data-v-730f2212]{color:#666;background:0 0;border-color:#d0d0d0}.params-btn.cancel[data-v-730f2212]:hover{color:#333;background:#f0f0f0;border-color:#bbb}.params-btn.confirm[data-v-730f2212]{color:#fff;background:#1a1a1a;border-color:#1a1a1a}.params-btn.confirm[data-v-730f2212]:hover{background:#333;border-color:#333;transform:translateY(-1px);box-shadow:0 2px 10px #00000026}.params-btn.confirm[data-v-730f2212]:active{box-shadow:none;transform:translateY(0)}.overlay-enter-active[data-v-730f2212],.overlay-leave-active[data-v-730f2212]{transition:opacity .2s}.overlay-enter-from[data-v-730f2212],.overlay-leave-to[data-v-730f2212]{opacity:0}.modal-enter-active[data-v-730f2212]{transition:all .22s cubic-bezier(.34,1.56,.64,1)}.modal-leave-active[data-v-730f2212]{transition:all .16s ease-in}.modal-enter-from[data-v-730f2212]{opacity:0;transform:scale(.88)translateY(-16px)}.modal-leave-to[data-v-730f2212]{opacity:0;transform:scale(.94)translateY(8px)}.slide-enter-active[data-v-730f2212],.slide-leave-active[data-v-730f2212]{transition:all .2s;overflow:hidden}.slide-enter-from[data-v-730f2212],.slide-leave-to[data-v-730f2212]{opacity:0;max-height:0;margin-top:0;padding-top:0;padding-bottom:0}.indicator-selector[data-v-aad3b750]{width:80%;margin:20px;position:relative}.indicator-scroll-container[data-v-aad3b750]{scrollbar-width:none;-webkit-overflow-scrolling:touch;text-align:center;width:100%;overflow:auto hidden}.indicator-scroll-container[data-v-aad3b750]::-webkit-scrollbar{display:none}.indicator-list[data-v-aad3b750]{gap:8px;margin:0 auto;padding:2px;display:inline-flex}.indicator-item[data-v-aad3b750]{align-items:center;gap:4px;display:flex}.indicator-btn-wrapper[data-v-aad3b750]{position:relative}.indicator-btn[data-v-aad3b750]{color:#666;cursor:pointer;white-space:nowrap;background:#fff;border:1px solid #e0e0e0;border-radius:16px;flex-shrink:0;justify-content:center;align-items:center;gap:4px;padding:6px 16px;font-size:13px;font-weight:500;transition:all .3s;display:flex;position:relative;overflow:hidden}.indicator-btn[data-v-aad3b750]:hover:not(.hovering){color:#333;background:#f8f8f8;border-color:#ccc}.indicator-btn.active[data-v-aad3b750]{color:#1a1a1a;background:#f8f8f8;border-color:#1a1a1a}.indicator-btn.active[data-v-aad3b750]:hover:not(.hovering){background:#f0f0f0;border-color:#333}.btn-content[data-v-aad3b750]{z-index:1;position:relative}.param-hint[data-v-aad3b750]{opacity:.85;font-size:11px}.hover-overlay[data-v-aad3b750]{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:2;background:#ffffffd9;border-radius:16px;justify-content:center;align-items:center;gap:4px;display:flex;position:absolute;inset:0}.action-btn[data-v-aad3b750]{color:#666;cursor:pointer;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;width:24px;height:24px;padding:0;transition:all .2s;display:flex}.action-btn[data-v-aad3b750]:hover{color:#333;background:#0000000f}.settings-btn[data-v-aad3b750]:hover{color:#1a1a1a}.remove-btn[data-v-aad3b750]:hover{color:#ff4d4f}.divider[data-v-aad3b750]{background:#e0e0e0;width:1px;height:14px}.add-btn[data-v-aad3b750]{color:#999;cursor:pointer;background:0 0;border:1px dashed #d9d9d9;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;padding:0;transition:all .3s;display:flex}.add-btn[data-v-aad3b750]:hover{color:#1a1a1a;background:#1a1a1a0a;border-color:#1a1a1a}.add-menu[data-v-aad3b750]{white-space:nowrap;z-index:9999;background:#fff;border-radius:8px;padding:8px 0;position:fixed;transform:translate(-50%);box-shadow:0 6px 16px #00000014,0 3px 6px -4px #0000001f,0 9px 28px 8px #0000000d}.menu-section[data-v-aad3b750]{padding:4px 0}.menu-section[data-v-aad3b750]:not(:last-child){border-bottom:1px solid #f0f0f0}.menu-title[data-v-aad3b750]{color:#999;padding:4px 16px;font-size:12px;font-weight:500}.menu-items[data-v-aad3b750]{flex-direction:column;gap:2px;display:flex}.menu-item[data-v-aad3b750]{text-align:left;color:#333;cursor:pointer;background:0 0;border:none;align-items:center;gap:8px;width:100%;padding:8px 16px;font-size:13px;transition:background .2s;display:flex}.menu-item[data-v-aad3b750]:hover:not(.disabled){background:#f5f5f5}.menu-item.disabled[data-v-aad3b750]{color:#999;cursor:not-allowed}.menu-item .param-hint[data-v-aad3b750]{color:#999;font-size:11px}.active-tag[data-v-aad3b750]{color:#1a1a1a;align-items:center;margin-left:auto;display:flex}.fade-enter-active[data-v-aad3b750],.fade-leave-active[data-v-aad3b750]{transition:opacity .2s}.fade-enter-from[data-v-aad3b750],.fade-leave-to[data-v-aad3b750]{opacity:0}.slide-enter-active[data-v-aad3b750],.slide-leave-active[data-v-aad3b750]{transition:all .2s}.slide-enter-from[data-v-aad3b750],.slide-leave-to[data-v-aad3b750]{opacity:0;transform:translate(-50%)translateY(8px)}.chart-wrapper[data-v-4083a7b9]{--kmap-height:var(--kmap-chart-height,100%);--kmap-width:var(--kmap-chart-width,100%);width:var(--kmap-width);height:var(--kmap-height);flex-direction:column;justify-content:center;align-items:center;min-height:300px;display:flex}.chart-container[data-v-4083a7b9]{scrollbar-width:none;-ms-overflow-style:none;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;touch-action:none;width:95%;height:85%;min-height:255px;position:relative;overflow:auto hidden}.chart-container[data-v-4083a7b9]::-webkit-scrollbar{display:none}.chart-container[data-v-4083a7b9]:hover{cursor:grab}.chart-container[data-v-4083a7b9]:active{cursor:grabbing}.scroll-content[data-v-4083a7b9]{height:100%;min-height:inherit;position:relative}.canvas-layer[data-v-4083a7b9]{pointer-events:none;position:sticky;top:0;left:0}.plot-canvas{display:block;position:absolute;top:0;left:0}.main,.sub{border-top:1px solid #e0e0e0;border-left:1px solid #e0e0e0;border-right:1px solid #e0e0e0}.right-axis{border-top:1px solid #e0e0e0;border-right:1px solid #e0e0e0;display:block;position:absolute;right:1px}.x-axis-canvas{z-index:10;display:block;position:absolute;bottom:1px;left:0}.bottom-axis{border-bottom:1px solid #e0e0e0;border-left:1px solid #e0e0e0;border-right:1px solid #e0e0e0}.right-axis-corner{box-sizing:border-box;border-bottom:1px solid #e0e0e0;border-left:1px solid #e0e0e0;border-right:1px solid #e0e0e0;bottom:1px}.x-axis-corner{z-index:10;display:block;position:absolute;bottom:1px;right:1px}
2
2
  /*$vite$:1*/
@@ -63,7 +63,6 @@ export declare class RendererPluginManager {
63
63
  getAllPlugins(): RendererPlugin[];
64
64
  /** 获取指定渲染器 */
65
65
  getPlugin<T extends RendererPlugin = RendererPlugin>(name: string): T | undefined;
66
- /** 通知数据更新(跳过禁用的插件) */
67
66
  notifyDataUpdate(data: unknown[], range: {
68
67
  start: number;
69
68
  end: number;
@@ -79,6 +79,7 @@ export interface PaneInfo {
79
79
  yToPrice(y: number): number;
80
80
  getPaddingTop(): number;
81
81
  getPaddingBottom(): number;
82
+ getPriceOffset(): number;
82
83
  };
83
84
  priceRange: {
84
85
  maxPrice: number;
@@ -19,10 +19,16 @@ export declare class SemanticChartController {
19
19
  * 取消订阅
20
20
  */
21
21
  off(event: SemanticEventType, handler: (data?: unknown) => void): void;
22
+ /**
23
+ * 应用语义化 UI 配置
24
+ * @param config 语义化配置
25
+ */
22
26
  private doApplyConfig;
23
27
  private applyIndicators;
24
28
  private applyMAIndicator;
25
29
  private applyBOLLIndicator;
30
+ private applyEXPMAIndicator;
31
+ private applyENEIndicator;
26
32
  private applySubIndicator;
27
33
  private applyMarkers;
28
34
  private applyChartOptions;
@@ -40,6 +40,16 @@ export interface BOLLParams {
40
40
  period?: number;
41
41
  multiplier?: number;
42
42
  }
43
+ /** EXPMA 指数平滑移动平均线参数 */
44
+ export interface EXPMAParams {
45
+ fastPeriod?: number;
46
+ slowPeriod?: number;
47
+ }
48
+ /** ENE 轨道线参数 */
49
+ export interface ENEParams {
50
+ period?: number;
51
+ deviation?: number;
52
+ }
43
53
  /** 主图指标配置(判别联合) */
44
54
  export type MainIndicatorConfig = {
45
55
  type: 'MA';
@@ -49,6 +59,14 @@ export type MainIndicatorConfig = {
49
59
  type: 'BOLL';
50
60
  enabled: boolean;
51
61
  params?: BOLLParams;
62
+ } | {
63
+ type: 'EXPMA';
64
+ enabled: boolean;
65
+ params?: EXPMAParams;
66
+ } | {
67
+ type: 'ENE';
68
+ enabled: boolean;
69
+ params?: ENEParams;
52
70
  };
53
71
  /** 副图指标参数映射 */
54
72
  export interface SubIndicatorParams {
@@ -20,6 +20,8 @@ export interface PriceAxisOptions {
20
20
  drawLeftBorder?: boolean;
21
21
  /** 是否绘制刻度短线(默认 true) */
22
22
  drawTickLines?: boolean;
23
+ /** 价格偏移量(用于价格轴平移时同步显示) */
24
+ priceOffset?: number;
23
25
  }
24
26
  /** 右侧价格轴(固定,不随 translate/scroll 变化) */
25
27
  export declare function drawPriceAxis(ctx: CanvasRenderingContext2D, opts: PriceAxisOptions): void;
@@ -88,8 +90,6 @@ export interface CrosshairPriceLabelOptions {
88
90
  textColor?: string;
89
91
  fontSize?: number;
90
92
  paddingX?: number;
91
- /** 最新价,用于计算涨跌幅 */
92
- lastPrice?: number;
93
93
  }
94
94
  export interface CrosshairTimeLabelOptions {
95
95
  x: number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@363045841yyt/klinechart",
3
- "version": "0.2.11",
3
+ "version": "0.2.13",
4
4
  "type": "module",
5
5
  "engines": {
6
6
  "node": "^20.19.0 || >=22.12.0"
@@ -1,16 +0,0 @@
1
- import { RendererPlugin } from '../../../plugin';
2
- export interface BOLLLegendConfig {
3
- /** 周期(默认20) */
4
- period?: number;
5
- /** 标准差倍数(默认2) */
6
- multiplier?: number;
7
- /** 是否显示图例 */
8
- show?: boolean;
9
- }
10
- /**
11
- * 创建 BOLL 图例渲染器插件
12
- */
13
- export declare function createBOLLLegendRendererPlugin(options: {
14
- yPaddingPx: number;
15
- config?: BOLLLegendConfig;
16
- }): RendererPlugin;
@@ -1,9 +0,0 @@
1
- import { RendererPlugin } from '../../../plugin';
2
- import { MAFlags } from './ma';
3
- /**
4
- * 创建 MA 图例渲染器插件
5
- */
6
- export declare function createMALegendRendererPlugin(options: {
7
- yPaddingPx: number;
8
- showMA?: MAFlags;
9
- }): RendererPlugin;