@tarojs/runtime 4.1.8-beta.3 → 4.1.9-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/README.md +2 -2
- package/dist/bom/history.js +1 -1
- package/dist/bom/history.js.map +1 -1
- package/dist/bom/location.js +1 -1
- package/dist/bom/location.js.map +1 -1
- package/dist/bom/window.d.ts +0 -1
- package/dist/bom/window.js +8 -8
- package/dist/bom/window.js.map +1 -1
- package/dist/constants/index.d.ts +1 -4
- package/dist/constants/index.js +2 -4
- package/dist/constants/index.js.map +1 -1
- package/dist/dom/event.js +2 -2
- package/dist/dom/event.js.map +1 -1
- package/dist/dom-external/inner-html/parser.js +2 -2
- package/dist/dom-external/inner-html/parser.js.map +1 -1
- package/dist/dom-external/inner-html/{scaner.js → scanner.js} +4 -4
- package/dist/dom-external/inner-html/scanner.js.map +1 -0
- package/dist/dsl/common.js +1 -1
- package/dist/dsl/common.js.map +1 -1
- package/dist/index.cjs.d.ts +3 -7
- package/dist/index.cjs.js +18 -20
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/runtime.esm.d.ts +3 -7
- package/dist/runtime.esm.js +18 -20
- package/dist/runtime.esm.js.map +1 -1
- package/dist/utils/index.d.ts +2 -2
- package/dist/utils/index.js +2 -2
- package/dist/utils/index.js.map +1 -1
- package/package.json +4 -5
- package/dist/dom-external/inner-html/scaner.js.map +0 -1
package/README.md
CHANGED
|
@@ -25,7 +25,7 @@ Taro 运行时。在小程序端连接框架(DSL)渲染机制到小程序渲
|
|
|
25
25
|
|
|
26
26
|
在小程序端模仿浏览器的 `navigator` 实现的对象,在浏览器环境中返回浏览器本身的 `navigator`。此对象通过 Webpack 的 [ProvidePlugin](https://webpack.js.org/plugins/provide-plugin/) 注入到全局对象以供第三方库调用。
|
|
27
27
|
|
|
28
|
-
### document
|
|
28
|
+
### document
|
|
29
29
|
|
|
30
30
|
在小程序端模仿浏览器的 `document` 实现的对象,在浏览器环境中返回浏览器本身的 `document`。此对象通过 Webpack 的 [ProvidePlugin](https://webpack.js.org/plugins/provide-plugin/) 注入到全局对象以供第三方库调用。
|
|
31
31
|
|
|
@@ -47,4 +47,4 @@ Taro 配置:
|
|
|
47
47
|
|
|
48
48
|
### Events
|
|
49
49
|
|
|
50
|
-
[Taro 消息机制](https://
|
|
50
|
+
[Taro 消息机制](https://docs.taro.zone/docs/apis/about/events)。
|
package/dist/bom/history.js
CHANGED
|
@@ -50,7 +50,7 @@ class TaroHistory extends Events {
|
|
|
50
50
|
__classPrivateFieldSet(this, _TaroHistory_cur, ctx.cur, "f");
|
|
51
51
|
}
|
|
52
52
|
}, null);
|
|
53
|
-
this.on(CONTEXT_ACTIONS.
|
|
53
|
+
this.on(CONTEXT_ACTIONS.DESTROY, (pageId) => {
|
|
54
54
|
cache.delete(pageId);
|
|
55
55
|
}, null);
|
|
56
56
|
__classPrivateFieldGet(this, _TaroHistory_instances, "m", _TaroHistory_reset).call(this);
|
package/dist/bom/history.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"history.js","sources":["../../../src/bom/history.ts"],"sourcesContent":["import { isNumber, isString } from '@tarojs/shared'\n\nimport { CONTEXT_ACTIONS } from '../constants'\nimport { Events } from '../emitter/emitter'\nimport env from '../env'\nimport { RuntimeCache } from '../utils/cache'\n\nimport type { TaroLocation } from './location'\n\nexport interface HistoryState {\n state: Record<string, any> | null\n title: string\n url: string\n}\n\ntype Options = {\n window: any\n}\ntype HistoryContext = {\n location: TaroLocation\n stack: HistoryState[]\n cur: number\n}\nconst cache = new RuntimeCache<HistoryContext>('history')\n\nclass TaroHistory extends Events {\n /* private property */\n #location: TaroLocation\n #stack: HistoryState[] = []\n #cur = 0\n\n #window: any\n\n constructor (location: TaroLocation, options: Options) {\n super()\n\n this.#window = options.window\n this.#location = location\n\n this.#location.on('__record_history__', (href: string) => {\n this.#cur++\n this.#stack = this.#stack.slice(0, this.#cur)\n this.#stack.push({\n state: null,\n title: '',\n url: href\n })\n }, null)\n\n this.#location.on('__reset_history__', (href: string) => {\n this.#reset(href)\n }, null)\n\n // 切换上下文行为\n\n this.on(CONTEXT_ACTIONS.INIT, () => {\n this.#reset()\n }, null)\n\n this.on(CONTEXT_ACTIONS.RESTORE, (pageId: string) => {\n cache.set(pageId, {\n location: this.#location,\n stack: this.#stack.slice(),\n cur: this.#cur\n })\n }, null)\n\n this.on(CONTEXT_ACTIONS.RECOVER, (pageId: string) => {\n if (cache.has(pageId)) {\n const ctx = cache.get(pageId)!\n this.#location = ctx.location\n this.#stack = ctx.stack\n this.#cur = ctx.cur\n }\n }, null)\n\n this.on(CONTEXT_ACTIONS.
|
|
1
|
+
{"version":3,"file":"history.js","sources":["../../../src/bom/history.ts"],"sourcesContent":["import { isNumber, isString } from '@tarojs/shared'\n\nimport { CONTEXT_ACTIONS } from '../constants'\nimport { Events } from '../emitter/emitter'\nimport env from '../env'\nimport { RuntimeCache } from '../utils/cache'\n\nimport type { TaroLocation } from './location'\n\nexport interface HistoryState {\n state: Record<string, any> | null\n title: string\n url: string\n}\n\ntype Options = {\n window: any\n}\ntype HistoryContext = {\n location: TaroLocation\n stack: HistoryState[]\n cur: number\n}\nconst cache = new RuntimeCache<HistoryContext>('history')\n\nclass TaroHistory extends Events {\n /* private property */\n #location: TaroLocation\n #stack: HistoryState[] = []\n #cur = 0\n\n #window: any\n\n constructor (location: TaroLocation, options: Options) {\n super()\n\n this.#window = options.window\n this.#location = location\n\n this.#location.on('__record_history__', (href: string) => {\n this.#cur++\n this.#stack = this.#stack.slice(0, this.#cur)\n this.#stack.push({\n state: null,\n title: '',\n url: href\n })\n }, null)\n\n this.#location.on('__reset_history__', (href: string) => {\n this.#reset(href)\n }, null)\n\n // 切换上下文行为\n\n this.on(CONTEXT_ACTIONS.INIT, () => {\n this.#reset()\n }, null)\n\n this.on(CONTEXT_ACTIONS.RESTORE, (pageId: string) => {\n cache.set(pageId, {\n location: this.#location,\n stack: this.#stack.slice(),\n cur: this.#cur\n })\n }, null)\n\n this.on(CONTEXT_ACTIONS.RECOVER, (pageId: string) => {\n if (cache.has(pageId)) {\n const ctx = cache.get(pageId)!\n this.#location = ctx.location\n this.#stack = ctx.stack\n this.#cur = ctx.cur\n }\n }, null)\n\n this.on(CONTEXT_ACTIONS.DESTROY, (pageId: string) => {\n cache.delete(pageId)\n }, null)\n\n this.#reset()\n }\n\n #reset (href = '') {\n this.#stack = [\n {\n state: null,\n title: '',\n url: href || this.#location.href\n }\n ]\n this.#cur = 0\n }\n\n /* public property */\n get length () {\n return this.#stack.length\n }\n\n get state () {\n return this.#stack[this.#cur].state\n }\n\n /* public method */\n go (delta: number) {\n if (!isNumber(delta) || isNaN(delta)) return\n\n let targetIdx = this.#cur + delta\n targetIdx = Math.min(Math.max(targetIdx, 0), this.length - 1)\n\n this.#cur = targetIdx\n\n this.#location.trigger('__set_href_without_history__', this.#stack[this.#cur].url)\n this.#window.trigger('popstate', this.#stack[this.#cur])\n }\n\n back () {\n this.go(-1)\n }\n\n forward () {\n this.go(1)\n }\n\n pushState (state: any, title: string, url: string) {\n if (!url || !isString(url)) return\n this.#stack = this.#stack.slice(0, this.#cur + 1)\n this.#stack.push({\n state,\n title,\n url\n })\n this.#cur = this.length - 1\n\n this.#location.trigger('__set_href_without_history__', url)\n }\n\n replaceState (state: any, title: string, url: string) {\n if (!url || !isString(url)) return\n this.#stack[this.#cur] = {\n state,\n title,\n url\n }\n\n this.#location.trigger('__set_href_without_history__', url)\n }\n\n // For debug\n get cache () {\n return cache\n }\n}\n\nexport type { TaroHistory }\nexport const History: typeof TaroHistory = process.env.TARO_PLATFORM === 'web' ? env.window.History : TaroHistory\n"],"names":[],"mappings":"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"}
|
package/dist/bom/location.js
CHANGED
|
@@ -47,7 +47,7 @@ class TaroLocation extends Events {
|
|
|
47
47
|
__classPrivateFieldSet(this, _TaroLocation_noCheckUrl, false, "f");
|
|
48
48
|
}
|
|
49
49
|
}, null);
|
|
50
|
-
this.on(CONTEXT_ACTIONS.
|
|
50
|
+
this.on(CONTEXT_ACTIONS.DESTROY, (pageId) => {
|
|
51
51
|
cache.delete(pageId);
|
|
52
52
|
}, null);
|
|
53
53
|
}
|
package/dist/bom/location.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"location.js","sources":["../../../src/bom/location.ts"],"sourcesContent":["import { isNumber, isString, warn } from '@tarojs/shared'\n\nimport { CONTEXT_ACTIONS } from '../constants'\nimport { getCurrentInstance } from '../current'\nimport { Events } from '../emitter/emitter'\nimport env from '../env'\nimport { RuntimeCache } from '../utils/cache'\nimport { TaroURLProvider } from './URL'\n\ntype PreValue = ReturnType<typeof TaroURLProvider.prototype._toRaw>\n\ntype Options = {\n window: any\n}\ntype LocationContext = {\n lastHref: string\n}\n\nconst INIT_URL = 'https://taro.com'\nconst cache = new RuntimeCache<LocationContext>('location')\n\nclass TaroLocation extends Events {\n /* private property */\n #url = new TaroURLProvider(INIT_URL)\n #noCheckUrl = false\n #window: any\n\n constructor (options: Options) {\n super()\n\n this.#window = options.window\n\n this.#reset()\n\n this.on(\n '__set_href_without_history__',\n (href: string) => {\n this.#noCheckUrl = true\n\n const lastHash = this.#url.hash\n this.#url.href = generateFullUrl(href)\n\n if (lastHash !== this.#url.hash) {\n this.#window.trigger('hashchange')\n }\n\n this.#noCheckUrl = false\n },\n null\n )\n\n // 切换上下文行为\n this.on(\n CONTEXT_ACTIONS.INIT,\n () => {\n this.#reset()\n },\n null\n )\n\n this.on(\n CONTEXT_ACTIONS.RESTORE,\n (pageId: string) => {\n cache.set(pageId, {\n lastHref: this.href,\n })\n },\n null\n )\n\n this.on(\n CONTEXT_ACTIONS.RECOVER,\n (pageId: string) => {\n // 数据恢复时,不需要执行跳转\n if (cache.has(pageId)) {\n const ctx = cache.get(pageId)!\n this.#noCheckUrl = true\n this.#url.href = ctx.lastHref\n this.#noCheckUrl = false\n }\n },\n null\n )\n\n this.on(\n CONTEXT_ACTIONS.DESTORY,\n (pageId: string) => {\n cache.delete(pageId)\n },\n null\n )\n }\n\n /* private method */\n #reset () {\n const Current = getCurrentInstance()\n const router = Current.router\n if (router) {\n const { path, params } = router\n const searchArr = Object.keys(params).map((key) => {\n return `${key}=${params[key]}`\n })\n const searchStr = searchArr.length > 0 ? '?' + searchArr.join('&') : ''\n const url = `${INIT_URL}${path.startsWith('/') ? path : '/' + path}${searchStr}`\n\n this.#url = new TaroURLProvider(url)\n\n this.trigger('__reset_history__', this.href)\n }\n }\n\n #getPreValue (): PreValue {\n return this.#url._toRaw()\n }\n\n #rollBack (href: string) {\n this.#url.href = href\n }\n\n #recordHistory () {\n this.trigger('__record_history__', this.href)\n }\n\n /**\n * 校验url的变化,是否需要更新history\n */\n #checkUrlChange (preValue: PreValue): boolean {\n if (this.#noCheckUrl) {\n return false\n }\n\n const { protocol, hostname, port, pathname, search, hash } = this.#url._toRaw()\n\n // 跨域三要素不允许修改\n if (protocol !== preValue.protocol || hostname !== preValue.hostname || port !== preValue.port) {\n this.#rollBack(preValue.href)\n return false\n }\n\n // pathname\n if (pathname !== preValue.pathname) {\n return true\n }\n\n // search\n if (search !== preValue.search) {\n return true\n }\n\n // hashchange\n if (hash !== preValue.hash) {\n this.#window.trigger('hashchange')\n return true\n }\n\n this.#rollBack(preValue.href)\n return false\n }\n\n /* public property */\n get protocol () {\n return this.#url.protocol\n }\n\n set protocol (val: string) {\n const REG = /^(http|https):$/i\n if (!val || !isString(val) || !REG.test(val.trim())) return\n\n val = val.trim()\n const preValue = this.#getPreValue()\n this.#url.protocol = val\n\n if (this.#checkUrlChange(preValue)) this.#recordHistory()\n }\n\n get host () {\n return this.#url.host\n }\n\n set host (val: string) {\n if (!val || !isString(val)) return\n val = val.trim()\n\n const preValue = this.#getPreValue()\n this.#url.host = val\n\n if (this.#checkUrlChange(preValue)) this.#recordHistory()\n }\n\n get hostname () {\n return this.#url.hostname\n }\n\n set hostname (val: string) {\n if (!val || !isString(val)) return\n val = val.trim()\n\n const preValue = this.#getPreValue()\n this.#url.hostname = val\n\n if (this.#checkUrlChange(preValue)) this.#recordHistory()\n }\n\n get port () {\n return this.#url.port\n }\n\n set port (val: string) {\n const xVal = Number((val = val.trim()))\n if (!isNumber(xVal) || xVal <= 0) return\n\n const preValue = this.#getPreValue()\n this.#url.port = val\n\n if (this.#checkUrlChange(preValue)) this.#recordHistory()\n }\n\n get pathname () {\n return this.#url.pathname\n }\n\n set pathname (val: string) {\n if (!val || !isString(val)) return\n val = val.trim()\n\n const preValue = this.#getPreValue()\n this.#url.pathname = val\n\n if (this.#checkUrlChange(preValue)) this.#recordHistory()\n }\n\n get search () {\n return this.#url.search\n }\n\n set search (val: string) {\n if (!val || !isString(val)) return\n val = val.trim()\n val = val.startsWith('?') ? val : `?${val}`\n\n const preValue = this.#getPreValue()\n this.#url.search = val\n\n if (this.#checkUrlChange(preValue)) this.#recordHistory()\n }\n\n get hash () {\n return this.#url.hash\n }\n\n // 小程序的navigateTo存在截断hash字符串的问题\n set hash (val: string) {\n if (!val || !isString(val)) return\n val = val.trim()\n val = val.startsWith('#') ? val : `#${val}`\n\n const preValue = this.#getPreValue()\n this.#url.hash = val\n\n if (this.#checkUrlChange(preValue)) this.#recordHistory()\n }\n\n get href () {\n return this.#url.href\n }\n\n set href (val: string) {\n const REG = /^(http:|https:)?\\/\\/.+/\n if (!val || !isString(val) || !REG.test((val = val.trim()))) return\n\n const preValue = this.#getPreValue()\n this.#url.href = val\n\n if (this.#checkUrlChange(preValue)) this.#recordHistory()\n }\n\n get origin () {\n return this.#url.origin\n }\n\n set origin (val: string) {\n const REG = /^(http:|https:)?\\/\\/.+/\n if (!val || !isString(val) || !REG.test((val = val.trim()))) return\n\n const preValue = this.#getPreValue()\n this.#url.origin = val\n\n if (this.#checkUrlChange(preValue)) this.#recordHistory()\n }\n\n /* public method */\n assign () {\n warn(true, '小程序环境中调用location.assign()无效.')\n }\n\n reload () {\n warn(true, '小程序环境中调用location.reload()无效.')\n }\n\n replace (url: string) {\n this.trigger('__set_href_without_history__', url)\n }\n\n toString () {\n return this.href\n }\n\n // For debug\n get cache () {\n return cache\n }\n}\n\nexport type { TaroLocation }\nexport const Location: typeof TaroLocation = process.env.TARO_PLATFORM === 'web' ? env.window.Location : TaroLocation\n\nfunction generateFullUrl (val = '') {\n const origin = INIT_URL\n if (/^[/?#]/.test(val)) {\n return origin + val\n }\n return val\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"location.js","sources":["../../../src/bom/location.ts"],"sourcesContent":["import { isNumber, isString, warn } from '@tarojs/shared'\n\nimport { CONTEXT_ACTIONS } from '../constants'\nimport { getCurrentInstance } from '../current'\nimport { Events } from '../emitter/emitter'\nimport env from '../env'\nimport { RuntimeCache } from '../utils/cache'\nimport { TaroURLProvider } from './URL'\n\ntype PreValue = ReturnType<typeof TaroURLProvider.prototype._toRaw>\n\ntype Options = {\n window: any\n}\ntype LocationContext = {\n lastHref: string\n}\n\nconst INIT_URL = 'https://taro.com'\nconst cache = new RuntimeCache<LocationContext>('location')\n\nclass TaroLocation extends Events {\n /* private property */\n #url = new TaroURLProvider(INIT_URL)\n #noCheckUrl = false\n #window: any\n\n constructor (options: Options) {\n super()\n\n this.#window = options.window\n\n this.#reset()\n\n this.on(\n '__set_href_without_history__',\n (href: string) => {\n this.#noCheckUrl = true\n\n const lastHash = this.#url.hash\n this.#url.href = generateFullUrl(href)\n\n if (lastHash !== this.#url.hash) {\n this.#window.trigger('hashchange')\n }\n\n this.#noCheckUrl = false\n },\n null\n )\n\n // 切换上下文行为\n this.on(\n CONTEXT_ACTIONS.INIT,\n () => {\n this.#reset()\n },\n null\n )\n\n this.on(\n CONTEXT_ACTIONS.RESTORE,\n (pageId: string) => {\n cache.set(pageId, {\n lastHref: this.href,\n })\n },\n null\n )\n\n this.on(\n CONTEXT_ACTIONS.RECOVER,\n (pageId: string) => {\n // 数据恢复时,不需要执行跳转\n if (cache.has(pageId)) {\n const ctx = cache.get(pageId)!\n this.#noCheckUrl = true\n this.#url.href = ctx.lastHref\n this.#noCheckUrl = false\n }\n },\n null\n )\n\n this.on(\n CONTEXT_ACTIONS.DESTROY,\n (pageId: string) => {\n cache.delete(pageId)\n },\n null\n )\n }\n\n /* private method */\n #reset () {\n const Current = getCurrentInstance()\n const router = Current.router\n if (router) {\n const { path, params } = router\n const searchArr = Object.keys(params).map((key) => {\n return `${key}=${params[key]}`\n })\n const searchStr = searchArr.length > 0 ? '?' + searchArr.join('&') : ''\n const url = `${INIT_URL}${path.startsWith('/') ? path : '/' + path}${searchStr}`\n\n this.#url = new TaroURLProvider(url)\n\n this.trigger('__reset_history__', this.href)\n }\n }\n\n #getPreValue (): PreValue {\n return this.#url._toRaw()\n }\n\n #rollBack (href: string) {\n this.#url.href = href\n }\n\n #recordHistory () {\n this.trigger('__record_history__', this.href)\n }\n\n /**\n * 校验url的变化,是否需要更新history\n */\n #checkUrlChange (preValue: PreValue): boolean {\n if (this.#noCheckUrl) {\n return false\n }\n\n const { protocol, hostname, port, pathname, search, hash } = this.#url._toRaw()\n\n // 跨域三要素不允许修改\n if (protocol !== preValue.protocol || hostname !== preValue.hostname || port !== preValue.port) {\n this.#rollBack(preValue.href)\n return false\n }\n\n // pathname\n if (pathname !== preValue.pathname) {\n return true\n }\n\n // search\n if (search !== preValue.search) {\n return true\n }\n\n // hashchange\n if (hash !== preValue.hash) {\n this.#window.trigger('hashchange')\n return true\n }\n\n this.#rollBack(preValue.href)\n return false\n }\n\n /* public property */\n get protocol () {\n return this.#url.protocol\n }\n\n set protocol (val: string) {\n const REG = /^(http|https):$/i\n if (!val || !isString(val) || !REG.test(val.trim())) return\n\n val = val.trim()\n const preValue = this.#getPreValue()\n this.#url.protocol = val\n\n if (this.#checkUrlChange(preValue)) this.#recordHistory()\n }\n\n get host () {\n return this.#url.host\n }\n\n set host (val: string) {\n if (!val || !isString(val)) return\n val = val.trim()\n\n const preValue = this.#getPreValue()\n this.#url.host = val\n\n if (this.#checkUrlChange(preValue)) this.#recordHistory()\n }\n\n get hostname () {\n return this.#url.hostname\n }\n\n set hostname (val: string) {\n if (!val || !isString(val)) return\n val = val.trim()\n\n const preValue = this.#getPreValue()\n this.#url.hostname = val\n\n if (this.#checkUrlChange(preValue)) this.#recordHistory()\n }\n\n get port () {\n return this.#url.port\n }\n\n set port (val: string) {\n const xVal = Number((val = val.trim()))\n if (!isNumber(xVal) || xVal <= 0) return\n\n const preValue = this.#getPreValue()\n this.#url.port = val\n\n if (this.#checkUrlChange(preValue)) this.#recordHistory()\n }\n\n get pathname () {\n return this.#url.pathname\n }\n\n set pathname (val: string) {\n if (!val || !isString(val)) return\n val = val.trim()\n\n const preValue = this.#getPreValue()\n this.#url.pathname = val\n\n if (this.#checkUrlChange(preValue)) this.#recordHistory()\n }\n\n get search () {\n return this.#url.search\n }\n\n set search (val: string) {\n if (!val || !isString(val)) return\n val = val.trim()\n val = val.startsWith('?') ? val : `?${val}`\n\n const preValue = this.#getPreValue()\n this.#url.search = val\n\n if (this.#checkUrlChange(preValue)) this.#recordHistory()\n }\n\n get hash () {\n return this.#url.hash\n }\n\n // 小程序的navigateTo存在截断hash字符串的问题\n set hash (val: string) {\n if (!val || !isString(val)) return\n val = val.trim()\n val = val.startsWith('#') ? val : `#${val}`\n\n const preValue = this.#getPreValue()\n this.#url.hash = val\n\n if (this.#checkUrlChange(preValue)) this.#recordHistory()\n }\n\n get href () {\n return this.#url.href\n }\n\n set href (val: string) {\n const REG = /^(http:|https:)?\\/\\/.+/\n if (!val || !isString(val) || !REG.test((val = val.trim()))) return\n\n const preValue = this.#getPreValue()\n this.#url.href = val\n\n if (this.#checkUrlChange(preValue)) this.#recordHistory()\n }\n\n get origin () {\n return this.#url.origin\n }\n\n set origin (val: string) {\n const REG = /^(http:|https:)?\\/\\/.+/\n if (!val || !isString(val) || !REG.test((val = val.trim()))) return\n\n const preValue = this.#getPreValue()\n this.#url.origin = val\n\n if (this.#checkUrlChange(preValue)) this.#recordHistory()\n }\n\n /* public method */\n assign () {\n warn(true, '小程序环境中调用location.assign()无效.')\n }\n\n reload () {\n warn(true, '小程序环境中调用location.reload()无效.')\n }\n\n replace (url: string) {\n this.trigger('__set_href_without_history__', url)\n }\n\n toString () {\n return this.href\n }\n\n // For debug\n get cache () {\n return cache\n }\n}\n\nexport type { TaroLocation }\nexport const Location: typeof TaroLocation = process.env.TARO_PLATFORM === 'web' ? env.window.Location : TaroLocation\n\nfunction generateFullUrl (val = '') {\n const origin = INIT_URL\n if (/^[/?#]/.test(val)) {\n return origin + val\n }\n return val\n}\n"],"names":[],"mappings":"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"}
|
package/dist/bom/window.d.ts
CHANGED
|
@@ -21,7 +21,6 @@ declare class TaroWindow extends Events {
|
|
|
21
21
|
setTimeout(...args: Parameters<typeof setTimeout>): NodeJS.Timeout;
|
|
22
22
|
clearTimeout(...args: Parameters<typeof clearTimeout>): void;
|
|
23
23
|
}
|
|
24
|
-
|
|
25
24
|
declare const taroWindowProvider: TaroWindow;
|
|
26
25
|
declare const taroLocationProvider: TaroLocation;
|
|
27
26
|
declare const taroHistoryProvider: TaroHistory;
|
package/dist/bom/window.js
CHANGED
|
@@ -45,23 +45,23 @@ class TaroWindow extends Events {
|
|
|
45
45
|
const _location = this.location;
|
|
46
46
|
const _history = this.history;
|
|
47
47
|
this.on(CONTEXT_ACTIONS.INIT, (pageId) => {
|
|
48
|
-
// 页面onload,为该页面建立新的上下文信息
|
|
48
|
+
// 页面 onload,为该页面建立新的上下文信息
|
|
49
49
|
_location.trigger(CONTEXT_ACTIONS.INIT, pageId);
|
|
50
50
|
}, null);
|
|
51
51
|
this.on(CONTEXT_ACTIONS.RECOVER, (pageId) => {
|
|
52
|
-
// 页面onshow,恢复当前页面的上下文信息
|
|
52
|
+
// 页面 onshow,恢复当前页面的上下文信息
|
|
53
53
|
_location.trigger(CONTEXT_ACTIONS.RECOVER, pageId);
|
|
54
54
|
_history.trigger(CONTEXT_ACTIONS.RECOVER, pageId);
|
|
55
55
|
}, null);
|
|
56
56
|
this.on(CONTEXT_ACTIONS.RESTORE, (pageId) => {
|
|
57
|
-
// 页面onhide,缓存当前页面的上下文信息
|
|
57
|
+
// 页面 onhide,缓存当前页面的上下文信息
|
|
58
58
|
_location.trigger(CONTEXT_ACTIONS.RESTORE, pageId);
|
|
59
59
|
_history.trigger(CONTEXT_ACTIONS.RESTORE, pageId);
|
|
60
60
|
}, null);
|
|
61
|
-
this.on(CONTEXT_ACTIONS.
|
|
62
|
-
// 页面onunload,清除当前页面的上下文信息
|
|
63
|
-
_location.trigger(CONTEXT_ACTIONS.
|
|
64
|
-
_history.trigger(CONTEXT_ACTIONS.
|
|
61
|
+
this.on(CONTEXT_ACTIONS.DESTROY, (pageId) => {
|
|
62
|
+
// 页面 onunload,清除当前页面的上下文信息
|
|
63
|
+
_location.trigger(CONTEXT_ACTIONS.DESTROY, pageId);
|
|
64
|
+
_history.trigger(CONTEXT_ACTIONS.DESTROY, pageId);
|
|
65
65
|
}, null);
|
|
66
66
|
}
|
|
67
67
|
get document() {
|
|
@@ -89,5 +89,5 @@ const taroWindowProvider = process.env.TARO_PLATFORM === 'web' ? env.window : (e
|
|
|
89
89
|
const taroLocationProvider = taroWindowProvider.location;
|
|
90
90
|
const taroHistoryProvider = taroWindowProvider.history;
|
|
91
91
|
|
|
92
|
-
export { taroHistoryProvider, taroLocationProvider, taroWindowProvider };
|
|
92
|
+
export { TaroWindow, taroHistoryProvider, taroLocationProvider, taroWindowProvider };
|
|
93
93
|
//# sourceMappingURL=window.js.map
|
package/dist/bom/window.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"window.js","sources":["../../../src/bom/window.ts"],"sourcesContent":["import { isString } from '@tarojs/shared'\n\nimport { CONTEXT_ACTIONS } from '../constants'\nimport { Events } from '../emitter/emitter'\nimport env from '../env'\nimport { taroGetComputedStyleProvider } from './getComputedStyle'\nimport { History } from './history'\nimport { Location } from './location'\nimport { nav as navigator } from './navigator'\nimport { caf, raf } from './raf'\n\nimport type { TaroHistory } from './history'\nimport type { TaroLocation } from './location'\n\
|
|
1
|
+
{"version":3,"file":"window.js","sources":["../../../src/bom/window.ts"],"sourcesContent":["import { isString } from '@tarojs/shared'\n\nimport { CONTEXT_ACTIONS } from '../constants'\nimport { Events } from '../emitter/emitter'\nimport env from '../env'\nimport { taroGetComputedStyleProvider } from './getComputedStyle'\nimport { History } from './history'\nimport { Location } from './location'\nimport { nav as navigator } from './navigator'\nimport { caf, raf } from './raf'\n\nimport type { TaroHistory } from './history'\nimport type { TaroLocation } from './location'\n\nexport class TaroWindow extends Events {\n navigator = navigator\n requestAnimationFrame = raf\n cancelAnimationFrame = caf\n getComputedStyle = taroGetComputedStyleProvider\n Date: DateConstructor\n\n location: TaroLocation\n history: TaroHistory\n XMLHttpRequest?: Partial<XMLHttpRequest>\n\n constructor () {\n super()\n\n const globalProperties = [\n ...Object.getOwnPropertyNames(global || {}),\n ...Object.getOwnPropertySymbols(global || {})\n ]\n\n globalProperties.forEach(property => {\n if (property === 'atob' || property === 'document') return\n if (!Object.prototype.hasOwnProperty.call(this, property)) {\n // 防止小程序环境下,window 上的某些 get 属性在赋值时报错\n try {\n this[property] = global[property]\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`[Taro warn] window.${String(property)} 在赋值到 window 时报错`)\n }\n }\n }\n })\n\n this.Date ||= Date\n\n // 应用启动时,提供给需要读取历史信息的库使用\n this.location = new Location({ window: this }) as any\n // @ts-ignore\n this.history = new History(this.location, { window: this })\n\n this.initEvent()\n }\n\n initEvent () {\n const _location = this.location\n const _history = this.history\n\n this.on(CONTEXT_ACTIONS.INIT, (pageId: string) => {\n // 页面 onload,为该页面建立新的上下文信息\n _location.trigger(CONTEXT_ACTIONS.INIT, pageId)\n }, null)\n\n this.on(CONTEXT_ACTIONS.RECOVER, (pageId: string) => {\n // 页面 onshow,恢复当前页面的上下文信息\n _location.trigger(CONTEXT_ACTIONS.RECOVER, pageId)\n _history.trigger(CONTEXT_ACTIONS.RECOVER, pageId)\n }, null)\n\n this.on(CONTEXT_ACTIONS.RESTORE, (pageId: string) => {\n // 页面 onhide,缓存当前页面的上下文信息\n _location.trigger(CONTEXT_ACTIONS.RESTORE, pageId)\n _history.trigger(CONTEXT_ACTIONS.RESTORE, pageId)\n }, null)\n\n this.on(CONTEXT_ACTIONS.DESTROY, (pageId: string) => {\n // 页面 onunload,清除当前页面的上下文信息\n _location.trigger(CONTEXT_ACTIONS.DESTROY, pageId)\n _history.trigger(CONTEXT_ACTIONS.DESTROY, pageId)\n }, null)\n }\n\n get document () {\n return env.document\n }\n\n addEventListener (event: string, callback: (arg: any) => void) {\n if (!isString(event)) return\n this.on(event, callback, null)\n }\n\n removeEventListener (event: string, callback: (arg: any) => void) {\n if (!isString(event)) return\n this.off(event, callback, null)\n }\n\n setTimeout (...args: Parameters<typeof setTimeout>) {\n return setTimeout(...args)\n }\n\n clearTimeout (...args: Parameters<typeof clearTimeout>) {\n return clearTimeout(...args)\n }\n}\n\n// Note: 小程序端 vite 打包成 commonjs,const window = xxx 会报错,所以把 window 改为 taroWindowProvider,location 和 history 同理\nexport const taroWindowProvider: TaroWindow = process.env.TARO_PLATFORM === 'web' ? env.window : (env.window = new TaroWindow())\nexport const taroLocationProvider = taroWindowProvider.location\nexport const taroHistoryProvider = taroWindowProvider.history\n"],"names":["navigator","raf","caf"],"mappings":"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"}
|
|
@@ -49,14 +49,11 @@ declare const EXTERNAL_CLASSES = "externalClasses";
|
|
|
49
49
|
declare const EVENT_CALLBACK_RESULT = "e_result";
|
|
50
50
|
declare const BEHAVIORS = "behaviors";
|
|
51
51
|
declare const A = "a";
|
|
52
|
-
/**
|
|
53
|
-
* 页面上下文切换时的行为
|
|
54
|
-
*/
|
|
55
52
|
declare enum CONTEXT_ACTIONS {
|
|
56
53
|
INIT = "0",
|
|
57
54
|
RESTORE = "1",
|
|
58
55
|
RECOVER = "2",
|
|
59
|
-
|
|
56
|
+
DESTROY = "3"
|
|
60
57
|
}
|
|
61
58
|
|
|
62
59
|
export { A, APP, BEHAVIORS, BODY, CATCHMOVE, CATCH_VIEW, CHANGE, CLASS, CLICK_VIEW, COMMENT, COMPILE_MODE, CONFIRM, CONTAINER, CONTEXT_ACTIONS, CURRENT_TARGET, CUSTOM_WRAPPER, DATASET, DATE, DOCUMENT_ELEMENT_NAME, DOCUMENT_FRAGMENT, EVENT_CALLBACK_RESULT, EXTERNAL_CLASSES, FOCUS, HEAD, HOOKS_APP_ID, HTML, ID, INPUT, KEY_CODE, OBJECT, ON_HIDE, ON_LOAD, ON_READY, ON_SHOW, OPTIONS, PAGE_INIT, PROPERTY_THRESHOLD, PROPS, PURE_VIEW, ROOT_STR, SET_DATA, SET_TIMEOUT, STATIC_VIEW, STYLE, TARGET, TARO_RUNTIME, TIME_STAMP, TOUCHMOVE, TYPE, UID, VALUE, VIEW };
|
package/dist/constants/index.js
CHANGED
|
@@ -49,15 +49,13 @@ const EXTERNAL_CLASSES = 'externalClasses';
|
|
|
49
49
|
const EVENT_CALLBACK_RESULT = 'e_result';
|
|
50
50
|
const BEHAVIORS = 'behaviors';
|
|
51
51
|
const A = 'a';
|
|
52
|
-
|
|
53
|
-
* 页面上下文切换时的行为
|
|
54
|
-
*/
|
|
52
|
+
// 页面上下文切换时的行为
|
|
55
53
|
var CONTEXT_ACTIONS;
|
|
56
54
|
(function (CONTEXT_ACTIONS) {
|
|
57
55
|
CONTEXT_ACTIONS["INIT"] = "0";
|
|
58
56
|
CONTEXT_ACTIONS["RESTORE"] = "1";
|
|
59
57
|
CONTEXT_ACTIONS["RECOVER"] = "2";
|
|
60
|
-
CONTEXT_ACTIONS["
|
|
58
|
+
CONTEXT_ACTIONS["DESTROY"] = "3";
|
|
61
59
|
})(CONTEXT_ACTIONS || (CONTEXT_ACTIONS = {}));
|
|
62
60
|
|
|
63
61
|
export { A, APP, BEHAVIORS, BODY, CATCHMOVE, CATCH_VIEW, CHANGE, CLASS, CLICK_VIEW, COMMENT, COMPILE_MODE, CONFIRM, CONTAINER, CONTEXT_ACTIONS, CURRENT_TARGET, CUSTOM_WRAPPER, DATASET, DATE, DOCUMENT_ELEMENT_NAME, DOCUMENT_FRAGMENT, EVENT_CALLBACK_RESULT, EXTERNAL_CLASSES, FOCUS, HEAD, HOOKS_APP_ID, HTML, ID, INPUT, KEY_CODE, OBJECT, ON_HIDE, ON_LOAD, ON_READY, ON_SHOW, OPTIONS, PAGE_INIT, PROPERTY_THRESHOLD, PROPS, PURE_VIEW, ROOT_STR, SET_DATA, SET_TIMEOUT, STATIC_VIEW, STYLE, TARGET, TARO_RUNTIME, TIME_STAMP, TOUCHMOVE, TYPE, UID, VALUE, VIEW };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/constants/index.ts"],"sourcesContent":["export const PROPERTY_THRESHOLD = 2046\nexport const TARO_RUNTIME = 'Taro runtime'\nexport const HOOKS_APP_ID = 'taro-app'\nexport const SET_DATA = '小程序 setData'\nexport const PAGE_INIT = '页面初始化'\nexport const ROOT_STR = 'root'\nexport const HTML = 'html'\nexport const HEAD = 'head'\nexport const BODY = 'body'\nexport const APP = 'app'\nexport const CONTAINER = 'container'\nexport const DOCUMENT_ELEMENT_NAME = '#document'\nexport const DOCUMENT_FRAGMENT = 'document-fragment'\nexport const ID = 'id'\nexport const UID = 'uid'\nexport const CLASS = 'class'\nexport const STYLE = 'style'\nexport const FOCUS = 'focus'\nexport const VIEW = 'view'\nexport const STATIC_VIEW = 'static-view'\nexport const PURE_VIEW = 'pure-view'\nexport const CLICK_VIEW = 'click-view'\nexport const PROPS = 'props'\nexport const DATASET = 'dataset'\nexport const OBJECT = 'object'\nexport const VALUE = 'value'\nexport const INPUT = 'input'\nexport const CHANGE = 'change'\nexport const CUSTOM_WRAPPER = 'custom-wrapper'\nexport const TARGET = 'target'\nexport const CURRENT_TARGET = 'currentTarget'\nexport const TYPE = 'type'\nexport const CONFIRM = 'confirm'\nexport const TIME_STAMP = 'timeStamp'\nexport const KEY_CODE = 'keyCode'\nexport const TOUCHMOVE = 'touchmove'\nexport const DATE = 'Date'\nexport const SET_TIMEOUT = 'setTimeout'\nexport const COMPILE_MODE = 'compileMode'\nexport const CATCHMOVE = 'catchMove'\nexport const CATCH_VIEW = 'catch-view'\nexport const COMMENT = 'comment'\nexport const ON_LOAD = 'onLoad'\nexport const ON_READY = 'onReady'\nexport const ON_SHOW = 'onShow'\nexport const ON_HIDE = 'onHide'\nexport const OPTIONS = 'options'\nexport const EXTERNAL_CLASSES = 'externalClasses'\nexport const EVENT_CALLBACK_RESULT = 'e_result'\nexport const BEHAVIORS = 'behaviors'\nexport const A = 'a'\n\n
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/constants/index.ts"],"sourcesContent":["export const PROPERTY_THRESHOLD = 2046\nexport const TARO_RUNTIME = 'Taro runtime'\nexport const HOOKS_APP_ID = 'taro-app'\nexport const SET_DATA = '小程序 setData'\nexport const PAGE_INIT = '页面初始化'\nexport const ROOT_STR = 'root'\nexport const HTML = 'html'\nexport const HEAD = 'head'\nexport const BODY = 'body'\nexport const APP = 'app'\nexport const CONTAINER = 'container'\nexport const DOCUMENT_ELEMENT_NAME = '#document'\nexport const DOCUMENT_FRAGMENT = 'document-fragment'\nexport const ID = 'id'\nexport const UID = 'uid'\nexport const CLASS = 'class'\nexport const STYLE = 'style'\nexport const FOCUS = 'focus'\nexport const VIEW = 'view'\nexport const STATIC_VIEW = 'static-view'\nexport const PURE_VIEW = 'pure-view'\nexport const CLICK_VIEW = 'click-view'\nexport const PROPS = 'props'\nexport const DATASET = 'dataset'\nexport const OBJECT = 'object'\nexport const VALUE = 'value'\nexport const INPUT = 'input'\nexport const CHANGE = 'change'\nexport const CUSTOM_WRAPPER = 'custom-wrapper'\nexport const TARGET = 'target'\nexport const CURRENT_TARGET = 'currentTarget'\nexport const TYPE = 'type'\nexport const CONFIRM = 'confirm'\nexport const TIME_STAMP = 'timeStamp'\nexport const KEY_CODE = 'keyCode'\nexport const TOUCHMOVE = 'touchmove'\nexport const DATE = 'Date'\nexport const SET_TIMEOUT = 'setTimeout'\nexport const COMPILE_MODE = 'compileMode'\nexport const CATCHMOVE = 'catchMove'\nexport const CATCH_VIEW = 'catch-view'\nexport const COMMENT = 'comment'\nexport const ON_LOAD = 'onLoad'\nexport const ON_READY = 'onReady'\nexport const ON_SHOW = 'onShow'\nexport const ON_HIDE = 'onHide'\nexport const OPTIONS = 'options'\nexport const EXTERNAL_CLASSES = 'externalClasses'\nexport const EVENT_CALLBACK_RESULT = 'e_result'\nexport const BEHAVIORS = 'behaviors'\nexport const A = 'a'\n\n// 页面上下文切换时的行为\nexport enum CONTEXT_ACTIONS {\n INIT = '0',\n RESTORE = '1',\n RECOVER = '2',\n DESTROY = '3'\n}\n"],"names":[],"mappings":"AAAO,MAAM,kBAAkB,GAAG;AAC3B,MAAM,YAAY,GAAG;AACrB,MAAM,YAAY,GAAG;AACrB,MAAM,QAAQ,GAAG;AACjB,MAAM,SAAS,GAAG;AAClB,MAAM,QAAQ,GAAG;AACjB,MAAM,IAAI,GAAG;AACb,MAAM,IAAI,GAAG;AACb,MAAM,IAAI,GAAG;AACb,MAAM,GAAG,GAAG;AACZ,MAAM,SAAS,GAAG;AAClB,MAAM,qBAAqB,GAAG;AAC9B,MAAM,iBAAiB,GAAG;AAC1B,MAAM,EAAE,GAAG;AACX,MAAM,GAAG,GAAG;AACZ,MAAM,KAAK,GAAG;AACd,MAAM,KAAK,GAAG;AACd,MAAM,KAAK,GAAG;AACd,MAAM,IAAI,GAAG;AACb,MAAM,WAAW,GAAG;AACpB,MAAM,SAAS,GAAG;AAClB,MAAM,UAAU,GAAG;AACnB,MAAM,KAAK,GAAG;AACd,MAAM,OAAO,GAAG;AAChB,MAAM,MAAM,GAAG;AACf,MAAM,KAAK,GAAG;AACd,MAAM,KAAK,GAAG;AACd,MAAM,MAAM,GAAG;AACf,MAAM,cAAc,GAAG;AACvB,MAAM,MAAM,GAAG;AACf,MAAM,cAAc,GAAG;AACvB,MAAM,IAAI,GAAG;AACb,MAAM,OAAO,GAAG;AAChB,MAAM,UAAU,GAAG;AACnB,MAAM,QAAQ,GAAG;AACjB,MAAM,SAAS,GAAG;AAClB,MAAM,IAAI,GAAG;AACb,MAAM,WAAW,GAAG;AACpB,MAAM,YAAY,GAAG;AACrB,MAAM,SAAS,GAAG;AAClB,MAAM,UAAU,GAAG;AACnB,MAAM,OAAO,GAAG;AAChB,MAAM,OAAO,GAAG;AAChB,MAAM,QAAQ,GAAG;AACjB,MAAM,OAAO,GAAG;AAChB,MAAM,OAAO,GAAG;AAChB,MAAM,OAAO,GAAG;AAChB,MAAM,gBAAgB,GAAG;AACzB,MAAM,qBAAqB,GAAG;AAC9B,MAAM,SAAS,GAAG;AAClB,MAAM,CAAC,GAAG;AAEjB;IACY;AAAZ,CAAA,UAAY,eAAe,EAAA;AACzB,IAAA,eAAA,CAAA,MAAA,CAAA,GAAA,GAAU;AACV,IAAA,eAAA,CAAA,SAAA,CAAA,GAAA,GAAa;AACb,IAAA,eAAA,CAAA,SAAA,CAAA,GAAA,GAAa;AACb,IAAA,eAAA,CAAA,SAAA,CAAA,GAAA,GAAa;AACf,CAAC,EALW,eAAe,KAAf,eAAe,GAK1B,EAAA,CAAA,CAAA;;;;"}
|
package/dist/dom/event.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { EMPTY_OBJ, hooks, isUndefined } from '@tarojs/shared';
|
|
2
2
|
import { CURRENT_TARGET, TARGET, TYPE, TIME_STAMP, CONFIRM, INPUT, KEY_CODE, TOUCHMOVE, EVENT_CALLBACK_RESULT } from '../constants/index.js';
|
|
3
3
|
import env from '../env.js';
|
|
4
|
-
import {
|
|
4
|
+
import { isParentBound } from '../utils/index.js';
|
|
5
5
|
|
|
6
6
|
// Taro 事件对象。以 Web 标准的事件对象为基础,加入小程序事件对象中携带的部分信息,并模拟实现事件冒泡。
|
|
7
7
|
class TaroEvent {
|
|
@@ -124,7 +124,7 @@ function eventHandler(event) {
|
|
|
124
124
|
if (hooks.isExist('batchedEventUpdates')) {
|
|
125
125
|
const type = event.type;
|
|
126
126
|
if (!hooks.call('isBubbleEvents', type) ||
|
|
127
|
-
!
|
|
127
|
+
!isParentBound(node, type) ||
|
|
128
128
|
(type === TOUCHMOVE && !!node.props.catchMove)) {
|
|
129
129
|
// 最上层组件统一 batchUpdate
|
|
130
130
|
hooks.call('batchedEventUpdates', () => {
|
package/dist/dom/event.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event.js","sources":["../../../src/dom/event.ts"],"sourcesContent":["import { EMPTY_OBJ, hooks, isUndefined } from '@tarojs/shared'\n\nimport {\n CONFIRM,\n CURRENT_TARGET,\n EVENT_CALLBACK_RESULT,\n INPUT,\n KEY_CODE,\n TARGET,\n TIME_STAMP,\n TOUCHMOVE,\n TYPE\n} from '../constants'\nimport env from '../env'\nimport { isParentBinded } from '../utils'\n\nimport type { EventOptions, MpEvent } from '../interface'\nimport type { TaroElement } from './element'\n\n// Taro 事件对象。以 Web 标准的事件对象为基础,加入小程序事件对象中携带的部分信息,并模拟实现事件冒泡。\nexport class TaroEvent {\n private cacheTarget\n private cacheCurrentTarget\n\n public type: string\n\n public bubbles: boolean\n\n public cancelable: boolean\n\n public _stop = false\n\n public _end = false\n\n public defaultPrevented = false\n\n // Mouse Event botton property, it's used in 3rd lib, like react-router. default 0 in general\n public button = 0\n\n // timestamp can either be hi-res ( relative to page load) or low-res (relative to UNIX epoch)\n // here use hi-res timestamp\n public timeStamp = Date.now()\n\n public mpEvent: MpEvent | undefined\n\n public constructor (type: string, opts: EventOptions, event?: MpEvent) {\n this.type = type.toLowerCase()\n this.mpEvent = event\n this.bubbles = Boolean(opts && opts.bubbles)\n this.cancelable = Boolean(opts && opts.cancelable)\n }\n\n public stopPropagation () {\n this._stop = true\n }\n\n public stopImmediatePropagation () {\n this._end = this._stop = true\n }\n\n public preventDefault () {\n this.defaultPrevented = true\n }\n\n get target () {\n const cacheTarget = this.cacheTarget\n if (!cacheTarget) {\n const target = Object.create(this.mpEvent?.target || null)\n const currentEle = env.document.getElementById(target.dataset?.sid || target.id || null)\n // Note:优先判断冒泡场景alipay的targetDataset的sid, 不然冒泡场景target属性吐出不对,其余拿取当前绑定id\n const element = env.document.getElementById(target.targetDataset?.sid || target.dataset?.sid || target.id || null)\n\n target.dataset = {\n ...(currentEle !== null ? currentEle.dataset : EMPTY_OBJ),\n ...(element !== null ? element.dataset : EMPTY_OBJ)\n }\n\n for (const key in this.mpEvent?.detail) {\n target[key] = this.mpEvent!.detail[key]\n }\n\n this.cacheTarget = target\n\n return target\n } else {\n return cacheTarget\n }\n }\n\n get currentTarget () {\n const cacheCurrentTarget = this.cacheCurrentTarget\n if (!cacheCurrentTarget) {\n const doc = env.document\n\n const currentTarget = Object.create(this.mpEvent?.currentTarget || null)\n\n const element = doc.getElementById(currentTarget.dataset?.sid || currentTarget.id || null)\n const targetElement = doc.getElementById(this.mpEvent?.target?.dataset?.sid as string || this.mpEvent?.target?.id as string || null)\n\n if (element === null || (element && element === targetElement)) {\n this.cacheCurrentTarget = this.target\n return this.target\n }\n\n currentTarget.dataset = element.dataset\n\n for (const key in this.mpEvent?.detail) {\n currentTarget[key] = this.mpEvent!.detail[key]\n }\n\n this.cacheCurrentTarget = currentTarget\n\n return currentTarget\n } else {\n return cacheCurrentTarget\n }\n }\n}\n\nexport function createEvent (event: MpEvent | string, node?: TaroElement) {\n if (typeof event === 'string') {\n // For Vue3 using document.createEvent\n return new TaroEvent(event, { bubbles: true, cancelable: true })\n }\n\n const domEv = new TaroEvent(event.type, { bubbles: true, cancelable: true }, event)\n\n for (const key in event) {\n if (key === CURRENT_TARGET || key === TARGET || key === TYPE || key === TIME_STAMP) {\n continue\n } else {\n domEv[key] = event[key]\n }\n }\n\n if (domEv.type === CONFIRM && node?.nodeName === INPUT) {\n // eslint-disable-next-line dot-notation\n domEv[KEY_CODE] = 13\n }\n\n return domEv\n}\n\nconst eventsBatch = {}\n\nfunction getEventCBResult (event: MpEvent) {\n const result = event[EVENT_CALLBACK_RESULT]\n if (!isUndefined(result)) {\n delete event[EVENT_CALLBACK_RESULT]\n }\n return result\n}\n\n// 小程序的事件代理回调函数\nexport function eventHandler (event: MpEvent) {\n // Note: ohos 上事件没有设置 type、detail 类型 setter 方法,且部分事件(例如 load 等)缺失 target 导致事件错误\n event.type === undefined && Object.defineProperty(event, 'type', {\n value: (event as any)._type // ohos only\n })\n event.detail === undefined && Object.defineProperty(event, 'detail', {\n value: (event as any)._detail || { ...event } // ohos only\n })\n event.currentTarget = event.currentTarget || event.target || { ...event }\n hooks.call('modifyMpEventImpl', event)\n\n const currentTarget = event.currentTarget\n const id = currentTarget.dataset?.sid as string /** sid */ || currentTarget.id /** uid */ || event.detail?.id as string || ''\n\n const node = env.document.getElementById(id)\n if (node) {\n const dispatch = () => {\n const e = createEvent(event, node)\n\n hooks.call('modifyTaroEvent', e, node)\n hooks.call('dispatchTaroEvent', e, node)\n hooks.call('dispatchTaroEventFinish', e, node)\n }\n if (hooks.isExist('batchedEventUpdates')) {\n const type = event.type\n\n if (\n !hooks.call('isBubbleEvents', type) ||\n !isParentBinded(node, type) ||\n (type === TOUCHMOVE && !!node.props.catchMove)\n ) {\n // 最上层组件统一 batchUpdate\n hooks.call('batchedEventUpdates', () => {\n if (eventsBatch[type]) {\n eventsBatch[type].forEach(fn => fn())\n delete eventsBatch[type]\n }\n dispatch()\n })\n return getEventCBResult(event)\n } else {\n // 如果上层组件也有绑定同类型的组件,委托给上层组件调用事件回调\n (eventsBatch[type] ||= []).push(dispatch)\n }\n } else {\n dispatch()\n return getEventCBResult(event)\n }\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"event.js","sources":["../../../src/dom/event.ts"],"sourcesContent":["import { EMPTY_OBJ, hooks, isUndefined } from '@tarojs/shared'\n\nimport {\n CONFIRM,\n CURRENT_TARGET,\n EVENT_CALLBACK_RESULT,\n INPUT,\n KEY_CODE,\n TARGET,\n TIME_STAMP,\n TOUCHMOVE,\n TYPE\n} from '../constants'\nimport env from '../env'\nimport { isParentBound } from '../utils'\n\nimport type { EventOptions, MpEvent } from '../interface'\nimport type { TaroElement } from './element'\n\n// Taro 事件对象。以 Web 标准的事件对象为基础,加入小程序事件对象中携带的部分信息,并模拟实现事件冒泡。\nexport class TaroEvent {\n private cacheTarget\n private cacheCurrentTarget\n\n public type: string\n\n public bubbles: boolean\n\n public cancelable: boolean\n\n public _stop = false\n\n public _end = false\n\n public defaultPrevented = false\n\n // Mouse Event botton property, it's used in 3rd lib, like react-router. default 0 in general\n public button = 0\n\n // timestamp can either be hi-res ( relative to page load) or low-res (relative to UNIX epoch)\n // here use hi-res timestamp\n public timeStamp = Date.now()\n\n public mpEvent: MpEvent | undefined\n\n public constructor (type: string, opts: EventOptions, event?: MpEvent) {\n this.type = type.toLowerCase()\n this.mpEvent = event\n this.bubbles = Boolean(opts && opts.bubbles)\n this.cancelable = Boolean(opts && opts.cancelable)\n }\n\n public stopPropagation () {\n this._stop = true\n }\n\n public stopImmediatePropagation () {\n this._end = this._stop = true\n }\n\n public preventDefault () {\n this.defaultPrevented = true\n }\n\n get target () {\n const cacheTarget = this.cacheTarget\n if (!cacheTarget) {\n const target = Object.create(this.mpEvent?.target || null)\n const currentEle = env.document.getElementById(target.dataset?.sid || target.id || null)\n // Note:优先判断冒泡场景alipay的targetDataset的sid, 不然冒泡场景target属性吐出不对,其余拿取当前绑定id\n const element = env.document.getElementById(target.targetDataset?.sid || target.dataset?.sid || target.id || null)\n\n target.dataset = {\n ...(currentEle !== null ? currentEle.dataset : EMPTY_OBJ),\n ...(element !== null ? element.dataset : EMPTY_OBJ)\n }\n\n for (const key in this.mpEvent?.detail) {\n target[key] = this.mpEvent!.detail[key]\n }\n\n this.cacheTarget = target\n\n return target\n } else {\n return cacheTarget\n }\n }\n\n get currentTarget () {\n const cacheCurrentTarget = this.cacheCurrentTarget\n if (!cacheCurrentTarget) {\n const doc = env.document\n\n const currentTarget = Object.create(this.mpEvent?.currentTarget || null)\n\n const element = doc.getElementById(currentTarget.dataset?.sid || currentTarget.id || null)\n const targetElement = doc.getElementById(this.mpEvent?.target?.dataset?.sid as string || this.mpEvent?.target?.id as string || null)\n\n if (element === null || (element && element === targetElement)) {\n this.cacheCurrentTarget = this.target\n return this.target\n }\n\n currentTarget.dataset = element.dataset\n\n for (const key in this.mpEvent?.detail) {\n currentTarget[key] = this.mpEvent!.detail[key]\n }\n\n this.cacheCurrentTarget = currentTarget\n\n return currentTarget\n } else {\n return cacheCurrentTarget\n }\n }\n}\n\nexport function createEvent (event: MpEvent | string, node?: TaroElement) {\n if (typeof event === 'string') {\n // For Vue3 using document.createEvent\n return new TaroEvent(event, { bubbles: true, cancelable: true })\n }\n\n const domEv = new TaroEvent(event.type, { bubbles: true, cancelable: true }, event)\n\n for (const key in event) {\n if (key === CURRENT_TARGET || key === TARGET || key === TYPE || key === TIME_STAMP) {\n continue\n } else {\n domEv[key] = event[key]\n }\n }\n\n if (domEv.type === CONFIRM && node?.nodeName === INPUT) {\n // eslint-disable-next-line dot-notation\n domEv[KEY_CODE] = 13\n }\n\n return domEv\n}\n\nconst eventsBatch = {}\n\nfunction getEventCBResult (event: MpEvent) {\n const result = event[EVENT_CALLBACK_RESULT]\n if (!isUndefined(result)) {\n delete event[EVENT_CALLBACK_RESULT]\n }\n return result\n}\n\n// 小程序的事件代理回调函数\nexport function eventHandler (event: MpEvent) {\n // Note: ohos 上事件没有设置 type、detail 类型 setter 方法,且部分事件(例如 load 等)缺失 target 导致事件错误\n event.type === undefined && Object.defineProperty(event, 'type', {\n value: (event as any)._type // ohos only\n })\n event.detail === undefined && Object.defineProperty(event, 'detail', {\n value: (event as any)._detail || { ...event } // ohos only\n })\n event.currentTarget = event.currentTarget || event.target || { ...event }\n hooks.call('modifyMpEventImpl', event)\n\n const currentTarget = event.currentTarget\n const id = currentTarget.dataset?.sid as string /** sid */ || currentTarget.id /** uid */ || event.detail?.id as string || ''\n\n const node = env.document.getElementById(id)\n if (node) {\n const dispatch = () => {\n const e = createEvent(event, node)\n\n hooks.call('modifyTaroEvent', e, node)\n hooks.call('dispatchTaroEvent', e, node)\n hooks.call('dispatchTaroEventFinish', e, node)\n }\n if (hooks.isExist('batchedEventUpdates')) {\n const type = event.type\n\n if (\n !hooks.call('isBubbleEvents', type) ||\n !isParentBound(node, type) ||\n (type === TOUCHMOVE && !!node.props.catchMove)\n ) {\n // 最上层组件统一 batchUpdate\n hooks.call('batchedEventUpdates', () => {\n if (eventsBatch[type]) {\n eventsBatch[type].forEach(fn => fn())\n delete eventsBatch[type]\n }\n dispatch()\n })\n return getEventCBResult(event)\n } else {\n // 如果上层组件也有绑定同类型的组件,委托给上层组件调用事件回调\n (eventsBatch[type] ||= []).push(dispatch)\n }\n } else {\n dispatch()\n return getEventCBResult(event)\n }\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { isFunction } from '@tarojs/shared';
|
|
2
2
|
import { options } from '../../options.js';
|
|
3
|
-
import {
|
|
3
|
+
import { Scanner } from './scanner.js';
|
|
4
4
|
import StyleTagParser from './style.js';
|
|
5
5
|
import { specialMiniElements, isMiniElements, isBlockElements, isInlineElements } from './tags.js';
|
|
6
6
|
import { unquote } from './utils.js';
|
|
@@ -118,7 +118,7 @@ function format(children, document, styleOptions, parent) {
|
|
|
118
118
|
function parser(html, document) {
|
|
119
119
|
const styleTagParser = new StyleTagParser();
|
|
120
120
|
html = styleTagParser.extractStyle(html);
|
|
121
|
-
const tokens = new
|
|
121
|
+
const tokens = new Scanner(html).scan();
|
|
122
122
|
const root = { tagName: '', children: [], type: 'element', attributes: [] };
|
|
123
123
|
const state = { tokens, cursor: 0, stack: [root] };
|
|
124
124
|
parse(state);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.js","sources":["../../../../src/dom-external/inner-html/parser.ts"],"sourcesContent":["import { isFunction } from '@tarojs/shared'\n\nimport { options } from '../../options'\nimport { Scaner, Token } from './scaner'\nimport StyleTagParser from './style'\nimport { isBlockElements, isInlineElements, isMiniElements, specialMiniElements } from './tags'\nimport { unquote } from './utils'\n\nimport type { TaroDocument } from '../../dom/document'\nimport type { TaroElement } from '../../dom/element'\n\ninterface State {\n tokens: Token[]\n cursor: number\n stack: Element[]\n}\n\nconst closingTagAncestorBreakers = {\n li: ['ul', 'ol', 'menu'],\n dt: ['dl'],\n dd: ['dl'],\n tbody: ['table'],\n thead: ['table'],\n tfoot: ['table'],\n tr: ['table'],\n td: ['table']\n}\n\ninterface Node {\n type: string\n}\n\ninterface Comment extends Node {\n type: 'comment'\n content: string\n}\n\nexport interface Text extends Node {\n type: 'text'\n content: string\n}\n\nexport interface Element extends Node {\n type: 'element'\n tagName: string\n children: ChildNode[]\n attributes: string[]\n}\n\nexport interface ParsedTaroElement extends TaroElement{\n h5tagName?: string\n}\n\ntype ChildNode = Comment | Text | Element\n\nfunction hasTerminalParent (tagName: string, stack: Element[]) {\n const tagParents: undefined | string[] = closingTagAncestorBreakers[tagName]\n if (tagParents) {\n let currentIndex = stack.length - 1\n while (currentIndex >= 0) {\n const parentTagName = stack[currentIndex].tagName\n if (parentTagName === tagName) {\n break\n }\n if (tagParents && tagParents.includes(parentTagName!)) {\n return true\n }\n currentIndex--\n }\n }\n return false\n}\n\nfunction getTagName (tag: string) {\n if (options.html!.renderHTMLTag) {\n return tag\n }\n\n if (specialMiniElements[tag]) {\n return specialMiniElements[tag]\n } else if (isMiniElements(tag)) {\n return tag\n } else if (isBlockElements(tag)) {\n return 'view'\n } else if (isInlineElements(tag)) {\n return 'text'\n }\n\n return 'view'\n}\n\nfunction splitEqual (str: string) {\n const sep = '='\n const idx = str.indexOf(sep)\n if (idx === -1) return [str]\n const key = str.slice(0, idx).trim()\n const value = str.slice(idx + sep.length).trim()\n return [key, value]\n}\n\nfunction format (\n children: ChildNode[],\n document: TaroDocument,\n styleOptions: {\n styleTagParser: StyleTagParser\n descendantList: number[]\n },\n parent?: TaroElement\n) {\n return children\n .filter(child => {\n // 过滤注释和空文本节点\n if (child.type === 'comment') {\n return false\n } else if (child.type === 'text') {\n return child.content !== ''\n }\n return true\n })\n .map((child: Text | Element) => {\n // 文本节点\n if (child.type === 'text') {\n let text = document.createTextNode(child.content)\n if (isFunction(options.html!.transformText)) {\n text = options.html!.transformText(text, child)\n }\n parent?.appendChild(text)\n return text\n }\n\n const el: ParsedTaroElement = document.createElement(getTagName(child.tagName))\n el.h5tagName = child.tagName\n\n parent?.appendChild(el)\n\n if (!options.html!.renderHTMLTag) {\n el.className = `h5-${child.tagName}`\n }\n\n for (let i = 0; i < child.attributes.length; i++) {\n const attr = child.attributes[i]\n const [key, value] = splitEqual(attr)\n if (key === 'class') {\n el.className += ' ' + unquote(value)\n } else if (key[0] === 'o' && key[1] === 'n') {\n continue\n } else {\n el.setAttribute(key, value == null ? true : unquote(value))\n }\n }\n\n const { styleTagParser, descendantList } = styleOptions\n const list = descendantList.slice()\n const style = styleTagParser.matchStyle(child.tagName, el, list)\n\n el.setAttribute('style', style + el.style.cssText)\n // console.log('style, ', style)\n\n format(child.children, document, {\n styleTagParser,\n descendantList: list\n }, el)\n\n if (isFunction(options.html!.transformElement)) {\n return options.html!.transformElement(el, child)\n }\n\n return el\n })\n}\n\nexport function parser (html: string, document: TaroDocument) {\n const styleTagParser = new StyleTagParser()\n html = styleTagParser.extractStyle(html)\n\n const tokens = new Scaner(html).scan()\n\n const root: Element = { tagName: '', children: [], type: 'element', attributes: [] }\n\n const state = { tokens, options, cursor: 0, stack: [root] }\n parse(state)\n\n return format(root.children, document, {\n styleTagParser,\n descendantList: Array(styleTagParser.styles.length).fill(0)\n })\n}\n\nfunction parse (state: State) {\n const { tokens, stack } = state\n let { cursor } = state\n\n const len = tokens.length\n\n let nodes = stack[stack.length - 1].children\n\n while (cursor < len) {\n const token = tokens[cursor]\n if (token.type !== 'tag-start') {\n // comment or text\n nodes.push(token as ChildNode)\n cursor++\n continue\n }\n\n const tagToken = tokens[++cursor]\n cursor++\n const tagName = tagToken.content!.toLowerCase()\n if (token.close) {\n let index = stack.length\n let shouldRewind = false\n while (--index > -1) {\n if (stack[index].tagName === tagName) {\n shouldRewind = true\n break\n }\n }\n while (cursor < len) {\n const endToken = tokens[cursor]\n if (endToken.type !== 'tag-end') break\n cursor++\n }\n if (shouldRewind) {\n stack.splice(index)\n break\n } else {\n continue\n }\n }\n\n const isClosingTag = options.html!.closingElements.has(tagName)\n let shouldRewindToAutoClose = isClosingTag\n if (shouldRewindToAutoClose) {\n shouldRewindToAutoClose = !hasTerminalParent(tagName, stack)\n }\n\n if (shouldRewindToAutoClose) {\n let currentIndex = stack.length - 1\n while (currentIndex > 0) {\n if (tagName === stack[currentIndex].tagName) {\n stack.splice(currentIndex)\n const previousIndex = currentIndex - 1\n nodes = stack[previousIndex].children\n break\n }\n currentIndex = currentIndex - 1\n }\n }\n\n const attributes: string[] = []\n let attrToken: Token\n while (cursor < len) {\n attrToken = tokens[cursor]\n if (attrToken.type === 'tag-end') break\n attributes.push(attrToken.content!)\n cursor++\n }\n\n cursor++\n const children: Element[] = []\n const element: Element = {\n type: 'element',\n tagName: tagToken.content!,\n attributes,\n children\n }\n nodes.push(element)\n\n const hasChildren = !(attrToken!.close || options.html!.voidElements.has(tagName))\n if (hasChildren) {\n stack.push({ tagName, children } as any)\n const innerState: State = { tokens, cursor, stack }\n parse(innerState)\n cursor = innerState.cursor\n }\n }\n\n state.cursor = cursor\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"parser.js","sources":["../../../../src/dom-external/inner-html/parser.ts"],"sourcesContent":["import { isFunction } from '@tarojs/shared'\n\nimport { options } from '../../options'\nimport { Scanner, Token } from './scanner'\nimport StyleTagParser from './style'\nimport { isBlockElements, isInlineElements, isMiniElements, specialMiniElements } from './tags'\nimport { unquote } from './utils'\n\nimport type { TaroDocument } from '../../dom/document'\nimport type { TaroElement } from '../../dom/element'\n\ninterface State {\n tokens: Token[]\n cursor: number\n stack: Element[]\n}\n\nconst closingTagAncestorBreakers = {\n li: ['ul', 'ol', 'menu'],\n dt: ['dl'],\n dd: ['dl'],\n tbody: ['table'],\n thead: ['table'],\n tfoot: ['table'],\n tr: ['table'],\n td: ['table']\n}\n\ninterface Node {\n type: string\n}\n\ninterface Comment extends Node {\n type: 'comment'\n content: string\n}\n\nexport interface Text extends Node {\n type: 'text'\n content: string\n}\n\nexport interface Element extends Node {\n type: 'element'\n tagName: string\n children: ChildNode[]\n attributes: string[]\n}\n\nexport interface ParsedTaroElement extends TaroElement{\n h5tagName?: string\n}\n\ntype ChildNode = Comment | Text | Element\n\nfunction hasTerminalParent (tagName: string, stack: Element[]) {\n const tagParents: undefined | string[] = closingTagAncestorBreakers[tagName]\n if (tagParents) {\n let currentIndex = stack.length - 1\n while (currentIndex >= 0) {\n const parentTagName = stack[currentIndex].tagName\n if (parentTagName === tagName) {\n break\n }\n if (tagParents && tagParents.includes(parentTagName!)) {\n return true\n }\n currentIndex--\n }\n }\n return false\n}\n\nfunction getTagName (tag: string) {\n if (options.html!.renderHTMLTag) {\n return tag\n }\n\n if (specialMiniElements[tag]) {\n return specialMiniElements[tag]\n } else if (isMiniElements(tag)) {\n return tag\n } else if (isBlockElements(tag)) {\n return 'view'\n } else if (isInlineElements(tag)) {\n return 'text'\n }\n\n return 'view'\n}\n\nfunction splitEqual (str: string) {\n const sep = '='\n const idx = str.indexOf(sep)\n if (idx === -1) return [str]\n const key = str.slice(0, idx).trim()\n const value = str.slice(idx + sep.length).trim()\n return [key, value]\n}\n\nfunction format (\n children: ChildNode[],\n document: TaroDocument,\n styleOptions: {\n styleTagParser: StyleTagParser\n descendantList: number[]\n },\n parent?: TaroElement\n) {\n return children\n .filter(child => {\n // 过滤注释和空文本节点\n if (child.type === 'comment') {\n return false\n } else if (child.type === 'text') {\n return child.content !== ''\n }\n return true\n })\n .map((child: Text | Element) => {\n // 文本节点\n if (child.type === 'text') {\n let text = document.createTextNode(child.content)\n if (isFunction(options.html!.transformText)) {\n text = options.html!.transformText(text, child)\n }\n parent?.appendChild(text)\n return text\n }\n\n const el: ParsedTaroElement = document.createElement(getTagName(child.tagName))\n el.h5tagName = child.tagName\n\n parent?.appendChild(el)\n\n if (!options.html!.renderHTMLTag) {\n el.className = `h5-${child.tagName}`\n }\n\n for (let i = 0; i < child.attributes.length; i++) {\n const attr = child.attributes[i]\n const [key, value] = splitEqual(attr)\n if (key === 'class') {\n el.className += ' ' + unquote(value)\n } else if (key[0] === 'o' && key[1] === 'n') {\n continue\n } else {\n el.setAttribute(key, value == null ? true : unquote(value))\n }\n }\n\n const { styleTagParser, descendantList } = styleOptions\n const list = descendantList.slice()\n const style = styleTagParser.matchStyle(child.tagName, el, list)\n\n el.setAttribute('style', style + el.style.cssText)\n // console.log('style, ', style)\n\n format(child.children, document, {\n styleTagParser,\n descendantList: list\n }, el)\n\n if (isFunction(options.html!.transformElement)) {\n return options.html!.transformElement(el, child)\n }\n\n return el\n })\n}\n\nexport function parser (html: string, document: TaroDocument) {\n const styleTagParser = new StyleTagParser()\n html = styleTagParser.extractStyle(html)\n\n const tokens = new Scanner(html).scan()\n\n const root: Element = { tagName: '', children: [], type: 'element', attributes: [] }\n\n const state = { tokens, options, cursor: 0, stack: [root] }\n parse(state)\n\n return format(root.children, document, {\n styleTagParser,\n descendantList: Array(styleTagParser.styles.length).fill(0)\n })\n}\n\nfunction parse (state: State) {\n const { tokens, stack } = state\n let { cursor } = state\n\n const len = tokens.length\n\n let nodes = stack[stack.length - 1].children\n\n while (cursor < len) {\n const token = tokens[cursor]\n if (token.type !== 'tag-start') {\n // comment or text\n nodes.push(token as ChildNode)\n cursor++\n continue\n }\n\n const tagToken = tokens[++cursor]\n cursor++\n const tagName = tagToken.content!.toLowerCase()\n if (token.close) {\n let index = stack.length\n let shouldRewind = false\n while (--index > -1) {\n if (stack[index].tagName === tagName) {\n shouldRewind = true\n break\n }\n }\n while (cursor < len) {\n const endToken = tokens[cursor]\n if (endToken.type !== 'tag-end') break\n cursor++\n }\n if (shouldRewind) {\n stack.splice(index)\n break\n } else {\n continue\n }\n }\n\n const isClosingTag = options.html!.closingElements.has(tagName)\n let shouldRewindToAutoClose = isClosingTag\n if (shouldRewindToAutoClose) {\n shouldRewindToAutoClose = !hasTerminalParent(tagName, stack)\n }\n\n if (shouldRewindToAutoClose) {\n let currentIndex = stack.length - 1\n while (currentIndex > 0) {\n if (tagName === stack[currentIndex].tagName) {\n stack.splice(currentIndex)\n const previousIndex = currentIndex - 1\n nodes = stack[previousIndex].children\n break\n }\n currentIndex = currentIndex - 1\n }\n }\n\n const attributes: string[] = []\n let attrToken: Token\n while (cursor < len) {\n attrToken = tokens[cursor]\n if (attrToken.type === 'tag-end') break\n attributes.push(attrToken.content!)\n cursor++\n }\n\n cursor++\n const children: Element[] = []\n const element: Element = {\n type: 'element',\n tagName: tagToken.content!,\n attributes,\n children\n }\n nodes.push(element)\n\n const hasChildren = !(attrToken!.close || options.html!.voidElements.has(tagName))\n if (hasChildren) {\n stack.push({ tagName, children } as any)\n const innerState: State = { tokens, cursor, stack }\n parse(innerState)\n cursor = innerState.cursor\n }\n }\n\n state.cursor = cursor\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -65,7 +65,7 @@ function isWordEnd(cursor, wordBegin, html) {
|
|
|
65
65
|
if (!isWhitespaceChar(html.charAt(cursor)))
|
|
66
66
|
return false;
|
|
67
67
|
const len = html.length;
|
|
68
|
-
//
|
|
68
|
+
// backward
|
|
69
69
|
for (let i = cursor - 1; i > wordBegin; i--) {
|
|
70
70
|
const char = html.charAt(i);
|
|
71
71
|
if (!isWhitespaceChar(char)) {
|
|
@@ -84,7 +84,7 @@ function isWordEnd(cursor, wordBegin, html) {
|
|
|
84
84
|
}
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
|
-
class
|
|
87
|
+
class Scanner {
|
|
88
88
|
constructor(html) {
|
|
89
89
|
this.tokens = [];
|
|
90
90
|
this.position = initPosition();
|
|
@@ -300,5 +300,5 @@ class Scaner {
|
|
|
300
300
|
}
|
|
301
301
|
}
|
|
302
302
|
|
|
303
|
-
export {
|
|
304
|
-
//# sourceMappingURL=
|
|
303
|
+
export { Scanner };
|
|
304
|
+
//# sourceMappingURL=scanner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scanner.js","sources":["../../../../src/dom-external/inner-html/scanner.ts"],"sourcesContent":["import { options } from '../../options'\n\ninterface Position {\n index: number\n column: number\n line: number\n}\n\nexport interface Token {\n type: string\n content?: string\n position?: {\n start?: Position\n end?: Position\n }\n close?: boolean\n}\n\nfunction initPosition (): Position {\n return {\n index: 0,\n column: 0,\n line: 0\n }\n}\n\nfunction feedPosition (position: Position, str: string, len: number) {\n const start = position.index\n const end = position.index = start + len\n for (let i = start; i < end; i++) {\n const char = str.charAt(i)\n if (char === '\\n') {\n position.line++\n position.column = 0\n } else {\n position.column++\n }\n }\n}\n\nfunction jumpPosition (position: Position, str: string, end: number) {\n const len = end - position.index\n return feedPosition(position, str, len)\n}\n\nfunction copyPosition (position: Position) {\n return {\n index: position.index,\n line: position.line,\n column: position.column\n }\n}\n\nconst whitespace = /\\s/\nfunction isWhitespaceChar (char: string) {\n return whitespace.test(char)\n}\n\nconst equalSign = /=/\nfunction isEqualSignChar (char: string) {\n return equalSign.test(char)\n}\n\nfunction shouldBeIgnore (tagName: string) {\n const name = tagName.toLowerCase()\n if (options.html!.skipElements.has(name)) {\n return true\n }\n return false\n}\n\nconst alphanumeric = /[A-Za-z0-9]/\n\nfunction findTextEnd (str: string, index: number) {\n while (true) {\n const textEnd = str.indexOf('<', index)\n if (textEnd === -1) {\n return textEnd\n }\n const char = str.charAt(textEnd + 1)\n if (char === '/' || char === '!' || alphanumeric.test(char)) {\n return textEnd\n }\n index = textEnd + 1\n }\n}\n\nfunction isWordEnd (cursor: number, wordBegin: number, html: string) {\n if (!isWhitespaceChar(html.charAt(cursor))) return false\n\n const len = html.length\n\n // backward\n for (let i = cursor - 1; i > wordBegin; i--) {\n const char = html.charAt(i)\n if (!isWhitespaceChar(char)) {\n if (isEqualSignChar(char)) return false\n break\n }\n }\n\n // forward\n for (let i = cursor + 1; i < len; i++) {\n const char = html.charAt(i)\n if (!isWhitespaceChar(char)) {\n if (isEqualSignChar(char)) return false\n return true\n }\n }\n}\n\nexport class Scanner {\n private tokens: Token[] = []\n\n private position: Position = initPosition()\n\n private html: string\n\n constructor (html: string) {\n this.html = html\n }\n\n public scan (): Token[] {\n const { html, position } = this\n const len = html.length\n\n while (position.index < len) {\n const start = position.index\n this.scanText()\n if (position.index === start) {\n const isComment = html.startsWith('!--', start + 1)\n if (isComment) {\n this.scanComment()\n } else {\n const tagName = this.scanTag()\n if (shouldBeIgnore(tagName)) {\n this.scanSkipTag(tagName)\n }\n }\n }\n }\n\n return this.tokens\n }\n\n private scanText () {\n const type = 'text'\n const { html, position } = this\n let textEnd = findTextEnd(html, position.index)\n if (textEnd === position.index) {\n return\n }\n if (textEnd === -1) {\n textEnd = html.length\n }\n\n const start = copyPosition(position)\n const content = html.slice(position.index, textEnd)\n jumpPosition(position, html, textEnd)\n const end = copyPosition(position)\n this.tokens.push({ type, content, position: { start, end } })\n }\n\n private scanComment () {\n const type = 'comment'\n const { html, position } = this\n const start = copyPosition(position)\n feedPosition(position, html, 4) // \"<!--\".length\n let contentEnd = html.indexOf('-->', position.index)\n let commentEnd = contentEnd + 3 // \"-->\".length\n if (contentEnd === -1) {\n contentEnd = commentEnd = html.length\n }\n\n const content = html.slice(position.index, contentEnd)\n jumpPosition(position, html, commentEnd)\n this.tokens.push({\n type,\n content,\n position: {\n start,\n end: copyPosition(position)\n }\n })\n }\n\n private scanTag () {\n this.scanTagStart()\n const tagName = this.scanTagName()\n this.scanAttrs()\n this.scanTagEnd()\n\n return tagName\n }\n\n private scanTagStart () {\n const type = 'tag-start'\n const { html, position } = this\n\n const secondChar = html.charAt(position.index + 1)\n const close = secondChar === '/'\n const start = copyPosition(position)\n feedPosition(position, html, close ? 2 : 1)\n this.tokens.push({ type, close, position: { start } })\n }\n\n private scanTagEnd () {\n const type = 'tag-end'\n const { html, position } = this\n\n const firstChar = html.charAt(position.index)\n const close = firstChar === '/'\n feedPosition(position, html, close ? 2 : 1)\n const end = copyPosition(position)\n this.tokens.push({ type, close, position: { end } })\n }\n\n private scanTagName (): string {\n const type = 'tag'\n const { html, position } = this\n const len = html.length\n let start = position.index\n while (start < len) {\n const char = html.charAt(start)\n const isTagChar = !(isWhitespaceChar(char) || char === '/' || char === '>')\n if (isTagChar) break\n start++\n }\n\n let end = start + 1\n while (end < len) {\n const char = html.charAt(end)\n const isTagChar = !(isWhitespaceChar(char) || char === '/' || char === '>')\n if (!isTagChar) break\n end++\n }\n\n jumpPosition(position, html, end)\n const tagName = html.slice(start, end)\n this.tokens.push({\n type,\n content: tagName\n })\n\n return tagName\n }\n\n private scanAttrs () {\n const { html, position, tokens } = this\n let cursor = position.index\n let quote: string | null = null // null, single-, or double-quote\n let wordBegin = cursor // index of word start\n const words: string[] = [] // \"key\", \"key=value\", \"key='value'\", etc\n const len = html.length\n while (cursor < len) {\n const char = html.charAt(cursor)\n if (quote) {\n const isQuoteEnd = char === quote\n if (isQuoteEnd) {\n quote = null\n }\n cursor++\n continue\n }\n\n const isTagEnd = char === '/' || char === '>'\n if (isTagEnd) {\n if (cursor !== wordBegin) {\n words.push(html.slice(wordBegin, cursor))\n }\n break\n }\n\n if (isWordEnd(cursor, wordBegin, html)) {\n if (cursor !== wordBegin) {\n words.push(html.slice(wordBegin, cursor))\n }\n wordBegin = cursor + 1\n cursor++\n continue\n }\n\n const isQuoteStart = char === '\\'' || char === '\"'\n if (isQuoteStart) {\n quote = char\n cursor++\n continue\n }\n\n cursor++\n }\n\n jumpPosition(position, html, cursor)\n\n const wLen = words.length\n const type = 'attribute'\n for (let i = 0; i < wLen; i++) {\n const word = words[i]\n const isNotPair = word.includes('=')\n if (isNotPair) {\n const secondWord = words[i + 1]\n if (secondWord && secondWord.startsWith('=')) {\n if (secondWord.length > 1) {\n const newWord = word + secondWord\n tokens.push({ type, content: newWord })\n i += 1\n continue\n }\n const thirdWord = words[i + 2]\n i += 1\n if (thirdWord) {\n const newWord = word + '=' + thirdWord\n tokens.push({ type, content: newWord })\n i += 1\n continue\n }\n }\n }\n if (word.endsWith('=')) {\n const secondWord = words[i + 1]\n if (secondWord && !secondWord.includes('=')) {\n const newWord = word + secondWord\n tokens.push({ type, content: newWord })\n i += 1\n continue\n }\n\n const newWord = word.slice(0, -1)\n tokens.push({ type, content: newWord })\n continue\n }\n\n tokens.push({ type, content: word })\n }\n }\n\n private scanSkipTag (tagName: string) {\n const { html, position } = this\n const safeTagName = tagName.toLowerCase()\n const len = html.length\n while (position.index < len) {\n const nextTag = html.indexOf('</', position.index)\n if (nextTag === -1) {\n this.scanText()\n break\n }\n\n jumpPosition(position, html, nextTag)\n const name = this.scanTag()\n if (safeTagName === name.toLowerCase()) {\n break\n }\n }\n }\n}\n"],"names":[],"mappings":"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"}
|
package/dist/dsl/common.js
CHANGED
|
@@ -135,7 +135,7 @@ function createPageConfig(component, pageName, data, pageConfig) {
|
|
|
135
135
|
const $taroPath = this.$taroPath;
|
|
136
136
|
// 销毁当前页面的上下文信息
|
|
137
137
|
if (process.env.TARO_PLATFORM !== 'web') {
|
|
138
|
-
taroWindowProvider.trigger(CONTEXT_ACTIONS.
|
|
138
|
+
taroWindowProvider.trigger(CONTEXT_ACTIONS.DESTROY, $taroPath);
|
|
139
139
|
}
|
|
140
140
|
// 触发onUnload生命周期
|
|
141
141
|
safeExecute($taroPath, ONUNLOAD);
|