@osdk/react-components 0.52.0 → 0.53.0-main-ae47ac3b73090d642693a992208ebd424b4a627f
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 +21 -0
- package/build/browser/filter-list/FilterListApi.js.map +1 -1
- package/build/browser/filter-list/hooks/useFilterListState.js.map +1 -1
- package/build/browser/filter-list/types/LinkedFilterTypes.js +5 -4
- package/build/browser/filter-list/types/LinkedFilterTypes.js.map +1 -1
- package/build/browser/filter-list/types/WhereClauseTypes.js +2 -0
- package/build/browser/filter-list/types/WhereClauseTypes.js.map +1 -0
- package/build/browser/filter-list/types/index.js +1 -0
- package/build/browser/filter-list/types/index.js.map +1 -1
- package/build/browser/filter-list/utils/emptyFilterDisplayState.js +0 -1
- package/build/browser/filter-list/utils/emptyFilterDisplayState.js.map +1 -1
- package/build/browser/filter-list/utils/filterStateToWhereClause.js +45 -36
- package/build/browser/filter-list/utils/filterStateToWhereClause.js.map +1 -1
- package/build/browser/filter-list/utils/filterValues.js +1 -3
- package/build/browser/filter-list/utils/filterValues.js.map +1 -1
- package/build/browser/filter-list/utils/narrowObjectSet.js +38 -7
- package/build/browser/filter-list/utils/narrowObjectSet.js.map +1 -1
- package/build/browser/filter-list/utils/summarizeFilterValue.js +4 -1
- package/build/browser/filter-list/utils/summarizeFilterValue.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-FYBZCMUF.cjs → chunk-5GMBJX2D.cjs} +4 -4
- package/build/cjs/{chunk-FYBZCMUF.cjs.map → chunk-5GMBJX2D.cjs.map} +1 -1
- package/build/cjs/{chunk-UGESYKH3.cjs → chunk-5J5JUNRW.cjs} +4 -4
- package/build/cjs/{chunk-UGESYKH3.cjs.map → chunk-5J5JUNRW.cjs.map} +1 -1
- package/build/cjs/{chunk-YGKL7TID.cjs → chunk-AT63MZL2.cjs} +4 -4
- package/build/cjs/{chunk-YGKL7TID.cjs.map → chunk-AT63MZL2.cjs.map} +1 -1
- package/build/cjs/{chunk-NGTL7TQZ.cjs → chunk-DHWHCVWR.cjs} +4 -4
- package/build/cjs/{chunk-NGTL7TQZ.cjs.map → chunk-DHWHCVWR.cjs.map} +1 -1
- package/build/cjs/{chunk-7FHBQLBY.cjs → chunk-FZESVNGN.cjs} +4 -4
- package/build/cjs/{chunk-7FHBQLBY.cjs.map → chunk-FZESVNGN.cjs.map} +1 -1
- package/build/cjs/{chunk-BLNDVUWD.cjs → chunk-KCVCEHB3.cjs} +3 -3
- package/build/cjs/chunk-KCVCEHB3.cjs.map +1 -0
- package/build/cjs/chunk-LXD3MPVY.cjs +11 -0
- package/build/cjs/{chunk-XYDSPBNS.cjs.map → chunk-LXD3MPVY.cjs.map} +1 -1
- package/build/cjs/chunk-NLEHDTLD.cjs +11 -0
- package/build/cjs/{chunk-6LZPFOET.cjs.map → chunk-NLEHDTLD.cjs.map} +1 -1
- package/build/cjs/{chunk-LWZPCGVX.cjs → chunk-P4UOERQV.cjs} +73 -42
- package/build/cjs/chunk-P4UOERQV.cjs.map +1 -0
- package/build/cjs/chunk-Q7IZY7DA.cjs +11 -0
- package/build/cjs/{chunk-CXM2AX2T.cjs.map → chunk-Q7IZY7DA.cjs.map} +1 -1
- package/build/cjs/chunk-R2NZYFIX.cjs +11 -0
- package/build/cjs/{chunk-ORNJMIXS.cjs.map → chunk-R2NZYFIX.cjs.map} +1 -1
- package/build/cjs/{chunk-SO3Q3MUX.cjs → chunk-U26FOYLG.cjs} +4 -4
- package/build/cjs/{chunk-SO3Q3MUX.cjs.map → chunk-U26FOYLG.cjs.map} +1 -1
- package/build/cjs/{chunk-HCRY7VLS.cjs → chunk-WTT2HAXA.cjs} +4 -4
- package/build/cjs/{chunk-HCRY7VLS.cjs.map → chunk-WTT2HAXA.cjs.map} +1 -1
- package/build/cjs/{chunk-OYVU5FTS.cjs → chunk-Z3CP5PY4.cjs} +4 -4
- package/build/cjs/{chunk-OYVU5FTS.cjs.map → chunk-Z3CP5PY4.cjs.map} +1 -1
- package/build/cjs/public/experimental/action-form.cjs +4 -4
- package/build/cjs/public/experimental/cbac-picker.cjs +11 -11
- package/build/cjs/public/experimental/document-viewer.cjs +4 -4
- package/build/cjs/public/experimental/email-viewer.cjs +3 -3
- package/build/cjs/public/experimental/filter-list.cjs +15 -15
- package/build/cjs/public/experimental/filter-list.d.cts +23 -20
- package/build/cjs/public/experimental/image-viewer.cjs +3 -3
- package/build/cjs/public/experimental/markdown-renderer.cjs +5 -5
- package/build/cjs/public/experimental/object-table.cjs +22 -22
- package/build/cjs/public/experimental/pdf-viewer.cjs +7 -7
- package/build/cjs/public/experimental/spreadsheet-viewer.cjs +3 -3
- package/build/cjs/public/experimental/tiff-renderer.cjs +5 -5
- package/build/cjs/public/experimental/video-viewer.cjs +3 -3
- package/build/cjs/public/experimental/xml-viewer.cjs +3 -3
- package/build/cjs/public/experimental.cjs +76 -76
- package/build/esm/filter-list/FilterListApi.js.map +1 -1
- package/build/esm/filter-list/hooks/useFilterListState.js.map +1 -1
- package/build/esm/filter-list/types/LinkedFilterTypes.js +5 -4
- package/build/esm/filter-list/types/LinkedFilterTypes.js.map +1 -1
- package/build/esm/filter-list/types/WhereClauseTypes.js +2 -0
- package/build/esm/filter-list/types/WhereClauseTypes.js.map +1 -0
- package/build/esm/filter-list/types/index.js +1 -0
- package/build/esm/filter-list/types/index.js.map +1 -1
- package/build/esm/filter-list/utils/emptyFilterDisplayState.js +0 -1
- package/build/esm/filter-list/utils/emptyFilterDisplayState.js.map +1 -1
- package/build/esm/filter-list/utils/filterStateToWhereClause.js +45 -36
- package/build/esm/filter-list/utils/filterStateToWhereClause.js.map +1 -1
- package/build/esm/filter-list/utils/filterValues.js +1 -3
- package/build/esm/filter-list/utils/filterValues.js.map +1 -1
- package/build/esm/filter-list/utils/narrowObjectSet.js +38 -7
- package/build/esm/filter-list/utils/narrowObjectSet.js.map +1 -1
- package/build/esm/filter-list/utils/summarizeFilterValue.js +4 -1
- package/build/esm/filter-list/utils/summarizeFilterValue.js.map +1 -1
- package/build/esm/util/UserAgent.js +1 -1
- package/build/esm/util/UserAgent.js.map +1 -1
- package/build/types/filter-list/FilterListApi.d.ts +6 -7
- package/build/types/filter-list/FilterListApi.d.ts.map +1 -1
- package/build/types/filter-list/hooks/useFilterListState.d.ts +1 -1
- package/build/types/filter-list/types/LinkedFilterTypes.d.ts +16 -12
- package/build/types/filter-list/types/LinkedFilterTypes.d.ts.map +1 -1
- package/build/types/filter-list/types/WhereClauseTypes.d.ts +15 -0
- package/build/types/filter-list/types/WhereClauseTypes.d.ts.map +1 -0
- package/build/types/filter-list/types/index.d.ts +1 -0
- package/build/types/filter-list/types/index.d.ts.map +1 -1
- package/build/types/filter-list/utils/filterStateToWhereClause.d.ts +5 -4
- package/build/types/filter-list/utils/filterStateToWhereClause.d.ts.map +1 -1
- package/build/types/filter-list/utils/filterValues.d.ts.map +1 -1
- package/build/types/filter-list/utils/narrowObjectSet.d.ts.map +1 -1
- package/docs/FilterList.md +19 -18
- package/package.json +7 -7
- package/build/cjs/chunk-6LZPFOET.cjs +0 -11
- package/build/cjs/chunk-BLNDVUWD.cjs.map +0 -1
- package/build/cjs/chunk-CXM2AX2T.cjs +0 -11
- package/build/cjs/chunk-LWZPCGVX.cjs.map +0 -1
- package/build/cjs/chunk-ORNJMIXS.cjs +0 -11
- package/build/cjs/chunk-XYDSPBNS.cjs +0 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filterValues.js","names":["getEffectiveFilterState","state","type","linkedFilterState","supportsSearch","supportsExcluding","NO_VALUE","isNoValue","value","dedupeEmptyAggregationRows","values","out","noValueCount","firstNoValueIndex","v","length","count","push","splice","isNull","filterValuesBySearch","searchValue","getValue","trimmed","trim","lowerSearch","toLowerCase","filter","includes","clearFilterState","undefined","selectedValues","isExcluding","minValue","maxValue","includeNull","startDate","endDate","enabled","hasLink","searchTerm","operator","innerCleared","toggleIsExcluding","inner","getSelectedCount","filterHasActiveState"],"sources":["filterValues.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\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport type { PropertyAggregationValue } from \"../types/AggregationTypes.js\";\n\n/**\n * Unwraps a `linkedProperty` wrapper one level so callers can reason about the\n * underlying filter state directly (e.g. for header controls that should\n * follow the inner filter's capabilities).\n */\nexport function getEffectiveFilterState(\n state: FilterState | undefined,\n): FilterState | undefined {\n if (state?.type === \"linkedProperty\") {\n return state.linkedFilterState;\n }\n return state;\n}\n\n/** Returns true for filter state types that support in-filter search. */\nexport function supportsSearch(state: FilterState | undefined): boolean {\n if (!state) {\n return false;\n }\n switch (state.type) {\n case \"SELECT\":\n case \"EXACT_MATCH\":\n return true;\n case \"CONTAINS_TEXT\":\n case \"NUMBER_RANGE\":\n case \"DATE_RANGE\":\n case \"TOGGLE\":\n case \"hasLink\":\n case \"linkedProperty\":\n case \"keywordSearch\":\n case \"TIMELINE\":\n case \"custom\":\n return false;\n default: {\n const _exhaustive: never = state;\n return false;\n }\n }\n}\n\n/** Returns true for filter state types that support isExcluding. */\nexport function supportsExcluding(state: FilterState | undefined): boolean {\n if (!state) {\n return false;\n }\n switch (state.type) {\n case \"SELECT\":\n case \"EXACT_MATCH\":\n case \"CONTAINS_TEXT\":\n case \"TIMELINE\":\n // hasLink supports excluding via the overflow dropdown: \"Keeping\" filters\n // to objects that have the link, \"Excluding\" to those that do not.\n case \"hasLink\":\n return true;\n case \"NUMBER_RANGE\":\n case \"DATE_RANGE\":\n case \"TOGGLE\":\n case \"linkedProperty\":\n case \"keywordSearch\":\n case \"custom\":\n return false;\n default: {\n const _exhaustive: never = state;\n return false;\n }\n }\n}\n\n/**\n * Sentinel identity for the \"No value\" bucket (null/undefined property values).\n *\n * `selectedValues` is a `string[]`, so the null/undefined state needs a string\n * stand-in that cannot collide with a real value. Put `NO_VALUE` in `selectedValues`\n * to filter for objects whose property `$isNull`.\n */\nexport const NO_VALUE = \"__NO_VALUE__\";\n\n/**\n * Returns true if the given value represents \"No value\" (a null/undefined\n * property value), i.e. the {@link NO_VALUE} sentinel (or a raw null/undefined\n * defensively).\n */\nexport function isNoValue(value: string | null | undefined): boolean {\n return value == null || value === NO_VALUE;\n}\n\n/**\n * Merges every null/undefined aggregation row into a single \"No value\" bucket\n * (keyed by the {@link NO_VALUE} sentinel) placed at the position of the first\n * such row encountered. Backends sometimes return separate rows for null and\n * undefined; this collapses them so consumers (listogram, dropdown,\n * multi-select) all see one canonical \"No value\" row.\n *\n * Literal empty-string (`\"\"`) rows are real values and are left untouched as\n * their own distinct rows.\n */\nexport function dedupeEmptyAggregationRows(\n values: PropertyAggregationValue[],\n): PropertyAggregationValue[] {\n const out: PropertyAggregationValue[] = [];\n let noValueCount = 0;\n let firstNoValueIndex = -1;\n for (const v of values) {\n if (isNoValue(v.value)) {\n if (firstNoValueIndex === -1) {\n firstNoValueIndex = out.length;\n }\n noValueCount += v.count;\n } else {\n out.push(v);\n }\n }\n if (firstNoValueIndex >= 0 && noValueCount > 0) {\n out.splice(firstNoValueIndex, 0, {\n value: NO_VALUE,\n count: noValueCount,\n isNull: true,\n });\n }\n return out;\n}\n\n/** Case-insensitive substring filter for search functionality. */\nexport function filterValuesBySearch<T>(\n values: T[],\n searchValue: string,\n getValue: (item: T) => string,\n): T[] {\n const trimmed = searchValue.trim();\n if (!trimmed) {\n return values;\n }\n const lowerSearch = trimmed.toLowerCase();\n return values.filter((v) => getValue(v).toLowerCase().includes(lowerSearch));\n}\n\n/**\n * Returns a \"cleared\" version of the given filter state, preserving the\n * discriminator and `isExcluding` flag so the UI doesn't snap between filter\n * modes when a user clicks \"Clear all selections\". Returns `undefined` if no\n * cleared form is meaningful for the state shape.\n */\nexport function clearFilterState(\n state: FilterState | undefined,\n): FilterState | undefined {\n if (!state) {\n return undefined;\n }\n switch (state.type) {\n case \"SELECT\":\n return {\n type: \"SELECT\",\n selectedValues: [],\n isExcluding: state.isExcluding,\n };\n case \"EXACT_MATCH\":\n return {\n type: \"EXACT_MATCH\",\n values: [],\n isExcluding: state.isExcluding,\n };\n case \"CONTAINS_TEXT\":\n return {\n type: \"CONTAINS_TEXT\",\n value: undefined,\n isExcluding: state.isExcluding,\n };\n case \"NUMBER_RANGE\":\n return {\n type: \"NUMBER_RANGE\",\n minValue: undefined,\n maxValue: undefined,\n includeNull: false,\n };\n case \"DATE_RANGE\":\n return {\n type: \"DATE_RANGE\",\n minValue: undefined,\n maxValue: undefined,\n includeNull: false,\n };\n case \"TIMELINE\":\n return {\n type: \"TIMELINE\",\n startDate: undefined,\n endDate: undefined,\n isExcluding: state.isExcluding,\n };\n case \"TOGGLE\":\n return { type: \"TOGGLE\", enabled: false };\n case \"hasLink\":\n return {\n type: \"hasLink\",\n hasLink: false,\n isExcluding: state.isExcluding,\n };\n case \"keywordSearch\":\n return {\n type: \"keywordSearch\",\n searchTerm: \"\",\n operator: state.operator,\n };\n case \"linkedProperty\": {\n const innerCleared = clearFilterState(state.linkedFilterState);\n if (!innerCleared) {\n return undefined;\n }\n return { type: \"linkedProperty\", linkedFilterState: innerCleared };\n }\n case \"custom\":\n return undefined;\n default: {\n const _exhaustive: never = state;\n return undefined;\n }\n }\n}\n\n/**\n * Returns the state with `isExcluding` flipped, preserving the discriminator\n * and unwrapping/re-wrapping any `linkedProperty` wrapper. Returns `undefined`\n * if the wrapped state is one that does not support excluding.\n */\nexport function toggleIsExcluding(state: FilterState): FilterState | undefined {\n if (state.type === \"linkedProperty\") {\n const inner = state.linkedFilterState;\n return {\n type: \"linkedProperty\",\n linkedFilterState: { ...inner, isExcluding: !inner.isExcluding },\n };\n }\n if (!supportsExcluding(state)) {\n return undefined;\n }\n return { ...state, isExcluding: !state.isExcluding };\n}\n\n/**\n * Returns the number of values the user has actively selected for filters\n * whose UI surfaces a selected-of-total count (LISTOGRAM, SINGLE_SELECT,\n * MULTI_SELECT, TEXT_TAGS). Returns 0 for state shapes that don't have a\n * discrete list of selected values.\n */\nexport function getSelectedCount(state: FilterState | undefined): number {\n if (!state) {\n return 0;\n }\n if (state.type === \"EXACT_MATCH\") {\n return state.values.length;\n }\n if (state.type === \"SELECT\") {\n return state.selectedValues.length;\n }\n return 0;\n}\n\n/** Check if a filter state has an active (non-empty) value. */\nexport function filterHasActiveState(state: FilterState | undefined): boolean {\n if (!state) {\n return false;\n }\n\n switch (state.type) {\n case \"SELECT\":\n return state.selectedValues.length > 0;\n case \"EXACT_MATCH\":\n return state.values.length > 0;\n case \"CONTAINS_TEXT\":\n return state.value !== undefined && state.value !== \"\";\n case \"NUMBER_RANGE\":\n return (\n state.minValue !== undefined ||\n state.maxValue !== undefined ||\n state.includeNull === true\n );\n case \"DATE_RANGE\":\n return (\n state.minValue !== undefined ||\n state.maxValue !== undefined ||\n state.includeNull === true\n );\n case \"TOGGLE\":\n return state.enabled;\n case \"hasLink\":\n return state.hasLink;\n case \"linkedProperty\":\n return filterHasActiveState(state.linkedFilterState);\n case \"keywordSearch\":\n return state.searchTerm !== undefined && state.searchTerm !== \"\";\n case \"TIMELINE\":\n return state.startDate !== undefined || state.endDate !== undefined;\n case \"custom\":\n return true;\n default: {\n const _exhaustive: never = state;\n return false;\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"filterValues.js","names":["getEffectiveFilterState","state","type","linkedFilterState","supportsSearch","supportsExcluding","NO_VALUE","isNoValue","value","dedupeEmptyAggregationRows","values","out","noValueCount","firstNoValueIndex","v","length","count","push","splice","isNull","filterValuesBySearch","searchValue","getValue","trimmed","trim","lowerSearch","toLowerCase","filter","includes","clearFilterState","undefined","selectedValues","isExcluding","minValue","maxValue","includeNull","startDate","endDate","enabled","hasLink","searchTerm","operator","innerCleared","toggleIsExcluding","inner","getSelectedCount","filterHasActiveState"],"sources":["filterValues.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\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport type { PropertyAggregationValue } from \"../types/AggregationTypes.js\";\n\n/**\n * Unwraps a `linkedProperty` wrapper one level so callers can reason about the\n * underlying filter state directly (e.g. for header controls that should\n * follow the inner filter's capabilities).\n */\nexport function getEffectiveFilterState(\n state: FilterState | undefined,\n): FilterState | undefined {\n if (state?.type === \"linkedProperty\") {\n return state.linkedFilterState;\n }\n return state;\n}\n\n/** Returns true for filter state types that support in-filter search. */\nexport function supportsSearch(state: FilterState | undefined): boolean {\n if (!state) {\n return false;\n }\n switch (state.type) {\n case \"SELECT\":\n case \"EXACT_MATCH\":\n return true;\n case \"CONTAINS_TEXT\":\n case \"NUMBER_RANGE\":\n case \"DATE_RANGE\":\n case \"TOGGLE\":\n case \"hasLink\":\n case \"linkedProperty\":\n case \"keywordSearch\":\n case \"TIMELINE\":\n case \"custom\":\n return false;\n default: {\n const _exhaustive: never = state;\n return false;\n }\n }\n}\n\n/** Returns true for filter state types that support isExcluding. */\nexport function supportsExcluding(state: FilterState | undefined): boolean {\n if (!state) {\n return false;\n }\n switch (state.type) {\n case \"SELECT\":\n case \"EXACT_MATCH\":\n case \"CONTAINS_TEXT\":\n case \"TIMELINE\":\n case \"hasLink\":\n return true;\n case \"NUMBER_RANGE\":\n case \"DATE_RANGE\":\n case \"TOGGLE\":\n case \"linkedProperty\":\n case \"keywordSearch\":\n case \"custom\":\n return false;\n default: {\n const _exhaustive: never = state;\n return false;\n }\n }\n}\n\n/**\n * Sentinel identity for the \"No value\" bucket (null/undefined property values).\n *\n * `selectedValues` is a `string[]`, so the null/undefined state needs a string\n * stand-in that cannot collide with a real value. Put `NO_VALUE` in `selectedValues`\n * to filter for objects whose property `$isNull`.\n */\nexport const NO_VALUE = \"__NO_VALUE__\";\n\n/**\n * Returns true if the given value represents \"No value\" (a null/undefined\n * property value), i.e. the {@link NO_VALUE} sentinel (or a raw null/undefined\n * defensively).\n */\nexport function isNoValue(value: string | null | undefined): boolean {\n return value == null || value === NO_VALUE;\n}\n\n/**\n * Merges every null/undefined aggregation row into a single \"No value\" bucket\n * (keyed by the {@link NO_VALUE} sentinel) placed at the position of the first\n * such row encountered. Backends sometimes return separate rows for null and\n * undefined; this collapses them so consumers (listogram, dropdown,\n * multi-select) all see one canonical \"No value\" row.\n *\n * Literal empty-string (`\"\"`) rows are real values and are left untouched as\n * their own distinct rows.\n */\nexport function dedupeEmptyAggregationRows(\n values: PropertyAggregationValue[],\n): PropertyAggregationValue[] {\n const out: PropertyAggregationValue[] = [];\n let noValueCount = 0;\n let firstNoValueIndex = -1;\n for (const v of values) {\n if (isNoValue(v.value)) {\n if (firstNoValueIndex === -1) {\n firstNoValueIndex = out.length;\n }\n noValueCount += v.count;\n } else {\n out.push(v);\n }\n }\n if (firstNoValueIndex >= 0 && noValueCount > 0) {\n out.splice(firstNoValueIndex, 0, {\n value: NO_VALUE,\n count: noValueCount,\n isNull: true,\n });\n }\n return out;\n}\n\n/** Case-insensitive substring filter for search functionality. */\nexport function filterValuesBySearch<T>(\n values: T[],\n searchValue: string,\n getValue: (item: T) => string,\n): T[] {\n const trimmed = searchValue.trim();\n if (!trimmed) {\n return values;\n }\n const lowerSearch = trimmed.toLowerCase();\n return values.filter((v) => getValue(v).toLowerCase().includes(lowerSearch));\n}\n\n/**\n * Returns a \"cleared\" version of the given filter state, preserving the\n * discriminator and `isExcluding` flag so the UI doesn't snap between filter\n * modes when a user clicks \"Clear all selections\". Returns `undefined` if no\n * cleared form is meaningful for the state shape.\n */\nexport function clearFilterState(\n state: FilterState | undefined,\n): FilterState | undefined {\n if (!state) {\n return undefined;\n }\n switch (state.type) {\n case \"SELECT\":\n return {\n type: \"SELECT\",\n selectedValues: [],\n isExcluding: state.isExcluding,\n };\n case \"EXACT_MATCH\":\n return {\n type: \"EXACT_MATCH\",\n values: [],\n isExcluding: state.isExcluding,\n };\n case \"CONTAINS_TEXT\":\n return {\n type: \"CONTAINS_TEXT\",\n value: undefined,\n isExcluding: state.isExcluding,\n };\n case \"NUMBER_RANGE\":\n return {\n type: \"NUMBER_RANGE\",\n minValue: undefined,\n maxValue: undefined,\n includeNull: false,\n };\n case \"DATE_RANGE\":\n return {\n type: \"DATE_RANGE\",\n minValue: undefined,\n maxValue: undefined,\n includeNull: false,\n };\n case \"TIMELINE\":\n return {\n type: \"TIMELINE\",\n startDate: undefined,\n endDate: undefined,\n isExcluding: state.isExcluding,\n };\n case \"TOGGLE\":\n return { type: \"TOGGLE\", enabled: false };\n case \"hasLink\":\n return {\n type: \"hasLink\",\n hasLink: false,\n isExcluding: state.isExcluding,\n };\n case \"keywordSearch\":\n return {\n type: \"keywordSearch\",\n searchTerm: \"\",\n operator: state.operator,\n };\n case \"linkedProperty\": {\n const innerCleared = clearFilterState(state.linkedFilterState);\n if (!innerCleared) {\n return undefined;\n }\n return { type: \"linkedProperty\", linkedFilterState: innerCleared };\n }\n case \"custom\":\n return undefined;\n default: {\n const _exhaustive: never = state;\n return undefined;\n }\n }\n}\n\n/**\n * Returns the state with `isExcluding` flipped, preserving the discriminator\n * and unwrapping/re-wrapping any `linkedProperty` wrapper. Returns `undefined`\n * if the wrapped state is one that does not support excluding.\n */\nexport function toggleIsExcluding(state: FilterState): FilterState | undefined {\n if (state.type === \"linkedProperty\") {\n const inner = state.linkedFilterState;\n return {\n type: \"linkedProperty\",\n linkedFilterState: { ...inner, isExcluding: !inner.isExcluding },\n };\n }\n if (!supportsExcluding(state)) {\n return undefined;\n }\n return { ...state, isExcluding: !state.isExcluding };\n}\n\n/**\n * Returns the number of values the user has actively selected for filters\n * whose UI surfaces a selected-of-total count (LISTOGRAM, SINGLE_SELECT,\n * MULTI_SELECT, TEXT_TAGS). Returns 0 for state shapes that don't have a\n * discrete list of selected values.\n */\nexport function getSelectedCount(state: FilterState | undefined): number {\n if (!state) {\n return 0;\n }\n if (state.type === \"EXACT_MATCH\") {\n return state.values.length;\n }\n if (state.type === \"SELECT\") {\n return state.selectedValues.length;\n }\n return 0;\n}\n\n/** Check if a filter state has an active (non-empty) value. */\nexport function filterHasActiveState(state: FilterState | undefined): boolean {\n if (!state) {\n return false;\n }\n\n switch (state.type) {\n case \"SELECT\":\n return state.selectedValues.length > 0;\n case \"EXACT_MATCH\":\n return state.values.length > 0;\n case \"CONTAINS_TEXT\":\n return state.value !== undefined && state.value !== \"\";\n case \"NUMBER_RANGE\":\n return (\n state.minValue !== undefined ||\n state.maxValue !== undefined ||\n state.includeNull === true\n );\n case \"DATE_RANGE\":\n return (\n state.minValue !== undefined ||\n state.maxValue !== undefined ||\n state.includeNull === true\n );\n case \"TOGGLE\":\n return state.enabled;\n case \"hasLink\":\n return state.hasLink === true;\n case \"linkedProperty\":\n return filterHasActiveState(state.linkedFilterState);\n case \"keywordSearch\":\n return state.searchTerm !== undefined && state.searchTerm !== \"\";\n case \"TIMELINE\":\n return state.startDate !== undefined || state.endDate !== undefined;\n case \"custom\":\n return true;\n default: {\n const _exhaustive: never = state;\n return false;\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -14,17 +14,48 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
+
/** What `aggregate("$count")` derives: a non-nullable integer, zero when no linked objects match. */
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Derived-property names share a namespace with the object type's own
|
|
21
|
+
* properties, so the prefix keeps these from colliding with a real property.
|
|
22
|
+
*/
|
|
23
|
+
const LINK_COUNT_PREFIX = "osdkFilterListLinkCount_";
|
|
24
|
+
function linkCountPropertyName(id) {
|
|
25
|
+
return `${LINK_COUNT_PREFIX}${id}`;
|
|
26
|
+
}
|
|
17
27
|
export function narrowObjectSet(objectSet, whereClause, linkedFilters) {
|
|
18
|
-
|
|
28
|
+
const hasWhereClause = Object.keys(whereClause).length > 0;
|
|
29
|
+
if (linkedFilters.length === 0) {
|
|
30
|
+
return hasWhereClause ? objectSet.where(whereClause) : objectSet;
|
|
31
|
+
}
|
|
32
|
+
const creators = {};
|
|
33
|
+
const conditions = hasWhereClause ? [whereClause] : [];
|
|
19
34
|
for (const filter of linkedFilters) {
|
|
20
|
-
|
|
35
|
+
const propertyName = linkCountPropertyName(filter.id);
|
|
36
|
+
creators[propertyName] = createLinkCount(filter);
|
|
37
|
+
// Negated linked filter keeps source rows whose match-count is zero,
|
|
38
|
+
// including rows with no linked object at all (count = 0 either way).
|
|
39
|
+
conditions.push(filter.isExcluding === true ? {
|
|
40
|
+
[propertyName]: 0
|
|
41
|
+
} : {
|
|
42
|
+
[propertyName]: {
|
|
43
|
+
$gt: 0
|
|
44
|
+
}
|
|
45
|
+
});
|
|
21
46
|
}
|
|
22
|
-
|
|
47
|
+
const countClause = conditions.length === 1 ? conditions[0] : {
|
|
48
|
+
$and: conditions
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
// Cast needed because the RDPs are created at runtime.
|
|
52
|
+
return objectSet.withProperties(creators).where(countClause);
|
|
23
53
|
}
|
|
24
|
-
function
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
54
|
+
function createLinkCount(filter) {
|
|
55
|
+
return base => {
|
|
56
|
+
const linked = base.pivotTo(filter.linkName);
|
|
57
|
+
return (filter.innerWhere == null ? linked : linked.where(filter.innerWhere)).aggregate("$count");
|
|
58
|
+
};
|
|
28
59
|
}
|
|
29
60
|
export function computeDualScopes(objectSet, whereClause, linkedFilters, showFilteredOutValues) {
|
|
30
61
|
if (objectSet == null) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"narrowObjectSet.js","names":["narrowObjectSet","objectSet","whereClause","linkedFilters","
|
|
1
|
+
{"version":3,"file":"narrowObjectSet.js","names":["LINK_COUNT_PREFIX","linkCountPropertyName","id","narrowObjectSet","objectSet","whereClause","linkedFilters","hasWhereClause","Object","keys","length","where","creators","conditions","filter","propertyName","createLinkCount","push","isExcluding","$gt","countClause","$and","withProperties","base","linked","pivotTo","linkName","innerWhere","aggregate","computeDualScopes","showFilteredOutValues","scoped","undefined","emptySource"],"sources":["narrowObjectSet.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 DerivedProperty,\n ObjectSet,\n ObjectTypeDefinition,\n SimplePropertyDef,\n WhereClause,\n} from \"@osdk/api\";\n\nimport type { LinkedFilter } from \"../types/LinkedFilterTypes.js\";\nimport type { WhereClauseFragment } from \"../types/WhereClauseTypes.js\";\n\n/** What `aggregate(\"$count\")` derives: a non-nullable integer, zero when no linked objects match. */\ntype LinkCountDef = SimplePropertyDef.Make<\"integer\", \"non-nullable\", \"single\">;\n\ntype LinkCountRdps = Record<string, LinkCountDef>;\n\n/**\n * Derived-property names share a namespace with the object type's own\n * properties, so the prefix keeps these from colliding with a real property.\n */\nconst LINK_COUNT_PREFIX = \"osdkFilterListLinkCount_\";\n\nfunction linkCountPropertyName(id: string): string {\n return `${LINK_COUNT_PREFIX}${id}`;\n}\n\nexport function narrowObjectSet<Q extends ObjectTypeDefinition>(\n objectSet: ObjectSet<Q>,\n whereClause: WhereClause<Q>,\n linkedFilters: ReadonlyArray<LinkedFilter<Q>>,\n): ObjectSet<Q> {\n const hasWhereClause = Object.keys(whereClause).length > 0;\n if (linkedFilters.length === 0) {\n return hasWhereClause ? objectSet.where(whereClause) : objectSet;\n }\n\n const creators: Record<string, DerivedProperty.Creator<Q, LinkCountDef>> = {};\n const conditions: WhereClauseFragment[] = hasWhereClause\n ? [whereClause as WhereClauseFragment]\n : [];\n\n for (const filter of linkedFilters) {\n const propertyName = linkCountPropertyName(filter.id);\n creators[propertyName] = createLinkCount(filter);\n // Negated linked filter keeps source rows whose match-count is zero,\n // including rows with no linked object at all (count = 0 either way).\n conditions.push(\n filter.isExcluding === true\n ? { [propertyName]: 0 }\n : { [propertyName]: { $gt: 0 } },\n );\n }\n\n const countClause: WhereClauseFragment =\n conditions.length === 1 ? conditions[0] : { $and: conditions };\n\n // Cast needed because the RDPs are created at runtime.\n return objectSet\n .withProperties(creators)\n .where(countClause as WhereClause<Q, LinkCountRdps>) as ObjectSet<Q>;\n}\n\nfunction createLinkCount<Q extends ObjectTypeDefinition>(\n filter: LinkedFilter<Q>,\n): DerivedProperty.Creator<Q, LinkCountDef> {\n return (base) => {\n const linked = base.pivotTo(filter.linkName);\n return (\n filter.innerWhere == null ? linked : linked.where(filter.innerWhere)\n ).aggregate(\"$count\");\n };\n}\n\nexport function computeDualScopes<Q extends ObjectTypeDefinition>(\n objectSet: ObjectSet<Q> | undefined,\n whereClause: WhereClause<Q>,\n linkedFilters: ReadonlyArray<LinkedFilter<Q>>,\n showFilteredOutValues: boolean | undefined,\n): {\n scoped: ObjectSet<Q> | undefined;\n emptySource: ObjectSet<Q> | undefined;\n} {\n if (objectSet == null) {\n return { scoped: undefined, emptySource: undefined };\n }\n const scoped = narrowObjectSet(objectSet, whereClause, linkedFilters);\n if (!showFilteredOutValues || linkedFilters.length === 0) {\n return { scoped, emptySource: undefined };\n }\n return { scoped, emptySource: narrowObjectSet(objectSet, whereClause, []) };\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAaA;;AAKA;AACA;AACA;AACA;AACA,MAAMA,iBAAiB,GAAG,0BAA0B;AAEpD,SAASC,qBAAqBA,CAACC,EAAU,EAAU;EACjD,OAAO,GAAGF,iBAAiB,GAAGE,EAAE,EAAE;AACpC;AAEA,OAAO,SAASC,eAAeA,CAC7BC,SAAuB,EACvBC,WAA2B,EAC3BC,aAA6C,EAC/B;EACd,MAAMC,cAAc,GAAGC,MAAM,CAACC,IAAI,CAACJ,WAAW,CAAC,CAACK,MAAM,GAAG,CAAC;EAC1D,IAAIJ,aAAa,CAACI,MAAM,KAAK,CAAC,EAAE;IAC9B,OAAOH,cAAc,GAAGH,SAAS,CAACO,KAAK,CAACN,WAAW,CAAC,GAAGD,SAAS;EAClE;EAEA,MAAMQ,QAAkE,GAAG,CAAC,CAAC;EAC7E,MAAMC,UAAiC,GAAGN,cAAc,GACpD,CAACF,WAAW,CAAwB,GACpC,EAAE;EAEN,KAAK,MAAMS,MAAM,IAAIR,aAAa,EAAE;IAClC,MAAMS,YAAY,GAAGd,qBAAqB,CAACa,MAAM,CAACZ,EAAE,CAAC;IACrDU,QAAQ,CAACG,YAAY,CAAC,GAAGC,eAAe,CAACF,MAAM,CAAC;IAChD;IACA;IACAD,UAAU,CAACI,IAAI,CACbH,MAAM,CAACI,WAAW,KAAK,IAAI,GACvB;MAAE,CAACH,YAAY,GAAG;IAAE,CAAC,GACrB;MAAE,CAACA,YAAY,GAAG;QAAEI,GAAG,EAAE;MAAE;IAAE,CACnC,CAAC;EACH;EAEA,MAAMC,WAAgC,GACpCP,UAAU,CAACH,MAAM,KAAK,CAAC,GAAGG,UAAU,CAAC,CAAC,CAAC,GAAG;IAAEQ,IAAI,EAAER;EAAW,CAAC;;EAEhE;EACA,OAAOT,SAAS,CACbkB,cAAc,CAACV,QAAQ,CAAC,CACxBD,KAAK,CAACS,WAA4C,CAAC;AACxD;AAEA,SAASJ,eAAeA,CACtBF,MAAuB,EACmB;EAC1C,OAAQS,IAAI,IAAK;IACf,MAAMC,MAAM,GAAGD,IAAI,CAACE,OAAO,CAACX,MAAM,CAACY,QAAQ,CAAC;IAC5C,OAAO,CACLZ,MAAM,CAACa,UAAU,IAAI,IAAI,GAAGH,MAAM,GAAGA,MAAM,CAACb,KAAK,CAACG,MAAM,CAACa,UAAU,CAAC,EACpEC,SAAS,CAAC,QAAQ,CAAC;EACvB,CAAC;AACH;AAEA,OAAO,SAASC,iBAAiBA,CAC/BzB,SAAmC,EACnCC,WAA2B,EAC3BC,aAA6C,EAC7CwB,qBAA0C,EAI1C;EACA,IAAI1B,SAAS,IAAI,IAAI,EAAE;IACrB,OAAO;MAAE2B,MAAM,EAAEC,SAAS;MAAEC,WAAW,EAAED;IAAU,CAAC;EACtD;EACA,MAAMD,MAAM,GAAG5B,eAAe,CAACC,SAAS,EAAEC,WAAW,EAAEC,aAAa,CAAC;EACrE,IAAI,CAACwB,qBAAqB,IAAIxB,aAAa,CAACI,MAAM,KAAK,CAAC,EAAE;IACxD,OAAO;MAAEqB,MAAM;MAAEE,WAAW,EAAED;IAAU,CAAC;EAC3C;EACA,OAAO;IAAED,MAAM;IAAEE,WAAW,EAAE9B,eAAe,CAACC,SAAS,EAAEC,WAAW,EAAE,EAAE;EAAE,CAAC;AAC7E","ignoreList":[]}
|
|
@@ -100,7 +100,10 @@ export function summarizeFilterValue(definition, state) {
|
|
|
100
100
|
case "TOGGLE":
|
|
101
101
|
return state.enabled ? "Enabled" : "";
|
|
102
102
|
case "hasLink":
|
|
103
|
-
|
|
103
|
+
if (!state.hasLink) {
|
|
104
|
+
return "";
|
|
105
|
+
}
|
|
106
|
+
return state.isExcluding ? "Not linked" : "Linked";
|
|
104
107
|
case "linkedProperty":
|
|
105
108
|
// Forwards the outer definition so options like formatDate flow into the
|
|
106
109
|
// linked summary; assumes the linked property shares the outer property's
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"summarizeFilterValue.js","names":["assertUnreachable","formatDateForInput","NO_VALUE","NO_VALUE_PLACEHOLDER","SELECT_NO_VALUE_LABEL","SELECT_EMPTY_STRING_LABEL","summarizeSelectionValues","values","formatDate","length","v","Date","String","formatRange","min","max","format","loFallback","hiFallback","summarizeFilterValue","definition","state","type","selectedValues","value","minValue","maxValue","includeNull","startDate","endDate","enabled","hasLink","linkedFilterState","searchTerm"],"sources":["summarizeFilterValue.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 { ObjectTypeDefinition } from \"@osdk/api\";\n\nimport { assertUnreachable } from \"../../shared/assertUnreachable.js\";\nimport { formatDateForInput } from \"../../shared/dateUtils.js\";\nimport type { FilterDefinitionUnion } from \"../FilterListApi.js\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport { NO_VALUE } from \"./filterValues.js\";\n\n// Em-dash reads naturally as an unbounded range half (e.g. \"— – Jan 1\").\nconst NO_VALUE_PLACEHOLDER = \"—\";\n\n// Standalone SELECT triggers need the explicit phrase; a bare em-dash isn't discoverable.\nconst SELECT_NO_VALUE_LABEL = \"(No value)\";\n\n// Literal empty string is a real, selectable value distinct from \"No value\".\nconst SELECT_EMPTY_STRING_LABEL = \"(empty string)\";\n\nfunction summarizeSelectionValues(\n values: ReadonlyArray<string | number | boolean | Date | null | undefined>,\n formatDate: (d: Date) => string,\n): string {\n if (values.length === 0) {\n return \"\";\n }\n if (values.length > 1) {\n return `${values.length} selected`;\n }\n const v = values[0];\n if (v instanceof Date) {\n return formatDate(v);\n }\n if (v == null || v === NO_VALUE) {\n return SELECT_NO_VALUE_LABEL;\n }\n if (v === \"\") {\n return SELECT_EMPTY_STRING_LABEL;\n }\n return String(v);\n}\n\nfunction formatRange<T>(\n min: T | undefined,\n max: T | undefined,\n format: (value: T) => string,\n loFallback: string,\n hiFallback: string,\n): string {\n return `${min != null ? format(min) : loFallback} – ${\n max != null ? format(max) : hiFallback\n }`;\n}\n\n/** Short summary of a filter's current value for rendering inside a `FilterPopover` trigger. */\nexport function summarizeFilterValue<Q extends ObjectTypeDefinition>(\n definition: FilterDefinitionUnion<Q>,\n state: FilterState | undefined,\n): string {\n if (state == null) {\n return \"\";\n }\n const formatDate: (d: Date) => string =\n \"formatDate\" in definition && definition.formatDate\n ? definition.formatDate\n : formatDateForInput;\n switch (state.type) {\n case \"EXACT_MATCH\":\n return summarizeSelectionValues(state.values, formatDate);\n case \"SELECT\":\n return summarizeSelectionValues(state.selectedValues, formatDate);\n case \"CONTAINS_TEXT\":\n return state.value ?? \"\";\n case \"NUMBER_RANGE\": {\n const { minValue, maxValue, includeNull } = state;\n if (minValue == null && maxValue == null) {\n return includeNull ? \"Includes empty\" : \"\";\n }\n return formatRange(minValue, maxValue, String, \"−∞\", \"∞\");\n }\n case \"DATE_RANGE\": {\n const { minValue, maxValue, includeNull } = state;\n if (minValue == null && maxValue == null) {\n return includeNull ? \"Includes empty\" : \"\";\n }\n return formatRange(\n minValue,\n maxValue,\n formatDate,\n NO_VALUE_PLACEHOLDER,\n NO_VALUE_PLACEHOLDER,\n );\n }\n case \"TIMELINE\": {\n const { startDate, endDate } = state;\n if (startDate == null && endDate == null) {\n return \"\";\n }\n return formatRange(\n startDate,\n endDate,\n formatDate,\n NO_VALUE_PLACEHOLDER,\n NO_VALUE_PLACEHOLDER,\n );\n }\n case \"TOGGLE\":\n return state.enabled ? \"Enabled\" : \"\";\n case \"hasLink\":\n
|
|
1
|
+
{"version":3,"file":"summarizeFilterValue.js","names":["assertUnreachable","formatDateForInput","NO_VALUE","NO_VALUE_PLACEHOLDER","SELECT_NO_VALUE_LABEL","SELECT_EMPTY_STRING_LABEL","summarizeSelectionValues","values","formatDate","length","v","Date","String","formatRange","min","max","format","loFallback","hiFallback","summarizeFilterValue","definition","state","type","selectedValues","value","minValue","maxValue","includeNull","startDate","endDate","enabled","hasLink","isExcluding","linkedFilterState","searchTerm"],"sources":["summarizeFilterValue.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 { ObjectTypeDefinition } from \"@osdk/api\";\n\nimport { assertUnreachable } from \"../../shared/assertUnreachable.js\";\nimport { formatDateForInput } from \"../../shared/dateUtils.js\";\nimport type { FilterDefinitionUnion } from \"../FilterListApi.js\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport { NO_VALUE } from \"./filterValues.js\";\n\n// Em-dash reads naturally as an unbounded range half (e.g. \"— – Jan 1\").\nconst NO_VALUE_PLACEHOLDER = \"—\";\n\n// Standalone SELECT triggers need the explicit phrase; a bare em-dash isn't discoverable.\nconst SELECT_NO_VALUE_LABEL = \"(No value)\";\n\n// Literal empty string is a real, selectable value distinct from \"No value\".\nconst SELECT_EMPTY_STRING_LABEL = \"(empty string)\";\n\nfunction summarizeSelectionValues(\n values: ReadonlyArray<string | number | boolean | Date | null | undefined>,\n formatDate: (d: Date) => string,\n): string {\n if (values.length === 0) {\n return \"\";\n }\n if (values.length > 1) {\n return `${values.length} selected`;\n }\n const v = values[0];\n if (v instanceof Date) {\n return formatDate(v);\n }\n if (v == null || v === NO_VALUE) {\n return SELECT_NO_VALUE_LABEL;\n }\n if (v === \"\") {\n return SELECT_EMPTY_STRING_LABEL;\n }\n return String(v);\n}\n\nfunction formatRange<T>(\n min: T | undefined,\n max: T | undefined,\n format: (value: T) => string,\n loFallback: string,\n hiFallback: string,\n): string {\n return `${min != null ? format(min) : loFallback} – ${\n max != null ? format(max) : hiFallback\n }`;\n}\n\n/** Short summary of a filter's current value for rendering inside a `FilterPopover` trigger. */\nexport function summarizeFilterValue<Q extends ObjectTypeDefinition>(\n definition: FilterDefinitionUnion<Q>,\n state: FilterState | undefined,\n): string {\n if (state == null) {\n return \"\";\n }\n const formatDate: (d: Date) => string =\n \"formatDate\" in definition && definition.formatDate\n ? definition.formatDate\n : formatDateForInput;\n switch (state.type) {\n case \"EXACT_MATCH\":\n return summarizeSelectionValues(state.values, formatDate);\n case \"SELECT\":\n return summarizeSelectionValues(state.selectedValues, formatDate);\n case \"CONTAINS_TEXT\":\n return state.value ?? \"\";\n case \"NUMBER_RANGE\": {\n const { minValue, maxValue, includeNull } = state;\n if (minValue == null && maxValue == null) {\n return includeNull ? \"Includes empty\" : \"\";\n }\n return formatRange(minValue, maxValue, String, \"−∞\", \"∞\");\n }\n case \"DATE_RANGE\": {\n const { minValue, maxValue, includeNull } = state;\n if (minValue == null && maxValue == null) {\n return includeNull ? \"Includes empty\" : \"\";\n }\n return formatRange(\n minValue,\n maxValue,\n formatDate,\n NO_VALUE_PLACEHOLDER,\n NO_VALUE_PLACEHOLDER,\n );\n }\n case \"TIMELINE\": {\n const { startDate, endDate } = state;\n if (startDate == null && endDate == null) {\n return \"\";\n }\n return formatRange(\n startDate,\n endDate,\n formatDate,\n NO_VALUE_PLACEHOLDER,\n NO_VALUE_PLACEHOLDER,\n );\n }\n case \"TOGGLE\":\n return state.enabled ? \"Enabled\" : \"\";\n case \"hasLink\":\n if (!state.hasLink) {\n return \"\";\n }\n return state.isExcluding ? \"Not linked\" : \"Linked\";\n case \"linkedProperty\":\n // Forwards the outer definition so options like formatDate flow into the\n // linked summary; assumes the linked property shares the outer property's\n // type (true for current consumers).\n return summarizeFilterValue(definition, state.linkedFilterState);\n case \"keywordSearch\":\n return state.searchTerm ?? \"\";\n case \"custom\":\n return \"Custom\";\n default:\n return assertUnreachable(state);\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.
|
|
17
|
+
const PACKAGE_USER_AGENT = `osdk-react-components/${"0.53.0-main-ae47ac3b73090d642693a992208ebd424b4a627f"}`;
|
|
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 = `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,GAAG,
|
|
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 = `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,GAAG,iFAAsD;AAEjF,OAAO,SAASC,kBAAkBA,CAACC,aAAqB,EAAU;EAChE,OAAO,GAAGF,kBAAkB,IAAIE,aAAa,EAAE;AACjD","ignoreList":[]}
|
|
@@ -9,7 +9,7 @@ var chunkVWHXC6MQ_cjs = require('./chunk-VWHXC6MQ.cjs');
|
|
|
9
9
|
var chunkDTYFQRFD_cjs = require('./chunk-DTYFQRFD.cjs');
|
|
10
10
|
var chunkUCTQICPR_cjs = require('./chunk-UCTQICPR.cjs');
|
|
11
11
|
var chunkPA7IYPBX_cjs = require('./chunk-PA7IYPBX.cjs');
|
|
12
|
-
var
|
|
12
|
+
var chunkKCVCEHB3_cjs = require('./chunk-KCVCEHB3.cjs');
|
|
13
13
|
var icons = require('@blueprintjs/icons');
|
|
14
14
|
var classnames = require('classnames');
|
|
15
15
|
var React2 = require('react');
|
|
@@ -307,9 +307,9 @@ function DocumentViewer({
|
|
|
307
307
|
}
|
|
308
308
|
|
|
309
309
|
// src/public/experimental/document-viewer.ts
|
|
310
|
-
var DocumentViewer2 =
|
|
310
|
+
var DocumentViewer2 = chunkKCVCEHB3_cjs.withOsdkMetrics(DocumentViewer, "DocumentViewer");
|
|
311
311
|
|
|
312
312
|
exports.DocumentViewer = DocumentViewer2;
|
|
313
313
|
exports.ViewerType = ViewerType;
|
|
314
|
-
//# sourceMappingURL=chunk-
|
|
315
|
-
//# sourceMappingURL=chunk-
|
|
314
|
+
//# sourceMappingURL=chunk-5GMBJX2D.cjs.map
|
|
315
|
+
//# sourceMappingURL=chunk-5GMBJX2D.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/document-viewer/DocumentViewerApi.ts","../../src/document-viewer/hooks/useTiffToPdf.ts","../../src/document-viewer/DocumentViewer.module.css","../../src/document-viewer/TiffDocumentViewer.tsx","../../src/document-viewer/DocumentViewer.tsx","../../src/public/experimental/document-viewer.ts"],"names":["ViewerType","useOsdkClient","useState","useRef","useEffect","UTIF","transformAndWait","React","Spin","BasePdfViewer","TiffViewer","_extends","useMemo","classnames","PdfViewer","ImageViewer","VideoViewer","MarkdownViewer","SpreadsheetViewer","EmailViewer","XmlViewer","DocumentIcon","assertUnreachable","DocumentViewer","withOsdkMetrics"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBO,IAAI,UAAA,6BAAoCA,WAAAA,EAAY;AACzD,EAAAA,WAAAA,CAAW,KAAK,CAAA,GAAI,KAAA;AACpB,EAAAA,WAAAA,CAAW,MAAM,CAAA,GAAI,MAAA;AACrB,EAAAA,WAAAA,CAAW,OAAO,CAAA,GAAI,OAAA;AACtB,EAAAA,WAAAA,CAAW,OAAO,CAAA,GAAI,OAAA;AACtB,EAAAA,WAAAA,CAAW,UAAU,CAAA,GAAI,UAAA;AACzB,EAAAA,WAAAA,CAAW,aAAa,CAAA,GAAI,aAAA;AAC5B,EAAAA,WAAAA,CAAW,OAAO,CAAA,GAAI,OAAA;AACtB,EAAAA,WAAAA,CAAW,KAAK,CAAA,GAAI,KAAA;AACpB,EAAAA,WAAAA,CAAW,aAAa,CAAA,GAAI,aAAA;AAC5B,EAAA,OAAOA,WAAAA;AACT,CAAA,EAAE,EAAE;ACJJ,IAAM,eAAA,GAAkB;AAAA,EACtB,YAAY,UAAA,CAAW,IAAA;AAAA,EACvB,OAAA,EAAS,MAAA;AAAA,EACT,OAAA,EAAS,KAAA;AAAA,EACT,KAAA,EAAO;AACT,CAAA;AASO,SAAS,YAAA,CAAa,OAAO,OAAA,EAAS;AAC3C,EAAA,MAAM,SAASC,mBAAA,EAAc;AAC7B,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIC,gBAAS,eAAe,CAAA;AACpD,EAAA,MAAM,QAAA,GAAWC,cAAO,KAAK,CAAA;AAC7B,EAAA,QAAA,CAAS,OAAA,GAAU,KAAA;AACnB,EAAAC,gBAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA,SAAA,CAAU,eAAe,CAAA;AACzB,MAAA;AAAA,IACF;AACA,IAAA,IAAI,SAAA,GAAY,KAAA;AAChB,IAAA,SAAA,CAAU;AAAA,MACR,YAAY,UAAA,CAAW,IAAA;AAAA,MACvB,OAAA,EAAS,MAAA;AAAA,MACT,OAAA,EAAS,IAAA;AAAA,MACT,KAAA,EAAO;AAAA,KACR,CAAA;AACD,IAAA,eAAe,kBAAA,GAAqB;AAClC,MAAA,MAAM,eAAe,QAAA,CAAS,OAAA;AAG9B,MAAA,MAAM,QAAA,GAAW,MAAM,YAAA,CAAa,aAAA,EAAc;AAClD,MAAA,MAAM,MAAA,GAAS,MAAM,QAAA,CAAS,WAAA,EAAY;AAC1C,MAAA,IAAI,SAAA,EAAW;AACf,MAAA,MAAM,IAAA,GAAYC,uBAAO,MAAM,CAAA;AAC/B,MAAA,MAAM,YAAY,IAAA,CAAK,MAAA;AACvB,MAAA,IAAI,aAAa,CAAA,EAAG;AAElB,QAAA,IAAI,CAAC,SAAA,EAAW;AACd,UAAA,SAAA,CAAU;AAAA,YACR,YAAY,UAAA,CAAW,IAAA;AAAA,YACvB,OAAA,EAAS,MAAA;AAAA,YACT,OAAA,EAAS,KAAA;AAAA,YACT,KAAA,EAAO;AAAA,WACR,CAAA;AAAA,QACH;AACA,QAAA;AAAA,MACF;AAGA,MAAA,MAAM,WAAA,GAAc,MAAM,MAAA,CAAOC,yBAAgB,EAAE,gBAAA,CAAiB;AAAA,QAClE,KAAA,EAAO,YAAA;AAAA,QACP,cAAA,EAAgB;AAAA,UACd,gBAAA,EAAkB;AAAA,YAChB,UAAA,EAAY;AAAA,cACV,YAAY;AAAC;AACf;AACF;AACF,OACD,CAAA;AACD,MAAA,IAAI,SAAA,EAAW;AACf,MAAA,MAAM,SAAA,GAAY,MAAM,WAAA,CAAY,WAAA,EAAY;AAChD,MAAA,IAAI,CAAC,SAAA,EAAW;AACd,QAAA,SAAA,CAAU;AAAA,UACR,YAAY,UAAA,CAAW,GAAA;AAAA,UACvB,OAAA,EAAS,SAAA;AAAA,UACT,OAAA,EAAS,KAAA;AAAA,UACT,KAAA,EAAO;AAAA,SACR,CAAA;AAAA,MACH;AAAA,IACF;AACA,IAAA,kBAAA,EAAmB,CAAE,MAAM,CAAA,GAAA,KAAO;AAChC,MAAA,IAAI,CAAC,SAAA,EAAW;AAEd,QAAA,OAAA,CAAQ,IAAA,CAAK,iEAAiE,GAAG,CAAA;AACjF,QAAA,SAAA,CAAU;AAAA,UACR,YAAY,UAAA,CAAW,IAAA;AAAA,UACvB,OAAA,EAAS,MAAA;AAAA,UACT,OAAA,EAAS,KAAA;AAAA,UACT,KAAA,EAAO,eAAe,KAAA,GAAQ,GAAA,GAAM,IAAI,KAAA,CAAM,MAAA,CAAO,GAAG,CAAC;AAAA,SAC1D,CAAA;AAAA,MACH;AAAA,IACF,CAAC,CAAA;AACD,IAAA,OAAO,MAAM;AACX,MAAA,SAAA,GAAY,IAAA;AAAA,IACd,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,KAAA,EAAO,OAAA,EAAS,MAAM,CAAC,CAAA;AAC3B,EAAA,OAAO,MAAA;AACT;;;ACnHA,IAAA,sBAAA,GAAA,EAAA;;;ACAA,SAAS,QAAA,GAAW;AAAE,EAAA,OAAO,QAAA,GAAW,OAAO,MAAA,GAAS,MAAA,CAAO,OAAO,IAAA,EAAK,GAAI,SAAU,CAAA,EAAG;AAAE,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,SAAA,CAAU,QAAQ,CAAA,EAAA,EAAK;AAAE,MAAA,IAAI,CAAA,GAAI,UAAU,CAAC,CAAA;AAAG,MAAA,KAAA,IAAS,CAAA,IAAK,CAAA,EAAG,CAAC,IAAI,cAAA,CAAe,IAAA,CAAK,CAAA,EAAG,CAAC,CAAA,KAAM,CAAA,CAAE,CAAC,CAAA,GAAI,EAAE,CAAC,CAAA,CAAA;AAAA,IAAI;AAAE,IAAA,OAAO,CAAA;AAAA,EAAG,CAAA,EAAG,QAAA,CAAS,KAAA,CAAM,IAAA,EAAM,SAAS,CAAA;AAAG;AAwB5Q,SAAS,kBAAA,CAAmB;AAAA,EACjC,KAAA;AAAA,EACA,SAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA;AACF,CAAA,EAAG;AACD,EAAA,MAAM;AAAA,IACJ,UAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GACF,GAAI,YAAA,CAAa,KAAA,EAAO,eAAe,CAAA;AACvC,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,uBAAoBC,uBAAA,CAAM,cAAc,KAAA,EAAO;AAAA,MAC7C;AAAA,KACF,kBAAgBA,uBAAA,CAAM,aAAA,CAAc,KAAA,EAAO;AAAA,MACzC,WAAW,sBAAA,CAAO;AAAA,KACpB,kBAAgBA,uBAAA,CAAM,aAAA,CAAcC,UAAA,EAAM;AAAA,MACxC,WAAW,sBAAA,CAAO;AAAA,KACnB,CAAA,EAAG,2BAA2B,CAAC,CAAA;AAAA,EAClC;AACA,EAAA,IAAI,UAAA,KAAe,UAAA,CAAW,GAAA,IAAO,OAAA,IAAW,IAAA,EAAM;AACpD,IAAA,uBAAoBD,uBAAA,CAAM,aAAA,CAAcE,+BAAA,EAAe,QAAA,CAAS;AAAA,MAC9D,GAAA,EAAK,OAAA;AAAA,MACL;AAAA,KACF,EAAG,cAAc,CAAC,CAAA;AAAA,EACpB;AACA,EAAA,uBAAoBF,uBAAA,CAAM,aAAA,CAAcG,4BAAA,EAAY,QAAA,CAAS;AAAA,IAC3D,KAAA;AAAA,IACA;AAAA,GACF,EAAG,eAAe,CAAC,CAAA;AACrB;;;ACvDA,SAASC,SAAAA,GAAW;AAAE,EAAA,OAAOA,SAAAA,GAAW,OAAO,MAAA,GAAS,MAAA,CAAO,OAAO,IAAA,EAAK,GAAI,SAAU,CAAA,EAAG;AAAE,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,SAAA,CAAU,QAAQ,CAAA,EAAA,EAAK;AAAE,MAAA,IAAI,CAAA,GAAI,UAAU,CAAC,CAAA;AAAG,MAAA,KAAA,IAAS,CAAA,IAAK,CAAA,EAAG,CAAC,IAAI,cAAA,CAAe,IAAA,CAAK,CAAA,EAAG,CAAC,CAAA,KAAM,CAAA,CAAE,CAAC,CAAA,GAAI,EAAE,CAAC,CAAA,CAAA;AAAA,IAAI;AAAE,IAAA,OAAO,CAAA;AAAA,EAAG,CAAA,EAAGA,SAAAA,CAAS,KAAA,CAAM,IAAA,EAAM,SAAS,CAAA;AAAG;AAkCnR,IAAM,gBAAA,mBAAmB,IAAI,GAAA,CAAI,CAAC,WAAA,EAAa,cAAc,WAAA,EAAa,eAAA,EAAiB,YAAA,EAAc,WAAW,CAAC,CAAA;AACrH,IAAM,sCAAsB,IAAI,GAAA,CAAI,CAAC,eAAA,EAAiB,iBAAiB,CAAC,CAAA;AACxE,IAAM,iCAAiB,IAAI,GAAA,CAAI,CAAC,iBAAA,EAAmB,UAAU,CAAC,CAAA;AAC9D,SAAS,UAAA,CAAW,UAAU,QAAA,EAAU;AACtC,EAAA,IAAI,aAAa,YAAA,EAAc;AAC7B,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,MAAM,OAAA,GAAU,UAAU,WAAA,EAAY;AACtC,EAAA,OAAO,OAAA,EAAS,SAAS,MAAM,CAAA,KAAM,QAAQ,OAAA,EAAS,QAAA,CAAS,OAAO,CAAA,KAAM,IAAA;AAC9E;AACA,SAAS,aAAA,CAAc,UAAU,QAAA,EAAU;AACzC,EAAA,IAAI,aAAa,iBAAA,EAAmB;AAClC,IAAA,OAAO,UAAA,CAAW,GAAA;AAAA,EACpB;AACA,EAAA,IAAI,UAAA,CAAW,QAAA,EAAU,QAAQ,CAAA,EAAG;AAClC,IAAA,OAAO,UAAA,CAAW,IAAA;AAAA,EACpB;AACA,EAAA,IAAI,gBAAA,CAAiB,GAAA,CAAI,QAAQ,CAAA,EAAG;AAClC,IAAA,OAAO,UAAA,CAAW,KAAA;AAAA,EACpB;AACA,EAAA,IAAI,QAAA,CAAS,UAAA,CAAW,QAAQ,CAAA,EAAG;AACjC,IAAA,OAAO,UAAA,CAAW,KAAA;AAAA,EACpB;AACA,EAAA,IAAI,mBAAA,CAAoB,GAAA,CAAI,QAAQ,CAAA,EAAG;AACrC,IAAA,OAAO,UAAA,CAAW,QAAA;AAAA,EACpB;AACA,EAAA,IAAI,aAAa,mEAAA,EAAqE;AACpF,IAAA,OAAO,UAAA,CAAW,WAAA;AAAA,EACpB;AACA,EAAA,IAAI,aAAa,gBAAA,EAAkB;AACjC,IAAA,OAAO,UAAA,CAAW,KAAA;AAAA,EACpB;AACA,EAAA,IAAI,cAAA,CAAe,GAAA,CAAI,QAAQ,CAAA,EAAG;AAChC,IAAA,OAAO,UAAA,CAAW,GAAA;AAAA,EACpB;AACA,EAAA,OAAO,UAAA,CAAW,WAAA;AACpB;AACO,SAAS,cAAA,CAAe;AAAA,EAC7B,KAAA;AAAA,EACA,SAAA;AAAA,EACA,gBAAA;AAAA,EACA,cAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,eAAA;AAAA,EACA,iBAAA;AAAA,EACA,QAAA;AAAA,EACA,eAAA,GAAkB;AACpB,CAAA,EAAG;AACD,EAAA,MAAM,QAAA,GAAW,gBAAA,IAAoB,KAAA,CAAM,iBAAA,EAAkB,CAAE,QAAA;AAC/D,EAAA,MAAM,UAAA,GAAaC,cAAA,CAAQ,MAAM,aAAA,CAAc,QAAA,EAAU,QAAQ,CAAA,EAAG,CAAC,QAAA,EAAU,QAAQ,CAAC,CAAA;AACxF,EAAA,MAAM,aAAA,GAAgBC,2BAAA,CAAW,sBAAA,CAAO,SAAA,EAAW,SAAS,CAAA;AAK5D,EAAA,MAAM,0BAA0B,eAAA,IAAmB,iBAAA;AACnD,EAAA,QAAQ,UAAA;AAAY,IAClB,KAAK,UAAA,CAAW,GAAA;AACd,MAAA,uBAAoBN,uBAAAA,CAAM,aAAA,CAAcO,2BAAA,EAAWH,SAAAA,CAAS;AAAA,QAC1D,KAAA;AAAA,QACA,SAAA,EAAW;AAAA,OACb,EAAG,cAAc,CAAC,CAAA;AAAA,IACpB,KAAK,UAAA,CAAW,IAAA;AACd,MAAA,IAAI,eAAA,EAAiB;AACnB,QAAA,uBAAoBJ,uBAAAA,CAAM,aAAA,CAAc,kBAAA,EAAoB;AAAA,UAC1D,KAAA;AAAA,UACA,SAAA,EAAW,aAAA;AAAA,UACX,eAAA;AAAA,UACA,eAAA,EAAiB,uBAAA;AAAA,UACjB;AAAA,SACD,CAAA;AAAA,MACH;AACA,MAAA,uBAAoBA,uBAAAA,CAAM,aAAA,CAAcG,4BAAA,EAAYC,SAAAA,CAAS;AAAA,QAC3D,KAAA;AAAA,QACA,SAAA,EAAW;AAAA,OACb,EAAG,uBAAuB,CAAC,CAAA;AAAA,IAC7B,KAAK,UAAA,CAAW,KAAA;AACd,MAAA,uBAAoBJ,uBAAAA,CAAM,aAAA,CAAcQ,6BAAA,EAAaJ,SAAAA,CAAS;AAAA,QAC5D,KAAA;AAAA,QACA,SAAA,EAAW;AAAA,OACb,EAAG,gBAAgB,CAAC,CAAA;AAAA,IACtB,KAAK,UAAA,CAAW,KAAA;AACd,MAAA,uBAAoBJ,uBAAAA,CAAM,aAAA,CAAcS,6BAAA,EAAaL,SAAAA,CAAS;AAAA,QAC5D,KAAA;AAAA,QACA,SAAA,EAAW;AAAA,OACb,EAAG,gBAAgB,CAAC,CAAA;AAAA,IACtB,KAAK,UAAA,CAAW,QAAA;AACd,MAAA,uBAAoBJ,uBAAAA,CAAM,aAAA,CAAcU,gCAAA,EAAgB;AAAA,QACtD,KAAA;AAAA,QACA,SAAA,EAAW;AAAA,OACZ,CAAA;AAAA,IACH,KAAK,UAAA,CAAW,WAAA;AACd,MAAA,uBAAoBV,uBAAAA,CAAM,aAAA,CAAcW,mCAAA,EAAmB;AAAA,QACzD,KAAA;AAAA,QACA,SAAA,EAAW;AAAA,OACZ,CAAA;AAAA,IACH,KAAK,UAAA,CAAW,KAAA;AACd,MAAA,uBAAoBX,uBAAAA,CAAM,aAAA,CAAcY,6BAAA,EAAa;AAAA,QACnD,KAAA;AAAA,QACA,SAAA,EAAW;AAAA,OACZ,CAAA;AAAA,IACH,KAAK,UAAA,CAAW,GAAA;AACd,MAAA,uBAAoBZ,uBAAAA,CAAM,aAAA,CAAca,2BAAA,EAAW;AAAA,QACjD,KAAA;AAAA,QACA,SAAA,EAAW;AAAA,OACZ,CAAA;AAAA,IACH,KAAK,UAAA,CAAW,WAAA;AACd,MAAA,uBAAoBb,uBAAAA,CAAM,aAAA,CAAc,KAAA,EAAO;AAAA,QAC7C,SAAA,EAAW;AAAA,OACb,kBAAgBA,uBAAAA,CAAM,aAAA,CAAc,KAAA,EAAO;AAAA,QACzC,WAAW,sBAAA,CAAO;AAAA,OACpB,kBAAgBA,uBAAAA,CAAM,aAAA,CAAcc,cAAA,EAAc;AAAA,QAChD,WAAW,sBAAA,CAAO;AAAA,OACnB,CAAA,EAAG,yBAAA,EAA2B,QAAQ,CAAC,CAAA;AAAA,IAC1C;AACE,MAAAC,mCAAA,CAAkB,UAAU,CAAA;AAAA;AAElC;;;ACrIO,IAAMC,eAAAA,GAAiBC,iCAAA,CAAgB,cAAA,EAAiB,gBAAgB","file":"chunk-FYBZCMUF.cjs","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\nexport let ViewerType = /*#__PURE__*/function (ViewerType) {\n ViewerType[\"Pdf\"] = \"pdf\";\n ViewerType[\"Tiff\"] = \"tiff\";\n ViewerType[\"Image\"] = \"image\";\n ViewerType[\"Video\"] = \"video\";\n ViewerType[\"Markdown\"] = \"markdown\";\n ViewerType[\"Spreadsheet\"] = \"spreadsheet\";\n ViewerType[\"Email\"] = \"email\";\n ViewerType[\"Xml\"] = \"xml\";\n ViewerType[\"Unsupported\"] = \"unsupported\";\n return ViewerType;\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\n/* cspell:words ifds */\n\nimport { transformAndWait } from \"@osdk/api/unstable\";\nimport { useOsdkClient } from \"@osdk/react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport * as UTIF from \"utif\";\nimport { ViewerType } from \"../DocumentViewerApi.js\";\nconst DISABLED_RESULT = {\n viewerType: ViewerType.Tiff,\n pdfData: undefined,\n loading: false,\n error: undefined\n};\n\n/**\n * Detects multi-page TIFFs and converts them to PDF via the MIO transform API.\n * Single-page TIFFs are left for the TiffViewer to handle.\n *\n * @param media - The OSDK Media object (must be a TIFF)\n * @param enabled - Whether to attempt multi-page detection and conversion\n */\nexport function useTiffToPdf(media, enabled) {\n const client = useOsdkClient();\n const [result, setResult] = useState(DISABLED_RESULT);\n const mediaRef = useRef(media);\n mediaRef.current = media;\n useEffect(() => {\n if (!enabled) {\n setResult(DISABLED_RESULT);\n return;\n }\n let cancelled = false;\n setResult({\n viewerType: ViewerType.Tiff,\n pdfData: undefined,\n loading: true,\n error: undefined\n });\n async function detectAndTransform() {\n const currentMedia = mediaRef.current;\n\n // Step 1: Fetch TIFF bytes and count pages\n const response = await currentMedia.fetchContents();\n const buffer = await response.arrayBuffer();\n if (cancelled) return;\n const ifds = UTIF.decode(buffer);\n const pageCount = ifds.length;\n if (pageCount <= 1) {\n // Single-page TIFF — use TiffViewer\n if (!cancelled) {\n setResult({\n viewerType: ViewerType.Tiff,\n pdfData: undefined,\n loading: false,\n error: undefined\n });\n }\n return;\n }\n\n // Step 2: Multi-page TIFF — convert to PDF via MIO transform\n const pdfResponse = await client(transformAndWait).transformAndWait({\n media: currentMedia,\n transformation: {\n $imageToDocument: {\n $operation: {\n $createPdf: {}\n }\n }\n }\n });\n if (cancelled) return;\n const pdfBuffer = await pdfResponse.arrayBuffer();\n if (!cancelled) {\n setResult({\n viewerType: ViewerType.Pdf,\n pdfData: pdfBuffer,\n loading: false,\n error: undefined\n });\n }\n }\n detectAndTransform().catch(err => {\n if (!cancelled) {\n // eslint-disable-next-line no-console\n console.warn(\"TIFF to PDF conversion failed, falling back to TIFF renderer:\", err);\n setResult({\n viewerType: ViewerType.Tiff,\n pdfData: undefined,\n loading: false,\n error: err instanceof Error ? err : new Error(String(err))\n });\n }\n });\n return () => {\n cancelled = true;\n };\n }, [media, enabled, client]);\n return result;\n}",".container {\n display: flex;\n width: 100%;\n height: 100%;\n background-color: var(--osdk-document-viewer-bg);\n border: var(--osdk-document-viewer-border);\n border-radius: var(--osdk-surface-border-radius);\n overflow: hidden;\n}\n\n.unsupportedContainer {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--osdk-surface-spacing);\n width: 100%;\n height: 100%;\n font-family: var(--osdk-typography-family-default);\n font-size: var(--osdk-typography-size-body-medium);\n color: var(--osdk-typography-color-muted);\n}\n\n.unsupportedIcon {\n flex-shrink: 0;\n}\n\n.loadingContainer {\n composes: loadingContainer from \"../shared/LoadingError.module.css\";\n width: 100%;\n}\n\n.spinnerIcon {\n composes: spinnerIcon from \"../shared/LoadingError.module.css\";\n}\n","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\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 { Spin } from \"@blueprintjs/icons\";\nimport React from \"react\";\nimport { TiffViewer } from \"../images/tiff-viewer/TiffViewer.js\";\nimport { BasePdfViewer } from \"../pdf-viewer/BasePdfViewer.js\";\nimport { ViewerType } from \"./DocumentViewerApi.js\";\nimport { useTiffToPdf } from \"./hooks/useTiffToPdf.js\";\nimport styles from \"./DocumentViewer.module.css\";\nexport function TiffDocumentViewer({\n media,\n className,\n enableTiffToPdf,\n tiffViewerProps,\n pdfViewerProps\n}) {\n const {\n viewerType,\n pdfData,\n loading\n } = useTiffToPdf(media, enableTiffToPdf);\n if (loading) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: className\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.loadingContainer\n }, /*#__PURE__*/React.createElement(Spin, {\n className: styles.spinnerIcon\n }), \"Converting document\\u2026\"));\n }\n if (viewerType === ViewerType.Pdf && pdfData != null) {\n return /*#__PURE__*/React.createElement(BasePdfViewer, _extends({\n src: pdfData,\n className: className\n }, pdfViewerProps));\n }\n return /*#__PURE__*/React.createElement(TiffViewer, _extends({\n media: media,\n className: className\n }, tiffViewerProps));\n}","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\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\n/* cspell:words openxmlformats officedocument wordprocessingml spreadsheetml */\n\nimport { Document as DocumentIcon } from \"@blueprintjs/icons\";\nimport classnames from \"classnames\";\nimport React, { useMemo } from \"react\";\nimport { EmailViewer } from \"../email-viewer/EmailViewer.js\";\nimport { ImageViewer } from \"../images/image-viewer/ImageViewer.js\";\nimport { TiffViewer } from \"../images/tiff-viewer/TiffViewer.js\";\nimport { MarkdownViewer } from \"../markdown-viewer/MarkdownViewer.js\";\nimport { PdfViewer } from \"../pdf-viewer/PdfViewer.js\";\nimport { assertUnreachable } from \"../shared/assertUnreachable.js\";\nimport { SpreadsheetViewer } from \"../spreadsheet-viewer/SpreadsheetViewer.js\";\nimport { VideoViewer } from \"../video-viewer/VideoViewer.js\";\nimport { XmlViewer } from \"../xml-viewer/XmlViewer.js\";\nimport { ViewerType } from \"./DocumentViewerApi.js\";\nimport { TiffDocumentViewer } from \"./TiffDocumentViewer.js\";\nimport styles from \"./DocumentViewer.module.css\";\nconst IMAGE_MIME_TYPES = new Set([\"image/png\", \"image/jpeg\", \"image/gif\", \"image/svg+xml\", \"image/webp\", \"image/bmp\"]);\nconst MARKDOWN_MIME_TYPES = new Set([\"text/markdown\", \"text/x-markdown\"]);\nconst XML_MIME_TYPES = new Set([\"application/xml\", \"text/xml\"]);\nfunction isTiffFile(mimeType, fileName) {\n if (mimeType === \"image/tiff\") {\n return true;\n }\n const lowered = fileName?.toLowerCase();\n return lowered?.endsWith(\".tif\") === true || lowered?.endsWith(\".tiff\") === true;\n}\nfunction getViewerType(mimeType, fileName) {\n if (mimeType === \"application/pdf\") {\n return ViewerType.Pdf;\n }\n if (isTiffFile(mimeType, fileName)) {\n return ViewerType.Tiff;\n }\n if (IMAGE_MIME_TYPES.has(mimeType)) {\n return ViewerType.Image;\n }\n if (mimeType.startsWith(\"video/\")) {\n return ViewerType.Video;\n }\n if (MARKDOWN_MIME_TYPES.has(mimeType)) {\n return ViewerType.Markdown;\n }\n if (mimeType === \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\") {\n return ViewerType.Spreadsheet;\n }\n if (mimeType === \"message/rfc822\") {\n return ViewerType.Email;\n }\n if (XML_MIME_TYPES.has(mimeType)) {\n return ViewerType.Xml;\n }\n return ViewerType.Unsupported;\n}\nexport function DocumentViewer({\n media,\n className,\n mimeTypeOverride,\n pdfViewerProps,\n imageViewerProps,\n videoViewerProps,\n tiffViewerProps,\n tiffRendererProps,\n fileName,\n enableTiffToPdf = false\n}) {\n const mimeType = mimeTypeOverride ?? media.getMediaReference().mimeType;\n const viewerType = useMemo(() => getViewerType(mimeType, fileName), [mimeType, fileName]);\n const rootClassName = classnames(styles.container, className);\n\n // `tiffRendererProps` is the deprecated name for `tiffViewerProps`. Coalescing\n // (rather than merging) keeps the alias behaving exactly like its replacement\n // and avoids creating a new object identity on every render.\n const resolvedTiffViewerProps = tiffViewerProps ?? tiffRendererProps;\n switch (viewerType) {\n case ViewerType.Pdf:\n return /*#__PURE__*/React.createElement(PdfViewer, _extends({\n media: media,\n className: rootClassName\n }, pdfViewerProps));\n case ViewerType.Tiff:\n if (enableTiffToPdf) {\n return /*#__PURE__*/React.createElement(TiffDocumentViewer, {\n media: media,\n className: rootClassName,\n enableTiffToPdf: enableTiffToPdf,\n tiffViewerProps: resolvedTiffViewerProps,\n pdfViewerProps: pdfViewerProps\n });\n }\n return /*#__PURE__*/React.createElement(TiffViewer, _extends({\n media: media,\n className: rootClassName\n }, resolvedTiffViewerProps));\n case ViewerType.Image:\n return /*#__PURE__*/React.createElement(ImageViewer, _extends({\n media: media,\n className: rootClassName\n }, imageViewerProps));\n case ViewerType.Video:\n return /*#__PURE__*/React.createElement(VideoViewer, _extends({\n media: media,\n className: rootClassName\n }, videoViewerProps));\n case ViewerType.Markdown:\n return /*#__PURE__*/React.createElement(MarkdownViewer, {\n media: media,\n className: rootClassName\n });\n case ViewerType.Spreadsheet:\n return /*#__PURE__*/React.createElement(SpreadsheetViewer, {\n media: media,\n className: rootClassName\n });\n case ViewerType.Email:\n return /*#__PURE__*/React.createElement(EmailViewer, {\n media: media,\n className: rootClassName\n });\n case ViewerType.Xml:\n return /*#__PURE__*/React.createElement(XmlViewer, {\n media: media,\n className: rootClassName\n });\n case ViewerType.Unsupported:\n return /*#__PURE__*/React.createElement(\"div\", {\n className: rootClassName\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.unsupportedContainer\n }, /*#__PURE__*/React.createElement(DocumentIcon, {\n className: styles.unsupportedIcon\n }), \"Unsupported file type: \", mimeType));\n default:\n assertUnreachable(viewerType);\n }\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\n// DocumentViewer\nimport { DocumentViewer as _DocumentViewer } from \"../../document-viewer/DocumentViewer.js\";\nimport { withOsdkMetrics } from \"../../util/withOsdkMetrics.js\";\nexport const DocumentViewer = withOsdkMetrics(_DocumentViewer, \"DocumentViewer\");\nexport { ViewerType } from \"../../document-viewer/DocumentViewerApi.js\";"]}
|
|
1
|
+
{"version":3,"sources":["../../src/document-viewer/DocumentViewerApi.ts","../../src/document-viewer/hooks/useTiffToPdf.ts","../../src/document-viewer/DocumentViewer.module.css","../../src/document-viewer/TiffDocumentViewer.tsx","../../src/document-viewer/DocumentViewer.tsx","../../src/public/experimental/document-viewer.ts"],"names":["ViewerType","useOsdkClient","useState","useRef","useEffect","UTIF","transformAndWait","React","Spin","BasePdfViewer","TiffViewer","_extends","useMemo","classnames","PdfViewer","ImageViewer","VideoViewer","MarkdownViewer","SpreadsheetViewer","EmailViewer","XmlViewer","DocumentIcon","assertUnreachable","DocumentViewer","withOsdkMetrics"],"mappings":"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","file":"chunk-5GMBJX2D.cjs","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\nexport let ViewerType = /*#__PURE__*/function (ViewerType) {\n ViewerType[\"Pdf\"] = \"pdf\";\n ViewerType[\"Tiff\"] = \"tiff\";\n ViewerType[\"Image\"] = \"image\";\n ViewerType[\"Video\"] = \"video\";\n ViewerType[\"Markdown\"] = \"markdown\";\n ViewerType[\"Spreadsheet\"] = \"spreadsheet\";\n ViewerType[\"Email\"] = \"email\";\n ViewerType[\"Xml\"] = \"xml\";\n ViewerType[\"Unsupported\"] = \"unsupported\";\n return ViewerType;\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\n/* cspell:words ifds */\n\nimport { transformAndWait } from \"@osdk/api/unstable\";\nimport { useOsdkClient } from \"@osdk/react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport * as UTIF from \"utif\";\nimport { ViewerType } from \"../DocumentViewerApi.js\";\nconst DISABLED_RESULT = {\n viewerType: ViewerType.Tiff,\n pdfData: undefined,\n loading: false,\n error: undefined\n};\n\n/**\n * Detects multi-page TIFFs and converts them to PDF via the MIO transform API.\n * Single-page TIFFs are left for the TiffViewer to handle.\n *\n * @param media - The OSDK Media object (must be a TIFF)\n * @param enabled - Whether to attempt multi-page detection and conversion\n */\nexport function useTiffToPdf(media, enabled) {\n const client = useOsdkClient();\n const [result, setResult] = useState(DISABLED_RESULT);\n const mediaRef = useRef(media);\n mediaRef.current = media;\n useEffect(() => {\n if (!enabled) {\n setResult(DISABLED_RESULT);\n return;\n }\n let cancelled = false;\n setResult({\n viewerType: ViewerType.Tiff,\n pdfData: undefined,\n loading: true,\n error: undefined\n });\n async function detectAndTransform() {\n const currentMedia = mediaRef.current;\n\n // Step 1: Fetch TIFF bytes and count pages\n const response = await currentMedia.fetchContents();\n const buffer = await response.arrayBuffer();\n if (cancelled) return;\n const ifds = UTIF.decode(buffer);\n const pageCount = ifds.length;\n if (pageCount <= 1) {\n // Single-page TIFF — use TiffViewer\n if (!cancelled) {\n setResult({\n viewerType: ViewerType.Tiff,\n pdfData: undefined,\n loading: false,\n error: undefined\n });\n }\n return;\n }\n\n // Step 2: Multi-page TIFF — convert to PDF via MIO transform\n const pdfResponse = await client(transformAndWait).transformAndWait({\n media: currentMedia,\n transformation: {\n $imageToDocument: {\n $operation: {\n $createPdf: {}\n }\n }\n }\n });\n if (cancelled) return;\n const pdfBuffer = await pdfResponse.arrayBuffer();\n if (!cancelled) {\n setResult({\n viewerType: ViewerType.Pdf,\n pdfData: pdfBuffer,\n loading: false,\n error: undefined\n });\n }\n }\n detectAndTransform().catch(err => {\n if (!cancelled) {\n // eslint-disable-next-line no-console\n console.warn(\"TIFF to PDF conversion failed, falling back to TIFF renderer:\", err);\n setResult({\n viewerType: ViewerType.Tiff,\n pdfData: undefined,\n loading: false,\n error: err instanceof Error ? err : new Error(String(err))\n });\n }\n });\n return () => {\n cancelled = true;\n };\n }, [media, enabled, client]);\n return result;\n}",".container {\n display: flex;\n width: 100%;\n height: 100%;\n background-color: var(--osdk-document-viewer-bg);\n border: var(--osdk-document-viewer-border);\n border-radius: var(--osdk-surface-border-radius);\n overflow: hidden;\n}\n\n.unsupportedContainer {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--osdk-surface-spacing);\n width: 100%;\n height: 100%;\n font-family: var(--osdk-typography-family-default);\n font-size: var(--osdk-typography-size-body-medium);\n color: var(--osdk-typography-color-muted);\n}\n\n.unsupportedIcon {\n flex-shrink: 0;\n}\n\n.loadingContainer {\n composes: loadingContainer from \"../shared/LoadingError.module.css\";\n width: 100%;\n}\n\n.spinnerIcon {\n composes: spinnerIcon from \"../shared/LoadingError.module.css\";\n}\n","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\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 { Spin } from \"@blueprintjs/icons\";\nimport React from \"react\";\nimport { TiffViewer } from \"../images/tiff-viewer/TiffViewer.js\";\nimport { BasePdfViewer } from \"../pdf-viewer/BasePdfViewer.js\";\nimport { ViewerType } from \"./DocumentViewerApi.js\";\nimport { useTiffToPdf } from \"./hooks/useTiffToPdf.js\";\nimport styles from \"./DocumentViewer.module.css\";\nexport function TiffDocumentViewer({\n media,\n className,\n enableTiffToPdf,\n tiffViewerProps,\n pdfViewerProps\n}) {\n const {\n viewerType,\n pdfData,\n loading\n } = useTiffToPdf(media, enableTiffToPdf);\n if (loading) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: className\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.loadingContainer\n }, /*#__PURE__*/React.createElement(Spin, {\n className: styles.spinnerIcon\n }), \"Converting document\\u2026\"));\n }\n if (viewerType === ViewerType.Pdf && pdfData != null) {\n return /*#__PURE__*/React.createElement(BasePdfViewer, _extends({\n src: pdfData,\n className: className\n }, pdfViewerProps));\n }\n return /*#__PURE__*/React.createElement(TiffViewer, _extends({\n media: media,\n className: className\n }, tiffViewerProps));\n}","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\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\n/* cspell:words openxmlformats officedocument wordprocessingml spreadsheetml */\n\nimport { Document as DocumentIcon } from \"@blueprintjs/icons\";\nimport classnames from \"classnames\";\nimport React, { useMemo } from \"react\";\nimport { EmailViewer } from \"../email-viewer/EmailViewer.js\";\nimport { ImageViewer } from \"../images/image-viewer/ImageViewer.js\";\nimport { TiffViewer } from \"../images/tiff-viewer/TiffViewer.js\";\nimport { MarkdownViewer } from \"../markdown-viewer/MarkdownViewer.js\";\nimport { PdfViewer } from \"../pdf-viewer/PdfViewer.js\";\nimport { assertUnreachable } from \"../shared/assertUnreachable.js\";\nimport { SpreadsheetViewer } from \"../spreadsheet-viewer/SpreadsheetViewer.js\";\nimport { VideoViewer } from \"../video-viewer/VideoViewer.js\";\nimport { XmlViewer } from \"../xml-viewer/XmlViewer.js\";\nimport { ViewerType } from \"./DocumentViewerApi.js\";\nimport { TiffDocumentViewer } from \"./TiffDocumentViewer.js\";\nimport styles from \"./DocumentViewer.module.css\";\nconst IMAGE_MIME_TYPES = new Set([\"image/png\", \"image/jpeg\", \"image/gif\", \"image/svg+xml\", \"image/webp\", \"image/bmp\"]);\nconst MARKDOWN_MIME_TYPES = new Set([\"text/markdown\", \"text/x-markdown\"]);\nconst XML_MIME_TYPES = new Set([\"application/xml\", \"text/xml\"]);\nfunction isTiffFile(mimeType, fileName) {\n if (mimeType === \"image/tiff\") {\n return true;\n }\n const lowered = fileName?.toLowerCase();\n return lowered?.endsWith(\".tif\") === true || lowered?.endsWith(\".tiff\") === true;\n}\nfunction getViewerType(mimeType, fileName) {\n if (mimeType === \"application/pdf\") {\n return ViewerType.Pdf;\n }\n if (isTiffFile(mimeType, fileName)) {\n return ViewerType.Tiff;\n }\n if (IMAGE_MIME_TYPES.has(mimeType)) {\n return ViewerType.Image;\n }\n if (mimeType.startsWith(\"video/\")) {\n return ViewerType.Video;\n }\n if (MARKDOWN_MIME_TYPES.has(mimeType)) {\n return ViewerType.Markdown;\n }\n if (mimeType === \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\") {\n return ViewerType.Spreadsheet;\n }\n if (mimeType === \"message/rfc822\") {\n return ViewerType.Email;\n }\n if (XML_MIME_TYPES.has(mimeType)) {\n return ViewerType.Xml;\n }\n return ViewerType.Unsupported;\n}\nexport function DocumentViewer({\n media,\n className,\n mimeTypeOverride,\n pdfViewerProps,\n imageViewerProps,\n videoViewerProps,\n tiffViewerProps,\n tiffRendererProps,\n fileName,\n enableTiffToPdf = false\n}) {\n const mimeType = mimeTypeOverride ?? media.getMediaReference().mimeType;\n const viewerType = useMemo(() => getViewerType(mimeType, fileName), [mimeType, fileName]);\n const rootClassName = classnames(styles.container, className);\n\n // `tiffRendererProps` is the deprecated name for `tiffViewerProps`. Coalescing\n // (rather than merging) keeps the alias behaving exactly like its replacement\n // and avoids creating a new object identity on every render.\n const resolvedTiffViewerProps = tiffViewerProps ?? tiffRendererProps;\n switch (viewerType) {\n case ViewerType.Pdf:\n return /*#__PURE__*/React.createElement(PdfViewer, _extends({\n media: media,\n className: rootClassName\n }, pdfViewerProps));\n case ViewerType.Tiff:\n if (enableTiffToPdf) {\n return /*#__PURE__*/React.createElement(TiffDocumentViewer, {\n media: media,\n className: rootClassName,\n enableTiffToPdf: enableTiffToPdf,\n tiffViewerProps: resolvedTiffViewerProps,\n pdfViewerProps: pdfViewerProps\n });\n }\n return /*#__PURE__*/React.createElement(TiffViewer, _extends({\n media: media,\n className: rootClassName\n }, resolvedTiffViewerProps));\n case ViewerType.Image:\n return /*#__PURE__*/React.createElement(ImageViewer, _extends({\n media: media,\n className: rootClassName\n }, imageViewerProps));\n case ViewerType.Video:\n return /*#__PURE__*/React.createElement(VideoViewer, _extends({\n media: media,\n className: rootClassName\n }, videoViewerProps));\n case ViewerType.Markdown:\n return /*#__PURE__*/React.createElement(MarkdownViewer, {\n media: media,\n className: rootClassName\n });\n case ViewerType.Spreadsheet:\n return /*#__PURE__*/React.createElement(SpreadsheetViewer, {\n media: media,\n className: rootClassName\n });\n case ViewerType.Email:\n return /*#__PURE__*/React.createElement(EmailViewer, {\n media: media,\n className: rootClassName\n });\n case ViewerType.Xml:\n return /*#__PURE__*/React.createElement(XmlViewer, {\n media: media,\n className: rootClassName\n });\n case ViewerType.Unsupported:\n return /*#__PURE__*/React.createElement(\"div\", {\n className: rootClassName\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.unsupportedContainer\n }, /*#__PURE__*/React.createElement(DocumentIcon, {\n className: styles.unsupportedIcon\n }), \"Unsupported file type: \", mimeType));\n default:\n assertUnreachable(viewerType);\n }\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\n// DocumentViewer\nimport { DocumentViewer as _DocumentViewer } from \"../../document-viewer/DocumentViewer.js\";\nimport { withOsdkMetrics } from \"../../util/withOsdkMetrics.js\";\nexport const DocumentViewer = withOsdkMetrics(_DocumentViewer, \"DocumentViewer\");\nexport { ViewerType } from \"../../document-viewer/DocumentViewerApi.js\";"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var chunkHVJTECCC_cjs = require('./chunk-HVJTECCC.cjs');
|
|
4
|
-
var
|
|
4
|
+
var chunkKCVCEHB3_cjs = require('./chunk-KCVCEHB3.cjs');
|
|
5
5
|
var icons = require('@blueprintjs/icons');
|
|
6
6
|
var classnames = require('classnames');
|
|
7
7
|
require('pdfjs-dist/web/pdf_viewer.css');
|
|
@@ -179,12 +179,12 @@ function usePdfViewerInstance(options) {
|
|
|
179
179
|
}
|
|
180
180
|
|
|
181
181
|
// src/public/experimental/pdf-viewer.ts
|
|
182
|
-
var PdfViewer2 =
|
|
182
|
+
var PdfViewer2 = chunkKCVCEHB3_cjs.withOsdkMetrics(chunkHVJTECCC_cjs.PdfViewer, "PdfViewer");
|
|
183
183
|
|
|
184
184
|
exports.PdfViewer = PdfViewer2;
|
|
185
185
|
exports.PdfViewerContent = PdfViewerContent;
|
|
186
186
|
exports.PdfViewerProvider = PdfViewerProvider;
|
|
187
187
|
exports.usePdfViewerContext = usePdfViewerContext;
|
|
188
188
|
exports.usePdfViewerInstance = usePdfViewerInstance;
|
|
189
|
-
//# sourceMappingURL=chunk-
|
|
190
|
-
//# sourceMappingURL=chunk-
|
|
189
|
+
//# sourceMappingURL=chunk-5J5JUNRW.cjs.map
|
|
190
|
+
//# sourceMappingURL=chunk-5J5JUNRW.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/pdf-viewer/components/PdfViewerContent.tsx","../../src/pdf-viewer/PdfViewerContext.tsx","../../src/public/experimental/pdf-viewer.ts"],"names":["EMPTY_ANNOTATION_ARRAY","usePdfViewerCore","usePdfAnnotationsByPage","usePdfFormFields","useRef","useEffect","classnames","BasePdfViewer_default","React","Spin","ErrorIcon","PdfAnnotationOverlay","useContext","usePdfViewerState","usePdfHighlightMode","useMemo","PdfViewer","withOsdkMetrics"],"mappings":"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","file":"chunk-UGESYKH3.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\nimport { Error as ErrorIcon, Spin } from \"@blueprintjs/icons\";\nimport classnames from \"classnames\";\nimport \"pdfjs-dist/web/pdf_viewer.css\";\nimport React, { useEffect, useRef } from \"react\";\nimport { EMPTY_ANNOTATION_ARRAY } from \"../constants.js\";\nimport { usePdfAnnotationsByPage } from \"../hooks/usePdfAnnotationsByPage.js\";\nimport { usePdfFormFields } from \"../hooks/usePdfFormFields.js\";\nimport { usePdfViewerCore } from \"../hooks/usePdfViewerCore.js\";\nimport { PdfAnnotationOverlay } from \"./PdfAnnotationOverlay.js\";\nimport styles from \"../BasePdfViewer.module.css\";\nexport function PdfViewerContent({\n src,\n annotations = EMPTY_ANNOTATION_ARRAY,\n onAnnotationClick,\n initialPage = 1,\n initialScale = 1.0,\n onPageChange: onPageChangeProp,\n onScaleChange: onScaleChangeProp,\n formData,\n onFormChange,\n className\n}) {\n const viewer = usePdfViewerCore({\n src,\n initialPage,\n initialScale\n });\n const annotationsByPage = usePdfAnnotationsByPage(annotations);\n usePdfFormFields({\n pdfViewerRef: viewer.pdfViewerRef,\n eventBusRef: viewer.eventBusRef,\n document: viewer.document,\n formData,\n onFormChange\n });\n\n // Use refs for callbacks to avoid firing on initial mount\n const onPageChangeRef = useRef(onPageChangeProp);\n onPageChangeRef.current = onPageChangeProp;\n const onScaleChangeRef = useRef(onScaleChangeProp);\n onScaleChangeRef.current = onScaleChangeProp;\n const isInitialMountRef = useRef(true);\n useEffect(function notifyPageChange() {\n if (isInitialMountRef.current) {\n return;\n }\n onPageChangeRef.current?.(viewer.currentPage);\n }, [viewer.currentPage]);\n useEffect(function notifyScaleChange() {\n if (isInitialMountRef.current) {\n return;\n }\n onScaleChangeRef.current?.(viewer.scale);\n }, [viewer.scale]);\n useEffect(function clearInitialMount() {\n isInitialMountRef.current = false;\n }, []);\n const rootClassName = classnames(styles.pdfViewer, className);\n if (viewer.loading) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: rootClassName\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.loadingContainer\n }, /*#__PURE__*/React.createElement(Spin, {\n className: styles.spinnerIcon\n }), \"Loading\\u2026\"));\n }\n if (viewer.error != null) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: rootClassName\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.errorContainer\n }, /*#__PURE__*/React.createElement(ErrorIcon, {\n className: styles.errorIcon\n }), \"Failed to load PDF: \", viewer.error.message));\n }\n if (viewer.document == null) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: rootClassName\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.loadingContainer\n }, \"No document\"));\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n className: rootClassName\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.scrollContainerWrapper\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: viewer.containerRef,\n className: styles.scrollContainer\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: viewer.viewerRef,\n className: \"pdfViewer\"\n }), viewer.portalTargets.map(target => {\n const pageAnnotations = annotationsByPage[target.pageNumber] ?? EMPTY_ANNOTATION_ARRAY;\n if (pageAnnotations.length === 0) {\n return null;\n }\n return /*#__PURE__*/React.createElement(PdfAnnotationOverlay, {\n key: target.pageNumber,\n target: target,\n annotations: pageAnnotations,\n onAnnotationClick: onAnnotationClick\n });\n }))));\n}","/*\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\nimport React, { createContext, useContext, useMemo } from \"react\";\nimport { EMPTY_ANNOTATION_ARRAY } from \"./constants.js\";\nimport { usePdfAnnotationsByPage } from \"./hooks/usePdfAnnotationsByPage.js\";\nimport { usePdfFormFields } from \"./hooks/usePdfFormFields.js\";\nimport { usePdfHighlightMode } from \"./hooks/usePdfHighlightMode.js\";\nimport { usePdfViewerState } from \"./hooks/usePdfViewerState.js\";\n\n/** The shape of the value provided by {@link PdfViewerProvider}. */\n\nconst PdfViewerContext = /*#__PURE__*/createContext(null);\n/** Provides {@link PdfViewerContextValue} to descendant components. */\nexport function PdfViewerProvider({\n value,\n children\n}) {\n return /*#__PURE__*/React.createElement(PdfViewerContext.Provider, {\n value: value\n }, children);\n}\n\n/**\n * Returns the nearest {@link PdfViewerContextValue} from a {@link PdfViewerProvider}.\n * Throws if called outside a provider.\n */\nexport function usePdfViewerContext() {\n const ctx = useContext(PdfViewerContext);\n if (ctx == null) {\n throw new Error(\"usePdfViewerContext must be used within a PdfViewerProvider\");\n }\n return ctx;\n}\n\n/**\n * Consumer-facing setup hook analogous to react-hook-form's `useForm()`.\n * Accepts viewer options and returns a {@link PdfViewerContextValue} suitable\n * for passing to {@link PdfViewerProvider}.\n */\nexport function usePdfViewerInstance(options) {\n const viewer = usePdfViewerState({\n src: options.src,\n initialPage: options.initialPage,\n initialScale: options.initialScale,\n initialAutoSize: options.initialAutoSize,\n initialSidebarOpen: options.initialSidebarOpen,\n sidebarMode: options.sidebarMode,\n onDownload: options.onDownload\n });\n const {\n highlightModeActive,\n toggleHighlightMode\n } = usePdfHighlightMode({\n pdfViewerRef: viewer.pdfViewerRef,\n document: viewer.document,\n enabled: options.enableHighlight ?? options.highlightEnabled ?? false,\n onTextHighlight: options.onTextHighlight,\n onHighlightDelete: options.onHighlightDelete\n });\n const {\n hasFormFields,\n submitFormData\n } = usePdfFormFields({\n pdfViewerRef: viewer.pdfViewerRef,\n eventBusRef: viewer.eventBusRef,\n document: viewer.document,\n formData: options.formData,\n onFormSubmit: options.onFormSubmit,\n onFormChange: options.onFormChange\n });\n const annotations = options.annotations ?? EMPTY_ANNOTATION_ARRAY;\n const annotationsByPage = usePdfAnnotationsByPage(annotations);\n\n // `highlightEnabled` is the deprecated spelling of `enableHighlight`.\n const highlightEnabled = options.enableHighlight ?? options.highlightEnabled ?? false;\n const enableDownload = options.enableDownload ?? false;\n const enableFormSave = options.onFormSubmit != null && hasFormFields;\n const {\n onAnnotationClick,\n outlineIcons\n } = options;\n return useMemo(() => ({\n ...viewer,\n highlightEnabled,\n highlightModeActive,\n toggleHighlightMode,\n hasFormFields,\n submitFormData,\n annotations,\n annotationsByPage,\n onAnnotationClick,\n enableDownload,\n enableFormSave,\n outlineIcons\n }), [viewer, highlightEnabled, highlightModeActive, toggleHighlightMode, hasFormFields, submitFormData, annotations, annotationsByPage, onAnnotationClick, enableDownload, enableFormSave, outlineIcons]);\n}","/*\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\n// BasePdfViewer\nexport { BasePdfViewer } from \"../../pdf-viewer/BasePdfViewer.js\";\n// PdfViewer building blocks\nexport { PdfViewerAnnotationLayer } from \"../../pdf-viewer/components/PdfViewerAnnotationLayer.js\";\nexport { PdfViewerContent } from \"../../pdf-viewer/components/PdfViewerContent.js\";\nexport { PdfViewerOutlineSidebar } from \"../../pdf-viewer/components/PdfViewerOutlineSidebar.js\";\nexport { PdfViewerSearchBar } from \"../../pdf-viewer/components/PdfViewerSearchBar.js\";\nexport { PdfViewerSidebar } from \"../../pdf-viewer/components/PdfViewerSidebar.js\";\nexport { PdfViewerToolbar } from \"../../pdf-viewer/components/PdfViewerToolbar.js\";\n\n// PdfViewer hooks — primitive\nexport { usePdfAnnotationPortals } from \"../../pdf-viewer/hooks/usePdfAnnotationPortals.js\";\nexport { usePdfAnnotationsByPage } from \"../../pdf-viewer/hooks/usePdfAnnotationsByPage.js\";\nexport { usePdfDocument } from \"../../pdf-viewer/hooks/usePdfDocument.js\";\nexport { usePdfFormFields } from \"../../pdf-viewer/hooks/usePdfFormFields.js\";\nexport { usePdfHighlightMode } from \"../../pdf-viewer/hooks/usePdfHighlightMode.js\";\nexport { usePdfOutline } from \"../../pdf-viewer/hooks/usePdfOutline.js\";\nexport { usePdfViewer } from \"../../pdf-viewer/hooks/usePdfViewer.js\";\nexport { usePdfViewerSearch } from \"../../pdf-viewer/hooks/usePdfViewerSearch.js\";\nexport { usePdfViewerSync } from \"../../pdf-viewer/hooks/usePdfViewerSync.js\";\n\n// PdfViewer context\n\nexport { PdfViewerProvider, usePdfViewerContext, usePdfViewerInstance } from \"../../pdf-viewer/PdfViewerContext.js\";\n\n// PdfViewer hooks — composition\nexport { usePdfViewerCore } from \"../../pdf-viewer/hooks/usePdfViewerCore.js\";\nexport { usePdfViewerState } from \"../../pdf-viewer/hooks/usePdfViewerState.js\";\n\n// PdfViewer (Media wrapper)\nimport { PdfViewer as _PdfViewer } from \"../../pdf-viewer/PdfViewer.js\";\nimport { withOsdkMetrics } from \"../../util/withOsdkMetrics.js\";\nexport const PdfViewer = withOsdkMetrics(_PdfViewer, \"PdfViewer\");"]}
|
|
1
|
+
{"version":3,"sources":["../../src/pdf-viewer/components/PdfViewerContent.tsx","../../src/pdf-viewer/PdfViewerContext.tsx","../../src/public/experimental/pdf-viewer.ts"],"names":["EMPTY_ANNOTATION_ARRAY","usePdfViewerCore","usePdfAnnotationsByPage","usePdfFormFields","useRef","useEffect","classnames","BasePdfViewer_default","React","Spin","ErrorIcon","PdfAnnotationOverlay","useContext","usePdfViewerState","usePdfHighlightMode","useMemo","PdfViewer","withOsdkMetrics"],"mappings":"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","file":"chunk-5J5JUNRW.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\nimport { Error as ErrorIcon, Spin } from \"@blueprintjs/icons\";\nimport classnames from \"classnames\";\nimport \"pdfjs-dist/web/pdf_viewer.css\";\nimport React, { useEffect, useRef } from \"react\";\nimport { EMPTY_ANNOTATION_ARRAY } from \"../constants.js\";\nimport { usePdfAnnotationsByPage } from \"../hooks/usePdfAnnotationsByPage.js\";\nimport { usePdfFormFields } from \"../hooks/usePdfFormFields.js\";\nimport { usePdfViewerCore } from \"../hooks/usePdfViewerCore.js\";\nimport { PdfAnnotationOverlay } from \"./PdfAnnotationOverlay.js\";\nimport styles from \"../BasePdfViewer.module.css\";\nexport function PdfViewerContent({\n src,\n annotations = EMPTY_ANNOTATION_ARRAY,\n onAnnotationClick,\n initialPage = 1,\n initialScale = 1.0,\n onPageChange: onPageChangeProp,\n onScaleChange: onScaleChangeProp,\n formData,\n onFormChange,\n className\n}) {\n const viewer = usePdfViewerCore({\n src,\n initialPage,\n initialScale\n });\n const annotationsByPage = usePdfAnnotationsByPage(annotations);\n usePdfFormFields({\n pdfViewerRef: viewer.pdfViewerRef,\n eventBusRef: viewer.eventBusRef,\n document: viewer.document,\n formData,\n onFormChange\n });\n\n // Use refs for callbacks to avoid firing on initial mount\n const onPageChangeRef = useRef(onPageChangeProp);\n onPageChangeRef.current = onPageChangeProp;\n const onScaleChangeRef = useRef(onScaleChangeProp);\n onScaleChangeRef.current = onScaleChangeProp;\n const isInitialMountRef = useRef(true);\n useEffect(function notifyPageChange() {\n if (isInitialMountRef.current) {\n return;\n }\n onPageChangeRef.current?.(viewer.currentPage);\n }, [viewer.currentPage]);\n useEffect(function notifyScaleChange() {\n if (isInitialMountRef.current) {\n return;\n }\n onScaleChangeRef.current?.(viewer.scale);\n }, [viewer.scale]);\n useEffect(function clearInitialMount() {\n isInitialMountRef.current = false;\n }, []);\n const rootClassName = classnames(styles.pdfViewer, className);\n if (viewer.loading) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: rootClassName\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.loadingContainer\n }, /*#__PURE__*/React.createElement(Spin, {\n className: styles.spinnerIcon\n }), \"Loading\\u2026\"));\n }\n if (viewer.error != null) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: rootClassName\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.errorContainer\n }, /*#__PURE__*/React.createElement(ErrorIcon, {\n className: styles.errorIcon\n }), \"Failed to load PDF: \", viewer.error.message));\n }\n if (viewer.document == null) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: rootClassName\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.loadingContainer\n }, \"No document\"));\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n className: rootClassName\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.scrollContainerWrapper\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: viewer.containerRef,\n className: styles.scrollContainer\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: viewer.viewerRef,\n className: \"pdfViewer\"\n }), viewer.portalTargets.map(target => {\n const pageAnnotations = annotationsByPage[target.pageNumber] ?? EMPTY_ANNOTATION_ARRAY;\n if (pageAnnotations.length === 0) {\n return null;\n }\n return /*#__PURE__*/React.createElement(PdfAnnotationOverlay, {\n key: target.pageNumber,\n target: target,\n annotations: pageAnnotations,\n onAnnotationClick: onAnnotationClick\n });\n }))));\n}","/*\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\nimport React, { createContext, useContext, useMemo } from \"react\";\nimport { EMPTY_ANNOTATION_ARRAY } from \"./constants.js\";\nimport { usePdfAnnotationsByPage } from \"./hooks/usePdfAnnotationsByPage.js\";\nimport { usePdfFormFields } from \"./hooks/usePdfFormFields.js\";\nimport { usePdfHighlightMode } from \"./hooks/usePdfHighlightMode.js\";\nimport { usePdfViewerState } from \"./hooks/usePdfViewerState.js\";\n\n/** The shape of the value provided by {@link PdfViewerProvider}. */\n\nconst PdfViewerContext = /*#__PURE__*/createContext(null);\n/** Provides {@link PdfViewerContextValue} to descendant components. */\nexport function PdfViewerProvider({\n value,\n children\n}) {\n return /*#__PURE__*/React.createElement(PdfViewerContext.Provider, {\n value: value\n }, children);\n}\n\n/**\n * Returns the nearest {@link PdfViewerContextValue} from a {@link PdfViewerProvider}.\n * Throws if called outside a provider.\n */\nexport function usePdfViewerContext() {\n const ctx = useContext(PdfViewerContext);\n if (ctx == null) {\n throw new Error(\"usePdfViewerContext must be used within a PdfViewerProvider\");\n }\n return ctx;\n}\n\n/**\n * Consumer-facing setup hook analogous to react-hook-form's `useForm()`.\n * Accepts viewer options and returns a {@link PdfViewerContextValue} suitable\n * for passing to {@link PdfViewerProvider}.\n */\nexport function usePdfViewerInstance(options) {\n const viewer = usePdfViewerState({\n src: options.src,\n initialPage: options.initialPage,\n initialScale: options.initialScale,\n initialAutoSize: options.initialAutoSize,\n initialSidebarOpen: options.initialSidebarOpen,\n sidebarMode: options.sidebarMode,\n onDownload: options.onDownload\n });\n const {\n highlightModeActive,\n toggleHighlightMode\n } = usePdfHighlightMode({\n pdfViewerRef: viewer.pdfViewerRef,\n document: viewer.document,\n enabled: options.enableHighlight ?? options.highlightEnabled ?? false,\n onTextHighlight: options.onTextHighlight,\n onHighlightDelete: options.onHighlightDelete\n });\n const {\n hasFormFields,\n submitFormData\n } = usePdfFormFields({\n pdfViewerRef: viewer.pdfViewerRef,\n eventBusRef: viewer.eventBusRef,\n document: viewer.document,\n formData: options.formData,\n onFormSubmit: options.onFormSubmit,\n onFormChange: options.onFormChange\n });\n const annotations = options.annotations ?? EMPTY_ANNOTATION_ARRAY;\n const annotationsByPage = usePdfAnnotationsByPage(annotations);\n\n // `highlightEnabled` is the deprecated spelling of `enableHighlight`.\n const highlightEnabled = options.enableHighlight ?? options.highlightEnabled ?? false;\n const enableDownload = options.enableDownload ?? false;\n const enableFormSave = options.onFormSubmit != null && hasFormFields;\n const {\n onAnnotationClick,\n outlineIcons\n } = options;\n return useMemo(() => ({\n ...viewer,\n highlightEnabled,\n highlightModeActive,\n toggleHighlightMode,\n hasFormFields,\n submitFormData,\n annotations,\n annotationsByPage,\n onAnnotationClick,\n enableDownload,\n enableFormSave,\n outlineIcons\n }), [viewer, highlightEnabled, highlightModeActive, toggleHighlightMode, hasFormFields, submitFormData, annotations, annotationsByPage, onAnnotationClick, enableDownload, enableFormSave, outlineIcons]);\n}","/*\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\n// BasePdfViewer\nexport { BasePdfViewer } from \"../../pdf-viewer/BasePdfViewer.js\";\n// PdfViewer building blocks\nexport { PdfViewerAnnotationLayer } from \"../../pdf-viewer/components/PdfViewerAnnotationLayer.js\";\nexport { PdfViewerContent } from \"../../pdf-viewer/components/PdfViewerContent.js\";\nexport { PdfViewerOutlineSidebar } from \"../../pdf-viewer/components/PdfViewerOutlineSidebar.js\";\nexport { PdfViewerSearchBar } from \"../../pdf-viewer/components/PdfViewerSearchBar.js\";\nexport { PdfViewerSidebar } from \"../../pdf-viewer/components/PdfViewerSidebar.js\";\nexport { PdfViewerToolbar } from \"../../pdf-viewer/components/PdfViewerToolbar.js\";\n\n// PdfViewer hooks — primitive\nexport { usePdfAnnotationPortals } from \"../../pdf-viewer/hooks/usePdfAnnotationPortals.js\";\nexport { usePdfAnnotationsByPage } from \"../../pdf-viewer/hooks/usePdfAnnotationsByPage.js\";\nexport { usePdfDocument } from \"../../pdf-viewer/hooks/usePdfDocument.js\";\nexport { usePdfFormFields } from \"../../pdf-viewer/hooks/usePdfFormFields.js\";\nexport { usePdfHighlightMode } from \"../../pdf-viewer/hooks/usePdfHighlightMode.js\";\nexport { usePdfOutline } from \"../../pdf-viewer/hooks/usePdfOutline.js\";\nexport { usePdfViewer } from \"../../pdf-viewer/hooks/usePdfViewer.js\";\nexport { usePdfViewerSearch } from \"../../pdf-viewer/hooks/usePdfViewerSearch.js\";\nexport { usePdfViewerSync } from \"../../pdf-viewer/hooks/usePdfViewerSync.js\";\n\n// PdfViewer context\n\nexport { PdfViewerProvider, usePdfViewerContext, usePdfViewerInstance } from \"../../pdf-viewer/PdfViewerContext.js\";\n\n// PdfViewer hooks — composition\nexport { usePdfViewerCore } from \"../../pdf-viewer/hooks/usePdfViewerCore.js\";\nexport { usePdfViewerState } from \"../../pdf-viewer/hooks/usePdfViewerState.js\";\n\n// PdfViewer (Media wrapper)\nimport { PdfViewer as _PdfViewer } from \"../../pdf-viewer/PdfViewer.js\";\nimport { withOsdkMetrics } from \"../../util/withOsdkMetrics.js\";\nexport const PdfViewer = withOsdkMetrics(_PdfViewer, \"PdfViewer\");"]}
|
|
@@ -5,7 +5,7 @@ var chunkC6IPNPMZ_cjs = require('./chunk-C6IPNPMZ.cjs');
|
|
|
5
5
|
var chunkHNBSGCSZ_cjs = require('./chunk-HNBSGCSZ.cjs');
|
|
6
6
|
var chunk7LXS66DW_cjs = require('./chunk-7LXS66DW.cjs');
|
|
7
7
|
var chunkQP2LHBCZ_cjs = require('./chunk-QP2LHBCZ.cjs');
|
|
8
|
-
var
|
|
8
|
+
var chunkKCVCEHB3_cjs = require('./chunk-KCVCEHB3.cjs');
|
|
9
9
|
var platformApis = require('@osdk/react/platform-apis');
|
|
10
10
|
var React = require('react');
|
|
11
11
|
var popover = require('@base-ui/react/popover');
|
|
@@ -1059,7 +1059,7 @@ function CbacPicker({
|
|
|
1059
1059
|
}
|
|
1060
1060
|
|
|
1061
1061
|
// src/public/experimental/cbac-picker.ts
|
|
1062
|
-
var CbacPicker2 =
|
|
1062
|
+
var CbacPicker2 = chunkKCVCEHB3_cjs.withOsdkMetrics(CbacPicker, "CbacPicker");
|
|
1063
1063
|
|
|
1064
1064
|
exports.BaseCbacPicker = BaseCbacPicker;
|
|
1065
1065
|
exports.BaseCbacPickerDialog = BaseCbacPickerDialog;
|
|
@@ -1070,5 +1070,5 @@ exports.MaxClassificationField = MaxClassificationField;
|
|
|
1070
1070
|
exports.computeMarkingStates = computeMarkingStates;
|
|
1071
1071
|
exports.groupMarkingsByCategory = groupMarkingsByCategory2;
|
|
1072
1072
|
exports.toggleMarking = toggleMarking;
|
|
1073
|
-
//# sourceMappingURL=chunk-
|
|
1074
|
-
//# sourceMappingURL=chunk-
|
|
1073
|
+
//# sourceMappingURL=chunk-AT63MZL2.cjs.map
|
|
1074
|
+
//# sourceMappingURL=chunk-AT63MZL2.cjs.map
|