pne-ui 3.0.9 → 3.0.19

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 (151) hide show
  1. package/cjs/common/responsive/breakpoints.d.ts +3 -0
  2. package/cjs/common/responsive/breakpoints.js +21 -0
  3. package/cjs/common/responsive/breakpoints.js.map +1 -0
  4. package/cjs/component/cloudscape/CloudscapeBoardStyles.d.ts +10 -0
  5. package/cjs/component/cloudscape/CloudscapeBoardStyles.js +46 -0
  6. package/cjs/component/cloudscape/CloudscapeBoardStyles.js.map +1 -0
  7. package/cjs/component/cloudscape/CloudscapeThemeProvider.d.ts +8 -0
  8. package/cjs/component/cloudscape/CloudscapeThemeProvider.js +20 -0
  9. package/cjs/component/cloudscape/CloudscapeThemeProvider.js.map +1 -0
  10. package/cjs/component/cloudscape/boardI18n.d.ts +10 -0
  11. package/cjs/component/cloudscape/boardI18n.js +51 -0
  12. package/cjs/component/cloudscape/boardI18n.js.map +1 -0
  13. package/cjs/component/cloudscape/cloudscapeTheme.d.ts +6 -0
  14. package/cjs/component/cloudscape/cloudscapeTheme.js +14 -0
  15. package/cjs/component/cloudscape/cloudscapeTheme.js.map +1 -0
  16. package/cjs/component/fab/PneFloatingActionButtons.d.ts +27 -0
  17. package/cjs/component/fab/PneFloatingActionButtons.js +41 -0
  18. package/cjs/component/fab/PneFloatingActionButtons.js.map +1 -0
  19. package/cjs/component/overlay/PneOverlayHost.d.ts +17 -0
  20. package/cjs/component/overlay/PneOverlayHost.js +82 -0
  21. package/cjs/component/overlay/PneOverlayHost.js.map +1 -0
  22. package/cjs/component/overlay/overlayStore.d.ts +11 -0
  23. package/cjs/component/overlay/overlayStore.js +38 -0
  24. package/cjs/component/overlay/overlayStore.js.map +1 -0
  25. package/cjs/component/overlay/types.d.ts +26 -0
  26. package/cjs/component/overlay/types.js +3 -0
  27. package/cjs/component/overlay/types.js.map +1 -0
  28. package/cjs/component/responsive/useBreakpoint.d.ts +8 -0
  29. package/cjs/component/responsive/useBreakpoint.js +21 -0
  30. package/cjs/component/responsive/useBreakpoint.js.map +1 -0
  31. package/cjs/component/widget-board/WidgetBoard.d.ts +7 -0
  32. package/cjs/component/widget-board/WidgetBoard.js +302 -0
  33. package/cjs/component/widget-board/WidgetBoard.js.map +1 -0
  34. package/cjs/component/widget-board/index.d.ts +2 -0
  35. package/cjs/component/widget-board/index.js +6 -0
  36. package/cjs/component/widget-board/index.js.map +1 -0
  37. package/cjs/component/widget-board/types.d.ts +66 -0
  38. package/cjs/component/widget-board/types.js +3 -0
  39. package/cjs/component/widget-board/types.js.map +1 -0
  40. package/cjs/exports/buttons.d.ts +2 -0
  41. package/cjs/exports/buttons.js +11 -0
  42. package/cjs/exports/buttons.js.map +1 -0
  43. package/cjs/exports/cloudscape.d.ts +5 -0
  44. package/cjs/exports/cloudscape.js +15 -0
  45. package/cjs/exports/cloudscape.js.map +1 -0
  46. package/cjs/exports/entities.d.ts +2 -0
  47. package/cjs/exports/entities.js +8 -0
  48. package/cjs/exports/entities.js.map +1 -0
  49. package/cjs/exports/fab.d.ts +1 -0
  50. package/cjs/exports/fab.js +6 -0
  51. package/cjs/exports/fab.js.map +1 -0
  52. package/cjs/exports/inputs.d.ts +10 -0
  53. package/cjs/exports/inputs.js +23 -0
  54. package/cjs/exports/inputs.js.map +1 -0
  55. package/cjs/exports/modals.d.ts +2 -0
  56. package/cjs/exports/modals.js +11 -0
  57. package/cjs/exports/modals.js.map +1 -0
  58. package/cjs/exports/overlay.d.ts +3 -0
  59. package/cjs/exports/overlay.js +11 -0
  60. package/cjs/exports/overlay.js.map +1 -0
  61. package/cjs/exports/search.d.ts +7 -0
  62. package/cjs/exports/search.js +21 -0
  63. package/cjs/exports/search.js.map +1 -0
  64. package/cjs/exports/table.d.ts +12 -0
  65. package/cjs/exports/table.js +25 -0
  66. package/cjs/exports/table.js.map +1 -0
  67. package/cjs/exports/theme.d.ts +2 -0
  68. package/cjs/exports/theme.js +6 -0
  69. package/cjs/exports/theme.js.map +1 -0
  70. package/cjs/exports/utils.d.ts +4 -0
  71. package/cjs/exports/utils.js +16 -0
  72. package/cjs/exports/utils.js.map +1 -0
  73. package/cjs/index.d.ts +12 -37
  74. package/cjs/index.js +11 -70
  75. package/cjs/index.js.map +1 -1
  76. package/esm/common/responsive/breakpoints.d.ts +3 -0
  77. package/esm/common/responsive/breakpoints.js +17 -0
  78. package/esm/common/responsive/breakpoints.js.map +1 -0
  79. package/esm/component/cloudscape/CloudscapeBoardStyles.d.ts +10 -0
  80. package/esm/component/cloudscape/CloudscapeBoardStyles.js +41 -0
  81. package/esm/component/cloudscape/CloudscapeBoardStyles.js.map +1 -0
  82. package/esm/component/cloudscape/CloudscapeThemeProvider.d.ts +8 -0
  83. package/esm/component/cloudscape/CloudscapeThemeProvider.js +15 -0
  84. package/esm/component/cloudscape/CloudscapeThemeProvider.js.map +1 -0
  85. package/esm/component/cloudscape/boardI18n.d.ts +10 -0
  86. package/esm/component/cloudscape/boardI18n.js +47 -0
  87. package/esm/component/cloudscape/boardI18n.js.map +1 -0
  88. package/esm/component/cloudscape/cloudscapeTheme.d.ts +6 -0
  89. package/esm/component/cloudscape/cloudscapeTheme.js +11 -0
  90. package/esm/component/cloudscape/cloudscapeTheme.js.map +1 -0
  91. package/esm/component/fab/PneFloatingActionButtons.d.ts +27 -0
  92. package/esm/component/fab/PneFloatingActionButtons.js +36 -0
  93. package/esm/component/fab/PneFloatingActionButtons.js.map +1 -0
  94. package/esm/component/overlay/PneOverlayHost.d.ts +17 -0
  95. package/esm/component/overlay/PneOverlayHost.js +77 -0
  96. package/esm/component/overlay/PneOverlayHost.js.map +1 -0
  97. package/esm/component/overlay/overlayStore.d.ts +11 -0
  98. package/esm/component/overlay/overlayStore.js +35 -0
  99. package/esm/component/overlay/overlayStore.js.map +1 -0
  100. package/esm/component/overlay/types.d.ts +26 -0
  101. package/esm/component/overlay/types.js +2 -0
  102. package/esm/component/overlay/types.js.map +1 -0
  103. package/esm/component/responsive/useBreakpoint.d.ts +8 -0
  104. package/esm/component/responsive/useBreakpoint.js +17 -0
  105. package/esm/component/responsive/useBreakpoint.js.map +1 -0
  106. package/esm/component/widget-board/WidgetBoard.d.ts +7 -0
  107. package/esm/component/widget-board/WidgetBoard.js +298 -0
  108. package/esm/component/widget-board/WidgetBoard.js.map +1 -0
  109. package/esm/component/widget-board/index.d.ts +2 -0
  110. package/esm/component/widget-board/index.js +3 -0
  111. package/esm/component/widget-board/index.js.map +1 -0
  112. package/esm/component/widget-board/types.d.ts +66 -0
  113. package/esm/component/widget-board/types.js +2 -0
  114. package/esm/component/widget-board/types.js.map +1 -0
  115. package/esm/exports/buttons.d.ts +2 -0
  116. package/esm/exports/buttons.js +3 -0
  117. package/esm/exports/buttons.js.map +1 -0
  118. package/esm/exports/cloudscape.d.ts +5 -0
  119. package/esm/exports/cloudscape.js +6 -0
  120. package/esm/exports/cloudscape.js.map +1 -0
  121. package/esm/exports/entities.d.ts +2 -0
  122. package/esm/exports/entities.js +3 -0
  123. package/esm/exports/entities.js.map +1 -0
  124. package/esm/exports/fab.d.ts +1 -0
  125. package/esm/exports/fab.js +2 -0
  126. package/esm/exports/fab.js.map +1 -0
  127. package/esm/exports/inputs.d.ts +10 -0
  128. package/esm/exports/inputs.js +9 -0
  129. package/esm/exports/inputs.js.map +1 -0
  130. package/esm/exports/modals.d.ts +2 -0
  131. package/esm/exports/modals.js +3 -0
  132. package/esm/exports/modals.js.map +1 -0
  133. package/esm/exports/overlay.d.ts +3 -0
  134. package/esm/exports/overlay.js +4 -0
  135. package/esm/exports/overlay.js.map +1 -0
  136. package/esm/exports/search.d.ts +7 -0
  137. package/esm/exports/search.js +7 -0
  138. package/esm/exports/search.js.map +1 -0
  139. package/esm/exports/table.d.ts +12 -0
  140. package/esm/exports/table.js +10 -0
  141. package/esm/exports/table.js.map +1 -0
  142. package/esm/exports/theme.d.ts +2 -0
  143. package/esm/exports/theme.js +2 -0
  144. package/esm/exports/theme.js.map +1 -0
  145. package/esm/exports/utils.d.ts +4 -0
  146. package/esm/exports/utils.js +5 -0
  147. package/esm/exports/utils.js.map +1 -0
  148. package/esm/index.d.ts +12 -37
  149. package/esm/index.js +11 -33
  150. package/esm/index.js.map +1 -1
  151. package/package.json +139 -133
@@ -0,0 +1,77 @@
1
+ import React, { useMemo } from 'react';
2
+ import { Alert, Snackbar } from '@mui/material';
3
+ import { DEFAULT_BREAKPOINTS } from '../../common/responsive/breakpoints';
4
+ import { useBreakpoint } from '../responsive/useBreakpoint';
5
+ import { useOverlayStore } from './overlayStore';
6
+ import { Box } from '@mui/material';
7
+ const STACK_GAP = 12;
8
+ const STACK_OFFSET = 24;
9
+ /**
10
+ * Renders overlay elements (currently snackbars) driven by the shared overlay store.
11
+ * Mount this once near the root of the app and trigger notifications via `overlayActions`.
12
+ */
13
+ export function PneOverlayHost({ anchorOrigin = { vertical: 'bottom', horizontal: 'left' }, maxSnack = 10, breakpoints = DEFAULT_BREAKPOINTS, renderPermanent, permanent, permanentPosition, }) {
14
+ const snackbars = useOverlayStore(state => state.snackbars);
15
+ const removeSnackbar = useOverlayStore(state => state.removeSnackbar);
16
+ const breakpoint = useBreakpoint({ breakpoints });
17
+ const visibleSnackbars = useMemo(() => {
18
+ if (typeof maxSnack === 'number' && maxSnack > 0 && snackbars.length > maxSnack) {
19
+ return snackbars.slice(snackbars.length - maxSnack);
20
+ }
21
+ return snackbars;
22
+ }, [maxSnack, snackbars]);
23
+ const groupedSnackbars = useMemo(() => {
24
+ const groups = [];
25
+ const map = new Map();
26
+ visibleSnackbars.forEach(snack => {
27
+ const anchor = snack.anchorOrigin ?? anchorOrigin;
28
+ const key = `${anchor.vertical}-${anchor.horizontal}`;
29
+ if (!map.has(key)) {
30
+ const group = { anchor, items: [] };
31
+ map.set(key, group);
32
+ groups.push(group);
33
+ }
34
+ map.get(key).items.push(snack);
35
+ });
36
+ return groups;
37
+ }, [anchorOrigin, visibleSnackbars]);
38
+ const permanentContent = renderPermanent?.({ breakpoint }) ?? permanent ?? null;
39
+ return (React.createElement(React.Fragment, null,
40
+ groupedSnackbars.map(group => {
41
+ const { anchor, items } = group;
42
+ const horizontalStyles = anchor.horizontal === 'left'
43
+ ? { left: STACK_OFFSET, right: 'auto', transform: 'none' }
44
+ : anchor.horizontal === 'right'
45
+ ? { right: STACK_OFFSET, left: 'auto', transform: 'none' }
46
+ : { left: '50%', transform: 'translateX(-50%)' };
47
+ const verticalStyles = anchor.vertical === 'top'
48
+ ? { top: STACK_OFFSET, bottom: 'auto', flexDirection: 'column-reverse' }
49
+ : { bottom: STACK_OFFSET, top: 'auto', flexDirection: 'column-reverse' };
50
+ return (React.createElement(Box, { key: `${anchor.vertical}-${anchor.horizontal}`, sx: {
51
+ position: 'fixed',
52
+ zIndex: 1400,
53
+ display: 'flex',
54
+ gap: `${STACK_GAP}px`,
55
+ pointerEvents: 'none',
56
+ ...horizontalStyles,
57
+ ...verticalStyles,
58
+ } }, items.map(snack => (React.createElement(Snackbar, { key: snack.id, open: true, anchorOrigin: anchor, autoHideDuration: snack.autoHideMs, onClose: (_event, reason) => {
59
+ if (reason === 'clickaway')
60
+ return;
61
+ snack.id && removeSnackbar(snack.id);
62
+ }, sx: { position: 'static', transform: 'none', pointerEvents: 'auto', minWidth: 288 } },
63
+ React.createElement(Alert, { elevation: 1, onClose: () => snack.id && removeSnackbar(snack.id), severity: snack.variant ?? 'info', action: snack.action, sx: { alignItems: 'center' } }, snack.message))))));
64
+ }),
65
+ permanentContent
66
+ ? permanentPosition
67
+ ? (React.createElement(Box, { sx: {
68
+ position: 'fixed',
69
+ zIndex: permanentPosition.zIndex ?? 1300,
70
+ [permanentPosition.vertical ?? 'bottom']: permanentPosition.offset ?? 24,
71
+ [permanentPosition.horizontal ?? 'right']: permanentPosition.offset ?? 24,
72
+ } }, permanentContent))
73
+ : permanentContent
74
+ : null));
75
+ }
76
+ export default PneOverlayHost;
77
+ //# sourceMappingURL=PneOverlayHost.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PneOverlayHost.js","sourceRoot":"","sources":["../../../src/component/overlay/PneOverlayHost.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { OverlayState, SnackbarOptions } from './types';
2
+ export declare const useOverlayStore: import("zustand").UseBoundStore<import("zustand").StoreApi<OverlayState>>;
3
+ export declare const overlayActions: {
4
+ showSnackbar: (snackbar: SnackbarOptions) => void;
5
+ showSuccess: (snackbar: Omit<SnackbarOptions, 'variant'>) => void;
6
+ showError: (snackbar: Omit<SnackbarOptions, 'variant'>) => void;
7
+ showWarning: (snackbar: Omit<SnackbarOptions, 'variant'>) => void;
8
+ showInfo: (snackbar: Omit<SnackbarOptions, 'variant'>) => void;
9
+ removeSnackbar: (id: string) => void;
10
+ clearSnackbars: () => void;
11
+ };
@@ -0,0 +1,35 @@
1
+ import { create } from 'zustand';
2
+ const defaultAutoHideMs = 5000;
3
+ const makeId = () => {
4
+ if (typeof crypto !== 'undefined' && typeof crypto.randomUUID === 'function') {
5
+ return crypto.randomUUID();
6
+ }
7
+ return `snackbar-${Date.now()}-${Math.random().toString(16).slice(2)}`;
8
+ };
9
+ export const useOverlayStore = create(set => ({
10
+ snackbars: [],
11
+ enqueueSnackbar: snackbar => set(state => ({
12
+ snackbars: [
13
+ ...state.snackbars,
14
+ {
15
+ id: snackbar.id ?? makeId(),
16
+ variant: snackbar.variant ?? 'info',
17
+ autoHideMs: snackbar.autoHideMs ?? (snackbar.variant === 'error' ? undefined : defaultAutoHideMs),
18
+ ...snackbar,
19
+ },
20
+ ],
21
+ })),
22
+ removeSnackbar: id => set(state => ({ snackbars: state.snackbars.filter(snack => snack.id !== id) })),
23
+ clearSnackbars: () => set({ snackbars: [] }),
24
+ }));
25
+ const showWithVariant = (variant) => (snackbar) => useOverlayStore.getState().enqueueSnackbar({ ...snackbar, variant });
26
+ export const overlayActions = {
27
+ showSnackbar: (snackbar) => useOverlayStore.getState().enqueueSnackbar(snackbar),
28
+ showSuccess: showWithVariant('success'),
29
+ showError: showWithVariant('error'),
30
+ showWarning: showWithVariant('warning'),
31
+ showInfo: showWithVariant('info'),
32
+ removeSnackbar: (id) => useOverlayStore.getState().removeSnackbar(id),
33
+ clearSnackbars: () => useOverlayStore.getState().clearSnackbars(),
34
+ };
35
+ //# sourceMappingURL=overlayStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overlayStore.js","sourceRoot":"","sources":["../../../src/component/overlay/overlayStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAGhC,MAAM,iBAAiB,GAAG,IAAI,CAAA;AAE9B,MAAM,MAAM,GAAG,GAAG,EAAE;IAChB,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;QAC3E,OAAO,MAAM,CAAC,UAAU,EAAE,CAAA;IAC9B,CAAC;IACD,OAAO,YAAY,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;AAC1E,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAe,GAAG,CAAC,EAAE,CAAC,CAAC;IACxD,SAAS,EAAE,EAAE;IACb,eAAe,EAAE,QAAQ,CAAC,EAAE,CACxB,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACV,SAAS,EAAE;YACP,GAAG,KAAK,CAAC,SAAS;YAClB;gBACI,EAAE,EAAE,QAAQ,CAAC,EAAE,IAAI,MAAM,EAAE;gBAC3B,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,MAAM;gBACnC,UAAU,EAAE,QAAQ,CAAC,UAAU,IAAI,CAAC,QAAQ,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC;gBACjG,GAAG,QAAQ;aACd;SACJ;KACJ,CAAC,CAAC;IACP,cAAc,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IACrG,cAAc,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;CAC/C,CAAC,CAAC,CAAA;AAEH,MAAM,eAAe,GAAG,CAAC,OAAwB,EAAE,EAAE,CAAC,CAAC,QAA0C,EAAE,EAAE,CACjG,eAAe,CAAC,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAA;AAExE,MAAM,CAAC,MAAM,cAAc,GAAG;IAC1B,YAAY,EAAE,CAAC,QAAyB,EAAE,EAAE,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC;IACjG,WAAW,EAAE,eAAe,CAAC,SAAS,CAAC;IACvC,SAAS,EAAE,eAAe,CAAC,OAAO,CAAC;IACnC,WAAW,EAAE,eAAe,CAAC,SAAS,CAAC;IACvC,QAAQ,EAAE,eAAe,CAAC,MAAM,CAAC;IACjC,cAAc,EAAE,CAAC,EAAU,EAAE,EAAE,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC;IAC7E,cAAc,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,cAAc,EAAE;CACpE,CAAA"}
@@ -0,0 +1,26 @@
1
+ import type { SnackbarOrigin } from '@mui/material';
2
+ import type React from 'react';
3
+ export type SnackbarVariant = 'info' | 'success' | 'warning' | 'error';
4
+ export type SnackbarOptions = {
5
+ id?: string;
6
+ message: React.ReactNode;
7
+ variant?: SnackbarVariant;
8
+ autoHideMs?: number;
9
+ action?: React.ReactNode;
10
+ anchorOrigin?: SnackbarOrigin;
11
+ };
12
+ export type OverlayState = {
13
+ snackbars: SnackbarOptions[];
14
+ enqueueSnackbar: (snackbar: SnackbarOptions) => void;
15
+ removeSnackbar: (id: string) => void;
16
+ clearSnackbars: () => void;
17
+ };
18
+ export type PermanentOverlayRender = (context: {
19
+ breakpoint: number;
20
+ }) => React.ReactNode;
21
+ export type PermanentPosition = {
22
+ vertical?: 'top' | 'bottom';
23
+ horizontal?: 'left' | 'right';
24
+ offset?: number;
25
+ zIndex?: number;
26
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/component/overlay/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ type UseBreakpointOptions = {
2
+ breakpoints?: readonly number[];
3
+ };
4
+ /**
5
+ * Returns the nearest configured breakpoint for the current window width.
6
+ */
7
+ export declare function useBreakpoint({ breakpoints }?: UseBreakpointOptions): number;
8
+ export {};
@@ -0,0 +1,17 @@
1
+ import { useEffect, useState } from 'react';
2
+ import { DEFAULT_BREAKPOINTS, resolveBreakpoint } from '../../common/responsive/breakpoints';
3
+ /**
4
+ * Returns the nearest configured breakpoint for the current window width.
5
+ */
6
+ export function useBreakpoint({ breakpoints = DEFAULT_BREAKPOINTS } = {}) {
7
+ const [current, setCurrent] = useState(() => typeof window !== 'undefined' ? resolveBreakpoint(window.innerWidth, breakpoints) : breakpoints[0]);
8
+ useEffect(() => {
9
+ if (typeof window === 'undefined')
10
+ return;
11
+ const handler = () => setCurrent(resolveBreakpoint(window.innerWidth, breakpoints));
12
+ window.addEventListener('resize', handler);
13
+ return () => window.removeEventListener('resize', handler);
14
+ }, [breakpoints]);
15
+ return current;
16
+ }
17
+ //# sourceMappingURL=useBreakpoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useBreakpoint.js","sourceRoot":"","sources":["../../../src/component/responsive/useBreakpoint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAC3C,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAA;AAM5F;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,EAAE,WAAW,GAAG,mBAAmB,KAA2B,EAAE;IAC1F,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CACxC,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CACrG,CAAA;IAED,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE,OAAM;QACzC,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAA;QACnF,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAC1C,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IAC9D,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAA;IAEjB,OAAO,OAAO,CAAA;AAClB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import type { WidgetBoardProps } from './types';
3
+ export type WidgetBoardHandle = {
4
+ resetLayout: () => void;
5
+ restoreHidden: () => void;
6
+ };
7
+ export declare const WidgetBoard: React.ForwardRefExoticComponent<WidgetBoardProps & React.RefAttributes<WidgetBoardHandle>>;
@@ -0,0 +1,298 @@
1
+ import React, { forwardRef, useCallback, useEffect, useImperativeHandle, useMemo, useState } from 'react';
2
+ import Board from '@cloudscape-design/board-components/board';
3
+ import BoardItem from '@cloudscape-design/board-components/board-item';
4
+ import CloseIcon from '@mui/icons-material/Close';
5
+ import ExpandLessIcon from '@mui/icons-material/ExpandLess';
6
+ import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
7
+ import RestartAltIcon from '@mui/icons-material/RestartAlt';
8
+ import { Box, Chip, IconButton, Stack, Typography } from '@mui/material';
9
+ import PneButton from '../PneButton';
10
+ import { CloudscapeBoardStyles } from '../cloudscape/CloudscapeBoardStyles';
11
+ import { CloudscapeThemeProvider } from '../cloudscape/CloudscapeThemeProvider';
12
+ import { boardItemI18nStrings, createBoardI18nStrings } from '../cloudscape/boardI18n';
13
+ const fallbackLayout = { defaultSize: { columnSpan: 1, rowSpan: 2 } };
14
+ const withLayout = (definitions, layout) => definitions.map(definition => ({
15
+ ...definition,
16
+ layout: layout.widgets[definition.id] ?? fallbackLayout,
17
+ }));
18
+ const toBoardItem = (definition, overrides) => {
19
+ const defaultSize = definition.layout.defaultSize;
20
+ const limits = definition.layout.limits;
21
+ return {
22
+ id: definition.id,
23
+ columnSpan: overrides?.columnSpan ?? defaultSize.columnSpan,
24
+ rowSpan: overrides?.rowSpan ?? defaultSize.rowSpan,
25
+ columnOffset: overrides?.columnOffset ?? defaultSize.columnOffset,
26
+ data: { id: definition.id, title: definition.title },
27
+ definition: {
28
+ defaultColumnSpan: defaultSize.columnSpan,
29
+ defaultRowSpan: defaultSize.rowSpan,
30
+ minColumnSpan: limits?.minColumnSpan,
31
+ minRowSpan: limits?.minRowSpan,
32
+ },
33
+ };
34
+ };
35
+ const applyCollapsedState = (items, collapsed, definitionsMap, sizeMemory) => {
36
+ if (collapsed.length === 0)
37
+ return items;
38
+ const collapsedSet = new Set(collapsed);
39
+ return items.map(item => {
40
+ const widgetId = item.id;
41
+ if (!collapsedSet.has(widgetId))
42
+ return item;
43
+ const definition = definitionsMap.get(widgetId);
44
+ if (!definition)
45
+ return item;
46
+ if (sizeMemory[widgetId] === undefined) {
47
+ sizeMemory[widgetId] = item.rowSpan ?? definition.layout.defaultSize.rowSpan;
48
+ }
49
+ const minRows = Math.max(definition.layout.limits?.minRowSpan ?? 2, 2);
50
+ return { ...item, rowSpan: minRows };
51
+ });
52
+ };
53
+ const buildDefaultState = (definitions) => {
54
+ const hidden = definitions.filter(def => def.layout.initialState?.isHidden).map(def => def.id);
55
+ const collapsed = definitions.filter(def => def.layout.initialState?.isCollapsed).map(def => def.id);
56
+ const sizeMemory = {};
57
+ const definitionsMap = new Map(definitions.map(def => [def.id, def]));
58
+ const items = definitions.filter(def => !hidden.includes(def.id)).map(def => toBoardItem(def));
59
+ const collapsedItems = applyCollapsedState(items, collapsed, definitionsMap, sizeMemory);
60
+ return {
61
+ items: collapsedItems,
62
+ hidden,
63
+ collapsed,
64
+ sizeMemory,
65
+ };
66
+ };
67
+ const resolveBreakpoint = (width, breakpoints) => {
68
+ if (!width || Number.isNaN(width)) {
69
+ return breakpoints[0];
70
+ }
71
+ let match = breakpoints[0];
72
+ for (const breakpoint of breakpoints) {
73
+ if (width >= breakpoint) {
74
+ match = breakpoint;
75
+ }
76
+ else {
77
+ break;
78
+ }
79
+ }
80
+ return match;
81
+ };
82
+ const getLayoutConfigForWidth = (width, layoutMap, breakpoints) => {
83
+ const breakpoint = resolveBreakpoint(width, breakpoints);
84
+ return { breakpoint, layout: layoutMap[breakpoint] };
85
+ };
86
+ const buildStoragePayload = (state) => JSON.stringify({
87
+ items: state.items.map(({ id, columnSpan, columnOffset, rowSpan }) => ({ id, columnSpan, columnOffset, rowSpan })),
88
+ hidden: state.hidden,
89
+ collapsed: state.collapsed,
90
+ sizeMemory: state.sizeMemory,
91
+ });
92
+ const hydrateStoragePayload = (raw) => JSON.parse(raw);
93
+ export const WidgetBoard = forwardRef(function WidgetBoard({ widgets, layoutByBreakpoint, breakpoints: customBreakpoints, storageKey = 'pne-widget-board-layout', loadRemoteLayout, controls, empty, hideNavigationArrows = true, onLayoutPersist, isWidgetEnabled, className, }, ref) {
94
+ const breakpoints = useMemo(() => customBreakpoints ?? Object.keys(layoutByBreakpoint).map(Number).sort((a, b) => a - b), [customBreakpoints, layoutByBreakpoint]);
95
+ const [layoutSource, setLayoutSource] = useState(() => ({
96
+ layoutByBreakpoint,
97
+ source: 'static',
98
+ }));
99
+ const [layoutPreset, setLayoutPreset] = useState(() => getLayoutConfigForWidth(typeof window !== 'undefined' ? window.innerWidth : undefined, layoutSource.layoutByBreakpoint, breakpoints));
100
+ const fallbackLayoutConfig = useMemo(() => {
101
+ const firstKey = breakpoints[0];
102
+ return layoutSource.layoutByBreakpoint[firstKey] ?? Object.values(layoutSource.layoutByBreakpoint)[0];
103
+ }, [breakpoints, layoutSource.layoutByBreakpoint]);
104
+ const definitionsWithLayout = useMemo(() => withLayout(widgets, layoutPreset.layout ?? fallbackLayoutConfig ?? { columns: 12, widgets: {} }), [fallbackLayoutConfig, layoutPreset.layout, widgets]);
105
+ const activeDefinitions = useMemo(() => definitionsWithLayout.filter(def => (isWidgetEnabled ? isWidgetEnabled(def) : true)), [definitionsWithLayout, isWidgetEnabled]);
106
+ const definitionsMap = useMemo(() => new Map(activeDefinitions.map(def => [def.id, def])), [activeDefinitions]);
107
+ const [layoutState, setLayoutState] = useState(() => buildDefaultState(activeDefinitions));
108
+ useEffect(() => {
109
+ const savedState = typeof window !== 'undefined' ? window.localStorage.getItem(storageKey) : null;
110
+ if (savedState) {
111
+ try {
112
+ const parsed = hydrateStoragePayload(savedState);
113
+ const items = (parsed.items || []).flatMap(item => {
114
+ const definition = definitionsMap.get(item.id);
115
+ if (!definition)
116
+ return [];
117
+ return [toBoardItem(definition, item)];
118
+ });
119
+ const hidden = (parsed.hidden || []).filter(id => definitionsMap.has(id));
120
+ const collapsed = (parsed.collapsed || []).filter(id => definitionsMap.has(id));
121
+ const sizeMemoryEntries = Object.entries(parsed.sizeMemory || {}).filter(([id]) => definitionsMap.has(id));
122
+ const sizeMemory = Object.fromEntries(sizeMemoryEntries);
123
+ const missingItems = activeDefinitions
124
+ .filter(def => !hidden.includes(def.id) && !items.some(item => item.id === def.id))
125
+ .map(definition => toBoardItem(definition));
126
+ const allItems = [...items, ...missingItems];
127
+ const itemsWithCollapse = applyCollapsedState(allItems, collapsed, definitionsMap, sizeMemory);
128
+ setLayoutState({
129
+ items: itemsWithCollapse,
130
+ hidden,
131
+ collapsed,
132
+ sizeMemory,
133
+ });
134
+ return;
135
+ }
136
+ catch (e) {
137
+ console.warn('Failed to parse saved widget layout', e);
138
+ }
139
+ }
140
+ setLayoutState(buildDefaultState(activeDefinitions));
141
+ }, [activeDefinitions, definitionsMap, storageKey]);
142
+ useEffect(() => {
143
+ if (typeof window === 'undefined')
144
+ return;
145
+ const handleResize = () => setLayoutPreset(getLayoutConfigForWidth(window.innerWidth, layoutSource.layoutByBreakpoint, breakpoints));
146
+ window.addEventListener('resize', handleResize);
147
+ return () => window.removeEventListener('resize', handleResize);
148
+ }, [breakpoints, layoutSource.layoutByBreakpoint]);
149
+ useEffect(() => {
150
+ let mounted = true;
151
+ if (!loadRemoteLayout)
152
+ return undefined;
153
+ loadRemoteLayout().then(preset => {
154
+ if (!mounted || !preset?.layoutByBreakpoint)
155
+ return;
156
+ setLayoutSource(preset);
157
+ const nextPreset = getLayoutConfigForWidth(typeof window !== 'undefined' ? window.innerWidth : undefined, preset.layoutByBreakpoint, breakpoints);
158
+ const nextLayout = nextPreset.layout ?? Object.values(preset.layoutByBreakpoint)[0] ?? fallbackLayoutConfig;
159
+ setLayoutPreset(nextPreset);
160
+ const nextDefinitions = withLayout(widgets, nextLayout);
161
+ const nextActiveDefinitions = nextDefinitions.filter(def => (isWidgetEnabled ? isWidgetEnabled(def) : true));
162
+ setLayoutState(buildDefaultState(nextActiveDefinitions));
163
+ });
164
+ return () => {
165
+ mounted = false;
166
+ };
167
+ }, [breakpoints, fallbackLayoutConfig, isWidgetEnabled, loadRemoteLayout, widgets]);
168
+ useEffect(() => {
169
+ if (typeof window === 'undefined')
170
+ return;
171
+ try {
172
+ window.localStorage.setItem(storageKey, buildStoragePayload(layoutState));
173
+ onLayoutPersist?.(layoutState);
174
+ }
175
+ catch {
176
+ // ignore storage failures
177
+ }
178
+ }, [layoutState, onLayoutPersist, storageKey]);
179
+ const hideItem = useCallback((id) => {
180
+ setLayoutState(prev => ({
181
+ ...prev,
182
+ items: prev.items.filter(item => item.id !== id),
183
+ hidden: prev.hidden.includes(id) ? prev.hidden : [...prev.hidden, id],
184
+ collapsed: prev.collapsed.filter(col => col !== id),
185
+ sizeMemory: Object.fromEntries(Object.entries(prev.sizeMemory).filter(([key]) => key !== id)),
186
+ }));
187
+ }, []);
188
+ const restoreItem = useCallback((id) => {
189
+ const definition = definitionsMap.get(id);
190
+ if (!definition)
191
+ return;
192
+ setLayoutState(prev => ({
193
+ ...prev,
194
+ hidden: prev.hidden.filter(hiddenId => hiddenId !== id),
195
+ items: [...prev.items, toBoardItem(definition)],
196
+ collapsed: prev.collapsed.filter(col => col !== id),
197
+ sizeMemory: Object.fromEntries(Object.entries(prev.sizeMemory).filter(([key]) => key !== id)),
198
+ }));
199
+ }, [definitionsMap]);
200
+ const resetLayout = useCallback(() => setLayoutState(buildDefaultState(activeDefinitions)), [activeDefinitions]);
201
+ const handleItemsChange = ({ detail }) => {
202
+ setLayoutState(prev => ({
203
+ ...prev,
204
+ items: detail.items
205
+ .map(item => {
206
+ const definition = definitionsMap.get(item.id);
207
+ if (!definition)
208
+ return null;
209
+ return toBoardItem(definition, item);
210
+ })
211
+ .filter(Boolean),
212
+ }));
213
+ };
214
+ const toggleCollapse = useCallback((id) => {
215
+ setLayoutState(prev => {
216
+ const definition = definitionsMap.get(id);
217
+ if (!definition)
218
+ return prev;
219
+ const isCollapsed = prev.collapsed.includes(id);
220
+ const nextCollapsed = isCollapsed ? prev.collapsed.filter(col => col !== id) : [...prev.collapsed, id];
221
+ const sizeMemory = { ...prev.sizeMemory };
222
+ const items = prev.items.map(item => {
223
+ if (item.id !== id)
224
+ return item;
225
+ if (isCollapsed) {
226
+ const restored = sizeMemory[id] ?? item.rowSpan ?? definition.layout.defaultSize.rowSpan ?? 2;
227
+ delete sizeMemory[id];
228
+ return { ...item, rowSpan: restored };
229
+ }
230
+ sizeMemory[id] = item.rowSpan ?? definition.layout.defaultSize.rowSpan ?? 2;
231
+ const minRows = Math.max(definition.layout.limits?.minRowSpan ?? 2, 2);
232
+ return { ...item, rowSpan: minRows };
233
+ });
234
+ return { ...prev, items, collapsed: nextCollapsed, sizeMemory };
235
+ });
236
+ }, [definitionsMap]);
237
+ const restoreHidden = useCallback(() => {
238
+ setLayoutState(prev => {
239
+ if (prev.hidden.length === 0)
240
+ return prev;
241
+ const hiddenSet = new Set(prev.hidden);
242
+ const nextItems = [...prev.items];
243
+ prev.hidden.forEach(id => {
244
+ const def = definitionsMap.get(id);
245
+ if (!def)
246
+ return;
247
+ nextItems.push(toBoardItem(def));
248
+ });
249
+ const nextSizeMemory = Object.fromEntries(Object.entries(prev.sizeMemory).filter(([key]) => !hiddenSet.has(key)));
250
+ return { ...prev, hidden: [], collapsed: prev.collapsed.filter(col => !hiddenSet.has(col)), sizeMemory: nextSizeMemory, items: nextItems };
251
+ });
252
+ }, [definitionsMap]);
253
+ useImperativeHandle(ref, () => ({
254
+ resetLayout,
255
+ restoreHidden,
256
+ }), [resetLayout, restoreHidden]);
257
+ const visibleItems = useMemo(() => layoutState.items.filter(item => definitionsMap.has(item.id)), [layoutState.items, definitionsMap]);
258
+ const boardI18nStrings = useMemo(() => createBoardI18nStrings(item => item.data.title), []);
259
+ const renderItem = (item) => {
260
+ const widgetId = item.id;
261
+ const definition = definitionsMap.get(widgetId);
262
+ if (!definition)
263
+ return React.createElement(React.Fragment, null);
264
+ const isCollapsed = layoutState.collapsed.includes(widgetId);
265
+ const headerElement = (React.createElement(Box, { sx: {
266
+ display: 'flex',
267
+ alignItems: 'center',
268
+ justifyContent: 'flex-start',
269
+ width: '100%',
270
+ height: '100%',
271
+ } },
272
+ React.createElement(Typography, { component: 'h3', sx: {
273
+ fontSize: 18,
274
+ fontWeight: 700,
275
+ lineHeight: '24px',
276
+ color: 'rgba(78, 93, 120, 1)',
277
+ } }, definition.title)));
278
+ const settingsElement = (React.createElement(Stack, { direction: 'row', spacing: 0.5, alignItems: 'center' },
279
+ React.createElement(IconButton, { "aria-label": isCollapsed ? 'Expand widget' : 'Collapse widget', onClick: () => toggleCollapse(widgetId), size: 'small', sx: { color: 'rgba(78, 93, 120, 1)' } }, isCollapsed ? React.createElement(ExpandMoreIcon, { fontSize: 'small' }) : React.createElement(ExpandLessIcon, { fontSize: 'small' })),
280
+ React.createElement(IconButton, { "aria-label": 'Hide widget', onClick: () => hideItem(widgetId), size: 'small', sx: { color: 'rgba(78, 93, 120, 1)' } },
281
+ React.createElement(CloseIcon, { fontSize: 'small' }))));
282
+ return (React.createElement(BoardItem, { key: item.id, i18nStrings: boardItemI18nStrings, header: headerElement, settings: settingsElement, disableContentPaddings: true },
283
+ React.createElement(Box, { sx: { p: 2, height: '100%', boxSizing: 'border-box', overflow: 'hidden' } }, isCollapsed ? React.createElement(Typography, { sx: { color: 'text.secondary', fontSize: 14 } }, "Collapsed") : definition.render())));
284
+ };
285
+ const controlsConfig = controls ?? {};
286
+ const showControls = controlsConfig.hideReset !== true || (controlsConfig.hideRestore !== true && layoutState.hidden.length > 0);
287
+ return (React.createElement(CloudscapeThemeProvider, null,
288
+ React.createElement(CloudscapeBoardStyles, { hideNavigationArrows: hideNavigationArrows }),
289
+ React.createElement(Stack, { spacing: 1.5, className: className },
290
+ showControls && (React.createElement(Stack, { direction: { xs: 'column', sm: 'row' }, alignItems: { xs: 'flex-start', sm: 'center' }, justifyContent: 'space-between', spacing: 1 },
291
+ React.createElement(Typography, { variant: 'h6', fontWeight: 700 }, controlsConfig.title ?? 'Widgets layout'),
292
+ React.createElement(Stack, { direction: 'row', spacing: 1 },
293
+ controlsConfig.hideReset !== true && (React.createElement(PneButton, { onClick: resetLayout, pneStyle: 'outlined', startIcon: React.createElement(RestartAltIcon, null) }, controlsConfig.resetLabel ?? 'Reset to default')),
294
+ layoutState.hidden.length > 0 && controlsConfig.hideRestore !== true && (React.createElement(PneButton, { pneStyle: 'text', onClick: () => layoutState.hidden.forEach(restoreItem) }, controlsConfig.restoreLabel ?? 'Restore hidden'))))),
295
+ layoutState.hidden.length > 0 && (React.createElement(Stack, { direction: 'row', spacing: 1, flexWrap: 'wrap' }, layoutState.hidden.map(id => (React.createElement(Chip, { key: id, variant: 'outlined', label: `Show ${definitionsMap.get(id)?.title ?? id}`, onClick: () => restoreItem(id), size: 'small' }))))),
296
+ React.createElement(Board, { items: visibleItems, renderItem: renderItem, i18nStrings: boardI18nStrings, onItemsChange: handleItemsChange, empty: empty ?? React.createElement(Box, { sx: { p: 2, color: 'text.secondary' } }, "No widgets available") }))));
297
+ });
298
+ //# sourceMappingURL=WidgetBoard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WidgetBoard.js","sourceRoot":"","sources":["../../../src/component/widget-board/WidgetBoard.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './WidgetBoard';
2
+ export * from './types';
@@ -0,0 +1,3 @@
1
+ export * from './WidgetBoard';
2
+ export * from './types';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/component/widget-board/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,SAAS,CAAA"}
@@ -0,0 +1,66 @@
1
+ /// <reference types="react" />
2
+ import type { BoardProps } from '@cloudscape-design/board-components/board';
3
+ export type WidgetId = string;
4
+ export type WidgetLayoutSize = {
5
+ columnSpan: number;
6
+ rowSpan: number;
7
+ columnOffset?: BoardProps.Item['columnOffset'];
8
+ };
9
+ export type WidgetLayoutLimits = {
10
+ minColumnSpan?: number;
11
+ minRowSpan?: number;
12
+ };
13
+ export type WidgetLayoutInitialState = {
14
+ isHidden?: boolean;
15
+ isCollapsed?: boolean;
16
+ };
17
+ export type WidgetLayoutConfig = {
18
+ defaultSize: WidgetLayoutSize;
19
+ limits?: WidgetLayoutLimits;
20
+ initialState?: WidgetLayoutInitialState;
21
+ };
22
+ export type BreakpointLayoutConfig = {
23
+ columns: number;
24
+ widgets: Record<WidgetId, WidgetLayoutConfig>;
25
+ };
26
+ export type WidgetLayoutPresetSource = 'static' | 'remote-live' | 'remote-cache';
27
+ export type WidgetLayoutPreset = {
28
+ layoutByBreakpoint: Record<number | string, BreakpointLayoutConfig>;
29
+ source: WidgetLayoutPresetSource;
30
+ version?: string;
31
+ };
32
+ export type WidgetDefinition = {
33
+ id: WidgetId;
34
+ title: string;
35
+ render: () => React.ReactNode;
36
+ };
37
+ export type WidgetBoardItemData = {
38
+ id: WidgetId;
39
+ title: string;
40
+ };
41
+ export type WidgetBoardState = {
42
+ items: Array<BoardProps.Item<WidgetBoardItemData>>;
43
+ hidden: WidgetId[];
44
+ collapsed: WidgetId[];
45
+ sizeMemory: Partial<Record<WidgetId, number>>;
46
+ };
47
+ export type WidgetBoardControls = {
48
+ title?: React.ReactNode;
49
+ resetLabel?: React.ReactNode;
50
+ restoreLabel?: React.ReactNode;
51
+ hideReset?: boolean;
52
+ hideRestore?: boolean;
53
+ };
54
+ export type WidgetBoardProps = {
55
+ widgets: WidgetDefinition[];
56
+ layoutByBreakpoint: Record<number | string, BreakpointLayoutConfig>;
57
+ breakpoints?: readonly number[];
58
+ storageKey?: string;
59
+ loadRemoteLayout?: () => Promise<WidgetLayoutPreset | null>;
60
+ controls?: WidgetBoardControls;
61
+ empty?: React.ReactNode;
62
+ hideNavigationArrows?: boolean;
63
+ onLayoutPersist?: (state: WidgetBoardState) => void;
64
+ isWidgetEnabled?: (definition: WidgetDefinition) => boolean;
65
+ className?: string;
66
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/component/widget-board/types.ts"],"names":[],"mappings":""}