wevu 6.22.0 → 6.23.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/dist/dev/package.mjs
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { isReactive, reactive } from "../../reactivity/reactive.mjs";
|
|
2
1
|
import { isRef } from "../../reactivity/ref.mjs";
|
|
3
2
|
|
|
4
3
|
//#region src/runtime/register/inline.ts
|
|
@@ -12,11 +11,12 @@ const GT_RE = />/g;
|
|
|
12
11
|
function decodeWxmlEntities(value) {
|
|
13
12
|
return value.replace(AMP_RE, "&").replace(QUOT_RE, "\"").replace(NUM_QUOT_RE, "\"").replace(APOS_RE, "'").replace(NUM_APOS_RE, "'").replace(LT_RE, "<").replace(GT_RE, ">");
|
|
14
13
|
}
|
|
14
|
+
const DATASET_ARRAY_INDEX_RE = /^(?:0|[1-9]\d*)$/;
|
|
15
15
|
function normalizeDatasetIndex(value) {
|
|
16
16
|
if (typeof value === "number" && Number.isFinite(value)) return value;
|
|
17
17
|
if (typeof value === "string" && value.trim()) {
|
|
18
|
-
const
|
|
19
|
-
|
|
18
|
+
const trimmed = value.trim();
|
|
19
|
+
return DATASET_ARRAY_INDEX_RE.test(trimmed) ? Number(trimmed) : trimmed;
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
22
|
const NON_ALNUM_RE = /[^a-z0-9]+/gi;
|
|
@@ -84,13 +84,7 @@ function getByPath(target, path) {
|
|
|
84
84
|
return current;
|
|
85
85
|
}
|
|
86
86
|
function normalizeResolvedScopeValue(value) {
|
|
87
|
-
|
|
88
|
-
if (isRef(value) || isReactive(value)) return value;
|
|
89
|
-
try {
|
|
90
|
-
return reactive(value);
|
|
91
|
-
} catch (_unused) {
|
|
92
|
-
return value;
|
|
93
|
-
}
|
|
87
|
+
return value;
|
|
94
88
|
}
|
|
95
89
|
function runInlineExpression(ctx, expr, event, inlineMap) {
|
|
96
90
|
var _ref, _dataset, _ref2, _ref3;
|
|
@@ -125,7 +119,7 @@ function runInlineExpression(ctx, expr, event, inlineMap) {
|
|
|
125
119
|
resolved = list === null || list === void 0 ? void 0 : list[index];
|
|
126
120
|
} else continue;
|
|
127
121
|
if (resolved !== void 0) scope[key] = normalizeResolvedScopeValue(resolved);
|
|
128
|
-
} catch (
|
|
122
|
+
} catch (_unused) {}
|
|
129
123
|
}
|
|
130
124
|
const result = entry.fn(ctx, scope, inlineEvent);
|
|
131
125
|
if (typeof result === "function") return result.call(ctx, inlineEvent);
|
|
@@ -140,10 +134,10 @@ function runInlineExpression(ctx, expr, event, inlineMap) {
|
|
|
140
134
|
if (Array.isArray(argsRaw)) args = argsRaw;
|
|
141
135
|
else if (typeof argsRaw === "string") try {
|
|
142
136
|
args = JSON.parse(argsRaw);
|
|
143
|
-
} catch (
|
|
137
|
+
} catch (_unused2) {
|
|
144
138
|
try {
|
|
145
139
|
args = JSON.parse(decodeWxmlEntities(argsRaw));
|
|
146
|
-
} catch (
|
|
140
|
+
} catch (_unused3) {
|
|
147
141
|
args = [];
|
|
148
142
|
}
|
|
149
143
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inline.mjs","names":[],"sources":["../../../../src/runtime/register/inline.ts"],"sourcesContent":["import { isReactive, isRef, reactive } from '../../reactivity'\n\nexport interface InlineExpressionEntry {\n keys: string[]\n indexKeys?: string[]\n scopeResolvers?: Array<InlineExpressionScopeResolver | ((ctx: any, scope: Record<string, any>, event: any) => any) | undefined>\n fn: (ctx: any, scope: Record<string, any>, event: any) => any\n}\n\ninterface InlineExpressionScopeResolver {\n type: 'for-item'\n path: string\n indexKey: string\n}\n\nexport type InlineExpressionMap = Record<string, InlineExpressionEntry>\n\nconst AMP_RE = /&/g\nconst QUOT_RE = /"/g\nconst NUM_QUOT_RE = /"/g\nconst APOS_RE = /'/g\nconst NUM_APOS_RE = /'/g\nconst LT_RE = /</g\nconst GT_RE = />/g\n\nexport function decodeWxmlEntities(value: string) {\n return value\n .replace(AMP_RE, '&')\n .replace(QUOT_RE, '\"')\n .replace(NUM_QUOT_RE, '\"')\n .replace(APOS_RE, '\\'')\n .replace(NUM_APOS_RE, '\\'')\n .replace(LT_RE, '<')\n .replace(GT_RE, '>')\n}\n\nfunction normalizeDatasetIndex(value: unknown): number | undefined {\n if (typeof value === 'number' && Number.isFinite(value)) {\n return value\n }\n if (typeof value === 'string' && value.trim()) {\n const parsed = Number(value)\n if (Number.isFinite(parsed)) {\n return parsed\n }\n }\n return undefined\n}\n\nconst NON_ALNUM_RE = /[^a-z0-9]+/gi\nconst LEADING_TRAILING_DASH_RE = /^-+|-+$/g\n\nfunction normalizeEventToken(value: string): string {\n return value\n .trim()\n .replace(NON_ALNUM_RE, '-')\n .replace(LEADING_TRAILING_DASH_RE, '')\n .toLowerCase()\n}\n\nconst DASH_ALNUM_RE = /-([a-z0-9])/g\nconst DATASET_KEY_SEPARATOR_RE = /[-_]/g\n\nfunction resolveNormalizedDatasetValue(dataset: Record<string, any>, key: string) {\n const normalizedKey = key.replace(DATASET_KEY_SEPARATOR_RE, '').toLowerCase()\n for (const [datasetKey, value] of Object.entries(dataset ?? {})) {\n if (datasetKey.replace(DATASET_KEY_SEPARATOR_RE, '').toLowerCase() === normalizedKey) {\n return value\n }\n }\n return undefined\n}\n\nfunction resolveEventDatasetKey(baseKey: string, event: any): string | undefined {\n const eventType = typeof event?.type === 'string' ? event.type : ''\n const token = normalizeEventToken(eventType)\n if (!token) {\n return undefined\n }\n const camelToken = token.replace(DASH_ALNUM_RE, (_, ch: string) => ch.toUpperCase())\n if (!camelToken) {\n return undefined\n }\n return `${baseKey}${camelToken[0].toUpperCase()}${camelToken.slice(1)}`\n}\n\nconst DATASET_KEY_ALIASES: Record<string, string[]> = {\n wvEventDetail: ['wd', 'wvEventDetail'],\n wvHandler: ['wh', 'wvHandler'],\n wvInlineId: ['wi', 'wvInlineId'],\n}\n\nfunction resolveDatasetValueByBaseKey(\n dataset: Record<string, any>,\n baseKey: string,\n event: any,\n) {\n const aliasKeys = DATASET_KEY_ALIASES[baseKey] ?? [baseKey]\n for (const aliasKey of aliasKeys) {\n const specificKey = resolveEventDatasetKey(aliasKey, event)\n if (specificKey && dataset?.[specificKey] !== undefined) {\n return dataset[specificKey]\n }\n if (specificKey) {\n const normalizedValue = resolveNormalizedDatasetValue(dataset, specificKey)\n if (normalizedValue !== undefined) {\n return normalizedValue\n }\n }\n }\n for (const aliasKey of aliasKeys) {\n if (dataset?.[aliasKey] !== undefined) {\n return dataset[aliasKey]\n }\n const normalizedValue = resolveNormalizedDatasetValue(dataset, aliasKey)\n if (normalizedValue !== undefined) {\n return normalizedValue\n }\n }\n return undefined\n}\n\nexport function resolveDatasetEventValue(\n dataset: Record<string, any>,\n baseKey: string,\n event: any,\n): any {\n return resolveDatasetValueByBaseKey(dataset, baseKey, event)\n}\n\nfunction shouldUseDetailPayload(dataset: Record<string, any>, event: any): boolean {\n const flag = resolveDatasetEventValue(dataset, 'wvEventDetail', event)\n return flag === true || flag === 1 || flag === '1' || flag === 'true'\n}\n\nfunction resolveInlineEventArg(event: any, dataset: Record<string, any>): any {\n if (!shouldUseDetailPayload(dataset, event)) {\n return event\n }\n if (!event || typeof event !== 'object' || !('detail' in event)) {\n return undefined\n }\n return (event as any).detail\n}\n\nfunction getByPath(target: any, path: string) {\n if (!path) {\n return undefined\n }\n const segments = path.split('.').filter(Boolean)\n let current = isRef(target) ? target.value : target\n for (const segment of segments) {\n if (isRef(current)) {\n current = current.value\n }\n if (current == null) {\n return undefined\n }\n current = current[segment]\n }\n if (isRef(current)) {\n return current.value\n }\n return current\n}\n\nfunction normalizeResolvedScopeValue(value: any) {\n if (value == null || typeof value !== 'object') {\n return value\n }\n if (isRef(value) || isReactive(value)) {\n return value\n }\n try {\n return reactive(value)\n }\n catch {\n return value\n }\n}\n\nexport function runInlineExpression(\n ctx: any,\n expr: unknown,\n event: any,\n inlineMap?: InlineExpressionMap,\n) {\n const dataset = (event?.currentTarget as any)?.dataset ?? (event?.target as any)?.dataset ?? {}\n const inlineEvent = resolveInlineEventArg(event, dataset)\n const inlineId = resolveDatasetEventValue(dataset, 'wvInlineId', event)\n if (inlineId && inlineMap) {\n const entry = inlineMap[inlineId]\n if (entry && typeof entry.fn === 'function') {\n const scope: Record<string, any> = {}\n const keys = Array.isArray(entry.keys) ? entry.keys : []\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i]\n scope[key] = dataset?.[`wvS${i}`]\n }\n const indexKeys = Array.isArray(entry.indexKeys) ? entry.indexKeys : []\n for (let i = 0; i < indexKeys.length; i += 1) {\n const indexKey = indexKeys[i]\n const indexValue = normalizeDatasetIndex(dataset?.[`wvI${i}`])\n if (indexValue !== undefined) {\n scope[indexKey] = indexValue\n }\n }\n const scopeResolvers = Array.isArray(entry.scopeResolvers) ? entry.scopeResolvers : []\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i]\n const resolver = scopeResolvers[i]\n try {\n let resolved: any\n if (typeof resolver === 'function') {\n resolved = resolver(ctx, scope, inlineEvent)\n }\n else if (resolver && typeof resolver === 'object' && resolver.type === 'for-item') {\n const index = scope[resolver.indexKey]\n const list = getByPath(ctx, resolver.path)\n resolved = list?.[index]\n }\n else {\n continue\n }\n if (resolved !== undefined) {\n scope[key] = normalizeResolvedScopeValue(resolved)\n }\n }\n catch {\n // 解析失败时保持 dataset 快照回退。\n }\n }\n const result = entry.fn(ctx, scope, inlineEvent)\n if (typeof result === 'function') {\n return result.call(ctx, inlineEvent)\n }\n return result\n }\n }\n\n const datasetHandler = resolveDatasetEventValue(dataset, 'wvHandler', event)\n const handlerName = typeof expr === 'string' && expr\n ? expr\n : (typeof datasetHandler === 'string' ? datasetHandler : undefined)\n if (!handlerName) {\n return undefined\n }\n const argsRaw = resolveDatasetEventValue(dataset, 'wvArgs', event)\n let args: any[] = []\n if (Array.isArray(argsRaw)) {\n args = argsRaw\n }\n else if (typeof argsRaw === 'string') {\n try {\n args = JSON.parse(argsRaw)\n }\n catch {\n try {\n args = JSON.parse(decodeWxmlEntities(argsRaw))\n }\n catch {\n args = []\n }\n }\n }\n if (!Array.isArray(args)) {\n args = []\n }\n const resolvedArgs = args.map((item: any) => item === '$event' ? inlineEvent : item)\n const handler = (ctx as any)?.[handlerName]\n if (typeof handler === 'function') {\n return handler.apply(ctx, resolvedArgs)\n }\n return undefined\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"inline.mjs","names":[],"sources":["../../../../src/runtime/register/inline.ts"],"sourcesContent":["import { isRef } from '../../reactivity'\n\nexport interface InlineExpressionEntry {\n keys: string[]\n indexKeys?: string[]\n scopeResolvers?: Array<InlineExpressionScopeResolver | ((ctx: any, scope: Record<string, any>, event: any) => any) | undefined>\n fn: (ctx: any, scope: Record<string, any>, event: any) => any\n}\n\ninterface InlineExpressionScopeResolver {\n type: 'for-item'\n path: string\n indexKey: string\n}\n\nexport type InlineExpressionMap = Record<string, InlineExpressionEntry>\n\nconst AMP_RE = /&/g\nconst QUOT_RE = /"/g\nconst NUM_QUOT_RE = /"/g\nconst APOS_RE = /'/g\nconst NUM_APOS_RE = /'/g\nconst LT_RE = /</g\nconst GT_RE = />/g\n\nexport function decodeWxmlEntities(value: string) {\n return value\n .replace(AMP_RE, '&')\n .replace(QUOT_RE, '\"')\n .replace(NUM_QUOT_RE, '\"')\n .replace(APOS_RE, '\\'')\n .replace(NUM_APOS_RE, '\\'')\n .replace(LT_RE, '<')\n .replace(GT_RE, '>')\n}\nconst DATASET_ARRAY_INDEX_RE = /^(?:0|[1-9]\\d*)$/\n\nfunction normalizeDatasetIndex(value: unknown): number | string | undefined {\n if (typeof value === 'number' && Number.isFinite(value)) {\n return value\n }\n if (typeof value === 'string' && value.trim()) {\n const trimmed = value.trim()\n return DATASET_ARRAY_INDEX_RE.test(trimmed) ? Number(trimmed) : trimmed\n }\n return undefined\n}\n\nconst NON_ALNUM_RE = /[^a-z0-9]+/gi\nconst LEADING_TRAILING_DASH_RE = /^-+|-+$/g\n\nfunction normalizeEventToken(value: string): string {\n return value\n .trim()\n .replace(NON_ALNUM_RE, '-')\n .replace(LEADING_TRAILING_DASH_RE, '')\n .toLowerCase()\n}\n\nconst DASH_ALNUM_RE = /-([a-z0-9])/g\nconst DATASET_KEY_SEPARATOR_RE = /[-_]/g\n\nfunction resolveNormalizedDatasetValue(dataset: Record<string, any>, key: string) {\n const normalizedKey = key.replace(DATASET_KEY_SEPARATOR_RE, '').toLowerCase()\n for (const [datasetKey, value] of Object.entries(dataset ?? {})) {\n if (datasetKey.replace(DATASET_KEY_SEPARATOR_RE, '').toLowerCase() === normalizedKey) {\n return value\n }\n }\n return undefined\n}\n\nfunction resolveEventDatasetKey(baseKey: string, event: any): string | undefined {\n const eventType = typeof event?.type === 'string' ? event.type : ''\n const token = normalizeEventToken(eventType)\n if (!token) {\n return undefined\n }\n const camelToken = token.replace(DASH_ALNUM_RE, (_, ch: string) => ch.toUpperCase())\n if (!camelToken) {\n return undefined\n }\n return `${baseKey}${camelToken[0].toUpperCase()}${camelToken.slice(1)}`\n}\n\nconst DATASET_KEY_ALIASES: Record<string, string[]> = {\n wvEventDetail: ['wd', 'wvEventDetail'],\n wvHandler: ['wh', 'wvHandler'],\n wvInlineId: ['wi', 'wvInlineId'],\n}\n\nfunction resolveDatasetValueByBaseKey(\n dataset: Record<string, any>,\n baseKey: string,\n event: any,\n) {\n const aliasKeys = DATASET_KEY_ALIASES[baseKey] ?? [baseKey]\n for (const aliasKey of aliasKeys) {\n const specificKey = resolveEventDatasetKey(aliasKey, event)\n if (specificKey && dataset?.[specificKey] !== undefined) {\n return dataset[specificKey]\n }\n if (specificKey) {\n const normalizedValue = resolveNormalizedDatasetValue(dataset, specificKey)\n if (normalizedValue !== undefined) {\n return normalizedValue\n }\n }\n }\n for (const aliasKey of aliasKeys) {\n if (dataset?.[aliasKey] !== undefined) {\n return dataset[aliasKey]\n }\n const normalizedValue = resolveNormalizedDatasetValue(dataset, aliasKey)\n if (normalizedValue !== undefined) {\n return normalizedValue\n }\n }\n return undefined\n}\n\nexport function resolveDatasetEventValue(\n dataset: Record<string, any>,\n baseKey: string,\n event: any,\n): any {\n return resolveDatasetValueByBaseKey(dataset, baseKey, event)\n}\n\nfunction shouldUseDetailPayload(dataset: Record<string, any>, event: any): boolean {\n const flag = resolveDatasetEventValue(dataset, 'wvEventDetail', event)\n return flag === true || flag === 1 || flag === '1' || flag === 'true'\n}\n\nfunction resolveInlineEventArg(event: any, dataset: Record<string, any>): any {\n if (!shouldUseDetailPayload(dataset, event)) {\n return event\n }\n if (!event || typeof event !== 'object' || !('detail' in event)) {\n return undefined\n }\n return (event as any).detail\n}\n\nfunction getByPath(target: any, path: string) {\n if (!path) {\n return undefined\n }\n const segments = path.split('.').filter(Boolean)\n let current = isRef(target) ? target.value : target\n for (const segment of segments) {\n if (isRef(current)) {\n current = current.value\n }\n if (current == null) {\n return undefined\n }\n current = current[segment]\n }\n if (isRef(current)) {\n return current.value\n }\n return current\n}\n\nfunction normalizeResolvedScopeValue(value: any) {\n return value\n}\n\nexport function runInlineExpression(\n ctx: any,\n expr: unknown,\n event: any,\n inlineMap?: InlineExpressionMap,\n) {\n const dataset = (event?.currentTarget as any)?.dataset ?? (event?.target as any)?.dataset ?? {}\n const inlineEvent = resolveInlineEventArg(event, dataset)\n const inlineId = resolveDatasetEventValue(dataset, 'wvInlineId', event)\n if (inlineId && inlineMap) {\n const entry = inlineMap[inlineId]\n if (entry && typeof entry.fn === 'function') {\n const scope: Record<string, any> = {}\n const keys = Array.isArray(entry.keys) ? entry.keys : []\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i]\n scope[key] = dataset?.[`wvS${i}`]\n }\n const indexKeys = Array.isArray(entry.indexKeys) ? entry.indexKeys : []\n for (let i = 0; i < indexKeys.length; i += 1) {\n const indexKey = indexKeys[i]\n const indexValue = normalizeDatasetIndex(dataset?.[`wvI${i}`])\n if (indexValue !== undefined) {\n scope[indexKey] = indexValue\n }\n }\n const scopeResolvers = Array.isArray(entry.scopeResolvers) ? entry.scopeResolvers : []\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i]\n const resolver = scopeResolvers[i]\n try {\n let resolved: any\n if (typeof resolver === 'function') {\n resolved = resolver(ctx, scope, inlineEvent)\n }\n else if (resolver && typeof resolver === 'object' && resolver.type === 'for-item') {\n const index = scope[resolver.indexKey]\n const list = getByPath(ctx, resolver.path)\n resolved = list?.[index]\n }\n else {\n continue\n }\n if (resolved !== undefined) {\n scope[key] = normalizeResolvedScopeValue(resolved)\n }\n }\n catch {\n // 解析失败时保持 dataset 快照回退。\n }\n }\n const result = entry.fn(ctx, scope, inlineEvent)\n if (typeof result === 'function') {\n return result.call(ctx, inlineEvent)\n }\n return result\n }\n }\n\n const datasetHandler = resolveDatasetEventValue(dataset, 'wvHandler', event)\n const handlerName = typeof expr === 'string' && expr\n ? expr\n : (typeof datasetHandler === 'string' ? datasetHandler : undefined)\n if (!handlerName) {\n return undefined\n }\n const argsRaw = resolveDatasetEventValue(dataset, 'wvArgs', event)\n let args: any[] = []\n if (Array.isArray(argsRaw)) {\n args = argsRaw\n }\n else if (typeof argsRaw === 'string') {\n try {\n args = JSON.parse(argsRaw)\n }\n catch {\n try {\n args = JSON.parse(decodeWxmlEntities(argsRaw))\n }\n catch {\n args = []\n }\n }\n }\n if (!Array.isArray(args)) {\n args = []\n }\n const resolvedArgs = args.map((item: any) => item === '$event' ? inlineEvent : item)\n const handler = (ctx as any)?.[handlerName]\n if (typeof handler === 'function') {\n return handler.apply(ctx, resolvedArgs)\n }\n return undefined\n}\n"],"mappings":"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"}
|
package/dist/package.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var e=`6.
|
|
1
|
+
var e=`6.23.0`;export{e as version};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{isRef as e}from"../../reactivity/ref.mjs";const t=/&/g,n=/"/g,r=/"/g,i=/'/g,a=/'/g,o=/</g,s=/>/g;function c(e){return e.replace(t,`&`).replace(n,`"`).replace(r,`"`).replace(i,`'`).replace(a,`'`).replace(o,`<`).replace(s,`>`)}const l=/^(?:0|[1-9]\d*)$/;function u(e){if(typeof e==`number`&&Number.isFinite(e))return e;if(typeof e==`string`&&e.trim()){let t=e.trim();return l.test(t)?Number(t):t}}const d=/[^a-z0-9]+/gi,f=/^-+|-+$/g;function p(e){return e.trim().replace(d,`-`).replace(f,``).toLowerCase()}const m=/-([a-z0-9])/g,h=/[-_]/g;function g(e,t){let n=t.replace(h,``).toLowerCase();for(let[t,r]of Object.entries(e==null?{}:e))if(t.replace(h,``).toLowerCase()===n)return r}function _(e,t){let n=p(typeof(t==null?void 0:t.type)==`string`?t.type:``);if(!n)return;let r=n.replace(m,(e,t)=>t.toUpperCase());if(r)return`${e}${r[0].toUpperCase()}${r.slice(1)}`}const v={wvEventDetail:[`wd`,`wvEventDetail`],wvHandler:[`wh`,`wvHandler`],wvInlineId:[`wi`,`wvInlineId`]};function y(e,t,n){var r;let i=(r=v[t])==null?[t]:r;for(let t of i){let r=_(t,n);if(r&&(e==null?void 0:e[r])!==void 0)return e[r];if(r){let t=g(e,r);if(t!==void 0)return t}}for(let t of i){if((e==null?void 0:e[t])!==void 0)return e[t];let n=g(e,t);if(n!==void 0)return n}}function b(e,t,n){return y(e,t,n)}function x(e,t){let n=b(e,`wvEventDetail`,t);return n===!0||n===1||n===`1`||n===`true`}function S(e,t){if(!x(t,e))return e;if(!(!e||typeof e!=`object`||!(`detail`in e)))return e.detail}function C(t,n){if(!n)return;let r=n.split(`.`).filter(Boolean),i=e(t)?t.value:t;for(let t of r){if(e(i)&&(i=i.value),i==null)return;i=i[t]}return e(i)?i.value:i}function w(e){return e}function T(e,t,n,r){var i,a,o,s;let l=(i=(a=n==null||(o=n.currentTarget)==null?void 0:o.dataset)==null?n==null||(s=n.target)==null?void 0:s.dataset:a)==null?{}:i,d=S(n,l),f=b(l,`wvInlineId`,n);if(f&&r){let t=r[f];if(t&&typeof t.fn==`function`){let n={},r=Array.isArray(t.keys)?t.keys:[];for(let e=0;e<r.length;e+=1){let t=r[e];n[t]=l==null?void 0:l[`wvS${e}`]}let i=Array.isArray(t.indexKeys)?t.indexKeys:[];for(let e=0;e<i.length;e+=1){let t=i[e],r=u(l==null?void 0:l[`wvI${e}`]);r!==void 0&&(n[t]=r)}let a=Array.isArray(t.scopeResolvers)?t.scopeResolvers:[];for(let t=0;t<r.length;t+=1){let i=r[t],o=a[t];try{let t;if(typeof o==`function`)t=o(e,n,d);else if(o&&typeof o==`object`&&o.type===`for-item`){let r=n[o.indexKey],i=C(e,o.path);t=i==null?void 0:i[r]}else continue;t!==void 0&&(n[i]=w(t))}catch(e){}}let o=t.fn(e,n,d);return typeof o==`function`?o.call(e,d):o}}let p=b(l,`wvHandler`,n),m=typeof t==`string`&&t?t:typeof p==`string`?p:void 0;if(!m)return;let h=b(l,`wvArgs`,n),g=[];if(Array.isArray(h))g=h;else if(typeof h==`string`)try{g=JSON.parse(h)}catch(e){try{g=JSON.parse(c(h))}catch(e){g=[]}}Array.isArray(g)||(g=[]);let _=g.map(e=>e===`$event`?d:e),v=e==null?void 0:e[m];if(typeof v==`function`)return v.apply(e,_)}export{c as decodeWxmlEntities,b as resolveDatasetEventValue,T as runInlineExpression};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "wevu",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "6.
|
|
4
|
+
"version": "6.23.0",
|
|
5
5
|
"description": "Vue 3 风格的小程序运行时,包含响应式、diff+setData 与轻量状态管理",
|
|
6
6
|
"author": "ice breaker <1324318532@qq.com>",
|
|
7
7
|
"license": "MIT",
|
|
@@ -226,11 +226,11 @@
|
|
|
226
226
|
},
|
|
227
227
|
"dependencies": {
|
|
228
228
|
"vue": "^3.5.41",
|
|
229
|
+
"@weapp-core/shared": "3.2.0",
|
|
229
230
|
"@weapp-core/constants": "0.2.0",
|
|
230
|
-
"@wevu/api": "0.2.
|
|
231
|
-
"@wevu/compiler": "6.
|
|
232
|
-
"@wevu/web-apis": "1.2.
|
|
233
|
-
"@weapp-core/shared": "3.1.1"
|
|
231
|
+
"@wevu/api": "0.2.17",
|
|
232
|
+
"@wevu/compiler": "6.23.0",
|
|
233
|
+
"@wevu/web-apis": "1.2.36"
|
|
234
234
|
},
|
|
235
235
|
"scripts": {
|
|
236
236
|
"dev": "tsdown -w",
|