@osdk/react-components 0.54.0 → 0.55.0-main-caff0c0ea39b54fba6782b0f2a1514f491afa4c1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/build/browser/filter-list/FilterList.js.map +1 -1
  3. package/build/browser/filter-list/FilterListApi.js.map +1 -1
  4. package/build/browser/filter-list/hooks/useFilterListState.js +92 -16
  5. package/build/browser/filter-list/hooks/useFilterListState.js.map +1 -1
  6. package/build/browser/filter-list/types/LinkedFilterTypes.js.map +1 -1
  7. package/build/browser/object-table/ObjectTableApi.js.map +1 -1
  8. package/build/browser/public/experimental/filter-list.js.map +1 -1
  9. package/build/browser/util/UserAgent.js +1 -1
  10. package/build/browser/util/UserAgent.js.map +1 -1
  11. package/build/cjs/chunk-4OB3E6KJ.cjs +11 -0
  12. package/build/cjs/{chunk-D2XXXPH6.cjs.map → chunk-4OB3E6KJ.cjs.map} +1 -1
  13. package/build/cjs/chunk-C4M2S3UN.cjs +11 -0
  14. package/build/cjs/{chunk-EYGD2H45.cjs.map → chunk-C4M2S3UN.cjs.map} +1 -1
  15. package/build/cjs/chunk-DRCXFM73.cjs +11 -0
  16. package/build/cjs/{chunk-LJLLTHYK.cjs.map → chunk-DRCXFM73.cjs.map} +1 -1
  17. package/build/cjs/{chunk-HWY2YSBD.cjs → chunk-GL2UPD5Q.cjs} +4 -4
  18. package/build/cjs/{chunk-HWY2YSBD.cjs.map → chunk-GL2UPD5Q.cjs.map} +1 -1
  19. package/build/cjs/{chunk-4QUYZCMR.cjs → chunk-HG2XX6LZ.cjs} +4 -4
  20. package/build/cjs/{chunk-4QUYZCMR.cjs.map → chunk-HG2XX6LZ.cjs.map} +1 -1
  21. package/build/cjs/{chunk-EANEZ7DS.cjs → chunk-K6OEAX2T.cjs} +4 -4
  22. package/build/cjs/{chunk-EANEZ7DS.cjs.map → chunk-K6OEAX2T.cjs.map} +1 -1
  23. package/build/cjs/{chunk-B2VLYFEO.cjs → chunk-L57CLKED.cjs} +4 -4
  24. package/build/cjs/{chunk-B2VLYFEO.cjs.map → chunk-L57CLKED.cjs.map} +1 -1
  25. package/build/cjs/{chunk-JJTZZ4AO.cjs → chunk-LUHPM2MY.cjs} +91 -20
  26. package/build/cjs/chunk-LUHPM2MY.cjs.map +1 -0
  27. package/build/cjs/{chunk-RCPPRRRK.cjs → chunk-R3KKO3FP.cjs} +4 -4
  28. package/build/cjs/{chunk-RCPPRRRK.cjs.map → chunk-R3KKO3FP.cjs.map} +1 -1
  29. package/build/cjs/{chunk-G7M3NOUP.cjs → chunk-WATCUA6R.cjs} +3 -3
  30. package/build/cjs/chunk-WATCUA6R.cjs.map +1 -0
  31. package/build/cjs/chunk-WTIDFE4H.cjs +11 -0
  32. package/build/cjs/{chunk-NX3YZIHN.cjs.map → chunk-WTIDFE4H.cjs.map} +1 -1
  33. package/build/cjs/{chunk-R6TVZR37.cjs → chunk-YCBXWCQB.cjs} +4 -4
  34. package/build/cjs/{chunk-R6TVZR37.cjs.map → chunk-YCBXWCQB.cjs.map} +1 -1
  35. package/build/cjs/{chunk-LCSQHTQ2.cjs → chunk-YU4NMPPG.cjs} +4 -4
  36. package/build/cjs/{chunk-LCSQHTQ2.cjs.map → chunk-YU4NMPPG.cjs.map} +1 -1
  37. package/build/cjs/{chunk-USKT6B3H.cjs → chunk-Z3LAOM6L.cjs} +4 -4
  38. package/build/cjs/{chunk-USKT6B3H.cjs.map → chunk-Z3LAOM6L.cjs.map} +1 -1
  39. package/build/cjs/public/experimental/action-form.cjs +4 -4
  40. package/build/cjs/public/experimental/cbac-picker.cjs +11 -11
  41. package/build/cjs/public/experimental/document-viewer.cjs +4 -4
  42. package/build/cjs/public/experimental/email-viewer.cjs +3 -3
  43. package/build/cjs/public/experimental/filter-list.cjs +15 -15
  44. package/build/cjs/public/experimental/filter-list.d.cts +66 -12
  45. package/build/cjs/public/experimental/image-viewer.cjs +3 -3
  46. package/build/cjs/public/experimental/markdown-renderer.cjs +5 -5
  47. package/build/cjs/public/experimental/object-table.cjs +22 -22
  48. package/build/cjs/public/experimental/object-table.d.cts +0 -1
  49. package/build/cjs/public/experimental/pdf-viewer.cjs +7 -7
  50. package/build/cjs/public/experimental/spreadsheet-viewer.cjs +3 -3
  51. package/build/cjs/public/experimental/tiff-renderer.cjs +5 -5
  52. package/build/cjs/public/experimental/video-viewer.cjs +3 -3
  53. package/build/cjs/public/experimental/xml-viewer.cjs +3 -3
  54. package/build/cjs/public/experimental.cjs +76 -76
  55. package/build/cjs/public/experimental.d.cts +1 -1
  56. package/build/esm/filter-list/FilterList.js.map +1 -1
  57. package/build/esm/filter-list/FilterListApi.js.map +1 -1
  58. package/build/esm/filter-list/hooks/useFilterListState.js +92 -16
  59. package/build/esm/filter-list/hooks/useFilterListState.js.map +1 -1
  60. package/build/esm/filter-list/types/LinkedFilterTypes.js.map +1 -1
  61. package/build/esm/object-table/ObjectTableApi.js.map +1 -1
  62. package/build/esm/public/experimental/filter-list.js.map +1 -1
  63. package/build/esm/util/UserAgent.js +1 -1
  64. package/build/esm/util/UserAgent.js.map +1 -1
  65. package/build/types/filter-list/FilterList.d.ts.map +1 -1
  66. package/build/types/filter-list/FilterListApi.d.ts +56 -10
  67. package/build/types/filter-list/FilterListApi.d.ts.map +1 -1
  68. package/build/types/filter-list/hooks/useFilterListState.d.ts.map +1 -1
  69. package/build/types/filter-list/types/LinkedFilterTypes.d.ts +1 -1
  70. package/build/types/object-table/ObjectTableApi.d.ts +0 -1
  71. package/build/types/object-table/ObjectTableApi.d.ts.map +1 -1
  72. package/build/types/public/experimental/filter-list.d.ts +1 -1
  73. package/build/types/public/experimental/filter-list.d.ts.map +1 -1
  74. package/docs/FilterList.md +93 -27
  75. package/docs/ObjectTable.md +1 -1
  76. package/docs/ObjectTableOverview.md +1 -1
  77. package/package.json +4 -4
  78. package/build/cjs/chunk-D2XXXPH6.cjs +0 -11
  79. package/build/cjs/chunk-EYGD2H45.cjs +0 -11
  80. package/build/cjs/chunk-G7M3NOUP.cjs.map +0 -1
  81. package/build/cjs/chunk-JJTZZ4AO.cjs.map +0 -1
  82. package/build/cjs/chunk-LJLLTHYK.cjs +0 -11
  83. package/build/cjs/chunk-NX3YZIHN.cjs +0 -11
@@ -6,7 +6,7 @@ var chunk3KMJ6NKF_cjs = require('./chunk-3KMJ6NKF.cjs');
6
6
  var chunkYE4F6HIR_cjs = require('./chunk-YE4F6HIR.cjs');
7
7
  var chunk7LXS66DW_cjs = require('./chunk-7LXS66DW.cjs');
8
8
  var chunkUCTQICPR_cjs = require('./chunk-UCTQICPR.cjs');
9
- var chunkG7M3NOUP_cjs = require('./chunk-G7M3NOUP.cjs');
9
+ var chunkWATCUA6R_cjs = require('./chunk-WATCUA6R.cjs');
10
10
  var button = require('@base-ui/react/button');
11
11
  var classnames3 = require('classnames');
12
12
  var React15 = require('react');
@@ -5020,13 +5020,26 @@ function buildInitialStates(definitions) {
5020
5020
  }
5021
5021
  return states;
5022
5022
  }
5023
+ function deriveSnapshot(definitions, filterStates, propertyTypes, objectSet) {
5024
+ const whereClause = buildWhereClause(definitions, filterStates, propertyTypes);
5025
+ const linkedFilters = getActiveLinkedFilters(definitions, filterStates);
5026
+ return {
5027
+ whereClause,
5028
+ linkedFilters,
5029
+ effectiveObjectSet: objectSet == null ? void 0 : narrowObjectSet(objectSet, whereClause, linkedFilters)
5030
+ };
5031
+ }
5023
5032
  function useFilterListState(props) {
5024
5033
  const {
5025
5034
  objectType,
5026
5035
  objectSet,
5027
5036
  filterDefinitions,
5037
+ // eslint-disable-next-line @typescript-eslint/no-deprecated -- back-compat callback still supported
5028
5038
  onFilterStateChanged,
5039
+ onFilterListChanged,
5040
+ // eslint-disable-next-line @typescript-eslint/no-deprecated -- back-compat callback still supported
5029
5041
  onFilterClauseChanged,
5042
+ // eslint-disable-next-line @typescript-eslint/no-deprecated -- back-compat callback still supported
5030
5043
  onEffectiveObjectSet,
5031
5044
  defaultFilterStates,
5032
5045
  // eslint-disable-next-line @typescript-eslint/no-deprecated -- back-compat fallback for the pre-rename prop
@@ -5034,14 +5047,21 @@ function useFilterListState(props) {
5034
5047
  } = props;
5035
5048
  const seededFilterStates = defaultFilterStates ?? initialFilterStates;
5036
5049
  const {
5037
- metadata
5050
+ metadata,
5051
+ loading: metadataLoading
5038
5052
  } = react.useOsdkMetadata(objectType);
5053
+ const onFilterStateChangedRef = React15.useRef(onFilterStateChanged);
5054
+ onFilterStateChangedRef.current = onFilterStateChanged;
5039
5055
  const onFilterClauseChangedRef = React15.useRef(onFilterClauseChanged);
5040
5056
  onFilterClauseChangedRef.current = onFilterClauseChanged;
5041
5057
  const onEffectiveObjectSetRef = React15.useRef(onEffectiveObjectSet);
5042
5058
  onEffectiveObjectSetRef.current = onEffectiveObjectSet;
5059
+ const onFilterListChangedRef = React15.useRef(onFilterListChanged);
5060
+ onFilterListChangedRef.current = onFilterListChanged;
5043
5061
  const filterDefinitionsRef = React15.useRef(filterDefinitions);
5044
5062
  filterDefinitionsRef.current = filterDefinitions;
5063
+ const objectSetRef = React15.useRef(objectSet);
5064
+ objectSetRef.current = objectSet;
5045
5065
  const propertyTypes = React15.useMemo(() => {
5046
5066
  const map = /* @__PURE__ */ new Map();
5047
5067
  if (metadata?.properties) {
@@ -5056,6 +5076,22 @@ function useFilterListState(props) {
5056
5076
  }
5057
5077
  return map;
5058
5078
  }, [metadata?.properties]);
5079
+ const propertyTypesRef = React15.useRef(propertyTypes);
5080
+ propertyTypesRef.current = propertyTypes;
5081
+ const emitFilterListChanged = React15.useCallback((states, reason) => {
5082
+ const onChange = onFilterListChangedRef.current;
5083
+ if (onChange == null) {
5084
+ return;
5085
+ }
5086
+ const snapshot = deriveSnapshot(filterDefinitionsRef.current, states, propertyTypesRef.current, objectSetRef.current);
5087
+ onChange({
5088
+ snapshot: {
5089
+ filterClause: snapshot.whereClause,
5090
+ filteredObjectSet: snapshot.effectiveObjectSet
5091
+ },
5092
+ reason
5093
+ });
5094
+ }, []);
5059
5095
  const [initialFilterStatesSnapshot] = React15.useState(() => {
5060
5096
  const snapshot = buildInitialStates(filterDefinitions);
5061
5097
  if (seededFilterStates) {
@@ -5066,30 +5102,65 @@ function useFilterListState(props) {
5066
5102
  return snapshot;
5067
5103
  });
5068
5104
  const [filterStates, setFilterStates] = React15.useState(() => new Map(initialFilterStatesSnapshot));
5105
+ const filterStatesRef = React15.useRef(filterStates);
5106
+ filterStatesRef.current = filterStates;
5107
+ const applyChange = React15.useCallback((transition, reason) => {
5108
+ const next = transition(filterStatesRef.current);
5109
+ if (next === void 0) {
5110
+ return;
5111
+ }
5112
+ filterStatesRef.current = next;
5113
+ setFilterStates(next);
5114
+ emitFilterListChanged(next, reason);
5115
+ }, [emitFilterListChanged]);
5069
5116
  const setFilterState = React15.useCallback((filterKey, state) => {
5070
- setFilterStates((prev) => {
5071
- const next = new Map(prev);
5117
+ const definition = filterDefinitionsRef.current?.find((candidate) => getFilterKey(candidate) === filterKey);
5118
+ if (definition) {
5119
+ onFilterStateChangedRef.current?.(definition, state);
5120
+ }
5121
+ applyChange((previous) => {
5122
+ const next = new Map(previous);
5072
5123
  next.set(filterKey, state);
5073
5124
  return next;
5125
+ }, {
5126
+ type: "FILTER_STATE_CHANGED",
5127
+ filterKey,
5128
+ newState: state
5074
5129
  });
5075
- const definition = filterDefinitionsRef.current?.find((d) => getFilterKey(d) === filterKey);
5076
- if (definition) {
5077
- onFilterStateChanged?.(definition, state);
5078
- }
5079
- }, [onFilterStateChanged]);
5130
+ }, [applyChange]);
5080
5131
  const clearFilterState2 = React15.useCallback((filterKey) => {
5081
- setFilterStates((prev) => {
5082
- const next = new Map(prev);
5132
+ applyChange((previous) => {
5133
+ if (!previous.has(filterKey)) {
5134
+ return;
5135
+ }
5136
+ const next = new Map(previous);
5083
5137
  next.delete(filterKey);
5084
5138
  return next;
5139
+ }, {
5140
+ type: "FILTER_REMOVED",
5141
+ filterKey
5085
5142
  });
5086
- }, []);
5143
+ }, [applyChange]);
5087
5144
  const reset = React15.useCallback(() => {
5088
- setFilterStates(new Map(initialFilterStatesSnapshot));
5089
- }, [initialFilterStatesSnapshot]);
5090
- const whereClause = React15.useMemo(() => buildWhereClause(filterDefinitions, filterStates, propertyTypes), [filterDefinitions, filterStates, propertyTypes]);
5091
- const linkedFilters = React15.useMemo(() => getActiveLinkedFilters(filterDefinitions, filterStates), [filterDefinitions, filterStates]);
5092
- const effectiveObjectSet = React15.useMemo(() => objectSet == null ? void 0 : narrowObjectSet(objectSet, whereClause, linkedFilters), [objectSet, whereClause, linkedFilters]);
5145
+ applyChange(() => new Map(initialFilterStatesSnapshot), {
5146
+ type: "FILTER_LIST_RESET"
5147
+ });
5148
+ }, [applyChange, initialFilterStatesSnapshot]);
5149
+ const {
5150
+ whereClause,
5151
+ linkedFilters,
5152
+ effectiveObjectSet
5153
+ } = React15.useMemo(() => deriveSnapshot(filterDefinitions, filterStates, propertyTypes, objectSet), [filterDefinitions, filterStates, propertyTypes, objectSet]);
5154
+ const hasEmittedInit = React15.useRef(false);
5155
+ React15.useEffect(() => {
5156
+ if (hasEmittedInit.current || metadataLoading) {
5157
+ return;
5158
+ }
5159
+ hasEmittedInit.current = true;
5160
+ emitFilterListChanged(filterStatesRef.current, {
5161
+ type: "FILTER_LIST_INITIALIZED"
5162
+ });
5163
+ }, [metadataLoading, emitFilterListChanged]);
5093
5164
  React15.useEffect(() => {
5094
5165
  onFilterClauseChangedRef.current?.(whereClause);
5095
5166
  }, [whereClause]);
@@ -5654,7 +5725,7 @@ function summarizeFilterValue(definition, state) {
5654
5725
  }
5655
5726
 
5656
5727
  // src/public/experimental/filter-list.ts
5657
- var FilterList2 = chunkG7M3NOUP_cjs.withOsdkMetrics(FilterList, "FilterList");
5728
+ var FilterList2 = chunkWATCUA6R_cjs.withOsdkMetrics(FilterList, "FilterList");
5658
5729
 
5659
5730
  exports.BaseFilterList = BaseFilterList;
5660
5731
  exports.FilterInput = FilterInput;
@@ -5669,5 +5740,5 @@ exports.narrowObjectSet = narrowObjectSet;
5669
5740
  exports.serializeFilterStates = serializeFilterStates;
5670
5741
  exports.summarizeFilterValue = summarizeFilterValue;
5671
5742
  exports.useFilterListState = useFilterListState;
5672
- //# sourceMappingURL=chunk-JJTZZ4AO.cjs.map
5673
- //# sourceMappingURL=chunk-JJTZZ4AO.cjs.map
5743
+ //# sourceMappingURL=chunk-LUHPM2MY.cjs.map
5744
+ //# sourceMappingURL=chunk-LUHPM2MY.cjs.map