@j2inn/fin5-ui-utils 5.2.2-beta.0 → 5.2.2-beta.10

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 (43) hide show
  1. package/dist/index.d.ts +4 -0
  2. package/dist/index.js +4 -0
  3. package/dist/index.js.map +1 -1
  4. package/dist/react/components/charts/QRCode.d.ts +2 -2
  5. package/dist/react/components/charts/QRCode.js +2 -1
  6. package/dist/react/components/charts/QRCode.js.map +1 -1
  7. package/dist/react/components/charts/line-bar/Chart.d.ts +166 -0
  8. package/dist/react/components/charts/line-bar/Chart.js +443 -0
  9. package/dist/react/components/charts/line-bar/Chart.js.map +1 -0
  10. package/dist/react/components/charts/line-bar/HGridChart.d.ts +58 -0
  11. package/dist/react/components/charts/line-bar/HGridChart.js +289 -0
  12. package/dist/react/components/charts/line-bar/HGridChart.js.map +1 -0
  13. package/dist/react/components/charts/line-bar/ZincGridChart.d.ts +12 -0
  14. package/dist/react/components/charts/line-bar/ZincGridChart.js +24 -0
  15. package/dist/react/components/charts/line-bar/ZincGridChart.js.map +1 -0
  16. package/dist/react/components/makeCustomElement.d.ts +6 -2
  17. package/dist/react/components/makeCustomElement.js +22 -14
  18. package/dist/react/components/makeCustomElement.js.map +1 -1
  19. package/dist/react/hooks/useScreenSize.d.ts +8 -0
  20. package/dist/react/hooks/useScreenSize.js +31 -0
  21. package/dist/react/hooks/useScreenSize.js.map +1 -0
  22. package/dist_es/index.d.ts +4 -0
  23. package/dist_es/index.js +4 -0
  24. package/dist_es/index.js.map +1 -1
  25. package/dist_es/react/components/charts/QRCode.d.ts +2 -2
  26. package/dist_es/react/components/charts/QRCode.js +1 -2
  27. package/dist_es/react/components/charts/QRCode.js.map +1 -1
  28. package/dist_es/react/components/charts/line-bar/Chart.d.ts +166 -0
  29. package/dist_es/react/components/charts/line-bar/Chart.js +416 -0
  30. package/dist_es/react/components/charts/line-bar/Chart.js.map +1 -0
  31. package/dist_es/react/components/charts/line-bar/HGridChart.d.ts +58 -0
  32. package/dist_es/react/components/charts/line-bar/HGridChart.js +251 -0
  33. package/dist_es/react/components/charts/line-bar/HGridChart.js.map +1 -0
  34. package/dist_es/react/components/charts/line-bar/ZincGridChart.d.ts +12 -0
  35. package/dist_es/react/components/charts/line-bar/ZincGridChart.js +17 -0
  36. package/dist_es/react/components/charts/line-bar/ZincGridChart.js.map +1 -0
  37. package/dist_es/react/components/makeCustomElement.d.ts +6 -2
  38. package/dist_es/react/components/makeCustomElement.js +22 -14
  39. package/dist_es/react/components/makeCustomElement.js.map +1 -1
  40. package/dist_es/react/hooks/useScreenSize.d.ts +8 -0
  41. package/dist_es/react/hooks/useScreenSize.js +29 -0
  42. package/dist_es/react/hooks/useScreenSize.js.map +1 -0
  43. package/package.json +4 -2
@@ -0,0 +1,251 @@
1
+ /*
2
+ * Copyright (c) 2025, J2 Innovations. All Rights Reserved
3
+ */
4
+ import * as am5 from '@amcharts/amcharts5';
5
+ import { HDict, HGrid, Kind, valueIsKind, } from 'haystack-core';
6
+ import { day, hour, julianMonth, week, year } from 'haystack-units/dist';
7
+ import React, { memo, useMemo } from 'react';
8
+ import { useTheme } from 'react-jss';
9
+ import useScreenSize from '../../../hooks/useScreenSize';
10
+ import { AxisPlacement, Chart, LegendPlacement, UnitPlacement, } from './Chart';
11
+ var SeriesType;
12
+ (function (SeriesType) {
13
+ SeriesType["line"] = "line";
14
+ SeriesType["bar"] = "bar";
15
+ SeriesType["stackedBar"] = "stackedBar";
16
+ })(SeriesType || (SeriesType = {}));
17
+ var SeriesVariant;
18
+ (function (SeriesVariant) {
19
+ SeriesVariant["dashed"] = "dashed";
20
+ })(SeriesVariant || (SeriesVariant = {}));
21
+ export const rollupDurationToTimeInterval = (value) => {
22
+ let unit;
23
+ switch (value?.unit) {
24
+ case hour:
25
+ unit = 'hour';
26
+ break;
27
+ case day:
28
+ unit = 'day';
29
+ break;
30
+ case week:
31
+ unit = 'week';
32
+ break;
33
+ case julianMonth:
34
+ unit = 'month';
35
+ break;
36
+ case year:
37
+ unit = 'year';
38
+ break;
39
+ }
40
+ return { count: value?.value ?? 1, timeUnit: unit ?? 'hour' };
41
+ };
42
+ export const isLineSeries = (colMetadata) => colMetadata?.series?.value === SeriesType.line;
43
+ export const isStackedBarSeries = (colMetadata) => colMetadata?.series?.value === SeriesType.stackedBar;
44
+ export const isBarSeries = (colMetadata) => colMetadata?.series?.value === SeriesType.bar;
45
+ const isDottedSeriesVariant = (colMetadata) => SeriesVariant.dashed === colMetadata?.variant?.value;
46
+ const getSeriesColor = (colMetadata) => colMetadata?.color ? am5.color(colMetadata.color.value) : undefined;
47
+ const getSeriesDis = (colMetadata) => colMetadata?.dis?.value;
48
+ const getSeriesUnit = (colMetadata) => colMetadata?.unit?.value;
49
+ const getHideAxis = (colMetadata) => colMetadata?.hideAxis?.value;
50
+ const getAxisPlacement = (colMetadata) => AxisPlacement[colMetadata?.axisPlacement?.value];
51
+ export const colNameToDisProvider = (grid, translateLabel) => (colName) => {
52
+ if (translateLabel) {
53
+ const label = translateLabel(colName);
54
+ if (label) {
55
+ return label;
56
+ }
57
+ }
58
+ const colMetadata = grid.getColumn(colName)?.meta;
59
+ if (colMetadata?.dis) {
60
+ return colMetadata.dis.value;
61
+ }
62
+ return colName;
63
+ };
64
+ export const splitBarAndLineSeriesCols = (grid) => {
65
+ const barSeries = new Set();
66
+ const stackedBarSeries = new Set();
67
+ const lineSeries = new Set();
68
+ grid.getColumns().forEach((column) => {
69
+ const colMetadata = column.meta;
70
+ if (isLineSeries(colMetadata)) {
71
+ lineSeries.add(column.name);
72
+ }
73
+ else if (isBarSeries(colMetadata)) {
74
+ barSeries.add(column.name);
75
+ }
76
+ else if (isStackedBarSeries(colMetadata)) {
77
+ stackedBarSeries.add(column.name);
78
+ }
79
+ });
80
+ return {
81
+ barSeries,
82
+ stackedBarSeries,
83
+ lineSeries,
84
+ };
85
+ };
86
+ export const getBarSeriesRowData = (row, metadata, colName, barSeriesData) => {
87
+ if (!barSeriesData.has(colName)) {
88
+ const series = {
89
+ seriesName: colName,
90
+ dis: getSeriesDis(metadata),
91
+ unit: getSeriesUnit(metadata),
92
+ hideAxis: getHideAxis(metadata),
93
+ axisPlacement: getAxisPlacement(metadata),
94
+ data: [],
95
+ };
96
+ const seriesColor = getSeriesColor(metadata);
97
+ if (seriesColor) {
98
+ series.stroke = seriesColor;
99
+ }
100
+ barSeriesData.set(colName, series);
101
+ }
102
+ barSeriesData.get(colName)?.data.push({
103
+ ts: row.get('ts').date.getTime(),
104
+ value: row.get(colName)?.value,
105
+ });
106
+ };
107
+ export const addLineSeriesRowData = (row, metadata, colName, lineSeriesData) => {
108
+ if (!lineSeriesData.has(colName)) {
109
+ const series = {
110
+ seriesName: colName,
111
+ dis: getSeriesDis(metadata),
112
+ unit: getSeriesUnit(metadata),
113
+ hideAxis: getHideAxis(metadata),
114
+ axisPlacement: getAxisPlacement(metadata),
115
+ data: [],
116
+ strokeSettings: {
117
+ strokeWidth: 2,
118
+ strokeDasharray: isDottedSeriesVariant(metadata)
119
+ ? [3, 3]
120
+ : undefined,
121
+ },
122
+ };
123
+ const seriesColor = getSeriesColor(metadata);
124
+ if (seriesColor && series.strokeSettings) {
125
+ series.strokeSettings.stroke = seriesColor;
126
+ }
127
+ lineSeriesData.set(colName, series);
128
+ }
129
+ lineSeriesData.get(colName)?.data.push({
130
+ ts: row.get('ts').date.getTime(),
131
+ value: row.get(colName)?.value,
132
+ });
133
+ };
134
+ /**
135
+ * Returns the numeric value of an Haystack Value object (if numeric)
136
+ * @param val Haystack value
137
+ * @returns the numeric value:
138
+ * - `HNum` > numeric value
139
+ * - `HDate` > time value in milliseconds since midnight, January 1, 1970 UTC
140
+ * - `HTime` > time value in milliseconds since midnight, January 1, 1970 UTC
141
+ * - `HBool` > 1 if `val` is `true`, `false` otherwise
142
+ * - `HDateTime` > time value in milliseconds since midnight, January 1, 1970 UTC
143
+ */
144
+ const getHValValueNumber = (val) => {
145
+ if (valueIsKind(val, Kind.Number)) {
146
+ return val.value;
147
+ }
148
+ if (valueIsKind(val, Kind.Date)) {
149
+ return val.date.getTime();
150
+ }
151
+ if (valueIsKind(val, Kind.Time)) {
152
+ return val.date.getTime();
153
+ }
154
+ if (valueIsKind(val, Kind.Bool)) {
155
+ return val.value ? 1 : 0;
156
+ }
157
+ if (valueIsKind(val, Kind.DateTime)) {
158
+ return val.date.getTime();
159
+ }
160
+ throw new Error(`getHValValue: ${val.getKind()} not supported`);
161
+ };
162
+ export const calculateDefaultTimeInterval = (timeRange) => {
163
+ const diffTime = Math.abs(timeRange[1].getTime() - timeRange[0].getTime());
164
+ const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));
165
+ return { count: diffDays ? diffDays : 1, timeUnit: 'hour' };
166
+ };
167
+ /**
168
+ * A component that renders a chart containing multiple series
169
+ * of different kinds, taking all the data and configuration from an HGrid.
170
+ */
171
+ export const HGridChart = memo(function HGridChartComponent({ className, data, timeRange, timeInterval = calculateDefaultTimeInterval(timeRange), unitPlacement = UnitPlacement.axis, legendPlacement = LegendPlacement.right, translateLabel = undefined, DOMtargetId, }) {
172
+ const theme = useTheme();
173
+ const { barSeriesData, stackedBarSeriesData, lineSeriesData, rangesData } = useMemo(() => {
174
+ if (data === undefined) {
175
+ return {
176
+ barSeriesData: [],
177
+ stackedBarSeriesData: [],
178
+ lineSeriesData: [],
179
+ rangesData: [],
180
+ };
181
+ }
182
+ const gridMetadata = data.meta;
183
+ const { barSeries, stackedBarSeries, lineSeries } = splitBarAndLineSeriesCols(data);
184
+ const barSeriesData = new Map();
185
+ const stackedBarSeriesData = new Map();
186
+ const lineSeriesData = new Map();
187
+ data.getRows().forEach((row) => {
188
+ if (stackedBarSeries.size > 0) {
189
+ stackedBarSeries.forEach((colName) => {
190
+ getBarSeriesRowData(row, data.getColumn(colName)?.meta ?? HDict.make(), colName, stackedBarSeriesData);
191
+ });
192
+ }
193
+ if (barSeries.size > 0) {
194
+ barSeries.forEach((colName) => {
195
+ getBarSeriesRowData(row, data.getColumn(colName)?.meta ?? HDict.make(), colName, barSeriesData);
196
+ });
197
+ }
198
+ if (lineSeries.size > 0) {
199
+ lineSeries.forEach((lineSeriesColName) => {
200
+ addLineSeriesRowData(row, data.getColumn(lineSeriesColName)?.meta ??
201
+ HDict.make(), lineSeriesColName, lineSeriesData);
202
+ });
203
+ }
204
+ });
205
+ const rangesData = gridMetadata.ranges?.map((rangeData) => {
206
+ const result = {
207
+ startValue: getHValValueNumber(rangeData.startValue),
208
+ endValue: getHValValueNumber(rangeData.endValue),
209
+ color: getSeriesColor(rangeData),
210
+ tooltip: rangeData.dis?.value,
211
+ opacity: rangeData.opacity?.value,
212
+ };
213
+ return result;
214
+ }) ?? [];
215
+ return {
216
+ barSeriesData: Array.from(barSeriesData.values()),
217
+ stackedBarSeriesData: Array.from(stackedBarSeriesData.values()),
218
+ lineSeriesData: Array.from(lineSeriesData.values()),
219
+ rangesData,
220
+ };
221
+ }, [data]);
222
+ const screenSize = useScreenSize();
223
+ const effectiveLegendPlacement = useMemo(() => {
224
+ const MIN_WIDTH = 1024;
225
+ if (screenSize.width >= MIN_WIDTH) {
226
+ return legendPlacement;
227
+ }
228
+ switch (legendPlacement) {
229
+ case LegendPlacement.left:
230
+ return LegendPlacement.top;
231
+ case LegendPlacement.right:
232
+ return LegendPlacement.bottom;
233
+ }
234
+ return legendPlacement;
235
+ }, [legendPlacement, screenSize.width]);
236
+ return (React.createElement("div", { className: className },
237
+ React.createElement(Chart, { DOMtargetId: DOMtargetId, cursor: true, legendPlacement: effectiveLegendPlacement, unitPlacement: unitPlacement, numberFormat: { maximumFractionDigits: 0 }, barSeriesData: barSeriesData, rangesData: rangesData, translateLabel: colNameToDisProvider(data ?? HGrid.make(), translateLabel), stackedBarSeriesData: stackedBarSeriesData, lineSeriesData: lineSeriesData, gridSettings: {
238
+ stroke: am5.color(theme.borderColor),
239
+ }, dateField: 'ts', baseInterval: timeInterval, tooltipSettings: {
240
+ fontSize: '0.9rem',
241
+ }, legendLabelsSettings: {
242
+ fill: am5.color(theme.textColor),
243
+ fontSize: '0.9rem',
244
+ }, legendMarkersSettings: {
245
+ width: 8,
246
+ height: 8,
247
+ rounded: true,
248
+ } })));
249
+ });
250
+ export default HGridChart;
251
+ //# sourceMappingURL=HGridChart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HGridChart.js","sourceRoot":"","sources":["../../../../../src/react/components/charts/line-bar/HGridChart.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import { HGridChartProps } from './HGridChart';
3
+ export declare type ZincGridChartProps = Omit<HGridChartProps, 'data'> & {
4
+ data: string;
5
+ };
6
+ /**
7
+ * This component wraps the HGridChart component and allows using Zinc
8
+ * data instead of an HGrid. This should help using the component inside,
9
+ * for example, the Graphic Builder, where finstack returns an HaystackGrid
10
+ * instead of haystack-core types.
11
+ */
12
+ export declare const ZincGridChart: React.FC<ZincGridChartProps>;
@@ -0,0 +1,17 @@
1
+ import { Kind, valueIsKind, ZincReader } from 'haystack-core';
2
+ import React from 'react';
3
+ import HGridChart from './HGridChart';
4
+ /**
5
+ * This component wraps the HGridChart component and allows using Zinc
6
+ * data instead of an HGrid. This should help using the component inside,
7
+ * for example, the Graphic Builder, where finstack returns an HaystackGrid
8
+ * instead of haystack-core types.
9
+ */
10
+ export const ZincGridChart = ({ data, ...props }) => {
11
+ const parsedData = ZincReader.readValue(data);
12
+ if (valueIsKind(parsedData, Kind.Grid)) {
13
+ return React.createElement(HGridChart, { data: parsedData, ...props });
14
+ }
15
+ throw new Error('Invalid Zinc data, could not parse a Grid');
16
+ };
17
+ //# sourceMappingURL=ZincGridChart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ZincGridChart.js","sourceRoot":"","sources":["../../../../../src/react/components/charts/line-bar/ZincGridChart.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAS,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AACpE,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,UAA+B,MAAM,cAAc,CAAA;AAM1D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAiC,CAAC,EAC3D,IAAI,EACJ,GAAG,KAAK,EACR,EAAE,EAAE;IACJ,MAAM,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;IAC7C,IAAI,WAAW,CAAQ,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;QAC9C,OAAO,oBAAC,UAAU,IAAC,IAAI,EAAE,UAAU,KAAM,KAAK,GAAI,CAAA;KAClD;IACD,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAA;AAC7D,CAAC,CAAA"}
@@ -1,12 +1,16 @@
1
1
  import React from 'react';
2
+ interface CustomElementOptions {
3
+ useShadowDom?: boolean;
4
+ }
2
5
  /**
3
6
  * Generate a custom element constructor that wraps the given react component.
4
7
  */
5
- export declare const makeCustomElement: <T extends object>(Component: React.FC<T>) => CustomElementConstructor;
8
+ export declare const makeCustomElement: <T extends object>(Component: React.FC<T>, options?: CustomElementOptions) => CustomElementConstructor;
6
9
  /**
7
10
  * Create a custom element wrapping a React component and register it.
8
11
  * @param webComponentName the name of the Web component (tag name)
9
12
  * @param ReactComponent the React component to wrap
10
13
  * @returns
11
14
  */
12
- export declare const registerReactWebComponent: <T extends object>(webComponentName: string, ReactComponent: React.FC<T>) => void;
15
+ export declare const registerReactWebComponent: <T extends object>(webComponentName: string, ReactComponent: React.FC<T>, options?: CustomElementOptions) => void;
16
+ export {};
@@ -13,7 +13,7 @@ const defaultTheme = GenerateTheme().light;
13
13
  /**
14
14
  * Generate a custom element constructor that wraps the given react component.
15
15
  */
16
- export const makeCustomElement = (Component) => {
16
+ export const makeCustomElement = (Component, options) => {
17
17
  return class extends HTMLElement {
18
18
  static get observedAttributes() {
19
19
  return ['props'];
@@ -26,9 +26,17 @@ export const makeCustomElement = (Component) => {
26
26
  this._locale = value;
27
27
  this.render();
28
28
  }
29
+ _appRootStore;
30
+ get appRootStore() {
31
+ return this._appRootStore ?? {};
32
+ }
33
+ set appRootStore(value) {
34
+ this._appRootStore = value;
35
+ this.render();
36
+ }
29
37
  _appStore;
30
38
  get appStore() {
31
- return this._appStore;
39
+ return this._appStore ?? {};
32
40
  }
33
41
  set appStore(value) {
34
42
  this._appStore = value;
@@ -72,7 +80,10 @@ export const makeCustomElement = (Component) => {
72
80
  super();
73
81
  const mountPoint = document.createElement('div');
74
82
  mountPoint.setAttribute('style', 'display: contents;');
75
- this.attachShadow({ mode: 'open' }).appendChild(mountPoint);
83
+ const base = options?.useShadowDom
84
+ ? this.attachShadow({ mode: 'open' })
85
+ : this;
86
+ base.appendChild(mountPoint);
76
87
  this.root = createRoot(mountPoint);
77
88
  this.jss = create({
78
89
  insertionPoint: mountPoint,
@@ -88,15 +99,12 @@ export const makeCustomElement = (Component) => {
88
99
  this.root.unmount();
89
100
  }
90
101
  render() {
91
- if (this.client) {
92
- this.root.render(React.createElement(AppRootStoreContext.Provider, { value: {} },
93
- React.createElement(AppStoreContext.Provider, { value: {} },
94
- React.createElement(ClientContext.Provider, { value: this.client },
95
- React.createElement(ThemeProvider, { theme: this.theme },
96
- React.createElement(I18NContext.Provider, { value: this.i18n },
97
- React.createElement(JssProvider, { jss: this.jss },
98
- React.createElement(Component, { ...this.props }))))))));
99
- }
102
+ const ThemedComponent = (React.createElement(ThemeProvider, { theme: this.theme },
103
+ React.createElement(I18NContext.Provider, { value: this.i18n },
104
+ React.createElement(JssProvider, { jss: this.jss },
105
+ React.createElement(Component, { ...this.props })))));
106
+ this.root.render(React.createElement(AppRootStoreContext.Provider, { value: this.appRootStore ?? null },
107
+ React.createElement(AppStoreContext.Provider, { value: this.appStore }, this.client ? (React.createElement(ClientContext.Provider, { value: this.client }, ThemedComponent)) : (ThemedComponent))));
100
108
  }
101
109
  };
102
110
  };
@@ -106,13 +114,13 @@ export const makeCustomElement = (Component) => {
106
114
  * @param ReactComponent the React component to wrap
107
115
  * @returns
108
116
  */
109
- export const registerReactWebComponent = (webComponentName, ReactComponent) => {
117
+ export const registerReactWebComponent = (webComponentName, ReactComponent, options) => {
110
118
  // Bail if web component is already defined
111
119
  if (customElements.get(webComponentName)) {
112
120
  return;
113
121
  }
114
122
  // Make web component that wraps the react component
115
- const Element = makeCustomElement(ReactComponent);
123
+ const Element = makeCustomElement(ReactComponent, options);
116
124
  try {
117
125
  // Define web component
118
126
  customElements.define(webComponentName, Element);
@@ -1 +1 @@
1
- {"version":3,"file":"makeCustomElement.js","sourceRoot":"","sources":["../../../src/react/components/makeCustomElement.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"makeCustomElement.js","sourceRoot":"","sources":["../../../src/react/components/makeCustomElement.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Observe screen size.
3
+ */
4
+ declare const useScreenSize: () => {
5
+ width: number;
6
+ height: number;
7
+ };
8
+ export default useScreenSize;
@@ -0,0 +1,29 @@
1
+ /*
2
+ * Copyright (c) 2025, J2 Innovations. All Rights Reserved
3
+ */
4
+ import { useEffect, useState } from 'react';
5
+ /**
6
+ * Observe screen size.
7
+ */
8
+ const useScreenSize = () => {
9
+ const [screenSize, setScreenSize] = useState({
10
+ width: window.innerWidth,
11
+ height: window.innerHeight,
12
+ });
13
+ useEffect(() => {
14
+ const handleResize = () => {
15
+ setScreenSize({
16
+ width: window.innerWidth,
17
+ height: window.innerHeight,
18
+ });
19
+ };
20
+ window.addEventListener('resize', handleResize);
21
+ // Clean up the event listener when the component unmounts
22
+ return () => {
23
+ window.removeEventListener('resize', handleResize);
24
+ };
25
+ }, []);
26
+ return screenSize;
27
+ };
28
+ export default useScreenSize;
29
+ //# sourceMappingURL=useScreenSize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useScreenSize.js","sourceRoot":"","sources":["../../../src/react/hooks/useScreenSize.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAE3C;;GAEG;AACH,MAAM,aAAa,GAAG,GAAG,EAAE;IAC1B,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC;QAC5C,KAAK,EAAE,MAAM,CAAC,UAAU;QACxB,MAAM,EAAE,MAAM,CAAC,WAAW;KAC1B,CAAC,CAAA;IAEF,SAAS,CAAC,GAAG,EAAE;QACd,MAAM,YAAY,GAAG,GAAG,EAAE;YACzB,aAAa,CAAC;gBACb,KAAK,EAAE,MAAM,CAAC,UAAU;gBACxB,MAAM,EAAE,MAAM,CAAC,WAAW;aAC1B,CAAC,CAAA;QACH,CAAC,CAAA;QAED,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;QAE/C,0DAA0D;QAC1D,OAAO,GAAG,EAAE;YACX,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;QACnD,CAAC,CAAA;IACF,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,OAAO,UAAU,CAAA;AAClB,CAAC,CAAA;AAED,eAAe,aAAa,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@j2inn/fin5-ui-utils",
3
- "version": "5.2.2-beta.0",
3
+ "version": "5.2.2-beta.10",
4
4
  "description": "A set of useful client-side utilities useful for creating UI applications on top of FIN 5",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -32,7 +32,7 @@
32
32
  "qrious": "^4.0.2"
33
33
  },
34
34
  "peerDependencies": {
35
- "@amcharts/amcharts5": "^5.4.4",
35
+ "@amcharts/amcharts5": "^5.9.13",
36
36
  "@j2inn/app": "^5.0.0",
37
37
  "@j2inn/app-react": "^1.0.1",
38
38
  "@j2inn/i18n": "^1.0.0",
@@ -43,6 +43,7 @@
43
43
  "haystack-nclient": "^4.0.0",
44
44
  "haystack-react": "^4.0.0",
45
45
  "haystack-units": "^2.0.0",
46
+ "lodash": "^4.17.21",
46
47
  "react": "^18.2.0",
47
48
  "react-dom": "^18.2.0",
48
49
  "react-jss": "^10.9.2",
@@ -68,6 +69,7 @@
68
69
  "@babel/runtime": "^7.19.0",
69
70
  "@types/jest": "^29.0.3",
70
71
  "@types/js-yaml": "^4.0.5",
72
+ "@types/lodash": "^4.17.19",
71
73
  "@types/node": "^18.7.18",
72
74
  "@types/react": "^18.0.20",
73
75
  "@types/react-dom": "^18.0.20",