@remix-run/ui 0.1.1 → 0.2.0

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 (243) hide show
  1. package/README.md +33 -10
  2. package/dist/animation/animate-layout-mixin.js +66 -66
  3. package/dist/animation/animate-layout-mixin.js.map +1 -1
  4. package/dist/animation/spring.d.ts +6 -35
  5. package/dist/animation/spring.js +9 -8
  6. package/dist/animation/spring.js.map +1 -1
  7. package/dist/components/accordion/accordion.d.ts +7 -7
  8. package/dist/components/accordion/accordion.js +0 -2
  9. package/dist/components/accordion/accordion.js.map +1 -1
  10. package/dist/components/accordion/demos/card.demo.d.ts +6 -0
  11. package/dist/components/accordion/demos/card.demo.js +58 -0
  12. package/dist/components/accordion/demos/card.demo.js.map +1 -0
  13. package/dist/components/accordion/demos/multiple.demo.d.ts +6 -0
  14. package/dist/components/accordion/demos/multiple.demo.js +19 -0
  15. package/dist/components/accordion/demos/multiple.demo.js.map +1 -0
  16. package/dist/components/accordion/demos/overview.demo.d.ts +6 -0
  17. package/dist/components/accordion/demos/overview.demo.js +19 -0
  18. package/dist/components/accordion/demos/overview.demo.js.map +1 -0
  19. package/dist/components/breadcrumbs/breadcrumbs.d.ts +1 -1
  20. package/dist/components/breadcrumbs/breadcrumbs.js +0 -2
  21. package/dist/components/breadcrumbs/breadcrumbs.js.map +1 -1
  22. package/dist/components/breadcrumbs/demos/basic.demo.d.ts +5 -0
  23. package/dist/components/breadcrumbs/demos/basic.demo.js +14 -0
  24. package/dist/components/breadcrumbs/demos/basic.demo.js.map +1 -0
  25. package/dist/components/breadcrumbs/demos/separator.demo.d.ts +5 -0
  26. package/dist/components/breadcrumbs/demos/separator.demo.js +14 -0
  27. package/dist/components/breadcrumbs/demos/separator.demo.js.map +1 -0
  28. package/dist/components/button/button.d.ts +86 -4
  29. package/dist/components/button/button.js +63 -3
  30. package/dist/components/button/button.js.map +1 -1
  31. package/dist/components/button/demos/aliases.demo.d.ts +6 -0
  32. package/dist/components/button/demos/aliases.demo.js +18 -0
  33. package/dist/components/button/demos/aliases.demo.js.map +1 -0
  34. package/dist/components/button/demos/basic.demo.d.ts +6 -0
  35. package/dist/components/button/demos/basic.demo.js +19 -0
  36. package/dist/components/button/demos/basic.demo.js.map +1 -0
  37. package/dist/components/button/demos/states.demo.d.ts +6 -0
  38. package/dist/components/button/demos/states.demo.js +29 -0
  39. package/dist/components/button/demos/states.demo.js.map +1 -0
  40. package/dist/components/combobox/combobox.d.ts +11 -11
  41. package/dist/components/combobox/combobox.js +0 -2
  42. package/dist/components/combobox/combobox.js.map +1 -1
  43. package/dist/components/combobox/demos/overview.demo.d.ts +6 -0
  44. package/dist/components/combobox/demos/overview.demo.js +153 -0
  45. package/dist/components/combobox/demos/overview.demo.js.map +1 -0
  46. package/dist/components/listbox/demos/overview.demo.d.ts +6 -0
  47. package/dist/components/listbox/demos/overview.demo.js +64 -0
  48. package/dist/components/listbox/demos/overview.demo.js.map +1 -0
  49. package/dist/components/listbox/listbox.d.ts +4 -9
  50. package/dist/components/listbox/listbox.js +21 -33
  51. package/dist/components/listbox/listbox.js.map +1 -1
  52. package/dist/components/menu/demos/bubbling.demo.d.ts +5 -0
  53. package/dist/components/menu/demos/bubbling.demo.js +15 -0
  54. package/dist/components/menu/demos/bubbling.demo.js.map +1 -0
  55. package/dist/components/menu/demos/overview.demo.d.ts +6 -0
  56. package/dist/components/menu/demos/overview.demo.js +32 -0
  57. package/dist/components/menu/demos/overview.demo.js.map +1 -0
  58. package/dist/components/menu/menu.d.ts +15 -24
  59. package/dist/components/menu/menu.js +23 -38
  60. package/dist/components/menu/menu.js.map +1 -1
  61. package/dist/components/popover/demos/overview.demo.d.ts +6 -0
  62. package/dist/components/popover/demos/overview.demo.js +64 -0
  63. package/dist/components/popover/demos/overview.demo.js.map +1 -0
  64. package/dist/components/popover/popover.d.ts +5 -5
  65. package/dist/components/popover/popover.js.map +1 -1
  66. package/dist/components/select/demos/deconstructed.demo.d.ts +6 -0
  67. package/dist/components/select/demos/deconstructed.demo.js +53 -0
  68. package/dist/components/select/demos/deconstructed.demo.js.map +1 -0
  69. package/dist/components/select/demos/overview.demo.d.ts +5 -0
  70. package/dist/components/select/demos/overview.demo.js +27 -0
  71. package/dist/components/select/demos/overview.demo.js.map +1 -0
  72. package/dist/components/select/select.d.ts +11 -11
  73. package/dist/components/select/select.js +17 -26
  74. package/dist/components/select/select.js.map +1 -1
  75. package/dist/components/tabs/tabs.d.ts +6 -6
  76. package/dist/components/tabs/tabs.js +0 -2
  77. package/dist/components/tabs/tabs.js.map +1 -1
  78. package/dist/index.d.ts +2 -2
  79. package/dist/index.js.map +1 -1
  80. package/dist/interactions/keydown/keydown.d.ts +1 -1
  81. package/dist/interactions/outside-click/outside-click-mixin.d.ts +2 -1
  82. package/dist/interactions/typeahead/typeahead-mixin.d.ts +3 -1
  83. package/dist/runtime/component.d.ts +18 -12
  84. package/dist/runtime/component.js +93 -80
  85. package/dist/runtime/component.js.map +1 -1
  86. package/dist/runtime/core/attributes.d.ts +14 -0
  87. package/dist/runtime/core/attributes.js +103 -0
  88. package/dist/runtime/core/attributes.js.map +1 -0
  89. package/dist/runtime/core/children.d.ts +7 -0
  90. package/dist/runtime/core/children.js +30 -0
  91. package/dist/runtime/core/children.js.map +1 -0
  92. package/dist/runtime/core/props.d.ts +9 -0
  93. package/dist/runtime/core/props.js +170 -0
  94. package/dist/runtime/core/props.js.map +1 -0
  95. package/dist/runtime/core/vnode.d.ts +3 -0
  96. package/dist/runtime/core/vnode.js +39 -0
  97. package/dist/runtime/core/vnode.js.map +1 -0
  98. package/dist/runtime/create-element.js +2 -1
  99. package/dist/runtime/create-element.js.map +1 -1
  100. package/dist/runtime/diff-dom.js +47 -14
  101. package/dist/runtime/diff-dom.js.map +1 -1
  102. package/dist/runtime/diff-props.d.ts +1 -2
  103. package/dist/runtime/diff-props.js +2 -181
  104. package/dist/runtime/diff-props.js.map +1 -1
  105. package/dist/runtime/dom.d.ts +20 -9
  106. package/dist/runtime/frame.d.ts +23 -2
  107. package/dist/runtime/frame.js +41 -47
  108. package/dist/runtime/frame.js.map +1 -1
  109. package/dist/runtime/jsx.d.ts +1 -1
  110. package/dist/runtime/jsx.js +2 -28
  111. package/dist/runtime/jsx.js.map +1 -1
  112. package/dist/runtime/mixins/link-mixin.d.ts +5 -1
  113. package/dist/runtime/mixins/link-mixin.js.map +1 -1
  114. package/dist/runtime/mixins/mixin.d.ts +2 -1
  115. package/dist/runtime/mixins/mixin.js +9 -4
  116. package/dist/runtime/mixins/mixin.js.map +1 -1
  117. package/dist/runtime/mixins/on-mixin.d.ts +15 -4
  118. package/dist/runtime/mixins/on-mixin.js +9 -2
  119. package/dist/runtime/mixins/on-mixin.js.map +1 -1
  120. package/dist/runtime/mixins/ref-mixin.d.ts +2 -1
  121. package/dist/runtime/mixins/ref-mixin.js.map +1 -1
  122. package/dist/runtime/navigation.js +9 -1
  123. package/dist/runtime/navigation.js.map +1 -1
  124. package/dist/runtime/reconcile.d.ts +1 -1
  125. package/dist/runtime/reconcile.js +452 -197
  126. package/dist/runtime/reconcile.js.map +1 -1
  127. package/dist/runtime/run.d.ts +17 -2
  128. package/dist/runtime/run.js.map +1 -1
  129. package/dist/runtime/scheduler.d.ts +10 -10
  130. package/dist/runtime/scheduler.js +1 -1
  131. package/dist/runtime/scheduler.js.map +1 -1
  132. package/dist/runtime/stream-protocol.d.ts +8 -0
  133. package/dist/runtime/stream-protocol.js +20 -0
  134. package/dist/runtime/stream-protocol.js.map +1 -0
  135. package/dist/runtime/svg-attributes.js +1 -0
  136. package/dist/runtime/svg-attributes.js.map +1 -1
  137. package/dist/runtime/to-vnode.js +7 -11
  138. package/dist/runtime/to-vnode.js.map +1 -1
  139. package/dist/runtime/vnode.d.ts +11 -5
  140. package/dist/runtime/vnode.js +6 -3
  141. package/dist/runtime/vnode.js.map +1 -1
  142. package/dist/server/stream.d.ts +2 -0
  143. package/dist/server/stream.js +154 -114
  144. package/dist/server/stream.js.map +1 -1
  145. package/dist/style/css-mixin.d.ts +2 -1
  146. package/dist/style/css-mixin.js.map +1 -1
  147. package/dist/style/index.d.ts +1 -1
  148. package/dist/style/layers.d.ts +2 -0
  149. package/dist/style/layers.js +3 -0
  150. package/dist/style/layers.js.map +1 -0
  151. package/dist/style/stylesheet.d.ts +13 -11
  152. package/dist/style/stylesheet.js +69 -8
  153. package/dist/style/stylesheet.js.map +1 -1
  154. package/dist/theme/contract.d.ts +24 -222
  155. package/dist/theme/contract.js +2 -2
  156. package/dist/theme/contract.js.map +1 -1
  157. package/dist/theme/glyph-contract.d.ts +1 -3
  158. package/dist/theme/glyph-contract.js.map +1 -1
  159. package/dist/theme/presets/rmx-01/index.d.ts +4 -2
  160. package/dist/theme/presets/rmx-01/index.js.map +1 -1
  161. package/dist/theme/runtime.js +4 -1
  162. package/dist/theme/runtime.js.map +1 -1
  163. package/dist/utils/scroll-lock.d.ts +3 -3
  164. package/dist/utils/scroll-lock.js.map +1 -1
  165. package/package.json +3 -3
  166. package/src/animation/README.md +316 -0
  167. package/src/animation/animate-layout-mixin.ts +79 -71
  168. package/src/animation/spring.ts +21 -9
  169. package/src/components/accordion/README.md +166 -0
  170. package/src/components/accordion/accordion.tsx +14 -14
  171. package/src/components/accordion/demos/card.demo.tsx +113 -0
  172. package/src/components/accordion/demos/multiple.demo.tsx +56 -0
  173. package/src/components/accordion/demos/overview.demo.tsx +56 -0
  174. package/src/components/anchor/README.md +153 -0
  175. package/src/components/anchor/anchor.ts +1 -1
  176. package/src/components/breadcrumbs/README.md +55 -0
  177. package/src/components/breadcrumbs/breadcrumbs.tsx +1 -3
  178. package/src/components/breadcrumbs/demos/basic.demo.tsx +17 -0
  179. package/src/components/breadcrumbs/demos/separator.demo.tsx +18 -0
  180. package/src/components/button/README.md +4 -4
  181. package/src/components/button/button.tsx +118 -20
  182. package/src/components/button/demos/aliases.demo.tsx +27 -0
  183. package/src/components/button/demos/basic.demo.tsx +30 -0
  184. package/src/components/button/demos/states.demo.tsx +52 -0
  185. package/src/components/combobox/README.md +1 -1
  186. package/src/components/combobox/combobox.tsx +37 -21
  187. package/src/components/combobox/demos/overview.demo.tsx +199 -0
  188. package/src/components/glyph/README.md +72 -0
  189. package/src/components/glyph/glyph.tsx +2 -2
  190. package/src/components/listbox/README.md +115 -0
  191. package/src/components/listbox/demos/overview.demo.tsx +101 -0
  192. package/src/components/listbox/listbox.ts +106 -110
  193. package/src/components/menu/README.md +96 -0
  194. package/src/components/menu/demos/bubbling.demo.tsx +34 -0
  195. package/src/components/menu/demos/overview.demo.tsx +76 -0
  196. package/src/components/menu/menu.tsx +61 -55
  197. package/src/components/popover/README.md +3 -3
  198. package/src/components/popover/demos/overview.demo.tsx +143 -0
  199. package/src/components/popover/popover.ts +90 -79
  200. package/src/components/select/README.md +107 -0
  201. package/src/components/select/demos/deconstructed.demo.tsx +95 -0
  202. package/src/components/select/demos/overview.demo.tsx +51 -0
  203. package/src/components/select/select.tsx +53 -36
  204. package/src/components/tabs/tabs.tsx +10 -5
  205. package/src/index.ts +2 -1
  206. package/src/runtime/component.ts +122 -88
  207. package/src/runtime/core/attributes.ts +118 -0
  208. package/src/runtime/core/children.ts +42 -0
  209. package/src/runtime/core/props.ts +187 -0
  210. package/src/runtime/core/vnode.ts +48 -0
  211. package/src/runtime/create-element.ts +2 -1
  212. package/src/runtime/diff-dom.ts +59 -12
  213. package/src/runtime/diff-props.ts +2 -187
  214. package/src/runtime/dom.ts +20 -9
  215. package/src/runtime/frame.ts +71 -55
  216. package/src/runtime/jsx.ts +3 -30
  217. package/src/runtime/mixins/link-mixin.ts +88 -86
  218. package/src/runtime/mixins/mixin.ts +18 -5
  219. package/src/runtime/mixins/on-mixin.ts +20 -12
  220. package/src/runtime/mixins/ref-mixin.ts +4 -5
  221. package/src/runtime/navigation.ts +10 -1
  222. package/src/runtime/reconcile.ts +563 -223
  223. package/src/runtime/run.ts +17 -1
  224. package/src/runtime/scheduler.ts +20 -20
  225. package/src/runtime/stream-protocol.ts +27 -0
  226. package/src/runtime/svg-attributes.ts +1 -0
  227. package/src/runtime/to-vnode.ts +7 -10
  228. package/src/runtime/vnode.ts +16 -9
  229. package/src/server/README.md +90 -0
  230. package/src/server/stream.ts +176 -124
  231. package/src/style/css-mixin.ts +6 -1
  232. package/src/style/index.ts +1 -2
  233. package/src/style/layers.ts +2 -0
  234. package/src/style/stylesheet.ts +88 -11
  235. package/src/test/README.md +107 -0
  236. package/src/test/utils.ts +3 -1
  237. package/src/theme/README.md +103 -0
  238. package/src/theme/contract.ts +37 -5
  239. package/src/theme/glyph-contract.ts +3 -1
  240. package/src/theme/presets/rmx-01/index.ts +4 -2
  241. package/src/theme/runtime.ts +4 -1
  242. package/src/utils/scroll-lock/README.md +33 -0
  243. package/src/utils/scroll-lock.ts +7 -3
@@ -1 +1 @@
1
- {"version":3,"file":"component.js","sourceRoot":"","sources":["../../src/runtime/component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"component.js","sourceRoot":"","sources":["../../src/runtime/component.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { ElementProps } from '../jsx.ts';
2
+ export declare const FRAMEWORK_PROPS: Set<string>;
3
+ export declare const SELF_CLOSING_TAGS: Set<string>;
4
+ export declare function isChildlessElement(name: string): boolean;
5
+ export declare function canUseProperty(element: Element, name: string, isSvg: boolean, attr: string): element is Element & Record<string, unknown>;
6
+ export declare function normalizeAttributeName(name: string, isSvg: boolean): {
7
+ ns?: string;
8
+ attr: string;
9
+ };
10
+ export declare function isBooleanishStringAttribute(name: string): boolean;
11
+ export declare function shouldStringifyBooleanAttribute(name: string): boolean;
12
+ export declare function serializeStyleObject(style: Record<string, unknown>): string;
13
+ export declare function getMergedClassName(props: ElementProps): string | undefined;
14
+ export declare function toKebabCase(value: string): string;
@@ -0,0 +1,103 @@
1
+ import { normalizeCssValue } from "../../style/style.js";
2
+ import { normalizeSvgAttribute } from "../svg-attributes.js";
3
+ const ATTRIBUTE_FALLBACK_NAMES = new Set([
4
+ 'width',
5
+ 'height',
6
+ 'href',
7
+ 'list',
8
+ 'form',
9
+ 'tabIndex',
10
+ 'download',
11
+ 'rowSpan',
12
+ 'colSpan',
13
+ 'role',
14
+ 'popover',
15
+ 'translate',
16
+ ]);
17
+ const BOOLEANISH_STRING_ATTRIBUTES = new Set([
18
+ 'autoReverse',
19
+ 'contenteditable',
20
+ 'draggable',
21
+ 'externalResourcesRequired',
22
+ 'focusable',
23
+ 'preserveAlpha',
24
+ 'spellcheck',
25
+ ]);
26
+ export const FRAMEWORK_PROPS = new Set(['children', 'mix', 'key', 'animate', 'innerHTML', 'on']);
27
+ export const SELF_CLOSING_TAGS = new Set([
28
+ 'area',
29
+ 'base',
30
+ 'br',
31
+ 'col',
32
+ 'embed',
33
+ 'hr',
34
+ 'img',
35
+ 'input',
36
+ 'link',
37
+ 'meta',
38
+ 'param',
39
+ 'source',
40
+ 'track',
41
+ 'wbr',
42
+ ]);
43
+ export function isChildlessElement(name) {
44
+ return SELF_CLOSING_TAGS.has(name);
45
+ }
46
+ export function canUseProperty(element, name, isSvg, attr) {
47
+ if (isSvg)
48
+ return false;
49
+ if (ATTRIBUTE_FALLBACK_NAMES.has(name))
50
+ return false;
51
+ if (isBooleanishStringAttribute(attr))
52
+ return false;
53
+ return name in element;
54
+ }
55
+ export function normalizeAttributeName(name, isSvg) {
56
+ if (name.startsWith('aria-') || name.startsWith('data-'))
57
+ return { attr: name };
58
+ if (name === 'className')
59
+ return { attr: 'class' };
60
+ if (!isSvg) {
61
+ if (name === 'htmlFor')
62
+ return { attr: 'for' };
63
+ if (name === 'tabIndex')
64
+ return { attr: 'tabindex' };
65
+ if (name === 'acceptCharset')
66
+ return { attr: 'accept-charset' };
67
+ if (name === 'httpEquiv')
68
+ return { attr: 'http-equiv' };
69
+ return { attr: name.toLowerCase() };
70
+ }
71
+ return normalizeSvgAttribute(name);
72
+ }
73
+ export function isBooleanishStringAttribute(name) {
74
+ return BOOLEANISH_STRING_ATTRIBUTES.has(name);
75
+ }
76
+ export function shouldStringifyBooleanAttribute(name) {
77
+ return isBooleanishStringAttribute(name) || name === 'value';
78
+ }
79
+ export function serializeStyleObject(style) {
80
+ let parts = [];
81
+ for (let [key, value] of Object.entries(style)) {
82
+ if (value == null)
83
+ continue;
84
+ if (typeof value === 'boolean')
85
+ continue;
86
+ if (typeof value === 'number' && !Number.isFinite(value))
87
+ continue;
88
+ let cssKey = toKebabCase(key);
89
+ let cssValue = Array.isArray(value) ? value.join(', ') : normalizeCssValue(key, value);
90
+ parts.push(`${cssKey}: ${cssValue};`);
91
+ }
92
+ return parts.join(' ');
93
+ }
94
+ export function getMergedClassName(props) {
95
+ let classAttr = typeof props.class === 'string' ? props.class : '';
96
+ let className = typeof props.className === 'string' ? props.className : '';
97
+ let merged = classAttr && className ? `${classAttr} ${className}` : classAttr || className;
98
+ return merged || undefined;
99
+ }
100
+ export function toKebabCase(value) {
101
+ return value.replace(/[A-Z]/g, (match) => `-${match.toLowerCase()}`);
102
+ }
103
+ //# sourceMappingURL=attributes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attributes.js","sourceRoot":"","sources":["../../../src/runtime/core/attributes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { RemixNode } from '../jsx.ts';
2
+ export type EmptyChild = boolean | null | undefined;
3
+ export type PrimitiveChild = string | number | bigint;
4
+ export declare function isEmptyChild(value: RemixNode): value is EmptyChild;
5
+ export declare function isPrimitiveChild(value: RemixNode): value is PrimitiveChild;
6
+ export declare function normalizeChildren(children: readonly RemixNode[]): RemixNode[];
7
+ export declare function packChildren(children: readonly RemixNode[]): RemixNode | undefined;
@@ -0,0 +1,30 @@
1
+ export function isEmptyChild(value) {
2
+ return value == null || typeof value === 'boolean';
3
+ }
4
+ export function isPrimitiveChild(value) {
5
+ let type = typeof value;
6
+ return type === 'string' || type === 'number' || type === 'bigint';
7
+ }
8
+ export function normalizeChildren(children) {
9
+ for (let child of children) {
10
+ if (Array.isArray(child)) {
11
+ return children.flat(Infinity);
12
+ }
13
+ }
14
+ return children;
15
+ }
16
+ export function packChildren(children) {
17
+ if (children.length === 0) {
18
+ return undefined;
19
+ }
20
+ if (children.length === 1) {
21
+ let child = children[0];
22
+ if (child === undefined || isEmptyChild(child)) {
23
+ return undefined;
24
+ }
25
+ return Array.isArray(child) ? normalizeChildren(child) : child;
26
+ }
27
+ let normalized = normalizeChildren(children);
28
+ return normalized.length === 0 ? undefined : normalized;
29
+ }
30
+ //# sourceMappingURL=children.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"children.js","sourceRoot":"","sources":["../../../src/runtime/core/children.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,YAAY,CAAC,KAAgB;IAC3C,OAAO,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,SAAS,CAAA;AACpD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAgB;IAC/C,IAAI,IAAI,GAAG,OAAO,KAAK,CAAA;IACvB,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,QAAQ,CAAA;AACpE,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,QAA8B;IAC9D,KAAK,IAAI,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,OAAQ,QAAsB,CAAC,IAAI,CAAC,QAAQ,CAAgB,CAAA;QAC9D,CAAC;IACH,CAAC;IAED,OAAO,QAAuB,CAAA;AAChC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,QAA8B;IACzD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,IAAI,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;QAEvB,IAAI,KAAK,KAAK,SAAS,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/C,OAAO,SAAS,CAAA;QAClB,CAAC;QAED,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;IAChE,CAAC;IAED,IAAI,UAAU,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAA;IAC5C,OAAO,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAA;AACzD,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { ElementProps } from '../jsx.ts';
2
+ /**
3
+ * Patches DOM attributes and selected properties from old props to new props.
4
+ *
5
+ * @param curr Previous host props.
6
+ * @param next Next host props.
7
+ * @param dom Element to patch.
8
+ */
9
+ export declare function patchHostProps(curr: ElementProps, next: ElementProps, dom: Element): void;
@@ -0,0 +1,170 @@
1
+ import { canUseProperty, getMergedClassName, isBooleanishStringAttribute, normalizeAttributeName, serializeStyleObject, toKebabCase, } from "./attributes.js";
2
+ import { normalizeCssValue } from "../../style/style.js";
3
+ const SVG_NS = 'http://www.w3.org/2000/svg';
4
+ function isFrameworkProp(name) {
5
+ return (name === 'children' ||
6
+ name === 'mix' ||
7
+ name === 'key' ||
8
+ name === 'animate' ||
9
+ name === 'innerHTML' ||
10
+ name === 'on');
11
+ }
12
+ function toLocalName(attrName) {
13
+ let separatorIndex = attrName.indexOf(':');
14
+ if (separatorIndex === -1)
15
+ return attrName;
16
+ return attrName.slice(separatorIndex + 1);
17
+ }
18
+ function clearRuntimePropertyOnRemoval(dom, name) {
19
+ try {
20
+ if (name === 'value' || name === 'defaultValue') {
21
+ dom[name] = '';
22
+ return;
23
+ }
24
+ if (name === 'checked' || name === 'defaultChecked' || name === 'selected') {
25
+ dom[name] = false;
26
+ return;
27
+ }
28
+ if (name === 'selectedIndex') {
29
+ dom[name] = -1;
30
+ }
31
+ }
32
+ catch { }
33
+ }
34
+ /**
35
+ * Patches DOM attributes and selected properties from old props to new props.
36
+ *
37
+ * @param curr Previous host props.
38
+ * @param next Next host props.
39
+ * @param dom Element to patch.
40
+ */
41
+ export function patchHostProps(curr, next, dom) {
42
+ let isSvg = dom.namespaceURI === SVG_NS;
43
+ let currClassName = getMergedClassName(curr);
44
+ let nextClassName = getMergedClassName(next);
45
+ if (currClassName !== nextClassName) {
46
+ if (nextClassName) {
47
+ dom.setAttribute('class', nextClassName);
48
+ }
49
+ else {
50
+ dom.removeAttribute('class');
51
+ }
52
+ }
53
+ for (let name in curr) {
54
+ if (isFrameworkProp(name))
55
+ continue;
56
+ if (name === 'class' || name === 'className')
57
+ continue;
58
+ if (name in next && next[name] != null)
59
+ continue;
60
+ let { ns, attr } = normalizeAttributeName(name, isSvg);
61
+ if (canUseProperty(dom, name, isSvg, attr)) {
62
+ clearRuntimePropertyOnRemoval(dom, name);
63
+ }
64
+ if (ns)
65
+ dom.removeAttributeNS(ns, toLocalName(attr));
66
+ else
67
+ dom.removeAttribute(attr);
68
+ }
69
+ for (let name in next) {
70
+ if (isFrameworkProp(name))
71
+ continue;
72
+ if (name === 'class' || name === 'className')
73
+ continue;
74
+ let nextValue = next[name];
75
+ if (nextValue == null)
76
+ continue;
77
+ let prevValue = curr[name];
78
+ if (prevValue === nextValue)
79
+ continue;
80
+ if (name === 'style' && isStyleObject(nextValue)) {
81
+ if (isStyleObject(prevValue)) {
82
+ patchStyleObject(dom, prevValue, nextValue);
83
+ }
84
+ else {
85
+ dom.removeAttribute('style');
86
+ patchStyleObject(dom, undefined, nextValue);
87
+ }
88
+ continue;
89
+ }
90
+ patchHostProp(dom, name, nextValue, isSvg);
91
+ }
92
+ }
93
+ function patchHostProp(dom, name, value, isSvg) {
94
+ let { ns, attr } = normalizeAttributeName(name, isSvg);
95
+ if (attr === 'style' && isStyleObject(value)) {
96
+ patchStyleObject(dom, undefined, value);
97
+ return;
98
+ }
99
+ if (attr === 'style' && typeof value === 'string') {
100
+ dom.setAttribute('style', value);
101
+ return;
102
+ }
103
+ if (canUseProperty(dom, name, isSvg, attr)) {
104
+ try {
105
+ dom[name] = value == null ? '' : value;
106
+ return;
107
+ }
108
+ catch { }
109
+ }
110
+ if (typeof value === 'function')
111
+ return;
112
+ let isAriaOrData = name.startsWith('aria-') || name.startsWith('data-');
113
+ let isBooleanishString = isBooleanishStringAttribute(attr);
114
+ if (value != null && (value !== false || isAriaOrData || isBooleanishString)) {
115
+ let attrValue = name === 'popover' && value === true ? '' : String(value);
116
+ if (ns)
117
+ dom.setAttributeNS(ns, attr, attrValue);
118
+ else
119
+ dom.setAttribute(attr, attrValue);
120
+ }
121
+ else {
122
+ if (ns)
123
+ dom.removeAttributeNS(ns, toLocalName(attr));
124
+ else
125
+ dom.removeAttribute(attr);
126
+ }
127
+ }
128
+ function isStyleObject(value) {
129
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
130
+ }
131
+ function patchStyleObject(dom, curr, next) {
132
+ if (!(dom instanceof HTMLElement || dom instanceof SVGElement)) {
133
+ dom.setAttribute('style', serializeStyleObject(next));
134
+ return;
135
+ }
136
+ let style = dom.style;
137
+ if (curr) {
138
+ for (let name in curr) {
139
+ let nextCssValue = styleValueToCss(name, next[name]);
140
+ if (nextCssValue !== undefined)
141
+ continue;
142
+ let prevCssValue = styleValueToCss(name, curr[name]);
143
+ if (prevCssValue === undefined)
144
+ continue;
145
+ style.removeProperty(toKebabCase(name));
146
+ }
147
+ }
148
+ for (let name in next) {
149
+ let nextCssValue = styleValueToCss(name, next[name]);
150
+ if (nextCssValue === undefined)
151
+ continue;
152
+ let prevCssValue = curr ? styleValueToCss(name, curr[name]) : undefined;
153
+ if (prevCssValue === nextCssValue)
154
+ continue;
155
+ style.setProperty(toKebabCase(name), nextCssValue);
156
+ }
157
+ }
158
+ function styleValueToCss(name, value) {
159
+ if (value == null)
160
+ return undefined;
161
+ if (typeof value === 'boolean')
162
+ return undefined;
163
+ if (typeof value === 'number' && !Number.isFinite(value))
164
+ return undefined;
165
+ if (Array.isArray(value)) {
166
+ return value.join(', ');
167
+ }
168
+ return normalizeCssValue(name, value);
169
+ }
170
+ //# sourceMappingURL=props.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"props.js","sourceRoot":"","sources":["../../../src/runtime/core/props.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ElementProps, ElementType, RemixElement, RemixNode } from '../jsx.ts';
2
+ export declare function createRemixElement(type: ElementType, props: ElementProps | null | undefined, key?: string): RemixElement;
3
+ export declare function isRemixElement(node: RemixNode): node is RemixElement;
@@ -0,0 +1,39 @@
1
+ export function createRemixElement(type, props, key) {
2
+ return {
3
+ $rmx: true,
4
+ key,
5
+ props: normalizeElementProps(props),
6
+ type,
7
+ };
8
+ }
9
+ export function isRemixElement(node) {
10
+ return typeof node === 'object' && node !== null && '$rmx' in node;
11
+ }
12
+ function normalizeElementProps(props) {
13
+ if (!props)
14
+ return {};
15
+ if (!('mix' in props))
16
+ return props;
17
+ let { mix, ...rest } = props;
18
+ let normalizedMix = normalizeMixValue(mix);
19
+ return normalizedMix === undefined ? rest : { ...rest, mix: normalizedMix };
20
+ }
21
+ function normalizeMixValue(mix) {
22
+ if (!mix)
23
+ return undefined;
24
+ let normalizedMix = [];
25
+ flattenMixValue(mix, normalizedMix);
26
+ return normalizedMix.length === 0 ? undefined : normalizedMix;
27
+ }
28
+ function flattenMixValue(mix, out) {
29
+ if (!mix)
30
+ return;
31
+ if (!Array.isArray(mix)) {
32
+ out.push(mix);
33
+ return;
34
+ }
35
+ for (let item of mix) {
36
+ flattenMixValue(item, out);
37
+ }
38
+ }
39
+ //# sourceMappingURL=vnode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vnode.js","sourceRoot":"","sources":["../../../src/runtime/core/vnode.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,kBAAkB,CAChC,IAAiB,EACjB,KAAsC,EACtC,GAAY;IAEZ,OAAO;QACL,IAAI,EAAE,IAAI;QACV,GAAG;QACH,KAAK,EAAE,qBAAqB,CAAC,KAAK,CAAC;QACnC,IAAI;KACL,CAAA;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAe;IAC5C,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,MAAM,IAAI,IAAI,CAAA;AACpE,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAsC;IACnE,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAA;IACrB,IAAI,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IAEnC,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAA;IAC5B,IAAI,aAAa,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAA;IAC1C,OAAO,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,aAAa,EAAE,CAAA;AAC7E,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAY;IACrC,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAA;IAE1B,IAAI,aAAa,GAAc,EAAE,CAAA;IACjC,eAAe,CAAC,GAAG,EAAE,aAAa,CAAC,CAAA;IACnC,OAAO,aAAa,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAA;AAC/D,CAAC;AAED,SAAS,eAAe,CAAC,GAAY,EAAE,GAAc;IACnD,IAAI,CAAC,GAAG;QAAE,OAAM;IAEhB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACb,OAAM;IACR,CAAC;IAED,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC;QACrB,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IAC5B,CAAC;AACH,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { jsx } from "./jsx.js";
2
+ import { normalizeChildren } from "./core/children.js";
2
3
  /**
3
4
  * Creates a Remix virtual element from a JSX-like call signature.
4
5
  *
@@ -15,7 +16,7 @@ export function createElement(type, props, ...children) {
15
16
  }
16
17
  }
17
18
  else {
18
- nextProps.children = children;
19
+ nextProps.children = normalizeChildren(children);
19
20
  }
20
21
  if (nextProps.key != null) {
21
22
  let { key, ...rest } = nextProps;
@@ -1 +1 @@
1
- {"version":3,"file":"create-element.js","sourceRoot":"","sources":["../../src/runtime/create-element.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAG9B;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAC3B,IAAiB,EACjB,KAA2B,EAC3B,GAAG,QAAe;IAElB,IAAI,SAAS,GAAG,EAAE,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAA;IACpC,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC,CAAA;QACtE,CAAC;IACH,CAAC;SAAM,CAAC;QACN,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC/B,CAAC;IAED,IAAI,SAAS,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;QAC1B,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,SAAS,CAAA;QAChC,OAAO,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAA;IAC7B,CAAC;IAED,OAAO,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;AAC7B,CAAC;AAED,SAAS,kBAAkB,CACzB,IAAiB;IAEjB,OAAO,OAAO,IAAI,KAAK,UAAU,IAAI,uBAAuB,IAAI,IAAI,CAAA;AACtE,CAAC"}
1
+ {"version":3,"file":"create-element.js","sourceRoot":"","sources":["../../src/runtime/create-element.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAE9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAEtD;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAC3B,IAAiB,EACjB,KAA2B,EAC3B,GAAG,QAAe;IAElB,IAAI,SAAS,GAAG,EAAE,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAA;IACpC,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC,CAAA;QACtE,CAAC;IACH,CAAC;SAAM,CAAC;QACN,SAAS,CAAC,QAAQ,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAA;IAClD,CAAC;IAED,IAAI,SAAS,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;QAC1B,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,SAAS,CAAA;QAChC,OAAO,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAA;IAC7B,CAAC;IAED,OAAO,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;AAC7B,CAAC;AAED,SAAS,kBAAkB,CACzB,IAAiB;IAEjB,OAAO,OAAO,IAAI,KAAK,UAAU,IAAI,uBAAuB,IAAI,IAAI,CAAA;AACtE,CAAC"}
@@ -19,8 +19,7 @@ export function diffNodes(curr, next, context) {
19
19
  }
20
20
  }
21
21
  else if (c && !n) {
22
- disposeRemovedSubFrames(c, context);
23
- parent.removeChild(c);
22
+ removeNode(c, parent, context);
24
23
  }
25
24
  else if (c && n) {
26
25
  // Skip hydrated client-entry boundary ranges; hydration pass re-renders
@@ -64,8 +63,11 @@ function diffNode(current, next, context) {
64
63
  // Comment -> Comment
65
64
  if (isCommentNode(current) && isCommentNode(next)) {
66
65
  let newData = next.data;
67
- if (current.data !== newData)
66
+ if (current.data !== newData) {
67
+ if (isFrameStartMarker(current))
68
+ disposeFrameStartMarker(current, context);
68
69
  current.data = newData;
70
+ }
69
71
  return;
70
72
  }
71
73
  // Element -> Element
@@ -73,8 +75,10 @@ function diffNode(current, next, context) {
73
75
  // Different tags: replace
74
76
  if (current.tagName !== next.tagName) {
75
77
  let parent = current.parentNode;
76
- if (parent)
77
- parent.replaceChild(next, current);
78
+ if (parent) {
79
+ parent.insertBefore(next, current);
80
+ removeNode(current, parent, context);
81
+ }
78
82
  return;
79
83
  }
80
84
  // Same tag: update attributes then children
@@ -86,8 +90,10 @@ function diffNode(current, next, context) {
86
90
  }
87
91
  // Type mismatch: replace
88
92
  let parent = current.parentNode;
89
- if (parent)
90
- parent.replaceChild(next, current);
93
+ if (parent) {
94
+ parent.insertBefore(next, current);
95
+ removeNode(current, parent, context);
96
+ }
91
97
  }
92
98
  function diffElementAttributes(current, next) {
93
99
  let prevAttrNames = current.getAttributeNames();
@@ -280,8 +286,7 @@ function diffElementChildren(current, next, context) {
280
286
  for (let i = 0; i < currentChildren.length; i++) {
281
287
  if (!used[i]) {
282
288
  let nodeToRemove = currentChildren[i];
283
- disposeRemovedSubFrames(nodeToRemove, context);
284
- current.removeChild(currentChildren[i]);
289
+ removeNode(nodeToRemove, current, context);
285
290
  }
286
291
  }
287
292
  }
@@ -337,6 +342,28 @@ function isCommentNode(node) {
337
342
  function isFrameStartMarker(node) {
338
343
  return node instanceof Comment && node.data.trim().startsWith('rmx:f:');
339
344
  }
345
+ function removeNode(node, parent, context) {
346
+ disposeRemovedVirtualRoots(node);
347
+ disposeRemovedSubFrames(node, context);
348
+ if (node.parentNode === parent) {
349
+ parent.removeChild(node);
350
+ }
351
+ }
352
+ function disposeRemovedVirtualRoots(node) {
353
+ let stack = [node];
354
+ while (stack.length > 0) {
355
+ let next = stack.pop();
356
+ if (!next)
357
+ continue;
358
+ if (isHydratedVirtualRootStartMarker(next)) {
359
+ next.$rmx.dispose();
360
+ continue;
361
+ }
362
+ for (let child of Array.from(next.childNodes)) {
363
+ stack.push(child);
364
+ }
365
+ }
366
+ }
340
367
  function disposeRemovedSubFrames(node, context) {
341
368
  let stack = [node];
342
369
  while (stack.length > 0) {
@@ -344,20 +371,26 @@ function disposeRemovedSubFrames(node, context) {
344
371
  if (!next)
345
372
  continue;
346
373
  if (isFrameStartMarker(next)) {
347
- let subFrame = context.frameInstances.get(next);
348
- if (subFrame) {
349
- subFrame.dispose();
350
- context.frameInstances.delete(next);
351
- }
374
+ disposeFrameStartMarker(next, context);
352
375
  }
353
376
  for (let child of Array.from(next.childNodes)) {
354
377
  stack.push(child);
355
378
  }
356
379
  }
357
380
  }
381
+ function disposeFrameStartMarker(marker, context) {
382
+ let subFrame = context.frameInstances.get(marker);
383
+ if (subFrame) {
384
+ subFrame.dispose();
385
+ context.frameInstances.delete(marker);
386
+ }
387
+ }
358
388
  function isVirtualRootStartMarker(node) {
359
389
  return isCommentNode(node) && node.data.trim().startsWith('rmx:h:');
360
390
  }
391
+ function isHydratedVirtualRootStartMarker(node) {
392
+ return isVirtualRootStartMarker(node) && '$rmx' in node;
393
+ }
361
394
  function isVirtualRootEndMarker(node) {
362
395
  return isCommentNode(node) && node.data.trim() === '/rmx:h';
363
396
  }