@tarojs/plugin-html 3.8.0-canary.0 → 4.0.0-beta.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/runtime.js CHANGED
@@ -1,4 +1,5 @@
1
- import { isString, isFunction, hooks, warn, toCamelCase } from '@tarojs/shared';
1
+ import { isHasExtractProp } from '@tarojs/runtime';
2
+ import { isString, isFunction, toCamelCase, hooks, warn } from '@tarojs/shared';
2
3
 
3
4
  function genAttrMapFnFromDir(dir) {
4
5
  const fn = function (key, value) {
@@ -121,7 +122,7 @@ function isHtmlTags(nodeName) {
121
122
  }
122
123
  return false;
123
124
  }
124
- function getMappedType(nodeName, rawProps) {
125
+ function getMappedType(nodeName, rawProps, node) {
125
126
  if (inlineElements.has(nodeName)) {
126
127
  return 'text';
127
128
  }
@@ -134,7 +135,24 @@ function getMappedType(nodeName, rawProps) {
134
135
  return isFunction(mapName) ? mapName(rawProps) : mapName;
135
136
  }
136
137
  else {
137
- return 'view';
138
+ if (node) {
139
+ const { props } = node;
140
+ for (const prop in props) {
141
+ const propInCamelCase = toCamelCase(prop);
142
+ if (propInCamelCase === 'catchMove' && props[prop] !== false) {
143
+ return 'catch-view';
144
+ }
145
+ }
146
+ }
147
+ if (!node || node.isAnyEventBinded()) {
148
+ return 'view';
149
+ }
150
+ else if (isHasExtractProp(node)) {
151
+ return 'static-view';
152
+ }
153
+ else {
154
+ return 'pure-view';
155
+ }
138
156
  }
139
157
  }
140
158
  function getAttrMapFn(nodeName) {
@@ -196,13 +214,13 @@ function defineMappedProp(obj, propName, mapName) {
196
214
  });
197
215
  }
198
216
 
199
- hooks.tap('modifyHydrateData', data => {
217
+ hooks.tap('modifyHydrateData', (data, node) => {
200
218
  const nodeName = data["nn" /* Shortcuts.NodeName */];
201
219
  if (!isHtmlTags(nodeName))
202
220
  return;
203
221
  process.env.NODE_ENV !== 'production' && warn(data["nn" /* Shortcuts.NodeName */] === 'select', '请使用 Picker 组件代替 <select>');
204
222
  // map nodeName
205
- data["nn" /* Shortcuts.NodeName */] = getMappedType(nodeName, data);
223
+ data["nn" /* Shortcuts.NodeName */] = getMappedType(nodeName, data, node);
206
224
  // map attr Key/Value
207
225
  const attrMapFn = getAttrMapFn(nodeName);
208
226
  if (attrMapFn) {
@@ -253,6 +271,29 @@ hooks.tap('modifySetAttrPayload', (element, key, payload, componentsAlias) => {
253
271
  payload.path = `${_path}.${"st" /* Shortcuts.Style */}`;
254
272
  payload.value = ensureRect(props, element.style.cssText);
255
273
  }
274
+ if (blockElements.has(element.nodeName)) {
275
+ const viewAlias = componentsAlias.view._num;
276
+ const staticViewAlias = componentsAlias['static-view']._num;
277
+ const catchViewAlias = componentsAlias['catch-view']._num;
278
+ const qualifiedNameInCamelCase = toCamelCase(key);
279
+ const dataPath = `${_path}.${"nn" /* Shortcuts.NodeName */}`;
280
+ if (qualifiedNameInCamelCase === 'catchMove') {
281
+ // catchMove = true: catch-view
282
+ // catchMove = false: view or static-view
283
+ element.enqueueUpdate({
284
+ path: dataPath,
285
+ value: payload.value ? catchViewAlias : (element.isAnyEventBinded() ? viewAlias : staticViewAlias)
286
+ });
287
+ }
288
+ else if (isHasExtractProp(element) && !element.isAnyEventBinded()) {
289
+ // pure-view => static-view
290
+ // static-view => static-view 因为没有办法分辨之前是不是 pure,所以就算之前是 static 也需要 setData
291
+ element.enqueueUpdate({
292
+ path: dataPath,
293
+ value: staticViewAlias
294
+ });
295
+ }
296
+ }
256
297
  });
257
298
  hooks.tap('modifyRmAttrPayload', (element, key, payload, componentsAlias) => {
258
299
  const { nodeName, _path, props } = element;
@@ -279,6 +320,28 @@ hooks.tap('modifyRmAttrPayload', (element, key, payload, componentsAlias) => {
279
320
  payload.path = `${_path}.${"st" /* Shortcuts.Style */}`;
280
321
  payload.value = ensureRect(props, element.style.cssText);
281
322
  }
323
+ if (blockElements.has(element.nodeName)) {
324
+ const viewAlias = componentsAlias.view._num;
325
+ const staticViewAlias = componentsAlias['static-view']._num;
326
+ const pureViewAlias = componentsAlias['pure-view']._num;
327
+ const qualifiedNameInCamelCase = toCamelCase(key);
328
+ const dataPath = `${_path}.${"nn" /* Shortcuts.NodeName */}`;
329
+ if (qualifiedNameInCamelCase === 'catchMove') {
330
+ // catch-view => view or static-view or pure-view
331
+ element.enqueueUpdate({
332
+ path: dataPath,
333
+ value: element.isAnyEventBinded() ? viewAlias : (isHasExtractProp(element) ? staticViewAlias : pureViewAlias)
334
+ });
335
+ }
336
+ else if (!isHasExtractProp(element)) {
337
+ // static-view => pure-view
338
+ // pure-view => pure-view 因为没有办法分辨之前是不是 pure,所以就算之前是 pure 也需要 setData
339
+ element.enqueueUpdate({
340
+ path: dataPath,
341
+ value: pureViewAlias
342
+ });
343
+ }
344
+ }
282
345
  });
283
346
  hooks.tap('onAddEvent', (type, _handler, _options, node) => {
284
347
  node = node;
@@ -319,4 +382,27 @@ hooks.tap('modifyTaroEvent', (event, element) => {
319
382
  }
320
383
  }
321
384
  });
385
+ hooks.tap('modifyAddEventListener', (element, sideEffect, getComponentsAlias) => {
386
+ // 如果是从没有事件绑定到有事件绑定,且是 block 元素,则转换为 view
387
+ if (blockElements.has(element.nodeName) && sideEffect !== false && !element.isAnyEventBinded()) {
388
+ const componentsAlias = getComponentsAlias();
389
+ const alias = componentsAlias.view._num;
390
+ element.enqueueUpdate({
391
+ path: `${element._path}.${"nn" /* Shortcuts.NodeName */}`,
392
+ value: alias
393
+ });
394
+ }
395
+ });
396
+ hooks.tap('modifyRemoveEventListener', (element, sideEffect, getComponentsAlias) => {
397
+ // 如果已没有绑定事件,且是 block 元素,则转换为 static-view 或 pure-view
398
+ if (blockElements.has(element.nodeName) && sideEffect !== false && !element.isAnyEventBinded()) {
399
+ const componentsAlias = getComponentsAlias();
400
+ const value = isHasExtractProp(element) ? 'static-view' : 'pure-view';
401
+ const valueAlias = componentsAlias[value]._num;
402
+ element.enqueueUpdate({
403
+ path: `${element._path}.${"nn" /* Shortcuts.NodeName */}`,
404
+ value: valueAlias
405
+ });
406
+ }
407
+ });
322
408
  //# sourceMappingURL=runtime.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sources":["../src/constant.ts","../src/utils.ts","../src/runtime.ts"],"sourcesContent":["import { isString } from '@tarojs/shared'\n\ninterface SpecialMaps {\n mapName: string | SpecialMaps.MapNameFn\n mapNameCondition?: string[]\n mapAttr?: SpecialMaps.MapAttrFn\n}\n\nexport namespace SpecialMaps {\n export interface MapNameFn {\n (props: Record<string, any>): string\n }\n export interface MapAttrFn {\n (key: string, value: any, props: Record<string, any>): [string, any]\n }\n}\n\nfunction genAttrMapFnFromDir (dir: Record<string, string | [string, Record<string, any>]>): SpecialMaps.MapAttrFn {\n const fn: SpecialMaps.MapAttrFn = function (key, value) {\n const lowerKey = key.toLowerCase()\n if (lowerKey in dir) {\n const res = dir[lowerKey]\n if (isString(res)) {\n key = res\n } else {\n key = res[0]\n value = res[1][value] || value\n }\n }\n return [key, value]\n }\n return fn\n}\n\nexport const inlineElements = new Set<string>([])\nexport const blockElements = new Set<string>([])\nexport const specialElements = new Map<string, string | SpecialMaps>([\n ['slot', 'slot'],\n ['form', 'form'],\n ['iframe', 'web-view'],\n ['img', 'image'],\n ['audio', 'audio'],\n ['video', 'video'],\n ['canvas', 'canvas'],\n ['a', {\n mapName (props) {\n if(props.as && isString(props.as)) return props.as.toLowerCase()\n return !props.href || (/^javascript/.test(props.href)) ? 'view' : 'navigator'\n },\n mapNameCondition: ['href'],\n mapAttr: genAttrMapFnFromDir({\n href: 'url',\n target: ['openType', {\n _blank: 'navigate',\n _self: 'redirect'\n }]\n })\n }],\n ['input', {\n mapName (props) {\n if (props.type === 'checkbox') {\n return 'checkbox'\n } else if (props.type === 'radio') {\n return 'radio'\n }\n return 'input'\n },\n mapNameCondition: ['type'],\n mapAttr (key, value, props) {\n const htmlKey = key.toLowerCase()\n if (htmlKey === 'autofocus') {\n key = 'focus'\n } else if (htmlKey === 'readonly') {\n if (props.disabled === true) {\n value = true\n }\n key = 'disabled'\n } else if (htmlKey === 'type') {\n if (value === 'password') {\n key = 'password'\n value = true\n } else if (value === 'tel') {\n value = 'number'\n }\n } else if (htmlKey === 'maxlength') {\n key = 'maxlength'\n }\n return [key, value]\n }\n }],\n ['label', {\n mapName: 'label',\n mapAttr: genAttrMapFnFromDir({\n htmlfor: 'for'\n })\n }],\n ['textarea', {\n mapName: 'textarea',\n mapAttr: genAttrMapFnFromDir({\n autofocus: 'focus',\n readonly: 'disabled',\n maxlength: 'maxlength'\n })\n }],\n ['progress', {\n mapName: 'progress',\n mapAttr (key, value, props) {\n if (key === 'value') {\n const max = props.max || 1\n key = 'percent'\n value = Math.round(value / max * 100)\n }\n return [key, value]\n }\n }],\n ['button', {\n mapName: 'button',\n mapAttr (key, value) {\n if (key === 'type' && (value === 'submit' || value === 'reset')) {\n key = 'formType'\n }\n return [key, value]\n }\n }]\n])\n","import { isFunction, isString, Shortcuts } from '@tarojs/shared'\n\nimport {\n blockElements,\n inlineElements,\n specialElements,\n SpecialMaps\n} from './constant'\n\nexport function isHtmlTags (nodeName: string): boolean {\n if (inlineElements.has(nodeName) || blockElements.has(nodeName) || specialElements.has(nodeName)) {\n return true\n }\n return false\n}\n\nexport function getMappedType (nodeName: string, rawProps: Record<string, any>): string {\n if (inlineElements.has(nodeName)) {\n return 'text'\n } else if (specialElements.has(nodeName)) {\n const mapping = specialElements.get(nodeName)!\n if (isString(mapping)) {\n return mapping\n }\n const { mapName } = mapping\n return isFunction(mapName) ? mapName(rawProps) : mapName\n } else {\n return 'view'\n }\n}\n\nexport function getAttrMapFn (nodeName): SpecialMaps.MapAttrFn | undefined {\n const mapping = specialElements.get(nodeName)\n if (!isString(mapping)) {\n return mapping?.mapAttr\n }\n}\n\nfunction getMapNameByCondition (nodeName: string, attr: string, props: Record<string, any>): string | undefined {\n const mapping = specialElements.get(nodeName)\n if (!mapping || isString(mapping)) return\n\n const { mapName, mapNameCondition } = mapping\n if (!mapNameCondition) return\n\n if (mapNameCondition.indexOf(attr) > -1 && !isString(mapName)) {\n return mapName(props)\n }\n}\n\nexport function mapNameByContion (nodeName: string, key: string, element: any, componentsAlias) {\n const mapName = getMapNameByCondition(nodeName, key, element.props)\n if (mapName) {\n const mapNameAlias = componentsAlias[mapName]._num\n element.enqueueUpdate({\n path: `${element._path}.${Shortcuts.NodeName}`,\n value: mapNameAlias\n })\n }\n}\n\nexport function ensureHtmlClass (tagName: string, className = ''): string {\n const classList = className.split(' ')\n const htmlClass = `h5-${tagName}`\n if (classList.indexOf(htmlClass) === -1) {\n classList.unshift(htmlClass)\n }\n return classList.join(' ')\n}\n\nexport function ensureRect (props: Record<string, any>, style = ''): string {\n let cssText = style\n const { width, height } = props\n if (width) {\n cssText = `width: ${width};${cssText}`\n }\n if (height) {\n cssText = `height: ${height};${cssText}`\n }\n return cssText\n}\n\nexport function defineMappedProp (obj, propName, mapName) {\n Object.defineProperty(obj, propName, {\n enumerable: true,\n configurable: true,\n get () {\n return obj[mapName]\n },\n set (val) {\n obj[mapName] = val\n }\n })\n}\n","import { TaroElement } from '@tarojs/runtime'\nimport { hooks, Shortcuts, toCamelCase, warn } from '@tarojs/shared'\n\nimport {\n defineMappedProp,\n ensureHtmlClass,\n ensureRect,\n getAttrMapFn,\n getMappedType,\n isHtmlTags,\n mapNameByContion\n} from './utils'\n\nhooks.tap('modifyHydrateData', data => {\n const nodeName = data[Shortcuts.NodeName]\n if (!isHtmlTags(nodeName)) return\n\n process.env.NODE_ENV !== 'production' && warn(data[Shortcuts.NodeName] === 'select', '请使用 Picker 组件代替 <select>')\n\n // map nodeName\n data[Shortcuts.NodeName] = getMappedType(nodeName, data)\n\n // map attr Key/Value\n const attrMapFn = getAttrMapFn(nodeName)\n if (attrMapFn) {\n for (const key in data) {\n const value = data[key]\n const [mapKey, mapValue] = attrMapFn(key, value, data)\n if (key !== mapKey) {\n delete data[key]\n data[mapKey] = mapValue\n } else if (value !== mapValue) {\n data[key] = mapValue\n }\n }\n }\n\n if (nodeName === 'br') {\n data[Shortcuts.Childnodes] = [{\n [Shortcuts.NodeName]: '#text',\n v: '\\n'\n }]\n }\n\n data[Shortcuts.Class] = ensureHtmlClass(nodeName, data[Shortcuts.Class])\n data[Shortcuts.Style] = ensureRect(data, data[Shortcuts.Style])\n})\n\nhooks.tap('modifySetAttrPayload', (element, key, payload, componentsAlias) => {\n const { nodeName, _path, props } = element\n if (!isHtmlTags(nodeName)) return\n\n // map nodeName\n mapNameByContion(nodeName, key, element, componentsAlias)\n\n const mapName = getMappedType(nodeName, props)\n const alias = componentsAlias[mapName]\n\n // map attr Key/Value\n const attrMapFn = getAttrMapFn(nodeName)\n if (attrMapFn) {\n const value = payload.value\n const [mapKey, mapValue] = attrMapFn(key, value, props)\n payload.path = `${_path}.${alias[mapKey] || mapKey}`\n payload.value = mapValue\n } else if (alias[key] && alias[key] !== key) {\n payload.path = `${_path}.${toCamelCase(alias[key])}`\n }\n\n if (key === Shortcuts.Class) {\n payload.value = ensureHtmlClass(nodeName, payload.value as string)\n } else if (key === Shortcuts.Style || key === 'width' || key === 'height') {\n payload.path = `${_path}.${Shortcuts.Style}`\n payload.value = ensureRect(props, element.style.cssText)\n }\n})\n\nhooks.tap('modifyRmAttrPayload', (element, key, payload, componentsAlias) => {\n const { nodeName, _path, props } = element\n if (!isHtmlTags(nodeName)) return\n\n // map nodeName\n mapNameByContion(nodeName, key, element, componentsAlias)\n\n const mapName = getMappedType(nodeName, props)\n const alias = componentsAlias[mapName]\n\n // map attr Key/Value\n const attrMapFn = getAttrMapFn(nodeName)\n if (attrMapFn) {\n const value = payload[key]\n const [mapKey] = attrMapFn(key, value, props)\n payload.path = `${_path}.${alias[mapKey] || mapKey}`\n } else if (alias[key] && alias[key] !== key) {\n payload.path = `${_path}.${toCamelCase(alias[key])}`\n }\n\n if (key === Shortcuts.Class) {\n payload.value = ensureHtmlClass(nodeName, payload.value as string)\n } else if (key === Shortcuts.Style || key === 'width' || key === 'height') {\n payload.path = `${_path}.${Shortcuts.Style}`\n payload.value = ensureRect(props, element.style.cssText)\n }\n})\n\nhooks.tap('onAddEvent', (type, _handler, _options, node) => {\n node = node as TaroElement\n if (!isHtmlTags(node.nodeName)) return\n if (type === 'click') {\n defineMappedProp(node.__handlers, type, 'tap')\n } else if (node.nodeName === 'input') {\n if (type === 'change') {\n if (node.props.type === 'checkbox' || node.props.type === 'radio') {\n defineMappedProp(node.__handlers, type, 'tap')\n } else {\n defineMappedProp(node.__handlers, type, 'input')\n }\n } else if (type === 'keypress') {\n defineMappedProp(node.__handlers, type, 'confirm')\n }\n }\n})\n\nhooks.tap('modifyTaroEvent', (event, element) => {\n const { nodeName, props } = element\n if (nodeName === 'input' && event.type === 'tap') {\n if (props.type === 'checkbox') {\n props.checked = !props.checked\n } else if (props.type === 'radio' && !props.checked) {\n props.checked = true\n }\n if (event.mpEvent) {\n const { currentTarget, target } = event.mpEvent\n currentTarget.checked = props.checked\n if (target.id === currentTarget.id) {\n target.checked = props.checked\n }\n }\n }\n})\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.js","sources":["../src/constant.ts","../src/utils.ts","../src/runtime.ts"],"sourcesContent":["import { isString } from '@tarojs/shared'\n\ninterface SpecialMaps {\n mapName: string | SpecialMaps.MapNameFn\n mapNameCondition?: string[]\n mapAttr?: SpecialMaps.MapAttrFn\n}\n\nexport namespace SpecialMaps {\n export interface MapNameFn {\n (props: Record<string, any>): string\n }\n export interface MapAttrFn {\n (key: string, value: any, props: Record<string, any>): [string, any]\n }\n}\n\nfunction genAttrMapFnFromDir (dir: Record<string, string | [string, Record<string, any>]>): SpecialMaps.MapAttrFn {\n const fn: SpecialMaps.MapAttrFn = function (key, value) {\n const lowerKey = key.toLowerCase()\n if (lowerKey in dir) {\n const res = dir[lowerKey]\n if (isString(res)) {\n key = res\n } else {\n key = res[0]\n value = res[1][value] || value\n }\n }\n return [key, value]\n }\n return fn\n}\n\nexport const inlineElements = new Set<string>([])\nexport const blockElements = new Set<string>([])\nexport const specialElements = new Map<string, string | SpecialMaps>([\n ['slot', 'slot'],\n ['form', 'form'],\n ['iframe', 'web-view'],\n ['img', 'image'],\n ['audio', 'audio'],\n ['video', 'video'],\n ['canvas', 'canvas'],\n ['a', {\n mapName (props) {\n if (props.as && isString(props.as)) return props.as.toLowerCase()\n return !props.href || (/^javascript/.test(props.href)) ? 'view' : 'navigator'\n },\n mapNameCondition: ['href'],\n mapAttr: genAttrMapFnFromDir({\n href: 'url',\n target: ['openType', {\n _blank: 'navigate',\n _self: 'redirect'\n }]\n })\n }],\n ['input', {\n mapName (props) {\n if (props.type === 'checkbox') {\n return 'checkbox'\n } else if (props.type === 'radio') {\n return 'radio'\n }\n return 'input'\n },\n mapNameCondition: ['type'],\n mapAttr (key, value, props) {\n const htmlKey = key.toLowerCase()\n if (htmlKey === 'autofocus') {\n key = 'focus'\n } else if (htmlKey === 'readonly') {\n if (props.disabled === true) {\n value = true\n }\n key = 'disabled'\n } else if (htmlKey === 'type') {\n if (value === 'password') {\n key = 'password'\n value = true\n } else if (value === 'tel') {\n value = 'number'\n }\n } else if (htmlKey === 'maxlength') {\n key = 'maxlength'\n }\n return [key, value]\n }\n }],\n ['label', {\n mapName: 'label',\n mapAttr: genAttrMapFnFromDir({\n htmlfor: 'for'\n })\n }],\n ['textarea', {\n mapName: 'textarea',\n mapAttr: genAttrMapFnFromDir({\n autofocus: 'focus',\n readonly: 'disabled',\n maxlength: 'maxlength'\n })\n }],\n ['progress', {\n mapName: 'progress',\n mapAttr (key, value, props) {\n if (key === 'value') {\n const max = props.max || 1\n key = 'percent'\n value = Math.round(value / max * 100)\n }\n return [key, value]\n }\n }],\n ['button', {\n mapName: 'button',\n mapAttr (key, value) {\n if (key === 'type' && (value === 'submit' || value === 'reset')) {\n key = 'formType'\n }\n return [key, value]\n }\n }]\n])\n","import { isHasExtractProp } from '@tarojs/runtime'\nimport { isFunction, isString, Shortcuts, toCamelCase } from '@tarojs/shared'\n\nimport {\n blockElements,\n inlineElements,\n specialElements,\n SpecialMaps\n} from './constant'\n\nimport type { TaroElement } from '@tarojs/runtime'\n\nexport function isHtmlTags (nodeName: string): boolean {\n if (inlineElements.has(nodeName) || blockElements.has(nodeName) || specialElements.has(nodeName)) {\n return true\n }\n return false\n}\n\nexport function getMappedType (nodeName: string, rawProps: Record<string, any>, node?: TaroElement): string {\n if (inlineElements.has(nodeName)) {\n return 'text'\n } else if (specialElements.has(nodeName)) {\n const mapping = specialElements.get(nodeName)!\n if (isString(mapping)) {\n return mapping\n }\n const { mapName } = mapping\n return isFunction(mapName) ? mapName(rawProps) : mapName\n } else {\n if (node) {\n const { props } = node\n for (const prop in props) {\n const propInCamelCase = toCamelCase(prop)\n if (propInCamelCase === 'catchMove' && props[prop] !== false) {\n return 'catch-view'\n }\n }\n }\n if (!node || node.isAnyEventBinded()) {\n return 'view'\n } else if (isHasExtractProp(node)) {\n return 'static-view'\n } else {\n return 'pure-view'\n }\n }\n}\n\nexport function getAttrMapFn (nodeName): SpecialMaps.MapAttrFn | undefined {\n const mapping = specialElements.get(nodeName)\n if (!isString(mapping)) {\n return mapping?.mapAttr\n }\n}\n\nfunction getMapNameByCondition (nodeName: string, attr: string, props: Record<string, any>): string | undefined {\n const mapping = specialElements.get(nodeName)\n if (!mapping || isString(mapping)) return\n\n const { mapName, mapNameCondition } = mapping\n if (!mapNameCondition) return\n\n if (mapNameCondition.indexOf(attr) > -1 && !isString(mapName)) {\n return mapName(props)\n }\n}\n\nexport function mapNameByContion (nodeName: string, key: string, element: any, componentsAlias) {\n const mapName = getMapNameByCondition(nodeName, key, element.props)\n if (mapName) {\n const mapNameAlias = componentsAlias[mapName]._num\n element.enqueueUpdate({\n path: `${element._path}.${Shortcuts.NodeName}`,\n value: mapNameAlias\n })\n }\n}\n\nexport function ensureHtmlClass (tagName: string, className = ''): string {\n const classList = className.split(' ')\n const htmlClass = `h5-${tagName}`\n if (classList.indexOf(htmlClass) === -1) {\n classList.unshift(htmlClass)\n }\n return classList.join(' ')\n}\n\nexport function ensureRect (props: Record<string, any>, style = ''): string {\n let cssText = style\n const { width, height } = props\n if (width) {\n cssText = `width: ${width};${cssText}`\n }\n if (height) {\n cssText = `height: ${height};${cssText}`\n }\n return cssText\n}\n\nexport function defineMappedProp (obj, propName, mapName) {\n Object.defineProperty(obj, propName, {\n enumerable: true,\n configurable: true,\n get () {\n return obj[mapName]\n },\n set (val) {\n obj[mapName] = val\n }\n })\n}\n","import { isHasExtractProp, TaroElement } from '@tarojs/runtime'\nimport { hooks, Shortcuts, toCamelCase, warn } from '@tarojs/shared'\n\nimport { blockElements } from './constant'\nimport {\n defineMappedProp,\n ensureHtmlClass,\n ensureRect,\n getAttrMapFn,\n getMappedType,\n isHtmlTags,\n mapNameByContion\n} from './utils'\n\nhooks.tap('modifyHydrateData', (data, node) => {\n const nodeName = data[Shortcuts.NodeName]\n if (!isHtmlTags(nodeName)) return\n\n process.env.NODE_ENV !== 'production' && warn(data[Shortcuts.NodeName] === 'select', '请使用 Picker 组件代替 <select>')\n\n // map nodeName\n data[Shortcuts.NodeName] = getMappedType(nodeName, data, node)\n\n // map attr Key/Value\n const attrMapFn = getAttrMapFn(nodeName)\n if (attrMapFn) {\n for (const key in data) {\n const value = data[key]\n const [mapKey, mapValue] = attrMapFn(key, value, data)\n if (key !== mapKey) {\n delete data[key]\n data[mapKey] = mapValue\n } else if (value !== mapValue) {\n data[key] = mapValue\n }\n }\n }\n\n if (nodeName === 'br') {\n data[Shortcuts.Childnodes] = [{\n [Shortcuts.NodeName]: '#text',\n v: '\\n'\n }]\n }\n\n data[Shortcuts.Class] = ensureHtmlClass(nodeName, data[Shortcuts.Class])\n data[Shortcuts.Style] = ensureRect(data, data[Shortcuts.Style])\n})\n\nhooks.tap('modifySetAttrPayload', (element, key, payload, componentsAlias) => {\n const { nodeName, _path, props } = element\n if (!isHtmlTags(nodeName)) return\n\n // map nodeName\n mapNameByContion(nodeName, key, element, componentsAlias)\n\n const mapName = getMappedType(nodeName, props)\n const alias = componentsAlias[mapName]\n\n // map attr Key/Value\n const attrMapFn = getAttrMapFn(nodeName)\n if (attrMapFn) {\n const value = payload.value\n const [mapKey, mapValue] = attrMapFn(key, value, props)\n payload.path = `${_path}.${alias[mapKey] || mapKey}`\n payload.value = mapValue\n } else if (alias[key] && alias[key] !== key) {\n payload.path = `${_path}.${toCamelCase(alias[key])}`\n }\n\n if (key === Shortcuts.Class) {\n payload.value = ensureHtmlClass(nodeName, payload.value as string)\n } else if (key === Shortcuts.Style || key === 'width' || key === 'height') {\n payload.path = `${_path}.${Shortcuts.Style}`\n payload.value = ensureRect(props, element.style.cssText)\n }\n\n if (blockElements.has(element.nodeName)) {\n const viewAlias = componentsAlias.view._num\n const staticViewAlias = componentsAlias['static-view']._num\n const catchViewAlias = componentsAlias['catch-view']._num\n const qualifiedNameInCamelCase = toCamelCase(key)\n const dataPath = `${_path}.${Shortcuts.NodeName}`\n if (qualifiedNameInCamelCase === 'catchMove') {\n // catchMove = true: catch-view\n // catchMove = false: view or static-view\n element.enqueueUpdate({\n path: dataPath,\n value: payload.value ? catchViewAlias : (\n element.isAnyEventBinded() ? viewAlias : staticViewAlias\n )\n })\n } else if (isHasExtractProp(element) && !element.isAnyEventBinded()) {\n // pure-view => static-view\n // static-view => static-view 因为没有办法分辨之前是不是 pure,所以就算之前是 static 也需要 setData\n element.enqueueUpdate({\n path: dataPath,\n value: staticViewAlias\n })\n }\n }\n})\n\nhooks.tap('modifyRmAttrPayload', (element, key, payload, componentsAlias) => {\n const { nodeName, _path, props } = element\n if (!isHtmlTags(nodeName)) return\n\n // map nodeName\n mapNameByContion(nodeName, key, element, componentsAlias)\n\n const mapName = getMappedType(nodeName, props)\n const alias = componentsAlias[mapName]\n\n // map attr Key/Value\n const attrMapFn = getAttrMapFn(nodeName)\n if (attrMapFn) {\n const value = payload[key]\n const [mapKey] = attrMapFn(key, value, props)\n payload.path = `${_path}.${alias[mapKey] || mapKey}`\n } else if (alias[key] && alias[key] !== key) {\n payload.path = `${_path}.${toCamelCase(alias[key])}`\n }\n\n if (key === Shortcuts.Class) {\n payload.value = ensureHtmlClass(nodeName, payload.value as string)\n } else if (key === Shortcuts.Style || key === 'width' || key === 'height') {\n payload.path = `${_path}.${Shortcuts.Style}`\n payload.value = ensureRect(props, element.style.cssText)\n }\n\n if (blockElements.has(element.nodeName)) {\n const viewAlias = componentsAlias.view._num\n const staticViewAlias = componentsAlias['static-view']._num\n const pureViewAlias = componentsAlias['pure-view']._num\n const qualifiedNameInCamelCase = toCamelCase(key)\n const dataPath = `${_path}.${Shortcuts.NodeName}`\n if (qualifiedNameInCamelCase === 'catchMove') {\n // catch-view => view or static-view or pure-view\n element.enqueueUpdate({\n path: dataPath,\n value: element.isAnyEventBinded() ? viewAlias : (isHasExtractProp(element) ? staticViewAlias : pureViewAlias)\n })\n } else if (!isHasExtractProp(element)) {\n // static-view => pure-view\n // pure-view => pure-view 因为没有办法分辨之前是不是 pure,所以就算之前是 pure 也需要 setData\n element.enqueueUpdate({\n path: dataPath,\n value: pureViewAlias\n })\n }\n }\n})\n\nhooks.tap('onAddEvent', (type, _handler, _options, node) => {\n node = node as TaroElement\n if (!isHtmlTags(node.nodeName)) return\n if (type === 'click') {\n defineMappedProp(node.__handlers, type, 'tap')\n } else if (node.nodeName === 'input') {\n if (type === 'change') {\n if (node.props.type === 'checkbox' || node.props.type === 'radio') {\n defineMappedProp(node.__handlers, type, 'tap')\n } else {\n defineMappedProp(node.__handlers, type, 'input')\n }\n } else if (type === 'keypress') {\n defineMappedProp(node.__handlers, type, 'confirm')\n }\n }\n})\n\nhooks.tap('modifyTaroEvent', (event, element) => {\n const { nodeName, props } = element\n if (nodeName === 'input' && event.type === 'tap') {\n if (props.type === 'checkbox') {\n props.checked = !props.checked\n } else if (props.type === 'radio' && !props.checked) {\n props.checked = true\n }\n if (event.mpEvent) {\n const { currentTarget, target } = event.mpEvent\n currentTarget.checked = props.checked\n if (target.id === currentTarget.id) {\n target.checked = props.checked\n }\n }\n }\n})\n\nhooks.tap('modifyAddEventListener', (element, sideEffect, getComponentsAlias) => {\n // 如果是从没有事件绑定到有事件绑定,且是 block 元素,则转换为 view\n if (blockElements.has(element.nodeName) && sideEffect !== false && !element.isAnyEventBinded()) {\n const componentsAlias = getComponentsAlias()\n const alias = componentsAlias.view._num\n element.enqueueUpdate({\n path: `${element._path}.${Shortcuts.NodeName}`,\n value: alias\n })\n }\n})\n\nhooks.tap('modifyRemoveEventListener', (element, sideEffect, getComponentsAlias) => {\n // 如果已没有绑定事件,且是 block 元素,则转换为 static-view 或 pure-view\n if (blockElements.has(element.nodeName) && sideEffect !== false && !element.isAnyEventBinded()) {\n const componentsAlias = getComponentsAlias()\n const value = isHasExtractProp(element) ? 'static-view' : 'pure-view'\n const valueAlias = componentsAlias[value]._num\n element.enqueueUpdate({\n path: `${element._path}.${Shortcuts.NodeName}`,\n value: valueAlias\n })\n }\n})\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tarojs/plugin-html",
3
- "version": "3.8.0-canary.0",
3
+ "version": "4.0.0-beta.0",
4
4
  "description": "Taro 小程序端支持使用 HTML 标签的插件",
5
5
  "main": "index.js",
6
6
  "files": [
@@ -26,17 +26,18 @@
26
26
  "@babel/generator": "^7.20.0",
27
27
  "@babel/parser": "^7.20.0",
28
28
  "@babel/traverse": "^7.20.0",
29
- "@babel/types": "^7.20.0",
30
- "@tarojs/runtime": "3.8.0-canary.0",
31
- "@tarojs/service": "3.8.0-canary.0",
32
- "@tarojs/shared": "3.8.0-canary.0"
29
+ "@babel/types": "^7.22.19",
30
+ "@tarojs/runtime": "4.0.0-beta.0",
31
+ "@tarojs/shared": "4.0.0-beta.0",
32
+ "@tarojs/service": "4.0.0-beta.0"
33
33
  },
34
34
  "devDependencies": {
35
+ "@types/babel__traverse": "^7.20.2",
35
36
  "rollup": "^3.8.1",
36
37
  "rollup-plugin-node-externals": "^5.0.0",
37
38
  "rollup-plugin-ts": "^3.0.2",
38
39
  "typescript": "^4.7.4",
39
- "@tarojs/taro": "3.8.0-canary.0"
40
+ "@tarojs/taro": "4.0.0-beta.0"
40
41
  },
41
42
  "scripts": {
42
43
  "dev": "rollup -c -w --bundleConfigAsCjs",
package/src/constant.ts CHANGED
@@ -44,7 +44,7 @@ export const specialElements = new Map<string, string | SpecialMaps>([
44
44
  ['canvas', 'canvas'],
45
45
  ['a', {
46
46
  mapName (props) {
47
- if(props.as && isString(props.as)) return props.as.toLowerCase()
47
+ if (props.as && isString(props.as)) return props.as.toLowerCase()
48
48
  return !props.href || (/^javascript/.test(props.href)) ? 'view' : 'navigator'
49
49
  },
50
50
  mapNameCondition: ['href'],
package/src/runtime.ts CHANGED
@@ -1,6 +1,7 @@
1
- import { TaroElement } from '@tarojs/runtime'
1
+ import { isHasExtractProp, TaroElement } from '@tarojs/runtime'
2
2
  import { hooks, Shortcuts, toCamelCase, warn } from '@tarojs/shared'
3
3
 
4
+ import { blockElements } from './constant'
4
5
  import {
5
6
  defineMappedProp,
6
7
  ensureHtmlClass,
@@ -11,14 +12,14 @@ import {
11
12
  mapNameByContion
12
13
  } from './utils'
13
14
 
14
- hooks.tap('modifyHydrateData', data => {
15
+ hooks.tap('modifyHydrateData', (data, node) => {
15
16
  const nodeName = data[Shortcuts.NodeName]
16
17
  if (!isHtmlTags(nodeName)) return
17
18
 
18
19
  process.env.NODE_ENV !== 'production' && warn(data[Shortcuts.NodeName] === 'select', '请使用 Picker 组件代替 <select>')
19
20
 
20
21
  // map nodeName
21
- data[Shortcuts.NodeName] = getMappedType(nodeName, data)
22
+ data[Shortcuts.NodeName] = getMappedType(nodeName, data, node)
22
23
 
23
24
  // map attr Key/Value
24
25
  const attrMapFn = getAttrMapFn(nodeName)
@@ -73,6 +74,31 @@ hooks.tap('modifySetAttrPayload', (element, key, payload, componentsAlias) => {
73
74
  payload.path = `${_path}.${Shortcuts.Style}`
74
75
  payload.value = ensureRect(props, element.style.cssText)
75
76
  }
77
+
78
+ if (blockElements.has(element.nodeName)) {
79
+ const viewAlias = componentsAlias.view._num
80
+ const staticViewAlias = componentsAlias['static-view']._num
81
+ const catchViewAlias = componentsAlias['catch-view']._num
82
+ const qualifiedNameInCamelCase = toCamelCase(key)
83
+ const dataPath = `${_path}.${Shortcuts.NodeName}`
84
+ if (qualifiedNameInCamelCase === 'catchMove') {
85
+ // catchMove = true: catch-view
86
+ // catchMove = false: view or static-view
87
+ element.enqueueUpdate({
88
+ path: dataPath,
89
+ value: payload.value ? catchViewAlias : (
90
+ element.isAnyEventBinded() ? viewAlias : staticViewAlias
91
+ )
92
+ })
93
+ } else if (isHasExtractProp(element) && !element.isAnyEventBinded()) {
94
+ // pure-view => static-view
95
+ // static-view => static-view 因为没有办法分辨之前是不是 pure,所以就算之前是 static 也需要 setData
96
+ element.enqueueUpdate({
97
+ path: dataPath,
98
+ value: staticViewAlias
99
+ })
100
+ }
101
+ }
76
102
  })
77
103
 
78
104
  hooks.tap('modifyRmAttrPayload', (element, key, payload, componentsAlias) => {
@@ -101,6 +127,28 @@ hooks.tap('modifyRmAttrPayload', (element, key, payload, componentsAlias) => {
101
127
  payload.path = `${_path}.${Shortcuts.Style}`
102
128
  payload.value = ensureRect(props, element.style.cssText)
103
129
  }
130
+
131
+ if (blockElements.has(element.nodeName)) {
132
+ const viewAlias = componentsAlias.view._num
133
+ const staticViewAlias = componentsAlias['static-view']._num
134
+ const pureViewAlias = componentsAlias['pure-view']._num
135
+ const qualifiedNameInCamelCase = toCamelCase(key)
136
+ const dataPath = `${_path}.${Shortcuts.NodeName}`
137
+ if (qualifiedNameInCamelCase === 'catchMove') {
138
+ // catch-view => view or static-view or pure-view
139
+ element.enqueueUpdate({
140
+ path: dataPath,
141
+ value: element.isAnyEventBinded() ? viewAlias : (isHasExtractProp(element) ? staticViewAlias : pureViewAlias)
142
+ })
143
+ } else if (!isHasExtractProp(element)) {
144
+ // static-view => pure-view
145
+ // pure-view => pure-view 因为没有办法分辨之前是不是 pure,所以就算之前是 pure 也需要 setData
146
+ element.enqueueUpdate({
147
+ path: dataPath,
148
+ value: pureViewAlias
149
+ })
150
+ }
151
+ }
104
152
  })
105
153
 
106
154
  hooks.tap('onAddEvent', (type, _handler, _options, node) => {
@@ -138,3 +186,28 @@ hooks.tap('modifyTaroEvent', (event, element) => {
138
186
  }
139
187
  }
140
188
  })
189
+
190
+ hooks.tap('modifyAddEventListener', (element, sideEffect, getComponentsAlias) => {
191
+ // 如果是从没有事件绑定到有事件绑定,且是 block 元素,则转换为 view
192
+ if (blockElements.has(element.nodeName) && sideEffect !== false && !element.isAnyEventBinded()) {
193
+ const componentsAlias = getComponentsAlias()
194
+ const alias = componentsAlias.view._num
195
+ element.enqueueUpdate({
196
+ path: `${element._path}.${Shortcuts.NodeName}`,
197
+ value: alias
198
+ })
199
+ }
200
+ })
201
+
202
+ hooks.tap('modifyRemoveEventListener', (element, sideEffect, getComponentsAlias) => {
203
+ // 如果已没有绑定事件,且是 block 元素,则转换为 static-view 或 pure-view
204
+ if (blockElements.has(element.nodeName) && sideEffect !== false && !element.isAnyEventBinded()) {
205
+ const componentsAlias = getComponentsAlias()
206
+ const value = isHasExtractProp(element) ? 'static-view' : 'pure-view'
207
+ const valueAlias = componentsAlias[value]._num
208
+ element.enqueueUpdate({
209
+ path: `${element._path}.${Shortcuts.NodeName}`,
210
+ value: valueAlias
211
+ })
212
+ }
213
+ })
package/src/utils.ts CHANGED
@@ -1,4 +1,5 @@
1
- import { isFunction, isString, Shortcuts } from '@tarojs/shared'
1
+ import { isHasExtractProp } from '@tarojs/runtime'
2
+ import { isFunction, isString, Shortcuts, toCamelCase } from '@tarojs/shared'
2
3
 
3
4
  import {
4
5
  blockElements,
@@ -7,6 +8,8 @@ import {
7
8
  SpecialMaps
8
9
  } from './constant'
9
10
 
11
+ import type { TaroElement } from '@tarojs/runtime'
12
+
10
13
  export function isHtmlTags (nodeName: string): boolean {
11
14
  if (inlineElements.has(nodeName) || blockElements.has(nodeName) || specialElements.has(nodeName)) {
12
15
  return true
@@ -14,7 +17,7 @@ export function isHtmlTags (nodeName: string): boolean {
14
17
  return false
15
18
  }
16
19
 
17
- export function getMappedType (nodeName: string, rawProps: Record<string, any>): string {
20
+ export function getMappedType (nodeName: string, rawProps: Record<string, any>, node?: TaroElement): string {
18
21
  if (inlineElements.has(nodeName)) {
19
22
  return 'text'
20
23
  } else if (specialElements.has(nodeName)) {
@@ -25,7 +28,22 @@ export function getMappedType (nodeName: string, rawProps: Record<string, any>):
25
28
  const { mapName } = mapping
26
29
  return isFunction(mapName) ? mapName(rawProps) : mapName
27
30
  } else {
28
- return 'view'
31
+ if (node) {
32
+ const { props } = node
33
+ for (const prop in props) {
34
+ const propInCamelCase = toCamelCase(prop)
35
+ if (propInCamelCase === 'catchMove' && props[prop] !== false) {
36
+ return 'catch-view'
37
+ }
38
+ }
39
+ }
40
+ if (!node || node.isAnyEventBinded()) {
41
+ return 'view'
42
+ } else if (isHasExtractProp(node)) {
43
+ return 'static-view'
44
+ } else {
45
+ return 'pure-view'
46
+ }
29
47
  }
30
48
  }
31
49