@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
@@ -3,20 +3,19 @@
3
3
  var host = require('@plasmicapp/host');
4
4
  var React = require('react');
5
5
  var reactAriaComponents = require('react-aria-components');
6
- var contexts = require('./contexts-0dec6156.cjs.js');
7
- var registerListBox = require('./registerListBox-f4801dbd.cjs.js');
6
+ var common = require('./common-c892c339.cjs.js');
7
+ var contexts = require('./contexts-c26d68f8.cjs.js');
8
+ var registerListBox = require('./registerListBox-96ae5783.cjs.js');
8
9
  var registerButton = require('./registerButton.cjs.js');
9
10
  var registerLabel = require('./registerLabel.cjs.js');
10
11
  var registerPopover = require('./registerPopover.cjs.js');
11
- var common = require('./common-bfedaf7d.cjs.js');
12
- require('@react-aria/utils');
12
+ var utils = require('./utils-8dbb4d1f.cjs.js');
13
13
  require('./registerListBoxItem.cjs.js');
14
- require('./ErrorBoundary-e9b86248.cjs.js');
14
+ require('./interaction-variant-utils-9a869063.cjs.js');
15
15
  require('./registerDescription.cjs.js');
16
16
  require('./registerText.cjs.js');
17
17
  require('./registerSection.cjs.js');
18
- require('./registerHeader.cjs.js');
19
- require('./interaction-variant-utils-36f1b397.cjs.js');
18
+ require('@react-aria/utils');
20
19
  require('@plasmicapp/host/registerComponent');
21
20
 
22
21
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
@@ -24,6 +23,8 @@ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
24
23
  var React__default = /*#__PURE__*/_interopDefault(React);
25
24
 
26
25
  var __defProp = Object.defineProperty;
26
+ var __defProps = Object.defineProperties;
27
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
27
28
  var __getOwnPropSymbols = Object.getOwnPropertySymbols;
28
29
  var __hasOwnProp = Object.prototype.hasOwnProperty;
29
30
  var __propIsEnum = Object.prototype.propertyIsEnumerable;
@@ -39,36 +40,44 @@ var __spreadValues = (a, b) => {
39
40
  }
40
41
  return a;
41
42
  };
43
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
42
44
  const BaseSelectValue = (props) => {
43
45
  const { children, customize } = props;
44
46
  return /* @__PURE__ */ React__default.default.createElement(reactAriaComponents.SelectValue, null, ({ isPlaceholder, selectedText }) => /* @__PURE__ */ React__default.default.createElement(React__default.default.Fragment, null, isPlaceholder ? /* @__PURE__ */ React__default.default.createElement("span", null, "Select an item") : /* @__PURE__ */ React__default.default.createElement(React__default.default.Fragment, null, /* @__PURE__ */ React__default.default.createElement("span", null, customize ? children : selectedText))));
45
47
  };
46
- const SELECT_NAME = common.makeComponentName("select");
48
+ const SELECT_NAME = utils.makeComponentName("select");
47
49
  function BaseSelect(props) {
48
50
  const {
49
- value,
50
- onChange,
51
+ selectedKey,
52
+ onSelectionChange,
51
53
  placeholder,
52
54
  previewOpen,
53
55
  onOpenChange,
54
56
  isDisabled,
55
57
  className,
56
58
  style,
57
- structure,
59
+ children,
58
60
  name,
59
61
  isOpen,
62
+ setControlContextData,
60
63
  "aria-label": ariaLabel
61
64
  } = props;
62
- const { options } = registerListBox.useStrictOptions(props);
63
65
  const isEditMode = !!host.usePlasmicCanvasContext();
64
66
  const openProp = isEditMode && previewOpen ? true : isOpen;
65
- const disabledKeys = registerListBox.flattenOptions(options).filter((op) => op.isDisabled).map((op) => op.id);
67
+ let idManager = React.useMemo(() => new registerListBox.ListBoxItemIdManager(), []);
68
+ React.useEffect(() => {
69
+ idManager.subscribe((ids) => {
70
+ setControlContextData == null ? void 0 : setControlContextData({
71
+ itemIds: ids
72
+ });
73
+ });
74
+ }, []);
66
75
  return /* @__PURE__ */ React__default.default.createElement(
67
76
  reactAriaComponents.Select,
68
77
  __spreadValues({
69
78
  placeholder,
70
- selectedKey: value,
71
- onSelectionChange: onChange,
79
+ selectedKey,
80
+ onSelectionChange,
72
81
  onOpenChange,
73
82
  isDisabled,
74
83
  className,
@@ -76,22 +85,21 @@ function BaseSelect(props) {
76
85
  name,
77
86
  "aria-label": ariaLabel,
78
87
  isOpen: openProp
79
- }, common.extractPlasmicDataProps(props)),
88
+ }, utils.extractPlasmicDataProps(props)),
80
89
  /* @__PURE__ */ React__default.default.createElement(contexts.PlasmicPopoverContext.Provider, { value: { isOpen: openProp } }, /* @__PURE__ */ React__default.default.createElement(
81
90
  contexts.PlasmicListBoxContext.Provider,
82
91
  {
83
92
  value: {
84
- items: options,
85
- disabledKeys
93
+ idManager
86
94
  }
87
95
  },
88
- structure
96
+ children
89
97
  ))
90
98
  );
91
99
  }
92
100
  function registerSelect(loader) {
93
- const selectValueMeta = common.registerComponentHelper(loader, BaseSelectValue, {
94
- name: common.makeComponentName("select-value"),
101
+ const selectValueMeta = utils.registerComponentHelper(loader, BaseSelectValue, {
102
+ name: utils.makeComponentName("select-value"),
95
103
  displayName: "Aria Selected Value",
96
104
  importPath: "@plasmicpkgs/react-aria/skinny/registerSelect",
97
105
  importName: "BaseSelectValue",
@@ -122,32 +130,49 @@ function registerSelect(loader) {
122
130
  }
123
131
  }
124
132
  });
125
- common.registerComponentHelper(loader, BaseSelect, {
133
+ utils.registerComponentHelper(loader, BaseSelect, {
126
134
  name: SELECT_NAME,
127
135
  displayName: "Aria Select",
128
136
  importPath: "@plasmicpkgs/react-aria/skinny/registerSelect",
129
137
  importName: "BaseSelect",
130
- props: {
131
- options: registerListBox.makeOptionsPropType(),
132
- placeholder: {
133
- type: "string"
138
+ props: __spreadProps(__spreadValues({}, common.getCommonProps("Select", [
139
+ "name",
140
+ "aria-label",
141
+ "placeholder",
142
+ "isDisabled",
143
+ "autoFocus"
144
+ ])), {
145
+ selectedKey: {
146
+ type: "choice",
147
+ description: "The selected keys of the listbox",
148
+ editOnly: true,
149
+ uncontrolledProp: "defaultSelectedKey",
150
+ displayName: "Initial selected key",
151
+ options: (_props, ctx) => (ctx == null ? void 0 : ctx.itemIds) ? Array.from(ctx.itemIds) : [],
152
+ // React Aria Select do not support multiple selections yet
153
+ multiSelect: false
134
154
  },
135
- isDisabled: {
136
- type: "boolean"
137
- },
138
- value: registerListBox.makeValuePropType(),
139
- onChange: {
155
+ onSelectionChange: {
140
156
  type: "eventHandler",
141
157
  argTypes: [{ name: "value", type: "string" }]
142
158
  },
159
+ disabledKeys: {
160
+ type: "choice",
161
+ description: "The item keys that are disabled. These items cannot be selected, focused, or otherwise interacted with.",
162
+ options: (_props, ctx) => (ctx == null ? void 0 : ctx.itemIds) ? Array.from(ctx.itemIds) : [],
163
+ multiSelect: true,
164
+ advanced: true
165
+ },
143
166
  previewOpen: {
144
167
  type: "boolean",
145
168
  displayName: "Preview opened?",
146
169
  description: "Preview opened state while designing in Plasmic editor",
147
- editOnly: true
170
+ editOnly: true,
171
+ defaultValue: false
148
172
  },
149
173
  isOpen: {
150
174
  type: "boolean",
175
+ defaultValue: false,
151
176
  // It doesn't make sense to make isOpen prop editable (it's controlled by user interaction and always closed by default), so we keep this prop hidden. We have listed the prop here in the meta only so we can expose a writeable state for it.
152
177
  hidden: () => true
153
178
  },
@@ -155,40 +180,7 @@ function registerSelect(loader) {
155
180
  type: "eventHandler",
156
181
  argTypes: [{ name: "isOpen", type: "boolean" }]
157
182
  },
158
- // optionValue: {
159
- // type: "string",
160
- // displayName: "Field key for an option's value",
161
- // hidden: (ps) =>
162
- // !ps.options ||
163
- // !ps.options[0] ||
164
- // typeof ps.options[0] === "string" ||
165
- // "value" in ps.options[0],
166
- // exprHint:
167
- // "Return a function that takes in an option object, and returns the key to use",
168
- // },
169
- // optionText: {
170
- // type: "string",
171
- // displayName: "Field key for an option's text value",
172
- // hidden: (ps) =>
173
- // !ps.options ||
174
- // !ps.options[0] ||
175
- // typeof ps.options[0] === "string" ||
176
- // "value" in ps.options[0],
177
- // exprHint:
178
- // "Return a function that takes in an option object, and returns the text value to use",
179
- // },
180
- // optionDisabled: {
181
- // type: "string",
182
- // displayName: "Field key for whether an option is disabled",
183
- // hidden: (ps) =>
184
- // !ps.options ||
185
- // !ps.options[0] ||
186
- // typeof ps.options[0] === "string" ||
187
- // "value" in ps.options[0],
188
- // exprHint:
189
- // "Return a function that takes in an option object, and returns true if option should be disabled",
190
- // },
191
- structure: {
183
+ children: {
192
184
  type: "slot",
193
185
  defaultValue: [
194
186
  {
@@ -256,6 +248,9 @@ function registerSelect(loader) {
256
248
  {
257
249
  type: "component",
258
250
  name: registerListBox.LIST_BOX_COMPONENT_NAME,
251
+ props: {
252
+ selectionMode: "single"
253
+ },
259
254
  styles: {
260
255
  borderWidth: 0,
261
256
  width: "stretch"
@@ -267,31 +262,13 @@ function registerSelect(loader) {
267
262
  ]
268
263
  }
269
264
  ]
270
- },
271
- // renderOption: {
272
- // type: "slot",
273
- // displayName: "Custom render option",
274
- // renderPropParams: ["item"],
275
- // hidePlaceholder: true
276
- // },
277
- name: {
278
- type: "string",
279
- displayName: "Form field key",
280
- description: "Name of the input, when submitting in an HTML form",
281
- advanced: true
282
- },
283
- "aria-label": {
284
- type: "string",
285
- displayName: "ARIA label",
286
- description: "Label for this input, if no visible label is used",
287
- advanced: true
288
265
  }
289
- },
266
+ }),
290
267
  states: {
291
- value: {
268
+ selectedKey: {
292
269
  type: "writable",
293
- valueProp: "value",
294
- onChangeProp: "onChange",
270
+ valueProp: "selectedKey",
271
+ onChangeProp: "onSelectionChange",
295
272
  variableType: "text"
296
273
  },
297
274
  isOpen: {
@@ -1 +1 @@
1
- {"version":3,"file":"registerSelect.cjs.js","sources":["../src/registerSelect.tsx"],"sourcesContent":["import { usePlasmicCanvasContext } from \"@plasmicapp/host\";\nimport React from \"react\";\nimport { Key, Select, SelectProps, SelectValue } from \"react-aria-components\";\nimport { PlasmicListBoxContext, PlasmicPopoverContext } from \"./contexts\";\nimport {\n flattenOptions,\n HasOptions,\n makeOptionsPropType,\n makeValuePropType,\n useStrictOptions,\n} from \"./option-utils\";\nimport { BUTTON_COMPONENT_NAME } from \"./registerButton\";\nimport { LABEL_COMPONENT_NAME } from \"./registerLabel\";\nimport { LIST_BOX_COMPONENT_NAME } from \"./registerListBox\";\nimport { POPOVER_COMPONENT_NAME } from \"./registerPopover\";\nimport {\n extractPlasmicDataProps,\n makeComponentName,\n Registerable,\n registerComponentHelper,\n} from \"./utils\";\n\nexport interface BaseSelectValueProps\n extends React.ComponentProps<typeof SelectValue> {\n customize?: boolean;\n}\n\nexport const BaseSelectValue = (props: BaseSelectValueProps) => {\n const { children, customize } = props;\n return (\n <SelectValue>\n {({ isPlaceholder, selectedText }) => (\n <>\n {isPlaceholder ? (\n <span>Select an item</span>\n ) : (\n <>\n <span>\n {customize ? (children as React.ReactNode) : selectedText}\n </span>\n </>\n )}\n {}\n </>\n )}\n </SelectValue>\n );\n};\n\nconst SELECT_NAME = makeComponentName(\"select\");\n\nexport interface BaseSelectProps<T extends object>\n extends HasOptions<T>,\n SelectProps<T> {\n placeholder?: string;\n isDisabled?: boolean;\n\n value?: Key;\n onChange?: (value: Key) => void;\n\n previewOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n\n structure?: React.ReactNode;\n\n name?: string;\n \"aria-label\"?: string;\n\n renderOption?: (item: {\n value: string;\n label?: string;\n isDisabled?: boolean;\n }) => React.ReactNode;\n}\n\nexport function BaseSelect<T extends object>(props: BaseSelectProps<T>) {\n const {\n value,\n onChange,\n placeholder,\n previewOpen,\n onOpenChange,\n isDisabled,\n className,\n style,\n structure,\n name,\n isOpen,\n \"aria-label\": ariaLabel,\n } = props;\n\n const { options } = useStrictOptions(props);\n\n const isEditMode = !!usePlasmicCanvasContext();\n const openProp = isEditMode && previewOpen ? true : isOpen;\n\n const disabledKeys = flattenOptions(options)\n .filter((op) => op.isDisabled)\n .map((op) => op.id);\n\n return (\n <Select\n placeholder={placeholder}\n selectedKey={value}\n onSelectionChange={onChange}\n onOpenChange={onOpenChange}\n isDisabled={isDisabled}\n className={className}\n style={style}\n name={name}\n aria-label={ariaLabel}\n isOpen={openProp}\n {...extractPlasmicDataProps(props)}\n >\n <PlasmicPopoverContext.Provider value={{ isOpen: openProp }}>\n <PlasmicListBoxContext.Provider\n value={{\n items: options,\n disabledKeys: disabledKeys,\n }}\n >\n {structure}\n </PlasmicListBoxContext.Provider>\n </PlasmicPopoverContext.Provider>\n </Select>\n );\n}\n\nexport function registerSelect(loader?: Registerable) {\n const selectValueMeta = registerComponentHelper(loader, BaseSelectValue, {\n name: makeComponentName(\"select-value\"),\n displayName: \"Aria Selected Value\",\n importPath: \"@plasmicpkgs/react-aria/skinny/registerSelect\",\n importName: \"BaseSelectValue\",\n parentComponentName: SELECT_NAME,\n props: {\n customize: {\n type: \"boolean\",\n description: \"Whether to customize the selected value display\",\n },\n children: {\n type: \"slot\",\n defaultValue: [\n {\n type: \"text\",\n value: \"Selected value...\",\n },\n ],\n hidden: (ps) => !ps.customize,\n },\n className: {\n type: \"class\",\n selectors: [\n {\n selector: \":self[data-placeholder]\",\n label: \"Placeholder\",\n },\n ],\n },\n },\n });\n\n registerComponentHelper(loader, BaseSelect, {\n name: SELECT_NAME,\n displayName: \"Aria Select\",\n importPath: \"@plasmicpkgs/react-aria/skinny/registerSelect\",\n importName: \"BaseSelect\",\n props: {\n options: makeOptionsPropType(),\n placeholder: {\n type: \"string\",\n },\n isDisabled: {\n type: \"boolean\",\n },\n value: makeValuePropType(),\n onChange: {\n type: \"eventHandler\",\n argTypes: [{ name: \"value\", type: \"string\" }],\n },\n previewOpen: {\n type: \"boolean\",\n displayName: \"Preview opened?\",\n description: \"Preview opened state while designing in Plasmic editor\",\n editOnly: true,\n },\n isOpen: {\n type: \"boolean\",\n // It doesn't make sense to make isOpen prop editable (it's controlled by user interaction and always closed by default), so we keep this prop hidden. We have listed the prop here in the meta only so we can expose a writeable state for it.\n hidden: () => true,\n },\n onOpenChange: {\n type: \"eventHandler\",\n argTypes: [{ name: \"isOpen\", type: \"boolean\" }],\n },\n // optionValue: {\n // type: \"string\",\n // displayName: \"Field key for an option's value\",\n // hidden: (ps) =>\n // !ps.options ||\n // !ps.options[0] ||\n // typeof ps.options[0] === \"string\" ||\n // \"value\" in ps.options[0],\n // exprHint:\n // \"Return a function that takes in an option object, and returns the key to use\",\n // },\n // optionText: {\n // type: \"string\",\n // displayName: \"Field key for an option's text value\",\n // hidden: (ps) =>\n // !ps.options ||\n // !ps.options[0] ||\n // typeof ps.options[0] === \"string\" ||\n // \"value\" in ps.options[0],\n // exprHint:\n // \"Return a function that takes in an option object, and returns the text value to use\",\n // },\n // optionDisabled: {\n // type: \"string\",\n // displayName: \"Field key for whether an option is disabled\",\n // hidden: (ps) =>\n // !ps.options ||\n // !ps.options[0] ||\n // typeof ps.options[0] === \"string\" ||\n // \"value\" in ps.options[0],\n // exprHint:\n // \"Return a function that takes in an option object, and returns true if option should be disabled\",\n // },\n\n structure: {\n type: \"slot\",\n defaultValue: [\n {\n type: \"vbox\",\n styles: {\n justifyContent: \"flex-start\",\n alignItems: \"flex-start\",\n width: \"300px\",\n padding: 0,\n },\n children: [\n {\n type: \"component\",\n name: LABEL_COMPONENT_NAME,\n props: {\n children: {\n type: \"text\",\n value: \"Label\",\n },\n },\n },\n {\n type: \"component\",\n name: BUTTON_COMPONENT_NAME,\n styles: {\n width: \"100%\",\n },\n props: {\n children: {\n type: \"hbox\",\n styles: {\n width: \"stretch\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n padding: \"2px 5px\",\n },\n children: [\n {\n type: \"component\",\n name: selectValueMeta.name,\n },\n {\n type: \"img\",\n src: \"https://static1.plasmic.app/arrow-up.svg\",\n styles: {\n height: \"20px\",\n width: \"20px\",\n transform: \"rotate(180deg)\",\n },\n },\n ],\n },\n },\n },\n {\n type: \"component\",\n name: POPOVER_COMPONENT_NAME,\n styles: {\n backgroundColor: \"white\",\n padding: \"10px\",\n overflow: \"scroll\",\n },\n props: {\n children: [\n {\n type: \"component\",\n name: LIST_BOX_COMPONENT_NAME,\n styles: {\n borderWidth: 0,\n width: \"stretch\",\n },\n },\n ],\n },\n },\n ],\n },\n ],\n },\n\n // renderOption: {\n // type: \"slot\",\n // displayName: \"Custom render option\",\n // renderPropParams: [\"item\"],\n // hidePlaceholder: true\n // },\n\n name: {\n type: \"string\",\n displayName: \"Form field key\",\n description: \"Name of the input, when submitting in an HTML form\",\n advanced: true,\n },\n\n \"aria-label\": {\n type: \"string\",\n displayName: \"ARIA label\",\n description: \"Label for this input, if no visible label is used\",\n advanced: true,\n },\n },\n states: {\n value: {\n type: \"writable\",\n valueProp: \"value\",\n onChangeProp: \"onChange\",\n variableType: \"text\",\n },\n isOpen: {\n type: \"writable\",\n valueProp: \"isOpen\",\n onChangeProp: \"onOpenChange\",\n variableType: \"boolean\",\n },\n },\n });\n}\n"],"names":["React","SelectValue","makeComponentName","useStrictOptions","usePlasmicCanvasContext","flattenOptions","Select","extractPlasmicDataProps","PlasmicPopoverContext","PlasmicListBoxContext","registerComponentHelper","makeOptionsPropType","makeValuePropType","LABEL_COMPONENT_NAME","BUTTON_COMPONENT_NAME","POPOVER_COMPONENT_NAME","LIST_BOX_COMPONENT_NAME"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2Ba,MAAA,eAAA,GAAkB,CAAC,KAAgC,KAAA;AAC9D,EAAM,MAAA,EAAE,QAAU,EAAA,SAAA,EAAc,GAAA,KAAA,CAAA;AAChC,EACE,uBAAAA,sBAAA,CAAA,aAAA,CAACC,uCACE,CAAC,EAAE,eAAe,YAAa,EAAA,iGAE3B,aACC,mBAAAD,sBAAA,CAAA,aAAA,CAAC,cAAK,gBAAc,CAAA,+GAGjBA,sBAAA,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA,EACE,YAAa,QAA+B,GAAA,YAC/C,CACF,CAGJ,CAEJ,CAAA,CAAA;AAEJ,EAAA;AAEA,MAAM,WAAA,GAAcE,yBAAkB,QAAQ,CAAA,CAAA;AA0BvC,SAAS,WAA6B,KAA2B,EAAA;AACtE,EAAM,MAAA;AAAA,IACJ,KAAA;AAAA,IACA,QAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,YAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,SAAA;AAAA,IACA,IAAA;AAAA,IACA,MAAA;AAAA,IACA,YAAc,EAAA,SAAA;AAAA,GACZ,GAAA,KAAA,CAAA;AAEJ,EAAA,MAAM,EAAE,OAAA,EAAY,GAAAC,gCAAA,CAAiB,KAAK,CAAA,CAAA;AAE1C,EAAM,MAAA,UAAA,GAAa,CAAC,CAACC,4BAAwB,EAAA,CAAA;AAC7C,EAAM,MAAA,QAAA,GAAW,UAAc,IAAA,WAAA,GAAc,IAAO,GAAA,MAAA,CAAA;AAEpD,EAAA,MAAM,YAAe,GAAAC,8BAAA,CAAe,OAAO,CAAA,CACxC,OAAO,CAAC,EAAA,KAAO,EAAG,CAAA,UAAU,CAC5B,CAAA,GAAA,CAAI,CAAC,EAAA,KAAO,GAAG,EAAE,CAAA,CAAA;AAEpB,EACE,uBAAAL,sBAAA,CAAA,aAAA;AAAA,IAACM,0BAAA;AAAA,IAAA,cAAA,CAAA;AAAA,MACC,WAAA;AAAA,MACA,WAAa,EAAA,KAAA;AAAA,MACb,iBAAmB,EAAA,QAAA;AAAA,MACnB,YAAA;AAAA,MACA,UAAA;AAAA,MACA,SAAA;AAAA,MACA,KAAA;AAAA,MACA,IAAA;AAAA,MACA,YAAY,EAAA,SAAA;AAAA,MACZ,MAAQ,EAAA,QAAA;AAAA,KAAA,EACJC,+BAAwB,KAAK,CAAA,CAAA;AAAA,oBAEjCP,sBAAA,CAAA,aAAA,CAACQ,+BAAsB,QAAtB,EAAA,EAA+B,OAAO,EAAE,MAAA,EAAQ,UAC/C,EAAA,kBAAAR,sBAAA,CAAA,aAAA;AAAA,MAACS,8BAAsB,CAAA,QAAA;AAAA,MAAtB;AAAA,QACC,KAAO,EAAA;AAAA,UACL,KAAO,EAAA,OAAA;AAAA,UACP,YAAA;AAAA,SACF;AAAA,OAAA;AAAA,MAEC,SAAA;AAAA,KAEL,CAAA;AAAA,GACF,CAAA;AAEJ,CAAA;AAEO,SAAS,eAAe,MAAuB,EAAA;AACpD,EAAM,MAAA,eAAA,GAAkBC,8BAAwB,CAAA,MAAA,EAAQ,eAAiB,EAAA;AAAA,IACvE,IAAA,EAAMR,yBAAkB,cAAc,CAAA;AAAA,IACtC,WAAa,EAAA,qBAAA;AAAA,IACb,UAAY,EAAA,+CAAA;AAAA,IACZ,UAAY,EAAA,iBAAA;AAAA,IACZ,mBAAqB,EAAA,WAAA;AAAA,IACrB,KAAO,EAAA;AAAA,MACL,SAAW,EAAA;AAAA,QACT,IAAM,EAAA,SAAA;AAAA,QACN,WAAa,EAAA,iDAAA;AAAA,OACf;AAAA,MACA,QAAU,EAAA;AAAA,QACR,IAAM,EAAA,MAAA;AAAA,QACN,YAAc,EAAA;AAAA,UACZ;AAAA,YACE,IAAM,EAAA,MAAA;AAAA,YACN,KAAO,EAAA,mBAAA;AAAA,WACT;AAAA,SACF;AAAA,QACA,MAAQ,EAAA,CAAC,EAAO,KAAA,CAAC,EAAG,CAAA,SAAA;AAAA,OACtB;AAAA,MACA,SAAW,EAAA;AAAA,QACT,IAAM,EAAA,OAAA;AAAA,QACN,SAAW,EAAA;AAAA,UACT;AAAA,YACE,QAAU,EAAA,yBAAA;AAAA,YACV,KAAO,EAAA,aAAA;AAAA,WACT;AAAA,SACF;AAAA,OACF;AAAA,KACF;AAAA,GACD,CAAA,CAAA;AAED,EAAAQ,8BAAA,CAAwB,QAAQ,UAAY,EAAA;AAAA,IAC1C,IAAM,EAAA,WAAA;AAAA,IACN,WAAa,EAAA,aAAA;AAAA,IACb,UAAY,EAAA,+CAAA;AAAA,IACZ,UAAY,EAAA,YAAA;AAAA,IACZ,KAAO,EAAA;AAAA,MACL,SAASC,mCAAoB,EAAA;AAAA,MAC7B,WAAa,EAAA;AAAA,QACX,IAAM,EAAA,QAAA;AAAA,OACR;AAAA,MACA,UAAY,EAAA;AAAA,QACV,IAAM,EAAA,SAAA;AAAA,OACR;AAAA,MACA,OAAOC,iCAAkB,EAAA;AAAA,MACzB,QAAU,EAAA;AAAA,QACR,IAAM,EAAA,cAAA;AAAA,QACN,UAAU,CAAC,EAAE,MAAM,OAAS,EAAA,IAAA,EAAM,UAAU,CAAA;AAAA,OAC9C;AAAA,MACA,WAAa,EAAA;AAAA,QACX,IAAM,EAAA,SAAA;AAAA,QACN,WAAa,EAAA,iBAAA;AAAA,QACb,WAAa,EAAA,wDAAA;AAAA,QACb,QAAU,EAAA,IAAA;AAAA,OACZ;AAAA,MACA,MAAQ,EAAA;AAAA,QACN,IAAM,EAAA,SAAA;AAAA;AAAA,QAEN,QAAQ,MAAM,IAAA;AAAA,OAChB;AAAA,MACA,YAAc,EAAA;AAAA,QACZ,IAAM,EAAA,cAAA;AAAA,QACN,UAAU,CAAC,EAAE,MAAM,QAAU,EAAA,IAAA,EAAM,WAAW,CAAA;AAAA,OAChD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAmCA,SAAW,EAAA;AAAA,QACT,IAAM,EAAA,MAAA;AAAA,QACN,YAAc,EAAA;AAAA,UACZ;AAAA,YACE,IAAM,EAAA,MAAA;AAAA,YACN,MAAQ,EAAA;AAAA,cACN,cAAgB,EAAA,YAAA;AAAA,cAChB,UAAY,EAAA,YAAA;AAAA,cACZ,KAAO,EAAA,OAAA;AAAA,cACP,OAAS,EAAA,CAAA;AAAA,aACX;AAAA,YACA,QAAU,EAAA;AAAA,cACR;AAAA,gBACE,IAAM,EAAA,WAAA;AAAA,gBACN,IAAM,EAAAC,kCAAA;AAAA,gBACN,KAAO,EAAA;AAAA,kBACL,QAAU,EAAA;AAAA,oBACR,IAAM,EAAA,MAAA;AAAA,oBACN,KAAO,EAAA,OAAA;AAAA,mBACT;AAAA,iBACF;AAAA,eACF;AAAA,cACA;AAAA,gBACE,IAAM,EAAA,WAAA;AAAA,gBACN,IAAM,EAAAC,oCAAA;AAAA,gBACN,MAAQ,EAAA;AAAA,kBACN,KAAO,EAAA,MAAA;AAAA,iBACT;AAAA,gBACA,KAAO,EAAA;AAAA,kBACL,QAAU,EAAA;AAAA,oBACR,IAAM,EAAA,MAAA;AAAA,oBACN,MAAQ,EAAA;AAAA,sBACN,KAAO,EAAA,SAAA;AAAA,sBACP,cAAgB,EAAA,eAAA;AAAA,sBAChB,UAAY,EAAA,QAAA;AAAA,sBACZ,OAAS,EAAA,SAAA;AAAA,qBACX;AAAA,oBACA,QAAU,EAAA;AAAA,sBACR;AAAA,wBACE,IAAM,EAAA,WAAA;AAAA,wBACN,MAAM,eAAgB,CAAA,IAAA;AAAA,uBACxB;AAAA,sBACA;AAAA,wBACE,IAAM,EAAA,KAAA;AAAA,wBACN,GAAK,EAAA,0CAAA;AAAA,wBACL,MAAQ,EAAA;AAAA,0BACN,MAAQ,EAAA,MAAA;AAAA,0BACR,KAAO,EAAA,MAAA;AAAA,0BACP,SAAW,EAAA,gBAAA;AAAA,yBACb;AAAA,uBACF;AAAA,qBACF;AAAA,mBACF;AAAA,iBACF;AAAA,eACF;AAAA,cACA;AAAA,gBACE,IAAM,EAAA,WAAA;AAAA,gBACN,IAAM,EAAAC,sCAAA;AAAA,gBACN,MAAQ,EAAA;AAAA,kBACN,eAAiB,EAAA,OAAA;AAAA,kBACjB,OAAS,EAAA,MAAA;AAAA,kBACT,QAAU,EAAA,QAAA;AAAA,iBACZ;AAAA,gBACA,KAAO,EAAA;AAAA,kBACL,QAAU,EAAA;AAAA,oBACR;AAAA,sBACE,IAAM,EAAA,WAAA;AAAA,sBACN,IAAM,EAAAC,uCAAA;AAAA,sBACN,MAAQ,EAAA;AAAA,wBACN,WAAa,EAAA,CAAA;AAAA,wBACb,KAAO,EAAA,SAAA;AAAA,uBACT;AAAA,qBACF;AAAA,mBACF;AAAA,iBACF;AAAA,eACF;AAAA,aACF;AAAA,WACF;AAAA,SACF;AAAA,OACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,IAAM,EAAA;AAAA,QACJ,IAAM,EAAA,QAAA;AAAA,QACN,WAAa,EAAA,gBAAA;AAAA,QACb,WAAa,EAAA,oDAAA;AAAA,QACb,QAAU,EAAA,IAAA;AAAA,OACZ;AAAA,MAEA,YAAc,EAAA;AAAA,QACZ,IAAM,EAAA,QAAA;AAAA,QACN,WAAa,EAAA,YAAA;AAAA,QACb,WAAa,EAAA,mDAAA;AAAA,QACb,QAAU,EAAA,IAAA;AAAA,OACZ;AAAA,KACF;AAAA,IACA,MAAQ,EAAA;AAAA,MACN,KAAO,EAAA;AAAA,QACL,IAAM,EAAA,UAAA;AAAA,QACN,SAAW,EAAA,OAAA;AAAA,QACX,YAAc,EAAA,UAAA;AAAA,QACd,YAAc,EAAA,MAAA;AAAA,OAChB;AAAA,MACA,MAAQ,EAAA;AAAA,QACN,IAAM,EAAA,UAAA;AAAA,QACN,SAAW,EAAA,QAAA;AAAA,QACX,YAAc,EAAA,cAAA;AAAA,QACd,YAAc,EAAA,SAAA;AAAA,OAChB;AAAA,KACF;AAAA,GACD,CAAA,CAAA;AACH;;;;;;"}
1
+ {"version":3,"file":"registerSelect.cjs.js","sources":["../src/registerSelect.tsx"],"sourcesContent":["import { usePlasmicCanvasContext } from \"@plasmicapp/host\";\nimport React, { useEffect, useMemo } from \"react\";\nimport { Select, SelectProps, SelectValue } from \"react-aria-components\";\nimport { getCommonProps } from \"./common\";\nimport { PlasmicListBoxContext, PlasmicPopoverContext } from \"./contexts\";\nimport { ListBoxItemIdManager } from \"./ListBoxItemIdManager\";\nimport { BUTTON_COMPONENT_NAME } from \"./registerButton\";\nimport { LABEL_COMPONENT_NAME } from \"./registerLabel\";\nimport { LIST_BOX_COMPONENT_NAME } from \"./registerListBox\";\nimport { POPOVER_COMPONENT_NAME } from \"./registerPopover\";\nimport {\n extractPlasmicDataProps,\n HasControlContextData,\n makeComponentName,\n Registerable,\n registerComponentHelper,\n} from \"./utils\";\n\nexport interface BaseSelectValueProps\n extends React.ComponentProps<typeof SelectValue> {\n customize?: boolean;\n}\n\nexport const BaseSelectValue = (props: BaseSelectValueProps) => {\n const { children, customize } = props;\n return (\n <SelectValue>\n {({ isPlaceholder, selectedText }) => (\n <>\n {isPlaceholder ? (\n <span>Select an item</span>\n ) : (\n <>\n <span>\n {customize ? (children as React.ReactNode) : selectedText}\n </span>\n </>\n )}\n {}\n </>\n )}\n </SelectValue>\n );\n};\n\nconst SELECT_NAME = makeComponentName(\"select\");\n\nexport interface BaseSelectControlContextData {\n itemIds: string[];\n}\n\nexport interface BaseSelectProps\n extends SelectProps<{}>, // NOTE: We don't need generic type here since we don't use items prop (that needs it). We just need to make the type checker happy\n HasControlContextData<BaseSelectControlContextData> {\n previewOpen?: boolean;\n children?: React.ReactNode;\n}\n\nexport function BaseSelect(props: BaseSelectProps) {\n const {\n selectedKey,\n onSelectionChange,\n placeholder,\n previewOpen,\n onOpenChange,\n isDisabled,\n className,\n style,\n children,\n name,\n isOpen,\n setControlContextData,\n \"aria-label\": ariaLabel,\n } = props;\n\n const isEditMode = !!usePlasmicCanvasContext();\n const openProp = isEditMode && previewOpen ? true : isOpen;\n\n let idManager = useMemo(() => new ListBoxItemIdManager(), []);\n\n useEffect(() => {\n idManager.subscribe((ids: string[]) => {\n setControlContextData?.({\n itemIds: ids,\n });\n });\n }, []);\n\n return (\n <Select\n placeholder={placeholder}\n selectedKey={selectedKey}\n onSelectionChange={onSelectionChange}\n onOpenChange={onOpenChange}\n isDisabled={isDisabled}\n className={className}\n style={style}\n name={name}\n aria-label={ariaLabel}\n isOpen={openProp}\n {...extractPlasmicDataProps(props)}\n >\n <PlasmicPopoverContext.Provider value={{ isOpen: openProp }}>\n <PlasmicListBoxContext.Provider\n value={{\n idManager,\n }}\n >\n {children}\n </PlasmicListBoxContext.Provider>\n </PlasmicPopoverContext.Provider>\n </Select>\n );\n}\n\nexport function registerSelect(loader?: Registerable) {\n const selectValueMeta = registerComponentHelper(loader, BaseSelectValue, {\n name: makeComponentName(\"select-value\"),\n displayName: \"Aria Selected Value\",\n importPath: \"@plasmicpkgs/react-aria/skinny/registerSelect\",\n importName: \"BaseSelectValue\",\n parentComponentName: SELECT_NAME,\n props: {\n customize: {\n type: \"boolean\",\n description: \"Whether to customize the selected value display\",\n },\n children: {\n type: \"slot\",\n defaultValue: [\n {\n type: \"text\",\n value: \"Selected value...\",\n },\n ],\n hidden: (ps) => !ps.customize,\n },\n className: {\n type: \"class\",\n selectors: [\n {\n selector: \":self[data-placeholder]\",\n label: \"Placeholder\",\n },\n ],\n },\n },\n });\n\n registerComponentHelper(loader, BaseSelect, {\n name: SELECT_NAME,\n displayName: \"Aria Select\",\n importPath: \"@plasmicpkgs/react-aria/skinny/registerSelect\",\n importName: \"BaseSelect\",\n props: {\n ...getCommonProps<BaseSelectProps>(\"Select\", [\n \"name\",\n \"aria-label\",\n \"placeholder\",\n \"isDisabled\",\n \"autoFocus\",\n ]),\n selectedKey: {\n type: \"choice\",\n description: \"The selected keys of the listbox\",\n editOnly: true,\n uncontrolledProp: \"defaultSelectedKey\",\n displayName: \"Initial selected key\",\n options: (\n _props: BaseSelectProps,\n ctx: BaseSelectControlContextData | null\n ) => (ctx?.itemIds ? Array.from(ctx.itemIds) : []),\n // React Aria Select do not support multiple selections yet\n multiSelect: false,\n },\n onSelectionChange: {\n type: \"eventHandler\",\n argTypes: [{ name: \"value\", type: \"string\" }],\n },\n disabledKeys: {\n type: \"choice\",\n description:\n \"The item keys that are disabled. These items cannot be selected, focused, or otherwise interacted with.\",\n options: (\n _props: BaseSelectProps,\n ctx: BaseSelectControlContextData | null\n ) => (ctx?.itemIds ? Array.from(ctx.itemIds) : []),\n multiSelect: true,\n advanced: true,\n },\n previewOpen: {\n type: \"boolean\",\n displayName: \"Preview opened?\",\n description: \"Preview opened state while designing in Plasmic editor\",\n editOnly: true,\n defaultValue: false,\n },\n isOpen: {\n type: \"boolean\",\n defaultValue: false,\n // It doesn't make sense to make isOpen prop editable (it's controlled by user interaction and always closed by default), so we keep this prop hidden. We have listed the prop here in the meta only so we can expose a writeable state for it.\n hidden: () => true,\n },\n onOpenChange: {\n type: \"eventHandler\",\n argTypes: [{ name: \"isOpen\", type: \"boolean\" }],\n },\n children: {\n type: \"slot\",\n defaultValue: [\n {\n type: \"vbox\",\n styles: {\n justifyContent: \"flex-start\",\n alignItems: \"flex-start\",\n width: \"300px\",\n padding: 0,\n },\n children: [\n {\n type: \"component\",\n name: LABEL_COMPONENT_NAME,\n props: {\n children: {\n type: \"text\",\n value: \"Label\",\n },\n },\n },\n {\n type: \"component\",\n name: BUTTON_COMPONENT_NAME,\n styles: {\n width: \"100%\",\n },\n props: {\n children: {\n type: \"hbox\",\n styles: {\n width: \"stretch\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n padding: \"2px 5px\",\n },\n children: [\n {\n type: \"component\",\n name: selectValueMeta.name,\n },\n {\n type: \"img\",\n src: \"https://static1.plasmic.app/arrow-up.svg\",\n styles: {\n height: \"20px\",\n width: \"20px\",\n transform: \"rotate(180deg)\",\n },\n },\n ],\n },\n },\n },\n {\n type: \"component\",\n name: POPOVER_COMPONENT_NAME,\n styles: {\n backgroundColor: \"white\",\n padding: \"10px\",\n overflow: \"scroll\",\n },\n props: {\n children: [\n {\n type: \"component\",\n name: LIST_BOX_COMPONENT_NAME,\n props: {\n selectionMode: \"single\",\n },\n styles: {\n borderWidth: 0,\n width: \"stretch\",\n },\n },\n ],\n },\n },\n ],\n },\n ],\n },\n },\n states: {\n selectedKey: {\n type: \"writable\",\n valueProp: \"selectedKey\",\n onChangeProp: \"onSelectionChange\",\n variableType: \"text\",\n },\n isOpen: {\n type: \"writable\",\n valueProp: \"isOpen\",\n onChangeProp: \"onOpenChange\",\n variableType: \"boolean\",\n },\n },\n });\n}\n"],"names":["React","SelectValue","makeComponentName","usePlasmicCanvasContext","useMemo","ListBoxItemIdManager","useEffect","Select","extractPlasmicDataProps","PlasmicPopoverContext","PlasmicListBoxContext","registerComponentHelper","getCommonProps","LABEL_COMPONENT_NAME","BUTTON_COMPONENT_NAME","POPOVER_COMPONENT_NAME","LIST_BOX_COMPONENT_NAME"],"mappings":"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"}
@@ -1,26 +1,17 @@
1
1
  import React from "react";
2
- import { Key, SelectProps, SelectValue } from "react-aria-components";
3
- import { HasOptions } from "./option-utils";
4
- import { Registerable } from "./utils";
2
+ import { SelectProps, SelectValue } from "react-aria-components";
3
+ import { HasControlContextData, Registerable } from "./utils";
5
4
  export interface BaseSelectValueProps extends React.ComponentProps<typeof SelectValue> {
6
5
  customize?: boolean;
7
6
  }
8
7
  export declare const BaseSelectValue: (props: BaseSelectValueProps) => React.JSX.Element;
9
- export interface BaseSelectProps<T extends object> extends HasOptions<T>, SelectProps<T> {
10
- placeholder?: string;
11
- isDisabled?: boolean;
12
- value?: Key;
13
- onChange?: (value: Key) => void;
8
+ export interface BaseSelectControlContextData {
9
+ itemIds: string[];
10
+ }
11
+ export interface BaseSelectProps extends SelectProps<{}>, // NOTE: We don't need generic type here since we don't use items prop (that needs it). We just need to make the type checker happy
12
+ HasControlContextData<BaseSelectControlContextData> {
14
13
  previewOpen?: boolean;
15
- onOpenChange?: (open: boolean) => void;
16
- structure?: React.ReactNode;
17
- name?: string;
18
- "aria-label"?: string;
19
- renderOption?: (item: {
20
- value: string;
21
- label?: string;
22
- isDisabled?: boolean;
23
- }) => React.ReactNode;
14
+ children?: React.ReactNode;
24
15
  }
25
- export declare function BaseSelect<T extends object>(props: BaseSelectProps<T>): React.JSX.Element;
16
+ export declare function BaseSelect(props: BaseSelectProps): React.JSX.Element;
26
17
  export declare function registerSelect(loader?: Registerable): void;
@@ -1,23 +1,24 @@
1
1
  import { usePlasmicCanvasContext } from '@plasmicapp/host';
2
- import React from 'react';
2
+ import React, { useMemo, useEffect } from 'react';
3
3
  import { SelectValue, Select } from 'react-aria-components';
4
- import { e as PlasmicPopoverContext, a as PlasmicListBoxContext } from './contexts-9a8234bf.esm.js';
5
- import { u as useStrictOptions, f as flattenOptions, m as makeOptionsPropType, a as makeValuePropType, L as LIST_BOX_COMPONENT_NAME } from './registerListBox-b3f2891a.esm.js';
4
+ import { g as getCommonProps } from './common-8ca74873.esm.js';
5
+ import { a as PlasmicPopoverContext, b as PlasmicListBoxContext } from './contexts-0a2977d8.esm.js';
6
+ import { L as ListBoxItemIdManager, a as LIST_BOX_COMPONENT_NAME } from './registerListBox-85f61377.esm.js';
6
7
  import { BUTTON_COMPONENT_NAME } from './registerButton.esm.js';
7
8
  import { LABEL_COMPONENT_NAME } from './registerLabel.esm.js';
8
9
  import { POPOVER_COMPONENT_NAME } from './registerPopover.esm.js';
9
- import { e as extractPlasmicDataProps, r as registerComponentHelper, a as makeComponentName } from './common-fa69e9b3.esm.js';
10
- import '@react-aria/utils';
10
+ import { e as extractPlasmicDataProps, r as registerComponentHelper, a as makeComponentName } from './utils-c7662a47.esm.js';
11
11
  import './registerListBoxItem.esm.js';
12
- import './ErrorBoundary-c6b111d3.esm.js';
12
+ import './interaction-variant-utils-1d94d073.esm.js';
13
13
  import './registerDescription.esm.js';
14
14
  import './registerText.esm.js';
15
15
  import './registerSection.esm.js';
16
- import './registerHeader.esm.js';
17
- import './interaction-variant-utils-abd0c319.esm.js';
16
+ import '@react-aria/utils';
18
17
  import '@plasmicapp/host/registerComponent';
19
18
 
20
19
  var __defProp = Object.defineProperty;
20
+ var __defProps = Object.defineProperties;
21
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
21
22
  var __getOwnPropSymbols = Object.getOwnPropertySymbols;
22
23
  var __hasOwnProp = Object.prototype.hasOwnProperty;
23
24
  var __propIsEnum = Object.prototype.propertyIsEnumerable;
@@ -33,6 +34,7 @@ var __spreadValues = (a, b) => {
33
34
  }
34
35
  return a;
35
36
  };
37
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
36
38
  const BaseSelectValue = (props) => {
37
39
  const { children, customize } = props;
38
40
  return /* @__PURE__ */ React.createElement(SelectValue, null, ({ isPlaceholder, selectedText }) => /* @__PURE__ */ React.createElement(React.Fragment, null, isPlaceholder ? /* @__PURE__ */ React.createElement("span", null, "Select an item") : /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("span", null, customize ? children : selectedText))));
@@ -40,29 +42,36 @@ const BaseSelectValue = (props) => {
40
42
  const SELECT_NAME = makeComponentName("select");
41
43
  function BaseSelect(props) {
42
44
  const {
43
- value,
44
- onChange,
45
+ selectedKey,
46
+ onSelectionChange,
45
47
  placeholder,
46
48
  previewOpen,
47
49
  onOpenChange,
48
50
  isDisabled,
49
51
  className,
50
52
  style,
51
- structure,
53
+ children,
52
54
  name,
53
55
  isOpen,
56
+ setControlContextData,
54
57
  "aria-label": ariaLabel
55
58
  } = props;
56
- const { options } = useStrictOptions(props);
57
59
  const isEditMode = !!usePlasmicCanvasContext();
58
60
  const openProp = isEditMode && previewOpen ? true : isOpen;
59
- const disabledKeys = flattenOptions(options).filter((op) => op.isDisabled).map((op) => op.id);
61
+ let idManager = useMemo(() => new ListBoxItemIdManager(), []);
62
+ useEffect(() => {
63
+ idManager.subscribe((ids) => {
64
+ setControlContextData == null ? void 0 : setControlContextData({
65
+ itemIds: ids
66
+ });
67
+ });
68
+ }, []);
60
69
  return /* @__PURE__ */ React.createElement(
61
70
  Select,
62
71
  __spreadValues({
63
72
  placeholder,
64
- selectedKey: value,
65
- onSelectionChange: onChange,
73
+ selectedKey,
74
+ onSelectionChange,
66
75
  onOpenChange,
67
76
  isDisabled,
68
77
  className,
@@ -75,11 +84,10 @@ function BaseSelect(props) {
75
84
  PlasmicListBoxContext.Provider,
76
85
  {
77
86
  value: {
78
- items: options,
79
- disabledKeys
87
+ idManager
80
88
  }
81
89
  },
82
- structure
90
+ children
83
91
  ))
84
92
  );
85
93
  }
@@ -121,27 +129,44 @@ function registerSelect(loader) {
121
129
  displayName: "Aria Select",
122
130
  importPath: "@plasmicpkgs/react-aria/skinny/registerSelect",
123
131
  importName: "BaseSelect",
124
- props: {
125
- options: makeOptionsPropType(),
126
- placeholder: {
127
- type: "string"
132
+ props: __spreadProps(__spreadValues({}, getCommonProps("Select", [
133
+ "name",
134
+ "aria-label",
135
+ "placeholder",
136
+ "isDisabled",
137
+ "autoFocus"
138
+ ])), {
139
+ selectedKey: {
140
+ type: "choice",
141
+ description: "The selected keys of the listbox",
142
+ editOnly: true,
143
+ uncontrolledProp: "defaultSelectedKey",
144
+ displayName: "Initial selected key",
145
+ options: (_props, ctx) => (ctx == null ? void 0 : ctx.itemIds) ? Array.from(ctx.itemIds) : [],
146
+ // React Aria Select do not support multiple selections yet
147
+ multiSelect: false
128
148
  },
129
- isDisabled: {
130
- type: "boolean"
131
- },
132
- value: makeValuePropType(),
133
- onChange: {
149
+ onSelectionChange: {
134
150
  type: "eventHandler",
135
151
  argTypes: [{ name: "value", type: "string" }]
136
152
  },
153
+ disabledKeys: {
154
+ type: "choice",
155
+ description: "The item keys that are disabled. These items cannot be selected, focused, or otherwise interacted with.",
156
+ options: (_props, ctx) => (ctx == null ? void 0 : ctx.itemIds) ? Array.from(ctx.itemIds) : [],
157
+ multiSelect: true,
158
+ advanced: true
159
+ },
137
160
  previewOpen: {
138
161
  type: "boolean",
139
162
  displayName: "Preview opened?",
140
163
  description: "Preview opened state while designing in Plasmic editor",
141
- editOnly: true
164
+ editOnly: true,
165
+ defaultValue: false
142
166
  },
143
167
  isOpen: {
144
168
  type: "boolean",
169
+ defaultValue: false,
145
170
  // It doesn't make sense to make isOpen prop editable (it's controlled by user interaction and always closed by default), so we keep this prop hidden. We have listed the prop here in the meta only so we can expose a writeable state for it.
146
171
  hidden: () => true
147
172
  },
@@ -149,40 +174,7 @@ function registerSelect(loader) {
149
174
  type: "eventHandler",
150
175
  argTypes: [{ name: "isOpen", type: "boolean" }]
151
176
  },
152
- // optionValue: {
153
- // type: "string",
154
- // displayName: "Field key for an option's value",
155
- // hidden: (ps) =>
156
- // !ps.options ||
157
- // !ps.options[0] ||
158
- // typeof ps.options[0] === "string" ||
159
- // "value" in ps.options[0],
160
- // exprHint:
161
- // "Return a function that takes in an option object, and returns the key to use",
162
- // },
163
- // optionText: {
164
- // type: "string",
165
- // displayName: "Field key for an option's text value",
166
- // hidden: (ps) =>
167
- // !ps.options ||
168
- // !ps.options[0] ||
169
- // typeof ps.options[0] === "string" ||
170
- // "value" in ps.options[0],
171
- // exprHint:
172
- // "Return a function that takes in an option object, and returns the text value to use",
173
- // },
174
- // optionDisabled: {
175
- // type: "string",
176
- // displayName: "Field key for whether an option is disabled",
177
- // hidden: (ps) =>
178
- // !ps.options ||
179
- // !ps.options[0] ||
180
- // typeof ps.options[0] === "string" ||
181
- // "value" in ps.options[0],
182
- // exprHint:
183
- // "Return a function that takes in an option object, and returns true if option should be disabled",
184
- // },
185
- structure: {
177
+ children: {
186
178
  type: "slot",
187
179
  defaultValue: [
188
180
  {
@@ -250,6 +242,9 @@ function registerSelect(loader) {
250
242
  {
251
243
  type: "component",
252
244
  name: LIST_BOX_COMPONENT_NAME,
245
+ props: {
246
+ selectionMode: "single"
247
+ },
253
248
  styles: {
254
249
  borderWidth: 0,
255
250
  width: "stretch"
@@ -261,31 +256,13 @@ function registerSelect(loader) {
261
256
  ]
262
257
  }
263
258
  ]
264
- },
265
- // renderOption: {
266
- // type: "slot",
267
- // displayName: "Custom render option",
268
- // renderPropParams: ["item"],
269
- // hidePlaceholder: true
270
- // },
271
- name: {
272
- type: "string",
273
- displayName: "Form field key",
274
- description: "Name of the input, when submitting in an HTML form",
275
- advanced: true
276
- },
277
- "aria-label": {
278
- type: "string",
279
- displayName: "ARIA label",
280
- description: "Label for this input, if no visible label is used",
281
- advanced: true
282
259
  }
283
- },
260
+ }),
284
261
  states: {
285
- value: {
262
+ selectedKey: {
286
263
  type: "writable",
287
- valueProp: "value",
288
- onChangeProp: "onChange",
264
+ valueProp: "selectedKey",
265
+ onChangeProp: "onSelectionChange",
289
266
  variableType: "text"
290
267
  },
291
268
  isOpen: {