sygnal 5.3.7 → 5.4.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 (226) hide show
  1. package/README.md +53 -38
  2. package/dist/astro/client.cjs.js +18 -8106
  3. package/dist/astro/client.cjs.js.map +1 -0
  4. package/dist/astro/client.mjs +17 -8105
  5. package/dist/astro/client.mjs.map +1 -0
  6. package/dist/astro/index.cjs.js +768 -9
  7. package/dist/astro/index.cjs.js.map +1 -0
  8. package/dist/astro/index.mjs +768 -9
  9. package/dist/astro/index.mjs.map +1 -0
  10. package/dist/astro/server.cjs.js +4 -1
  11. package/dist/astro/server.cjs.js.map +1 -0
  12. package/dist/astro/server.mjs +4 -1
  13. package/dist/astro/server.mjs.map +1 -0
  14. package/dist/diagnostics.cjs.js +1297 -0
  15. package/dist/diagnostics.cjs.js.map +1 -0
  16. package/dist/diagnostics.esm.js +1267 -0
  17. package/dist/diagnostics.esm.js.map +1 -0
  18. package/dist/index.cjs.js +2981 -1386
  19. package/dist/index.cjs.js.map +1 -0
  20. package/dist/index.d.ts +848 -111
  21. package/dist/index.esm.js +2997 -1411
  22. package/dist/index.esm.js.map +1 -0
  23. package/dist/jsx-dev-runtime.cjs.js +15 -9
  24. package/dist/jsx-dev-runtime.cjs.js.map +1 -0
  25. package/dist/jsx-dev-runtime.esm.js +15 -9
  26. package/dist/jsx-dev-runtime.esm.js.map +1 -0
  27. package/dist/jsx-runtime.cjs.js +15 -9
  28. package/dist/jsx-runtime.cjs.js.map +1 -0
  29. package/dist/jsx-runtime.esm.js +15 -9
  30. package/dist/jsx-runtime.esm.js.map +1 -0
  31. package/dist/jsx.cjs.js +15 -9
  32. package/dist/jsx.cjs.js.map +1 -0
  33. package/dist/jsx.esm.js +15 -9
  34. package/dist/jsx.esm.js.map +1 -0
  35. package/dist/sygnal.min.js +2 -1
  36. package/dist/sygnal.min.js.map +1 -0
  37. package/dist/vike/+config.cjs.js +1 -0
  38. package/dist/vike/+config.cjs.js.map +1 -0
  39. package/dist/vike/+config.js +1 -0
  40. package/dist/vike/+config.js.map +1 -0
  41. package/dist/vike/ClientOnly.cjs.js +1 -0
  42. package/dist/vike/ClientOnly.cjs.js.map +1 -0
  43. package/dist/vike/ClientOnly.mjs +1 -0
  44. package/dist/vike/ClientOnly.mjs.map +1 -0
  45. package/dist/vike/onRenderClient.cjs.js +1 -0
  46. package/dist/vike/onRenderClient.cjs.js.map +1 -0
  47. package/dist/vike/onRenderClient.mjs +1 -0
  48. package/dist/vike/onRenderClient.mjs.map +1 -0
  49. package/dist/vike/onRenderHtml.cjs.js +1 -0
  50. package/dist/vike/onRenderHtml.cjs.js.map +1 -0
  51. package/dist/vike/onRenderHtml.mjs +1 -0
  52. package/dist/vike/onRenderHtml.mjs.map +1 -0
  53. package/dist/vite/plugin.cjs.js +670 -44
  54. package/dist/vite/plugin.cjs.js.map +1 -0
  55. package/dist/vite/plugin.mjs +670 -44
  56. package/dist/vite/plugin.mjs.map +1 -0
  57. package/llms.txt +250 -0
  58. package/package.json +15 -6
  59. package/src/astro/client.ts +13 -2
  60. package/src/astro/index.d.ts +24 -1
  61. package/src/astro/index.ts +40 -9
  62. package/src/astro/server.ts +3 -1
  63. package/src/collection.ts +5 -2
  64. package/src/component.ts +375 -330
  65. package/src/cycle/dom/MainDOMSource.ts +4 -0
  66. package/src/cycle/dom/classNameModule.ts +74 -0
  67. package/src/cycle/dom/controlledInputModule.ts +33 -0
  68. package/src/cycle/dom/enrichEventStream.ts +9 -3
  69. package/src/cycle/dom/makeDOMDriver.ts +1 -2
  70. package/src/cycle/dom/mockDOMSource.ts +62 -8
  71. package/src/cycle/dom/modules.ts +5 -1
  72. package/src/cycle/state/Collection.ts +13 -3
  73. package/src/cycle/state/StateSource.ts +1 -1
  74. package/src/cycle/state/pickCombine.ts +35 -1
  75. package/src/cycle/state/withState.ts +1 -1
  76. package/src/extra/devtools.ts +8 -0
  77. package/src/extra/diagnostics/checks/collections.ts +67 -0
  78. package/src/extra/diagnostics/checks/dom.ts +241 -0
  79. package/src/extra/diagnostics/checks/events.ts +68 -0
  80. package/src/extra/diagnostics/checks/index.ts +109 -0
  81. package/src/extra/diagnostics/checks/inspect.ts +319 -0
  82. package/src/extra/diagnostics/checks/props.ts +51 -0
  83. package/src/extra/diagnostics/checks/public.d.ts +211 -0
  84. package/src/extra/diagnostics/checks/rxjsHints.ts +88 -0
  85. package/src/extra/diagnostics/checks/shared.ts +119 -0
  86. package/src/extra/diagnostics/checks/state.ts +55 -0
  87. package/src/extra/diagnostics/checks/strict.ts +112 -0
  88. package/src/extra/diagnostics/checks/wiring.ts +65 -0
  89. package/src/extra/diagnostics/codes.ts +232 -0
  90. package/src/extra/diagnostics/index.ts +328 -0
  91. package/src/extra/diagnostics/legacy.ts +59 -0
  92. package/src/extra/driverFactories.ts +106 -58
  93. package/src/extra/eventDriver.ts +4 -0
  94. package/src/extra/flatten.ts +75 -0
  95. package/src/extra/reducers.ts +12 -5
  96. package/src/extra/run.ts +11 -0
  97. package/src/extra/testing.ts +890 -180
  98. package/src/extra/xstreamExtras.ts +269 -0
  99. package/src/index.d.ts +428 -17
  100. package/src/index.ts +7 -6
  101. package/src/pragma/index.ts +14 -9
  102. package/src/switchable.ts +10 -8
  103. package/src/vike/types.ts +21 -4
  104. package/src/vite/plugin.d.ts +95 -2
  105. package/src/vite/plugin.ts +720 -54
  106. package/dist/astro/astro/client.d.ts +0 -5
  107. package/dist/astro/astro/index.d.ts +0 -16
  108. package/dist/astro/astro/server.d.ts +0 -12
  109. package/dist/astro/client.d.ts +0 -5
  110. package/dist/astro/client.esm.js +0 -4665
  111. package/dist/astro/collection.d.ts +0 -12
  112. package/dist/astro/component.d.ts +0 -22
  113. package/dist/astro/cycle/dom/BodyDOMSource.d.ts +0 -10
  114. package/dist/astro/cycle/dom/DOMSource.d.ts +0 -11
  115. package/dist/astro/cycle/dom/DocumentDOMSource.d.ts +0 -12
  116. package/dist/astro/cycle/dom/ElementFinder.d.ts +0 -8
  117. package/dist/astro/cycle/dom/EventDelegator.d.ts +0 -34
  118. package/dist/astro/cycle/dom/IsolateModule.d.ts +0 -23
  119. package/dist/astro/cycle/dom/MainDOMSource.d.ts +0 -32
  120. package/dist/astro/cycle/dom/PriorityQueue.d.ts +0 -7
  121. package/dist/astro/cycle/dom/ScopeChecker.d.ts +0 -9
  122. package/dist/astro/cycle/dom/SymbolTree.d.ts +0 -9
  123. package/dist/astro/cycle/dom/VNodeWrapper.d.ts +0 -8
  124. package/dist/astro/cycle/dom/enrichEventStream.d.ts +0 -24
  125. package/dist/astro/cycle/dom/fromEvent.d.ts +0 -6
  126. package/dist/astro/cycle/dom/index.d.ts +0 -8
  127. package/dist/astro/cycle/dom/isolate.d.ts +0 -9
  128. package/dist/astro/cycle/dom/makeDOMDriver.d.ts +0 -11
  129. package/dist/astro/cycle/dom/mockDOMSource.d.ts +0 -17
  130. package/dist/astro/cycle/dom/modules.d.ts +0 -5
  131. package/dist/astro/cycle/dom/snabbdom.d.ts +0 -22
  132. package/dist/astro/cycle/dom/styleModule.d.ts +0 -13
  133. package/dist/astro/cycle/dom/thunk.d.ts +0 -11
  134. package/dist/astro/cycle/dom/utils.d.ts +0 -8
  135. package/dist/astro/cycle/isolate/index.d.ts +0 -42
  136. package/dist/astro/cycle/run/adapt.d.ts +0 -6
  137. package/dist/astro/cycle/run/index.d.ts +0 -36
  138. package/dist/astro/cycle/run/internals.d.ts +0 -8
  139. package/dist/astro/cycle/run/types.d.ts +0 -49
  140. package/dist/astro/cycle/state/Collection.d.ts +0 -29
  141. package/dist/astro/cycle/state/StateSource.d.ts +0 -20
  142. package/dist/astro/cycle/state/index.d.ts +0 -5
  143. package/dist/astro/cycle/state/pickCombine.d.ts +0 -3
  144. package/dist/astro/cycle/state/pickMerge.d.ts +0 -3
  145. package/dist/astro/cycle/state/types.d.ts +0 -18
  146. package/dist/astro/cycle/state/withState.d.ts +0 -17
  147. package/dist/astro/extra/classes.d.ts +0 -7
  148. package/dist/astro/extra/devtools.d.ts +0 -78
  149. package/dist/astro/extra/dragDriver.d.ts +0 -20
  150. package/dist/astro/extra/driverFactories.d.ts +0 -12
  151. package/dist/astro/extra/eventDriver.d.ts +0 -9
  152. package/dist/astro/extra/exactState.d.ts +0 -1
  153. package/dist/astro/extra/hmr.d.ts +0 -17
  154. package/dist/astro/extra/logDriver.d.ts +0 -2
  155. package/dist/astro/extra/processDrag.d.ts +0 -19
  156. package/dist/astro/extra/processForm.d.ts +0 -15
  157. package/dist/astro/extra/run.d.ts +0 -13
  158. package/dist/astro/extra/xstreamCompat.d.ts +0 -5
  159. package/dist/astro/index.d.ts +0 -19
  160. package/dist/astro/index.esm.js +0 -27
  161. package/dist/astro/jsx-dev-runtime.d.ts +0 -1
  162. package/dist/astro/jsx-runtime.d.ts +0 -4
  163. package/dist/astro/jsx.d.ts +0 -2
  164. package/dist/astro/pragma/fn.d.ts +0 -7
  165. package/dist/astro/pragma/index.d.ts +0 -7
  166. package/dist/astro/pragma/is.d.ts +0 -10
  167. package/dist/astro/server.d.ts +0 -12
  168. package/dist/astro/server.esm.js +0 -25
  169. package/dist/astro/switchable.d.ts +0 -7
  170. package/dist/collection.d.ts +0 -12
  171. package/dist/component.d.ts +0 -22
  172. package/dist/cycle/dom/BodyDOMSource.d.ts +0 -10
  173. package/dist/cycle/dom/DOMSource.d.ts +0 -11
  174. package/dist/cycle/dom/DocumentDOMSource.d.ts +0 -12
  175. package/dist/cycle/dom/ElementFinder.d.ts +0 -8
  176. package/dist/cycle/dom/EventDelegator.d.ts +0 -34
  177. package/dist/cycle/dom/IsolateModule.d.ts +0 -23
  178. package/dist/cycle/dom/MainDOMSource.d.ts +0 -32
  179. package/dist/cycle/dom/PriorityQueue.d.ts +0 -7
  180. package/dist/cycle/dom/ScopeChecker.d.ts +0 -9
  181. package/dist/cycle/dom/SymbolTree.d.ts +0 -9
  182. package/dist/cycle/dom/VNodeWrapper.d.ts +0 -8
  183. package/dist/cycle/dom/enrichEventStream.d.ts +0 -24
  184. package/dist/cycle/dom/fromEvent.d.ts +0 -6
  185. package/dist/cycle/dom/index.d.ts +0 -8
  186. package/dist/cycle/dom/isolate.d.ts +0 -9
  187. package/dist/cycle/dom/makeDOMDriver.d.ts +0 -11
  188. package/dist/cycle/dom/mockDOMSource.d.ts +0 -17
  189. package/dist/cycle/dom/modules.d.ts +0 -5
  190. package/dist/cycle/dom/snabbdom.d.ts +0 -22
  191. package/dist/cycle/dom/styleModule.d.ts +0 -13
  192. package/dist/cycle/dom/thunk.d.ts +0 -11
  193. package/dist/cycle/dom/utils.d.ts +0 -8
  194. package/dist/cycle/isolate/index.d.ts +0 -42
  195. package/dist/cycle/run/adapt.d.ts +0 -6
  196. package/dist/cycle/run/index.d.ts +0 -36
  197. package/dist/cycle/run/internals.d.ts +0 -8
  198. package/dist/cycle/run/types.d.ts +0 -49
  199. package/dist/cycle/state/Collection.d.ts +0 -29
  200. package/dist/cycle/state/StateSource.d.ts +0 -20
  201. package/dist/cycle/state/index.d.ts +0 -5
  202. package/dist/cycle/state/pickCombine.d.ts +0 -3
  203. package/dist/cycle/state/pickMerge.d.ts +0 -3
  204. package/dist/cycle/state/types.d.ts +0 -18
  205. package/dist/cycle/state/withState.d.ts +0 -17
  206. package/dist/extra/classes.d.ts +0 -7
  207. package/dist/extra/devtools.d.ts +0 -78
  208. package/dist/extra/dragDriver.d.ts +0 -20
  209. package/dist/extra/driverFactories.d.ts +0 -12
  210. package/dist/extra/eventDriver.d.ts +0 -9
  211. package/dist/extra/exactState.d.ts +0 -1
  212. package/dist/extra/hmr.d.ts +0 -17
  213. package/dist/extra/logDriver.d.ts +0 -2
  214. package/dist/extra/processDrag.d.ts +0 -19
  215. package/dist/extra/processForm.d.ts +0 -15
  216. package/dist/extra/run.d.ts +0 -13
  217. package/dist/extra/xstreamCompat.d.ts +0 -5
  218. package/dist/jsx-dev-runtime.d.ts +0 -1
  219. package/dist/jsx-dev-runtime.js +0 -224
  220. package/dist/jsx-runtime.d.ts +0 -4
  221. package/dist/jsx-runtime.js +0 -224
  222. package/dist/jsx.d.ts +0 -2
  223. package/dist/pragma/fn.d.ts +0 -7
  224. package/dist/pragma/index.d.ts +0 -7
  225. package/dist/pragma/is.d.ts +0 -10
  226. package/dist/switchable.d.ts +0 -7
@@ -1,224 +0,0 @@
1
- import _extend from 'extend';
2
-
3
- const undefinedv = (v) => v === undefined;
4
-
5
- const number = (v) => typeof v === 'number';
6
-
7
- const string = (v) => typeof v === 'string';
8
-
9
- const text = (v) => string(v) || number(v);
10
-
11
- const array = (v) => Array.isArray(v);
12
-
13
- const object = (v) => typeof v === 'object' && v !== null;
14
-
15
- const fun = (v) => typeof v === 'function';
16
-
17
- const vnode$1 = (v) => object(v) && 'sel' in v && 'data' in v && 'children' in v && 'text' in v;
18
-
19
- const svgPropsMap = { svg: 1, circle: 1, ellipse: 1, line: 1, polygon: 1,
20
- polyline: 1, rect: 1, g: 1, path: 1, text: 1 };
21
-
22
- const svg = (v) => v.sel in svgPropsMap;
23
-
24
- // TODO: stop using extend here
25
-
26
- const extend = (...objs) => _extend(true, ...objs);
27
-
28
- const assign = (...objs) => _extend(false, ...objs);
29
-
30
- const reduceDeep = (arr, fn, initial) => {
31
- let result = initial;
32
- for (let i = 0; i < arr.length; i++) {
33
- const value = arr[i];
34
- if (array(value)) {
35
- result = reduceDeep(value, fn, result);
36
- } else {
37
- result = fn(result, value);
38
- }
39
- }
40
- return result
41
- };
42
-
43
- const mapObject = (obj, fn) => Object.keys(obj).map(
44
- (key) => fn(key, obj[key])
45
- ).reduce(
46
- (acc, curr) => extend(acc, curr),
47
- {}
48
- );
49
-
50
- const deepifyKeys = (obj, modules) => mapObject(obj,
51
- (key, val) => {
52
- const dashIndex = key.indexOf('-');
53
- if (dashIndex > -1 && modules[key.slice(0, dashIndex)] !== undefined) {
54
- const moduleData = {
55
- [key.slice(dashIndex + 1)]: val
56
- };
57
- return {
58
- [key.slice(0, dashIndex)]: moduleData
59
- }
60
- }
61
- return { [key]: val }
62
- }
63
- );
64
-
65
- const omit = (key, obj) => mapObject(obj,
66
- (mod, data) => mod !== key ? ({ [mod]: data }) : {}
67
- );
68
-
69
- // Const fnName = (...params) => guard ? default : ...
70
-
71
- const createTextElement = (text$1) => !text(text$1) ? undefined : {
72
- text: text$1,
73
- sel: undefined,
74
- data: undefined,
75
- children: undefined,
76
- elm: undefined,
77
- key: undefined
78
- };
79
-
80
- const considerSvg = (vnode) => !svg(vnode) ? vnode :
81
- assign(vnode,
82
- { data: omit('props', extend(vnode.data,
83
- { ns: 'http://www.w3.org/2000/svg', attrs: omit('className', extend(vnode.data.props,
84
- { class: vnode.data.props ? vnode.data.props.className : undefined }
85
- )) }
86
- )) },
87
- { children: undefinedv(vnode.children) ? undefined :
88
- vnode.children.map((child) => considerSvg(child))
89
- }
90
- );
91
-
92
- const rewrites = {
93
- for: 'attrs',
94
- role: 'attrs',
95
- tabindex: 'attrs',
96
- 'aria-*': 'attrs',
97
- key: null
98
- };
99
-
100
- const rewriteModules = (data, modules) => mapObject(data, (key, val) => {
101
- const inner = { [key]: val };
102
- if (rewrites[key] && modules[rewrites[key]] !== undefined) {
103
- return { [rewrites[key]]: inner }
104
- }
105
- if (rewrites[key] === null) {
106
- return {}
107
- }
108
- const keys = Object.keys(rewrites);
109
- for (let i = 0; i < keys.length; i++) {
110
- const k = keys[i];
111
- if (k.charAt(k.length - 1) === '*' && key.indexOf(k.slice(0, -1)) === 0 && modules[rewrites[k]] !== undefined) {
112
- return { [rewrites[k]]: inner }
113
- }
114
- }
115
- if (modules[key] !== undefined) {
116
- return { [modules[key] ? modules[key] : key]: val }
117
- }
118
- if (modules.props !== undefined) {
119
- return { props: inner }
120
- }
121
- return inner
122
- });
123
-
124
- const sanitizeData = (data, modules) => considerSvg(rewriteModules(deepifyKeys(data, modules), modules));
125
-
126
- const sanitizeText = (children) => children.length > 1 || !text(children[0]) ? undefined : children[0].toString();
127
-
128
- const sanitizeChildren = (children) => reduceDeep(children, (acc, child) => {
129
- const vnode = vnode$1(child) ? child : createTextElement(child);
130
- acc.push(vnode);
131
- return acc
132
- }
133
- , []);
134
-
135
- const defaultModules = {
136
- attrs: '',
137
- props: '',
138
- class: '',
139
- data: 'dataset',
140
- style: '',
141
- hook: '',
142
- on: ''
143
- };
144
-
145
- const createElementWithModules = (modules) => {
146
- return (sel, data, ...children) => {
147
- if (typeof sel === 'undefined') {
148
- sel = 'UNDEFINED';
149
- console.error('JSX Error: Capitalized HTML element without corresponding factory function. Components with names where the first letter is capital MUST be defined or included at the parent component\'s file scope.');
150
- }
151
- if (fun(sel)) {
152
- if (sel.name === 'Fragment') {
153
- return sel(data || {}, children)
154
- }
155
- data ||= {};
156
- if (!sel.isSygnalComponent) {
157
- const name = sel.componentName || sel.label || sel.name || 'FUNCTION_COMPONENT';
158
- const view = sel;
159
- const { model, intent, hmrActions, context, peers, components, initialState, calculated, storeCalculatedInState, DOMSourceName, stateSourceName, debug } = sel;
160
- const options = { name, view, model, intent, hmrActions, context, peers, components, initialState, calculated, storeCalculatedInState, DOMSourceName, stateSourceName, debug };
161
- data.sygnalOptions = options;
162
- sel = name;
163
- } else {
164
- const factory = sel;
165
- sel = sel.componentName || sel.label || sel.name || 'sygnal-factory';
166
- data.sygnalFactory = factory;
167
- }
168
- }
169
- const text = sanitizeText(children);
170
- return considerSvg({
171
- sel,
172
- data: data ? sanitizeData(data, modules) : {},
173
- children: typeof text !== 'undefined' ? createTextElement(text) : sanitizeChildren(children),
174
- text,
175
- elm: undefined,
176
- key: data ? data.key : undefined
177
- })
178
- }
179
- };
180
-
181
- const createElement = createElementWithModules(defaultModules);
182
-
183
- function vnode(sel, data, children, text, elm) {
184
- const key = data === undefined ? undefined : data.key;
185
- return { sel, data, children, text, elm, key };
186
- }
187
-
188
- /* eslint-disable @typescript-eslint/no-namespace, import/export */
189
- function Fragment(data, ...children) {
190
- const flatChildren = flattenAndFilter(children, []);
191
- if (flatChildren.length === 1 &&
192
- !flatChildren[0].sel &&
193
- flatChildren[0].text) {
194
- // only child is a simple text node, pass as text for a simpler vtree
195
- return vnode(undefined, undefined, undefined, flatChildren[0].text, undefined);
196
- }
197
- else {
198
- return vnode(undefined, data !== null && data !== void 0 ? data : {}, flatChildren, undefined, undefined);
199
- }
200
- }
201
- function flattenAndFilter(children, flattened) {
202
- for (const child of children) {
203
- // filter out falsey children, except 0 since zero can be a valid value e.g inside a chart
204
- if (child !== undefined &&
205
- child !== null &&
206
- child !== false &&
207
- child !== "") {
208
- if (Array.isArray(child)) {
209
- flattenAndFilter(child, flattened);
210
- }
211
- else if (typeof child === "string" ||
212
- typeof child === "number" ||
213
- typeof child === "boolean") {
214
- flattened.push(vnode(undefined, undefined, undefined, String(child), undefined));
215
- }
216
- else {
217
- flattened.push(child);
218
- }
219
- }
220
- }
221
- return flattened;
222
- }
223
-
224
- export { Fragment, createElement as jsxDEV };
@@ -1,4 +0,0 @@
1
- export { Fragment } from './cycle/dom/snabbdom';
2
- export declare function jsx(type: any, props: any, key?: any): any;
3
- export { jsx as jsxs };
4
- export { jsx as jsxDEV };
@@ -1,224 +0,0 @@
1
- import _extend from 'extend';
2
-
3
- const undefinedv = (v) => v === undefined;
4
-
5
- const number = (v) => typeof v === 'number';
6
-
7
- const string = (v) => typeof v === 'string';
8
-
9
- const text = (v) => string(v) || number(v);
10
-
11
- const array = (v) => Array.isArray(v);
12
-
13
- const object = (v) => typeof v === 'object' && v !== null;
14
-
15
- const fun = (v) => typeof v === 'function';
16
-
17
- const vnode$1 = (v) => object(v) && 'sel' in v && 'data' in v && 'children' in v && 'text' in v;
18
-
19
- const svgPropsMap = { svg: 1, circle: 1, ellipse: 1, line: 1, polygon: 1,
20
- polyline: 1, rect: 1, g: 1, path: 1, text: 1 };
21
-
22
- const svg = (v) => v.sel in svgPropsMap;
23
-
24
- // TODO: stop using extend here
25
-
26
- const extend = (...objs) => _extend(true, ...objs);
27
-
28
- const assign = (...objs) => _extend(false, ...objs);
29
-
30
- const reduceDeep = (arr, fn, initial) => {
31
- let result = initial;
32
- for (let i = 0; i < arr.length; i++) {
33
- const value = arr[i];
34
- if (array(value)) {
35
- result = reduceDeep(value, fn, result);
36
- } else {
37
- result = fn(result, value);
38
- }
39
- }
40
- return result
41
- };
42
-
43
- const mapObject = (obj, fn) => Object.keys(obj).map(
44
- (key) => fn(key, obj[key])
45
- ).reduce(
46
- (acc, curr) => extend(acc, curr),
47
- {}
48
- );
49
-
50
- const deepifyKeys = (obj, modules) => mapObject(obj,
51
- (key, val) => {
52
- const dashIndex = key.indexOf('-');
53
- if (dashIndex > -1 && modules[key.slice(0, dashIndex)] !== undefined) {
54
- const moduleData = {
55
- [key.slice(dashIndex + 1)]: val
56
- };
57
- return {
58
- [key.slice(0, dashIndex)]: moduleData
59
- }
60
- }
61
- return { [key]: val }
62
- }
63
- );
64
-
65
- const omit = (key, obj) => mapObject(obj,
66
- (mod, data) => mod !== key ? ({ [mod]: data }) : {}
67
- );
68
-
69
- // Const fnName = (...params) => guard ? default : ...
70
-
71
- const createTextElement = (text$1) => !text(text$1) ? undefined : {
72
- text: text$1,
73
- sel: undefined,
74
- data: undefined,
75
- children: undefined,
76
- elm: undefined,
77
- key: undefined
78
- };
79
-
80
- const considerSvg = (vnode) => !svg(vnode) ? vnode :
81
- assign(vnode,
82
- { data: omit('props', extend(vnode.data,
83
- { ns: 'http://www.w3.org/2000/svg', attrs: omit('className', extend(vnode.data.props,
84
- { class: vnode.data.props ? vnode.data.props.className : undefined }
85
- )) }
86
- )) },
87
- { children: undefinedv(vnode.children) ? undefined :
88
- vnode.children.map((child) => considerSvg(child))
89
- }
90
- );
91
-
92
- const rewrites = {
93
- for: 'attrs',
94
- role: 'attrs',
95
- tabindex: 'attrs',
96
- 'aria-*': 'attrs',
97
- key: null
98
- };
99
-
100
- const rewriteModules = (data, modules) => mapObject(data, (key, val) => {
101
- const inner = { [key]: val };
102
- if (rewrites[key] && modules[rewrites[key]] !== undefined) {
103
- return { [rewrites[key]]: inner }
104
- }
105
- if (rewrites[key] === null) {
106
- return {}
107
- }
108
- const keys = Object.keys(rewrites);
109
- for (let i = 0; i < keys.length; i++) {
110
- const k = keys[i];
111
- if (k.charAt(k.length - 1) === '*' && key.indexOf(k.slice(0, -1)) === 0 && modules[rewrites[k]] !== undefined) {
112
- return { [rewrites[k]]: inner }
113
- }
114
- }
115
- if (modules[key] !== undefined) {
116
- return { [modules[key] ? modules[key] : key]: val }
117
- }
118
- if (modules.props !== undefined) {
119
- return { props: inner }
120
- }
121
- return inner
122
- });
123
-
124
- const sanitizeData = (data, modules) => considerSvg(rewriteModules(deepifyKeys(data, modules), modules));
125
-
126
- const sanitizeText = (children) => children.length > 1 || !text(children[0]) ? undefined : children[0].toString();
127
-
128
- const sanitizeChildren = (children) => reduceDeep(children, (acc, child) => {
129
- const vnode = vnode$1(child) ? child : createTextElement(child);
130
- acc.push(vnode);
131
- return acc
132
- }
133
- , []);
134
-
135
- const defaultModules = {
136
- attrs: '',
137
- props: '',
138
- class: '',
139
- data: 'dataset',
140
- style: '',
141
- hook: '',
142
- on: ''
143
- };
144
-
145
- const createElementWithModules = (modules) => {
146
- return (sel, data, ...children) => {
147
- if (typeof sel === 'undefined') {
148
- sel = 'UNDEFINED';
149
- console.error('JSX Error: Capitalized HTML element without corresponding factory function. Components with names where the first letter is capital MUST be defined or included at the parent component\'s file scope.');
150
- }
151
- if (fun(sel)) {
152
- if (sel.name === 'Fragment') {
153
- return sel(data || {}, children)
154
- }
155
- data ||= {};
156
- if (!sel.isSygnalComponent) {
157
- const name = sel.componentName || sel.label || sel.name || 'FUNCTION_COMPONENT';
158
- const view = sel;
159
- const { model, intent, hmrActions, context, peers, components, initialState, calculated, storeCalculatedInState, DOMSourceName, stateSourceName, debug } = sel;
160
- const options = { name, view, model, intent, hmrActions, context, peers, components, initialState, calculated, storeCalculatedInState, DOMSourceName, stateSourceName, debug };
161
- data.sygnalOptions = options;
162
- sel = name;
163
- } else {
164
- const factory = sel;
165
- sel = sel.componentName || sel.label || sel.name || 'sygnal-factory';
166
- data.sygnalFactory = factory;
167
- }
168
- }
169
- const text = sanitizeText(children);
170
- return considerSvg({
171
- sel,
172
- data: data ? sanitizeData(data, modules) : {},
173
- children: typeof text !== 'undefined' ? createTextElement(text) : sanitizeChildren(children),
174
- text,
175
- elm: undefined,
176
- key: data ? data.key : undefined
177
- })
178
- }
179
- };
180
-
181
- const createElement = createElementWithModules(defaultModules);
182
-
183
- function vnode(sel, data, children, text, elm) {
184
- const key = data === undefined ? undefined : data.key;
185
- return { sel, data, children, text, elm, key };
186
- }
187
-
188
- /* eslint-disable @typescript-eslint/no-namespace, import/export */
189
- function Fragment(data, ...children) {
190
- const flatChildren = flattenAndFilter(children, []);
191
- if (flatChildren.length === 1 &&
192
- !flatChildren[0].sel &&
193
- flatChildren[0].text) {
194
- // only child is a simple text node, pass as text for a simpler vtree
195
- return vnode(undefined, undefined, undefined, flatChildren[0].text, undefined);
196
- }
197
- else {
198
- return vnode(undefined, data !== null && data !== void 0 ? data : {}, flatChildren, undefined, undefined);
199
- }
200
- }
201
- function flattenAndFilter(children, flattened) {
202
- for (const child of children) {
203
- // filter out falsey children, except 0 since zero can be a valid value e.g inside a chart
204
- if (child !== undefined &&
205
- child !== null &&
206
- child !== false &&
207
- child !== "") {
208
- if (Array.isArray(child)) {
209
- flattenAndFilter(child, flattened);
210
- }
211
- else if (typeof child === "string" ||
212
- typeof child === "number" ||
213
- typeof child === "boolean") {
214
- flattened.push(vnode(undefined, undefined, undefined, String(child), undefined));
215
- }
216
- else {
217
- flattened.push(child);
218
- }
219
- }
220
- }
221
- return flattened;
222
- }
223
-
224
- export { Fragment, createElement as jsx };
package/dist/jsx.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export { createElement as jsx } from './pragma/index';
2
- export { Fragment } from "snabbdom";
@@ -1,7 +0,0 @@
1
- export declare const extend: (...objs: any[]) => any;
2
- export declare const assign: (...objs: any[]) => any;
3
- export declare const reduceDeep: <T>(arr: any[], fn: (acc: T, value: any) => T, initial: T) => T;
4
- export declare const mapObject: (obj: Record<string, any>, fn: (key: string, val: any) => any) => any;
5
- export declare const deepifyKeys: (obj: Record<string, any>, modules: Record<string, any>) => any;
6
- export declare const flatifyKeys: (obj: Record<string, any>) => any;
7
- export declare const omit: (key: string, obj: Record<string, any>) => any;
@@ -1,7 +0,0 @@
1
- export declare const createElementWithModules: (modules: Record<string, any>) => (sel: any, data: any, ...children: any[]) => any;
2
- export declare const createElement: (sel: any, data: any, ...children: any[]) => any;
3
- declare const _default: {
4
- createElement: (sel: any, data: any, ...children: any[]) => any;
5
- createElementWithModules: (modules: Record<string, any>) => (sel: any, data: any, ...children: any[]) => any;
6
- };
7
- export default _default;
@@ -1,10 +0,0 @@
1
- export declare const nullv: (v: any) => v is null;
2
- export declare const undefinedv: (v: any) => v is undefined;
3
- export declare const number: (v: any) => v is number;
4
- export declare const string: (v: any) => v is string;
5
- export declare const text: (v: any) => v is string | number;
6
- export declare const array: (v: any) => v is any[];
7
- export declare const object: (v: any) => v is Record<string, any>;
8
- export declare const fun: (v: any) => v is Function;
9
- export declare const vnode: (v: any) => boolean;
10
- export declare const svg: (v: any) => boolean;
@@ -1,7 +0,0 @@
1
- interface SwitchableOptions {
2
- switched?: string | string[];
3
- stateSourceName?: string;
4
- }
5
- export default function switchable(factories: Record<string, (sources: any) => any>, name$: any, initial: string, opts?: SwitchableOptions): (sources: any) => any;
6
- declare const Switchable: (props: any) => import("snabbdom/build/vnode").VNode;
7
- export { Switchable };