velo-plot 3.0.0 → 4.0.0-alpha.1

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 (191) hide show
  1. package/README.md +22 -15
  2. package/dist/ChartCore-KYG2HTcK.js +7474 -0
  3. package/dist/ChartCore-KYG2HTcK.js.map +1 -0
  4. package/dist/GpuChartRenderer-Dxc0hrQA.js +75 -0
  5. package/dist/GpuChartRenderer-Dxc0hrQA.js.map +1 -0
  6. package/dist/{index.core-BmZe2jRQ.js → PluginRegistry-CDf_jcnp.js} +19 -33
  7. package/dist/PluginRegistry-CDf_jcnp.js.map +1 -0
  8. package/dist/SVGDocumentBuilder-C-uLkcFW.js +83 -0
  9. package/dist/SVGDocumentBuilder-C-uLkcFW.js.map +1 -0
  10. package/dist/angular-hooks.js +1 -1
  11. package/dist/angular.js +8 -8
  12. package/dist/{axisFormat-CzumxpCL.js → axisFormat-Sz4WIJfQ.js} +2 -2
  13. package/dist/{axisFormat-CzumxpCL.js.map → axisFormat-Sz4WIJfQ.js.map} +1 -1
  14. package/dist/{chartSyncBridge-DbWrwtyP.js → chartSyncBridge-C1uRy0ZS.js} +12 -11
  15. package/dist/{chartSyncBridge-DbWrwtyP.js.map → chartSyncBridge-C1uRy0ZS.js.map} +1 -1
  16. package/dist/core/ChartStatistics.d.ts +1 -1
  17. package/dist/core/chart/ChartCore.d.ts +19 -20
  18. package/dist/core/chart/ChartFeatureHooks.d.ts +7 -0
  19. package/dist/core/chart/ChartRenderLoop.d.ts +5 -0
  20. package/dist/core/chart/ChartRenderer.d.ts +9 -0
  21. package/dist/core/chart/ChartSetup.d.ts +1 -0
  22. package/dist/core/chart/chartExportPatch.d.ts +2 -0
  23. package/dist/core/chart/exporter/SVGExporter.d.ts +9 -7
  24. package/dist/core/chart/exporter/svg/SVGDocumentBuilder.d.ts +27 -0
  25. package/dist/core/chart/exporter/svg/SVGExportContext.d.ts +147 -0
  26. package/dist/core/chart/exporter/svg/SVGOrchestrator.d.ts +3 -0
  27. package/dist/core/chart/exporter/svg/SVGThemeAdapter.d.ts +22 -0
  28. package/dist/core/chart/exporter/svg/__tests__/testFixtures.d.ts +46 -0
  29. package/dist/core/chart/exporter/svg/__tests__/visualTestUtils.d.ts +12 -0
  30. package/dist/core/chart/exporter/svg/overlay/axes.d.ts +4 -0
  31. package/dist/core/chart/exporter/svg/overlay/border.d.ts +4 -0
  32. package/dist/core/chart/exporter/svg/overlay/errorBars.d.ts +7 -0
  33. package/dist/core/chart/exporter/svg/overlay/grid.d.ts +4 -0
  34. package/dist/core/chart/exporter/svg/overlay/index.d.ts +12 -0
  35. package/dist/core/chart/exporter/svg/overlay/legend.d.ts +4 -0
  36. package/dist/core/chart/exporter/svg/overlay/pluginCharts.d.ts +6 -0
  37. package/dist/core/chart/exporter/svg/overlay/polarGrid.d.ts +4 -0
  38. package/dist/core/chart/exporter/svg/overlay/specialChart.d.ts +15 -0
  39. package/dist/core/chart/exporter/svg/overlay/title.d.ts +4 -0
  40. package/dist/core/chart/exporter/svg/plugins/annotations.d.ts +5 -0
  41. package/dist/core/chart/exporter/svg/plugins/brokenAxis.d.ts +20 -0
  42. package/dist/core/chart/exporter/svg/plugins/latex.d.ts +9 -0
  43. package/dist/core/chart/exporter/svg/plugins/register.d.ts +8 -0
  44. package/dist/core/chart/exporter/svg/plugins/regression.d.ts +33 -0
  45. package/dist/core/chart/exporter/svg/plugins/roi.d.ts +12 -0
  46. package/dist/core/chart/exporter/svg/plugins/tradeMarkers.d.ts +3 -0
  47. package/dist/core/chart/exporter/svg/plugins/types.d.ts +28 -0
  48. package/dist/core/chart/exporter/svg/plugins/watermark.d.ts +13 -0
  49. package/dist/core/chart/exporter/svg/series/band.d.ts +6 -0
  50. package/dist/core/chart/exporter/svg/series/bar.d.ts +6 -0
  51. package/dist/core/chart/exporter/svg/series/boxplot.d.ts +6 -0
  52. package/dist/core/chart/exporter/svg/series/candlestick.d.ts +6 -0
  53. package/dist/core/chart/exporter/svg/series/finitePoints.d.ts +6 -0
  54. package/dist/core/chart/exporter/svg/series/gauge.d.ts +5 -0
  55. package/dist/core/chart/exporter/svg/series/heatmap.d.ts +6 -0
  56. package/dist/core/chart/exporter/svg/series/indicator.d.ts +6 -0
  57. package/dist/core/chart/exporter/svg/series/line.d.ts +12 -0
  58. package/dist/core/chart/exporter/svg/series/polar.d.ts +6 -0
  59. package/dist/core/chart/exporter/svg/series/radar.d.ts +5 -0
  60. package/dist/core/chart/exporter/svg/series/registry.d.ts +10 -0
  61. package/dist/core/chart/exporter/svg/series/sankey.d.ts +5 -0
  62. package/dist/core/chart/exporter/svg/series/scatter.d.ts +1 -0
  63. package/dist/core/chart/exporter/svg/series/ternary.d.ts +7 -0
  64. package/dist/core/chart/exporter/svg/series/waterfall.d.ts +6 -0
  65. package/dist/core/chart/exporter/svg/seriesAtTimestamp.d.ts +4 -0
  66. package/dist/core/chart/exporter/svg/seriesUtils.d.ts +3 -0
  67. package/dist/core/chart/exporter/svg/symbols.d.ts +5 -0
  68. package/dist/core/chart/exporter/svg/tickUtils.d.ts +9 -0
  69. package/dist/core/chart/mountSVGString.d.ts +5 -0
  70. package/dist/core/chart/overlaySeriesRegistry.d.ts +7 -0
  71. package/dist/core/chart/series/SeriesActions.d.ts +1 -0
  72. package/dist/core/chart/series/SeriesBufferLite.d.ts +13 -0
  73. package/dist/core/chart/series/seriesOptionsRegistry.d.ts +8 -0
  74. package/dist/core/chart/series/seriesTypeRegistry.d.ts +5 -0
  75. package/dist/core/chart/types.d.ts +2 -2
  76. package/dist/core/stacked/StackSVGComposer.d.ts +14 -0
  77. package/dist/core/stacked/index.d.ts +3 -2
  78. package/dist/core/stacked/types.d.ts +12 -4
  79. package/dist/createStackedChart-DjA3aJAu.js +2761 -0
  80. package/dist/createStackedChart-DjA3aJAu.js.map +1 -0
  81. package/dist/{hooks-CYPCxoZx.js → hooks-4wQH27r9.js} +7 -7
  82. package/dist/{hooks-CYPCxoZx.js.map → hooks-4wQH27r9.js.map} +1 -1
  83. package/dist/{index-qunX30Xu.js → index-B7PTX94B.js} +2133 -2133
  84. package/dist/index-B7PTX94B.js.map +1 -0
  85. package/dist/{index-BMiZoKmm.js → index-BgrvqltV.js} +67 -67
  86. package/dist/index-BgrvqltV.js.map +1 -0
  87. package/dist/index-Bj-xyXY6.js +582 -0
  88. package/dist/index-Bj-xyXY6.js.map +1 -0
  89. package/dist/index-qhscKTDy.js.map +1 -1
  90. package/dist/index.core.d.ts +8 -6
  91. package/dist/index.d.ts +1 -14
  92. package/dist/plugins/3d.js +3 -1
  93. package/dist/plugins/3d.js.map +1 -1
  94. package/dist/plugins/PluginManager.d.ts +5 -0
  95. package/dist/plugins/analysis.js.map +1 -1
  96. package/dist/plugins/annotations.js +8 -7
  97. package/dist/plugins/annotations.js.map +1 -1
  98. package/dist/plugins/broken-axis.js +198 -152
  99. package/dist/plugins/broken-axis.js.map +1 -1
  100. package/dist/plugins/createPlugin.d.ts +8 -0
  101. package/dist/plugins/debug.js +32 -32
  102. package/dist/plugins/debug.js.map +1 -1
  103. package/dist/plugins/forecasting.js +273 -258
  104. package/dist/plugins/forecasting.js.map +1 -1
  105. package/dist/plugins/gpu.js +2033 -209
  106. package/dist/plugins/gpu.js.map +1 -1
  107. package/dist/plugins/i18n.js +286 -23
  108. package/dist/plugins/i18n.js.map +1 -1
  109. package/dist/plugins/latex.js +766 -207
  110. package/dist/plugins/latex.js.map +1 -1
  111. package/dist/plugins/loading/index.d.ts +1 -2
  112. package/dist/plugins/loading.js +3 -4
  113. package/dist/plugins/ml-integration.js +107 -93
  114. package/dist/plugins/ml-integration.js.map +1 -1
  115. package/dist/plugins/offscreen.js +11 -10
  116. package/dist/plugins/offscreen.js.map +1 -1
  117. package/dist/plugins/radar/types.d.ts +11 -0
  118. package/dist/plugins/radar.js +64 -53
  119. package/dist/plugins/radar.js.map +1 -1
  120. package/dist/plugins/regression.js +254 -256
  121. package/dist/plugins/regression.js.map +1 -1
  122. package/dist/plugins/roi/index.d.ts +2 -0
  123. package/dist/plugins/roi.js +184 -145
  124. package/dist/plugins/roi.js.map +1 -1
  125. package/dist/plugins/snapshot.js +20 -15
  126. package/dist/plugins/snapshot.js.map +1 -1
  127. package/dist/plugins/streaming.js +1 -1
  128. package/dist/plugins/tools.js +1 -1
  129. package/dist/plugins/types.d.ts +4 -0
  130. package/dist/react.js +55 -58
  131. package/dist/react.js.map +1 -1
  132. package/dist/regression-HNdyk1Dm.js +28 -0
  133. package/dist/regression-HNdyk1Dm.js.map +1 -0
  134. package/dist/renderer/ChartSeriesRenderer.d.ts +3 -2
  135. package/dist/renderer/NativeWebGLRenderer.d.ts +2 -1
  136. package/dist/renderer/SVGChartRenderer.d.ts +15 -0
  137. package/dist/renderer/SankeyRenderer.d.ts +1 -0
  138. package/dist/renderer/native/NativeWebGLRenderer.d.ts +5 -1
  139. package/dist/renderer/native/draw.d.ts +2 -47
  140. package/dist/renderer/native/drawCore.d.ts +27 -0
  141. package/dist/renderer/native/drawExtended.d.ts +29 -0
  142. package/dist/renderer/native/frameRenderExtended.d.ts +1 -0
  143. package/dist/renderer/native/frameRenderRegistry.d.ts +27 -0
  144. package/dist/renderer/native/programFactoryCore.d.ts +6 -0
  145. package/dist/renderer/native/programFactoryExtended.d.ts +4 -0
  146. package/dist/renderer/native/utils.d.ts +3 -29
  147. package/dist/renderer/native/utilsCore.d.ts +14 -0
  148. package/dist/renderer/native/utilsExtended.d.ts +17 -0
  149. package/dist/renderer/overlaySeriesExtended.d.ts +1 -0
  150. package/dist/renderer/registerExtendedSeries.d.ts +1 -0
  151. package/dist/renderer/registerSVG.d.ts +5 -0
  152. package/dist/renderer/registerWebGPU.d.ts +2 -0
  153. package/dist/renderer/sankeyLayout.d.ts +29 -0
  154. package/dist/renderer/seriesBufferExtended.d.ts +4 -0
  155. package/dist/scientific/index.d.ts +1 -5
  156. package/dist/scientific/registerScientific.d.ts +1 -0
  157. package/dist/scientific.js +41 -41
  158. package/dist/solid.js +56 -59
  159. package/dist/solid.js.map +1 -1
  160. package/dist/svelte.js +26 -29
  161. package/dist/svelte.js.map +1 -1
  162. package/dist/tickUtils-B_X-ha13.js +41 -0
  163. package/dist/tickUtils-B_X-ha13.js.map +1 -0
  164. package/dist/trading/index.d.ts +1 -4
  165. package/dist/trading/registerTrading.d.ts +3 -0
  166. package/dist/trading.js +42 -42
  167. package/dist/types.d.ts +5 -4
  168. package/dist/velo-plot.full.js +1951 -1275
  169. package/dist/velo-plot.full.js.map +1 -1
  170. package/dist/velo-plot.js +33 -28
  171. package/dist/velo-plot.js.map +1 -1
  172. package/dist/vue/VeloPlot.vue.d.ts +1 -1
  173. package/dist/vue/index.d.ts +33 -33
  174. package/dist/vue.js +17 -20
  175. package/dist/vue.js.map +1 -1
  176. package/package.json +14 -1
  177. package/dist/ChartCore-BpzRvN4Y.js +0 -8467
  178. package/dist/ChartCore-BpzRvN4Y.js.map +0 -1
  179. package/dist/createStackedChart-Dm-YqUT7.js +0 -756
  180. package/dist/createStackedChart-Dm-YqUT7.js.map +0 -1
  181. package/dist/gpuRenderer-BpaMYz-k.js +0 -1848
  182. package/dist/gpuRenderer-BpaMYz-k.js.map +0 -1
  183. package/dist/index-BMiZoKmm.js.map +0 -1
  184. package/dist/index-qunX30Xu.js.map +0 -1
  185. package/dist/index-x4stH3jD.js +0 -282
  186. package/dist/index-x4stH3jD.js.map +0 -1
  187. package/dist/index.core-BmZe2jRQ.js.map +0 -1
  188. package/dist/mockDatafeed-DHIDPcpX.js +0 -515
  189. package/dist/mockDatafeed-DHIDPcpX.js.map +0 -1
  190. package/dist/symbols-DT0eLlpW.js +0 -568
  191. package/dist/symbols-DT0eLlpW.js.map +0 -1
@@ -1,37 +1,300 @@
1
- import { s as o } from "../index-x4stH3jD.js";
2
- import { b as i, L, a as _, c, f as E, d as f, e as m, i as A, j as C, g, h as p, r as u } from "../index-x4stH3jD.js";
3
- const t = {
1
+ const l = {
2
+ locale: "en-US",
3
+ decimalSeparator: ".",
4
+ thousandsSeparator: ",",
5
+ dateFormat: "MM/DD/YYYY",
6
+ timeFormat: "hh:mm:ss a",
7
+ labels: {
8
+ start: "Start",
9
+ pause: "Pause",
10
+ reset: "Reset",
11
+ export: "Export",
12
+ autoScale: "Auto Scale",
13
+ pan: "Pan",
14
+ zoom: "Zoom",
15
+ select: "Select",
16
+ legend: "Legend",
17
+ fps: "FPS",
18
+ points: "points",
19
+ loading: "Loading...",
20
+ noData: "No data",
21
+ error: "Error"
22
+ }
23
+ }, f = {
24
+ locale: "es-ES",
25
+ decimalSeparator: ",",
26
+ thousandsSeparator: ".",
27
+ dateFormat: "DD/MM/YYYY",
28
+ timeFormat: "HH:mm:ss",
29
+ labels: {
30
+ start: "Iniciar",
31
+ pause: "Pausar",
32
+ reset: "Reiniciar",
33
+ export: "Exportar",
34
+ autoScale: "Auto Escala",
35
+ pan: "Mover",
36
+ zoom: "Zoom",
37
+ select: "Seleccionar",
38
+ legend: "Leyenda",
39
+ fps: "FPS",
40
+ points: "puntos",
41
+ loading: "Cargando...",
42
+ noData: "Sin datos",
43
+ error: "Error"
44
+ }
45
+ }, g = {
46
+ locale: "de-DE",
47
+ decimalSeparator: ",",
48
+ thousandsSeparator: ".",
49
+ dateFormat: "DD.MM.YYYY",
50
+ timeFormat: "HH:mm:ss",
51
+ labels: {
52
+ start: "Start",
53
+ pause: "Pause",
54
+ reset: "Zurücksetzen",
55
+ export: "Exportieren",
56
+ autoScale: "Auto-Skalierung",
57
+ pan: "Verschieben",
58
+ zoom: "Zoom",
59
+ select: "Auswählen",
60
+ legend: "Legende",
61
+ fps: "FPS",
62
+ points: "Punkte",
63
+ loading: "Laden...",
64
+ noData: "Keine Daten",
65
+ error: "Fehler"
66
+ }
67
+ }, F = {
68
+ locale: "fr-FR",
69
+ decimalSeparator: ",",
70
+ thousandsSeparator: " ",
71
+ dateFormat: "DD/MM/YYYY",
72
+ timeFormat: "HH:mm:ss",
73
+ labels: {
74
+ start: "Démarrer",
75
+ pause: "Pause",
76
+ reset: "Réinitialiser",
77
+ export: "Exporter",
78
+ autoScale: "Échelle auto",
79
+ pan: "Déplacer",
80
+ zoom: "Zoom",
81
+ select: "Sélectionner",
82
+ legend: "Légende",
83
+ fps: "FPS",
84
+ points: "points",
85
+ loading: "Chargement...",
86
+ noData: "Aucune donnée",
87
+ error: "Erreur"
88
+ }
89
+ }, D = {
90
+ locale: "pt-BR",
91
+ decimalSeparator: ",",
92
+ thousandsSeparator: ".",
93
+ dateFormat: "DD/MM/YYYY",
94
+ timeFormat: "HH:mm:ss",
95
+ labels: {
96
+ start: "Iniciar",
97
+ pause: "Pausar",
98
+ reset: "Reiniciar",
99
+ export: "Exportar",
100
+ autoScale: "Escala Auto",
101
+ pan: "Mover",
102
+ zoom: "Zoom",
103
+ select: "Selecionar",
104
+ legend: "Legenda",
105
+ fps: "FPS",
106
+ points: "pontos",
107
+ loading: "Carregando...",
108
+ noData: "Sem dados",
109
+ error: "Erro"
110
+ }
111
+ }, h = {
112
+ locale: "zh-CN",
113
+ decimalSeparator: ".",
114
+ thousandsSeparator: ",",
115
+ dateFormat: "YYYY/MM/DD",
116
+ timeFormat: "HH:mm:ss",
117
+ labels: {
118
+ start: "开始",
119
+ pause: "暂停",
120
+ reset: "重置",
121
+ export: "导出",
122
+ autoScale: "自动缩放",
123
+ pan: "平移",
124
+ zoom: "缩放",
125
+ select: "选择",
126
+ legend: "图例",
127
+ fps: "FPS",
128
+ points: "点",
129
+ loading: "加载中...",
130
+ noData: "无数据",
131
+ error: "错误"
132
+ }
133
+ }, Y = {
134
+ locale: "ja-JP",
135
+ decimalSeparator: ".",
136
+ thousandsSeparator: ",",
137
+ dateFormat: "YYYY/MM/DD",
138
+ timeFormat: "HH:mm:ss",
139
+ labels: {
140
+ start: "開始",
141
+ pause: "一時停止",
142
+ reset: "リセット",
143
+ export: "エクスポート",
144
+ autoScale: "自動スケール",
145
+ pan: "パン",
146
+ zoom: "ズーム",
147
+ select: "選択",
148
+ legend: "凡例",
149
+ fps: "FPS",
150
+ points: "ポイント",
151
+ loading: "読み込み中...",
152
+ noData: "データなし",
153
+ error: "エラー"
154
+ }
155
+ }, S = {
156
+ "en-US": l,
157
+ en: l,
158
+ "es-ES": f,
159
+ es: f,
160
+ "de-DE": g,
161
+ de: g,
162
+ "fr-FR": F,
163
+ fr: F,
164
+ "pt-BR": D,
165
+ pt: D,
166
+ "zh-CN": h,
167
+ zh: h,
168
+ "ja-JP": Y,
169
+ ja: Y
170
+ }, d = [
171
+ { value: 1e-15, symbol: "f" },
172
+ { value: 1e-12, symbol: "p" },
173
+ { value: 1e-9, symbol: "n" },
174
+ { value: 1e-6, symbol: "µ" },
175
+ { value: 1e-3, symbol: "m" },
176
+ { value: 1, symbol: "" },
177
+ { value: 1e3, symbol: "k" },
178
+ { value: 1e6, symbol: "M" },
179
+ { value: 1e9, symbol: "G" },
180
+ { value: 1e12, symbol: "T" },
181
+ { value: 1e15, symbol: "P" }
182
+ ];
183
+ let m = l;
184
+ function L(a) {
185
+ if (typeof a == "string") {
186
+ const t = S[a];
187
+ t ? m = t : m = { ...l, locale: a };
188
+ } else
189
+ m = { ...l, ...a };
190
+ }
191
+ function H() {
192
+ return m;
193
+ }
194
+ function _(a) {
195
+ return S[a];
196
+ }
197
+ function y(a, t) {
198
+ S[a] = t;
199
+ }
200
+ function M(a) {
201
+ let t;
202
+ a ? typeof a == "string" ? t = S[a] || { ...l, locale: a } : t = { ...l, ...a } : t = m;
203
+ const p = t.decimalSeparator || ".", b = t.thousandsSeparator || ",", E = { ...l.labels, ...t.labels };
204
+ return {
205
+ formatNumber(e, o = 2) {
206
+ if (t.numberFormatter)
207
+ return t.numberFormatter(e, o);
208
+ if (!isFinite(e))
209
+ return e.toString();
210
+ const r = Math.abs(e).toFixed(o).split("."), s = r[0].replace(/\B(?=(\d{3})+(?!\d))/g, b), n = r[1];
211
+ let i = s;
212
+ return n && (i += p + n), e < 0 ? "-" + i : i;
213
+ },
214
+ formatDate(e) {
215
+ if (t.dateFormatter)
216
+ return t.dateFormatter(e);
217
+ const o = t.dateFormat || "YYYY-MM-DD", r = String(e.getDate()).padStart(2, "0"), s = String(e.getMonth() + 1).padStart(2, "0"), n = String(e.getFullYear());
218
+ return o.replace("YYYY", n).replace("MM", s).replace("DD", r);
219
+ },
220
+ formatTime(e) {
221
+ const o = t.timeFormat || "HH:mm:ss", r = e.getHours(), s = r % 12 || 12, n = String(e.getMinutes()).padStart(2, "0"), i = String(e.getSeconds()).padStart(2, "0"), c = r >= 12 ? "PM" : "AM";
222
+ return o.replace("HH", String(r).padStart(2, "0")).replace("hh", String(s).padStart(2, "0")).replace("mm", n).replace("ss", i).replace("a", c.toLowerCase()).replace("A", c);
223
+ },
224
+ formatDateTime(e) {
225
+ return this.formatDate(e) + " " + this.formatTime(e);
226
+ },
227
+ formatWithPrefix(e, o = "") {
228
+ if (e === 0) return "0" + (o ? " " + o : "");
229
+ const r = Math.abs(e);
230
+ let s = d[5];
231
+ for (let u = d.length - 1; u >= 0; u--)
232
+ if (r >= d[u].value * 0.9999) {
233
+ s = d[u];
234
+ break;
235
+ }
236
+ const n = e / s.value, i = this.formatNumber(n, 2), c = s.symbol + o;
237
+ return i + (c ? " " + c : "");
238
+ },
239
+ formatScientific(e, o = 2) {
240
+ if (e === 0) return "0";
241
+ if (!isFinite(e)) return e.toString();
242
+ const r = Math.floor(Math.log10(Math.abs(e))), s = e / Math.pow(10, r);
243
+ return this.formatNumber(s, o) + " × 10" + P(r);
244
+ },
245
+ getLabel(e) {
246
+ return E[e] || e;
247
+ }
248
+ };
249
+ }
250
+ function P(a) {
251
+ const t = {
252
+ "-": "⁻",
253
+ 0: "⁰",
254
+ 1: "¹",
255
+ 2: "²",
256
+ 3: "³",
257
+ 4: "⁴",
258
+ 5: "⁵",
259
+ 6: "⁶",
260
+ 7: "⁷",
261
+ 8: "⁸",
262
+ 9: "⁹"
263
+ };
264
+ return String(a).split("").map((p) => t[p] || p).join("");
265
+ }
266
+ const A = M(), x = {
4
267
  name: "velo-plot-i18n",
5
268
  version: "1.0.0",
6
269
  description: "Internationalization and localization for velo-plot",
7
270
  provides: ["ui"],
8
271
  tags: ["i18n", "l10n", "locale", "language"]
9
272
  };
10
- function s(a = {}) {
273
+ function z(a = {}) {
11
274
  return {
12
- manifest: t,
13
- onInit(e) {
14
- a.locale && o(a.locale);
275
+ manifest: x,
276
+ onInit(t) {
277
+ a.locale && L(a.locale);
15
278
  },
16
- onDestroy(e) {
279
+ onDestroy(t) {
17
280
  }
18
281
  };
19
282
  }
20
283
  export {
21
- i as LOCALE_DE_DE,
22
- L as LOCALE_EN_US,
23
- _ as LOCALE_ES_ES,
24
- c as LOCALE_FR_FR,
25
- E as LOCALE_JA_JP,
26
- f as LOCALE_PT_BR,
27
- m as LOCALE_ZH_CN,
28
- s as PluginI18n,
29
- A as createLocaleFormatter,
30
- s as default,
31
- C as defaultFormatter,
32
- g as getGlobalLocale,
33
- p as getLocale,
34
- u as registerLocale,
35
- o as setGlobalLocale
284
+ g as LOCALE_DE_DE,
285
+ l as LOCALE_EN_US,
286
+ f as LOCALE_ES_ES,
287
+ F as LOCALE_FR_FR,
288
+ Y as LOCALE_JA_JP,
289
+ D as LOCALE_PT_BR,
290
+ h as LOCALE_ZH_CN,
291
+ z as PluginI18n,
292
+ M as createLocaleFormatter,
293
+ z as default,
294
+ A as defaultFormatter,
295
+ H as getGlobalLocale,
296
+ _ as getLocale,
297
+ y as registerLocale,
298
+ L as setGlobalLocale
36
299
  };
37
300
  //# sourceMappingURL=i18n.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"i18n.js","sources":["../../src/plugins/i18n/index.ts"],"sourcesContent":["/**\n * VeloPlot Engine - Internationalization (i18n) Plugin\n * \n * Provides localization support for dates, numbers, and strings.\n * \n * @module plugins/i18n\n */\n\nexport * from \"../../core/locale\";\n\nimport type { PluginManifest, ChartPlugin, PluginContext } from \"../types\";\nimport { setGlobalLocale } from \"../../core/locale\";\n\nexport interface PluginI18nConfig {\n /** Default locale to use */\n locale?: string;\n /** Custom locale definitions */\n customLocales?: Record<string, any>;\n}\n\nconst manifestI18n: PluginManifest = {\n name: \"velo-plot-i18n\",\n version: \"1.0.0\",\n description: \"Internationalization and localization for velo-plot\",\n provides: [\"ui\"],\n tags: [\"i18n\", \"l10n\", \"locale\", \"language\"],\n};\n\n/**\n * VeloPlot i18n Plugin\n * \n * Adds support for multiple languages and local data formatting.\n */\nexport function PluginI18n(config: PluginI18nConfig = {}): ChartPlugin<PluginI18nConfig> {\n return {\n manifest: manifestI18n,\n\n onInit(_ctx: PluginContext) {\n if (config.locale) {\n setGlobalLocale(config.locale);\n }\n },\n\n onDestroy(_ctx: PluginContext) {\n }\n };\n}\n\nexport default PluginI18n;\n"],"names":["manifestI18n","PluginI18n","config","_ctx","setGlobalLocale"],"mappings":";;AAoBA,MAAMA,IAA+B;AAAA,EACjC,MAAM;AAAA,EACN,SAAS;AAAA,EACT,aAAa;AAAA,EACb,UAAU,CAAC,IAAI;AAAA,EACf,MAAM,CAAC,QAAQ,QAAQ,UAAU,UAAU;AAC/C;AAOO,SAASC,EAAWC,IAA2B,IAAmC;AACrF,SAAO;AAAA,IACH,UAAUF;AAAA,IAEV,OAAOG,GAAqB;AACxB,MAAID,EAAO,UACPE,EAAgBF,EAAO,MAAM;AAAA,IAErC;AAAA,IAEA,UAAUC,GAAqB;AAAA,IAC/B;AAAA,EAAA;AAER;"}
1
+ {"version":3,"file":"i18n.js","sources":["../../src/core/locale/index.ts","../../src/plugins/i18n/index.ts"],"sourcesContent":["/**\n * Velo Plot - Internationalization (i18n) Module\n * \n * Provides locale-aware formatting for numbers, dates, and chart UI.\n * Supports custom format functions and predefined locales.\n * \n * @module locale\n */\n\n// ============================================\n// Types\n// ============================================\n\nexport interface LocaleConfig {\n /** Locale identifier (e.g., 'en-US', 'es-ES', 'de-DE') */\n locale: string;\n /** Decimal separator override (auto-detected if not specified) */\n decimalSeparator?: string;\n /** Thousands separator override (auto-detected if not specified) */\n thousandsSeparator?: string;\n /** Date format pattern (e.g., 'DD/MM/YYYY', 'MM/DD/YYYY', 'YYYY-MM-DD') */\n dateFormat?: string;\n /** Time format pattern (e.g., 'HH:mm:ss', 'hh:mm:ss a') */\n timeFormat?: string;\n /** Custom number formatter */\n numberFormatter?: (value: number, decimals?: number) => string;\n /** Custom date formatter */\n dateFormatter?: (date: Date) => string;\n /** Short form labels (used in axis labels) */\n shortLabels?: {\n time?: string;\n value?: string;\n points?: string;\n };\n /** Full form labels (used in tooltips/panels) */\n labels?: {\n start?: string;\n pause?: string;\n reset?: string;\n export?: string;\n autoScale?: string;\n pan?: string;\n zoom?: string;\n select?: string;\n legend?: string;\n fps?: string;\n points?: string;\n loading?: string;\n noData?: string;\n error?: string;\n };\n}\n\nexport interface LocaleFormatter {\n /** Format a number with the locale settings */\n formatNumber(value: number, decimals?: number): string;\n /** Format a date with the locale settings */\n formatDate(date: Date): string;\n /** Format a time with the locale settings */\n formatTime(date: Date): string;\n /** Format a date and time with the locale settings */\n formatDateTime(date: Date): string;\n /** Format a number with SI prefix (k, M, G, etc.) */\n formatWithPrefix(value: number, unit?: string): string;\n /** Format a number in scientific notation */\n formatScientific(value: number, decimals?: number): string;\n /** Get a localized label */\n getLabel(key: keyof NonNullable<LocaleConfig['labels']>): string;\n}\n\n// ============================================\n// Predefined Locales\n// ============================================\n\nexport const LOCALE_EN_US: LocaleConfig = {\n locale: 'en-US',\n decimalSeparator: '.',\n thousandsSeparator: ',',\n dateFormat: 'MM/DD/YYYY',\n timeFormat: 'hh:mm:ss a',\n labels: {\n start: 'Start',\n pause: 'Pause',\n reset: 'Reset',\n export: 'Export',\n autoScale: 'Auto Scale',\n pan: 'Pan',\n zoom: 'Zoom',\n select: 'Select',\n legend: 'Legend',\n fps: 'FPS',\n points: 'points',\n loading: 'Loading...',\n noData: 'No data',\n error: 'Error',\n },\n};\n\nexport const LOCALE_ES_ES: LocaleConfig = {\n locale: 'es-ES',\n decimalSeparator: ',',\n thousandsSeparator: '.',\n dateFormat: 'DD/MM/YYYY',\n timeFormat: 'HH:mm:ss',\n labels: {\n start: 'Iniciar',\n pause: 'Pausar',\n reset: 'Reiniciar',\n export: 'Exportar',\n autoScale: 'Auto Escala',\n pan: 'Mover',\n zoom: 'Zoom',\n select: 'Seleccionar',\n legend: 'Leyenda',\n fps: 'FPS',\n points: 'puntos',\n loading: 'Cargando...',\n noData: 'Sin datos',\n error: 'Error',\n },\n};\n\nexport const LOCALE_DE_DE: LocaleConfig = {\n locale: 'de-DE',\n decimalSeparator: ',',\n thousandsSeparator: '.',\n dateFormat: 'DD.MM.YYYY',\n timeFormat: 'HH:mm:ss',\n labels: {\n start: 'Start',\n pause: 'Pause',\n reset: 'Zurücksetzen',\n export: 'Exportieren',\n autoScale: 'Auto-Skalierung',\n pan: 'Verschieben',\n zoom: 'Zoom',\n select: 'Auswählen',\n legend: 'Legende',\n fps: 'FPS',\n points: 'Punkte',\n loading: 'Laden...',\n noData: 'Keine Daten',\n error: 'Fehler',\n },\n};\n\nexport const LOCALE_FR_FR: LocaleConfig = {\n locale: 'fr-FR',\n decimalSeparator: ',',\n thousandsSeparator: ' ',\n dateFormat: 'DD/MM/YYYY',\n timeFormat: 'HH:mm:ss',\n labels: {\n start: 'Démarrer',\n pause: 'Pause',\n reset: 'Réinitialiser',\n export: 'Exporter',\n autoScale: 'Échelle auto',\n pan: 'Déplacer',\n zoom: 'Zoom',\n select: 'Sélectionner',\n legend: 'Légende',\n fps: 'FPS',\n points: 'points',\n loading: 'Chargement...',\n noData: 'Aucune donnée',\n error: 'Erreur',\n },\n};\n\nexport const LOCALE_PT_BR: LocaleConfig = {\n locale: 'pt-BR',\n decimalSeparator: ',',\n thousandsSeparator: '.',\n dateFormat: 'DD/MM/YYYY',\n timeFormat: 'HH:mm:ss',\n labels: {\n start: 'Iniciar',\n pause: 'Pausar',\n reset: 'Reiniciar',\n export: 'Exportar',\n autoScale: 'Escala Auto',\n pan: 'Mover',\n zoom: 'Zoom',\n select: 'Selecionar',\n legend: 'Legenda',\n fps: 'FPS',\n points: 'pontos',\n loading: 'Carregando...',\n noData: 'Sem dados',\n error: 'Erro',\n },\n};\n\nexport const LOCALE_ZH_CN: LocaleConfig = {\n locale: 'zh-CN',\n decimalSeparator: '.',\n thousandsSeparator: ',',\n dateFormat: 'YYYY/MM/DD',\n timeFormat: 'HH:mm:ss',\n labels: {\n start: '开始',\n pause: '暂停',\n reset: '重置',\n export: '导出',\n autoScale: '自动缩放',\n pan: '平移',\n zoom: '缩放',\n select: '选择',\n legend: '图例',\n fps: 'FPS',\n points: '点',\n loading: '加载中...',\n noData: '无数据',\n error: '错误',\n },\n};\n\nexport const LOCALE_JA_JP: LocaleConfig = {\n locale: 'ja-JP',\n decimalSeparator: '.',\n thousandsSeparator: ',',\n dateFormat: 'YYYY/MM/DD',\n timeFormat: 'HH:mm:ss',\n labels: {\n start: '開始',\n pause: '一時停止',\n reset: 'リセット',\n export: 'エクスポート',\n autoScale: '自動スケール',\n pan: 'パン',\n zoom: 'ズーム',\n select: '選択',\n legend: '凡例',\n fps: 'FPS',\n points: 'ポイント',\n loading: '読み込み中...',\n noData: 'データなし',\n error: 'エラー',\n },\n};\n\n// Predefined locales map\nconst PREDEFINED_LOCALES: Record<string, LocaleConfig> = {\n 'en-US': LOCALE_EN_US,\n 'en': LOCALE_EN_US,\n 'es-ES': LOCALE_ES_ES,\n 'es': LOCALE_ES_ES,\n 'de-DE': LOCALE_DE_DE,\n 'de': LOCALE_DE_DE,\n 'fr-FR': LOCALE_FR_FR,\n 'fr': LOCALE_FR_FR,\n 'pt-BR': LOCALE_PT_BR,\n 'pt': LOCALE_PT_BR,\n 'zh-CN': LOCALE_ZH_CN,\n 'zh': LOCALE_ZH_CN,\n 'ja-JP': LOCALE_JA_JP,\n 'ja': LOCALE_JA_JP,\n};\n\n// ============================================\n// SI Prefixes\n// ============================================\n\nconst SI_PREFIXES = [\n { value: 1e-15, symbol: 'f' },\n { value: 1e-12, symbol: 'p' },\n { value: 1e-9, symbol: 'n' },\n { value: 1e-6, symbol: 'µ' },\n { value: 1e-3, symbol: 'm' },\n { value: 1, symbol: '' },\n { value: 1e3, symbol: 'k' },\n { value: 1e6, symbol: 'M' },\n { value: 1e9, symbol: 'G' },\n { value: 1e12, symbol: 'T' },\n { value: 1e15, symbol: 'P' },\n];\n\n// ============================================\n// Locale Manager\n// ============================================\n\n/** Current global locale */\nlet currentLocale: LocaleConfig = LOCALE_EN_US;\n\n/**\n * Set the global locale for all charts\n */\nexport function setGlobalLocale(localeOrConfig: string | LocaleConfig): void {\n if (typeof localeOrConfig === 'string') {\n const predefined = PREDEFINED_LOCALES[localeOrConfig];\n if (predefined) {\n currentLocale = predefined;\n } else {\n // Try to create a basic locale from the string\n currentLocale = { ...LOCALE_EN_US, locale: localeOrConfig };\n }\n } else {\n currentLocale = { ...LOCALE_EN_US, ...localeOrConfig };\n }\n}\n\n/**\n * Get the current global locale\n */\nexport function getGlobalLocale(): LocaleConfig {\n return currentLocale;\n}\n\n/**\n * Get a predefined locale by name\n */\nexport function getLocale(name: string): LocaleConfig | undefined {\n return PREDEFINED_LOCALES[name];\n}\n\n/**\n * Register a custom locale\n */\nexport function registerLocale(name: string, config: LocaleConfig): void {\n PREDEFINED_LOCALES[name] = config;\n}\n\n// ============================================\n// Locale Formatter Implementation\n// ============================================\n\n/**\n * Create a locale formatter from a configuration\n */\nexport function createLocaleFormatter(config?: LocaleConfig | string): LocaleFormatter {\n let localeConfig: LocaleConfig;\n \n if (!config) {\n localeConfig = currentLocale;\n } else if (typeof config === 'string') {\n localeConfig = PREDEFINED_LOCALES[config] || { ...LOCALE_EN_US, locale: config };\n } else {\n localeConfig = { ...LOCALE_EN_US, ...config };\n }\n\n const decSep = localeConfig.decimalSeparator || '.';\n const thousandsSep = localeConfig.thousandsSeparator || ',';\n const labels = { ...LOCALE_EN_US.labels, ...localeConfig.labels };\n\n return {\n formatNumber(value: number, decimals: number = 2): string {\n if (localeConfig.numberFormatter) {\n return localeConfig.numberFormatter(value, decimals);\n }\n\n if (!isFinite(value)) {\n return value.toString();\n }\n\n // Format the number\n const parts = Math.abs(value).toFixed(decimals).split('.');\n const integerPart = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousandsSep);\n const decimalPart = parts[1];\n\n let result = integerPart;\n if (decimalPart) {\n result += decSep + decimalPart;\n }\n\n return value < 0 ? '-' + result : result;\n },\n\n formatDate(date: Date): string {\n if (localeConfig.dateFormatter) {\n return localeConfig.dateFormatter(date);\n }\n\n const format = localeConfig.dateFormat || 'YYYY-MM-DD';\n const day = String(date.getDate()).padStart(2, '0');\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const year = String(date.getFullYear());\n\n return format\n .replace('YYYY', year)\n .replace('MM', month)\n .replace('DD', day);\n },\n\n formatTime(date: Date): string {\n const format = localeConfig.timeFormat || 'HH:mm:ss';\n const hours24 = date.getHours();\n const hours12 = hours24 % 12 || 12;\n const minutes = String(date.getMinutes()).padStart(2, '0');\n const seconds = String(date.getSeconds()).padStart(2, '0');\n const ampm = hours24 >= 12 ? 'PM' : 'AM';\n\n return format\n .replace('HH', String(hours24).padStart(2, '0'))\n .replace('hh', String(hours12).padStart(2, '0'))\n .replace('mm', minutes)\n .replace('ss', seconds)\n .replace('a', ampm.toLowerCase())\n .replace('A', ampm);\n },\n\n formatDateTime(date: Date): string {\n return this.formatDate(date) + ' ' + this.formatTime(date);\n },\n\n formatWithPrefix(value: number, unit: string = ''): string {\n if (value === 0) return '0' + (unit ? ' ' + unit : '');\n\n const absValue = Math.abs(value);\n \n // Find appropriate prefix\n let selectedPrefix = SI_PREFIXES[5]; // Default to '' (1)\n for (let i = SI_PREFIXES.length - 1; i >= 0; i--) {\n if (absValue >= SI_PREFIXES[i].value * 0.9999) {\n selectedPrefix = SI_PREFIXES[i];\n break;\n }\n }\n\n const scaledValue = value / selectedPrefix.value;\n const formatted = this.formatNumber(scaledValue, 2);\n \n const suffix = selectedPrefix.symbol + unit;\n return formatted + (suffix ? ' ' + suffix : '');\n },\n\n formatScientific(value: number, decimals: number = 2): string {\n if (value === 0) return '0';\n if (!isFinite(value)) return value.toString();\n\n const exp = Math.floor(Math.log10(Math.abs(value)));\n const mantissa = value / Math.pow(10, exp);\n \n return this.formatNumber(mantissa, decimals) + ' × 10' + formatSuperscript(exp);\n },\n\n getLabel(key: keyof NonNullable<LocaleConfig['labels']>): string {\n return labels[key] || key;\n },\n };\n}\n\n/**\n * Format a number as superscript for scientific notation\n */\nfunction formatSuperscript(num: number): string {\n const superscripts: Record<string, string> = {\n '-': '⁻',\n '0': '⁰',\n '1': '¹',\n '2': '²',\n '3': '³',\n '4': '⁴',\n '5': '⁵',\n '6': '⁶',\n '7': '⁷',\n '8': '⁸',\n '9': '⁹',\n };\n return String(num).split('').map(c => superscripts[c] || c).join('');\n}\n\n// ============================================\n// Default Export\n// ============================================\n\nexport const defaultFormatter = createLocaleFormatter();\n","/**\n * VeloPlot Engine - Internationalization (i18n) Plugin\n * \n * Provides localization support for dates, numbers, and strings.\n * \n * @module plugins/i18n\n */\n\nexport * from \"../../core/locale\";\n\nimport type { PluginManifest, ChartPlugin, PluginContext } from \"../types\";\nimport { setGlobalLocale } from \"../../core/locale\";\n\nexport interface PluginI18nConfig {\n /** Default locale to use */\n locale?: string;\n /** Custom locale definitions */\n customLocales?: Record<string, any>;\n}\n\nconst manifestI18n: PluginManifest = {\n name: \"velo-plot-i18n\",\n version: \"1.0.0\",\n description: \"Internationalization and localization for velo-plot\",\n provides: [\"ui\"],\n tags: [\"i18n\", \"l10n\", \"locale\", \"language\"],\n};\n\n/**\n * VeloPlot i18n Plugin\n * \n * Adds support for multiple languages and local data formatting.\n */\nexport function PluginI18n(config: PluginI18nConfig = {}): ChartPlugin<PluginI18nConfig> {\n return {\n manifest: manifestI18n,\n\n onInit(_ctx: PluginContext) {\n if (config.locale) {\n setGlobalLocale(config.locale);\n }\n },\n\n onDestroy(_ctx: PluginContext) {\n }\n };\n}\n\nexport default PluginI18n;\n"],"names":["LOCALE_EN_US","LOCALE_ES_ES","LOCALE_DE_DE","LOCALE_FR_FR","LOCALE_PT_BR","LOCALE_ZH_CN","LOCALE_JA_JP","PREDEFINED_LOCALES","SI_PREFIXES","currentLocale","setGlobalLocale","localeOrConfig","predefined","getGlobalLocale","getLocale","name","registerLocale","config","createLocaleFormatter","localeConfig","decSep","thousandsSep","labels","value","decimals","parts","integerPart","decimalPart","result","date","format","day","month","year","hours24","hours12","minutes","seconds","ampm","unit","absValue","selectedPrefix","i","scaledValue","formatted","suffix","exp","mantissa","formatSuperscript","key","num","superscripts","c","defaultFormatter","manifestI18n","PluginI18n","_ctx"],"mappings":"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"}