xmlui 0.9.92 → 0.9.93

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 (44) hide show
  1. package/dist/lib/{index-C5eOg7bB.mjs → index-C4FeLQEv.mjs} +7972 -7779
  2. package/dist/lib/index.css +1 -1
  3. package/dist/lib/{initMock-DLD4GmW7.mjs → initMock-DwQKZ8T4.mjs} +1 -1
  4. package/dist/lib/language-server-web-worker.mjs +1 -1
  5. package/dist/lib/language-server.mjs +1 -1
  6. package/dist/lib/{metadata-utils-BE5_Lmoa.mjs → metadata-utils-PjrGUxZN.mjs} +1 -1
  7. package/dist/lib/{server-common-xCK0Af2K.mjs → server-common-BbjTO8TH.mjs} +2 -2
  8. package/dist/lib/{transform-bUuxPyao.mjs → transform-CDSgqN5L.mjs} +1240 -1202
  9. package/dist/lib/xmlui-parser.d.ts +3 -1
  10. package/dist/lib/xmlui-parser.mjs +2 -2
  11. package/dist/lib/{xmlui-serializer-BLFl30t9.mjs → xmlui-serializer-D6rtRMNI.mjs} +1 -1
  12. package/dist/lib/xmlui.d.ts +17 -12
  13. package/dist/lib/xmlui.mjs +2 -2
  14. package/dist/metadata/{collectedComponentMetadata-iKGyD6r3.mjs → collectedComponentMetadata-CTFECKPI.mjs} +8860 -8630
  15. package/dist/metadata/{initMock-CZGAyfXr.mjs → initMock-DUtrSCpH.mjs} +1 -1
  16. package/dist/metadata/style.css +1 -1
  17. package/dist/metadata/xmlui-metadata.mjs +1 -1
  18. package/dist/metadata/xmlui-metadata.umd.js +102 -98
  19. package/dist/scripts/package.json +2 -1
  20. package/dist/scripts/src/components/AutoComplete/AutoComplete.js +5 -2
  21. package/dist/scripts/src/components/AutoComplete/AutoCompleteContext.js +1 -2
  22. package/dist/scripts/src/components/AutoComplete/AutoCompleteNative.js +9 -12
  23. package/dist/scripts/src/components/Bookmark/Bookmark.js +1 -1
  24. package/dist/scripts/src/components/Option/Option.js +11 -11
  25. package/dist/scripts/src/components/Select/HiddenOption.js +2 -2
  26. package/dist/scripts/src/components/Select/Select.js +5 -9
  27. package/dist/scripts/src/components/Select/SelectNative.js +95 -45
  28. package/dist/scripts/src/components/SlotItem.js +1 -0
  29. package/dist/scripts/src/components/Spinner/SpinnerNative.js +3 -4
  30. package/dist/scripts/src/components/Tabs/TabItem.js +12 -1
  31. package/dist/scripts/src/components/Tabs/TabItemNative.js +4 -3
  32. package/dist/scripts/src/components/Tabs/Tabs.js +1 -1
  33. package/dist/scripts/src/components/Tabs/TabsNative.js +22 -43
  34. package/dist/scripts/src/components/TextArea/TextArea.js +1 -2
  35. package/dist/scripts/src/components/Toggle/Toggle.js +34 -10
  36. package/dist/scripts/src/components/container-helpers.js +2 -1
  37. package/dist/scripts/src/components-core/rendering/ComponentWrapper.js +2 -1
  38. package/dist/scripts/src/components-core/xmlui-parser.js +365 -196
  39. package/dist/scripts/src/parsers/xmlui-parser/diagnostics.js +1 -1
  40. package/dist/scripts/src/parsers/xmlui-parser/parser.js +69 -1
  41. package/dist/standalone/xmlui-standalone.es.d.ts +18 -12
  42. package/dist/standalone/xmlui-standalone.umd.js +252 -248
  43. package/package.json +2 -1
  44. package/dist/scripts/src/abstractions/scripting/modules.js +0 -2
@@ -1,37 +1,4 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
36
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
37
4
  };
@@ -39,19 +6,29 @@ Object.defineProperty(exports, "__esModule", { value: true });
39
6
  exports.Tabs = exports.defaultProps = void 0;
40
7
  const jsx_runtime_1 = require("react/jsx-runtime");
41
8
  const react_1 = require("react");
42
- const RTabs = __importStar(require("@radix-ui/react-tabs"));
9
+ const react_tabs_1 = require("@radix-ui/react-tabs");
43
10
  const Tabs_module_scss_1 = __importDefault(require("./Tabs.module.scss"));
44
11
  const misc_1 = require("../../components-core/utils/misc");
45
- const TabContext_1 = require("../Tabs/TabContext");
12
+ const TabContext_1 = require("./TabContext");
46
13
  const classnames_1 = __importDefault(require("classnames"));
47
14
  exports.defaultProps = {
48
15
  activeTab: 0,
49
16
  orientation: "horizontal",
50
17
  distributeEvenly: false,
51
18
  };
52
- exports.Tabs = (0, react_1.forwardRef)(function Tabs({ activeTab = exports.defaultProps.activeTab, orientation = exports.defaultProps.orientation, tabRenderer, style, children, registerComponentApi, className, distributeEvenly = exports.defaultProps.distributeEvenly, }, forwardedRef) {
19
+ exports.Tabs = (0, react_1.forwardRef)(function Tabs({ activeTab = exports.defaultProps.activeTab, orientation = exports.defaultProps.orientation, tabRenderer, style, children, id, registerComponentApi, className, distributeEvenly = exports.defaultProps.distributeEvenly, }, forwardedRef) {
53
20
  const { tabItems, tabContextValue } = (0, TabContext_1.useTabContextValue)();
54
- const [activeIndex, setActiveIndex] = (0, react_1.useState)(activeTab);
21
+ // Ensure activeTab is within valid bounds
22
+ const validActiveTab = (0, react_1.useMemo)(() => {
23
+ if (tabItems.length === 0)
24
+ return 0;
25
+ if (activeTab < 0)
26
+ return 0;
27
+ if (activeTab >= tabItems.length)
28
+ return 0; // Default to first tab if out of bounds
29
+ return activeTab;
30
+ }, [activeTab, tabItems.length]);
31
+ const [activeIndex, setActiveIndex] = (0, react_1.useState)(validActiveTab);
55
32
  const currentTab = (0, react_1.useMemo)(() => {
56
33
  var _a;
57
34
  return (_a = tabItems[activeIndex]) === null || _a === void 0 ? void 0 : _a.id;
@@ -63,8 +40,8 @@ exports.Tabs = (0, react_1.forwardRef)(function Tabs({ activeTab = exports.defau
63
40
  if (activeTab !== undefined) {
64
41
  setActiveIndex(() => {
65
42
  const maxIndex = tabItems.length - 1;
66
- const newIndex = activeTab - 1;
67
- return newIndex < 0 ? 0 : newIndex > maxIndex ? maxIndex : newIndex;
43
+ const newIndex = activeTab; // activeTab should be 0-based index
44
+ return newIndex < 0 ? 0 : newIndex > maxIndex ? 0 : newIndex; // Default to first tab (0) when out of bounds
68
45
  });
69
46
  }
70
47
  }, [activeTab, tabItems.length]);
@@ -79,13 +56,15 @@ exports.Tabs = (0, react_1.forwardRef)(function Tabs({ activeTab = exports.defau
79
56
  next,
80
57
  });
81
58
  }, [next, registerComponentApi]);
82
- return ((0, jsx_runtime_1.jsx)(TabContext_1.TabContext.Provider, { value: tabContextValue, children: (0, jsx_runtime_1.jsxs)(RTabs.Root, { ref: forwardedRef, className: (0, classnames_1.default)(Tabs_module_scss_1.default.tabs, className), value: `${currentTab}`, onValueChange: (tab) => {
59
+ return ((0, jsx_runtime_1.jsx)(TabContext_1.TabContext.Provider, { value: tabContextValue, children: (0, jsx_runtime_1.jsxs)(react_tabs_1.Root, { id: id, ref: forwardedRef, className: (0, classnames_1.default)(Tabs_module_scss_1.default.tabs, className), value: `${currentTab}`, onValueChange: (tab) => {
83
60
  const newIndex = tabItems.findIndex((item) => item.id === tab);
84
61
  if (newIndex !== activeIndex) {
85
62
  tabContextValue.setActiveTabId(tab);
86
63
  setActiveIndex(newIndex);
87
64
  }
88
- }, orientation: orientation, style: style, children: [(0, jsx_runtime_1.jsxs)(RTabs.List, { className: Tabs_module_scss_1.default.tabsList, children: [tabItems.map((tab) => tabRenderer ? ((0, jsx_runtime_1.jsx)(RTabs.Trigger, { value: tab.id, asChild: true, children: tabRenderer({ label: tab.label, isActive: tab.id === currentTab }) }, tab.id)) : ((0, jsx_runtime_1.jsx)(RTabs.Trigger, { className: (0, classnames_1.default)(Tabs_module_scss_1.default.tabTrigger, {
89
- [Tabs_module_scss_1.default.distributeEvenly]: distributeEvenly
90
- }), value: tab.id, children: tab.label }, tab.id))), (!distributeEvenly && !tabRenderer) && (0, jsx_runtime_1.jsx)("div", { className: Tabs_module_scss_1.default.filler, "data-orientation": orientation })] }), children] }) }));
65
+ }, orientation: orientation, style: style, children: [(0, jsx_runtime_1.jsxs)(react_tabs_1.List, { className: Tabs_module_scss_1.default.tabsList, children: [tabItems.map((tab) => tab.labelRenderer ? ((0, jsx_runtime_1.jsx)(react_tabs_1.Trigger, { role: "tab", className: (0, classnames_1.default)(Tabs_module_scss_1.default.tabTrigger, {
66
+ [Tabs_module_scss_1.default.distributeEvenly]: distributeEvenly,
67
+ }), value: tab.id, children: tab.labelRenderer(Object.assign(Object.assign({}, tab), { isActive: tab.id === currentTab })) }, tab.id)) : tabRenderer ? ((0, jsx_runtime_1.jsx)(react_tabs_1.Trigger, { value: tab.id, asChild: true, role: "tab", children: tabRenderer(Object.assign(Object.assign({}, tab), { isActive: tab.id === currentTab })) }, tab.id)) : ((0, jsx_runtime_1.jsx)(react_tabs_1.Trigger, { role: "tab", className: (0, classnames_1.default)(Tabs_module_scss_1.default.tabTrigger, {
68
+ [Tabs_module_scss_1.default.distributeEvenly]: distributeEvenly,
69
+ }), value: tab.id, children: tab.label }, tab.id))), !distributeEvenly && !tabRenderer && ((0, jsx_runtime_1.jsx)("div", { className: Tabs_module_scss_1.default.filler, "data-orientation": orientation }))] }), children] }) }));
91
70
  });
@@ -85,6 +85,5 @@ exports.TextAreaMd = (0, metadata_helpers_1.createMetadata)({
85
85
  themeVars: (0, themeVars_1.parseScssVar)(TextArea_module_scss_1.default.themeVars),
86
86
  });
87
87
  exports.textAreaComponentRenderer = (0, renderers_1.createComponentRenderer)(COMP, exports.TextAreaMd, ({ node, extractValue, state, updateState, layoutCss, registerComponentApi, lookupEventHandler, }) => {
88
- const initialValue = extractValue(node.props.initialValue);
89
- return ((0, jsx_runtime_1.jsx)(TextAreaNative_1.TextArea, { value: state === null || state === void 0 ? void 0 : state.value, initialValue: initialValue, updateState: updateState, autoFocus: extractValue.asOptionalBoolean(node.props.autoFocus), enabled: extractValue.asOptionalBoolean(node.props.enabled), placeholder: extractValue(node.props.placeholder), onDidChange: lookupEventHandler("didChange"), onFocus: lookupEventHandler("gotFocus"), onBlur: lookupEventHandler("lostFocus"), readOnly: extractValue.asOptionalBoolean(node.props.readOnly), resize: node.props.resize, enterSubmits: extractValue.asOptionalBoolean(node.props.enterSubmits), escResets: extractValue.asOptionalBoolean(node.props.escResets), style: layoutCss, registerComponentApi: registerComponentApi, maxRows: extractValue.asOptionalNumber(node.props.maxRows), minRows: extractValue.asOptionalNumber(node.props.minRows), maxLength: extractValue.asOptionalNumber(node.props.maxLength), rows: extractValue.asOptionalNumber(node.props.rows), autoSize: extractValue.asOptionalBoolean(node.props.autoSize), validationStatus: extractValue(node.props.validationStatus), label: extractValue(node.props.label), labelPosition: extractValue(node.props.labelPosition), labelWidth: extractValue(node.props.labelWidth), labelBreak: extractValue.asOptionalBoolean(node.props.labelBreak), required: extractValue.asOptionalBoolean(node.props.required) }, `${node.uid}-${initialValue}`));
88
+ return ((0, jsx_runtime_1.jsx)(TextAreaNative_1.TextArea, { value: state === null || state === void 0 ? void 0 : state.value, initialValue: extractValue(node.props.initialValue), updateState: updateState, autoFocus: extractValue.asOptionalBoolean(node.props.autoFocus), enabled: extractValue.asOptionalBoolean(node.props.enabled), placeholder: extractValue(node.props.placeholder), onDidChange: lookupEventHandler("didChange"), onFocus: lookupEventHandler("gotFocus"), onBlur: lookupEventHandler("lostFocus"), readOnly: extractValue.asOptionalBoolean(node.props.readOnly), resize: node.props.resize, enterSubmits: extractValue.asOptionalBoolean(node.props.enterSubmits), escResets: extractValue.asOptionalBoolean(node.props.escResets), style: layoutCss, registerComponentApi: registerComponentApi, maxRows: extractValue.asOptionalNumber(node.props.maxRows), minRows: extractValue.asOptionalNumber(node.props.minRows), maxLength: extractValue.asOptionalNumber(node.props.maxLength), rows: extractValue.asOptionalNumber(node.props.rows), autoSize: extractValue.asOptionalBoolean(node.props.autoSize), validationStatus: extractValue(node.props.validationStatus), label: extractValue(node.props.label), labelPosition: extractValue(node.props.labelPosition), labelWidth: extractValue(node.props.labelWidth), labelBreak: extractValue.asOptionalBoolean(node.props.labelBreak), required: extractValue.asOptionalBoolean(node.props.required) }));
90
89
  });
@@ -57,8 +57,29 @@ exports.Toggle = (0, react_3.forwardRef)(function Toggle({ id, initialValue = ex
57
57
  const generatedId = (0, react_1.useId)();
58
58
  const inputId = id || generatedId;
59
59
  const innerRef = react_3.default.useRef(null);
60
+ const transformToLegitValue = (inp) => {
61
+ if (typeof inp === "undefined" || inp === null) {
62
+ return false;
63
+ }
64
+ if (typeof inp === "boolean") {
65
+ return inp;
66
+ }
67
+ if (typeof inp === "number") {
68
+ return !isNaN(inp) && !!inp;
69
+ }
70
+ if (typeof inp === "string") {
71
+ return inp.trim() !== "" && inp.toLowerCase() !== "false";
72
+ }
73
+ if (Array.isArray(inp)) {
74
+ return inp.length > 0;
75
+ }
76
+ if (typeof inp === "object") {
77
+ return Object.keys(inp).length > 0;
78
+ }
79
+ return false;
80
+ };
60
81
  (0, react_3.useEffect)(() => {
61
- updateState({ value: initialValue }, { initial: true });
82
+ updateState({ value: transformToLegitValue(initialValue) }, { initial: true });
62
83
  }, [initialValue, updateState]);
63
84
  const updateValue = (0, react_3.useCallback)((value) => {
64
85
  var _a;
@@ -95,7 +116,7 @@ exports.Toggle = (0, react_3.forwardRef)(function Toggle({ id, initialValue = ex
95
116
  }
96
117
  }, [focus, autoFocus]);
97
118
  const setValue = (0, misc_1.useEvent)((newValue) => {
98
- updateValue(newValue);
119
+ updateValue(transformToLegitValue(newValue));
99
120
  });
100
121
  (0, react_3.useEffect)(() => {
101
122
  registerComponentApi === null || registerComponentApi === void 0 ? void 0 : registerComponentApi({
@@ -103,13 +124,16 @@ exports.Toggle = (0, react_3.forwardRef)(function Toggle({ id, initialValue = ex
103
124
  setValue,
104
125
  });
105
126
  }, [focus, registerComponentApi, setValue]);
106
- const input = (0, react_2.useMemo)(() => ((0, jsx_runtime_1.jsx)("input", { id: inputId, ref: innerRef, type: "checkbox", role: variant, checked: value, disabled: !enabled, required: required, readOnly: readOnly, "aria-readonly": readOnly, "aria-checked": indeterminate ? "mixed" : value, "aria-required": required, "aria-disabled": !enabled, onChange: onInputChange, onFocus: handleOnFocus, onBlur: handleOnBlur, autoFocus: autoFocus, className: (0, classnames_1.default)(Toggle_module_scss_1.default.resetAppearance, className, {
107
- [Toggle_module_scss_1.default.checkbox]: variant === "checkbox",
108
- [Toggle_module_scss_1.default.switch]: variant === "switch",
109
- [Toggle_module_scss_1.default.error]: validationStatus === "error",
110
- [Toggle_module_scss_1.default.warning]: validationStatus === "warning",
111
- [Toggle_module_scss_1.default.valid]: validationStatus === "valid",
112
- }) })), [
127
+ const input = (0, react_2.useMemo)(() => {
128
+ const legitValue = transformToLegitValue(value);
129
+ return ((0, jsx_runtime_1.jsx)("input", { id: inputId, ref: innerRef, type: "checkbox", role: variant, checked: legitValue, disabled: !enabled, required: required, readOnly: readOnly, "aria-readonly": readOnly, "aria-checked": indeterminate ? "mixed" : legitValue, "aria-required": required, "aria-disabled": !enabled, onChange: onInputChange, onFocus: handleOnFocus, onBlur: handleOnBlur, autoFocus: autoFocus, className: (0, classnames_1.default)(Toggle_module_scss_1.default.resetAppearance, className, {
130
+ [Toggle_module_scss_1.default.checkbox]: variant === "checkbox",
131
+ [Toggle_module_scss_1.default.switch]: variant === "switch",
132
+ [Toggle_module_scss_1.default.error]: validationStatus === "error",
133
+ [Toggle_module_scss_1.default.warning]: validationStatus === "warning",
134
+ [Toggle_module_scss_1.default.valid]: validationStatus === "valid",
135
+ }) }));
136
+ }, [
113
137
  inputId,
114
138
  className,
115
139
  enabled,
@@ -125,7 +149,7 @@ exports.Toggle = (0, react_3.forwardRef)(function Toggle({ id, initialValue = ex
125
149
  autoFocus,
126
150
  ]);
127
151
  return ((0, jsx_runtime_1.jsx)(ItemWithLabel_1.ItemWithLabel, { ref: forwardedRef, id: inputId, label: label, style: style, labelPosition: labelPosition, labelWidth: labelWidth, labelBreak: labelBreak, required: required, enabled: enabled, isInputTemplateUsed: !!inputRenderer, shrinkToLabel: true, labelStyle: { pointerEvents: readOnly ? "none" : undefined }, children: inputRenderer ? ((0, jsx_runtime_1.jsxs)("label", { className: Toggle_module_scss_1.default.label, children: [(0, jsx_runtime_1.jsx)("div", { className: Toggle_module_scss_1.default.inputContainer, children: input }), inputRenderer({
128
- $checked: value,
152
+ $checked: transformToLegitValue(value),
129
153
  $setChecked: setValue,
130
154
  })] })) : (input) }));
131
155
  });
@@ -20,6 +20,7 @@ exports.MemoizedItem = (0, react_1.memo)(({ node, item, context, renderChild, la
20
20
  contextVars: Object.assign({ [itemKey]: item, [contextKey]: context }, shallowMemoedContextVars),
21
21
  children: Array.isArray(node) ? node : [node],
22
22
  };
23
- }, [context, item, node, shallowMemoedContextVars]);
23
+ }, [context, item, node, shallowMemoedContextVars, itemKey, contextKey]);
24
24
  return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: renderChild(nodeWithItem, layoutContext) });
25
25
  });
26
+ exports.MemoizedItem.displayName = "MemoizedItem";
@@ -65,13 +65,14 @@ exports.ComponentWrapper = (0, react_1.memo)((0, react_1.forwardRef)(function Co
65
65
  }
66
66
  }));
67
67
  function transformNodeWithChildrenAsTemplate(node, childrenAsTemplate) {
68
+ var _a;
68
69
  if (!childrenAsTemplate) {
69
70
  return node;
70
71
  }
71
72
  if (!node.children || node.children.length === 0) {
72
73
  return node;
73
74
  }
74
- if (node.props[childrenAsTemplate]) {
75
+ if ((_a = node.props) === null || _a === void 0 ? void 0 : _a[childrenAsTemplate]) {
75
76
  throw Error("'" + childrenAsTemplate + "' is already used as a property.");
76
77
  }
77
78
  return Object.assign(Object.assign({}, node), { props: Object.assign(Object.assign({}, node.props), { [childrenAsTemplate]: node.children }), children: constants_1.EMPTY_ARRAY });