@plasmicpkgs/react-aria 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +21 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/contexts.d.ts +14 -0
- package/dist/index.d.ts +2 -0
- package/dist/option-utils.d.ts +51 -0
- package/dist/react-aria.esm.js +1191 -0
- package/dist/react-aria.esm.js.map +1 -0
- package/dist/react-aria.js +1198 -0
- package/dist/react-aria.js.map +1 -0
- package/dist/registerButton.d.ts +4 -0
- package/dist/registerComboBox.d.ts +21 -0
- package/dist/registerHeader.d.ts +5 -0
- package/dist/registerInput.d.ts +5 -0
- package/dist/registerLabel.d.ts +5 -0
- package/dist/registerListBox.d.ts +14 -0
- package/dist/registerListBoxItem.d.ts +7 -0
- package/dist/registerPopover.d.ts +7 -0
- package/dist/registerSection.d.ts +14 -0
- package/dist/registerSelect.d.ts +23 -0
- package/dist/utils.d.ts +18 -0
- package/package.json +74 -0
- package/skinny/contexts-c0294d96.cjs.js +24 -0
- package/skinny/contexts-c0294d96.cjs.js.map +1 -0
- package/skinny/contexts-fd3e1077.esm.js +12 -0
- package/skinny/contexts-fd3e1077.esm.js.map +1 -0
- package/skinny/contexts.d.ts +14 -0
- package/skinny/option-utils-0db61f6d.cjs.js +162 -0
- package/skinny/option-utils-0db61f6d.cjs.js.map +1 -0
- package/skinny/option-utils-765a1782.esm.js +153 -0
- package/skinny/option-utils-765a1782.esm.js.map +1 -0
- package/skinny/option-utils.d.ts +51 -0
- package/skinny/registerButton.cjs.js +31 -0
- package/skinny/registerButton.cjs.js.map +1 -0
- package/skinny/registerButton.d.ts +4 -0
- package/skinny/registerButton.esm.js +26 -0
- package/skinny/registerButton.esm.js.map +1 -0
- package/skinny/registerComboBox.cjs.js +291 -0
- package/skinny/registerComboBox.cjs.js.map +1 -0
- package/skinny/registerComboBox.d.ts +21 -0
- package/skinny/registerComboBox.esm.js +284 -0
- package/skinny/registerComboBox.esm.js.map +1 -0
- package/skinny/registerHeader.cjs.js +51 -0
- package/skinny/registerHeader.cjs.js.map +1 -0
- package/skinny/registerHeader.d.ts +5 -0
- package/skinny/registerHeader.esm.js +44 -0
- package/skinny/registerHeader.esm.js.map +1 -0
- package/skinny/registerInput.cjs.js +78 -0
- package/skinny/registerInput.cjs.js.map +1 -0
- package/skinny/registerInput.d.ts +5 -0
- package/skinny/registerInput.esm.js +71 -0
- package/skinny/registerInput.esm.js.map +1 -0
- package/skinny/registerLabel.cjs.js +59 -0
- package/skinny/registerLabel.cjs.js.map +1 -0
- package/skinny/registerLabel.d.ts +5 -0
- package/skinny/registerLabel.esm.js +52 -0
- package/skinny/registerLabel.esm.js.map +1 -0
- package/skinny/registerListBox.cjs.js +145 -0
- package/skinny/registerListBox.cjs.js.map +1 -0
- package/skinny/registerListBox.d.ts +14 -0
- package/skinny/registerListBox.esm.js +138 -0
- package/skinny/registerListBox.esm.js.map +1 -0
- package/skinny/registerListBoxItem.cjs.js +72 -0
- package/skinny/registerListBoxItem.cjs.js.map +1 -0
- package/skinny/registerListBoxItem.d.ts +7 -0
- package/skinny/registerListBoxItem.esm.js +65 -0
- package/skinny/registerListBoxItem.esm.js.map +1 -0
- package/skinny/registerPopover.cjs.js +111 -0
- package/skinny/registerPopover.cjs.js.map +1 -0
- package/skinny/registerPopover.d.ts +7 -0
- package/skinny/registerPopover.esm.js +104 -0
- package/skinny/registerPopover.esm.js.map +1 -0
- package/skinny/registerSection.cjs.js +82 -0
- package/skinny/registerSection.cjs.js.map +1 -0
- package/skinny/registerSection.d.ts +14 -0
- package/skinny/registerSection.esm.js +75 -0
- package/skinny/registerSection.esm.js.map +1 -0
- package/skinny/registerSelect.cjs.js +199 -0
- package/skinny/registerSelect.cjs.js.map +1 -0
- package/skinny/registerSelect.d.ts +23 -0
- package/skinny/registerSelect.esm.js +189 -0
- package/skinny/registerSelect.esm.js.map +1 -0
- package/skinny/utils-044c7f37.cjs.js +74 -0
- package/skinny/utils-044c7f37.cjs.js.map +1 -0
- package/skinny/utils-d92b3b76.esm.js +64 -0
- package/skinny/utils-d92b3b76.esm.js.map +1 -0
- package/skinny/utils.d.ts +18 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"option-utils-0db61f6d.cjs.js","sources":["../src/option-utils.ts"],"sourcesContent":["import type { ArrayType, ChoiceType } from \"@plasmicapp/host/registerComponent\";\nimport React from \"react\";\n\nexport interface ObjectSectionType<T extends object> {\n label?: string;\n items?: ObjectItemType<T>[];\n}\ninterface FlexSectionType<T extends object> {\n label?: string;\n items?: FlexItemType<T>[];\n}\n\nexport type ObjectItemType<T extends object> = StrictOptionType | T;\ntype FlexItemType<T extends object> = ObjectItemType<T> | string;\n\nexport type FlexOptionType<T extends object> =\n | FlexItemType<T>\n | FlexSectionType<T>;\n\nexport type ObjectOptionType<T extends object> =\n | ObjectSectionType<T>\n | ObjectItemType<T>;\n\nexport interface HasOptions<T extends object> {\n options?: FlexOptionType<T>[];\n optionInfo?: (option: FlexOptionType<T>) =>\n | {\n type?: \"item\";\n value: string;\n label?: string;\n isDisabled?: boolean;\n }\n | {\n type: \"section\";\n label?: string;\n items?: FlexOptionType<T>[];\n };\n}\n\nexport interface StrictItemType {\n type?: \"item\";\n value: string;\n label?: string;\n isDisabled?: boolean;\n}\n\nexport interface StrictSectionType {\n type: \"section\";\n label?: string;\n items?: StrictItemType[];\n key: string;\n}\n\nexport type StrictOptionType = StrictItemType | StrictSectionType;\n\nexport function useStrictOptions<T extends object>(props: HasOptions<T>) {\n const { options, optionInfo } = props;\n return React.useMemo(() => {\n return deriveStrictOptions({ options, optionInfo });\n }, [options, optionInfo]);\n}\n\nexport function deriveStrictOptions<T extends object>(props: HasOptions<T>) {\n const { options, optionInfo } = props;\n\n let sectionCount = 0;\n\n const makeStrict = (op: FlexOptionType<T>): StrictOptionType | undefined => {\n if (!op) {\n return undefined;\n } else if (typeof op === \"string\" || typeof op === \"number\") {\n const item = {\n value: op,\n };\n return item;\n } else if (optionInfo) {\n const info = optionInfo(op);\n if (info.type === \"section\") {\n const section: StrictSectionType = {\n type: \"section\",\n items: info.items\n ?.map?.((item) => makeStrict(item) as StrictItemType)\n ?.filter((x) => !!x),\n label: info.label,\n key: `section-${sectionCount}`,\n };\n sectionCount += 1;\n return section;\n } else {\n let item = info;\n if (!(\"value\" in item)) {\n item = {\n type: \"item\",\n value: JSON.stringify(item),\n };\n }\n return item;\n }\n } else if (typeof op === \"object\") {\n if (\"items\" in op) {\n const section: StrictSectionType = {\n type: \"section\",\n items: op.items\n ?.map?.((item) => makeStrict(item) as StrictItemType)\n ?.filter((x) => !!x),\n label: op.label,\n key: `section-${sectionCount}`,\n };\n sectionCount += 1;\n return section;\n } else {\n let item = op;\n if (!(\"value\" in item)) {\n item = {\n type: \"item\",\n value: JSON.stringify(item),\n };\n }\n return item;\n }\n } else {\n return undefined;\n }\n };\n\n const strictOptions = options\n ?.map(makeStrict)\n ?.filter((x): x is StrictOptionType => !!x);\n\n const optionText = (op: StrictItemType) => {\n return op.label ?? op.value;\n };\n\n return { options: strictOptions, optionText };\n}\n\nexport function flattenOptions(\n options: (StrictItemType | StrictSectionType)[] | undefined\n): StrictItemType[] {\n if (!options) {\n return [];\n } else {\n return options.flatMap((op) =>\n op.type === \"section\" ? op.items ?? [] : op\n );\n }\n}\n\nexport function makeOptionsPropType() {\n const type: ArrayType<HasOptions<any>> = {\n type: \"array\",\n itemType: {\n type: \"object\",\n nameFunc: (item: any) => item.label || item.value,\n fields: {\n type: {\n type: \"choice\",\n options: [\n { value: \"option\", label: \"Option\" },\n { value: \"option-group\", label: \"Option Group\" },\n ],\n defaultValue: \"option\",\n },\n value: {\n type: \"string\",\n hidden: (_ps: any, _ctx: any, { item }: any) =>\n item.type !== \"option\",\n },\n label: \"string\",\n items: {\n type: \"array\",\n displayName: \"Options\",\n hidden: (_ps: any, _ctx: any, { item }: any) => {\n return item.type !== \"option-group\";\n },\n itemType: {\n type: \"object\",\n nameFunc: (item: any) => item.label || item.value,\n fields: {\n value: \"string\",\n label: \"string\",\n },\n },\n },\n },\n },\n defaultValue: [\n {\n value: \"option1\",\n label: \"Option 1\",\n type: \"option\",\n },\n {\n value: \"option2\",\n label: \"Option 2\",\n type: \"option\",\n },\n ],\n };\n return type;\n}\n\nexport function makeValuePropType() {\n const type: ChoiceType<HasOptions<any>> = {\n type: \"choice\",\n options: (ps) => {\n const { options, optionText } = deriveStrictOptions(ps);\n return flattenOptions(options).map((op) => ({\n value: op.value,\n label: optionText(op),\n }));\n },\n };\n return type;\n}\n"],"names":["React","_a"],"mappings":"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"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
function useStrictOptions(props) {
|
|
4
|
+
const { options, optionInfo } = props;
|
|
5
|
+
return React.useMemo(() => {
|
|
6
|
+
return deriveStrictOptions({ options, optionInfo });
|
|
7
|
+
}, [options, optionInfo]);
|
|
8
|
+
}
|
|
9
|
+
function deriveStrictOptions(props) {
|
|
10
|
+
var _a;
|
|
11
|
+
const { options, optionInfo } = props;
|
|
12
|
+
let sectionCount = 0;
|
|
13
|
+
const makeStrict = (op) => {
|
|
14
|
+
var _a2, _b, _c, _d, _e, _f;
|
|
15
|
+
if (!op) {
|
|
16
|
+
return void 0;
|
|
17
|
+
} else if (typeof op === "string" || typeof op === "number") {
|
|
18
|
+
const item = {
|
|
19
|
+
value: op
|
|
20
|
+
};
|
|
21
|
+
return item;
|
|
22
|
+
} else if (optionInfo) {
|
|
23
|
+
const info = optionInfo(op);
|
|
24
|
+
if (info.type === "section") {
|
|
25
|
+
const section = {
|
|
26
|
+
type: "section",
|
|
27
|
+
items: (_c = (_b = (_a2 = info.items) == null ? void 0 : _a2.map) == null ? void 0 : _b.call(_a2, (item) => makeStrict(item))) == null ? void 0 : _c.filter((x) => !!x),
|
|
28
|
+
label: info.label,
|
|
29
|
+
key: `section-${sectionCount}`
|
|
30
|
+
};
|
|
31
|
+
sectionCount += 1;
|
|
32
|
+
return section;
|
|
33
|
+
} else {
|
|
34
|
+
let item = info;
|
|
35
|
+
if (!("value" in item)) {
|
|
36
|
+
item = {
|
|
37
|
+
type: "item",
|
|
38
|
+
value: JSON.stringify(item)
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
return item;
|
|
42
|
+
}
|
|
43
|
+
} else if (typeof op === "object") {
|
|
44
|
+
if ("items" in op) {
|
|
45
|
+
const section = {
|
|
46
|
+
type: "section",
|
|
47
|
+
items: (_f = (_e = (_d = op.items) == null ? void 0 : _d.map) == null ? void 0 : _e.call(_d, (item) => makeStrict(item))) == null ? void 0 : _f.filter((x) => !!x),
|
|
48
|
+
label: op.label,
|
|
49
|
+
key: `section-${sectionCount}`
|
|
50
|
+
};
|
|
51
|
+
sectionCount += 1;
|
|
52
|
+
return section;
|
|
53
|
+
} else {
|
|
54
|
+
let item = op;
|
|
55
|
+
if (!("value" in item)) {
|
|
56
|
+
item = {
|
|
57
|
+
type: "item",
|
|
58
|
+
value: JSON.stringify(item)
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
return item;
|
|
62
|
+
}
|
|
63
|
+
} else {
|
|
64
|
+
return void 0;
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
const strictOptions = (_a = options == null ? void 0 : options.map(makeStrict)) == null ? void 0 : _a.filter((x) => !!x);
|
|
68
|
+
const optionText = (op) => {
|
|
69
|
+
var _a2;
|
|
70
|
+
return (_a2 = op.label) != null ? _a2 : op.value;
|
|
71
|
+
};
|
|
72
|
+
return { options: strictOptions, optionText };
|
|
73
|
+
}
|
|
74
|
+
function flattenOptions(options) {
|
|
75
|
+
if (!options) {
|
|
76
|
+
return [];
|
|
77
|
+
} else {
|
|
78
|
+
return options.flatMap(
|
|
79
|
+
(op) => {
|
|
80
|
+
var _a;
|
|
81
|
+
return op.type === "section" ? (_a = op.items) != null ? _a : [] : op;
|
|
82
|
+
}
|
|
83
|
+
);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
function makeOptionsPropType() {
|
|
87
|
+
const type = {
|
|
88
|
+
type: "array",
|
|
89
|
+
itemType: {
|
|
90
|
+
type: "object",
|
|
91
|
+
nameFunc: (item) => item.label || item.value,
|
|
92
|
+
fields: {
|
|
93
|
+
type: {
|
|
94
|
+
type: "choice",
|
|
95
|
+
options: [
|
|
96
|
+
{ value: "option", label: "Option" },
|
|
97
|
+
{ value: "option-group", label: "Option Group" }
|
|
98
|
+
],
|
|
99
|
+
defaultValue: "option"
|
|
100
|
+
},
|
|
101
|
+
value: {
|
|
102
|
+
type: "string",
|
|
103
|
+
hidden: (_ps, _ctx, { item }) => item.type !== "option"
|
|
104
|
+
},
|
|
105
|
+
label: "string",
|
|
106
|
+
items: {
|
|
107
|
+
type: "array",
|
|
108
|
+
displayName: "Options",
|
|
109
|
+
hidden: (_ps, _ctx, { item }) => {
|
|
110
|
+
return item.type !== "option-group";
|
|
111
|
+
},
|
|
112
|
+
itemType: {
|
|
113
|
+
type: "object",
|
|
114
|
+
nameFunc: (item) => item.label || item.value,
|
|
115
|
+
fields: {
|
|
116
|
+
value: "string",
|
|
117
|
+
label: "string"
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
},
|
|
123
|
+
defaultValue: [
|
|
124
|
+
{
|
|
125
|
+
value: "option1",
|
|
126
|
+
label: "Option 1",
|
|
127
|
+
type: "option"
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
value: "option2",
|
|
131
|
+
label: "Option 2",
|
|
132
|
+
type: "option"
|
|
133
|
+
}
|
|
134
|
+
]
|
|
135
|
+
};
|
|
136
|
+
return type;
|
|
137
|
+
}
|
|
138
|
+
function makeValuePropType() {
|
|
139
|
+
const type = {
|
|
140
|
+
type: "choice",
|
|
141
|
+
options: (ps) => {
|
|
142
|
+
const { options, optionText } = deriveStrictOptions(ps);
|
|
143
|
+
return flattenOptions(options).map((op) => ({
|
|
144
|
+
value: op.value,
|
|
145
|
+
label: optionText(op)
|
|
146
|
+
}));
|
|
147
|
+
}
|
|
148
|
+
};
|
|
149
|
+
return type;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
export { makeValuePropType as a, flattenOptions as f, makeOptionsPropType as m, useStrictOptions as u };
|
|
153
|
+
//# sourceMappingURL=option-utils-765a1782.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"option-utils-765a1782.esm.js","sources":["../src/option-utils.ts"],"sourcesContent":["import type { ArrayType, ChoiceType } from \"@plasmicapp/host/registerComponent\";\nimport React from \"react\";\n\nexport interface ObjectSectionType<T extends object> {\n label?: string;\n items?: ObjectItemType<T>[];\n}\ninterface FlexSectionType<T extends object> {\n label?: string;\n items?: FlexItemType<T>[];\n}\n\nexport type ObjectItemType<T extends object> = StrictOptionType | T;\ntype FlexItemType<T extends object> = ObjectItemType<T> | string;\n\nexport type FlexOptionType<T extends object> =\n | FlexItemType<T>\n | FlexSectionType<T>;\n\nexport type ObjectOptionType<T extends object> =\n | ObjectSectionType<T>\n | ObjectItemType<T>;\n\nexport interface HasOptions<T extends object> {\n options?: FlexOptionType<T>[];\n optionInfo?: (option: FlexOptionType<T>) =>\n | {\n type?: \"item\";\n value: string;\n label?: string;\n isDisabled?: boolean;\n }\n | {\n type: \"section\";\n label?: string;\n items?: FlexOptionType<T>[];\n };\n}\n\nexport interface StrictItemType {\n type?: \"item\";\n value: string;\n label?: string;\n isDisabled?: boolean;\n}\n\nexport interface StrictSectionType {\n type: \"section\";\n label?: string;\n items?: StrictItemType[];\n key: string;\n}\n\nexport type StrictOptionType = StrictItemType | StrictSectionType;\n\nexport function useStrictOptions<T extends object>(props: HasOptions<T>) {\n const { options, optionInfo } = props;\n return React.useMemo(() => {\n return deriveStrictOptions({ options, optionInfo });\n }, [options, optionInfo]);\n}\n\nexport function deriveStrictOptions<T extends object>(props: HasOptions<T>) {\n const { options, optionInfo } = props;\n\n let sectionCount = 0;\n\n const makeStrict = (op: FlexOptionType<T>): StrictOptionType | undefined => {\n if (!op) {\n return undefined;\n } else if (typeof op === \"string\" || typeof op === \"number\") {\n const item = {\n value: op,\n };\n return item;\n } else if (optionInfo) {\n const info = optionInfo(op);\n if (info.type === \"section\") {\n const section: StrictSectionType = {\n type: \"section\",\n items: info.items\n ?.map?.((item) => makeStrict(item) as StrictItemType)\n ?.filter((x) => !!x),\n label: info.label,\n key: `section-${sectionCount}`,\n };\n sectionCount += 1;\n return section;\n } else {\n let item = info;\n if (!(\"value\" in item)) {\n item = {\n type: \"item\",\n value: JSON.stringify(item),\n };\n }\n return item;\n }\n } else if (typeof op === \"object\") {\n if (\"items\" in op) {\n const section: StrictSectionType = {\n type: \"section\",\n items: op.items\n ?.map?.((item) => makeStrict(item) as StrictItemType)\n ?.filter((x) => !!x),\n label: op.label,\n key: `section-${sectionCount}`,\n };\n sectionCount += 1;\n return section;\n } else {\n let item = op;\n if (!(\"value\" in item)) {\n item = {\n type: \"item\",\n value: JSON.stringify(item),\n };\n }\n return item;\n }\n } else {\n return undefined;\n }\n };\n\n const strictOptions = options\n ?.map(makeStrict)\n ?.filter((x): x is StrictOptionType => !!x);\n\n const optionText = (op: StrictItemType) => {\n return op.label ?? op.value;\n };\n\n return { options: strictOptions, optionText };\n}\n\nexport function flattenOptions(\n options: (StrictItemType | StrictSectionType)[] | undefined\n): StrictItemType[] {\n if (!options) {\n return [];\n } else {\n return options.flatMap((op) =>\n op.type === \"section\" ? op.items ?? [] : op\n );\n }\n}\n\nexport function makeOptionsPropType() {\n const type: ArrayType<HasOptions<any>> = {\n type: \"array\",\n itemType: {\n type: \"object\",\n nameFunc: (item: any) => item.label || item.value,\n fields: {\n type: {\n type: \"choice\",\n options: [\n { value: \"option\", label: \"Option\" },\n { value: \"option-group\", label: \"Option Group\" },\n ],\n defaultValue: \"option\",\n },\n value: {\n type: \"string\",\n hidden: (_ps: any, _ctx: any, { item }: any) =>\n item.type !== \"option\",\n },\n label: \"string\",\n items: {\n type: \"array\",\n displayName: \"Options\",\n hidden: (_ps: any, _ctx: any, { item }: any) => {\n return item.type !== \"option-group\";\n },\n itemType: {\n type: \"object\",\n nameFunc: (item: any) => item.label || item.value,\n fields: {\n value: \"string\",\n label: \"string\",\n },\n },\n },\n },\n },\n defaultValue: [\n {\n value: \"option1\",\n label: \"Option 1\",\n type: \"option\",\n },\n {\n value: \"option2\",\n label: \"Option 2\",\n type: \"option\",\n },\n ],\n };\n return type;\n}\n\nexport function makeValuePropType() {\n const type: ChoiceType<HasOptions<any>> = {\n type: \"choice\",\n options: (ps) => {\n const { options, optionText } = deriveStrictOptions(ps);\n return flattenOptions(options).map((op) => ({\n value: op.value,\n label: optionText(op),\n }));\n },\n };\n return type;\n}\n"],"names":["_a"],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { ArrayType } from "@plasmicapp/host/registerComponent";
|
|
2
|
+
export interface ObjectSectionType<T extends object> {
|
|
3
|
+
label?: string;
|
|
4
|
+
items?: ObjectItemType<T>[];
|
|
5
|
+
}
|
|
6
|
+
interface FlexSectionType<T extends object> {
|
|
7
|
+
label?: string;
|
|
8
|
+
items?: FlexItemType<T>[];
|
|
9
|
+
}
|
|
10
|
+
export type ObjectItemType<T extends object> = StrictOptionType | T;
|
|
11
|
+
type FlexItemType<T extends object> = ObjectItemType<T> | string;
|
|
12
|
+
export type FlexOptionType<T extends object> = FlexItemType<T> | FlexSectionType<T>;
|
|
13
|
+
export type ObjectOptionType<T extends object> = ObjectSectionType<T> | ObjectItemType<T>;
|
|
14
|
+
export interface HasOptions<T extends object> {
|
|
15
|
+
options?: FlexOptionType<T>[];
|
|
16
|
+
optionInfo?: (option: FlexOptionType<T>) => {
|
|
17
|
+
type?: "item";
|
|
18
|
+
value: string;
|
|
19
|
+
label?: string;
|
|
20
|
+
isDisabled?: boolean;
|
|
21
|
+
} | {
|
|
22
|
+
type: "section";
|
|
23
|
+
label?: string;
|
|
24
|
+
items?: FlexOptionType<T>[];
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
export interface StrictItemType {
|
|
28
|
+
type?: "item";
|
|
29
|
+
value: string;
|
|
30
|
+
label?: string;
|
|
31
|
+
isDisabled?: boolean;
|
|
32
|
+
}
|
|
33
|
+
export interface StrictSectionType {
|
|
34
|
+
type: "section";
|
|
35
|
+
label?: string;
|
|
36
|
+
items?: StrictItemType[];
|
|
37
|
+
key: string;
|
|
38
|
+
}
|
|
39
|
+
export type StrictOptionType = StrictItemType | StrictSectionType;
|
|
40
|
+
export declare function useStrictOptions<T extends object>(props: HasOptions<T>): {
|
|
41
|
+
options: StrictOptionType[] | undefined;
|
|
42
|
+
optionText: (op: StrictItemType) => string;
|
|
43
|
+
};
|
|
44
|
+
export declare function deriveStrictOptions<T extends object>(props: HasOptions<T>): {
|
|
45
|
+
options: StrictOptionType[] | undefined;
|
|
46
|
+
optionText: (op: StrictItemType) => string;
|
|
47
|
+
};
|
|
48
|
+
export declare function flattenOptions(options: (StrictItemType | StrictSectionType)[] | undefined): StrictItemType[];
|
|
49
|
+
export declare function makeOptionsPropType(): ArrayType<HasOptions<any>>;
|
|
50
|
+
export declare function makeValuePropType(): import("@plasmicapp/host/registerComponent").SingleChoiceType<HasOptions<any>>;
|
|
51
|
+
export {};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var reactAriaComponents = require('react-aria-components');
|
|
4
|
+
var utils = require('./utils-044c7f37.cjs.js');
|
|
5
|
+
require('@plasmicapp/host/registerComponent');
|
|
6
|
+
|
|
7
|
+
function registerButton(loader, overrides) {
|
|
8
|
+
utils.registerComponentHelper(
|
|
9
|
+
loader,
|
|
10
|
+
reactAriaComponents.Button,
|
|
11
|
+
{
|
|
12
|
+
name: "plasmic-react-aria-button",
|
|
13
|
+
displayName: "BaseButton",
|
|
14
|
+
importPath: "@plasmicpkgs/react-aria/registerButton",
|
|
15
|
+
importName: "BaseButton",
|
|
16
|
+
props: {
|
|
17
|
+
children: {
|
|
18
|
+
type: "slot"
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
overrides
|
|
23
|
+
);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
Object.defineProperty(exports, 'BaseButton', {
|
|
27
|
+
enumerable: true,
|
|
28
|
+
get: function () { return reactAriaComponents.Button; }
|
|
29
|
+
});
|
|
30
|
+
exports.registerButton = registerButton;
|
|
31
|
+
//# sourceMappingURL=registerButton.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registerButton.cjs.js","sources":["../src/registerButton.tsx"],"sourcesContent":["import { Button as BaseButton } from \"react-aria-components\";\nimport {\n CodeComponentMetaOverrides,\n Registerable,\n registerComponentHelper,\n} from \"./utils\";\n\nexport { BaseButton };\n\nexport function registerButton(\n loader?: Registerable,\n overrides?: CodeComponentMetaOverrides<typeof BaseButton>\n) {\n registerComponentHelper(\n loader,\n BaseButton,\n {\n name: \"plasmic-react-aria-button\",\n displayName: \"BaseButton\",\n importPath: \"@plasmicpkgs/react-aria/registerButton\",\n importName: \"BaseButton\",\n props: {\n children: {\n type: \"slot\",\n },\n },\n },\n overrides\n );\n}\n"],"names":["registerComponentHelper","BaseButton"],"mappings":";;;;;;AASgB,SAAA,cAAA,CACd,QACA,SACA,EAAA;AACA,EAAAA,6BAAA;AAAA,IACE,MAAA;AAAA,IACAC,0BAAA;AAAA,IACA;AAAA,MACE,IAAM,EAAA,2BAAA;AAAA,MACN,WAAa,EAAA,YAAA;AAAA,MACb,UAAY,EAAA,wCAAA;AAAA,MACZ,UAAY,EAAA,YAAA;AAAA,MACZ,KAAO,EAAA;AAAA,QACL,QAAU,EAAA;AAAA,UACR,IAAM,EAAA,MAAA;AAAA,SACR;AAAA,OACF;AAAA,KACF;AAAA,IACA,SAAA;AAAA,GACF,CAAA;AACF;;;;;;;;"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { Button as BaseButton } from "react-aria-components";
|
|
2
|
+
import { CodeComponentMetaOverrides, Registerable } from "./utils";
|
|
3
|
+
export { BaseButton };
|
|
4
|
+
export declare function registerButton(loader?: Registerable, overrides?: CodeComponentMetaOverrides<typeof BaseButton>): void;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Button } from 'react-aria-components';
|
|
2
|
+
export { Button as BaseButton } from 'react-aria-components';
|
|
3
|
+
import { r as registerComponentHelper } from './utils-d92b3b76.esm.js';
|
|
4
|
+
import '@plasmicapp/host/registerComponent';
|
|
5
|
+
|
|
6
|
+
function registerButton(loader, overrides) {
|
|
7
|
+
registerComponentHelper(
|
|
8
|
+
loader,
|
|
9
|
+
Button,
|
|
10
|
+
{
|
|
11
|
+
name: "plasmic-react-aria-button",
|
|
12
|
+
displayName: "BaseButton",
|
|
13
|
+
importPath: "@plasmicpkgs/react-aria/registerButton",
|
|
14
|
+
importName: "BaseButton",
|
|
15
|
+
props: {
|
|
16
|
+
children: {
|
|
17
|
+
type: "slot"
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
overrides
|
|
22
|
+
);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export { registerButton };
|
|
26
|
+
//# sourceMappingURL=registerButton.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registerButton.esm.js","sources":["../src/registerButton.tsx"],"sourcesContent":["import { Button as BaseButton } from \"react-aria-components\";\nimport {\n CodeComponentMetaOverrides,\n Registerable,\n registerComponentHelper,\n} from \"./utils\";\n\nexport { BaseButton };\n\nexport function registerButton(\n loader?: Registerable,\n overrides?: CodeComponentMetaOverrides<typeof BaseButton>\n) {\n registerComponentHelper(\n loader,\n BaseButton,\n {\n name: \"plasmic-react-aria-button\",\n displayName: \"BaseButton\",\n importPath: \"@plasmicpkgs/react-aria/registerButton\",\n importName: \"BaseButton\",\n props: {\n children: {\n type: \"slot\",\n },\n },\n },\n overrides\n );\n}\n"],"names":["BaseButton"],"mappings":";;;;;AASgB,SAAA,cAAA,CACd,QACA,SACA,EAAA;AACA,EAAA,uBAAA;AAAA,IACE,MAAA;AAAA,IACAA,MAAA;AAAA,IACA;AAAA,MACE,IAAM,EAAA,2BAAA;AAAA,MACN,WAAa,EAAA,YAAA;AAAA,MACb,UAAY,EAAA,wCAAA;AAAA,MACZ,UAAY,EAAA,YAAA;AAAA,MACZ,KAAO,EAAA;AAAA,QACL,QAAU,EAAA;AAAA,UACR,IAAM,EAAA,MAAA;AAAA,SACR;AAAA,OACF;AAAA,KACF;AAAA,IACA,SAAA;AAAA,GACF,CAAA;AACF;;;;"}
|
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var i18n = require('@react-aria/i18n');
|
|
4
|
+
var React = require('react');
|
|
5
|
+
var reactAriaComponents = require('react-aria-components');
|
|
6
|
+
var contexts = require('./contexts-c0294d96.cjs.js');
|
|
7
|
+
var optionUtils = require('./option-utils-0db61f6d.cjs.js');
|
|
8
|
+
var utils = require('./utils-044c7f37.cjs.js');
|
|
9
|
+
require('@plasmicapp/host/registerComponent');
|
|
10
|
+
|
|
11
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
|
+
|
|
13
|
+
var React__default = /*#__PURE__*/_interopDefault(React);
|
|
14
|
+
|
|
15
|
+
var __defProp = Object.defineProperty;
|
|
16
|
+
var __defProps = Object.defineProperties;
|
|
17
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
18
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
19
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
20
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
21
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
22
|
+
var __spreadValues = (a, b) => {
|
|
23
|
+
for (var prop in b || (b = {}))
|
|
24
|
+
if (__hasOwnProp.call(b, prop))
|
|
25
|
+
__defNormalProp(a, prop, b[prop]);
|
|
26
|
+
if (__getOwnPropSymbols)
|
|
27
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
28
|
+
if (__propIsEnum.call(b, prop))
|
|
29
|
+
__defNormalProp(a, prop, b[prop]);
|
|
30
|
+
}
|
|
31
|
+
return a;
|
|
32
|
+
};
|
|
33
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
34
|
+
function BaseComboBox(props) {
|
|
35
|
+
const {
|
|
36
|
+
value,
|
|
37
|
+
onChange,
|
|
38
|
+
menuTrigger,
|
|
39
|
+
filterValue,
|
|
40
|
+
onFilterValueChange,
|
|
41
|
+
valueType,
|
|
42
|
+
allowsCustomValue,
|
|
43
|
+
placeholder,
|
|
44
|
+
previewOpen,
|
|
45
|
+
onOpenChange,
|
|
46
|
+
isDisabled,
|
|
47
|
+
className,
|
|
48
|
+
style,
|
|
49
|
+
structure,
|
|
50
|
+
name
|
|
51
|
+
} = props;
|
|
52
|
+
const { options, optionText } = optionUtils.useStrictOptions(props);
|
|
53
|
+
const { contains } = i18n.useFilter({ sensitivity: "base" });
|
|
54
|
+
const [showAllOptions, setShowAllOptions] = React__default.default.useState(false);
|
|
55
|
+
const filteredOptions = React__default.default.useMemo(() => {
|
|
56
|
+
if (!filterValue || filterValue.trim().length === 0) {
|
|
57
|
+
return options;
|
|
58
|
+
}
|
|
59
|
+
if (!options) {
|
|
60
|
+
return options;
|
|
61
|
+
}
|
|
62
|
+
const filterOptions = (options2) => {
|
|
63
|
+
return utils.withoutNils(
|
|
64
|
+
options2.map((op) => {
|
|
65
|
+
if (op.type === "section") {
|
|
66
|
+
return __spreadProps(__spreadValues({}, op), {
|
|
67
|
+
items: op.items ? filterOptions(op.items) : void 0
|
|
68
|
+
});
|
|
69
|
+
} else {
|
|
70
|
+
if (contains(optionText(op), filterValue)) {
|
|
71
|
+
return op;
|
|
72
|
+
} else {
|
|
73
|
+
return void 0;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
})
|
|
77
|
+
);
|
|
78
|
+
};
|
|
79
|
+
return filterOptions(options);
|
|
80
|
+
}, [options, filterValue, contains]);
|
|
81
|
+
const flattenedOptions = React__default.default.useMemo(
|
|
82
|
+
() => optionUtils.flattenOptions(options),
|
|
83
|
+
[options]
|
|
84
|
+
);
|
|
85
|
+
const disabledKeys = flattenedOptions.filter((op) => op.isDisabled).map((op) => op.value);
|
|
86
|
+
const onSelectionChange = React__default.default.useCallback(
|
|
87
|
+
(key) => {
|
|
88
|
+
const selectedOption = flattenedOptions == null ? void 0 : flattenedOptions.find((op) => op.value === key);
|
|
89
|
+
if (valueType === "text") {
|
|
90
|
+
if (selectedOption) {
|
|
91
|
+
onChange == null ? void 0 : onChange(optionText(selectedOption));
|
|
92
|
+
}
|
|
93
|
+
} else {
|
|
94
|
+
onChange == null ? void 0 : onChange(key);
|
|
95
|
+
}
|
|
96
|
+
if (selectedOption) {
|
|
97
|
+
onFilterValueChange == null ? void 0 : onFilterValueChange(optionText(selectedOption));
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
[onChange, onFilterValueChange, flattenedOptions, optionText]
|
|
101
|
+
);
|
|
102
|
+
const onInputValueChange = React__default.default.useCallback(
|
|
103
|
+
(newValue) => {
|
|
104
|
+
onFilterValueChange == null ? void 0 : onFilterValueChange(newValue);
|
|
105
|
+
setShowAllOptions(false);
|
|
106
|
+
if (valueType === "text") {
|
|
107
|
+
if (allowsCustomValue) {
|
|
108
|
+
onChange == null ? void 0 : onChange(newValue);
|
|
109
|
+
} else {
|
|
110
|
+
const matchingOption = flattenedOptions == null ? void 0 : flattenedOptions.find(
|
|
111
|
+
(op) => optionText(op) === newValue
|
|
112
|
+
);
|
|
113
|
+
if (matchingOption) {
|
|
114
|
+
onChange == null ? void 0 : onChange(optionText(matchingOption));
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
},
|
|
119
|
+
[
|
|
120
|
+
onFilterValueChange,
|
|
121
|
+
onChange,
|
|
122
|
+
flattenedOptions,
|
|
123
|
+
optionText,
|
|
124
|
+
valueType,
|
|
125
|
+
allowsCustomValue
|
|
126
|
+
]
|
|
127
|
+
);
|
|
128
|
+
const onBlur = React__default.default.useCallback(() => {
|
|
129
|
+
if (!allowsCustomValue) {
|
|
130
|
+
const selectedOption = flattenedOptions == null ? void 0 : flattenedOptions.find(
|
|
131
|
+
(op) => valueType === "text" ? optionText(op) === value : op.value === value
|
|
132
|
+
);
|
|
133
|
+
if (selectedOption) {
|
|
134
|
+
const selectedOptionText = optionText(selectedOption);
|
|
135
|
+
if (selectedOptionText !== filterValue) {
|
|
136
|
+
onFilterValueChange == null ? void 0 : onFilterValueChange(selectedOptionText);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}, [
|
|
141
|
+
allowsCustomValue,
|
|
142
|
+
valueType,
|
|
143
|
+
flattenedOptions,
|
|
144
|
+
value,
|
|
145
|
+
optionText,
|
|
146
|
+
onFilterValueChange
|
|
147
|
+
]);
|
|
148
|
+
return /* @__PURE__ */ React__default.default.createElement(
|
|
149
|
+
reactAriaComponents.ComboBox,
|
|
150
|
+
__spreadValues({
|
|
151
|
+
selectedKey: value,
|
|
152
|
+
onSelectionChange,
|
|
153
|
+
isDisabled,
|
|
154
|
+
className,
|
|
155
|
+
style,
|
|
156
|
+
items: showAllOptions ? options : filteredOptions,
|
|
157
|
+
menuTrigger,
|
|
158
|
+
inputValue: filterValue,
|
|
159
|
+
onInputChange: onInputValueChange,
|
|
160
|
+
allowsCustomValue,
|
|
161
|
+
disabledKeys,
|
|
162
|
+
onOpenChange: (isOpen, trigger) => {
|
|
163
|
+
if (isOpen && trigger === "manual") {
|
|
164
|
+
setShowAllOptions(true);
|
|
165
|
+
} else {
|
|
166
|
+
setShowAllOptions(false);
|
|
167
|
+
}
|
|
168
|
+
onOpenChange == null ? void 0 : onOpenChange(isOpen);
|
|
169
|
+
},
|
|
170
|
+
onBlur,
|
|
171
|
+
formValue: valueType === "text" ? "text" : "key",
|
|
172
|
+
name
|
|
173
|
+
}, utils.extractPlasmicDataProps(props)),
|
|
174
|
+
/* @__PURE__ */ React__default.default.createElement(
|
|
175
|
+
contexts.PlasmicListBoxContext.Provider,
|
|
176
|
+
{
|
|
177
|
+
value: {
|
|
178
|
+
makeItemProps: (item) => ({
|
|
179
|
+
key: item.value,
|
|
180
|
+
textValue: optionText(item),
|
|
181
|
+
children: optionText(item)
|
|
182
|
+
}),
|
|
183
|
+
makeSectionProps: (section) => ({
|
|
184
|
+
section,
|
|
185
|
+
key: section.key
|
|
186
|
+
}),
|
|
187
|
+
getItemType: (option) => option.type === "section" ? "section" : "item"
|
|
188
|
+
}
|
|
189
|
+
},
|
|
190
|
+
/* @__PURE__ */ React__default.default.createElement(contexts.PlasmicInputContext.Provider, { value: { placeholder } }, structure)
|
|
191
|
+
),
|
|
192
|
+
/* @__PURE__ */ React__default.default.createElement(BaseComboBoxEffects, { previewOpen })
|
|
193
|
+
);
|
|
194
|
+
}
|
|
195
|
+
function BaseComboBoxEffects(props) {
|
|
196
|
+
const { previewOpen } = props;
|
|
197
|
+
const comboBoxState = React__default.default.useContext(reactAriaComponents.ComboBoxStateContext);
|
|
198
|
+
const prevPreviewOpenRef = React__default.default.useRef(previewOpen);
|
|
199
|
+
React__default.default.useEffect(() => {
|
|
200
|
+
if (comboBoxState) {
|
|
201
|
+
if (previewOpen) {
|
|
202
|
+
comboBoxState.open(void 0, "manual");
|
|
203
|
+
} else if (prevPreviewOpenRef.current) {
|
|
204
|
+
comboBoxState.close();
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
prevPreviewOpenRef.current = previewOpen;
|
|
208
|
+
}, [previewOpen, comboBoxState, prevPreviewOpenRef]);
|
|
209
|
+
return null;
|
|
210
|
+
}
|
|
211
|
+
function registerComboBox(loader) {
|
|
212
|
+
const rootName = utils.makeComponentName("combobox");
|
|
213
|
+
utils.registerComponentHelper(loader, BaseComboBox, {
|
|
214
|
+
name: rootName,
|
|
215
|
+
displayName: "BaseComboBox",
|
|
216
|
+
importPath: "@plasmicpkgs/react-aria/registerComboBox",
|
|
217
|
+
importName: "BaseComboBox",
|
|
218
|
+
props: {
|
|
219
|
+
options: optionUtils.makeOptionsPropType(),
|
|
220
|
+
value: optionUtils.makeValuePropType(),
|
|
221
|
+
onChange: {
|
|
222
|
+
type: "eventHandler",
|
|
223
|
+
argTypes: [{ name: "value", type: "string" }]
|
|
224
|
+
},
|
|
225
|
+
filterValue: {
|
|
226
|
+
type: "string"
|
|
227
|
+
},
|
|
228
|
+
onFilterValueChange: {
|
|
229
|
+
type: "eventHandler",
|
|
230
|
+
argTypes: [{ name: "value", type: "string" }]
|
|
231
|
+
},
|
|
232
|
+
isDisabled: {
|
|
233
|
+
type: "boolean"
|
|
234
|
+
},
|
|
235
|
+
valueType: {
|
|
236
|
+
displayName: "`value` Type",
|
|
237
|
+
type: "choice",
|
|
238
|
+
options: [
|
|
239
|
+
{ value: "value", label: "By option value" },
|
|
240
|
+
{ value: "text", label: "By option text" }
|
|
241
|
+
],
|
|
242
|
+
defaultValueHint: "value",
|
|
243
|
+
description: "This controls whether `value` and `onChange` are option values or option text. Choosing `text` allows you to optionally allow a custom value that's not in the provided list of options.",
|
|
244
|
+
advanced: true
|
|
245
|
+
},
|
|
246
|
+
allowsCustomValue: {
|
|
247
|
+
type: "boolean",
|
|
248
|
+
displayName: "Allows custom value?",
|
|
249
|
+
description: "Allows entering a value that is not one of the options",
|
|
250
|
+
hidden: (ps) => ps.valueType !== "text",
|
|
251
|
+
advanced: true
|
|
252
|
+
},
|
|
253
|
+
onOpenChange: {
|
|
254
|
+
type: "eventHandler",
|
|
255
|
+
argTypes: [{ name: "isOpen", type: "boolean" }]
|
|
256
|
+
},
|
|
257
|
+
structure: {
|
|
258
|
+
type: "slot"
|
|
259
|
+
},
|
|
260
|
+
previewOpen: {
|
|
261
|
+
type: "boolean",
|
|
262
|
+
displayName: "Preview opened?",
|
|
263
|
+
description: "Preview opened state while designing in Plasmic editor",
|
|
264
|
+
editOnly: true
|
|
265
|
+
}
|
|
266
|
+
},
|
|
267
|
+
states: {
|
|
268
|
+
value: {
|
|
269
|
+
type: "writable",
|
|
270
|
+
valueProp: "value",
|
|
271
|
+
onChangeProp: "onChange",
|
|
272
|
+
variableType: "text"
|
|
273
|
+
},
|
|
274
|
+
filterValue: {
|
|
275
|
+
type: "writable",
|
|
276
|
+
valueProp: "filterValue",
|
|
277
|
+
onChangeProp: "onFilterValueChange",
|
|
278
|
+
variableType: "text"
|
|
279
|
+
},
|
|
280
|
+
isOpen: {
|
|
281
|
+
type: "readonly",
|
|
282
|
+
onChangeProp: "onOpenChange",
|
|
283
|
+
variableType: "boolean"
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
exports.BaseComboBox = BaseComboBox;
|
|
290
|
+
exports.registerComboBox = registerComboBox;
|
|
291
|
+
//# sourceMappingURL=registerComboBox.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registerComboBox.cjs.js","sources":["../src/registerComboBox.tsx"],"sourcesContent":["import { useFilter } from \"@react-aria/i18n\";\nimport React from \"react\";\nimport { ComboBox, ComboBoxStateContext, Key } from \"react-aria-components\";\nimport { PlasmicInputContext, PlasmicListBoxContext } from \"./contexts\";\nimport {\n flattenOptions,\n HasOptions,\n makeOptionsPropType,\n makeValuePropType,\n StrictItemType,\n StrictOptionType,\n useStrictOptions,\n} from \"./option-utils\";\nimport {\n extractPlasmicDataProps,\n makeComponentName,\n Registerable,\n registerComponentHelper,\n Styleable,\n withoutNils,\n} from \"./utils\";\n\nexport interface BaseComboBoxProps<T extends object>\n extends HasOptions<T>,\n Styleable {\n placeholder?: string;\n isDisabled?: boolean;\n menuTrigger?: React.ComponentProps<typeof ComboBox>[\"menuTrigger\"];\n\n valueType?: \"value\" | \"text\";\n allowsCustomValue?: boolean;\n\n value?: Key;\n onChange?: (value: Key) => void;\n\n filterValue?: string;\n onFilterValueChange?: (value: string) => void;\n\n previewOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n\n structure?: React.ReactNode;\n\n name?: string;\n}\n\nexport function BaseComboBox<T extends object>(props: BaseComboBoxProps<T>) {\n const {\n value,\n onChange,\n menuTrigger,\n filterValue,\n onFilterValueChange,\n valueType,\n allowsCustomValue,\n placeholder,\n previewOpen,\n onOpenChange,\n isDisabled,\n className,\n style,\n structure,\n name,\n } = props;\n\n const { options, optionText } = useStrictOptions(props);\n const { contains } = useFilter({ sensitivity: \"base\" });\n const [showAllOptions, setShowAllOptions] = React.useState(false);\n\n const filteredOptions = React.useMemo(() => {\n if (!filterValue || filterValue.trim().length === 0) {\n return options;\n }\n if (!options) {\n return options;\n }\n const filterOptions = (\n options: StrictOptionType[]\n ): StrictOptionType[] | undefined => {\n return withoutNils(\n options.map((op) => {\n if (op.type === \"section\") {\n return {\n ...op,\n items: op.items\n ? (filterOptions(op.items) as StrictItemType[])\n : undefined,\n };\n } else {\n if (contains(optionText(op), filterValue)) {\n return op;\n } else {\n return undefined;\n }\n }\n })\n );\n };\n return filterOptions(options);\n }, [options, filterValue, contains]);\n\n const flattenedOptions = React.useMemo(\n () => flattenOptions(options),\n [options]\n );\n\n const disabledKeys = flattenedOptions\n .filter((op) => op.isDisabled)\n .map((op) => op.value);\n\n const onSelectionChange = React.useCallback(\n (key: Key) => {\n const selectedOption = flattenedOptions?.find((op) => op.value === key);\n if (valueType === \"text\") {\n if (selectedOption) {\n onChange?.(optionText(selectedOption));\n }\n } else {\n onChange?.(key);\n }\n if (selectedOption) {\n onFilterValueChange?.(optionText(selectedOption));\n }\n },\n [onChange, onFilterValueChange, flattenedOptions, optionText]\n );\n\n const onInputValueChange = React.useCallback(\n (newValue: string) => {\n onFilterValueChange?.(newValue);\n setShowAllOptions(false);\n if (valueType === \"text\") {\n if (allowsCustomValue) {\n onChange?.(newValue);\n } else {\n const matchingOption = flattenedOptions?.find(\n (op) => optionText(op) === newValue\n );\n if (matchingOption) {\n onChange?.(optionText(matchingOption));\n }\n }\n }\n },\n [\n onFilterValueChange,\n onChange,\n flattenedOptions,\n optionText,\n valueType,\n allowsCustomValue,\n ]\n );\n\n const onBlur = React.useCallback(() => {\n // If we don't allow custom value, then on blur, reset the filter value\n // to the selected option\n if (!allowsCustomValue) {\n const selectedOption = flattenedOptions?.find((op) =>\n valueType === \"text\" ? optionText(op) === value : op.value === value\n );\n if (selectedOption) {\n const selectedOptionText = optionText(selectedOption);\n if (selectedOptionText !== filterValue) {\n onFilterValueChange?.(selectedOptionText);\n }\n }\n }\n }, [\n allowsCustomValue,\n valueType,\n flattenedOptions,\n value,\n optionText,\n onFilterValueChange,\n ]);\n\n return (\n <ComboBox\n selectedKey={value}\n onSelectionChange={onSelectionChange}\n isDisabled={isDisabled}\n className={className}\n style={style}\n items={showAllOptions ? options : filteredOptions}\n menuTrigger={menuTrigger}\n inputValue={filterValue}\n onInputChange={onInputValueChange}\n allowsCustomValue={allowsCustomValue}\n disabledKeys={disabledKeys}\n onOpenChange={(isOpen, trigger) => {\n if (isOpen && trigger === \"manual\") {\n setShowAllOptions(true);\n } else {\n setShowAllOptions(false);\n }\n onOpenChange?.(isOpen);\n }}\n onBlur={onBlur}\n formValue={valueType === \"text\" ? \"text\" : \"key\"}\n name={name}\n {...extractPlasmicDataProps(props)}\n >\n <PlasmicListBoxContext.Provider\n value={{\n makeItemProps: (item) => ({\n key: item.value,\n textValue: optionText(item),\n children: optionText(item),\n }),\n makeSectionProps: (section) => ({\n section,\n key: section.key,\n }),\n getItemType: (option) =>\n option.type === \"section\" ? \"section\" : \"item\",\n }}\n >\n <PlasmicInputContext.Provider value={{ placeholder }}>\n {structure}\n </PlasmicInputContext.Provider>\n </PlasmicListBoxContext.Provider>\n <BaseComboBoxEffects previewOpen={previewOpen} />\n </ComboBox>\n );\n}\n\nfunction BaseComboBoxEffects(\n props: Pick<BaseComboBoxProps<any>, \"previewOpen\">\n) {\n const { previewOpen } = props;\n const comboBoxState = React.useContext(ComboBoxStateContext);\n\n const prevPreviewOpenRef = React.useRef(previewOpen);\n React.useEffect(() => {\n // comboBoxState can be undefined if we are in `<Hidden/>`\n if (comboBoxState) {\n // There's no \"isOpen\" controlled state for ComboBox, so we use\n // sync comboBoxState with previewOpen prop instead\n if (previewOpen) {\n comboBoxState.open(undefined, \"manual\");\n } else if (prevPreviewOpenRef.current) {\n // Was previously previewOpen, now preview close\n comboBoxState.close();\n }\n }\n prevPreviewOpenRef.current = previewOpen;\n }, [previewOpen, comboBoxState, prevPreviewOpenRef]);\n\n return null;\n}\n\nexport function registerComboBox(loader?: Registerable) {\n const rootName = makeComponentName(\"combobox\");\n\n registerComponentHelper(loader, BaseComboBox, {\n name: rootName,\n displayName: \"BaseComboBox\",\n importPath: \"@plasmicpkgs/react-aria/registerComboBox\",\n importName: \"BaseComboBox\",\n props: {\n options: makeOptionsPropType(),\n value: makeValuePropType(),\n onChange: {\n type: \"eventHandler\",\n argTypes: [{ name: \"value\", type: \"string\" }],\n },\n filterValue: {\n type: \"string\",\n },\n onFilterValueChange: {\n type: \"eventHandler\",\n argTypes: [{ name: \"value\", type: \"string\" }],\n },\n isDisabled: {\n type: \"boolean\",\n },\n valueType: {\n displayName: \"`value` Type\",\n type: \"choice\",\n options: [\n { value: \"value\", label: \"By option value\" },\n { value: \"text\", label: \"By option text\" },\n ],\n defaultValueHint: \"value\",\n description:\n \"This controls whether `value` and `onChange` are option values or option text. Choosing `text` allows you to optionally allow a custom value that's not in the provided list of options.\",\n advanced: true,\n },\n allowsCustomValue: {\n type: \"boolean\",\n displayName: \"Allows custom value?\",\n description: \"Allows entering a value that is not one of the options\",\n hidden: (ps) => ps.valueType !== \"text\",\n advanced: true,\n },\n onOpenChange: {\n type: \"eventHandler\",\n argTypes: [{ name: \"isOpen\", type: \"boolean\" }],\n },\n structure: {\n type: \"slot\",\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 },\n states: {\n value: {\n type: \"writable\",\n valueProp: \"value\",\n onChangeProp: \"onChange\",\n variableType: \"text\",\n },\n filterValue: {\n type: \"writable\",\n valueProp: \"filterValue\",\n onChangeProp: \"onFilterValueChange\",\n variableType: \"text\",\n },\n isOpen: {\n type: \"readonly\",\n onChangeProp: \"onOpenChange\",\n variableType: \"boolean\",\n },\n },\n });\n}\n"],"names":["useStrictOptions","useFilter","React","options","withoutNils","flattenOptions","ComboBox","extractPlasmicDataProps","PlasmicListBoxContext","PlasmicInputContext","ComboBoxStateContext","makeComponentName","registerComponentHelper","makeOptionsPropType","makeValuePropType"],"mappings":"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"}
|