marko 5.33.2 → 5.33.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
- };