xmlui 0.10.13 → 0.10.15
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/dist/lib/{index-Db5iQkFp.mjs → index-axjeT2uJ.mjs} +1626 -1080
- package/dist/lib/index.css +1 -1
- package/dist/lib/{initMock-B9LtmFJG.mjs → initMock-BoTWMs19.mjs} +1 -1
- package/dist/lib/language-server-web-worker.mjs +1 -1
- package/dist/lib/language-server.mjs +1 -1
- package/dist/lib/{metadata-utils-D90qqMGc.mjs → metadata-utils-CtY0QcvH.mjs} +2 -1
- package/dist/lib/{server-common-lmBDLpUh.mjs → server-common-Cine5nRR.mjs} +1 -1
- package/dist/lib/xmlui.d.ts +99 -6
- package/dist/lib/xmlui.mjs +78 -42
- package/dist/metadata/{collectedComponentMetadata-BN8eg9Gr.mjs → collectedComponentMetadata-CQywuPDB.mjs} +17448 -16984
- package/dist/metadata/{initMock-J7pN8owj.mjs → initMock-Bi5kF5Af.mjs} +1 -1
- package/dist/metadata/style.css +1 -1
- package/dist/metadata/xmlui-metadata.mjs +1 -1
- package/dist/metadata/xmlui-metadata.umd.js +3 -3
- package/dist/scripts/bin/build-lib.js +21 -13
- package/dist/scripts/bin/viteConfig.js +3 -1
- package/dist/scripts/package.json +2 -3
- package/dist/scripts/src/abstractions/scripting/Token.js +2 -0
- package/dist/scripts/src/abstractions/scripting/TryScope.js +2 -0
- package/dist/scripts/src/abstractions/scripting/modules.js +2 -0
- package/dist/scripts/src/components/APICall/APICall.spec.js +910 -0
- package/dist/scripts/src/components/Accordion/Accordion.spec.js +969 -0
- package/dist/scripts/src/components/Animation/Animation.js +50 -0
- package/dist/scripts/src/components/App/App.spec.js +219 -0
- package/dist/scripts/src/components/AppHeader/AppHeader.spec.js +169 -0
- package/dist/scripts/src/components/AppState/AppState.js +32 -2
- package/dist/scripts/src/components/AppState/AppState.spec.js +268 -0
- package/dist/scripts/src/components/AppState/AppStateNative.js +27 -3
- package/dist/scripts/src/components/AutoComplete/AutoComplete.spec.js +383 -0
- package/dist/scripts/src/components/Avatar/Avatar.spec.js +1543 -0
- package/dist/scripts/src/components/Backdrop/Backdrop.spec.js +131 -0
- package/dist/scripts/src/components/Badge/Badge.spec.js +2214 -0
- package/dist/scripts/src/components/Bookmark/Bookmark.spec.js +230 -0
- package/dist/scripts/src/components/Breakout/Breakout.spec.js +56 -0
- package/dist/scripts/src/components/Button/Button-style.spec.js +274 -0
- package/dist/scripts/src/components/Button/Button.js +5 -1
- package/dist/scripts/src/components/Button/Button.spec.js +454 -0
- package/dist/scripts/src/components/Card/Card.spec.js +150 -0
- package/dist/scripts/src/components/Carousel/Carousel.spec.js +343 -0
- package/dist/scripts/src/components/Carousel/CarouselNative.js +2 -2
- package/dist/scripts/src/components/ChangeListener/ChangeListener.spec.js +169 -0
- package/dist/scripts/src/components/Charts/AreaChart/AreaChart.spec.js +999 -0
- package/dist/scripts/src/components/Charts/BarChart/BarChart.spec.js +597 -0
- package/dist/scripts/src/components/Charts/DonutChart/DonutChart.spec.js +608 -0
- package/dist/scripts/src/components/Charts/LabelList/LabelList.spec.js +539 -0
- package/dist/scripts/src/components/Charts/Legend/Legend.spec.js +558 -0
- package/dist/scripts/src/components/Charts/LineChart/LineChart.spec.js +450 -0
- package/dist/scripts/src/components/Charts/PieChart/PieChart.spec.js +584 -0
- package/dist/scripts/src/components/Charts/PieChart/PieChartNative.js +41 -2
- package/dist/scripts/src/components/Charts/RadarChart/RadarChart.spec.js +571 -0
- package/dist/scripts/src/components/Charts/Tooltip/TooltipContent.spec.js +449 -0
- package/dist/scripts/src/components/Checkbox/Checkbox.spec.js +964 -0
- package/dist/scripts/src/components/CodeBlock/CodeBlock.spec.js +196 -0
- package/dist/scripts/src/components/ColorPicker/ColorPicker.spec.js +283 -0
- package/dist/scripts/src/components/ColorPicker/ColorPickerNative.js +9 -26
- package/dist/scripts/src/components/Column/doc-resources/list-component-data.js +53 -0
- package/dist/scripts/src/components/ComponentProvider.js +6 -2
- package/dist/scripts/src/components/ContentSeparator/ContentSeparator.spec.js +338 -0
- package/dist/scripts/src/components/DateInput/DateInput.spec.js +918 -0
- package/dist/scripts/src/components/DatePicker/DatePicker.spec.js +362 -0
- package/dist/scripts/src/components/DatePicker/DatePickerNative.js +3 -3
- package/dist/scripts/src/components/DropdownMenu/DropdownMenu.spec.js +331 -0
- package/dist/scripts/src/components/DropdownMenu/DropdownMenuNative.js +7 -9
- package/dist/scripts/src/components/EmojiSelector/EmojiSelector.spec.js +29 -0
- package/dist/scripts/src/components/ExpandableItem/ExpandableItem.spec.js +435 -0
- package/dist/scripts/src/components/FileInput/FileInput.spec.js +249 -0
- package/dist/scripts/src/components/FileUploadDropZone/FileUploadDropZone.spec.js +296 -0
- package/dist/scripts/src/components/FlowLayout/FlowLayout.spec.js +518 -0
- package/dist/scripts/src/components/Footer/Footer.spec.js +991 -0
- package/dist/scripts/src/components/Form/Form.spec.js +1257 -0
- package/dist/scripts/src/components/FormItem/FormItem.spec.js +723 -0
- package/dist/scripts/src/components/FormItem/ItemWithLabel.js +3 -3
- package/dist/scripts/src/components/FormSection/FormSection.js +6 -31
- package/dist/scripts/src/components/Fragment/Fragment.spec.js +50 -0
- package/dist/scripts/src/components/Heading/H1.spec.js +66 -0
- package/dist/scripts/src/components/Heading/H2.spec.js +66 -0
- package/dist/scripts/src/components/Heading/H3.spec.js +66 -0
- package/dist/scripts/src/components/Heading/H4.spec.js +66 -0
- package/dist/scripts/src/components/Heading/H5.spec.js +66 -0
- package/dist/scripts/src/components/Heading/H6.spec.js +66 -0
- package/dist/scripts/src/components/Heading/Heading.spec.js +897 -0
- package/dist/scripts/src/components/HtmlTags/HtmlTags.spec.js +69 -0
- package/dist/scripts/src/components/IFrame/IFrame.spec.js +527 -0
- package/dist/scripts/src/components/Icon/ArrowDropDown.js +11 -0
- package/dist/scripts/src/components/Icon/ArrowDropUp.js +11 -0
- package/dist/scripts/src/components/Icon/ArrowLeft.js +11 -0
- package/dist/scripts/src/components/Icon/ArrowRight.js +11 -0
- package/dist/scripts/src/components/Icon/ChevronDownIcon.js +7 -0
- package/dist/scripts/src/components/Icon/ChevronUpIcon.js +7 -0
- package/dist/scripts/src/components/Icon/Icon.spec.js +527 -0
- package/dist/scripts/src/components/Icon/SunIcon.js +10 -0
- package/dist/scripts/src/components/Image/Image.js +2 -1
- package/dist/scripts/src/components/Image/Image.spec.js +198 -0
- package/dist/scripts/src/components/Image/ImageNative.js +30 -2
- package/dist/scripts/src/components/Input/InputLabel.js +25 -0
- package/dist/scripts/src/components/Input/index.js +5 -0
- package/dist/scripts/src/components/Items/Items.spec.js +397 -0
- package/dist/scripts/src/components/Link/Link.spec.js +894 -0
- package/dist/scripts/src/components/List/List.spec.js +927 -0
- package/dist/scripts/src/components/List/doc-resources/list-component-data.js +53 -0
- package/dist/scripts/src/components/Markdown/Markdown.spec.js +188 -0
- package/dist/scripts/src/components/ModalDialog/ModalDialog.spec.js +162 -0
- package/dist/scripts/src/components/NavGroup/NavGroup.spec.js +212 -0
- package/dist/scripts/src/components/NavGroup/NavGroupNative.js +15 -7
- package/dist/scripts/src/components/NavLink/NavLink.spec.js +864 -0
- package/dist/scripts/src/components/NavPanel/NavPanel.spec.js +864 -0
- package/dist/scripts/src/components/NoResult/NoResult.spec.js +863 -0
- package/dist/scripts/src/components/NumberBox/NumberBox.spec.js +1237 -0
- package/dist/scripts/src/components/Option/Option.spec.js +472 -0
- package/dist/scripts/src/components/PageMetaTitle/PageMetaTitle.spec.js +80 -0
- package/dist/scripts/src/components/Pagination/Pagination.spec.js +1003 -0
- package/dist/scripts/src/components/ProfileMenu/ProfileMenu.js +20 -0
- package/dist/scripts/src/components/ProgressBar/ProgressBar.spec.js +166 -0
- package/dist/scripts/src/components/Queue/Queue.spec.js +626 -0
- package/dist/scripts/src/components/RadioGroup/RadioGroup.spec.js +479 -0
- package/dist/scripts/src/components/Redirect/Redirect.spec.js +527 -0
- package/dist/scripts/src/components/ResponsiveBar/ResponsiveBar.spec.js +76 -0
- package/dist/scripts/src/components/Select/Select.spec.js +527 -0
- package/dist/scripts/src/components/SelectionStore/SelectionStoreNative.js +3 -1
- package/dist/scripts/src/components/Slider/Slider.js +2 -0
- package/dist/scripts/src/components/Slider/Slider.spec.js +574 -0
- package/dist/scripts/src/components/Slider/SliderNative.js +63 -26
- package/dist/scripts/src/components/Slot/Slot.spec.js +368 -0
- package/dist/scripts/src/components/SpaceFiller/SpaceFiller.spec.js +184 -0
- package/dist/scripts/src/components/Spinner/Spinner.spec.js +161 -0
- package/dist/scripts/src/components/Splitter/HSplitter.spec.js +104 -0
- package/dist/scripts/src/components/Splitter/Splitter.spec.js +543 -0
- package/dist/scripts/src/components/Splitter/VSplitter.spec.js +104 -0
- package/dist/scripts/src/components/Stack/CHStack.spec.js +86 -0
- package/dist/scripts/src/components/Stack/CVStack.spec.js +86 -0
- package/dist/scripts/src/components/Stack/HStack.spec.js +67 -0
- package/dist/scripts/src/components/Stack/Stack.spec.js +654 -0
- package/dist/scripts/src/components/Stack/VStack.spec.js +67 -0
- package/dist/scripts/src/components/Switch/Switch.spec.js +829 -0
- package/dist/scripts/src/components/Table/Table.js +7 -1
- package/dist/scripts/src/components/Table/Table.spec.js +555 -0
- package/dist/scripts/src/components/Table/TableNative.js +4 -1
- package/dist/scripts/src/components/Table/doc-resources/list-component-data.js +53 -0
- package/dist/scripts/src/components/Table/useRowSelection.js +215 -1
- package/dist/scripts/src/components/TableOfContents/TableOfContents.spec.js +838 -0
- package/dist/scripts/src/components/Tabs/Tabs.spec.js +875 -0
- package/dist/scripts/src/components/Text/Text.spec.js +1075 -0
- package/dist/scripts/src/components/TextArea/TextArea.spec.js +714 -0
- package/dist/scripts/src/components/TextBox/TextBox.js +1 -5
- package/dist/scripts/src/components/TextBox/TextBox.spec.js +687 -0
- package/dist/scripts/src/components/TextBox/TextBoxNative.js +10 -15
- package/dist/scripts/src/components/Theme/Theme.spec.js +124 -0
- package/dist/scripts/src/components/Theme/ThemeNative.js +2 -6
- package/dist/scripts/src/components/TimeInput/TimeInput.js +1 -5
- package/dist/scripts/src/components/TimeInput/TimeInput.spec.js +1122 -0
- package/dist/scripts/src/components/TimeInput/TimeInputNative.js +2 -9
- package/dist/scripts/src/components/Timer/Timer.spec.js +358 -0
- package/dist/scripts/src/components/ToneChangerButton/ToneChangerButton.spec.js +414 -0
- package/dist/scripts/src/components/ToneSwitch/ToneSwitch.spec.js +89 -0
- package/dist/scripts/src/components/Tooltip/Tooltip.spec.js +418 -0
- package/dist/scripts/src/components/chart-color-schemes.js +43 -0
- package/dist/scripts/src/components-core/ApiBoundComponent.js +38 -24
- package/dist/scripts/src/components-core/CompoundComponent.js +1 -1
- package/dist/scripts/src/components-core/RestApiProxy.js +84 -8
- package/dist/scripts/src/components-core/behaviors/BehaviorContext.js +54 -0
- package/dist/scripts/src/components-core/behaviors/CoreBehaviors.js +80 -0
- package/dist/scripts/src/components-core/descriptorHelper.js +1 -0
- package/dist/scripts/src/components-core/devtools/InspectorDialogVisibilityContext.js +8 -0
- package/dist/scripts/src/components-core/parts.js +4 -1
- package/dist/scripts/src/components-core/renderers.js +31 -0
- package/dist/scripts/src/components-core/rendering/AppRoot.js +2 -1
- package/dist/scripts/src/components-core/rendering/ComponentAdapter.js +31 -46
- package/dist/scripts/src/components-core/rendering/nodeUtils.js +6 -0
- package/dist/scripts/src/components-core/script-runner/simplify-expression.js +386 -0
- package/dist/scripts/src/components-core/theming/component-layout-resolver.js +153 -0
- package/dist/scripts/src/components-core/theming/layout-resolver.js +2 -0
- package/dist/scripts/src/components-core/theming/parse-layout-props.js +98 -0
- package/dist/scripts/src/components-core/theming/themes/solid.js +16 -0
- package/dist/scripts/src/components-core/utils/audio-utils.js +83 -0
- package/dist/scripts/src/index-standalone.js +61 -0
- package/dist/scripts/src/index.js +39 -1
- package/dist/scripts/src/language-server/server-common.js +151 -0
- package/dist/scripts/src/language-server/server-web-worker.js +47 -0
- package/dist/scripts/src/language-server/server.js +42 -0
- package/dist/scripts/src/language-server/services/common/docs-generation.js +73 -0
- package/dist/scripts/src/language-server/services/common/lsp-utils.js +9 -0
- package/dist/scripts/src/language-server/services/common/syntax-node-utilities.js +135 -0
- package/dist/scripts/src/language-server/services/completion.js +270 -0
- package/dist/scripts/src/language-server/services/diagnostic.js +19 -0
- package/dist/scripts/src/language-server/services/format.js +430 -0
- package/dist/scripts/src/language-server/services/hover.js +164 -0
- package/dist/scripts/src/language-server/xmlui-metadata-generated.mjs +16266 -0
- package/dist/scripts/src/logging/xmlui.js +21 -0
- package/dist/scripts/src/parsers/common/utils.js +19 -0
- package/dist/scripts/src/syntax/monaco/grammar.monacoLanguage.js +286 -0
- package/dist/scripts/src/syntax/monaco/index.js +14 -0
- package/dist/scripts/src/syntax/monaco/xmlui-dark.js +25 -0
- package/dist/scripts/src/syntax/monaco/xmlui-light.js +25 -0
- package/dist/scripts/src/syntax/monaco/xmluiscript.monacoLanguage.js +310 -0
- package/dist/scripts/src/syntax/textMate/index.js +14 -0
- package/dist/scripts/src/syntax/textMate/xmlui-dark.json +631 -0
- package/dist/scripts/src/syntax/textMate/xmlui-light.json +565 -0
- package/dist/scripts/src/syntax/textMate/xmlui.json +564 -0
- package/dist/scripts/src/syntax/textMate/xmlui.tmLanguage.json +341 -0
- package/dist/scripts/src/testing/ComponentDrivers.js +1327 -0
- package/dist/scripts/src/testing/assertions.js +444 -0
- package/dist/scripts/src/testing/component-test-helpers.js +389 -0
- package/dist/scripts/src/testing/drivers/DateInputDriver.js +19 -0
- package/dist/scripts/src/testing/drivers/ModalDialogDriver.js +10 -0
- package/dist/scripts/src/testing/drivers/NumberBoxDriver.js +44 -0
- package/dist/scripts/src/testing/drivers/SliderDriver.js +20 -0
- package/dist/scripts/src/testing/drivers/TextBoxDriver.js +20 -0
- package/dist/scripts/src/testing/drivers/TimeInputDriver.js +22 -0
- package/dist/scripts/src/testing/drivers/TimerDriver.js +64 -0
- package/dist/scripts/src/testing/fixtures.js +513 -0
- package/dist/scripts/src/testing/infrastructure/TestBed.js +17 -0
- package/dist/scripts/src/testing/infrastructure/main.js +9 -0
- package/dist/scripts/src/testing/infrastructure/public/mockServiceWorker.js +266 -0
- package/dist/scripts/src/testing/themed-app-test-helpers.js +139 -0
- package/dist/standalone/xmlui-standalone.es.d.ts +172 -10
- package/dist/standalone/xmlui-standalone.umd.js +36 -36
- package/package.json +2 -3
|
@@ -52,23 +52,99 @@ const process_statement_sync_1 = require("./script-runner/process-statement-sync
|
|
|
52
52
|
function isAxiosResponse(response) {
|
|
53
53
|
return "data" in response;
|
|
54
54
|
}
|
|
55
|
-
function
|
|
55
|
+
function getContentType(response) {
|
|
56
|
+
if (isAxiosResponse(response)) {
|
|
57
|
+
return response.headers['content-type'] || response.headers['Content-Type'] || '';
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
return response.headers.get('content-type') || '';
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
// --- Tests for the most common binary types
|
|
64
|
+
function isBinaryContentType(contentType) {
|
|
65
|
+
const binaryTypes = [
|
|
66
|
+
// Images
|
|
67
|
+
'image/',
|
|
68
|
+
// Audio
|
|
69
|
+
'audio/',
|
|
70
|
+
// Video
|
|
71
|
+
'video/',
|
|
72
|
+
// Documents
|
|
73
|
+
'application/pdf',
|
|
74
|
+
'application/msword',
|
|
75
|
+
'application/vnd.openxmlformats-officedocument.',
|
|
76
|
+
'application/vnd.ms-excel',
|
|
77
|
+
'application/vnd.ms-powerpoint',
|
|
78
|
+
// Archives
|
|
79
|
+
'application/zip',
|
|
80
|
+
'application/x-rar-compressed',
|
|
81
|
+
'application/x-tar',
|
|
82
|
+
'application/gzip',
|
|
83
|
+
'application/x-7z-compressed',
|
|
84
|
+
// Other binary
|
|
85
|
+
'application/octet-stream',
|
|
86
|
+
'application/x-binary',
|
|
87
|
+
];
|
|
88
|
+
return binaryTypes.some(type => contentType.toLowerCase().includes(type.toLowerCase()));
|
|
89
|
+
}
|
|
90
|
+
// --- Tests if a particular content type returns an ArrayBuffer
|
|
91
|
+
function shouldReturnAsArrayBuffer(contentType) {
|
|
92
|
+
const arrayBufferTypes = [
|
|
93
|
+
'application/zip',
|
|
94
|
+
'application/x-rar-compressed',
|
|
95
|
+
'application/x-tar',
|
|
96
|
+
'application/gzip',
|
|
97
|
+
'application/x-7z-compressed',
|
|
98
|
+
'application/x-binary',
|
|
99
|
+
];
|
|
100
|
+
return arrayBufferTypes.some(type => contentType.toLowerCase().includes(type.toLowerCase()));
|
|
101
|
+
}
|
|
102
|
+
function parseResponseBody(response_1) {
|
|
56
103
|
return __awaiter(this, arguments, void 0, function* (response, logError = false) {
|
|
57
104
|
let resp;
|
|
58
105
|
if (isAxiosResponse(response)) {
|
|
59
106
|
resp = response.data;
|
|
60
107
|
}
|
|
61
108
|
else {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
catch (e) {
|
|
109
|
+
const contentType = getContentType(response);
|
|
110
|
+
// Handle binary content types
|
|
111
|
+
if (isBinaryContentType(contentType)) {
|
|
66
112
|
try {
|
|
67
|
-
|
|
113
|
+
if (shouldReturnAsArrayBuffer(contentType)) {
|
|
114
|
+
resp = yield response.clone().arrayBuffer();
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
resp = yield response.clone().blob();
|
|
118
|
+
}
|
|
68
119
|
}
|
|
69
120
|
catch (e) {
|
|
70
121
|
if (logError) {
|
|
71
|
-
console.error("Failed to parse response
|
|
122
|
+
console.error("Failed to parse binary response", e, contentType);
|
|
123
|
+
}
|
|
124
|
+
// Fallback to text if binary parsing fails
|
|
125
|
+
try {
|
|
126
|
+
resp = yield response.clone().text();
|
|
127
|
+
}
|
|
128
|
+
catch (textError) {
|
|
129
|
+
if (logError) {
|
|
130
|
+
console.error("Failed to parse response as text after binary parsing failed", textError);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
// Handle text-based content types (JSON, text, etc.)
|
|
137
|
+
try {
|
|
138
|
+
resp = yield response.clone().json();
|
|
139
|
+
}
|
|
140
|
+
catch (e) {
|
|
141
|
+
try {
|
|
142
|
+
resp = yield response.clone().text();
|
|
143
|
+
}
|
|
144
|
+
catch (e) {
|
|
145
|
+
if (logError) {
|
|
146
|
+
console.error("Failed to parse response as text or JSON", response.body);
|
|
147
|
+
}
|
|
72
148
|
}
|
|
73
149
|
}
|
|
74
150
|
}
|
|
@@ -325,7 +401,7 @@ class RestApiProxy {
|
|
|
325
401
|
}
|
|
326
402
|
});
|
|
327
403
|
this.tryParseResponse = (response_1, ...args_1) => __awaiter(this, [response_1, ...args_1], void 0, function* (response, logError = false) {
|
|
328
|
-
return yield
|
|
404
|
+
return yield parseResponseBody(response, logError);
|
|
329
405
|
});
|
|
330
406
|
this.raiseError = (response) => __awaiter(this, void 0, void 0, function* () {
|
|
331
407
|
if ("config" in response) {
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useBehaviors = exports.BehaviorsProvider = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const CoreBehaviors_1 = require("./CoreBehaviors");
|
|
7
|
+
// --- Create the context with a default value
|
|
8
|
+
const BehaviorContext = (0, react_1.createContext)(undefined);
|
|
9
|
+
/**
|
|
10
|
+
* A provider component that makes the behavior management system available to
|
|
11
|
+
* its children.
|
|
12
|
+
*/
|
|
13
|
+
const BehaviorsProvider = ({ children }) => {
|
|
14
|
+
const behaviors = (0, react_1.useMemo)(() => new Map(), []);
|
|
15
|
+
const getBehaviors = () => {
|
|
16
|
+
return Array.from(behaviors.values());
|
|
17
|
+
};
|
|
18
|
+
const registerBehavior = (behavior) => {
|
|
19
|
+
behaviors.set(behavior.name, behavior);
|
|
20
|
+
};
|
|
21
|
+
const unregisterBehavior = (name) => {
|
|
22
|
+
behaviors.delete(name);
|
|
23
|
+
};
|
|
24
|
+
(0, react_1.useMemo)(() => {
|
|
25
|
+
if (process.env.VITE_USED_BEHAVIORS_Animation !== "false") {
|
|
26
|
+
registerBehavior(CoreBehaviors_1.animationBehavior);
|
|
27
|
+
}
|
|
28
|
+
if (process.env.VITE_USED_BEHAVIORS_Tooltip !== "false") {
|
|
29
|
+
registerBehavior(CoreBehaviors_1.tooltipBehavior);
|
|
30
|
+
}
|
|
31
|
+
if (process.env.VITE_USED_BEHAVIORS_Label !== "false") {
|
|
32
|
+
registerBehavior(CoreBehaviors_1.labelBehavior);
|
|
33
|
+
}
|
|
34
|
+
}, []);
|
|
35
|
+
const contextValue = (0, react_1.useMemo)(() => ({
|
|
36
|
+
behaviors,
|
|
37
|
+
registerBehavior,
|
|
38
|
+
unregisterBehavior,
|
|
39
|
+
getBehaviors,
|
|
40
|
+
}), [behaviors]);
|
|
41
|
+
return ((0, jsx_runtime_1.jsx)(BehaviorContext.Provider, { value: contextValue, children: children }));
|
|
42
|
+
};
|
|
43
|
+
exports.BehaviorsProvider = BehaviorsProvider;
|
|
44
|
+
/**
|
|
45
|
+
* A custom hook to access the behavior context.
|
|
46
|
+
*/
|
|
47
|
+
const useBehaviors = () => {
|
|
48
|
+
const context = (0, react_1.useContext)(BehaviorContext);
|
|
49
|
+
if (!context) {
|
|
50
|
+
throw new Error("useBehaviors must be used within a BehaviorsProvider");
|
|
51
|
+
}
|
|
52
|
+
return context;
|
|
53
|
+
};
|
|
54
|
+
exports.useBehaviors = useBehaviors;
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.labelBehavior = exports.animationBehavior = exports.tooltipBehavior = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const AnimationNative_1 = require("../../components/Animation/AnimationNative");
|
|
7
|
+
const ItemWithLabel_1 = require("../../components/FormItem/ItemWithLabel");
|
|
8
|
+
const TooltipNative_1 = require("../../components/Tooltip/TooltipNative");
|
|
9
|
+
/**
|
|
10
|
+
* Behavior for applying tooltips to components.
|
|
11
|
+
*/
|
|
12
|
+
exports.tooltipBehavior = {
|
|
13
|
+
name: "tooltip",
|
|
14
|
+
canAttach: (node) => {
|
|
15
|
+
var _a, _b;
|
|
16
|
+
const tooltipText = (_a = node.props) === null || _a === void 0 ? void 0 : _a.tooltip;
|
|
17
|
+
const tooltipMarkdown = (_b = node.props) === null || _b === void 0 ? void 0 : _b.tooltipMarkdown;
|
|
18
|
+
return !!tooltipText || !!tooltipMarkdown;
|
|
19
|
+
},
|
|
20
|
+
attach: (context, node) => {
|
|
21
|
+
var _a, _b, _c;
|
|
22
|
+
const { extractValue } = context;
|
|
23
|
+
const tooltipText = extractValue((_a = context.node.props) === null || _a === void 0 ? void 0 : _a.tooltip, true);
|
|
24
|
+
const tooltipMarkdown = extractValue((_b = context.node.props) === null || _b === void 0 ? void 0 : _b.tooltipMarkdown, true);
|
|
25
|
+
const tooltipOptions = extractValue((_c = context.node.props) === null || _c === void 0 ? void 0 : _c.tooltipOptions, true);
|
|
26
|
+
const parsedOptions = (0, TooltipNative_1.parseTooltipOptions)(tooltipOptions);
|
|
27
|
+
return ((0, jsx_runtime_1.jsx)(TooltipNative_1.Tooltip, Object.assign({ text: tooltipText, markdown: tooltipMarkdown }, parsedOptions, { children: node })));
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Behavior for applying animations to components.
|
|
32
|
+
*/
|
|
33
|
+
exports.animationBehavior = {
|
|
34
|
+
name: "animation",
|
|
35
|
+
canAttach: (node) => {
|
|
36
|
+
var _a;
|
|
37
|
+
return !!((_a = node.props) === null || _a === void 0 ? void 0 : _a.animation);
|
|
38
|
+
},
|
|
39
|
+
attach: (context, node) => {
|
|
40
|
+
var _a, _b;
|
|
41
|
+
const { extractValue } = context;
|
|
42
|
+
const animation = extractValue((_a = context.node.props) === null || _a === void 0 ? void 0 : _a.animation, true);
|
|
43
|
+
const animationOptions = extractValue((_b = context.node.props) === null || _b === void 0 ? void 0 : _b.animationOptions, true);
|
|
44
|
+
const parsedOptions = (0, AnimationNative_1.parseAnimationOptions)(animationOptions);
|
|
45
|
+
return ((0, jsx_runtime_1.jsx)(AnimationNative_1.Animation, Object.assign({ animation: (0, AnimationNative_1.parseAnimation)(animation) }, parsedOptions, { children: node })));
|
|
46
|
+
},
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* Behavior for applying a label to form components using ItemWithLabel.
|
|
50
|
+
*/
|
|
51
|
+
exports.labelBehavior = {
|
|
52
|
+
name: "label",
|
|
53
|
+
canAttach: (node, metadata) => {
|
|
54
|
+
var _a, _b;
|
|
55
|
+
/**
|
|
56
|
+
* This behavior can be attached if the component has a 'label' prop
|
|
57
|
+
* and is not a component that handles its own labeling.
|
|
58
|
+
*/
|
|
59
|
+
if ((_a = metadata === null || metadata === void 0 ? void 0 : metadata.props) === null || _a === void 0 ? void 0 : _a.label) {
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
else if (!((_b = node.props) === null || _b === void 0 ? void 0 : _b.label)) {
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
return true;
|
|
66
|
+
},
|
|
67
|
+
attach: (context, node) => {
|
|
68
|
+
const { extractValue, node: componentNode, className } = context;
|
|
69
|
+
const label = extractValue.asOptionalString(componentNode.props.label);
|
|
70
|
+
const labelPosition = extractValue(componentNode.props.labelPosition);
|
|
71
|
+
const labelWidth = extractValue.asOptionalString(componentNode.props.labelWidth);
|
|
72
|
+
const labelBreak = extractValue.asOptionalBoolean(componentNode.props.labelBreak);
|
|
73
|
+
const required = extractValue.asOptionalBoolean(componentNode.props.required);
|
|
74
|
+
const enabled = extractValue.asOptionalBoolean(componentNode.props.enabled, true);
|
|
75
|
+
const shrinkToLabel = extractValue.asOptionalBoolean(componentNode.props.shrinkToLabel);
|
|
76
|
+
const style = extractValue(componentNode.props.style);
|
|
77
|
+
const generatedId = (0, react_1.useId)();
|
|
78
|
+
return ((0, jsx_runtime_1.jsx)(ItemWithLabel_1.ItemWithLabel, { id: componentNode.uid || generatedId, labelPosition: labelPosition, label: label, labelWidth: labelWidth, labelBreak: labelBreak, required: required, enabled: enabled, style: style, className: className, shrinkToLabel: shrinkToLabel, testId: componentNode.testId, children: node }));
|
|
79
|
+
},
|
|
80
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.InspectorDialogVisibilityContext = void 0;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
exports.InspectorDialogVisibilityContext = react_1.default.createContext(null);
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PART_END_ADORNMENT = exports.PART_START_ADORNMENT = exports.PART_INPUT = exports.PART_LABELED_ITEM = exports.PART_LABEL = void 0;
|
|
3
|
+
exports.PART_THUMB = exports.PART_RANGE = exports.PART_TRACK = exports.PART_END_ADORNMENT = exports.PART_START_ADORNMENT = exports.PART_INPUT = exports.PART_LABELED_ITEM = exports.PART_LABEL = void 0;
|
|
4
4
|
exports.PART_LABEL = "label";
|
|
5
5
|
exports.PART_LABELED_ITEM = "labeledItem";
|
|
6
6
|
exports.PART_INPUT = "input";
|
|
7
7
|
exports.PART_START_ADORNMENT = "startAdornment";
|
|
8
8
|
exports.PART_END_ADORNMENT = "endAdornment";
|
|
9
|
+
exports.PART_TRACK = "track";
|
|
10
|
+
exports.PART_RANGE = "range";
|
|
11
|
+
exports.PART_THUMB = "thumb";
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.createComponentRenderer = createComponentRenderer;
|
|
4
4
|
exports.createPropHolderComponent = createPropHolderComponent;
|
|
5
5
|
exports.createLoaderRenderer = createLoaderRenderer;
|
|
6
|
+
exports.createUserDefinedComponentRenderer = createUserDefinedComponentRenderer;
|
|
6
7
|
/**
|
|
7
8
|
* This helper function creates a component renderer definition from its arguments.
|
|
8
9
|
* @param type The unique identifier of the component definition
|
|
@@ -43,3 +44,33 @@ function createLoaderRenderer(type, renderer, hints) {
|
|
|
43
44
|
hints,
|
|
44
45
|
};
|
|
45
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* This helper function creates a user defined component renderer definition from its arguments.
|
|
49
|
+
* @param metadata The metadata of the user-defined component
|
|
50
|
+
* @param componentMarkup The XMLUI markup that defines the user-defined component
|
|
51
|
+
* @param codeBehind Optional code-behind script that contains variable and function definitions
|
|
52
|
+
* used by the component
|
|
53
|
+
* @returns The view renderer definition composed of the arguments
|
|
54
|
+
*/
|
|
55
|
+
function createUserDefinedComponentRenderer(metadata, def, codeBehind) {
|
|
56
|
+
var _a, _b;
|
|
57
|
+
// --- Parse the component definition from the markup
|
|
58
|
+
// --- Parse the optional code-behind script
|
|
59
|
+
const component = def.component.component;
|
|
60
|
+
;
|
|
61
|
+
if (codeBehind) {
|
|
62
|
+
if (codeBehind.vars) {
|
|
63
|
+
(_a = component.vars) !== null && _a !== void 0 ? _a : (component.vars = {});
|
|
64
|
+
component.vars = Object.assign(Object.assign({}, component.vars), codeBehind.vars);
|
|
65
|
+
}
|
|
66
|
+
if (codeBehind.functions) {
|
|
67
|
+
(_b = component.functions) !== null && _b !== void 0 ? _b : (component.functions = {});
|
|
68
|
+
component.functions = Object.assign(Object.assign({}, component.functions), codeBehind.functions);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
// --- Done.
|
|
72
|
+
return {
|
|
73
|
+
compoundComponentDef: def.component,
|
|
74
|
+
metadata,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
@@ -11,6 +11,7 @@ const ComponentProvider_1 = require("../../components/ComponentProvider");
|
|
|
11
11
|
const DebugViewProvider_1 = require("../DebugViewProvider");
|
|
12
12
|
const AppWrapper_1 = require("./AppWrapper");
|
|
13
13
|
const StyleContext_1 = require("../theming/StyleContext");
|
|
14
|
+
const BehaviorContext_1 = require("../behaviors/BehaviorContext");
|
|
14
15
|
// --- We want to enable the produce method of `immer` on Map objects
|
|
15
16
|
(0, immer_1.enableMapSet)();
|
|
16
17
|
// --- We use this object in the app context to represent the `QlientQuery`
|
|
@@ -59,7 +60,7 @@ function AppRoot({ apiInterceptor, contributes, node, decorateComponentsWithTest
|
|
|
59
60
|
const enhancedGlobalProps = (0, react_1.useMemo)(() => (Object.assign(Object.assign({}, globalProps), { isNested })), [globalProps, isNested]);
|
|
60
61
|
// --- Render the app providing a component registry (in which the engine finds a
|
|
61
62
|
// --- component definition by its name). Ensure the app has a context for debugging.
|
|
62
|
-
return ((0, jsx_runtime_1.jsx)(ComponentProvider_1.ComponentProvider, { contributes: contributes, extensionManager: extensionManager, children: (0, jsx_runtime_1.jsx)(StyleContext_1.StyleProvider, { children: (0, jsx_runtime_1.jsx)(DebugViewProvider_1.DebugViewProvider, { debugConfig: globalProps === null || globalProps === void 0 ? void 0 : globalProps.debug, children: (0, jsx_runtime_1.jsx)(AppWrapper_1.AppWrapper, { projectCompilation: projectCompilation, resourceMap: resourceMap, apiInterceptor: apiInterceptor, node: rootNode, contributes: contributes, resources: resources, routerBaseName: routerBaseName, decorateComponentsWithTestId: decorateComponentsWithTestId, debugEnabled: debugEnabled, defaultTheme: defaultTheme, defaultTone: defaultTone, globalProps: enhancedGlobalProps, standalone: standalone, trackContainerHeight: trackContainerHeight, previewMode: previewMode, sources: sources, onInit: onInit, children: children }) }) }) }));
|
|
63
|
+
return ((0, jsx_runtime_1.jsx)(ComponentProvider_1.ComponentProvider, { contributes: contributes, extensionManager: extensionManager, children: (0, jsx_runtime_1.jsx)(StyleContext_1.StyleProvider, { children: (0, jsx_runtime_1.jsx)(BehaviorContext_1.BehaviorsProvider, { children: (0, jsx_runtime_1.jsx)(DebugViewProvider_1.DebugViewProvider, { debugConfig: globalProps === null || globalProps === void 0 ? void 0 : globalProps.debug, children: (0, jsx_runtime_1.jsx)(AppWrapper_1.AppWrapper, { projectCompilation: projectCompilation, resourceMap: resourceMap, apiInterceptor: apiInterceptor, node: rootNode, contributes: contributes, resources: resources, routerBaseName: routerBaseName, decorateComponentsWithTestId: decorateComponentsWithTestId, debugEnabled: debugEnabled, defaultTheme: defaultTheme, defaultTone: defaultTone, globalProps: enhancedGlobalProps, standalone: standalone, trackContainerHeight: trackContainerHeight, previewMode: previewMode, sources: sources, onInit: onInit, children: children }) }) }) }) }));
|
|
63
64
|
}
|
|
64
65
|
/**
|
|
65
66
|
*
|
|
@@ -53,6 +53,7 @@ const lodash_es_1 = require("lodash-es");
|
|
|
53
53
|
const react_compose_refs_1 = require("@radix-ui/react-compose-refs");
|
|
54
54
|
const extractParam_1 = require("../utils/extractParam");
|
|
55
55
|
const ThemeContext_1 = require("../theming/ThemeContext");
|
|
56
|
+
const StyleContext_1 = require("../theming/StyleContext");
|
|
56
57
|
const mergeProps_1 = require("../utils/mergeProps");
|
|
57
58
|
const ComponentDecorator_1 = __importDefault(require("../ComponentDecorator"));
|
|
58
59
|
const valueExtractor_1 = require("../rendering/valueExtractor");
|
|
@@ -68,9 +69,7 @@ const event_handlers_1 = require("../event-handlers");
|
|
|
68
69
|
const UnknownComponent_1 = __importDefault(require("./UnknownComponent"));
|
|
69
70
|
const InvalidComponent_1 = __importDefault(require("./InvalidComponent"));
|
|
70
71
|
const layout_resolver_1 = require("../theming/layout-resolver");
|
|
71
|
-
const
|
|
72
|
-
const StyleContext_1 = require("../theming/StyleContext");
|
|
73
|
-
const AnimationNative_1 = require("../../components/Animation/AnimationNative");
|
|
72
|
+
const BehaviorContext_1 = require("../behaviors/BehaviorContext");
|
|
74
73
|
/**
|
|
75
74
|
* This component's primary responsibility is to transform a particular component definition
|
|
76
75
|
* into its React representation using the current rendering context.
|
|
@@ -176,39 +175,32 @@ const ComponentAdapter = (0, react_1.forwardRef)(function ComponentAdapter(_a, r
|
|
|
176
175
|
// });
|
|
177
176
|
}, [appContext.mediaSize, layoutContextRef, safeNode.props, valueExtractor]);
|
|
178
177
|
// const className = useComponentStyle(cssProps);
|
|
179
|
-
// --- Check if the component has a tooltip property
|
|
180
|
-
const tooltipText = (0, react_1.useMemo)(() => { var _a; return valueExtractor((_a = safeNode.props) === null || _a === void 0 ? void 0 : _a.tooltip, true); }, [safeNode.props, valueExtractor]);
|
|
181
|
-
// --- Check if the component has a tooltip property
|
|
182
|
-
const tooltipMarkdown = (0, react_1.useMemo)(() => { var _a; return valueExtractor((_a = safeNode.props) === null || _a === void 0 ? void 0 : _a.tooltipMarkdown, true); }, [safeNode.props, valueExtractor]);
|
|
183
|
-
const tooltipOptions = (0, react_1.useMemo)(() => { var _a; return valueExtractor((_a = safeNode.props) === null || _a === void 0 ? void 0 : _a.tooltipOptions, true); }, [safeNode.props, valueExtractor]);
|
|
184
|
-
const animation = (0, react_1.useMemo)(() => { var _a; return valueExtractor((_a = safeNode.props) === null || _a === void 0 ? void 0 : _a.animation, true); }, [safeNode.props, valueExtractor]);
|
|
185
|
-
const animationOptions = (0, react_1.useMemo)(() => { var _a; return valueExtractor((_a = safeNode.props) === null || _a === void 0 ? void 0 : _a.animationOptions, true); }, [safeNode.props, valueExtractor]);
|
|
186
178
|
// --- As compileLayout generates new cssProps and nonCssProps objects every time, we need to
|
|
187
179
|
// --- memoize them using shallow comparison to avoid unnecessary re-renders.
|
|
188
180
|
const stableLayoutCss = (0, hooks_1.useShallowCompareMemoize)(cssProps);
|
|
189
181
|
const className = (0, StyleContext_1.useComponentStyle)(stableLayoutCss);
|
|
190
182
|
const { inspectId, refreshInspection } = (0, InspectorContext_1.useInspector)(safeNode, uid);
|
|
183
|
+
// --- Assemble the renderer context we pass down the rendering chain
|
|
184
|
+
const rendererContext = {
|
|
185
|
+
node: safeNode,
|
|
186
|
+
state: state[uid] || constants_1.EMPTY_OBJECT,
|
|
187
|
+
updateState: memoedUpdateState,
|
|
188
|
+
appContext,
|
|
189
|
+
extractValue: valueExtractor,
|
|
190
|
+
lookupEventHandler: memoedLookupEventHandler,
|
|
191
|
+
lookupAction: memoedLookupAction,
|
|
192
|
+
lookupSyncCallback: memoedLookupSyncCallback,
|
|
193
|
+
extractResourceUrl,
|
|
194
|
+
renderChild: memoedRenderChild,
|
|
195
|
+
registerComponentApi: memoedRegisterComponentApi,
|
|
196
|
+
className,
|
|
197
|
+
layoutContext: layoutContextRef === null || layoutContextRef === void 0 ? void 0 : layoutContextRef.current,
|
|
198
|
+
uid,
|
|
199
|
+
};
|
|
191
200
|
// --- No special behavior, let's render the component according to its definition.
|
|
192
201
|
let renderedNode = null;
|
|
193
202
|
let renderingError = null;
|
|
194
203
|
try {
|
|
195
|
-
// --- Assemble the renderer context we pass down the rendering chain
|
|
196
|
-
const rendererContext = {
|
|
197
|
-
node: safeNode,
|
|
198
|
-
state: state[uid] || constants_1.EMPTY_OBJECT,
|
|
199
|
-
updateState: memoedUpdateState,
|
|
200
|
-
appContext,
|
|
201
|
-
extractValue: valueExtractor,
|
|
202
|
-
lookupEventHandler: memoedLookupEventHandler,
|
|
203
|
-
lookupAction: memoedLookupAction,
|
|
204
|
-
lookupSyncCallback: memoedLookupSyncCallback,
|
|
205
|
-
extractResourceUrl,
|
|
206
|
-
renderChild: memoedRenderChild,
|
|
207
|
-
registerComponentApi: memoedRegisterComponentApi,
|
|
208
|
-
className,
|
|
209
|
-
layoutContext: layoutContextRef === null || layoutContextRef === void 0 ? void 0 : layoutContextRef.current,
|
|
210
|
-
uid,
|
|
211
|
-
};
|
|
212
204
|
if (safeNode.type === "Slot") {
|
|
213
205
|
// --- Transpose the children from the parent component to the slot in
|
|
214
206
|
// --- the compound component
|
|
@@ -280,27 +272,20 @@ const ComponentAdapter = (0, react_1.forwardRef)(function ComponentAdapter(_a, r
|
|
|
280
272
|
? (0, react_1.cloneElement)(renderedNode, null, children)
|
|
281
273
|
: renderedNode;
|
|
282
274
|
}
|
|
283
|
-
const
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
return ((0, jsx_runtime_1.jsx)(AnimationNative_1.Animation, Object.assign({ animation: (0, AnimationNative_1.parseAnimation)(animation) }, parsedAnimationOptions, { children: node })));
|
|
294
|
-
}
|
|
295
|
-
// --- Handle tooltip
|
|
296
|
-
if (tooltipMarkdown || tooltipText) {
|
|
297
|
-
const parsedOptions = (0, TooltipNative_1.parseTooltipOptions)(tooltipOptions);
|
|
298
|
-
return ((0, jsx_runtime_1.jsx)(TooltipNative_1.Tooltip, Object.assign({ text: tooltipText, markdown: tooltipMarkdown }, parsedOptions, { children: node })));
|
|
275
|
+
const { getBehaviors } = (0, BehaviorContext_1.useBehaviors)();
|
|
276
|
+
const applyBehaviors = (node) => {
|
|
277
|
+
const behaviors = getBehaviors();
|
|
278
|
+
let wrappedNode = node;
|
|
279
|
+
if (!isCompoundComponent) {
|
|
280
|
+
for (const behavior of behaviors) {
|
|
281
|
+
if (behavior.canAttach(rendererContext.node, descriptor)) {
|
|
282
|
+
wrappedNode = behavior.attach(rendererContext, wrappedNode);
|
|
283
|
+
}
|
|
284
|
+
}
|
|
299
285
|
}
|
|
300
|
-
|
|
301
|
-
return node;
|
|
286
|
+
return wrappedNode;
|
|
302
287
|
};
|
|
303
|
-
return
|
|
288
|
+
return applyBehaviors(nodeToRender);
|
|
304
289
|
});
|
|
305
290
|
/**
|
|
306
291
|
* This function renders the content of a slot. If the slot is named, it looks for a template
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.hasRenderableChildren = hasRenderableChildren;
|
|
4
|
+
function hasRenderableChildren(children) {
|
|
5
|
+
return !!(children === null || children === void 0 ? void 0 : children.some((child) => (child === null || child === void 0 ? void 0 : child.type) !== "Slot"));
|
|
6
|
+
}
|