@mittwald/flow-react-components 0.2.0-alpha.29 → 0.2.0-alpha.30

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 (119) hide show
  1. package/CHANGELOG.md +178 -0
  2. package/MIGRATION.md +67 -0
  3. package/dist/assets/doc-properties.json +5117 -5117
  4. package/dist/css/all.css +1 -1
  5. package/dist/js/components/Action/context.mjs +1 -1
  6. package/dist/js/components/Action/context.mjs.map +1 -1
  7. package/dist/js/components/Action/hooks/useConfirmationModalButtonSlot.mjs +1 -1
  8. package/dist/js/components/Action/hooks/useConfirmationModalButtonSlot.mjs.map +1 -1
  9. package/dist/js/components/Action/models/ActionModel.mjs +1 -1
  10. package/dist/js/components/Action/models/ActionModel.mjs.map +1 -1
  11. package/dist/js/components/Action/models/ActionState.mjs +4 -4
  12. package/dist/js/components/Action/models/ActionState.mjs.map +1 -1
  13. package/dist/js/components/Action/models/ActionStateContext.mjs +5 -4
  14. package/dist/js/components/Action/models/ActionStateContext.mjs.map +1 -1
  15. package/dist/js/components/ActionGroup/lib/getActionGroupSlot.mjs +1 -1
  16. package/dist/js/components/ActionGroup/lib/getActionGroupSlot.mjs.map +1 -1
  17. package/dist/js/components/Align/Align.mjs +2 -1
  18. package/dist/js/components/Align/Align.mjs.map +1 -1
  19. package/dist/js/components/Align/Align.module.scss.mjs +4 -2
  20. package/dist/js/components/Align/Align.module.scss.mjs.map +1 -1
  21. package/dist/js/components/Button/Button.mjs +8 -8
  22. package/dist/js/components/Button/Button.mjs.map +1 -1
  23. package/dist/js/components/ColumnLayout/ColumnLayout.mjs +3 -3
  24. package/dist/js/components/ColumnLayout/ColumnLayout.mjs.map +1 -1
  25. package/dist/js/components/ContextMenu/ContextMenu.mjs +1 -1
  26. package/dist/js/components/ContextMenu/components/ContextMenuSection/ContextMenuSection.mjs +1 -1
  27. package/dist/js/components/ContextMenu/lib.mjs +1 -1
  28. package/dist/js/components/ContextMenu/lib.mjs.map +1 -1
  29. package/dist/js/components/FileCard/components/FileSizeText/FileSizeText.mjs +1 -1
  30. package/dist/js/components/FileCard/components/FileSizeText/FileSizeText.mjs.map +1 -1
  31. package/dist/js/components/FileField/FileField.mjs +4 -4
  32. package/dist/js/components/FileField/FileField.mjs.map +1 -1
  33. package/dist/js/components/IllustratedMessage/IllustratedMessage.mjs +1 -1
  34. package/dist/js/components/IllustratedMessage/IllustratedMessage.mjs.map +1 -1
  35. package/dist/js/components/Initials/lib/getInitialsFromString.mjs +1 -1
  36. package/dist/js/components/Initials/lib/getInitialsFromString.mjs.map +1 -1
  37. package/dist/js/components/List/List.mjs +4 -4
  38. package/dist/js/components/List/List.mjs.map +1 -1
  39. package/dist/js/components/List/components/Header/components/ActiveFilters/ActiveFilters.mjs +2 -2
  40. package/dist/js/components/List/components/Header/components/ActiveFilters/ActiveFilters.mjs.map +1 -1
  41. package/dist/js/components/List/components/Header/components/ActiveFilters/ActiveFilters.module.scss.mjs +2 -5
  42. package/dist/js/components/List/components/Header/components/ActiveFilters/ActiveFilters.module.scss.mjs.map +1 -1
  43. package/dist/js/components/List/components/Header/components/SearchField/SearchField.mjs +2 -2
  44. package/dist/js/components/List/components/Header/components/SearchField/SearchField.mjs.map +1 -1
  45. package/dist/js/components/List/components/Items/components/Item/Item.mjs +2 -2
  46. package/dist/js/components/List/components/Items/components/Item/Item.mjs.map +1 -1
  47. package/dist/js/components/List/components/Items/components/Item/hooks/useGridItemProps.mjs +3 -3
  48. package/dist/js/components/List/components/Items/components/Item/hooks/useGridItemProps.mjs.map +1 -1
  49. package/dist/js/components/List/components/Table/Table.mjs +2 -2
  50. package/dist/js/components/List/components/Table/Table.mjs.map +1 -1
  51. package/dist/js/components/List/model/List.mjs +5 -5
  52. package/dist/js/components/List/model/List.mjs.map +1 -1
  53. package/dist/js/components/List/model/ReactTable.mjs +1 -1
  54. package/dist/js/components/List/model/filter/Filter.mjs +1 -1
  55. package/dist/js/components/List/model/filter/Filter.mjs.map +1 -1
  56. package/dist/js/components/List/model/item/ItemView.mjs +1 -1
  57. package/dist/js/components/List/model/item/ItemView.mjs.map +1 -1
  58. package/dist/js/components/List/model/loading/IncrementalLoader.mjs +9 -9
  59. package/dist/js/components/List/model/loading/IncrementalLoader.mjs.map +1 -1
  60. package/dist/js/components/List/model/loading/IncrementalLoaderState.mjs +4 -4
  61. package/dist/js/components/List/model/loading/IncrementalLoaderState.mjs.map +1 -1
  62. package/dist/js/components/List/model/search/Search.mjs +4 -4
  63. package/dist/js/components/List/model/search/Search.mjs.map +1 -1
  64. package/dist/js/components/LoadingSpinner/LoadingSpinner.module.scss.mjs +2 -5
  65. package/dist/js/components/LoadingSpinner/LoadingSpinner.module.scss.mjs.map +1 -1
  66. package/dist/js/components/Markdown/Markdown.mjs +2 -2
  67. package/dist/js/components/Markdown/Markdown.mjs.map +1 -1
  68. package/dist/js/components/Navigation/Navigation.module.scss.mjs +2 -8
  69. package/dist/js/components/Navigation/Navigation.module.scss.mjs.map +1 -1
  70. package/dist/js/components/NotificationProvider/NotificationController.mjs +3 -3
  71. package/dist/js/components/NotificationProvider/NotificationController.mjs.map +1 -1
  72. package/dist/js/components/Option/Option.module.scss.mjs +2 -10
  73. package/dist/js/components/Option/Option.module.scss.mjs.map +1 -1
  74. package/dist/js/components/Overlay/Overlay.module.scss.mjs +1 -3
  75. package/dist/js/components/Overlay/Overlay.module.scss.mjs.map +1 -1
  76. package/dist/js/components/ProgressBar/ProgressBar.mjs +1 -1
  77. package/dist/js/components/ProgressBar/ProgressBar.mjs.map +1 -1
  78. package/dist/js/components/SettingsProvider/SettingsProvider.mjs +1 -1
  79. package/dist/js/components/SettingsProvider/SettingsProvider.mjs.map +1 -1
  80. package/dist/js/components/Skeleton/Skeleton.module.scss.mjs +2 -5
  81. package/dist/js/components/Skeleton/Skeleton.module.scss.mjs.map +1 -1
  82. package/dist/js/components/SkeletonText/SkeletonText.module.scss.mjs +2 -5
  83. package/dist/js/components/SkeletonText/SkeletonText.module.scss.mjs.map +1 -1
  84. package/dist/js/components/Tabs/Tabs.module.scss.mjs +2 -5
  85. package/dist/js/components/Tabs/Tabs.module.scss.mjs.map +1 -1
  86. package/dist/js/components/Tabs/components/TabList/TabList.mjs +1 -1
  87. package/dist/js/components/Tabs/components/TabList/TabList.mjs.map +1 -1
  88. package/dist/js/components/Tooltip/Tooltip.module.scss.mjs +2 -5
  89. package/dist/js/components/Tooltip/Tooltip.module.scss.mjs.map +1 -1
  90. package/dist/js/integrations/react-hook-form/components/ActionGroupWrapper/SubmitButtonStateProvider.mjs +1 -1
  91. package/dist/js/integrations/react-hook-form/components/ActionGroupWrapper/SubmitButtonStateProvider.mjs.map +1 -1
  92. package/dist/js/integrations/react-hook-form/components/AutoFormResetEffect/AutoFormResetEffect.mjs +1 -1
  93. package/dist/js/integrations/react-hook-form/components/AutoFormResetEffect/AutoFormResetEffect.mjs.map +1 -1
  94. package/dist/js/integrations/react-hook-form/components/Form/Form.mjs +2 -2
  95. package/dist/js/integrations/react-hook-form/components/Form/Form.mjs.map +1 -1
  96. package/dist/js/integrations/react-hook-form/components/context/formContext.mjs +1 -1
  97. package/dist/js/integrations/react-hook-form/components/context/formContext.mjs.map +1 -1
  98. package/dist/js/lib/componentFactory/flowComponent.mjs +1 -1
  99. package/dist/js/lib/componentFactory/flowComponent.mjs.map +1 -1
  100. package/dist/js/lib/controller/overlay/OverlayController.mjs +3 -3
  101. package/dist/js/lib/controller/overlay/OverlayController.mjs.map +1 -1
  102. package/dist/js/lib/hooks/useProps.mjs +2 -2
  103. package/dist/js/lib/hooks/useProps.mjs.map +1 -1
  104. package/dist/js/lib/hooks/useStatic.mjs +8 -0
  105. package/dist/js/lib/hooks/useStatic.mjs.map +1 -0
  106. package/dist/js/lib/timer/Timer.mjs +4 -4
  107. package/dist/js/lib/timer/Timer.mjs.map +1 -1
  108. package/dist/types/components/Action/models/ActionStateContext.d.ts.map +1 -1
  109. package/dist/types/components/Align/Align.d.ts.map +1 -1
  110. package/dist/types/components/Align/stories/IconText.stories.d.ts +7 -0
  111. package/dist/types/components/Align/stories/IconText.stories.d.ts.map +1 -0
  112. package/dist/types/components/List/model/loading/IncrementalLoaderState.d.ts +1 -1
  113. package/dist/types/components/List/model/loading/IncrementalLoaderState.d.ts.map +1 -1
  114. package/dist/types/components/NotificationProvider/NotificationController.d.ts.map +1 -1
  115. package/dist/types/integrations/react-hook-form/components/Form/Form.d.ts.map +1 -1
  116. package/dist/types/lib/childProps/ChildPropsStore.d.ts.map +1 -1
  117. package/dist/types/lib/hooks/useStatic.d.ts +2 -0
  118. package/dist/types/lib/hooks/useStatic.d.ts.map +1 -0
  119. package/package.json +13 -15
@@ -1 +1 @@
1
- {"version":3,"file":"IncrementalLoader.mjs","sources":["../../../../../../src/components/List/model/loading/IncrementalLoader.ts"],"sourcesContent":["import type List from \"@/components/List/model/List\";\nimport type {\n DataLoaderOptions,\n DataLoaderResult,\n DataSource,\n IncrementalLoaderShape,\n} from \"@/components/List/model/loading/types\";\nimport type { AsyncResource } from \"@mittwald/react-use-promise\";\nimport { getAsyncResource } from \"@mittwald/react-use-promise\";\nimport { useEffect } from \"react\";\nimport { times } from \"remeda\";\nimport { IncrementalLoaderState } from \"@/components/List/model/loading/IncrementalLoaderState\";\nimport { hash } from \"object-code\";\nimport type { PropertyName } from \"@/components/List/model/types\";\n\ntype AsyncResourceLoadingState = AsyncResource[\"state\"][\"value\"];\n\nconst emptyData: never[] = [];\n\nexport class IncrementalLoader<T> {\n private readonly list: List<T>;\n private readonly dataSource: DataSource<T>;\n public readonly manualSorting: boolean;\n public readonly manualFiltering: boolean;\n public readonly manualPagination: boolean;\n public readonly loaderState: IncrementalLoaderState<T>;\n public readonly staticDataProperties: PropertyName<T>[] = [];\n\n private constructor(list: List<T>, shape: IncrementalLoaderShape<T> = {}) {\n const { source } = shape;\n\n this.dataSource = source ?? { staticData: emptyData };\n\n const manualPagination =\n \"manualPagination\" in this.dataSource\n ? this.dataSource.manualPagination\n : undefined;\n\n const manualFiltering =\n \"manualFiltering\" in this.dataSource\n ? this.dataSource.manualFiltering\n : undefined;\n\n const manualSorting =\n \"manualSorting\" in this.dataSource\n ? this.dataSource.manualSorting\n : undefined;\n\n this.list = list;\n this.loaderState = IncrementalLoaderState.useNew<T>();\n\n this.manualPagination = manualPagination ?? false;\n this.manualFiltering = manualFiltering ?? this.manualPagination;\n this.manualSorting = manualSorting ?? this.manualPagination;\n this.list.filters.forEach((f) => f.onFilterUpdated(() => this.reset()));\n this.list.search?.onUpdated(() => this.reset());\n\n this.initStaticDataProperties();\n }\n\n public static useNew<T>(\n list: List<T>,\n shape: IncrementalLoaderShape<T> = {},\n ): IncrementalLoader<T> {\n return new IncrementalLoader(list, shape);\n }\n\n private initStaticDataProperties() {\n const addPropertiesOfDataEntry = (data: unknown) => {\n if (typeof data !== \"object\" || data === null) {\n return;\n }\n\n (Object.keys(data) as PropertyName<T>[])\n .filter((p) => !this.staticDataProperties.includes(p))\n .forEach((p) => {\n this.staticDataProperties.push(p);\n });\n };\n\n if (\"staticData\" in this.dataSource) {\n this.dataSource.staticData\n // collect properties from just the first 100 items\n .slice(0, 100)\n .forEach(addPropertiesOfDataEntry);\n }\n }\n\n private reset(): void {\n this.loaderState.reset();\n }\n\n public useIsLoading(): boolean {\n return this.loaderState.useIsLoading();\n }\n\n public useIsInitiallyLoading(): boolean {\n return this.useIsLoading() && this.list.batches.getBatchIndex() === 0;\n }\n\n public useData(): T[] {\n return this.loaderState.useMergedData();\n }\n\n public getLoaderInvocationHooks(): (() => void)[] {\n const batchesCount = times(this.list.batches.getBatchIndex() + 1, (i) => i);\n return batchesCount.map((i) => () => {\n this.useLoadBatch(i);\n });\n }\n\n private useLoadBatch(batchIndex: number): void {\n const asyncResource = this.getBatchDataAsyncResource(batchIndex);\n\n asyncResource.use({\n useSuspense: false,\n });\n\n this.useObserveBatchData(asyncResource, batchIndex);\n this.useObserveBatchLoadingState(asyncResource, batchIndex);\n }\n\n private useObserveBatchLoadingState(\n asyncResource: AsyncResource<DataLoaderResult<T>>,\n batchIndex: number,\n ): void {\n const setNewState = (newState: AsyncResourceLoadingState) => {\n this.loaderState.setBatchLoadingState(\n batchIndex,\n this.loaderState.isBatchLoaded(batchIndex) ? \"loaded\" : newState,\n );\n };\n\n useEffect(() => {\n setNewState(asyncResource.state.value);\n return asyncResource.state.observe(setNewState);\n }, [asyncResource, batchIndex]);\n }\n\n private useObserveBatchData(\n asyncResource: AsyncResource<DataLoaderResult<T>>,\n batchIndex: number,\n ): void {\n const setData = (loaderResult: DataLoaderResult<T>): void => {\n const { data, itemTotalCount } = loaderResult;\n this.loaderState.setDataBatch(batchIndex, data);\n\n if (itemTotalCount !== undefined) {\n this.list.batches.updateItemTotalCount(itemTotalCount);\n }\n };\n\n useEffect(() => {\n if (asyncResource.value.value.isSet) {\n setData(asyncResource.value.value.value);\n }\n\n return asyncResource.value.observe((asyncData) => {\n if (asyncData.isSet) {\n setData(asyncData.value);\n }\n });\n }, [asyncResource, batchIndex]);\n }\n\n private getDataLoaderOptions(batchIndex: number): DataLoaderOptions<T> {\n return {\n pagination: this.manualPagination\n ? {\n limit: this.list.batches.batchSize,\n offset: this.list.batches.batchSize * batchIndex,\n }\n : undefined,\n\n sorting: this.manualSorting\n ? (Object.fromEntries(\n this.list.sorting\n .filter((s) => s.isSorted())\n .map((s) => [s.property, s.direction]),\n ) as DataLoaderOptions<T>[\"sorting\"])\n : undefined,\n\n filtering: this.manualFiltering\n ? (Object.fromEntries(\n this.list.filters\n .filter((f) => f.getValue() !== null)\n .map((f) => [\n f.property,\n {\n mode: f.mode,\n values: f.getArrayValue().map((v) => v.value),\n },\n ]),\n ) as DataLoaderOptions<T>[\"filtering\"])\n : undefined,\n\n searchString: this.manualFiltering\n ? this.list.reactTable.searchString\n : undefined,\n };\n }\n\n private getBatchDataAsyncResource(\n batchIndex: number,\n ): AsyncResource<DataLoaderResult<T>> {\n const dataSource = this.dataSource;\n const loaderOptions = this.getDataLoaderOptions(batchIndex);\n\n if (\"staticData\" in dataSource) {\n return getAsyncResource(\n async (staticData) => ({\n data: staticData as T[],\n itemTotalCount: staticData.length,\n }),\n [dataSource.staticData],\n );\n }\n\n if (\"asyncLoader\" in dataSource) {\n const asyncLoader = dataSource.asyncLoader;\n const dependencies = dataSource.dependencies;\n const loaderId = dependencies ? hash(dependencies).toString() : undefined;\n return getAsyncResource(asyncLoader, [loaderOptions], {\n loaderId,\n });\n }\n\n if (\"asyncResourceFactory\" in dataSource) {\n const asyncResourceFactory = dataSource.asyncResourceFactory;\n return asyncResourceFactory(loaderOptions);\n }\n\n throw new Error(\"Unknown data source\");\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IncrementalLoader.mjs","sources":["../../../../../../src/components/List/model/loading/IncrementalLoader.ts"],"sourcesContent":["import type List from \"@/components/List/model/List\";\nimport type {\n DataLoaderOptions,\n DataLoaderResult,\n DataSource,\n IncrementalLoaderShape,\n} from \"@/components/List/model/loading/types\";\nimport type { AsyncResource } from \"@mittwald/react-use-promise\";\nimport { getAsyncResource } from \"@mittwald/react-use-promise\";\nimport { useEffect } from \"react\";\nimport { times } from \"remeda\";\nimport { IncrementalLoaderState } from \"@/components/List/model/loading/IncrementalLoaderState\";\nimport { hash } from \"object-code\";\nimport type { PropertyName } from \"@/components/List/model/types\";\n\ntype AsyncResourceLoadingState = AsyncResource[\"state\"][\"value\"];\n\nconst emptyData: never[] = [];\n\nexport class IncrementalLoader<T> {\n private readonly list: List<T>;\n private readonly dataSource: DataSource<T>;\n public readonly manualSorting: boolean;\n public readonly manualFiltering: boolean;\n public readonly manualPagination: boolean;\n public readonly loaderState: IncrementalLoaderState<T>;\n public readonly staticDataProperties: PropertyName<T>[] = [];\n\n private constructor(list: List<T>, shape: IncrementalLoaderShape<T> = {}) {\n const { source } = shape;\n\n this.dataSource = source ?? { staticData: emptyData };\n\n const manualPagination =\n \"manualPagination\" in this.dataSource\n ? this.dataSource.manualPagination\n : undefined;\n\n const manualFiltering =\n \"manualFiltering\" in this.dataSource\n ? this.dataSource.manualFiltering\n : undefined;\n\n const manualSorting =\n \"manualSorting\" in this.dataSource\n ? this.dataSource.manualSorting\n : undefined;\n\n this.list = list;\n this.loaderState = IncrementalLoaderState.useNew<T>();\n\n this.manualPagination = manualPagination ?? false;\n this.manualFiltering = manualFiltering ?? this.manualPagination;\n this.manualSorting = manualSorting ?? this.manualPagination;\n this.list.filters.forEach((f) => f.onFilterUpdated(() => this.reset()));\n this.list.search?.onUpdated(() => this.reset());\n\n this.initStaticDataProperties();\n }\n\n public static useNew<T>(\n list: List<T>,\n shape: IncrementalLoaderShape<T> = {},\n ): IncrementalLoader<T> {\n return new IncrementalLoader(list, shape);\n }\n\n private initStaticDataProperties() {\n const addPropertiesOfDataEntry = (data: unknown) => {\n if (typeof data !== \"object\" || data === null) {\n return;\n }\n\n (Object.keys(data) as PropertyName<T>[])\n .filter((p) => !this.staticDataProperties.includes(p))\n .forEach((p) => {\n this.staticDataProperties.push(p);\n });\n };\n\n if (\"staticData\" in this.dataSource) {\n this.dataSource.staticData\n // collect properties from just the first 100 items\n .slice(0, 100)\n .forEach(addPropertiesOfDataEntry);\n }\n }\n\n private reset(): void {\n this.loaderState.reset();\n }\n\n public useIsLoading(): boolean {\n return this.loaderState.useIsLoading();\n }\n\n public useIsInitiallyLoading(): boolean {\n return this.useIsLoading() && this.list.batches.getBatchIndex() === 0;\n }\n\n public useData(): T[] {\n return this.loaderState.useMergedData();\n }\n\n public getLoaderInvocationHooks(): (() => void)[] {\n const batchesCount = times(this.list.batches.getBatchIndex() + 1, (i) => i);\n return batchesCount.map((i) => () => {\n this.useLoadBatch(i);\n });\n }\n\n private useLoadBatch(batchIndex: number): void {\n const asyncResource = this.getBatchDataAsyncResource(batchIndex);\n\n asyncResource.use({\n useSuspense: false,\n });\n\n this.useObserveBatchData(asyncResource, batchIndex);\n this.useObserveBatchLoadingState(asyncResource, batchIndex);\n }\n\n private useObserveBatchLoadingState(\n asyncResource: AsyncResource<DataLoaderResult<T>>,\n batchIndex: number,\n ): void {\n const setNewState = (newState: AsyncResourceLoadingState) => {\n this.loaderState.setBatchLoadingState(\n batchIndex,\n this.loaderState.isBatchLoaded(batchIndex) ? \"loaded\" : newState,\n );\n };\n\n useEffect(() => {\n setNewState(asyncResource.state.value);\n return asyncResource.state.observe(setNewState);\n }, [asyncResource, batchIndex]);\n }\n\n private useObserveBatchData(\n asyncResource: AsyncResource<DataLoaderResult<T>>,\n batchIndex: number,\n ): void {\n const setData = (loaderResult: DataLoaderResult<T>): void => {\n const { data, itemTotalCount } = loaderResult;\n this.loaderState.setDataBatch(batchIndex, data);\n\n if (itemTotalCount !== undefined) {\n this.list.batches.updateItemTotalCount(itemTotalCount);\n }\n };\n\n useEffect(() => {\n if (asyncResource.value.value.isSet) {\n setData(asyncResource.value.value.value);\n }\n\n return asyncResource.value.observe((asyncData) => {\n if (asyncData.isSet) {\n setData(asyncData.value);\n }\n });\n }, [asyncResource, batchIndex]);\n }\n\n private getDataLoaderOptions(batchIndex: number): DataLoaderOptions<T> {\n return {\n pagination: this.manualPagination\n ? {\n limit: this.list.batches.batchSize,\n offset: this.list.batches.batchSize * batchIndex,\n }\n : undefined,\n\n sorting: this.manualSorting\n ? (Object.fromEntries(\n this.list.sorting\n .filter((s) => s.isSorted())\n .map((s) => [s.property, s.direction]),\n ) as DataLoaderOptions<T>[\"sorting\"])\n : undefined,\n\n filtering: this.manualFiltering\n ? (Object.fromEntries(\n this.list.filters\n .filter((f) => f.getValue() !== null)\n .map((f) => [\n f.property,\n {\n mode: f.mode,\n values: f.getArrayValue().map((v) => v.value),\n },\n ]),\n ) as DataLoaderOptions<T>[\"filtering\"])\n : undefined,\n\n searchString: this.manualFiltering\n ? this.list.reactTable.searchString\n : undefined,\n };\n }\n\n private getBatchDataAsyncResource(\n batchIndex: number,\n ): AsyncResource<DataLoaderResult<T>> {\n const dataSource = this.dataSource;\n const loaderOptions = this.getDataLoaderOptions(batchIndex);\n\n if (\"staticData\" in dataSource) {\n return getAsyncResource(\n async (staticData) => ({\n data: staticData as T[],\n itemTotalCount: staticData.length,\n }),\n [dataSource.staticData],\n );\n }\n\n if (\"asyncLoader\" in dataSource) {\n const asyncLoader = dataSource.asyncLoader;\n const dependencies = dataSource.dependencies;\n const loaderId = dependencies ? hash(dependencies).toString() : undefined;\n return getAsyncResource(asyncLoader, [loaderOptions], {\n loaderId,\n });\n }\n\n if (\"asyncResourceFactory\" in dataSource) {\n const asyncResourceFactory = dataSource.asyncResourceFactory;\n return asyncResourceFactory(loaderOptions);\n }\n\n throw new Error(\"Unknown data source\");\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  "use client"
2
2
  /* */
3
- import { makeObservable, observable, computed, action } from 'mobx';
4
3
  import { useSelector } from '../../../../lib/mobx/useSelector.mjs';
5
- import { useRef } from 'react';
4
+ import { makeObservable, action, computed, observable } from 'mobx';
5
+ import { useStatic } from '../../../../lib/hooks/useStatic.mjs';
6
6
 
7
7
  class IncrementalLoaderState {
8
8
  dataBatches = [];
@@ -23,7 +23,7 @@ class IncrementalLoaderState {
23
23
  });
24
24
  }
25
25
  static useNew() {
26
- return useRef(new IncrementalLoaderState()).current;
26
+ return useStatic(() => new IncrementalLoaderState());
27
27
  }
28
28
  reset() {
29
29
  this.batchLoadingStates = [];
@@ -48,7 +48,7 @@ class IncrementalLoaderState {
48
48
  return dataBatches.flatMap((d) => d);
49
49
  }
50
50
  useMergedData() {
51
- return useSelector(() => this.mergedData);
51
+ return useSelector(() => this.mergedData, [this.prevDataBatches]);
52
52
  }
53
53
  get isLoading() {
54
54
  return this.batchLoadingStates.some((s) => s === "loading" || s === "void");
@@ -1 +1 @@
1
- {"version":3,"file":"IncrementalLoaderState.mjs","sources":["../../../../../../src/components/List/model/loading/IncrementalLoaderState.ts"],"sourcesContent":["import type { AsyncResource } from \"@mittwald/react-use-promise\";\nimport { action, computed, makeObservable, observable } from \"mobx\";\nimport useSelector from \"@/lib/mobx/useSelector\";\nimport { useRef } from \"react\";\nimport type { ListData } from \"@/components/List/model/loading/types\";\n\ntype AsyncResourceLoadingState = AsyncResource[\"state\"][\"value\"];\ntype DataBatches<T> = ListData<T>[];\ntype BatchesLoadingState = AsyncResourceLoadingState[];\n\nexport class IncrementalLoaderState<T> {\n public dataBatches: DataBatches<T> = [];\n public prevDataBatches: DataBatches<T> = [];\n public batchLoadingStates: BatchesLoadingState = [\"void\"];\n\n private constructor() {\n makeObservable(this, {\n prevDataBatches: false,\n useMergedData: false,\n useIsLoading: false,\n dataBatches: observable.shallow,\n batchLoadingStates: observable.shallow,\n mergedData: computed,\n isLoading: computed,\n reset: action.bound,\n setDataBatch: action.bound,\n setBatchLoadingState: action.bound,\n });\n }\n\n public static useNew<T>(): IncrementalLoaderState<T> {\n return useRef(new IncrementalLoaderState<T>()).current;\n }\n\n public reset(): void {\n this.batchLoadingStates = [];\n this.dataBatches = [];\n }\n\n public setDataBatch(index: number, data: ListData<T>): void {\n if (this.dataBatches.length === 0) {\n this.prevDataBatches = [];\n }\n\n if (this.dataBatches[index] !== data) {\n this.dataBatches[index] = data;\n this.prevDataBatches[index] = data;\n }\n }\n\n public setBatchLoadingState(\n index: number,\n state: AsyncResourceLoadingState,\n ): void {\n if (this.batchLoadingStates[index] !== state) {\n this.batchLoadingStates[index] = state;\n }\n }\n\n public get mergedData(): T[] {\n const dataBatches =\n this.dataBatches.length === 0 ? this.prevDataBatches : this.dataBatches;\n\n return dataBatches.flatMap((d) => d);\n }\n\n public useMergedData(): T[] {\n return useSelector(() => this.mergedData);\n }\n\n public get isLoading(): boolean {\n return this.batchLoadingStates.some((s) => s === \"loading\" || s === \"void\");\n }\n\n public useIsLoading(): boolean {\n return useSelector(() => this.isLoading);\n }\n\n public isBatchLoaded(batchIndex: number) {\n return batchIndex in this.dataBatches;\n }\n}\n"],"names":[],"mappings":";;;;AAUO,MAAM,sBAA0B,CAAA;AAAA,EAC9B,cAA8B,EAAC;AAAA,EAC/B,kBAAkC,EAAC;AAAA,EACnC,kBAAA,GAA0C,CAAC,MAAM,CAAA;AAAA,EAEhD,WAAc,GAAA;AACpB,IAAA,cAAA,CAAe,IAAM,EAAA;AAAA,MACnB,eAAiB,EAAA,KAAA;AAAA,MACjB,aAAe,EAAA,KAAA;AAAA,MACf,YAAc,EAAA,KAAA;AAAA,MACd,aAAa,UAAW,CAAA,OAAA;AAAA,MACxB,oBAAoB,UAAW,CAAA,OAAA;AAAA,MAC/B,UAAY,EAAA,QAAA;AAAA,MACZ,SAAW,EAAA,QAAA;AAAA,MACX,OAAO,MAAO,CAAA,KAAA;AAAA,MACd,cAAc,MAAO,CAAA,KAAA;AAAA,MACrB,sBAAsB,MAAO,CAAA;AAAA,KAC9B,CAAA;AAAA;AACH,EAEA,OAAc,MAAuC,GAAA;AACnD,IAAA,OAAO,MAAO,CAAA,IAAI,sBAA0B,EAAC,CAAE,CAAA,OAAA;AAAA;AACjD,EAEO,KAAc,GAAA;AACnB,IAAA,IAAA,CAAK,qBAAqB,EAAC;AAC3B,IAAA,IAAA,CAAK,cAAc,EAAC;AAAA;AACtB,EAEO,YAAA,CAAa,OAAe,IAAyB,EAAA;AAC1D,IAAI,IAAA,IAAA,CAAK,WAAY,CAAA,MAAA,KAAW,CAAG,EAAA;AACjC,MAAA,IAAA,CAAK,kBAAkB,EAAC;AAAA;AAG1B,IAAA,IAAI,IAAK,CAAA,WAAA,CAAY,KAAK,CAAA,KAAM,IAAM,EAAA;AACpC,MAAK,IAAA,CAAA,WAAA,CAAY,KAAK,CAAI,GAAA,IAAA;AAC1B,MAAK,IAAA,CAAA,eAAA,CAAgB,KAAK,CAAI,GAAA,IAAA;AAAA;AAChC;AACF,EAEO,oBAAA,CACL,OACA,KACM,EAAA;AACN,IAAA,IAAI,IAAK,CAAA,kBAAA,CAAmB,KAAK,CAAA,KAAM,KAAO,EAAA;AAC5C,MAAK,IAAA,CAAA,kBAAA,CAAmB,KAAK,CAAI,GAAA,KAAA;AAAA;AACnC;AACF,EAEA,IAAW,UAAkB,GAAA;AAC3B,IAAA,MAAM,cACJ,IAAK,CAAA,WAAA,CAAY,WAAW,CAAI,GAAA,IAAA,CAAK,kBAAkB,IAAK,CAAA,WAAA;AAE9D,IAAA,OAAO,WAAY,CAAA,OAAA,CAAQ,CAAC,CAAA,KAAM,CAAC,CAAA;AAAA;AACrC,EAEO,aAAqB,GAAA;AAC1B,IAAO,OAAA,WAAA,CAAY,MAAM,IAAA,CAAK,UAAU,CAAA;AAAA;AAC1C,EAEA,IAAW,SAAqB,GAAA;AAC9B,IAAO,OAAA,IAAA,CAAK,mBAAmB,IAAK,CAAA,CAAC,MAAM,CAAM,KAAA,SAAA,IAAa,MAAM,MAAM,CAAA;AAAA;AAC5E,EAEO,YAAwB,GAAA;AAC7B,IAAO,OAAA,WAAA,CAAY,MAAM,IAAA,CAAK,SAAS,CAAA;AAAA;AACzC,EAEO,cAAc,UAAoB,EAAA;AACvC,IAAA,OAAO,cAAc,IAAK,CAAA,WAAA;AAAA;AAE9B;;;;"}
1
+ {"version":3,"file":"IncrementalLoaderState.mjs","sources":["../../../../../../src/components/List/model/loading/IncrementalLoaderState.ts"],"sourcesContent":["import type { ListData } from \"@/components/List/model/loading/types\";\nimport useSelector from \"@/lib/mobx/useSelector\";\nimport type { AsyncResource } from \"@mittwald/react-use-promise\";\nimport { action, computed, makeObservable, observable } from \"mobx\";\nimport { useStatic } from \"@/lib/hooks/useStatic\";\n\ntype AsyncResourceLoadingState = AsyncResource[\"state\"][\"value\"];\ntype DataBatches<T> = ListData<T>[];\ntype BatchesLoadingState = AsyncResourceLoadingState[];\n\nexport class IncrementalLoaderState<T> {\n public dataBatches: DataBatches<T> = [];\n public prevDataBatches: DataBatches<T> = [];\n public batchLoadingStates: BatchesLoadingState = [\"void\"];\n\n private constructor() {\n makeObservable(this, {\n prevDataBatches: false,\n useMergedData: false,\n useIsLoading: false,\n dataBatches: observable.shallow,\n batchLoadingStates: observable.shallow,\n mergedData: computed,\n isLoading: computed,\n reset: action.bound,\n setDataBatch: action.bound,\n setBatchLoadingState: action.bound,\n });\n }\n\n public static useNew<T>(): IncrementalLoaderState<T> {\n return useStatic(() => new IncrementalLoaderState<T>());\n }\n\n public reset(): void {\n this.batchLoadingStates = [];\n this.dataBatches = [];\n }\n\n public setDataBatch(index: number, data: ListData<T>): void {\n if (this.dataBatches.length === 0) {\n this.prevDataBatches = [];\n }\n\n if (this.dataBatches[index] !== data) {\n this.dataBatches[index] = data;\n this.prevDataBatches[index] = data;\n }\n }\n\n public setBatchLoadingState(\n index: number,\n state: AsyncResourceLoadingState,\n ): void {\n if (this.batchLoadingStates[index] !== state) {\n this.batchLoadingStates[index] = state;\n }\n }\n\n public get mergedData(): T[] {\n const dataBatches =\n this.dataBatches.length === 0 ? this.prevDataBatches : this.dataBatches;\n\n return dataBatches.flatMap((d) => d);\n }\n\n public useMergedData(): T[] {\n return useSelector(() => this.mergedData, [this.prevDataBatches]);\n }\n\n public get isLoading(): boolean {\n return this.batchLoadingStates.some((s) => s === \"loading\" || s === \"void\");\n }\n\n public useIsLoading(): boolean {\n return useSelector(() => this.isLoading);\n }\n\n public isBatchLoaded(batchIndex: number) {\n return batchIndex in this.dataBatches;\n }\n}\n"],"names":[],"mappings":";;;;AAUO,MAAM,sBAA0B,CAAA;AAAA,EAC9B,cAA8B,EAAC;AAAA,EAC/B,kBAAkC,EAAC;AAAA,EACnC,kBAAA,GAA0C,CAAC,MAAM,CAAA;AAAA,EAEhD,WAAc,GAAA;AACpB,IAAA,cAAA,CAAe,IAAM,EAAA;AAAA,MACnB,eAAiB,EAAA,KAAA;AAAA,MACjB,aAAe,EAAA,KAAA;AAAA,MACf,YAAc,EAAA,KAAA;AAAA,MACd,aAAa,UAAW,CAAA,OAAA;AAAA,MACxB,oBAAoB,UAAW,CAAA,OAAA;AAAA,MAC/B,UAAY,EAAA,QAAA;AAAA,MACZ,SAAW,EAAA,QAAA;AAAA,MACX,OAAO,MAAO,CAAA,KAAA;AAAA,MACd,cAAc,MAAO,CAAA,KAAA;AAAA,MACrB,sBAAsB,MAAO,CAAA;AAAA,KAC9B,CAAA;AAAA;AACH,EAEA,OAAc,MAAuC,GAAA;AACnD,IAAA,OAAO,SAAU,CAAA,MAAM,IAAI,sBAAA,EAA2B,CAAA;AAAA;AACxD,EAEO,KAAc,GAAA;AACnB,IAAA,IAAA,CAAK,qBAAqB,EAAC;AAC3B,IAAA,IAAA,CAAK,cAAc,EAAC;AAAA;AACtB,EAEO,YAAA,CAAa,OAAe,IAAyB,EAAA;AAC1D,IAAI,IAAA,IAAA,CAAK,WAAY,CAAA,MAAA,KAAW,CAAG,EAAA;AACjC,MAAA,IAAA,CAAK,kBAAkB,EAAC;AAAA;AAG1B,IAAA,IAAI,IAAK,CAAA,WAAA,CAAY,KAAK,CAAA,KAAM,IAAM,EAAA;AACpC,MAAK,IAAA,CAAA,WAAA,CAAY,KAAK,CAAI,GAAA,IAAA;AAC1B,MAAK,IAAA,CAAA,eAAA,CAAgB,KAAK,CAAI,GAAA,IAAA;AAAA;AAChC;AACF,EAEO,oBAAA,CACL,OACA,KACM,EAAA;AACN,IAAA,IAAI,IAAK,CAAA,kBAAA,CAAmB,KAAK,CAAA,KAAM,KAAO,EAAA;AAC5C,MAAK,IAAA,CAAA,kBAAA,CAAmB,KAAK,CAAI,GAAA,KAAA;AAAA;AACnC;AACF,EAEA,IAAW,UAAkB,GAAA;AAC3B,IAAA,MAAM,cACJ,IAAK,CAAA,WAAA,CAAY,WAAW,CAAI,GAAA,IAAA,CAAK,kBAAkB,IAAK,CAAA,WAAA;AAE9D,IAAA,OAAO,WAAY,CAAA,OAAA,CAAQ,CAAC,CAAA,KAAM,CAAC,CAAA;AAAA;AACrC,EAEO,aAAqB,GAAA;AAC1B,IAAA,OAAO,YAAY,MAAM,IAAA,CAAK,YAAY,CAAC,IAAA,CAAK,eAAe,CAAC,CAAA;AAAA;AAClE,EAEA,IAAW,SAAqB,GAAA;AAC9B,IAAO,OAAA,IAAA,CAAK,mBAAmB,IAAK,CAAA,CAAC,MAAM,CAAM,KAAA,SAAA,IAAa,MAAM,MAAM,CAAA;AAAA;AAC5E,EAEO,YAAwB,GAAA;AAC7B,IAAO,OAAA,WAAA,CAAY,MAAM,IAAA,CAAK,SAAS,CAAA;AAAA;AACzC,EAEO,cAAc,UAAoB,EAAA;AACvC,IAAA,OAAO,cAAc,IAAK,CAAA,WAAA;AAAA;AAE9B;;;;"}
@@ -16,7 +16,7 @@ class Search {
16
16
  return this.list.reactTable.searchString;
17
17
  }
18
18
  get isSet() {
19
- return this.value !== undefined;
19
+ return this.value !== void 0;
20
20
  }
21
21
  callOnUpdateCallbacks() {
22
22
  this.onUpdateCallbacks.forEach((cb) => cb());
@@ -25,9 +25,9 @@ class Search {
25
25
  initialState.globalFilter = this.defaultValue;
26
26
  }
27
27
  setValue(value) {
28
- if (value === undefined || value.trim() === "") {
28
+ if (value === void 0 || value.trim() === "") {
29
29
  if (this.list.reactTable.table.getState().globalFilter) {
30
- this.list.reactTable.table.setGlobalFilter(undefined);
30
+ this.list.reactTable.table.setGlobalFilter(void 0);
31
31
  this.callOnUpdateCallbacks();
32
32
  }
33
33
  } else {
@@ -36,7 +36,7 @@ class Search {
36
36
  }
37
37
  }
38
38
  clear() {
39
- this.setValue(undefined);
39
+ this.setValue(void 0);
40
40
  }
41
41
  onUpdated(cb) {
42
42
  this.onUpdateCallbacks.add(cb);
@@ -1 +1 @@
1
- {"version":3,"file":"Search.mjs","sources":["../../../../../../src/components/List/model/search/Search.ts"],"sourcesContent":["import type List from \"@/components/List/model/List\";\nimport type {\n SearchFieldRenderComponent,\n SearchShape,\n SearchValue,\n} from \"@/components/List/model/search/types\";\nimport type { InitialTableState } from \"@tanstack/react-table\";\n\nexport class Search<T> {\n public readonly list: List<T>;\n public readonly render?: SearchFieldRenderComponent;\n public readonly textFieldProps: SearchShape<T>[\"textFieldProps\"];\n private onUpdateCallbacks = new Set<() => unknown>();\n private readonly defaultValue?: string;\n\n public constructor(list: List<T>, searchShape: SearchShape<T>) {\n this.list = list;\n this.render = searchShape.render;\n this.textFieldProps = searchShape.textFieldProps;\n this.defaultValue = searchShape.defaultValue;\n }\n\n public get value(): SearchValue {\n return this.list.reactTable.searchString;\n }\n\n public get isSet() {\n return this.value !== undefined;\n }\n\n private callOnUpdateCallbacks(): void {\n this.onUpdateCallbacks.forEach((cb) => cb());\n }\n\n public updateInitialState(initialState: InitialTableState) {\n initialState.globalFilter = this.defaultValue;\n }\n\n public setValue(value: SearchValue): void {\n if (value === undefined || value.trim() === \"\") {\n if (this.list.reactTable.table.getState().globalFilter) {\n this.list.reactTable.table.setGlobalFilter(undefined);\n this.callOnUpdateCallbacks();\n }\n } else {\n this.list.reactTable.table.setGlobalFilter(value);\n this.callOnUpdateCallbacks();\n }\n }\n\n public clear(): void {\n this.setValue(undefined);\n }\n\n public onUpdated(cb: () => unknown): void {\n this.onUpdateCallbacks.add(cb);\n }\n}\n"],"names":[],"mappings":"AAQO,MAAM,MAAU,CAAA;AAAA,EACL,IAAA;AAAA,EACA,MAAA;AAAA,EACA,cAAA;AAAA,EACR,iBAAA,uBAAwB,GAAmB,EAAA;AAAA,EAClC,YAAA;AAAA,EAEV,WAAA,CAAY,MAAe,WAA6B,EAAA;AAC7D,IAAA,IAAA,CAAK,IAAO,GAAA,IAAA;AACZ,IAAA,IAAA,CAAK,SAAS,WAAY,CAAA,MAAA;AAC1B,IAAA,IAAA,CAAK,iBAAiB,WAAY,CAAA,cAAA;AAClC,IAAA,IAAA,CAAK,eAAe,WAAY,CAAA,YAAA;AAAA;AAClC,EAEA,IAAW,KAAqB,GAAA;AAC9B,IAAO,OAAA,IAAA,CAAK,KAAK,UAAW,CAAA,YAAA;AAAA;AAC9B,EAEA,IAAW,KAAQ,GAAA;AACjB,IAAA,OAAO,KAAK,KAAU,KAAA,SAAA;AAAA;AACxB,EAEQ,qBAA8B,GAAA;AACpC,IAAA,IAAA,CAAK,iBAAkB,CAAA,OAAA,CAAQ,CAAC,EAAA,KAAO,IAAI,CAAA;AAAA;AAC7C,EAEO,mBAAmB,YAAiC,EAAA;AACzD,IAAA,YAAA,CAAa,eAAe,IAAK,CAAA,YAAA;AAAA;AACnC,EAEO,SAAS,KAA0B,EAAA;AACxC,IAAA,IAAI,KAAU,KAAA,SAAA,IAAa,KAAM,CAAA,IAAA,OAAW,EAAI,EAAA;AAC9C,MAAA,IAAI,KAAK,IAAK,CAAA,UAAA,CAAW,KAAM,CAAA,QAAA,GAAW,YAAc,EAAA;AACtD,QAAA,IAAA,CAAK,IAAK,CAAA,UAAA,CAAW,KAAM,CAAA,eAAA,CAAgB,SAAS,CAAA;AACpD,QAAA,IAAA,CAAK,qBAAsB,EAAA;AAAA;AAC7B,KACK,MAAA;AACL,MAAA,IAAA,CAAK,IAAK,CAAA,UAAA,CAAW,KAAM,CAAA,eAAA,CAAgB,KAAK,CAAA;AAChD,MAAA,IAAA,CAAK,qBAAsB,EAAA;AAAA;AAC7B;AACF,EAEO,KAAc,GAAA;AACnB,IAAA,IAAA,CAAK,SAAS,SAAS,CAAA;AAAA;AACzB,EAEO,UAAU,EAAyB,EAAA;AACxC,IAAK,IAAA,CAAA,iBAAA,CAAkB,IAAI,EAAE,CAAA;AAAA;AAEjC;;;;"}
1
+ {"version":3,"file":"Search.mjs","sources":["../../../../../../src/components/List/model/search/Search.ts"],"sourcesContent":["import type List from \"@/components/List/model/List\";\nimport type {\n SearchFieldRenderComponent,\n SearchShape,\n SearchValue,\n} from \"@/components/List/model/search/types\";\nimport type { InitialTableState } from \"@tanstack/react-table\";\n\nexport class Search<T> {\n public readonly list: List<T>;\n public readonly render?: SearchFieldRenderComponent;\n public readonly textFieldProps: SearchShape<T>[\"textFieldProps\"];\n private onUpdateCallbacks = new Set<() => unknown>();\n private readonly defaultValue?: string;\n\n public constructor(list: List<T>, searchShape: SearchShape<T>) {\n this.list = list;\n this.render = searchShape.render;\n this.textFieldProps = searchShape.textFieldProps;\n this.defaultValue = searchShape.defaultValue;\n }\n\n public get value(): SearchValue {\n return this.list.reactTable.searchString;\n }\n\n public get isSet() {\n return this.value !== undefined;\n }\n\n private callOnUpdateCallbacks(): void {\n this.onUpdateCallbacks.forEach((cb) => cb());\n }\n\n public updateInitialState(initialState: InitialTableState) {\n initialState.globalFilter = this.defaultValue;\n }\n\n public setValue(value: SearchValue): void {\n if (value === undefined || value.trim() === \"\") {\n if (this.list.reactTable.table.getState().globalFilter) {\n this.list.reactTable.table.setGlobalFilter(undefined);\n this.callOnUpdateCallbacks();\n }\n } else {\n this.list.reactTable.table.setGlobalFilter(value);\n this.callOnUpdateCallbacks();\n }\n }\n\n public clear(): void {\n this.setValue(undefined);\n }\n\n public onUpdated(cb: () => unknown): void {\n this.onUpdateCallbacks.add(cb);\n }\n}\n"],"names":[],"mappings":"AAQO,MAAM,MAAU,CAAA;AAAA,EACL,IAAA;AAAA,EACA,MAAA;AAAA,EACA,cAAA;AAAA,EACR,iBAAA,uBAAwB,GAAmB,EAAA;AAAA,EAClC,YAAA;AAAA,EAEV,WAAA,CAAY,MAAe,WAA6B,EAAA;AAC7D,IAAA,IAAA,CAAK,IAAO,GAAA,IAAA;AACZ,IAAA,IAAA,CAAK,SAAS,WAAY,CAAA,MAAA;AAC1B,IAAA,IAAA,CAAK,iBAAiB,WAAY,CAAA,cAAA;AAClC,IAAA,IAAA,CAAK,eAAe,WAAY,CAAA,YAAA;AAAA;AAClC,EAEA,IAAW,KAAqB,GAAA;AAC9B,IAAO,OAAA,IAAA,CAAK,KAAK,UAAW,CAAA,YAAA;AAAA;AAC9B,EAEA,IAAW,KAAQ,GAAA;AACjB,IAAA,OAAO,KAAK,KAAU,KAAA,MAAA;AAAA;AACxB,EAEQ,qBAA8B,GAAA;AACpC,IAAA,IAAA,CAAK,iBAAkB,CAAA,OAAA,CAAQ,CAAC,EAAA,KAAO,IAAI,CAAA;AAAA;AAC7C,EAEO,mBAAmB,YAAiC,EAAA;AACzD,IAAA,YAAA,CAAa,eAAe,IAAK,CAAA,YAAA;AAAA;AACnC,EAEO,SAAS,KAA0B,EAAA;AACxC,IAAA,IAAI,KAAU,KAAA,MAAA,IAAa,KAAM,CAAA,IAAA,OAAW,EAAI,EAAA;AAC9C,MAAA,IAAI,KAAK,IAAK,CAAA,UAAA,CAAW,KAAM,CAAA,QAAA,GAAW,YAAc,EAAA;AACtD,QAAA,IAAA,CAAK,IAAK,CAAA,UAAA,CAAW,KAAM,CAAA,eAAA,CAAgB,MAAS,CAAA;AACpD,QAAA,IAAA,CAAK,qBAAsB,EAAA;AAAA;AAC7B,KACK,MAAA;AACL,MAAA,IAAA,CAAK,IAAK,CAAA,UAAA,CAAW,KAAM,CAAA,eAAA,CAAgB,KAAK,CAAA;AAChD,MAAA,IAAA,CAAK,qBAAsB,EAAA;AAAA;AAC7B;AACF,EAEO,KAAc,GAAA;AACnB,IAAA,IAAA,CAAK,SAAS,MAAS,CAAA;AAAA;AACzB,EAEO,UAAU,EAAyB,EAAA;AACxC,IAAK,IAAA,CAAA,iBAAA,CAAkB,IAAI,EAAE,CAAA;AAAA;AAEjC;;;;"}
@@ -1,11 +1,8 @@
1
1
  "use client"
2
2
  /* */
3
3
  const loadingSpinner = "flow--loading-spinner";
4
- const spin = "flow--loading-spinner--spin";
5
4
  const styles = {
6
- loadingSpinner: loadingSpinner,
7
- spin: spin
8
- };
5
+ loadingSpinner: loadingSpinner};
9
6
 
10
- export { styles as default, loadingSpinner, spin };
7
+ export { styles as default, loadingSpinner };
11
8
  //# sourceMappingURL=LoadingSpinner.module.scss.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"LoadingSpinner.module.scss.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}
1
+ {"version":3,"file":"LoadingSpinner.module.scss.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -14,7 +14,7 @@ import { CodeBlock } from '../CodeBlock/CodeBlock.mjs';
14
14
  const Markdown = (props) => {
15
15
  const { children, color = "default", ...rest } = props;
16
16
  const headingAndLinkColor = color === "default" ? "primary" : color;
17
- const textColor = color === "default" ? undefined : color;
17
+ const textColor = color === "default" ? void 0 : color;
18
18
  const components = {
19
19
  a: (props2) => /* @__PURE__ */ jsx(Link, { target: "_blank", color: headingAndLinkColor, href: props2.href, children: props2.children }),
20
20
  p: (props2) => /* @__PURE__ */ jsx(Text, { elementType: "p", className: styles.text, color: textColor, children: props2.children }),
@@ -38,7 +38,7 @@ const Markdown = (props) => {
38
38
  {
39
39
  copyable: false,
40
40
  color,
41
- language: isValidElement(preElementContent) && preElementContent.props.className ? preElementContent.props.className.replace("language-", "") : undefined,
41
+ language: isValidElement(preElementContent) && preElementContent.props.className ? preElementContent.props.className.replace("language-", "") : void 0,
42
42
  code: isValidElement(preElementContent) ? preElementContent.props.children : preElementContent
43
43
  }
44
44
  );
@@ -1 +1 @@
1
- {"version":3,"file":"Markdown.mjs","sources":["../../../../src/components/Markdown/Markdown.tsx"],"sourcesContent":["import type { FC, ReactNode } from \"react\";\nimport React, { Children, isValidElement } from \"react\";\nimport type { Components, Options } from \"react-markdown\";\nimport ReactMarkdown from \"react-markdown\";\nimport { Link } from \"@/components/Link\";\nimport { Text } from \"@/components/Text\";\nimport styles from \"./Markdown.module.scss\";\nimport { InlineCode } from \"@/components/InlineCode\";\nimport { Heading } from \"@/components/Heading\";\nimport { Separator } from \"@/components/Separator\";\nimport { CodeBlock } from \"@/components/CodeBlock\";\n\nexport interface MarkdownProps extends Omit<Options, \"components\"> {\n /** The color schema of the markdown component. */\n color?: \"dark\" | \"light\" | \"default\";\n}\n\n/** @flr-generate all */\nexport const Markdown: FC<MarkdownProps> = (props) => {\n const { children, color = \"default\", ...rest } = props;\n\n const headingAndLinkColor = color === \"default\" ? \"primary\" : color;\n const textColor = color === \"default\" ? undefined : color;\n\n const components: Components = {\n a: (props) => (\n <Link target=\"_blank\" color={headingAndLinkColor} href={props.href}>\n {props.children as ReactNode}\n </Link>\n ),\n p: (props) => (\n <Text elementType=\"p\" className={styles.text} color={textColor}>\n {props.children as ReactNode}\n </Text>\n ),\n code: (props) => (\n <InlineCode color={color}>{props.children as ReactNode}</InlineCode>\n ),\n h1: (props) => (\n <Heading className={styles.heading} level={1} color={headingAndLinkColor}>\n {props.children as ReactNode}\n </Heading>\n ),\n h2: (props) => (\n <Heading className={styles.heading} level={2} color={headingAndLinkColor}>\n {props.children as ReactNode}\n </Heading>\n ),\n h3: (props) => (\n <Heading className={styles.heading} level={3} color={headingAndLinkColor}>\n {props.children as ReactNode}\n </Heading>\n ),\n h4: (props) => (\n <Heading className={styles.heading} level={4} color={headingAndLinkColor}>\n {props.children as ReactNode}\n </Heading>\n ),\n h5: (props) => (\n <Heading className={styles.heading} level={5} color={headingAndLinkColor}>\n {props.children as ReactNode}\n </Heading>\n ),\n h6: (props) => (\n <Heading className={styles.heading} level={6} color={headingAndLinkColor}>\n {props.children as ReactNode}\n </Heading>\n ),\n hr: () => <Separator />,\n pre: (props) => {\n const preElementContent = Children.toArray(\n props.children as ReactNode,\n )[0];\n\n if (!(typeof preElementContent === \"string\")) {\n throw new Error(\"Element must be a string\");\n }\n\n return (\n <CodeBlock\n copyable={false}\n color={color}\n language={\n isValidElement<{ className?: string }>(preElementContent) &&\n preElementContent.props.className\n ? preElementContent.props.className.replace(\"language-\", \"\")\n : undefined\n }\n code={\n isValidElement<{ children: string }>(preElementContent)\n ? preElementContent.props.children\n : preElementContent\n }\n />\n );\n },\n ul: (props) => (\n <Text color={textColor}>\n <ul>{props.children as ReactNode}</ul>\n </Text>\n ),\n ol: (props) => (\n <Text color={textColor}>\n <ol>{props.children as ReactNode}</ol>\n </Text>\n ),\n blockquote: (props) => (\n <Text color={textColor}>\n <blockquote>{props.children}</blockquote>\n </Text>\n ),\n };\n\n return (\n <ReactMarkdown\n {...rest}\n components={components}\n className={styles.markdown}\n >\n {children}\n </ReactMarkdown>\n );\n};\n\nexport default Markdown;\n"],"names":["props"],"mappings":"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"}
1
+ {"version":3,"file":"Markdown.mjs","sources":["../../../../src/components/Markdown/Markdown.tsx"],"sourcesContent":["import type { FC, ReactNode } from \"react\";\nimport React, { Children, isValidElement } from \"react\";\nimport type { Components, Options } from \"react-markdown\";\nimport ReactMarkdown from \"react-markdown\";\nimport { Link } from \"@/components/Link\";\nimport { Text } from \"@/components/Text\";\nimport styles from \"./Markdown.module.scss\";\nimport { InlineCode } from \"@/components/InlineCode\";\nimport { Heading } from \"@/components/Heading\";\nimport { Separator } from \"@/components/Separator\";\nimport { CodeBlock } from \"@/components/CodeBlock\";\n\nexport interface MarkdownProps extends Omit<Options, \"components\"> {\n /** The color schema of the markdown component. */\n color?: \"dark\" | \"light\" | \"default\";\n}\n\n/** @flr-generate all */\nexport const Markdown: FC<MarkdownProps> = (props) => {\n const { children, color = \"default\", ...rest } = props;\n\n const headingAndLinkColor = color === \"default\" ? \"primary\" : color;\n const textColor = color === \"default\" ? undefined : color;\n\n const components: Components = {\n a: (props) => (\n <Link target=\"_blank\" color={headingAndLinkColor} href={props.href}>\n {props.children as ReactNode}\n </Link>\n ),\n p: (props) => (\n <Text elementType=\"p\" className={styles.text} color={textColor}>\n {props.children as ReactNode}\n </Text>\n ),\n code: (props) => (\n <InlineCode color={color}>{props.children as ReactNode}</InlineCode>\n ),\n h1: (props) => (\n <Heading className={styles.heading} level={1} color={headingAndLinkColor}>\n {props.children as ReactNode}\n </Heading>\n ),\n h2: (props) => (\n <Heading className={styles.heading} level={2} color={headingAndLinkColor}>\n {props.children as ReactNode}\n </Heading>\n ),\n h3: (props) => (\n <Heading className={styles.heading} level={3} color={headingAndLinkColor}>\n {props.children as ReactNode}\n </Heading>\n ),\n h4: (props) => (\n <Heading className={styles.heading} level={4} color={headingAndLinkColor}>\n {props.children as ReactNode}\n </Heading>\n ),\n h5: (props) => (\n <Heading className={styles.heading} level={5} color={headingAndLinkColor}>\n {props.children as ReactNode}\n </Heading>\n ),\n h6: (props) => (\n <Heading className={styles.heading} level={6} color={headingAndLinkColor}>\n {props.children as ReactNode}\n </Heading>\n ),\n hr: () => <Separator />,\n pre: (props) => {\n const preElementContent = Children.toArray(\n props.children as ReactNode,\n )[0];\n\n if (!(typeof preElementContent === \"string\")) {\n throw new Error(\"Element must be a string\");\n }\n\n return (\n <CodeBlock\n copyable={false}\n color={color}\n language={\n isValidElement<{ className?: string }>(preElementContent) &&\n preElementContent.props.className\n ? preElementContent.props.className.replace(\"language-\", \"\")\n : undefined\n }\n code={\n isValidElement<{ children: string }>(preElementContent)\n ? preElementContent.props.children\n : preElementContent\n }\n />\n );\n },\n ul: (props) => (\n <Text color={textColor}>\n <ul>{props.children as ReactNode}</ul>\n </Text>\n ),\n ol: (props) => (\n <Text color={textColor}>\n <ol>{props.children as ReactNode}</ol>\n </Text>\n ),\n blockquote: (props) => (\n <Text color={textColor}>\n <blockquote>{props.children}</blockquote>\n </Text>\n ),\n };\n\n return (\n <ReactMarkdown\n {...rest}\n components={components}\n className={styles.markdown}\n >\n {children}\n </ReactMarkdown>\n );\n};\n\nexport default Markdown;\n"],"names":["props"],"mappings":"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"}
@@ -3,16 +3,10 @@
3
3
  const navigation = "flow--navigation";
4
4
  const item = "flow--navigation--item";
5
5
  const icon = "flow--navigation--icon";
6
- const controlIcon = "flow--navigation--control-icon";
7
- const avatar = "flow--navigation--avatar";
8
6
  const styles = {
9
7
  navigation: navigation,
10
8
  item: item,
11
- "switch": "flow--navigation--switch",
12
- icon: icon,
13
- controlIcon: controlIcon,
14
- avatar: avatar
15
- };
9
+ icon: icon};
16
10
 
17
- export { avatar, controlIcon, styles as default, icon, item, navigation };
11
+ export { styles as default, icon, item, navigation };
18
12
  //# sourceMappingURL=Navigation.module.scss.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Navigation.module.scss.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Navigation.module.scss.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;"}
@@ -1,9 +1,9 @@
1
1
  "use client"
2
2
  /* */
3
- import { useRef } from 'react';
4
3
  import { useSelector } from '../../lib/mobx/useSelector.mjs';
5
- import { makeObservable, observable, action } from 'mobx';
4
+ import { makeObservable, action, observable } from 'mobx';
6
5
  import { Timer } from '../../lib/timer/Timer.mjs';
6
+ import { useStatic } from '../../lib/hooks/useStatic.mjs';
7
7
 
8
8
  class NotificationController {
9
9
  notificationsData = /* @__PURE__ */ new Map();
@@ -16,7 +16,7 @@ class NotificationController {
16
16
  });
17
17
  }
18
18
  static useNew() {
19
- return useRef(new NotificationController()).current;
19
+ return useStatic(() => new NotificationController());
20
20
  }
21
21
  useNotifications() {
22
22
  return useSelector(() => Array.from(this.notificationsData.values()));
@@ -1 +1 @@
1
- {"version":3,"file":"NotificationController.mjs","sources":["../../../../src/components/NotificationProvider/NotificationController.ts"],"sourcesContent":["import type { ReactElement } from \"react\";\nimport { useRef } from \"react\";\nimport useSelector from \"@/lib/mobx/useSelector\";\nimport { action, makeObservable, observable } from \"mobx\";\nimport Timer from \"@/lib/timer/Timer\";\nimport type { NotificationProps } from \"@/components/Notification\";\n\ninterface NotificationMetaData {\n readonly id: number;\n readonly createdAt: number;\n readonly autoCloseTimer: Timer;\n}\n\nexport interface NotificationData {\n readonly element: ReactElement<NotificationProps>;\n readonly meta: NotificationMetaData;\n}\n\nexport class NotificationController {\n public readonly notificationsData = new Map<number, NotificationData>();\n private id = 0;\n\n public constructor() {\n makeObservable(this, {\n notificationsData: observable.shallow,\n add: action.bound,\n remove: action.bound,\n });\n }\n\n public static useNew(): NotificationController {\n return useRef(new NotificationController()).current;\n }\n\n public useNotifications(): NotificationData[] {\n return useSelector(() => Array.from(this.notificationsData.values()));\n }\n\n public add(notification: ReactElement<NotificationProps>): void {\n const id = this.id++;\n\n const meta: NotificationMetaData = {\n id,\n createdAt: Date.now(),\n autoCloseTimer: new Timer(),\n };\n\n this.notificationsData.set(id, {\n element: notification,\n meta,\n });\n\n if (notification.props.autoClose) {\n meta.autoCloseTimer.start({ seconds: 10 }, () => {\n this.remove(id);\n });\n }\n }\n\n public remove(id: number): void {\n this.notificationsData.delete(id);\n }\n}\n\nexport default NotificationController;\n"],"names":[],"mappings":";;;;;AAkBO,MAAM,sBAAuB,CAAA;AAAA,EAClB,iBAAA,uBAAwB,GAA8B,EAAA;AAAA,EAC9D,EAAK,GAAA,CAAA;AAAA,EAEN,WAAc,GAAA;AACnB,IAAA,cAAA,CAAe,IAAM,EAAA;AAAA,MACnB,mBAAmB,UAAW,CAAA,OAAA;AAAA,MAC9B,KAAK,MAAO,CAAA,KAAA;AAAA,MACZ,QAAQ,MAAO,CAAA;AAAA,KAChB,CAAA;AAAA;AACH,EAEA,OAAc,MAAiC,GAAA;AAC7C,IAAA,OAAO,MAAO,CAAA,IAAI,sBAAuB,EAAC,CAAE,CAAA,OAAA;AAAA;AAC9C,EAEO,gBAAuC,GAAA;AAC5C,IAAO,OAAA,WAAA,CAAY,MAAM,KAAM,CAAA,IAAA,CAAK,KAAK,iBAAkB,CAAA,MAAA,EAAQ,CAAC,CAAA;AAAA;AACtE,EAEO,IAAI,YAAqD,EAAA;AAC9D,IAAA,MAAM,KAAK,IAAK,CAAA,EAAA,EAAA;AAEhB,IAAA,MAAM,IAA6B,GAAA;AAAA,MACjC,EAAA;AAAA,MACA,SAAA,EAAW,KAAK,GAAI,EAAA;AAAA,MACpB,cAAA,EAAgB,IAAI,KAAM;AAAA,KAC5B;AAEA,IAAK,IAAA,CAAA,iBAAA,CAAkB,IAAI,EAAI,EAAA;AAAA,MAC7B,OAAS,EAAA,YAAA;AAAA,MACT;AAAA,KACD,CAAA;AAED,IAAI,IAAA,YAAA,CAAa,MAAM,SAAW,EAAA;AAChC,MAAA,IAAA,CAAK,eAAe,KAAM,CAAA,EAAE,OAAS,EAAA,EAAA,IAAM,MAAM;AAC/C,QAAA,IAAA,CAAK,OAAO,EAAE,CAAA;AAAA,OACf,CAAA;AAAA;AACH;AACF,EAEO,OAAO,EAAkB,EAAA;AAC9B,IAAK,IAAA,CAAA,iBAAA,CAAkB,OAAO,EAAE,CAAA;AAAA;AAEpC;;;;"}
1
+ {"version":3,"file":"NotificationController.mjs","sources":["../../../../src/components/NotificationProvider/NotificationController.ts"],"sourcesContent":["import type { ReactElement } from \"react\";\nimport useSelector from \"@/lib/mobx/useSelector\";\nimport { action, makeObservable, observable } from \"mobx\";\nimport Timer from \"@/lib/timer/Timer\";\nimport type { NotificationProps } from \"@/components/Notification\";\nimport { useStatic } from \"@/lib/hooks/useStatic\";\n\ninterface NotificationMetaData {\n readonly id: number;\n readonly createdAt: number;\n readonly autoCloseTimer: Timer;\n}\n\nexport interface NotificationData {\n readonly element: ReactElement<NotificationProps>;\n readonly meta: NotificationMetaData;\n}\n\nexport class NotificationController {\n public readonly notificationsData = new Map<number, NotificationData>();\n private id = 0;\n\n public constructor() {\n makeObservable(this, {\n notificationsData: observable.shallow,\n add: action.bound,\n remove: action.bound,\n });\n }\n\n public static useNew(): NotificationController {\n return useStatic(() => new NotificationController());\n }\n\n public useNotifications(): NotificationData[] {\n return useSelector(() => Array.from(this.notificationsData.values()));\n }\n\n public add(notification: ReactElement<NotificationProps>): void {\n const id = this.id++;\n\n const meta: NotificationMetaData = {\n id,\n createdAt: Date.now(),\n autoCloseTimer: new Timer(),\n };\n\n this.notificationsData.set(id, {\n element: notification,\n meta,\n });\n\n if (notification.props.autoClose) {\n meta.autoCloseTimer.start({ seconds: 10 }, () => {\n this.remove(id);\n });\n }\n }\n\n public remove(id: number): void {\n this.notificationsData.delete(id);\n }\n}\n\nexport default NotificationController;\n"],"names":[],"mappings":";;;;;AAkBO,MAAM,sBAAuB,CAAA;AAAA,EAClB,iBAAA,uBAAwB,GAA8B,EAAA;AAAA,EAC9D,EAAK,GAAA,CAAA;AAAA,EAEN,WAAc,GAAA;AACnB,IAAA,cAAA,CAAe,IAAM,EAAA;AAAA,MACnB,mBAAmB,UAAW,CAAA,OAAA;AAAA,MAC9B,KAAK,MAAO,CAAA,KAAA;AAAA,MACZ,QAAQ,MAAO,CAAA;AAAA,KAChB,CAAA;AAAA;AACH,EAEA,OAAc,MAAiC,GAAA;AAC7C,IAAA,OAAO,SAAU,CAAA,MAAM,IAAI,sBAAA,EAAwB,CAAA;AAAA;AACrD,EAEO,gBAAuC,GAAA;AAC5C,IAAO,OAAA,WAAA,CAAY,MAAM,KAAM,CAAA,IAAA,CAAK,KAAK,iBAAkB,CAAA,MAAA,EAAQ,CAAC,CAAA;AAAA;AACtE,EAEO,IAAI,YAAqD,EAAA;AAC9D,IAAA,MAAM,KAAK,IAAK,CAAA,EAAA,EAAA;AAEhB,IAAA,MAAM,IAA6B,GAAA;AAAA,MACjC,EAAA;AAAA,MACA,SAAA,EAAW,KAAK,GAAI,EAAA;AAAA,MACpB,cAAA,EAAgB,IAAI,KAAM;AAAA,KAC5B;AAEA,IAAK,IAAA,CAAA,iBAAA,CAAkB,IAAI,EAAI,EAAA;AAAA,MAC7B,OAAS,EAAA,YAAA;AAAA,MACT;AAAA,KACD,CAAA;AAED,IAAI,IAAA,YAAA,CAAa,MAAM,SAAW,EAAA;AAChC,MAAA,IAAA,CAAK,eAAe,KAAM,CAAA,EAAE,OAAS,EAAA,EAAA,IAAM,MAAM;AAC/C,QAAA,IAAA,CAAK,OAAO,EAAE,CAAA;AAAA,OACf,CAAA;AAAA;AACH;AACF,EAEO,OAAO,EAAkB,EAAA;AAC9B,IAAK,IAAA,CAAA,iBAAA,CAAkB,OAAO,EAAE,CAAA;AAAA;AAEpC;;;;"}
@@ -1,16 +1,8 @@
1
1
  "use client"
2
2
  /* */
3
3
  const option = "flow--option";
4
- const icon = "flow--option--icon";
5
- const controlIcon = "flow--option--control-icon";
6
- const avatar = "flow--option--avatar";
7
4
  const styles = {
8
- option: option,
9
- "switch": "flow--option--switch",
10
- icon: icon,
11
- controlIcon: controlIcon,
12
- avatar: avatar
13
- };
5
+ option: option};
14
6
 
15
- export { avatar, controlIcon, styles as default, icon, option };
7
+ export { styles as default, option };
16
8
  //# sourceMappingURL=Option.module.scss.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Option.module.scss.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Option.module.scss.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -2,9 +2,7 @@
2
2
  /* */
3
3
  const overlay = "flow--overlay";
4
4
  const styles = {
5
- overlay: overlay,
6
- "overlay-fade": "flow--overlay--overlay-fade"
7
- };
5
+ overlay: overlay};
8
6
 
9
7
  export { styles as default, overlay };
10
8
  //# sourceMappingURL=Overlay.module.scss.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Overlay.module.scss.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
1
+ {"version":3,"file":"Overlay.module.scss.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -27,7 +27,7 @@ const ProgressBar = (props) => {
27
27
  );
28
28
  const stringFormatter = useLocalizedStringFormatter(locales);
29
29
  const formatter = useNumberFormatter(props.formatOptions);
30
- const maxValueText = showMaxValue && props.maxValue ? formatter.format(props.maxValue) : undefined;
30
+ const maxValueText = showMaxValue && props.maxValue ? formatter.format(props.maxValue) : void 0;
31
31
  const propsContext = {
32
32
  Label: {
33
33
  className: styles.label,
@@ -1 +1 @@
1
- {"version":3,"file":"ProgressBar.mjs","sources":["../../../../src/components/ProgressBar/ProgressBar.tsx"],"sourcesContent":["import * as Aria from \"react-aria-components\";\nimport type { FC, PropsWithChildren } from \"react\";\nimport React from \"react\";\nimport styles from \"./ProgressBar.module.scss\";\nimport clsx from \"clsx\";\nimport { useLocalizedStringFormatter, useNumberFormatter } from \"react-aria\";\nimport type { PropsWithStatus } from \"@/lib/types/props\";\nimport type { PropsContext } from \"@/lib/propsContext\";\nimport { PropsContextProvider } from \"@/lib/propsContext\";\nimport locales from \"./locales/*.locale.json\";\n\nexport interface ProgressBarProps\n extends PropsWithChildren<Omit<Aria.ProgressBarProps, \"children\">>,\n PropsWithStatus {\n /** Whether the max value should be displayed. */\n showMaxValue?: boolean;\n /** The size variant of the progress bar @default \"m\" */\n size?: \"s\" | \"m\";\n}\n\n/** @flr-generate all */\nexport const ProgressBar: FC<ProgressBarProps> = (props) => {\n const {\n children,\n className,\n status = \"info\",\n showMaxValue,\n size = \"m\",\n ...rest\n } = props;\n\n const rootClassName = clsx(\n className,\n styles.progressBar,\n styles[`size-${size}`],\n styles[status],\n );\n\n const stringFormatter = useLocalizedStringFormatter(locales);\n\n const formatter = useNumberFormatter(props.formatOptions);\n\n const maxValueText =\n showMaxValue && props.maxValue\n ? formatter.format(props.maxValue)\n : undefined;\n\n const propsContext: PropsContext = {\n Label: {\n className: styles.label,\n unstyled: true,\n },\n };\n\n return (\n <Aria.ProgressBar className={rootClassName} {...rest}>\n {({ percentage, valueText }) => (\n <PropsContextProvider props={propsContext}>\n {children}\n <span className={styles.value}>\n {maxValueText\n ? `${valueText} ${stringFormatter.format(\"progressBar.of\")} ${maxValueText}`\n : valueText}\n </span>\n <div className={styles.bar}>\n <div className={styles.fill} style={{ width: percentage + \"%\" }} />\n </div>\n </PropsContextProvider>\n )}\n </Aria.ProgressBar>\n );\n};\n\nexport default ProgressBar;\n"],"names":[],"mappings":";;;;;;;;;;AAqBa,MAAA,WAAA,GAAoC,CAAC,KAAU,KAAA;AAC1D,EAAM,MAAA;AAAA,IACJ,QAAA;AAAA,IACA,SAAA;AAAA,IACA,MAAS,GAAA,MAAA;AAAA,IACT,YAAA;AAAA,IACA,IAAO,GAAA,GAAA;AAAA,IACP,GAAG;AAAA,GACD,GAAA,KAAA;AAEJ,EAAA,MAAM,aAAgB,GAAA,IAAA;AAAA,IACpB,SAAA;AAAA,IACA,MAAO,CAAA,WAAA;AAAA,IACP,MAAA,CAAO,CAAQ,KAAA,EAAA,IAAI,CAAE,CAAA,CAAA;AAAA,IACrB,OAAO,MAAM;AAAA,GACf;AAEA,EAAM,MAAA,eAAA,GAAkB,4BAA4B,OAAO,CAAA;AAE3D,EAAM,MAAA,SAAA,GAAY,kBAAmB,CAAA,KAAA,CAAM,aAAa,CAAA;AAExD,EAAM,MAAA,YAAA,GACJ,gBAAgB,KAAM,CAAA,QAAA,GAClB,UAAU,MAAO,CAAA,KAAA,CAAM,QAAQ,CAC/B,GAAA,SAAA;AAEN,EAAA,MAAM,YAA6B,GAAA;AAAA,IACjC,KAAO,EAAA;AAAA,MACL,WAAW,MAAO,CAAA,KAAA;AAAA,MAClB,QAAU,EAAA;AAAA;AACZ,GACF;AAEA,EAAA,2BACG,IAAK,CAAA,WAAA,EAAL,EAAiB,SAAA,EAAW,eAAgB,GAAG,IAAA,EAC7C,QAAC,EAAA,CAAA,EAAE,YAAY,SAAU,EAAA,qBACvB,IAAA,CAAA,oBAAA,EAAA,EAAqB,OAAO,YAC1B,EAAA,QAAA,EAAA;AAAA,IAAA,QAAA;AAAA,wBACA,MAAK,EAAA,EAAA,SAAA,EAAW,MAAO,CAAA,KAAA,EACrB,yBACG,CAAG,EAAA,SAAS,CAAI,CAAA,EAAA,eAAA,CAAgB,OAAO,gBAAgB,CAAC,CAAI,CAAA,EAAA,YAAY,KACxE,SACN,EAAA,CAAA;AAAA,wBACC,KAAI,EAAA,EAAA,SAAA,EAAW,MAAO,CAAA,GAAA,EACrB,8BAAC,KAAI,EAAA,EAAA,SAAA,EAAW,MAAO,CAAA,IAAA,EAAM,OAAO,EAAE,KAAA,EAAO,UAAa,GAAA,GAAA,IAAO,CACnE,EAAA;AAAA,GAAA,EACF,CAEJ,EAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"ProgressBar.mjs","sources":["../../../../src/components/ProgressBar/ProgressBar.tsx"],"sourcesContent":["import * as Aria from \"react-aria-components\";\nimport type { FC, PropsWithChildren } from \"react\";\nimport React from \"react\";\nimport styles from \"./ProgressBar.module.scss\";\nimport clsx from \"clsx\";\nimport { useLocalizedStringFormatter, useNumberFormatter } from \"react-aria\";\nimport type { PropsWithStatus } from \"@/lib/types/props\";\nimport type { PropsContext } from \"@/lib/propsContext\";\nimport { PropsContextProvider } from \"@/lib/propsContext\";\nimport locales from \"./locales/*.locale.json\";\n\nexport interface ProgressBarProps\n extends PropsWithChildren<Omit<Aria.ProgressBarProps, \"children\">>,\n PropsWithStatus {\n /** Whether the max value should be displayed. */\n showMaxValue?: boolean;\n /** The size variant of the progress bar @default \"m\" */\n size?: \"s\" | \"m\";\n}\n\n/** @flr-generate all */\nexport const ProgressBar: FC<ProgressBarProps> = (props) => {\n const {\n children,\n className,\n status = \"info\",\n showMaxValue,\n size = \"m\",\n ...rest\n } = props;\n\n const rootClassName = clsx(\n className,\n styles.progressBar,\n styles[`size-${size}`],\n styles[status],\n );\n\n const stringFormatter = useLocalizedStringFormatter(locales);\n\n const formatter = useNumberFormatter(props.formatOptions);\n\n const maxValueText =\n showMaxValue && props.maxValue\n ? formatter.format(props.maxValue)\n : undefined;\n\n const propsContext: PropsContext = {\n Label: {\n className: styles.label,\n unstyled: true,\n },\n };\n\n return (\n <Aria.ProgressBar className={rootClassName} {...rest}>\n {({ percentage, valueText }) => (\n <PropsContextProvider props={propsContext}>\n {children}\n <span className={styles.value}>\n {maxValueText\n ? `${valueText} ${stringFormatter.format(\"progressBar.of\")} ${maxValueText}`\n : valueText}\n </span>\n <div className={styles.bar}>\n <div className={styles.fill} style={{ width: percentage + \"%\" }} />\n </div>\n </PropsContextProvider>\n )}\n </Aria.ProgressBar>\n );\n};\n\nexport default ProgressBar;\n"],"names":[],"mappings":";;;;;;;;;;AAqBa,MAAA,WAAA,GAAoC,CAAC,KAAU,KAAA;AAC1D,EAAM,MAAA;AAAA,IACJ,QAAA;AAAA,IACA,SAAA;AAAA,IACA,MAAS,GAAA,MAAA;AAAA,IACT,YAAA;AAAA,IACA,IAAO,GAAA,GAAA;AAAA,IACP,GAAG;AAAA,GACD,GAAA,KAAA;AAEJ,EAAA,MAAM,aAAgB,GAAA,IAAA;AAAA,IACpB,SAAA;AAAA,IACA,MAAO,CAAA,WAAA;AAAA,IACP,MAAA,CAAO,CAAQ,KAAA,EAAA,IAAI,CAAE,CAAA,CAAA;AAAA,IACrB,OAAO,MAAM;AAAA,GACf;AAEA,EAAM,MAAA,eAAA,GAAkB,4BAA4B,OAAO,CAAA;AAE3D,EAAM,MAAA,SAAA,GAAY,kBAAmB,CAAA,KAAA,CAAM,aAAa,CAAA;AAExD,EAAM,MAAA,YAAA,GACJ,gBAAgB,KAAM,CAAA,QAAA,GAClB,UAAU,MAAO,CAAA,KAAA,CAAM,QAAQ,CAC/B,GAAA,MAAA;AAEN,EAAA,MAAM,YAA6B,GAAA;AAAA,IACjC,KAAO,EAAA;AAAA,MACL,WAAW,MAAO,CAAA,KAAA;AAAA,MAClB,QAAU,EAAA;AAAA;AACZ,GACF;AAEA,EAAA,2BACG,IAAK,CAAA,WAAA,EAAL,EAAiB,SAAA,EAAW,eAAgB,GAAG,IAAA,EAC7C,QAAC,EAAA,CAAA,EAAE,YAAY,SAAU,EAAA,qBACvB,IAAA,CAAA,oBAAA,EAAA,EAAqB,OAAO,YAC1B,EAAA,QAAA,EAAA;AAAA,IAAA,QAAA;AAAA,wBACA,MAAK,EAAA,EAAA,SAAA,EAAW,MAAO,CAAA,KAAA,EACrB,yBACG,CAAG,EAAA,SAAS,CAAI,CAAA,EAAA,eAAA,CAAgB,OAAO,gBAAgB,CAAC,CAAI,CAAA,EAAA,YAAY,KACxE,SACN,EAAA,CAAA;AAAA,wBACC,KAAI,EAAA,EAAA,SAAA,EAAW,MAAO,CAAA,GAAA,EACrB,8BAAC,KAAI,EAAA,EAAA,SAAA,EAAW,MAAO,CAAA,IAAA,EAAM,OAAO,EAAE,KAAA,EAAO,UAAa,GAAA,GAAA,IAAO,CACnE,EAAA;AAAA,GAAA,EACF,CAEJ,EAAA,CAAA;AAEJ;;;;"}
@@ -6,7 +6,7 @@ import 'mobx';
6
6
  import '@mittwald/react-use-promise';
7
7
  import 'remeda';
8
8
 
9
- const context = createContext(undefined);
9
+ const context = createContext(void 0);
10
10
  const useSettings = () => useContext(context);
11
11
 
12
12
  export { useSettings };
@@ -1 +1 @@
1
- {"version":3,"file":"SettingsProvider.mjs","sources":["../../../../src/components/SettingsProvider/SettingsProvider.tsx"],"sourcesContent":["import type { FC, PropsWithChildren } from \"react\";\nimport React, {\n createContext,\n useContext,\n useEffect,\n useMemo,\n useRef,\n} from \"react\";\nimport type { SupportedSettingsBackend } from \"@/components/SettingsProvider/backends/types\";\nimport { autorun } from \"mobx\";\nimport { getAsyncResource } from \"@mittwald/react-use-promise\";\nimport { SettingsStore } from \"@/components/SettingsProvider/models/SettingsStore\";\nimport { settingsBackendFactory } from \"@/components/SettingsProvider/backends/settingsBackendFactory\";\n\ntype Props = PropsWithChildren &\n SupportedSettingsBackend & {\n id?: string;\n };\n\nconst context = createContext<SettingsStore | undefined>(undefined);\n\nexport const useSettings = () => useContext(context);\n\nexport const SettingsProvider: FC<Props> = (props) => {\n const { children, id, ...storeShape } = props;\n const backend = settingsBackendFactory(storeShape);\n\n const storedSettingsResource = getAsyncResource(() => backend.load(), [], {\n loaderId: id,\n });\n const storedSettings = storedSettingsResource.use();\n const storingPromise = useRef(Promise.resolve());\n\n const settingsStore = useMemo(\n () => SettingsStore.fromJson(storedSettings),\n [id],\n );\n\n const watchAndStoreSettings = () => {\n const json = settingsStore.asJson;\n storingPromise.current = storingPromise.current.then(async () => {\n await backend.store(json);\n storedSettingsResource.refresh();\n });\n };\n\n useEffect(() => autorun(watchAndStoreSettings), [id]);\n\n return <context.Provider value={settingsStore}>{children}</context.Provider>;\n};\n"],"names":[],"mappings":";;;;;;AAmBA,MAAM,OAAA,GAAU,cAAyC,SAAS,CAAA;AAErD,MAAA,WAAA,GAAc,MAAM,UAAA,CAAW,OAAO;;;;"}
1
+ {"version":3,"file":"SettingsProvider.mjs","sources":["../../../../src/components/SettingsProvider/SettingsProvider.tsx"],"sourcesContent":["import type { FC, PropsWithChildren } from \"react\";\nimport React, {\n createContext,\n useContext,\n useEffect,\n useMemo,\n useRef,\n} from \"react\";\nimport type { SupportedSettingsBackend } from \"@/components/SettingsProvider/backends/types\";\nimport { autorun } from \"mobx\";\nimport { getAsyncResource } from \"@mittwald/react-use-promise\";\nimport { SettingsStore } from \"@/components/SettingsProvider/models/SettingsStore\";\nimport { settingsBackendFactory } from \"@/components/SettingsProvider/backends/settingsBackendFactory\";\n\ntype Props = PropsWithChildren &\n SupportedSettingsBackend & {\n id?: string;\n };\n\nconst context = createContext<SettingsStore | undefined>(undefined);\n\nexport const useSettings = () => useContext(context);\n\nexport const SettingsProvider: FC<Props> = (props) => {\n const { children, id, ...storeShape } = props;\n const backend = settingsBackendFactory(storeShape);\n\n const storedSettingsResource = getAsyncResource(() => backend.load(), [], {\n loaderId: id,\n });\n const storedSettings = storedSettingsResource.use();\n const storingPromise = useRef(Promise.resolve());\n\n const settingsStore = useMemo(\n () => SettingsStore.fromJson(storedSettings),\n [id],\n );\n\n const watchAndStoreSettings = () => {\n const json = settingsStore.asJson;\n storingPromise.current = storingPromise.current.then(async () => {\n await backend.store(json);\n storedSettingsResource.refresh();\n });\n };\n\n useEffect(() => autorun(watchAndStoreSettings), [id]);\n\n return <context.Provider value={settingsStore}>{children}</context.Provider>;\n};\n"],"names":[],"mappings":";;;;;;AAmBA,MAAM,OAAA,GAAU,cAAyC,MAAS,CAAA;AAErD,MAAA,WAAA,GAAc,MAAM,UAAA,CAAW,OAAO;;;;"}
@@ -1,11 +1,8 @@
1
1
  "use client"
2
2
  /* */
3
3
  const skeleton = "flow--skeleton";
4
- const shimmer = "flow--skeleton--shimmer";
5
4
  const styles = {
6
- skeleton: skeleton,
7
- shimmer: shimmer
8
- };
5
+ skeleton: skeleton};
9
6
 
10
- export { styles as default, shimmer, skeleton };
7
+ export { styles as default, skeleton };
11
8
  //# sourceMappingURL=Skeleton.module.scss.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Skeleton.module.scss.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}
1
+ {"version":3,"file":"Skeleton.module.scss.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -1,11 +1,8 @@
1
1
  "use client"
2
2
  /* */
3
3
  const skeletonText = "flow--skeleton-text";
4
- const shimmer = "flow--skeleton-text--shimmer";
5
4
  const styles = {
6
- skeletonText: skeletonText,
7
- shimmer: shimmer
8
- };
5
+ skeletonText: skeletonText};
9
6
 
10
- export { styles as default, shimmer, skeletonText };
7
+ export { styles as default, skeletonText };
11
8
  //# sourceMappingURL=SkeletonText.module.scss.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"SkeletonText.module.scss.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}
1
+ {"version":3,"file":"SkeletonText.module.scss.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -1,11 +1,8 @@
1
1
  "use client"
2
2
  /* */
3
3
  const tabs = "flow--tabs";
4
- const list = "flow--tabs--list";
5
4
  const styles = {
6
- tabs: tabs,
7
- list: list
8
- };
5
+ tabs: tabs};
9
6
 
10
- export { styles as default, list, tabs };
7
+ export { styles as default, tabs };
11
8
  //# sourceMappingURL=Tabs.module.scss.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tabs.module.scss.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}
1
+ {"version":3,"file":"Tabs.module.scss.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -52,7 +52,7 @@ const TabList = (props) => {
52
52
  ContextMenu,
53
53
  {
54
54
  disabledKeys,
55
- selectedKeys: selection ? [selection] : undefined,
55
+ selectedKeys: selection ? [selection] : void 0,
56
56
  selectionMode: "navigation",
57
57
  onAction: (key) => handleContextMenuSelectionChange(key),
58
58
  children: /* @__PURE__ */ jsx(TunnelExit, { id: "ContextMenuItems" })
@@ -1 +1 @@
1
- {"version":3,"file":"TabList.mjs","sources":["../../../../../../src/components/Tabs/components/TabList/TabList.tsx"],"sourcesContent":["import type { FC } from \"react\";\nimport React, { useId } from \"react\";\nimport * as Aria from \"react-aria-components\";\nimport styles from \"./TabList.module.scss\";\nimport { TunnelExit } from \"@mittwald/react-tunnel\";\nimport { useObserveOverflow } from \"@/lib/hooks/dom/useObserveOverflow\";\nimport { ContextMenu, ContextMenuTrigger } from \"@/components/ContextMenu\";\nimport { Button } from \"@/components/Button\";\nimport { IconContextMenu } from \"@/components/Icon/components/icons\";\nimport clsx from \"clsx\";\nimport TabTitleCollapsed from \"@/components/Tabs/components/TabTitle/TabTitleCollapsed\";\n\ninterface Props {\n selection: Aria.Key | undefined;\n onContextMenuSelectionChange: (key: Aria.Key) => void;\n disabledKeys?: Iterable<Aria.Key>;\n}\n\nexport const TabList: FC<Props> = (props) => {\n const { selection, disabledKeys, onContextMenuSelectionChange } = props;\n\n const titleCollapsedElementId = useId();\n const overflowObserver = useObserveOverflow();\n const isCollapsed = overflowObserver.isOverflowing;\n const rootClassName = clsx(styles.tabList, isCollapsed && styles.collapsed);\n\n const handleContextMenuSelectionChange = (key: Aria.Key) => {\n onContextMenuSelectionChange(key);\n };\n\n const regularTabTitles = (\n <Aria.TabList className={styles.titles} ref={overflowObserver.ref}>\n <TunnelExit id=\"Titles\" />\n </Aria.TabList>\n );\n\n const singleTabTitleWhenCollapsed = isCollapsed && (\n <TabTitleCollapsed id={titleCollapsedElementId} />\n );\n\n const contextMenuWhenCollapsed = isCollapsed && (\n <ContextMenuTrigger>\n <Button\n variant=\"soft\"\n className={styles.contextMenuButton}\n color=\"secondary\"\n aria-labelledby={titleCollapsedElementId}\n >\n <IconContextMenu />\n </Button>\n\n <ContextMenu\n disabledKeys={disabledKeys}\n selectedKeys={selection ? [selection] : undefined}\n selectionMode=\"navigation\"\n onAction={(key) => handleContextMenuSelectionChange(key)}\n >\n <TunnelExit id=\"ContextMenuItems\" />\n </ContextMenu>\n </ContextMenuTrigger>\n );\n\n return (\n <div className={rootClassName}>\n {regularTabTitles}\n {singleTabTitleWhenCollapsed}\n {contextMenuWhenCollapsed}\n </div>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAkBa,MAAA,OAAA,GAAqB,CAAC,KAAU,KAAA;AAC3C,EAAA,MAAM,EAAE,SAAA,EAAW,YAAc,EAAA,4BAAA,EAAiC,GAAA,KAAA;AAElE,EAAA,MAAM,0BAA0B,KAAM,EAAA;AACtC,EAAA,MAAM,mBAAmB,kBAAmB,EAAA;AAC5C,EAAA,MAAM,cAAc,gBAAiB,CAAA,aAAA;AACrC,EAAA,MAAM,gBAAgB,IAAK,CAAA,MAAA,CAAO,OAAS,EAAA,WAAA,IAAe,OAAO,SAAS,CAAA;AAE1E,EAAM,MAAA,gCAAA,GAAmC,CAAC,GAAkB,KAAA;AAC1D,IAAA,4BAAA,CAA6B,GAAG,CAAA;AAAA,GAClC;AAEA,EAAA,MAAM,gBACJ,mBAAA,GAAA,CAAC,IAAK,CAAA,OAAA,EAAL,EAAa,SAAW,EAAA,MAAA,CAAO,MAAQ,EAAA,GAAA,EAAK,iBAAiB,GAC5D,EAAA,QAAA,kBAAA,GAAA,CAAC,UAAW,EAAA,EAAA,EAAA,EAAG,UAAS,CAC1B,EAAA,CAAA;AAGF,EAAA,MAAM,2BAA8B,GAAA,WAAA,oBACjC,GAAA,CAAA,iBAAA,EAAA,EAAkB,IAAI,uBAAyB,EAAA,CAAA;AAGlD,EAAM,MAAA,wBAAA,GAA2B,WAC/B,oBAAA,IAAA,CAAC,kBACC,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,OAAQ,EAAA,MAAA;AAAA,QACR,WAAW,MAAO,CAAA,iBAAA;AAAA,QAClB,KAAM,EAAA,WAAA;AAAA,QACN,iBAAiB,EAAA,uBAAA;AAAA,QAEjB,8BAAC,eAAgB,EAAA,EAAA;AAAA;AAAA,KACnB;AAAA,oBAEA,GAAA;AAAA,MAAC,WAAA;AAAA,MAAA;AAAA,QACC,YAAA;AAAA,QACA,YAAc,EAAA,SAAA,GAAY,CAAC,SAAS,CAAI,GAAA,SAAA;AAAA,QACxC,aAAc,EAAA,YAAA;AAAA,QACd,QAAU,EAAA,CAAC,GAAQ,KAAA,gCAAA,CAAiC,GAAG,CAAA;AAAA,QAEvD,QAAA,kBAAA,GAAA,CAAC,UAAW,EAAA,EAAA,EAAA,EAAG,kBAAmB,EAAA;AAAA;AAAA;AACpC,GACF,EAAA,CAAA;AAGF,EACE,uBAAA,IAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAW,aACb,EAAA,QAAA,EAAA;AAAA,IAAA,gBAAA;AAAA,IACA,2BAAA;AAAA,IACA;AAAA,GACH,EAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"TabList.mjs","sources":["../../../../../../src/components/Tabs/components/TabList/TabList.tsx"],"sourcesContent":["import type { FC } from \"react\";\nimport React, { useId } from \"react\";\nimport * as Aria from \"react-aria-components\";\nimport styles from \"./TabList.module.scss\";\nimport { TunnelExit } from \"@mittwald/react-tunnel\";\nimport { useObserveOverflow } from \"@/lib/hooks/dom/useObserveOverflow\";\nimport { ContextMenu, ContextMenuTrigger } from \"@/components/ContextMenu\";\nimport { Button } from \"@/components/Button\";\nimport { IconContextMenu } from \"@/components/Icon/components/icons\";\nimport clsx from \"clsx\";\nimport TabTitleCollapsed from \"@/components/Tabs/components/TabTitle/TabTitleCollapsed\";\n\ninterface Props {\n selection: Aria.Key | undefined;\n onContextMenuSelectionChange: (key: Aria.Key) => void;\n disabledKeys?: Iterable<Aria.Key>;\n}\n\nexport const TabList: FC<Props> = (props) => {\n const { selection, disabledKeys, onContextMenuSelectionChange } = props;\n\n const titleCollapsedElementId = useId();\n const overflowObserver = useObserveOverflow();\n const isCollapsed = overflowObserver.isOverflowing;\n const rootClassName = clsx(styles.tabList, isCollapsed && styles.collapsed);\n\n const handleContextMenuSelectionChange = (key: Aria.Key) => {\n onContextMenuSelectionChange(key);\n };\n\n const regularTabTitles = (\n <Aria.TabList className={styles.titles} ref={overflowObserver.ref}>\n <TunnelExit id=\"Titles\" />\n </Aria.TabList>\n );\n\n const singleTabTitleWhenCollapsed = isCollapsed && (\n <TabTitleCollapsed id={titleCollapsedElementId} />\n );\n\n const contextMenuWhenCollapsed = isCollapsed && (\n <ContextMenuTrigger>\n <Button\n variant=\"soft\"\n className={styles.contextMenuButton}\n color=\"secondary\"\n aria-labelledby={titleCollapsedElementId}\n >\n <IconContextMenu />\n </Button>\n\n <ContextMenu\n disabledKeys={disabledKeys}\n selectedKeys={selection ? [selection] : undefined}\n selectionMode=\"navigation\"\n onAction={(key) => handleContextMenuSelectionChange(key)}\n >\n <TunnelExit id=\"ContextMenuItems\" />\n </ContextMenu>\n </ContextMenuTrigger>\n );\n\n return (\n <div className={rootClassName}>\n {regularTabTitles}\n {singleTabTitleWhenCollapsed}\n {contextMenuWhenCollapsed}\n </div>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAkBa,MAAA,OAAA,GAAqB,CAAC,KAAU,KAAA;AAC3C,EAAA,MAAM,EAAE,SAAA,EAAW,YAAc,EAAA,4BAAA,EAAiC,GAAA,KAAA;AAElE,EAAA,MAAM,0BAA0B,KAAM,EAAA;AACtC,EAAA,MAAM,mBAAmB,kBAAmB,EAAA;AAC5C,EAAA,MAAM,cAAc,gBAAiB,CAAA,aAAA;AACrC,EAAA,MAAM,gBAAgB,IAAK,CAAA,MAAA,CAAO,OAAS,EAAA,WAAA,IAAe,OAAO,SAAS,CAAA;AAE1E,EAAM,MAAA,gCAAA,GAAmC,CAAC,GAAkB,KAAA;AAC1D,IAAA,4BAAA,CAA6B,GAAG,CAAA;AAAA,GAClC;AAEA,EAAA,MAAM,gBACJ,mBAAA,GAAA,CAAC,IAAK,CAAA,OAAA,EAAL,EAAa,SAAW,EAAA,MAAA,CAAO,MAAQ,EAAA,GAAA,EAAK,iBAAiB,GAC5D,EAAA,QAAA,kBAAA,GAAA,CAAC,UAAW,EAAA,EAAA,EAAA,EAAG,UAAS,CAC1B,EAAA,CAAA;AAGF,EAAA,MAAM,2BAA8B,GAAA,WAAA,oBACjC,GAAA,CAAA,iBAAA,EAAA,EAAkB,IAAI,uBAAyB,EAAA,CAAA;AAGlD,EAAM,MAAA,wBAAA,GAA2B,WAC/B,oBAAA,IAAA,CAAC,kBACC,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,OAAQ,EAAA,MAAA;AAAA,QACR,WAAW,MAAO,CAAA,iBAAA;AAAA,QAClB,KAAM,EAAA,WAAA;AAAA,QACN,iBAAiB,EAAA,uBAAA;AAAA,QAEjB,8BAAC,eAAgB,EAAA,EAAA;AAAA;AAAA,KACnB;AAAA,oBAEA,GAAA;AAAA,MAAC,WAAA;AAAA,MAAA;AAAA,QACC,YAAA;AAAA,QACA,YAAc,EAAA,SAAA,GAAY,CAAC,SAAS,CAAI,GAAA,MAAA;AAAA,QACxC,aAAc,EAAA,YAAA;AAAA,QACd,QAAU,EAAA,CAAC,GAAQ,KAAA,gCAAA,CAAiC,GAAG,CAAA;AAAA,QAEvD,QAAA,kBAAA,GAAA,CAAC,UAAW,EAAA,EAAA,EAAA,EAAG,kBAAmB,EAAA;AAAA;AAAA;AACpC,GACF,EAAA,CAAA;AAGF,EACE,uBAAA,IAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAW,aACb,EAAA,QAAA,EAAA;AAAA,IAAA,gBAAA;AAAA,IACA,2BAAA;AAAA,IACA;AAAA,GACH,EAAA,CAAA;AAEJ;;;;"}
@@ -2,12 +2,9 @@
2
2
  /* */
3
3
  const tooltip = "flow--tooltip";
4
4
  const tip = "flow--tooltip--tip";
5
- const slide = "flow--tooltip--slide";
6
5
  const styles = {
7
6
  tooltip: tooltip,
8
- tip: tip,
9
- slide: slide
10
- };
7
+ tip: tip};
11
8
 
12
- export { styles as default, slide, tip, tooltip };
9
+ export { styles as default, tip, tooltip };
13
10
  //# sourceMappingURL=Tooltip.module.scss.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tooltip.module.scss.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;"}
1
+ {"version":3,"file":"Tooltip.module.scss.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
@@ -13,7 +13,7 @@ const ActionStateContextWrapper = (props) => {
13
13
  const { children, isAsyncSubmit } = props;
14
14
  const form = useFormContext().form;
15
15
  const { isSubmitted, isSubmitting, isSubmitSuccessful, errors } = useFormState(form);
16
- const submitErrors = isSubmitted && errors && Object.entries(errors).length > 0 ? errors : undefined;
16
+ const submitErrors = isSubmitted && errors && Object.entries(errors).length > 0 ? errors : void 0;
17
17
  const submitSucceeded = isSubmitted && isSubmitSuccessful;
18
18
  return /* @__PURE__ */ jsx(
19
19
  ActionStateContext,
@@ -1 +1 @@
1
- {"version":3,"file":"SubmitButtonStateProvider.mjs","sources":["../../../../../../src/integrations/react-hook-form/components/ActionGroupWrapper/SubmitButtonStateProvider.tsx"],"sourcesContent":["import type { FC, MutableRefObject, PropsWithChildren } from \"react\";\nimport React from \"react\";\nimport { ActionStateContext } from \"@/components/Action/ActionStateContext\";\nimport { useFormContext } from \"@/integrations/react-hook-form/components/context/formContext\";\nimport { useFormState } from \"react-hook-form\";\nimport type { PropsContext } from \"@/lib/propsContext\";\nimport { dynamic, PropsContextProvider } from \"@/lib/propsContext\";\n\ninterface Props extends PropsWithChildren {\n isAsyncSubmit: MutableRefObject<boolean>;\n}\n\nconst ActionStateContextWrapper: FC<Props> = (props) => {\n const { children, isAsyncSubmit } = props;\n\n const form = useFormContext().form;\n\n const { isSubmitted, isSubmitting, isSubmitSuccessful, errors } =\n useFormState(form);\n\n const submitErrors =\n isSubmitted && errors && Object.entries(errors).length > 0\n ? errors\n : undefined;\n\n const submitSucceeded = isSubmitted && isSubmitSuccessful;\n\n return (\n <ActionStateContext\n isStarted={isSubmitting && isAsyncSubmit.current}\n hasFailedWithError={submitErrors}\n hasSucceeded={submitSucceeded}\n >\n {children}\n </ActionStateContext>\n );\n};\n\nexport const SubmitButtonStateProvider: FC<Props> = (props) => {\n const { children, isAsyncSubmit } = props;\n\n const propsContext: PropsContext = {\n ActionGroup: {\n children: dynamic((p) => (\n <ActionStateContextWrapper isAsyncSubmit={isAsyncSubmit}>\n {p.children}\n </ActionStateContextWrapper>\n )),\n },\n };\n\n return (\n <PropsContextProvider props={propsContext} mergeInParentContext>\n {children}\n </PropsContextProvider>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;AAYA,MAAM,yBAAA,GAAuC,CAAC,KAAU,KAAA;AACtD,EAAM,MAAA,EAAE,QAAU,EAAA,aAAA,EAAkB,GAAA,KAAA;AAEpC,EAAM,MAAA,IAAA,GAAO,gBAAiB,CAAA,IAAA;AAE9B,EAAA,MAAM,EAAE,WAAa,EAAA,YAAA,EAAc,oBAAoB,MAAO,EAAA,GAC5D,aAAa,IAAI,CAAA;AAEnB,EAAM,MAAA,YAAA,GACJ,eAAe,MAAU,IAAA,MAAA,CAAO,QAAQ,MAAM,CAAA,CAAE,MAAS,GAAA,CAAA,GACrD,MACA,GAAA,SAAA;AAEN,EAAA,MAAM,kBAAkB,WAAe,IAAA,kBAAA;AAEvC,EACE,uBAAA,GAAA;AAAA,IAAC,kBAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,gBAAgB,aAAc,CAAA,OAAA;AAAA,MACzC,kBAAoB,EAAA,YAAA;AAAA,MACpB,YAAc,EAAA,eAAA;AAAA,MAEb;AAAA;AAAA,GACH;AAEJ,CAAA;AAEa,MAAA,yBAAA,GAAuC,CAAC,KAAU,KAAA;AAC7D,EAAM,MAAA,EAAE,QAAU,EAAA,aAAA,EAAkB,GAAA,KAAA;AAEpC,EAAA,MAAM,YAA6B,GAAA;AAAA,IACjC,WAAa,EAAA;AAAA,MACX,QAAA,EAAU,QAAQ,CAAC,CAAA,yBAChB,yBAA0B,EAAA,EAAA,aAAA,EACxB,QAAE,EAAA,CAAA,CAAA,QAAA,EACL,CACD;AAAA;AACH,GACF;AAEA,EAAA,2BACG,oBAAqB,EAAA,EAAA,KAAA,EAAO,YAAc,EAAA,oBAAA,EAAoB,MAC5D,QACH,EAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"SubmitButtonStateProvider.mjs","sources":["../../../../../../src/integrations/react-hook-form/components/ActionGroupWrapper/SubmitButtonStateProvider.tsx"],"sourcesContent":["import type { FC, MutableRefObject, PropsWithChildren } from \"react\";\nimport React from \"react\";\nimport { ActionStateContext } from \"@/components/Action/ActionStateContext\";\nimport { useFormContext } from \"@/integrations/react-hook-form/components/context/formContext\";\nimport { useFormState } from \"react-hook-form\";\nimport type { PropsContext } from \"@/lib/propsContext\";\nimport { dynamic, PropsContextProvider } from \"@/lib/propsContext\";\n\ninterface Props extends PropsWithChildren {\n isAsyncSubmit: MutableRefObject<boolean>;\n}\n\nconst ActionStateContextWrapper: FC<Props> = (props) => {\n const { children, isAsyncSubmit } = props;\n\n const form = useFormContext().form;\n\n const { isSubmitted, isSubmitting, isSubmitSuccessful, errors } =\n useFormState(form);\n\n const submitErrors =\n isSubmitted && errors && Object.entries(errors).length > 0\n ? errors\n : undefined;\n\n const submitSucceeded = isSubmitted && isSubmitSuccessful;\n\n return (\n <ActionStateContext\n isStarted={isSubmitting && isAsyncSubmit.current}\n hasFailedWithError={submitErrors}\n hasSucceeded={submitSucceeded}\n >\n {children}\n </ActionStateContext>\n );\n};\n\nexport const SubmitButtonStateProvider: FC<Props> = (props) => {\n const { children, isAsyncSubmit } = props;\n\n const propsContext: PropsContext = {\n ActionGroup: {\n children: dynamic((p) => (\n <ActionStateContextWrapper isAsyncSubmit={isAsyncSubmit}>\n {p.children}\n </ActionStateContextWrapper>\n )),\n },\n };\n\n return (\n <PropsContextProvider props={propsContext} mergeInParentContext>\n {children}\n </PropsContextProvider>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;AAYA,MAAM,yBAAA,GAAuC,CAAC,KAAU,KAAA;AACtD,EAAM,MAAA,EAAE,QAAU,EAAA,aAAA,EAAkB,GAAA,KAAA;AAEpC,EAAM,MAAA,IAAA,GAAO,gBAAiB,CAAA,IAAA;AAE9B,EAAA,MAAM,EAAE,WAAa,EAAA,YAAA,EAAc,oBAAoB,MAAO,EAAA,GAC5D,aAAa,IAAI,CAAA;AAEnB,EAAM,MAAA,YAAA,GACJ,eAAe,MAAU,IAAA,MAAA,CAAO,QAAQ,MAAM,CAAA,CAAE,MAAS,GAAA,CAAA,GACrD,MACA,GAAA,MAAA;AAEN,EAAA,MAAM,kBAAkB,WAAe,IAAA,kBAAA;AAEvC,EACE,uBAAA,GAAA;AAAA,IAAC,kBAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,gBAAgB,aAAc,CAAA,OAAA;AAAA,MACzC,kBAAoB,EAAA,YAAA;AAAA,MACpB,YAAc,EAAA,eAAA;AAAA,MAEb;AAAA;AAAA,GACH;AAEJ,CAAA;AAEa,MAAA,yBAAA,GAAuC,CAAC,KAAU,KAAA;AAC7D,EAAM,MAAA,EAAE,QAAU,EAAA,aAAA,EAAkB,GAAA,KAAA;AAEpC,EAAA,MAAM,YAA6B,GAAA;AAAA,IACjC,WAAa,EAAA;AAAA,MACX,QAAA,EAAU,QAAQ,CAAC,CAAA,yBAChB,yBAA0B,EAAA,EAAA,aAAA,EACxB,QAAE,EAAA,CAAA,CAAA,QAAA,EACL,CACD;AAAA;AACH,GACF;AAEA,EAAA,2BACG,oBAAqB,EAAA,EAAA,KAAA,EAAO,YAAc,EAAA,oBAAA,EAAoB,MAC5D,QACH,EAAA,CAAA;AAEJ;;;;"}
@@ -9,7 +9,7 @@ const AutoFormResetEffect = () => {
9
9
  const { isValid, isSubmitted } = useFormState(form);
10
10
  useEffect(() => {
11
11
  if (isSubmitted && isValid && form) {
12
- form.reset(undefined, {
12
+ form.reset(void 0, {
13
13
  keepIsSubmitted: false,
14
14
  keepIsSubmitSuccessful: false,
15
15
  keepDefaultValues: true,
@@ -1 +1 @@
1
- {"version":3,"file":"AutoFormResetEffect.mjs","sources":["../../../../../../src/integrations/react-hook-form/components/AutoFormResetEffect/AutoFormResetEffect.tsx"],"sourcesContent":["import type { FC } from \"react\";\nimport { useEffect } from \"react\";\nimport { useFormContext } from \"@/integrations/react-hook-form/components/context/formContext\";\nimport { useFormState } from \"react-hook-form\";\n\n/**\n * This effect has its own component to prevent unnecessary re-renders of the\n * entire form when the form state changes (useFormState).\n */\nexport const AutoFormResetEffect: FC = () => {\n const form = useFormContext().form;\n const { isValid, isSubmitted } = useFormState(form);\n\n useEffect(() => {\n if (isSubmitted && isValid && form) {\n form.reset(undefined, {\n keepIsSubmitted: false,\n keepIsSubmitSuccessful: false,\n keepDefaultValues: true,\n keepValues: true,\n keepDirtyValues: true,\n keepIsValid: true,\n keepDirty: true,\n keepErrors: true,\n keepTouched: true,\n keepIsValidating: true,\n keepSubmitCount: true,\n });\n }\n }, [isSubmitted, isValid, form]);\n\n return null;\n};\n"],"names":[],"mappings":";;;;AASO,MAAM,sBAA0B,MAAM;AAC3C,EAAM,MAAA,IAAA,GAAO,gBAAiB,CAAA,IAAA;AAC9B,EAAA,MAAM,EAAE,OAAA,EAAS,WAAY,EAAA,GAAI,aAAa,IAAI,CAAA;AAElD,EAAA,SAAA,CAAU,MAAM;AACd,IAAI,IAAA,WAAA,IAAe,WAAW,IAAM,EAAA;AAClC,MAAA,IAAA,CAAK,MAAM,SAAW,EAAA;AAAA,QACpB,eAAiB,EAAA,KAAA;AAAA,QACjB,sBAAwB,EAAA,KAAA;AAAA,QACxB,iBAAmB,EAAA,IAAA;AAAA,QACnB,UAAY,EAAA,IAAA;AAAA,QACZ,eAAiB,EAAA,IAAA;AAAA,QACjB,WAAa,EAAA,IAAA;AAAA,QACb,SAAW,EAAA,IAAA;AAAA,QACX,UAAY,EAAA,IAAA;AAAA,QACZ,WAAa,EAAA,IAAA;AAAA,QACb,gBAAkB,EAAA,IAAA;AAAA,QAClB,eAAiB,EAAA;AAAA,OAClB,CAAA;AAAA;AACH,GACC,EAAA,CAAC,WAAa,EAAA,OAAA,EAAS,IAAI,CAAC,CAAA;AAE/B,EAAO,OAAA,IAAA;AACT;;;;"}
1
+ {"version":3,"file":"AutoFormResetEffect.mjs","sources":["../../../../../../src/integrations/react-hook-form/components/AutoFormResetEffect/AutoFormResetEffect.tsx"],"sourcesContent":["import type { FC } from \"react\";\nimport { useEffect } from \"react\";\nimport { useFormContext } from \"@/integrations/react-hook-form/components/context/formContext\";\nimport { useFormState } from \"react-hook-form\";\n\n/**\n * This effect has its own component to prevent unnecessary re-renders of the\n * entire form when the form state changes (useFormState).\n */\nexport const AutoFormResetEffect: FC = () => {\n const form = useFormContext().form;\n const { isValid, isSubmitted } = useFormState(form);\n\n useEffect(() => {\n if (isSubmitted && isValid && form) {\n form.reset(undefined, {\n keepIsSubmitted: false,\n keepIsSubmitSuccessful: false,\n keepDefaultValues: true,\n keepValues: true,\n keepDirtyValues: true,\n keepIsValid: true,\n keepDirty: true,\n keepErrors: true,\n keepTouched: true,\n keepIsValidating: true,\n keepSubmitCount: true,\n });\n }\n }, [isSubmitted, isValid, form]);\n\n return null;\n};\n"],"names":[],"mappings":";;;;AASO,MAAM,sBAA0B,MAAM;AAC3C,EAAM,MAAA,IAAA,GAAO,gBAAiB,CAAA,IAAA;AAC9B,EAAA,MAAM,EAAE,OAAA,EAAS,WAAY,EAAA,GAAI,aAAa,IAAI,CAAA;AAElD,EAAA,SAAA,CAAU,MAAM;AACd,IAAI,IAAA,WAAA,IAAe,WAAW,IAAM,EAAA;AAClC,MAAA,IAAA,CAAK,MAAM,MAAW,EAAA;AAAA,QACpB,eAAiB,EAAA,KAAA;AAAA,QACjB,sBAAwB,EAAA,KAAA;AAAA,QACxB,iBAAmB,EAAA,IAAA;AAAA,QACnB,UAAY,EAAA,IAAA;AAAA,QACZ,eAAiB,EAAA,IAAA;AAAA,QACjB,WAAa,EAAA,IAAA;AAAA,QACb,SAAW,EAAA,IAAA;AAAA,QACX,UAAY,EAAA,IAAA;AAAA,QACZ,WAAa,EAAA,IAAA;AAAA,QACb,gBAAkB,EAAA,IAAA;AAAA,QAClB,eAAiB,EAAA;AAAA,OAClB,CAAA;AAAA;AACH,GACC,EAAA,CAAC,WAAa,EAAA,OAAA,EAAS,IAAI,CAAC,CAAA;AAE/B,EAAO,OAAA,IAAA;AACT;;;;"}
@@ -1,10 +1,10 @@
1
1
  "use client"
2
2
  /* */
3
3
  import { jsx, jsxs } from 'react/jsx-runtime';
4
+ import { SubmitButtonStateProvider } from '../ActionGroupWrapper/SubmitButtonStateProvider.mjs';
5
+ import { FormContextProvider } from '../context/formContext.mjs';
4
6
  import { useId, useRef } from 'react';
5
7
  import { FormProvider } from 'react-hook-form';
6
- import { FormContextProvider } from '../context/formContext.mjs';
7
- import { SubmitButtonStateProvider } from '../ActionGroupWrapper/SubmitButtonStateProvider.mjs';
8
8
  import { AutoFormResetEffect } from '../AutoFormResetEffect/AutoFormResetEffect.mjs';
9
9
 
10
10
  const DefaultFormComponent = (p) => /* @__PURE__ */ jsx("form", { ...p });