@osdk/react-components 0.2.0-beta.16 → 0.2.0-beta.17

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 (100) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +5 -3
  3. package/build/browser/base-components/tooltip/Tooltip.js +91 -0
  4. package/build/browser/base-components/tooltip/Tooltip.js.map +1 -0
  5. package/build/browser/base-components/tooltip/Tooltip.module.css +70 -0
  6. package/build/browser/base-components/tooltip/Tooltip.module.css.js +11 -0
  7. package/build/browser/base-components/tooltip/index.js +18 -0
  8. package/build/browser/base-components/tooltip/index.js.map +1 -0
  9. package/build/browser/filter-list/hooks/useFilterListState.js +5 -6
  10. package/build/browser/filter-list/hooks/useFilterListState.js.map +1 -1
  11. package/build/browser/filter-list/utils/filterStateToWhereClause.js +18 -3
  12. package/build/browser/filter-list/utils/filterStateToWhereClause.js.map +1 -1
  13. package/build/browser/object-table/DefaultCellRenderer.js +6 -1
  14. package/build/browser/object-table/DefaultCellRenderer.js.map +1 -1
  15. package/build/browser/object-table/EditableCell.js +76 -9
  16. package/build/browser/object-table/EditableCell.js.map +1 -1
  17. package/build/browser/object-table/EditableCell.module.css +47 -8
  18. package/build/browser/object-table/EditableCell.module.css.js +5 -1
  19. package/build/browser/object-table/MultiColumnSortDialog.js +4 -1
  20. package/build/browser/object-table/MultiColumnSortDialog.js.map +1 -1
  21. package/build/browser/object-table/ObjectTable.js +4 -1
  22. package/build/browser/object-table/ObjectTable.js.map +1 -1
  23. package/build/browser/object-table/ObjectTableApi.js.map +1 -1
  24. package/build/browser/object-table/SelectionCells.js +1 -0
  25. package/build/browser/object-table/SelectionCells.js.map +1 -1
  26. package/build/browser/object-table/Table.js +2 -2
  27. package/build/browser/object-table/Table.js.map +1 -1
  28. package/build/browser/object-table/TableBody.js +1 -1
  29. package/build/browser/object-table/TableBody.js.map +1 -1
  30. package/build/browser/object-table/TableEditContainer.js +27 -16
  31. package/build/browser/object-table/TableEditContainer.js.map +1 -1
  32. package/build/browser/object-table/TableEditContainer.module.css +27 -0
  33. package/build/browser/object-table/TableEditContainer.module.css.js +5 -1
  34. package/build/browser/object-table/TableRow.js +2 -2
  35. package/build/browser/object-table/TableRow.js.map +1 -1
  36. package/build/browser/object-table/hooks/useColumnDefs.js +2 -1
  37. package/build/browser/object-table/hooks/useColumnDefs.js.map +1 -1
  38. package/build/browser/object-table/hooks/useEditableTable.js +21 -2
  39. package/build/browser/object-table/hooks/useEditableTable.js.map +1 -1
  40. package/build/browser/object-table/utils/types.js.map +1 -1
  41. package/build/browser/styles.css +147 -8
  42. package/build/cjs/public/experimental.cjs +969 -772
  43. package/build/cjs/public/experimental.cjs.map +1 -1
  44. package/build/cjs/public/experimental.css +103 -8
  45. package/build/cjs/public/experimental.css.map +1 -1
  46. package/build/cjs/public/experimental.d.cts +18 -4
  47. package/build/esm/base-components/tooltip/Tooltip.js +91 -0
  48. package/build/esm/base-components/tooltip/Tooltip.js.map +1 -0
  49. package/build/esm/base-components/tooltip/Tooltip.module.css +70 -0
  50. package/build/esm/base-components/tooltip/index.js +18 -0
  51. package/build/esm/base-components/tooltip/index.js.map +1 -0
  52. package/build/esm/filter-list/hooks/useFilterListState.js +5 -6
  53. package/build/esm/filter-list/hooks/useFilterListState.js.map +1 -1
  54. package/build/esm/filter-list/utils/filterStateToWhereClause.js +18 -3
  55. package/build/esm/filter-list/utils/filterStateToWhereClause.js.map +1 -1
  56. package/build/esm/object-table/DefaultCellRenderer.js +6 -1
  57. package/build/esm/object-table/DefaultCellRenderer.js.map +1 -1
  58. package/build/esm/object-table/EditableCell.js +76 -9
  59. package/build/esm/object-table/EditableCell.js.map +1 -1
  60. package/build/esm/object-table/EditableCell.module.css +47 -8
  61. package/build/esm/object-table/MultiColumnSortDialog.js +4 -1
  62. package/build/esm/object-table/MultiColumnSortDialog.js.map +1 -1
  63. package/build/esm/object-table/ObjectTable.js +4 -1
  64. package/build/esm/object-table/ObjectTable.js.map +1 -1
  65. package/build/esm/object-table/ObjectTableApi.js.map +1 -1
  66. package/build/esm/object-table/SelectionCells.js +1 -0
  67. package/build/esm/object-table/SelectionCells.js.map +1 -1
  68. package/build/esm/object-table/Table.js +2 -2
  69. package/build/esm/object-table/Table.js.map +1 -1
  70. package/build/esm/object-table/TableBody.js +1 -1
  71. package/build/esm/object-table/TableBody.js.map +1 -1
  72. package/build/esm/object-table/TableEditContainer.js +27 -16
  73. package/build/esm/object-table/TableEditContainer.js.map +1 -1
  74. package/build/esm/object-table/TableEditContainer.module.css +27 -0
  75. package/build/esm/object-table/TableRow.js +2 -2
  76. package/build/esm/object-table/TableRow.js.map +1 -1
  77. package/build/esm/object-table/hooks/useColumnDefs.js +2 -1
  78. package/build/esm/object-table/hooks/useColumnDefs.js.map +1 -1
  79. package/build/esm/object-table/hooks/useEditableTable.js +21 -2
  80. package/build/esm/object-table/hooks/useEditableTable.js.map +1 -1
  81. package/build/esm/object-table/utils/types.js.map +1 -1
  82. package/build/types/base-components/tooltip/Tooltip.d.ts +31 -0
  83. package/build/types/base-components/tooltip/Tooltip.d.ts.map +1 -0
  84. package/build/types/base-components/tooltip/index.d.ts +1 -0
  85. package/build/types/base-components/tooltip/index.d.ts.map +1 -0
  86. package/build/types/filter-list/utils/filterStateToWhereClause.d.ts.map +1 -1
  87. package/build/types/object-table/EditableCell.d.ts +8 -2
  88. package/build/types/object-table/EditableCell.d.ts.map +1 -1
  89. package/build/types/object-table/ObjectTableApi.d.ts +7 -0
  90. package/build/types/object-table/ObjectTableApi.d.ts.map +1 -1
  91. package/build/types/object-table/Table.d.ts +4 -0
  92. package/build/types/object-table/Table.d.ts.map +1 -1
  93. package/build/types/object-table/TableEditContainer.d.ts +1 -1
  94. package/build/types/object-table/TableEditContainer.d.ts.map +1 -1
  95. package/build/types/object-table/TableRow.d.ts +2 -2
  96. package/build/types/object-table/TableRow.d.ts.map +1 -1
  97. package/build/types/object-table/hooks/useEditableTable.d.ts.map +1 -1
  98. package/build/types/object-table/utils/types.d.ts +7 -4
  99. package/build/types/object-table/utils/types.d.ts.map +1 -1
  100. package/package.json +5 -5
package/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # @osdk/react-components
2
2
 
3
+ ## 0.2.0-beta.17
4
+
5
+ ### Minor Changes
6
+
7
+ - 7542c11: add remove button to filter list items and memoize dnd accessibility props
8
+ - 05618c3: Add validation state to editable cell
9
+
10
+ ### Patch Changes
11
+
12
+ - @osdk/api@2.8.0-beta.20
13
+ - @osdk/client@2.8.0-beta.20
14
+ - @osdk/react@0.10.0-beta.8
15
+
3
16
  ## 0.2.0-beta.16
4
17
 
5
18
  ### Minor Changes
package/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # @osdk/react-components
2
2
 
3
+ > **⚠️ Beta Release**: This package is currently in beta. Please use the latest beta version for the most up-to-date features and fixes.
4
+
3
5
  React components for building Foundry applications. These components are Ontology-aware — pass in OSDK entities, and they handle data loading, caching, and state management automatically.
4
6
 
5
7
  Built on top of [@osdk/react](../react), these components use OSDK hooks internally to provide ready-to-use UI elements. While @osdk/react gives you low-level hooks for data fetching, @osdk/react-components provides UI widgets for common patterns like tables and forms.
@@ -12,7 +14,7 @@ Run the command to install:
12
14
  - @osdk/react-components-styles - The default styles for the components
13
15
 
14
16
  ```sh
15
- npm install @osdk/react-components @osdk/react-components-styles
17
+ npm install @osdk/react-components@beta @osdk/react-components-styles@beta
16
18
  ```
17
19
 
18
20
  **Peer Dependencies:**
@@ -77,7 +79,7 @@ The components that this package will provide are:
77
79
 
78
80
  | Component | Description | Documentation |
79
81
  | ------------- | ---------------------------------------------------------------------------------- | ------------------------------ |
80
- | `ObjectTable` | Displays an Object Set as a sortable, paginated table | [Guide](./docs/ObjectTable.md) |
82
+ | `ObjectTable` | Displays an Object Set as a sortable, paginated table with inline editing support | [Guide](./docs/ObjectTable.md) |
81
83
  | `FilterList` | Visualize a high-level summary of objects data to allow users to filter that data. | - |
82
84
  | `ActionForm` | Auto-generated form for executing Ontology Actions | - |
83
85
 
@@ -91,7 +93,7 @@ See `@osdk/react-components-styles` README on how to apply custom themes and sty
91
93
 
92
94
  ```ts
93
95
  import { ObjectTable } from "@osdk/react-components/experimental";
94
- import { $, Employee } from "@your-osdk-package";
96
+ import { Employee } from "@your-osdk-package";
95
97
 
96
98
  function EmployeeDirectory() {
97
99
  return (
@@ -0,0 +1,91 @@
1
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
2
+ /*
3
+ * Copyright 2026 Palantir Technologies, Inc. All rights reserved.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+
18
+ import { Tooltip as BaseUITooltip } from "@base-ui/react/tooltip";
19
+ import classnames from "classnames";
20
+ import React from "react";
21
+ import styles from "./Tooltip.module.css.js";
22
+ function TooltipRoot({
23
+ children,
24
+ ...rest
25
+ }) {
26
+ return /*#__PURE__*/React.createElement(BaseUITooltip.Root, rest, children);
27
+ }
28
+ function TooltipProvider({
29
+ children,
30
+ ...rest
31
+ }) {
32
+ return /*#__PURE__*/React.createElement(BaseUITooltip.Provider, rest, children);
33
+ }
34
+ function TooltipTrigger({
35
+ className,
36
+ children,
37
+ ...rest
38
+ }) {
39
+ return /*#__PURE__*/React.createElement(BaseUITooltip.Trigger, _extends({
40
+ className: classnames(styles.osdkTooltipTrigger, className)
41
+ }, rest), children);
42
+ }
43
+ function TooltipPositioner({
44
+ className,
45
+ children,
46
+ sideOffset = 4,
47
+ ...rest
48
+ }) {
49
+ return /*#__PURE__*/React.createElement(BaseUITooltip.Positioner, _extends({
50
+ className: classnames(styles.osdkTooltipPositioner, className),
51
+ sideOffset: sideOffset
52
+ }, rest), children);
53
+ }
54
+ function TooltipPopup({
55
+ className,
56
+ children,
57
+ ...rest
58
+ }) {
59
+ return /*#__PURE__*/React.createElement(BaseUITooltip.Popup, _extends({
60
+ className: classnames(styles.osdkTooltipPopup, className)
61
+ }, rest), children);
62
+ }
63
+ export function TooltipArrow() {
64
+ return /*#__PURE__*/React.createElement(BaseUITooltip.Arrow, {
65
+ className: styles.osdkTooltipArrow
66
+ }, /*#__PURE__*/React.createElement(ArrowSvg, null));
67
+ }
68
+ function ArrowSvg(props) {
69
+ return /*#__PURE__*/React.createElement("svg", _extends({
70
+ width: "20",
71
+ height: "10",
72
+ viewBox: "0 0 20 10",
73
+ fill: "none"
74
+ }, props), /*#__PURE__*/React.createElement("path", {
75
+ d: "M9.66437 2.60207L4.80758 6.97318C4.07308 7.63423 3.11989 8 2.13172 8H0V10H20V8H18.5349C17.5468 8 16.5936 7.63423 15.8591 6.97318L11.0023 2.60207C10.622 2.2598 10.0447 2.25979 9.66437 2.60207Z",
76
+ className: styles.tooltipArrowFill
77
+ }), /*#__PURE__*/React.createElement("path", {
78
+ d: "M8.99542 1.85876C9.75604 1.17425 10.9106 1.17422 11.6713 1.85878L16.5281 6.22989C17.0789 6.72568 17.7938 7.00001 18.5349 7.00001L15.89 7L11.0023 2.60207C10.622 2.2598 10.0447 2.2598 9.66436 2.60207L4.77734 7L2.13171 7.00001C2.87284 7.00001 3.58774 6.72568 4.13861 6.22989L8.99542 1.85876Z",
79
+ className: styles.tooltipArrowOuterStroke
80
+ }));
81
+ }
82
+ export const Tooltip = {
83
+ Root: TooltipRoot,
84
+ Provider: TooltipProvider,
85
+ Trigger: TooltipTrigger,
86
+ Portal: BaseUITooltip.Portal,
87
+ Positioner: TooltipPositioner,
88
+ Popup: TooltipPopup,
89
+ Arrow: TooltipArrow
90
+ };
91
+ //# sourceMappingURL=Tooltip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tooltip.js","names":["Tooltip","BaseUITooltip","classnames","React","styles","TooltipRoot","children","rest","createElement","Root","TooltipProvider","Provider","TooltipTrigger","className","Trigger","_extends","osdkTooltipTrigger","TooltipPositioner","sideOffset","Positioner","osdkTooltipPositioner","TooltipPopup","Popup","osdkTooltipPopup","TooltipArrow","Arrow","osdkTooltipArrow","ArrowSvg","props","width","height","viewBox","fill","d","tooltipArrowFill","tooltipArrowOuterStroke","Portal"],"sources":["Tooltip.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 {\n Tooltip as BaseUITooltip,\n type TooltipPopupProps,\n type TooltipPositionerProps,\n type TooltipProviderProps,\n type TooltipRootProps,\n type TooltipTriggerProps,\n} from \"@base-ui/react/tooltip\";\nimport classnames from \"classnames\";\nimport React from \"react\";\nimport styles from \"./Tooltip.module.css\";\n\nexport interface TooltipProps extends Omit<TooltipRootProps, \"className\"> {}\n\nfunction TooltipRoot({\n children,\n ...rest\n}: TooltipProps): React.ReactElement {\n return (\n <BaseUITooltip.Root {...rest}>\n {children}\n </BaseUITooltip.Root>\n );\n}\n\ninterface TooltipProviderComponentProps\n extends Omit<TooltipProviderProps, \"className\">\n{\n className?: string;\n}\n\nfunction TooltipProvider({\n children,\n ...rest\n}: TooltipProviderComponentProps): React.ReactElement {\n return (\n <BaseUITooltip.Provider\n {...rest}\n >\n {children}\n </BaseUITooltip.Provider>\n );\n}\n\ninterface TooltipTriggerComponentProps\n extends Omit<TooltipTriggerProps, \"className\">\n{\n className?: string;\n}\n\nfunction TooltipTrigger({\n className,\n children,\n ...rest\n}: TooltipTriggerComponentProps): React.ReactElement {\n return (\n <BaseUITooltip.Trigger\n className={classnames(styles.osdkTooltipTrigger, className)}\n {...rest}\n >\n {children}\n </BaseUITooltip.Trigger>\n );\n}\n\ninterface TooltipPositionerComponentProps\n extends Omit<TooltipPositionerProps, \"className\">\n{\n className?: string;\n}\n\nfunction TooltipPositioner({\n className,\n children,\n sideOffset = 4,\n ...rest\n}: TooltipPositionerComponentProps): React.ReactElement {\n return (\n <BaseUITooltip.Positioner\n className={classnames(styles.osdkTooltipPositioner, className)}\n sideOffset={sideOffset}\n {...rest}\n >\n {children}\n </BaseUITooltip.Positioner>\n );\n}\n\ninterface TooltipPopupComponentProps\n extends Omit<TooltipPopupProps, \"className\">\n{\n className?: string;\n}\n\nfunction TooltipPopup({\n className,\n children,\n ...rest\n}: TooltipPopupComponentProps): React.ReactElement {\n return (\n <BaseUITooltip.Popup\n className={classnames(styles.osdkTooltipPopup, className)}\n {...rest}\n >\n {children}\n </BaseUITooltip.Popup>\n );\n}\n\nexport function TooltipArrow(): React.ReactElement {\n return (\n <BaseUITooltip.Arrow className={styles.osdkTooltipArrow}>\n <ArrowSvg />\n </BaseUITooltip.Arrow>\n );\n}\n\nfunction ArrowSvg(props: React.ComponentProps<\"svg\">) {\n return (\n <svg width=\"20\" height=\"10\" viewBox=\"0 0 20 10\" fill=\"none\" {...props}>\n <path\n d=\"M9.66437 2.60207L4.80758 6.97318C4.07308 7.63423 3.11989 8 2.13172 8H0V10H20V8H18.5349C17.5468 8 16.5936 7.63423 15.8591 6.97318L11.0023 2.60207C10.622 2.2598 10.0447 2.25979 9.66437 2.60207Z\"\n className={styles.tooltipArrowFill}\n />\n <path\n d=\"M8.99542 1.85876C9.75604 1.17425 10.9106 1.17422 11.6713 1.85878L16.5281 6.22989C17.0789 6.72568 17.7938 7.00001 18.5349 7.00001L15.89 7L11.0023 2.60207C10.622 2.2598 10.0447 2.2598 9.66436 2.60207L4.77734 7L2.13171 7.00001C2.87284 7.00001 3.58774 6.72568 4.13861 6.22989L8.99542 1.85876Z\"\n className={styles.tooltipArrowOuterStroke}\n />\n </svg>\n );\n}\n\nexport const Tooltip: {\n Root: typeof TooltipRoot;\n Provider: typeof TooltipProvider;\n Trigger: typeof TooltipTrigger;\n Portal: typeof BaseUITooltip.Portal;\n Positioner: typeof TooltipPositioner;\n Popup: typeof TooltipPopup;\n Arrow: typeof TooltipArrow;\n} = {\n Root: TooltipRoot,\n Provider: TooltipProvider,\n Trigger: TooltipTrigger,\n Portal: BaseUITooltip.Portal,\n Positioner: TooltipPositioner,\n Popup: TooltipPopup,\n Arrow: TooltipArrow,\n};\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,70 @@
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
+ .osdkTooltipTrigger {
18
+ border: none;
19
+ background: inherit;
20
+ }
21
+
22
+ .osdkTooltipPositioner {
23
+ z-index: var(--osdk-tooltip-z-index);
24
+ }
25
+
26
+ .osdkTooltipPopup {
27
+ padding: var(--osdk-tooltip-padding);
28
+ background-color: var(--osdk-tooltip-bg);
29
+ border-radius: var(--osdk-surface-border-radius);
30
+ box-shadow: var(--osdk-tooltip-shadow);
31
+ max-width: var(--osdk-tooltip-max-width);
32
+ font-size: var(--osdk-tooltip-font-size);
33
+ }
34
+
35
+ /*
36
+ * Hardcoded values are copied from base ui example
37
+ * https://base-ui.com/react/components/tooltip
38
+ *
39
+ * */
40
+ .osdkTooltipArrow {
41
+ display: flex;
42
+
43
+ &[data-side="top"] {
44
+ bottom: -8px;
45
+ rotate: 180deg;
46
+ }
47
+
48
+ &[data-side="bottom"] {
49
+ top: -8px;
50
+ rotate: 0deg;
51
+ }
52
+
53
+ &[data-side="left"] {
54
+ right: -13px;
55
+ rotate: 90deg;
56
+ }
57
+
58
+ &[data-side="right"] {
59
+ left: -13px;
60
+ rotate: -90deg;
61
+ }
62
+ }
63
+
64
+ .tooltipArrowFill {
65
+ fill: var(--osdk-tooltip-bg);
66
+ }
67
+
68
+ .tooltipArrowOuterStroke {
69
+ fill: var(--osdk-tooltip-border-color);
70
+ }
@@ -0,0 +1,11 @@
1
+ // CSS Module proxy for Tooltip.module.css
2
+ const styles = {
3
+ "osdkTooltipTrigger": "Tooltip-module__osdkTooltipTrigger___KY5Ck6WI",
4
+ "osdkTooltipPositioner": "Tooltip-module__osdkTooltipPositioner___3DC1bpvr",
5
+ "osdkTooltipPopup": "Tooltip-module__osdkTooltipPopup___QgGaKttX",
6
+ "osdkTooltipArrow": "Tooltip-module__osdkTooltipArrow___42KD-Edu",
7
+ "tooltipArrowFill": "Tooltip-module__tooltipArrowFill___4DZeMWmZ",
8
+ "tooltipArrowOuterStroke": "Tooltip-module__tooltipArrowOuterStroke___ATRD8XzR"
9
+ };
10
+
11
+ export default styles;
@@ -0,0 +1,18 @@
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
+ export { Tooltip, TooltipArrow } from "./Tooltip.js";
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["Tooltip","TooltipArrow"],"sources":["index.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\nexport { Tooltip, TooltipArrow, type TooltipProps } from \"./Tooltip.js\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,OAAO,EAAEC,YAAY,QAA2B,cAAc","ignoreList":[]}
@@ -86,15 +86,15 @@ export function useFilterListState(props) {
86
86
  return states;
87
87
  });
88
88
  const setFilterState = useCallback((filterKey, state) => {
89
- let newWhereClause;
89
+ let computedClause;
90
90
  setFilterStates(prev => {
91
91
  const next = new Map(prev);
92
92
  next.set(filterKey, state);
93
- newWhereClause = buildWhereClause(filterDefinitions, next, filterOperator, objectType);
93
+ computedClause = buildWhereClause(filterDefinitions, next, filterOperator, objectType);
94
94
  return next;
95
95
  });
96
- if (newWhereClause !== undefined) {
97
- onFilterClauseChanged?.(newWhereClause);
96
+ if (computedClause !== undefined) {
97
+ onFilterClauseChanged?.(computedClause);
98
98
  }
99
99
  const definition = filterDefinitions?.find(d => getFilterKey(d) === filterKey);
100
100
  if (definition) {
@@ -125,8 +125,7 @@ export function useFilterListState(props) {
125
125
  const reset = useCallback(() => {
126
126
  const initialStates = buildInitialStates(filterDefinitions);
127
127
  setFilterStates(initialStates);
128
- const newWhereClause = buildWhereClause(filterDefinitions, initialStates, filterOperator, objectType);
129
- onFilterClauseChanged?.(newWhereClause);
128
+ onFilterClauseChanged?.(buildWhereClause(filterDefinitions, initialStates, filterOperator, objectType));
130
129
  }, [filterDefinitions, filterOperator, objectType, onFilterClauseChanged]);
131
130
  return useMemo(() => ({
132
131
  filterStates,
@@ -1 +1 @@
1
- {"version":3,"file":"useFilterListState.js","names":["useCallback","useMemo","useState","assertUnreachable","buildWhereClause","filterHasActiveState","getFilterKey","buildInitialStates","definitions","states","Map","definition","key","type","state","filterState","set","defaultFilterState","innerState","defaultLinkedFilterState","linkedFilterState","useFilterListState","props","objectSet","filterDefinitions","filterOperator","onFilterStateChanged","onFilterClauseChanged","initialFilterStates","objectType","$objectSetInternals","def","filterStates","setFilterStates","setFilterState","filterKey","newWhereClause","prev","next","undefined","find","d","whereClause","perFilterWhereClauses","map","activeFilterCount","count","values","reset","initialStates"],"sources":["useFilterListState.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 { ObjectTypeDefinition, WhereClause } from \"@osdk/api\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport type { FilterListProps } from \"../FilterListApi.js\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport type { LinkedPropertyFilterState } from \"../types/LinkedFilterTypes.js\";\nimport { assertUnreachable } from \"../utils/assertUnreachable.js\";\nimport { buildWhereClause } from \"../utils/filterStateToWhereClause.js\";\nimport { filterHasActiveState } from \"../utils/filterValues.js\";\nimport { getFilterKey } from \"../utils/getFilterKey.js\";\n\nexport interface UseFilterListStateResult<Q extends ObjectTypeDefinition> {\n filterStates: Map<string, FilterState>;\n setFilterState: (\n filterKey: string,\n state: FilterState,\n ) => void;\n whereClause: WhereClause<Q>;\n perFilterWhereClauses: Map<string, WhereClause<Q>>;\n activeFilterCount: number;\n reset: () => void;\n}\n\n/**\n * Build initial states from filter definitions.\n * Uses string keys derived from getFilterKey() for stable lookups.\n */\nfunction buildInitialStates<Q extends ObjectTypeDefinition>(\n definitions: FilterListProps<Q>[\"filterDefinitions\"],\n): Map<string, FilterState> {\n const states = new Map<string, FilterState>();\n\n if (!definitions) {\n return states;\n }\n\n for (const definition of definitions) {\n const key = getFilterKey(definition);\n switch (definition.type) {\n case \"PROPERTY\": {\n const state = definition.filterState;\n if (state) {\n states.set(key, state);\n }\n break;\n }\n case \"HAS_LINK\":\n case \"KEYWORD_SEARCH\":\n case \"CUSTOM\": {\n const state = definition.defaultFilterState;\n if (state) {\n states.set(key, state);\n }\n break;\n }\n case \"LINKED_PROPERTY\": {\n const innerState = definition.defaultLinkedFilterState;\n if (innerState) {\n const state: LinkedPropertyFilterState = {\n type: \"linkedProperty\",\n linkedFilterState: innerState,\n };\n states.set(key, state);\n }\n break;\n }\n default:\n assertUnreachable(definition);\n }\n }\n\n return states;\n}\n\nexport function useFilterListState<Q extends ObjectTypeDefinition>(\n props: FilterListProps<Q>,\n): UseFilterListStateResult<Q> {\n const {\n objectSet,\n filterDefinitions,\n filterOperator = \"and\",\n onFilterStateChanged,\n onFilterClauseChanged,\n initialFilterStates,\n } = props;\n\n const objectType = objectSet.$objectSetInternals.def;\n\n const [filterStates, setFilterStates] = useState<\n Map<string, FilterState>\n >(() => {\n const states = buildInitialStates(filterDefinitions);\n if (initialFilterStates) {\n for (const [key, state] of initialFilterStates) {\n states.set(key, state);\n }\n }\n return states;\n });\n\n const setFilterState = useCallback(\n (filterKey: string, state: FilterState) => {\n let newWhereClause: WhereClause<Q> | undefined;\n\n setFilterStates((prev) => {\n const next = new Map(prev);\n next.set(filterKey, state);\n\n newWhereClause = buildWhereClause(\n filterDefinitions,\n next,\n filterOperator,\n objectType,\n );\n\n return next;\n });\n\n if (newWhereClause !== undefined) {\n onFilterClauseChanged?.(newWhereClause);\n }\n const definition = filterDefinitions?.find(\n (d) => getFilterKey(d) === filterKey,\n );\n if (definition) {\n onFilterStateChanged?.(definition, state);\n }\n },\n [\n filterDefinitions,\n filterOperator,\n objectType,\n onFilterClauseChanged,\n onFilterStateChanged,\n ],\n );\n\n const whereClause = useMemo(\n () =>\n buildWhereClause(\n filterDefinitions,\n filterStates,\n filterOperator,\n objectType,\n ),\n [filterDefinitions, filterStates, filterOperator, objectType],\n );\n\n const perFilterWhereClauses = useMemo(() => {\n const map = new Map<string, WhereClause<Q>>();\n if (!filterDefinitions) {\n return map;\n }\n for (const definition of filterDefinitions) {\n const key = getFilterKey(definition);\n map.set(\n key,\n buildWhereClause(\n filterDefinitions,\n filterStates,\n filterOperator,\n objectType,\n key,\n ),\n );\n }\n return map;\n }, [filterDefinitions, filterStates, filterOperator, objectType]);\n\n const activeFilterCount = useMemo(() => {\n let count = 0;\n for (const state of filterStates.values()) {\n if (filterHasActiveState(state)) {\n count++;\n }\n }\n return count;\n }, [filterStates]);\n\n const reset = useCallback(() => {\n const initialStates = buildInitialStates(filterDefinitions);\n setFilterStates(initialStates);\n\n const newWhereClause = buildWhereClause(\n filterDefinitions,\n initialStates,\n filterOperator,\n objectType,\n );\n onFilterClauseChanged?.(newWhereClause);\n }, [filterDefinitions, filterOperator, objectType, onFilterClauseChanged]);\n\n return useMemo(() => ({\n filterStates,\n setFilterState,\n whereClause,\n perFilterWhereClauses,\n activeFilterCount,\n reset,\n }), [\n filterStates,\n setFilterState,\n whereClause,\n perFilterWhereClauses,\n activeFilterCount,\n reset,\n ]);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"useFilterListState.js","names":["useCallback","useMemo","useState","assertUnreachable","buildWhereClause","filterHasActiveState","getFilterKey","buildInitialStates","definitions","states","Map","definition","key","type","state","filterState","set","defaultFilterState","innerState","defaultLinkedFilterState","linkedFilterState","useFilterListState","props","objectSet","filterDefinitions","filterOperator","onFilterStateChanged","onFilterClauseChanged","initialFilterStates","objectType","$objectSetInternals","def","filterStates","setFilterStates","setFilterState","filterKey","computedClause","prev","next","undefined","find","d","whereClause","perFilterWhereClauses","map","activeFilterCount","count","values","reset","initialStates"],"sources":["useFilterListState.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 { ObjectTypeDefinition, WhereClause } from \"@osdk/api\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport type { FilterListProps } from \"../FilterListApi.js\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport type { LinkedPropertyFilterState } from \"../types/LinkedFilterTypes.js\";\nimport { assertUnreachable } from \"../utils/assertUnreachable.js\";\nimport { buildWhereClause } from \"../utils/filterStateToWhereClause.js\";\nimport { filterHasActiveState } from \"../utils/filterValues.js\";\nimport { getFilterKey } from \"../utils/getFilterKey.js\";\n\nexport interface UseFilterListStateResult<Q extends ObjectTypeDefinition> {\n filterStates: Map<string, FilterState>;\n setFilterState: (\n filterKey: string,\n state: FilterState,\n ) => void;\n whereClause: WhereClause<Q>;\n perFilterWhereClauses: Map<string, WhereClause<Q>>;\n activeFilterCount: number;\n reset: () => void;\n}\n\n/**\n * Build initial states from filter definitions.\n * Uses string keys derived from getFilterKey() for stable lookups.\n */\nfunction buildInitialStates<Q extends ObjectTypeDefinition>(\n definitions: FilterListProps<Q>[\"filterDefinitions\"],\n): Map<string, FilterState> {\n const states = new Map<string, FilterState>();\n\n if (!definitions) {\n return states;\n }\n\n for (const definition of definitions) {\n const key = getFilterKey(definition);\n switch (definition.type) {\n case \"PROPERTY\": {\n const state = definition.filterState;\n if (state) {\n states.set(key, state);\n }\n break;\n }\n case \"HAS_LINK\":\n case \"KEYWORD_SEARCH\":\n case \"CUSTOM\": {\n const state = definition.defaultFilterState;\n if (state) {\n states.set(key, state);\n }\n break;\n }\n case \"LINKED_PROPERTY\": {\n const innerState = definition.defaultLinkedFilterState;\n if (innerState) {\n const state: LinkedPropertyFilterState = {\n type: \"linkedProperty\",\n linkedFilterState: innerState,\n };\n states.set(key, state);\n }\n break;\n }\n default:\n assertUnreachable(definition);\n }\n }\n\n return states;\n}\n\nexport function useFilterListState<Q extends ObjectTypeDefinition>(\n props: FilterListProps<Q>,\n): UseFilterListStateResult<Q> {\n const {\n objectSet,\n filterDefinitions,\n filterOperator = \"and\",\n onFilterStateChanged,\n onFilterClauseChanged,\n initialFilterStates,\n } = props;\n\n const objectType = objectSet.$objectSetInternals.def;\n\n const [filterStates, setFilterStates] = useState<\n Map<string, FilterState>\n >(() => {\n const states = buildInitialStates(filterDefinitions);\n if (initialFilterStates) {\n for (const [key, state] of initialFilterStates) {\n states.set(key, state);\n }\n }\n return states;\n });\n\n const setFilterState = useCallback(\n (filterKey: string, state: FilterState) => {\n let computedClause: WhereClause<Q> | undefined;\n\n setFilterStates((prev) => {\n const next = new Map(prev);\n next.set(filterKey, state);\n computedClause = buildWhereClause(\n filterDefinitions,\n next,\n filterOperator,\n objectType,\n );\n return next;\n });\n\n if (computedClause !== undefined) {\n onFilterClauseChanged?.(computedClause);\n }\n\n const definition = filterDefinitions?.find(\n (d) => getFilterKey(d) === filterKey,\n );\n if (definition) {\n onFilterStateChanged?.(definition, state);\n }\n },\n [\n filterDefinitions,\n filterOperator,\n objectType,\n onFilterClauseChanged,\n onFilterStateChanged,\n ],\n );\n\n const whereClause = useMemo(\n () =>\n buildWhereClause(\n filterDefinitions,\n filterStates,\n filterOperator,\n objectType,\n ),\n [filterDefinitions, filterStates, filterOperator, objectType],\n );\n\n const perFilterWhereClauses = useMemo(() => {\n const map = new Map<string, WhereClause<Q>>();\n if (!filterDefinitions) {\n return map;\n }\n for (const definition of filterDefinitions) {\n const key = getFilterKey(definition);\n map.set(\n key,\n buildWhereClause(\n filterDefinitions,\n filterStates,\n filterOperator,\n objectType,\n key,\n ),\n );\n }\n return map;\n }, [filterDefinitions, filterStates, filterOperator, objectType]);\n\n const activeFilterCount = useMemo(() => {\n let count = 0;\n for (const state of filterStates.values()) {\n if (filterHasActiveState(state)) {\n count++;\n }\n }\n return count;\n }, [filterStates]);\n\n const reset = useCallback(() => {\n const initialStates = buildInitialStates(filterDefinitions);\n setFilterStates(initialStates);\n onFilterClauseChanged?.(\n buildWhereClause(\n filterDefinitions,\n initialStates,\n filterOperator,\n objectType,\n ),\n );\n }, [filterDefinitions, filterOperator, objectType, onFilterClauseChanged]);\n\n return useMemo(() => ({\n filterStates,\n setFilterState,\n whereClause,\n perFilterWhereClauses,\n activeFilterCount,\n reset,\n }), [\n filterStates,\n setFilterState,\n whereClause,\n perFilterWhereClauses,\n activeFilterCount,\n reset,\n ]);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -16,6 +16,23 @@
16
16
 
17
17
  import { assertUnreachable } from "./assertUnreachable.js";
18
18
  import { getFilterKey } from "./getFilterKey.js";
19
+ function liftCompoundPropertyFilter(propertyKey, filter) {
20
+ if (typeof filter === "object" && !Array.isArray(filter)) {
21
+ if ("$and" in filter && Array.isArray(filter.$and)) {
22
+ return {
23
+ $and: filter.$and.map(f => liftCompoundPropertyFilter(propertyKey, f))
24
+ };
25
+ }
26
+ if ("$or" in filter && Array.isArray(filter.$or)) {
27
+ return {
28
+ $or: filter.$or.map(f => liftCompoundPropertyFilter(propertyKey, f))
29
+ };
30
+ }
31
+ }
32
+ return {
33
+ [propertyKey]: filter
34
+ };
35
+ }
19
36
  function filterStateToPropertyFilter(state) {
20
37
  switch (state.type) {
21
38
  case "CONTAINS_TEXT":
@@ -219,9 +236,7 @@ export function buildWhereClause(definitions, filterStates, operator, objectType
219
236
  {
220
237
  const filter = filterStateToPropertyFilter(state);
221
238
  if (filter !== undefined) {
222
- clauses.push({
223
- [definition.key]: filter
224
- });
239
+ clauses.push(liftCompoundPropertyFilter(definition.key, filter));
225
240
  }
226
241
  break;
227
242
  }
@@ -1 +1 @@
1
- {"version":3,"file":"filterStateToWhereClause.js","names":["assertUnreachable","getFilterKey","filterStateToPropertyFilter","state","type","value","undefined","filter","$containsAnyTerm","isExcluding","$not","enabled","conditions","minValue","push","$gte","toISOString","maxValue","$lte","length","includeNull","rangeFilter","$and","$or","$isNull","values","$in","selectedValues","map","v","Date","startDate","endDate","buildWhereClause","definitions","filterStates","operator","objectType","excludeFilterKey","clauses","definition","key","get","process","env","NODE_ENV","console","warn","linkName","hasLink","$isNotNull","searchTerm","trim","properties","propertiesToSearch","__DefinitionMetadata","Object","entries","prop","multiplicity","containsOp","propertySearches","customClause","toWhereClause","keys"],"sources":["filterStateToWhereClause.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 { ObjectTypeDefinition, WhereClause } from \"@osdk/api\";\nimport type { FilterDefinitionUnion } from \"../FilterListApi.js\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport { assertUnreachable } from \"./assertUnreachable.js\";\nimport { getFilterKey } from \"./getFilterKey.js\";\n\ntype PropertyFilter = Record<string, unknown> | boolean | string | number;\n\nfunction filterStateToPropertyFilter(\n state: FilterState,\n): PropertyFilter | undefined {\n switch (state.type) {\n case \"CONTAINS_TEXT\": {\n if (!state.value) {\n return undefined;\n }\n const filter = { $containsAnyTerm: state.value };\n if (state.isExcluding) {\n return { $not: filter };\n }\n return filter;\n }\n\n case \"TOGGLE\": {\n return state.enabled;\n }\n\n case \"DATE_RANGE\": {\n const conditions: PropertyFilter[] = [];\n\n if (state.minValue !== undefined) {\n conditions.push({ $gte: state.minValue.toISOString() });\n }\n if (state.maxValue !== undefined) {\n conditions.push({ $lte: state.maxValue.toISOString() });\n }\n\n if (conditions.length === 0 && !state.includeNull) {\n return undefined;\n }\n\n let rangeFilter: PropertyFilter | undefined;\n if (conditions.length === 1) {\n rangeFilter = conditions[0];\n } else if (conditions.length > 1) {\n rangeFilter = { $and: conditions };\n }\n\n if (state.includeNull) {\n if (rangeFilter) {\n return { $or: [rangeFilter, { $isNull: true }] };\n }\n return { $isNull: true };\n }\n\n return rangeFilter;\n }\n\n case \"NUMBER_RANGE\": {\n const conditions: PropertyFilter[] = [];\n\n if (state.minValue !== undefined) {\n conditions.push({ $gte: state.minValue });\n }\n if (state.maxValue !== undefined) {\n conditions.push({ $lte: state.maxValue });\n }\n\n if (conditions.length === 0 && !state.includeNull) {\n return undefined;\n }\n\n let rangeFilter: PropertyFilter | undefined;\n if (conditions.length === 1) {\n rangeFilter = conditions[0];\n } else if (conditions.length > 1) {\n rangeFilter = { $and: conditions };\n }\n\n if (state.includeNull) {\n if (rangeFilter) {\n return { $or: [rangeFilter, { $isNull: true }] };\n }\n return { $isNull: true };\n }\n\n return rangeFilter;\n }\n\n case \"EXACT_MATCH\": {\n if (state.values.length === 0) {\n return undefined;\n }\n const filter = state.values.length === 1\n ? state.values[0]\n : { $in: state.values };\n if (state.isExcluding) {\n return { $not: filter };\n }\n return filter;\n }\n\n case \"SELECT\": {\n if (state.selectedValues.length === 0) {\n return undefined;\n }\n const values: (string | number | boolean)[] = state.selectedValues.map(\n (v) =>\n v instanceof Date ? v.toISOString() : v as string | number | boolean,\n );\n const filter = values.length === 1 ? values[0] : { $in: values };\n if (state.isExcluding) {\n return { $not: filter };\n }\n return filter;\n }\n\n case \"TIMELINE\": {\n const conditions: PropertyFilter[] = [];\n if (state.startDate !== undefined) {\n conditions.push({ $gte: state.startDate.toISOString() });\n }\n if (state.endDate !== undefined) {\n conditions.push({ $lte: state.endDate.toISOString() });\n }\n if (conditions.length === 0) {\n return undefined;\n }\n let rangeFilter: PropertyFilter;\n if (conditions.length === 1) {\n rangeFilter = conditions[0];\n } else {\n rangeFilter = { $and: conditions };\n }\n if (state.isExcluding) {\n return { $not: rangeFilter };\n }\n return rangeFilter;\n }\n\n // These filter types are handled separately in buildWhereClause\n // since they need access to the full definition, not just state\n case \"hasLink\":\n case \"linkedProperty\":\n case \"keywordSearch\":\n case \"custom\":\n return undefined;\n\n default:\n return assertUnreachable(state);\n }\n}\n\n/**\n * Builds a WhereClause from filter definitions and their current states.\n *\n * The filterStates map uses string keys derived from filter definitions via\n * getFilterKey(). This ensures stable state lookups even when filters are\n * reordered or definition object references change.\n *\n * Note: The `as WhereClause<Q>` casts are necessary because we're building\n * clauses dynamically from property keys determined at runtime. TypeScript\n * cannot verify that the constructed clause structure matches the generic Q's\n * expected shape, but the structure is guaranteed to be valid by construction.\n */\nexport function buildWhereClause<Q extends ObjectTypeDefinition>(\n definitions: Array<FilterDefinitionUnion<Q>> | undefined,\n filterStates: Map<string, FilterState>,\n operator: \"and\" | \"or\",\n objectType?: Q,\n excludeFilterKey?: string,\n): WhereClause<Q> {\n if (!definitions || definitions.length === 0) {\n return {} as WhereClause<Q>;\n }\n\n const clauses: Array<Record<string, unknown>> = [];\n\n for (const definition of definitions) {\n const key = getFilterKey(definition);\n if (key === excludeFilterKey) {\n continue;\n }\n const state = filterStates.get(key);\n\n if (!state) {\n continue;\n }\n\n switch (definition.type) {\n case \"PROPERTY\": {\n const filter = filterStateToPropertyFilter(state);\n if (filter !== undefined) {\n clauses.push({ [definition.key]: filter });\n }\n break;\n }\n\n case \"HAS_LINK\": {\n if (state.type !== \"hasLink\") {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(\n `[FilterList] State type mismatch for hasLink filter \"${definition.linkName}\": expected hasLink, got ${state.type}`,\n );\n }\n break;\n }\n if (!state.hasLink) {\n break;\n }\n clauses.push({ [definition.linkName]: { $isNotNull: true } });\n break;\n }\n\n case \"LINKED_PROPERTY\": {\n // OSDK WhereClause does not support filtering through links.\n // Link-based filtering requires ObjectSet operations (pivotTo/intersect).\n // LinkedProperty filters render UI for selection but cannot be included\n // in the where clause. Consumers needing linked property filtering must\n // implement it using ObjectSet.pivotTo() and intersect().\n break;\n }\n\n case \"KEYWORD_SEARCH\": {\n if (state.type !== \"keywordSearch\") {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(\n `[FilterList] State type mismatch for keywordSearch filter: expected keywordSearch, got ${state.type}`,\n );\n }\n break;\n }\n if (!state.searchTerm) {\n break;\n }\n // TypeScript narrows state to KeywordSearchFilterState\n const searchTerm = state.searchTerm.trim();\n if (!searchTerm) {\n break;\n }\n\n const properties = definition.properties;\n let propertiesToSearch: string[];\n\n if (properties === \"all\") {\n if (objectType?.__DefinitionMetadata?.properties) {\n propertiesToSearch = Object.entries(\n objectType.__DefinitionMetadata.properties,\n )\n .filter(([, prop]) =>\n prop.type === \"string\" && !prop.multiplicity\n )\n .map(([key]) => key);\n } else {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(\n \"[FilterList] Keyword search with properties: 'all' requires objectType to be provided. Filter will be skipped.\",\n );\n }\n break;\n }\n } else {\n propertiesToSearch = properties;\n }\n\n if (propertiesToSearch.length === 0) {\n break;\n }\n\n const containsOp = state.operator === \"AND\"\n ? \"$containsAllTerms\"\n : \"$containsAnyTerm\";\n\n const propertySearches = propertiesToSearch.map((prop) => ({\n [prop]: state.isExcluding\n ? { $not: { [containsOp]: searchTerm } }\n : { [containsOp]: searchTerm },\n }));\n\n if (propertySearches.length === 1) {\n clauses.push(propertySearches[0]);\n } else {\n clauses.push({ $or: propertySearches });\n }\n break;\n }\n\n case \"CUSTOM\": {\n if (state.type !== \"custom\") {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(\n `[FilterList] State type mismatch for custom filter \"${definition.key}\": expected custom, got ${state.type}`,\n );\n }\n break;\n }\n // TypeScript narrows state to CustomFilterState\n const customClause = definition.toWhereClause(state);\n if (customClause && Object.keys(customClause).length > 0) {\n clauses.push(customClause as Record<string, unknown>);\n }\n break;\n }\n\n default:\n assertUnreachable(definition);\n }\n }\n\n if (clauses.length === 0) {\n return {} as WhereClause<Q>;\n }\n\n if (clauses.length === 1) {\n return clauses[0] as WhereClause<Q>;\n }\n\n if (operator === \"and\") {\n return { $and: clauses } as WhereClause<Q>;\n }\n\n return { $or: clauses } as WhereClause<Q>;\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"filterStateToWhereClause.js","names":["assertUnreachable","getFilterKey","liftCompoundPropertyFilter","propertyKey","filter","Array","isArray","$and","map","f","$or","filterStateToPropertyFilter","state","type","value","undefined","$containsAnyTerm","isExcluding","$not","enabled","conditions","minValue","push","$gte","toISOString","maxValue","$lte","length","includeNull","rangeFilter","$isNull","values","$in","selectedValues","v","Date","startDate","endDate","buildWhereClause","definitions","filterStates","operator","objectType","excludeFilterKey","clauses","definition","key","get","process","env","NODE_ENV","console","warn","linkName","hasLink","$isNotNull","searchTerm","trim","properties","propertiesToSearch","__DefinitionMetadata","Object","entries","prop","multiplicity","containsOp","propertySearches","customClause","toWhereClause","keys"],"sources":["filterStateToWhereClause.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 { ObjectTypeDefinition, WhereClause } from \"@osdk/api\";\nimport type { FilterDefinitionUnion } from \"../FilterListApi.js\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport { assertUnreachable } from \"./assertUnreachable.js\";\nimport { getFilterKey } from \"./getFilterKey.js\";\n\ntype PropertyFilter = Record<string, unknown> | boolean | string | number;\n\nfunction liftCompoundPropertyFilter(\n propertyKey: string,\n filter: PropertyFilter,\n): Record<string, unknown> {\n if (typeof filter === \"object\" && !Array.isArray(filter)) {\n if (\"$and\" in filter && Array.isArray(filter.$and)) {\n return {\n $and: (filter.$and as PropertyFilter[]).map((f) =>\n liftCompoundPropertyFilter(propertyKey, f)\n ),\n };\n }\n if (\"$or\" in filter && Array.isArray(filter.$or)) {\n return {\n $or: (filter.$or as PropertyFilter[]).map((f) =>\n liftCompoundPropertyFilter(propertyKey, f)\n ),\n };\n }\n }\n return { [propertyKey]: filter };\n}\n\nfunction filterStateToPropertyFilter(\n state: FilterState,\n): PropertyFilter | undefined {\n switch (state.type) {\n case \"CONTAINS_TEXT\": {\n if (!state.value) {\n return undefined;\n }\n const filter = { $containsAnyTerm: state.value };\n if (state.isExcluding) {\n return { $not: filter };\n }\n return filter;\n }\n\n case \"TOGGLE\": {\n return state.enabled;\n }\n\n case \"DATE_RANGE\": {\n const conditions: PropertyFilter[] = [];\n\n if (state.minValue !== undefined) {\n conditions.push({ $gte: state.minValue.toISOString() });\n }\n if (state.maxValue !== undefined) {\n conditions.push({ $lte: state.maxValue.toISOString() });\n }\n\n if (conditions.length === 0 && !state.includeNull) {\n return undefined;\n }\n\n let rangeFilter: PropertyFilter | undefined;\n if (conditions.length === 1) {\n rangeFilter = conditions[0];\n } else if (conditions.length > 1) {\n rangeFilter = { $and: conditions };\n }\n\n if (state.includeNull) {\n if (rangeFilter) {\n return { $or: [rangeFilter, { $isNull: true }] };\n }\n return { $isNull: true };\n }\n\n return rangeFilter;\n }\n\n case \"NUMBER_RANGE\": {\n const conditions: PropertyFilter[] = [];\n\n if (state.minValue !== undefined) {\n conditions.push({ $gte: state.minValue });\n }\n if (state.maxValue !== undefined) {\n conditions.push({ $lte: state.maxValue });\n }\n\n if (conditions.length === 0 && !state.includeNull) {\n return undefined;\n }\n\n let rangeFilter: PropertyFilter | undefined;\n if (conditions.length === 1) {\n rangeFilter = conditions[0];\n } else if (conditions.length > 1) {\n rangeFilter = { $and: conditions };\n }\n\n if (state.includeNull) {\n if (rangeFilter) {\n return { $or: [rangeFilter, { $isNull: true }] };\n }\n return { $isNull: true };\n }\n\n return rangeFilter;\n }\n\n case \"EXACT_MATCH\": {\n if (state.values.length === 0) {\n return undefined;\n }\n const filter = state.values.length === 1\n ? state.values[0]\n : { $in: state.values };\n if (state.isExcluding) {\n return { $not: filter };\n }\n return filter;\n }\n\n case \"SELECT\": {\n if (state.selectedValues.length === 0) {\n return undefined;\n }\n const values: (string | number | boolean)[] = state.selectedValues.map(\n (v) =>\n v instanceof Date ? v.toISOString() : v as string | number | boolean,\n );\n const filter = values.length === 1 ? values[0] : { $in: values };\n if (state.isExcluding) {\n return { $not: filter };\n }\n return filter;\n }\n\n case \"TIMELINE\": {\n const conditions: PropertyFilter[] = [];\n if (state.startDate !== undefined) {\n conditions.push({ $gte: state.startDate.toISOString() });\n }\n if (state.endDate !== undefined) {\n conditions.push({ $lte: state.endDate.toISOString() });\n }\n if (conditions.length === 0) {\n return undefined;\n }\n let rangeFilter: PropertyFilter;\n if (conditions.length === 1) {\n rangeFilter = conditions[0];\n } else {\n rangeFilter = { $and: conditions };\n }\n if (state.isExcluding) {\n return { $not: rangeFilter };\n }\n return rangeFilter;\n }\n\n // These filter types are handled separately in buildWhereClause\n // since they need access to the full definition, not just state\n case \"hasLink\":\n case \"linkedProperty\":\n case \"keywordSearch\":\n case \"custom\":\n return undefined;\n\n default:\n return assertUnreachable(state);\n }\n}\n\n/**\n * Builds a WhereClause from filter definitions and their current states.\n *\n * The filterStates map uses string keys derived from filter definitions via\n * getFilterKey(). This ensures stable state lookups even when filters are\n * reordered or definition object references change.\n *\n * Note: The `as WhereClause<Q>` casts are necessary because we're building\n * clauses dynamically from property keys determined at runtime. TypeScript\n * cannot verify that the constructed clause structure matches the generic Q's\n * expected shape, but the structure is guaranteed to be valid by construction.\n */\nexport function buildWhereClause<Q extends ObjectTypeDefinition>(\n definitions: Array<FilterDefinitionUnion<Q>> | undefined,\n filterStates: Map<string, FilterState>,\n operator: \"and\" | \"or\",\n objectType?: Q,\n excludeFilterKey?: string,\n): WhereClause<Q> {\n if (!definitions || definitions.length === 0) {\n return {} as WhereClause<Q>;\n }\n\n const clauses: Array<Record<string, unknown>> = [];\n\n for (const definition of definitions) {\n const key = getFilterKey(definition);\n if (key === excludeFilterKey) {\n continue;\n }\n const state = filterStates.get(key);\n\n if (!state) {\n continue;\n }\n\n switch (definition.type) {\n case \"PROPERTY\": {\n const filter = filterStateToPropertyFilter(state);\n if (filter !== undefined) {\n clauses.push(\n liftCompoundPropertyFilter(definition.key as string, filter),\n );\n }\n break;\n }\n\n case \"HAS_LINK\": {\n if (state.type !== \"hasLink\") {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(\n `[FilterList] State type mismatch for hasLink filter \"${definition.linkName}\": expected hasLink, got ${state.type}`,\n );\n }\n break;\n }\n if (!state.hasLink) {\n break;\n }\n clauses.push({ [definition.linkName]: { $isNotNull: true } });\n break;\n }\n\n case \"LINKED_PROPERTY\": {\n // OSDK WhereClause does not support filtering through links.\n // Link-based filtering requires ObjectSet operations (pivotTo/intersect).\n // LinkedProperty filters render UI for selection but cannot be included\n // in the where clause. Consumers needing linked property filtering must\n // implement it using ObjectSet.pivotTo() and intersect().\n break;\n }\n\n case \"KEYWORD_SEARCH\": {\n if (state.type !== \"keywordSearch\") {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(\n `[FilterList] State type mismatch for keywordSearch filter: expected keywordSearch, got ${state.type}`,\n );\n }\n break;\n }\n if (!state.searchTerm) {\n break;\n }\n // TypeScript narrows state to KeywordSearchFilterState\n const searchTerm = state.searchTerm.trim();\n if (!searchTerm) {\n break;\n }\n\n const properties = definition.properties;\n let propertiesToSearch: string[];\n\n if (properties === \"all\") {\n if (objectType?.__DefinitionMetadata?.properties) {\n propertiesToSearch = Object.entries(\n objectType.__DefinitionMetadata.properties,\n )\n .filter(([, prop]) =>\n prop.type === \"string\" && !prop.multiplicity\n )\n .map(([key]) => key);\n } else {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(\n \"[FilterList] Keyword search with properties: 'all' requires objectType to be provided. Filter will be skipped.\",\n );\n }\n break;\n }\n } else {\n propertiesToSearch = properties;\n }\n\n if (propertiesToSearch.length === 0) {\n break;\n }\n\n const containsOp = state.operator === \"AND\"\n ? \"$containsAllTerms\"\n : \"$containsAnyTerm\";\n\n const propertySearches = propertiesToSearch.map((prop) => ({\n [prop]: state.isExcluding\n ? { $not: { [containsOp]: searchTerm } }\n : { [containsOp]: searchTerm },\n }));\n\n if (propertySearches.length === 1) {\n clauses.push(propertySearches[0]);\n } else {\n clauses.push({ $or: propertySearches });\n }\n break;\n }\n\n case \"CUSTOM\": {\n if (state.type !== \"custom\") {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(\n `[FilterList] State type mismatch for custom filter \"${definition.key}\": expected custom, got ${state.type}`,\n );\n }\n break;\n }\n // TypeScript narrows state to CustomFilterState\n const customClause = definition.toWhereClause(state);\n if (customClause && Object.keys(customClause).length > 0) {\n clauses.push(customClause as Record<string, unknown>);\n }\n break;\n }\n\n default:\n assertUnreachable(definition);\n }\n }\n\n if (clauses.length === 0) {\n return {} as WhereClause<Q>;\n }\n\n if (clauses.length === 1) {\n return clauses[0] as WhereClause<Q>;\n }\n\n if (operator === \"and\") {\n return { $and: clauses } as WhereClause<Q>;\n }\n\n return { $or: clauses } as WhereClause<Q>;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -32,15 +32,20 @@ export function renderDefaultCell(cellContext) {
32
32
  const cellEdits = meta.cellEdits;
33
33
  const editedValue = cellEdits?.[cellId];
34
34
  const currentValue = editedValue?.newValue ?? cellContext.getValue();
35
+ const validationError = meta.validationErrors?.get(cellId);
35
36
  return /*#__PURE__*/React.createElement(EditableCell, {
36
37
  initialValue: cellContext.getValue(),
37
38
  currentValue: currentValue,
38
39
  cellId: cellId,
39
40
  dataType: columnMeta?.dataType,
40
41
  onCellEdit: meta.onCellEdit,
42
+ onCellValidationError: meta.onCellValidationError,
43
+ clearCellValidationError: meta.clearCellValidationError,
41
44
  originalRowData: cellContext.row.original,
42
45
  rowId: rowId,
43
- columnId: columnId
46
+ columnId: columnId,
47
+ validateEdit: columnMeta?.validateEdit,
48
+ validationError: validationError
44
49
  });
45
50
  }
46
51
  //# sourceMappingURL=DefaultCellRenderer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DefaultCellRenderer.js","names":["React","EditableCell","getCellId","renderDefaultCell","cellContext","meta","table","options","columnMeta","column","columnDef","editable","onCellEdit","isInEditMode","createElement","Fragment","getValue","rowId","row","id","columnId","cellId","cellEdits","editedValue","currentValue","newValue","initialValue","dataType","originalRowData","original"],"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 { EditableCell } from \"./EditableCell.js\";\nimport { getCellId } from \"./utils/getCellId.js\";\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 if (!columnMeta?.editable || !meta?.onCellEdit || !meta?.isInEditMode) {\n return <>{cellContext.getValue()}</>;\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 const currentValue = editedValue?.newValue ?? cellContext.getValue();\n\n return (\n <EditableCell<TData>\n initialValue={cellContext.getValue()}\n currentValue={currentValue}\n cellId={cellId}\n dataType={columnMeta?.dataType}\n onCellEdit={meta.onCellEdit}\n originalRowData={cellContext.row.original}\n rowId={rowId}\n columnId={columnId}\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,YAAY,QAAQ,mBAAmB;AAChD,SAASC,SAAS,QAAQ,sBAAsB;AAEhD,OAAO,SAASC,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,IAAI,CAACG,UAAU,EAAEG,QAAQ,IAAI,CAACN,IAAI,EAAEO,UAAU,IAAI,CAACP,IAAI,EAAEQ,YAAY,EAAE;IACrE,oBAAOb,KAAA,CAAAc,aAAA,CAAAd,KAAA,CAAAe,QAAA,QAAGX,WAAW,CAACY,QAAQ,CAAC,CAAI,CAAC;EACtC;EAEA,MAAMC,KAAK,GAAGb,WAAW,CAACc,GAAG,CAACC,EAAE;EAChC,MAAMC,QAAQ,GAAGhB,WAAW,CAACK,MAAM,CAACU,EAAE;EACtC,MAAME,MAAM,GAAGnB,SAAS,CAAC;IAAEe,KAAK;IAAEG;EAAS,CAAC,CAAC;EAE7C,MAAME,SAAS,GAAGjB,IAAI,CAACiB,SAAS;EAChC,MAAMC,WAAW,GAAGD,SAAS,GAAGD,MAAM,CAAC;EACvC,MAAMG,YAAY,GAAGD,WAAW,EAAEE,QAAQ,IAAIrB,WAAW,CAACY,QAAQ,CAAC,CAAC;EAEpE,oBACEhB,KAAA,CAAAc,aAAA,CAACb,YAAY;IACXyB,YAAY,EAAEtB,WAAW,CAACY,QAAQ,CAAC,CAAE;IACrCQ,YAAY,EAAEA,YAAa;IAC3BH,MAAM,EAAEA,MAAO;IACfM,QAAQ,EAAEnB,UAAU,EAAEmB,QAAS;IAC/Bf,UAAU,EAAEP,IAAI,CAACO,UAAW;IAC5BgB,eAAe,EAAExB,WAAW,CAACc,GAAG,CAACW,QAAS;IAC1CZ,KAAK,EAAEA,KAAM;IACbG,QAAQ,EAAEA;EAAS,CACpB,CAAC;AAEN","ignoreList":[]}
1
+ {"version":3,"file":"DefaultCellRenderer.js","names":["React","EditableCell","getCellId","renderDefaultCell","cellContext","meta","table","options","columnMeta","column","columnDef","editable","onCellEdit","isInEditMode","createElement","Fragment","getValue","rowId","row","id","columnId","cellId","cellEdits","editedValue","currentValue","newValue","validationError","validationErrors","get","initialValue","dataType","onCellValidationError","clearCellValidationError","originalRowData","original","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 { EditableCell } from \"./EditableCell.js\";\nimport { getCellId } from \"./utils/getCellId.js\";\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 if (!columnMeta?.editable || !meta?.onCellEdit || !meta?.isInEditMode) {\n return <>{cellContext.getValue()}</>;\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 const currentValue = editedValue?.newValue ?? cellContext.getValue();\n const validationError = meta.validationErrors?.get(cellId);\n\n return (\n <EditableCell<TData>\n initialValue={cellContext.getValue()}\n currentValue={currentValue}\n cellId={cellId}\n dataType={columnMeta?.dataType}\n onCellEdit={meta.onCellEdit}\n onCellValidationError={meta.onCellValidationError}\n clearCellValidationError={meta.clearCellValidationError}\n originalRowData={cellContext.row.original}\n rowId={rowId}\n columnId={columnId}\n validateEdit={columnMeta?.validateEdit}\n validationError={validationError}\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,YAAY,QAAQ,mBAAmB;AAChD,SAASC,SAAS,QAAQ,sBAAsB;AAEhD,OAAO,SAASC,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,IAAI,CAACG,UAAU,EAAEG,QAAQ,IAAI,CAACN,IAAI,EAAEO,UAAU,IAAI,CAACP,IAAI,EAAEQ,YAAY,EAAE;IACrE,oBAAOb,KAAA,CAAAc,aAAA,CAAAd,KAAA,CAAAe,QAAA,QAAGX,WAAW,CAACY,QAAQ,CAAC,CAAI,CAAC;EACtC;EAEA,MAAMC,KAAK,GAAGb,WAAW,CAACc,GAAG,CAACC,EAAE;EAChC,MAAMC,QAAQ,GAAGhB,WAAW,CAACK,MAAM,CAACU,EAAE;EACtC,MAAME,MAAM,GAAGnB,SAAS,CAAC;IAAEe,KAAK;IAAEG;EAAS,CAAC,CAAC;EAE7C,MAAME,SAAS,GAAGjB,IAAI,CAACiB,SAAS;EAChC,MAAMC,WAAW,GAAGD,SAAS,GAAGD,MAAM,CAAC;EACvC,MAAMG,YAAY,GAAGD,WAAW,EAAEE,QAAQ,IAAIrB,WAAW,CAACY,QAAQ,CAAC,CAAC;EACpE,MAAMU,eAAe,GAAGrB,IAAI,CAACsB,gBAAgB,EAAEC,GAAG,CAACP,MAAM,CAAC;EAE1D,oBACErB,KAAA,CAAAc,aAAA,CAACb,YAAY;IACX4B,YAAY,EAAEzB,WAAW,CAACY,QAAQ,CAAC,CAAE;IACrCQ,YAAY,EAAEA,YAAa;IAC3BH,MAAM,EAAEA,MAAO;IACfS,QAAQ,EAAEtB,UAAU,EAAEsB,QAAS;IAC/BlB,UAAU,EAAEP,IAAI,CAACO,UAAW;IAC5BmB,qBAAqB,EAAE1B,IAAI,CAAC0B,qBAAsB;IAClDC,wBAAwB,EAAE3B,IAAI,CAAC2B,wBAAyB;IACxDC,eAAe,EAAE7B,WAAW,CAACc,GAAG,CAACgB,QAAS;IAC1CjB,KAAK,EAAEA,KAAM;IACbG,QAAQ,EAAEA,QAAS;IACnBe,YAAY,EAAE3B,UAAU,EAAE2B,YAAa;IACvCT,eAAe,EAAEA;EAAgB,CAClC,CAAC;AAEN","ignoreList":[]}