@osdk/react-components 0.6.0 → 0.6.1-main-5a45dc0bb9dbbf6e02b20a5d636513411fb67a95
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/build/browser/object-table/hooks/useFunctionColumnsData.js +2 -4
- package/build/browser/object-table/hooks/useFunctionColumnsData.js.map +1 -1
- package/build/browser/util/UserAgent.js +1 -1
- package/build/browser/util/UserAgent.js.map +1 -1
- package/build/cjs/{chunk-IQZ6IABQ.cjs → chunk-273SDCJZ.cjs} +3 -3
- package/build/cjs/chunk-273SDCJZ.cjs.map +1 -0
- package/build/cjs/{chunk-GDKDKZ4H.cjs → chunk-KXW7UTC4.cjs} +4 -4
- package/build/cjs/{chunk-GDKDKZ4H.cjs.map → chunk-KXW7UTC4.cjs.map} +1 -1
- package/build/cjs/{chunk-FF7DFNVC.cjs → chunk-SQB4SJA2.cjs} +5 -5
- package/build/cjs/chunk-SQB4SJA2.cjs.map +1 -0
- package/build/cjs/{chunk-HSA4UIKA.cjs → chunk-UDKEWYEL.cjs} +4 -4
- package/build/cjs/{chunk-HSA4UIKA.cjs.map → chunk-UDKEWYEL.cjs.map} +1 -1
- package/build/cjs/{chunk-NFG6NXZN.cjs → chunk-VSMFV5QP.cjs} +4 -4
- package/build/cjs/{chunk-NFG6NXZN.cjs.map → chunk-VSMFV5QP.cjs.map} +1 -1
- package/build/cjs/public/experimental/action-form.cjs +4 -4
- package/build/cjs/public/experimental/filter-list.cjs +6 -6
- package/build/cjs/public/experimental/object-table.cjs +6 -6
- package/build/cjs/public/experimental/pdf-viewer.cjs +24 -24
- package/build/cjs/public/experimental.cjs +37 -37
- package/build/esm/object-table/hooks/useFunctionColumnsData.js +2 -4
- package/build/esm/object-table/hooks/useFunctionColumnsData.js.map +1 -1
- package/build/esm/util/UserAgent.js +1 -1
- package/build/esm/util/UserAgent.js.map +1 -1
- package/build/types/object-table/hooks/useFunctionColumnsData.d.ts.map +1 -1
- package/package.json +5 -5
- package/build/cjs/chunk-FF7DFNVC.cjs.map +0 -1
- package/build/cjs/chunk-IQZ6IABQ.cjs.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# @osdk/react-components
|
|
2
2
|
|
|
3
|
+
## 0.6.1-main-5a45dc0bb9dbbf6e02b20a5d636513411fb67a95
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 5a45dc0: Fix stableObjectSet by using a useStableObjectSet hook
|
|
8
|
+
- Updated dependencies [5a45dc0]
|
|
9
|
+
- @osdk/react@0.13.1-main-5a45dc0bb9dbbf6e02b20a5d636513411fb67a95
|
|
10
|
+
|
|
3
11
|
## 0.6.0
|
|
4
12
|
|
|
5
13
|
### Minor Changes
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
-
import { useOsdkFunctions } from "@osdk/react/experimental";
|
|
17
|
+
import { useOsdkFunctions, useStableObjectSet } from "@osdk/react/experimental";
|
|
18
18
|
import { chunk } from "lodash-es";
|
|
19
19
|
import { useMemo, useRef } from "react";
|
|
20
20
|
import { addFilterClauseToObjectSet } from "../utils/addFilterClauseToObjectSet.js";
|
|
@@ -30,9 +30,7 @@ export function useFunctionColumnsData({
|
|
|
30
30
|
}) {
|
|
31
31
|
const prevDataRef = useRef({});
|
|
32
32
|
const stableObjects = useStableObjects(objects);
|
|
33
|
-
|
|
34
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
35
|
-
const stableObjectSet = useMemo(() => objectSet, [JSON.stringify(objectSet)]);
|
|
33
|
+
const stableObjectSet = useStableObjectSet(objectSet);
|
|
36
34
|
const functionColDefs = useMemo(() => extractFunctionLocators(columnDefinitions), [columnDefinitions]);
|
|
37
35
|
const disabled = !stableObjectSet || !stableObjects?.length || functionColDefs.length === 0;
|
|
38
36
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFunctionColumnsData.js","names":["useOsdkFunctions","chunk","useMemo","useRef","addFilterClauseToObjectSet","createAsyncCellData","DEFAULT_FUNCTION_COLUMN_DEDUPE_INTERVAL_MS","DEFAULT_MAX_CONCURRENT_REQUESTS","DEFAULT_PAGE_SIZE","stripDerivedPropertiesFromParams","useFunctionColumnsData","objectSet","objects","columnDefinitions","primaryKeyApiName","pageSize","prevDataRef","stableObjects","useStableObjects","stableObjectSet","JSON","stringify","functionColDefs","extractFunctionLocators","disabled","length","pagedObjectSets","buildPagedObjectSets","queryGrid","EMPTY_QUERY_GRID","buildQueryGrid","results","queries","enabled","maxConcurrent","mergedResults","mergePagedResults","numColumns","data","columnData","buildFunctionColumnData","current","filter","colDef","locator","type","map","page","whereClause","$in","obj","$primaryKey","pagedObjectSet","push","queryDefinition","options","params","getFunctionParams","dedupeIntervalMs","merged","Array","from","isLoading","error","undefined","functionsMap","forEach","result","index","entry","pageData","Object","assign","prevColumnData","columnId","String","id","key","prevData","resolveCell","getKey","getValue","objectKey","rawData","item","$apiName","sort","a","b","localeCompare"],"sources":["useFunctionColumnsData.ts"],"sourcesContent":["/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n ObjectOrInterfaceDefinition,\n ObjectSet,\n Osdk,\n PropertyKeys,\n QueryDefinition,\n SimplePropertyDef,\n WhereClause,\n} from \"@osdk/api\";\nimport {\n type FunctionQueryParams,\n useOsdkFunctions,\n type UseOsdkFunctionsResult,\n} from \"@osdk/react/experimental\";\nimport { chunk } from \"lodash-es\";\nimport { useMemo, useRef } from \"react\";\nimport type {\n ColumnDefinition,\n FunctionColumnLocator,\n} from \"../ObjectTableApi.js\";\nimport { addFilterClauseToObjectSet } from \"../utils/addFilterClauseToObjectSet.js\";\nimport {\n type AsyncCellData,\n createAsyncCellData,\n} from \"../utils/AsyncCellData.js\";\nimport {\n DEFAULT_FUNCTION_COLUMN_DEDUPE_INTERVAL_MS,\n DEFAULT_MAX_CONCURRENT_REQUESTS,\n DEFAULT_PAGE_SIZE,\n} from \"../utils/constants.js\";\nimport { stripDerivedPropertiesFromParams } from \"../utils/stripDerivedPropertiesFromParams.js\";\n\nexport interface FunctionColumnData {\n [columnId: string]: {\n [objectPrimaryKey: string]: AsyncCellData;\n };\n}\n\nexport interface UseFunctionColumnsDataOptions<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n> {\n objectSet: ObjectSet<Q, RDPs> | undefined;\n objects:\n | Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>[]\n | undefined;\n columnDefinitions?: Array<ColumnDefinition<Q, RDPs, FunctionColumns>>;\n primaryKeyApiName?: string;\n pageSize?: number;\n}\n\nexport function useFunctionColumnsData<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n>(\n {\n objectSet,\n objects,\n columnDefinitions,\n primaryKeyApiName,\n pageSize = DEFAULT_PAGE_SIZE,\n }: UseFunctionColumnsDataOptions<Q, RDPs, FunctionColumns>,\n): FunctionColumnData {\n const prevDataRef = useRef<FunctionColumnData>({});\n\n const stableObjects = useStableObjects(objects);\n // TODO: replace with useDeepEqual when it's added\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const stableObjectSet = useMemo(() => objectSet, [JSON.stringify(objectSet)]);\n\n const functionColDefs = useMemo(\n () => extractFunctionLocators<Q, RDPs, FunctionColumns>(columnDefinitions),\n [columnDefinitions],\n );\n\n const disabled = !stableObjectSet || !stableObjects?.length\n || functionColDefs.length === 0;\n\n // When a new page loads, only that page's queries fire — old pages\n // hit the dedupeIntervalMs cache since their params are unchanged.\n const pagedObjectSets = useMemo(() => {\n if (!stableObjectSet || !stableObjects?.length) return [];\n return buildPagedObjectSets(\n stableObjectSet,\n stableObjects,\n primaryKeyApiName,\n pageSize,\n );\n }, [stableObjectSet, stableObjects, primaryKeyApiName, pageSize]);\n\n const queryGrid = useMemo(() => {\n if (pagedObjectSets.length === 0 || functionColDefs.length === 0) {\n return EMPTY_QUERY_GRID;\n }\n return buildQueryGrid<Q, RDPs, FunctionColumns>(\n pagedObjectSets,\n functionColDefs,\n );\n }, [pagedObjectSets, functionColDefs]);\n\n const results = useOsdkFunctions({\n queries: queryGrid.queries,\n enabled: !disabled,\n maxConcurrent: DEFAULT_MAX_CONCURRENT_REQUESTS,\n });\n\n const mergedResults = useMemo(\n () => mergePagedResults(results, queryGrid.numColumns),\n [results, queryGrid.numColumns],\n );\n\n const data = useMemo(() => {\n const columnData = buildFunctionColumnData(\n mergedResults,\n functionColDefs,\n stableObjects,\n disabled,\n prevDataRef.current,\n );\n prevDataRef.current = columnData;\n return columnData;\n }, [mergedResults, functionColDefs, stableObjects, disabled]);\n\n return data;\n}\n\n/**\n * Pairs a flat queries array with the layout metadata needed to recover per-column\n * results back into per-column groups. The numColumns value is produced by\n * the same function that builds the queries, so the two are always in sync.\n */\ninterface QueryGrid {\n queries: FunctionQueryParams<QueryDefinition<unknown>>[];\n numColumns: number;\n}\n\ninterface MergedResult {\n isLoading: boolean;\n error: unknown;\n functionsMap: Record<string, unknown>;\n}\n\nconst EMPTY_QUERY_GRID: QueryGrid = { queries: [], numColumns: 0 };\n\n/** Filters columnDefinitions down to only function-backed locators. */\nfunction extractFunctionLocators<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n>(\n columnDefinitions:\n | Array<ColumnDefinition<Q, RDPs, FunctionColumns>>\n | undefined,\n): FunctionColumnLocator<Q, RDPs, FunctionColumns>[] {\n if (!columnDefinitions) return [];\n\n return columnDefinitions\n .filter(colDef => colDef.locator.type === \"function\")\n .map(colDef =>\n colDef.locator as FunctionColumnLocator<Q, RDPs, FunctionColumns>\n );\n}\n\n/** Chunks objects into pages and creates a filtered ObjectSet per page. */\nfunction buildPagedObjectSets<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n>(\n objectSet: ObjectSet<Q, RDPs>,\n objects: Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>[],\n primaryKeyApiName: string | undefined,\n pageSize: number,\n): unknown[] {\n if (!primaryKeyApiName) {\n return [stripDerivedPropertiesFromParams(objectSet)];\n }\n\n return chunk(objects, pageSize).map(page => {\n const whereClause = {\n [primaryKeyApiName]: {\n $in: page.map(obj => obj.$primaryKey),\n },\n } as WhereClause<Q, RDPs>;\n\n return stripDerivedPropertiesFromParams(\n addFilterClauseToObjectSet(objectSet, whereClause),\n );\n });\n}\n\n/**\n * Builds a flat query array and the layout metadata needed to recover per-column results.\n *\n * Layout: [page0_col0, page0_col1, ..., page1_col0, page1_col1, ...]\n * Page-first ordering ensures first concurrent queries prioritizes the first page,\n * so visible rows get all their columns populated before later pages.\n */\nfunction buildQueryGrid<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n>(\n pagedObjectSets: unknown[],\n functionColDefs: FunctionColumnLocator<Q, RDPs, FunctionColumns>[],\n): QueryGrid {\n const queries: FunctionQueryParams<QueryDefinition<unknown>>[] = [];\n\n for (const pagedObjectSet of pagedObjectSets) {\n for (const locator of functionColDefs) {\n queries.push({\n queryDefinition: locator.queryDefinition,\n options: {\n params: locator.getFunctionParams(\n pagedObjectSet as ObjectSet<Q, RDPs>,\n ),\n dedupeIntervalMs: locator.dedupeIntervalMs\n ?? DEFAULT_FUNCTION_COLUMN_DEDUPE_INTERVAL_MS,\n } as FunctionQueryParams<QueryDefinition<unknown>>[\"options\"],\n });\n }\n }\n\n return { queries, numColumns: functionColDefs.length };\n}\n\n/**\n * Merges paged results into one merged result per column.\n * Each column has results spread across pages — this combines their\n * functionsMaps so buildFunctionColumnData can look up any object by key.\n *\n * Relies on QueryGrid layout: results[i] belongs to column (i % numColumns).\n * i.e. the first N results are the first page of each column, the next N results are the second page, etc.\n */\nfunction mergePagedResults(\n results: UseOsdkFunctionsResult,\n numColumns: number,\n): MergedResult[] {\n if (numColumns === 0) return [];\n\n const merged: MergedResult[] = Array.from(\n { length: numColumns },\n () => ({ isLoading: false, error: undefined, functionsMap: {} }),\n );\n\n results.forEach((result, index) => {\n const columnIndex = index % numColumns;\n const entry = merged[columnIndex];\n\n if (result.isLoading) {\n entry.isLoading = true;\n }\n if (result.error) {\n entry.error = result.error;\n }\n const pageData = result.data as Record<string, unknown> | undefined;\n if (pageData) {\n Object.assign(entry.functionsMap, pageData);\n }\n });\n\n return merged;\n}\n\nfunction buildFunctionColumnData<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n>(\n results: MergedResult[],\n functionColDefs: FunctionColumnLocator<Q, RDPs, FunctionColumns>[],\n objects:\n | Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>[]\n | undefined,\n disabled: boolean,\n prevColumnData: FunctionColumnData,\n): FunctionColumnData {\n const columnData: FunctionColumnData = {};\n\n if (disabled || !objects) return columnData;\n\n results.forEach((result, index) => {\n const locator = functionColDefs[index];\n if (!locator) return;\n\n const columnId = String(locator.id);\n\n columnData[columnId] = {};\n\n objects.forEach(obj => {\n const key = String(obj.$primaryKey);\n const prevData = prevColumnData[columnId]?.[key]?.data;\n\n columnData[columnId][key] = createAsyncCellData(\n resolveCell(\n result,\n locator.getKey(obj),\n locator.getValue,\n prevData,\n ),\n );\n });\n });\n\n return columnData;\n}\n\n/** Resolves the cell state: error, loaded, or loading with previous data. */\nfunction resolveCell(\n result: MergedResult,\n objectKey: string,\n getValue: ((cellData: unknown) => unknown) | undefined,\n prevData: unknown,\n): Omit<AsyncCellData, \"__asyncCell\"> {\n if (result.error) {\n return { isLoading: false, error: result.error };\n }\n if (objectKey in result.functionsMap) {\n const rawData = result.functionsMap[objectKey];\n return { isLoading: false, data: getValue ? getValue(rawData) : rawData };\n }\n // Key not in results — still loading, or query returned no data for this object\n // Return with previous data\n return { isLoading: result.isLoading, data: prevData };\n}\n\nconst useStableObjects = <\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n>(\n objects:\n | Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>[]\n | undefined,\n):\n | Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>[]\n | undefined =>\n{\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return useMemo(() => objects, [\n // eslint-disable-next-line react-hooks/exhaustive-deps\n JSON.stringify(\n (objects ?? []).map(item => ({\n $apiName: item.$apiName,\n $primaryKey: item.$primaryKey,\n })).sort((a, b) => {\n if (a.$apiName !== b.$apiName) {\n return a.$apiName.localeCompare(b.$apiName);\n }\n return String(a.$primaryKey).localeCompare(String(b.$primaryKey));\n }),\n ),\n ]);\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"useFunctionColumnsData.js","names":["useOsdkFunctions","useStableObjectSet","chunk","useMemo","useRef","addFilterClauseToObjectSet","createAsyncCellData","DEFAULT_FUNCTION_COLUMN_DEDUPE_INTERVAL_MS","DEFAULT_MAX_CONCURRENT_REQUESTS","DEFAULT_PAGE_SIZE","stripDerivedPropertiesFromParams","useFunctionColumnsData","objectSet","objects","columnDefinitions","primaryKeyApiName","pageSize","prevDataRef","stableObjects","useStableObjects","stableObjectSet","functionColDefs","extractFunctionLocators","disabled","length","pagedObjectSets","buildPagedObjectSets","queryGrid","EMPTY_QUERY_GRID","buildQueryGrid","results","queries","enabled","maxConcurrent","mergedResults","mergePagedResults","numColumns","data","columnData","buildFunctionColumnData","current","filter","colDef","locator","type","map","page","whereClause","$in","obj","$primaryKey","pagedObjectSet","push","queryDefinition","options","params","getFunctionParams","dedupeIntervalMs","merged","Array","from","isLoading","error","undefined","functionsMap","forEach","result","index","entry","pageData","Object","assign","prevColumnData","columnId","String","id","key","prevData","resolveCell","getKey","getValue","objectKey","rawData","JSON","stringify","item","$apiName","sort","a","b","localeCompare"],"sources":["useFunctionColumnsData.ts"],"sourcesContent":["/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n ObjectOrInterfaceDefinition,\n ObjectSet,\n Osdk,\n PropertyKeys,\n QueryDefinition,\n SimplePropertyDef,\n WhereClause,\n} from \"@osdk/api\";\nimport {\n type FunctionQueryParams,\n useOsdkFunctions,\n type UseOsdkFunctionsResult,\n useStableObjectSet,\n} from \"@osdk/react/experimental\";\nimport { chunk } from \"lodash-es\";\nimport { useMemo, useRef } from \"react\";\nimport type {\n ColumnDefinition,\n FunctionColumnLocator,\n} from \"../ObjectTableApi.js\";\nimport { addFilterClauseToObjectSet } from \"../utils/addFilterClauseToObjectSet.js\";\nimport {\n type AsyncCellData,\n createAsyncCellData,\n} from \"../utils/AsyncCellData.js\";\nimport {\n DEFAULT_FUNCTION_COLUMN_DEDUPE_INTERVAL_MS,\n DEFAULT_MAX_CONCURRENT_REQUESTS,\n DEFAULT_PAGE_SIZE,\n} from \"../utils/constants.js\";\nimport { stripDerivedPropertiesFromParams } from \"../utils/stripDerivedPropertiesFromParams.js\";\n\nexport interface FunctionColumnData {\n [columnId: string]: {\n [objectPrimaryKey: string]: AsyncCellData;\n };\n}\n\nexport interface UseFunctionColumnsDataOptions<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n> {\n objectSet: ObjectSet<Q, RDPs> | undefined;\n objects:\n | Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>[]\n | undefined;\n columnDefinitions?: Array<ColumnDefinition<Q, RDPs, FunctionColumns>>;\n primaryKeyApiName?: string;\n pageSize?: number;\n}\n\nexport function useFunctionColumnsData<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n>(\n {\n objectSet,\n objects,\n columnDefinitions,\n primaryKeyApiName,\n pageSize = DEFAULT_PAGE_SIZE,\n }: UseFunctionColumnsDataOptions<Q, RDPs, FunctionColumns>,\n): FunctionColumnData {\n const prevDataRef = useRef<FunctionColumnData>({});\n\n const stableObjects = useStableObjects(objects);\n const stableObjectSet = useStableObjectSet(objectSet);\n\n const functionColDefs = useMemo(\n () => extractFunctionLocators<Q, RDPs, FunctionColumns>(columnDefinitions),\n [columnDefinitions],\n );\n\n const disabled = !stableObjectSet || !stableObjects?.length\n || functionColDefs.length === 0;\n\n // When a new page loads, only that page's queries fire — old pages\n // hit the dedupeIntervalMs cache since their params are unchanged.\n const pagedObjectSets = useMemo(() => {\n if (!stableObjectSet || !stableObjects?.length) return [];\n return buildPagedObjectSets(\n stableObjectSet,\n stableObjects,\n primaryKeyApiName,\n pageSize,\n );\n }, [stableObjectSet, stableObjects, primaryKeyApiName, pageSize]);\n\n const queryGrid = useMemo(() => {\n if (pagedObjectSets.length === 0 || functionColDefs.length === 0) {\n return EMPTY_QUERY_GRID;\n }\n return buildQueryGrid<Q, RDPs, FunctionColumns>(\n pagedObjectSets,\n functionColDefs,\n );\n }, [pagedObjectSets, functionColDefs]);\n\n const results = useOsdkFunctions({\n queries: queryGrid.queries,\n enabled: !disabled,\n maxConcurrent: DEFAULT_MAX_CONCURRENT_REQUESTS,\n });\n\n const mergedResults = useMemo(\n () => mergePagedResults(results, queryGrid.numColumns),\n [results, queryGrid.numColumns],\n );\n\n const data = useMemo(() => {\n const columnData = buildFunctionColumnData(\n mergedResults,\n functionColDefs,\n stableObjects,\n disabled,\n prevDataRef.current,\n );\n prevDataRef.current = columnData;\n return columnData;\n }, [mergedResults, functionColDefs, stableObjects, disabled]);\n\n return data;\n}\n\n/**\n * Pairs a flat queries array with the layout metadata needed to recover per-column\n * results back into per-column groups. The numColumns value is produced by\n * the same function that builds the queries, so the two are always in sync.\n */\ninterface QueryGrid {\n queries: FunctionQueryParams<QueryDefinition<unknown>>[];\n numColumns: number;\n}\n\ninterface MergedResult {\n isLoading: boolean;\n error: unknown;\n functionsMap: Record<string, unknown>;\n}\n\nconst EMPTY_QUERY_GRID: QueryGrid = { queries: [], numColumns: 0 };\n\n/** Filters columnDefinitions down to only function-backed locators. */\nfunction extractFunctionLocators<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n>(\n columnDefinitions:\n | Array<ColumnDefinition<Q, RDPs, FunctionColumns>>\n | undefined,\n): FunctionColumnLocator<Q, RDPs, FunctionColumns>[] {\n if (!columnDefinitions) return [];\n\n return columnDefinitions\n .filter(colDef => colDef.locator.type === \"function\")\n .map(colDef =>\n colDef.locator as FunctionColumnLocator<Q, RDPs, FunctionColumns>\n );\n}\n\n/** Chunks objects into pages and creates a filtered ObjectSet per page. */\nfunction buildPagedObjectSets<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n>(\n objectSet: ObjectSet<Q, RDPs>,\n objects: Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>[],\n primaryKeyApiName: string | undefined,\n pageSize: number,\n): unknown[] {\n if (!primaryKeyApiName) {\n return [stripDerivedPropertiesFromParams(objectSet)];\n }\n\n return chunk(objects, pageSize).map(page => {\n const whereClause = {\n [primaryKeyApiName]: {\n $in: page.map(obj => obj.$primaryKey),\n },\n } as WhereClause<Q, RDPs>;\n\n return stripDerivedPropertiesFromParams(\n addFilterClauseToObjectSet(objectSet, whereClause),\n );\n });\n}\n\n/**\n * Builds a flat query array and the layout metadata needed to recover per-column results.\n *\n * Layout: [page0_col0, page0_col1, ..., page1_col0, page1_col1, ...]\n * Page-first ordering ensures first concurrent queries prioritizes the first page,\n * so visible rows get all their columns populated before later pages.\n */\nfunction buildQueryGrid<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n>(\n pagedObjectSets: unknown[],\n functionColDefs: FunctionColumnLocator<Q, RDPs, FunctionColumns>[],\n): QueryGrid {\n const queries: FunctionQueryParams<QueryDefinition<unknown>>[] = [];\n\n for (const pagedObjectSet of pagedObjectSets) {\n for (const locator of functionColDefs) {\n queries.push({\n queryDefinition: locator.queryDefinition,\n options: {\n params: locator.getFunctionParams(\n pagedObjectSet as ObjectSet<Q, RDPs>,\n ),\n dedupeIntervalMs: locator.dedupeIntervalMs\n ?? DEFAULT_FUNCTION_COLUMN_DEDUPE_INTERVAL_MS,\n } as FunctionQueryParams<QueryDefinition<unknown>>[\"options\"],\n });\n }\n }\n\n return { queries, numColumns: functionColDefs.length };\n}\n\n/**\n * Merges paged results into one merged result per column.\n * Each column has results spread across pages — this combines their\n * functionsMaps so buildFunctionColumnData can look up any object by key.\n *\n * Relies on QueryGrid layout: results[i] belongs to column (i % numColumns).\n * i.e. the first N results are the first page of each column, the next N results are the second page, etc.\n */\nfunction mergePagedResults(\n results: UseOsdkFunctionsResult,\n numColumns: number,\n): MergedResult[] {\n if (numColumns === 0) return [];\n\n const merged: MergedResult[] = Array.from(\n { length: numColumns },\n () => ({ isLoading: false, error: undefined, functionsMap: {} }),\n );\n\n results.forEach((result, index) => {\n const columnIndex = index % numColumns;\n const entry = merged[columnIndex];\n\n if (result.isLoading) {\n entry.isLoading = true;\n }\n if (result.error) {\n entry.error = result.error;\n }\n const pageData = result.data as Record<string, unknown> | undefined;\n if (pageData) {\n Object.assign(entry.functionsMap, pageData);\n }\n });\n\n return merged;\n}\n\nfunction buildFunctionColumnData<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n>(\n results: MergedResult[],\n functionColDefs: FunctionColumnLocator<Q, RDPs, FunctionColumns>[],\n objects:\n | Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>[]\n | undefined,\n disabled: boolean,\n prevColumnData: FunctionColumnData,\n): FunctionColumnData {\n const columnData: FunctionColumnData = {};\n\n if (disabled || !objects) return columnData;\n\n results.forEach((result, index) => {\n const locator = functionColDefs[index];\n if (!locator) return;\n\n const columnId = String(locator.id);\n\n columnData[columnId] = {};\n\n objects.forEach(obj => {\n const key = String(obj.$primaryKey);\n const prevData = prevColumnData[columnId]?.[key]?.data;\n\n columnData[columnId][key] = createAsyncCellData(\n resolveCell(\n result,\n locator.getKey(obj),\n locator.getValue,\n prevData,\n ),\n );\n });\n });\n\n return columnData;\n}\n\n/** Resolves the cell state: error, loaded, or loading with previous data. */\nfunction resolveCell(\n result: MergedResult,\n objectKey: string,\n getValue: ((cellData: unknown) => unknown) | undefined,\n prevData: unknown,\n): Omit<AsyncCellData, \"__asyncCell\"> {\n if (result.error) {\n return { isLoading: false, error: result.error };\n }\n if (objectKey in result.functionsMap) {\n const rawData = result.functionsMap[objectKey];\n return { isLoading: false, data: getValue ? getValue(rawData) : rawData };\n }\n // Key not in results — still loading, or query returned no data for this object\n // Return with previous data\n return { isLoading: result.isLoading, data: prevData };\n}\n\nconst useStableObjects = <\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n>(\n objects:\n | Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>[]\n | undefined,\n):\n | Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>[]\n | undefined =>\n{\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return useMemo(() => objects, [\n // eslint-disable-next-line react-hooks/exhaustive-deps\n JSON.stringify(\n (objects ?? []).map(item => ({\n $apiName: item.$apiName,\n $primaryKey: item.$primaryKey,\n })).sort((a, b) => {\n if (a.$apiName !== b.$apiName) {\n return a.$apiName.localeCompare(b.$apiName);\n }\n return String(a.$primaryKey).localeCompare(String(b.$primaryKey));\n }),\n ),\n ]);\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
-
const PACKAGE_USER_AGENT = `osdk-react-components/${"0.6.
|
|
17
|
+
const PACKAGE_USER_AGENT = `osdk-react-components/${"0.6.1-main-5a45dc0bb9dbbf6e02b20a5d636513411fb67a95"}`;
|
|
18
18
|
export function componentUserAgent(componentName) {
|
|
19
19
|
return `${PACKAGE_USER_AGENT}/${componentName}`;
|
|
20
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserAgent.js","names":["PACKAGE_USER_AGENT","componentUserAgent","componentName"],"sources":["UserAgent.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst PACKAGE_USER_AGENT =\n `osdk-react-components/${process.env.PACKAGE_VERSION}`;\n\nexport function componentUserAgent(componentName: string): string {\n return `${PACKAGE_USER_AGENT}/${componentName}`;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAMA,kBAAkB,GACtB,
|
|
1
|
+
{"version":3,"file":"UserAgent.js","names":["PACKAGE_USER_AGENT","componentUserAgent","componentName"],"sources":["UserAgent.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst PACKAGE_USER_AGENT =\n `osdk-react-components/${process.env.PACKAGE_VERSION}`;\n\nexport function componentUserAgent(componentName: string): string {\n return `${PACKAGE_USER_AGENT}/${componentName}`;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAMA,kBAAkB,GACtB,gFAAsD;AAExD,OAAO,SAASC,kBAAkBA,CAACC,aAAqB,EAAU;EAChE,OAAO,GAAGF,kBAAkB,IAAIE,aAAa,EAAE;AACjD","ignoreList":[]}
|
|
@@ -10,7 +10,7 @@ var React__default = /*#__PURE__*/_interopDefault(React);
|
|
|
10
10
|
// src/util/withOsdkMetrics.ts
|
|
11
11
|
|
|
12
12
|
// src/util/UserAgent.ts
|
|
13
|
-
var PACKAGE_USER_AGENT = `osdk-react-components/${"0.6.
|
|
13
|
+
var PACKAGE_USER_AGENT = `osdk-react-components/${"0.6.1-main-5a45dc0bb9dbbf6e02b20a5d636513411fb67a95"}`;
|
|
14
14
|
function componentUserAgent(componentName) {
|
|
15
15
|
return `${PACKAGE_USER_AGENT}/${componentName}`;
|
|
16
16
|
}
|
|
@@ -26,5 +26,5 @@ function withOsdkMetrics(Component, name) {
|
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
exports.withOsdkMetrics = withOsdkMetrics;
|
|
29
|
-
//# sourceMappingURL=chunk-
|
|
30
|
-
//# sourceMappingURL=chunk-
|
|
29
|
+
//# sourceMappingURL=chunk-273SDCJZ.cjs.map
|
|
30
|
+
//# sourceMappingURL=chunk-273SDCJZ.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/util/UserAgent.ts","../../src/util/withOsdkMetrics.ts"],"names":["useRegisterUserAgent","React"],"mappings":";;;;;;;;;;;;AAgBA,IAAM,kBAAA,GAAqB,yBAAyB,qDAA2B,CAAA,CAAA;AACxE,SAAS,mBAAmB,aAAA,EAAe;AAChD,EAAA,OAAO,CAAA,EAAG,kBAAkB,CAAA,CAAA,EAAI,aAAa,CAAA,CAAA;AAC/C;;;ACKO,SAAS,eAAA,CAAgB,WAAW,IAAA,EAAM;AAC/C,EAAA,MAAM,UAAU,CAAA,KAAA,KAAS;AACvB,IAAAA,iCAAA,CAAqB,kBAAA,CAAmB,IAAI,CAAC,CAAA;AAC7C,IAAA,uBAAoBC,sBAAA,CAAM,aAAA,CAAc,SAAA,EAAW,KAAK,CAAA;AAAA,EAC1D,CAAA;AACA,EAAA,OAAA,CAAQ,WAAA,GAAc,mBAAmB,IAAI,CAAA,CAAA,CAAA;AAC7C,EAAA,OAAO,OAAA;AACT","file":"chunk-273SDCJZ.cjs","sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst PACKAGE_USER_AGENT = `osdk-react-components/${process.env.PACKAGE_VERSION}`;\nexport function componentUserAgent(componentName) {\n return `${PACKAGE_USER_AGENT}/${componentName}`;\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useRegisterUserAgent } from \"@osdk/react/experimental\";\nimport React from \"react\";\nimport { componentUserAgent } from \"./UserAgent.js\";\n\n// `any` is required: FunctionComponent defaults to FunctionComponent<{}> which\n// rejects components with required props. A generic P parameter doesn't help\n// because TS can't infer both P and C simultaneously from a single argument.\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function withOsdkMetrics(Component, name) {\n const Wrapped = props => {\n useRegisterUserAgent(componentUserAgent(name));\n return /*#__PURE__*/React.createElement(Component, props);\n };\n Wrapped.displayName = `withOsdkMetrics(${name})`;\n return Wrapped;\n}"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunk273SDCJZ_cjs = require('./chunk-273SDCJZ.cjs');
|
|
4
4
|
var chunkQ2W6GYRK_cjs = require('./chunk-Q2W6GYRK.cjs');
|
|
5
5
|
var icons = require('@blueprintjs/icons');
|
|
6
6
|
var classnames = require('classnames');
|
|
@@ -2159,7 +2159,7 @@ function PdfViewer({
|
|
|
2159
2159
|
}
|
|
2160
2160
|
|
|
2161
2161
|
// src/public/experimental/pdf-viewer.ts
|
|
2162
|
-
var PdfViewer2 =
|
|
2162
|
+
var PdfViewer2 = chunk273SDCJZ_cjs.withOsdkMetrics(PdfViewer, "PdfViewer");
|
|
2163
2163
|
|
|
2164
2164
|
exports.BasePdfViewer = BasePdfViewer;
|
|
2165
2165
|
exports.PdfViewer = PdfViewer2;
|
|
@@ -2183,5 +2183,5 @@ exports.usePdfViewerInstance = usePdfViewerInstance;
|
|
|
2183
2183
|
exports.usePdfViewerSearch = usePdfViewerSearch;
|
|
2184
2184
|
exports.usePdfViewerState = usePdfViewerState;
|
|
2185
2185
|
exports.usePdfViewerSync = usePdfViewerSync;
|
|
2186
|
-
//# sourceMappingURL=chunk-
|
|
2187
|
-
//# sourceMappingURL=chunk-
|
|
2186
|
+
//# sourceMappingURL=chunk-KXW7UTC4.cjs.map
|
|
2187
|
+
//# sourceMappingURL=chunk-KXW7UTC4.cjs.map
|