@mittwald/flow-react-components 0.2.0-alpha.527 → 0.2.0-alpha.528

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.
@@ -72,19 +72,16 @@ class IncrementalLoader {
72
72
  loaderId
73
73
  });
74
74
  }
75
- if ("staticData" in dataSource) {
76
- return useMemo(
77
- () => ({
78
- data: dataSource.staticData,
79
- itemTotalCount: dataSource.staticData.length
80
- }),
81
- [dataSource.staticData]
82
- );
75
+ if ("asyncResourceFactory" in dataSource) {
76
+ return dataSource.asyncResourceFactory(options).use();
83
77
  }
84
- return {
85
- data: [],
86
- itemTotalCount: 0
87
- };
78
+ return useMemo(
79
+ () => ({
80
+ data: [],
81
+ itemTotalCount: 0
82
+ }),
83
+ []
84
+ );
88
85
  };
89
86
  }
90
87
  getLoaderInvocationHooks() {
@@ -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 LoaderInvocationHook,\n} from \"@/components/List/model/loading/types\";\nimport type { AsyncResource } from \"@mittwald/react-use-promise\";\nimport { getAsyncResource, usePromise } 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\";\nimport { useMemo } from \"react\";\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 private getUseData(): (options: DataLoaderOptions<T>) => DataLoaderResult<T> {\n const dataSource = this.dataSource;\n\n return (options: DataLoaderOptions<T>) => {\n if (\"useData\" in dataSource) {\n return dataSource.useData(options);\n }\n\n if (\"asyncLoader\" in dataSource) {\n const asyncLoader = dataSource.asyncLoader;\n const dependencies = dataSource.dependencies;\n const loaderId = dependencies\n ? hash(dependencies).toString()\n : undefined;\n\n return usePromise(asyncLoader, [options], {\n loaderId,\n });\n }\n\n if (\"staticData\" in dataSource) {\n return useMemo(\n () => ({\n data: dataSource.staticData,\n itemTotalCount: dataSource.staticData.length,\n }),\n [dataSource.staticData],\n );\n }\n\n return {\n data: [],\n itemTotalCount: 0,\n };\n };\n }\n\n public getLoaderInvocationHooks(): LoaderInvocationHook[] {\n const batchesCount = times(this.list.batches.getBatchIndex() + 1, (i) => i);\n const useData = this.getUseData();\n\n return batchesCount.map((batchIndex) => ({\n useLoadBatch: () => {\n const loaderOptions = this.getDataLoaderOptions(batchIndex);\n const loaderResult = useData(loaderOptions);\n const { data, itemTotalCount } = loaderResult;\n\n useEffect(() => {\n this.loaderState.setDataBatch(batchIndex, data);\n\n if (itemTotalCount !== undefined) {\n this.list.batches.updateItemTotalCount(itemTotalCount);\n }\n\n this.loaderState.setBatchLoadingState(batchIndex, \"loaded\");\n }, [loaderResult]);\n },\n\n useRenderSuspense: () => {\n useEffect(() => {\n this.loaderState.setBatchLoadingState(batchIndex, \"loading\");\n }, [batchIndex]);\n },\n }));\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 LoaderInvocationHook,\n} from \"@/components/List/model/loading/types\";\nimport type { AsyncResource } from \"@mittwald/react-use-promise\";\nimport { getAsyncResource, usePromise } 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\";\nimport { useMemo } from \"react\";\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 private getUseData(): (options: DataLoaderOptions<T>) => DataLoaderResult<T> {\n const dataSource = this.dataSource;\n\n return (options: DataLoaderOptions<T>) => {\n if (\"useData\" in dataSource) {\n return dataSource.useData(options);\n }\n\n if (\"asyncLoader\" in dataSource) {\n const asyncLoader = dataSource.asyncLoader;\n const dependencies = dataSource.dependencies;\n const loaderId = dependencies\n ? hash(dependencies).toString()\n : undefined;\n\n return usePromise(asyncLoader, [options], {\n loaderId,\n });\n }\n\n if (\"asyncResourceFactory\" in dataSource) {\n return dataSource.asyncResourceFactory(options).use();\n }\n\n return useMemo(\n () => ({\n data: [],\n itemTotalCount: 0,\n }),\n [],\n );\n };\n }\n\n public getLoaderInvocationHooks(): LoaderInvocationHook[] {\n const batchesCount = times(this.list.batches.getBatchIndex() + 1, (i) => i);\n const useData = this.getUseData();\n\n return batchesCount.map((batchIndex) => ({\n useLoadBatch: () => {\n const loaderOptions = this.getDataLoaderOptions(batchIndex);\n const loaderResult = useData(loaderOptions);\n const { data, itemTotalCount } = loaderResult;\n\n useEffect(() => {\n this.loaderState.setDataBatch(batchIndex, data);\n\n if (itemTotalCount !== undefined) {\n this.list.batches.updateItemTotalCount(itemTotalCount);\n }\n\n this.loaderState.setBatchLoadingState(batchIndex, \"loaded\");\n }, [loaderResult]);\n },\n\n useRenderSuspense: () => {\n useEffect(() => {\n this.loaderState.setBatchLoadingState(batchIndex, \"loading\");\n }, [batchIndex]);\n },\n }));\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 +1 @@
1
- {"version":3,"file":"IncrementalLoader.d.ts","sourceRoot":"","sources":["../../../../../../src/components/List/model/loading/IncrementalLoader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,8BAA8B,CAAC;AACrD,OAAO,KAAK,EAIV,sBAAsB,EACtB,oBAAoB,EACrB,MAAM,uCAAuC,CAAC;AAK/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,wDAAwD,CAAC;AAEhG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAKlE,qBAAa,iBAAiB,CAAC,CAAC;IAC9B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAU;IAC/B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgB;IAC3C,SAAgB,aAAa,EAAE,OAAO,CAAC;IACvC,SAAgB,eAAe,EAAE,OAAO,CAAC;IACzC,SAAgB,gBAAgB,EAAE,OAAO,CAAC;IAC1C,SAAgB,WAAW,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAC;IACvD,SAAgB,oBAAoB,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,CAAM;IAE7D,OAAO;WAgCO,MAAM,CAAC,CAAC,EACpB,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EACb,KAAK,GAAE,sBAAsB,CAAC,CAAC,CAAM,GACpC,iBAAiB,CAAC,CAAC,CAAC;IAIvB,OAAO,CAAC,wBAAwB;IAqBhC,OAAO,CAAC,KAAK;IAIN,YAAY,IAAI,OAAO;IAIvB,qBAAqB,IAAI,OAAO;IAIhC,OAAO,IAAI,CAAC,EAAE;IAIrB,OAAO,CAAC,UAAU;IAqCX,wBAAwB,IAAI,oBAAoB,EAAE;IA6BzD,OAAO,CAAC,oBAAoB;IAqC5B,OAAO,CAAC,yBAAyB;CAgClC"}
1
+ {"version":3,"file":"IncrementalLoader.d.ts","sourceRoot":"","sources":["../../../../../../src/components/List/model/loading/IncrementalLoader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,8BAA8B,CAAC;AACrD,OAAO,KAAK,EAIV,sBAAsB,EACtB,oBAAoB,EACrB,MAAM,uCAAuC,CAAC;AAK/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,wDAAwD,CAAC;AAEhG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAKlE,qBAAa,iBAAiB,CAAC,CAAC;IAC9B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAU;IAC/B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgB;IAC3C,SAAgB,aAAa,EAAE,OAAO,CAAC;IACvC,SAAgB,eAAe,EAAE,OAAO,CAAC;IACzC,SAAgB,gBAAgB,EAAE,OAAO,CAAC;IAC1C,SAAgB,WAAW,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAC;IACvD,SAAgB,oBAAoB,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,CAAM;IAE7D,OAAO;WAgCO,MAAM,CAAC,CAAC,EACpB,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EACb,KAAK,GAAE,sBAAsB,CAAC,CAAC,CAAM,GACpC,iBAAiB,CAAC,CAAC,CAAC;IAIvB,OAAO,CAAC,wBAAwB;IAqBhC,OAAO,CAAC,KAAK;IAIN,YAAY,IAAI,OAAO;IAIvB,qBAAqB,IAAI,OAAO;IAIhC,OAAO,IAAI,CAAC,EAAE;IAIrB,OAAO,CAAC,UAAU;IAkCX,wBAAwB,IAAI,oBAAoB,EAAE;IA6BzD,OAAO,CAAC,oBAAoB;IAqC5B,OAAO,CAAC,yBAAyB;CAgClC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mittwald/flow-react-components",
3
- "version": "0.2.0-alpha.527",
3
+ "version": "0.2.0-alpha.528",
4
4
  "type": "module",
5
5
  "description": "A React implementation of Flow, mittwald’s design system",
6
6
  "homepage": "https://mittwald.github.io/flow",
@@ -58,7 +58,7 @@
58
58
  "dependencies": {
59
59
  "@internationalized/string-compiler": "^3.2.6",
60
60
  "@mittwald/password-tools-js": "3.0.0-alpha.18",
61
- "@mittwald/react-tunnel": "0.2.0-alpha.527",
61
+ "@mittwald/react-tunnel": "0.2.0-alpha.528",
62
62
  "@mittwald/react-use-promise": "^4.2.2",
63
63
  "@react-aria/form": "^3.1.2",
64
64
  "@react-aria/live-announcer": "^3.4.4",
@@ -101,7 +101,7 @@
101
101
  "@faker-js/faker": "^10.1.0",
102
102
  "@internationalized/date": "^3.10.0",
103
103
  "@mittwald/flow-core": "",
104
- "@mittwald/flow-design-tokens": "0.2.0-alpha.527",
104
+ "@mittwald/flow-design-tokens": "0.2.0-alpha.528",
105
105
  "@mittwald/react-use-promise": "^4.2.2",
106
106
  "@mittwald/remote-dom-react": "1.2.2-mittwald.10",
107
107
  "@mittwald/typescript-config": "",
@@ -174,5 +174,5 @@
174
174
  "optional": true
175
175
  }
176
176
  },
177
- "gitHead": "f42ddb90d8fe8729f50ed5eef31a92fa9265d831"
177
+ "gitHead": "173786ab694baa4965f199d5a14ce53057f6206f"
178
178
  }