@tradecanvas/chart 1.32.0 → 1.35.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.
Files changed (106) hide show
  1. package/README.md +4 -4
  2. package/dist/Chart.d.ts +39 -1
  3. package/dist/Chart.d.ts.map +1 -1
  4. package/dist/{LayoutSession-B8vZsDaL.js → LayoutSession-CbqemKK4.js} +383 -336
  5. package/dist/LayoutSession-CbqemKK4.js.map +1 -0
  6. package/dist/LayoutSession-YDUD_7LQ.cjs +2 -0
  7. package/dist/LayoutSession-YDUD_7LQ.cjs.map +1 -0
  8. package/dist/{i18n-BPt_Qbx8.js → i18n-BbTfjEM4.js} +83 -9
  9. package/dist/i18n-BbTfjEM4.js.map +1 -0
  10. package/dist/i18n-yiJSpIn5.cjs +2 -0
  11. package/dist/i18n-yiJSpIn5.cjs.map +1 -0
  12. package/dist/index.cjs +1 -1
  13. package/dist/index.d.ts +2 -2
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +53 -53
  16. package/dist/widget/ChartWidget.d.ts +35 -8
  17. package/dist/widget/ChartWidget.d.ts.map +1 -1
  18. package/dist/widget/WidgetChartNav.d.ts +9 -2
  19. package/dist/widget/WidgetChartNav.d.ts.map +1 -1
  20. package/dist/widget/WidgetDepthLadder.d.ts +2 -0
  21. package/dist/widget/WidgetDepthLadder.d.ts.map +1 -1
  22. package/dist/widget/WidgetDrawingSidebar.d.ts +9 -0
  23. package/dist/widget/WidgetDrawingSidebar.d.ts.map +1 -1
  24. package/dist/widget/WidgetIndicatorLegend.d.ts +4 -0
  25. package/dist/widget/WidgetIndicatorLegend.d.ts.map +1 -1
  26. package/dist/widget/WidgetIndicatorPicker.d.ts +96 -0
  27. package/dist/widget/WidgetIndicatorPicker.d.ts.map +1 -0
  28. package/dist/widget/WidgetIndicatorSettings.d.ts +51 -23
  29. package/dist/widget/WidgetIndicatorSettings.d.ts.map +1 -1
  30. package/dist/widget/WidgetSelectionToolbar.d.ts +6 -1
  31. package/dist/widget/WidgetSelectionToolbar.d.ts.map +1 -1
  32. package/dist/widget/WidgetStatusBar.d.ts +63 -4
  33. package/dist/widget/WidgetStatusBar.d.ts.map +1 -1
  34. package/dist/widget/WidgetStyles.d.ts.map +1 -1
  35. package/dist/widget/WidgetToolbar.d.ts +9 -11
  36. package/dist/widget/WidgetToolbar.d.ts.map +1 -1
  37. package/dist/widget/WidgetTradeMenu.d.ts +29 -0
  38. package/dist/widget/WidgetTradeMenu.d.ts.map +1 -0
  39. package/dist/widget/drawingHotkeys.d.ts +6 -0
  40. package/dist/widget/drawingHotkeys.d.ts.map +1 -0
  41. package/dist/widget/focusTrap.d.ts +5 -2
  42. package/dist/widget/focusTrap.d.ts.map +1 -1
  43. package/dist/widget/index.cjs +859 -235
  44. package/dist/widget/index.cjs.map +1 -1
  45. package/dist/widget/index.js +2196 -1969
  46. package/dist/widget/index.js.map +1 -1
  47. package/dist/widget/indicatorDefaults.d.ts +18 -0
  48. package/dist/widget/indicatorDefaults.d.ts.map +1 -0
  49. package/dist/widget/indicatorSearch.d.ts +13 -0
  50. package/dist/widget/indicatorSearch.d.ts.map +1 -0
  51. package/dist/widget/indicatorSettingsTabs.d.ts +32 -0
  52. package/dist/widget/indicatorSettingsTabs.d.ts.map +1 -0
  53. package/dist/widget/locales/ar.d.ts.map +1 -1
  54. package/dist/widget/locales/cs.d.ts.map +1 -1
  55. package/dist/widget/locales/da.d.ts.map +1 -1
  56. package/dist/widget/locales/de.d.ts.map +1 -1
  57. package/dist/widget/locales/el.d.ts.map +1 -1
  58. package/dist/widget/locales/en.d.ts +39 -2
  59. package/dist/widget/locales/en.d.ts.map +1 -1
  60. package/dist/widget/locales/es.d.ts.map +1 -1
  61. package/dist/widget/locales/et.d.ts.map +1 -1
  62. package/dist/widget/locales/fa.d.ts.map +1 -1
  63. package/dist/widget/locales/fr.d.ts.map +1 -1
  64. package/dist/widget/locales/he.d.ts.map +1 -1
  65. package/dist/widget/locales/hu.d.ts.map +1 -1
  66. package/dist/widget/locales/id.d.ts.map +1 -1
  67. package/dist/widget/locales/index.cjs +1 -1
  68. package/dist/widget/locales/index.cjs.map +1 -1
  69. package/dist/widget/locales/index.js +1093 -57
  70. package/dist/widget/locales/index.js.map +1 -1
  71. package/dist/widget/locales/it.d.ts.map +1 -1
  72. package/dist/widget/locales/ja.d.ts.map +1 -1
  73. package/dist/widget/locales/ko.d.ts.map +1 -1
  74. package/dist/widget/locales/ms.d.ts.map +1 -1
  75. package/dist/widget/locales/nb.d.ts.map +1 -1
  76. package/dist/widget/locales/nl.d.ts.map +1 -1
  77. package/dist/widget/locales/pl.d.ts.map +1 -1
  78. package/dist/widget/locales/pt.d.ts.map +1 -1
  79. package/dist/widget/locales/ro.d.ts.map +1 -1
  80. package/dist/widget/locales/ru.d.ts.map +1 -1
  81. package/dist/widget/locales/sk.d.ts.map +1 -1
  82. package/dist/widget/locales/sv.d.ts.map +1 -1
  83. package/dist/widget/locales/th.d.ts.map +1 -1
  84. package/dist/widget/locales/tr.d.ts.map +1 -1
  85. package/dist/widget/locales/vi.d.ts.map +1 -1
  86. package/dist/widget/locales/zh.d.ts.map +1 -1
  87. package/dist/widget/locales/zhHant.d.ts.map +1 -1
  88. package/dist/widget/symbolInfoView.d.ts +59 -0
  89. package/dist/widget/symbolInfoView.d.ts.map +1 -0
  90. package/dist/widget/types.d.ts +19 -17
  91. package/dist/widget/types.d.ts.map +1 -1
  92. package/dist/widget/widgetConfig.d.ts +1 -3
  93. package/dist/widget/widgetConfig.d.ts.map +1 -1
  94. package/dist/widget/widgetFeatures.d.ts +1 -1
  95. package/dist/widget/widgetFeatures.d.ts.map +1 -1
  96. package/dist/widget/widgetTimeframes.d.ts +9 -0
  97. package/dist/widget/widgetTimeframes.d.ts.map +1 -1
  98. package/dist/widget/widgetUI.d.ts +6 -9
  99. package/dist/widget/widgetUI.d.ts.map +1 -1
  100. package/package.json +3 -3
  101. package/dist/LayoutSession-B8vZsDaL.js.map +0 -1
  102. package/dist/LayoutSession-Du0WuDJi.cjs +0 -2
  103. package/dist/LayoutSession-Du0WuDJi.cjs.map +0 -1
  104. package/dist/i18n-BPt_Qbx8.js.map +0 -1
  105. package/dist/i18n-DWtAiG7D.cjs +0 -2
  106. package/dist/i18n-DWtAiG7D.cjs.map +0 -1
@@ -1,3 +1,4 @@
1
+ import { PriceScaleMode } from '@tradecanvas/commons';
1
2
  import { RangePreset } from '@tradecanvas/core';
2
3
  import { StatusBarItemSpec } from './types.js';
3
4
  export interface StatusBarRange {
@@ -9,26 +10,80 @@ export interface StatusBarRange {
9
10
  onPreset: (preset: RangePreset) => void;
10
11
  onGoTo: () => void;
11
12
  }
13
+ /** The clock: the time in the display zone, and the zones to pick from. */
14
+ export interface StatusBarClock {
15
+ /** Its tooltip, and its menu's name. */
16
+ label: string;
17
+ /** The time now ("14:05:09") and the zone it is in ("UTC+7"). */
18
+ now: () => {
19
+ time: string;
20
+ zone: string;
21
+ };
22
+ /** The zones to offer, and the one in use. */
23
+ options: () => {
24
+ current: string;
25
+ list: readonly {
26
+ value: string;
27
+ label: string;
28
+ }[];
29
+ };
30
+ onPick: (value: string) => void;
31
+ }
32
+ /** The price scale's switches: percent, log (when the chart offers it), auto. */
33
+ export interface StatusBarScale {
34
+ /** Their names (the group's, and each switch's). */
35
+ labels: {
36
+ group?: string;
37
+ percent: string;
38
+ log: string;
39
+ auto: string;
40
+ };
41
+ /** What the log and auto switches show ('log', 'auto'); the percent sign shows itself. */
42
+ texts?: {
43
+ log: string;
44
+ auto: string;
45
+ };
46
+ onPercent: () => void;
47
+ onLog?: () => void;
48
+ onAuto: () => void;
49
+ }
12
50
  /**
13
51
  * Bottom bar: range presets and "go to date" on the left (when `range` is
14
- * given), connection state and symbol on the right; hosts' own items after
15
- * the presets and before the market's status.
52
+ * given); the market's status, the connection, the clock and the price
53
+ * scale's switches on the right; hosts' own items after the presets and
54
+ * before the market's status.
16
55
  */
17
56
  export declare class WidgetStatusBar {
57
+ private readonly host;
58
+ private readonly extras;
18
59
  private el;
19
60
  private dotEl;
20
61
  private messageEl;
21
- private infoEl;
22
62
  private marketEl;
23
63
  private readonly hostLeft;
24
64
  private readonly hostRight;
25
- constructor(host: HTMLElement, range?: StatusBarRange);
65
+ private clockBtn;
66
+ private clockMenu;
67
+ private scaleBtns;
68
+ /** The scale as last shown: nothing to rewrite when it is the same. */
69
+ private scaleShown;
70
+ constructor(host: HTMLElement, range?: StatusBarRange, extras?: {
71
+ clock?: StatusBarClock;
72
+ scale?: StatusBarScale;
73
+ });
26
74
  update(state: {
27
75
  connectionState: string;
28
76
  message: string;
29
77
  symbol: string;
30
78
  timeframe: string;
31
79
  }): void;
80
+ /** The clock to the time now: the widget calls it each second. */
81
+ tick(): void;
82
+ /** The price scale's switches as the chart is now: its mode, and whether it fits itself. */
83
+ setScale(state: {
84
+ mode: PriceScaleMode;
85
+ auto: boolean;
86
+ }): void;
32
87
  /** The market's status (open or closed); hidden for a market around the clock. */
33
88
  setMarket(state: 'open' | 'closed' | 'always', text: string): void;
34
89
  /** A host's own item: text, or a button when it has `onClick`. */
@@ -36,6 +91,10 @@ export declare class WidgetStatusBar {
36
91
  /** The holder of hosts' own items on the left or the right. */
37
92
  hostSlot(side: 'left' | 'right'): HTMLDivElement;
38
93
  destroy(): void;
94
+ private buildClock;
95
+ /** The zones over the clock, the one in use ticked. */
96
+ private toggleZones;
97
+ private buildScale;
39
98
  private hostGroup;
40
99
  private buildRange;
41
100
  }
@@ -1 +1 @@
1
- {"version":3,"file":"WidgetStatusBar.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetStatusBar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,SAAS,WAAW,EAAE,CAAC;IAChC,8DAA8D;IAC9D,YAAY,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;IACpD,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;IACxC,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED;;;;GAIG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,EAAE,CAAiB;IAC3B,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;IAC1C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiB;gBAE/B,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,cAAc;IA0CrD,MAAM,CAAC,KAAK,EAAE;QAAE,eAAe,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAYpG,kFAAkF;IAClF,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAMlE,kEAAkE;IAClE,WAAW,CAAC,IAAI,EAAE,iBAAiB,GAAG,WAAW;IAoBjD,+DAA+D;IAC/D,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,cAAc;IAIhD,OAAO,IAAI,IAAI;IAIf,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,UAAU;CA6BnB"}
1
+ {"version":3,"file":"WidgetStatusBar.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetStatusBar.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"WidgetStyles.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetStyles.ts"],"names":[],"mappings":"AAOA;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAYzC;AAED,wBAAgB,kBAAkB,IAAI,IAAI,CAQzC"}
1
+ {"version":3,"file":"WidgetStyles.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetStyles.ts"],"names":[],"mappings":"AAQA;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAazC;AAED,wBAAgB,kBAAkB,IAAI,IAAI,CAQzC"}
@@ -11,7 +11,6 @@ export declare class WidgetToolbar {
11
11
  private t;
12
12
  private el;
13
13
  private chartTypeDropdown;
14
- private indicatorDropdown;
15
14
  private tfGroup;
16
15
  private tfDropdown;
17
16
  private tfFavorites;
@@ -19,8 +18,6 @@ export declare class WidgetToolbar {
19
18
  private readonly uid;
20
19
  private tfRendered;
21
20
  private themeBtn;
22
- /** Indicator templates' names, listed atop the indicators menu. */
23
- private indicatorTemplates;
24
21
  private fullscreenBtn;
25
22
  /** Where hosts' own buttons go: after the chart controls, and before the panel buttons. */
26
23
  private hostLeft;
@@ -31,6 +28,9 @@ export declare class WidgetToolbar {
31
28
  private resizeObserver;
32
29
  private moreBtn;
33
30
  private fitFrame;
31
+ private undoBtn;
32
+ private redoBtn;
33
+ private trade;
34
34
  /**
35
35
  * `layer`: where the toolbar's menus open, over the page (the widget's
36
36
  * overlay layer), so no box around the widget clips them. Without one they
@@ -64,6 +64,10 @@ export declare class WidgetToolbar {
64
64
  setSymbolSearch(on: boolean): void;
65
65
  /** No separator left at an edge or next to another once buttons are switched off. */
66
66
  tidy(): void;
67
+ /** What undo and redo can do now: each button is off while there is nothing for it. */
68
+ setHistory(canUndo: boolean, canRedo: boolean): void;
69
+ /** The widget this toolbar is in, where its switches and menus live. */
70
+ private rootEl;
67
71
  /** Show a panel button (by its role: 'account', 'objects'…) as on or off. */
68
72
  setActive(role: string, on: boolean): void;
69
73
  /** The layout open now on its button (`null`: none saved yet), with a dot while it has unsaved changes. */
@@ -82,14 +86,8 @@ export declare class WidgetToolbar {
82
86
  /** The custom-interval field: Enter or + adds it; text that isn't an interval is marked and kept. */
83
87
  private wireCustomTimeframe;
84
88
  private renderTimeframes;
85
- /**
86
- * The indicator templates to list (names), after one is saved or deleted.
87
- * `keepFocus`: focus was in the menu (a delete), so it goes to "Save…".
88
- */
89
- setIndicatorTemplates(names: readonly string[], keepFocus?: boolean): void;
90
- /** Templates atop the indicators menu: apply one, delete one, save the chart's. */
91
- private templatesMenuHtml;
92
- private buildIndicatorMenu;
89
+ /** Whether the indicators dialog is open, on its button. */
90
+ setIndicatorsOpen(open: boolean): void;
93
91
  update(state: WidgetState): void;
94
92
  private sep;
95
93
  private spacer;
@@ -1 +1 @@
1
- {"version":3,"file":"WidgetToolbar.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetToolbar.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WidgetToolbar.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetToolbar.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import { ToolbarCallbacks } from './types.js';
2
+ import { Translator } from './i18n.js';
3
+ /**
4
+ * The toolbar's Trade menu: a new order, the brackets, the depth ladder and
5
+ * the account panel, in one button. Each item goes with its own switches,
6
+ * and the button with them all.
7
+ */
8
+ export declare class WidgetTradeMenu {
9
+ private readonly items;
10
+ private readonly t;
11
+ private readonly root;
12
+ readonly button: HTMLButtonElement;
13
+ private menu;
14
+ /** The panels open now, ticked in the menu. */
15
+ private open;
16
+ /** A Trade menu for these callbacks, or `null` when the host gave none of them. */
17
+ static create(callbacks: ToolbarCallbacks, t: Translator, root: () => HTMLElement, anchorOf: (btn: HTMLElement) => HTMLElement): WidgetTradeMenu | null;
18
+ private constructor();
19
+ /** Hide the button once every item in it is switched off. */
20
+ tidy(): void;
21
+ /** Tick a panel (`'ladder'`, `'account'`) while it is open; other roles are not the menu's. */
22
+ setOpen(role: string, on: boolean): void;
23
+ destroy(): void;
24
+ /** Whether any of `parts` is switched off on the widget. */
25
+ private isOff;
26
+ /** The menu under `anchor`: the tools not switched off, the open panels ticked. */
27
+ private toggle;
28
+ }
29
+ //# sourceMappingURL=WidgetTradeMenu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WidgetTradeMenu.d.ts","sourceRoot":"","sources":["../../src/widget/WidgetTradeMenu.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAInD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AA8B5C;;;;GAIG;AACH,qBAAa,eAAe;IAkBxB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAnBvB,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IACnC,OAAO,CAAC,IAAI,CAAkC;IAC9C,+CAA+C;IAC/C,OAAO,CAAC,IAAI,CAAsB;IAElC,mFAAmF;IACnF,MAAM,CAAC,MAAM,CACX,SAAS,EAAE,gBAAgB,EAC3B,CAAC,EAAE,UAAU,EACb,IAAI,EAAE,MAAM,WAAW,EACvB,QAAQ,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,WAAW,GAC1C,eAAe,GAAG,IAAI;IAKzB,OAAO;IAoBP,6DAA6D;IAC7D,IAAI,IAAI,IAAI;IAIZ,+FAA+F;IAC/F,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,GAAG,IAAI;IAOxC,OAAO,IAAI,IAAI;IAKf,4DAA4D;IAC5D,OAAO,CAAC,KAAK;IAKb,mFAAmF;IACnF,OAAO,CAAC,MAAM;CAkBf"}
@@ -0,0 +1,6 @@
1
+ import { DrawingToolType } from '@tradecanvas/commons';
2
+ /** Alt + a letter picks a drawing tool (by key position, so it works on any layout). */
3
+ export declare const TOOL_HOTKEYS: Readonly<Record<string, DrawingToolType>>;
4
+ /** Each tool's shortcut as its menu writes it ("Alt+T"). */
5
+ export declare function toolShortcuts(): Partial<Record<DrawingToolType, string>>;
6
+ //# sourceMappingURL=drawingHotkeys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drawingHotkeys.d.ts","sourceRoot":"","sources":["../../src/widget/drawingHotkeys.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D,wFAAwF;AACxF,eAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAOlE,CAAC;AAEF,4DAA4D;AAC5D,wBAAgB,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAIxE"}
@@ -1,8 +1,11 @@
1
1
  /** What Tab can land on inside a dialog. */
2
2
  export declare const FOCUSABLE = "button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])";
3
3
  /**
4
- * Keep Tab inside `container` (a modal dialog): from its last control Tab
5
- * goes to its first, and Shift+Tab the other way. Call from its keydown.
4
+ * Keep Tab inside `container` (a modal dialog): past its last stop Tab goes
5
+ * to its first, and Shift+Tab the other way. "Past" counts a control Tab
6
+ * skips over (`tabindex="-1"`, a list row's star) after the last stop or
7
+ * before the first: from there the browser would leave the dialog. Call from
8
+ * its keydown.
6
9
  */
7
10
  export declare function keepTabInside(e: KeyboardEvent, container: HTMLElement): void;
8
11
  //# sourceMappingURL=focusTrap.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"focusTrap.d.ts","sourceRoot":"","sources":["../../src/widget/focusTrap.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,eAAO,MAAM,SAAS,uIAAqI,CAAC;AAE5J;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,GAAG,IAAI,CAe5E"}
1
+ {"version":3,"file":"focusTrap.d.ts","sourceRoot":"","sources":["../../src/widget/focusTrap.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,eAAO,MAAM,SAAS,uIAAqI,CAAC;AAE5J;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,GAAG,IAAI,CAiB5E"}