@osdk/react-components 0.2.0-beta.28 → 0.2.0-beta.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/build/browser/action-form/FormFieldApi.js.map +1 -1
- package/build/browser/action-form/fields/FormFieldRenderer.js +8 -0
- package/build/browser/action-form/fields/FormFieldRenderer.js.map +1 -1
- package/build/browser/action-form/fields/NumberInputField.js +130 -0
- package/build/browser/action-form/fields/NumberInputField.js.map +1 -0
- package/build/browser/action-form/fields/NumberInputField.module.css +96 -0
- package/build/browser/action-form/fields/NumberInputField.module.css.js +9 -0
- package/build/browser/base-components/checkbox/Checkbox.module.css +9 -1
- package/build/browser/base-components/combobox/Combobox.js +14 -1
- package/build/browser/base-components/combobox/Combobox.js.map +1 -1
- package/build/browser/base-components/combobox/Combobox.module.css +16 -6
- package/build/browser/base-components/combobox/Combobox.module.css.js +1 -0
- package/build/browser/base-components/searchable-menu/SearchableMenu.js +86 -0
- package/build/browser/base-components/searchable-menu/SearchableMenu.js.map +1 -0
- package/build/browser/base-components/searchable-menu/SearchableMenu.module.css +80 -0
- package/build/browser/base-components/searchable-menu/SearchableMenu.module.css.js +10 -0
- package/build/browser/filter-list/FilterList.js +3 -1
- package/build/browser/filter-list/FilterList.js.map +1 -1
- package/build/browser/filter-list/FilterListItemApi.js.map +1 -1
- package/build/browser/filter-list/base/AddFilterPopover.js +10 -21
- package/build/browser/filter-list/base/AddFilterPopover.js.map +1 -1
- package/build/browser/filter-list/base/AddFilterPopover.module.css +6 -40
- package/build/browser/filter-list/base/AddFilterPopover.module.css.js +1 -4
- package/build/browser/filter-list/base/BaseFilterList.js +4 -2
- package/build/browser/filter-list/base/BaseFilterList.js.map +1 -1
- package/build/browser/filter-list/base/ExcludeDropdown.module.css +7 -5
- package/build/browser/filter-list/base/FilterIcons.js +3 -3
- package/build/browser/filter-list/base/FilterIcons.js.map +1 -1
- package/build/browser/filter-list/base/FilterInputExcludeRow.js +14 -2
- package/build/browser/filter-list/base/FilterInputExcludeRow.js.map +1 -1
- package/build/browser/filter-list/base/FilterList.module.css +20 -4
- package/build/browser/filter-list/base/FilterList.module.css.js +1 -0
- package/build/browser/filter-list/base/FilterListHeader.js +1 -1
- package/build/browser/filter-list/base/FilterListHeader.js.map +1 -1
- package/build/browser/filter-list/base/FilterListHeader.module.css +8 -3
- package/build/browser/filter-list/base/FilterListItem.module.css +15 -9
- package/build/browser/filter-list/base/FilterListItem.module.css.js +2 -1
- package/build/browser/filter-list/base/inputs/ListogramInput.js +1 -1
- package/build/browser/filter-list/base/inputs/ListogramInput.js.map +1 -1
- package/build/browser/filter-list/base/inputs/ListogramInput.module.css +23 -0
- package/build/browser/filter-list/base/inputs/ListogramInput.module.css.js +1 -0
- package/build/browser/filter-list/base/inputs/MultiSelectInput.js +26 -43
- package/build/browser/filter-list/base/inputs/MultiSelectInput.js.map +1 -1
- package/build/browser/filter-list/base/inputs/MultiSelectInput.module.css +7 -8
- package/build/browser/filter-list/base/inputs/MultiSelectInput.module.css.js +1 -2
- package/build/browser/filter-list/base/inputs/RangeInput.module.css +7 -1
- package/build/browser/filter-list/base/inputs/SingleSelectInput.js +21 -30
- package/build/browser/filter-list/base/inputs/SingleSelectInput.js.map +1 -1
- package/build/browser/filter-list/base/inputs/SingleSelectInput.module.css +13 -23
- package/build/browser/filter-list/base/inputs/SingleSelectInput.module.css.js +3 -1
- package/build/browser/filter-list/hooks/useFilterListState.js +9 -1
- package/build/browser/filter-list/hooks/useFilterListState.js.map +1 -1
- package/build/browser/filter-list/inputs/ContainsTextFilterInput.js +1 -1
- package/build/browser/filter-list/inputs/ContainsTextFilterInput.js.map +1 -1
- package/build/browser/filter-list/inputs/ListogramFilterInput.js +9 -1
- package/build/browser/filter-list/inputs/ListogramFilterInput.js.map +1 -1
- package/build/browser/filter-list/inputs/MultiSelectFilterInput.js +9 -1
- package/build/browser/filter-list/inputs/MultiSelectFilterInput.js.map +1 -1
- package/build/browser/filter-list/inputs/PropertyFilterInput.js +1 -1
- package/build/browser/filter-list/inputs/PropertyFilterInput.js.map +1 -1
- package/build/browser/filter-list/inputs/SingleSelectFilterInput.js +9 -1
- package/build/browser/filter-list/inputs/SingleSelectFilterInput.js.map +1 -1
- package/build/browser/filter-list/inputs/TextTagsFilterInput.js +9 -1
- package/build/browser/filter-list/inputs/TextTagsFilterInput.js.map +1 -1
- package/build/browser/object-table/ColumnConfigDialog.module.css +1 -2
- package/build/browser/object-table/MultiColumnSortDialog.js +22 -59
- package/build/browser/object-table/MultiColumnSortDialog.js.map +1 -1
- package/build/browser/object-table/MultiColumnSortDialog.module.css +0 -64
- package/build/browser/object-table/MultiColumnSortDialog.module.css.js +0 -5
- package/build/browser/styles.css +314 -166
- package/build/cjs/public/experimental.cjs +501 -329
- package/build/cjs/public/experimental.cjs.map +1 -1
- package/build/cjs/public/experimental.css +378 -283
- package/build/cjs/public/experimental.css.map +1 -1
- package/build/cjs/public/experimental.d.cts +25 -12
- package/build/esm/action-form/FormFieldApi.js.map +1 -1
- package/build/esm/action-form/fields/FormFieldRenderer.js +8 -0
- package/build/esm/action-form/fields/FormFieldRenderer.js.map +1 -1
- package/build/esm/action-form/fields/NumberInputField.js +130 -0
- package/build/esm/action-form/fields/NumberInputField.js.map +1 -0
- package/build/esm/action-form/fields/NumberInputField.module.css +96 -0
- package/build/esm/base-components/checkbox/Checkbox.module.css +9 -1
- package/build/esm/base-components/combobox/Combobox.js +14 -1
- package/build/esm/base-components/combobox/Combobox.js.map +1 -1
- package/build/esm/base-components/combobox/Combobox.module.css +16 -6
- package/build/esm/base-components/searchable-menu/SearchableMenu.js +86 -0
- package/build/esm/base-components/searchable-menu/SearchableMenu.js.map +1 -0
- package/build/esm/base-components/searchable-menu/SearchableMenu.module.css +80 -0
- package/build/esm/filter-list/FilterList.js +3 -1
- package/build/esm/filter-list/FilterList.js.map +1 -1
- package/build/esm/filter-list/FilterListItemApi.js.map +1 -1
- package/build/esm/filter-list/base/AddFilterPopover.js +10 -21
- package/build/esm/filter-list/base/AddFilterPopover.js.map +1 -1
- package/build/esm/filter-list/base/AddFilterPopover.module.css +6 -40
- package/build/esm/filter-list/base/BaseFilterList.js +4 -2
- package/build/esm/filter-list/base/BaseFilterList.js.map +1 -1
- package/build/esm/filter-list/base/ExcludeDropdown.module.css +7 -5
- package/build/esm/filter-list/base/FilterIcons.js +3 -3
- package/build/esm/filter-list/base/FilterIcons.js.map +1 -1
- package/build/esm/filter-list/base/FilterInputExcludeRow.js +14 -2
- package/build/esm/filter-list/base/FilterInputExcludeRow.js.map +1 -1
- package/build/esm/filter-list/base/FilterList.module.css +20 -4
- package/build/esm/filter-list/base/FilterListHeader.js +1 -1
- package/build/esm/filter-list/base/FilterListHeader.js.map +1 -1
- package/build/esm/filter-list/base/FilterListHeader.module.css +8 -3
- package/build/esm/filter-list/base/FilterListItem.module.css +15 -9
- package/build/esm/filter-list/base/inputs/ListogramInput.js +1 -1
- package/build/esm/filter-list/base/inputs/ListogramInput.js.map +1 -1
- package/build/esm/filter-list/base/inputs/ListogramInput.module.css +23 -0
- package/build/esm/filter-list/base/inputs/MultiSelectInput.js +26 -43
- package/build/esm/filter-list/base/inputs/MultiSelectInput.js.map +1 -1
- package/build/esm/filter-list/base/inputs/MultiSelectInput.module.css +7 -8
- package/build/esm/filter-list/base/inputs/RangeInput.module.css +7 -1
- package/build/esm/filter-list/base/inputs/SingleSelectInput.js +21 -30
- package/build/esm/filter-list/base/inputs/SingleSelectInput.js.map +1 -1
- package/build/esm/filter-list/base/inputs/SingleSelectInput.module.css +13 -23
- package/build/esm/filter-list/hooks/useFilterListState.js +9 -1
- package/build/esm/filter-list/hooks/useFilterListState.js.map +1 -1
- package/build/esm/filter-list/inputs/ContainsTextFilterInput.js +1 -1
- package/build/esm/filter-list/inputs/ContainsTextFilterInput.js.map +1 -1
- package/build/esm/filter-list/inputs/ListogramFilterInput.js +9 -1
- package/build/esm/filter-list/inputs/ListogramFilterInput.js.map +1 -1
- package/build/esm/filter-list/inputs/MultiSelectFilterInput.js +9 -1
- package/build/esm/filter-list/inputs/MultiSelectFilterInput.js.map +1 -1
- package/build/esm/filter-list/inputs/PropertyFilterInput.js +1 -1
- package/build/esm/filter-list/inputs/PropertyFilterInput.js.map +1 -1
- package/build/esm/filter-list/inputs/SingleSelectFilterInput.js +9 -1
- package/build/esm/filter-list/inputs/SingleSelectFilterInput.js.map +1 -1
- package/build/esm/filter-list/inputs/TextTagsFilterInput.js +9 -1
- package/build/esm/filter-list/inputs/TextTagsFilterInput.js.map +1 -1
- package/build/esm/object-table/ColumnConfigDialog.module.css +1 -2
- package/build/esm/object-table/MultiColumnSortDialog.js +22 -59
- package/build/esm/object-table/MultiColumnSortDialog.js.map +1 -1
- package/build/esm/object-table/MultiColumnSortDialog.module.css +0 -64
- package/build/types/action-form/FormFieldApi.d.ts +22 -4
- package/build/types/action-form/FormFieldApi.d.ts.map +1 -1
- package/build/types/action-form/fields/FormFieldRenderer.d.ts.map +1 -1
- package/build/types/action-form/fields/NumberInputField.d.ts +3 -0
- package/build/types/action-form/fields/NumberInputField.d.ts.map +1 -0
- package/build/types/base-components/combobox/Combobox.d.ts +6 -1
- package/build/types/base-components/combobox/Combobox.d.ts.map +1 -1
- package/build/types/base-components/searchable-menu/SearchableMenu.d.ts +18 -0
- package/build/types/base-components/searchable-menu/SearchableMenu.d.ts.map +1 -0
- package/build/types/filter-list/FilterListItemApi.d.ts +4 -0
- package/build/types/filter-list/FilterListItemApi.d.ts.map +1 -1
- package/build/types/filter-list/base/AddFilterPopover.d.ts.map +1 -1
- package/build/types/filter-list/base/FilterInputExcludeRow.d.ts +2 -1
- package/build/types/filter-list/base/FilterInputExcludeRow.d.ts.map +1 -1
- package/build/types/filter-list/base/inputs/MultiSelectInput.d.ts +1 -3
- package/build/types/filter-list/base/inputs/MultiSelectInput.d.ts.map +1 -1
- package/build/types/filter-list/base/inputs/SingleSelectInput.d.ts.map +1 -1
- package/build/types/filter-list/hooks/useFilterListState.d.ts +1 -0
- package/build/types/filter-list/hooks/useFilterListState.d.ts.map +1 -1
- package/build/types/filter-list/inputs/ListogramFilterInput.d.ts.map +1 -1
- package/build/types/filter-list/inputs/MultiSelectFilterInput.d.ts.map +1 -1
- package/build/types/filter-list/inputs/SingleSelectFilterInput.d.ts.map +1 -1
- package/build/types/filter-list/inputs/TextTagsFilterInput.d.ts.map +1 -1
- package/build/types/object-table/MultiColumnSortDialog.d.ts.map +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SingleSelectInput.js","names":["
|
|
1
|
+
{"version":3,"file":"SingleSelectInput.js","names":["classnames","React","memo","useCallback","useMemo","Combobox","sharedStyles","styles","SingleSelectInputInner","values","isLoading","error","selectedValue","onChange","className","style","placeholder","showClearButton","showCounts","ariaLabel","handleValueChange","value","undefined","items","map","countByValue","Map","count","renderItem","createElement","Item","key","ItemIndicator","itemLabel","itemCount","get","toLocaleString","singleSelect","loadingMessage","errorMessage","message","length","emptyMessage","selectContainer","Root","onValueChange","SearchInput","Clear","clearButton","Portal","Positioner","Popup","Empty","List","SingleSelectInput"],"sources":["SingleSelectInput.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 classnames from \"classnames\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { Combobox } from \"../../../base-components/combobox/Combobox.js\";\nimport type { PropertyAggregationValue } from \"../../types/AggregationTypes.js\";\nimport sharedStyles from \"./shared.module.css\";\nimport styles from \"./SingleSelectInput.module.css\";\n\ninterface SingleSelectInputProps {\n values: PropertyAggregationValue[];\n isLoading: boolean;\n error: Error | null;\n selectedValue: string | undefined;\n onChange: (value: string | undefined) => void;\n className?: string;\n style?: React.CSSProperties;\n placeholder?: string;\n showClearButton?: boolean;\n showCounts?: boolean;\n ariaLabel?: string;\n}\n\nfunction SingleSelectInputInner({\n values,\n isLoading,\n error,\n selectedValue,\n onChange,\n className,\n style,\n placeholder = \"Select a value...\",\n showClearButton = true,\n showCounts = false,\n ariaLabel = \"Select value\",\n}: SingleSelectInputProps): React.ReactElement {\n const handleValueChange = useCallback(\n (value: string | null) => {\n onChange(value ?? undefined);\n },\n [onChange],\n );\n\n const items = useMemo(\n () => values.map(({ value }) => value),\n [values],\n );\n\n const countByValue = useMemo(\n () => new Map(values.map(({ value, count }) => [value, count])),\n [values],\n );\n\n const renderItem = useCallback(\n (value: string) => (\n <Combobox.Item key={value} value={value}>\n <Combobox.ItemIndicator />\n <span className={styles.itemLabel}>{value}</span>\n {showCounts && (\n <span className={styles.itemCount}>\n ({(countByValue.get(value) ?? 0).toLocaleString()})\n </span>\n )}\n </Combobox.Item>\n ),\n [countByValue, showCounts],\n );\n\n return (\n <div\n className={classnames(styles.singleSelect, className)}\n style={style}\n data-loading={isLoading}\n >\n {isLoading && (\n <div className={sharedStyles.loadingMessage}>\n Loading options...\n </div>\n )}\n\n {error && (\n <div className={sharedStyles.errorMessage}>\n Error loading options: {error.message}\n </div>\n )}\n\n {!isLoading && !error && values.length === 0 && (\n <div className={sharedStyles.emptyMessage}>\n No options available\n </div>\n )}\n\n {(values.length > 0 || isLoading) && (\n <div className={styles.selectContainer}>\n <Combobox.Root<string>\n value={selectedValue ?? null}\n onValueChange={handleValueChange}\n items={items}\n >\n <Combobox.SearchInput\n placeholder={placeholder}\n aria-label={ariaLabel}\n />\n {showClearButton && selectedValue !== undefined && (\n <Combobox.Clear className={styles.clearButton} />\n )}\n <Combobox.Portal>\n <Combobox.Positioner>\n <Combobox.Popup>\n <Combobox.Empty>No matching options</Combobox.Empty>\n <Combobox.List>{renderItem}</Combobox.List>\n </Combobox.Popup>\n </Combobox.Positioner>\n </Combobox.Portal>\n </Combobox.Root>\n </div>\n )}\n </div>\n );\n}\n\nexport const SingleSelectInput = memo(\n SingleSelectInputInner,\n) as typeof SingleSelectInputInner;\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAOA,UAAU,MAAM,YAAY;AACnC,OAAOC,KAAK,IAAIC,IAAI,EAAEC,WAAW,EAAEC,OAAO,QAAQ,OAAO;AACzD,SAASC,QAAQ,QAAQ,+CAA+C;AAExE,OAAOC,YAAY,MAAM,qBAAqB;AAC9C,OAAOC,MAAM,MAAM,gCAAgC;AAgBnD,SAASC,sBAAsBA,CAAC;EAC9BC,MAAM;EACNC,SAAS;EACTC,KAAK;EACLC,aAAa;EACbC,QAAQ;EACRC,SAAS;EACTC,KAAK;EACLC,WAAW,GAAG,mBAAmB;EACjCC,eAAe,GAAG,IAAI;EACtBC,UAAU,GAAG,KAAK;EAClBC,SAAS,GAAG;AACU,CAAC,EAAsB;EAC7C,MAAMC,iBAAiB,GAAGjB,WAAW,CAClCkB,KAAoB,IAAK;IACxBR,QAAQ,CAACQ,KAAK,IAAIC,SAAS,CAAC;EAC9B,CAAC,EACD,CAACT,QAAQ,CACX,CAAC;EAED,MAAMU,KAAK,GAAGnB,OAAO,CACnB,MAAMK,MAAM,CAACe,GAAG,CAAC,CAAC;IAAEH;EAAM,CAAC,KAAKA,KAAK,CAAC,EACtC,CAACZ,MAAM,CACT,CAAC;EAED,MAAMgB,YAAY,GAAGrB,OAAO,CAC1B,MAAM,IAAIsB,GAAG,CAACjB,MAAM,CAACe,GAAG,CAAC,CAAC;IAAEH,KAAK;IAAEM;EAAM,CAAC,KAAK,CAACN,KAAK,EAAEM,KAAK,CAAC,CAAC,CAAC,EAC/D,CAAClB,MAAM,CACT,CAAC;EAED,MAAMmB,UAAU,GAAGzB,WAAW,CAC3BkB,KAAa,iBACZpB,KAAA,CAAA4B,aAAA,CAACxB,QAAQ,CAACyB,IAAI;IAACC,GAAG,EAAEV,KAAM;IAACA,KAAK,EAAEA;EAAM,gBACtCpB,KAAA,CAAA4B,aAAA,CAACxB,QAAQ,CAAC2B,aAAa,MAAE,CAAC,eAC1B/B,KAAA,CAAA4B,aAAA;IAAMf,SAAS,EAAEP,MAAM,CAAC0B;EAAU,GAAEZ,KAAY,CAAC,EAChDH,UAAU,iBACTjB,KAAA,CAAA4B,aAAA;IAAMf,SAAS,EAAEP,MAAM,CAAC2B;EAAU,GAAC,GAChC,EAAC,CAACT,YAAY,CAACU,GAAG,CAACd,KAAK,CAAC,IAAI,CAAC,EAAEe,cAAc,CAAC,CAAC,EAAC,GAC9C,CAEK,CAChB,EACD,CAACX,YAAY,EAAEP,UAAU,CAC3B,CAAC;EAED,oBACEjB,KAAA,CAAA4B,aAAA;IACEf,SAAS,EAAEd,UAAU,CAACO,MAAM,CAAC8B,YAAY,EAAEvB,SAAS,CAAE;IACtDC,KAAK,EAAEA,KAAM;IACb,gBAAcL;EAAU,GAEvBA,SAAS,iBACRT,KAAA,CAAA4B,aAAA;IAAKf,SAAS,EAAER,YAAY,CAACgC;EAAe,GAAC,oBAExC,CACN,EAEA3B,KAAK,iBACJV,KAAA,CAAA4B,aAAA;IAAKf,SAAS,EAAER,YAAY,CAACiC;EAAa,GAAC,yBAClB,EAAC5B,KAAK,CAAC6B,OAC3B,CACN,EAEA,CAAC9B,SAAS,IAAI,CAACC,KAAK,IAAIF,MAAM,CAACgC,MAAM,KAAK,CAAC,iBAC1CxC,KAAA,CAAA4B,aAAA;IAAKf,SAAS,EAAER,YAAY,CAACoC;EAAa,GAAC,sBAEtC,CACN,EAEA,CAACjC,MAAM,CAACgC,MAAM,GAAG,CAAC,IAAI/B,SAAS,kBAC9BT,KAAA,CAAA4B,aAAA;IAAKf,SAAS,EAAEP,MAAM,CAACoC;EAAgB,gBACrC1C,KAAA,CAAA4B,aAAA,CAACxB,QAAQ,CAACuC,IAAI;IACZvB,KAAK,EAAET,aAAa,IAAI,IAAK;IAC7BiC,aAAa,EAAEzB,iBAAkB;IACjCG,KAAK,EAAEA;EAAM,gBAEbtB,KAAA,CAAA4B,aAAA,CAACxB,QAAQ,CAACyC,WAAW;IACnB9B,WAAW,EAAEA,WAAY;IACzB,cAAYG;EAAU,CACvB,CAAC,EACDF,eAAe,IAAIL,aAAa,KAAKU,SAAS,iBAC7CrB,KAAA,CAAA4B,aAAA,CAACxB,QAAQ,CAAC0C,KAAK;IAACjC,SAAS,EAAEP,MAAM,CAACyC;EAAY,CAAE,CACjD,eACD/C,KAAA,CAAA4B,aAAA,CAACxB,QAAQ,CAAC4C,MAAM,qBACdhD,KAAA,CAAA4B,aAAA,CAACxB,QAAQ,CAAC6C,UAAU,qBAClBjD,KAAA,CAAA4B,aAAA,CAACxB,QAAQ,CAAC8C,KAAK,qBACblD,KAAA,CAAA4B,aAAA,CAACxB,QAAQ,CAAC+C,KAAK,QAAC,qBAAmC,CAAC,eACpDnD,KAAA,CAAA4B,aAAA,CAACxB,QAAQ,CAACgD,IAAI,QAAEzB,UAA0B,CAC5B,CACG,CACN,CACJ,CACZ,CAEJ,CAAC;AAEV;AAEA,OAAO,MAAM0B,iBAAiB,gBAAGpD,IAAI,CACnCM,sBACF,CAAkC","ignoreList":[]}
|
|
@@ -27,29 +27,19 @@
|
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
.clearButton {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
justify-content: center;
|
|
33
|
-
padding: var(--osdk-filter-select-clear-padding);
|
|
34
|
-
border: none;
|
|
35
|
-
background: transparent;
|
|
36
|
-
cursor: pointer;
|
|
37
|
-
color: var(--osdk-filter-select-clear-color);
|
|
38
|
-
border-radius: var(--osdk-filter-select-clear-border-radius);
|
|
39
|
-
transition: color var(--osdk-filter-select-clear-transition),
|
|
40
|
-
background-color var(--osdk-filter-select-clear-transition);
|
|
41
|
-
|
|
42
|
-
&:hover {
|
|
43
|
-
color: var(--osdk-filter-select-clear-color-hover);
|
|
44
|
-
background-color: var(--osdk-filter-select-clear-bg-hover);
|
|
45
|
-
}
|
|
30
|
+
flex-shrink: 0;
|
|
31
|
+
}
|
|
46
32
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
33
|
+
.itemLabel {
|
|
34
|
+
flex: 1;
|
|
35
|
+
min-width: 0;
|
|
36
|
+
overflow: hidden;
|
|
37
|
+
text-overflow: ellipsis;
|
|
38
|
+
white-space: nowrap;
|
|
39
|
+
}
|
|
51
40
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
41
|
+
.itemCount {
|
|
42
|
+
font-variant-numeric: tabular-nums;
|
|
43
|
+
color: var(--osdk-typography-color-muted);
|
|
44
|
+
flex-shrink: 0;
|
|
55
45
|
}
|
|
@@ -118,6 +118,13 @@ export function useFilterListState(props) {
|
|
|
118
118
|
onFilterStateChanged?.(definition, state);
|
|
119
119
|
}
|
|
120
120
|
}, [filterDefinitions, propertyTypes, onFilterClauseChanged, onFilterStateChanged]);
|
|
121
|
+
const clearFilterState = useCallback(filterKey => {
|
|
122
|
+
const clearedStates = new Map(filterStates);
|
|
123
|
+
clearedStates.delete(filterKey);
|
|
124
|
+
setFilterStates(clearedStates);
|
|
125
|
+
const newWhereClause = buildWhereClause(filterDefinitions, clearedStates, propertyTypes);
|
|
126
|
+
onFilterClauseChanged?.(newWhereClause);
|
|
127
|
+
}, [filterStates, filterDefinitions, propertyTypes, onFilterClauseChanged]);
|
|
121
128
|
const whereClause = useMemo(() => buildWhereClause(filterDefinitions, filterStates, propertyTypes), [filterDefinitions, filterStates, propertyTypes]);
|
|
122
129
|
const perFilterWhereClauses = useMemo(() => {
|
|
123
130
|
const map = new Map();
|
|
@@ -148,10 +155,11 @@ export function useFilterListState(props) {
|
|
|
148
155
|
return useMemo(() => ({
|
|
149
156
|
filterStates,
|
|
150
157
|
setFilterState,
|
|
158
|
+
clearFilterState,
|
|
151
159
|
whereClause,
|
|
152
160
|
perFilterWhereClauses,
|
|
153
161
|
activeFilterCount,
|
|
154
162
|
reset
|
|
155
|
-
}), [filterStates, setFilterState, whereClause, perFilterWhereClauses, activeFilterCount, reset]);
|
|
163
|
+
}), [filterStates, setFilterState, clearFilterState, whereClause, perFilterWhereClauses, activeFilterCount, reset]);
|
|
156
164
|
}
|
|
157
165
|
//# sourceMappingURL=useFilterListState.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFilterListState.js","names":["useOsdkMetadata","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","onFilterStateChanged","onFilterClauseChanged","initialFilterStates","objectType","$objectSetInternals","def","metadata","propertyTypes","map","properties","prop","Object","entries","multiplicity","filterStates","setFilterStates","setFilterState","filterKey","newWhereClause","prev","next","undefined","find","d","whereClause","perFilterWhereClauses","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 { useOsdkMetadata } from \"@osdk/react\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport { assertUnreachable } from \"../../shared/assertUnreachable.js\";\nimport type { FilterListProps } from \"../FilterListApi.js\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport type { LinkedPropertyFilterState } from \"../types/LinkedFilterTypes.js\";\nimport {\n buildWhereClause,\n type PropertyTypeInfo,\n} 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 onFilterStateChanged,\n onFilterClauseChanged,\n initialFilterStates,\n } = props;\n\n const objectType = objectSet.$objectSetInternals.def;\n const { metadata } = useOsdkMetadata(objectType);\n\n const propertyTypes = useMemo(() => {\n const map = new Map<string, PropertyTypeInfo>();\n if (metadata?.properties) {\n for (const [key, prop] of Object.entries(metadata.properties)) {\n if (typeof prop.type === \"string\") {\n map.set(key, {\n type: prop.type,\n multiplicity: prop.multiplicity === true,\n });\n }\n }\n }\n return map;\n }, [metadata?.properties]);\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 propertyTypes,\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 propertyTypes,\n onFilterClauseChanged,\n onFilterStateChanged,\n ],\n );\n\n const whereClause = useMemo(\n () =>\n buildWhereClause(\n filterDefinitions,\n filterStates,\n propertyTypes,\n ),\n [filterDefinitions, filterStates, propertyTypes],\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 propertyTypes,\n key,\n ),\n );\n }\n return map;\n }, [filterDefinitions, filterStates, propertyTypes]);\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 propertyTypes,\n );\n onFilterClauseChanged?.(newWhereClause);\n }, [filterDefinitions, propertyTypes, 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":["useOsdkMetadata","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","onFilterStateChanged","onFilterClauseChanged","initialFilterStates","objectType","$objectSetInternals","def","metadata","propertyTypes","map","properties","prop","Object","entries","multiplicity","filterStates","setFilterStates","setFilterState","filterKey","newWhereClause","prev","next","undefined","find","d","clearFilterState","clearedStates","delete","whereClause","perFilterWhereClauses","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 { useOsdkMetadata } from \"@osdk/react\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport { assertUnreachable } from \"../../shared/assertUnreachable.js\";\nimport type { FilterListProps } from \"../FilterListApi.js\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport type { LinkedPropertyFilterState } from \"../types/LinkedFilterTypes.js\";\nimport {\n buildWhereClause,\n type PropertyTypeInfo,\n} 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 clearFilterState: (filterKey: string) => 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 onFilterStateChanged,\n onFilterClauseChanged,\n initialFilterStates,\n } = props;\n\n const objectType = objectSet.$objectSetInternals.def;\n const { metadata } = useOsdkMetadata(objectType);\n\n const propertyTypes = useMemo(() => {\n const map = new Map<string, PropertyTypeInfo>();\n if (metadata?.properties) {\n for (const [key, prop] of Object.entries(metadata.properties)) {\n if (typeof prop.type === \"string\") {\n map.set(key, {\n type: prop.type,\n multiplicity: prop.multiplicity === true,\n });\n }\n }\n }\n return map;\n }, [metadata?.properties]);\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 propertyTypes,\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 propertyTypes,\n onFilterClauseChanged,\n onFilterStateChanged,\n ],\n );\n\n const clearFilterState = useCallback(\n (filterKey: string) => {\n const clearedStates = new Map(filterStates);\n clearedStates.delete(filterKey);\n\n setFilterStates(clearedStates);\n\n const newWhereClause = buildWhereClause(\n filterDefinitions,\n clearedStates,\n propertyTypes,\n );\n onFilterClauseChanged?.(newWhereClause);\n },\n [filterStates, filterDefinitions, propertyTypes, onFilterClauseChanged],\n );\n\n const whereClause = useMemo(\n () =>\n buildWhereClause(\n filterDefinitions,\n filterStates,\n propertyTypes,\n ),\n [filterDefinitions, filterStates, propertyTypes],\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 propertyTypes,\n key,\n ),\n );\n }\n return map;\n }, [filterDefinitions, filterStates, propertyTypes]);\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 propertyTypes,\n );\n onFilterClauseChanged?.(newWhereClause);\n }, [filterDefinitions, propertyTypes, onFilterClauseChanged]);\n\n return useMemo(() => ({\n filterStates,\n setFilterState,\n clearFilterState,\n whereClause,\n perFilterWhereClauses,\n activeFilterCount,\n reset,\n }), [\n filterStates,\n setFilterState,\n clearFilterState,\n whereClause,\n perFilterWhereClauses,\n activeFilterCount,\n reset,\n ]);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -31,7 +31,7 @@ function ContainsTextFilterInputInner({
|
|
|
31
31
|
return /*#__PURE__*/React.createElement(ContainsTextInput, {
|
|
32
32
|
value: value,
|
|
33
33
|
onChange: handleChange,
|
|
34
|
-
placeholder:
|
|
34
|
+
placeholder: "Search..."
|
|
35
35
|
});
|
|
36
36
|
}
|
|
37
37
|
export const ContainsTextFilterInput = /*#__PURE__*/memo(ContainsTextFilterInputInner);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContainsTextFilterInput.js","names":["React","memo","useCallback","useMemo","ContainsTextInput","ContainsTextFilterInputInner","propertyKey","filterState","onFilterStateChanged","value","type","undefined","handleChange","createElement","onChange","placeholder","ContainsTextFilterInput"],"sources":["ContainsTextFilterInput.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 React, { memo, useCallback, useMemo } from \"react\";\nimport { ContainsTextInput } from \"../base/inputs/ContainsTextInput.js\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\n\ninterface ContainsTextFilterInputProps {\n propertyKey: string;\n filterState: FilterState | undefined;\n onFilterStateChanged: (state: FilterState) => void;\n}\n\nfunction ContainsTextFilterInputInner({\n propertyKey,\n filterState,\n onFilterStateChanged,\n}: ContainsTextFilterInputProps): React.ReactElement {\n const value = useMemo(\n () =>\n filterState?.type === \"CONTAINS_TEXT\"\n ? filterState.value\n : undefined,\n [filterState],\n );\n\n const handleChange = useCallback(\n (value: string | undefined) => {\n onFilterStateChanged({ type: \"CONTAINS_TEXT\", value });\n },\n [onFilterStateChanged],\n );\n\n return (\n <ContainsTextInput\n value={value}\n onChange={handleChange}\n placeholder
|
|
1
|
+
{"version":3,"file":"ContainsTextFilterInput.js","names":["React","memo","useCallback","useMemo","ContainsTextInput","ContainsTextFilterInputInner","propertyKey","filterState","onFilterStateChanged","value","type","undefined","handleChange","createElement","onChange","placeholder","ContainsTextFilterInput"],"sources":["ContainsTextFilterInput.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 React, { memo, useCallback, useMemo } from \"react\";\nimport { ContainsTextInput } from \"../base/inputs/ContainsTextInput.js\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\n\ninterface ContainsTextFilterInputProps {\n propertyKey: string;\n filterState: FilterState | undefined;\n onFilterStateChanged: (state: FilterState) => void;\n}\n\nfunction ContainsTextFilterInputInner({\n propertyKey,\n filterState,\n onFilterStateChanged,\n}: ContainsTextFilterInputProps): React.ReactElement {\n const value = useMemo(\n () =>\n filterState?.type === \"CONTAINS_TEXT\"\n ? filterState.value\n : undefined,\n [filterState],\n );\n\n const handleChange = useCallback(\n (value: string | undefined) => {\n onFilterStateChanged({ type: \"CONTAINS_TEXT\", value });\n },\n [onFilterStateChanged],\n );\n\n return (\n <ContainsTextInput\n value={value}\n onChange={handleChange}\n placeholder=\"Search...\"\n />\n );\n}\n\nexport const ContainsTextFilterInput: React.MemoExoticComponent<\n typeof ContainsTextFilterInputInner\n> = memo(ContainsTextFilterInputInner);\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAOA,KAAK,IAAIC,IAAI,EAAEC,WAAW,EAAEC,OAAO,QAAQ,OAAO;AACzD,SAASC,iBAAiB,QAAQ,qCAAqC;AASvE,SAASC,4BAA4BA,CAAC;EACpCC,WAAW;EACXC,WAAW;EACXC;AAC4B,CAAC,EAAsB;EACnD,MAAMC,KAAK,GAAGN,OAAO,CACnB,MACEI,WAAW,EAAEG,IAAI,KAAK,eAAe,GACjCH,WAAW,CAACE,KAAK,GACjBE,SAAS,EACf,CAACJ,WAAW,CACd,CAAC;EAED,MAAMK,YAAY,GAAGV,WAAW,CAC7BO,KAAyB,IAAK;IAC7BD,oBAAoB,CAAC;MAAEE,IAAI,EAAE,eAAe;MAAED;IAAM,CAAC,CAAC;EACxD,CAAC,EACD,CAACD,oBAAoB,CACvB,CAAC;EAED,oBACER,KAAA,CAAAa,aAAA,CAACT,iBAAiB;IAChBK,KAAK,EAAEA,KAAM;IACbK,QAAQ,EAAEF,YAAa;IACvBG,WAAW,EAAC;EAAW,CACxB,CAAC;AAEN;AAEA,OAAO,MAAMC,uBAEZ,gBAAGf,IAAI,CAACI,4BAA4B,CAAC","ignoreList":[]}
|
|
@@ -34,6 +34,13 @@ function ListogramFilterInputInner({
|
|
|
34
34
|
}) {
|
|
35
35
|
const selectedValues = useMemo(() => filterState?.type === "EXACT_MATCH" ? coerceToStringArray(filterState.values) : [], [filterState]);
|
|
36
36
|
const isExcluding = filterState?.isExcluding ?? false;
|
|
37
|
+
const handleClearAll = useCallback(() => {
|
|
38
|
+
onFilterStateChanged({
|
|
39
|
+
type: "EXACT_MATCH",
|
|
40
|
+
values: [],
|
|
41
|
+
isExcluding
|
|
42
|
+
});
|
|
43
|
+
}, [onFilterStateChanged, isExcluding]);
|
|
37
44
|
const handleChange = useCallback(values => {
|
|
38
45
|
onFilterStateChanged({
|
|
39
46
|
type: "EXACT_MATCH",
|
|
@@ -56,7 +63,8 @@ function ListogramFilterInputInner({
|
|
|
56
63
|
excludeRowOpen: excludeRowOpen,
|
|
57
64
|
filterState: filterState,
|
|
58
65
|
onFilterStateChanged: onFilterStateChanged,
|
|
59
|
-
totalValueCount: data.length
|
|
66
|
+
totalValueCount: data.length,
|
|
67
|
+
onClearAll: handleClearAll
|
|
60
68
|
}, /*#__PURE__*/React.createElement(ListogramInput, {
|
|
61
69
|
values: data,
|
|
62
70
|
maxCount: maxCount,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListogramFilterInput.js","names":["React","memo","useCallback","useMemo","FilterInputExcludeRow","ListogramInput","usePropertyAggregation","coerceToStringArray","ListogramFilterInputInner","objectType","objectSet","propertyKey","filterState","onFilterStateChanged","whereClause","colorMap","displayMode","maxVisibleItems","searchQuery","excludeRowOpen","selectedValues","type","values","isExcluding","handleChange","sortBy","aggregationOptions","where","data","maxCount","isLoading","error","createElement","totalValueCount","length","onChange","ListogramFilterInput"],"sources":["ListogramFilterInput.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 {\n ObjectSet,\n ObjectTypeDefinition,\n PropertyKeys,\n WhereClause,\n} from \"@osdk/api\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { FilterInputExcludeRow } from \"../base/FilterInputExcludeRow.js\";\nimport { ListogramInput } from \"../base/inputs/ListogramInput.js\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport { usePropertyAggregation } from \"../hooks/usePropertyAggregation.js\";\nimport { coerceToStringArray } from \"../utils/coerceFilterValue.js\";\n\ninterface ListogramFilterInputProps<Q extends ObjectTypeDefinition> {\n objectType: Q;\n objectSet: ObjectSet<Q>;\n propertyKey: string;\n filterState: FilterState | undefined;\n onFilterStateChanged: (state: FilterState) => void;\n whereClause: WhereClause<Q>;\n colorMap?: Record<string, string>;\n displayMode?: \"full\" | \"count\" | \"minimal\";\n maxVisibleItems?: number;\n searchQuery?: string;\n excludeRowOpen?: boolean;\n}\n\nfunction ListogramFilterInputInner<Q extends ObjectTypeDefinition>({\n objectType,\n objectSet,\n propertyKey,\n filterState,\n onFilterStateChanged,\n whereClause,\n colorMap,\n displayMode,\n maxVisibleItems,\n searchQuery,\n excludeRowOpen,\n}: ListogramFilterInputProps<Q>): React.ReactElement {\n const selectedValues = useMemo(\n () =>\n filterState?.type === \"EXACT_MATCH\"\n ? coerceToStringArray(filterState.values)\n : [],\n [filterState],\n );\n const isExcluding = filterState?.isExcluding ?? false;\n\n const handleChange = useCallback(\n (values: string[]) => {\n onFilterStateChanged({\n type: \"EXACT_MATCH\",\n values,\n isExcluding,\n });\n },\n [onFilterStateChanged, isExcluding],\n );\n\n const sortBy = displayMode === \"minimal\"\n ? \"value\" as const\n : \"count\" as const;\n const aggregationOptions = useMemo(\n () => ({ where: whereClause, sortBy }),\n [whereClause, sortBy],\n );\n\n const { data, maxCount, isLoading, error } = usePropertyAggregation(\n objectType,\n propertyKey as PropertyKeys<Q>,\n objectSet,\n aggregationOptions,\n );\n\n return (\n <FilterInputExcludeRow\n excludeRowOpen={excludeRowOpen}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n totalValueCount={data.length}\n >\n <ListogramInput\n values={data}\n maxCount={maxCount}\n isLoading={isLoading}\n error={error}\n selectedValues={selectedValues}\n onChange={handleChange}\n colorMap={colorMap}\n displayMode={displayMode}\n isExcluding={isExcluding}\n maxVisibleItems={maxVisibleItems}\n searchQuery={searchQuery}\n />\n </FilterInputExcludeRow>\n );\n}\n\nexport const ListogramFilterInput: typeof ListogramFilterInputInner = memo(\n ListogramFilterInputInner,\n) as typeof ListogramFilterInputInner;\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAQA,OAAOA,KAAK,IAAIC,IAAI,EAAEC,WAAW,EAAEC,OAAO,QAAQ,OAAO;AACzD,SAASC,qBAAqB,QAAQ,kCAAkC;AACxE,SAASC,cAAc,QAAQ,kCAAkC;AAEjE,SAASC,sBAAsB,QAAQ,oCAAoC;AAC3E,SAASC,mBAAmB,QAAQ,+BAA+B;AAgBnE,SAASC,yBAAyBA,CAAiC;EACjEC,UAAU;EACVC,SAAS;EACTC,WAAW;EACXC,WAAW;EACXC,oBAAoB;EACpBC,WAAW;EACXC,QAAQ;EACRC,WAAW;EACXC,eAAe;EACfC,WAAW;EACXC;AAC4B,CAAC,EAAsB;EACnD,MAAMC,cAAc,GAAGjB,OAAO,CAC5B,MACES,WAAW,EAAES,IAAI,KAAK,aAAa,GAC/Bd,mBAAmB,CAACK,WAAW,CAACU,MAAM,CAAC,GACvC,EAAE,EACR,CAACV,WAAW,CACd,CAAC;EACD,MAAMW,WAAW,GAAGX,WAAW,EAAEW,WAAW,IAAI,KAAK;EAErD,MAAMC,
|
|
1
|
+
{"version":3,"file":"ListogramFilterInput.js","names":["React","memo","useCallback","useMemo","FilterInputExcludeRow","ListogramInput","usePropertyAggregation","coerceToStringArray","ListogramFilterInputInner","objectType","objectSet","propertyKey","filterState","onFilterStateChanged","whereClause","colorMap","displayMode","maxVisibleItems","searchQuery","excludeRowOpen","selectedValues","type","values","isExcluding","handleClearAll","handleChange","sortBy","aggregationOptions","where","data","maxCount","isLoading","error","createElement","totalValueCount","length","onClearAll","onChange","ListogramFilterInput"],"sources":["ListogramFilterInput.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 {\n ObjectSet,\n ObjectTypeDefinition,\n PropertyKeys,\n WhereClause,\n} from \"@osdk/api\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { FilterInputExcludeRow } from \"../base/FilterInputExcludeRow.js\";\nimport { ListogramInput } from \"../base/inputs/ListogramInput.js\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport { usePropertyAggregation } from \"../hooks/usePropertyAggregation.js\";\nimport { coerceToStringArray } from \"../utils/coerceFilterValue.js\";\n\ninterface ListogramFilterInputProps<Q extends ObjectTypeDefinition> {\n objectType: Q;\n objectSet: ObjectSet<Q>;\n propertyKey: string;\n filterState: FilterState | undefined;\n onFilterStateChanged: (state: FilterState) => void;\n whereClause: WhereClause<Q>;\n colorMap?: Record<string, string>;\n displayMode?: \"full\" | \"count\" | \"minimal\";\n maxVisibleItems?: number;\n searchQuery?: string;\n excludeRowOpen?: boolean;\n}\n\nfunction ListogramFilterInputInner<Q extends ObjectTypeDefinition>({\n objectType,\n objectSet,\n propertyKey,\n filterState,\n onFilterStateChanged,\n whereClause,\n colorMap,\n displayMode,\n maxVisibleItems,\n searchQuery,\n excludeRowOpen,\n}: ListogramFilterInputProps<Q>): React.ReactElement {\n const selectedValues = useMemo(\n () =>\n filterState?.type === \"EXACT_MATCH\"\n ? coerceToStringArray(filterState.values)\n : [],\n [filterState],\n );\n const isExcluding = filterState?.isExcluding ?? false;\n\n const handleClearAll = useCallback(() => {\n onFilterStateChanged({\n type: \"EXACT_MATCH\",\n values: [],\n isExcluding,\n });\n }, [onFilterStateChanged, isExcluding]);\n\n const handleChange = useCallback(\n (values: string[]) => {\n onFilterStateChanged({\n type: \"EXACT_MATCH\",\n values,\n isExcluding,\n });\n },\n [onFilterStateChanged, isExcluding],\n );\n\n const sortBy = displayMode === \"minimal\"\n ? \"value\" as const\n : \"count\" as const;\n const aggregationOptions = useMemo(\n () => ({ where: whereClause, sortBy }),\n [whereClause, sortBy],\n );\n\n const { data, maxCount, isLoading, error } = usePropertyAggregation(\n objectType,\n propertyKey as PropertyKeys<Q>,\n objectSet,\n aggregationOptions,\n );\n\n return (\n <FilterInputExcludeRow\n excludeRowOpen={excludeRowOpen}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n totalValueCount={data.length}\n onClearAll={handleClearAll}\n >\n <ListogramInput\n values={data}\n maxCount={maxCount}\n isLoading={isLoading}\n error={error}\n selectedValues={selectedValues}\n onChange={handleChange}\n colorMap={colorMap}\n displayMode={displayMode}\n isExcluding={isExcluding}\n maxVisibleItems={maxVisibleItems}\n searchQuery={searchQuery}\n />\n </FilterInputExcludeRow>\n );\n}\n\nexport const ListogramFilterInput: typeof ListogramFilterInputInner = memo(\n ListogramFilterInputInner,\n) as typeof ListogramFilterInputInner;\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAQA,OAAOA,KAAK,IAAIC,IAAI,EAAEC,WAAW,EAAEC,OAAO,QAAQ,OAAO;AACzD,SAASC,qBAAqB,QAAQ,kCAAkC;AACxE,SAASC,cAAc,QAAQ,kCAAkC;AAEjE,SAASC,sBAAsB,QAAQ,oCAAoC;AAC3E,SAASC,mBAAmB,QAAQ,+BAA+B;AAgBnE,SAASC,yBAAyBA,CAAiC;EACjEC,UAAU;EACVC,SAAS;EACTC,WAAW;EACXC,WAAW;EACXC,oBAAoB;EACpBC,WAAW;EACXC,QAAQ;EACRC,WAAW;EACXC,eAAe;EACfC,WAAW;EACXC;AAC4B,CAAC,EAAsB;EACnD,MAAMC,cAAc,GAAGjB,OAAO,CAC5B,MACES,WAAW,EAAES,IAAI,KAAK,aAAa,GAC/Bd,mBAAmB,CAACK,WAAW,CAACU,MAAM,CAAC,GACvC,EAAE,EACR,CAACV,WAAW,CACd,CAAC;EACD,MAAMW,WAAW,GAAGX,WAAW,EAAEW,WAAW,IAAI,KAAK;EAErD,MAAMC,cAAc,GAAGtB,WAAW,CAAC,MAAM;IACvCW,oBAAoB,CAAC;MACnBQ,IAAI,EAAE,aAAa;MACnBC,MAAM,EAAE,EAAE;MACVC;IACF,CAAC,CAAC;EACJ,CAAC,EAAE,CAACV,oBAAoB,EAAEU,WAAW,CAAC,CAAC;EAEvC,MAAME,YAAY,GAAGvB,WAAW,CAC7BoB,MAAgB,IAAK;IACpBT,oBAAoB,CAAC;MACnBQ,IAAI,EAAE,aAAa;MACnBC,MAAM;MACNC;IACF,CAAC,CAAC;EACJ,CAAC,EACD,CAACV,oBAAoB,EAAEU,WAAW,CACpC,CAAC;EAED,MAAMG,MAAM,GAAGV,WAAW,KAAK,SAAS,GACpC,OAAO,GACP,OAAgB;EACpB,MAAMW,kBAAkB,GAAGxB,OAAO,CAChC,OAAO;IAAEyB,KAAK,EAAEd,WAAW;IAAEY;EAAO,CAAC,CAAC,EACtC,CAACZ,WAAW,EAAEY,MAAM,CACtB,CAAC;EAED,MAAM;IAAEG,IAAI;IAAEC,QAAQ;IAAEC,SAAS;IAAEC;EAAM,CAAC,GAAG1B,sBAAsB,CACjEG,UAAU,EACVE,WAAW,EACXD,SAAS,EACTiB,kBACF,CAAC;EAED,oBACE3B,KAAA,CAAAiC,aAAA,CAAC7B,qBAAqB;IACpBe,cAAc,EAAEA,cAAe;IAC/BP,WAAW,EAAEA,WAAY;IACzBC,oBAAoB,EAAEA,oBAAqB;IAC3CqB,eAAe,EAAEL,IAAI,CAACM,MAAO;IAC7BC,UAAU,EAAEZ;EAAe,gBAE3BxB,KAAA,CAAAiC,aAAA,CAAC5B,cAAc;IACbiB,MAAM,EAAEO,IAAK;IACbC,QAAQ,EAAEA,QAAS;IACnBC,SAAS,EAAEA,SAAU;IACrBC,KAAK,EAAEA,KAAM;IACbZ,cAAc,EAAEA,cAAe;IAC/BiB,QAAQ,EAAEZ,YAAa;IACvBV,QAAQ,EAAEA,QAAS;IACnBC,WAAW,EAAEA,WAAY;IACzBO,WAAW,EAAEA,WAAY;IACzBN,eAAe,EAAEA,eAAgB;IACjCC,WAAW,EAAEA;EAAY,CAC1B,CACoB,CAAC;AAE5B;AAEA,OAAO,MAAMoB,oBAAsD,gBAAGrC,IAAI,CACxEO,yBACF,CAAqC","ignoreList":[]}
|
|
@@ -30,6 +30,13 @@ function MultiSelectFilterInputInner({
|
|
|
30
30
|
}) {
|
|
31
31
|
const selectedValues = useMemo(() => filterState?.type === "SELECT" ? coerceToStringArray(filterState.selectedValues) : [], [filterState]);
|
|
32
32
|
const isExcluding = filterState?.isExcluding ?? false;
|
|
33
|
+
const handleClearAll = useCallback(() => {
|
|
34
|
+
onFilterStateChanged({
|
|
35
|
+
type: "SELECT",
|
|
36
|
+
selectedValues: [],
|
|
37
|
+
isExcluding
|
|
38
|
+
});
|
|
39
|
+
}, [onFilterStateChanged, isExcluding]);
|
|
33
40
|
const handleChange = useCallback(selectedValues => {
|
|
34
41
|
onFilterStateChanged({
|
|
35
42
|
type: "SELECT",
|
|
@@ -49,7 +56,8 @@ function MultiSelectFilterInputInner({
|
|
|
49
56
|
excludeRowOpen: excludeRowOpen,
|
|
50
57
|
filterState: filterState,
|
|
51
58
|
onFilterStateChanged: onFilterStateChanged,
|
|
52
|
-
totalValueCount: data.length
|
|
59
|
+
totalValueCount: data.length,
|
|
60
|
+
onClearAll: handleClearAll
|
|
53
61
|
}, /*#__PURE__*/React.createElement(MultiSelectInput, {
|
|
54
62
|
values: data,
|
|
55
63
|
isLoading: isLoading,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultiSelectFilterInput.js","names":["React","memo","useCallback","useMemo","FilterInputExcludeRow","MultiSelectInput","usePropertyAggregation","coerceToStringArray","MultiSelectFilterInputInner","objectType","objectSet","propertyKey","filterState","onFilterStateChanged","whereClause","excludeRowOpen","selectedValues","type","isExcluding","handleChange","aggregationOptions","where","data","isLoading","error","createElement","totalValueCount","length","values","onChange","ariaLabel","MultiSelectFilterInput"],"sources":["MultiSelectFilterInput.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 {\n ObjectSet,\n ObjectTypeDefinition,\n PropertyKeys,\n WhereClause,\n} from \"@osdk/api\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { FilterInputExcludeRow } from \"../base/FilterInputExcludeRow.js\";\nimport { MultiSelectInput } from \"../base/inputs/MultiSelectInput.js\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport { usePropertyAggregation } from \"../hooks/usePropertyAggregation.js\";\nimport { coerceToStringArray } from \"../utils/coerceFilterValue.js\";\n\ninterface MultiSelectFilterInputProps<Q extends ObjectTypeDefinition> {\n objectType: Q;\n objectSet: ObjectSet<Q>;\n propertyKey: string;\n filterState: FilterState | undefined;\n onFilterStateChanged: (state: FilterState) => void;\n whereClause: WhereClause<Q>;\n excludeRowOpen?: boolean;\n}\n\nfunction MultiSelectFilterInputInner<Q extends ObjectTypeDefinition>({\n objectType,\n objectSet,\n propertyKey,\n filterState,\n onFilterStateChanged,\n whereClause,\n excludeRowOpen,\n}: MultiSelectFilterInputProps<Q>): React.ReactElement {\n const selectedValues = useMemo(\n () =>\n filterState?.type === \"SELECT\"\n ? coerceToStringArray(filterState.selectedValues)\n : [],\n [filterState],\n );\n const isExcluding = filterState?.isExcluding ?? false;\n\n const handleChange = useCallback(\n (selectedValues: string[]) => {\n onFilterStateChanged({\n type: \"SELECT\",\n selectedValues,\n isExcluding,\n });\n },\n [onFilterStateChanged, isExcluding],\n );\n\n const aggregationOptions = useMemo(\n () => ({ where: whereClause }),\n [whereClause],\n );\n\n const { data, isLoading, error } = usePropertyAggregation(\n objectType,\n propertyKey as PropertyKeys<Q>,\n objectSet,\n aggregationOptions,\n );\n\n return (\n <FilterInputExcludeRow\n excludeRowOpen={excludeRowOpen}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n totalValueCount={data.length}\n >\n <MultiSelectInput\n values={data}\n isLoading={isLoading}\n error={error}\n selectedValues={selectedValues}\n onChange={handleChange}\n ariaLabel={`Search ${propertyKey} values`}\n />\n </FilterInputExcludeRow>\n );\n}\n\nexport const MultiSelectFilterInput: typeof MultiSelectFilterInputInner = memo(\n MultiSelectFilterInputInner,\n) as typeof MultiSelectFilterInputInner;\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAQA,OAAOA,KAAK,IAAIC,IAAI,EAAEC,WAAW,EAAEC,OAAO,QAAQ,OAAO;AACzD,SAASC,qBAAqB,QAAQ,kCAAkC;AACxE,SAASC,gBAAgB,QAAQ,oCAAoC;AAErE,SAASC,sBAAsB,QAAQ,oCAAoC;AAC3E,SAASC,mBAAmB,QAAQ,+BAA+B;AAYnE,SAASC,2BAA2BA,CAAiC;EACnEC,UAAU;EACVC,SAAS;EACTC,WAAW;EACXC,WAAW;EACXC,oBAAoB;EACpBC,WAAW;EACXC;AAC8B,CAAC,EAAsB;EACrD,MAAMC,cAAc,GAAGb,OAAO,CAC5B,MACES,WAAW,EAAEK,IAAI,KAAK,QAAQ,GAC1BV,mBAAmB,CAACK,WAAW,CAACI,cAAc,CAAC,GAC/C,EAAE,EACR,CAACJ,WAAW,CACd,CAAC;EACD,MAAMM,WAAW,GAAGN,WAAW,EAAEM,WAAW,IAAI,KAAK;EAErD,MAAMC,
|
|
1
|
+
{"version":3,"file":"MultiSelectFilterInput.js","names":["React","memo","useCallback","useMemo","FilterInputExcludeRow","MultiSelectInput","usePropertyAggregation","coerceToStringArray","MultiSelectFilterInputInner","objectType","objectSet","propertyKey","filterState","onFilterStateChanged","whereClause","excludeRowOpen","selectedValues","type","isExcluding","handleClearAll","handleChange","aggregationOptions","where","data","isLoading","error","createElement","totalValueCount","length","onClearAll","values","onChange","ariaLabel","MultiSelectFilterInput"],"sources":["MultiSelectFilterInput.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 {\n ObjectSet,\n ObjectTypeDefinition,\n PropertyKeys,\n WhereClause,\n} from \"@osdk/api\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { FilterInputExcludeRow } from \"../base/FilterInputExcludeRow.js\";\nimport { MultiSelectInput } from \"../base/inputs/MultiSelectInput.js\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport { usePropertyAggregation } from \"../hooks/usePropertyAggregation.js\";\nimport { coerceToStringArray } from \"../utils/coerceFilterValue.js\";\n\ninterface MultiSelectFilterInputProps<Q extends ObjectTypeDefinition> {\n objectType: Q;\n objectSet: ObjectSet<Q>;\n propertyKey: string;\n filterState: FilterState | undefined;\n onFilterStateChanged: (state: FilterState) => void;\n whereClause: WhereClause<Q>;\n excludeRowOpen?: boolean;\n}\n\nfunction MultiSelectFilterInputInner<Q extends ObjectTypeDefinition>({\n objectType,\n objectSet,\n propertyKey,\n filterState,\n onFilterStateChanged,\n whereClause,\n excludeRowOpen,\n}: MultiSelectFilterInputProps<Q>): React.ReactElement {\n const selectedValues = useMemo(\n () =>\n filterState?.type === \"SELECT\"\n ? coerceToStringArray(filterState.selectedValues)\n : [],\n [filterState],\n );\n const isExcluding = filterState?.isExcluding ?? false;\n\n const handleClearAll = useCallback(() => {\n onFilterStateChanged({\n type: \"SELECT\",\n selectedValues: [],\n isExcluding,\n });\n }, [onFilterStateChanged, isExcluding]);\n\n const handleChange = useCallback(\n (selectedValues: string[]) => {\n onFilterStateChanged({\n type: \"SELECT\",\n selectedValues,\n isExcluding,\n });\n },\n [onFilterStateChanged, isExcluding],\n );\n\n const aggregationOptions = useMemo(\n () => ({ where: whereClause }),\n [whereClause],\n );\n\n const { data, isLoading, error } = usePropertyAggregation(\n objectType,\n propertyKey as PropertyKeys<Q>,\n objectSet,\n aggregationOptions,\n );\n\n return (\n <FilterInputExcludeRow\n excludeRowOpen={excludeRowOpen}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n totalValueCount={data.length}\n onClearAll={handleClearAll}\n >\n <MultiSelectInput\n values={data}\n isLoading={isLoading}\n error={error}\n selectedValues={selectedValues}\n onChange={handleChange}\n ariaLabel={`Search ${propertyKey} values`}\n />\n </FilterInputExcludeRow>\n );\n}\n\nexport const MultiSelectFilterInput: typeof MultiSelectFilterInputInner = memo(\n MultiSelectFilterInputInner,\n) as typeof MultiSelectFilterInputInner;\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAQA,OAAOA,KAAK,IAAIC,IAAI,EAAEC,WAAW,EAAEC,OAAO,QAAQ,OAAO;AACzD,SAASC,qBAAqB,QAAQ,kCAAkC;AACxE,SAASC,gBAAgB,QAAQ,oCAAoC;AAErE,SAASC,sBAAsB,QAAQ,oCAAoC;AAC3E,SAASC,mBAAmB,QAAQ,+BAA+B;AAYnE,SAASC,2BAA2BA,CAAiC;EACnEC,UAAU;EACVC,SAAS;EACTC,WAAW;EACXC,WAAW;EACXC,oBAAoB;EACpBC,WAAW;EACXC;AAC8B,CAAC,EAAsB;EACrD,MAAMC,cAAc,GAAGb,OAAO,CAC5B,MACES,WAAW,EAAEK,IAAI,KAAK,QAAQ,GAC1BV,mBAAmB,CAACK,WAAW,CAACI,cAAc,CAAC,GAC/C,EAAE,EACR,CAACJ,WAAW,CACd,CAAC;EACD,MAAMM,WAAW,GAAGN,WAAW,EAAEM,WAAW,IAAI,KAAK;EAErD,MAAMC,cAAc,GAAGjB,WAAW,CAAC,MAAM;IACvCW,oBAAoB,CAAC;MACnBI,IAAI,EAAE,QAAQ;MACdD,cAAc,EAAE,EAAE;MAClBE;IACF,CAAC,CAAC;EACJ,CAAC,EAAE,CAACL,oBAAoB,EAAEK,WAAW,CAAC,CAAC;EAEvC,MAAME,YAAY,GAAGlB,WAAW,CAC7Bc,cAAwB,IAAK;IAC5BH,oBAAoB,CAAC;MACnBI,IAAI,EAAE,QAAQ;MACdD,cAAc;MACdE;IACF,CAAC,CAAC;EACJ,CAAC,EACD,CAACL,oBAAoB,EAAEK,WAAW,CACpC,CAAC;EAED,MAAMG,kBAAkB,GAAGlB,OAAO,CAChC,OAAO;IAAEmB,KAAK,EAAER;EAAY,CAAC,CAAC,EAC9B,CAACA,WAAW,CACd,CAAC;EAED,MAAM;IAAES,IAAI;IAAEC,SAAS;IAAEC;EAAM,CAAC,GAAGnB,sBAAsB,CACvDG,UAAU,EACVE,WAAW,EACXD,SAAS,EACTW,kBACF,CAAC;EAED,oBACErB,KAAA,CAAA0B,aAAA,CAACtB,qBAAqB;IACpBW,cAAc,EAAEA,cAAe;IAC/BH,WAAW,EAAEA,WAAY;IACzBC,oBAAoB,EAAEA,oBAAqB;IAC3Cc,eAAe,EAAEJ,IAAI,CAACK,MAAO;IAC7BC,UAAU,EAAEV;EAAe,gBAE3BnB,KAAA,CAAA0B,aAAA,CAACrB,gBAAgB;IACfyB,MAAM,EAAEP,IAAK;IACbC,SAAS,EAAEA,SAAU;IACrBC,KAAK,EAAEA,KAAM;IACbT,cAAc,EAAEA,cAAe;IAC/Be,QAAQ,EAAEX,YAAa;IACvBY,SAAS,EAAE,UAAUrB,WAAW;EAAU,CAC3C,CACoB,CAAC;AAE5B;AAEA,OAAO,MAAMsB,sBAA0D,gBAAGhC,IAAI,CAC5EO,2BACF,CAAuC","ignoreList":[]}
|
|
@@ -109,7 +109,7 @@ function PropertyFilterInputInner({
|
|
|
109
109
|
whereClause: whereClause,
|
|
110
110
|
colorMap: definition.colorMap,
|
|
111
111
|
displayMode: definition.listogramConfig?.displayMode,
|
|
112
|
-
maxVisibleItems: definition.listogramConfig?.maxVisibleItems,
|
|
112
|
+
maxVisibleItems: definition.listogramConfig?.maxVisibleItems ?? 5,
|
|
113
113
|
searchQuery: searchQuery,
|
|
114
114
|
excludeRowOpen: excludeRowOpen
|
|
115
115
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PropertyFilterInput.js","names":["React","memo","FilterInputExcludeRow","ContainsTextFilterInput","DateRangeFilterInput","ListogramFilterInput","MultiDateFilterInput","MultiSelectFilterInput","NumberRangeFilterInput","SingleDateFilterInput","SingleSelectFilterInput","TextTagsFilterInput","TimelineFilterInput","ToggleFilterInput","PropertyFilterInputInner","objectType","objectSet","definition","filterState","onFilterStateChanged","whereClause","searchQuery","excludeRowOpen","filterComponent","createElement","propertyKey","key","colorMap","displayMode","listogramConfig","maxVisibleItems","PropertyFilterInput"],"sources":["PropertyFilterInput.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 { ObjectSet, ObjectTypeDefinition, WhereClause } from \"@osdk/api\";\nimport React, { memo } from \"react\";\nimport { FilterInputExcludeRow } from \"../base/FilterInputExcludeRow.js\";\nimport type { FilterDefinitionUnion } from \"../FilterListApi.js\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport { ContainsTextFilterInput } from \"./ContainsTextFilterInput.js\";\nimport { DateRangeFilterInput } from \"./DateRangeFilterInput.js\";\nimport { ListogramFilterInput } from \"./ListogramFilterInput.js\";\nimport { MultiDateFilterInput } from \"./MultiDateFilterInput.js\";\nimport { MultiSelectFilterInput } from \"./MultiSelectFilterInput.js\";\nimport { NumberRangeFilterInput } from \"./NumberRangeFilterInput.js\";\nimport { SingleDateFilterInput } from \"./SingleDateFilterInput.js\";\nimport { SingleSelectFilterInput } from \"./SingleSelectFilterInput.js\";\nimport { TextTagsFilterInput } from \"./TextTagsFilterInput.js\";\nimport { TimelineFilterInput } from \"./TimelineFilterInput.js\";\nimport { ToggleFilterInput } from \"./ToggleFilterInput.js\";\n\ninterface PropertyFilterInputProps<Q extends ObjectTypeDefinition> {\n objectType: Q;\n objectSet: ObjectSet<Q>;\n definition: Extract<FilterDefinitionUnion<Q>, { type: \"PROPERTY\" }>;\n filterState: FilterState | undefined;\n onFilterStateChanged: (state: FilterState) => void;\n whereClause: WhereClause<Q>;\n searchQuery?: string;\n excludeRowOpen?: boolean;\n}\n\nfunction PropertyFilterInputInner<Q extends ObjectTypeDefinition>({\n objectType,\n objectSet,\n definition,\n filterState,\n onFilterStateChanged,\n whereClause,\n searchQuery,\n excludeRowOpen,\n}: PropertyFilterInputProps<Q>): React.ReactElement {\n switch (definition.filterComponent) {\n case \"CONTAINS_TEXT\":\n return (\n <FilterInputExcludeRow\n excludeRowOpen={excludeRowOpen}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n >\n <ContainsTextFilterInput\n propertyKey={definition.key}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n />\n </FilterInputExcludeRow>\n );\n\n case \"TOGGLE\":\n return (\n <ToggleFilterInput\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n />\n );\n\n case \"NUMBER_RANGE\":\n return (\n <NumberRangeFilterInput\n objectType={objectType}\n objectSet={objectSet}\n propertyKey={definition.key}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n />\n );\n\n case \"DATE_RANGE\":\n return (\n <DateRangeFilterInput\n objectType={objectType}\n objectSet={objectSet}\n propertyKey={definition.key}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n />\n );\n\n case \"SINGLE_SELECT\":\n return (\n <SingleSelectFilterInput\n objectType={objectType}\n objectSet={objectSet}\n propertyKey={definition.key}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n whereClause={whereClause}\n excludeRowOpen={excludeRowOpen}\n />\n );\n\n case \"MULTI_SELECT\":\n return (\n <MultiSelectFilterInput\n objectType={objectType}\n objectSet={objectSet}\n propertyKey={definition.key}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n whereClause={whereClause}\n excludeRowOpen={excludeRowOpen}\n />\n );\n\n case \"SINGLE_DATE\":\n return (\n <SingleDateFilterInput\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n />\n );\n\n case \"MULTI_DATE\":\n return (\n <MultiDateFilterInput\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n />\n );\n\n case \"LISTOGRAM\":\n return (\n <ListogramFilterInput\n objectType={objectType}\n objectSet={objectSet}\n propertyKey={definition.key}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n whereClause={whereClause}\n colorMap={definition.colorMap}\n displayMode={definition.listogramConfig?.displayMode}\n maxVisibleItems={definition.listogramConfig?.maxVisibleItems}\n searchQuery={searchQuery}\n excludeRowOpen={excludeRowOpen}\n />\n );\n\n case \"TEXT_TAGS\":\n return (\n <TextTagsFilterInput\n objectType={objectType}\n objectSet={objectSet}\n propertyKey={definition.key}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n whereClause={whereClause}\n excludeRowOpen={excludeRowOpen}\n />\n );\n\n case \"TIMELINE\":\n return (\n <FilterInputExcludeRow\n excludeRowOpen={excludeRowOpen}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n >\n <TimelineFilterInput\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n />\n </FilterInputExcludeRow>\n );\n\n default:\n return (\n <div data-unsupported=\"true\">\n Unsupported filter component: {definition.filterComponent}\n </div>\n );\n }\n}\n\nexport const PropertyFilterInput: typeof PropertyFilterInputInner = memo(\n PropertyFilterInputInner,\n) as typeof PropertyFilterInputInner;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"PropertyFilterInput.js","names":["React","memo","FilterInputExcludeRow","ContainsTextFilterInput","DateRangeFilterInput","ListogramFilterInput","MultiDateFilterInput","MultiSelectFilterInput","NumberRangeFilterInput","SingleDateFilterInput","SingleSelectFilterInput","TextTagsFilterInput","TimelineFilterInput","ToggleFilterInput","PropertyFilterInputInner","objectType","objectSet","definition","filterState","onFilterStateChanged","whereClause","searchQuery","excludeRowOpen","filterComponent","createElement","propertyKey","key","colorMap","displayMode","listogramConfig","maxVisibleItems","PropertyFilterInput"],"sources":["PropertyFilterInput.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 { ObjectSet, ObjectTypeDefinition, WhereClause } from \"@osdk/api\";\nimport React, { memo } from \"react\";\nimport { FilterInputExcludeRow } from \"../base/FilterInputExcludeRow.js\";\nimport type { FilterDefinitionUnion } from \"../FilterListApi.js\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport { ContainsTextFilterInput } from \"./ContainsTextFilterInput.js\";\nimport { DateRangeFilterInput } from \"./DateRangeFilterInput.js\";\nimport { ListogramFilterInput } from \"./ListogramFilterInput.js\";\nimport { MultiDateFilterInput } from \"./MultiDateFilterInput.js\";\nimport { MultiSelectFilterInput } from \"./MultiSelectFilterInput.js\";\nimport { NumberRangeFilterInput } from \"./NumberRangeFilterInput.js\";\nimport { SingleDateFilterInput } from \"./SingleDateFilterInput.js\";\nimport { SingleSelectFilterInput } from \"./SingleSelectFilterInput.js\";\nimport { TextTagsFilterInput } from \"./TextTagsFilterInput.js\";\nimport { TimelineFilterInput } from \"./TimelineFilterInput.js\";\nimport { ToggleFilterInput } from \"./ToggleFilterInput.js\";\n\ninterface PropertyFilterInputProps<Q extends ObjectTypeDefinition> {\n objectType: Q;\n objectSet: ObjectSet<Q>;\n definition: Extract<FilterDefinitionUnion<Q>, { type: \"PROPERTY\" }>;\n filterState: FilterState | undefined;\n onFilterStateChanged: (state: FilterState) => void;\n whereClause: WhereClause<Q>;\n searchQuery?: string;\n excludeRowOpen?: boolean;\n}\n\nfunction PropertyFilterInputInner<Q extends ObjectTypeDefinition>({\n objectType,\n objectSet,\n definition,\n filterState,\n onFilterStateChanged,\n whereClause,\n searchQuery,\n excludeRowOpen,\n}: PropertyFilterInputProps<Q>): React.ReactElement {\n switch (definition.filterComponent) {\n case \"CONTAINS_TEXT\":\n return (\n <FilterInputExcludeRow\n excludeRowOpen={excludeRowOpen}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n >\n <ContainsTextFilterInput\n propertyKey={definition.key}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n />\n </FilterInputExcludeRow>\n );\n\n case \"TOGGLE\":\n return (\n <ToggleFilterInput\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n />\n );\n\n case \"NUMBER_RANGE\":\n return (\n <NumberRangeFilterInput\n objectType={objectType}\n objectSet={objectSet}\n propertyKey={definition.key}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n />\n );\n\n case \"DATE_RANGE\":\n return (\n <DateRangeFilterInput\n objectType={objectType}\n objectSet={objectSet}\n propertyKey={definition.key}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n />\n );\n\n case \"SINGLE_SELECT\":\n return (\n <SingleSelectFilterInput\n objectType={objectType}\n objectSet={objectSet}\n propertyKey={definition.key}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n whereClause={whereClause}\n excludeRowOpen={excludeRowOpen}\n />\n );\n\n case \"MULTI_SELECT\":\n return (\n <MultiSelectFilterInput\n objectType={objectType}\n objectSet={objectSet}\n propertyKey={definition.key}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n whereClause={whereClause}\n excludeRowOpen={excludeRowOpen}\n />\n );\n\n case \"SINGLE_DATE\":\n return (\n <SingleDateFilterInput\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n />\n );\n\n case \"MULTI_DATE\":\n return (\n <MultiDateFilterInput\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n />\n );\n\n case \"LISTOGRAM\":\n return (\n <ListogramFilterInput\n objectType={objectType}\n objectSet={objectSet}\n propertyKey={definition.key}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n whereClause={whereClause}\n colorMap={definition.colorMap}\n displayMode={definition.listogramConfig?.displayMode}\n maxVisibleItems={definition.listogramConfig?.maxVisibleItems ?? 5}\n searchQuery={searchQuery}\n excludeRowOpen={excludeRowOpen}\n />\n );\n\n case \"TEXT_TAGS\":\n return (\n <TextTagsFilterInput\n objectType={objectType}\n objectSet={objectSet}\n propertyKey={definition.key}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n whereClause={whereClause}\n excludeRowOpen={excludeRowOpen}\n />\n );\n\n case \"TIMELINE\":\n return (\n <FilterInputExcludeRow\n excludeRowOpen={excludeRowOpen}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n >\n <TimelineFilterInput\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n />\n </FilterInputExcludeRow>\n );\n\n default:\n return (\n <div data-unsupported=\"true\">\n Unsupported filter component: {definition.filterComponent}\n </div>\n );\n }\n}\n\nexport const PropertyFilterInput: typeof PropertyFilterInputInner = memo(\n PropertyFilterInputInner,\n) as typeof PropertyFilterInputInner;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -30,6 +30,13 @@ function SingleSelectFilterInputInner({
|
|
|
30
30
|
}) {
|
|
31
31
|
const selectedValue = useMemo(() => filterState?.type === "SELECT" ? coerceToString(filterState.selectedValues[0]) : undefined, [filterState]);
|
|
32
32
|
const isExcluding = filterState?.isExcluding ?? false;
|
|
33
|
+
const handleClearAll = useCallback(() => {
|
|
34
|
+
onFilterStateChanged({
|
|
35
|
+
type: "SELECT",
|
|
36
|
+
selectedValues: [],
|
|
37
|
+
isExcluding
|
|
38
|
+
});
|
|
39
|
+
}, [onFilterStateChanged, isExcluding]);
|
|
33
40
|
const handleChange = useCallback(value => {
|
|
34
41
|
onFilterStateChanged({
|
|
35
42
|
type: "SELECT",
|
|
@@ -49,7 +56,8 @@ function SingleSelectFilterInputInner({
|
|
|
49
56
|
excludeRowOpen: excludeRowOpen,
|
|
50
57
|
filterState: filterState,
|
|
51
58
|
onFilterStateChanged: onFilterStateChanged,
|
|
52
|
-
totalValueCount: data.length
|
|
59
|
+
totalValueCount: data.length,
|
|
60
|
+
onClearAll: handleClearAll
|
|
53
61
|
}, /*#__PURE__*/React.createElement(SingleSelectInput, {
|
|
54
62
|
values: data,
|
|
55
63
|
isLoading: isLoading,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SingleSelectFilterInput.js","names":["React","memo","useCallback","useMemo","FilterInputExcludeRow","SingleSelectInput","usePropertyAggregation","coerceToString","SingleSelectFilterInputInner","objectType","objectSet","propertyKey","filterState","onFilterStateChanged","whereClause","excludeRowOpen","selectedValue","type","selectedValues","undefined","isExcluding","handleChange","value","aggregationOptions","where","data","isLoading","error","createElement","totalValueCount","length","values","onChange","ariaLabel","SingleSelectFilterInput"],"sources":["SingleSelectFilterInput.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 {\n ObjectSet,\n ObjectTypeDefinition,\n PropertyKeys,\n WhereClause,\n} from \"@osdk/api\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { FilterInputExcludeRow } from \"../base/FilterInputExcludeRow.js\";\nimport { SingleSelectInput } from \"../base/inputs/SingleSelectInput.js\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport { usePropertyAggregation } from \"../hooks/usePropertyAggregation.js\";\nimport { coerceToString } from \"../utils/coerceFilterValue.js\";\n\ninterface SingleSelectFilterInputProps<Q extends ObjectTypeDefinition> {\n objectType: Q;\n objectSet: ObjectSet<Q>;\n propertyKey: string;\n filterState: FilterState | undefined;\n onFilterStateChanged: (state: FilterState) => void;\n whereClause: WhereClause<Q>;\n excludeRowOpen?: boolean;\n}\n\nfunction SingleSelectFilterInputInner<Q extends ObjectTypeDefinition>({\n objectType,\n objectSet,\n propertyKey,\n filterState,\n onFilterStateChanged,\n whereClause,\n excludeRowOpen,\n}: SingleSelectFilterInputProps<Q>): React.ReactElement {\n const selectedValue = useMemo(\n () =>\n filterState?.type === \"SELECT\"\n ? coerceToString(filterState.selectedValues[0])\n : undefined,\n [filterState],\n );\n const isExcluding = filterState?.isExcluding ?? false;\n\n const handleChange = useCallback(\n (value: string | undefined) => {\n onFilterStateChanged({\n type: \"SELECT\",\n selectedValues: value !== undefined ? [value] : [],\n isExcluding,\n });\n },\n [onFilterStateChanged, isExcluding],\n );\n\n const aggregationOptions = useMemo(\n () => ({ where: whereClause }),\n [whereClause],\n );\n\n const { data, isLoading, error } = usePropertyAggregation(\n objectType,\n propertyKey as PropertyKeys<Q>,\n objectSet,\n aggregationOptions,\n );\n\n return (\n <FilterInputExcludeRow\n excludeRowOpen={excludeRowOpen}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n totalValueCount={data.length}\n >\n <SingleSelectInput\n values={data}\n isLoading={isLoading}\n error={error}\n selectedValue={selectedValue}\n onChange={handleChange}\n ariaLabel={`Select ${propertyKey}`}\n />\n </FilterInputExcludeRow>\n );\n}\n\nexport const SingleSelectFilterInput: typeof SingleSelectFilterInputInner =\n memo(\n SingleSelectFilterInputInner,\n ) as typeof SingleSelectFilterInputInner;\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAQA,OAAOA,KAAK,IAAIC,IAAI,EAAEC,WAAW,EAAEC,OAAO,QAAQ,OAAO;AACzD,SAASC,qBAAqB,QAAQ,kCAAkC;AACxE,SAASC,iBAAiB,QAAQ,qCAAqC;AAEvE,SAASC,sBAAsB,QAAQ,oCAAoC;AAC3E,SAASC,cAAc,QAAQ,+BAA+B;AAY9D,SAASC,4BAA4BA,CAAiC;EACpEC,UAAU;EACVC,SAAS;EACTC,WAAW;EACXC,WAAW;EACXC,oBAAoB;EACpBC,WAAW;EACXC;AAC+B,CAAC,EAAsB;EACtD,MAAMC,aAAa,GAAGb,OAAO,CAC3B,MACES,WAAW,EAAEK,IAAI,KAAK,QAAQ,GAC1BV,cAAc,CAACK,WAAW,CAACM,cAAc,CAAC,CAAC,CAAC,CAAC,GAC7CC,SAAS,EACf,CAACP,WAAW,CACd,CAAC;EACD,MAAMQ,WAAW,GAAGR,WAAW,EAAEQ,WAAW,IAAI,KAAK;EAErD,MAAMC,
|
|
1
|
+
{"version":3,"file":"SingleSelectFilterInput.js","names":["React","memo","useCallback","useMemo","FilterInputExcludeRow","SingleSelectInput","usePropertyAggregation","coerceToString","SingleSelectFilterInputInner","objectType","objectSet","propertyKey","filterState","onFilterStateChanged","whereClause","excludeRowOpen","selectedValue","type","selectedValues","undefined","isExcluding","handleClearAll","handleChange","value","aggregationOptions","where","data","isLoading","error","createElement","totalValueCount","length","onClearAll","values","onChange","ariaLabel","SingleSelectFilterInput"],"sources":["SingleSelectFilterInput.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 {\n ObjectSet,\n ObjectTypeDefinition,\n PropertyKeys,\n WhereClause,\n} from \"@osdk/api\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { FilterInputExcludeRow } from \"../base/FilterInputExcludeRow.js\";\nimport { SingleSelectInput } from \"../base/inputs/SingleSelectInput.js\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport { usePropertyAggregation } from \"../hooks/usePropertyAggregation.js\";\nimport { coerceToString } from \"../utils/coerceFilterValue.js\";\n\ninterface SingleSelectFilterInputProps<Q extends ObjectTypeDefinition> {\n objectType: Q;\n objectSet: ObjectSet<Q>;\n propertyKey: string;\n filterState: FilterState | undefined;\n onFilterStateChanged: (state: FilterState) => void;\n whereClause: WhereClause<Q>;\n excludeRowOpen?: boolean;\n}\n\nfunction SingleSelectFilterInputInner<Q extends ObjectTypeDefinition>({\n objectType,\n objectSet,\n propertyKey,\n filterState,\n onFilterStateChanged,\n whereClause,\n excludeRowOpen,\n}: SingleSelectFilterInputProps<Q>): React.ReactElement {\n const selectedValue = useMemo(\n () =>\n filterState?.type === \"SELECT\"\n ? coerceToString(filterState.selectedValues[0])\n : undefined,\n [filterState],\n );\n const isExcluding = filterState?.isExcluding ?? false;\n\n const handleClearAll = useCallback(() => {\n onFilterStateChanged({\n type: \"SELECT\",\n selectedValues: [],\n isExcluding,\n });\n }, [onFilterStateChanged, isExcluding]);\n\n const handleChange = useCallback(\n (value: string | undefined) => {\n onFilterStateChanged({\n type: \"SELECT\",\n selectedValues: value !== undefined ? [value] : [],\n isExcluding,\n });\n },\n [onFilterStateChanged, isExcluding],\n );\n\n const aggregationOptions = useMemo(\n () => ({ where: whereClause }),\n [whereClause],\n );\n\n const { data, isLoading, error } = usePropertyAggregation(\n objectType,\n propertyKey as PropertyKeys<Q>,\n objectSet,\n aggregationOptions,\n );\n\n return (\n <FilterInputExcludeRow\n excludeRowOpen={excludeRowOpen}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n totalValueCount={data.length}\n onClearAll={handleClearAll}\n >\n <SingleSelectInput\n values={data}\n isLoading={isLoading}\n error={error}\n selectedValue={selectedValue}\n onChange={handleChange}\n ariaLabel={`Select ${propertyKey}`}\n />\n </FilterInputExcludeRow>\n );\n}\n\nexport const SingleSelectFilterInput: typeof SingleSelectFilterInputInner =\n memo(\n SingleSelectFilterInputInner,\n ) as typeof SingleSelectFilterInputInner;\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAQA,OAAOA,KAAK,IAAIC,IAAI,EAAEC,WAAW,EAAEC,OAAO,QAAQ,OAAO;AACzD,SAASC,qBAAqB,QAAQ,kCAAkC;AACxE,SAASC,iBAAiB,QAAQ,qCAAqC;AAEvE,SAASC,sBAAsB,QAAQ,oCAAoC;AAC3E,SAASC,cAAc,QAAQ,+BAA+B;AAY9D,SAASC,4BAA4BA,CAAiC;EACpEC,UAAU;EACVC,SAAS;EACTC,WAAW;EACXC,WAAW;EACXC,oBAAoB;EACpBC,WAAW;EACXC;AAC+B,CAAC,EAAsB;EACtD,MAAMC,aAAa,GAAGb,OAAO,CAC3B,MACES,WAAW,EAAEK,IAAI,KAAK,QAAQ,GAC1BV,cAAc,CAACK,WAAW,CAACM,cAAc,CAAC,CAAC,CAAC,CAAC,GAC7CC,SAAS,EACf,CAACP,WAAW,CACd,CAAC;EACD,MAAMQ,WAAW,GAAGR,WAAW,EAAEQ,WAAW,IAAI,KAAK;EAErD,MAAMC,cAAc,GAAGnB,WAAW,CAAC,MAAM;IACvCW,oBAAoB,CAAC;MACnBI,IAAI,EAAE,QAAQ;MACdC,cAAc,EAAE,EAAE;MAClBE;IACF,CAAC,CAAC;EACJ,CAAC,EAAE,CAACP,oBAAoB,EAAEO,WAAW,CAAC,CAAC;EAEvC,MAAME,YAAY,GAAGpB,WAAW,CAC7BqB,KAAyB,IAAK;IAC7BV,oBAAoB,CAAC;MACnBI,IAAI,EAAE,QAAQ;MACdC,cAAc,EAAEK,KAAK,KAAKJ,SAAS,GAAG,CAACI,KAAK,CAAC,GAAG,EAAE;MAClDH;IACF,CAAC,CAAC;EACJ,CAAC,EACD,CAACP,oBAAoB,EAAEO,WAAW,CACpC,CAAC;EAED,MAAMI,kBAAkB,GAAGrB,OAAO,CAChC,OAAO;IAAEsB,KAAK,EAAEX;EAAY,CAAC,CAAC,EAC9B,CAACA,WAAW,CACd,CAAC;EAED,MAAM;IAAEY,IAAI;IAAEC,SAAS;IAAEC;EAAM,CAAC,GAAGtB,sBAAsB,CACvDG,UAAU,EACVE,WAAW,EACXD,SAAS,EACTc,kBACF,CAAC;EAED,oBACExB,KAAA,CAAA6B,aAAA,CAACzB,qBAAqB;IACpBW,cAAc,EAAEA,cAAe;IAC/BH,WAAW,EAAEA,WAAY;IACzBC,oBAAoB,EAAEA,oBAAqB;IAC3CiB,eAAe,EAAEJ,IAAI,CAACK,MAAO;IAC7BC,UAAU,EAAEX;EAAe,gBAE3BrB,KAAA,CAAA6B,aAAA,CAACxB,iBAAiB;IAChB4B,MAAM,EAAEP,IAAK;IACbC,SAAS,EAAEA,SAAU;IACrBC,KAAK,EAAEA,KAAM;IACbZ,aAAa,EAAEA,aAAc;IAC7BkB,QAAQ,EAAEZ,YAAa;IACvBa,SAAS,EAAE,UAAUxB,WAAW;EAAG,CACpC,CACoB,CAAC;AAE5B;AAEA,OAAO,MAAMyB,uBAA4D,gBACvEnC,IAAI,CACFO,4BACF,CAAwC","ignoreList":[]}
|
|
@@ -30,6 +30,13 @@ function TextTagsFilterInputInner({
|
|
|
30
30
|
}) {
|
|
31
31
|
const tags = useMemo(() => filterState?.type === "EXACT_MATCH" ? coerceToStringArray(filterState.values) : [], [filterState]);
|
|
32
32
|
const isExcluding = filterState?.isExcluding ?? false;
|
|
33
|
+
const handleClearAll = useCallback(() => {
|
|
34
|
+
onFilterStateChanged({
|
|
35
|
+
type: "EXACT_MATCH",
|
|
36
|
+
values: [],
|
|
37
|
+
isExcluding
|
|
38
|
+
});
|
|
39
|
+
}, [onFilterStateChanged, isExcluding]);
|
|
33
40
|
const handleChange = useCallback(values => {
|
|
34
41
|
onFilterStateChanged({
|
|
35
42
|
type: "EXACT_MATCH",
|
|
@@ -49,7 +56,8 @@ function TextTagsFilterInputInner({
|
|
|
49
56
|
excludeRowOpen: excludeRowOpen,
|
|
50
57
|
filterState: filterState,
|
|
51
58
|
onFilterStateChanged: onFilterStateChanged,
|
|
52
|
-
totalValueCount: data.length
|
|
59
|
+
totalValueCount: data.length,
|
|
60
|
+
onClearAll: handleClearAll
|
|
53
61
|
}, /*#__PURE__*/React.createElement(TextTagsInput, {
|
|
54
62
|
suggestions: data,
|
|
55
63
|
isLoading: isLoading,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextTagsFilterInput.js","names":["React","memo","useCallback","useMemo","FilterInputExcludeRow","TextTagsInput","usePropertyAggregation","coerceToStringArray","TextTagsFilterInputInner","objectType","objectSet","propertyKey","filterState","onFilterStateChanged","whereClause","excludeRowOpen","tags","type","values","isExcluding","handleChange","aggregationOptions","where","data","isLoading","error","createElement","totalValueCount","length","suggestions","onChange","TextTagsFilterInput"],"sources":["TextTagsFilterInput.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 {\n ObjectSet,\n ObjectTypeDefinition,\n PropertyKeys,\n WhereClause,\n} from \"@osdk/api\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { FilterInputExcludeRow } from \"../base/FilterInputExcludeRow.js\";\nimport { TextTagsInput } from \"../base/inputs/TextTagsInput.js\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport { usePropertyAggregation } from \"../hooks/usePropertyAggregation.js\";\nimport { coerceToStringArray } from \"../utils/coerceFilterValue.js\";\n\ninterface TextTagsFilterInputProps<Q extends ObjectTypeDefinition> {\n objectType: Q;\n objectSet: ObjectSet<Q>;\n propertyKey: string;\n filterState: FilterState | undefined;\n onFilterStateChanged: (state: FilterState) => void;\n whereClause: WhereClause<Q>;\n excludeRowOpen?: boolean;\n}\n\nfunction TextTagsFilterInputInner<Q extends ObjectTypeDefinition>({\n objectType,\n objectSet,\n propertyKey,\n filterState,\n onFilterStateChanged,\n whereClause,\n excludeRowOpen,\n}: TextTagsFilterInputProps<Q>): React.ReactElement {\n const tags = useMemo(\n () =>\n filterState?.type === \"EXACT_MATCH\"\n ? coerceToStringArray(filterState.values)\n : [],\n [filterState],\n );\n const isExcluding = filterState?.isExcluding ?? false;\n\n const handleChange = useCallback(\n (values: string[]) => {\n onFilterStateChanged({\n type: \"EXACT_MATCH\",\n values,\n isExcluding,\n });\n },\n [onFilterStateChanged, isExcluding],\n );\n\n const aggregationOptions = useMemo(\n () => ({ where: whereClause }),\n [whereClause],\n );\n\n const { data, isLoading, error } = usePropertyAggregation(\n objectType,\n propertyKey as PropertyKeys<Q>,\n objectSet,\n aggregationOptions,\n );\n\n return (\n <FilterInputExcludeRow\n excludeRowOpen={excludeRowOpen}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n totalValueCount={data.length}\n >\n <TextTagsInput\n suggestions={data}\n isLoading={isLoading}\n error={error}\n tags={tags}\n onChange={handleChange}\n />\n </FilterInputExcludeRow>\n );\n}\n\nexport const TextTagsFilterInput: typeof TextTagsFilterInputInner = memo(\n TextTagsFilterInputInner,\n) as typeof TextTagsFilterInputInner;\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAQA,OAAOA,KAAK,IAAIC,IAAI,EAAEC,WAAW,EAAEC,OAAO,QAAQ,OAAO;AACzD,SAASC,qBAAqB,QAAQ,kCAAkC;AACxE,SAASC,aAAa,QAAQ,iCAAiC;AAE/D,SAASC,sBAAsB,QAAQ,oCAAoC;AAC3E,SAASC,mBAAmB,QAAQ,+BAA+B;AAYnE,SAASC,wBAAwBA,CAAiC;EAChEC,UAAU;EACVC,SAAS;EACTC,WAAW;EACXC,WAAW;EACXC,oBAAoB;EACpBC,WAAW;EACXC;AAC2B,CAAC,EAAsB;EAClD,MAAMC,IAAI,GAAGb,OAAO,CAClB,MACES,WAAW,EAAEK,IAAI,KAAK,aAAa,GAC/BV,mBAAmB,CAACK,WAAW,CAACM,MAAM,CAAC,GACvC,EAAE,EACR,CAACN,WAAW,CACd,CAAC;EACD,MAAMO,WAAW,GAAGP,WAAW,EAAEO,WAAW,IAAI,KAAK;EAErD,MAAMC,
|
|
1
|
+
{"version":3,"file":"TextTagsFilterInput.js","names":["React","memo","useCallback","useMemo","FilterInputExcludeRow","TextTagsInput","usePropertyAggregation","coerceToStringArray","TextTagsFilterInputInner","objectType","objectSet","propertyKey","filterState","onFilterStateChanged","whereClause","excludeRowOpen","tags","type","values","isExcluding","handleClearAll","handleChange","aggregationOptions","where","data","isLoading","error","createElement","totalValueCount","length","onClearAll","suggestions","onChange","TextTagsFilterInput"],"sources":["TextTagsFilterInput.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 {\n ObjectSet,\n ObjectTypeDefinition,\n PropertyKeys,\n WhereClause,\n} from \"@osdk/api\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { FilterInputExcludeRow } from \"../base/FilterInputExcludeRow.js\";\nimport { TextTagsInput } from \"../base/inputs/TextTagsInput.js\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport { usePropertyAggregation } from \"../hooks/usePropertyAggregation.js\";\nimport { coerceToStringArray } from \"../utils/coerceFilterValue.js\";\n\ninterface TextTagsFilterInputProps<Q extends ObjectTypeDefinition> {\n objectType: Q;\n objectSet: ObjectSet<Q>;\n propertyKey: string;\n filterState: FilterState | undefined;\n onFilterStateChanged: (state: FilterState) => void;\n whereClause: WhereClause<Q>;\n excludeRowOpen?: boolean;\n}\n\nfunction TextTagsFilterInputInner<Q extends ObjectTypeDefinition>({\n objectType,\n objectSet,\n propertyKey,\n filterState,\n onFilterStateChanged,\n whereClause,\n excludeRowOpen,\n}: TextTagsFilterInputProps<Q>): React.ReactElement {\n const tags = useMemo(\n () =>\n filterState?.type === \"EXACT_MATCH\"\n ? coerceToStringArray(filterState.values)\n : [],\n [filterState],\n );\n const isExcluding = filterState?.isExcluding ?? false;\n\n const handleClearAll = useCallback(() => {\n onFilterStateChanged({\n type: \"EXACT_MATCH\",\n values: [],\n isExcluding,\n });\n }, [onFilterStateChanged, isExcluding]);\n\n const handleChange = useCallback(\n (values: string[]) => {\n onFilterStateChanged({\n type: \"EXACT_MATCH\",\n values,\n isExcluding,\n });\n },\n [onFilterStateChanged, isExcluding],\n );\n\n const aggregationOptions = useMemo(\n () => ({ where: whereClause }),\n [whereClause],\n );\n\n const { data, isLoading, error } = usePropertyAggregation(\n objectType,\n propertyKey as PropertyKeys<Q>,\n objectSet,\n aggregationOptions,\n );\n\n return (\n <FilterInputExcludeRow\n excludeRowOpen={excludeRowOpen}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n totalValueCount={data.length}\n onClearAll={handleClearAll}\n >\n <TextTagsInput\n suggestions={data}\n isLoading={isLoading}\n error={error}\n tags={tags}\n onChange={handleChange}\n />\n </FilterInputExcludeRow>\n );\n}\n\nexport const TextTagsFilterInput: typeof TextTagsFilterInputInner = memo(\n TextTagsFilterInputInner,\n) as typeof TextTagsFilterInputInner;\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAQA,OAAOA,KAAK,IAAIC,IAAI,EAAEC,WAAW,EAAEC,OAAO,QAAQ,OAAO;AACzD,SAASC,qBAAqB,QAAQ,kCAAkC;AACxE,SAASC,aAAa,QAAQ,iCAAiC;AAE/D,SAASC,sBAAsB,QAAQ,oCAAoC;AAC3E,SAASC,mBAAmB,QAAQ,+BAA+B;AAYnE,SAASC,wBAAwBA,CAAiC;EAChEC,UAAU;EACVC,SAAS;EACTC,WAAW;EACXC,WAAW;EACXC,oBAAoB;EACpBC,WAAW;EACXC;AAC2B,CAAC,EAAsB;EAClD,MAAMC,IAAI,GAAGb,OAAO,CAClB,MACES,WAAW,EAAEK,IAAI,KAAK,aAAa,GAC/BV,mBAAmB,CAACK,WAAW,CAACM,MAAM,CAAC,GACvC,EAAE,EACR,CAACN,WAAW,CACd,CAAC;EACD,MAAMO,WAAW,GAAGP,WAAW,EAAEO,WAAW,IAAI,KAAK;EAErD,MAAMC,cAAc,GAAGlB,WAAW,CAAC,MAAM;IACvCW,oBAAoB,CAAC;MACnBI,IAAI,EAAE,aAAa;MACnBC,MAAM,EAAE,EAAE;MACVC;IACF,CAAC,CAAC;EACJ,CAAC,EAAE,CAACN,oBAAoB,EAAEM,WAAW,CAAC,CAAC;EAEvC,MAAME,YAAY,GAAGnB,WAAW,CAC7BgB,MAAgB,IAAK;IACpBL,oBAAoB,CAAC;MACnBI,IAAI,EAAE,aAAa;MACnBC,MAAM;MACNC;IACF,CAAC,CAAC;EACJ,CAAC,EACD,CAACN,oBAAoB,EAAEM,WAAW,CACpC,CAAC;EAED,MAAMG,kBAAkB,GAAGnB,OAAO,CAChC,OAAO;IAAEoB,KAAK,EAAET;EAAY,CAAC,CAAC,EAC9B,CAACA,WAAW,CACd,CAAC;EAED,MAAM;IAAEU,IAAI;IAAEC,SAAS;IAAEC;EAAM,CAAC,GAAGpB,sBAAsB,CACvDG,UAAU,EACVE,WAAW,EACXD,SAAS,EACTY,kBACF,CAAC;EAED,oBACEtB,KAAA,CAAA2B,aAAA,CAACvB,qBAAqB;IACpBW,cAAc,EAAEA,cAAe;IAC/BH,WAAW,EAAEA,WAAY;IACzBC,oBAAoB,EAAEA,oBAAqB;IAC3Ce,eAAe,EAAEJ,IAAI,CAACK,MAAO;IAC7BC,UAAU,EAAEV;EAAe,gBAE3BpB,KAAA,CAAA2B,aAAA,CAACtB,aAAa;IACZ0B,WAAW,EAAEP,IAAK;IAClBC,SAAS,EAAEA,SAAU;IACrBC,KAAK,EAAEA,KAAM;IACbV,IAAI,EAAEA,IAAK;IACXgB,QAAQ,EAAEX;EAAa,CACxB,CACoB,CAAC;AAE5B;AAEA,OAAO,MAAMY,mBAAoD,gBAAGhC,IAAI,CACtEO,wBACF,CAAoC","ignoreList":[]}
|