marko 5.33.2 → 5.33.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.
@@ -1,167 +0,0 @@
1
- "use strict";const initComponentsTag = require("../../core-tags/components/init-components-tag");
2
- const { R_ } = require("../components/ComponentsContext");
3
-
4
- const tagsAPI = require(
5
- // eslint-disable-next-line no-constant-condition
6
- "@marko/runtime-tags/html"
7
- );
8
- const createRenderer = require("../components/renderer");
9
- const defaultCreateOut = require("../createOut");
10
- const dynamicTag5 = require("./dynamic-tag");
11
- const {
12
- patchDynamicTag,
13
- createRenderFn,
14
- fork,
15
- write,
16
- makeSerializable,
17
- register,
18
- writeScope,
19
- nextScopeId,
20
- getRegistryInfo
21
- } = tagsAPI;
22
-
23
- const FN_TO_JSON = function () {
24
- // TODO: this should instead return an object that contains getRegistryInfo
25
- // then in the dom-compat, handle that object to lookup the function in the registry
26
- // (we also need to do this for events)
27
- return getRegistryInfo(this);
28
- };
29
-
30
- const isMarko6 = (fn) => !!fn.bt_;
31
- const isMarko5 = (fn) => !fn.bt_;
32
-
33
- dynamicTag5.bk_ = function tagsToVdom(
34
- tagsRenderer,
35
- renderBody,
36
- args)
37
- {
38
- if (tagsRenderer ? isMarko5(tagsRenderer) : isMarko5(renderBody))
39
- return tagsRenderer;
40
-
41
- if (!tagsRenderer && renderBody) {
42
- renderBody.toJSON = FN_TO_JSON;
43
- }
44
-
45
- return (input, out) =>
46
- TagsCompat(
47
- args ?
48
- { i: args, r: (args) => (tagsRenderer || renderBody)(...args) } :
49
- { i: input, r: tagsRenderer || renderBody },
50
- out
51
- );
52
- };
53
-
54
- const TagsCompatId = "tags-compat";
55
- const TagsCompat = createRenderer(
56
- function (_, out, componentDef, component) {
57
- const input = _.i;
58
- const tagsRenderer = _.r;
59
- const renderFn = createRenderFn(tagsRenderer);
60
- const $global = out.global;
61
- const streamData = $global.streamData = $global.streamData || {};
62
-
63
- $global.serializedGlobals = $global.serializedGlobals || {};
64
- $global.serializedGlobals.componentIdToScopeId = true;
65
- $global.componentIdToScopeId = $global.componentIdToScopeId || {};
66
- $global.componentIdToScopeId[component.id] = streamData.scopeId || 0;
67
- out.bf(out._Y_, component, true);
68
- renderFn(out.beginAsync(), input, {}, streamData);
69
- out.ef();
70
- },
71
- {
72
- t: TagsCompatId,
73
- d: "MARKO_DEBUG"
74
- },
75
- {}
76
- );
77
-
78
- patchDynamicTag(
79
- function getRenderer(tag) {
80
- const renderer = tag._ || tag.renderBody || tag;
81
- if (isMarko6(renderer)) return renderer;
82
-
83
- const renderer5 =
84
- tag._ ||
85
- tag.render ||
86
- tag.renderer && tag.renderer.renderer ||
87
- tag.renderer;
88
- const renderBody5 = tag.renderBody || tag;
89
-
90
- return (input, ...args) => {
91
- const out = defaultCreateOut();
92
- let customEvents;
93
-
94
- out.global.streamData = tagsAPI.$_streamData;
95
-
96
- if (renderer5) {
97
- const normalizedInput = {};
98
-
99
- for (const key in input) {
100
- let value = input[key];
101
- if (key.startsWith("on") && typeof value === "function") {
102
- const c = key[2];
103
- customEvents = customEvents || [];
104
- customEvents.push([
105
- (c === "-" ? "" : c.toLowerCase()) + key.slice(3),
106
- value]
107
- );
108
- value.toJSON = FN_TO_JSON;
109
- } else {
110
- normalizedInput[key] = input[key];
111
- }
112
- }
113
- renderer5(normalizedInput, out);
114
- } else {
115
- renderBody5(out, input, ...args);
116
- }
117
-
118
- const componentsContext = R_(out);
119
- const component = componentsContext.b_[0];
120
- if (component) {
121
- component.r_.U_ = customEvents;
122
- writeScope(nextScopeId(), {
123
- m5c: component.id
124
- });
125
- }
126
-
127
- initComponentsTag({}, out);
128
-
129
- let async;
130
- out.once("finish", (result) => {
131
- if (!async) {
132
- async = false;
133
- write(result.toString());
134
- }
135
- });
136
-
137
- out.end();
138
-
139
- if (async !== false) {
140
- async = true;
141
- fork(out, (result) => {
142
- write(result.toString());
143
- });
144
- }
145
- };
146
- },
147
- function createRenderer(renderFn) {
148
- renderFn.bt_ = true;
149
- return renderFn;
150
- }
151
- );
152
-
153
- function dummyCreate5to6Renderer() {}
154
-
155
- register(dummyCreate5to6Renderer, "@marko/tags-compat-5-to-6");
156
-
157
- exports.serialized5to6 = function serialized5to6(renderer, id) {
158
- const dummyRenderer = () => {};
159
- register(dummyRenderer, id);
160
- return makeSerializable(renderer, (s) =>
161
- s.
162
- value(dummyCreate5to6Renderer).
163
- code("(").
164
- value(dummyRenderer).
165
- code(",!0)")
166
- );
167
- };
@@ -1,265 +0,0 @@
1
- const { ___componentLookup } = require("@internal/components-util");
2
- const { ___getComponentsContext } = require("../components/ComponentsContext");
3
-
4
- const {
5
- prepare,
6
- runEffects,
7
- patchConditionals,
8
- createScopeWithRenderer,
9
- queueEffect,
10
- scopeLookup,
11
- getRegisteredWithScope,
12
- register,
13
- } = require(
14
- // eslint-disable-next-line no-constant-condition
15
- "MARKO_DEBUG" ? "@marko/runtime-tags/debug/dom" : "@marko/runtime-tags/dom",
16
- );
17
- const defineComponent = require("../components/defineComponent");
18
- const { r: registerComponent } = require("../components/registry");
19
- const createRenderer = require("../components/renderer");
20
- const defaultCreateOut = require("../createOut");
21
- const morphdom = require("../vdom/morphdom");
22
- const { ___createFragmentNode } = require("../vdom/morphdom/fragment");
23
- const dynamicTag = require("./dynamic-tag");
24
-
25
- dynamicTag.___runtimeCompat = function tagsToVdom(
26
- tagsRenderer,
27
- renderBody,
28
- args,
29
- ) {
30
- if (
31
- tagsRenderer
32
- ? tagsRenderer.___clone === undefined
33
- : !Array.isArray(renderBody) && renderBody?.___clone === undefined
34
- )
35
- return tagsRenderer;
36
-
37
- return (input, out) =>
38
- TagsCompat({ i: args ? args : input, r: tagsRenderer || renderBody }, out);
39
- };
40
-
41
- const TagsCompatId = "tags-compat";
42
- const TagsCompat = createRenderer(
43
- function (_, out, componentDef, component) {
44
- let existing = false;
45
- const isHydrate =
46
- ___getComponentsContext(out).___globalContext.___isHydrate;
47
- const input = Array.isArray(_.i) ? _.i : [_.i];
48
- const tagsRenderer = resolveRegistered(_.r);
49
- const args = tagsRenderer.___args;
50
-
51
- component.effects = prepare(() => {
52
- if (isHydrate) {
53
- const scopeId = out.global.componentIdToScopeId[component.id];
54
- component.scope = scopeLookup[scopeId];
55
- }
56
- if (!component.scope) {
57
- component.scope = createScopeWithRenderer(
58
- tagsRenderer /* out.global as context */,
59
- );
60
- for (const signal of tagsRenderer.___closureSignals) {
61
- signal(component.scope, true);
62
- }
63
- } else {
64
- args && args(component.scope, input, 1);
65
- existing = true;
66
- }
67
- args && args(component.scope, input);
68
- });
69
- out.bf(out.___assignedKey, component, existing);
70
- if (!existing) {
71
- out.node({
72
- ___actualize: () =>
73
- component.scope.___startNode === component.scope.___endNode
74
- ? component.scope.___startNode
75
- : component.scope.___startNode.parentNode,
76
- });
77
- }
78
- out.ef();
79
- },
80
- {
81
- t: TagsCompatId,
82
- d: "MARKO_DEBUG",
83
- },
84
- {},
85
- );
86
-
87
- registerComponent(TagsCompatId, () => ({
88
- _: TagsCompat,
89
- Component: defineComponent(
90
- {
91
- onMount() {
92
- runEffects(this.effects);
93
- },
94
- onUpdate() {
95
- runEffects(this.effects);
96
- },
97
- },
98
- TagsCompat,
99
- ),
100
- }));
101
-
102
- // (
103
- // nodeAccessor: Accessor,
104
- // dynamicTagAttrs?: IntersectionSignal,
105
- // intersection?: IntersectionSignal,
106
- // valueWithIntersection?: ValueSignal
107
- // )
108
-
109
- const rendererCache = new WeakMap();
110
-
111
- patchConditionals((conditional) => (...args) => {
112
- const signal = conditional(...args);
113
- const hasAttrs = args.length > 1;
114
- return (scope, renderer, clean) => {
115
- return signal(scope, create5to6Renderer(renderer, hasAttrs), clean);
116
- };
117
- });
118
-
119
- function create5to6Renderer(renderer, hasAttrs) {
120
- let newRenderer = renderer;
121
- if (renderer) {
122
- const rendererFromAnywhere =
123
- renderer._ ||
124
- renderer.render ||
125
- (renderer.renderer && renderer.renderer.renderer) ||
126
- renderer.renderer;
127
- const isMarko6 = rendererFromAnywhere
128
- ? rendererFromAnywhere.___clone
129
- : renderer.___clone;
130
-
131
- if (typeof renderer !== "string" && !isMarko6) {
132
- newRenderer = rendererCache.get(renderer);
133
- if (!newRenderer) {
134
- const { Component } = renderer;
135
- if (Component) {
136
- const setCustomEvents = Component.prototype.___setCustomEvents;
137
- Component.prototype.___setCustomEvents = function (
138
- customEvents,
139
- scopeId,
140
- ) {
141
- for (const customEvent of customEvents) {
142
- customEvent[1] = resolveRegistered(customEvent[1]);
143
- }
144
-
145
- setCustomEvents.call(this, customEvents, scopeId);
146
- };
147
- }
148
- newRenderer = {
149
- ___setup(scope) {
150
- if (!hasAttrs) {
151
- renderAndMorph(scope, rendererFromAnywhere, renderer, {});
152
- }
153
- },
154
- ___clone() {
155
- const realFragment = document.createDocumentFragment();
156
- ___createFragmentNode(null, null, realFragment);
157
- return realFragment;
158
- },
159
- ___hasUserEffects: 1,
160
- ___args(scope, input, clean) {
161
- if (clean) return;
162
- renderAndMorph(scope, rendererFromAnywhere, renderer, input);
163
- },
164
- };
165
- rendererCache.set(renderer, newRenderer);
166
- }
167
- }
168
- }
169
- return newRenderer;
170
- }
171
-
172
- register("@marko/tags-compat-5-to-6", create5to6Renderer);
173
-
174
- function renderAndMorph(scope, renderer, renderBody, input) {
175
- const out = defaultCreateOut();
176
- let rootNode = scope.___startNode.fragment;
177
- if (!rootNode) {
178
- const component = (scope.marko5Component = ___componentLookup[scope.m5c]);
179
- rootNode = component.___rootNode;
180
- scope.___startNode = rootNode.startNode;
181
- scope.___endNode = rootNode.endNode;
182
- }
183
- const host = scope.___startNode;
184
- const existingComponent = scope.marko5Component;
185
- const componentsContext = ___getComponentsContext(out);
186
- const globalComponentsContext = componentsContext.___globalContext;
187
- let customEvents;
188
- globalComponentsContext.___rerenderComponent = existingComponent;
189
- out.sync();
190
- if (renderer) {
191
- const [rawInput] = input;
192
- const normalizedInput = {};
193
-
194
- for (const key in rawInput) {
195
- let value = rawInput[key];
196
- if (key.startsWith("on")) {
197
- const c = key[2];
198
- customEvents = customEvents || {};
199
- customEvents[(c === "-" ? "" : c.toLowerCase()) + key.slice(3)] = [
200
- value,
201
- ];
202
- } else {
203
- normalizedInput[key] = rawInput[key];
204
- }
205
- }
206
-
207
- renderer(normalizedInput, out);
208
- } else {
209
- RenderBodyComponent({ renderBody, args: input }, out);
210
- }
211
-
212
- queueEffect(scope, () => {
213
- const targetNode = out.___getOutput().___firstChild;
214
- morphdom(rootNode, targetNode, host, componentsContext);
215
- const componentDefs = componentsContext.___initComponents(
216
- getRootNode(host),
217
- );
218
- const component = componentDefs[0].___component;
219
- component.___rootNode = rootNode;
220
- component.___input = input[0];
221
- component.___customEvents = customEvents;
222
- scope.marko5Component = component;
223
- });
224
- }
225
-
226
- function getRootNode(el) {
227
- var cur = el;
228
- while (cur.parentNode) cur = cur.parentNode;
229
- return cur;
230
- }
231
-
232
- const RenderBodyComponentId = "renderbody-renderer";
233
- const RenderBodyComponent = createRenderer(
234
- function (input, out, _componentDef) {
235
- dynamicTag(
236
- out,
237
- input.renderBody,
238
- null,
239
- null,
240
- input.args,
241
- null,
242
- _componentDef,
243
- "0",
244
- );
245
- },
246
- {
247
- t: RenderBodyComponentId,
248
- i: true,
249
- d: "MARKO_DEBUG",
250
- },
251
- {},
252
- );
253
-
254
- registerComponent(RenderBodyComponentId, () => ({
255
- _: RenderBodyComponent,
256
- Component: defineComponent({}, RenderBodyComponent),
257
- }));
258
-
259
- function resolveRegistered(renderer) {
260
- if (!Array.isArray(renderer)) return renderer;
261
-
262
- const [registerId, scopeId] = renderer;
263
- const scope = scopeLookup[scopeId];
264
- return getRegisteredWithScope(registerId, scope);
265
- }
@@ -1,167 +0,0 @@
1
- const initComponentsTag = require("../../core-tags/components/init-components-tag");
2
- const { ___getComponentsContext } = require("../components/ComponentsContext");
3
-
4
- const tagsAPI = require(
5
- // eslint-disable-next-line no-constant-condition
6
- "MARKO_DEBUG" ? "@marko/runtime-tags/debug/html" : "@marko/runtime-tags/html",
7
- );
8
- const createRenderer = require("../components/renderer");
9
- const defaultCreateOut = require("../createOut");
10
- const dynamicTag5 = require("./dynamic-tag");
11
- const {
12
- patchDynamicTag,
13
- createRenderFn,
14
- fork,
15
- write,
16
- makeSerializable,
17
- register,
18
- writeScope,
19
- nextScopeId,
20
- getRegistryInfo,
21
- } = tagsAPI;
22
-
23
- const FN_TO_JSON = function () {
24
- // TODO: this should instead return an object that contains getRegistryInfo
25
- // then in the dom-compat, handle that object to lookup the function in the registry
26
- // (we also need to do this for events)
27
- return getRegistryInfo(this);
28
- };
29
-
30
- const isMarko6 = (fn) => !!fn.___isTagsAPI;
31
- const isMarko5 = (fn) => !fn.___isTagsAPI;
32
-
33
- dynamicTag5.___runtimeCompat = function tagsToVdom(
34
- tagsRenderer,
35
- renderBody,
36
- args,
37
- ) {
38
- if (tagsRenderer ? isMarko5(tagsRenderer) : isMarko5(renderBody))
39
- return tagsRenderer;
40
-
41
- if (!tagsRenderer && renderBody) {
42
- renderBody.toJSON = FN_TO_JSON;
43
- }
44
-
45
- return (input, out) =>
46
- TagsCompat(
47
- args
48
- ? { i: args, r: (args) => (tagsRenderer || renderBody)(...args) }
49
- : { i: input, r: tagsRenderer || renderBody },
50
- out,
51
- );
52
- };
53
-
54
- const TagsCompatId = "tags-compat";
55
- const TagsCompat = createRenderer(
56
- function (_, out, componentDef, component) {
57
- const input = _.i;
58
- const tagsRenderer = _.r;
59
- const renderFn = createRenderFn(tagsRenderer);
60
- const $global = out.global;
61
- const streamData = ($global.streamData = $global.streamData || {});
62
-
63
- $global.serializedGlobals = $global.serializedGlobals || {};
64
- $global.serializedGlobals.componentIdToScopeId = true;
65
- $global.componentIdToScopeId = $global.componentIdToScopeId || {};
66
- $global.componentIdToScopeId[component.id] = streamData.scopeId || 0;
67
- out.bf(out.___assignedKey, component, true);
68
- renderFn(out.beginAsync(), input, {}, streamData);
69
- out.ef();
70
- },
71
- {
72
- t: TagsCompatId,
73
- d: "MARKO_DEBUG",
74
- },
75
- {},
76
- );
77
-
78
- patchDynamicTag(
79
- function getRenderer(tag) {
80
- const renderer = tag._ || tag.renderBody || tag;
81
- if (isMarko6(renderer)) return renderer;
82
-
83
- const renderer5 =
84
- tag._ ||
85
- tag.render ||
86
- (tag.renderer && tag.renderer.renderer) ||
87
- tag.renderer;
88
- const renderBody5 = tag.renderBody || tag;
89
-
90
- return (input, ...args) => {
91
- const out = defaultCreateOut();
92
- let customEvents;
93
-
94
- out.global.streamData = tagsAPI.$_streamData;
95
-
96
- if (renderer5) {
97
- const normalizedInput = {};
98
-
99
- for (const key in input) {
100
- let value = input[key];
101
- if (key.startsWith("on") && typeof value === "function") {
102
- const c = key[2];
103
- customEvents = customEvents || [];
104
- customEvents.push([
105
- (c === "-" ? "" : c.toLowerCase()) + key.slice(3),
106
- value,
107
- ]);
108
- value.toJSON = FN_TO_JSON;
109
- } else {
110
- normalizedInput[key] = input[key];
111
- }
112
- }
113
- renderer5(normalizedInput, out);
114
- } else {
115
- renderBody5(out, input, ...args);
116
- }
117
-
118
- const componentsContext = ___getComponentsContext(out);
119
- const component = componentsContext.___components[0];
120
- if (component) {
121
- component.___component.___customEvents = customEvents;
122
- writeScope(nextScopeId(), {
123
- m5c: component.id,
124
- });
125
- }
126
-
127
- initComponentsTag({}, out);
128
-
129
- let async;
130
- out.once("finish", (result) => {
131
- if (!async) {
132
- async = false;
133
- write(result.toString());
134
- }
135
- });
136
-
137
- out.end();
138
-
139
- if (async !== false) {
140
- async = true;
141
- fork(out, (result) => {
142
- write(result.toString());
143
- });
144
- }
145
- };
146
- },
147
- function createRenderer(renderFn) {
148
- renderFn.___isTagsAPI = true;
149
- return renderFn;
150
- },
151
- );
152
-
153
- function dummyCreate5to6Renderer() {}
154
-
155
- register(dummyCreate5to6Renderer, "@marko/tags-compat-5-to-6");
156
-
157
- exports.serialized5to6 = function serialized5to6(renderer, id) {
158
- const dummyRenderer = () => {};
159
- register(dummyRenderer, id);
160
- return makeSerializable(renderer, (s) =>
161
- s
162
- .value(dummyCreate5to6Renderer)
163
- .code("(")
164
- .value(dummyRenderer)
165
- .code(",!0)"),
166
- );
167
- };