@portnet/ui 5.0.28 → 6.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +524 -0
- package/README.md +101 -38
- package/dist/index.d.ts +59 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +174 -203
- package/dist/index.js.map +1 -0
- package/dist/v2/__tests__/MobileRowCard.test.js +337 -0
- package/dist/v2/__tests__/MobileRowCard.test.js.map +1 -0
- package/dist/v2/__tests__/apiError.test.js +182 -0
- package/dist/v2/__tests__/apiError.test.js.map +1 -0
- package/dist/v2/__tests__/banned-patterns.test.js +272 -0
- package/dist/v2/__tests__/banned-patterns.test.js.map +1 -0
- package/dist/v2/__tests__/contrast-palette.test.js +225 -0
- package/dist/v2/__tests__/contrast-palette.test.js.map +1 -0
- package/dist/v2/__tests__/cssVariables.test.js +158 -0
- package/dist/v2/__tests__/cssVariables.test.js.map +1 -0
- package/dist/v2/__tests__/labels-merge.test.js +153 -0
- package/dist/v2/__tests__/labels-merge.test.js.map +1 -0
- package/dist/v2/__tests__/locale-fallback.test.js +111 -0
- package/dist/v2/__tests__/locale-fallback.test.js.map +1 -0
- package/dist/v2/__tests__/useFocusTrap.test.js +517 -0
- package/dist/v2/__tests__/useFocusTrap.test.js.map +1 -0
- package/dist/v2/components/Accordion.d.ts +56 -0
- package/dist/v2/components/Accordion.d.ts.map +1 -0
- package/dist/v2/components/Accordion.js +238 -0
- package/dist/v2/components/Accordion.js.map +1 -0
- package/dist/v2/components/ActionStrip.d.ts +67 -0
- package/dist/v2/components/ActionStrip.d.ts.map +1 -0
- package/dist/v2/components/ActionStrip.js +154 -0
- package/dist/v2/components/ActionStrip.js.map +1 -0
- package/dist/v2/components/Banner.d.ts +49 -0
- package/dist/v2/components/Banner.d.ts.map +1 -0
- package/dist/v2/components/Banner.js +183 -0
- package/dist/v2/components/Banner.js.map +1 -0
- package/dist/v2/components/Busy.d.ts +18 -0
- package/dist/v2/components/Busy.d.ts.map +1 -0
- package/dist/v2/components/Busy.js +104 -0
- package/dist/v2/components/Busy.js.map +1 -0
- package/dist/v2/components/Button.d.ts +36 -0
- package/dist/v2/components/Button.d.ts.map +1 -0
- package/dist/v2/components/Button.js +122 -0
- package/dist/v2/components/Button.js.map +1 -0
- package/dist/v2/components/CategoryTag.d.ts +45 -0
- package/dist/v2/components/CategoryTag.d.ts.map +1 -0
- package/dist/v2/components/CategoryTag.js +89 -0
- package/dist/v2/components/CategoryTag.js.map +1 -0
- package/dist/v2/components/Checkbox.d.ts +59 -0
- package/dist/v2/components/Checkbox.d.ts.map +1 -0
- package/dist/v2/components/Checkbox.js +134 -0
- package/dist/v2/components/Checkbox.js.map +1 -0
- package/dist/v2/components/Chip.d.ts +48 -0
- package/dist/v2/components/Chip.d.ts.map +1 -0
- package/dist/v2/components/Chip.js +131 -0
- package/dist/v2/components/Chip.js.map +1 -0
- package/dist/v2/components/Combobox.d.ts +134 -0
- package/dist/v2/components/Combobox.d.ts.map +1 -0
- package/dist/v2/components/Combobox.js +399 -0
- package/dist/v2/components/Combobox.js.map +1 -0
- package/dist/v2/components/CommandPalette.d.ts +36 -0
- package/dist/v2/components/CommandPalette.d.ts.map +1 -0
- package/dist/v2/components/CommandPalette.js +672 -0
- package/dist/v2/components/CommandPalette.js.map +1 -0
- package/dist/v2/components/ConfirmDialog.d.ts +23 -0
- package/dist/v2/components/ConfirmDialog.d.ts.map +1 -0
- package/dist/v2/components/ConfirmDialog.js +150 -0
- package/dist/v2/components/ConfirmDialog.js.map +1 -0
- package/dist/v2/components/DatePicker.d.ts +21 -0
- package/dist/v2/components/DatePicker.d.ts.map +1 -0
- package/dist/v2/components/DatePicker.js +207 -0
- package/dist/v2/components/DatePicker.js.map +1 -0
- package/dist/v2/components/DateRangePicker.d.ts +81 -0
- package/dist/v2/components/DateRangePicker.d.ts.map +1 -0
- package/dist/v2/components/DateRangePicker.js +295 -0
- package/dist/v2/components/DateRangePicker.js.map +1 -0
- package/dist/v2/components/DateTimePicker.d.ts +21 -0
- package/dist/v2/components/DateTimePicker.d.ts.map +1 -0
- package/dist/v2/components/DateTimePicker.js +189 -0
- package/dist/v2/components/DateTimePicker.js.map +1 -0
- package/dist/v2/components/Drawer.d.ts +34 -0
- package/dist/v2/components/Drawer.d.ts.map +1 -0
- package/dist/v2/components/Drawer.js +339 -0
- package/dist/v2/components/Drawer.js.map +1 -0
- package/dist/v2/components/Dropzone.d.ts +150 -0
- package/dist/v2/components/Dropzone.d.ts.map +1 -0
- package/dist/v2/components/Dropzone.js +539 -0
- package/dist/v2/components/Dropzone.js.map +1 -0
- package/dist/v2/components/EmptyState.d.ts +36 -0
- package/dist/v2/components/EmptyState.d.ts.map +1 -0
- package/dist/v2/components/EmptyState.js +112 -0
- package/dist/v2/components/EmptyState.js.map +1 -0
- package/dist/v2/components/FavoriteToggle.d.ts +22 -0
- package/dist/v2/components/FavoriteToggle.d.ts.map +1 -0
- package/dist/v2/components/FavoriteToggle.js +134 -0
- package/dist/v2/components/FavoriteToggle.js.map +1 -0
- package/dist/v2/components/Field.d.ts +58 -0
- package/dist/v2/components/Field.d.ts.map +1 -0
- package/dist/v2/components/Field.js +186 -0
- package/dist/v2/components/Field.js.map +1 -0
- package/dist/v2/components/FieldHelp.d.ts +54 -0
- package/dist/v2/components/FieldHelp.d.ts.map +1 -0
- package/dist/v2/components/FieldHelp.js +209 -0
- package/dist/v2/components/FieldHelp.js.map +1 -0
- package/dist/v2/components/FilterTab.d.ts +35 -0
- package/dist/v2/components/FilterTab.d.ts.map +1 -0
- package/dist/v2/components/FilterTab.js +144 -0
- package/dist/v2/components/FilterTab.js.map +1 -0
- package/dist/v2/components/ForbiddenPage.d.ts +40 -0
- package/dist/v2/components/ForbiddenPage.d.ts.map +1 -0
- package/dist/v2/components/ForbiddenPage.js +81 -0
- package/dist/v2/components/ForbiddenPage.js.map +1 -0
- package/dist/v2/components/FormGrid.d.ts +76 -0
- package/dist/v2/components/FormGrid.d.ts.map +1 -0
- package/dist/v2/components/FormGrid.js +177 -0
- package/dist/v2/components/FormGrid.js.map +1 -0
- package/dist/v2/components/FormikDisplay.d.ts +38 -0
- package/dist/v2/components/FormikDisplay.d.ts.map +1 -0
- package/dist/v2/components/FormikDisplay.js +125 -0
- package/dist/v2/components/FormikDisplay.js.map +1 -0
- package/dist/v2/components/Input.d.ts +62 -0
- package/dist/v2/components/Input.d.ts.map +1 -0
- package/dist/v2/components/Input.js +115 -0
- package/dist/v2/components/Input.js.map +1 -0
- package/dist/v2/components/KPICard.d.ts +22 -0
- package/dist/v2/components/KPICard.d.ts.map +1 -0
- package/dist/v2/components/KPICard.js +205 -0
- package/dist/v2/components/KPICard.js.map +1 -0
- package/dist/v2/components/KV.d.ts +25 -0
- package/dist/v2/components/KV.d.ts.map +1 -0
- package/dist/v2/components/KV.js +82 -0
- package/dist/v2/components/KV.js.map +1 -0
- package/dist/v2/components/KVGrid.d.ts +44 -0
- package/dist/v2/components/KVGrid.d.ts.map +1 -0
- package/dist/v2/components/KVGrid.js +73 -0
- package/dist/v2/components/KVGrid.js.map +1 -0
- package/dist/v2/components/Layout.d.ts +78 -0
- package/dist/v2/components/Layout.d.ts.map +1 -0
- package/dist/v2/components/Layout.js +284 -0
- package/dist/v2/components/Layout.js.map +1 -0
- package/dist/v2/components/MobileRowCard.d.ts +63 -0
- package/dist/v2/components/MobileRowCard.d.ts.map +1 -0
- package/dist/v2/components/MobileRowCard.js +321 -0
- package/dist/v2/components/MobileRowCard.js.map +1 -0
- package/dist/v2/components/Modal.d.ts +21 -0
- package/dist/v2/components/Modal.d.ts.map +1 -0
- package/dist/v2/components/Modal.js +281 -0
- package/dist/v2/components/Modal.js.map +1 -0
- package/dist/v2/components/NetworkErrorPage.d.ts +11 -0
- package/dist/v2/components/NetworkErrorPage.d.ts.map +1 -0
- package/dist/v2/components/NetworkErrorPage.js +86 -0
- package/dist/v2/components/NetworkErrorPage.js.map +1 -0
- package/dist/v2/components/NotFoundPage.d.ts +9 -0
- package/dist/v2/components/NotFoundPage.d.ts.map +1 -0
- package/dist/v2/components/NotFoundPage.js +66 -0
- package/dist/v2/components/NotFoundPage.js.map +1 -0
- package/dist/v2/components/NumberInput.d.ts +83 -0
- package/dist/v2/components/NumberInput.d.ts.map +1 -0
- package/dist/v2/components/NumberInput.js +316 -0
- package/dist/v2/components/NumberInput.js.map +1 -0
- package/dist/v2/components/OverflowMenu.d.ts +55 -0
- package/dist/v2/components/OverflowMenu.d.ts.map +1 -0
- package/dist/v2/components/OverflowMenu.js +196 -0
- package/dist/v2/components/OverflowMenu.js.map +1 -0
- package/dist/v2/components/PdfViewer.d.ts +56 -0
- package/dist/v2/components/PdfViewer.d.ts.map +1 -0
- package/dist/v2/components/PdfViewer.js +132 -0
- package/dist/v2/components/PdfViewer.js.map +1 -0
- package/dist/v2/components/ProgressBar.d.ts +53 -0
- package/dist/v2/components/ProgressBar.d.ts.map +1 -0
- package/dist/v2/components/ProgressBar.js +209 -0
- package/dist/v2/components/ProgressBar.js.map +1 -0
- package/dist/v2/components/Radio.d.ts +78 -0
- package/dist/v2/components/Radio.d.ts.map +1 -0
- package/dist/v2/components/Radio.js +238 -0
- package/dist/v2/components/Radio.js.map +1 -0
- package/dist/v2/components/SectionHeader.d.ts +53 -0
- package/dist/v2/components/SectionHeader.d.ts.map +1 -0
- package/dist/v2/components/SectionHeader.js +140 -0
- package/dist/v2/components/SectionHeader.js.map +1 -0
- package/dist/v2/components/Segmented.d.ts +61 -0
- package/dist/v2/components/Segmented.d.ts.map +1 -0
- package/dist/v2/components/Segmented.js +261 -0
- package/dist/v2/components/Segmented.js.map +1 -0
- package/dist/v2/components/Select.d.ts +72 -0
- package/dist/v2/components/Select.d.ts.map +1 -0
- package/dist/v2/components/Select.js +382 -0
- package/dist/v2/components/Select.js.map +1 -0
- package/dist/v2/components/ServerErrorPage.d.ts +11 -0
- package/dist/v2/components/ServerErrorPage.d.ts.map +1 -0
- package/dist/v2/components/ServerErrorPage.js +82 -0
- package/dist/v2/components/ServerErrorPage.js.map +1 -0
- package/dist/v2/components/Skeleton.d.ts +56 -0
- package/dist/v2/components/Skeleton.d.ts.map +1 -0
- package/dist/v2/components/Skeleton.js +281 -0
- package/dist/v2/components/Skeleton.js.map +1 -0
- package/dist/v2/components/SkipLink.d.ts +30 -0
- package/dist/v2/components/SkipLink.d.ts.map +1 -0
- package/dist/v2/components/SkipLink.js +58 -0
- package/dist/v2/components/SkipLink.js.map +1 -0
- package/dist/v2/components/Spinner.d.ts +40 -0
- package/dist/v2/components/Spinner.d.ts.map +1 -0
- package/dist/v2/components/Spinner.js +76 -0
- package/dist/v2/components/Spinner.js.map +1 -0
- package/dist/v2/components/Status.d.ts +42 -0
- package/dist/v2/components/Status.d.ts.map +1 -0
- package/dist/v2/components/Status.js +71 -0
- package/dist/v2/components/Status.js.map +1 -0
- package/dist/v2/components/Stepper.d.ts +136 -0
- package/dist/v2/components/Stepper.d.ts.map +1 -0
- package/dist/v2/components/Stepper.js +415 -0
- package/dist/v2/components/Stepper.js.map +1 -0
- package/dist/v2/components/Switch.d.ts +30 -0
- package/dist/v2/components/Switch.d.ts.map +1 -0
- package/dist/v2/components/Switch.js +136 -0
- package/dist/v2/components/Switch.js.map +1 -0
- package/dist/v2/components/Tabs.d.ts +49 -0
- package/dist/v2/components/Tabs.d.ts.map +1 -0
- package/dist/v2/components/Tabs.js +160 -0
- package/dist/v2/components/Tabs.js.map +1 -0
- package/dist/v2/components/TelInput.d.ts +33 -0
- package/dist/v2/components/TelInput.d.ts.map +1 -0
- package/dist/v2/components/TelInput.js +282 -0
- package/dist/v2/components/TelInput.js.map +1 -0
- package/dist/v2/components/Textarea.d.ts +23 -0
- package/dist/v2/components/Textarea.d.ts.map +1 -0
- package/dist/v2/components/Textarea.js +80 -0
- package/dist/v2/components/Textarea.js.map +1 -0
- package/dist/v2/components/TimePicker.d.ts +21 -0
- package/dist/v2/components/TimePicker.d.ts.map +1 -0
- package/dist/v2/components/TimePicker.js +141 -0
- package/dist/v2/components/TimePicker.js.map +1 -0
- package/dist/v2/components/Toast.d.ts +32 -0
- package/dist/v2/components/Toast.d.ts.map +1 -0
- package/dist/v2/components/Toast.js +384 -0
- package/dist/v2/components/Toast.js.map +1 -0
- package/dist/v2/components/Tooltip.d.ts +9 -0
- package/dist/v2/components/Tooltip.d.ts.map +1 -0
- package/dist/v2/components/Tooltip.js +169 -0
- package/dist/v2/components/Tooltip.js.map +1 -0
- package/dist/v2/components/_ErrorPageBody.d.ts +48 -0
- package/dist/v2/components/_ErrorPageBody.d.ts.map +1 -0
- package/dist/v2/components/_ErrorPageBody.js +96 -0
- package/dist/v2/components/_ErrorPageBody.js.map +1 -0
- package/dist/v2/components/_pickerShared.d.ts +47 -0
- package/dist/v2/components/_pickerShared.d.ts.map +1 -0
- package/dist/v2/components/_pickerShared.js +68 -0
- package/dist/v2/components/_pickerShared.js.map +1 -0
- package/dist/v2/components/index.d.ts +83 -0
- package/dist/v2/components/index.d.ts.map +1 -0
- package/dist/v2/components/index.js +477 -0
- package/dist/v2/components/index.js.map +1 -0
- package/dist/v2/hooks/index.d.ts +11 -0
- package/dist/v2/hooks/index.d.ts.map +1 -0
- package/dist/v2/hooks/index.js +85 -0
- package/dist/v2/hooks/index.js.map +1 -0
- package/dist/v2/hooks/useDelayedFlag.d.ts +22 -0
- package/dist/v2/hooks/useDelayedFlag.d.ts.map +1 -0
- package/dist/v2/hooks/useDelayedFlag.js +60 -0
- package/dist/v2/hooks/useDelayedFlag.js.map +1 -0
- package/dist/v2/hooks/useDensity.d.ts +23 -0
- package/dist/v2/hooks/useDensity.d.ts.map +1 -0
- package/dist/v2/hooks/useDensity.js +124 -0
- package/dist/v2/hooks/useDensity.js.map +1 -0
- package/dist/v2/hooks/useFocusFirstError.d.ts +121 -0
- package/dist/v2/hooks/useFocusFirstError.d.ts.map +1 -0
- package/dist/v2/hooks/useFocusFirstError.js +203 -0
- package/dist/v2/hooks/useFocusFirstError.js.map +1 -0
- package/dist/v2/hooks/useFocusTrap.d.ts +3 -0
- package/dist/v2/hooks/useFocusTrap.d.ts.map +1 -0
- package/dist/v2/hooks/useFocusTrap.js +207 -0
- package/dist/v2/hooks/useFocusTrap.js.map +1 -0
- package/dist/v2/hooks/useFormAutoSave.d.ts +42 -0
- package/dist/v2/hooks/useFormAutoSave.d.ts.map +1 -0
- package/dist/v2/hooks/useFormAutoSave.js +186 -0
- package/dist/v2/hooks/useFormAutoSave.js.map +1 -0
- package/dist/v2/hooks/useFormCompletionProgress.d.ts +52 -0
- package/dist/v2/hooks/useFormCompletionProgress.d.ts.map +1 -0
- package/dist/v2/hooks/useFormCompletionProgress.js +136 -0
- package/dist/v2/hooks/useFormCompletionProgress.js.map +1 -0
- package/dist/v2/hooks/useResolvedDensity.d.ts +31 -0
- package/dist/v2/hooks/useResolvedDensity.d.ts.map +1 -0
- package/dist/v2/hooks/useResolvedDensity.js +50 -0
- package/dist/v2/hooks/useResolvedDensity.js.map +1 -0
- package/dist/v2/hooks/useSortedRows.d.ts +25 -0
- package/dist/v2/hooks/useSortedRows.d.ts.map +1 -0
- package/dist/v2/hooks/useSortedRows.js +38 -0
- package/dist/v2/hooks/useSortedRows.js.map +1 -0
- package/dist/v2/hooks/useTabLoading.d.ts +39 -0
- package/dist/v2/hooks/useTabLoading.d.ts.map +1 -0
- package/dist/v2/hooks/useTabLoading.js +85 -0
- package/dist/v2/hooks/useTabLoading.js.map +1 -0
- package/dist/v2/index.d.ts +115 -0
- package/dist/v2/index.d.ts.map +1 -0
- package/dist/v2/index.js +1127 -0
- package/dist/v2/index.js.map +1 -0
- package/dist/v2/modalContext.d.ts +96 -0
- package/dist/v2/modalContext.d.ts.map +1 -0
- package/dist/v2/modalContext.js +113 -0
- package/dist/v2/modalContext.js.map +1 -0
- package/dist/v2/models/favorite.d.ts +14 -0
- package/dist/v2/models/favorite.d.ts.map +1 -0
- package/dist/v2/models/favorite.js +6 -0
- package/dist/v2/models/favorite.js.map +1 -0
- package/dist/v2/models/index.d.ts +11 -0
- package/dist/v2/models/index.d.ts.map +1 -0
- package/dist/v2/models/index.js +50 -0
- package/dist/v2/models/index.js.map +1 -0
- package/dist/v2/models/personalization.d.ts +65 -0
- package/dist/v2/models/personalization.d.ts.map +1 -0
- package/dist/v2/models/personalization.js +6 -0
- package/dist/v2/models/personalization.js.map +1 -0
- package/dist/v2/models/referentiel.d.ts +67 -0
- package/dist/v2/models/referentiel.d.ts.map +1 -0
- package/dist/v2/models/referentiel.js +6 -0
- package/dist/v2/models/referentiel.js.map +1 -0
- package/dist/v2/models/savedFilter.d.ts +22 -0
- package/dist/v2/models/savedFilter.d.ts.map +1 -0
- package/dist/v2/models/savedFilter.js +6 -0
- package/dist/v2/models/savedFilter.js.map +1 -0
- package/dist/v2/patterns/ActionBar.d.ts +137 -0
- package/dist/v2/patterns/ActionBar.d.ts.map +1 -0
- package/dist/v2/patterns/ActionBar.js +601 -0
- package/dist/v2/patterns/ActionBar.js.map +1 -0
- package/dist/v2/patterns/BulkActionBar.d.ts +63 -0
- package/dist/v2/patterns/BulkActionBar.d.ts.map +1 -0
- package/dist/v2/patterns/BulkActionBar.js +153 -0
- package/dist/v2/patterns/BulkActionBar.js.map +1 -0
- package/dist/v2/patterns/CollapsibleDataGrid.d.ts +62 -0
- package/dist/v2/patterns/CollapsibleDataGrid.d.ts.map +1 -0
- package/dist/v2/patterns/CollapsibleDataGrid.js +306 -0
- package/dist/v2/patterns/CollapsibleDataGrid.js.map +1 -0
- package/dist/v2/patterns/ColumnsToggle.d.ts +55 -0
- package/dist/v2/patterns/ColumnsToggle.d.ts.map +1 -0
- package/dist/v2/patterns/ColumnsToggle.js +314 -0
- package/dist/v2/patterns/ColumnsToggle.js.map +1 -0
- package/dist/v2/patterns/DataGrid.d.ts +7 -0
- package/dist/v2/patterns/DataGrid.d.ts.map +1 -0
- package/dist/v2/patterns/DataGrid.js +834 -0
- package/dist/v2/patterns/DataGrid.js.map +1 -0
- package/dist/v2/patterns/DataGridSettingsMenu.d.ts +68 -0
- package/dist/v2/patterns/DataGridSettingsMenu.d.ts.map +1 -0
- package/dist/v2/patterns/DataGridSettingsMenu.js +381 -0
- package/dist/v2/patterns/DataGridSettingsMenu.js.map +1 -0
- package/dist/v2/patterns/DataGridToolbar.d.ts +81 -0
- package/dist/v2/patterns/DataGridToolbar.d.ts.map +1 -0
- package/dist/v2/patterns/DataGridToolbar.js +255 -0
- package/dist/v2/patterns/DataGridToolbar.js.map +1 -0
- package/dist/v2/patterns/DataGridVirtualized.d.ts +76 -0
- package/dist/v2/patterns/DataGridVirtualized.d.ts.map +1 -0
- package/dist/v2/patterns/DataGridVirtualized.js +528 -0
- package/dist/v2/patterns/DataGridVirtualized.js.map +1 -0
- package/dist/v2/patterns/DeleteResourceConfirmDialog.d.ts +46 -0
- package/dist/v2/patterns/DeleteResourceConfirmDialog.d.ts.map +1 -0
- package/dist/v2/patterns/DeleteResourceConfirmDialog.js +77 -0
- package/dist/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -0
- package/dist/v2/patterns/FavoriteColumn.d.ts +72 -0
- package/dist/v2/patterns/FavoriteColumn.d.ts.map +1 -0
- package/dist/v2/patterns/FavoriteColumn.js +171 -0
- package/dist/v2/patterns/FavoriteColumn.js.map +1 -0
- package/dist/v2/patterns/FavoritesFilter.d.ts +51 -0
- package/dist/v2/patterns/FavoritesFilter.d.ts.map +1 -0
- package/dist/v2/patterns/FavoritesFilter.js +97 -0
- package/dist/v2/patterns/FavoritesFilter.js.map +1 -0
- package/dist/v2/patterns/FormErrorSummary.d.ts +39 -0
- package/dist/v2/patterns/FormErrorSummary.d.ts.map +1 -0
- package/dist/v2/patterns/FormErrorSummary.js +111 -0
- package/dist/v2/patterns/FormErrorSummary.js.map +1 -0
- package/dist/v2/patterns/FormPageShell.d.ts +55 -0
- package/dist/v2/patterns/FormPageShell.d.ts.map +1 -0
- package/dist/v2/patterns/FormPageShell.js +133 -0
- package/dist/v2/patterns/FormPageShell.js.map +1 -0
- package/dist/v2/patterns/FormSection.d.ts +53 -0
- package/dist/v2/patterns/FormSection.d.ts.map +1 -0
- package/dist/v2/patterns/FormSection.js +162 -0
- package/dist/v2/patterns/FormSection.js.map +1 -0
- package/dist/v2/patterns/FormikCheckboxGroup.d.ts +51 -0
- package/dist/v2/patterns/FormikCheckboxGroup.d.ts.map +1 -0
- package/dist/v2/patterns/FormikCheckboxGroup.js +117 -0
- package/dist/v2/patterns/FormikCheckboxGroup.js.map +1 -0
- package/dist/v2/patterns/FormikCombobox.d.ts +43 -0
- package/dist/v2/patterns/FormikCombobox.d.ts.map +1 -0
- package/dist/v2/patterns/FormikCombobox.js +121 -0
- package/dist/v2/patterns/FormikCombobox.js.map +1 -0
- package/dist/v2/patterns/FormikDatePicker.d.ts +87 -0
- package/dist/v2/patterns/FormikDatePicker.d.ts.map +1 -0
- package/dist/v2/patterns/FormikDatePicker.js +177 -0
- package/dist/v2/patterns/FormikDatePicker.js.map +1 -0
- package/dist/v2/patterns/FormikErrorFocus.d.ts +59 -0
- package/dist/v2/patterns/FormikErrorFocus.d.ts.map +1 -0
- package/dist/v2/patterns/FormikErrorFocus.js +83 -0
- package/dist/v2/patterns/FormikErrorFocus.js.map +1 -0
- package/dist/v2/patterns/FormikFile.d.ts +43 -0
- package/dist/v2/patterns/FormikFile.d.ts.map +1 -0
- package/dist/v2/patterns/FormikFile.js +156 -0
- package/dist/v2/patterns/FormikFile.js.map +1 -0
- package/dist/v2/patterns/FormikInput.d.ts +37 -0
- package/dist/v2/patterns/FormikInput.d.ts.map +1 -0
- package/dist/v2/patterns/FormikInput.js +87 -0
- package/dist/v2/patterns/FormikInput.js.map +1 -0
- package/dist/v2/patterns/FormikReferentielField.d.ts +33 -0
- package/dist/v2/patterns/FormikReferentielField.d.ts.map +1 -0
- package/dist/v2/patterns/FormikReferentielField.js +124 -0
- package/dist/v2/patterns/FormikReferentielField.js.map +1 -0
- package/dist/v2/patterns/FormikSelect.d.ts +40 -0
- package/dist/v2/patterns/FormikSelect.d.ts.map +1 -0
- package/dist/v2/patterns/FormikSelect.js +139 -0
- package/dist/v2/patterns/FormikSelect.js.map +1 -0
- package/dist/v2/patterns/FormikTextarea.d.ts +31 -0
- package/dist/v2/patterns/FormikTextarea.d.ts.map +1 -0
- package/dist/v2/patterns/FormikTextarea.js +84 -0
- package/dist/v2/patterns/FormikTextarea.js.map +1 -0
- package/dist/v2/patterns/KeyboardShortcutsHelp.d.ts +44 -0
- package/dist/v2/patterns/KeyboardShortcutsHelp.d.ts.map +1 -0
- package/dist/v2/patterns/KeyboardShortcutsHelp.js +207 -0
- package/dist/v2/patterns/KeyboardShortcutsHelp.js.map +1 -0
- package/dist/v2/patterns/NetworkErrorBanner.d.ts +26 -0
- package/dist/v2/patterns/NetworkErrorBanner.d.ts.map +1 -0
- package/dist/v2/patterns/NetworkErrorBanner.js +82 -0
- package/dist/v2/patterns/NetworkErrorBanner.js.map +1 -0
- package/dist/v2/patterns/PageContent.d.ts +40 -0
- package/dist/v2/patterns/PageContent.d.ts.map +1 -0
- package/dist/v2/patterns/PageContent.js +69 -0
- package/dist/v2/patterns/PageContent.js.map +1 -0
- package/dist/v2/patterns/ReferentielField.d.ts +118 -0
- package/dist/v2/patterns/ReferentielField.d.ts.map +1 -0
- package/dist/v2/patterns/ReferentielField.js +617 -0
- package/dist/v2/patterns/ReferentielField.js.map +1 -0
- package/dist/v2/patterns/SaveFilterDialog.d.ts +68 -0
- package/dist/v2/patterns/SaveFilterDialog.d.ts.map +1 -0
- package/dist/v2/patterns/SaveFilterDialog.js +203 -0
- package/dist/v2/patterns/SaveFilterDialog.js.map +1 -0
- package/dist/v2/patterns/SavedFiltersMenu.d.ts +74 -0
- package/dist/v2/patterns/SavedFiltersMenu.d.ts.map +1 -0
- package/dist/v2/patterns/SavedFiltersMenu.js +412 -0
- package/dist/v2/patterns/SavedFiltersMenu.js.map +1 -0
- package/dist/v2/patterns/SkeletonPageShell.d.ts +76 -0
- package/dist/v2/patterns/SkeletonPageShell.d.ts.map +1 -0
- package/dist/v2/patterns/SkeletonPageShell.js +347 -0
- package/dist/v2/patterns/SkeletonPageShell.js.map +1 -0
- package/dist/v2/patterns/SortableHeader.d.ts +47 -0
- package/dist/v2/patterns/SortableHeader.d.ts.map +1 -0
- package/dist/v2/patterns/SortableHeader.js +193 -0
- package/dist/v2/patterns/SortableHeader.js.map +1 -0
- package/dist/v2/patterns/Tour.d.ts +55 -0
- package/dist/v2/patterns/Tour.d.ts.map +1 -0
- package/dist/v2/patterns/Tour.js +473 -0
- package/dist/v2/patterns/Tour.js.map +1 -0
- package/dist/v2/patterns/_dataGridShared.d.ts +125 -0
- package/dist/v2/patterns/_dataGridShared.d.ts.map +1 -0
- package/dist/v2/patterns/_dataGridShared.js +406 -0
- package/dist/v2/patterns/_dataGridShared.js.map +1 -0
- package/dist/v2/patterns/_sort.d.ts +22 -0
- package/dist/v2/patterns/_sort.d.ts.map +1 -0
- package/dist/v2/patterns/_sort.js +118 -0
- package/dist/v2/patterns/_sort.js.map +1 -0
- package/dist/v2/patterns/_useColumnReorder.d.ts +69 -0
- package/dist/v2/patterns/_useColumnReorder.d.ts.map +1 -0
- package/dist/v2/patterns/_useColumnReorder.js +264 -0
- package/dist/v2/patterns/_useColumnReorder.js.map +1 -0
- package/dist/v2/patterns/_useColumnResize.d.ts +49 -0
- package/dist/v2/patterns/_useColumnResize.d.ts.map +1 -0
- package/dist/v2/patterns/_useColumnResize.js +198 -0
- package/dist/v2/patterns/_useColumnResize.js.map +1 -0
- package/dist/v2/patterns/index.d.ts +62 -0
- package/dist/v2/patterns/index.d.ts.map +1 -0
- package/dist/v2/patterns/index.js +246 -0
- package/dist/v2/patterns/index.js.map +1 -0
- package/dist/v2/personalization/PersonalizationProvider.d.ts +80 -0
- package/dist/v2/personalization/PersonalizationProvider.d.ts.map +1 -0
- package/dist/v2/personalization/PersonalizationProvider.js +177 -0
- package/dist/v2/personalization/PersonalizationProvider.js.map +1 -0
- package/dist/v2/personalization/adapters/_storageKey.d.ts +35 -0
- package/dist/v2/personalization/adapters/_storageKey.d.ts.map +1 -0
- package/dist/v2/personalization/adapters/_storageKey.js +69 -0
- package/dist/v2/personalization/adapters/_storageKey.js.map +1 -0
- package/dist/v2/personalization/adapters/createLocalStorageAdapter.d.ts +31 -0
- package/dist/v2/personalization/adapters/createLocalStorageAdapter.d.ts.map +1 -0
- package/dist/v2/personalization/adapters/createLocalStorageAdapter.js +128 -0
- package/dist/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -0
- package/dist/v2/personalization/adapters/createMemoryAdapter.d.ts +25 -0
- package/dist/v2/personalization/adapters/createMemoryAdapter.d.ts.map +1 -0
- package/dist/v2/personalization/adapters/createMemoryAdapter.js +76 -0
- package/dist/v2/personalization/adapters/createMemoryAdapter.js.map +1 -0
- package/dist/v2/personalization/adapters/index.d.ts +10 -0
- package/dist/v2/personalization/adapters/index.d.ts.map +1 -0
- package/dist/v2/personalization/adapters/index.js +21 -0
- package/dist/v2/personalization/adapters/index.js.map +1 -0
- package/dist/v2/personalization/capabilities/favorites.d.ts +53 -0
- package/dist/v2/personalization/capabilities/favorites.d.ts.map +1 -0
- package/dist/v2/personalization/capabilities/favorites.js +223 -0
- package/dist/v2/personalization/capabilities/favorites.js.map +1 -0
- package/dist/v2/personalization/capabilities/favoritesView.d.ts +58 -0
- package/dist/v2/personalization/capabilities/favoritesView.d.ts.map +1 -0
- package/dist/v2/personalization/capabilities/favoritesView.js +121 -0
- package/dist/v2/personalization/capabilities/favoritesView.js.map +1 -0
- package/dist/v2/personalization/capabilities/index.d.ts +16 -0
- package/dist/v2/personalization/capabilities/index.d.ts.map +1 -0
- package/dist/v2/personalization/capabilities/index.js +69 -0
- package/dist/v2/personalization/capabilities/index.js.map +1 -0
- package/dist/v2/personalization/capabilities/savedFilters.d.ts +61 -0
- package/dist/v2/personalization/capabilities/savedFilters.d.ts.map +1 -0
- package/dist/v2/personalization/capabilities/savedFilters.js +297 -0
- package/dist/v2/personalization/capabilities/savedFilters.js.map +1 -0
- package/dist/v2/personalization/createPersonalizationStore.d.ts +76 -0
- package/dist/v2/personalization/createPersonalizationStore.d.ts.map +1 -0
- package/dist/v2/personalization/createPersonalizationStore.js +475 -0
- package/dist/v2/personalization/createPersonalizationStore.js.map +1 -0
- package/dist/v2/personalization/index.d.ts +33 -0
- package/dist/v2/personalization/index.d.ts.map +1 -0
- package/dist/v2/personalization/index.js +111 -0
- package/dist/v2/personalization/index.js.map +1 -0
- package/dist/v2/personalization/personalizationContext.d.ts +78 -0
- package/dist/v2/personalization/personalizationContext.d.ts.map +1 -0
- package/dist/v2/personalization/personalizationContext.js +121 -0
- package/dist/v2/personalization/personalizationContext.js.map +1 -0
- package/dist/v2/personalization/schema.d.ts +60 -0
- package/dist/v2/personalization/schema.d.ts.map +1 -0
- package/dist/v2/personalization/schema.js +102 -0
- package/dist/v2/personalization/schema.js.map +1 -0
- package/dist/v2/personalization/types.d.ts +81 -0
- package/dist/v2/personalization/types.d.ts.map +1 -0
- package/dist/v2/personalization/types.js +6 -0
- package/dist/v2/personalization/types.js.map +1 -0
- package/dist/v2/referentiel/ReferentielProvider.d.ts +53 -0
- package/dist/v2/referentiel/ReferentielProvider.d.ts.map +1 -0
- package/dist/v2/referentiel/ReferentielProvider.js +94 -0
- package/dist/v2/referentiel/ReferentielProvider.js.map +1 -0
- package/dist/v2/referentiel/index.d.ts +18 -0
- package/dist/v2/referentiel/index.d.ts.map +1 -0
- package/dist/v2/referentiel/index.js +44 -0
- package/dist/v2/referentiel/index.js.map +1 -0
- package/dist/v2/referentiel/useReferentielClient.d.ts +15 -0
- package/dist/v2/referentiel/useReferentielClient.d.ts.map +1 -0
- package/dist/v2/referentiel/useReferentielClient.js +46 -0
- package/dist/v2/referentiel/useReferentielClient.js.map +1 -0
- package/dist/v2/referentiel/useReferentielOptions.d.ts +40 -0
- package/dist/v2/referentiel/useReferentielOptions.d.ts.map +1 -0
- package/dist/v2/referentiel/useReferentielOptions.js +177 -0
- package/dist/v2/referentiel/useReferentielOptions.js.map +1 -0
- package/dist/v2/referentiel/useReferentielSearch.d.ts +76 -0
- package/dist/v2/referentiel/useReferentielSearch.d.ts.map +1 -0
- package/dist/v2/referentiel/useReferentielSearch.js +140 -0
- package/dist/v2/referentiel/useReferentielSearch.js.map +1 -0
- package/dist/v2/styles/base.css +425 -0
- package/dist/v2/styles/css.d.ts +10 -0
- package/dist/v2/styles/index.d.ts +12 -0
- package/dist/v2/styles/index.d.ts.map +1 -0
- package/dist/v2/styles/index.js +4 -0
- package/dist/v2/styles/index.js.map +1 -0
- package/dist/v2/theme/_brand.d.ts +29 -0
- package/dist/v2/theme/_brand.d.ts.map +1 -0
- package/dist/v2/theme/_brand.js +69 -0
- package/dist/v2/theme/_brand.js.map +1 -0
- package/dist/v2/theme/_brandSecondary.d.ts +26 -0
- package/dist/v2/theme/_brandSecondary.d.ts.map +1 -0
- package/dist/v2/theme/_brandSecondary.js +65 -0
- package/dist/v2/theme/_brandSecondary.js.map +1 -0
- package/dist/v2/theme/createPortnetTheme.d.ts +50 -0
- package/dist/v2/theme/createPortnetTheme.d.ts.map +1 -0
- package/dist/v2/theme/createPortnetTheme.js +529 -0
- package/dist/v2/theme/createPortnetTheme.js.map +1 -0
- package/dist/v2/theme/cssVariables.d.ts +41 -0
- package/dist/v2/theme/cssVariables.d.ts.map +1 -0
- package/dist/v2/theme/cssVariables.js +205 -0
- package/dist/v2/theme/cssVariables.js.map +1 -0
- package/dist/v2/theme/index.d.ts +33 -0
- package/dist/v2/theme/index.d.ts.map +1 -0
- package/dist/v2/theme/index.js +60 -0
- package/dist/v2/theme/index.js.map +1 -0
- package/dist/v2/tokens/breakpoints.d.ts +74 -0
- package/dist/v2/tokens/breakpoints.d.ts.map +1 -0
- package/dist/v2/tokens/breakpoints.js +114 -0
- package/dist/v2/tokens/breakpoints.js.map +1 -0
- package/dist/v2/tokens/colors.d.ts +228 -0
- package/dist/v2/tokens/colors.d.ts.map +1 -0
- package/dist/v2/tokens/colors.js +225 -0
- package/dist/v2/tokens/colors.js.map +1 -0
- package/dist/v2/tokens/density.d.ts +142 -0
- package/dist/v2/tokens/density.d.ts.map +1 -0
- package/dist/v2/tokens/density.js +111 -0
- package/dist/v2/tokens/density.js.map +1 -0
- package/dist/v2/tokens/index.d.ts +556 -0
- package/dist/v2/tokens/index.d.ts.map +1 -0
- package/dist/v2/tokens/index.js +313 -0
- package/dist/v2/tokens/index.js.map +1 -0
- package/dist/v2/tokens/motion.d.ts +85 -0
- package/dist/v2/tokens/motion.d.ts.map +1 -0
- package/dist/v2/tokens/motion.js +94 -0
- package/dist/v2/tokens/motion.js.map +1 -0
- package/dist/v2/tokens/radius.d.ts +18 -0
- package/dist/v2/tokens/radius.d.ts.map +1 -0
- package/dist/v2/tokens/radius.js +28 -0
- package/dist/v2/tokens/radius.js.map +1 -0
- package/dist/v2/tokens/shadows.d.ts +25 -0
- package/dist/v2/tokens/shadows.d.ts.map +1 -0
- package/dist/v2/tokens/shadows.js +46 -0
- package/dist/v2/tokens/shadows.js.map +1 -0
- package/dist/v2/tokens/spacing.d.ts +38 -0
- package/dist/v2/tokens/spacing.d.ts.map +1 -0
- package/dist/v2/tokens/spacing.js +57 -0
- package/dist/v2/tokens/spacing.js.map +1 -0
- package/dist/v2/tokens/state.d.ts +40 -0
- package/dist/v2/tokens/state.d.ts.map +1 -0
- package/dist/v2/tokens/state.js +47 -0
- package/dist/v2/tokens/state.js.map +1 -0
- package/dist/v2/tokens/statusPalette.d.ts +54 -0
- package/dist/v2/tokens/statusPalette.d.ts.map +1 -0
- package/dist/v2/tokens/statusPalette.js +72 -0
- package/dist/v2/tokens/statusPalette.js.map +1 -0
- package/dist/v2/tokens/tokens.json +153 -0
- package/dist/v2/tokens/typography.d.ts +206 -0
- package/dist/v2/tokens/typography.d.ts.map +1 -0
- package/dist/v2/tokens/typography.js +155 -0
- package/dist/v2/tokens/typography.js.map +1 -0
- package/dist/v2/tokens/zIndex.d.ts +33 -0
- package/dist/v2/tokens/zIndex.d.ts.map +1 -0
- package/dist/v2/tokens/zIndex.js +50 -0
- package/dist/v2/tokens/zIndex.js.map +1 -0
- package/dist/v2/types/common.d.ts +24 -0
- package/dist/v2/types/common.d.ts.map +1 -0
- package/dist/v2/types/common.js +6 -0
- package/dist/v2/types/common.js.map +1 -0
- package/dist/v2/types/datagrid.d.ts +131 -0
- package/dist/v2/types/datagrid.d.ts.map +1 -0
- package/dist/v2/types/datagrid.js +6 -0
- package/dist/v2/types/datagrid.js.map +1 -0
- package/dist/v2/types/index.d.ts +11 -0
- package/dist/v2/types/index.d.ts.map +1 -0
- package/dist/v2/types/index.js +28 -0
- package/dist/v2/types/index.js.map +1 -0
- package/dist/v2/utils/apiError.d.ts +90 -0
- package/dist/v2/utils/apiError.d.ts.map +1 -0
- package/dist/v2/utils/apiError.js +227 -0
- package/dist/v2/utils/apiError.js.map +1 -0
- package/dist/v2/utils/contrast.d.ts +68 -0
- package/dist/v2/utils/contrast.d.ts.map +1 -0
- package/dist/v2/utils/contrast.js +167 -0
- package/dist/v2/utils/contrast.js.map +1 -0
- package/dist/v2/utils/cx.d.ts +9 -0
- package/dist/v2/utils/cx.d.ts.map +1 -0
- package/dist/v2/utils/cx.js +45 -0
- package/dist/v2/utils/cx.js.map +1 -0
- package/dist/v2/utils/fileDownload.d.ts +94 -0
- package/dist/v2/utils/fileDownload.d.ts.map +1 -0
- package/dist/v2/utils/fileDownload.js +236 -0
- package/dist/v2/utils/fileDownload.js.map +1 -0
- package/dist/v2/utils/fmtMoney.d.ts +28 -0
- package/dist/v2/utils/fmtMoney.d.ts.map +1 -0
- package/dist/v2/utils/fmtMoney.js +84 -0
- package/dist/v2/utils/fmtMoney.js.map +1 -0
- package/dist/v2/utils/index.d.ts +8 -0
- package/dist/v2/utils/index.d.ts.map +1 -0
- package/dist/v2/utils/index.js +90 -0
- package/dist/v2/utils/index.js.map +1 -0
- package/dist/v2/utils/networkStatus.d.ts +88 -0
- package/dist/v2/utils/networkStatus.d.ts.map +1 -0
- package/dist/v2/utils/networkStatus.js +121 -0
- package/dist/v2/utils/networkStatus.js.map +1 -0
- package/package.json +191 -76
- package/dist/api/guideApi.js +0 -12
- package/dist/api/guideImageService.js +0 -119
- package/dist/api/reclamationApi.js +0 -102
- package/dist/assets/guides/FAQ.json +0 -118
- package/dist/assets/guides/index.js +0 -11
- package/dist/assets/images/tijariaLogo.ico +0 -0
- package/dist/components/buttons/PuiButton.js +0 -217
- package/dist/components/buttons/PuiIconButton.js +0 -98
- package/dist/components/common/PuiAlertContext.js +0 -12
- package/dist/components/common/PuiHelpWidgetContext.js +0 -17
- package/dist/components/common/StyledMuiButton.js +0 -48
- package/dist/components/common/StyledMuiTextField.js +0 -180
- package/dist/components/inputs/PuiAutocomplete.js +0 -352
- package/dist/components/inputs/PuiCheckbox.js +0 -308
- package/dist/components/inputs/PuiCheckboxGroup.js +0 -215
- package/dist/components/inputs/PuiCheckboxItem.js +0 -162
- package/dist/components/inputs/PuiDateField.js +0 -280
- package/dist/components/inputs/PuiDateTimeField.js +0 -276
- package/dist/components/inputs/PuiFileField.js +0 -265
- package/dist/components/inputs/PuiRadioGroup.js +0 -197
- package/dist/components/inputs/PuiRadioItem.js +0 -100
- package/dist/components/inputs/PuiSelect.js +0 -427
- package/dist/components/inputs/PuiTextField.js +0 -263
- package/dist/components/others/PuiBadge.js +0 -58
- package/dist/components/others/PuiChip.js +0 -150
- package/dist/components/others/PuiDialog.js +0 -102
- package/dist/components/others/PuiFormikForm.js +0 -70
- package/dist/components/others/PuiGrid.js +0 -23
- package/dist/components/others/PuiIcon.js +0 -92
- package/dist/components/others/PuiLoadingBackdrop.js +0 -32
- package/dist/components/others/PuiMainContainer.js +0 -41
- package/dist/components/others/PuiNavigation.js +0 -68
- package/dist/components/others/PuiSection.js +0 -187
- package/dist/components/others/PuiTooltip.js +0 -86
- package/dist/components/providers/PuiAlertProvider.js +0 -134
- package/dist/components/providers/PuiHelpWidgetProvider.js +0 -91
- package/dist/components/providers/PuiLocalizationProvider.js +0 -34
- package/dist/components/referentiel/common/ReferetielContext.js +0 -12
- package/dist/components/referentiel/common/constants/specificReferentielsApis.js +0 -22
- package/dist/components/referentiel/common/constants/specificReferentielsBaseColumns.js +0 -691
- package/dist/components/referentiel/common/constants/specificReferentielsBaseFilters.js +0 -598
- package/dist/components/referentiel/common/constants/specificReferentielsInitialValues.js +0 -80
- package/dist/components/referentiel/common/constants/specificReferentielsKeys.js +0 -18
- package/dist/components/referentiel/common/constants/specificReferentielsTitles.js +0 -22
- package/dist/components/referentiel/common/constants/specificReferentielsValidationSchemas.js +0 -85
- package/dist/components/referentiel/components/PuiBasePopupReferentielField.js +0 -356
- package/dist/components/referentiel/components/PuiCustomPopupReferentielField.js +0 -181
- package/dist/components/referentiel/components/PuiSimplePopupReferentielField.js +0 -325
- package/dist/components/referentiel/components/PuiSimpleReferentielField.js +0 -203
- package/dist/components/referentiel/components/PuiSpecificReferentielField.js +0 -352
- package/dist/components/referentiel/providers/PuiReferentielProvider.js +0 -66
- package/dist/components/tab/PuiTab.js +0 -25
- package/dist/components/tab/PuiTabs.js +0 -148
- package/dist/components/table/PuiTable.js +0 -643
- package/dist/components/table/PuiTableAction.js +0 -75
- package/dist/components/typography/PuiDefinition.js +0 -42
- package/dist/components/typography/PuiIndication.js +0 -80
- package/dist/components/typography/PuiMainTitle.js +0 -144
- package/dist/components/ui/dialogs/PuiSearchDialog.js +0 -106
- package/dist/components/ui/pages/errors/PuiErrorBasePage.js +0 -73
- package/dist/components/ui/pages/errors/PuiForbiddenErrorPage.js +0 -36
- package/dist/components/ui/pages/errors/PuiNetworkErrorPage.js +0 -36
- package/dist/components/ui/pages/errors/PuiNotFoundErrorPage.js +0 -30
- package/dist/components/ui/pages/errors/PuiServerErrorPage.js +0 -37
- package/dist/components/ui/pages/general/PuiDefaultPage.js +0 -68
- package/dist/components/ui/pages/general/PuiSearchPage.js +0 -203
- package/dist/components/widgets/GuideImage.js +0 -251
- package/dist/components/widgets/PuiHelpWidget.js +0 -4167
- package/dist/config/apperance.js +0 -26
- package/dist/config/mapping.js +0 -26
- package/dist/config/referentiel.js +0 -10
- package/dist/general/yupValidationErrors.js +0 -8
- package/dist/hooks/useAlert.js +0 -19
- package/dist/hooks/useAxios.js +0 -23
- package/dist/hooks/useQuery.js +0 -21
- package/dist/hooks/useReclamation.js +0 -100
- package/dist/styles/ReclamationFormModal.css +0 -629
- package/dist/styles/help-widget.css +0 -621
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* savedFilters — Portnet UI v2 · personalization capability
|
|
3
|
+
*
|
|
4
|
+
* The Saved Filters framework (Odoo-inspired "saved searches"). Lets a
|
|
5
|
+
* user name and persist the current state of any list's filters, recall
|
|
6
|
+
* them later, and optionally mark one as the default applied on open.
|
|
7
|
+
*
|
|
8
|
+
* Self-registers the "savedFilters" capability with the schema registry
|
|
9
|
+
* at import time, so the capability-agnostic foundation discovers it
|
|
10
|
+
* without hardcoding.
|
|
11
|
+
*
|
|
12
|
+
* State model (the capability payload):
|
|
13
|
+
* { [resourceKey]: SavedFilter[] }
|
|
14
|
+
* SavedFilter = {
|
|
15
|
+
* id, name, resourceKey,
|
|
16
|
+
* criteria, // OPAQUE — the host's own filter payload
|
|
17
|
+
* ownerId,
|
|
18
|
+
* isDefault, shared,
|
|
19
|
+
* createdAt, updatedAt,
|
|
20
|
+
* }
|
|
21
|
+
*
|
|
22
|
+
* `criteria` is never interpreted here — it is stored and re-emitted
|
|
23
|
+
* verbatim, which is what keeps the framework reusable across every list
|
|
24
|
+
* regardless of its filter schema (the host owns apply()). `shared` is
|
|
25
|
+
* modelled but NOT enforced in Phase 1 (local persistence): it round-trips
|
|
26
|
+
* for a future backend adapter and lets the UI show a shared indicator.
|
|
27
|
+
*
|
|
28
|
+
* Performance: the pure helpers rebuild only the touched resourceKey's
|
|
29
|
+
* array and shallow-copy the map, so the store's structural sharing keeps
|
|
30
|
+
* every OTHER resource's list referentially stable.
|
|
31
|
+
*/
|
|
32
|
+
import type { SavedFilter } from "../types";
|
|
33
|
+
export declare const SAVED_FILTERS_CAPABILITY_ID = "savedFilters";
|
|
34
|
+
export interface SaveFilterInput {
|
|
35
|
+
name: string;
|
|
36
|
+
/** Opaque host filter payload — stored and re-emitted verbatim. */
|
|
37
|
+
criteria?: Record<string, unknown>;
|
|
38
|
+
isDefault?: boolean;
|
|
39
|
+
shared?: boolean;
|
|
40
|
+
}
|
|
41
|
+
export interface UseSavedFiltersResult {
|
|
42
|
+
filters: readonly SavedFilter[];
|
|
43
|
+
defaultFilter: SavedFilter | null;
|
|
44
|
+
count: number;
|
|
45
|
+
save: (input: SaveFilterInput) => SavedFilter;
|
|
46
|
+
update: (id: string, patch: Partial<SavedFilter>) => void;
|
|
47
|
+
rename: (id: string, name: string) => void;
|
|
48
|
+
remove: (id: string) => void;
|
|
49
|
+
setDefault: (id: string) => void;
|
|
50
|
+
clearDefault: () => void;
|
|
51
|
+
getById: (id: string) => SavedFilter | null;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* useSavedFilters(resourceKey) — list, default, and CRUD for one resource.
|
|
55
|
+
*
|
|
56
|
+
* Applying a filter is the host's concern (it owns the criteria
|
|
57
|
+
* semantics): read `getById(id).criteria` / a filter's `criteria` and set
|
|
58
|
+
* your own filter state. SavedFiltersMenu wires this for you.
|
|
59
|
+
*/
|
|
60
|
+
export declare function useSavedFilters(resourceKey: string): UseSavedFiltersResult;
|
|
61
|
+
//# sourceMappingURL=savedFilters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"savedFilters.d.ts","sourceRoot":"","sources":["../../../../src/lib/v2/personalization/capabilities/savedFilters.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAWH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAK5C,eAAO,MAAM,2BAA2B,iBAAiB,CAAC;AA2J1D,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,mEAAmE;IACnE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,SAAS,WAAW,EAAE,CAAC;IAChC,aAAa,EAAE,WAAW,GAAG,IAAI,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,WAAW,CAAC;IAC9C,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IAC1D,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,WAAW,GAAG,IAAI,CAAC;CAC7C;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,qBAAqB,CA0J1E"}
|
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.SAVED_FILTERS_CAPABILITY_ID = void 0;
|
|
7
|
+
exports.useSavedFilters = useSavedFilters;
|
|
8
|
+
var React = _interopRequireWildcard(require("react"));
|
|
9
|
+
var _uuid = require("uuid");
|
|
10
|
+
var _schema = require("../schema");
|
|
11
|
+
var _personalizationContext = require("../personalizationContext");
|
|
12
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
13
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
14
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
15
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
16
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
17
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
18
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
19
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
20
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
21
|
+
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
22
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } /**
|
|
23
|
+
* savedFilters — Portnet UI v2 · personalization capability
|
|
24
|
+
*
|
|
25
|
+
* The Saved Filters framework (Odoo-inspired "saved searches"). Lets a
|
|
26
|
+
* user name and persist the current state of any list's filters, recall
|
|
27
|
+
* them later, and optionally mark one as the default applied on open.
|
|
28
|
+
*
|
|
29
|
+
* Self-registers the "savedFilters" capability with the schema registry
|
|
30
|
+
* at import time, so the capability-agnostic foundation discovers it
|
|
31
|
+
* without hardcoding.
|
|
32
|
+
*
|
|
33
|
+
* State model (the capability payload):
|
|
34
|
+
* { [resourceKey]: SavedFilter[] }
|
|
35
|
+
* SavedFilter = {
|
|
36
|
+
* id, name, resourceKey,
|
|
37
|
+
* criteria, // OPAQUE — the host's own filter payload
|
|
38
|
+
* ownerId,
|
|
39
|
+
* isDefault, shared,
|
|
40
|
+
* createdAt, updatedAt,
|
|
41
|
+
* }
|
|
42
|
+
*
|
|
43
|
+
* `criteria` is never interpreted here — it is stored and re-emitted
|
|
44
|
+
* verbatim, which is what keeps the framework reusable across every list
|
|
45
|
+
* regardless of its filter schema (the host owns apply()). `shared` is
|
|
46
|
+
* modelled but NOT enforced in Phase 1 (local persistence): it round-trips
|
|
47
|
+
* for a future backend adapter and lets the UI show a shared indicator.
|
|
48
|
+
*
|
|
49
|
+
* Performance: the pure helpers rebuild only the touched resourceKey's
|
|
50
|
+
* array and shallow-copy the map, so the store's structural sharing keeps
|
|
51
|
+
* every OTHER resource's list referentially stable.
|
|
52
|
+
*/
|
|
53
|
+
/** The saved-filters capability payload: SavedFilter arrays keyed by resourceKey. */
|
|
54
|
+
|
|
55
|
+
var SAVED_FILTERS_CAPABILITY_ID = exports.SAVED_FILTERS_CAPABILITY_ID = "savedFilters";
|
|
56
|
+
var SCHEMA_VERSION = 1;
|
|
57
|
+
var EMPTY_LIST = Object.freeze([]);
|
|
58
|
+
var EMPTY_MAP = Object.freeze({});
|
|
59
|
+
|
|
60
|
+
/* Register at import time — the foundation reads this at hydration. */
|
|
61
|
+
(0, _schema.registerCapability)({
|
|
62
|
+
id: SAVED_FILTERS_CAPABILITY_ID,
|
|
63
|
+
schemaVersion: SCHEMA_VERSION,
|
|
64
|
+
defaultState: EMPTY_MAP,
|
|
65
|
+
// { [resourceKey]: SavedFilter[] }
|
|
66
|
+
migrate: function migrateSavedFilters(_fromVersion, payload) {
|
|
67
|
+
// v1 is the initial schema. Defensive normalisation only.
|
|
68
|
+
return payload && _typeof(payload) === "object" ? payload : {};
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
/* ── pure, resourceKey-scoped state helpers (structural sharing) ────── */
|
|
73
|
+
|
|
74
|
+
function listFor(map, resourceKey) {
|
|
75
|
+
var list = map ? map[resourceKey] : undefined;
|
|
76
|
+
return Array.isArray(list) ? list : EMPTY_LIST;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// Append a fully-formed filter. Enforces a single default per resource:
|
|
80
|
+
// when the new filter is default, demote any previous default.
|
|
81
|
+
function appendFilter(map, resourceKey, filter, updatedAt) {
|
|
82
|
+
var base = map || EMPTY_MAP;
|
|
83
|
+
var list = listFor(base, resourceKey);
|
|
84
|
+
if (filter.isDefault) {
|
|
85
|
+
list = list.map(function demote(f) {
|
|
86
|
+
return f.isDefault ? _objectSpread(_objectSpread({}, f), {}, {
|
|
87
|
+
isDefault: false,
|
|
88
|
+
updatedAt: updatedAt
|
|
89
|
+
}) : f;
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
var next = _objectSpread({}, base);
|
|
93
|
+
next[resourceKey] = list.concat([filter]);
|
|
94
|
+
return next;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
// Merge a patch into one filter (id/resourceKey are immutable). When the
|
|
98
|
+
// patch promotes it to default, demote the others.
|
|
99
|
+
function patchFilter(map, resourceKey, id, patch, updatedAt) {
|
|
100
|
+
var base = map || EMPTY_MAP;
|
|
101
|
+
var list = listFor(base, resourceKey);
|
|
102
|
+
if (!list.some(function (f) {
|
|
103
|
+
return f.id === id;
|
|
104
|
+
})) {
|
|
105
|
+
return base; // no-op
|
|
106
|
+
}
|
|
107
|
+
var nextList = list.map(function applyPatch(f) {
|
|
108
|
+
if (f.id !== id) return f;
|
|
109
|
+
var merged = _objectSpread(_objectSpread(_objectSpread({}, f), patch), {}, {
|
|
110
|
+
id: f.id,
|
|
111
|
+
updatedAt: updatedAt
|
|
112
|
+
}, f.resourceKey !== undefined ? {
|
|
113
|
+
resourceKey: f.resourceKey
|
|
114
|
+
} : {});
|
|
115
|
+
return merged;
|
|
116
|
+
});
|
|
117
|
+
if (patch && patch.isDefault === true) {
|
|
118
|
+
nextList = nextList.map(function demoteOthers(f) {
|
|
119
|
+
if (f.id === id) return f;
|
|
120
|
+
return f.isDefault ? _objectSpread(_objectSpread({}, f), {}, {
|
|
121
|
+
isDefault: false,
|
|
122
|
+
updatedAt: updatedAt
|
|
123
|
+
}) : f;
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
var next = _objectSpread({}, base);
|
|
127
|
+
next[resourceKey] = nextList;
|
|
128
|
+
return next;
|
|
129
|
+
}
|
|
130
|
+
function deleteFilter(map, resourceKey, id) {
|
|
131
|
+
var base = map || EMPTY_MAP;
|
|
132
|
+
var list = listFor(base, resourceKey);
|
|
133
|
+
if (!list.some(function (f) {
|
|
134
|
+
return f.id === id;
|
|
135
|
+
})) {
|
|
136
|
+
return base; // no-op
|
|
137
|
+
}
|
|
138
|
+
var nextList = list.filter(function keep(f) {
|
|
139
|
+
return f.id !== id;
|
|
140
|
+
});
|
|
141
|
+
var next = _objectSpread({}, base);
|
|
142
|
+
if (nextList.length === 0) delete next[resourceKey]; // keep the map tidy
|
|
143
|
+
else next[resourceKey] = nextList;
|
|
144
|
+
return next;
|
|
145
|
+
}
|
|
146
|
+
function markDefault(map, resourceKey, id, updatedAt) {
|
|
147
|
+
var base = map || EMPTY_MAP;
|
|
148
|
+
var list = listFor(base, resourceKey);
|
|
149
|
+
var changed = false;
|
|
150
|
+
var nextList = list.map(function setFlag(f) {
|
|
151
|
+
var shouldBe = f.id === id;
|
|
152
|
+
if (!!f.isDefault === shouldBe) return f;
|
|
153
|
+
changed = true;
|
|
154
|
+
return _objectSpread(_objectSpread({}, f), {}, {
|
|
155
|
+
isDefault: shouldBe,
|
|
156
|
+
updatedAt: updatedAt
|
|
157
|
+
});
|
|
158
|
+
});
|
|
159
|
+
if (!changed) return base;
|
|
160
|
+
var next = _objectSpread({}, base);
|
|
161
|
+
next[resourceKey] = nextList;
|
|
162
|
+
return next;
|
|
163
|
+
}
|
|
164
|
+
function unmarkDefault(map, resourceKey, updatedAt) {
|
|
165
|
+
var base = map || EMPTY_MAP;
|
|
166
|
+
var list = listFor(base, resourceKey);
|
|
167
|
+
var changed = false;
|
|
168
|
+
var nextList = list.map(function clearFlag(f) {
|
|
169
|
+
if (!f.isDefault) return f;
|
|
170
|
+
changed = true;
|
|
171
|
+
return _objectSpread(_objectSpread({}, f), {}, {
|
|
172
|
+
isDefault: false,
|
|
173
|
+
updatedAt: updatedAt
|
|
174
|
+
});
|
|
175
|
+
});
|
|
176
|
+
if (!changed) return base;
|
|
177
|
+
var next = _objectSpread({}, base);
|
|
178
|
+
next[resourceKey] = nextList;
|
|
179
|
+
return next;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
/* ── hook ───────────────────────────────────────────────────────────── */
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* useSavedFilters(resourceKey) — list, default, and CRUD for one resource.
|
|
186
|
+
*
|
|
187
|
+
* Applying a filter is the host's concern (it owns the criteria
|
|
188
|
+
* semantics): read `getById(id).criteria` / a filter's `criteria` and set
|
|
189
|
+
* your own filter state. SavedFiltersMenu wires this for you.
|
|
190
|
+
*/
|
|
191
|
+
function useSavedFilters(resourceKey) {
|
|
192
|
+
var store = (0, _personalizationContext.usePersonalizationStore)();
|
|
193
|
+
React.useEffect(function ensure() {
|
|
194
|
+
store.ensureCapability(SAVED_FILTERS_CAPABILITY_ID);
|
|
195
|
+
}, [store]);
|
|
196
|
+
var selectList = React.useCallback(function selectList(snapshot) {
|
|
197
|
+
var slice = snapshot[SAVED_FILTERS_CAPABILITY_ID];
|
|
198
|
+
return slice ? listFor(slice, resourceKey) : EMPTY_LIST;
|
|
199
|
+
}, [resourceKey]);
|
|
200
|
+
var filters = (0, _personalizationContext.useStoreSelector)(selectList);
|
|
201
|
+
var defaultFilter = React.useMemo(function findDefault() {
|
|
202
|
+
var _iterator = _createForOfIteratorHelper(filters),
|
|
203
|
+
_step;
|
|
204
|
+
try {
|
|
205
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
206
|
+
var f = _step.value;
|
|
207
|
+
if (f.isDefault) return f;
|
|
208
|
+
}
|
|
209
|
+
} catch (err) {
|
|
210
|
+
_iterator.e(err);
|
|
211
|
+
} finally {
|
|
212
|
+
_iterator.f();
|
|
213
|
+
}
|
|
214
|
+
return null;
|
|
215
|
+
}, [filters]);
|
|
216
|
+
var save = React.useCallback(function save(input) {
|
|
217
|
+
var now = new Date().toISOString();
|
|
218
|
+
var scope = store.getScope ? store.getScope() : null;
|
|
219
|
+
var criteria = input ? input.criteria : undefined;
|
|
220
|
+
var ownerId = scope ? scope.userId : undefined;
|
|
221
|
+
var filter = _objectSpread(_objectSpread({
|
|
222
|
+
id: (0, _uuid.v4)(),
|
|
223
|
+
name: input && input.name ? input.name : "",
|
|
224
|
+
resourceKey: resourceKey,
|
|
225
|
+
isDefault: !!(input && input.isDefault),
|
|
226
|
+
shared: !!(input && input.shared),
|
|
227
|
+
createdAt: now,
|
|
228
|
+
updatedAt: now
|
|
229
|
+
}, criteria !== undefined ? {
|
|
230
|
+
criteria: criteria
|
|
231
|
+
} : {}), ownerId !== undefined ? {
|
|
232
|
+
ownerId: ownerId
|
|
233
|
+
} : {});
|
|
234
|
+
store.write(SAVED_FILTERS_CAPABILITY_ID, function (prev) {
|
|
235
|
+
return appendFilter(prev, resourceKey, filter, now);
|
|
236
|
+
});
|
|
237
|
+
return filter;
|
|
238
|
+
}, [store, resourceKey]);
|
|
239
|
+
var update = React.useCallback(function update(id, patch) {
|
|
240
|
+
var now = new Date().toISOString();
|
|
241
|
+
store.write(SAVED_FILTERS_CAPABILITY_ID, function (prev) {
|
|
242
|
+
return patchFilter(prev, resourceKey, id, patch || {}, now);
|
|
243
|
+
});
|
|
244
|
+
}, [store, resourceKey]);
|
|
245
|
+
var rename = React.useCallback(function rename(id, name) {
|
|
246
|
+
update(id, {
|
|
247
|
+
name: name
|
|
248
|
+
});
|
|
249
|
+
}, [update]);
|
|
250
|
+
var remove = React.useCallback(function remove(id) {
|
|
251
|
+
store.write(SAVED_FILTERS_CAPABILITY_ID, function (prev) {
|
|
252
|
+
return deleteFilter(prev, resourceKey, id);
|
|
253
|
+
});
|
|
254
|
+
}, [store, resourceKey]);
|
|
255
|
+
var setDefault = React.useCallback(function setDefault(id) {
|
|
256
|
+
var now = new Date().toISOString();
|
|
257
|
+
store.write(SAVED_FILTERS_CAPABILITY_ID, function (prev) {
|
|
258
|
+
return markDefault(prev, resourceKey, id, now);
|
|
259
|
+
});
|
|
260
|
+
}, [store, resourceKey]);
|
|
261
|
+
var clearDefault = React.useCallback(function clearDefault() {
|
|
262
|
+
var now = new Date().toISOString();
|
|
263
|
+
store.write(SAVED_FILTERS_CAPABILITY_ID, function (prev) {
|
|
264
|
+
return unmarkDefault(prev, resourceKey, now);
|
|
265
|
+
});
|
|
266
|
+
}, [store, resourceKey]);
|
|
267
|
+
var getById = React.useCallback(function getById(id) {
|
|
268
|
+
var _iterator2 = _createForOfIteratorHelper(filters),
|
|
269
|
+
_step2;
|
|
270
|
+
try {
|
|
271
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
272
|
+
var f = _step2.value;
|
|
273
|
+
if (f.id === id) return f;
|
|
274
|
+
}
|
|
275
|
+
} catch (err) {
|
|
276
|
+
_iterator2.e(err);
|
|
277
|
+
} finally {
|
|
278
|
+
_iterator2.f();
|
|
279
|
+
}
|
|
280
|
+
return null;
|
|
281
|
+
}, [filters]);
|
|
282
|
+
return React.useMemo(function value() {
|
|
283
|
+
return {
|
|
284
|
+
filters: filters,
|
|
285
|
+
defaultFilter: defaultFilter,
|
|
286
|
+
count: filters.length,
|
|
287
|
+
save: save,
|
|
288
|
+
update: update,
|
|
289
|
+
rename: rename,
|
|
290
|
+
remove: remove,
|
|
291
|
+
setDefault: setDefault,
|
|
292
|
+
clearDefault: clearDefault,
|
|
293
|
+
getById: getById
|
|
294
|
+
};
|
|
295
|
+
}, [filters, defaultFilter, save, update, rename, remove, setDefault, clearDefault, getById]);
|
|
296
|
+
}
|
|
297
|
+
//# sourceMappingURL=savedFilters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"savedFilters.js","names":["React","_interopRequireWildcard","require","_uuid","_schema","_personalizationContext","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","step","next","_e2","minLen","_arrayLikeToArray","toString","slice","constructor","name","from","test","arr","len","arr2","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","enumerable","push","apply","_objectSpread","target","arguments","source","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","toPrimitive","undefined","res","Number","SAVED_FILTERS_CAPABILITY_ID","exports","SCHEMA_VERSION","EMPTY_LIST","freeze","EMPTY_MAP","registerCapability","id","schemaVersion","defaultState","migrate","migrateSavedFilters","_fromVersion","payload","listFor","map","resourceKey","list","appendFilter","updatedAt","base","isDefault","demote","concat","patchFilter","patch","some","nextList","applyPatch","merged","demoteOthers","deleteFilter","keep","markDefault","changed","setFlag","shouldBe","unmarkDefault","clearFlag","useSavedFilters","store","usePersonalizationStore","useEffect","ensure","ensureCapability","selectList","useCallback","snapshot","filters","useStoreSelector","defaultFilter","useMemo","findDefault","_iterator","_step","save","now","Date","toISOString","scope","getScope","criteria","ownerId","userId","uuidv4","shared","createdAt","write","prev","update","rename","remove","setDefault","clearDefault","getById","_iterator2","_step2","count"],"sources":["../../../../src/lib/v2/personalization/capabilities/savedFilters.ts"],"sourcesContent":["/**\r\n * savedFilters — Portnet UI v2 · personalization capability\r\n *\r\n * The Saved Filters framework (Odoo-inspired \"saved searches\"). Lets a\r\n * user name and persist the current state of any list's filters, recall\r\n * them later, and optionally mark one as the default applied on open.\r\n *\r\n * Self-registers the \"savedFilters\" capability with the schema registry\r\n * at import time, so the capability-agnostic foundation discovers it\r\n * without hardcoding.\r\n *\r\n * State model (the capability payload):\r\n * { [resourceKey]: SavedFilter[] }\r\n * SavedFilter = {\r\n * id, name, resourceKey,\r\n * criteria, // OPAQUE — the host's own filter payload\r\n * ownerId,\r\n * isDefault, shared,\r\n * createdAt, updatedAt,\r\n * }\r\n *\r\n * `criteria` is never interpreted here — it is stored and re-emitted\r\n * verbatim, which is what keeps the framework reusable across every list\r\n * regardless of its filter schema (the host owns apply()). `shared` is\r\n * modelled but NOT enforced in Phase 1 (local persistence): it round-trips\r\n * for a future backend adapter and lets the UI show a shared indicator.\r\n *\r\n * Performance: the pure helpers rebuild only the touched resourceKey's\r\n * array and shallow-copy the map, so the store's structural sharing keeps\r\n * every OTHER resource's list referentially stable.\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport { v4 as uuidv4 } from \"uuid\";\r\n\r\nimport { registerCapability } from \"../schema\";\r\nimport {\r\n usePersonalizationStore,\r\n useStoreSelector,\r\n} from \"../personalizationContext\";\r\nimport type { PersonalizationSnapshot } from \"../createPersonalizationStore\";\r\nimport type { SavedFilter } from \"../types\";\r\n\r\n/** The saved-filters capability payload: SavedFilter arrays keyed by resourceKey. */\r\ntype SavedFiltersState = Record<string, SavedFilter[]>;\r\n\r\nexport const SAVED_FILTERS_CAPABILITY_ID = \"savedFilters\";\r\nconst SCHEMA_VERSION = 1;\r\n\r\nconst EMPTY_LIST: readonly SavedFilter[] = Object.freeze([]);\r\nconst EMPTY_MAP: SavedFiltersState = Object.freeze({});\r\n\r\n/* Register at import time — the foundation reads this at hydration. */\r\nregisterCapability({\r\n id: SAVED_FILTERS_CAPABILITY_ID,\r\n schemaVersion: SCHEMA_VERSION,\r\n defaultState: EMPTY_MAP, // { [resourceKey]: SavedFilter[] }\r\n migrate: function migrateSavedFilters(\r\n _fromVersion: number,\r\n payload: unknown\r\n ): unknown {\r\n // v1 is the initial schema. Defensive normalisation only.\r\n return payload && typeof payload === \"object\" ? payload : {};\r\n },\r\n});\r\n\r\n/* ── pure, resourceKey-scoped state helpers (structural sharing) ────── */\r\n\r\nfunction listFor(\r\n map: SavedFiltersState | null | undefined,\r\n resourceKey: string\r\n): readonly SavedFilter[] {\r\n const list = map ? map[resourceKey] : undefined;\r\n return Array.isArray(list) ? list : EMPTY_LIST;\r\n}\r\n\r\n// Append a fully-formed filter. Enforces a single default per resource:\r\n// when the new filter is default, demote any previous default.\r\nfunction appendFilter(\r\n map: SavedFiltersState | null | undefined,\r\n resourceKey: string,\r\n filter: SavedFilter,\r\n updatedAt: string\r\n): SavedFiltersState {\r\n const base = map || EMPTY_MAP;\r\n let list = listFor(base, resourceKey);\r\n if (filter.isDefault) {\r\n list = list.map(function demote(f) {\r\n return f.isDefault ? { ...f, isDefault: false, updatedAt: updatedAt } : f;\r\n });\r\n }\r\n const next: SavedFiltersState = { ...base };\r\n next[resourceKey] = list.concat([filter]);\r\n return next;\r\n}\r\n\r\n// Merge a patch into one filter (id/resourceKey are immutable). When the\r\n// patch promotes it to default, demote the others.\r\nfunction patchFilter(\r\n map: SavedFiltersState | null | undefined,\r\n resourceKey: string,\r\n id: string,\r\n patch: Partial<SavedFilter>,\r\n updatedAt: string\r\n): SavedFiltersState {\r\n const base = map || EMPTY_MAP;\r\n const list = listFor(base, resourceKey);\r\n if (\r\n !list.some(function (f) {\r\n return f.id === id;\r\n })\r\n ) {\r\n return base; // no-op\r\n }\r\n let nextList = list.map(function applyPatch(f) {\r\n if (f.id !== id) return f;\r\n const merged: SavedFilter = {\r\n ...f,\r\n ...patch,\r\n id: f.id,\r\n updatedAt: updatedAt,\r\n ...(f.resourceKey !== undefined ? { resourceKey: f.resourceKey } : {}),\r\n };\r\n return merged;\r\n });\r\n if (patch && patch.isDefault === true) {\r\n nextList = nextList.map(function demoteOthers(f) {\r\n if (f.id === id) return f;\r\n return f.isDefault ? { ...f, isDefault: false, updatedAt: updatedAt } : f;\r\n });\r\n }\r\n const next: SavedFiltersState = { ...base };\r\n next[resourceKey] = nextList;\r\n return next;\r\n}\r\n\r\nfunction deleteFilter(\r\n map: SavedFiltersState | null | undefined,\r\n resourceKey: string,\r\n id: string\r\n): SavedFiltersState {\r\n const base = map || EMPTY_MAP;\r\n const list = listFor(base, resourceKey);\r\n if (\r\n !list.some(function (f) {\r\n return f.id === id;\r\n })\r\n ) {\r\n return base; // no-op\r\n }\r\n const nextList = list.filter(function keep(f) {\r\n return f.id !== id;\r\n });\r\n const next: SavedFiltersState = { ...base };\r\n if (nextList.length === 0) delete next[resourceKey]; // keep the map tidy\r\n else next[resourceKey] = nextList;\r\n return next;\r\n}\r\n\r\nfunction markDefault(\r\n map: SavedFiltersState | null | undefined,\r\n resourceKey: string,\r\n id: string,\r\n updatedAt: string\r\n): SavedFiltersState {\r\n const base = map || EMPTY_MAP;\r\n const list = listFor(base, resourceKey);\r\n let changed = false;\r\n const nextList = list.map(function setFlag(f) {\r\n const shouldBe = f.id === id;\r\n if (!!f.isDefault === shouldBe) return f;\r\n changed = true;\r\n return { ...f, isDefault: shouldBe, updatedAt: updatedAt };\r\n });\r\n if (!changed) return base;\r\n const next: SavedFiltersState = { ...base };\r\n next[resourceKey] = nextList;\r\n return next;\r\n}\r\n\r\nfunction unmarkDefault(\r\n map: SavedFiltersState | null | undefined,\r\n resourceKey: string,\r\n updatedAt: string\r\n): SavedFiltersState {\r\n const base = map || EMPTY_MAP;\r\n const list = listFor(base, resourceKey);\r\n let changed = false;\r\n const nextList = list.map(function clearFlag(f) {\r\n if (!f.isDefault) return f;\r\n changed = true;\r\n return { ...f, isDefault: false, updatedAt: updatedAt };\r\n });\r\n if (!changed) return base;\r\n const next: SavedFiltersState = { ...base };\r\n next[resourceKey] = nextList;\r\n return next;\r\n}\r\n\r\n/* ── hook ───────────────────────────────────────────────────────────── */\r\n\r\nexport interface SaveFilterInput {\r\n name: string;\r\n /** Opaque host filter payload — stored and re-emitted verbatim. */\r\n criteria?: Record<string, unknown>;\r\n isDefault?: boolean;\r\n shared?: boolean;\r\n}\r\n\r\nexport interface UseSavedFiltersResult {\r\n filters: readonly SavedFilter[];\r\n defaultFilter: SavedFilter | null;\r\n count: number;\r\n save: (input: SaveFilterInput) => SavedFilter;\r\n update: (id: string, patch: Partial<SavedFilter>) => void;\r\n rename: (id: string, name: string) => void;\r\n remove: (id: string) => void;\r\n setDefault: (id: string) => void;\r\n clearDefault: () => void;\r\n getById: (id: string) => SavedFilter | null;\r\n}\r\n\r\n/**\r\n * useSavedFilters(resourceKey) — list, default, and CRUD for one resource.\r\n *\r\n * Applying a filter is the host's concern (it owns the criteria\r\n * semantics): read `getById(id).criteria` / a filter's `criteria` and set\r\n * your own filter state. SavedFiltersMenu wires this for you.\r\n */\r\nexport function useSavedFilters(resourceKey: string): UseSavedFiltersResult {\r\n const store = usePersonalizationStore();\r\n\r\n React.useEffect(\r\n function ensure() {\r\n store.ensureCapability(SAVED_FILTERS_CAPABILITY_ID);\r\n },\r\n [store]\r\n );\r\n\r\n const selectList = React.useCallback(\r\n function selectList(snapshot: PersonalizationSnapshot): readonly SavedFilter[] {\r\n const slice = snapshot[SAVED_FILTERS_CAPABILITY_ID] as\r\n | SavedFiltersState\r\n | undefined;\r\n return slice ? listFor(slice, resourceKey) : EMPTY_LIST;\r\n },\r\n [resourceKey]\r\n );\r\n const filters = useStoreSelector(selectList);\r\n\r\n const defaultFilter = React.useMemo(\r\n function findDefault(): SavedFilter | null {\r\n for (const f of filters) {\r\n if (f.isDefault) return f;\r\n }\r\n return null;\r\n },\r\n [filters]\r\n );\r\n\r\n const save = React.useCallback(\r\n function save(input: SaveFilterInput): SavedFilter {\r\n const now = new Date().toISOString();\r\n const scope = store.getScope ? store.getScope() : null;\r\n const criteria = input ? input.criteria : undefined;\r\n const ownerId = scope ? scope.userId : undefined;\r\n const filter: SavedFilter = {\r\n id: uuidv4(),\r\n name: input && input.name ? input.name : \"\",\r\n resourceKey: resourceKey,\r\n isDefault: !!(input && input.isDefault),\r\n shared: !!(input && input.shared),\r\n createdAt: now,\r\n updatedAt: now,\r\n ...(criteria !== undefined ? { criteria } : {}),\r\n ...(ownerId !== undefined ? { ownerId } : {}),\r\n };\r\n store.write<SavedFiltersState>(\r\n SAVED_FILTERS_CAPABILITY_ID,\r\n function (prev) {\r\n return appendFilter(prev, resourceKey, filter, now);\r\n }\r\n );\r\n return filter;\r\n },\r\n [store, resourceKey]\r\n );\r\n\r\n const update = React.useCallback(\r\n function update(id: string, patch: Partial<SavedFilter>): void {\r\n const now = new Date().toISOString();\r\n store.write<SavedFiltersState>(\r\n SAVED_FILTERS_CAPABILITY_ID,\r\n function (prev) {\r\n return patchFilter(prev, resourceKey, id, patch || {}, now);\r\n }\r\n );\r\n },\r\n [store, resourceKey]\r\n );\r\n\r\n const rename = React.useCallback(\r\n function rename(id: string, name: string): void {\r\n update(id, { name: name });\r\n },\r\n [update]\r\n );\r\n\r\n const remove = React.useCallback(\r\n function remove(id: string): void {\r\n store.write<SavedFiltersState>(\r\n SAVED_FILTERS_CAPABILITY_ID,\r\n function (prev) {\r\n return deleteFilter(prev, resourceKey, id);\r\n }\r\n );\r\n },\r\n [store, resourceKey]\r\n );\r\n\r\n const setDefault = React.useCallback(\r\n function setDefault(id: string): void {\r\n const now = new Date().toISOString();\r\n store.write<SavedFiltersState>(\r\n SAVED_FILTERS_CAPABILITY_ID,\r\n function (prev) {\r\n return markDefault(prev, resourceKey, id, now);\r\n }\r\n );\r\n },\r\n [store, resourceKey]\r\n );\r\n\r\n const clearDefault = React.useCallback(\r\n function clearDefault(): void {\r\n const now = new Date().toISOString();\r\n store.write<SavedFiltersState>(\r\n SAVED_FILTERS_CAPABILITY_ID,\r\n function (prev) {\r\n return unmarkDefault(prev, resourceKey, now);\r\n }\r\n );\r\n },\r\n [store, resourceKey]\r\n );\r\n\r\n const getById = React.useCallback(\r\n function getById(id: string): SavedFilter | null {\r\n for (const f of filters) {\r\n if (f.id === id) return f;\r\n }\r\n return null;\r\n },\r\n [filters]\r\n );\r\n\r\n return React.useMemo(\r\n function value(): UseSavedFiltersResult {\r\n return {\r\n filters: filters,\r\n defaultFilter: defaultFilter,\r\n count: filters.length,\r\n save: save,\r\n update: update,\r\n rename: rename,\r\n remove: remove,\r\n setDefault: setDefault,\r\n clearDefault: clearDefault,\r\n getById: getById,\r\n };\r\n },\r\n [\r\n filters,\r\n defaultFilter,\r\n save,\r\n update,\r\n rename,\r\n remove,\r\n setDefault,\r\n clearDefault,\r\n getById,\r\n ]\r\n );\r\n}\r\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* createPersonalizationStore — Portnet UI v2 · personalization
|
|
3
|
+
*
|
|
4
|
+
* Scoped, multi-capability, adapter-backed store. Generalises the
|
|
5
|
+
* useSyncExternalStore + cross-tab + SSR-safe pattern proven by
|
|
6
|
+
* useDensity (architecture doc §2.3 / §2.4).
|
|
7
|
+
*
|
|
8
|
+
* Core idea — sync snapshot, async adapter:
|
|
9
|
+
* - The store holds a SYNCHRONOUS in-memory snapshot. `read()` is pure
|
|
10
|
+
* (no mutation) so it is safe to call inside a useSyncExternalStore
|
|
11
|
+
* selector. Components never await to render.
|
|
12
|
+
* - Mutations are OPTIMISTIC: the snapshot updates synchronously and
|
|
13
|
+
* subscribers are notified; the adapter persists asynchronously; on
|
|
14
|
+
* failure the optimistic value is kept for the session and onError
|
|
15
|
+
* fires. Swapping a remote adapter changes only *when* bytes hit the
|
|
16
|
+
* wire, never how components read.
|
|
17
|
+
* - STRUCTURAL SHARING: a write replaces only its capability slice; all
|
|
18
|
+
* sibling slices keep their reference. This is what makes selectors
|
|
19
|
+
* referentially stable and prevents cross-capability re-renders.
|
|
20
|
+
*
|
|
21
|
+
* The store is capability-AGNOSTIC: payloads are `unknown` and it learns
|
|
22
|
+
* defaults, schema versions and migrations from the schema registry (slices
|
|
23
|
+
* self-register at import time). Adding a capability requires no change here;
|
|
24
|
+
* the typed capability slices impose the concrete payload types on top via
|
|
25
|
+
* the generic read<T>/write<T> facades.
|
|
26
|
+
*/
|
|
27
|
+
import type { Adapter, HydrateStrategy, Scope } from "./types";
|
|
28
|
+
export type PersonalizationStatus = "idle" | "hydrating" | "saving" | "error";
|
|
29
|
+
/** The store's in-memory snapshot: { [capabilityId]: payload }. */
|
|
30
|
+
export type PersonalizationSnapshot = Record<string, unknown>;
|
|
31
|
+
/** A write value, or a functional updater `(previous) => next`. */
|
|
32
|
+
export type PersonalizationUpdater<T = unknown> = T | ((previous: T) => T);
|
|
33
|
+
export interface WriteOptions {
|
|
34
|
+
/** Set false for an in-memory-only write (no adapter persist). */
|
|
35
|
+
persist?: boolean;
|
|
36
|
+
}
|
|
37
|
+
export interface PersonalizationErrorContext {
|
|
38
|
+
scope: Scope;
|
|
39
|
+
capabilityId: string;
|
|
40
|
+
}
|
|
41
|
+
export type PersonalizationErrorHandler = (error: Error, context: PersonalizationErrorContext) => void;
|
|
42
|
+
export interface PersonalizationRuntimeOptions {
|
|
43
|
+
onError?: PersonalizationErrorHandler;
|
|
44
|
+
hydrateStrategy?: HydrateStrategy;
|
|
45
|
+
}
|
|
46
|
+
export interface PersonalizationStoreConfig {
|
|
47
|
+
/** Identity the store persists against. Defaults to { userId: "anonymous" }. */
|
|
48
|
+
scope?: Scope;
|
|
49
|
+
/** Storage adapter. When null the store is a pure in-memory session. */
|
|
50
|
+
adapter?: Adapter | null;
|
|
51
|
+
/** Per-capability seed overrides, read at creation/hydration. */
|
|
52
|
+
defaults?: Record<string, unknown> | null;
|
|
53
|
+
onError?: PersonalizationErrorHandler;
|
|
54
|
+
/** @default "remote-wins" */
|
|
55
|
+
hydrateStrategy?: HydrateStrategy;
|
|
56
|
+
}
|
|
57
|
+
/** The store handle returned by createPersonalizationStore. */
|
|
58
|
+
export interface PersonalizationStore {
|
|
59
|
+
subscribe: (listener: () => void) => () => void;
|
|
60
|
+
getSnapshot: () => PersonalizationSnapshot;
|
|
61
|
+
getServerSnapshot: () => PersonalizationSnapshot;
|
|
62
|
+
read: <T = unknown>(capabilityId: string) => T;
|
|
63
|
+
write: <T = unknown>(capabilityId: string, updater: PersonalizationUpdater<T>, options?: WriteOptions) => T | undefined;
|
|
64
|
+
ensureCapability: (capabilityId: string) => void;
|
|
65
|
+
clearCapability: (capabilityId: string) => void;
|
|
66
|
+
hydrate: () => Promise<void>;
|
|
67
|
+
connect: () => () => void;
|
|
68
|
+
dispose: () => void;
|
|
69
|
+
setRuntime: (opts?: PersonalizationRuntimeOptions) => void;
|
|
70
|
+
status: (capabilityId: string) => PersonalizationStatus;
|
|
71
|
+
error: (capabilityId: string) => Error | null;
|
|
72
|
+
isHydrated: () => boolean;
|
|
73
|
+
getScope: () => Scope;
|
|
74
|
+
}
|
|
75
|
+
export default function createPersonalizationStore(config?: PersonalizationStoreConfig): PersonalizationStore;
|
|
76
|
+
//# sourceMappingURL=createPersonalizationStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createPersonalizationStore.d.ts","sourceRoot":"","sources":["../../../src/lib/v2/personalization/createPersonalizationStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAOH,OAAO,KAAK,EAAE,OAAO,EAAY,eAAe,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEzE,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE9E,mEAAmE;AACnE,MAAM,MAAM,uBAAuB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE9D,mEAAmE;AACnE,MAAM,MAAM,sBAAsB,CAAC,CAAC,GAAG,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAE3E,MAAM,WAAW,YAAY;IAC3B,kEAAkE;IAClE,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,KAAK,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,2BAA2B,GAAG,CACxC,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,2BAA2B,KACjC,IAAI,CAAC;AAEV,MAAM,WAAW,6BAA6B;IAC5C,OAAO,CAAC,EAAE,2BAA2B,CAAC;IACtC,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC;AAED,MAAM,WAAW,0BAA0B;IACzC,gFAAgF;IAChF,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,wEAAwE;IACxE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACzB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC1C,OAAO,CAAC,EAAE,2BAA2B,CAAC;IACtC,6BAA6B;IAC7B,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC;AAED,+DAA+D;AAC/D,MAAM,WAAW,oBAAoB;IAEnC,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAC;IAChD,WAAW,EAAE,MAAM,uBAAuB,CAAC;IAC3C,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;IAEjD,IAAI,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,YAAY,EAAE,MAAM,KAAK,CAAC,CAAC;IAC/C,KAAK,EAAE,CAAC,CAAC,GAAG,OAAO,EACjB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAC,EAClC,OAAO,CAAC,EAAE,YAAY,KACnB,CAAC,GAAG,SAAS,CAAC;IACnB,gBAAgB,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACjD,eAAe,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IAEhD,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,OAAO,EAAE,MAAM,MAAM,IAAI,CAAC;IAC1B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE,6BAA6B,KAAK,IAAI,CAAC;IAE3D,MAAM,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,qBAAqB,CAAC;IACxD,KAAK,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,KAAK,GAAG,IAAI,CAAC;IAC9C,UAAU,EAAE,MAAM,OAAO,CAAC;IAC1B,QAAQ,EAAE,MAAM,KAAK,CAAC;CACvB;AAcD,MAAM,CAAC,OAAO,UAAU,0BAA0B,CAChD,MAAM,CAAC,EAAE,0BAA0B,GAClC,oBAAoB,CAyXtB"}
|