@marko/translator-default 5.29.2 → 5.30.0
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/placeholder/index[html].js +10 -5
- package/dist/placeholder/index[vdom].js +4 -3
- package/dist/tag/attribute/directives/class.js +19 -17
- package/dist/tag/attribute/directives/no-update-body-if.js +3 -0
- package/dist/tag/attribute/directives/no-update-body.js +3 -0
- package/dist/tag/attribute/directives/no-update-if.js +3 -0
- package/dist/tag/attribute/directives/no-update.js +3 -0
- package/dist/tag/attribute/directives/style.js +19 -13
- package/dist/tag/dynamic-tag.js +3 -1
- package/dist/tag/native-tag[html]/attributes.js +83 -72
- package/dist/tag/native-tag[html]/index.js +3 -1
- package/dist/tag/native-tag[vdom]/attributes.js +104 -0
- package/dist/tag/native-tag[vdom]/index.js +7 -46
- package/dist/tag/util.js +37 -23
- package/dist/taglib/core/index.js +2 -1
- package/dist/taglib/core/translate-await.js +3 -1
- package/dist/taglib/core/translate-for.js +5 -1
- package/dist/util/add-dependencies.js +72 -3
- package/dist/util/optimize-vdom-create.js +27 -23
- package/package.json +29 -26
@@ -1,5 +1,10 @@
|
|
1
1
|
"use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.default = _default;var _compiler = require("@marko/compiler");
|
2
2
|
var _babelUtils = require("@marko/babel-utils");
|
3
|
+
|
4
|
+
|
5
|
+
|
6
|
+
|
7
|
+
|
3
8
|
var _toString = _interopRequireDefault(require("marko/src/runtime/helpers/to-string"));
|
4
9
|
var _escapeXml = require("marko/src/runtime/html/helpers/escape-xml");
|
5
10
|
var _escapeScriptPlaceholder = _interopRequireDefault(require("marko/src/runtime/html/helpers/escape-script-placeholder"));
|
@@ -31,15 +36,15 @@ function _default(path) {
|
|
31
36
|
node,
|
32
37
|
hub: { file }
|
33
38
|
} = path;
|
34
|
-
const
|
39
|
+
const computed = (0, _babelUtils.computeNode)(node.value);
|
35
40
|
let { escape, value } = node;
|
36
41
|
|
37
42
|
if (escape) {
|
38
43
|
const tagName = findParentTagName(path);
|
39
44
|
const escapeType = ESCAPE_TYPES[tagName] || ESCAPE_TYPES.html;
|
40
45
|
|
41
|
-
value =
|
42
|
-
_compiler.types.stringLiteral(escapeType.fn(computed)) :
|
46
|
+
value = computed ?
|
47
|
+
_compiler.types.stringLiteral(escapeType.fn(computed.value)) :
|
43
48
|
_compiler.types.callExpression(
|
44
49
|
escapeType.name ?
|
45
50
|
(0, _babelUtils.importNamed)(
|
@@ -52,8 +57,8 @@ function _default(path) {
|
|
52
57
|
[value]);
|
53
58
|
|
54
59
|
} else {
|
55
|
-
value =
|
56
|
-
_compiler.types.stringLiteral((0, _toString.default)(computed)) :
|
60
|
+
value = computed ?
|
61
|
+
_compiler.types.stringLiteral((0, _toString.default)(computed.value)) :
|
57
62
|
_compiler.types.callExpression(
|
58
63
|
(0, _babelUtils.importDefault)(
|
59
64
|
file,
|
@@ -1,13 +1,14 @@
|
|
1
|
-
"use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.default = _default;var
|
1
|
+
"use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.default = _default;var _babelUtils = require("@marko/babel-utils");
|
2
|
+
var _vdomOutWrite = _interopRequireDefault(require("../util/vdom-out-write"));
|
2
3
|
var _withPreviousLocation = _interopRequireDefault(require("../util/with-previous-location"));
|
3
4
|
|
4
5
|
function _default(path) {
|
5
6
|
const { node } = path;
|
6
7
|
const { escape, value } = node;
|
7
8
|
const method = escape ? "t" : "h";
|
8
|
-
const
|
9
|
+
const computed = (0, _babelUtils.computeNode)(value);
|
9
10
|
|
10
|
-
if (
|
11
|
+
if (computed && computed.value == null) {
|
11
12
|
path.remove();
|
12
13
|
} else {
|
13
14
|
path.replaceWith(
|
@@ -9,27 +9,29 @@ var _withPreviousLocation = _interopRequireDefault(require("../../../util/with-p
|
|
9
9
|
hub: { file }
|
10
10
|
} = tag;
|
11
11
|
if (!(0, _babelUtils.isNativeTag)(tag)) return;
|
12
|
-
if (value.isStringLiteral()) return;
|
13
12
|
|
14
|
-
const
|
13
|
+
const computed = (0, _babelUtils.computeNode)(value.node);
|
14
|
+
if (computed) {
|
15
|
+
const str = (0, _classValue.default)(computed.value);
|
16
|
+
if (str) {
|
17
|
+
value.replaceWith(_compiler.types.stringLiteral(str));
|
18
|
+
} else {
|
19
|
+
value.parentPath.remove();
|
20
|
+
}
|
21
|
+
} else {
|
22
|
+
value.replaceWith(
|
23
|
+
(0, _withPreviousLocation.default)(
|
24
|
+
_compiler.types.callExpression(
|
25
|
+
(0, _babelUtils.importDefault)(
|
26
|
+
file,
|
27
|
+
"marko/src/runtime/helpers/class-value.js",
|
28
|
+
"marko_class_merge"),
|
15
29
|
|
16
|
-
|
17
|
-
value.replaceWith(
|
18
|
-
confident ?
|
19
|
-
s ?
|
20
|
-
_compiler.types.stringLiteral(s) :
|
21
|
-
_compiler.types.nullLiteral() :
|
22
|
-
(0, _withPreviousLocation.default)(
|
23
|
-
_compiler.types.callExpression(
|
24
|
-
(0, _babelUtils.importDefault)(
|
25
|
-
file,
|
26
|
-
"marko/src/runtime/helpers/class-value.js",
|
27
|
-
"marko_class_merge"),
|
30
|
+
[value.node]),
|
28
31
|
|
29
|
-
|
30
|
-
|
31
|
-
value.node));
|
32
|
+
value.node));
|
32
33
|
|
33
34
|
|
35
|
+
}
|
34
36
|
}
|
35
37
|
};exports.default = _default;
|
@@ -1,6 +1,9 @@
|
|
1
1
|
"use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.default = void 0;var _noUpdate = _interopRequireDefault(require("./no-update"));var _default =
|
2
2
|
|
3
3
|
{
|
4
|
+
enter(tag) {
|
5
|
+
tag.node.isPreserved = true;
|
6
|
+
},
|
4
7
|
exit(tag, attr, value) {
|
5
8
|
_noUpdate.default.exit(tag, attr, value, { bodyOnly: true });
|
6
9
|
}
|
@@ -8,24 +8,30 @@ var _withPreviousLocation = _interopRequireDefault(require("../../../util/with-p
|
|
8
8
|
const {
|
9
9
|
hub: { file }
|
10
10
|
} = tag;
|
11
|
-
if (value.isStringLiteral()) return;
|
12
11
|
if (!(0, _babelUtils.isNativeTag)(tag)) return;
|
13
12
|
|
14
|
-
const
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
13
|
+
const computed = (0, _babelUtils.computeNode)(value.node);
|
14
|
+
if (computed) {
|
15
|
+
const str = (0, _styleValue.default)(computed.value);
|
16
|
+
if (str) {
|
17
|
+
value.replaceWith(_compiler.types.stringLiteral(str));
|
18
|
+
} else {
|
19
|
+
value.parentPath.remove();
|
20
|
+
}
|
21
|
+
} else {
|
22
|
+
value.replaceWith(
|
23
|
+
(0, _withPreviousLocation.default)(
|
24
|
+
_compiler.types.callExpression(
|
25
|
+
(0, _babelUtils.importDefault)(
|
26
|
+
file,
|
27
|
+
"marko/src/runtime/helpers/style-value.js",
|
28
|
+
"marko_style_merge"),
|
24
29
|
|
25
|
-
|
30
|
+
[value.node]),
|
26
31
|
|
27
|
-
|
32
|
+
value.node));
|
28
33
|
|
29
34
|
|
35
|
+
}
|
30
36
|
}
|
31
37
|
};exports.default = _default;
|
package/dist/tag/dynamic-tag.js
CHANGED
@@ -18,7 +18,9 @@ function _default(path) {
|
|
18
18
|
tagProperties.push(
|
19
19
|
_compiler.types.objectProperty(
|
20
20
|
_compiler.types.identifier("pa"),
|
21
|
-
_compiler.types.arrayExpression(
|
21
|
+
_compiler.types.arrayExpression(
|
22
|
+
node.preserveAttrs.map((name) => _compiler.types.stringLiteral(name)))));
|
23
|
+
|
22
24
|
|
23
25
|
|
24
26
|
}
|
@@ -4,105 +4,116 @@ var _attr = _interopRequireDefault(require("marko/src/runtime/html/helpers/attr"
|
|
4
4
|
var _util = require("../util");
|
5
5
|
|
6
6
|
function _default(path, attrs) {
|
7
|
-
if (!attrs.length) return _compiler.types.stringLiteral("");
|
8
|
-
|
9
7
|
const len = attrs.length;
|
10
8
|
if (len === 0) return _compiler.types.stringLiteral("");
|
9
|
+
if (len === 1 && attrs[0].node.type === "MarkoSpreadAttribute") {
|
10
|
+
return _compiler.types.callExpression(
|
11
|
+
(0, _babelUtils.importDefault)(
|
12
|
+
path.hub.file,
|
13
|
+
"marko/src/runtime/html/helpers/attrs.js",
|
14
|
+
"marko_attrs"),
|
15
|
+
|
16
|
+
[attrs[0].node.value]);
|
17
|
+
|
18
|
+
}
|
19
|
+
|
20
|
+
if (attrs.some((attr) => attr.node.type === "MarkoSpreadAttribute")) {
|
21
|
+
const attrsObjects = [];
|
22
|
+
let props;
|
11
23
|
|
12
|
-
if (attrs.some((attr) => !attr.node.name)) {
|
13
|
-
const attrsObject = _compiler.types.objectExpression([]);
|
14
24
|
for (let i = 0; i < len; i++) {
|
25
|
+
const attr = attrs[i];
|
15
26
|
const {
|
16
27
|
node: { name, value }
|
17
|
-
} =
|
28
|
+
} = attr;
|
18
29
|
|
19
30
|
if (name) {
|
20
|
-
|
21
|
-
_compiler.types.objectProperty(
|
22
|
-
|
31
|
+
const computed = (0, _util.evaluateAttr)(attr);
|
32
|
+
const prop = _compiler.types.objectProperty(
|
33
|
+
_compiler.types.stringLiteral(name),
|
34
|
+
(computed == null ? void 0 : computed.value) !== undefined ?
|
35
|
+
_compiler.types.stringLiteral(computed.value) :
|
36
|
+
value);
|
37
|
+
|
38
|
+
if (props) {
|
39
|
+
props.push(prop);
|
40
|
+
} else {
|
41
|
+
attrsObjects.push(_compiler.types.objectExpression(props = [prop]));
|
42
|
+
}
|
23
43
|
} else {
|
24
|
-
|
44
|
+
attrsObjects.push(value);
|
45
|
+
props = undefined;
|
25
46
|
}
|
26
47
|
}
|
27
48
|
|
28
49
|
return _compiler.types.callExpression(
|
29
50
|
(0, _babelUtils.importDefault)(
|
30
51
|
path.hub.file,
|
31
|
-
"marko/src/runtime/html/helpers/attrs.js",
|
32
|
-
"
|
33
|
-
|
34
|
-
[
|
35
|
-
attrsObject.properties.length === 1 &&
|
36
|
-
_compiler.types.isSpreadElement(attrsObject.properties[0]) ?
|
37
|
-
attrsObject.properties[0].argument :
|
38
|
-
attrsObject]);
|
52
|
+
"marko/src/runtime/html/helpers/merge-attrs.js",
|
53
|
+
"marko_merge_attrs"),
|
39
54
|
|
55
|
+
attrsObjects);
|
40
56
|
|
41
|
-
}
|
42
|
-
const file = path.hub.file;
|
43
|
-
const quasis = [];
|
44
|
-
const expressions = [];
|
45
|
-
const attrValues = new Map();
|
46
|
-
let curString = "";
|
47
|
-
|
48
|
-
// Remove duplicate attrs so last one wins.
|
49
|
-
for (let i = len; i--;) {
|
50
|
-
const attr = attrs[i];
|
51
|
-
const { name, value } = attr.node;
|
52
|
-
if (attrValues.has(name)) continue;
|
53
|
-
const { confident, computed } = (0, _util.evaluateAttr)(attr);
|
54
|
-
attrValues.set(name, {
|
55
|
-
confident,
|
56
|
-
computed,
|
57
|
-
value
|
58
|
-
});
|
59
|
-
}
|
57
|
+
}
|
60
58
|
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
59
|
+
const file = path.hub.file;
|
60
|
+
const quasis = [];
|
61
|
+
const expressions = [];
|
62
|
+
const attrValues = new Map();
|
63
|
+
let curString = "";
|
64
|
+
|
65
|
+
// Remove duplicate attrs so last one wins.
|
66
|
+
for (let i = len; i--;) {
|
67
|
+
const attr = attrs[i];
|
68
|
+
const { name, value } = attr.node;
|
69
|
+
if (attrValues.has(name)) continue;
|
70
|
+
const computed = (0, _util.evaluateAttr)(attr);
|
71
|
+
attrValues.set(
|
72
|
+
name,
|
73
|
+
computed ?
|
74
|
+
{
|
75
|
+
confident: true,
|
76
|
+
computed: computed.value,
|
77
|
+
value
|
78
|
+
} :
|
79
|
+
{
|
80
|
+
confident: false,
|
81
|
+
computed: undefined,
|
82
|
+
value
|
83
|
+
});
|
68
84
|
|
69
|
-
|
70
|
-
} else {
|
71
|
-
quasis.push(curString);
|
72
|
-
curString = "";
|
73
|
-
expressions.push(
|
74
|
-
_compiler.types.callExpression(
|
75
|
-
(0, _babelUtils.importDefault)(
|
76
|
-
file,
|
77
|
-
"marko/src/runtime/html/helpers/attr.js",
|
78
|
-
"marko_attr"),
|
85
|
+
}
|
79
86
|
|
80
|
-
|
87
|
+
for (const [name, { confident, computed, value }] of [
|
88
|
+
...attrValues].
|
89
|
+
reverse()) {
|
90
|
+
if (confident) {
|
91
|
+
if (computed == null || computed === false) {
|
92
|
+
continue;
|
93
|
+
}
|
81
94
|
|
95
|
+
curString += (0, _attr.default)(name, computed);
|
96
|
+
} else {
|
97
|
+
quasis.push(curString);
|
98
|
+
curString = "";
|
99
|
+
expressions.push(
|
100
|
+
_compiler.types.callExpression(
|
101
|
+
(0, _babelUtils.importDefault)(
|
102
|
+
file,
|
103
|
+
"marko/src/runtime/html/helpers/attr.js",
|
104
|
+
"marko_attr"),
|
82
105
|
|
83
|
-
|
84
|
-
}
|
106
|
+
[_compiler.types.stringLiteral(name), value]));
|
85
107
|
|
86
|
-
quasis.push(curString);
|
87
108
|
|
88
|
-
if (expressions.length) {
|
89
|
-
return (0, _babelUtils.normalizeTemplateString)(quasis, ...expressions);
|
90
|
-
} else {
|
91
|
-
return _compiler.types.stringLiteral(quasis.join(""));
|
92
109
|
}
|
93
110
|
}
|
94
|
-
}
|
95
111
|
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
mergeSpread(properties, prop.argument);
|
101
|
-
} else {
|
102
|
-
properties.push(prop);
|
103
|
-
}
|
104
|
-
}
|
112
|
+
quasis.push(curString);
|
113
|
+
|
114
|
+
if (expressions.length) {
|
115
|
+
return (0, _babelUtils.normalizeTemplateString)(quasis, ...expressions);
|
105
116
|
} else {
|
106
|
-
|
117
|
+
return _compiler.types.stringLiteral(quasis.join(""));
|
107
118
|
}
|
108
119
|
}
|
@@ -75,7 +75,9 @@ function _default(path, isNullable) {
|
|
75
75
|
tagProperties.push(
|
76
76
|
_compiler.types.objectProperty(
|
77
77
|
_compiler.types.identifier("pa"),
|
78
|
-
_compiler.types.arrayExpression(
|
78
|
+
_compiler.types.arrayExpression(
|
79
|
+
node.preserveAttrs.map((name) => _compiler.types.stringLiteral(name)))));
|
80
|
+
|
79
81
|
|
80
82
|
|
81
83
|
}
|
@@ -0,0 +1,104 @@
|
|
1
|
+
"use strict";exports.__esModule = true;exports.default = _default;var _compiler = require("@marko/compiler");
|
2
|
+
var _babelUtils = require("@marko/babel-utils");
|
3
|
+
var _util = require("../util");
|
4
|
+
|
5
|
+
function _default(path, attrs) {
|
6
|
+
const len = attrs.length;
|
7
|
+
if (len === 0) return _compiler.types.nullLiteral();
|
8
|
+
if (len === 1 && attrs[0].node.type === "MarkoSpreadAttribute") {
|
9
|
+
return _compiler.types.callExpression(
|
10
|
+
(0, _babelUtils.importDefault)(
|
11
|
+
path.hub.file,
|
12
|
+
"marko/src/runtime/vdom/helpers/attrs.js",
|
13
|
+
"marko_attrs"),
|
14
|
+
|
15
|
+
[attrs[0].node.value]);
|
16
|
+
|
17
|
+
}
|
18
|
+
|
19
|
+
if (attrs.some((attr) => attr.node.type === "MarkoSpreadAttribute")) {
|
20
|
+
const attrsObjects = [];
|
21
|
+
let props;
|
22
|
+
|
23
|
+
for (let i = 0; i < len; i++) {
|
24
|
+
const attr = attrs[i];
|
25
|
+
const {
|
26
|
+
node: { name, value }
|
27
|
+
} = attr;
|
28
|
+
|
29
|
+
if (name) {
|
30
|
+
const computed = (0, _util.evaluateAttr)(attr);
|
31
|
+
const prop = _compiler.types.objectProperty(
|
32
|
+
_compiler.types.stringLiteral(name),
|
33
|
+
(computed == null ? void 0 : computed.value) !== undefined ?
|
34
|
+
_compiler.types.stringLiteral(computed.value) :
|
35
|
+
value);
|
36
|
+
|
37
|
+
if (props) {
|
38
|
+
props.push(prop);
|
39
|
+
} else {
|
40
|
+
attrsObjects.push(_compiler.types.objectExpression(props = [prop]));
|
41
|
+
}
|
42
|
+
} else {
|
43
|
+
attrsObjects.push(value);
|
44
|
+
props = undefined;
|
45
|
+
}
|
46
|
+
}
|
47
|
+
|
48
|
+
return _compiler.types.callExpression(
|
49
|
+
(0, _babelUtils.importDefault)(
|
50
|
+
path.hub.file,
|
51
|
+
"marko/src/runtime/vdom/helpers/merge-attrs.js",
|
52
|
+
"marko_merge_attrs"),
|
53
|
+
|
54
|
+
attrsObjects);
|
55
|
+
|
56
|
+
}
|
57
|
+
|
58
|
+
const attrValues = new Map();
|
59
|
+
const props = [];
|
60
|
+
|
61
|
+
// Remove duplicate attrs so last one wins.
|
62
|
+
for (let i = len; i--;) {
|
63
|
+
const attr = attrs[i];
|
64
|
+
const { name, value } = attr.node;
|
65
|
+
if (attrValues.has(name)) continue;
|
66
|
+
const computed = (0, _util.evaluateAttr)(attr);
|
67
|
+
attrValues.set(
|
68
|
+
name,
|
69
|
+
computed ?
|
70
|
+
{
|
71
|
+
confident: true,
|
72
|
+
computed: computed.value,
|
73
|
+
value
|
74
|
+
} :
|
75
|
+
{
|
76
|
+
confident: false,
|
77
|
+
computed: undefined,
|
78
|
+
value
|
79
|
+
});
|
80
|
+
|
81
|
+
}
|
82
|
+
|
83
|
+
for (const [name, { confident, computed, value }] of [
|
84
|
+
...attrValues].
|
85
|
+
reverse()) {
|
86
|
+
if (confident) {
|
87
|
+
if (computed == null || computed === false) {
|
88
|
+
continue;
|
89
|
+
}
|
90
|
+
|
91
|
+
props.push(
|
92
|
+
_compiler.types.objectProperty(_compiler.types.stringLiteral(name), _compiler.types.stringLiteral(computed)));
|
93
|
+
|
94
|
+
} else {
|
95
|
+
props.push(_compiler.types.objectProperty(_compiler.types.stringLiteral(name), value));
|
96
|
+
}
|
97
|
+
}
|
98
|
+
|
99
|
+
if (props.length) {
|
100
|
+
return _compiler.types.objectExpression(props);
|
101
|
+
}
|
102
|
+
|
103
|
+
return _compiler.types.nullLiteral();
|
104
|
+
}
|
@@ -1,12 +1,8 @@
|
|
1
1
|
"use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.default = _default;exports.tagArguments = tagArguments;var _compiler = require("@marko/compiler");
|
2
2
|
var _vdomOutWrite = _interopRequireDefault(require("../../util/vdom-out-write"));
|
3
3
|
var FLAGS = _interopRequireWildcard(require("../../util/runtime-flags"));
|
4
|
-
var _util = require("../util");
|
5
4
|
var _babelUtils = require("@marko/babel-utils");
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
5
|
+
var _attributes = _interopRequireDefault(require("./attributes"));
|
10
6
|
var _withPreviousLocation = _interopRequireDefault(require("../../util/with-previous-location"));function _getRequireWildcardCache(nodeInterop) {if (typeof WeakMap !== "function") return null;var cacheBabelInterop = new WeakMap();var cacheNodeInterop = new WeakMap();return (_getRequireWildcardCache = function (nodeInterop) {return nodeInterop ? cacheNodeInterop : cacheBabelInterop;})(nodeInterop);}function _interopRequireWildcard(obj, nodeInterop) {if (!nodeInterop && obj && obj.__esModule) {return obj;}if (obj === null || typeof obj !== "object" && typeof obj !== "function") {return { default: obj };}var cache = _getRequireWildcardCache(nodeInterop);if (cache && cache.has(obj)) {return cache.get(obj);}var newObj = {};var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;for (var key in obj) {if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;if (desc && (desc.get || desc.set)) {Object.defineProperty(newObj, key, desc);} else {newObj[key] = obj[key];}}}newObj.default = obj;if (cache) {cache.set(obj, newObj);}return newObj;}
|
11
7
|
|
12
8
|
const SIMPLE_ATTRS = ["id", "class", "style"];
|
@@ -30,48 +26,11 @@ function tagArguments(path, isStatic) {
|
|
30
26
|
handlers
|
31
27
|
} = node;
|
32
28
|
const tagProperties = path.node.extra && path.node.extra.properties || [];
|
33
|
-
const
|
34
|
-
const seen = new Set();
|
35
|
-
const len = attrs.length;
|
36
|
-
const hasSpread = attrs.some((attr) => !attr.node.name);
|
29
|
+
const attrsObj = (0, _attributes.default)(path, path.get("attributes"));
|
37
30
|
let runtimeFlags = 0;
|
38
31
|
|
39
|
-
|
40
|
-
|
41
|
-
const { name } = attr.node;
|
42
|
-
if (seen.has(name)) {
|
43
|
-
if (!hasSpread) attr.remove();
|
44
|
-
}
|
45
|
-
|
46
|
-
seen.add(name);
|
47
|
-
const { confident, computed } = (0, _util.evaluateAttr)(attr);
|
48
|
-
|
49
|
-
if (confident) {
|
50
|
-
if (computed == null || computed === false) {
|
51
|
-
if (!hasSpread) attr.remove();
|
52
|
-
} else {
|
53
|
-
attr.set("value", _compiler.types.stringLiteral(computed));
|
54
|
-
}
|
55
|
-
}
|
56
|
-
}
|
57
|
-
|
58
|
-
let attrsObj = (0, _util.getAttrs)(path, true, true);
|
59
|
-
|
60
|
-
if (!_compiler.types.isNullLiteral(attrsObj)) {
|
61
|
-
if (
|
62
|
-
!_compiler.types.isObjectExpression(attrsObj) ||
|
63
|
-
attrsObj.properties.some(_compiler.types.isSpreadElement))
|
64
|
-
{
|
65
|
-
runtimeFlags |= FLAGS.SPREAD_ATTRS;
|
66
|
-
attrsObj = _compiler.types.callExpression(
|
67
|
-
(0, _babelUtils.importDefault)(
|
68
|
-
file,
|
69
|
-
"marko/src/runtime/vdom/helpers/attrs.js",
|
70
|
-
"marko_attrs"),
|
71
|
-
|
72
|
-
[attrsObj]);
|
73
|
-
|
74
|
-
}
|
32
|
+
if (!_compiler.types.isNullLiteral(attrsObj) && !_compiler.types.isObjectExpression(attrsObj)) {
|
33
|
+
runtimeFlags |= FLAGS.SPREAD_ATTRS;
|
75
34
|
}
|
76
35
|
|
77
36
|
const writeArgs = [
|
@@ -90,7 +49,9 @@ function tagArguments(path, isStatic) {
|
|
90
49
|
tagProperties.push(
|
91
50
|
_compiler.types.objectProperty(
|
92
51
|
_compiler.types.identifier("pa"),
|
93
|
-
_compiler.types.arrayExpression(
|
52
|
+
_compiler.types.arrayExpression(
|
53
|
+
node.preserveAttrs.map((name) => _compiler.types.stringLiteral(name)))));
|
54
|
+
|
94
55
|
|
95
56
|
|
96
57
|
}
|
package/dist/tag/util.js
CHANGED
@@ -1,5 +1,7 @@
|
|
1
|
-
"use strict";exports.__esModule = true;exports.buildEventHandlerArray = buildEventHandlerArray;exports.evaluateAttr = evaluateAttr;exports.getAttrs = getAttrs;var _compiler = require("@marko/compiler");
|
1
|
+
"use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.buildEventHandlerArray = buildEventHandlerArray;exports.evaluateAttr = evaluateAttr;exports.getAttrs = getAttrs;var _compiler = require("@marko/compiler");
|
2
2
|
var _babelUtils = require("@marko/babel-utils");
|
3
|
+
var _classValue = _interopRequireDefault(require("marko/src/runtime/helpers/class-value"));
|
4
|
+
var _styleValue = _interopRequireDefault(require("marko/src/runtime/helpers/style-value"));
|
3
5
|
|
4
6
|
function getAttrs(path, preserveNames, skipRenderBody) {
|
5
7
|
const { node } = path;
|
@@ -155,32 +157,44 @@ function buildEventHandlerArray(path) {
|
|
155
157
|
|
156
158
|
}
|
157
159
|
|
158
|
-
function evaluateAttr(attr) {
|
159
|
-
const
|
160
|
-
|
161
|
-
|
162
|
-
|
160
|
+
function evaluateAttr(attr) {var _classToString, _styleToString;
|
161
|
+
const computed = (0, _babelUtils.computeNode)(attr.node.value);
|
162
|
+
if (computed) {
|
163
|
+
const { value } = computed;
|
164
|
+
switch (attr.node.name) {
|
165
|
+
case "class":
|
166
|
+
return {
|
167
|
+
value: (_classToString = (0, _classValue.default)(value)) == null ? void 0 : _classToString.replace(/\s+/, " ").trim()
|
168
|
+
};
|
169
|
+
case "style":
|
170
|
+
return {
|
171
|
+
value: (_styleToString = (0, _styleValue.default)(value)) == null ? void 0 : _styleToString.
|
172
|
+
replace(/\s+/, " ").
|
173
|
+
trim().
|
174
|
+
replace(/;$/, "")
|
175
|
+
};}
|
176
|
+
|
177
|
+
|
178
|
+
if (value == null || value === false) {
|
179
|
+
return { value: undefined };
|
180
|
+
}
|
163
181
|
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
182
|
+
if (value === true) {
|
183
|
+
return { value: "" };
|
184
|
+
}
|
185
|
+
|
186
|
+
if (typeof value === "object") {
|
187
|
+
switch (value.toString) {
|
188
|
+
case Object.prototype.toString:
|
189
|
+
case Array.prototype.toString:
|
190
|
+
return { value: JSON.stringify(value) };
|
191
|
+
case RegExp.prototype.toString:
|
192
|
+
return { value: value.source };}
|
171
193
|
|
172
|
-
if (computed === true) {
|
173
|
-
computed = "";
|
174
|
-
} else if (computed != null && computed !== false) {
|
175
|
-
computed = computed + "";
|
176
|
-
}
|
177
194
|
}
|
178
|
-
}
|
179
195
|
|
180
|
-
|
181
|
-
|
182
|
-
computed
|
183
|
-
};
|
196
|
+
return { value: value + "" };
|
197
|
+
}
|
184
198
|
}
|
185
199
|
|
186
200
|
function camelCase(string) {
|
@@ -82,7 +82,8 @@ var parseModuleCode = _interopRequireWildcard(require("./parse-module-code"));fu
|
|
82
82
|
displayText: "static <statement>",
|
83
83
|
description:
|
84
84
|
"A JavaScript statement which is only evaluated once your template is loaded.",
|
85
|
-
descriptionMoreURL:
|
85
|
+
descriptionMoreURL:
|
86
|
+
"https://markojs.com/docs/syntax/#static-javascript"
|
86
87
|
}]
|
87
88
|
|
88
89
|
},
|
@@ -28,7 +28,9 @@ function enter(path) {
|
|
28
28
|
_compiler.types.markoAttribute("_provider", provider.node));
|
29
29
|
|
30
30
|
|
31
|
-
if (
|
31
|
+
if (
|
32
|
+
!path.get("attributes").some((attr) => attr.get("name").node === "name"))
|
33
|
+
{
|
32
34
|
path.pushContainer(
|
33
35
|
"attributes",
|
34
36
|
_compiler.types.markoAttribute("_name", _compiler.types.stringLiteral(provider.toString())));
|
@@ -44,7 +44,11 @@ function exit(path) {
|
|
44
44
|
block);
|
45
45
|
|
46
46
|
} else if (ofAttr) {
|
47
|
-
let ofAttrValue =
|
47
|
+
let ofAttrValue = _compiler.types.logicalExpression(
|
48
|
+
"||",
|
49
|
+
ofAttr.value,
|
50
|
+
_compiler.types.arrayExpression([]));
|
51
|
+
|
48
52
|
allowedAttributes.push("of");
|
49
53
|
|
50
54
|
const [valParam, keyParam, loopParam] = params;
|
@@ -1,8 +1,13 @@
|
|
1
1
|
"use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.default = void 0;var _path = _interopRequireDefault(require("path"));
|
2
2
|
var _magicString = _interopRequireDefault(require("magic-string"));
|
3
3
|
var _compiler = require("@marko/compiler");
|
4
|
+
var _resolveFrom = _interopRequireDefault(require("resolve-from"));
|
4
5
|
var _babelUtils = require("@marko/babel-utils");var _default =
|
5
6
|
|
7
|
+
|
8
|
+
|
9
|
+
|
10
|
+
|
6
11
|
(entryFile, isHydrate) => {
|
7
12
|
const { resolveVirtualDependency, hydrateIncludeImports } =
|
8
13
|
entryFile.markoOpts;
|
@@ -15,7 +20,6 @@ var _babelUtils = require("@marko/babel-utils");var _default =
|
|
15
20
|
return;
|
16
21
|
}
|
17
22
|
|
18
|
-
const registerId = _compiler.types.identifier("register");
|
19
23
|
const watchFiles = new Set();
|
20
24
|
let hasComponents = false;
|
21
25
|
let splitComponentIndex = 0;
|
@@ -32,7 +36,7 @@ var _babelUtils = require("@marko/babel-utils");var _default =
|
|
32
36
|
|
33
37
|
if (splitComponentIndex) {
|
34
38
|
markoComponentsImport.specifiers.push(
|
35
|
-
_compiler.types.importSpecifier(
|
39
|
+
_compiler.types.importSpecifier(_compiler.types.identifier("register"), _compiler.types.identifier("register")));
|
36
40
|
|
37
41
|
}
|
38
42
|
markoComponentsImport.specifiers.push(_compiler.types.importSpecifier(initId, initId));
|
@@ -86,6 +90,15 @@ var _babelUtils = require("@marko/babel-utils");var _default =
|
|
86
90
|
if (!hydratedFiles.has(resolvePath(file, tag))) {
|
87
91
|
addHydrateDeps((0, _babelUtils.loadFileForImport)(file, tag));
|
88
92
|
}
|
93
|
+
} else {
|
94
|
+
const importedTemplates = tryGetTemplateImports(file, tag);
|
95
|
+
if (importedTemplates) {
|
96
|
+
for (const templateFile of importedTemplates) {
|
97
|
+
if (!hydratedFiles.has(resolvePath(file, templateFile))) {
|
98
|
+
addHydrateDeps((0, _babelUtils.loadFileForImport)(file, templateFile));
|
99
|
+
}
|
100
|
+
}
|
101
|
+
}
|
89
102
|
}
|
90
103
|
}
|
91
104
|
|
@@ -104,7 +117,7 @@ var _babelUtils = require("@marko/babel-utils");var _default =
|
|
104
117
|
program.pushContainer(
|
105
118
|
"body",
|
106
119
|
_compiler.types.expressionStatement(
|
107
|
-
_compiler.types.callExpression(
|
120
|
+
_compiler.types.callExpression(_compiler.types.identifier("register"), [
|
108
121
|
_compiler.types.stringLiteral(meta.id),
|
109
122
|
splitComponentId])));
|
110
123
|
|
@@ -168,6 +181,62 @@ var _babelUtils = require("@marko/babel-utils");var _default =
|
|
168
181
|
}
|
169
182
|
};exports.default = _default;
|
170
183
|
|
184
|
+
function tryGetTemplateImports(file, rendererRelativePath) {
|
185
|
+
const resolvedRendererPath = _path.default.join(
|
186
|
+
file.opts.filename,
|
187
|
+
"..",
|
188
|
+
rendererRelativePath);
|
189
|
+
|
190
|
+
let templateImports;
|
191
|
+
|
192
|
+
try {
|
193
|
+
for (const statement of (0, _babelUtils.parseStatements)(
|
194
|
+
file,
|
195
|
+
file.markoOpts.fileSystem.readFileSync(resolvedRendererPath, "utf-8")))
|
196
|
+
{
|
197
|
+
if (statement.type === "ImportDeclaration") {
|
198
|
+
addImport(statement.source.value);
|
199
|
+
} else {
|
200
|
+
_compiler.types.traverseFast(statement, (node) => {
|
201
|
+
if (
|
202
|
+
node.type === "CallExpression" && (
|
203
|
+
node.callee.name === "require" ||
|
204
|
+
node.callee.type === "MemberExpression" &&
|
205
|
+
node.callee.object.type === "Identifier" &&
|
206
|
+
node.callee.object.name === "require" &&
|
207
|
+
node.callee.property.type === "Identifier" &&
|
208
|
+
node.callee.property.name === "resolve") &&
|
209
|
+
node.arguments.length === 1 &&
|
210
|
+
node.arguments[0].type === "StringLiteral")
|
211
|
+
{
|
212
|
+
addImport(node.arguments[0].value);
|
213
|
+
}
|
214
|
+
});
|
215
|
+
}
|
216
|
+
}
|
217
|
+
} catch {
|
218
|
+
|
219
|
+
// Ignore
|
220
|
+
}
|
221
|
+
return templateImports;
|
222
|
+
|
223
|
+
function addImport(request) {
|
224
|
+
if (request.endsWith(".marko")) {
|
225
|
+
const resolvedTemplatePath =
|
226
|
+
request[0] === "." ?
|
227
|
+
_path.default.resolve(resolvedRendererPath, "..", request) :
|
228
|
+
_resolveFrom.default.silent(_path.default.dirname(resolvedRendererPath), request);
|
229
|
+
if (resolvedTemplatePath) {
|
230
|
+
if (templateImports) {
|
231
|
+
templateImports.push(resolvedTemplatePath);
|
232
|
+
} else {
|
233
|
+
templateImports = [resolvedTemplatePath];
|
234
|
+
}
|
235
|
+
}
|
236
|
+
}
|
237
|
+
}
|
238
|
+
}
|
239
|
+
|
171
240
|
function toTestFn(val) {
|
172
241
|
if (typeof val === "function") {
|
173
242
|
return val;
|
@@ -6,10 +6,16 @@ var _babelUtils = require("@marko/babel-utils");
|
|
6
6
|
|
7
7
|
|
8
8
|
|
9
|
+
|
9
10
|
var _keyManager = require("./key-manager");
|
10
11
|
var _vdomOutWrite = _interopRequireDefault(require("./vdom-out-write"));
|
11
12
|
var _nativeTagVdom = require("../tag/native-tag[vdom]");
|
12
|
-
|
13
|
+
|
14
|
+
const skipDirectives = new Set([
|
15
|
+
"no-update",
|
16
|
+
"no-update-if",
|
17
|
+
"no-update-body",
|
18
|
+
"no-update-body-if"]);
|
13
19
|
|
14
20
|
const staticNodes = new WeakSet();
|
15
21
|
|
@@ -22,10 +28,14 @@ const mergeStaticCreateVisitor = {
|
|
22
28
|
|
23
29
|
},
|
24
30
|
MarkoPlaceholder(path, state) {
|
25
|
-
const
|
31
|
+
const computed = (0, _babelUtils.computeNode)(path.node.value);
|
26
32
|
state.currentRoot = _compiler.types.callExpression(
|
27
33
|
_compiler.types.memberExpression(state.currentRoot, _compiler.types.identifier("t")),
|
28
|
-
[
|
34
|
+
[
|
35
|
+
_compiler.types.stringLiteral(
|
36
|
+
computed && computed.value != null ? `${computed.value}` : "")]);
|
37
|
+
|
38
|
+
|
29
39
|
|
30
40
|
},
|
31
41
|
MarkoTag(path, state) {
|
@@ -44,8 +54,8 @@ const analyzeStaticVisitor = {
|
|
44
54
|
},
|
45
55
|
MarkoPlaceholder(path) {
|
46
56
|
if (path.node.escape) {
|
47
|
-
const
|
48
|
-
if (
|
57
|
+
const computed = (0, _babelUtils.computeNode)(path.node.value);
|
58
|
+
if (computed) {
|
49
59
|
staticNodes.add(path.node);
|
50
60
|
}
|
51
61
|
}
|
@@ -68,24 +78,18 @@ const analyzeStaticVisitor = {
|
|
68
78
|
// check attributes
|
69
79
|
isStatic =
|
70
80
|
isStatic &&
|
71
|
-
path.
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
_compiler.types.isArrayExpression(attrValue) ||
|
84
|
-
_compiler.types.isRegExpLiteral(attrValue);
|
85
|
-
if (exclude) return false;
|
86
|
-
const { confident } = attrValue.evaluate();
|
87
|
-
return confident;
|
88
|
-
});
|
81
|
+
path.
|
82
|
+
get("attributes").
|
83
|
+
every(
|
84
|
+
(attr) =>
|
85
|
+
_compiler.types.isMarkoAttribute(attr) &&
|
86
|
+
!(
|
87
|
+
attr.node.arguments ||
|
88
|
+
attr.node.modifier ||
|
89
|
+
skipDirectives.has(attr.node.name) ||
|
90
|
+
!(0, _babelUtils.computeNode)(attr.node.value)));
|
91
|
+
|
92
|
+
|
89
93
|
|
90
94
|
// check children
|
91
95
|
isStatic =
|
package/package.json
CHANGED
@@ -1,26 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "@marko/translator-default",
|
3
|
+
"version": "5.30.0",
|
3
4
|
"description": "Translates Marko templates to the default Marko runtime.",
|
4
|
-
"version": "5.29.2",
|
5
|
-
"author": "Dylan Piercey <dpiercey@ebay.com>",
|
6
|
-
"bugs": "https://github.com/marko-js/marko/issues/new?template=Bug_report.md",
|
7
|
-
"dependencies": {
|
8
|
-
"@babel/runtime": "^7.16.0",
|
9
|
-
"@marko/babel-utils": "^6.2.0",
|
10
|
-
"escape-string-regexp": "^4.0.0",
|
11
|
-
"magic-string": "^0.27.0",
|
12
|
-
"self-closing-tags": "^1.0.1"
|
13
|
-
},
|
14
|
-
"devDependencies": {
|
15
|
-
"@marko/compiler": "^5.31.1",
|
16
|
-
"marko": "^5.29.2"
|
17
|
-
},
|
18
|
-
"files": [
|
19
|
-
"dist",
|
20
|
-
"index.d.ts"
|
21
|
-
],
|
22
|
-
"types": "index.d.ts",
|
23
|
-
"homepage": "https://github.com/marko-js/marko/blob/master/packages/translator-default/README.md",
|
24
5
|
"keywords": [
|
25
6
|
"babel",
|
26
7
|
"htmljs",
|
@@ -29,10 +10,34 @@
|
|
29
10
|
"parser",
|
30
11
|
"plugin"
|
31
12
|
],
|
13
|
+
"homepage": "https://github.com/marko-js/marko/blob/master/packages/translator-default/README.md",
|
14
|
+
"bugs": "https://github.com/marko-js/marko/issues/new?template=Bug_report.md",
|
15
|
+
"repository": {
|
16
|
+
"type": "git",
|
17
|
+
"url": "https://github.com/marko-js/marko/tree/master/packages/translator-default"
|
18
|
+
},
|
32
19
|
"license": "MIT",
|
20
|
+
"author": "Dylan Piercey <dpiercey@ebay.com>",
|
33
21
|
"main": "dist/index.js",
|
34
|
-
"
|
35
|
-
"
|
22
|
+
"types": "index.d.ts",
|
23
|
+
"files": [
|
24
|
+
"dist",
|
25
|
+
"index.d.ts"
|
26
|
+
],
|
27
|
+
"scripts": {
|
28
|
+
"build": "babel ./src --out-dir ./dist --delete-dir-on-start --copy-files --config-file ../../babel.config.js --env-name=production"
|
29
|
+
},
|
30
|
+
"dependencies": {
|
31
|
+
"@babel/runtime": "^7.16.0",
|
32
|
+
"@marko/babel-utils": "^6.3.0",
|
33
|
+
"escape-string-regexp": "^4.0.0",
|
34
|
+
"magic-string": "^0.27.0",
|
35
|
+
"self-closing-tags": "^1.0.1"
|
36
|
+
},
|
37
|
+
"devDependencies": {
|
38
|
+
"@marko/compiler": "^5.32.0",
|
39
|
+
"marko": "^5.30.0"
|
40
|
+
},
|
36
41
|
"peerDependencies": {
|
37
42
|
"@marko/compiler": "^5.16.1",
|
38
43
|
"marko": "^5.17.2"
|
@@ -40,8 +45,6 @@
|
|
40
45
|
"publishConfig": {
|
41
46
|
"access": "public"
|
42
47
|
},
|
43
|
-
"
|
44
|
-
|
45
|
-
"url": "https://github.com/marko-js/marko/tree/master/packages/translator-default"
|
46
|
-
}
|
48
|
+
"main:dev": "src/index.js",
|
49
|
+
"main:npm": "dist/index.js"
|
47
50
|
}
|