@plasmicpkgs/react-aria 0.0.49 → 0.0.50

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 (163) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/ListBoxItemIdManager.d.ts +13 -0
  3. package/dist/common.d.ts +0 -2
  4. package/dist/contexts.d.ts +4 -5
  5. package/dist/react-aria.esm.js +711 -843
  6. package/dist/react-aria.esm.js.map +1 -1
  7. package/dist/react-aria.js +709 -841
  8. package/dist/react-aria.js.map +1 -1
  9. package/dist/registerComboBox.d.ts +9 -17
  10. package/dist/registerListBox.d.ts +16 -6
  11. package/dist/registerListBoxItem.d.ts +13 -3
  12. package/dist/registerSection.d.ts +2 -4
  13. package/dist/registerSelect.d.ts +9 -18
  14. package/package.json +2 -2
  15. package/skinny/ListBoxItemIdManager.d.ts +13 -0
  16. package/skinny/{common-fa69e9b3.esm.js → common-8ca74873.esm.js} +4 -72
  17. package/skinny/common-8ca74873.esm.js.map +1 -0
  18. package/skinny/{common-bfedaf7d.cjs.js → common-c892c339.cjs.js} +4 -82
  19. package/skinny/common-c892c339.cjs.js.map +1 -0
  20. package/skinny/common.d.ts +0 -2
  21. package/skinny/contexts-0a2977d8.esm.js +15 -0
  22. package/skinny/contexts-0a2977d8.esm.js.map +1 -0
  23. package/skinny/{contexts-0dec6156.cjs.js → contexts-c26d68f8.cjs.js} +3 -9
  24. package/skinny/contexts-c26d68f8.cjs.js.map +1 -0
  25. package/skinny/contexts.d.ts +4 -5
  26. package/skinny/{interaction-variant-utils-abd0c319.esm.js → interaction-variant-utils-1d94d073.esm.js} +2 -2
  27. package/skinny/interaction-variant-utils-1d94d073.esm.js.map +1 -0
  28. package/skinny/{interaction-variant-utils-36f1b397.cjs.js → interaction-variant-utils-9a869063.cjs.js} +2 -2
  29. package/skinny/interaction-variant-utils-9a869063.cjs.js.map +1 -0
  30. package/skinny/registerButton.cjs.js +5 -4
  31. package/skinny/registerButton.cjs.js.map +1 -1
  32. package/skinny/registerButton.esm.js +3 -2
  33. package/skinny/registerButton.esm.js.map +1 -1
  34. package/skinny/registerCheckbox.cjs.js +6 -5
  35. package/skinny/registerCheckbox.cjs.js.map +1 -1
  36. package/skinny/registerCheckbox.esm.js +4 -3
  37. package/skinny/registerCheckbox.esm.js.map +1 -1
  38. package/skinny/registerCheckboxGroup.cjs.js +8 -7
  39. package/skinny/registerCheckboxGroup.cjs.js.map +1 -1
  40. package/skinny/registerCheckboxGroup.esm.js +5 -4
  41. package/skinny/registerCheckboxGroup.esm.js.map +1 -1
  42. package/skinny/registerComboBox.cjs.js +73 -253
  43. package/skinny/registerComboBox.cjs.js.map +1 -1
  44. package/skinny/registerComboBox.d.ts +9 -17
  45. package/skinny/registerComboBox.esm.js +74 -254
  46. package/skinny/registerComboBox.esm.js.map +1 -1
  47. package/skinny/registerDescription.cjs.js +2 -2
  48. package/skinny/registerDescription.cjs.js.map +1 -1
  49. package/skinny/registerDescription.esm.js +1 -1
  50. package/skinny/registerDialogTrigger.cjs.js +6 -5
  51. package/skinny/registerDialogTrigger.cjs.js.map +1 -1
  52. package/skinny/registerDialogTrigger.esm.js +4 -3
  53. package/skinny/registerDialogTrigger.esm.js.map +1 -1
  54. package/skinny/registerFieldError.cjs.js +3 -3
  55. package/skinny/registerFieldError.cjs.js.map +1 -1
  56. package/skinny/registerFieldError.esm.js +1 -1
  57. package/skinny/registerForm.cjs.js +3 -3
  58. package/skinny/registerForm.cjs.js.map +1 -1
  59. package/skinny/registerForm.esm.js +1 -1
  60. package/skinny/registerInput.cjs.js +7 -6
  61. package/skinny/registerInput.cjs.js.map +1 -1
  62. package/skinny/registerInput.esm.js +5 -4
  63. package/skinny/registerInput.esm.js.map +1 -1
  64. package/skinny/registerLabel.cjs.js +3 -3
  65. package/skinny/registerLabel.cjs.js.map +1 -1
  66. package/skinny/registerLabel.esm.js +1 -1
  67. package/skinny/registerListBox-85f61377.esm.js +321 -0
  68. package/skinny/registerListBox-85f61377.esm.js.map +1 -0
  69. package/skinny/registerListBox-96ae5783.cjs.js +331 -0
  70. package/skinny/registerListBox-96ae5783.cjs.js.map +1 -0
  71. package/skinny/registerListBox.cjs.js +7 -7
  72. package/skinny/registerListBox.d.ts +16 -6
  73. package/skinny/registerListBox.esm.js +6 -7
  74. package/skinny/registerListBox.esm.js.map +1 -1
  75. package/skinny/registerListBoxItem.cjs.js +96 -13
  76. package/skinny/registerListBoxItem.cjs.js.map +1 -1
  77. package/skinny/registerListBoxItem.d.ts +13 -3
  78. package/skinny/registerListBoxItem.esm.js +95 -12
  79. package/skinny/registerListBoxItem.esm.js.map +1 -1
  80. package/skinny/registerModal.cjs.js +5 -4
  81. package/skinny/registerModal.cjs.js.map +1 -1
  82. package/skinny/registerModal.esm.js +3 -2
  83. package/skinny/registerModal.esm.js.map +1 -1
  84. package/skinny/registerPopover.cjs.js +5 -6
  85. package/skinny/registerPopover.cjs.js.map +1 -1
  86. package/skinny/registerPopover.esm.js +3 -4
  87. package/skinny/registerPopover.esm.js.map +1 -1
  88. package/skinny/registerRadio.cjs.js +6 -5
  89. package/skinny/registerRadio.cjs.js.map +1 -1
  90. package/skinny/registerRadio.esm.js +4 -3
  91. package/skinny/registerRadio.esm.js.map +1 -1
  92. package/skinny/registerRadioGroup.cjs.js +8 -7
  93. package/skinny/registerRadioGroup.cjs.js.map +1 -1
  94. package/skinny/registerRadioGroup.esm.js +5 -4
  95. package/skinny/registerRadioGroup.esm.js.map +1 -1
  96. package/skinny/registerSection.cjs.js +30 -25
  97. package/skinny/registerSection.cjs.js.map +1 -1
  98. package/skinny/registerSection.d.ts +2 -4
  99. package/skinny/registerSection.esm.js +29 -24
  100. package/skinny/registerSection.esm.js.map +1 -1
  101. package/skinny/registerSelect.cjs.js +65 -88
  102. package/skinny/registerSelect.cjs.js.map +1 -1
  103. package/skinny/registerSelect.d.ts +9 -18
  104. package/skinny/registerSelect.esm.js +61 -84
  105. package/skinny/registerSelect.esm.js.map +1 -1
  106. package/skinny/registerSlider.cjs.js +9 -9
  107. package/skinny/registerSlider.cjs.js.map +1 -1
  108. package/skinny/registerSlider.esm.js +5 -5
  109. package/skinny/registerSliderOutput.cjs.js +4 -4
  110. package/skinny/registerSliderOutput.cjs.js.map +1 -1
  111. package/skinny/registerSliderOutput.esm.js +2 -2
  112. package/skinny/registerSliderThumb.cjs.js +23 -7
  113. package/skinny/registerSliderThumb.cjs.js.map +1 -1
  114. package/skinny/registerSliderThumb.esm.js +21 -5
  115. package/skinny/registerSliderThumb.esm.js.map +1 -1
  116. package/skinny/registerSliderTrack.cjs.js +7 -7
  117. package/skinny/registerSliderTrack.cjs.js.map +1 -1
  118. package/skinny/registerSliderTrack.esm.js +3 -3
  119. package/skinny/registerSwitch.cjs.js +6 -5
  120. package/skinny/registerSwitch.cjs.js.map +1 -1
  121. package/skinny/registerSwitch.esm.js +4 -3
  122. package/skinny/registerSwitch.esm.js.map +1 -1
  123. package/skinny/registerText.cjs.js +3 -3
  124. package/skinny/registerText.cjs.js.map +1 -1
  125. package/skinny/registerText.esm.js +1 -1
  126. package/skinny/registerTextArea.cjs.js +6 -5
  127. package/skinny/registerTextArea.cjs.js.map +1 -1
  128. package/skinny/registerTextArea.esm.js +4 -3
  129. package/skinny/registerTextArea.esm.js.map +1 -1
  130. package/skinny/registerTextField.cjs.js +8 -7
  131. package/skinny/registerTextField.cjs.js.map +1 -1
  132. package/skinny/registerTextField.esm.js +5 -4
  133. package/skinny/registerTextField.esm.js.map +1 -1
  134. package/skinny/registerTooltip.cjs.js +2 -2
  135. package/skinny/registerTooltip.cjs.js.map +1 -1
  136. package/skinny/registerTooltip.esm.js +1 -1
  137. package/skinny/utils-8dbb4d1f.cjs.js +79 -0
  138. package/skinny/utils-8dbb4d1f.cjs.js.map +1 -0
  139. package/skinny/utils-c7662a47.esm.js +69 -0
  140. package/skinny/utils-c7662a47.esm.js.map +1 -0
  141. package/dist/option-utils.d.ts +0 -42
  142. package/dist/registerHeader.d.ts +0 -5
  143. package/skinny/ErrorBoundary-c6b111d3.esm.js +0 -20
  144. package/skinny/ErrorBoundary-c6b111d3.esm.js.map +0 -1
  145. package/skinny/ErrorBoundary-e9b86248.cjs.js +0 -22
  146. package/skinny/ErrorBoundary-e9b86248.cjs.js.map +0 -1
  147. package/skinny/common-bfedaf7d.cjs.js.map +0 -1
  148. package/skinny/common-fa69e9b3.esm.js.map +0 -1
  149. package/skinny/contexts-0dec6156.cjs.js.map +0 -1
  150. package/skinny/contexts-9a8234bf.esm.js +0 -17
  151. package/skinny/contexts-9a8234bf.esm.js.map +0 -1
  152. package/skinny/interaction-variant-utils-36f1b397.cjs.js.map +0 -1
  153. package/skinny/interaction-variant-utils-abd0c319.esm.js.map +0 -1
  154. package/skinny/option-utils.d.ts +0 -42
  155. package/skinny/registerHeader.cjs.js +0 -55
  156. package/skinny/registerHeader.cjs.js.map +0 -1
  157. package/skinny/registerHeader.d.ts +0 -5
  158. package/skinny/registerHeader.esm.js +0 -48
  159. package/skinny/registerHeader.esm.js.map +0 -1
  160. package/skinny/registerListBox-b3f2891a.esm.js +0 -298
  161. package/skinny/registerListBox-b3f2891a.esm.js.map +0 -1
  162. package/skinny/registerListBox-f4801dbd.cjs.js +0 -310
  163. package/skinny/registerListBox-f4801dbd.cjs.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registerListBox-85f61377.esm.js","sources":["../src/ListBoxItemIdManager.ts","../src/registerListBox.tsx"],"sourcesContent":["type Observer = (ids: string[]) => void;\n\nexport class ListBoxItemIdManager {\n private readonly _ids: Set<string> = new Set();\n private readonly _observers: Set<Observer> = new Set();\n\n private generateDuplicateId(id: string, count = 1): string {\n const dupId = `${id} duplicate(${count})`;\n if (this._ids.has(dupId)) {\n return this.generateDuplicateId(id, count + 1);\n } else {\n return dupId;\n }\n }\n\n private generateMissingId(count = 1): string {\n const missingId = `missing(${count})`;\n if (this._ids.has(missingId)) {\n return this.generateMissingId(count + 1);\n } else {\n return missingId;\n }\n }\n\n register(id?: string): string {\n let newId: string;\n if (!id) {\n // No id is provided, so generate one\n newId = this.generateMissingId();\n } else if (this._ids.has(id)) {\n // The provided id is already registered with another uuid (i.e. it's not unique), so just generate a new one\n newId = this.generateDuplicateId(id);\n } else {\n // The provided id is not already registered, so use it\n newId = id;\n }\n\n this._ids.add(newId);\n this.notify();\n return newId;\n }\n\n unregister(id: string) {\n this._ids.delete(id);\n this.notify();\n }\n\n subscribe(observer: Observer) {\n this._observers.add(observer);\n }\n\n // Notify all observers about an event.\n notify() {\n this._observers.forEach((observer) => observer(this.ids));\n }\n\n get ids(): string[] {\n return Array.from(this._ids);\n }\n}\n","import React, { useEffect, useMemo, useState } from \"react\";\nimport { Key, ListBox } from \"react-aria-components\";\nimport { PlasmicListBoxContext } from \"./contexts\";\nimport { ListBoxItemIdManager } from \"./ListBoxItemIdManager\";\nimport {\n makeDefaultListBoxItemChildren,\n registerListBoxItem,\n} from \"./registerListBoxItem\";\nimport { registerSection } from \"./registerSection\";\nimport {\n CodeComponentMetaOverrides,\n HasControlContextData,\n makeComponentName,\n Registerable,\n registerComponentHelper,\n} from \"./utils\";\n\nexport interface BaseListBoxControlContextData {\n itemIds: string[];\n isStandalone: boolean;\n}\n\nexport interface BaseListBoxProps\n extends Omit<\n React.ComponentProps<typeof ListBox>,\n \"selectedKeys\" | \"defaultSelectedKeys\"\n >,\n HasControlContextData<BaseListBoxControlContextData> {\n children?: React.ReactNode;\n selectedKeys?: string | string[] | undefined;\n defaultSelectedKeys?: string | string[] | undefined;\n}\n\nexport const listboxHelpers = {\n states: {\n selectedKey: {\n onChangeArgsToValue: (value: Set<Key> | string[] | string) => {\n // only single selection is supported\n return Array.from(value)[0];\n },\n },\n },\n};\n\nfunction normalizeSelectedKeys(selectedKeys: string | string[] | undefined) {\n // Listbox expects it to be of type \"all\" | Iterable\n return typeof selectedKeys === \"string\" && selectedKeys !== \"all\"\n ? [selectedKeys]\n : selectedKeys;\n}\n\nexport function BaseListBox(props: BaseListBoxProps) {\n const {\n setControlContextData: setControlContextData,\n children,\n selectedKeys,\n defaultSelectedKeys,\n ...rest\n } = props;\n const context = React.useContext(PlasmicListBoxContext);\n const isStandalone = !context;\n const [ids, setIds] = useState<string[]>([]);\n\n const idManager = useMemo(\n () => context?.idManager ?? new ListBoxItemIdManager(),\n []\n );\n\n useEffect(() => {\n setControlContextData?.({\n itemIds: ids,\n isStandalone,\n });\n }, [ids, isStandalone]);\n\n useEffect(() => {\n idManager.subscribe((_ids: string[]) => {\n setIds(_ids);\n });\n }, []);\n\n const listbox = (\n <ListBox\n selectedKeys={normalizeSelectedKeys(selectedKeys)}\n defaultSelectedKeys={normalizeSelectedKeys(defaultSelectedKeys)}\n {...rest}\n >\n {children}\n </ListBox>\n );\n\n if (isStandalone) {\n return (\n <PlasmicListBoxContext.Provider\n value={{\n idManager,\n }}\n >\n {listbox}\n </PlasmicListBoxContext.Provider>\n );\n }\n\n return listbox;\n}\n\nexport const LIST_BOX_COMPONENT_NAME = makeComponentName(\"listbox\");\n\nexport function registerListBox(\n loader?: Registerable,\n overrides?: CodeComponentMetaOverrides<typeof BaseListBox>\n) {\n const listBoxItemMeta = registerListBoxItem(loader, {\n parentComponentName: LIST_BOX_COMPONENT_NAME,\n });\n const sectionMeta = registerSection(loader, {\n parentComponentName: LIST_BOX_COMPONENT_NAME,\n props: {\n items: {\n type: \"slot\",\n defaultValue: [\n {\n type: \"component\",\n name: listBoxItemMeta.name,\n props: {\n id: \"section-1-1\",\n textValue: \"Section1-Item 1\",\n children: [\n makeDefaultListBoxItemChildren(\n \"Item 1\",\n \"Add dynamic values to make it more interesting\"\n ),\n ],\n },\n },\n {\n type: \"component\",\n name: listBoxItemMeta.name,\n props: {\n id: \"section-1-2\",\n textValue: \"Section1-Item 2\",\n children: [\n makeDefaultListBoxItemChildren(\n \"Item 2\",\n \"Add dynamic values to make it more interesting\"\n ),\n ],\n },\n },\n {\n type: \"component\",\n name: listBoxItemMeta.name,\n props: {\n id: \"section-1-3\",\n textValue: \"Section1-Item 3\",\n children: [\n makeDefaultListBoxItemChildren(\n \"Item 3\",\n \"Add dynamic values to make it more interesting\"\n ),\n ],\n },\n },\n ],\n },\n },\n });\n\n registerComponentHelper(\n loader,\n BaseListBox,\n {\n name: LIST_BOX_COMPONENT_NAME,\n displayName: \"Aria ListBox\",\n importPath: \"@plasmicpkgs/react-aria/skinny/registerListBox\",\n importName: \"BaseListBox\",\n defaultStyles: {\n width: \"250px\",\n borderWidth: \"1px\",\n borderStyle: \"solid\",\n borderColor: \"black\",\n },\n props: {\n children: {\n type: \"slot\",\n displayName: \"List Items\",\n allowedComponents: [listBoxItemMeta.name, sectionMeta.name],\n allowRootWrapper: true,\n defaultValue: [\n {\n type: \"component\",\n name: listBoxItemMeta.name,\n props: {\n id: \"1\",\n textValue: \"Item 1\",\n children: [\n makeDefaultListBoxItemChildren(\n \"Item 1\",\n \"Add dynamic values to make it more interesting\"\n ),\n ],\n },\n },\n {\n type: \"component\",\n name: listBoxItemMeta.name,\n props: {\n id: \"2\",\n textValue: \"Item 2\",\n children: [\n makeDefaultListBoxItemChildren(\n \"Item 2\",\n \"Add dynamic values to make it more interesting\"\n ),\n ],\n },\n },\n {\n type: \"component\",\n name: listBoxItemMeta.name,\n props: {\n id: \"3\",\n textValue: \"Item 3\",\n children: [\n makeDefaultListBoxItemChildren(\n \"Item 3\",\n \"Add dynamic values to make it more interesting\"\n ),\n ],\n },\n },\n {\n type: \"component\",\n name: sectionMeta.name,\n },\n ],\n },\n selectionMode: {\n type: \"choice\",\n description: \"The selection mode of the listbox\",\n options: [\"none\", \"single\"],\n defaultValue: \"none\",\n hidden: (_props, ctx) => !ctx?.isStandalone,\n },\n selectedKeys: {\n type: \"choice\",\n description: \"The selected keys of the listbox\",\n editOnly: true,\n uncontrolledProp: \"defaultSelectedKeys\",\n displayName: \"Initial selected key\",\n options: (_props, ctx) =>\n ctx?.itemIds ? Array.from(ctx.itemIds) : [],\n hidden: (props, ctx) =>\n !ctx?.isStandalone || props.selectionMode === \"none\",\n // We do not support multiple selections yet (Because React Aria select and combobox only support single selections).\n multiSelect: false,\n },\n onSelectionChange: {\n type: \"eventHandler\",\n argTypes: [{ name: \"itemIds\", type: \"object\" }],\n },\n },\n states: {\n selectedKey: {\n type: \"writable\",\n valueProp: \"selectedKeys\",\n onChangeProp: \"onSelectionChange\",\n variableType: \"text\",\n ...listboxHelpers.states.selectedKey,\n },\n },\n componentHelpers: {\n helpers: listboxHelpers,\n importName: \"listboxHelpers\",\n importPath: \"@plasmicpkgs/react-aria/skinny/registerListBox\",\n },\n trapsFocus: true,\n },\n overrides\n );\n}\n"],"names":["_a"],"mappings":"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"}
@@ -0,0 +1,331 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+ var reactAriaComponents = require('react-aria-components');
5
+ var contexts = require('./contexts-c26d68f8.cjs.js');
6
+ var registerListBoxItem = require('./registerListBoxItem.cjs.js');
7
+ var registerSection = require('./registerSection.cjs.js');
8
+ var utils = require('./utils-8dbb4d1f.cjs.js');
9
+
10
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
11
+
12
+ var React__default = /*#__PURE__*/_interopDefault(React);
13
+
14
+ class ListBoxItemIdManager {
15
+ constructor() {
16
+ this._ids = /* @__PURE__ */ new Set();
17
+ this._observers = /* @__PURE__ */ new Set();
18
+ }
19
+ generateDuplicateId(id, count = 1) {
20
+ const dupId = `${id} duplicate(${count})`;
21
+ if (this._ids.has(dupId)) {
22
+ return this.generateDuplicateId(id, count + 1);
23
+ } else {
24
+ return dupId;
25
+ }
26
+ }
27
+ generateMissingId(count = 1) {
28
+ const missingId = `missing(${count})`;
29
+ if (this._ids.has(missingId)) {
30
+ return this.generateMissingId(count + 1);
31
+ } else {
32
+ return missingId;
33
+ }
34
+ }
35
+ register(id) {
36
+ let newId;
37
+ if (!id) {
38
+ newId = this.generateMissingId();
39
+ } else if (this._ids.has(id)) {
40
+ newId = this.generateDuplicateId(id);
41
+ } else {
42
+ newId = id;
43
+ }
44
+ this._ids.add(newId);
45
+ this.notify();
46
+ return newId;
47
+ }
48
+ unregister(id) {
49
+ this._ids.delete(id);
50
+ this.notify();
51
+ }
52
+ subscribe(observer) {
53
+ this._observers.add(observer);
54
+ }
55
+ // Notify all observers about an event.
56
+ notify() {
57
+ this._observers.forEach((observer) => observer(this.ids));
58
+ }
59
+ get ids() {
60
+ return Array.from(this._ids);
61
+ }
62
+ }
63
+
64
+ var __defProp = Object.defineProperty;
65
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
66
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
67
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
68
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
69
+ var __spreadValues = (a, b) => {
70
+ for (var prop in b || (b = {}))
71
+ if (__hasOwnProp.call(b, prop))
72
+ __defNormalProp(a, prop, b[prop]);
73
+ if (__getOwnPropSymbols)
74
+ for (var prop of __getOwnPropSymbols(b)) {
75
+ if (__propIsEnum.call(b, prop))
76
+ __defNormalProp(a, prop, b[prop]);
77
+ }
78
+ return a;
79
+ };
80
+ var __objRest = (source, exclude) => {
81
+ var target = {};
82
+ for (var prop in source)
83
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
84
+ target[prop] = source[prop];
85
+ if (source != null && __getOwnPropSymbols)
86
+ for (var prop of __getOwnPropSymbols(source)) {
87
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
88
+ target[prop] = source[prop];
89
+ }
90
+ return target;
91
+ };
92
+ const listboxHelpers = {
93
+ states: {
94
+ selectedKey: {
95
+ onChangeArgsToValue: (value) => {
96
+ return Array.from(value)[0];
97
+ }
98
+ }
99
+ }
100
+ };
101
+ function normalizeSelectedKeys(selectedKeys) {
102
+ return typeof selectedKeys === "string" && selectedKeys !== "all" ? [selectedKeys] : selectedKeys;
103
+ }
104
+ function BaseListBox(props) {
105
+ const _a = props, {
106
+ setControlContextData,
107
+ children,
108
+ selectedKeys,
109
+ defaultSelectedKeys
110
+ } = _a, rest = __objRest(_a, [
111
+ "setControlContextData",
112
+ "children",
113
+ "selectedKeys",
114
+ "defaultSelectedKeys"
115
+ ]);
116
+ const context = React__default.default.useContext(contexts.PlasmicListBoxContext);
117
+ const isStandalone = !context;
118
+ const [ids, setIds] = React.useState([]);
119
+ const idManager = React.useMemo(
120
+ () => {
121
+ var _a2;
122
+ return (_a2 = context == null ? void 0 : context.idManager) != null ? _a2 : new ListBoxItemIdManager();
123
+ },
124
+ []
125
+ );
126
+ React.useEffect(() => {
127
+ setControlContextData == null ? void 0 : setControlContextData({
128
+ itemIds: ids,
129
+ isStandalone
130
+ });
131
+ }, [ids, isStandalone]);
132
+ React.useEffect(() => {
133
+ idManager.subscribe((_ids) => {
134
+ setIds(_ids);
135
+ });
136
+ }, []);
137
+ const listbox = /* @__PURE__ */ React__default.default.createElement(
138
+ reactAriaComponents.ListBox,
139
+ __spreadValues({
140
+ selectedKeys: normalizeSelectedKeys(selectedKeys),
141
+ defaultSelectedKeys: normalizeSelectedKeys(defaultSelectedKeys)
142
+ }, rest),
143
+ children
144
+ );
145
+ if (isStandalone) {
146
+ return /* @__PURE__ */ React__default.default.createElement(
147
+ contexts.PlasmicListBoxContext.Provider,
148
+ {
149
+ value: {
150
+ idManager
151
+ }
152
+ },
153
+ listbox
154
+ );
155
+ }
156
+ return listbox;
157
+ }
158
+ const LIST_BOX_COMPONENT_NAME = utils.makeComponentName("listbox");
159
+ function registerListBox(loader, overrides) {
160
+ const listBoxItemMeta = registerListBoxItem.registerListBoxItem(loader, {
161
+ parentComponentName: LIST_BOX_COMPONENT_NAME
162
+ });
163
+ const sectionMeta = registerSection.registerSection(loader, {
164
+ parentComponentName: LIST_BOX_COMPONENT_NAME,
165
+ props: {
166
+ items: {
167
+ type: "slot",
168
+ defaultValue: [
169
+ {
170
+ type: "component",
171
+ name: listBoxItemMeta.name,
172
+ props: {
173
+ id: "section-1-1",
174
+ textValue: "Section1-Item 1",
175
+ children: [
176
+ registerListBoxItem.makeDefaultListBoxItemChildren(
177
+ "Item 1",
178
+ "Add dynamic values to make it more interesting"
179
+ )
180
+ ]
181
+ }
182
+ },
183
+ {
184
+ type: "component",
185
+ name: listBoxItemMeta.name,
186
+ props: {
187
+ id: "section-1-2",
188
+ textValue: "Section1-Item 2",
189
+ children: [
190
+ registerListBoxItem.makeDefaultListBoxItemChildren(
191
+ "Item 2",
192
+ "Add dynamic values to make it more interesting"
193
+ )
194
+ ]
195
+ }
196
+ },
197
+ {
198
+ type: "component",
199
+ name: listBoxItemMeta.name,
200
+ props: {
201
+ id: "section-1-3",
202
+ textValue: "Section1-Item 3",
203
+ children: [
204
+ registerListBoxItem.makeDefaultListBoxItemChildren(
205
+ "Item 3",
206
+ "Add dynamic values to make it more interesting"
207
+ )
208
+ ]
209
+ }
210
+ }
211
+ ]
212
+ }
213
+ }
214
+ });
215
+ utils.registerComponentHelper(
216
+ loader,
217
+ BaseListBox,
218
+ {
219
+ name: LIST_BOX_COMPONENT_NAME,
220
+ displayName: "Aria ListBox",
221
+ importPath: "@plasmicpkgs/react-aria/skinny/registerListBox",
222
+ importName: "BaseListBox",
223
+ defaultStyles: {
224
+ width: "250px",
225
+ borderWidth: "1px",
226
+ borderStyle: "solid",
227
+ borderColor: "black"
228
+ },
229
+ props: {
230
+ children: {
231
+ type: "slot",
232
+ displayName: "List Items",
233
+ allowedComponents: [listBoxItemMeta.name, sectionMeta.name],
234
+ allowRootWrapper: true,
235
+ defaultValue: [
236
+ {
237
+ type: "component",
238
+ name: listBoxItemMeta.name,
239
+ props: {
240
+ id: "1",
241
+ textValue: "Item 1",
242
+ children: [
243
+ registerListBoxItem.makeDefaultListBoxItemChildren(
244
+ "Item 1",
245
+ "Add dynamic values to make it more interesting"
246
+ )
247
+ ]
248
+ }
249
+ },
250
+ {
251
+ type: "component",
252
+ name: listBoxItemMeta.name,
253
+ props: {
254
+ id: "2",
255
+ textValue: "Item 2",
256
+ children: [
257
+ registerListBoxItem.makeDefaultListBoxItemChildren(
258
+ "Item 2",
259
+ "Add dynamic values to make it more interesting"
260
+ )
261
+ ]
262
+ }
263
+ },
264
+ {
265
+ type: "component",
266
+ name: listBoxItemMeta.name,
267
+ props: {
268
+ id: "3",
269
+ textValue: "Item 3",
270
+ children: [
271
+ registerListBoxItem.makeDefaultListBoxItemChildren(
272
+ "Item 3",
273
+ "Add dynamic values to make it more interesting"
274
+ )
275
+ ]
276
+ }
277
+ },
278
+ {
279
+ type: "component",
280
+ name: sectionMeta.name
281
+ }
282
+ ]
283
+ },
284
+ selectionMode: {
285
+ type: "choice",
286
+ description: "The selection mode of the listbox",
287
+ options: ["none", "single"],
288
+ defaultValue: "none",
289
+ hidden: (_props, ctx) => !(ctx == null ? void 0 : ctx.isStandalone)
290
+ },
291
+ selectedKeys: {
292
+ type: "choice",
293
+ description: "The selected keys of the listbox",
294
+ editOnly: true,
295
+ uncontrolledProp: "defaultSelectedKeys",
296
+ displayName: "Initial selected key",
297
+ options: (_props, ctx) => (ctx == null ? void 0 : ctx.itemIds) ? Array.from(ctx.itemIds) : [],
298
+ hidden: (props, ctx) => !(ctx == null ? void 0 : ctx.isStandalone) || props.selectionMode === "none",
299
+ // We do not support multiple selections yet (Because React Aria select and combobox only support single selections).
300
+ multiSelect: false
301
+ },
302
+ onSelectionChange: {
303
+ type: "eventHandler",
304
+ argTypes: [{ name: "itemIds", type: "object" }]
305
+ }
306
+ },
307
+ states: {
308
+ selectedKey: __spreadValues({
309
+ type: "writable",
310
+ valueProp: "selectedKeys",
311
+ onChangeProp: "onSelectionChange",
312
+ variableType: "text"
313
+ }, listboxHelpers.states.selectedKey)
314
+ },
315
+ componentHelpers: {
316
+ helpers: listboxHelpers,
317
+ importName: "listboxHelpers",
318
+ importPath: "@plasmicpkgs/react-aria/skinny/registerListBox"
319
+ },
320
+ trapsFocus: true
321
+ },
322
+ overrides
323
+ );
324
+ }
325
+
326
+ exports.BaseListBox = BaseListBox;
327
+ exports.LIST_BOX_COMPONENT_NAME = LIST_BOX_COMPONENT_NAME;
328
+ exports.ListBoxItemIdManager = ListBoxItemIdManager;
329
+ exports.listboxHelpers = listboxHelpers;
330
+ exports.registerListBox = registerListBox;
331
+ //# sourceMappingURL=registerListBox-96ae5783.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registerListBox-96ae5783.cjs.js","sources":["../src/ListBoxItemIdManager.ts","../src/registerListBox.tsx"],"sourcesContent":["type Observer = (ids: string[]) => void;\n\nexport class ListBoxItemIdManager {\n private readonly _ids: Set<string> = new Set();\n private readonly _observers: Set<Observer> = new Set();\n\n private generateDuplicateId(id: string, count = 1): string {\n const dupId = `${id} duplicate(${count})`;\n if (this._ids.has(dupId)) {\n return this.generateDuplicateId(id, count + 1);\n } else {\n return dupId;\n }\n }\n\n private generateMissingId(count = 1): string {\n const missingId = `missing(${count})`;\n if (this._ids.has(missingId)) {\n return this.generateMissingId(count + 1);\n } else {\n return missingId;\n }\n }\n\n register(id?: string): string {\n let newId: string;\n if (!id) {\n // No id is provided, so generate one\n newId = this.generateMissingId();\n } else if (this._ids.has(id)) {\n // The provided id is already registered with another uuid (i.e. it's not unique), so just generate a new one\n newId = this.generateDuplicateId(id);\n } else {\n // The provided id is not already registered, so use it\n newId = id;\n }\n\n this._ids.add(newId);\n this.notify();\n return newId;\n }\n\n unregister(id: string) {\n this._ids.delete(id);\n this.notify();\n }\n\n subscribe(observer: Observer) {\n this._observers.add(observer);\n }\n\n // Notify all observers about an event.\n notify() {\n this._observers.forEach((observer) => observer(this.ids));\n }\n\n get ids(): string[] {\n return Array.from(this._ids);\n }\n}\n","import React, { useEffect, useMemo, useState } from \"react\";\nimport { Key, ListBox } from \"react-aria-components\";\nimport { PlasmicListBoxContext } from \"./contexts\";\nimport { ListBoxItemIdManager } from \"./ListBoxItemIdManager\";\nimport {\n makeDefaultListBoxItemChildren,\n registerListBoxItem,\n} from \"./registerListBoxItem\";\nimport { registerSection } from \"./registerSection\";\nimport {\n CodeComponentMetaOverrides,\n HasControlContextData,\n makeComponentName,\n Registerable,\n registerComponentHelper,\n} from \"./utils\";\n\nexport interface BaseListBoxControlContextData {\n itemIds: string[];\n isStandalone: boolean;\n}\n\nexport interface BaseListBoxProps\n extends Omit<\n React.ComponentProps<typeof ListBox>,\n \"selectedKeys\" | \"defaultSelectedKeys\"\n >,\n HasControlContextData<BaseListBoxControlContextData> {\n children?: React.ReactNode;\n selectedKeys?: string | string[] | undefined;\n defaultSelectedKeys?: string | string[] | undefined;\n}\n\nexport const listboxHelpers = {\n states: {\n selectedKey: {\n onChangeArgsToValue: (value: Set<Key> | string[] | string) => {\n // only single selection is supported\n return Array.from(value)[0];\n },\n },\n },\n};\n\nfunction normalizeSelectedKeys(selectedKeys: string | string[] | undefined) {\n // Listbox expects it to be of type \"all\" | Iterable\n return typeof selectedKeys === \"string\" && selectedKeys !== \"all\"\n ? [selectedKeys]\n : selectedKeys;\n}\n\nexport function BaseListBox(props: BaseListBoxProps) {\n const {\n setControlContextData: setControlContextData,\n children,\n selectedKeys,\n defaultSelectedKeys,\n ...rest\n } = props;\n const context = React.useContext(PlasmicListBoxContext);\n const isStandalone = !context;\n const [ids, setIds] = useState<string[]>([]);\n\n const idManager = useMemo(\n () => context?.idManager ?? new ListBoxItemIdManager(),\n []\n );\n\n useEffect(() => {\n setControlContextData?.({\n itemIds: ids,\n isStandalone,\n });\n }, [ids, isStandalone]);\n\n useEffect(() => {\n idManager.subscribe((_ids: string[]) => {\n setIds(_ids);\n });\n }, []);\n\n const listbox = (\n <ListBox\n selectedKeys={normalizeSelectedKeys(selectedKeys)}\n defaultSelectedKeys={normalizeSelectedKeys(defaultSelectedKeys)}\n {...rest}\n >\n {children}\n </ListBox>\n );\n\n if (isStandalone) {\n return (\n <PlasmicListBoxContext.Provider\n value={{\n idManager,\n }}\n >\n {listbox}\n </PlasmicListBoxContext.Provider>\n );\n }\n\n return listbox;\n}\n\nexport const LIST_BOX_COMPONENT_NAME = makeComponentName(\"listbox\");\n\nexport function registerListBox(\n loader?: Registerable,\n overrides?: CodeComponentMetaOverrides<typeof BaseListBox>\n) {\n const listBoxItemMeta = registerListBoxItem(loader, {\n parentComponentName: LIST_BOX_COMPONENT_NAME,\n });\n const sectionMeta = registerSection(loader, {\n parentComponentName: LIST_BOX_COMPONENT_NAME,\n props: {\n items: {\n type: \"slot\",\n defaultValue: [\n {\n type: \"component\",\n name: listBoxItemMeta.name,\n props: {\n id: \"section-1-1\",\n textValue: \"Section1-Item 1\",\n children: [\n makeDefaultListBoxItemChildren(\n \"Item 1\",\n \"Add dynamic values to make it more interesting\"\n ),\n ],\n },\n },\n {\n type: \"component\",\n name: listBoxItemMeta.name,\n props: {\n id: \"section-1-2\",\n textValue: \"Section1-Item 2\",\n children: [\n makeDefaultListBoxItemChildren(\n \"Item 2\",\n \"Add dynamic values to make it more interesting\"\n ),\n ],\n },\n },\n {\n type: \"component\",\n name: listBoxItemMeta.name,\n props: {\n id: \"section-1-3\",\n textValue: \"Section1-Item 3\",\n children: [\n makeDefaultListBoxItemChildren(\n \"Item 3\",\n \"Add dynamic values to make it more interesting\"\n ),\n ],\n },\n },\n ],\n },\n },\n });\n\n registerComponentHelper(\n loader,\n BaseListBox,\n {\n name: LIST_BOX_COMPONENT_NAME,\n displayName: \"Aria ListBox\",\n importPath: \"@plasmicpkgs/react-aria/skinny/registerListBox\",\n importName: \"BaseListBox\",\n defaultStyles: {\n width: \"250px\",\n borderWidth: \"1px\",\n borderStyle: \"solid\",\n borderColor: \"black\",\n },\n props: {\n children: {\n type: \"slot\",\n displayName: \"List Items\",\n allowedComponents: [listBoxItemMeta.name, sectionMeta.name],\n allowRootWrapper: true,\n defaultValue: [\n {\n type: \"component\",\n name: listBoxItemMeta.name,\n props: {\n id: \"1\",\n textValue: \"Item 1\",\n children: [\n makeDefaultListBoxItemChildren(\n \"Item 1\",\n \"Add dynamic values to make it more interesting\"\n ),\n ],\n },\n },\n {\n type: \"component\",\n name: listBoxItemMeta.name,\n props: {\n id: \"2\",\n textValue: \"Item 2\",\n children: [\n makeDefaultListBoxItemChildren(\n \"Item 2\",\n \"Add dynamic values to make it more interesting\"\n ),\n ],\n },\n },\n {\n type: \"component\",\n name: listBoxItemMeta.name,\n props: {\n id: \"3\",\n textValue: \"Item 3\",\n children: [\n makeDefaultListBoxItemChildren(\n \"Item 3\",\n \"Add dynamic values to make it more interesting\"\n ),\n ],\n },\n },\n {\n type: \"component\",\n name: sectionMeta.name,\n },\n ],\n },\n selectionMode: {\n type: \"choice\",\n description: \"The selection mode of the listbox\",\n options: [\"none\", \"single\"],\n defaultValue: \"none\",\n hidden: (_props, ctx) => !ctx?.isStandalone,\n },\n selectedKeys: {\n type: \"choice\",\n description: \"The selected keys of the listbox\",\n editOnly: true,\n uncontrolledProp: \"defaultSelectedKeys\",\n displayName: \"Initial selected key\",\n options: (_props, ctx) =>\n ctx?.itemIds ? Array.from(ctx.itemIds) : [],\n hidden: (props, ctx) =>\n !ctx?.isStandalone || props.selectionMode === \"none\",\n // We do not support multiple selections yet (Because React Aria select and combobox only support single selections).\n multiSelect: false,\n },\n onSelectionChange: {\n type: \"eventHandler\",\n argTypes: [{ name: \"itemIds\", type: \"object\" }],\n },\n },\n states: {\n selectedKey: {\n type: \"writable\",\n valueProp: \"selectedKeys\",\n onChangeProp: \"onSelectionChange\",\n variableType: \"text\",\n ...listboxHelpers.states.selectedKey,\n },\n },\n componentHelpers: {\n helpers: listboxHelpers,\n importName: \"listboxHelpers\",\n importPath: \"@plasmicpkgs/react-aria/skinny/registerListBox\",\n },\n trapsFocus: true,\n },\n overrides\n );\n}\n"],"names":["React","PlasmicListBoxContext","useState","useMemo","_a","useEffect","ListBox","makeComponentName","registerListBoxItem","registerSection","makeDefaultListBoxItemChildren","registerComponentHelper"],"mappings":"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"}
@@ -1,22 +1,22 @@
1
1
  'use strict';
2
2
 
3
- require('@react-aria/utils');
4
3
  require('react');
5
4
  require('react-aria-components');
6
- require('./common-bfedaf7d.cjs.js');
7
- require('./contexts-0dec6156.cjs.js');
8
- var registerListBox = require('./registerListBox-f4801dbd.cjs.js');
5
+ require('./contexts-c26d68f8.cjs.js');
6
+ var registerListBox = require('./registerListBox-96ae5783.cjs.js');
9
7
  require('./registerListBoxItem.cjs.js');
10
8
  require('./registerSection.cjs.js');
11
- require('@plasmicapp/host/registerComponent');
12
- require('./ErrorBoundary-e9b86248.cjs.js');
9
+ require('./utils-8dbb4d1f.cjs.js');
10
+ require('./interaction-variant-utils-9a869063.cjs.js');
13
11
  require('./registerDescription.cjs.js');
14
12
  require('./registerText.cjs.js');
15
- require('./registerHeader.cjs.js');
13
+ require('@plasmicapp/host/registerComponent');
14
+ require('@react-aria/utils');
16
15
 
17
16
 
18
17
 
19
18
  exports.BaseListBox = registerListBox.BaseListBox;
20
19
  exports.LIST_BOX_COMPONENT_NAME = registerListBox.LIST_BOX_COMPONENT_NAME;
20
+ exports.listboxHelpers = registerListBox.listboxHelpers;
21
21
  exports.registerListBox = registerListBox.registerListBox;
22
22
  //# sourceMappingURL=registerListBox.cjs.js.map
@@ -1,12 +1,22 @@
1
1
  import React from "react";
2
- import { ListBox } from "react-aria-components";
3
- import { HasOptions } from "./option-utils";
2
+ import { Key, ListBox } from "react-aria-components";
4
3
  import { CodeComponentMetaOverrides, HasControlContextData, Registerable } from "./utils";
5
- export interface BaseListBoxProps extends React.ComponentProps<typeof ListBox>, HasOptions<any>, HasControlContextData {
6
- renderItem?: (item: any) => React.ReactNode;
7
- renderSection?: (section: any) => React.ReactNode;
8
- getItemType?: (thing: any) => "item" | "section";
4
+ export interface BaseListBoxControlContextData {
5
+ itemIds: string[];
6
+ isStandalone: boolean;
9
7
  }
8
+ export interface BaseListBoxProps extends Omit<React.ComponentProps<typeof ListBox>, "selectedKeys" | "defaultSelectedKeys">, HasControlContextData<BaseListBoxControlContextData> {
9
+ children?: React.ReactNode;
10
+ selectedKeys?: string | string[] | undefined;
11
+ defaultSelectedKeys?: string | string[] | undefined;
12
+ }
13
+ export declare const listboxHelpers: {
14
+ states: {
15
+ selectedKey: {
16
+ onChangeArgsToValue: (value: Set<Key> | string[] | string) => Key;
17
+ };
18
+ };
19
+ };
10
20
  export declare function BaseListBox(props: BaseListBoxProps): React.JSX.Element;
11
21
  export declare const LIST_BOX_COMPONENT_NAME: string;
12
22
  export declare function registerListBox(loader?: Registerable, overrides?: CodeComponentMetaOverrides<typeof BaseListBox>): void;
@@ -1,14 +1,13 @@
1
- import '@react-aria/utils';
2
1
  import 'react';
3
2
  import 'react-aria-components';
4
- import './common-fa69e9b3.esm.js';
5
- import './contexts-9a8234bf.esm.js';
6
- export { B as BaseListBox, L as LIST_BOX_COMPONENT_NAME, r as registerListBox } from './registerListBox-b3f2891a.esm.js';
3
+ import './contexts-0a2977d8.esm.js';
4
+ export { B as BaseListBox, a as LIST_BOX_COMPONENT_NAME, l as listboxHelpers, r as registerListBox } from './registerListBox-85f61377.esm.js';
7
5
  import './registerListBoxItem.esm.js';
8
6
  import './registerSection.esm.js';
9
- import '@plasmicapp/host/registerComponent';
10
- import './ErrorBoundary-c6b111d3.esm.js';
7
+ import './utils-c7662a47.esm.js';
8
+ import './interaction-variant-utils-1d94d073.esm.js';
11
9
  import './registerDescription.esm.js';
12
10
  import './registerText.esm.js';
13
- import './registerHeader.esm.js';
11
+ import '@plasmicapp/host/registerComponent';
12
+ import '@react-aria/utils';
14
13
  //# sourceMappingURL=registerListBox.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"registerListBox.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;"}
1
+ {"version":3,"file":"registerListBox.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;"}
@@ -1,13 +1,12 @@
1
1
  'use strict';
2
2
 
3
- var utils = require('@react-aria/utils');
4
3
  var React = require('react');
5
4
  var reactAriaComponents = require('react-aria-components');
6
- var contexts = require('./contexts-0dec6156.cjs.js');
7
- var ErrorBoundary = require('./ErrorBoundary-e9b86248.cjs.js');
5
+ var contexts = require('./contexts-c26d68f8.cjs.js');
6
+ var interactionVariantUtils = require('./interaction-variant-utils-9a869063.cjs.js');
8
7
  var registerDescription = require('./registerDescription.cjs.js');
9
8
  var registerText = require('./registerText.cjs.js');
10
- var common = require('./common-bfedaf7d.cjs.js');
9
+ var utils = require('./utils-8dbb4d1f.cjs.js');
11
10
  require('@plasmicapp/host/registerComponent');
12
11
 
13
12
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
@@ -15,8 +14,6 @@ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
15
14
  var React__default = /*#__PURE__*/_interopDefault(React);
16
15
 
17
16
  var __defProp = Object.defineProperty;
18
- var __defProps = Object.defineProperties;
19
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
20
17
  var __getOwnPropSymbols = Object.getOwnPropertySymbols;
21
18
  var __hasOwnProp = Object.prototype.hasOwnProperty;
22
19
  var __propIsEnum = Object.prototype.propertyIsEnumerable;
@@ -32,12 +29,82 @@ var __spreadValues = (a, b) => {
32
29
  }
33
30
  return a;
34
31
  };
35
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
32
+ var __objRest = (source, exclude) => {
33
+ var target = {};
34
+ for (var prop in source)
35
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
36
+ target[prop] = source[prop];
37
+ if (source != null && __getOwnPropSymbols)
38
+ for (var prop of __getOwnPropSymbols(source)) {
39
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
40
+ target[prop] = source[prop];
41
+ }
42
+ return target;
43
+ };
44
+ const LIST_BOX_ITEM_INTERACTION_VARIANTS = [
45
+ "hovered",
46
+ "pressed",
47
+ "focused",
48
+ "focusVisible",
49
+ "selected",
50
+ "disabled"
51
+ ];
52
+ const { interactionVariants, withObservedValues } = interactionVariantUtils.pickAriaComponentVariants(
53
+ LIST_BOX_ITEM_INTERACTION_VARIANTS
54
+ );
36
55
  function BaseListBoxItem(props) {
37
- const contextProps = React__default.default.useContext(contexts.PlasmicItemContext);
38
- const mergedProps = utils.mergeProps(contextProps, props);
39
- const listboxItem = /* @__PURE__ */ React__default.default.createElement(reactAriaComponents.ListBoxItem, __spreadProps(__spreadValues({}, mergedProps), { textValue: contextProps == null ? void 0 : contextProps.label }), mergedProps.children);
40
- return /* @__PURE__ */ React__default.default.createElement(ErrorBoundary.ErrorBoundary, { fallback: /* @__PURE__ */ React__default.default.createElement(reactAriaComponents.ListBox, null, listboxItem) }, listboxItem);
56
+ const _a = props, {
57
+ children,
58
+ setControlContextData,
59
+ updateInteractionVariant,
60
+ id
61
+ } = _a, rest = __objRest(_a, [
62
+ "children",
63
+ "setControlContextData",
64
+ "updateInteractionVariant",
65
+ "id"
66
+ ]);
67
+ const listboxContext = React__default.default.useContext(contexts.PlasmicListBoxContext);
68
+ const isStandalone = !listboxContext;
69
+ const [registeredId, setRegisteredId] = React.useState();
70
+ React.useEffect(() => {
71
+ if (!listboxContext) {
72
+ return;
73
+ }
74
+ const localId = listboxContext.idManager.register(id);
75
+ setRegisteredId(localId);
76
+ return () => {
77
+ listboxContext.idManager.unregister(localId);
78
+ setRegisteredId(void 0);
79
+ };
80
+ }, [id]);
81
+ setControlContextData == null ? void 0 : setControlContextData({
82
+ // this means that a unique id was registered, different from the provided id
83
+ hasDuplicateId: !isStandalone && id !== registeredId
84
+ });
85
+ const listboxItem = /* @__PURE__ */ React__default.default.createElement(reactAriaComponents.ListBoxItem, __spreadValues({ key: registeredId, id: registeredId }, rest), ({
86
+ isHovered,
87
+ isPressed,
88
+ isFocused,
89
+ isFocusVisible,
90
+ isSelected,
91
+ isDisabled
92
+ }) => withObservedValues(
93
+ children,
94
+ {
95
+ hovered: isHovered,
96
+ pressed: isPressed,
97
+ focused: isFocused,
98
+ focusVisible: isFocusVisible,
99
+ selected: isSelected,
100
+ disabled: isDisabled
101
+ },
102
+ updateInteractionVariant
103
+ ));
104
+ if (isStandalone) {
105
+ return /* @__PURE__ */ React__default.default.createElement(reactAriaComponents.ListBox, { selectionMode: "single" }, listboxItem);
106
+ }
107
+ return listboxItem;
41
108
  }
42
109
  const makeDefaultListBoxItemChildren = (label, description) => ({
43
110
  type: "vbox",
@@ -77,15 +144,31 @@ const makeDefaultListBoxItemChildren = (label, description) => ({
77
144
  ]
78
145
  });
79
146
  function registerListBoxItem(loader, overrides) {
80
- return common.registerComponentHelper(
147
+ return utils.registerComponentHelper(
81
148
  loader,
82
149
  BaseListBoxItem,
83
150
  {
84
- name: common.makeComponentName("item"),
151
+ name: utils.makeComponentName("item"),
85
152
  displayName: "Aria ListBoxItem",
86
153
  importPath: "@plasmicpkgs/react-aria/skinny/registerListBoxItem",
87
154
  importName: "BaseListBoxItem",
155
+ interactionVariants,
88
156
  props: {
157
+ id: {
158
+ type: "string",
159
+ description: "The id of the item",
160
+ required: true,
161
+ validator: (_value, _props, ctx) => {
162
+ if (ctx == null ? void 0 : ctx.hasDuplicateId) {
163
+ return "Please make sure the id is unique!";
164
+ }
165
+ return true;
166
+ }
167
+ },
168
+ textValue: {
169
+ type: "string",
170
+ description: "A text representation of the item's contents, used for features like typeahead."
171
+ },
89
172
  children: {
90
173
  type: "slot",
91
174
  defaultValue: makeDefaultListBoxItemChildren("Item")