@plasmicpkgs/react-aria 0.0.120 → 0.0.121

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 (68) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/OptionsItemIdManager.d.ts +18 -0
  3. package/dist/react-aria.esm.js +150 -183
  4. package/dist/react-aria.esm.js.map +1 -1
  5. package/dist/react-aria.js +149 -182
  6. package/dist/react-aria.js.map +1 -1
  7. package/dist/registerCheckboxGroup.d.ts +2 -5
  8. package/dist/registerComboBox.d.ts +2 -5
  9. package/dist/registerListBox.d.ts +2 -3
  10. package/dist/registerRadioGroup.d.ts +2 -5
  11. package/dist/registerSelect.d.ts +2 -5
  12. package/dist/utils.d.ts +3 -0
  13. package/package.json +2 -2
  14. package/skinny/OptionsItemIdManager-904d6cea.esm.js +105 -0
  15. package/skinny/OptionsItemIdManager-904d6cea.esm.js.map +1 -0
  16. package/skinny/OptionsItemIdManager-ab379c9b.cjs.js +108 -0
  17. package/skinny/OptionsItemIdManager-ab379c9b.cjs.js.map +1 -0
  18. package/skinny/OptionsItemIdManager.d.ts +18 -0
  19. package/skinny/registerCheckbox.cjs.js +6 -28
  20. package/skinny/registerCheckbox.cjs.js.map +1 -1
  21. package/skinny/registerCheckbox.esm.js +7 -29
  22. package/skinny/registerCheckbox.esm.js.map +1 -1
  23. package/skinny/registerCheckboxGroup.cjs.js +11 -14
  24. package/skinny/registerCheckboxGroup.cjs.js.map +1 -1
  25. package/skinny/registerCheckboxGroup.d.ts +2 -5
  26. package/skinny/registerCheckboxGroup.esm.js +12 -15
  27. package/skinny/registerCheckboxGroup.esm.js.map +1 -1
  28. package/skinny/registerComboBox.cjs.js +8 -7
  29. package/skinny/registerComboBox.cjs.js.map +1 -1
  30. package/skinny/registerComboBox.d.ts +2 -5
  31. package/skinny/registerComboBox.esm.js +9 -8
  32. package/skinny/registerComboBox.esm.js.map +1 -1
  33. package/skinny/{registerListBox-0f6ebcf0.esm.js → registerListBox-c676f3af.esm.js} +4 -15
  34. package/skinny/registerListBox-c676f3af.esm.js.map +1 -0
  35. package/skinny/{registerListBox-040b0374.cjs.js → registerListBox-f83e4a42.cjs.js} +3 -14
  36. package/skinny/registerListBox-f83e4a42.cjs.js.map +1 -0
  37. package/skinny/registerListBox.cjs.js +2 -2
  38. package/skinny/registerListBox.d.ts +2 -3
  39. package/skinny/registerListBox.esm.js +2 -2
  40. package/skinny/registerListBoxItem.cjs.js +6 -27
  41. package/skinny/registerListBoxItem.cjs.js.map +1 -1
  42. package/skinny/registerListBoxItem.esm.js +7 -28
  43. package/skinny/registerListBoxItem.esm.js.map +1 -1
  44. package/skinny/registerRadio.cjs.js +6 -27
  45. package/skinny/registerRadio.cjs.js.map +1 -1
  46. package/skinny/registerRadio.esm.js +7 -28
  47. package/skinny/registerRadio.esm.js.map +1 -1
  48. package/skinny/registerRadioGroup.cjs.js +11 -14
  49. package/skinny/registerRadioGroup.cjs.js.map +1 -1
  50. package/skinny/registerRadioGroup.d.ts +2 -5
  51. package/skinny/registerRadioGroup.esm.js +12 -15
  52. package/skinny/registerRadioGroup.esm.js.map +1 -1
  53. package/skinny/registerSection.cjs.js +2 -2
  54. package/skinny/registerSection.esm.js +2 -2
  55. package/skinny/registerSelect.cjs.js +8 -7
  56. package/skinny/registerSelect.cjs.js.map +1 -1
  57. package/skinny/registerSelect.d.ts +2 -5
  58. package/skinny/registerSelect.esm.js +9 -8
  59. package/skinny/registerSelect.esm.js.map +1 -1
  60. package/skinny/utils-fc1ddd7c.cjs.js.map +1 -1
  61. package/skinny/utils-fd88ad47.esm.js.map +1 -1
  62. package/skinny/utils.d.ts +3 -0
  63. package/skinny/OptionsItemIdManager-832b8cfe.esm.js +0 -54
  64. package/skinny/OptionsItemIdManager-832b8cfe.esm.js.map +0 -1
  65. package/skinny/OptionsItemIdManager-a89a28b9.cjs.js +0 -56
  66. package/skinny/OptionsItemIdManager-a89a28b9.cjs.js.map +0 -1
  67. package/skinny/registerListBox-040b0374.cjs.js.map +0 -1
  68. package/skinny/registerListBox-0f6ebcf0.esm.js.map +0 -1
@@ -854,6 +854,107 @@ const PlasmicListBoxContext = React__default.default.createContext(void 0);
854
854
  React__default.default.createContext(void 0);
855
855
  const PlasmicInputContext = React__default.default.createContext(void 0);
856
856
 
857
+ class OptionsItemIdManager {
858
+ constructor() {
859
+ this._ids = /* @__PURE__ */ new Set();
860
+ this._observers = /* @__PURE__ */ new Set();
861
+ }
862
+ generateDuplicateId(id, count = 1) {
863
+ const dupId = `${id} duplicate(${count})`;
864
+ if (this._ids.has(dupId)) {
865
+ return this.generateDuplicateId(id, count + 1);
866
+ } else {
867
+ return dupId;
868
+ }
869
+ }
870
+ generateMissingId(count = 1) {
871
+ const missingId = `missing(${count})`;
872
+ if (this._ids.has(missingId)) {
873
+ return this.generateMissingId(count + 1);
874
+ } else {
875
+ return missingId;
876
+ }
877
+ }
878
+ register(id) {
879
+ const idStr = id === void 0 ? void 0 : String(id).trim();
880
+ let newId;
881
+ if (!idStr) {
882
+ newId = this.generateMissingId();
883
+ } else if (this._ids.has(idStr)) {
884
+ newId = this.generateDuplicateId(idStr);
885
+ } else {
886
+ newId = idStr;
887
+ }
888
+ this._ids.add(newId);
889
+ this.notify();
890
+ return newId;
891
+ }
892
+ unregister(id) {
893
+ this._ids.delete(id);
894
+ this.notify();
895
+ }
896
+ subscribe(observer) {
897
+ this._observers.add(observer);
898
+ observer(this.ids);
899
+ }
900
+ unsubscribe(observer) {
901
+ this._observers.delete(observer);
902
+ }
903
+ // Notify all observers about an event.
904
+ notify() {
905
+ this._observers.forEach((observer) => observer(this.ids));
906
+ }
907
+ get ids() {
908
+ return Array.from(this._ids);
909
+ }
910
+ }
911
+ const useOptionsItemId = (requestedId, idManager) => {
912
+ const [registeredId, setRegisteredId] = React.useState("");
913
+ React.useLayoutEffect(() => {
914
+ if (!idManager) {
915
+ return;
916
+ }
917
+ const localId = idManager.register(requestedId);
918
+ setRegisteredId(localId);
919
+ return () => {
920
+ if (localId) {
921
+ idManager.unregister(localId);
922
+ }
923
+ };
924
+ }, [requestedId, idManager]);
925
+ return {
926
+ registeredId,
927
+ idError: (() => {
928
+ if (requestedId === void 0) {
929
+ return "Value must be defined";
930
+ }
931
+ if (typeof requestedId !== "string") {
932
+ return "Value must be a string";
933
+ }
934
+ if (!requestedId.trim()) {
935
+ return "Value must be defined";
936
+ }
937
+ if (idManager && requestedId != registeredId) {
938
+ return "Value must be unique";
939
+ }
940
+ return void 0;
941
+ })()
942
+ };
943
+ };
944
+ function useIdManager(callback, existing) {
945
+ const idManager = React.useMemo(
946
+ () => existing != null ? existing : new OptionsItemIdManager(),
947
+ [existing]
948
+ );
949
+ React.useEffect(() => {
950
+ idManager.subscribe(callback);
951
+ return () => {
952
+ idManager.unsubscribe(callback);
953
+ };
954
+ }, [idManager, callback]);
955
+ return idManager;
956
+ }
957
+
857
958
  var __defProp$p = Object.defineProperty;
858
959
  var __defProps$l = Object.defineProperties;
859
960
  var __getOwnPropDescs$l = Object.getOwnPropertyDescriptors;
@@ -910,36 +1011,13 @@ function BaseCheckbox(props) {
910
1011
  "value"
911
1012
  ]);
912
1013
  const contextProps = React__default.default.useContext(PlasmicCheckboxGroupContext);
913
- const isStandalone = !contextProps;
914
- const [registeredId, setRegisteredId] = React.useState();
915
- React.useEffect(() => {
916
- if (!(contextProps == null ? void 0 : contextProps.idManager)) {
917
- return;
918
- }
919
- const localId = contextProps.idManager.register(value);
920
- setRegisteredId(localId);
921
- return () => {
922
- contextProps.idManager.unregister(localId);
923
- setRegisteredId(void 0);
924
- };
925
- }, [value, contextProps == null ? void 0 : contextProps.idManager]);
1014
+ const { registeredId, idError } = useOptionsItemId(
1015
+ value,
1016
+ contextProps == null ? void 0 : contextProps.idManager
1017
+ );
926
1018
  setControlContextData == null ? void 0 : setControlContextData({
927
1019
  parent: contextProps,
928
- idError: (() => {
929
- if (value === void 0) {
930
- return "Value must be defined";
931
- }
932
- if (typeof value !== "string") {
933
- return "Value must be a string";
934
- }
935
- if (!value.trim()) {
936
- return "Value must be defined";
937
- }
938
- if (!isStandalone && value != registeredId) {
939
- return "Value must be unique";
940
- }
941
- return void 0;
942
- })()
1020
+ idError
943
1021
  });
944
1022
  return /* @__PURE__ */ React__default.default.createElement(React__default.default.Fragment, null, /* @__PURE__ */ React__default.default.createElement(
945
1023
  reactAriaComponents.Checkbox,
@@ -1105,58 +1183,6 @@ function registerCheckbox(loader, overrides) {
1105
1183
  );
1106
1184
  }
1107
1185
 
1108
- class OptionsItemIdManager {
1109
- constructor() {
1110
- this._ids = /* @__PURE__ */ new Set();
1111
- this._observers = /* @__PURE__ */ new Set();
1112
- }
1113
- generateDuplicateId(id, count = 1) {
1114
- const dupId = `${id} duplicate(${count})`;
1115
- if (this._ids.has(dupId)) {
1116
- return this.generateDuplicateId(id, count + 1);
1117
- } else {
1118
- return dupId;
1119
- }
1120
- }
1121
- generateMissingId(count = 1) {
1122
- const missingId = `missing(${count})`;
1123
- if (this._ids.has(missingId)) {
1124
- return this.generateMissingId(count + 1);
1125
- } else {
1126
- return missingId;
1127
- }
1128
- }
1129
- register(id) {
1130
- const idStr = id === void 0 ? void 0 : String(id).trim();
1131
- let newId;
1132
- if (!idStr) {
1133
- newId = this.generateMissingId();
1134
- } else if (this._ids.has(idStr)) {
1135
- newId = this.generateDuplicateId(idStr);
1136
- } else {
1137
- newId = idStr;
1138
- }
1139
- this._ids.add(newId);
1140
- this.notify();
1141
- return newId;
1142
- }
1143
- unregister(id) {
1144
- this._ids.delete(id);
1145
- this.notify();
1146
- }
1147
- subscribe(observer) {
1148
- this._observers.add(observer);
1149
- observer(this.ids);
1150
- }
1151
- // Notify all observers about an event.
1152
- notify() {
1153
- this._observers.forEach((observer) => observer(this.ids));
1154
- }
1155
- get ids() {
1156
- return Array.from(this._ids);
1157
- }
1158
- }
1159
-
1160
1186
  var __defProp$o = Object.defineProperty;
1161
1187
  var __defProps$k = Object.defineProperties;
1162
1188
  var __getOwnPropDescs$k = Object.getOwnPropertyDescriptors;
@@ -1374,18 +1400,15 @@ const { variants: variants$f, withObservedValues: withObservedValues$c } = pickA
1374
1400
  );
1375
1401
  function BaseCheckboxGroup(props) {
1376
1402
  const _a = props, { children, plasmicUpdateVariant, setControlContextData } = _a, rest = __objRest$j(_a, ["children", "plasmicUpdateVariant", "setControlContextData"]);
1377
- const [ids, setIds] = React.useState([]);
1378
- const idManager = React.useMemo(() => new OptionsItemIdManager(), []);
1379
- React.useEffect(() => {
1380
- setControlContextData == null ? void 0 : setControlContextData({
1381
- values: ids
1382
- });
1383
- }, [ids, setControlContextData]);
1384
- React.useEffect(() => {
1385
- idManager.subscribe((_ids) => {
1386
- setIds(_ids);
1387
- });
1388
- }, [idManager]);
1403
+ const updateIds = React.useCallback(
1404
+ (ids) => {
1405
+ setControlContextData == null ? void 0 : setControlContextData({
1406
+ itemIds: ids
1407
+ });
1408
+ },
1409
+ [setControlContextData]
1410
+ );
1411
+ const idManager = useIdManager(updateIds);
1389
1412
  return (
1390
1413
  // PlasmicCheckboxGroupContext is used by BaseCheckbox
1391
1414
  /* @__PURE__ */ React__default.default.createElement(PlasmicCheckboxGroupContext.Provider, { value: __spreadProps$h(__spreadValues$l({}, rest), { idManager }) }, /* @__PURE__ */ React__default.default.createElement(reactAriaComponents.CheckboxGroup, __spreadProps$h(__spreadValues$l({}, rest), { style: COMMON_STYLES }), ({ isDisabled, isReadOnly }) => withObservedValues$c(
@@ -1490,7 +1513,7 @@ function registerCheckboxGroup(loader, overrides) {
1490
1513
  editOnly: true,
1491
1514
  uncontrolledProp: "defaultValue",
1492
1515
  description: "The current value",
1493
- options: (_props, ctx) => (ctx == null ? void 0 : ctx.values) ? Array.from(ctx.values) : [],
1516
+ options: (_props, ctx) => (ctx == null ? void 0 : ctx.itemIds) ? Array.from(ctx.itemIds) : [],
1494
1517
  multiSelect: true
1495
1518
  },
1496
1519
  isInvalid: {
@@ -1748,34 +1771,12 @@ function BaseListBoxItem(props) {
1748
1771
  const _a = props, { children, setControlContextData, plasmicUpdateVariant, id } = _a, rest = __objRest$h(_a, ["children", "setControlContextData", "plasmicUpdateVariant", "id"]);
1749
1772
  const listboxContext = React__default.default.useContext(PlasmicListBoxContext);
1750
1773
  const isStandalone = !listboxContext;
1751
- const [registeredId, setRegisteredId] = React.useState();
1752
- React.useEffect(() => {
1753
- if (!listboxContext) {
1754
- return;
1755
- }
1756
- const localId = listboxContext.idManager.register(id);
1757
- setRegisteredId(localId);
1758
- return () => {
1759
- listboxContext.idManager.unregister(localId);
1760
- setRegisteredId(void 0);
1761
- };
1762
- }, [id]);
1774
+ const { registeredId, idError } = useOptionsItemId(
1775
+ id,
1776
+ listboxContext == null ? void 0 : listboxContext.idManager
1777
+ );
1763
1778
  setControlContextData == null ? void 0 : setControlContextData({
1764
- idError: (() => {
1765
- if (id === void 0) {
1766
- return "ID must be defined";
1767
- }
1768
- if (typeof id !== "string") {
1769
- return "ID must be a string";
1770
- }
1771
- if (!id.trim()) {
1772
- return "ID must be defined";
1773
- }
1774
- if (!isStandalone && id != registeredId) {
1775
- return "ID must be unique";
1776
- }
1777
- return void 0;
1778
- })()
1779
+ idError
1779
1780
  });
1780
1781
  const listboxItem = /* @__PURE__ */ React__default.default.createElement(
1781
1782
  reactAriaComponents.ListBoxItem,
@@ -2029,24 +2030,13 @@ function BaseListBox(props) {
2029
2030
  const context = React__default.default.useContext(PlasmicListBoxContext);
2030
2031
  const isStandalone = !context;
2031
2032
  const [ids, setIds] = React.useState([]);
2032
- const idManager = React.useMemo(
2033
- () => {
2034
- var _a2;
2035
- return (_a2 = context == null ? void 0 : context.idManager) != null ? _a2 : new OptionsItemIdManager();
2036
- },
2037
- []
2038
- );
2033
+ const idManager = useIdManager(setIds, context == null ? void 0 : context.idManager);
2039
2034
  React.useEffect(() => {
2040
2035
  setControlContextData == null ? void 0 : setControlContextData({
2041
2036
  itemIds: ids,
2042
2037
  isStandalone
2043
2038
  });
2044
2039
  }, [ids, isStandalone, setControlContextData]);
2045
- React.useEffect(() => {
2046
- idManager.subscribe((_ids) => {
2047
- setIds(_ids);
2048
- });
2049
- }, []);
2050
2040
  const classNameProp = React.useCallback(
2051
2041
  ({ isFocusVisible, isFocused }) => {
2052
2042
  plasmicUpdateVariant == null ? void 0 : plasmicUpdateVariant({
@@ -2480,14 +2470,15 @@ function BaseComboBox(props) {
2480
2470
  },
2481
2471
  [className, plasmicUpdateVariant]
2482
2472
  );
2483
- const idManager = React.useMemo(() => new OptionsItemIdManager(), []);
2484
- React.useEffect(() => {
2485
- idManager.subscribe((ids) => {
2473
+ const updateIds = React.useCallback(
2474
+ (ids) => {
2486
2475
  setControlContextData == null ? void 0 : setControlContextData({
2487
2476
  itemIds: ids
2488
2477
  });
2489
- });
2490
- }, []);
2478
+ },
2479
+ [setControlContextData]
2480
+ );
2481
+ const idManager = useIdManager(updateIds);
2491
2482
  return /* @__PURE__ */ React__default.default.createElement(reactAriaComponents.ComboBox, __spreadProps$d(__spreadValues$f({ className: classNameProp }, rest), { style: COMMON_STYLES }), /* @__PURE__ */ React__default.default.createElement(PlasmicPopoverTriggerContext.Provider, { value: true }, /* @__PURE__ */ React__default.default.createElement(
2492
2483
  PlasmicListBoxContext.Provider,
2493
2484
  {
@@ -3215,35 +3206,13 @@ function BaseRadio(props) {
3215
3206
  ]);
3216
3207
  const contextProps = React__default.default.useContext(PlasmicRadioGroupContext);
3217
3208
  const isStandalone = !contextProps;
3218
- const [registeredId, setRegisteredId] = React.useState("");
3219
- React.useEffect(() => {
3220
- if (!(contextProps == null ? void 0 : contextProps.idManager)) {
3221
- return;
3222
- }
3223
- const localId = contextProps.idManager.register(value);
3224
- setRegisteredId(localId);
3225
- return () => {
3226
- contextProps.idManager.unregister(localId);
3227
- setRegisteredId("");
3228
- };
3229
- }, [value, contextProps == null ? void 0 : contextProps.idManager]);
3209
+ const { registeredId, idError } = useOptionsItemId(
3210
+ value,
3211
+ contextProps == null ? void 0 : contextProps.idManager
3212
+ );
3230
3213
  setControlContextData == null ? void 0 : setControlContextData({
3231
3214
  parent: contextProps,
3232
- idError: (() => {
3233
- if (value === void 0) {
3234
- return "Value must be defined";
3235
- }
3236
- if (typeof value !== "string") {
3237
- return "Value must be a string";
3238
- }
3239
- if (!value.trim()) {
3240
- return "Value must be defined";
3241
- }
3242
- if (!isStandalone && value != registeredId) {
3243
- return "Value must be unique";
3244
- }
3245
- return void 0;
3246
- })()
3215
+ idError
3247
3216
  });
3248
3217
  const radio = /* @__PURE__ */ React__default.default.createElement(
3249
3218
  reactAriaComponents.Radio,
@@ -3383,18 +3352,15 @@ const RADIO_GROUP_VARIANTS = ["disabled", "readonly"];
3383
3352
  const { variants: variants$8, withObservedValues: withObservedValues$7 } = pickAriaComponentVariants(RADIO_GROUP_VARIANTS);
3384
3353
  function BaseRadioGroup(props) {
3385
3354
  const _a = props, { children, plasmicUpdateVariant, setControlContextData } = _a, rest = __objRest$8(_a, ["children", "plasmicUpdateVariant", "setControlContextData"]);
3386
- const [ids, setIds] = React.useState([]);
3387
- const idManager = React.useMemo(() => new OptionsItemIdManager(), []);
3388
- React.useEffect(() => {
3389
- setControlContextData == null ? void 0 : setControlContextData({
3390
- values: ids
3391
- });
3392
- }, [ids, setControlContextData]);
3393
- React.useEffect(() => {
3394
- idManager.subscribe((_ids) => {
3395
- setIds(_ids);
3396
- });
3397
- }, [idManager]);
3355
+ const updateIds = React.useCallback(
3356
+ (ids) => {
3357
+ setControlContextData == null ? void 0 : setControlContextData({
3358
+ itemIds: ids
3359
+ });
3360
+ },
3361
+ [setControlContextData]
3362
+ );
3363
+ const idManager = useIdManager(updateIds);
3398
3364
  return (
3399
3365
  // PlasmicRadioGroupContext is used by BaseRadio
3400
3366
  /* @__PURE__ */ React__default.default.createElement(PlasmicRadioGroupContext.Provider, { value: __spreadProps$8(__spreadValues$9({}, props), { idManager }) }, /* @__PURE__ */ React__default.default.createElement(reactAriaComponents.RadioGroup, __spreadProps$8(__spreadValues$9({}, rest), { style: COMMON_STYLES }), ({ isDisabled, isReadOnly }) => withObservedValues$7(
@@ -3496,7 +3462,7 @@ function registerRadioGroup(loader, overrides) {
3496
3462
  displayName: "Initial value",
3497
3463
  uncontrolledProp: "defaultValue",
3498
3464
  description: "The current value",
3499
- options: (_props, ctx) => (ctx == null ? void 0 : ctx.values) ? Array.from(ctx.values) : [],
3465
+ options: (_props, ctx) => (ctx == null ? void 0 : ctx.itemIds) ? Array.from(ctx.itemIds) : [],
3500
3466
  multiSelect: false
3501
3467
  },
3502
3468
  isInvalid: {
@@ -3591,14 +3557,15 @@ function BaseSelect(props) {
3591
3557
  defaultSelectedKey,
3592
3558
  "aria-label": ariaLabel
3593
3559
  } = props;
3594
- const idManager = React.useMemo(() => new OptionsItemIdManager(), []);
3595
- React.useEffect(() => {
3596
- idManager.subscribe((ids) => {
3560
+ const updateIds = React.useCallback(
3561
+ (ids) => {
3597
3562
  setControlContextData == null ? void 0 : setControlContextData({
3598
3563
  itemIds: ids
3599
3564
  });
3600
- });
3601
- }, []);
3565
+ },
3566
+ [setControlContextData]
3567
+ );
3568
+ const idManager = useIdManager(updateIds);
3602
3569
  const classNameProp = React.useCallback(
3603
3570
  ({
3604
3571
  isDisabled: isDisabled2,