@tradecanvas/chart 0.8.2 → 0.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +86 -4
- package/dist/Chart.d.ts +121 -1
- package/dist/Chart.d.ts.map +1 -1
- package/dist/{Chart-Cn_TSMO7.js → DragDropImporter-Br2ez5Gz.js} +560 -91
- package/dist/DragDropImporter-Br2ez5Gz.js.map +1 -0
- package/dist/DragDropImporter-ycI_Tcs6.cjs +2 -0
- package/dist/DragDropImporter-ycI_Tcs6.cjs.map +1 -0
- package/dist/finance/PerformanceDashboard.d.ts +43 -0
- package/dist/finance/PerformanceDashboard.d.ts.map +1 -0
- package/dist/finance/index.d.ts +4 -0
- package/dist/finance/index.d.ts.map +1 -1
- package/dist/finance/performanceData.d.ts +39 -0
- package/dist/finance/performanceData.d.ts.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +287 -30
- package/dist/index.js.map +1 -1
- package/dist/io/DragDropImporter.d.ts +34 -0
- package/dist/io/DragDropImporter.d.ts.map +1 -0
- package/dist/io/index.d.ts +7 -0
- package/dist/io/index.d.ts.map +1 -0
- package/dist/io/parseOHLCV.d.ts +21 -0
- package/dist/io/parseOHLCV.d.ts.map +1 -0
- package/dist/io/resampleOHLCV.d.ts +29 -0
- package/dist/io/resampleOHLCV.d.ts.map +1 -0
- package/dist/widget/AlertNotifier.d.ts +32 -0
- package/dist/widget/AlertNotifier.d.ts.map +1 -0
- package/dist/widget/ChartWidget.d.ts +100 -2
- package/dist/widget/ChartWidget.d.ts.map +1 -1
- package/dist/widget/DrawingFavoritesStore.d.ts +22 -0
- package/dist/widget/DrawingFavoritesStore.d.ts.map +1 -0
- package/dist/widget/DrawingTemplateStore.d.ts +29 -0
- package/dist/widget/DrawingTemplateStore.d.ts.map +1 -0
- package/dist/widget/WidgetAlertsPanel.d.ts +58 -0
- package/dist/widget/WidgetAlertsPanel.d.ts.map +1 -0
- package/dist/widget/WidgetBracketBar.d.ts +21 -0
- package/dist/widget/WidgetBracketBar.d.ts.map +1 -0
- package/dist/widget/WidgetDataWindow.d.ts +41 -0
- package/dist/widget/WidgetDataWindow.d.ts.map +1 -0
- package/dist/widget/WidgetDepthLadder.d.ts +29 -0
- package/dist/widget/WidgetDepthLadder.d.ts.map +1 -0
- package/dist/widget/WidgetDrawingSidebar.d.ts +6 -0
- package/dist/widget/WidgetDrawingSidebar.d.ts.map +1 -1
- package/dist/widget/WidgetDrawingStyle.d.ts +36 -0
- package/dist/widget/WidgetDrawingStyle.d.ts.map +1 -0
- package/dist/widget/WidgetHotkeySheet.d.ts +20 -0
- package/dist/widget/WidgetHotkeySheet.d.ts.map +1 -0
- package/dist/widget/WidgetIndicatorSettings.d.ts +42 -0
- package/dist/widget/WidgetIndicatorSettings.d.ts.map +1 -0
- package/dist/widget/WidgetObjectTree.d.ts +59 -0
- package/dist/widget/WidgetObjectTree.d.ts.map +1 -0
- package/dist/widget/WidgetReplayBar.d.ts +41 -0
- package/dist/widget/WidgetReplayBar.d.ts.map +1 -0
- package/dist/widget/WidgetSettings.d.ts +1 -0
- package/dist/widget/WidgetSettings.d.ts.map +1 -1
- package/dist/widget/WidgetSymbolSearch.d.ts +34 -0
- package/dist/widget/WidgetSymbolSearch.d.ts.map +1 -0
- package/dist/widget/WidgetToolbar.d.ts.map +1 -1
- package/dist/widget/WidgetWatchlist.d.ts +39 -0
- package/dist/widget/WidgetWatchlist.d.ts.map +1 -0
- package/dist/widget/icons.d.ts.map +1 -1
- package/dist/widget/index.cjs +2372 -877
- package/dist/widget/index.cjs.map +1 -1
- package/dist/widget/index.js +2455 -185
- package/dist/widget/index.js.map +1 -1
- package/dist/widget/ladderRows.d.ts +21 -0
- package/dist/widget/ladderRows.d.ts.map +1 -0
- package/dist/widget/types.d.ts +91 -1
- package/dist/widget/types.d.ts.map +1 -1
- package/dist/widget/widgetConfig.d.ts.map +1 -1
- package/dist/widget/widgetShareState.d.ts +26 -0
- package/dist/widget/widgetShareState.d.ts.map +1 -0
- package/package.json +3 -3
- package/dist/Chart-Br_N-BCL.cjs +0 -2
- package/dist/Chart-Br_N-BCL.cjs.map +0 -1
- package/dist/Chart-Cn_TSMO7.js.map +0 -1
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
export type IndicatorParamValue = number | string | boolean;
|
|
2
|
+
export interface IndicatorSettingsTarget {
|
|
3
|
+
instanceId: string;
|
|
4
|
+
name: string;
|
|
5
|
+
/** Default config — defines the editable keys and their types. */
|
|
6
|
+
defaults: Record<string, unknown>;
|
|
7
|
+
/** Current values, overlaid on defaults. */
|
|
8
|
+
params: Record<string, unknown>;
|
|
9
|
+
}
|
|
10
|
+
export interface IndicatorSettingsCallbacks {
|
|
11
|
+
onApply: (instanceId: string, params: Record<string, IndicatorParamValue>) => void;
|
|
12
|
+
onClose: () => void;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Per-indicator parameter editor. Introspects the indicator's default config to
|
|
16
|
+
* decide each control (number → stepper, boolean → toggle, hex string → color,
|
|
17
|
+
* other string → text) and applies edits live via `onApply`.
|
|
18
|
+
*/
|
|
19
|
+
export declare class WidgetIndicatorSettings {
|
|
20
|
+
private backdrop;
|
|
21
|
+
private modal;
|
|
22
|
+
private bodyEl;
|
|
23
|
+
private titleEl;
|
|
24
|
+
private callbacks;
|
|
25
|
+
private target;
|
|
26
|
+
private draft;
|
|
27
|
+
constructor(host: HTMLElement, callbacks: IndicatorSettingsCallbacks);
|
|
28
|
+
open(target: IndicatorSettingsTarget): void;
|
|
29
|
+
close(): void;
|
|
30
|
+
isOpen(): boolean;
|
|
31
|
+
destroy(): void;
|
|
32
|
+
private currentValue;
|
|
33
|
+
private setValue;
|
|
34
|
+
private resetDefaults;
|
|
35
|
+
private renderFields;
|
|
36
|
+
private fieldRow;
|
|
37
|
+
private toggleControl;
|
|
38
|
+
private numberControl;
|
|
39
|
+
private colorControl;
|
|
40
|
+
private textControl;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=WidgetIndicatorSettings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WidgetIndicatorSettings.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetIndicatorSettings.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAE5D,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,4CAA4C;IAC5C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,KAAK,IAAI,CAAC;IACnF,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAYD;;;;GAIG;AACH,qBAAa,uBAAuB;IAClC,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,MAAM,CAAwC;IACtD,OAAO,CAAC,KAAK,CAA2C;gBAE5C,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,0BAA0B;IAgDpE,IAAI,CAAC,MAAM,EAAE,uBAAuB,GAAG,IAAI;IAQ3C,KAAK,IAAI,IAAI;IAMb,MAAM,IAAI,OAAO;IAIjB,OAAO,IAAI,IAAI;IAIf,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,QAAQ;IAMhB,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,YAAY;IAqBpB,OAAO,CAAC,QAAQ;IAuBhB,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,aAAa;IAcrB,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,WAAW;CAQpB"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
export interface ObjectTreeIndicator {
|
|
2
|
+
instanceId: string;
|
|
3
|
+
name: string;
|
|
4
|
+
visible: boolean;
|
|
5
|
+
}
|
|
6
|
+
export interface ObjectTreeDrawing {
|
|
7
|
+
id: string;
|
|
8
|
+
label: string;
|
|
9
|
+
visible: boolean;
|
|
10
|
+
locked: boolean;
|
|
11
|
+
}
|
|
12
|
+
export interface ObjectTreeCompare {
|
|
13
|
+
id: string;
|
|
14
|
+
label: string;
|
|
15
|
+
color: string;
|
|
16
|
+
}
|
|
17
|
+
export interface ObjectTreeCallbacks {
|
|
18
|
+
onRemoveIndicator: (instanceId: string) => void;
|
|
19
|
+
onConfigureIndicator?: (instanceId: string) => void;
|
|
20
|
+
onToggleIndicatorVisible?: (instanceId: string, visible: boolean) => void;
|
|
21
|
+
onRemoveDrawing: (id: string) => void;
|
|
22
|
+
onToggleDrawingVisible: (id: string, visible: boolean) => void;
|
|
23
|
+
onToggleDrawingLocked: (id: string, locked: boolean) => void;
|
|
24
|
+
/** When provided, a Compare section with an "add" button is shown. */
|
|
25
|
+
onAddCompare?: () => void;
|
|
26
|
+
onRemoveCompare?: (id: string) => void;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Object-tree panel — TradingView's layers manager. Lists every active
|
|
30
|
+
* indicator and drawing on the chart with per-item controls: indicators can be
|
|
31
|
+
* removed; drawings can be shown/hidden, locked/unlocked, and removed. Toggled
|
|
32
|
+
* from the toolbar layers button; the host wires actions back to the chart.
|
|
33
|
+
*/
|
|
34
|
+
export declare class WidgetObjectTree {
|
|
35
|
+
private el;
|
|
36
|
+
private indicatorsEl;
|
|
37
|
+
private drawingsEl;
|
|
38
|
+
private compareEl;
|
|
39
|
+
private callbacks;
|
|
40
|
+
private open;
|
|
41
|
+
constructor(host: HTMLElement, callbacks: ObjectTreeCallbacks);
|
|
42
|
+
isOpen(): boolean;
|
|
43
|
+
toggle(): void;
|
|
44
|
+
openPanel(): void;
|
|
45
|
+
close(): void;
|
|
46
|
+
destroy(): void;
|
|
47
|
+
/** Replace all lists. Cheap full re-render — counts are small. */
|
|
48
|
+
setObjects(indicators: ObjectTreeIndicator[], drawings: ObjectTreeDrawing[], compares?: ObjectTreeCompare[]): void;
|
|
49
|
+
private makeSection;
|
|
50
|
+
private renderIndicators;
|
|
51
|
+
private renderDrawings;
|
|
52
|
+
private renderCompares;
|
|
53
|
+
private row;
|
|
54
|
+
private emptyRow;
|
|
55
|
+
private iconButton;
|
|
56
|
+
}
|
|
57
|
+
/** Human-readable label for a drawing type, falling back to the raw key. */
|
|
58
|
+
export declare function drawingTypeLabel(type: string): string;
|
|
59
|
+
//# sourceMappingURL=WidgetObjectTree.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WidgetObjectTree.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetObjectTree.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,iBAAiB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,oBAAoB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,wBAAwB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1E,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,sBAAsB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/D,qBAAqB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7D,sEAAsE;IACtE,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,eAAe,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC;AAED;;;;;GAKG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,EAAE,CAAiB;IAC3B,OAAO,CAAC,YAAY,CAAiB;IACrC,OAAO,CAAC,UAAU,CAAiB;IACnC,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,IAAI,CAAS;gBAET,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,mBAAmB;IA8B7D,MAAM,IAAI,OAAO;IAIjB,MAAM,IAAI,IAAI;IAId,SAAS,IAAI,IAAI;IAKjB,KAAK,IAAI,IAAI;IAKb,OAAO,IAAI,IAAI;IAIf,kEAAkE;IAClE,UAAU,CACR,UAAU,EAAE,mBAAmB,EAAE,EACjC,QAAQ,EAAE,iBAAiB,EAAE,EAC7B,QAAQ,GAAE,iBAAiB,EAAO,GACjC,IAAI;IAMP,OAAO,CAAC,WAAW;IA0BnB,OAAO,CAAC,gBAAgB;IAgCxB,OAAO,CAAC,cAAc;IAgCtB,OAAO,CAAC,cAAc;IAsBtB,OAAO,CAAC,GAAG;IAWX,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,UAAU;CAUnB;AA6BD,4EAA4E;AAC5E,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAErD"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Replay scrubber bar — surfaces the chart's existing replay engine as a
|
|
3
|
+
* visible bottom-of-chart control. Mounts under the chart container, owns
|
|
4
|
+
* its own lifecycle, and reports user intent up via callbacks (no chart
|
|
5
|
+
* coupling — the host calls chart.replay() / replayPause() / etc.).
|
|
6
|
+
*/
|
|
7
|
+
export interface ReplayBarCallbacks {
|
|
8
|
+
onPlay: () => void;
|
|
9
|
+
onPause: () => void;
|
|
10
|
+
onStop: () => void;
|
|
11
|
+
onStepBack: () => void;
|
|
12
|
+
onStepForward: () => void;
|
|
13
|
+
onSeek: (index: number) => void;
|
|
14
|
+
onSpeedChange: (barsPerSecond: number) => void;
|
|
15
|
+
onClose: () => void;
|
|
16
|
+
}
|
|
17
|
+
export type ReplayBarState = 'playing' | 'paused' | 'stopped';
|
|
18
|
+
export declare class WidgetReplayBar {
|
|
19
|
+
private root;
|
|
20
|
+
private scrubber;
|
|
21
|
+
private progressLabel;
|
|
22
|
+
private playBtn;
|
|
23
|
+
private state;
|
|
24
|
+
private total;
|
|
25
|
+
private speed;
|
|
26
|
+
private callbacks;
|
|
27
|
+
constructor(callbacks: ReplayBarCallbacks);
|
|
28
|
+
mount(host: HTMLElement, opts: {
|
|
29
|
+
total: number;
|
|
30
|
+
speed?: number;
|
|
31
|
+
}): void;
|
|
32
|
+
unmount(): void;
|
|
33
|
+
isMounted(): boolean;
|
|
34
|
+
setState(state: ReplayBarState): void;
|
|
35
|
+
setProgress(current: number, total: number): void;
|
|
36
|
+
destroy(): void;
|
|
37
|
+
private markup;
|
|
38
|
+
private wireEvents;
|
|
39
|
+
private syncUi;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=WidgetReplayBar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WidgetReplayBar.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetReplayBar.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,aAAa,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;AAI9D,qBAAa,eAAe;IAC1B,OAAO,CAAC,IAAI,CAA+B;IAC3C,OAAO,CAAC,QAAQ,CAAiC;IACjD,OAAO,CAAC,aAAa,CAAgC;IACrD,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,KAAK,CAA6B;IAC1C,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,SAAS,CAAqB;gBAE1B,SAAS,EAAE,kBAAkB;IAIzC,KAAK,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAevE,OAAO,IAAI,IAAI;IASf,SAAS,IAAI,OAAO;IAIpB,QAAQ,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAKrC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAWjD,OAAO,IAAI,IAAI;IAIf,OAAO,CAAC,MAAM;IAad,OAAO,CAAC,UAAU;IA2BlB,OAAO,CAAC,MAAM;CAKf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WidgetSettings.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetSettings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAMxE,qBAAa,cAAc;IACzB,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,eAAe,CAAmC;IAC1D,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,UAAU,CAA2B;gBAEjC,SAAS,EAAE,iBAAiB;IAIxC,IAAI,CAAC,eAAe,EAAE,kBAAkB,GAAG,IAAI;IAM/C,KAAK,IAAI,IAAI;IASb,OAAO,CAAC,UAAU;IAuFlB,OAAO,CAAC,gBAAgB;IAiBxB,OAAO,CAAC,cAAc;IAmBtB,OAAO,CAAC,gBAAgB;
|
|
1
|
+
{"version":3,"file":"WidgetSettings.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetSettings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAMxE,qBAAa,cAAc;IACzB,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,eAAe,CAAmC;IAC1D,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,UAAU,CAA2B;gBAEjC,SAAS,EAAE,iBAAiB;IAIxC,IAAI,CAAC,eAAe,EAAE,kBAAkB,GAAG,IAAI;IAM/C,KAAK,IAAI,IAAI;IASb,OAAO,CAAC,UAAU;IAuFlB,OAAO,CAAC,gBAAgB;IAiBxB,OAAO,CAAC,cAAc;IAmBtB,OAAO,CAAC,gBAAgB;IAyDxB,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,KAAK;IAOb,OAAO,CAAC,OAAO;IAYf,OAAO,CAAC,QAAQ;IA+BhB,OAAO,CAAC,SAAS;IAoBjB,OAAO,CAAC,SAAS;IA4BjB,OAAO,CAAC,QAAQ;IA2ChB,OAAO,IAAI,IAAI;CAGhB"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lightweight fuzzy symbol picker. Reuses the command-palette CSS for visual
|
|
3
|
+
* consistency. Scoring is a cheap subsequence match — good enough for symbol
|
|
4
|
+
* lists in the low thousands without pulling in a fuzzy-search dependency.
|
|
5
|
+
*/
|
|
6
|
+
export interface SymbolSearchCallbacks {
|
|
7
|
+
onPick: (symbol: string) => void;
|
|
8
|
+
onClose: () => void;
|
|
9
|
+
}
|
|
10
|
+
export declare class WidgetSymbolSearch {
|
|
11
|
+
private backdrop;
|
|
12
|
+
private modal;
|
|
13
|
+
private input;
|
|
14
|
+
private list;
|
|
15
|
+
private symbols;
|
|
16
|
+
private current;
|
|
17
|
+
private filtered;
|
|
18
|
+
private selectedIndex;
|
|
19
|
+
private callbacks;
|
|
20
|
+
private boundKeydown;
|
|
21
|
+
/** One-shot pick override — when set, this open() routes picks here instead. */
|
|
22
|
+
private pickOverride;
|
|
23
|
+
constructor(callbacks: SymbolSearchCallbacks);
|
|
24
|
+
open(symbols: string[], current: string, onPick?: (symbol: string) => void): void;
|
|
25
|
+
close(): void;
|
|
26
|
+
isOpen(): boolean;
|
|
27
|
+
destroy(): void;
|
|
28
|
+
private filter;
|
|
29
|
+
private renderList;
|
|
30
|
+
private updateSelection;
|
|
31
|
+
private pick;
|
|
32
|
+
private handleKeydown;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=WidgetSymbolSearch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WidgetSymbolSearch.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetSymbolSearch.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAOD,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,KAAK,CAAiC;IAC9C,OAAO,CAAC,IAAI,CAA+B;IAC3C,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,SAAS,CAAwB;IACzC,OAAO,CAAC,YAAY,CAA6B;IACjD,gFAAgF;IAChF,OAAO,CAAC,YAAY,CAA2C;gBAEnD,SAAS,EAAE,qBAAqB;IAK5C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAwDjF,KAAK,IAAI,IAAI;IAYb,MAAM,IAAI,OAAO;IAIjB,OAAO,IAAI,IAAI;IAIf,OAAO,CAAC,MAAM;IAcd,OAAO,CAAC,UAAU;IA0ClB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,IAAI;IASZ,OAAO,CAAC,aAAa;CA0BtB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WidgetToolbar.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetToolbar.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,WAAW,EAAmB,MAAM,YAAY,CAAC;AAIhG,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,EAAE,CAAiB;IAC3B,OAAO,CAAC,iBAAiB,CAA+B;IACxD,OAAO,CAAC,iBAAiB,CAA+B;IACxD,OAAO,CAAC,SAAS,CAA2B;IAC5C,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,QAAQ,CAAkC;gBAEtC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,gBAAgB;IASjF,OAAO,CAAC,KAAK;
|
|
1
|
+
{"version":3,"file":"WidgetToolbar.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetToolbar.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,WAAW,EAAmB,MAAM,YAAY,CAAC;AAIhG,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,EAAE,CAAiB;IAC3B,OAAO,CAAC,iBAAiB,CAA+B;IACxD,OAAO,CAAC,iBAAiB,CAA+B;IACxD,OAAO,CAAC,SAAS,CAA2B;IAC5C,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,QAAQ,CAAkC;gBAEtC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,gBAAgB;IASjF,OAAO,CAAC,KAAK;IAgHb,OAAO,CAAC,kBAAkB;IAkB1B,OAAO,CAAC,kBAAkB;IA4B1B,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAwDhC,OAAO,CAAC,sBAAsB;IAQ9B,OAAO,CAAC,GAAG;IAMX,OAAO,CAAC,MAAM;IAMd,OAAO,CAAC,OAAO;IASf,OAAO,IAAI,IAAI;CAKhB"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Watchlist sidebar — vertical list of symbols, each with last price, %
|
|
3
|
+
* change, and a mini sparkline. Clicking switches the chart's symbol.
|
|
4
|
+
*
|
|
5
|
+
* The widget tracks the *active* symbol's price/spark automatically from the
|
|
6
|
+
* live stream. For non-active symbols, the host can push data via
|
|
7
|
+
* `setEntry(symbol, …)` so the row reflects whatever the app already has.
|
|
8
|
+
*/
|
|
9
|
+
export interface WatchlistEntry {
|
|
10
|
+
symbol: string;
|
|
11
|
+
lastPrice?: number;
|
|
12
|
+
/** Reference price for % calc (usually session open or 24h-ago close). */
|
|
13
|
+
refPrice?: number;
|
|
14
|
+
/** Recent close samples for the sparkline — last point is the live price. */
|
|
15
|
+
sparkline?: number[];
|
|
16
|
+
}
|
|
17
|
+
export interface WatchlistCallbacks {
|
|
18
|
+
onSelect: (symbol: string) => void;
|
|
19
|
+
}
|
|
20
|
+
export declare class WidgetWatchlist {
|
|
21
|
+
private el;
|
|
22
|
+
private listEl;
|
|
23
|
+
private rowMap;
|
|
24
|
+
private entries;
|
|
25
|
+
private active;
|
|
26
|
+
private callbacks;
|
|
27
|
+
constructor(host: HTMLElement, symbols: string[], callbacks: WatchlistCallbacks);
|
|
28
|
+
/** Replace the symbol set. Rows are diff'd so DOM churn is minimal. */
|
|
29
|
+
setSymbols(symbols: string[]): void;
|
|
30
|
+
setActive(symbol: string): void;
|
|
31
|
+
/** Push a price tick into a row. The widget calls this automatically for
|
|
32
|
+
* the active symbol. Apps can call it for the rest. */
|
|
33
|
+
setEntry(symbol: string, patch: Partial<WatchlistEntry>): void;
|
|
34
|
+
destroy(): void;
|
|
35
|
+
private appendRow;
|
|
36
|
+
private removeRow;
|
|
37
|
+
private renderRow;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=WidgetWatchlist.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WidgetWatchlist.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetWatchlist.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6EAA6E;IAC7E,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,EAAE,CAAiB;IAC3B,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,MAAM,CAKT;IACL,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,SAAS,CAAqB;gBAE1B,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,kBAAkB;IAuB/E,uEAAuE;IACvE,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI;IAanC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAU/B;4DACwD;IACxD,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI;IAO9D,OAAO,IAAI,IAAI;IAMf,OAAO,CAAC,SAAS;IA0CjB,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,SAAS;CAuBlB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../../src/widget/icons.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../../src/widget/icons.ts"],"names":[],"mappings":"AAuCA,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,SAAK,GAAG,MAAM,CAI1D"}
|