@aurumjs/html 0.10.12

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 (71) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +152 -0
  3. package/package.json +52 -0
  4. package/prebuilt/esnext/builtin_components/portal.d.ts +9 -0
  5. package/prebuilt/esnext/builtin_components/portal.d.ts.map +1 -0
  6. package/prebuilt/esnext/builtin_components/portal.js +40 -0
  7. package/prebuilt/esnext/builtin_components/portal.js.map +1 -0
  8. package/prebuilt/esnext/builtin_components/router_link.d.ts +21 -0
  9. package/prebuilt/esnext/builtin_components/router_link.d.ts.map +1 -0
  10. package/prebuilt/esnext/builtin_components/router_link.js +54 -0
  11. package/prebuilt/esnext/builtin_components/router_link.js.map +1 -0
  12. package/prebuilt/esnext/index.d.ts +18 -0
  13. package/prebuilt/esnext/index.d.ts.map +1 -0
  14. package/prebuilt/esnext/index.js +18 -0
  15. package/prebuilt/esnext/index.js.map +1 -0
  16. package/prebuilt/esnext/jsx-dev-runtime.d.ts +2 -0
  17. package/prebuilt/esnext/jsx-dev-runtime.d.ts.map +1 -0
  18. package/prebuilt/esnext/jsx-dev-runtime.js +2 -0
  19. package/prebuilt/esnext/jsx-dev-runtime.js.map +1 -0
  20. package/prebuilt/esnext/jsx-runtime.d.ts +28 -0
  21. package/prebuilt/esnext/jsx-runtime.d.ts.map +1 -0
  22. package/prebuilt/esnext/jsx-runtime.js +26 -0
  23. package/prebuilt/esnext/jsx-runtime.js.map +1 -0
  24. package/prebuilt/esnext/nodes/input.d.ts +41 -0
  25. package/prebuilt/esnext/nodes/input.d.ts.map +1 -0
  26. package/prebuilt/esnext/nodes/input.js +92 -0
  27. package/prebuilt/esnext/nodes/input.js.map +1 -0
  28. package/prebuilt/esnext/nodes/rendering_helpers.d.ts +8 -0
  29. package/prebuilt/esnext/nodes/rendering_helpers.d.ts.map +1 -0
  30. package/prebuilt/esnext/nodes/rendering_helpers.js +173 -0
  31. package/prebuilt/esnext/nodes/rendering_helpers.js.map +1 -0
  32. package/prebuilt/esnext/nodes/select.d.ts +17 -0
  33. package/prebuilt/esnext/nodes/select.d.ts.map +1 -0
  34. package/prebuilt/esnext/nodes/select.js +95 -0
  35. package/prebuilt/esnext/nodes/select.js.map +1 -0
  36. package/prebuilt/esnext/nodes/simple_dom_nodes.d.ts +866 -0
  37. package/prebuilt/esnext/nodes/simple_dom_nodes.d.ts.map +1 -0
  38. package/prebuilt/esnext/nodes/simple_dom_nodes.js +531 -0
  39. package/prebuilt/esnext/nodes/simple_dom_nodes.js.map +1 -0
  40. package/prebuilt/esnext/nodes/textarea.d.ts +34 -0
  41. package/prebuilt/esnext/nodes/textarea.d.ts.map +1 -0
  42. package/prebuilt/esnext/nodes/textarea.js +61 -0
  43. package/prebuilt/esnext/nodes/textarea.js.map +1 -0
  44. package/prebuilt/esnext/rendering/dom_runtime.d.ts +91 -0
  45. package/prebuilt/esnext/rendering/dom_runtime.d.ts.map +1 -0
  46. package/prebuilt/esnext/rendering/dom_runtime.js +970 -0
  47. package/prebuilt/esnext/rendering/dom_runtime.js.map +1 -0
  48. package/prebuilt/esnext/rendering/render_batch.d.ts +15 -0
  49. package/prebuilt/esnext/rendering/render_batch.d.ts.map +1 -0
  50. package/prebuilt/esnext/rendering/render_batch.js +73 -0
  51. package/prebuilt/esnext/rendering/render_batch.js.map +1 -0
  52. package/prebuilt/esnext/rendering/renderers/dom_adapter.d.ts +199 -0
  53. package/prebuilt/esnext/rendering/renderers/dom_adapter.d.ts.map +1 -0
  54. package/prebuilt/esnext/rendering/renderers/dom_adapter.js +525 -0
  55. package/prebuilt/esnext/rendering/renderers/dom_adapter.js.map +1 -0
  56. package/prebuilt/esnext/rendering/renderers/string_adapter.d.ts +4 -0
  57. package/prebuilt/esnext/rendering/renderers/string_adapter.d.ts.map +1 -0
  58. package/prebuilt/esnext/rendering/renderers/string_adapter.js +112 -0
  59. package/prebuilt/esnext/rendering/renderers/string_adapter.js.map +1 -0
  60. package/prebuilt/esnext/rendering/renderers/vdom_adapter.d.ts +11 -0
  61. package/prebuilt/esnext/rendering/renderers/vdom_adapter.d.ts.map +1 -0
  62. package/prebuilt/esnext/rendering/renderers/vdom_adapter.js +23 -0
  63. package/prebuilt/esnext/rendering/renderers/vdom_adapter.js.map +1 -0
  64. package/prebuilt/esnext/utilities/aurum.d.ts +155 -0
  65. package/prebuilt/esnext/utilities/aurum.d.ts.map +1 -0
  66. package/prebuilt/esnext/utilities/aurum.js +282 -0
  67. package/prebuilt/esnext/utilities/aurum.js.map +1 -0
  68. package/prebuilt/esnext/utilities/sanitize.d.ts +25 -0
  69. package/prebuilt/esnext/utilities/sanitize.d.ts.map +1 -0
  70. package/prebuilt/esnext/utilities/sanitize.js +191 -0
  71. package/prebuilt/esnext/utilities/sanitize.js.map +1 -0
@@ -0,0 +1,92 @@
1
+ import { DomNodeCreator } from '../rendering/renderers/dom_adapter.js';
2
+ import { queueRenderUpdate, renderBatchState } from '../rendering/render_batch.js';
3
+ import { isDataWriter } from './rendering_helpers.js';
4
+ /**
5
+ * @internal
6
+ */
7
+ const inputEvents = { input: 'onInput', change: 'onChange' };
8
+ /**
9
+ * @internal
10
+ */
11
+ const inputProps = [
12
+ 'placeholder',
13
+ 'readonly',
14
+ 'disabled',
15
+ 'accept',
16
+ 'alt',
17
+ 'autocomplete',
18
+ 'autofocus',
19
+ 'formAction',
20
+ 'formEnctype',
21
+ 'formMethod',
22
+ 'formNoValidate',
23
+ 'formTarget',
24
+ 'max',
25
+ 'maxLength',
26
+ 'min',
27
+ 'minLength',
28
+ 'pattern',
29
+ 'multiple',
30
+ 'required',
31
+ 'type',
32
+ 'step',
33
+ 'list'
34
+ ];
35
+ /**
36
+ * @internal
37
+ */
38
+ export const Input = DomNodeCreator('input', inputProps, inputEvents, (node, props, cleanUp) => {
39
+ const input = node;
40
+ if ((props === null || props === void 0 ? void 0 : props.defaultValue) !== undefined)
41
+ input.defaultValue = String(props.defaultValue);
42
+ if ((props === null || props === void 0 ? void 0 : props.value) !== undefined) {
43
+ if (typeof props.value !== 'string' && typeof props.value !== 'number') {
44
+ const value = props.value;
45
+ const updateValue = (v) => {
46
+ if (cleanUp.isCancelled)
47
+ return;
48
+ input.value = v == null ? '' : String(v);
49
+ };
50
+ value.listenAndRepeat((v) => {
51
+ if (renderBatchState.active)
52
+ queueRenderUpdate(updateValue, updateValue, v);
53
+ else
54
+ updateValue(v);
55
+ }, cleanUp);
56
+ if (isDataWriter(value)) {
57
+ cleanUp.registerDomEvent(input, 'input', () => {
58
+ const nextValue = typeof value.value === 'number' ? input.valueAsNumber : input.value;
59
+ value.write(nextValue);
60
+ });
61
+ }
62
+ }
63
+ else {
64
+ input.value = String(props.value);
65
+ }
66
+ }
67
+ if ((props === null || props === void 0 ? void 0 : props.checked) !== undefined) {
68
+ if (typeof props.checked !== 'boolean') {
69
+ const checked = props.checked;
70
+ const updateChecked = (v) => {
71
+ if (cleanUp.isCancelled)
72
+ return;
73
+ input.checked = v !== null && v !== void 0 ? v : false;
74
+ };
75
+ checked.listenAndRepeat((v) => {
76
+ if (renderBatchState.active)
77
+ queueRenderUpdate(updateChecked, updateChecked, v);
78
+ else
79
+ updateChecked(v);
80
+ }, cleanUp);
81
+ if (isDataWriter(checked)) {
82
+ cleanUp.registerDomEvent(input, 'change', () => {
83
+ checked.write(input.checked);
84
+ });
85
+ }
86
+ }
87
+ else {
88
+ input.checked = props.checked;
89
+ }
90
+ }
91
+ });
92
+ //# sourceMappingURL=input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.js","sourceRoot":"","sources":["../../../src/nodes/input.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { ReadOnlyDataSource } from '@aurumjs/streams';
2
+ import { CancellationToken } from '@aurumjs/streams';
3
+ import { ClassType, StyleType } from '@aurumjs/streams';
4
+ import { Data, DataWriter } from '@aurumjs/streams';
5
+ export declare function isDataWriter<T>(source: ReadOnlyDataSource<T>): source is ReadOnlyDataSource<T> & DataWriter<T>;
6
+ export declare function handleClass(data: ClassType, cleanUp: CancellationToken): Data<string>;
7
+ export declare function handleStyle(data: StyleType, cleanUp: CancellationToken): Data<string>;
8
+ //# sourceMappingURL=rendering_helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rendering_helpers.d.ts","sourceRoot":"","sources":["../../../src/nodes/rendering_helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8C,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAElG,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAU,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGpD,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,kBAAkB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAE9G;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,CAiDrF;AAsBD,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,CAmDrF"}
@@ -0,0 +1,173 @@
1
+ import { ArrayDataSource, DataSource, MapDataSource } from '@aurumjs/streams';
2
+ import { dsMap, dsUnique } from '@aurumjs/streams';
3
+ import { aurumClassName, camelCaseToKebabCase } from '@aurumjs/streams';
4
+ import { isAurumStyleClass } from '@aurumjs/streams';
5
+ export function isDataWriter(source) {
6
+ return typeof source.write === 'function';
7
+ }
8
+ export function handleClass(data, cleanUp) {
9
+ if (typeof data === 'string') {
10
+ return data;
11
+ }
12
+ else if (isAurumStyleClass(data)) {
13
+ return data.attach(cleanUp);
14
+ }
15
+ else if (data instanceof DataSource) {
16
+ return data
17
+ .transform(dsUnique(), dsMap((v) => {
18
+ if (Array.isArray(v)) {
19
+ return v.join(' ');
20
+ }
21
+ else {
22
+ return v;
23
+ }
24
+ }), cleanUp)
25
+ .withInitial(data.value);
26
+ }
27
+ else if (data instanceof ArrayDataSource) {
28
+ return data.reduce((p, c) => `${p} ${c}`, '', cleanUp);
29
+ }
30
+ else if (data instanceof MapDataSource || (typeof data === 'object' && !Array.isArray(data))) {
31
+ const result = aurumClassName(data, cleanUp);
32
+ return handleClass(result, cleanUp);
33
+ }
34
+ else {
35
+ let hasReactiveValue = false;
36
+ for (const i of data) {
37
+ if (i instanceof DataSource) {
38
+ hasReactiveValue = true;
39
+ break;
40
+ }
41
+ }
42
+ // Fully static class lists need no reactive machinery.
43
+ if (!hasReactiveValue) {
44
+ return buildClass(data, cleanUp);
45
+ }
46
+ const result = new DataSource(buildClass(data, cleanUp));
47
+ for (const i of data) {
48
+ if (i instanceof DataSource) {
49
+ i.transform(dsUnique(), cleanUp).listen((v) => {
50
+ result.update(buildClass(data, cleanUp));
51
+ }, cleanUp);
52
+ }
53
+ }
54
+ return result;
55
+ }
56
+ }
57
+ function buildClass(data, cleanUp) {
58
+ return data.reduce((p, c) => {
59
+ if (c == null) {
60
+ return p;
61
+ }
62
+ if (typeof c === 'string') {
63
+ return `${p} ${c}`;
64
+ }
65
+ else if (isAurumStyleClass(c)) {
66
+ return `${p} ${c.attach(cleanUp)}`;
67
+ }
68
+ else {
69
+ if (c.value) {
70
+ return `${p} ${c.value}`;
71
+ }
72
+ else {
73
+ return p;
74
+ }
75
+ }
76
+ }, '');
77
+ }
78
+ export function handleStyle(data, cleanUp) {
79
+ if (typeof data === 'string') {
80
+ return data;
81
+ }
82
+ else if (data instanceof DataSource) {
83
+ return data.transform(dsUnique(), dsMap((value) => (typeof value === 'string' ? value : serializeStyleSnapshot(value))), cleanUp);
84
+ }
85
+ else if (data instanceof MapDataSource) {
86
+ return data.toEntriesArrayDataSource(cleanUp).reduce((p, c) => {
87
+ if (c[1] === undefined || c[1] === null) {
88
+ return p;
89
+ }
90
+ return `${p}${camelCaseToKebabCase(c[0])}:${transformStyle(c[0], c[1])};`;
91
+ }, '', cleanUp);
92
+ }
93
+ else if (typeof data === 'object' && !Array.isArray(data)) {
94
+ const styles = data;
95
+ let hasReactiveValue = false;
96
+ for (const i in styles) {
97
+ if (styles[i] instanceof DataSource) {
98
+ hasReactiveValue = true;
99
+ break;
100
+ }
101
+ }
102
+ // Fully static style objects are the most common case and need no reactive machinery.
103
+ if (!hasReactiveValue) {
104
+ return serializeStyleSnapshot(styles);
105
+ }
106
+ const result = new DataSource(serializeStyleSnapshot(styles));
107
+ for (const i in styles) {
108
+ const value = styles[i];
109
+ if (value instanceof DataSource) {
110
+ value.listen(() => {
111
+ const serialized = serializeStyleSnapshot(styles);
112
+ if (serialized !== result.value) {
113
+ result.update(serialized);
114
+ }
115
+ }, cleanUp);
116
+ }
117
+ }
118
+ return result;
119
+ }
120
+ else {
121
+ return '';
122
+ }
123
+ }
124
+ function serializeStyleSnapshot(styles) {
125
+ let result = '';
126
+ for (const key in styles) {
127
+ const raw = styles[key];
128
+ const value = raw instanceof DataSource ? raw.value : raw;
129
+ if (value !== undefined && value !== null) {
130
+ result += `${camelCaseToKebabCase(key)}:${transformStyle(key, value)};`;
131
+ }
132
+ }
133
+ return result;
134
+ }
135
+ const stylesWithUnits = new Set([
136
+ 'width',
137
+ 'height',
138
+ 'top',
139
+ 'right',
140
+ 'bottom',
141
+ 'left',
142
+ 'minWidth',
143
+ 'minHeight',
144
+ 'maxWidth',
145
+ 'maxHeight',
146
+ 'margin',
147
+ 'marginTop',
148
+ 'marginRight',
149
+ 'marginBottom',
150
+ 'marginLeft',
151
+ 'padding',
152
+ 'paddingLeft',
153
+ 'paddingRight',
154
+ 'paddingTop',
155
+ 'paddingBottom',
156
+ 'borderTopWidth',
157
+ 'borderRightWidth',
158
+ 'borderBottomWidth',
159
+ 'borderLeftWidth',
160
+ 'fontSize',
161
+ 'gap',
162
+ 'gridRowGap',
163
+ 'gridColumnGap',
164
+ 'borderRadius',
165
+ 'borderWidth'
166
+ ]);
167
+ function transformStyle(key, value) {
168
+ if (typeof value === 'number' && value !== 0 && stylesWithUnits.has(key)) {
169
+ return value + 'px';
170
+ }
171
+ return value.toString();
172
+ }
173
+ //# sourceMappingURL=rendering_helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rendering_helpers.js","sourceRoot":"","sources":["../../../src/nodes/rendering_helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { DOMEvent, HTMLNodeProps } from '../rendering/renderers/dom_adapter.js';
2
+ import { AttributeValue, DataDrain, ReadOnlyDataSource } from '@aurumjs/streams';
3
+ export interface SelectProps extends HTMLNodeProps<HTMLSelectElement> {
4
+ value?: ReadOnlyDataSource<string> | ReadOnlyDataSource<number> | string | number;
5
+ defaultValue?: string | number;
6
+ disabled?: AttributeValue;
7
+ size?: AttributeValue;
8
+ multiple?: AttributeValue;
9
+ required?: AttributeValue;
10
+ selectedIndex?: ReadOnlyDataSource<number> | number;
11
+ onChange?: DataDrain<DOMEvent<Event, HTMLSelectElement>>;
12
+ }
13
+ /**
14
+ * @internal
15
+ */
16
+ export declare const Select: (props: SelectProps, children: import("@aurumjs/rendering").Renderable[], api: import("@aurumjs/rendering").AurumComponentAPI) => HTMLElement;
17
+ //# sourceMappingURL=select.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../../src/nodes/select.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAkB,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAChG,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAIjF,MAAM,WAAW,WAAY,SAAQ,aAAa,CAAC,iBAAiB,CAAC;IACjE,KAAK,CAAC,EAAE,kBAAkB,CAAC,MAAM,CAAC,GAAG,kBAAkB,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC;IAClF,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,aAAa,CAAC,EAAE,kBAAkB,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;IACpD,QAAQ,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC;CAC5D;AAOD;;GAEG;AACH,eAAO,MAAM,MAAM,+IAoFlB,CAAC"}
@@ -0,0 +1,95 @@
1
+ import { DomNodeCreator } from '../rendering/renderers/dom_adapter.js';
2
+ import { queueRenderUpdate, renderBatchState } from '../rendering/render_batch.js';
3
+ import { isDataWriter } from './rendering_helpers.js';
4
+ /**
5
+ * @internal
6
+ */
7
+ const selectEvents = { change: 'onChange' };
8
+ /**
9
+ * @internal
10
+ */
11
+ export const Select = DomNodeCreator('select', ['size', 'multiple', 'required'], selectEvents, (node, props, cleanUp) => {
12
+ const select = node;
13
+ if ((props === null || props === void 0 ? void 0 : props.defaultValue) !== undefined)
14
+ select.value = String(props.defaultValue);
15
+ if ((props === null || props === void 0 ? void 0 : props.value) !== undefined || (props === null || props === void 0 ? void 0 : props.selectedIndex) !== undefined) {
16
+ // In case props.value is a data source we need to reapply the value when the children change because the children may be unstable/be removed and re-added which would falsify the state.
17
+ if (props.value !== undefined && typeof props.value !== 'string' && typeof props.value !== 'number') {
18
+ const value = props.value;
19
+ const mo = new MutationObserver(() => {
20
+ select.value = String(value.value);
21
+ });
22
+ mo.observe(select, {
23
+ childList: true
24
+ });
25
+ cleanUp.addCancellable(() => {
26
+ mo.disconnect();
27
+ });
28
+ }
29
+ if ((props === null || props === void 0 ? void 0 : props.selectedIndex) !== undefined && typeof props.selectedIndex !== 'number') {
30
+ const selectedIndex = props.selectedIndex;
31
+ const mo = new MutationObserver(() => {
32
+ select.selectedIndex = selectedIndex.value;
33
+ });
34
+ mo.observe(select, {
35
+ childList: true
36
+ });
37
+ cleanUp.addCancellable(() => {
38
+ mo.disconnect();
39
+ });
40
+ }
41
+ if ((props === null || props === void 0 ? void 0 : props.value) !== undefined && typeof props.value !== 'string' && typeof props.value !== 'number') {
42
+ const value = props.value;
43
+ const updateValue = (v) => {
44
+ if (cleanUp.isCancelled)
45
+ return;
46
+ select.value = String(v);
47
+ };
48
+ value.listenAndRepeat((v) => {
49
+ if (renderBatchState.active)
50
+ queueRenderUpdate(updateValue, updateValue, v);
51
+ else
52
+ updateValue(v);
53
+ }, cleanUp);
54
+ if (isDataWriter(value)) {
55
+ cleanUp.registerDomEvent(select, 'change', () => {
56
+ if (typeof value.value === 'number') {
57
+ value.write(Number(select.value));
58
+ }
59
+ else {
60
+ value.write(select.value);
61
+ }
62
+ });
63
+ }
64
+ }
65
+ else {
66
+ select.value = props.value === undefined ? '' : String(props.value);
67
+ }
68
+ if ((props === null || props === void 0 ? void 0 : props.selectedIndex) !== undefined) {
69
+ if (typeof props.selectedIndex !== 'number') {
70
+ const selectedIndex = props.selectedIndex;
71
+ const updateSelectedIndex = (v) => {
72
+ if (cleanUp.isCancelled)
73
+ return;
74
+ select.selectedIndex = v;
75
+ };
76
+ selectedIndex.listenAndRepeat((v) => {
77
+ if (renderBatchState.active) {
78
+ queueRenderUpdate(updateSelectedIndex, updateSelectedIndex, v);
79
+ }
80
+ else
81
+ updateSelectedIndex(v);
82
+ }, cleanUp);
83
+ if (isDataWriter(selectedIndex)) {
84
+ cleanUp.registerDomEvent(select, 'change', () => {
85
+ selectedIndex.write(select.selectedIndex);
86
+ });
87
+ }
88
+ }
89
+ else {
90
+ select.selectedIndex = props.selectedIndex;
91
+ }
92
+ }
93
+ }
94
+ });
95
+ //# sourceMappingURL=select.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select.js","sourceRoot":"","sources":["../../../src/nodes/select.ts"],"names":[],"mappings":"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"}