@tarojs/plugin-framework-solid 4.1.0-alpha.1 → 4.1.0-alpha.3

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.
@@ -49,12 +49,14 @@ function setProperty(dom, name, value, oldValue) {
49
49
  }
50
50
  function updateClassList(dom, newValue) {
51
51
  const [addList, removeList] = [[], []];
52
+ const regexp = /\s+/;
52
53
  for (const key in newValue) {
53
54
  if (newValue[key]) {
54
- addList.push(key);
55
+ // 处理classList中包含空格分隔的类名
56
+ key.trim().split(regexp).forEach(className => addList.push(className));
55
57
  }
56
58
  else {
57
- removeList.push(key);
59
+ key.trim().split(regexp).forEach(className => removeList.push(className));
58
60
  }
59
61
  }
60
62
  dom.classList.add(...addList);
@@ -1 +1 @@
1
- {"version":3,"file":"reconciler.js","sources":["../src/reconciler/props.ts","../src/reconciler/render.ts","../src/reconciler/index.ts"],"sourcesContent":["import { TaroElement } from '@tarojs/runtime'\nimport {\n capitalize,\n internalComponents,\n isFunction,\n isObject,\n toCamelCase,\n} from '@tarojs/shared'\n\ninterface DangerouslySetInnerHTML {\n __html?: string\n}\ntype ClassList = { [key: string]: boolean };\n\nfunction isEventName (s: string) {\n return s.startsWith('on')\n}\n\nfunction setEvent (\n dom: TaroElement,\n name: string,\n value: unknown,\n oldValue?: unknown\n) {\n const isCapture = name.endsWith('Capture')\n let eventName = name.toLowerCase().slice(2)\n if (isCapture) {\n eventName = eventName.slice(0, -7)\n }\n\n const compName = capitalize(toCamelCase(dom.tagName.toLowerCase()))\n\n if (eventName === 'click' && process.env.TARO_PLATFORM !== 'harmony' && compName in internalComponents) {\n eventName = 'tap'\n }\n\n if (isFunction(value)) {\n if (oldValue) {\n dom.removeEventListener(eventName, oldValue, false)\n dom.addEventListener(eventName, value, { isCapture, sideEffect: false })\n } else {\n dom.addEventListener(eventName, value, isCapture)\n }\n } else {\n dom.removeEventListener(eventName, oldValue)\n }\n}\n\n// 优化后的代码\nexport function setProperty (\n dom: TaroElement,\n name: string,\n value: any,\n oldValue?: any\n) {\n if (name === 'key' || name === 'children' || name === 'ref') return\n if (name === 'classList') {\n updateClassList(dom, value as ClassList)\n } else if (isEventName(name)) {\n setEvent(dom, name, value, oldValue)\n } else if (name === 'dangerouslySetInnerHTML') {\n updateInnerHTML(dom, value as DangerouslySetInnerHTML, oldValue as DangerouslySetInnerHTML)\n } else if (!isFunction(value)) {\n updateAttribute(dom, name, value)\n }\n}\n\nfunction updateClassList (dom: TaroElement, newValue: ClassList) {\n const [addList, removeList]: [string[], string[]] = [[], []]\n for (const key in newValue) {\n if (newValue[key]) {\n addList.push(key)\n } else {\n removeList.push(key)\n }\n }\n (dom.classList as any).add(...addList);\n (dom.classList as any).remove(...removeList)\n}\n\nfunction updateInnerHTML (dom: TaroElement, newValue: DangerouslySetInnerHTML, oldValue: DangerouslySetInnerHTML) {\n const newHtml = newValue?.__html ?? ''\n const oldHtml = oldValue?.__html ?? ''\n if (newHtml || oldHtml) {\n if (newHtml !== oldHtml) {\n dom.innerHTML = newHtml\n }\n }\n}\n\nfunction updateAttribute (dom: TaroElement, name: string, value: any) {\n if (value == null) {\n dom.removeAttribute(name)\n } else {\n // 处理对象类型的style样式\n if (name === 'style' && isObject<Record<string, any>>(value)) {\n value = Object.keys(value).reduce((acc: string[], key) => {\n acc.push(`${key}: ${value[key]}`)\n return acc\n }, []).join(';')\n }\n dom.setAttribute(name, value)\n }\n}\n","import { document, TaroElement, TaroNode, TaroText } from '@tarojs/runtime'\nimport { createRenderer } from 'solid-js/universal'\nimport { createComponent as _createComponent, insert as _insert, render as _render } from 'solid-js/web/dist/web'\n\nimport { setProperty } from './props'\n\nconst ref = createRenderer<TaroNode>({\n createElement (type: string) {\n return document.createElement(type)\n },\n createTextNode (text) {\n return document.createTextNode(text)\n },\n replaceText (textNode: TaroText, value) {\n textNode.textContent = value\n },\n setProperty (node: TaroElement, name: string, value, prev) {\n setProperty(node, name, value, prev)\n },\n insertNode (parent, node, anchor) {\n parent.insertBefore(node, anchor)\n },\n isTextNode (node: TaroNode) {\n if (typeof node === 'string') {\n return true\n }\n return node instanceof TaroText\n },\n removeNode (parent: TaroElement, node: TaroElement) {\n parent.removeChild(node)\n },\n getParentNode (node: TaroNode) {\n return node.parentNode || undefined\n },\n getFirstChild (node: TaroElement) {\n return node.firstChild || undefined\n },\n getNextSibling (node: TaroElement) {\n return node.nextSibling || undefined\n },\n})\n\nexport const render = process.env.TARO_PLATFORM === 'web' ? _render : ref.render\nexport const effect = ref.effect\nexport const memo = ref.memo\nexport const createElement = ref.createElement\nexport const createComponent = process.env.TARO_PLATFORM === 'web' ? _createComponent : ref.createComponent\nexport const createTextNode = ref.createTextNode\nexport const insertNode = ref.insertNode\nexport const insert = process.env.TARO_PLATFORM === 'web' ? _insert : ref.insert\nexport const spread = ref.spread\nexport const setProp = ref.setProp\nexport const mergeProps = ref.mergeProps\nexport const use = ref.use\n\nexport function Fragment (props) {\n return props.children\n}\n","import {\n $DEVCOMP,\n ComponentProps,\n createEffect,\n createMemo,\n getOwner,\n JSX,\n onCleanup,\n runWithOwner,\n sharedConfig,\n splitProps,\n untrack,\n ValidComponent\n} from 'solid-js'\n\nimport { createElement, createTextNode, insert, spread } from './render'\n\nexport * from './render'\n\nexport function Portal<T extends boolean = false, S extends boolean = false> (props: {\n mount?: Node\n ref?:\n | (S extends true ? SVGGElement : HTMLDivElement)\n | ((\n el: (T extends true ? { readonly shadowRoot: ShadowRoot } : object) & (S extends true ? SVGGElement : HTMLDivElement)\n ) => void)\n children: JSX.Element\n}) {\n const marker = createTextNode('')\n const mount = () => props.mount || document.body\n const owner = getOwner()\n let content: undefined | (() => JSX.Element)\n let hydrating = !!sharedConfig.context\n\n createEffect(\n () => {\n // basically we backdoor into a sort of renderEffect here\n if (hydrating) (getOwner() as any).user = hydrating = false\n content || (content = runWithOwner(owner, () => createMemo(() => props.children)))\n const el = mount()\n const container: any = createElement('view')\n const renderRoot = container\n\n Object.defineProperty(container, '_$host', {\n get () {\n return marker.parentNode\n },\n configurable: true\n })\n insert(renderRoot, content)\n el.appendChild(container)\n props.ref && (props as any).ref(container)\n onCleanup(() => el.removeChild(container))\n },\n undefined,\n { render: !hydrating }\n )\n return marker\n}\n\nexport type DynamicProps<T extends ValidComponent, P = ComponentProps<T>> = {\n [K in keyof P]: P[K];\n} & {\n component: T | undefined\n};\n\nexport function Dynamic<T extends ValidComponent> (props: DynamicProps<T>): JSX.Element {\n const [p, others] = splitProps(props, ['component'])\n const cached = createMemo(() => p.component)\n return createMemo(() => {\n const component = cached()\n switch (typeof component) {\n case 'function':\n // eslint-disable-next-line no-constant-condition\n if ('_DX_DEV_') Object.assign(component, { [$DEVCOMP]: true })\n return untrack(() => component(others))\n\n case 'string':\n // eslint-disable-next-line no-case-declarations\n const el = createElement(component)\n spread(el, others, false)\n return el\n\n default:\n break\n }\n }) as unknown as JSX.Element\n}\n"],"names":["document","_render","_createComponent","_insert"],"mappings":"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"}
1
+ {"version":3,"file":"reconciler.js","sources":["../src/reconciler/props.ts","../src/reconciler/render.ts","../src/reconciler/index.ts"],"sourcesContent":["import { TaroElement } from '@tarojs/runtime'\nimport {\n capitalize,\n internalComponents,\n isFunction,\n isObject,\n toCamelCase,\n} from '@tarojs/shared'\n\ninterface DangerouslySetInnerHTML {\n __html?: string\n}\ntype ClassList = { [key: string]: boolean };\n\nfunction isEventName (s: string) {\n return s.startsWith('on')\n}\n\nfunction setEvent (\n dom: TaroElement,\n name: string,\n value: unknown,\n oldValue?: unknown\n) {\n const isCapture = name.endsWith('Capture')\n let eventName = name.toLowerCase().slice(2)\n if (isCapture) {\n eventName = eventName.slice(0, -7)\n }\n\n const compName = capitalize(toCamelCase(dom.tagName.toLowerCase()))\n\n if (eventName === 'click' && process.env.TARO_PLATFORM !== 'harmony' && compName in internalComponents) {\n eventName = 'tap'\n }\n\n if (isFunction(value)) {\n if (oldValue) {\n dom.removeEventListener(eventName, oldValue, false)\n dom.addEventListener(eventName, value, { isCapture, sideEffect: false })\n } else {\n dom.addEventListener(eventName, value, isCapture)\n }\n } else {\n dom.removeEventListener(eventName, oldValue)\n }\n}\n\n// 优化后的代码\nexport function setProperty (\n dom: TaroElement,\n name: string,\n value: any,\n oldValue?: any\n) {\n if (name === 'key' || name === 'children' || name === 'ref') return\n if (name === 'classList') {\n updateClassList(dom, value as ClassList)\n } else if (isEventName(name)) {\n setEvent(dom, name, value, oldValue)\n } else if (name === 'dangerouslySetInnerHTML') {\n updateInnerHTML(dom, value as DangerouslySetInnerHTML, oldValue as DangerouslySetInnerHTML)\n } else if (!isFunction(value)) {\n updateAttribute(dom, name, value)\n }\n}\n\nfunction updateClassList (dom: TaroElement, newValue: ClassList) {\n const [addList, removeList]: [string[], string[]] = [[], []]\n const regexp = /\\s+/\n for (const key in newValue) {\n if (newValue[key]) {\n // 处理classList中包含空格分隔的类名\n key.trim().split(regexp).forEach(className => addList.push(className))\n } else {\n key.trim().split(regexp).forEach(className => removeList.push(className))\n }\n }\n (dom.classList as any).add(...addList);\n (dom.classList as any).remove(...removeList)\n}\n\nfunction updateInnerHTML (dom: TaroElement, newValue: DangerouslySetInnerHTML, oldValue: DangerouslySetInnerHTML) {\n const newHtml = newValue?.__html ?? ''\n const oldHtml = oldValue?.__html ?? ''\n if (newHtml || oldHtml) {\n if (newHtml !== oldHtml) {\n dom.innerHTML = newHtml\n }\n }\n}\n\nfunction updateAttribute (dom: TaroElement, name: string, value: any) {\n if (value == null) {\n dom.removeAttribute(name)\n } else {\n // 处理对象类型的style样式\n if (name === 'style' && isObject<Record<string, any>>(value)) {\n value = Object.keys(value).reduce((acc: string[], key) => {\n acc.push(`${key}: ${value[key]}`)\n return acc\n }, []).join(';')\n }\n dom.setAttribute(name, value)\n }\n}\n","import { document, TaroElement, TaroNode, TaroText } from '@tarojs/runtime'\nimport { createRenderer } from 'solid-js/universal'\nimport { createComponent as _createComponent, insert as _insert, render as _render } from 'solid-js/web/dist/web'\n\nimport { setProperty } from './props'\n\nconst ref = createRenderer<TaroNode>({\n createElement (type: string) {\n return document.createElement(type)\n },\n createTextNode (text) {\n return document.createTextNode(text)\n },\n replaceText (textNode: TaroText, value) {\n textNode.textContent = value\n },\n setProperty (node: TaroElement, name: string, value, prev) {\n setProperty(node, name, value, prev)\n },\n insertNode (parent, node, anchor) {\n parent.insertBefore(node, anchor)\n },\n isTextNode (node: TaroNode) {\n if (typeof node === 'string') {\n return true\n }\n return node instanceof TaroText\n },\n removeNode (parent: TaroElement, node: TaroElement) {\n parent.removeChild(node)\n },\n getParentNode (node: TaroNode) {\n return node.parentNode || undefined\n },\n getFirstChild (node: TaroElement) {\n return node.firstChild || undefined\n },\n getNextSibling (node: TaroElement) {\n return node.nextSibling || undefined\n },\n})\n\nexport const render = process.env.TARO_PLATFORM === 'web' ? _render : ref.render\nexport const effect = ref.effect\nexport const memo = ref.memo\nexport const createElement = ref.createElement\nexport const createComponent = process.env.TARO_PLATFORM === 'web' ? _createComponent : ref.createComponent\nexport const createTextNode = ref.createTextNode\nexport const insertNode = ref.insertNode\nexport const insert = process.env.TARO_PLATFORM === 'web' ? _insert : ref.insert\nexport const spread = ref.spread\nexport const setProp = ref.setProp\nexport const mergeProps = ref.mergeProps\nexport const use = ref.use\n\nexport function Fragment (props) {\n return props.children\n}\n","import {\n $DEVCOMP,\n ComponentProps,\n createEffect,\n createMemo,\n getOwner,\n JSX,\n onCleanup,\n runWithOwner,\n sharedConfig,\n splitProps,\n untrack,\n ValidComponent\n} from 'solid-js'\n\nimport { createElement, createTextNode, insert, spread } from './render'\n\nexport * from './render'\n\nexport function Portal<T extends boolean = false, S extends boolean = false> (props: {\n mount?: Node\n ref?:\n | (S extends true ? SVGGElement : HTMLDivElement)\n | ((\n el: (T extends true ? { readonly shadowRoot: ShadowRoot } : object) & (S extends true ? SVGGElement : HTMLDivElement)\n ) => void)\n children: JSX.Element\n}) {\n const marker = createTextNode('')\n const mount = () => props.mount || document.body\n const owner = getOwner()\n let content: undefined | (() => JSX.Element)\n let hydrating = !!sharedConfig.context\n\n createEffect(\n () => {\n // basically we backdoor into a sort of renderEffect here\n if (hydrating) (getOwner() as any).user = hydrating = false\n content || (content = runWithOwner(owner, () => createMemo(() => props.children)))\n const el = mount()\n const container: any = createElement('view')\n const renderRoot = container\n\n Object.defineProperty(container, '_$host', {\n get () {\n return marker.parentNode\n },\n configurable: true\n })\n insert(renderRoot, content)\n el.appendChild(container)\n props.ref && (props as any).ref(container)\n onCleanup(() => el.removeChild(container))\n },\n undefined,\n { render: !hydrating }\n )\n return marker\n}\n\nexport type DynamicProps<T extends ValidComponent, P = ComponentProps<T>> = {\n [K in keyof P]: P[K];\n} & {\n component: T | undefined\n};\n\nexport function Dynamic<T extends ValidComponent> (props: DynamicProps<T>): JSX.Element {\n const [p, others] = splitProps(props, ['component'])\n const cached = createMemo(() => p.component)\n return createMemo(() => {\n const component = cached()\n switch (typeof component) {\n case 'function':\n // eslint-disable-next-line no-constant-condition\n if ('_DX_DEV_') Object.assign(component, { [$DEVCOMP]: true })\n return untrack(() => component(others))\n\n case 'string':\n // eslint-disable-next-line no-case-declarations\n const el = createElement(component)\n spread(el, others, false)\n return el\n\n default:\n break\n }\n }) as unknown as JSX.Element\n}\n"],"names":["document","_render","_createComponent","_insert"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tarojs/plugin-framework-solid",
3
- "version": "4.1.0-alpha.1",
3
+ "version": "4.1.0-alpha.3",
4
4
  "description": "Solid 框架插件",
5
5
  "author": "drchan",
6
6
  "homepage": "https://github.com/nervjs/taro",
@@ -25,8 +25,8 @@
25
25
  "acorn": "^8.0.4",
26
26
  "acorn-walk": "^8.0.0",
27
27
  "lodash": "^4.17.21",
28
- "@tarojs/helper": "4.1.0-alpha.1",
29
- "@tarojs/service": "4.1.0-alpha.1"
28
+ "@tarojs/helper": "4.1.0-alpha.3",
29
+ "@tarojs/service": "4.1.0-alpha.3"
30
30
  },
31
31
  "devDependencies": {
32
32
  "@babel/core": "^7.14.5",
@@ -35,16 +35,16 @@
35
35
  "solid-js": "^1.8.16",
36
36
  "typescript": "~5.4.5",
37
37
  "vite": "^4.2.0",
38
- "@tarojs/runtime": "4.1.0-alpha.1",
39
- "@tarojs/taro": "4.1.0-alpha.1",
40
- "@tarojs/shared": "4.1.0-alpha.1"
38
+ "@tarojs/runtime": "4.1.0-alpha.3",
39
+ "@tarojs/taro": "4.1.0-alpha.3",
40
+ "@tarojs/shared": "4.1.0-alpha.3"
41
41
  },
42
42
  "peerDependencies": {
43
43
  "vite-plugin-solid": "^2",
44
44
  "webpack": "^5",
45
45
  "solid-js": ">=1",
46
- "@tarojs/runtime": "~4.1.0-alpha.1",
47
- "@tarojs/shared": "~4.1.0-alpha.1"
46
+ "@tarojs/runtime": "~4.1.0-alpha.3",
47
+ "@tarojs/shared": "~4.1.0-alpha.3"
48
48
  },
49
49
  "peerDependenciesMeta": {
50
50
  "vite-plugin-solid": {