attrs-in-props 3.8.9 → 3.14.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.
- package/README.md +2 -2
- package/dist/cjs/index.js +31 -15
- package/dist/esm/index.js +31 -15
- package/dist/iife/index.js +213 -67
- package/index.js +38 -19
- package/package.json +10 -12
package/README.md
CHANGED
|
@@ -47,7 +47,7 @@ Resolves a prop value: executes dynamic values and replaces `{{template}}` liter
|
|
|
47
47
|
import { resolvePropValue } from 'attrs-in-props'
|
|
48
48
|
|
|
49
49
|
// In an attr handler:
|
|
50
|
-
const src = resolvePropValue(el, el.
|
|
50
|
+
const src = resolvePropValue(el, el.src)
|
|
51
51
|
```
|
|
52
52
|
|
|
53
53
|
### `ATTR_TRANSFORMS`
|
|
@@ -110,7 +110,7 @@ const Button = {
|
|
|
110
110
|
// $ prefix: global case from context.cases
|
|
111
111
|
'$isSafari': { disabled: true, 'aria-label': 'Safari' },
|
|
112
112
|
|
|
113
|
-
// . prefix: truthy (
|
|
113
|
+
// . prefix: truthy (element/state first, then context.cases)
|
|
114
114
|
'.isActive': { aria: { expanded: true }, 'data-state': 'open' },
|
|
115
115
|
|
|
116
116
|
// ! prefix: falsy
|
package/dist/cjs/index.js
CHANGED
|
@@ -32,7 +32,7 @@ __export(index_exports, {
|
|
|
32
32
|
resolvePropValue: () => resolvePropValue
|
|
33
33
|
});
|
|
34
34
|
module.exports = __toCommonJS(index_exports);
|
|
35
|
-
var import_utils = require("@
|
|
35
|
+
var import_utils = require("@symbo.ls/utils");
|
|
36
36
|
const ARIA_ROLES = [
|
|
37
37
|
"alert",
|
|
38
38
|
"alertdialog",
|
|
@@ -1069,7 +1069,7 @@ const resolvePropValue = (el, value) => {
|
|
|
1069
1069
|
return resolved;
|
|
1070
1070
|
};
|
|
1071
1071
|
const resolveFileSource = (el, value) => {
|
|
1072
|
-
let src = (el.
|
|
1072
|
+
let src = (el.preSrc || "") + (resolvePropValue(el, value) || "");
|
|
1073
1073
|
if (!src) return;
|
|
1074
1074
|
try {
|
|
1075
1075
|
new URL(src);
|
|
@@ -1077,25 +1077,41 @@ const resolveFileSource = (el, value) => {
|
|
|
1077
1077
|
} catch (e) {
|
|
1078
1078
|
}
|
|
1079
1079
|
const { context } = el;
|
|
1080
|
-
if (!context.files) return src;
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1080
|
+
if (!context.files && !context.assets) return src;
|
|
1081
|
+
if (src.startsWith("/assets/")) {
|
|
1082
|
+
const key = src.slice(8);
|
|
1083
|
+
const asset = context.assets && (context.assets[src] || context.assets[key]);
|
|
1084
|
+
if (asset && asset.content) return asset.content.src;
|
|
1085
|
+
return src;
|
|
1086
|
+
}
|
|
1087
|
+
if (src.startsWith("/files/")) {
|
|
1088
|
+
const key = src.slice(7);
|
|
1089
|
+
const file = context.files && (context.files[src] || context.files[key]);
|
|
1090
|
+
if (file && file.content) return file.content.src;
|
|
1091
|
+
return src;
|
|
1092
|
+
}
|
|
1093
|
+
if (context.assets) {
|
|
1094
|
+
const asset = context.assets[src];
|
|
1095
|
+
if (asset && asset.content) return asset.content.src;
|
|
1096
|
+
}
|
|
1097
|
+
if (context.files) {
|
|
1098
|
+
const file = context.files[src];
|
|
1099
|
+
if (file && file.content) return file.content.src;
|
|
1100
|
+
}
|
|
1084
1101
|
return src;
|
|
1085
1102
|
};
|
|
1086
1103
|
const ATTR_TRANSFORMS = {
|
|
1087
|
-
src: (el) => resolveFileSource(el, el.
|
|
1088
|
-
href: (el) => resolvePropValue(el, el.
|
|
1089
|
-
action: (el) => resolvePropValue(el, el.
|
|
1090
|
-
poster: (el) => resolveFileSource(el, el.
|
|
1091
|
-
data: (el) => resolvePropValue(el, el.
|
|
1104
|
+
src: (el) => resolveFileSource(el, el.src),
|
|
1105
|
+
href: (el) => resolvePropValue(el, el.href),
|
|
1106
|
+
action: (el) => resolvePropValue(el, el.action),
|
|
1107
|
+
poster: (el) => resolveFileSource(el, el.poster),
|
|
1108
|
+
data: (el) => resolvePropValue(el, el.data)
|
|
1092
1109
|
};
|
|
1093
1110
|
const applyAttrTransforms = (element) => {
|
|
1094
1111
|
const tag = element.tag || "div";
|
|
1095
|
-
const { props } = element;
|
|
1096
1112
|
const result = {};
|
|
1097
1113
|
for (const attr in ATTR_TRANSFORMS) {
|
|
1098
|
-
if (
|
|
1114
|
+
if (element[attr] !== void 0 && checkAttributeByTagName(tag, attr)) {
|
|
1099
1115
|
const val = ATTR_TRANSFORMS[attr](element);
|
|
1100
1116
|
if (val !== void 0) result[attr] = val;
|
|
1101
1117
|
}
|
|
@@ -1111,10 +1127,10 @@ const resolveCase = (caseKey, element) => {
|
|
|
1111
1127
|
const evaluateCondition = (prefix, caseKey, element) => {
|
|
1112
1128
|
if (prefix === "$") {
|
|
1113
1129
|
let result = resolveCase(caseKey, element);
|
|
1114
|
-
if (result === void 0) result = !!element
|
|
1130
|
+
if (result === void 0) result = !!element[caseKey];
|
|
1115
1131
|
return result;
|
|
1116
1132
|
}
|
|
1117
|
-
let isTruthy = element
|
|
1133
|
+
let isTruthy = element[caseKey] === true || element.state[caseKey];
|
|
1118
1134
|
if (!isTruthy) {
|
|
1119
1135
|
const caseResult = resolveCase(caseKey, element);
|
|
1120
1136
|
if (caseResult !== void 0) isTruthy = caseResult;
|
package/dist/esm/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { isDefined, isFunction, isString } from "@
|
|
1
|
+
import { isDefined, isFunction, isString } from "@symbo.ls/utils";
|
|
2
2
|
const ARIA_ROLES = [
|
|
3
3
|
"alert",
|
|
4
4
|
"alertdialog",
|
|
@@ -1035,7 +1035,7 @@ const resolvePropValue = (el, value) => {
|
|
|
1035
1035
|
return resolved;
|
|
1036
1036
|
};
|
|
1037
1037
|
const resolveFileSource = (el, value) => {
|
|
1038
|
-
let src = (el.
|
|
1038
|
+
let src = (el.preSrc || "") + (resolvePropValue(el, value) || "");
|
|
1039
1039
|
if (!src) return;
|
|
1040
1040
|
try {
|
|
1041
1041
|
new URL(src);
|
|
@@ -1043,25 +1043,41 @@ const resolveFileSource = (el, value) => {
|
|
|
1043
1043
|
} catch (e) {
|
|
1044
1044
|
}
|
|
1045
1045
|
const { context } = el;
|
|
1046
|
-
if (!context.files) return src;
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1046
|
+
if (!context.files && !context.assets) return src;
|
|
1047
|
+
if (src.startsWith("/assets/")) {
|
|
1048
|
+
const key = src.slice(8);
|
|
1049
|
+
const asset = context.assets && (context.assets[src] || context.assets[key]);
|
|
1050
|
+
if (asset && asset.content) return asset.content.src;
|
|
1051
|
+
return src;
|
|
1052
|
+
}
|
|
1053
|
+
if (src.startsWith("/files/")) {
|
|
1054
|
+
const key = src.slice(7);
|
|
1055
|
+
const file = context.files && (context.files[src] || context.files[key]);
|
|
1056
|
+
if (file && file.content) return file.content.src;
|
|
1057
|
+
return src;
|
|
1058
|
+
}
|
|
1059
|
+
if (context.assets) {
|
|
1060
|
+
const asset = context.assets[src];
|
|
1061
|
+
if (asset && asset.content) return asset.content.src;
|
|
1062
|
+
}
|
|
1063
|
+
if (context.files) {
|
|
1064
|
+
const file = context.files[src];
|
|
1065
|
+
if (file && file.content) return file.content.src;
|
|
1066
|
+
}
|
|
1050
1067
|
return src;
|
|
1051
1068
|
};
|
|
1052
1069
|
const ATTR_TRANSFORMS = {
|
|
1053
|
-
src: (el) => resolveFileSource(el, el.
|
|
1054
|
-
href: (el) => resolvePropValue(el, el.
|
|
1055
|
-
action: (el) => resolvePropValue(el, el.
|
|
1056
|
-
poster: (el) => resolveFileSource(el, el.
|
|
1057
|
-
data: (el) => resolvePropValue(el, el.
|
|
1070
|
+
src: (el) => resolveFileSource(el, el.src),
|
|
1071
|
+
href: (el) => resolvePropValue(el, el.href),
|
|
1072
|
+
action: (el) => resolvePropValue(el, el.action),
|
|
1073
|
+
poster: (el) => resolveFileSource(el, el.poster),
|
|
1074
|
+
data: (el) => resolvePropValue(el, el.data)
|
|
1058
1075
|
};
|
|
1059
1076
|
const applyAttrTransforms = (element) => {
|
|
1060
1077
|
const tag = element.tag || "div";
|
|
1061
|
-
const { props } = element;
|
|
1062
1078
|
const result = {};
|
|
1063
1079
|
for (const attr in ATTR_TRANSFORMS) {
|
|
1064
|
-
if (
|
|
1080
|
+
if (element[attr] !== void 0 && checkAttributeByTagName(tag, attr)) {
|
|
1065
1081
|
const val = ATTR_TRANSFORMS[attr](element);
|
|
1066
1082
|
if (val !== void 0) result[attr] = val;
|
|
1067
1083
|
}
|
|
@@ -1077,10 +1093,10 @@ const resolveCase = (caseKey, element) => {
|
|
|
1077
1093
|
const evaluateCondition = (prefix, caseKey, element) => {
|
|
1078
1094
|
if (prefix === "$") {
|
|
1079
1095
|
let result = resolveCase(caseKey, element);
|
|
1080
|
-
if (result === void 0) result = !!element
|
|
1096
|
+
if (result === void 0) result = !!element[caseKey];
|
|
1081
1097
|
return result;
|
|
1082
1098
|
}
|
|
1083
|
-
let isTruthy = element
|
|
1099
|
+
let isTruthy = element[caseKey] === true || element.state[caseKey];
|
|
1084
1100
|
if (!isTruthy) {
|
|
1085
1101
|
const caseResult = resolveCase(caseKey, element);
|
|
1086
1102
|
if (caseResult !== void 0) isTruthy = caseResult;
|
package/dist/iife/index.js
CHANGED
|
@@ -21,47 +21,53 @@ var AttrsInProps = (() => {
|
|
|
21
21
|
};
|
|
22
22
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
23
23
|
|
|
24
|
-
// ../utils/
|
|
24
|
+
// ../utils/globals.js
|
|
25
25
|
var window2, document2;
|
|
26
26
|
var init_globals = __esm({
|
|
27
|
-
"../utils/
|
|
27
|
+
"../utils/globals.js"() {
|
|
28
|
+
"use strict";
|
|
28
29
|
window2 = globalThis;
|
|
29
30
|
document2 = window2.document;
|
|
30
31
|
}
|
|
31
32
|
});
|
|
32
33
|
|
|
33
|
-
// ../utils/
|
|
34
|
+
// ../utils/node.js
|
|
34
35
|
var init_node = __esm({
|
|
35
|
-
"../utils/
|
|
36
|
+
"../utils/node.js"() {
|
|
37
|
+
"use strict";
|
|
36
38
|
}
|
|
37
39
|
});
|
|
38
40
|
|
|
39
|
-
// ../utils/
|
|
41
|
+
// ../utils/types.js
|
|
40
42
|
var isString, isFunction, isDefined;
|
|
41
43
|
var init_types = __esm({
|
|
42
|
-
"../utils/
|
|
44
|
+
"../utils/types.js"() {
|
|
45
|
+
"use strict";
|
|
43
46
|
isString = (arg) => typeof arg === "string";
|
|
44
47
|
isFunction = (arg) => typeof arg === "function";
|
|
45
48
|
isDefined = (arg) => arg !== void 0;
|
|
46
49
|
}
|
|
47
50
|
});
|
|
48
51
|
|
|
49
|
-
// ../utils/
|
|
52
|
+
// ../utils/array.js
|
|
50
53
|
var init_array = __esm({
|
|
51
|
-
"../utils/
|
|
54
|
+
"../utils/array.js"() {
|
|
55
|
+
"use strict";
|
|
52
56
|
}
|
|
53
57
|
});
|
|
54
58
|
|
|
55
|
-
// ../utils/
|
|
59
|
+
// ../utils/string.js
|
|
56
60
|
var init_string = __esm({
|
|
57
|
-
"../utils/
|
|
61
|
+
"../utils/string.js"() {
|
|
62
|
+
"use strict";
|
|
58
63
|
}
|
|
59
64
|
});
|
|
60
65
|
|
|
61
|
-
// ../utils/
|
|
66
|
+
// ../utils/keys.js
|
|
62
67
|
var STATE_METHODS, PROPS_METHODS, METHODS, METHODS_EXL;
|
|
63
68
|
var init_keys = __esm({
|
|
64
|
-
"../utils/
|
|
69
|
+
"../utils/keys.js"() {
|
|
70
|
+
"use strict";
|
|
65
71
|
STATE_METHODS = /* @__PURE__ */ new Set([
|
|
66
72
|
"update",
|
|
67
73
|
"parse",
|
|
@@ -131,7 +137,9 @@ var AttrsInProps = (() => {
|
|
|
131
137
|
"getContext",
|
|
132
138
|
"getQuery",
|
|
133
139
|
"getDB",
|
|
134
|
-
"getChildren"
|
|
140
|
+
"getChildren",
|
|
141
|
+
"preventContentUpdate",
|
|
142
|
+
"preventContentRecreate"
|
|
135
143
|
]);
|
|
136
144
|
METHODS_EXL = /* @__PURE__ */ new Set([
|
|
137
145
|
"node",
|
|
@@ -146,119 +154,228 @@ var AttrsInProps = (() => {
|
|
|
146
154
|
}
|
|
147
155
|
});
|
|
148
156
|
|
|
149
|
-
// ../utils/
|
|
157
|
+
// ../utils/object.js
|
|
150
158
|
var init_object = __esm({
|
|
151
|
-
"../utils/
|
|
159
|
+
"../utils/object.js"() {
|
|
160
|
+
"use strict";
|
|
152
161
|
}
|
|
153
162
|
});
|
|
154
163
|
|
|
155
|
-
// ../utils/
|
|
164
|
+
// ../utils/key.js
|
|
156
165
|
var init_key = __esm({
|
|
157
|
-
"../utils/
|
|
166
|
+
"../utils/key.js"() {
|
|
167
|
+
"use strict";
|
|
158
168
|
}
|
|
159
169
|
});
|
|
160
170
|
|
|
161
|
-
// ../utils/
|
|
171
|
+
// ../utils/env.js
|
|
162
172
|
var init_env = __esm({
|
|
163
|
-
"../utils/
|
|
173
|
+
"../utils/env.js"() {
|
|
174
|
+
"use strict";
|
|
164
175
|
}
|
|
165
176
|
});
|
|
166
177
|
|
|
167
|
-
// ../utils/
|
|
178
|
+
// ../utils/function.js
|
|
168
179
|
var init_function = __esm({
|
|
169
|
-
"../utils/
|
|
180
|
+
"../utils/function.js"() {
|
|
181
|
+
"use strict";
|
|
170
182
|
}
|
|
171
183
|
});
|
|
172
184
|
|
|
173
|
-
// ../utils/
|
|
185
|
+
// ../utils/if.js
|
|
174
186
|
var init_if = __esm({
|
|
175
|
-
"../utils/
|
|
187
|
+
"../utils/if.js"() {
|
|
188
|
+
"use strict";
|
|
176
189
|
}
|
|
177
190
|
});
|
|
178
191
|
|
|
179
|
-
// ../utils/
|
|
192
|
+
// ../utils/log.js
|
|
180
193
|
var init_log = __esm({
|
|
181
|
-
"../utils/
|
|
194
|
+
"../utils/log.js"() {
|
|
195
|
+
"use strict";
|
|
182
196
|
}
|
|
183
197
|
});
|
|
184
198
|
|
|
185
|
-
// ../utils/
|
|
199
|
+
// ../utils/cookie.js
|
|
186
200
|
var isMobile;
|
|
187
201
|
var init_cookie = __esm({
|
|
188
|
-
"../utils/
|
|
202
|
+
"../utils/cookie.js"() {
|
|
203
|
+
"use strict";
|
|
189
204
|
isMobile = (() => typeof navigator === "undefined" ? false : /Mobi/.test(navigator.userAgent))();
|
|
190
205
|
}
|
|
191
206
|
});
|
|
192
207
|
|
|
193
|
-
// ../utils/
|
|
208
|
+
// ../utils/tags.js
|
|
194
209
|
var init_tags = __esm({
|
|
195
|
-
"../utils/
|
|
210
|
+
"../utils/tags.js"() {
|
|
211
|
+
"use strict";
|
|
196
212
|
}
|
|
197
213
|
});
|
|
198
214
|
|
|
199
|
-
// ../utils/
|
|
215
|
+
// ../utils/extends.js
|
|
200
216
|
var init_extends = __esm({
|
|
201
|
-
"../utils/
|
|
217
|
+
"../utils/extends.js"() {
|
|
218
|
+
"use strict";
|
|
202
219
|
}
|
|
203
220
|
});
|
|
204
221
|
|
|
205
|
-
// ../utils/
|
|
222
|
+
// ../utils/component.js
|
|
206
223
|
var init_component = __esm({
|
|
207
|
-
"../utils/
|
|
224
|
+
"../utils/component.js"() {
|
|
225
|
+
"use strict";
|
|
208
226
|
}
|
|
209
227
|
});
|
|
210
228
|
|
|
211
|
-
// ../utils/
|
|
229
|
+
// ../utils/props.js
|
|
212
230
|
var init_props = __esm({
|
|
213
|
-
"../utils/
|
|
231
|
+
"../utils/props.js"() {
|
|
232
|
+
"use strict";
|
|
214
233
|
}
|
|
215
234
|
});
|
|
216
235
|
|
|
217
|
-
// ../utils/
|
|
236
|
+
// ../utils/element.js
|
|
218
237
|
var init_element = __esm({
|
|
219
|
-
"../utils/
|
|
238
|
+
"../utils/element.js"() {
|
|
239
|
+
"use strict";
|
|
220
240
|
}
|
|
221
241
|
});
|
|
222
242
|
|
|
223
|
-
// ../utils/
|
|
243
|
+
// ../utils/state.js
|
|
224
244
|
var init_state = __esm({
|
|
225
|
-
"../utils/
|
|
245
|
+
"../utils/state.js"() {
|
|
246
|
+
"use strict";
|
|
226
247
|
}
|
|
227
248
|
});
|
|
228
249
|
|
|
229
|
-
// ../utils/
|
|
250
|
+
// ../utils/scope.js
|
|
230
251
|
var init_scope = __esm({
|
|
231
|
-
"../utils/
|
|
252
|
+
"../utils/scope.js"() {
|
|
253
|
+
"use strict";
|
|
232
254
|
}
|
|
233
255
|
});
|
|
234
256
|
|
|
235
|
-
// ../utils/
|
|
257
|
+
// ../utils/triggerEvent.js
|
|
236
258
|
var init_triggerEvent = __esm({
|
|
237
|
-
"../utils/
|
|
259
|
+
"../utils/triggerEvent.js"() {
|
|
260
|
+
"use strict";
|
|
238
261
|
}
|
|
239
262
|
});
|
|
240
263
|
|
|
241
|
-
// ../utils/
|
|
264
|
+
// ../utils/cache.js
|
|
242
265
|
var init_cache = __esm({
|
|
243
|
-
"../utils/
|
|
266
|
+
"../utils/cache.js"() {
|
|
267
|
+
"use strict";
|
|
244
268
|
}
|
|
245
269
|
});
|
|
246
270
|
|
|
247
|
-
// ../utils/
|
|
271
|
+
// ../utils/methods.js
|
|
248
272
|
var init_methods = __esm({
|
|
249
|
-
"../utils/
|
|
273
|
+
"../utils/methods.js"() {
|
|
274
|
+
"use strict";
|
|
250
275
|
}
|
|
251
276
|
});
|
|
252
277
|
|
|
253
|
-
// ../utils/
|
|
278
|
+
// ../utils/update.js
|
|
254
279
|
var init_update = __esm({
|
|
255
|
-
"../utils/
|
|
280
|
+
"../utils/update.js"() {
|
|
281
|
+
"use strict";
|
|
256
282
|
}
|
|
257
283
|
});
|
|
258
284
|
|
|
259
|
-
// ../utils/
|
|
260
|
-
var
|
|
261
|
-
"../utils/
|
|
285
|
+
// ../utils/projectKeys.js
|
|
286
|
+
var init_projectKeys = __esm({
|
|
287
|
+
"../utils/projectKeys.js"() {
|
|
288
|
+
}
|
|
289
|
+
});
|
|
290
|
+
|
|
291
|
+
// ../utils/browser.js
|
|
292
|
+
var init_browser = __esm({
|
|
293
|
+
"../utils/browser.js"() {
|
|
294
|
+
"use strict";
|
|
295
|
+
}
|
|
296
|
+
});
|
|
297
|
+
|
|
298
|
+
// ../utils/cdn.js
|
|
299
|
+
var init_cdn = __esm({
|
|
300
|
+
"../utils/cdn.js"() {
|
|
301
|
+
"use strict";
|
|
302
|
+
}
|
|
303
|
+
});
|
|
304
|
+
|
|
305
|
+
// ../utils/date.js
|
|
306
|
+
var init_date = __esm({
|
|
307
|
+
"../utils/date.js"() {
|
|
308
|
+
"use strict";
|
|
309
|
+
}
|
|
310
|
+
});
|
|
311
|
+
|
|
312
|
+
// ../utils/detectHeight.js
|
|
313
|
+
var init_detectHeight = __esm({
|
|
314
|
+
"../utils/detectHeight.js"() {
|
|
315
|
+
"use strict";
|
|
316
|
+
}
|
|
317
|
+
});
|
|
318
|
+
|
|
319
|
+
// ../utils/fibonacci.js
|
|
320
|
+
var init_fibonacci = __esm({
|
|
321
|
+
"../utils/fibonacci.js"() {
|
|
322
|
+
"use strict";
|
|
323
|
+
}
|
|
324
|
+
});
|
|
325
|
+
|
|
326
|
+
// ../utils/files.js
|
|
327
|
+
var init_files = __esm({
|
|
328
|
+
"../utils/files.js"() {
|
|
329
|
+
"use strict";
|
|
330
|
+
}
|
|
331
|
+
});
|
|
332
|
+
|
|
333
|
+
// ../utils/load.js
|
|
334
|
+
var init_load = __esm({
|
|
335
|
+
"../utils/load.js"() {
|
|
336
|
+
"use strict";
|
|
337
|
+
}
|
|
338
|
+
});
|
|
339
|
+
|
|
340
|
+
// ../utils/metadata.js
|
|
341
|
+
var init_metadata = __esm({
|
|
342
|
+
"../utils/metadata.js"() {
|
|
343
|
+
"use strict";
|
|
344
|
+
}
|
|
345
|
+
});
|
|
346
|
+
|
|
347
|
+
// ../utils/scaling.js
|
|
348
|
+
var init_scaling = __esm({
|
|
349
|
+
"../utils/scaling.js"() {
|
|
350
|
+
"use strict";
|
|
351
|
+
}
|
|
352
|
+
});
|
|
353
|
+
|
|
354
|
+
// ../utils/sharedLibraries.js
|
|
355
|
+
var init_sharedLibraries = __esm({
|
|
356
|
+
"../utils/sharedLibraries.js"() {
|
|
357
|
+
"use strict";
|
|
358
|
+
}
|
|
359
|
+
});
|
|
360
|
+
|
|
361
|
+
// ../utils/string-extra.js
|
|
362
|
+
var init_string_extra = __esm({
|
|
363
|
+
"../utils/string-extra.js"() {
|
|
364
|
+
"use strict";
|
|
365
|
+
}
|
|
366
|
+
});
|
|
367
|
+
|
|
368
|
+
// ../utils/style.js
|
|
369
|
+
var init_style = __esm({
|
|
370
|
+
"../utils/style.js"() {
|
|
371
|
+
"use strict";
|
|
372
|
+
}
|
|
373
|
+
});
|
|
374
|
+
|
|
375
|
+
// ../utils/index.js
|
|
376
|
+
var init_utils = __esm({
|
|
377
|
+
"../utils/index.js"() {
|
|
378
|
+
"use strict";
|
|
262
379
|
init_key();
|
|
263
380
|
init_env();
|
|
264
381
|
init_types();
|
|
@@ -283,6 +400,19 @@ var AttrsInProps = (() => {
|
|
|
283
400
|
init_cache();
|
|
284
401
|
init_update();
|
|
285
402
|
init_triggerEvent();
|
|
403
|
+
init_projectKeys();
|
|
404
|
+
init_browser();
|
|
405
|
+
init_cdn();
|
|
406
|
+
init_date();
|
|
407
|
+
init_detectHeight();
|
|
408
|
+
init_fibonacci();
|
|
409
|
+
init_files();
|
|
410
|
+
init_load();
|
|
411
|
+
init_metadata();
|
|
412
|
+
init_scaling();
|
|
413
|
+
init_sharedLibraries();
|
|
414
|
+
init_string_extra();
|
|
415
|
+
init_style();
|
|
286
416
|
}
|
|
287
417
|
});
|
|
288
418
|
|
|
@@ -302,7 +432,7 @@ var AttrsInProps = (() => {
|
|
|
302
432
|
resolveFileSource: () => resolveFileSource,
|
|
303
433
|
resolvePropValue: () => resolvePropValue
|
|
304
434
|
});
|
|
305
|
-
|
|
435
|
+
init_utils();
|
|
306
436
|
var ARIA_ROLES = [
|
|
307
437
|
"alert",
|
|
308
438
|
"alertdialog",
|
|
@@ -1339,7 +1469,7 @@ var AttrsInProps = (() => {
|
|
|
1339
1469
|
return resolved;
|
|
1340
1470
|
};
|
|
1341
1471
|
var resolveFileSource = (el, value) => {
|
|
1342
|
-
let src = (el.
|
|
1472
|
+
let src = (el.preSrc || "") + (resolvePropValue(el, value) || "");
|
|
1343
1473
|
if (!src) return;
|
|
1344
1474
|
try {
|
|
1345
1475
|
new URL(src);
|
|
@@ -1347,25 +1477,41 @@ var AttrsInProps = (() => {
|
|
|
1347
1477
|
} catch (e) {
|
|
1348
1478
|
}
|
|
1349
1479
|
const { context } = el;
|
|
1350
|
-
if (!context.files) return src;
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
|
|
1480
|
+
if (!context.files && !context.assets) return src;
|
|
1481
|
+
if (src.startsWith("/assets/")) {
|
|
1482
|
+
const key = src.slice(8);
|
|
1483
|
+
const asset = context.assets && (context.assets[src] || context.assets[key]);
|
|
1484
|
+
if (asset && asset.content) return asset.content.src;
|
|
1485
|
+
return src;
|
|
1486
|
+
}
|
|
1487
|
+
if (src.startsWith("/files/")) {
|
|
1488
|
+
const key = src.slice(7);
|
|
1489
|
+
const file = context.files && (context.files[src] || context.files[key]);
|
|
1490
|
+
if (file && file.content) return file.content.src;
|
|
1491
|
+
return src;
|
|
1492
|
+
}
|
|
1493
|
+
if (context.assets) {
|
|
1494
|
+
const asset = context.assets[src];
|
|
1495
|
+
if (asset && asset.content) return asset.content.src;
|
|
1496
|
+
}
|
|
1497
|
+
if (context.files) {
|
|
1498
|
+
const file = context.files[src];
|
|
1499
|
+
if (file && file.content) return file.content.src;
|
|
1500
|
+
}
|
|
1354
1501
|
return src;
|
|
1355
1502
|
};
|
|
1356
1503
|
var ATTR_TRANSFORMS = {
|
|
1357
|
-
src: (el) => resolveFileSource(el, el.
|
|
1358
|
-
href: (el) => resolvePropValue(el, el.
|
|
1359
|
-
action: (el) => resolvePropValue(el, el.
|
|
1360
|
-
poster: (el) => resolveFileSource(el, el.
|
|
1361
|
-
data: (el) => resolvePropValue(el, el.
|
|
1504
|
+
src: (el) => resolveFileSource(el, el.src),
|
|
1505
|
+
href: (el) => resolvePropValue(el, el.href),
|
|
1506
|
+
action: (el) => resolvePropValue(el, el.action),
|
|
1507
|
+
poster: (el) => resolveFileSource(el, el.poster),
|
|
1508
|
+
data: (el) => resolvePropValue(el, el.data)
|
|
1362
1509
|
};
|
|
1363
1510
|
var applyAttrTransforms = (element) => {
|
|
1364
1511
|
const tag = element.tag || "div";
|
|
1365
|
-
const { props } = element;
|
|
1366
1512
|
const result = {};
|
|
1367
1513
|
for (const attr in ATTR_TRANSFORMS) {
|
|
1368
|
-
if (
|
|
1514
|
+
if (element[attr] !== void 0 && checkAttributeByTagName(tag, attr)) {
|
|
1369
1515
|
const val = ATTR_TRANSFORMS[attr](element);
|
|
1370
1516
|
if (val !== void 0) result[attr] = val;
|
|
1371
1517
|
}
|
|
@@ -1381,10 +1527,10 @@ var AttrsInProps = (() => {
|
|
|
1381
1527
|
var evaluateCondition = (prefix, caseKey, element) => {
|
|
1382
1528
|
if (prefix === "$") {
|
|
1383
1529
|
let result = resolveCase(caseKey, element);
|
|
1384
|
-
if (result === void 0) result = !!element
|
|
1530
|
+
if (result === void 0) result = !!element[caseKey];
|
|
1385
1531
|
return result;
|
|
1386
1532
|
}
|
|
1387
|
-
let isTruthy = element
|
|
1533
|
+
let isTruthy = element[caseKey] === true || element.state[caseKey];
|
|
1388
1534
|
if (!isTruthy) {
|
|
1389
1535
|
const caseResult = resolveCase(caseKey, element);
|
|
1390
1536
|
if (caseResult !== void 0) isTruthy = caseResult;
|
package/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
import { isDefined, isFunction, isString } from '@
|
|
3
|
+
import { isDefined, isFunction, isString } from '@symbo.ls/utils'
|
|
4
4
|
|
|
5
5
|
export const ARIA_ROLES = [
|
|
6
6
|
'alert',
|
|
@@ -1136,22 +1136,42 @@ export const resolvePropValue = (el, value) => {
|
|
|
1136
1136
|
}
|
|
1137
1137
|
|
|
1138
1138
|
/**
|
|
1139
|
-
* Resolve a file URL from context.files.
|
|
1140
|
-
* Handles absolute URLs (passthrough), /files/ prefix
|
|
1141
|
-
* and
|
|
1139
|
+
* Resolve a file URL from context.files or context.assets.
|
|
1140
|
+
* Handles absolute URLs (passthrough), /files/ and /assets/ prefix routing,
|
|
1141
|
+
* and lookup for bundler-resolved paths. An explicit `/files/` or `/assets/`
|
|
1142
|
+
* prefix is authoritative — we do NOT cross-route between the two maps.
|
|
1142
1143
|
*/
|
|
1143
1144
|
export const resolveFileSource = (el, value) => {
|
|
1144
|
-
let src = (el.
|
|
1145
|
+
let src = (el.preSrc || '') + (resolvePropValue(el, value) || '')
|
|
1145
1146
|
if (!src) return
|
|
1146
1147
|
|
|
1147
1148
|
try { new URL(src); return src } catch (e) { } // absolute URL — passthrough
|
|
1148
1149
|
|
|
1149
1150
|
const { context } = el
|
|
1150
|
-
if (!context.files) return src
|
|
1151
|
+
if (!context.files && !context.assets) return src
|
|
1151
1152
|
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1153
|
+
if (src.startsWith('/assets/')) {
|
|
1154
|
+
const key = src.slice(8)
|
|
1155
|
+
const asset = context.assets && (context.assets[src] || context.assets[key])
|
|
1156
|
+
if (asset && asset.content) return asset.content.src
|
|
1157
|
+
return src
|
|
1158
|
+
}
|
|
1159
|
+
if (src.startsWith('/files/')) {
|
|
1160
|
+
const key = src.slice(7)
|
|
1161
|
+
const file = context.files && (context.files[src] || context.files[key])
|
|
1162
|
+
if (file && file.content) return file.content.src
|
|
1163
|
+
return src
|
|
1164
|
+
}
|
|
1165
|
+
|
|
1166
|
+
// Unprefixed: try assets first (newer system), then files.
|
|
1167
|
+
if (context.assets) {
|
|
1168
|
+
const asset = context.assets[src]
|
|
1169
|
+
if (asset && asset.content) return asset.content.src
|
|
1170
|
+
}
|
|
1171
|
+
if (context.files) {
|
|
1172
|
+
const file = context.files[src]
|
|
1173
|
+
if (file && file.content) return file.content.src
|
|
1174
|
+
}
|
|
1155
1175
|
|
|
1156
1176
|
return src
|
|
1157
1177
|
}
|
|
@@ -1163,11 +1183,11 @@ export const resolveFileSource = (el, value) => {
|
|
|
1163
1183
|
* src and poster also resolve from context.files for media elements.
|
|
1164
1184
|
*/
|
|
1165
1185
|
export const ATTR_TRANSFORMS = {
|
|
1166
|
-
src: (el) => resolveFileSource(el, el.
|
|
1167
|
-
href: (el) => resolvePropValue(el, el.
|
|
1168
|
-
action: (el) => resolvePropValue(el, el.
|
|
1169
|
-
poster: (el) => resolveFileSource(el, el.
|
|
1170
|
-
data: (el) => resolvePropValue(el, el.
|
|
1186
|
+
src: (el) => resolveFileSource(el, el.src),
|
|
1187
|
+
href: (el) => resolvePropValue(el, el.href),
|
|
1188
|
+
action: (el) => resolvePropValue(el, el.action),
|
|
1189
|
+
poster: (el) => resolveFileSource(el, el.poster),
|
|
1190
|
+
data: (el) => resolvePropValue(el, el.data)
|
|
1171
1191
|
}
|
|
1172
1192
|
|
|
1173
1193
|
/**
|
|
@@ -1176,10 +1196,9 @@ export const ATTR_TRANSFORMS = {
|
|
|
1176
1196
|
*/
|
|
1177
1197
|
export const applyAttrTransforms = (element) => {
|
|
1178
1198
|
const tag = element.tag || 'div'
|
|
1179
|
-
const { props } = element
|
|
1180
1199
|
const result = {}
|
|
1181
1200
|
for (const attr in ATTR_TRANSFORMS) {
|
|
1182
|
-
if (
|
|
1201
|
+
if (element[attr] !== undefined && checkAttributeByTagName(tag, attr)) {
|
|
1183
1202
|
const val = ATTR_TRANSFORMS[attr](element)
|
|
1184
1203
|
if (val !== undefined) result[attr] = val
|
|
1185
1204
|
}
|
|
@@ -1205,12 +1224,12 @@ const resolveCase = (caseKey, element) => {
|
|
|
1205
1224
|
const evaluateCondition = (prefix, caseKey, element) => {
|
|
1206
1225
|
if (prefix === '$') {
|
|
1207
1226
|
let result = resolveCase(caseKey, element)
|
|
1208
|
-
if (result === undefined) result = !!element
|
|
1227
|
+
if (result === undefined) result = !!element[caseKey]
|
|
1209
1228
|
return result
|
|
1210
1229
|
}
|
|
1211
1230
|
|
|
1212
|
-
// . and ! prefixes: check
|
|
1213
|
-
let isTruthy = element
|
|
1231
|
+
// . and ! prefixes: check element/state first, then context.cases
|
|
1232
|
+
let isTruthy = element[caseKey] === true || element.state[caseKey]
|
|
1214
1233
|
if (!isTruthy) {
|
|
1215
1234
|
const caseResult = resolveCase(caseKey, element)
|
|
1216
1235
|
if (caseResult !== undefined) isTruthy = caseResult
|
package/package.json
CHANGED
|
@@ -2,34 +2,32 @@
|
|
|
2
2
|
"name": "attrs-in-props",
|
|
3
3
|
"description": "Utilize props as attributes",
|
|
4
4
|
"author": "symbo.ls",
|
|
5
|
-
"version": "3.
|
|
5
|
+
"version": "3.14.0",
|
|
6
6
|
"repository": "https://github.com/symbo-ls/smbls",
|
|
7
7
|
"type": "module",
|
|
8
|
-
"module": "./
|
|
8
|
+
"module": "./index.js",
|
|
9
9
|
"unpkg": "./dist/iife/index.js",
|
|
10
10
|
"jsdelivr": "./dist/iife/index.js",
|
|
11
|
-
"main": "./
|
|
11
|
+
"main": "./index.js",
|
|
12
12
|
"gitHead": "9fc1b79b41cdc725ca6b24aec64920a599634681",
|
|
13
13
|
"dependencies": {
|
|
14
|
-
"@
|
|
14
|
+
"@symbo.ls/utils": "^3.14.0"
|
|
15
15
|
},
|
|
16
16
|
"source": "index.js",
|
|
17
|
-
"browser": "./
|
|
17
|
+
"browser": "./index.js",
|
|
18
18
|
"sideEffects": false,
|
|
19
19
|
"exports": {
|
|
20
|
-
".":
|
|
21
|
-
|
|
22
|
-
"require": "./dist/cjs/index.js"
|
|
23
|
-
}
|
|
20
|
+
".": "./index.js",
|
|
21
|
+
"./package.json": "./package.json"
|
|
24
22
|
},
|
|
25
23
|
"files": [
|
|
26
24
|
"dist",
|
|
27
25
|
"*.js"
|
|
28
26
|
],
|
|
29
27
|
"scripts": {
|
|
30
|
-
"build:esm": "
|
|
31
|
-
"build:cjs": "
|
|
32
|
-
"build:iife": "
|
|
28
|
+
"build:esm": "NODE_ENV=$NODE_ENV esbuild *.js --target=es2020 --format=esm --outdir=dist/esm --define:process.env.NODE_ENV=process.env.NODE_ENV",
|
|
29
|
+
"build:cjs": "NODE_ENV=$NODE_ENV esbuild *.js --target=node18 --format=cjs --outdir=dist/cjs --define:process.env.NODE_ENV=process.env.NODE_ENV",
|
|
30
|
+
"build:iife": "NODE_ENV=$NODE_ENV esbuild index.js --bundle --target=es2020 --format=iife --global-name=AttrsInProps --outfile=dist/iife/index.js --define:process.env.NODE_ENV=process.env.NODE_ENV",
|
|
33
31
|
"build": "node ../../build/build.js",
|
|
34
32
|
"copy:package:cjs": "cp ../../build/package-cjs.json dist/cjs/package.json",
|
|
35
33
|
"prepublish": "npm run build && npm run copy:package:cjs"
|