@faiwer/react 0.8.2 → 0.8.4

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 (135) hide show
  1. package/README.md +3 -0
  2. package/dist/core/Children.d.ts +11 -0
  3. package/dist/core/Children.d.ts.map +1 -0
  4. package/dist/core/Children.js +35 -0
  5. package/dist/core/Children.js.map +1 -0
  6. package/dist/core/actions/createTag.action.d.ts.map +1 -1
  7. package/dist/core/actions/createTag.action.js +85 -1
  8. package/dist/core/actions/createTag.action.js.map +1 -1
  9. package/dist/core/actions/dom/attributes.d.ts +4 -0
  10. package/dist/core/actions/dom/attributes.d.ts.map +1 -0
  11. package/dist/core/actions/dom/attributes.js +53 -0
  12. package/dist/core/actions/dom/attributes.js.map +1 -0
  13. package/dist/core/actions/dom/css.d.ts +6 -0
  14. package/dist/core/actions/dom/css.d.ts.map +1 -0
  15. package/dist/core/actions/dom/css.js +53 -0
  16. package/dist/core/actions/dom/css.js.map +1 -0
  17. package/dist/core/actions/dom/events.d.ts +3 -0
  18. package/dist/core/actions/dom/events.d.ts.map +1 -0
  19. package/dist/core/actions/dom/events.js +33 -0
  20. package/dist/core/actions/dom/events.js.map +1 -0
  21. package/dist/core/actions/dom/svg.d.ts +7 -0
  22. package/dist/core/actions/dom/svg.d.ts.map +1 -0
  23. package/dist/core/actions/dom/svg.js +76 -0
  24. package/dist/core/actions/dom/svg.js.map +1 -0
  25. package/dist/core/actions/helpers.d.ts +2 -2
  26. package/dist/core/actions/helpers.d.ts.map +1 -1
  27. package/dist/core/actions/helpers.js +17 -2
  28. package/dist/core/actions/helpers.js.map +1 -1
  29. package/dist/core/actions/remove.action.d.ts +2 -1
  30. package/dist/core/actions/remove.action.d.ts.map +1 -1
  31. package/dist/core/actions/remove.action.js +5 -5
  32. package/dist/core/actions/remove.action.js.map +1 -1
  33. package/dist/core/actions/replace.action.d.ts.map +1 -1
  34. package/dist/core/actions/replace.action.js +18 -0
  35. package/dist/core/actions/replace.action.js.map +1 -1
  36. package/dist/core/actions/setAttr.action.d.ts.map +1 -1
  37. package/dist/core/actions/setAttr.action.js +11 -85
  38. package/dist/core/actions/setAttr.action.js.map +1 -1
  39. package/dist/core/actions/setRef.action.d.ts.map +1 -1
  40. package/dist/core/actions/setRef.action.js +1 -2
  41. package/dist/core/actions/setRef.action.js.map +1 -1
  42. package/dist/core/classComponent.d.ts +33 -0
  43. package/dist/core/classComponent.d.ts.map +1 -0
  44. package/dist/core/classComponent.js +126 -0
  45. package/dist/core/classComponent.js.map +1 -0
  46. package/dist/core/components.d.ts.map +1 -1
  47. package/dist/core/components.js +4 -0
  48. package/dist/core/components.js.map +1 -1
  49. package/dist/core/createElement.d.ts +8 -2
  50. package/dist/core/createElement.d.ts.map +1 -1
  51. package/dist/core/createElement.js +16 -2
  52. package/dist/core/createElement.js.map +1 -1
  53. package/dist/core/createRoot.js.map +1 -1
  54. package/dist/core/reconciliation/collect/fromChildrenPair.js +16 -12
  55. package/dist/core/reconciliation/collect/fromChildrenPair.js.map +1 -1
  56. package/dist/core/reconciliation/collect/fromFiberPair.d.ts.map +1 -1
  57. package/dist/core/reconciliation/collect/fromFiberPair.js +4 -0
  58. package/dist/core/reconciliation/collect/fromFiberPair.js.map +1 -1
  59. package/dist/core/reconciliation/effects.d.ts.map +1 -1
  60. package/dist/core/reconciliation/effects.js +0 -5
  61. package/dist/core/reconciliation/effects.js.map +1 -1
  62. package/dist/core/reconciliation/errors/stack.d.ts +3 -0
  63. package/dist/core/reconciliation/errors/stack.d.ts.map +1 -0
  64. package/dist/core/reconciliation/errors/stack.js +23 -0
  65. package/dist/core/reconciliation/errors/stack.js.map +1 -0
  66. package/dist/core/reconciliation/fibers.d.ts +6 -0
  67. package/dist/core/reconciliation/fibers.d.ts.map +1 -1
  68. package/dist/core/reconciliation/fibers.js +6 -0
  69. package/dist/core/reconciliation/fibers.js.map +1 -1
  70. package/dist/core/reconciliation/invalidateFiber.d.ts.map +1 -1
  71. package/dist/core/reconciliation/invalidateFiber.js +5 -0
  72. package/dist/core/reconciliation/invalidateFiber.js.map +1 -1
  73. package/dist/core/reconciliation/mount.d.ts.map +1 -1
  74. package/dist/core/reconciliation/mount.js +3 -3
  75. package/dist/core/reconciliation/mount.js.map +1 -1
  76. package/dist/core/reconciliation/postCommit.d.ts.map +1 -1
  77. package/dist/core/reconciliation/postCommit.js +3 -1
  78. package/dist/core/reconciliation/postCommit.js.map +1 -1
  79. package/dist/core/reconciliation/render.js +4 -4
  80. package/dist/core/reconciliation/render.js.map +1 -1
  81. package/dist/core/reconciliation/typeGuards.d.ts +6 -1
  82. package/dist/core/reconciliation/typeGuards.d.ts.map +1 -1
  83. package/dist/core/reconciliation/typeGuards.js +12 -0
  84. package/dist/core/reconciliation/typeGuards.js.map +1 -1
  85. package/dist/core/reconciliation/validateApp.d.ts +3 -0
  86. package/dist/core/reconciliation/validateApp.d.ts.map +1 -0
  87. package/dist/core/reconciliation/{validateTree.js → validateApp.js} +21 -2
  88. package/dist/core/reconciliation/validateApp.js.map +1 -0
  89. package/dist/hooks/useContext.d.ts.map +1 -1
  90. package/dist/hooks/useContext.js +16 -0
  91. package/dist/hooks/useContext.js.map +1 -1
  92. package/dist/hooks/useState.d.ts.map +1 -1
  93. package/dist/hooks/useState.js +25 -0
  94. package/dist/hooks/useState.js.map +1 -1
  95. package/dist/index.d.ts +5 -1
  96. package/dist/index.d.ts.map +1 -1
  97. package/dist/index.js +4 -0
  98. package/dist/index.js.map +1 -1
  99. package/dist/jsx-dev-runtime.d.ts +4 -4
  100. package/dist/jsx-dev-runtime.d.ts.map +1 -1
  101. package/dist/jsx-dev-runtime.js +4 -4
  102. package/dist/jsx-dev-runtime.js.map +1 -1
  103. package/dist/jsx-runtime.d.ts +3 -3
  104. package/dist/jsx-runtime.d.ts.map +1 -1
  105. package/dist/jsx-runtime.js +3 -3
  106. package/dist/jsx-runtime.js.map +1 -1
  107. package/{src → dist}/jsx.d.ts +25 -0
  108. package/dist/mocks.d.ts +28 -0
  109. package/dist/mocks.d.ts.map +1 -0
  110. package/dist/mocks.js +33 -0
  111. package/dist/mocks.js.map +1 -0
  112. package/dist/types/actions.d.ts +1 -0
  113. package/dist/types/actions.d.ts.map +1 -1
  114. package/dist/types/app.d.ts +5 -0
  115. package/dist/types/app.d.ts.map +1 -1
  116. package/dist/types/common.d.ts +4 -0
  117. package/dist/types/common.d.ts.map +1 -0
  118. package/dist/types/common.js +2 -0
  119. package/dist/types/common.js.map +1 -0
  120. package/dist/types/component.d.ts +1 -0
  121. package/dist/types/component.d.ts.map +1 -1
  122. package/dist/types/dom.d.ts +5 -10
  123. package/dist/types/dom.d.ts.map +1 -1
  124. package/dist/types/events.d.ts +24 -0
  125. package/dist/types/events.d.ts.map +1 -0
  126. package/dist/types/events.js +2 -0
  127. package/dist/types/events.js.map +1 -0
  128. package/dist/types/fiber.d.ts +2 -0
  129. package/dist/types/fiber.d.ts.map +1 -1
  130. package/dist/types/hooks.d.ts +4 -1
  131. package/dist/types/hooks.d.ts.map +1 -1
  132. package/package.json +9 -3
  133. package/dist/core/reconciliation/validateTree.d.ts +0 -6
  134. package/dist/core/reconciliation/validateTree.d.ts.map +0 -1
  135. package/dist/core/reconciliation/validateTree.js.map +0 -1
package/README.md CHANGED
@@ -87,3 +87,6 @@ createRoot(container).render(<App />);
87
87
  - All components are memoized by default. Why not?
88
88
  - No custom DOM-related code. This library is supposed to be simple and silly. Whereas React-DOM lib is huge.
89
89
  - No modern fiber-driven stuff like `<Suspense>`, `cacheSignal`, or `use`. Too much work. It took React many years to cook it well :)
90
+
91
+ - научить solo режим ссылаться на внутренний <!--end-->
92
+ это уберёт миллиард begin-end в wrapper-ах
@@ -0,0 +1,11 @@
1
+ import type { ElementNode, ScalarNode } from '../types';
2
+ type Children = {
3
+ count: (children: JSX.Element[]) => number;
4
+ only: (children: JSX.Element) => asserts children is ElementNode | ScalarNode;
5
+ forEach: (children: JSX.Element[], fn: (child: ElementNode | ScalarNode) => void, objThis?: unknown) => void;
6
+ map: <T>(chidlren: JSX.Element[], fn: (child: ElementNode | ScalarNode) => T, objThis?: unknown) => T[];
7
+ toArray: (children: JSX.Element[]) => Array<ElementNode | ScalarNode>;
8
+ };
9
+ export declare const Children: Children;
10
+ export {};
11
+ //# sourceMappingURL=Children.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Children.d.ts","sourceRoot":"","sources":["../../src/core/Children.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAElE,KAAK,QAAQ,GAAG;IACd,KAAK,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,EAAE,KAAK,MAAM,CAAC;IAC3C,IAAI,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,KAAK,OAAO,CAAC,QAAQ,IAAI,WAAW,GAAG,UAAU,CAAC;IAC9E,OAAO,EAAE,CACP,QAAQ,EAAE,GAAG,CAAC,OAAO,EAAE,EACvB,EAAE,EAAE,CAAC,KAAK,EAAE,WAAW,GAAG,UAAU,KAAK,IAAI,EAC7C,OAAO,CAAC,EAAE,OAAO,KACd,IAAI,CAAC;IACV,GAAG,EAAE,CAAC,CAAC,EACL,QAAQ,EAAE,GAAG,CAAC,OAAO,EAAE,EACvB,EAAE,EAAE,CAAC,KAAK,EAAE,WAAW,GAAG,UAAU,KAAK,CAAC,EAC1C,OAAO,CAAC,EAAE,OAAO,KACd,CAAC,EAAE,CAAC;IACT,OAAO,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,EAAE,KAAK,KAAK,CAAC,WAAW,GAAG,UAAU,CAAC,CAAC;CACvE,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,QA6CtB,CAAC"}
@@ -0,0 +1,35 @@
1
+ export const Children = {
2
+ count: (children) => {
3
+ return Children.toArray(children).length;
4
+ },
5
+ forEach: (children, fn, objThis) => {
6
+ for (const child of children) {
7
+ if (Array.isArray(child)) {
8
+ Children.forEach(child, fn, objThis);
9
+ }
10
+ else {
11
+ fn.call(objThis, child);
12
+ }
13
+ }
14
+ },
15
+ map: (chidlren, fn, objThis) => {
16
+ const result = [];
17
+ Children.forEach(chidlren, (child) => {
18
+ result.push(fn.call(objThis, child));
19
+ }, objThis);
20
+ return result;
21
+ },
22
+ only(children) {
23
+ if (!Array.isArray(children)) {
24
+ children = [children];
25
+ }
26
+ const items = Children.toArray(children);
27
+ if (items.length !== 1) {
28
+ throw new Error(`Found ${items.length} children. Expected only one`);
29
+ }
30
+ },
31
+ toArray: (children) => {
32
+ return Children.map(children, (child) => child);
33
+ },
34
+ };
35
+ //# sourceMappingURL=Children.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Children.js","sourceRoot":"","sources":["../../src/core/Children.ts"],"names":[],"mappings":"AAkBA,MAAM,CAAC,MAAM,QAAQ,GAAa;IAChC,KAAK,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC;QACnB,OAAO,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;IAAA,CAC1C;IAED,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAQ,EAAE,CAAC;QACxC,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;YAC7B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;YACvC,CAAC;iBAAM,CAAC;gBACN,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;IAAA,CACF;IAED,GAAG,EAAE,CACH,QAAuB,EACvB,EAA0C,EAC1C,OAAiB,EACZ,EAAE,CAAC;QACR,MAAM,MAAM,GAAQ,EAAE,CAAC;QACvB,QAAQ,CAAC,OAAO,CACd,QAAQ,EACR,CAAC,KAAK,EAAE,EAAE,CAAC;YACT,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;QAAA,CACtC,EACD,OAAO,CACR,CAAC;QACF,OAAO,MAAM,CAAC;IAAA,CACf;IAED,IAAI,CAAC,QAAQ,EAAE;QACb,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxB,CAAC;QAED,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACzC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,SAAS,KAAK,CAAC,MAAM,8BAA8B,CAAC,CAAC;QACvE,CAAC;IAAA,CACF;IAED,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC;QACrB,OAAO,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;IAAA,CACjD;CACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"createTag.action.d.ts","sourceRoot":"","sources":["../../../src/core/actions/createTag.action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAIpD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAgBtD"}
1
+ {"version":3,"file":"createTag.action.d.ts","sourceRoot":"","sources":["../../../src/core/actions/createTag.action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAIpD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAkBtD"}
@@ -19,9 +19,93 @@ export function createTagAction(fiber) {
19
19
  }
20
20
  else if (fiber.tag !== 'root') {
21
21
  // 'root' is a special case - it's the node where the app is mounted.
22
- const tag = document.createElement(fiber.tag);
22
+ const tag = SVG_TAGS.has(fiber.tag)
23
+ ? document.createElementNS('http://www.w3.org/2000/svg', fiber.tag)
24
+ : document.createElement(fiber.tag);
23
25
  fiber.element = tag;
24
26
  getParentElement(fiber).appendChild(fiber.element);
25
27
  }
26
28
  }
29
+ const SVG_TAGS = new Set([
30
+ // Core SVG Elements:
31
+ 'svg',
32
+ 'g',
33
+ 'defs',
34
+ 'symbol',
35
+ 'use',
36
+ 'image',
37
+ 'switch',
38
+ 'style',
39
+ // Basic Shapes:
40
+ 'rect',
41
+ 'circle',
42
+ 'ellipse',
43
+ 'line',
44
+ 'polyline',
45
+ 'polygon',
46
+ 'path',
47
+ // Text Elements:
48
+ 'text',
49
+ 'tspan',
50
+ 'tref',
51
+ 'textPath',
52
+ 'altGlyph',
53
+ 'glyphRef',
54
+ // Descriptive & Metadata:
55
+ 'title',
56
+ 'desc',
57
+ 'metadata',
58
+ // Container Elements:
59
+ 'foreignObject',
60
+ 'marker',
61
+ 'pattern',
62
+ 'mask',
63
+ 'clipPath',
64
+ 'filter',
65
+ // Gradient & Painting Elements:
66
+ 'linearGradient',
67
+ 'radialGradient',
68
+ 'stop',
69
+ // Animation Elements:
70
+ 'animate',
71
+ 'animateMotion',
72
+ 'animateTransform',
73
+ 'set',
74
+ // Filter Primitive Elements:
75
+ 'feBlend',
76
+ 'feColorMatrix',
77
+ 'feComponentTransfer',
78
+ 'feComposite',
79
+ 'feConvolveMatrix',
80
+ 'feDiffuseLighting',
81
+ 'feDisplacementMap',
82
+ 'feDropShadow',
83
+ 'feFlood',
84
+ 'feFuncA',
85
+ 'feFuncB',
86
+ 'feFuncG',
87
+ 'feFuncR',
88
+ 'feGaussianBlur',
89
+ 'feImage',
90
+ 'feMerge',
91
+ 'feMergeNode',
92
+ 'feMorphology',
93
+ 'feOffset',
94
+ 'fePointLight',
95
+ 'feSpecularLighting',
96
+ 'feSpotLight',
97
+ 'feTile',
98
+ 'feTurbulence',
99
+ // Font Elements:
100
+ 'font',
101
+ 'glyph',
102
+ 'hkern',
103
+ 'vkern',
104
+ 'font-face',
105
+ 'font-face-src',
106
+ 'font-face-uri',
107
+ 'font-face-format',
108
+ 'font-face-name',
109
+ 'missing-glyph',
110
+ ]);
27
111
  //# sourceMappingURL=createTag.action.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"createTag.action.js","sourceRoot":"","sources":["../../../src/core/actions/createTag.action.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,KAAgB,EAAQ;IACtD,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,YAAY,WAAW,EAAE,CAAC;QACtC,uEAAuE;QACvE,kEAAkE;QAClE,mCAAmC;QACnC,WAAW,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IAChE,CAAC;SAAM,IAAI,KAAK,CAAC,GAAG,KAAK,MAAM,EAAE,CAAC;QAChC,qEAAqE;QACrE,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9C,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;QACpB,gBAAgB,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrD,CAAC;AAAA,CACF"}
1
+ {"version":3,"file":"createTag.action.js","sourceRoot":"","sources":["../../../src/core/actions/createTag.action.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,KAAgB,EAAQ;IACtD,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,YAAY,WAAW,EAAE,CAAC;QACtC,uEAAuE;QACvE,kEAAkE;QAClE,mCAAmC;QACnC,WAAW,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IAChE,CAAC;SAAM,IAAI,KAAK,CAAC,GAAG,KAAK,MAAM,EAAE,CAAC;QAChC,qEAAqE;QACrE,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;YACjC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,4BAA4B,EAAE,KAAK,CAAC,GAAG,CAAC;YACnE,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACtC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;QACpB,gBAAgB,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrD,CAAC;AAAA,CACF;AAED,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC;IACvB,qBAAqB;IACrB,KAAK;IACL,GAAG;IACH,MAAM;IACN,QAAQ;IACR,KAAK;IACL,OAAO;IACP,QAAQ;IACR,OAAO;IACP,gBAAgB;IAChB,MAAM;IACN,QAAQ;IACR,SAAS;IACT,MAAM;IACN,UAAU;IACV,SAAS;IACT,MAAM;IACN,iBAAiB;IACjB,MAAM;IACN,OAAO;IACP,MAAM;IACN,UAAU;IACV,UAAU;IACV,UAAU;IACV,0BAA0B;IAC1B,OAAO;IACP,MAAM;IACN,UAAU;IACV,sBAAsB;IACtB,eAAe;IACf,QAAQ;IACR,SAAS;IACT,MAAM;IACN,UAAU;IACV,QAAQ;IACR,gCAAgC;IAChC,gBAAgB;IAChB,gBAAgB;IAChB,MAAM;IACN,sBAAsB;IACtB,SAAS;IACT,eAAe;IACf,kBAAkB;IAClB,KAAK;IACL,6BAA6B;IAC7B,SAAS;IACT,eAAe;IACf,qBAAqB;IACrB,aAAa;IACb,kBAAkB;IAClB,mBAAmB;IACnB,mBAAmB;IACnB,cAAc;IACd,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,gBAAgB;IAChB,SAAS;IACT,SAAS;IACT,aAAa;IACb,cAAc;IACd,UAAU;IACV,cAAc;IACd,oBAAoB;IACpB,aAAa;IACb,QAAQ;IACR,cAAc;IACd,iBAAiB;IACjB,MAAM;IACN,OAAO;IACP,OAAO;IACP,OAAO;IACP,WAAW;IACX,eAAe;IACf,eAAe;IACf,kBAAkB;IAClB,gBAAgB;IAChB,eAAe;CAChB,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { TagAttrValue } from '../../../types';
2
+ export declare const setHtmlAttribute: (element: HTMLElement, name: string, value: TagAttrValue) => void;
3
+ export declare const BOOL_ATTRS: Set<string>;
4
+ //# sourceMappingURL=attributes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attributes.d.ts","sourceRoot":"","sources":["../../../../src/core/actions/dom/attributes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,eAAO,MAAM,gBAAgB,mEAe5B,CAAC;AAEF,eAAO,MAAM,UAAU,aAuCrB,CAAC"}
@@ -0,0 +1,53 @@
1
+ export const setHtmlAttribute = (element, name, value) => {
2
+ if (BOOL_ATTRS.has(name)) {
3
+ if (value) {
4
+ element.setAttribute(name, '');
5
+ }
6
+ else {
7
+ element.removeAttribute(name);
8
+ }
9
+ return;
10
+ }
11
+ element.setAttribute(name === 'className' ? 'class' : name, String(value));
12
+ };
13
+ export const BOOL_ATTRS = new Set([
14
+ 'autoFocus',
15
+ 'checked',
16
+ 'multiple',
17
+ 'muted',
18
+ 'selected',
19
+ 'contentEditable',
20
+ 'spellCheck',
21
+ 'draggable',
22
+ 'value',
23
+ 'autoReverse',
24
+ 'externalResourcesRequired',
25
+ 'focusable',
26
+ 'preserveAlpha',
27
+ 'allowFullScreen',
28
+ 'async',
29
+ 'autoPlay',
30
+ 'controls',
31
+ 'default',
32
+ 'defer',
33
+ 'disabled',
34
+ 'disablePictureInPicture',
35
+ 'disableRemotePlayback',
36
+ 'formNoValidate',
37
+ 'hidden',
38
+ 'loop',
39
+ 'noModule',
40
+ 'noValidate',
41
+ 'open',
42
+ 'playsInline',
43
+ 'readOnly',
44
+ 'required',
45
+ 'reversed',
46
+ 'scoped',
47
+ 'seamless',
48
+ 'itemScope',
49
+ 'capture',
50
+ 'download',
51
+ 'inert',
52
+ ]);
53
+ //# sourceMappingURL=attributes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attributes.js","sourceRoot":"","sources":["../../../../src/core/actions/dom/attributes.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,OAAoB,EACpB,IAAY,EACZ,KAAmB,EACnB,EAAE,CAAC;IACH,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;QACD,OAAO;IACT,CAAC;IAED,OAAO,CAAC,YAAY,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAAA,CAC5E,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC;IAChC,WAAW;IACX,SAAS;IACT,UAAU;IACV,OAAO;IACP,UAAU;IACV,iBAAiB;IACjB,YAAY;IACZ,WAAW;IACX,OAAO;IACP,aAAa;IACb,2BAA2B;IAC3B,WAAW;IACX,eAAe;IACf,iBAAiB;IACjB,OAAO;IACP,UAAU;IACV,UAAU;IACV,SAAS;IACT,OAAO;IACP,UAAU;IACV,yBAAyB;IACzB,uBAAuB;IACvB,gBAAgB;IAChB,QAAQ;IACR,MAAM;IACN,UAAU;IACV,YAAY;IACZ,MAAM;IACN,aAAa;IACb,UAAU;IACV,UAAU;IACV,UAAU;IACV,QAAQ;IACR,UAAU;IACV,WAAW;IACX,SAAS;IACT,UAAU;IACV,OAAO;CACR,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { TagAttrValue, TagFiberNode } from '../../../types';
2
+ /**
3
+ * Handles removing, toggling and adding tag styles.
4
+ */
5
+ export declare const setTagStyles: (fiber: TagFiberNode, stylesRaw: TagAttrValue) => void;
6
+ //# sourceMappingURL=css.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"css.d.ts","sourceRoot":"","sources":["../../../../src/core/actions/dom/css.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAa,MAAM,oBAAoB,CAAC;AAEhF;;GAEG;AACH,eAAO,MAAM,YAAY,wDA0CxB,CAAC"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Handles removing, toggling and adding tag styles.
3
+ */
4
+ export const setTagStyles = (fiber,
5
+ /** Should be a CSS-string (hyphens) or a CSS map (camelCase) */
6
+ stylesRaw) => {
7
+ if (typeof stylesRaw !== 'string' &&
8
+ stylesRaw != null &&
9
+ typeof stylesRaw !== 'object') {
10
+ throw new Error(`Unsupported format of styles`);
11
+ }
12
+ const elementStyle = fiber.element.style;
13
+ const newStyles = typeof stylesRaw === 'string' ? strToStyles(stylesRaw) : (stylesRaw ?? {});
14
+ if (Object.keys(newStyles).length > 0) {
15
+ for (const key of Object.keys(fiber.data.styles ?? {})) {
16
+ if (!(key in newStyles)) {
17
+ if (key.includes('-')) {
18
+ elementStyle.removeProperty(key);
19
+ }
20
+ else if (key in elementStyle) {
21
+ // @ts-ignore It's wrongly typed as read-only.
22
+ elementStyle[key] = '';
23
+ }
24
+ }
25
+ }
26
+ for (const [key, value] of Object.entries(newStyles)) {
27
+ if (key.includes('-')) {
28
+ elementStyle.setProperty(key, value);
29
+ }
30
+ else if (key in elementStyle) {
31
+ // @ts-ignore It's wrongly typed as read-only.
32
+ elementStyle[key] = value;
33
+ }
34
+ }
35
+ }
36
+ else {
37
+ fiber.element.removeAttribute('style');
38
+ }
39
+ fiber.data.styles = newStyles;
40
+ };
41
+ /**
42
+ * Converts a string like "color: red; font-size: 12px" to
43
+ * { color: 'red', ['font-size']: '12px' }
44
+ */
45
+ const strToStyles = (css) => {
46
+ cssDummy.style.cssText = css;
47
+ return Object.fromEntries(Array.from(cssDummy.style).map((k) => [
48
+ k,
49
+ cssDummy.style.getPropertyValue(k),
50
+ ]));
51
+ };
52
+ const cssDummy = document.createElement('x-css-dummy');
53
+ //# sourceMappingURL=css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"css.js","sourceRoot":"","sources":["../../../../src/core/actions/dom/css.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,KAAmB;AACnB,gEAAgE;AAChE,SAAuB,EACjB,EAAE,CAAC;IACT,IACE,OAAO,SAAS,KAAK,QAAQ;QAC7B,SAAS,IAAI,IAAI;QACjB,OAAO,SAAS,KAAK,QAAQ,EAC7B,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,YAAY,GAAI,KAAK,CAAC,OAAuB,CAAC,KAAK,CAAC;IAC1D,MAAM,SAAS,GACb,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;IAE7E,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;YACvD,IAAI,CAAC,CAAC,GAAG,IAAI,SAAS,CAAC,EAAE,CAAC;gBACxB,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBACtB,YAAY,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;gBACnC,CAAC;qBAAM,IAAI,GAAG,IAAI,YAAY,EAAE,CAAC;oBAC/B,8CAA8C;oBAC9C,YAAY,CAAC,GAAsB,CAAC,GAAG,EAAE,CAAC;gBAC5C,CAAC;YACH,CAAC;QACH,CAAC;QAED,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YACrD,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtB,YAAY,CAAC,WAAW,CAAC,GAAG,EAAE,KAAe,CAAC,CAAC;YACjD,CAAC;iBAAM,IAAI,GAAG,IAAI,YAAY,EAAE,CAAC;gBAC/B,8CAA8C;gBAC9C,YAAY,CAAC,GAAsB,CAAC,GAAG,KAAK,CAAC;YAC/C,CAAC;QACH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,OAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;AAAA,CAC/B,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,GAAG,CAAC,GAAW,EAAa,EAAE,CAAC;IAC9C,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;IAC7B,OAAO,MAAM,CAAC,WAAW,CACvB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACpC,CAAC;QACD,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;KACnC,CAAC,CACH,CAAC;AAAA,CACH,CAAC;AAEF,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { TagAttrValue, TagFiberNode } from '../../../types';
2
+ export declare const setEventHandler: (fiber: TagFiberNode, element: Element, name: string, value: TagAttrValue) => void;
3
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../../src/core/actions/dom/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAErE,eAAO,MAAM,eAAe,oFAwC3B,CAAC"}
@@ -0,0 +1,33 @@
1
+ export const setEventHandler = (fiber, element, name, value) => {
2
+ const { events } = fiber.data;
3
+ if (value == null || value === false) {
4
+ if (events[name]) {
5
+ // Event handler was added before but now it's removed.
6
+ events[name].handler = null;
7
+ }
8
+ return;
9
+ }
10
+ if (typeof value !== 'function') {
11
+ throw new Error(`Unsupported format of event handler. It has to be "undefined" or a function`);
12
+ }
13
+ // Instead of adding and removing event handlers on every render, we can add a
14
+ // wrapper that calls `events[name]` and update only the internal
15
+ // function when it changes.
16
+ if (!events[name]) {
17
+ const eventName = name.slice(2).toLowerCase(); // onClick -> click.
18
+ events[name] = {
19
+ name: eventName,
20
+ handler: value,
21
+ wrapper: (event) => {
22
+ // Original React doesn't support stopping propagation on `false` return.
23
+ events[name].handler?.(event);
24
+ },
25
+ };
26
+ element.addEventListener(eventName, events[name].wrapper);
27
+ }
28
+ else {
29
+ // The tag is already listening to this event. Just update the internal ref.
30
+ events[name].handler = value;
31
+ }
32
+ };
33
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../../../src/core/actions/dom/events.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,KAAmB,EACnB,OAAgB,EAChB,IAAY,EACZ,KAAmB,EACb,EAAE,CAAC;IACT,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC;IAE9B,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;QACrC,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YACjB,uDAAuD;YACvD,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC;QAC9B,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CACb,6EAA6E,CAC9E,CAAC;IACJ,CAAC;IAED,8EAA8E;IAC9E,iEAAiE;IACjE,4BAA4B;IAC5B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAClB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,oBAAoB;QACnE,MAAM,CAAC,IAAI,CAAC,GAAG;YACb,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,CAAC,KAAY,EAAE,EAAE,CAAC;gBACzB,yEAAyE;gBACzE,MAAM,CAAC,IAAI,CAAE,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;YAAA,CAChC;SACF,CAAC;QACF,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;IAC5D,CAAC;SAAM,CAAC;QACN,4EAA4E;QAC5E,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC;IAC/B,CAAC;AAAA,CACF,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * SVG is weird. Some of the attributes are in camelCase, and some are in
3
+ * kebab-case. This methods takes into account SVG-based nuances and sets the
4
+ * given attribute in the right way.
5
+ */
6
+ export declare const setSvgAttribute: (element: SVGElement, name: string, value: string) => void;
7
+ //# sourceMappingURL=svg.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svg.d.ts","sourceRoot":"","sources":["../../../../src/core/actions/dom/svg.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,eAAe,4DAW3B,CAAC"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * SVG is weird. Some of the attributes are in camelCase, and some are in
3
+ * kebab-case. This methods takes into account SVG-based nuances and sets the
4
+ * given attribute in the right way.
5
+ */
6
+ export const setSvgAttribute = (element, name, value) => {
7
+ if (name === 'className') {
8
+ name = 'class';
9
+ }
10
+ else if (!SVG_CAMEL_ATTRS.has(name)) {
11
+ name = name.replace(/[A-Z]/g, (m) => '-' + m.toLowerCase());
12
+ }
13
+ element.setAttribute(name, value);
14
+ };
15
+ // Most of SVG attributes are in kebab-cases. Here is the list of exclusions.
16
+ const SVG_CAMEL_ATTRS = new Set([
17
+ 'attributeName',
18
+ 'repeatCount',
19
+ 'attributeType',
20
+ 'baseFrequency',
21
+ 'baseProfile',
22
+ 'calcMode',
23
+ 'clipPathUnits',
24
+ 'diffuseConstant',
25
+ 'edgeMode',
26
+ 'Experimental',
27
+ 'filterUnits',
28
+ 'gradientTransform',
29
+ 'gradientUnits',
30
+ 'kernelMatrix',
31
+ 'kernelUnitLength',
32
+ 'keyPoints',
33
+ 'keySplines',
34
+ 'keyTimes',
35
+ 'lengthAdjust',
36
+ 'limitingConeAngle',
37
+ 'markerHeight',
38
+ 'markerUnits',
39
+ 'markerWidth',
40
+ 'maskContentUnits',
41
+ 'maskUnits',
42
+ 'numOctaves',
43
+ 'pathLength',
44
+ 'patternContentUnits',
45
+ 'patternTransform',
46
+ 'patternUnits',
47
+ 'pointsAtX',
48
+ 'pointsAtY',
49
+ 'pointsAtZ',
50
+ 'preserveAlpha',
51
+ 'preserveAspectRatio',
52
+ 'primitiveUnits',
53
+ 'refX',
54
+ 'refY',
55
+ 'repeatDur',
56
+ 'requiredExtensions',
57
+ 'requiredFeatures',
58
+ 'Experimental',
59
+ 'specularConstant',
60
+ 'specularExponent',
61
+ 'spreadMethod',
62
+ 'startOffset',
63
+ 'stdDeviation',
64
+ 'stitchTiles',
65
+ 'surfaceScale',
66
+ 'systemLanguage',
67
+ 'tableValues',
68
+ 'targetX',
69
+ 'targetY',
70
+ 'textLength',
71
+ 'viewBox',
72
+ 'xChannelSelector',
73
+ 'yChannelSelector',
74
+ 'zoomAndPan',
75
+ ]);
76
+ //# sourceMappingURL=svg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svg.js","sourceRoot":"","sources":["../../../../src/core/actions/dom/svg.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,OAAmB,EACnB,IAAY,EACZ,KAAa,EACP,EAAE,CAAC;IACT,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;QACzB,IAAI,GAAG,OAAO,CAAC;IACjB,CAAC;SAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACtC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAAA,CACnC,CAAC;AAEF,6EAA6E;AAC7E,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC;IAC9B,eAAe;IACf,aAAa;IACb,eAAe;IACf,eAAe;IACf,aAAa;IACb,UAAU;IACV,eAAe;IACf,iBAAiB;IACjB,UAAU;IACV,cAAc;IACd,aAAa;IACb,mBAAmB;IACnB,eAAe;IACf,cAAc;IACd,kBAAkB;IAClB,WAAW;IACX,YAAY;IACZ,UAAU;IACV,cAAc;IACd,mBAAmB;IACnB,cAAc;IACd,aAAa;IACb,aAAa;IACb,kBAAkB;IAClB,WAAW;IACX,YAAY;IACZ,YAAY;IACZ,qBAAqB;IACrB,kBAAkB;IAClB,cAAc;IACd,WAAW;IACX,WAAW;IACX,WAAW;IACX,eAAe;IACf,qBAAqB;IACrB,gBAAgB;IAChB,MAAM;IACN,MAAM;IACN,WAAW;IACX,oBAAoB;IACpB,kBAAkB;IAClB,cAAc;IACd,kBAAkB;IAClB,kBAAkB;IAClB,cAAc;IACd,aAAa;IACb,cAAc;IACd,aAAa;IACb,cAAc;IACd,gBAAgB;IAChB,aAAa;IACb,SAAS;IACT,SAAS;IACT,YAAY;IACZ,SAAS;IACT,kBAAkB;IAClB,kBAAkB;IAClB,YAAY;CACb,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { DomNode, FiberNode, Ref, RefSetter } from '../../types';
1
+ import type { DomNode, FiberNode, TagFiberNode } from '../../types';
2
2
  /**
3
3
  * Determines if a prop name represents an event handler by checking if it
4
4
  * starts with "on". This follows React's convention where any prop beginning
@@ -34,7 +34,7 @@ export declare const getFiberDomNodes: (fiber: FiberNode) => DomNode[];
34
34
  * When a node leaves the DOM tree, we need to update all associated ref
35
35
  * objects and ref handlers.
36
36
  */
37
- export declare const unsetRef: <T>(ref: Ref<T | null> | RefSetter<T | null>) => void;
37
+ export declare const unsetRef: (fiber: TagFiberNode, immediate: boolean) => void;
38
38
  /**
39
39
  * To help avoid memory leaks, this method removes fiber properties that
40
40
  * can hold references to other objects.
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/core/actions/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAM7E;;;;;;;;;;GAUG;AACH,eAAO,MAAM,WAAW,2BAAmD,CAAC;AAE5E;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,+BAa5B,CAAC;AA6BF;;;;;GAKG;AACH,eAAO,MAAM,SAAS,8CAiCrB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,iCAwB5B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,QAAQ,GAAI,CAAC,mDAMzB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,4BAQ1B,CAAC"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/core/actions/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAQ3E;;;;;;;;;;GAUG;AACH,eAAO,MAAM,WAAW,2BAAmD,CAAC;AAE5E;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,+BAa5B,CAAC;AA6BF;;;;;GAKG;AACH,eAAO,MAAM,SAAS,8CAiCrB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,iCAwB5B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,QAAQ,mDAqBpB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,4BAW1B,CAAC"}
@@ -2,6 +2,8 @@ import { nullthrows } from '../../utils';
2
2
  import { isBeginOf, isCompactNone, isCompactSingleChild } from '../compact';
3
3
  import { NULL_FIBER } from '../reconciliation/fibers';
4
4
  import { buildCommentText } from '../reconciliation/comments';
5
+ import { scheduleEffect } from '../reconciliation/effects';
6
+ import { getAppByFiber } from '../reconciliation/app';
5
7
  /**
6
8
  * Determines if a prop name represents an event handler by checking if it
7
9
  * starts with "on". This follows React's convention where any prop beginning
@@ -117,9 +119,20 @@ export const getFiberDomNodes = (fiber) => {
117
119
  * When a node leaves the DOM tree, we need to update all associated ref
118
120
  * objects and ref handlers.
119
121
  */
120
- export const unsetRef = (ref) => {
122
+ export const unsetRef = (fiber, immediate) => {
123
+ const { ref } = fiber;
121
124
  if (typeof ref === 'function') {
122
- ref(null);
125
+ if (immediate) {
126
+ ref(null); // test
127
+ }
128
+ else {
129
+ // It can be a setter (e.g., <div onRef={setContainer}/>). Since we
130
+ // shouldn't allow invalidating components during commit phase we need
131
+ // to schedule an async update.
132
+ scheduleEffect(getAppByFiber(fiber), () => {
133
+ ref(null);
134
+ }, 'refs');
135
+ }
123
136
  }
124
137
  else {
125
138
  ref.current = null;
@@ -130,6 +143,8 @@ export const unsetRef = (ref) => {
130
143
  * can hold references to other objects.
131
144
  */
132
145
  export const emptyFiberNode = (fiber) => {
146
+ // For debug purposes mark dead nodes with a negative number.
147
+ fiber.id = -fiber.id;
133
148
  fiber.data = null;
134
149
  fiber.element = null;
135
150
  fiber.component = null;
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/core/actions/helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/core/actions/helpers.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  import type { FiberNode } from '../../types';
2
+ import type { RemoveAction } from '../../types/actions';
2
3
  /**
3
4
  * This action can be called directly (<div/> -> []), or indirectly (<div/> ->
4
5
  * false) from the replace action. `replaced` is `true` in the 2nd scenario.
5
6
  */
6
- export declare function removeAction(fiber: FiberNode): void;
7
+ export declare function removeAction(fiber: FiberNode, { immediate }: RemoveAction): void;
7
8
  //# sourceMappingURL=remove.action.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"remove.action.d.ts","sourceRoot":"","sources":["../../../src/core/actions/remove.action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,SAAS,EAEV,MAAM,oBAAoB,CAAC;AAK5B;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,QAkC5C"}
1
+ {"version":3,"file":"remove.action.d.ts","sourceRoot":"","sources":["../../../src/core/actions/remove.action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,SAAS,EAEV,MAAM,oBAAoB,CAAC;AAI5B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,EAAE,YAAY,QAkCzE"}
@@ -5,12 +5,12 @@ import { applyAction } from './applyAction';
5
5
  * This action can be called directly (<div/> -> []), or indirectly (<div/> ->
6
6
  * false) from the replace action. `replaced` is `true` in the 2nd scenario.
7
7
  */
8
- export function removeAction(fiber) {
8
+ export function removeAction(fiber, { immediate }) {
9
9
  for (const child of fiber.children) {
10
10
  // Recursively remove all children before removing the parent node. This is
11
11
  // critical for components with effects - we must run cleanup effects
12
12
  // before removing their parent nodes.
13
- applyAction({ type: 'Remove', fiber: child });
13
+ applyAction({ type: 'Remove', fiber: child, immediate });
14
14
  }
15
15
  if (fiber.type === 'component') {
16
16
  destroyHooks(fiber);
@@ -33,7 +33,7 @@ export function removeAction(fiber) {
33
33
  n.remove();
34
34
  }
35
35
  if (fiber.ref) {
36
- unsetRef(fiber.ref);
36
+ unsetRef(fiber, !!immediate);
37
37
  }
38
38
  emptyFiberNode(fiber); // Help with garbage collection.
39
39
  }
@@ -44,9 +44,9 @@ export function removeAction(fiber) {
44
44
  * create a memory leak. Better to mitigate this potential issue.
45
45
  */
46
46
  const unlistenTagEvents = (fiber) => {
47
- for (const [name, record] of Object.entries(fiber.data.events)) {
47
+ for (const record of Object.values(fiber.data.events)) {
48
48
  if (record?.wrapper) {
49
- fiber.element.removeEventListener(name, record.wrapper);
49
+ fiber.element.removeEventListener(record.name, record.wrapper);
50
50
  }
51
51
  }
52
52
  };
@@ -1 +1 @@
1
- {"version":3,"file":"remove.action.js","sourceRoot":"","sources":["../../../src/core/actions/remove.action.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,KAAgB,EAAE;IAC7C,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACnC,2EAA2E;QAC3E,qEAAqE;QACrE,sCAAsC;QACtC,WAAW,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAC/B,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QACrE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC3D,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED,IAAI,oBAAoB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QACvC,sEAAsE;QACtE,0EAA0E;QAC1E,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;QACxC,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC/C,CAAC;QACD,CAAC,CAAC,MAAM,EAAE,CAAC;IACb,CAAC;IAED,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;QACd,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACtB,CAAC;IAED,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,gCAAgC;AAAjC,CACvB;AAED;;;;;GAKG;AACH,MAAM,iBAAiB,GAAG,CAAC,KAAmB,EAAQ,EAAE,CAAC;IACvD,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/D,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;YACnB,KAAK,CAAC,OAAuB,CAAC,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC;AAAA,CACF,CAAC;AAEF;;;GAGG;AACH,MAAM,YAAY,GAAG,CAAC,KAAyB,EAAQ,EAAE,CAAC;IACxD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;QACvC,IAAI,YAAY,IAAI,IAAI,EAAE,CAAC;YACzB,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;YACpB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,CAAC;AAAA,CACJ,CAAC"}
1
+ {"version":3,"file":"remove.action.js","sourceRoot":"","sources":["../../../src/core/actions/remove.action.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,KAAgB,EAAE,EAAE,SAAS,EAAgB,EAAE;IAC1E,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACnC,2EAA2E;QAC3E,qEAAqE;QACrE,sCAAsC;QACtC,WAAW,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAC/B,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QACrE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC3D,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED,IAAI,oBAAoB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QACvC,sEAAsE;QACtE,0EAA0E;QAC1E,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;QACxC,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC/C,CAAC;QACD,CAAC,CAAC,MAAM,EAAE,CAAC;IACb,CAAC;IAED,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;QACd,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC;IAED,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,gCAAgC;AAAjC,CACvB;AAED;;;;;GAKG;AACH,MAAM,iBAAiB,GAAG,CAAC,KAAmB,EAAQ,EAAE,CAAC;IACvD,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACtD,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;YACnB,KAAK,CAAC,OAAuB,CAAC,mBAAmB,CAChD,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,OAAO,CACf,CAAC;QACJ,CAAC;IACH,CAAC;AAAA,CACF,CAAC;AAEF;;;GAGG;AACH,MAAM,YAAY,GAAG,CAAC,KAAyB,EAAQ,EAAE,CAAC;IACxD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;QACvC,IAAI,YAAY,IAAI,IAAI,EAAE,CAAC;YACzB,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;YACpB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,CAAC;AAAA,CACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"replace.action.d.ts","sourceRoot":"","sources":["../../../src/core/actions/replace.action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAMhE;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,EAAE,aAAa,QAuB1E"}
1
+ {"version":3,"file":"replace.action.d.ts","sourceRoot":"","sources":["../../../src/core/actions/replace.action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,SAAS,EAEV,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAMhE;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,EAAE,aAAa,QAuB1E"}
@@ -53,5 +53,23 @@ const displaceFiber = (before, after) => {
53
53
  before.tag = after.tag;
54
54
  before.props = after.props;
55
55
  before.ref = after.ref;
56
+ if (after.type === 'component') {
57
+ for (const h of after.data.hooks) {
58
+ if ('move' in h) {
59
+ h.move(before);
60
+ }
61
+ }
62
+ }
63
+ if (after.role === 'context') {
64
+ for (const f of after.data.consumers) {
65
+ if (f.id < 0) {
66
+ throw 'what?';
67
+ }
68
+ const hook = f.data.hooks.find((h) => h.type === 'context' && h.ctx === after.data.ctx);
69
+ hook.providerFiber = before;
70
+ }
71
+ }
72
+ // For debug purposes mark dead nodes with a negative number.
73
+ after.id = -after.id;
56
74
  };
57
75
  //# sourceMappingURL=replace.action.js.map