@osdk/react-components 0.27.0 → 0.28.0-main-1aeba37ae6a5cc24c73b7c01e10acba6b6078d87

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/build/browser/object-table/DefaultCellRenderer.js +12 -0
  3. package/build/browser/object-table/DefaultCellRenderer.js.map +1 -1
  4. package/build/browser/object-table/Table.js.map +1 -1
  5. package/build/browser/object-table/components/CbacMarkingCell.js +31 -0
  6. package/build/browser/object-table/components/CbacMarkingCell.js.map +1 -0
  7. package/build/browser/object-table/components/MandatoryMarkingCell.js +41 -0
  8. package/build/browser/object-table/components/MandatoryMarkingCell.js.map +1 -0
  9. package/build/browser/object-table/components/MandatoryMarkingCell.module.css +10 -0
  10. package/build/browser/object-table/components/MandatoryMarkingCell.module.css.js +7 -0
  11. package/build/browser/object-table/hooks/useColumnDefs.js +2 -0
  12. package/build/browser/object-table/hooks/useColumnDefs.js.map +1 -1
  13. package/build/browser/object-table/utils/markingValue.js +38 -0
  14. package/build/browser/object-table/utils/markingValue.js.map +1 -0
  15. package/build/browser/styles.css +13 -0
  16. package/build/browser/util/UserAgent.js +1 -1
  17. package/build/browser/util/UserAgent.js.map +1 -1
  18. package/build/cjs/{chunk-76WC644D.cjs → chunk-2FV525Y2.cjs} +4 -4
  19. package/build/cjs/{chunk-76WC644D.cjs.map → chunk-2FV525Y2.cjs.map} +1 -1
  20. package/build/cjs/chunk-3YZ7WQKB.cjs +11 -0
  21. package/build/cjs/{chunk-WV267H2C.cjs.map → chunk-3YZ7WQKB.cjs.map} +1 -1
  22. package/build/cjs/chunk-4ZREFFAI.cjs +11 -0
  23. package/build/cjs/{chunk-6E4GBYIW.cjs.map → chunk-4ZREFFAI.cjs.map} +1 -1
  24. package/build/cjs/chunk-67XUEVEQ.cjs +11 -0
  25. package/build/cjs/{chunk-U35KSZVY.cjs.map → chunk-67XUEVEQ.cjs.map} +1 -1
  26. package/build/cjs/{chunk-LYDFGXDQ.cjs → chunk-6TPEW5OW.cjs} +417 -356
  27. package/build/cjs/chunk-6TPEW5OW.cjs.map +1 -0
  28. package/build/cjs/chunk-ABM2P46C.cjs +11 -0
  29. package/build/cjs/{chunk-KDF6WIDM.cjs.map → chunk-ABM2P46C.cjs.map} +1 -1
  30. package/build/cjs/{chunk-Q7WLFDL4.cjs → chunk-JKK33B3S.cjs} +4 -4
  31. package/build/cjs/{chunk-Q7WLFDL4.cjs.map → chunk-JKK33B3S.cjs.map} +1 -1
  32. package/build/cjs/{chunk-FO5CHXTP.cjs → chunk-KS2TDPR6.cjs} +3 -3
  33. package/build/cjs/chunk-KS2TDPR6.cjs.map +1 -0
  34. package/build/cjs/{chunk-G7KK3TDF.cjs → chunk-MCT6EITU.cjs} +161 -276
  35. package/build/cjs/chunk-MCT6EITU.cjs.map +1 -0
  36. package/build/cjs/{chunk-VL4VZJ6J.cjs → chunk-MU4TEOGN.cjs} +4 -4
  37. package/build/cjs/{chunk-VL4VZJ6J.cjs.map → chunk-MU4TEOGN.cjs.map} +1 -1
  38. package/build/cjs/chunk-T6IJOSLP.cjs +11 -0
  39. package/build/cjs/{chunk-GDEAEMAN.cjs.map → chunk-T6IJOSLP.cjs.map} +1 -1
  40. package/build/cjs/{chunk-BPCDFFIB.cjs → chunk-TA3RQXNC.cjs} +4 -4
  41. package/build/cjs/{chunk-BPCDFFIB.cjs.map → chunk-TA3RQXNC.cjs.map} +1 -1
  42. package/build/cjs/{chunk-WQOG6LR4.cjs → chunk-VUV5FRPJ.cjs} +4 -4
  43. package/build/cjs/{chunk-WQOG6LR4.cjs.map → chunk-VUV5FRPJ.cjs.map} +1 -1
  44. package/build/cjs/{chunk-J3AQ2RZM.cjs → chunk-WEMO5TGU.cjs} +4 -4
  45. package/build/cjs/{chunk-J3AQ2RZM.cjs.map → chunk-WEMO5TGU.cjs.map} +1 -1
  46. package/build/cjs/chunk-ZMAWPOG5.cjs +136 -0
  47. package/build/cjs/chunk-ZMAWPOG5.cjs.map +1 -0
  48. package/build/cjs/public/experimental/action-form.cjs +4 -4
  49. package/build/cjs/public/experimental/cbac-picker.cjs +20 -19
  50. package/build/cjs/public/experimental/document-viewer.cjs +4 -4
  51. package/build/cjs/public/experimental/email-viewer.cjs +3 -3
  52. package/build/cjs/public/experimental/excel-viewer.cjs +3 -3
  53. package/build/cjs/public/experimental/filter-list.cjs +15 -15
  54. package/build/cjs/public/experimental/image-viewer.cjs +3 -3
  55. package/build/cjs/public/experimental/markdown-renderer.cjs +3 -3
  56. package/build/cjs/public/experimental/object-table.cjs +9 -8
  57. package/build/cjs/public/experimental/object-table.css +64 -0
  58. package/build/cjs/public/experimental/object-table.css.map +1 -1
  59. package/build/cjs/public/experimental/object-table.d.cts +8 -0
  60. package/build/cjs/public/experimental/pdf-viewer.cjs +7 -7
  61. package/build/cjs/public/experimental/tiff-renderer.cjs +3 -3
  62. package/build/cjs/public/experimental/video-viewer.cjs +3 -3
  63. package/build/cjs/public/experimental/xml-viewer.cjs +3 -3
  64. package/build/cjs/public/experimental.cjs +67 -66
  65. package/build/cjs/public/experimental.css +11 -0
  66. package/build/cjs/public/experimental.css.map +1 -1
  67. package/build/esm/object-table/DefaultCellRenderer.js +12 -0
  68. package/build/esm/object-table/DefaultCellRenderer.js.map +1 -1
  69. package/build/esm/object-table/Table.js.map +1 -1
  70. package/build/esm/object-table/components/CbacMarkingCell.js +31 -0
  71. package/build/esm/object-table/components/CbacMarkingCell.js.map +1 -0
  72. package/build/esm/object-table/components/MandatoryMarkingCell.js +41 -0
  73. package/build/esm/object-table/components/MandatoryMarkingCell.js.map +1 -0
  74. package/build/esm/object-table/components/MandatoryMarkingCell.module.css +10 -0
  75. package/build/esm/object-table/hooks/useColumnDefs.js +2 -0
  76. package/build/esm/object-table/hooks/useColumnDefs.js.map +1 -1
  77. package/build/esm/object-table/utils/markingValue.js +38 -0
  78. package/build/esm/object-table/utils/markingValue.js.map +1 -0
  79. package/build/esm/util/UserAgent.js +1 -1
  80. package/build/esm/util/UserAgent.js.map +1 -1
  81. package/build/types/object-table/DefaultCellRenderer.d.ts.map +1 -1
  82. package/build/types/object-table/Table.d.ts +8 -0
  83. package/build/types/object-table/Table.d.ts.map +1 -1
  84. package/build/types/object-table/components/CbacMarkingCell.d.ts +5 -0
  85. package/build/types/object-table/components/CbacMarkingCell.d.ts.map +1 -0
  86. package/build/types/object-table/components/MandatoryMarkingCell.d.ts +10 -0
  87. package/build/types/object-table/components/MandatoryMarkingCell.d.ts.map +1 -0
  88. package/build/types/object-table/utils/markingValue.d.ts +9 -0
  89. package/build/types/object-table/utils/markingValue.d.ts.map +1 -0
  90. package/package.json +2 -2
  91. package/build/cjs/chunk-6E4GBYIW.cjs +0 -11
  92. package/build/cjs/chunk-FO5CHXTP.cjs.map +0 -1
  93. package/build/cjs/chunk-G7KK3TDF.cjs.map +0 -1
  94. package/build/cjs/chunk-GDEAEMAN.cjs +0 -11
  95. package/build/cjs/chunk-KDF6WIDM.cjs +0 -11
  96. package/build/cjs/chunk-LYDFGXDQ.cjs.map +0 -1
  97. package/build/cjs/chunk-U35KSZVY.cjs +0 -11
  98. package/build/cjs/chunk-WV267H2C.cjs +0 -11
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @osdk/react-components
2
2
 
3
+ ## 0.28.0-main-1aeba37ae6a5cc24c73b7c01e10acba6b6078d87
4
+
5
+ ### Minor Changes
6
+
7
+ - 37344db: Render CBAC and MANDATORY marking property columns in `ObjectTable`. Columns backed by marking properties whose `typeMetadata.markingType` is `"CBAC"` now render via the `CbacBanner`, and `"MANDATORY"` marking columns render one pill per marking on the row. Columns whose marking subtype isn't surfaced by the platform fall back to the previous default rendering.
8
+
3
9
  ## 0.27.0
4
10
 
5
11
  ### Minor Changes
@@ -16,6 +16,8 @@
16
16
 
17
17
  import React from "react";
18
18
  import { AsyncValueCell } from "./components/AsyncValueCell.js";
19
+ import { CbacMarkingCell } from "./components/CbacMarkingCell.js";
20
+ import { MandatoryMarkingCell } from "./components/MandatoryMarkingCell.js";
19
21
  import { EditableCell } from "./EditableCell.js";
20
22
  import styles from "./EditableCell.module.css.js";
21
23
  import { isAsyncCellData } from "./utils/AsyncCellData.js";
@@ -55,6 +57,16 @@ export function renderDefaultCell(cellContext) {
55
57
  if (columnMeta?.isAsyncColumn && asyncCellData) {
56
58
  return /*#__PURE__*/React.createElement(AsyncValueCell, asyncCellData);
57
59
  }
60
+ if (columnMeta?.markingType === "CBAC") {
61
+ return /*#__PURE__*/React.createElement(CbacMarkingCell, {
62
+ value: cellValue
63
+ });
64
+ }
65
+ if (columnMeta?.markingType === "MANDATORY") {
66
+ return /*#__PURE__*/React.createElement(MandatoryMarkingCell, {
67
+ value: cellValue
68
+ });
69
+ }
58
70
  const rowData = cellContext.row.original;
59
71
  const isEditable = isCellEditable(columnMeta?.editable, rowData);
60
72
  if (!meta?.onCellEdit // Type guard
@@ -1 +1 @@
1
- {"version":3,"file":"DefaultCellRenderer.js","names":["React","AsyncValueCell","EditableCell","styles","isAsyncCellData","isCellEditable","getCellId","shouldShowEditableCell","toDisplayValue","value","String","filterCellEditsToRow","cellEdits","rowId","undefined","result","edit","Object","values","columnId","renderDefaultCell","cellContext","meta","table","options","columnMeta","column","columnDef","cellValue","getValue","asyncCellData","isAsyncColumn","createElement","rowData","row","original","isEditable","editable","onCellEdit","isInEditMode","className","nonEditableCellInEditMode","Fragment","id","cellId","editedValue","currentValue","newValue","validationError","validationErrors","get","isRowFocused","focusedRowId","rowCellEdits","initialValue","dataType","editFieldConfig","onCellValidationError","clearCellValidationError","originalRowData","validateEdit"],"sources":["DefaultCellRenderer.tsx"],"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 { CellContext, RowData } from \"@tanstack/react-table\";\nimport React from \"react\";\nimport { AsyncValueCell } from \"./components/AsyncValueCell.js\";\nimport { EditableCell } from \"./EditableCell.js\";\nimport styles from \"./EditableCell.module.css\";\nimport { isAsyncCellData } from \"./utils/AsyncCellData.js\";\nimport { isCellEditable } from \"./utils/editableUtils.js\";\nimport { getCellId } from \"./utils/getCellId.js\";\nimport { shouldShowEditableCell } from \"./utils/shouldShowEditableCell.js\";\nimport type { CellEditInfo } from \"./utils/types.js\";\n\nfunction toDisplayValue(value: unknown): React.ReactNode {\n if (typeof value === \"boolean\") {\n return String(value);\n }\n return value as React.ReactNode;\n}\n\n// Returns the subset of `cellEdits` belonging to `rowId`, re-keyed by columnId.\n// Returns `undefined` (stable reference) when the row has no pending edits, so\n// that `React.memo` on `EditableCell` can skip re-renders of unedited rows when\n// edits change elsewhere in the table.\nfunction filterCellEditsToRow<TData extends RowData>(\n cellEdits: Record<string, CellEditInfo<TData, unknown>> | undefined,\n rowId: string,\n): Record<string, CellEditInfo<TData, unknown>> | undefined {\n if (!cellEdits) return undefined;\n let result: Record<string, CellEditInfo<TData, unknown>> | undefined;\n for (const edit of Object.values(cellEdits)) {\n if (edit.rowId === rowId) {\n result ??= {};\n result[edit.columnId] = edit;\n }\n }\n return result;\n}\n\nexport function renderDefaultCell<TData extends RowData>(\n cellContext: CellContext<TData, unknown>,\n): React.ReactNode {\n const meta = cellContext.table.options.meta;\n const columnMeta = cellContext.column.columnDef.meta;\n\n const cellValue = cellContext.getValue();\n\n const asyncCellData = isAsyncCellData(cellValue)\n ? cellValue\n : undefined;\n\n // Function-backed columns are read-only: the value is server-computed\n // and cannot be edited in the table. Return the async cell directly.\n if (columnMeta?.isAsyncColumn && asyncCellData) {\n return <AsyncValueCell {...asyncCellData} />;\n }\n\n const rowData = cellContext.row.original;\n const isEditable = isCellEditable(columnMeta?.editable, rowData);\n\n if (\n !meta?.onCellEdit // Type guard\n || !shouldShowEditableCell(\n isEditable,\n meta?.onCellEdit,\n meta?.isInEditMode,\n )\n ) {\n // Align non editable cells with the editable cells\n if (meta?.isInEditMode) {\n return (\n <span className={styles.nonEditableCellInEditMode}>\n {toDisplayValue(cellValue)}\n </span>\n );\n }\n\n return <>{toDisplayValue(cellValue)}</>;\n }\n\n const rowId = cellContext.row.id;\n const columnId = cellContext.column.id;\n const cellId = getCellId({ rowId, columnId });\n\n const cellEdits = meta.cellEdits;\n const editedValue = cellEdits?.[cellId];\n // If newValue is explicitly set to null, treat it as null. Otherwise, fall back to the original cell value.\n const currentValue = editedValue?.newValue === undefined\n ? cellValue\n : editedValue?.newValue;\n const validationError = meta.validationErrors?.get(cellId);\n const isRowFocused = meta.focusedRowId === rowId;\n const rowCellEdits = filterCellEditsToRow(cellEdits, rowId);\n\n return (\n <EditableCell<TData>\n initialValue={cellValue}\n currentValue={currentValue}\n cellId={cellId}\n dataType={columnMeta?.dataType}\n editFieldConfig={columnMeta?.editFieldConfig}\n rowCellEdits={rowCellEdits}\n onCellEdit={meta.onCellEdit}\n onCellValidationError={meta.onCellValidationError}\n clearCellValidationError={meta.clearCellValidationError}\n originalRowData={rowData}\n rowId={rowId}\n columnId={columnId}\n validateEdit={columnMeta?.validateEdit}\n validationError={validationError}\n isRowFocused={isRowFocused}\n />\n );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,cAAc,QAAQ,gCAAgC;AAC/D,SAASC,YAAY,QAAQ,mBAAmB;AAChD,OAAOC,MAAM,MAAM,2BAA2B;AAC9C,SAASC,eAAe,QAAQ,0BAA0B;AAC1D,SAASC,cAAc,QAAQ,0BAA0B;AACzD,SAASC,SAAS,QAAQ,sBAAsB;AAChD,SAASC,sBAAsB,QAAQ,mCAAmC;AAG1E,SAASC,cAAcA,CAACC,KAAc,EAAmB;EACvD,IAAI,OAAOA,KAAK,KAAK,SAAS,EAAE;IAC9B,OAAOC,MAAM,CAACD,KAAK,CAAC;EACtB;EACA,OAAOA,KAAK;AACd;;AAEA;AACA;AACA;AACA;AACA,SAASE,oBAAoBA,CAC3BC,SAAmE,EACnEC,KAAa,EAC6C;EAC1D,IAAI,CAACD,SAAS,EAAE,OAAOE,SAAS;EAChC,IAAIC,MAAgE;EACpE,KAAK,MAAMC,IAAI,IAAIC,MAAM,CAACC,MAAM,CAACN,SAAS,CAAC,EAAE;IAC3C,IAAII,IAAI,CAACH,KAAK,KAAKA,KAAK,EAAE;MACxBE,MAAM,KAAK,CAAC,CAAC;MACbA,MAAM,CAACC,IAAI,CAACG,QAAQ,CAAC,GAAGH,IAAI;IAC9B;EACF;EACA,OAAOD,MAAM;AACf;AAEA,OAAO,SAASK,iBAAiBA,CAC/BC,WAAwC,EACvB;EACjB,MAAMC,IAAI,GAAGD,WAAW,CAACE,KAAK,CAACC,OAAO,CAACF,IAAI;EAC3C,MAAMG,UAAU,GAAGJ,WAAW,CAACK,MAAM,CAACC,SAAS,CAACL,IAAI;EAEpD,MAAMM,SAAS,GAAGP,WAAW,CAACQ,QAAQ,CAAC,CAAC;EAExC,MAAMC,aAAa,GAAG1B,eAAe,CAACwB,SAAS,CAAC,GAC5CA,SAAS,GACTd,SAAS;;EAEb;EACA;EACA,IAAIW,UAAU,EAAEM,aAAa,IAAID,aAAa,EAAE;IAC9C,oBAAO9B,KAAA,CAAAgC,aAAA,CAAC/B,cAAc,EAAK6B,aAAgB,CAAC;EAC9C;EAEA,MAAMG,OAAO,GAAGZ,WAAW,CAACa,GAAG,CAACC,QAAQ;EACxC,MAAMC,UAAU,GAAG/B,cAAc,CAACoB,UAAU,EAAEY,QAAQ,EAAEJ,OAAO,CAAC;EAEhE,IACE,CAACX,IAAI,EAAEgB,UAAU,CAAC;EAAA,GACf,CAAC/B,sBAAsB,CACxB6B,UAAU,EACVd,IAAI,EAAEgB,UAAU,EAChBhB,IAAI,EAAEiB,YACR,CAAC,EACD;IACA;IACA,IAAIjB,IAAI,EAAEiB,YAAY,EAAE;MACtB,oBACEvC,KAAA,CAAAgC,aAAA;QAAMQ,SAAS,EAAErC,MAAM,CAACsC;MAA0B,GAC/CjC,cAAc,CAACoB,SAAS,CACrB,CAAC;IAEX;IAEA,oBAAO5B,KAAA,CAAAgC,aAAA,CAAAhC,KAAA,CAAA0C,QAAA,QAAGlC,cAAc,CAACoB,SAAS,CAAI,CAAC;EACzC;EAEA,MAAMf,KAAK,GAAGQ,WAAW,CAACa,GAAG,CAACS,EAAE;EAChC,MAAMxB,QAAQ,GAAGE,WAAW,CAACK,MAAM,CAACiB,EAAE;EACtC,MAAMC,MAAM,GAAGtC,SAAS,CAAC;IAAEO,KAAK;IAAEM;EAAS,CAAC,CAAC;EAE7C,MAAMP,SAAS,GAAGU,IAAI,CAACV,SAAS;EAChC,MAAMiC,WAAW,GAAGjC,SAAS,GAAGgC,MAAM,CAAC;EACvC;EACA,MAAME,YAAY,GAAGD,WAAW,EAAEE,QAAQ,KAAKjC,SAAS,GACpDc,SAAS,GACTiB,WAAW,EAAEE,QAAQ;EACzB,MAAMC,eAAe,GAAG1B,IAAI,CAAC2B,gBAAgB,EAAEC,GAAG,CAACN,MAAM,CAAC;EAC1D,MAAMO,YAAY,GAAG7B,IAAI,CAAC8B,YAAY,KAAKvC,KAAK;EAChD,MAAMwC,YAAY,GAAG1C,oBAAoB,CAACC,SAAS,EAAEC,KAAK,CAAC;EAE3D,oBACEb,KAAA,CAAAgC,aAAA,CAAC9B,YAAY;IACXoD,YAAY,EAAE1B,SAAU;IACxBkB,YAAY,EAAEA,YAAa;IAC3BF,MAAM,EAAEA,MAAO;IACfW,QAAQ,EAAE9B,UAAU,EAAE8B,QAAS;IAC/BC,eAAe,EAAE/B,UAAU,EAAE+B,eAAgB;IAC7CH,YAAY,EAAEA,YAAa;IAC3Bf,UAAU,EAAEhB,IAAI,CAACgB,UAAW;IAC5BmB,qBAAqB,EAAEnC,IAAI,CAACmC,qBAAsB;IAClDC,wBAAwB,EAAEpC,IAAI,CAACoC,wBAAyB;IACxDC,eAAe,EAAE1B,OAAQ;IACzBpB,KAAK,EAAEA,KAAM;IACbM,QAAQ,EAAEA,QAAS;IACnByC,YAAY,EAAEnC,UAAU,EAAEmC,YAAa;IACvCZ,eAAe,EAAEA,eAAgB;IACjCG,YAAY,EAAEA;EAAa,CAC5B,CAAC;AAEN","ignoreList":[]}
1
+ {"version":3,"file":"DefaultCellRenderer.js","names":["React","AsyncValueCell","CbacMarkingCell","MandatoryMarkingCell","EditableCell","styles","isAsyncCellData","isCellEditable","getCellId","shouldShowEditableCell","toDisplayValue","value","String","filterCellEditsToRow","cellEdits","rowId","undefined","result","edit","Object","values","columnId","renderDefaultCell","cellContext","meta","table","options","columnMeta","column","columnDef","cellValue","getValue","asyncCellData","isAsyncColumn","createElement","markingType","rowData","row","original","isEditable","editable","onCellEdit","isInEditMode","className","nonEditableCellInEditMode","Fragment","id","cellId","editedValue","currentValue","newValue","validationError","validationErrors","get","isRowFocused","focusedRowId","rowCellEdits","initialValue","dataType","editFieldConfig","onCellValidationError","clearCellValidationError","originalRowData","validateEdit"],"sources":["DefaultCellRenderer.tsx"],"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 { CellContext, RowData } from \"@tanstack/react-table\";\nimport React from \"react\";\nimport { AsyncValueCell } from \"./components/AsyncValueCell.js\";\nimport { CbacMarkingCell } from \"./components/CbacMarkingCell.js\";\nimport { MandatoryMarkingCell } from \"./components/MandatoryMarkingCell.js\";\nimport { EditableCell } from \"./EditableCell.js\";\nimport styles from \"./EditableCell.module.css\";\nimport { isAsyncCellData } from \"./utils/AsyncCellData.js\";\nimport { isCellEditable } from \"./utils/editableUtils.js\";\nimport { getCellId } from \"./utils/getCellId.js\";\nimport { shouldShowEditableCell } from \"./utils/shouldShowEditableCell.js\";\nimport type { CellEditInfo } from \"./utils/types.js\";\n\nfunction toDisplayValue(value: unknown): React.ReactNode {\n if (typeof value === \"boolean\") {\n return String(value);\n }\n return value as React.ReactNode;\n}\n\n// Returns the subset of `cellEdits` belonging to `rowId`, re-keyed by columnId.\n// Returns `undefined` (stable reference) when the row has no pending edits, so\n// that `React.memo` on `EditableCell` can skip re-renders of unedited rows when\n// edits change elsewhere in the table.\nfunction filterCellEditsToRow<TData extends RowData>(\n cellEdits: Record<string, CellEditInfo<TData, unknown>> | undefined,\n rowId: string,\n): Record<string, CellEditInfo<TData, unknown>> | undefined {\n if (!cellEdits) return undefined;\n let result: Record<string, CellEditInfo<TData, unknown>> | undefined;\n for (const edit of Object.values(cellEdits)) {\n if (edit.rowId === rowId) {\n result ??= {};\n result[edit.columnId] = edit;\n }\n }\n return result;\n}\n\nexport function renderDefaultCell<TData extends RowData>(\n cellContext: CellContext<TData, unknown>,\n): React.ReactNode {\n const meta = cellContext.table.options.meta;\n const columnMeta = cellContext.column.columnDef.meta;\n\n const cellValue = cellContext.getValue();\n\n const asyncCellData = isAsyncCellData(cellValue)\n ? cellValue\n : undefined;\n\n // Function-backed columns are read-only: the value is server-computed\n // and cannot be edited in the table. Return the async cell directly.\n if (columnMeta?.isAsyncColumn && asyncCellData) {\n return <AsyncValueCell {...asyncCellData} />;\n }\n\n if (columnMeta?.markingType === \"CBAC\") {\n return <CbacMarkingCell value={cellValue} />;\n }\n\n if (columnMeta?.markingType === \"MANDATORY\") {\n return <MandatoryMarkingCell value={cellValue} />;\n }\n\n const rowData = cellContext.row.original;\n const isEditable = isCellEditable(columnMeta?.editable, rowData);\n\n if (\n !meta?.onCellEdit // Type guard\n || !shouldShowEditableCell(\n isEditable,\n meta?.onCellEdit,\n meta?.isInEditMode,\n )\n ) {\n // Align non editable cells with the editable cells\n if (meta?.isInEditMode) {\n return (\n <span className={styles.nonEditableCellInEditMode}>\n {toDisplayValue(cellValue)}\n </span>\n );\n }\n\n return <>{toDisplayValue(cellValue)}</>;\n }\n\n const rowId = cellContext.row.id;\n const columnId = cellContext.column.id;\n const cellId = getCellId({ rowId, columnId });\n\n const cellEdits = meta.cellEdits;\n const editedValue = cellEdits?.[cellId];\n // If newValue is explicitly set to null, treat it as null. Otherwise, fall back to the original cell value.\n const currentValue = editedValue?.newValue === undefined\n ? cellValue\n : editedValue?.newValue;\n const validationError = meta.validationErrors?.get(cellId);\n const isRowFocused = meta.focusedRowId === rowId;\n const rowCellEdits = filterCellEditsToRow(cellEdits, rowId);\n\n return (\n <EditableCell<TData>\n initialValue={cellValue}\n currentValue={currentValue}\n cellId={cellId}\n dataType={columnMeta?.dataType}\n editFieldConfig={columnMeta?.editFieldConfig}\n rowCellEdits={rowCellEdits}\n onCellEdit={meta.onCellEdit}\n onCellValidationError={meta.onCellValidationError}\n clearCellValidationError={meta.clearCellValidationError}\n originalRowData={rowData}\n rowId={rowId}\n columnId={columnId}\n validateEdit={columnMeta?.validateEdit}\n validationError={validationError}\n isRowFocused={isRowFocused}\n />\n );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"Table.js","names":["classNames","React","useCallback","useEffect","useRef","useState","PortalContainerProvider","useFocusedRow","LoadingStateTable","NonIdealState","styles","TableBody","TableEditContainer","TableHeader","SCROLL_FETCH_THRESHOLD","isColumnDeclaredEditable","PortalTrackerProvider","usePortalTracker","BaseTable","props","createElement","BaseTableInner","table","isLoading","fetchNextPage","onRowClick","onColumnHeaderClick","rowHeight","renderCellContextMenu","className","error","headerMenuFeatureFlags","editableConfig","getRowAttributes","showEditFooter","renderEmptyState","focusedRowId","focusedRowIdProp","onFocusedRowChanged","tableContainerRef","objectTablePortalRef","isLoadingMore","setIsLoadingMore","getRowById","id","getRow","original","setFocusedRowId","portalTracker","options","meta","fetchingRef","fetchMoreOnEndReached","containerRefElement","current","scrollHeight","scrollTop","clientHeight","handleScroll","e","currentTarget","rows","getRowModel","headerGroups","getHeaderGroups","hasData","length","hasEditableColumns","getAllColumns","some","column","columnDef","editable","handleClickOutside","event","target","contains","containsElement","document","addEventListener","removeEventListener","container","ref","osdkTableWrapper","osdkTableContainer","onScroll","Fragment","isInEditMode","editModeState","isActive","message","hasFocusedRow"],"sources":["Table.tsx"],"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 { Cell, RowData, Table } from \"@tanstack/react-table\";\nimport classNames from \"classnames\";\nimport React, {\n type ReactElement,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { PortalContainerProvider } from \"../shared/PortalContainerContext.js\";\nimport { useFocusedRow } from \"./hooks/useFocusedRow.js\";\nimport { LoadingStateTable } from \"./LoadingStateTable.js\";\nimport { NonIdealState } from \"./NonIdealState.js\";\nimport styles from \"./Table.module.css\";\nimport { TableBody } from \"./TableBody.js\";\nimport { TableEditContainer } from \"./TableEditContainer.js\";\nimport { TableHeader } from \"./TableHeader.js\";\nimport type { HeaderMenuFeatureFlags } from \"./TableHeaderWithPopover.js\";\nimport { SCROLL_FETCH_THRESHOLD } from \"./utils/constants.js\";\nimport { isColumnDeclaredEditable } from \"./utils/editableUtils.js\";\nimport {\n PortalTrackerProvider,\n usePortalTracker,\n} from \"./utils/PortalTracker.js\";\nimport type {\n CellEditInfo,\n EditableConfig,\n EditFieldConfig,\n} from \"./utils/types.js\";\n\ndeclare module \"@tanstack/react-table\" {\n interface ColumnMeta<TData extends RowData = unknown, TValue = unknown> {\n columnName?: string;\n isAsyncColumn?: boolean;\n isVisible?: boolean;\n editable?: boolean | ((object: TData) => boolean);\n dataType?: string;\n editFieldConfig?: EditFieldConfig<TData>;\n validateEdit?: (value: unknown) => Promise<string | undefined>;\n }\n interface TableMeta<TData extends RowData = unknown> {\n onCellEdit?: (\n cellId: string,\n info: CellEditInfo<TData, unknown>,\n ) => void;\n onCellValidationError?: (\n cellId: string,\n error: string,\n ) => void;\n clearCellValidationError?: (cellId: string) => void;\n cellEdits?: Record<string, CellEditInfo<TData, unknown>>;\n isInEditMode?: boolean;\n validationErrors?: Map<string, string>;\n focusedRowId?: string | null;\n }\n}\n\nexport interface BaseTableProps<\n TData extends RowData,\n> {\n table: Table<TData>;\n isLoading?: boolean;\n fetchNextPage?: () => Promise<void>;\n onRowClick?: (row: TData) => void;\n onColumnHeaderClick?: (columnId: string) => void;\n rowHeight?: number;\n renderCellContextMenu?: (\n row: TData,\n cell: Cell<TData, unknown>,\n ) => React.ReactNode;\n className?: string;\n error?: Error;\n headerMenuFeatureFlags?: HeaderMenuFeatureFlags;\n editableConfig?: EditableConfig<TData, unknown>;\n getRowAttributes?: (\n object: TData,\n ) => Record<string, string | undefined>;\n /**\n * Whether to render the bottom edit footer. Defaults to `true`; the\n * footer is only rendered when the table has at least one editable\n * column (`hasEditableColumns`).\n */\n showEditFooter?: boolean;\n /**\n * Render override for the empty state. Called when the table has no\n * rows and no error. When omitted, a default \"No Data\" indicator is\n * rendered.\n */\n renderEmptyState?: () => React.ReactNode;\n /**\n * Controlled focused row id. `undefined` enables internal management\n */\n focusedRowId?: string | null;\n /**\n * Fires whenever the focused row changes, in both controlled and\n * uncontrolled modes.\n */\n onFocusedRowChanged?: (row: TData | null) => void;\n}\n\nexport function BaseTable<\n TData extends RowData,\n>(props: BaseTableProps<TData>): ReactElement {\n return (\n <PortalTrackerProvider>\n <BaseTableInner {...props} />\n </PortalTrackerProvider>\n );\n}\n\nfunction BaseTableInner<\n TData extends RowData,\n>(\n {\n table,\n isLoading,\n fetchNextPage,\n onRowClick,\n onColumnHeaderClick,\n rowHeight,\n renderCellContextMenu,\n className,\n error,\n headerMenuFeatureFlags,\n editableConfig,\n getRowAttributes,\n showEditFooter = true,\n renderEmptyState,\n focusedRowId: focusedRowIdProp,\n onFocusedRowChanged,\n }: BaseTableProps<TData>,\n): ReactElement {\n const tableContainerRef = useRef<HTMLDivElement>(null);\n const objectTablePortalRef = useRef<HTMLDivElement>(null);\n const [isLoadingMore, setIsLoadingMore] = useState(false);\n\n const getRowById = useCallback(\n (id: string) => {\n try {\n return table.getRow(id, true)?.original ?? null;\n } catch {\n // table.getRow throws when the id no longer matches a row\n // (e.g. the row was removed or has not loaded yet). Treat a\n // missing row as \"no focus\" rather than crashing.\n return null;\n }\n },\n [table],\n );\n\n const {\n focusedRowId,\n setFocusedRowId,\n } = useFocusedRow<TData>({\n focusedRowId: focusedRowIdProp,\n onFocusedRowChanged,\n getRowById,\n });\n const portalTracker = usePortalTracker();\n\n // Sync focusedRowId into table meta so cell renderers (which only\n // receive `table`) can read it without extra prop drilling.\n // Assigned synchronously so children see the current value in the\n // same render pass. This is safe because meta is a mutable bag that\n // TanStack Table never snapshots or shallow-compares.\n if (table.options.meta) {\n table.options.meta.focusedRowId = focusedRowId;\n }\n\n // Using a ref to prevent duplicate fetches from rapid scroll events while a fetch is in-flight\n const fetchingRef = useRef(false);\n\n useEffect(() => {\n if (!isLoading || fetchNextPage == null) {\n setIsLoadingMore(false);\n }\n }, [isLoading, fetchNextPage]);\n\n const fetchMoreOnEndReached = useCallback(\n async (containerRefElement?: HTMLDivElement | null) => {\n if (containerRefElement && !fetchingRef.current && !isLoadingMore) {\n const { scrollHeight, scrollTop, clientHeight } = containerRefElement;\n if (\n scrollHeight - scrollTop - clientHeight < SCROLL_FETCH_THRESHOLD\n && !isLoading && fetchNextPage != null\n ) {\n fetchingRef.current = true;\n setIsLoadingMore(true);\n try {\n await fetchNextPage();\n } finally {\n fetchingRef.current = false;\n }\n }\n }\n },\n [fetchNextPage, isLoading, isLoadingMore],\n );\n\n const handleScroll = useCallback(\n async (e: React.UIEvent<HTMLDivElement>) => {\n await fetchMoreOnEndReached(e.currentTarget);\n },\n [fetchMoreOnEndReached],\n );\n\n const rows = table.getRowModel().rows;\n const headerGroups = table.getHeaderGroups();\n const hasData = rows.length > 0;\n\n const hasEditableColumns = table\n .getAllColumns()\n .some((column) =>\n isColumnDeclaredEditable(column.columnDef.meta?.editable)\n );\n\n // Use pointerdown instead of click to detect outside interactions.\n // base-ui's Select renders a full-screen backdrop that intercepts\n // pointerdown to close the popup. By the time the click event fires,\n // the backdrop is unmounted and event.target falls through to <body>,\n // which would incorrectly trigger the outside-click handler.\n // At pointerdown time the backdrop is still in the DOM, so\n // portalTracker.containsElement correctly identifies it.\n useEffect(() => {\n const handleClickOutside = (event: PointerEvent) => {\n const target = event.target as Node;\n if (\n tableContainerRef.current\n && !tableContainerRef.current.contains(target)\n && !portalTracker?.containsElement(target)\n ) {\n setFocusedRowId(null);\n }\n };\n\n document.addEventListener(\"pointerdown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"pointerdown\", handleClickOutside);\n };\n }, [portalTracker, setFocusedRowId]);\n\n return (\n <PortalContainerProvider container={objectTablePortalRef}>\n <div\n ref={objectTablePortalRef}\n className={classNames(styles.osdkTableWrapper, className)}\n >\n <div\n ref={tableContainerRef}\n className={styles.osdkTableContainer}\n onScroll={handleScroll}\n >\n <table>\n {isLoading && !hasData\n ? (\n <LoadingStateTable\n table={table}\n headerGroups={headerGroups}\n rowHeight={rowHeight}\n tableContainerRef={tableContainerRef}\n />\n )\n : (\n <>\n <TableHeader\n table={table}\n headerMenuFeatureFlags={headerMenuFeatureFlags}\n onColumnHeaderClick={onColumnHeaderClick}\n />\n <TableBody\n rows={rows}\n tableContainerRef={tableContainerRef}\n onRowClick={onRowClick}\n rowHeight={rowHeight}\n renderCellContextMenu={renderCellContextMenu}\n isLoadingMore={isLoadingMore}\n headerGroups={headerGroups}\n focusedRowId={focusedRowId}\n setFocusedRowId={setFocusedRowId}\n isInEditMode={editableConfig?.editModeState.isActive}\n getRowAttributes={getRowAttributes}\n />\n </>\n )}\n </table>\n {!hasData && error == null && (\n renderEmptyState != null\n ? renderEmptyState()\n : <NonIdealState message={\"No Data\"} />\n )}\n {error != null && (\n <NonIdealState message={`Error Loading Data: ${error.message}`} />\n )}\n </div>\n {showEditFooter && hasEditableColumns && editableConfig && (\n <TableEditContainer\n editableConfig={editableConfig}\n hasFocusedRow={focusedRowId != null}\n />\n )}\n </div>\n </PortalContainerProvider>\n );\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Table.js","names":["classNames","React","useCallback","useEffect","useRef","useState","PortalContainerProvider","useFocusedRow","LoadingStateTable","NonIdealState","styles","TableBody","TableEditContainer","TableHeader","SCROLL_FETCH_THRESHOLD","isColumnDeclaredEditable","PortalTrackerProvider","usePortalTracker","BaseTable","props","createElement","BaseTableInner","table","isLoading","fetchNextPage","onRowClick","onColumnHeaderClick","rowHeight","renderCellContextMenu","className","error","headerMenuFeatureFlags","editableConfig","getRowAttributes","showEditFooter","renderEmptyState","focusedRowId","focusedRowIdProp","onFocusedRowChanged","tableContainerRef","objectTablePortalRef","isLoadingMore","setIsLoadingMore","getRowById","id","getRow","original","setFocusedRowId","portalTracker","options","meta","fetchingRef","fetchMoreOnEndReached","containerRefElement","current","scrollHeight","scrollTop","clientHeight","handleScroll","e","currentTarget","rows","getRowModel","headerGroups","getHeaderGroups","hasData","length","hasEditableColumns","getAllColumns","some","column","columnDef","editable","handleClickOutside","event","target","contains","containsElement","document","addEventListener","removeEventListener","container","ref","osdkTableWrapper","osdkTableContainer","onScroll","Fragment","isInEditMode","editModeState","isActive","message","hasFocusedRow"],"sources":["Table.tsx"],"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 { Cell, RowData, Table } from \"@tanstack/react-table\";\nimport classNames from \"classnames\";\nimport React, {\n type ReactElement,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { PortalContainerProvider } from \"../shared/PortalContainerContext.js\";\nimport { useFocusedRow } from \"./hooks/useFocusedRow.js\";\nimport { LoadingStateTable } from \"./LoadingStateTable.js\";\nimport { NonIdealState } from \"./NonIdealState.js\";\nimport styles from \"./Table.module.css\";\nimport { TableBody } from \"./TableBody.js\";\nimport { TableEditContainer } from \"./TableEditContainer.js\";\nimport { TableHeader } from \"./TableHeader.js\";\nimport type { HeaderMenuFeatureFlags } from \"./TableHeaderWithPopover.js\";\nimport { SCROLL_FETCH_THRESHOLD } from \"./utils/constants.js\";\nimport { isColumnDeclaredEditable } from \"./utils/editableUtils.js\";\nimport {\n PortalTrackerProvider,\n usePortalTracker,\n} from \"./utils/PortalTracker.js\";\nimport type {\n CellEditInfo,\n EditableConfig,\n EditFieldConfig,\n} from \"./utils/types.js\";\n\ndeclare module \"@tanstack/react-table\" {\n interface ColumnMeta<TData extends RowData = unknown, TValue = unknown> {\n columnName?: string;\n isAsyncColumn?: boolean;\n isVisible?: boolean;\n editable?: boolean | ((object: TData) => boolean);\n dataType?: string;\n /**\n * For columns backed by a `\"marking\"` property, the marking subtype as\n * surfaced by the platform: `\"CBAC\"` for classification-based access\n * control or `\"MANDATORY\"` for mandatory markings. Absent for\n * non-marking columns and for marking columns whose subtype isn't\n * exposed.\n */\n markingType?: \"CBAC\" | \"MANDATORY\";\n editFieldConfig?: EditFieldConfig<TData>;\n validateEdit?: (value: unknown) => Promise<string | undefined>;\n }\n interface TableMeta<TData extends RowData = unknown> {\n onCellEdit?: (\n cellId: string,\n info: CellEditInfo<TData, unknown>,\n ) => void;\n onCellValidationError?: (\n cellId: string,\n error: string,\n ) => void;\n clearCellValidationError?: (cellId: string) => void;\n cellEdits?: Record<string, CellEditInfo<TData, unknown>>;\n isInEditMode?: boolean;\n validationErrors?: Map<string, string>;\n focusedRowId?: string | null;\n }\n}\n\nexport interface BaseTableProps<\n TData extends RowData,\n> {\n table: Table<TData>;\n isLoading?: boolean;\n fetchNextPage?: () => Promise<void>;\n onRowClick?: (row: TData) => void;\n onColumnHeaderClick?: (columnId: string) => void;\n rowHeight?: number;\n renderCellContextMenu?: (\n row: TData,\n cell: Cell<TData, unknown>,\n ) => React.ReactNode;\n className?: string;\n error?: Error;\n headerMenuFeatureFlags?: HeaderMenuFeatureFlags;\n editableConfig?: EditableConfig<TData, unknown>;\n getRowAttributes?: (\n object: TData,\n ) => Record<string, string | undefined>;\n /**\n * Whether to render the bottom edit footer. Defaults to `true`; the\n * footer is only rendered when the table has at least one editable\n * column (`hasEditableColumns`).\n */\n showEditFooter?: boolean;\n /**\n * Render override for the empty state. Called when the table has no\n * rows and no error. When omitted, a default \"No Data\" indicator is\n * rendered.\n */\n renderEmptyState?: () => React.ReactNode;\n /**\n * Controlled focused row id. `undefined` enables internal management\n */\n focusedRowId?: string | null;\n /**\n * Fires whenever the focused row changes, in both controlled and\n * uncontrolled modes.\n */\n onFocusedRowChanged?: (row: TData | null) => void;\n}\n\nexport function BaseTable<\n TData extends RowData,\n>(props: BaseTableProps<TData>): ReactElement {\n return (\n <PortalTrackerProvider>\n <BaseTableInner {...props} />\n </PortalTrackerProvider>\n );\n}\n\nfunction BaseTableInner<\n TData extends RowData,\n>(\n {\n table,\n isLoading,\n fetchNextPage,\n onRowClick,\n onColumnHeaderClick,\n rowHeight,\n renderCellContextMenu,\n className,\n error,\n headerMenuFeatureFlags,\n editableConfig,\n getRowAttributes,\n showEditFooter = true,\n renderEmptyState,\n focusedRowId: focusedRowIdProp,\n onFocusedRowChanged,\n }: BaseTableProps<TData>,\n): ReactElement {\n const tableContainerRef = useRef<HTMLDivElement>(null);\n const objectTablePortalRef = useRef<HTMLDivElement>(null);\n const [isLoadingMore, setIsLoadingMore] = useState(false);\n\n const getRowById = useCallback(\n (id: string) => {\n try {\n return table.getRow(id, true)?.original ?? null;\n } catch {\n // table.getRow throws when the id no longer matches a row\n // (e.g. the row was removed or has not loaded yet). Treat a\n // missing row as \"no focus\" rather than crashing.\n return null;\n }\n },\n [table],\n );\n\n const {\n focusedRowId,\n setFocusedRowId,\n } = useFocusedRow<TData>({\n focusedRowId: focusedRowIdProp,\n onFocusedRowChanged,\n getRowById,\n });\n const portalTracker = usePortalTracker();\n\n // Sync focusedRowId into table meta so cell renderers (which only\n // receive `table`) can read it without extra prop drilling.\n // Assigned synchronously so children see the current value in the\n // same render pass. This is safe because meta is a mutable bag that\n // TanStack Table never snapshots or shallow-compares.\n if (table.options.meta) {\n table.options.meta.focusedRowId = focusedRowId;\n }\n\n // Using a ref to prevent duplicate fetches from rapid scroll events while a fetch is in-flight\n const fetchingRef = useRef(false);\n\n useEffect(() => {\n if (!isLoading || fetchNextPage == null) {\n setIsLoadingMore(false);\n }\n }, [isLoading, fetchNextPage]);\n\n const fetchMoreOnEndReached = useCallback(\n async (containerRefElement?: HTMLDivElement | null) => {\n if (containerRefElement && !fetchingRef.current && !isLoadingMore) {\n const { scrollHeight, scrollTop, clientHeight } = containerRefElement;\n if (\n scrollHeight - scrollTop - clientHeight < SCROLL_FETCH_THRESHOLD\n && !isLoading && fetchNextPage != null\n ) {\n fetchingRef.current = true;\n setIsLoadingMore(true);\n try {\n await fetchNextPage();\n } finally {\n fetchingRef.current = false;\n }\n }\n }\n },\n [fetchNextPage, isLoading, isLoadingMore],\n );\n\n const handleScroll = useCallback(\n async (e: React.UIEvent<HTMLDivElement>) => {\n await fetchMoreOnEndReached(e.currentTarget);\n },\n [fetchMoreOnEndReached],\n );\n\n const rows = table.getRowModel().rows;\n const headerGroups = table.getHeaderGroups();\n const hasData = rows.length > 0;\n\n const hasEditableColumns = table\n .getAllColumns()\n .some((column) =>\n isColumnDeclaredEditable(column.columnDef.meta?.editable)\n );\n\n // Use pointerdown instead of click to detect outside interactions.\n // base-ui's Select renders a full-screen backdrop that intercepts\n // pointerdown to close the popup. By the time the click event fires,\n // the backdrop is unmounted and event.target falls through to <body>,\n // which would incorrectly trigger the outside-click handler.\n // At pointerdown time the backdrop is still in the DOM, so\n // portalTracker.containsElement correctly identifies it.\n useEffect(() => {\n const handleClickOutside = (event: PointerEvent) => {\n const target = event.target as Node;\n if (\n tableContainerRef.current\n && !tableContainerRef.current.contains(target)\n && !portalTracker?.containsElement(target)\n ) {\n setFocusedRowId(null);\n }\n };\n\n document.addEventListener(\"pointerdown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"pointerdown\", handleClickOutside);\n };\n }, [portalTracker, setFocusedRowId]);\n\n return (\n <PortalContainerProvider container={objectTablePortalRef}>\n <div\n ref={objectTablePortalRef}\n className={classNames(styles.osdkTableWrapper, className)}\n >\n <div\n ref={tableContainerRef}\n className={styles.osdkTableContainer}\n onScroll={handleScroll}\n >\n <table>\n {isLoading && !hasData\n ? (\n <LoadingStateTable\n table={table}\n headerGroups={headerGroups}\n rowHeight={rowHeight}\n tableContainerRef={tableContainerRef}\n />\n )\n : (\n <>\n <TableHeader\n table={table}\n headerMenuFeatureFlags={headerMenuFeatureFlags}\n onColumnHeaderClick={onColumnHeaderClick}\n />\n <TableBody\n rows={rows}\n tableContainerRef={tableContainerRef}\n onRowClick={onRowClick}\n rowHeight={rowHeight}\n renderCellContextMenu={renderCellContextMenu}\n isLoadingMore={isLoadingMore}\n headerGroups={headerGroups}\n focusedRowId={focusedRowId}\n setFocusedRowId={setFocusedRowId}\n isInEditMode={editableConfig?.editModeState.isActive}\n getRowAttributes={getRowAttributes}\n />\n </>\n )}\n </table>\n {!hasData && error == null && (\n renderEmptyState != null\n ? renderEmptyState()\n : <NonIdealState message={\"No Data\"} />\n )}\n {error != null && (\n <NonIdealState message={`Error Loading Data: ${error.message}`} />\n )}\n </div>\n {showEditFooter && hasEditableColumns && editableConfig && (\n <TableEditContainer\n editableConfig={editableConfig}\n hasFocusedRow={focusedRowId != null}\n />\n )}\n </div>\n </PortalContainerProvider>\n );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,31 @@
1
+ /*
2
+ * Copyright 2026 Palantir Technologies, Inc. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import React from "react";
18
+ import { CbacBanner } from "../../cbac-picker/CbacBanner.js";
19
+ import { toMarkingIdArray } from "../utils/markingValue.js";
20
+ export function CbacMarkingCell({
21
+ value
22
+ }) {
23
+ const markingIds = toMarkingIdArray(value);
24
+ if (markingIds.length === 0) {
25
+ return null;
26
+ }
27
+ return /*#__PURE__*/React.createElement(CbacBanner, {
28
+ markingIds: markingIds
29
+ });
30
+ }
31
+ //# sourceMappingURL=CbacMarkingCell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CbacMarkingCell.js","names":["React","CbacBanner","toMarkingIdArray","CbacMarkingCell","value","markingIds","length","createElement"],"sources":["CbacMarkingCell.tsx"],"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 React from \"react\";\nimport { CbacBanner } from \"../../cbac-picker/CbacBanner.js\";\nimport { toMarkingIdArray } from \"../utils/markingValue.js\";\n\nexport interface CbacMarkingCellProps {\n value: unknown;\n}\n\nexport function CbacMarkingCell({\n value,\n}: CbacMarkingCellProps): React.ReactNode {\n const markingIds = toMarkingIdArray(value);\n if (markingIds.length === 0) {\n return null;\n }\n return <CbacBanner markingIds={markingIds} />;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,UAAU,QAAQ,iCAAiC;AAC5D,SAASC,gBAAgB,QAAQ,0BAA0B;AAM3D,OAAO,SAASC,eAAeA,CAAC;EAC9BC;AACoB,CAAC,EAAmB;EACxC,MAAMC,UAAU,GAAGH,gBAAgB,CAACE,KAAK,CAAC;EAC1C,IAAIC,UAAU,CAACC,MAAM,KAAK,CAAC,EAAE;IAC3B,OAAO,IAAI;EACb;EACA,oBAAON,KAAA,CAAAO,aAAA,CAACN,UAAU;IAACI,UAAU,EAAEA;EAAW,CAAE,CAAC;AAC/C","ignoreList":[]}
@@ -0,0 +1,41 @@
1
+ /*
2
+ * Copyright 2026 Palantir Technologies, Inc. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import React from "react";
18
+ import { CbacBanner } from "../../cbac-picker/CbacBanner.js";
19
+ import { toMarkingIdArray } from "../utils/markingValue.js";
20
+ import styles from "./MandatoryMarkingCell.module.css.js";
21
+ /**
22
+ * Renders one CBAC-resolved banner per marking on the row. MANDATORY marking
23
+ * columns render per-marking (rather than via a single combined banner) so
24
+ * each individual marking on the object is visible at a glance.
25
+ */
26
+ export function MandatoryMarkingCell({
27
+ value
28
+ }) {
29
+ const markingIds = toMarkingIdArray(value);
30
+ if (markingIds.length === 0) {
31
+ return null;
32
+ }
33
+ return /*#__PURE__*/React.createElement("span", {
34
+ className: styles.container
35
+ }, markingIds.map(id => /*#__PURE__*/React.createElement(CbacBanner, {
36
+ key: id,
37
+ markingIds: [id],
38
+ className: styles.pill
39
+ })));
40
+ }
41
+ //# sourceMappingURL=MandatoryMarkingCell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MandatoryMarkingCell.js","names":["React","CbacBanner","toMarkingIdArray","styles","MandatoryMarkingCell","value","markingIds","length","createElement","className","container","map","id","key","pill"],"sources":["MandatoryMarkingCell.tsx"],"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 React from \"react\";\nimport { CbacBanner } from \"../../cbac-picker/CbacBanner.js\";\nimport { toMarkingIdArray } from \"../utils/markingValue.js\";\nimport styles from \"./MandatoryMarkingCell.module.css\";\n\nexport interface MandatoryMarkingCellProps {\n value: unknown;\n}\n\n/**\n * Renders one CBAC-resolved banner per marking on the row. MANDATORY marking\n * columns render per-marking (rather than via a single combined banner) so\n * each individual marking on the object is visible at a glance.\n */\nexport function MandatoryMarkingCell({\n value,\n}: MandatoryMarkingCellProps): React.ReactNode {\n const markingIds = toMarkingIdArray(value);\n if (markingIds.length === 0) {\n return null;\n }\n return (\n <span className={styles.container}>\n {markingIds.map((id) => (\n <CbacBanner key={id} markingIds={[id]} className={styles.pill} />\n ))}\n </span>\n );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,UAAU,QAAQ,iCAAiC;AAC5D,SAASC,gBAAgB,QAAQ,0BAA0B;AAC3D,OAAOC,MAAM,MAAM,mCAAmC;AAMtD;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,oBAAoBA,CAAC;EACnCC;AACyB,CAAC,EAAmB;EAC7C,MAAMC,UAAU,GAAGJ,gBAAgB,CAACG,KAAK,CAAC;EAC1C,IAAIC,UAAU,CAACC,MAAM,KAAK,CAAC,EAAE;IAC3B,OAAO,IAAI;EACb;EACA,oBACEP,KAAA,CAAAQ,aAAA;IAAMC,SAAS,EAAEN,MAAM,CAACO;EAAU,GAC/BJ,UAAU,CAACK,GAAG,CAAEC,EAAE,iBACjBZ,KAAA,CAAAQ,aAAA,CAACP,UAAU;IAACY,GAAG,EAAED,EAAG;IAACN,UAAU,EAAE,CAACM,EAAE,CAAE;IAACH,SAAS,EAAEN,MAAM,CAACW;EAAK,CAAE,CACjE,CACG,CAAC;AAEX","ignoreList":[]}
@@ -0,0 +1,10 @@
1
+ .container {
2
+ display: flex;
3
+ flex-wrap: wrap;
4
+ gap: var(--osdk-surface-spacing);
5
+ align-items: center;
6
+ }
7
+
8
+ .pill {
9
+ max-width: 100%;
10
+ }
@@ -0,0 +1,7 @@
1
+ // CSS Module proxy for MandatoryMarkingCell.module.css
2
+ const styles = {
3
+ "container": "MandatoryMarkingCell-module__container___nPKIpcIn",
4
+ "pill": "MandatoryMarkingCell-module__pill___Gr2phUmD"
5
+ };
6
+
7
+ export default styles;
@@ -63,6 +63,7 @@ function getColumnsFromColumnDefinitions(columnDefinitions, objectProperties) {
63
63
  const propertyMetadata = locator.type === "property" ? objectProperties?.[locator.id] : undefined;
64
64
  const colKey = locator.id;
65
65
  const dataType = propertyMetadata?.type && typeof propertyMetadata.type === "string" ? propertyMetadata.type : undefined;
66
+ const markingType = propertyMetadata?.typeMetadata?.type === "marking" ? propertyMetadata.typeMetadata.markingType : undefined;
66
67
  const colDef = {
67
68
  id: colKey,
68
69
  accessorKey: colKey,
@@ -74,6 +75,7 @@ function getColumnsFromColumnDefinitions(columnDefinitions, objectProperties) {
74
75
  editable,
75
76
  editFieldConfig,
76
77
  dataType,
78
+ markingType,
77
79
  validateEdit
78
80
  },
79
81
  size: width,
@@ -1 +1 @@
1
- {"version":3,"file":"useColumnDefs.js","names":["useOsdkMetadata","useMemo","renderDefaultCell","shouldShowEditableCell","useColumnDefs","objectType","columnDefinitions","metadata","loading","error","columns","objectProperties","properties","getColumnsFromColumnDefinitions","getDefaultColumns","map","col","locator","width","minWidth","maxWidth","resizable","orderable","filterable","editable","renderCell","renderHeader","columnName","editFieldConfig","undefined","validateEdit","propertyMetadata","type","id","colKey","dataType","colDef","accessorKey","header","displayName","meta","isAsyncColumn","isVisible","size","minSize","maxSize","enableResizing","enableSorting","enableColumnFilter","cell","cellContext","object","row","original","table","options","isEditable","onCellEdit","isInEditMode","Object","entries","key","property"],"sources":["useColumnDefs.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 {\n ObjectMetadata,\n ObjectOrInterfaceDefinition,\n Osdk,\n PropertyKeys,\n QueryDefinition,\n SimplePropertyDef,\n} from \"@osdk/api\";\nimport { useOsdkMetadata } from \"@osdk/react\";\nimport type { AccessorColumnDef } from \"@tanstack/react-table\";\nimport { useMemo } from \"react\";\nimport { renderDefaultCell } from \"../DefaultCellRenderer.js\";\nimport type { ColumnDefinition } from \"../ObjectTableApi.js\";\nimport { shouldShowEditableCell } from \"../utils/shouldShowEditableCell.js\";\n\ninterface UseColumnDefsResult<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n> {\n columns: AccessorColumnDef<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n >[];\n\n loading: boolean;\n\n error: string | undefined;\n}\n\n/**\n * Hook which builds column definitions for tanstack-table given the objectSet\n */\nexport function useColumnDefs<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<\n string,\n never\n >,\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n>(\n objectType: Q,\n columnDefinitions?: Array<ColumnDefinition<Q, RDPs, FunctionColumns>>,\n): UseColumnDefsResult<Q, RDPs> {\n const { metadata, loading, error } = useOsdkMetadata(objectType);\n\n const columns: AccessorColumnDef<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n >[] = useMemo(() => {\n const objectProperties = metadata?.properties;\n // If columnDefinitions is provided, construct colDefs with it\n if (columnDefinitions) {\n return getColumnsFromColumnDefinitions<Q, RDPs, FunctionColumns>(\n columnDefinitions,\n objectProperties,\n );\n }\n\n // If not, return the default columns from the object properties\n return getDefaultColumns<Q, RDPs>(objectProperties);\n }, [columnDefinitions, metadata?.properties]);\n\n return { columns, loading, error };\n}\n\nfunction getColumnsFromColumnDefinitions<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<\n string,\n never\n >,\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n>(\n columnDefinitions: Array<ColumnDefinition<Q, RDPs, FunctionColumns>>,\n objectProperties?: Record<any, ObjectMetadata.Property>,\n): Array<\n AccessorColumnDef<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n >\n> {\n return columnDefinitions.map((col) => {\n const {\n locator,\n width,\n minWidth,\n maxWidth,\n resizable,\n orderable,\n filterable,\n editable,\n renderCell,\n renderHeader,\n columnName,\n } = col;\n\n const editFieldConfig = col.editable ? col.editFieldConfig : undefined;\n const validateEdit = col.editable ? col.validateEdit : undefined;\n\n const propertyMetadata = locator.type === \"property\"\n ? objectProperties?.[locator.id]\n : undefined;\n\n const colKey = locator.id as string;\n\n const dataType =\n propertyMetadata?.type && typeof propertyMetadata.type === \"string\"\n ? propertyMetadata.type\n : undefined;\n\n const colDef: AccessorColumnDef<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n > = {\n id: colKey,\n accessorKey: colKey,\n header: renderHeader ?? (columnName || propertyMetadata?.displayName),\n meta: {\n columnName: columnName || propertyMetadata?.displayName,\n isAsyncColumn: locator.type === \"function\",\n isVisible: col.isVisible !== false,\n editable,\n editFieldConfig,\n dataType,\n validateEdit,\n },\n size: width,\n ...(minWidth ? { minSize: minWidth } : {}),\n ...(maxWidth ? { maxSize: maxWidth } : {}),\n enableResizing: resizable,\n // Function-backed columns must be sorted on the frontend, so disable sorting for now\n enableSorting: locator.type === \"function\" ? false : orderable,\n enableColumnFilter: filterable,\n cell: (cellContext) => {\n const object: Osdk.Instance<\n Q,\n \"$allBaseProperties\",\n PropertyKeys<Q>,\n RDPs\n > = cellContext.row.original;\n\n const meta = cellContext.table.options.meta;\n const isEditable = shouldShowEditableCell<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n >(\n editable,\n meta?.onCellEdit,\n meta?.isInEditMode,\n );\n\n if (renderCell && !isEditable) {\n return renderCell(object, locator);\n }\n\n return renderDefaultCell(cellContext);\n },\n };\n\n return colDef;\n });\n}\n\nfunction getDefaultColumns<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<\n string,\n never\n >,\n>(\n objectProperties?: Record<any, ObjectMetadata.Property>,\n): Array<\n AccessorColumnDef<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n >\n> {\n if (!objectProperties) return [];\n\n return Object.entries(objectProperties).map(([key, property]) => {\n const colDef: AccessorColumnDef<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n > = {\n accessorKey: key,\n header: property.displayName ?? key,\n };\n return colDef;\n });\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAUA,SAASA,eAAe,QAAQ,aAAa;AAE7C,SAASC,OAAO,QAAQ,OAAO;AAC/B,SAASC,iBAAiB,QAAQ,2BAA2B;AAE7D,SAASC,sBAAsB,QAAQ,oCAAoC;AAe3E;AACA;AACA;AACA,OAAO,SAASC,aAAaA,CAW3BC,UAAa,EACbC,iBAAqE,EACvC;EAC9B,MAAM;IAAEC,QAAQ;IAAEC,OAAO;IAAEC;EAAM,CAAC,GAAGT,eAAe,CAACK,UAAU,CAAC;EAEhE,MAAMK,OAEH,GAAGT,OAAO,CAAC,MAAM;IAClB,MAAMU,gBAAgB,GAAGJ,QAAQ,EAAEK,UAAU;IAC7C;IACA,IAAIN,iBAAiB,EAAE;MACrB,OAAOO,+BAA+B,CACpCP,iBAAiB,EACjBK,gBACF,CAAC;IACH;;IAEA;IACA,OAAOG,iBAAiB,CAAUH,gBAAgB,CAAC;EACrD,CAAC,EAAE,CAACL,iBAAiB,EAAEC,QAAQ,EAAEK,UAAU,CAAC,CAAC;EAE7C,OAAO;IAAEF,OAAO;IAAEF,OAAO;IAAEC;EAAM,CAAC;AACpC;AAEA,SAASI,+BAA+BA,CAWtCP,iBAAoE,EACpEK,gBAAuD,EAKvD;EACA,OAAOL,iBAAiB,CAACS,GAAG,CAAEC,GAAG,IAAK;IACpC,MAAM;MACJC,OAAO;MACPC,KAAK;MACLC,QAAQ;MACRC,QAAQ;MACRC,SAAS;MACTC,SAAS;MACTC,UAAU;MACVC,QAAQ;MACRC,UAAU;MACVC,YAAY;MACZC;IACF,CAAC,GAAGX,GAAG;IAEP,MAAMY,eAAe,GAAGZ,GAAG,CAACQ,QAAQ,GAAGR,GAAG,CAACY,eAAe,GAAGC,SAAS;IACtE,MAAMC,YAAY,GAAGd,GAAG,CAACQ,QAAQ,GAAGR,GAAG,CAACc,YAAY,GAAGD,SAAS;IAEhE,MAAME,gBAAgB,GAAGd,OAAO,CAACe,IAAI,KAAK,UAAU,GAChDrB,gBAAgB,GAAGM,OAAO,CAACgB,EAAE,CAAC,GAC9BJ,SAAS;IAEb,MAAMK,MAAM,GAAGjB,OAAO,CAACgB,EAAY;IAEnC,MAAME,QAAQ,GACZJ,gBAAgB,EAAEC,IAAI,IAAI,OAAOD,gBAAgB,CAACC,IAAI,KAAK,QAAQ,GAC/DD,gBAAgB,CAACC,IAAI,GACrBH,SAAS;IAEf,MAAMO,MAEL,GAAG;MACFH,EAAE,EAAEC,MAAM;MACVG,WAAW,EAAEH,MAAM;MACnBI,MAAM,EAAEZ,YAAY,KAAKC,UAAU,IAAII,gBAAgB,EAAEQ,WAAW,CAAC;MACrEC,IAAI,EAAE;QACJb,UAAU,EAAEA,UAAU,IAAII,gBAAgB,EAAEQ,WAAW;QACvDE,aAAa,EAAExB,OAAO,CAACe,IAAI,KAAK,UAAU;QAC1CU,SAAS,EAAE1B,GAAG,CAAC0B,SAAS,KAAK,KAAK;QAClClB,QAAQ;QACRI,eAAe;QACfO,QAAQ;QACRL;MACF,CAAC;MACDa,IAAI,EAAEzB,KAAK;MACX,IAAIC,QAAQ,GAAG;QAAEyB,OAAO,EAAEzB;MAAS,CAAC,GAAG,CAAC,CAAC,CAAC;MAC1C,IAAIC,QAAQ,GAAG;QAAEyB,OAAO,EAAEzB;MAAS,CAAC,GAAG,CAAC,CAAC,CAAC;MAC1C0B,cAAc,EAAEzB,SAAS;MACzB;MACA0B,aAAa,EAAE9B,OAAO,CAACe,IAAI,KAAK,UAAU,GAAG,KAAK,GAAGV,SAAS;MAC9D0B,kBAAkB,EAAEzB,UAAU;MAC9B0B,IAAI,EAAGC,WAAW,IAAK;QACrB,MAAMC,MAKL,GAAGD,WAAW,CAACE,GAAG,CAACC,QAAQ;QAE5B,MAAMb,IAAI,GAAGU,WAAW,CAACI,KAAK,CAACC,OAAO,CAACf,IAAI;QAC3C,MAAMgB,UAAU,GAAGrD,sBAAsB,CAGvCqB,QAAQ,EACRgB,IAAI,EAAEiB,UAAU,EAChBjB,IAAI,EAAEkB,YACR,CAAC;QAED,IAAIjC,UAAU,IAAI,CAAC+B,UAAU,EAAE;UAC7B,OAAO/B,UAAU,CAAC0B,MAAM,EAAElC,OAAO,CAAC;QACpC;QAEA,OAAOf,iBAAiB,CAACgD,WAAW,CAAC;MACvC;IACF,CAAC;IAED,OAAOd,MAAM;EACf,CAAC,CAAC;AACJ;AAEA,SAAStB,iBAAiBA,CAOxBH,gBAAuD,EAKvD;EACA,IAAI,CAACA,gBAAgB,EAAE,OAAO,EAAE;EAEhC,OAAOgD,MAAM,CAACC,OAAO,CAACjD,gBAAgB,CAAC,CAACI,GAAG,CAAC,CAAC,CAAC8C,GAAG,EAAEC,QAAQ,CAAC,KAAK;IAC/D,MAAM1B,MAEL,GAAG;MACFC,WAAW,EAAEwB,GAAG;MAChBvB,MAAM,EAAEwB,QAAQ,CAACvB,WAAW,IAAIsB;IAClC,CAAC;IACD,OAAOzB,MAAM;EACf,CAAC,CAAC;AACJ","ignoreList":[]}
1
+ {"version":3,"file":"useColumnDefs.js","names":["useOsdkMetadata","useMemo","renderDefaultCell","shouldShowEditableCell","useColumnDefs","objectType","columnDefinitions","metadata","loading","error","columns","objectProperties","properties","getColumnsFromColumnDefinitions","getDefaultColumns","map","col","locator","width","minWidth","maxWidth","resizable","orderable","filterable","editable","renderCell","renderHeader","columnName","editFieldConfig","undefined","validateEdit","propertyMetadata","type","id","colKey","dataType","markingType","typeMetadata","colDef","accessorKey","header","displayName","meta","isAsyncColumn","isVisible","size","minSize","maxSize","enableResizing","enableSorting","enableColumnFilter","cell","cellContext","object","row","original","table","options","isEditable","onCellEdit","isInEditMode","Object","entries","key","property"],"sources":["useColumnDefs.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 {\n ObjectMetadata,\n ObjectOrInterfaceDefinition,\n Osdk,\n PropertyKeys,\n QueryDefinition,\n SimplePropertyDef,\n} from \"@osdk/api\";\nimport { useOsdkMetadata } from \"@osdk/react\";\nimport type { AccessorColumnDef } from \"@tanstack/react-table\";\nimport { useMemo } from \"react\";\nimport { renderDefaultCell } from \"../DefaultCellRenderer.js\";\nimport type { ColumnDefinition } from \"../ObjectTableApi.js\";\nimport { shouldShowEditableCell } from \"../utils/shouldShowEditableCell.js\";\n\ninterface UseColumnDefsResult<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n> {\n columns: AccessorColumnDef<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n >[];\n\n loading: boolean;\n\n error: string | undefined;\n}\n\n/**\n * Hook which builds column definitions for tanstack-table given the objectSet\n */\nexport function useColumnDefs<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<\n string,\n never\n >,\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n>(\n objectType: Q,\n columnDefinitions?: Array<ColumnDefinition<Q, RDPs, FunctionColumns>>,\n): UseColumnDefsResult<Q, RDPs> {\n const { metadata, loading, error } = useOsdkMetadata(objectType);\n\n const columns: AccessorColumnDef<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n >[] = useMemo(() => {\n const objectProperties = metadata?.properties;\n // If columnDefinitions is provided, construct colDefs with it\n if (columnDefinitions) {\n return getColumnsFromColumnDefinitions<Q, RDPs, FunctionColumns>(\n columnDefinitions,\n objectProperties,\n );\n }\n\n // If not, return the default columns from the object properties\n return getDefaultColumns<Q, RDPs>(objectProperties);\n }, [columnDefinitions, metadata?.properties]);\n\n return { columns, loading, error };\n}\n\nfunction getColumnsFromColumnDefinitions<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<\n string,\n never\n >,\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n>(\n columnDefinitions: Array<ColumnDefinition<Q, RDPs, FunctionColumns>>,\n objectProperties?: Record<any, ObjectMetadata.Property>,\n): Array<\n AccessorColumnDef<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n >\n> {\n return columnDefinitions.map((col) => {\n const {\n locator,\n width,\n minWidth,\n maxWidth,\n resizable,\n orderable,\n filterable,\n editable,\n renderCell,\n renderHeader,\n columnName,\n } = col;\n\n const editFieldConfig = col.editable ? col.editFieldConfig : undefined;\n const validateEdit = col.editable ? col.validateEdit : undefined;\n\n const propertyMetadata = locator.type === \"property\"\n ? objectProperties?.[locator.id]\n : undefined;\n\n const colKey = locator.id as string;\n\n const dataType =\n propertyMetadata?.type && typeof propertyMetadata.type === \"string\"\n ? propertyMetadata.type\n : undefined;\n\n const markingType = propertyMetadata?.typeMetadata?.type === \"marking\"\n ? propertyMetadata.typeMetadata.markingType\n : undefined;\n\n const colDef: AccessorColumnDef<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n > = {\n id: colKey,\n accessorKey: colKey,\n header: renderHeader ?? (columnName || propertyMetadata?.displayName),\n meta: {\n columnName: columnName || propertyMetadata?.displayName,\n isAsyncColumn: locator.type === \"function\",\n isVisible: col.isVisible !== false,\n editable,\n editFieldConfig,\n dataType,\n markingType,\n validateEdit,\n },\n size: width,\n ...(minWidth ? { minSize: minWidth } : {}),\n ...(maxWidth ? { maxSize: maxWidth } : {}),\n enableResizing: resizable,\n // Function-backed columns must be sorted on the frontend, so disable sorting for now\n enableSorting: locator.type === \"function\" ? false : orderable,\n enableColumnFilter: filterable,\n cell: (cellContext) => {\n const object: Osdk.Instance<\n Q,\n \"$allBaseProperties\",\n PropertyKeys<Q>,\n RDPs\n > = cellContext.row.original;\n\n const meta = cellContext.table.options.meta;\n const isEditable = shouldShowEditableCell<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n >(\n editable,\n meta?.onCellEdit,\n meta?.isInEditMode,\n );\n\n if (renderCell && !isEditable) {\n return renderCell(object, locator);\n }\n\n return renderDefaultCell(cellContext);\n },\n };\n\n return colDef;\n });\n}\n\nfunction getDefaultColumns<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<\n string,\n never\n >,\n>(\n objectProperties?: Record<any, ObjectMetadata.Property>,\n): Array<\n AccessorColumnDef<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n >\n> {\n if (!objectProperties) return [];\n\n return Object.entries(objectProperties).map(([key, property]) => {\n const colDef: AccessorColumnDef<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n > = {\n accessorKey: key,\n header: property.displayName ?? key,\n };\n return colDef;\n });\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,38 @@
1
+ /*
2
+ * Copyright 2026 Palantir Technologies, Inc. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ /**
18
+ * Normalize a marking property's cell value into a string[] of marking ids.
19
+ * Marking properties may arrive as a single string (single-valued) or
20
+ * string[] (multi-valued); null/undefined become an empty array.
21
+ *
22
+ * Duplicates are removed so callers (e.g. per-marking pill renderers) can
23
+ * safely use the marking id as a React key.
24
+ */
25
+ export function toMarkingIdArray(value) {
26
+ if (value == null) {
27
+ return [];
28
+ }
29
+ if (typeof value === "string") {
30
+ return [value];
31
+ }
32
+ if (Array.isArray(value)) {
33
+ const ids = value.filter(v => typeof v === "string");
34
+ return Array.from(new Set(ids));
35
+ }
36
+ return [];
37
+ }
38
+ //# sourceMappingURL=markingValue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markingValue.js","names":["toMarkingIdArray","value","Array","isArray","ids","filter","v","from","Set"],"sources":["markingValue.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\n/**\n * Normalize a marking property's cell value into a string[] of marking ids.\n * Marking properties may arrive as a single string (single-valued) or\n * string[] (multi-valued); null/undefined become an empty array.\n *\n * Duplicates are removed so callers (e.g. per-marking pill renderers) can\n * safely use the marking id as a React key.\n */\nexport function toMarkingIdArray(value: unknown): string[] {\n if (value == null) {\n return [];\n }\n if (typeof value === \"string\") {\n return [value];\n }\n if (Array.isArray(value)) {\n const ids = value.filter((v): v is string => typeof v === \"string\");\n return Array.from(new Set(ids));\n }\n return [];\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,gBAAgBA,CAACC,KAAc,EAAY;EACzD,IAAIA,KAAK,IAAI,IAAI,EAAE;IACjB,OAAO,EAAE;EACX;EACA,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;IAC7B,OAAO,CAACA,KAAK,CAAC;EAChB;EACA,IAAIC,KAAK,CAACC,OAAO,CAACF,KAAK,CAAC,EAAE;IACxB,MAAMG,GAAG,GAAGH,KAAK,CAACI,MAAM,CAAEC,CAAC,IAAkB,OAAOA,CAAC,KAAK,QAAQ,CAAC;IACnE,OAAOJ,KAAK,CAACK,IAAI,CAAC,IAAIC,GAAG,CAACJ,GAAG,CAAC,CAAC;EACjC;EACA,OAAO,EAAE;AACX","ignoreList":[]}
@@ -9412,6 +9412,19 @@
9412
9412
  }
9413
9413
 
9414
9414
 
9415
+ /* object-table/components/MandatoryMarkingCell.module.css */
9416
+ .MandatoryMarkingCell-module__container___nPKIpcIn {
9417
+ display: flex;
9418
+ flex-wrap: wrap;
9419
+ gap: var(--osdk-surface-spacing);
9420
+ align-items: center;
9421
+ }
9422
+
9423
+ .MandatoryMarkingCell-module__pill___Gr2phUmD {
9424
+ max-width: 100%;
9425
+ }
9426
+
9427
+
9415
9428
  /* pdf-viewer/PdfViewer.module.css */
9416
9429
  .LoadingError-module__loadingContainer___bPqIqyjp {
9417
9430
  display: flex;
@@ -14,7 +14,7 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- const PACKAGE_USER_AGENT = `osdk-react-components/${"0.27.0"}`;
17
+ const PACKAGE_USER_AGENT = `osdk-react-components/${"0.28.0-main-1aeba37ae6a5cc24c73b7c01e10acba6b6078d87"}`;
18
18
  export function componentUserAgent(componentName) {
19
19
  return `${PACKAGE_USER_AGENT}/${componentName}`;
20
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"UserAgent.js","names":["PACKAGE_USER_AGENT","componentUserAgent","componentName"],"sources":["UserAgent.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst PACKAGE_USER_AGENT =\n `osdk-react-components/${process.env.PACKAGE_VERSION}`;\n\nexport function componentUserAgent(componentName: string): string {\n return `${PACKAGE_USER_AGENT}/${componentName}`;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAMA,kBAAkB,GACtB,mCAAsD;AAExD,OAAO,SAASC,kBAAkBA,CAACC,aAAqB,EAAU;EAChE,OAAO,GAAGF,kBAAkB,IAAIE,aAAa,EAAE;AACjD","ignoreList":[]}
1
+ {"version":3,"file":"UserAgent.js","names":["PACKAGE_USER_AGENT","componentUserAgent","componentName"],"sources":["UserAgent.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst PACKAGE_USER_AGENT =\n `osdk-react-components/${process.env.PACKAGE_VERSION}`;\n\nexport function componentUserAgent(componentName: string): string {\n return `${PACKAGE_USER_AGENT}/${componentName}`;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAMA,kBAAkB,GACtB,iFAAsD;AAExD,OAAO,SAASC,kBAAkBA,CAACC,aAAqB,EAAU;EAChE,OAAO,GAAGF,kBAAkB,IAAIE,aAAa,EAAE;AACjD","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var chunkFWZS3WQ4_cjs = require('./chunk-FWZS3WQ4.cjs');
4
- var chunkFO5CHXTP_cjs = require('./chunk-FO5CHXTP.cjs');
4
+ var chunkKS2TDPR6_cjs = require('./chunk-KS2TDPR6.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 = chunkFO5CHXTP_cjs.withOsdkMetrics(chunkFWZS3WQ4_cjs.PdfViewer, "PdfViewer");
182
+ var PdfViewer2 = chunkKS2TDPR6_cjs.withOsdkMetrics(chunkFWZS3WQ4_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-76WC644D.cjs.map
190
- //# sourceMappingURL=chunk-76WC644D.cjs.map
189
+ //# sourceMappingURL=chunk-2FV525Y2.cjs.map
190
+ //# sourceMappingURL=chunk-2FV525Y2.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","PdfViewer_default","React","Spin","ErrorIcon","PdfAnnotationOverlay","useContext","usePdfViewerState","usePdfHighlightMode","useMemo","PdfViewer","withOsdkMetrics"],"mappings":"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","file":"chunk-76WC644D.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 styles from \"../PdfViewer.module.css\";\nimport { PdfAnnotationOverlay } from \"./PdfAnnotationOverlay.js\";\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.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 const highlightEnabled = 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// PdfViewer\nexport { BasePdfViewer } from \"../../pdf-viewer/PdfViewer.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// PdfViewer context\nexport { PdfViewerProvider, usePdfViewerContext, usePdfViewerInstance } from \"../../pdf-viewer/PdfViewerContext.js\";\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/PdfRenderer.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","PdfViewer_default","React","Spin","ErrorIcon","PdfAnnotationOverlay","useContext","usePdfViewerState","usePdfHighlightMode","useMemo","PdfViewer","withOsdkMetrics"],"mappings":"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","file":"chunk-2FV525Y2.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 styles from \"../PdfViewer.module.css\";\nimport { PdfAnnotationOverlay } from \"./PdfAnnotationOverlay.js\";\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.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 const highlightEnabled = 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// PdfViewer\nexport { BasePdfViewer } from \"../../pdf-viewer/PdfViewer.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// PdfViewer context\nexport { PdfViewerProvider, usePdfViewerContext, usePdfViewerInstance } from \"../../pdf-viewer/PdfViewerContext.js\";\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/PdfRenderer.js\";\nimport { withOsdkMetrics } from \"../../util/withOsdkMetrics.js\";\nexport const PdfViewer = withOsdkMetrics(_PdfViewer, \"PdfViewer\");"]}
@@ -0,0 +1,11 @@
1
+ 'use strict';
2
+
3
+ var chunkKHMOMROL_cjs = require('./chunk-KHMOMROL.cjs');
4
+ var chunkKS2TDPR6_cjs = require('./chunk-KS2TDPR6.cjs');
5
+
6
+ // src/public/experimental/video-viewer.ts
7
+ var VideoViewer2 = chunkKS2TDPR6_cjs.withOsdkMetrics(chunkKHMOMROL_cjs.VideoViewer, "VideoViewer");
8
+
9
+ exports.VideoViewer = VideoViewer2;
10
+ //# sourceMappingURL=chunk-3YZ7WQKB.cjs.map
11
+ //# sourceMappingURL=chunk-3YZ7WQKB.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/public/experimental/video-viewer.ts"],"names":["VideoViewer","withOsdkMetrics"],"mappings":";;;;;;AAqBO,IAAMA,YAAAA,GAAcC,iCAAA,CAAgBD,6BAAA,EAAc,aAAa","file":"chunk-WV267H2C.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\n// BaseVideoViewer\nexport { BaseVideoViewer } from \"../../video-viewer/BaseVideoViewer.js\";\n// VideoViewer (Media wrapper)\nimport { withOsdkMetrics } from \"../../util/withOsdkMetrics.js\";\nimport { VideoViewer as _VideoViewer } from \"../../video-viewer/VideoViewer.js\";\nexport const VideoViewer = withOsdkMetrics(_VideoViewer, \"VideoViewer\");"]}
1
+ {"version":3,"sources":["../../src/public/experimental/video-viewer.ts"],"names":["VideoViewer","withOsdkMetrics"],"mappings":";;;;;;AAqBO,IAAMA,YAAAA,GAAcC,iCAAA,CAAgBD,6BAAA,EAAc,aAAa","file":"chunk-3YZ7WQKB.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\n// BaseVideoViewer\nexport { BaseVideoViewer } from \"../../video-viewer/BaseVideoViewer.js\";\n// VideoViewer (Media wrapper)\nimport { withOsdkMetrics } from \"../../util/withOsdkMetrics.js\";\nimport { VideoViewer as _VideoViewer } from \"../../video-viewer/VideoViewer.js\";\nexport const VideoViewer = withOsdkMetrics(_VideoViewer, \"VideoViewer\");"]}
@@ -0,0 +1,11 @@
1
+ 'use strict';
2
+
3
+ var chunkPKJFOG2Z_cjs = require('./chunk-PKJFOG2Z.cjs');
4
+ var chunkKS2TDPR6_cjs = require('./chunk-KS2TDPR6.cjs');
5
+
6
+ // src/public/experimental/email-viewer.ts
7
+ var EmailViewer2 = chunkKS2TDPR6_cjs.withOsdkMetrics(chunkPKJFOG2Z_cjs.EmailViewer, "EmailViewer");
8
+
9
+ exports.EmailViewer = EmailViewer2;
10
+ //# sourceMappingURL=chunk-4ZREFFAI.cjs.map
11
+ //# sourceMappingURL=chunk-4ZREFFAI.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/public/experimental/email-viewer.ts"],"names":["EmailViewer","withOsdkMetrics"],"mappings":";;;;;;AAqBO,IAAMA,YAAAA,GAAcC,iCAAA,CAAgBD,6BAAA,EAAc,aAAa","file":"chunk-6E4GBYIW.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\n// BaseEmailViewer\nexport { BaseEmailViewer } from \"../../email-viewer/BaseEmailViewer.js\";\n// EmailViewer (Media wrapper)\nimport { EmailViewer as _EmailViewer } from \"../../email-viewer/EmailViewer.js\";\nimport { withOsdkMetrics } from \"../../util/withOsdkMetrics.js\";\nexport const EmailViewer = withOsdkMetrics(_EmailViewer, \"EmailViewer\");"]}
1
+ {"version":3,"sources":["../../src/public/experimental/email-viewer.ts"],"names":["EmailViewer","withOsdkMetrics"],"mappings":";;;;;;AAqBO,IAAMA,YAAAA,GAAcC,iCAAA,CAAgBD,6BAAA,EAAc,aAAa","file":"chunk-4ZREFFAI.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\n// BaseEmailViewer\nexport { BaseEmailViewer } from \"../../email-viewer/BaseEmailViewer.js\";\n// EmailViewer (Media wrapper)\nimport { EmailViewer as _EmailViewer } from \"../../email-viewer/EmailViewer.js\";\nimport { withOsdkMetrics } from \"../../util/withOsdkMetrics.js\";\nexport const EmailViewer = withOsdkMetrics(_EmailViewer, \"EmailViewer\");"]}