@spcsn/taro-runtime 0.1.2 → 1.0.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 +16 -39
- package/dist/bom/{URL.js → URL2.js} +3 -4
- package/dist/bom/URL2.js.map +1 -0
- package/dist/bom/document.d.ts +0 -1
- package/dist/bom/document.js +1 -55
- package/dist/bom/document.js.map +1 -1
- package/dist/bom/get-computed-style.js +8 -0
- package/dist/bom/get-computed-style.js.map +1 -0
- package/dist/bom/history.js +1 -2
- package/dist/bom/history.js.map +1 -1
- package/dist/bom/location.js +2 -3
- package/dist/bom/location.js.map +1 -1
- package/dist/bom/navigator.js +1 -2
- package/dist/bom/navigator.js.map +1 -1
- package/dist/bom/raf.d.ts +2 -2
- package/dist/bom/raf.js +2 -2
- package/dist/bom/raf.js.map +1 -1
- package/dist/bom/url-search-params.d.ts +14 -0
- package/dist/bom/{URLSearchParams.js → url-search-params.js} +12 -15
- package/dist/bom/url-search-params.js.map +1 -0
- package/dist/bom/{URL.d.ts → url.d.ts} +1 -0
- package/dist/bom/url.js +196 -0
- package/dist/bom/url.js.map +1 -0
- package/dist/bom/window.d.ts +3 -3
- package/dist/bom/window.js +2 -2
- package/dist/bom/window.js.map +1 -1
- package/dist/current.d.ts +3 -0
- package/dist/current.js +10 -1
- package/dist/current.js.map +1 -1
- package/dist/dom/anchor-element.js +1 -1
- package/dist/dom/class-list.js +2 -1
- package/dist/dom/class-list.js.map +1 -1
- package/dist/dom/document.js.map +1 -1
- package/dist/dom/element.js +7 -7
- package/dist/dom/element.js.map +1 -1
- package/dist/dom/event.d.ts +1 -1
- package/dist/dom/event.js +3 -13
- package/dist/dom/event.js.map +1 -1
- package/dist/dom/form.js +1 -1
- package/dist/dom/form.js.map +1 -1
- package/dist/dom/node.d.ts +4 -3
- package/dist/dom/node.js +14 -7
- package/dist/dom/node.js.map +1 -1
- package/dist/dom/root.js +2 -2
- package/dist/dom/root.js.map +1 -1
- package/dist/dom/{style_properties.js → style-properties.js} +2 -2
- package/dist/dom/{style_properties.js.map → style-properties.js.map} +1 -1
- package/dist/dom/style.js +1 -1
- package/dist/dom/style.js.map +1 -1
- package/dist/dom/text.d.ts +1 -1
- package/dist/dom/text.js.map +1 -1
- package/dist/dom/tree.js.map +1 -1
- package/dist/dsl/common.js +26 -47
- package/dist/dsl/common.js.map +1 -1
- package/dist/env.js +2 -2
- package/dist/env.js.map +1 -1
- package/dist/hydrate.js +1 -1
- package/dist/hydrate.js.map +1 -1
- package/dist/index.cjs.d.ts +4 -4
- package/dist/index.cjs.js +331 -708
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.js +6 -6
- package/dist/next-tick.js +1 -6
- package/dist/next-tick.js.map +1 -1
- package/dist/perf.js +1 -1
- package/dist/perf.js.map +1 -1
- package/dist/polyfill/index.js +1 -6
- package/dist/polyfill/index.js.map +1 -1
- package/dist/runtime.esm.d.ts +4 -4
- package/dist/runtime.esm.js +330 -708
- package/dist/runtime.esm.js.map +1 -1
- package/dist/utils/index.js.map +1 -1
- package/package.json +26 -20
- package/LICENSE +0 -174
- package/dist/bom/URL.js.map +0 -1
- package/dist/bom/URLSearchParams.d.ts +0 -1
- package/dist/bom/URLSearchParams.js.map +0 -1
- package/dist/bom/getComputedStyle.js +0 -9
- package/dist/bom/getComputedStyle.js.map +0 -1
- package/dist/polyfill/intersection-observer.js +0 -494
- package/dist/polyfill/intersection-observer.js.map +0 -1
- /package/dist/bom/{getComputedStyle.d.ts → get-computed-style.d.ts} +0 -0
- /package/dist/dom/{node_types.d.ts → node-types.d.ts} +0 -0
- /package/dist/dom/{style_properties.d.ts → style-properties.d.ts} +0 -0
package/dist/bom/url.js
ADDED
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import { _classPrivateFieldInitSpec } from "../_virtual/_@oxc-project_runtime@0.130.0/helpers/classPrivateFieldInitSpec.js";
|
|
2
|
+
import { _classPrivateFieldSet2 } from "../_virtual/_@oxc-project_runtime@0.130.0/helpers/classPrivateFieldSet2.js";
|
|
3
|
+
import { _classPrivateFieldGet2 } from "../_virtual/_@oxc-project_runtime@0.130.0/helpers/classPrivateFieldGet2.js";
|
|
4
|
+
import { URLSearchParams } from "./url-search-params.js";
|
|
5
|
+
import { isString, isUndefined } from "@spcsn/taro-shared";
|
|
6
|
+
//#region src/bom/url.ts
|
|
7
|
+
var _hash = /* @__PURE__ */ new WeakMap();
|
|
8
|
+
var _hostname = /* @__PURE__ */ new WeakMap();
|
|
9
|
+
var _pathname = /* @__PURE__ */ new WeakMap();
|
|
10
|
+
var _port = /* @__PURE__ */ new WeakMap();
|
|
11
|
+
var _protocol = /* @__PURE__ */ new WeakMap();
|
|
12
|
+
var _search = /* @__PURE__ */ new WeakMap();
|
|
13
|
+
var TaroURL = class {
|
|
14
|
+
static createObjectURL() {
|
|
15
|
+
throw new Error("Oops, not support URL.createObjectURL() in miniprogram.");
|
|
16
|
+
}
|
|
17
|
+
static revokeObjectURL() {
|
|
18
|
+
throw new Error("Oops, not support URL.revokeObjectURL() in miniprogram.");
|
|
19
|
+
}
|
|
20
|
+
constructor(url, base) {
|
|
21
|
+
_classPrivateFieldInitSpec(this, _hash, "");
|
|
22
|
+
_classPrivateFieldInitSpec(this, _hostname, "");
|
|
23
|
+
_classPrivateFieldInitSpec(this, _pathname, "");
|
|
24
|
+
_classPrivateFieldInitSpec(this, _port, "");
|
|
25
|
+
_classPrivateFieldInitSpec(this, _protocol, "");
|
|
26
|
+
_classPrivateFieldInitSpec(this, _search, void 0);
|
|
27
|
+
if (!isString(url)) url = String(url);
|
|
28
|
+
const { hash, hostname, pathname, port, protocol, search } = parseUrlBase(url, base);
|
|
29
|
+
_classPrivateFieldSet2(_hash, this, hash);
|
|
30
|
+
_classPrivateFieldSet2(_hostname, this, hostname);
|
|
31
|
+
_classPrivateFieldSet2(_pathname, this, pathname || "/");
|
|
32
|
+
_classPrivateFieldSet2(_port, this, port);
|
|
33
|
+
_classPrivateFieldSet2(_protocol, this, protocol);
|
|
34
|
+
_classPrivateFieldSet2(_search, this, new URLSearchParams(search));
|
|
35
|
+
}
|
|
36
|
+
get protocol() {
|
|
37
|
+
return _classPrivateFieldGet2(_protocol, this);
|
|
38
|
+
}
|
|
39
|
+
set protocol(val) {
|
|
40
|
+
isString(val) && _classPrivateFieldSet2(_protocol, this, val.trim());
|
|
41
|
+
}
|
|
42
|
+
get host() {
|
|
43
|
+
return this.hostname + (this.port ? ":" + this.port : "");
|
|
44
|
+
}
|
|
45
|
+
set host(val) {
|
|
46
|
+
if (val && isString(val)) {
|
|
47
|
+
val = val.trim();
|
|
48
|
+
const { hostname, port } = parseUrl(`//${val}`);
|
|
49
|
+
this.hostname = hostname;
|
|
50
|
+
this.port = port;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
get hostname() {
|
|
54
|
+
return _classPrivateFieldGet2(_hostname, this);
|
|
55
|
+
}
|
|
56
|
+
set hostname(val) {
|
|
57
|
+
val && isString(val) && _classPrivateFieldSet2(_hostname, this, val.trim());
|
|
58
|
+
}
|
|
59
|
+
get port() {
|
|
60
|
+
return _classPrivateFieldGet2(_port, this);
|
|
61
|
+
}
|
|
62
|
+
set port(val) {
|
|
63
|
+
isString(val) && _classPrivateFieldSet2(_port, this, val.trim());
|
|
64
|
+
}
|
|
65
|
+
get pathname() {
|
|
66
|
+
return _classPrivateFieldGet2(_pathname, this);
|
|
67
|
+
}
|
|
68
|
+
set pathname(val) {
|
|
69
|
+
if (isString(val)) {
|
|
70
|
+
val = val.trim();
|
|
71
|
+
const HEAD_REG = /^(\/|\.\/|\.\.\/)/;
|
|
72
|
+
let temp = val;
|
|
73
|
+
while (HEAD_REG.test(temp)) temp = temp.replace(HEAD_REG, "");
|
|
74
|
+
if (temp) _classPrivateFieldSet2(_pathname, this, "/" + temp);
|
|
75
|
+
else _classPrivateFieldSet2(_pathname, this, "/");
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
get search() {
|
|
79
|
+
const val = _classPrivateFieldGet2(_search, this).toString();
|
|
80
|
+
return val.length === 0 || val.startsWith("?") ? val : `?${val}`;
|
|
81
|
+
}
|
|
82
|
+
set search(val) {
|
|
83
|
+
if (isString(val)) {
|
|
84
|
+
val = val.trim();
|
|
85
|
+
_classPrivateFieldSet2(_search, this, new URLSearchParams(val));
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
get hash() {
|
|
89
|
+
return _classPrivateFieldGet2(_hash, this);
|
|
90
|
+
}
|
|
91
|
+
set hash(val) {
|
|
92
|
+
if (isString(val)) {
|
|
93
|
+
val = val.trim();
|
|
94
|
+
if (val) _classPrivateFieldSet2(_hash, this, val.startsWith("#") ? val : `#${val}`);
|
|
95
|
+
else _classPrivateFieldSet2(_hash, this, "");
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
get href() {
|
|
99
|
+
return `${this.protocol}//${this.host}${this.pathname}${this.search}${this.hash}`;
|
|
100
|
+
}
|
|
101
|
+
set href(val) {
|
|
102
|
+
if (val && isString(val)) {
|
|
103
|
+
val = val.trim();
|
|
104
|
+
const { protocol, hostname, port, hash, search, pathname } = parseUrl(val);
|
|
105
|
+
this.protocol = protocol;
|
|
106
|
+
this.hostname = hostname;
|
|
107
|
+
this.pathname = pathname;
|
|
108
|
+
this.port = port;
|
|
109
|
+
this.hash = hash;
|
|
110
|
+
this.search = search;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
get origin() {
|
|
114
|
+
return `${this.protocol}//${this.host}`;
|
|
115
|
+
}
|
|
116
|
+
set origin(val) {
|
|
117
|
+
if (val && isString(val)) {
|
|
118
|
+
val = val.trim();
|
|
119
|
+
const { protocol, hostname, port } = parseUrl(val);
|
|
120
|
+
this.protocol = protocol;
|
|
121
|
+
this.hostname = hostname;
|
|
122
|
+
this.port = port;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
get searchParams() {
|
|
126
|
+
return _classPrivateFieldGet2(_search, this);
|
|
127
|
+
}
|
|
128
|
+
toString() {
|
|
129
|
+
return this.href;
|
|
130
|
+
}
|
|
131
|
+
toJSON() {
|
|
132
|
+
return this.toString();
|
|
133
|
+
}
|
|
134
|
+
_toRaw() {
|
|
135
|
+
return {
|
|
136
|
+
protocol: this.protocol,
|
|
137
|
+
port: this.port,
|
|
138
|
+
host: this.host,
|
|
139
|
+
hostname: this.hostname,
|
|
140
|
+
pathname: this.pathname,
|
|
141
|
+
hash: this.hash,
|
|
142
|
+
search: this.search,
|
|
143
|
+
origin: this.origin,
|
|
144
|
+
href: this.href
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
};
|
|
148
|
+
const TaroURLProvider = TaroURL;
|
|
149
|
+
function parseUrl(url = "") {
|
|
150
|
+
const result = {
|
|
151
|
+
href: "",
|
|
152
|
+
origin: "",
|
|
153
|
+
protocol: "",
|
|
154
|
+
hostname: "",
|
|
155
|
+
host: "",
|
|
156
|
+
port: "",
|
|
157
|
+
pathname: "",
|
|
158
|
+
search: "",
|
|
159
|
+
hash: ""
|
|
160
|
+
};
|
|
161
|
+
if (!url || !isString(url)) return result;
|
|
162
|
+
url = url.trim();
|
|
163
|
+
const matches = url.match(/^(([^:/?#]+):)?\/\/(([^/?#]+):(.+)@)?([^/?#:]*)(:(\d+))?([^?#]*)(\?([^#]*))?(#(.*))?/);
|
|
164
|
+
if (!matches) return result;
|
|
165
|
+
result.protocol = matches[1] || "https:";
|
|
166
|
+
result.hostname = matches[6] || "taro.com";
|
|
167
|
+
result.port = matches[8] || "";
|
|
168
|
+
result.pathname = matches[9] || "/";
|
|
169
|
+
result.search = matches[10] || "";
|
|
170
|
+
result.hash = matches[12] || "";
|
|
171
|
+
result.href = url;
|
|
172
|
+
result.origin = result.protocol + "//" + result.hostname + (result.port ? `:${result.port}` : "");
|
|
173
|
+
result.host = result.hostname + (result.port ? `:${result.port}` : "");
|
|
174
|
+
return result;
|
|
175
|
+
}
|
|
176
|
+
function parseUrlBase(url, base) {
|
|
177
|
+
const VALID_URL = /^(https?:)\/\//i;
|
|
178
|
+
let fullUrl = "";
|
|
179
|
+
let parsedBase = null;
|
|
180
|
+
if (!isUndefined(base)) {
|
|
181
|
+
base = String(base).trim();
|
|
182
|
+
if (!VALID_URL.test(base)) throw new TypeError(`Failed to construct 'URL': Invalid base URL`);
|
|
183
|
+
parsedBase = parseUrl(base);
|
|
184
|
+
}
|
|
185
|
+
url = String(url).trim();
|
|
186
|
+
if (VALID_URL.test(url)) fullUrl = url;
|
|
187
|
+
else if (parsedBase) if (url) if (url.startsWith("//")) fullUrl = parsedBase.protocol + url;
|
|
188
|
+
else fullUrl = parsedBase.origin + (url.startsWith("/") ? url : `/${url}`);
|
|
189
|
+
else fullUrl = parsedBase.href;
|
|
190
|
+
else throw new TypeError(`Failed to construct 'URL': Invalid URL`);
|
|
191
|
+
return parseUrl(fullUrl);
|
|
192
|
+
}
|
|
193
|
+
//#endregion
|
|
194
|
+
export { TaroURLProvider };
|
|
195
|
+
|
|
196
|
+
//# sourceMappingURL=url.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url.js","names":[],"sources":["../../src/bom/url.ts"],"sourcesContent":["import { isString, isUndefined } from '@spcsn/taro-shared';\n\nimport { URLSearchParams } from './url-search-params';\n\nclass TaroURL {\n static createObjectURL() {\n throw new Error('Oops, not support URL.createObjectURL() in miniprogram.');\n }\n\n static revokeObjectURL() {\n throw new Error('Oops, not support URL.revokeObjectURL() in miniprogram.');\n }\n\n /* private property */\n #hash = '';\n #hostname = '';\n #pathname = '';\n #port = '';\n #protocol = '';\n #search: URLSearchParams;\n\n constructor(url: string, base?: string) {\n if (!isString(url)) url = String(url);\n\n const parseResult = parseUrlBase(url, base);\n const { hash, hostname, pathname, port, protocol, search } = parseResult;\n\n this.#hash = hash;\n this.#hostname = hostname;\n this.#pathname = pathname || '/';\n this.#port = port;\n this.#protocol = protocol;\n this.#search = new URLSearchParams(search);\n }\n\n /* public property */\n get protocol() {\n return this.#protocol;\n }\n\n set protocol(val: string) {\n isString(val) && (this.#protocol = val.trim());\n }\n\n get host() {\n return this.hostname + (this.port ? ':' + this.port : '');\n }\n\n set host(val: string) {\n if (val && isString(val)) {\n val = val.trim();\n const { hostname, port } = parseUrl(`//${val}`);\n this.hostname = hostname;\n this.port = port;\n }\n }\n\n get hostname() {\n return this.#hostname;\n }\n\n set hostname(val: string) {\n val && isString(val) && (this.#hostname = val.trim());\n }\n\n get port() {\n return this.#port;\n }\n\n set port(val: string) {\n isString(val) && (this.#port = val.trim());\n }\n\n get pathname() {\n return this.#pathname;\n }\n\n set pathname(val: string) {\n if (isString(val)) {\n val = val.trim();\n const HEAD_REG = /^(\\/|\\.\\/|\\.\\.\\/)/;\n let temp = val;\n while (HEAD_REG.test(temp)) {\n temp = temp.replace(HEAD_REG, '');\n }\n if (temp) this.#pathname = '/' + temp;\n else this.#pathname = '/';\n }\n }\n\n get search() {\n const val = this.#search.toString();\n return val.length === 0 || val.startsWith('?') ? val : `?${val}`;\n }\n\n set search(val: string) {\n if (isString(val)) {\n val = val.trim();\n this.#search = new URLSearchParams(val);\n }\n }\n\n get hash() {\n return this.#hash;\n }\n\n set hash(val: string) {\n if (isString(val)) {\n val = val.trim();\n if (val) this.#hash = val.startsWith('#') ? val : `#${val}`;\n else this.#hash = '';\n }\n }\n\n get href() {\n return `${this.protocol}//${this.host}${this.pathname}${this.search}${this.hash}`;\n }\n\n set href(val: string) {\n if (val && isString(val)) {\n val = val.trim();\n const { protocol, hostname, port, hash, search, pathname } = parseUrl(val);\n this.protocol = protocol;\n this.hostname = hostname;\n this.pathname = pathname;\n this.port = port;\n this.hash = hash;\n this.search = search;\n }\n }\n\n get origin() {\n return `${this.protocol}//${this.host}`;\n }\n\n set origin(val: string) {\n if (val && isString(val)) {\n val = val.trim();\n const { protocol, hostname, port } = parseUrl(val);\n this.protocol = protocol;\n this.hostname = hostname;\n this.port = port;\n }\n }\n\n get searchParams() {\n return this.#search;\n }\n\n // public method\n toString() {\n return this.href;\n }\n\n toJSON() {\n return this.toString();\n }\n\n // convenient for deconstructor\n _toRaw() {\n return {\n protocol: this.protocol,\n port: this.port,\n host: this.host,\n hostname: this.hostname,\n pathname: this.pathname,\n hash: this.hash,\n search: this.search,\n origin: this.origin,\n href: this.href,\n };\n }\n}\n\nexport type { TaroURL };\n\n// Note: 小程序端 vite 打包成 commonjs,const URL = xxx 会报错,所以把 URL 改为 TaroURLProvider\nexport const TaroURLProvider: typeof TaroURL = TaroURL;\n\nexport function parseUrl(url = '') {\n const result = {\n href: '',\n origin: '',\n protocol: '',\n hostname: '',\n host: '',\n port: '',\n pathname: '',\n search: '',\n hash: '',\n };\n if (!url || !isString(url)) return result;\n\n url = url.trim();\n const PATTERN = /^(([^:/?#]+):)?\\/\\/(([^/?#]+):(.+)@)?([^/?#:]*)(:(\\d+))?([^?#]*)(\\?([^#]*))?(#(.*))?/;\n const matches = url.match(PATTERN);\n\n if (!matches) return result;\n\n // TODO: username & password ?\n result.protocol = matches[1] || 'https:';\n result.hostname = matches[6] || 'taro.com';\n result.port = matches[8] || '';\n result.pathname = matches[9] || '/';\n result.search = matches[10] || '';\n result.hash = matches[12] || '';\n result.href = url;\n result.origin = result.protocol + '//' + result.hostname + (result.port ? `:${result.port}` : '');\n result.host = result.hostname + (result.port ? `:${result.port}` : '');\n\n return result;\n}\n\nfunction parseUrlBase(url: string, base?: string) {\n const VALID_URL = /^(https?:)\\/\\//i;\n\n let fullUrl = '';\n let parsedBase: ReturnType<typeof parseUrl> | null = null;\n\n if (!isUndefined(base)) {\n base = String(base).trim();\n if (!VALID_URL.test(base)) throw new TypeError(`Failed to construct 'URL': Invalid base URL`);\n parsedBase = parseUrl(base);\n }\n\n url = String(url).trim();\n\n if (VALID_URL.test(url)) {\n fullUrl = url;\n } else if (parsedBase) {\n if (url) {\n if (url.startsWith('//')) {\n fullUrl = parsedBase.protocol + url;\n } else {\n fullUrl = parsedBase.origin + (url.startsWith('/') ? url : `/${url}`);\n }\n } else {\n fullUrl = parsedBase.href;\n }\n } else {\n throw new TypeError(`Failed to construct 'URL': Invalid URL`);\n }\n\n return parseUrl(fullUrl);\n}\n"],"mappings":"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"}
|
package/dist/bom/window.d.ts
CHANGED
|
@@ -3,9 +3,9 @@ import type { TaroHistory } from './history';
|
|
|
3
3
|
import type { TaroLocation } from './location';
|
|
4
4
|
export declare class TaroWindow extends Events {
|
|
5
5
|
navigator: Navigator;
|
|
6
|
-
requestAnimationFrame:
|
|
7
|
-
cancelAnimationFrame:
|
|
8
|
-
getComputedStyle: import("./
|
|
6
|
+
requestAnimationFrame: (callback: any) => NodeJS.Timeout;
|
|
7
|
+
cancelAnimationFrame: (seed: any) => void;
|
|
8
|
+
getComputedStyle: import("./get-computed-style").TGetComputedStyle;
|
|
9
9
|
Date: DateConstructor;
|
|
10
10
|
location: TaroLocation;
|
|
11
11
|
history: TaroHistory;
|
package/dist/bom/window.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "../constants/index.js";
|
|
2
2
|
import { Events } from "../emitter/emitter.js";
|
|
3
3
|
import env from "../env.js";
|
|
4
|
-
import { taroGetComputedStyleProvider } from "./
|
|
4
|
+
import { taroGetComputedStyleProvider } from "./get-computed-style.js";
|
|
5
5
|
import { History } from "./history.js";
|
|
6
6
|
import { Location } from "./location.js";
|
|
7
7
|
import { nav } from "./navigator.js";
|
|
@@ -65,7 +65,7 @@ var TaroWindow = class extends Events {
|
|
|
65
65
|
return clearTimeout(...args);
|
|
66
66
|
}
|
|
67
67
|
};
|
|
68
|
-
const taroWindowProvider =
|
|
68
|
+
const taroWindowProvider = env.window = new TaroWindow();
|
|
69
69
|
const taroLocationProvider = taroWindowProvider.location;
|
|
70
70
|
const taroHistoryProvider = taroWindowProvider.history;
|
|
71
71
|
//#endregion
|
package/dist/bom/window.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"window.js","names":["navigator","raf","caf"],"sources":["../../src/bom/window.ts"],"sourcesContent":["import { isString } from '@spcsn/taro-shared';\n\nimport { CONTEXT_ACTIONS } from '../constants';\nimport { Events } from '../emitter/emitter';\nimport env from '../env';\nimport { taroGetComputedStyleProvider } from './
|
|
1
|
+
{"version":3,"file":"window.js","names":["navigator","raf","caf"],"sources":["../../src/bom/window.ts"],"sourcesContent":["import { isString } from '@spcsn/taro-shared';\n\nimport { CONTEXT_ACTIONS } from '../constants';\nimport { Events } from '../emitter/emitter';\nimport env from '../env';\nimport { taroGetComputedStyleProvider } from './get-computed-style';\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 });\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(\n CONTEXT_ACTIONS.INIT,\n (pageId: string) => {\n // 页面 onload,为该页面建立新的上下文信息\n _location.trigger(CONTEXT_ACTIONS.INIT, pageId);\n },\n null,\n );\n\n this.on(\n CONTEXT_ACTIONS.RECOVER,\n (pageId: string) => {\n // 页面 onshow,恢复当前页面的上下文信息\n _location.trigger(CONTEXT_ACTIONS.RECOVER, pageId);\n _history.trigger(CONTEXT_ACTIONS.RECOVER, pageId);\n },\n null,\n );\n\n this.on(\n CONTEXT_ACTIONS.RESTORE,\n (pageId: string) => {\n // 页面 onhide,缓存当前页面的上下文信息\n _location.trigger(CONTEXT_ACTIONS.RESTORE, pageId);\n _history.trigger(CONTEXT_ACTIONS.RESTORE, pageId);\n },\n null,\n );\n\n this.on(\n CONTEXT_ACTIONS.DESTROY,\n (pageId: string) => {\n // 页面 onunload,清除当前页面的上下文信息\n _location.trigger(CONTEXT_ACTIONS.DESTROY, pageId);\n _history.trigger(CONTEXT_ACTIONS.DESTROY, pageId);\n },\n null,\n );\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 = (env.window = new TaroWindow());\nexport const taroLocationProvider = taroWindowProvider.location;\nexport const taroHistoryProvider = taroWindowProvider.history;\n"],"mappings":";;;;;;;;;;AAcA,IAAa,aAAb,cAAgC,OAAO;CAWrC,cAAc;EACZ,MAAM;EAXR,KAAA,YAAYA;EACZ,KAAA,wBAAwBC;EACxB,KAAA,uBAAuBC;EACvB,KAAA,mBAAmB;EAejB,CAJE,GAAG,OAAO,oBAAoB,UAAU,CAAC,CAAC,GAC1C,GAAG,OAAO,sBAAsB,UAAU,CAAC,CAAC,CAG/B,EAAE,SAAS,aAAa;GACrC,IAAI,aAAa,UAAU,aAAa,YAAY;GACpD,IAAI,CAAC,OAAO,UAAU,eAAe,KAAK,MAAM,QAAQ,GAEtD,IAAI;IACF,KAAK,YAAY,OAAO;GAC1B,SAAS,GAAG;IAER,QAAQ,KAAK,sBAAsB,OAAO,QAAQ,EAAE,iBAAiB;GAEzE;EAEJ,CAAC;EAED,KAAK,SAAA,KAAA,OAAS;EAGd,KAAK,WAAW,IAAI,SAAS,EAAE,QAAQ,KAAK,CAAC;EAC7C,KAAK,UAAU,IAAI,QAAQ,KAAK,UAAU,EAAE,QAAQ,KAAK,CAAC;EAE1D,KAAK,UAAU;CACjB;CAEA,YAAY;EACV,MAAM,YAAY,KAAK;EACvB,MAAM,WAAW,KAAK;EAEtB,KAAK,GAAA,MAEF,WAAmB;GAElB,UAAU,QAAA,KAA8B,MAAM;EAChD,GACA,IACF;EAEA,KAAK,GAAA,MAEF,WAAmB;GAElB,UAAU,QAAA,KAAiC,MAAM;GACjD,SAAS,QAAA,KAAiC,MAAM;EAClD,GACA,IACF;EAEA,KAAK,GAAA,MAEF,WAAmB;GAElB,UAAU,QAAA,KAAiC,MAAM;GACjD,SAAS,QAAA,KAAiC,MAAM;EAClD,GACA,IACF;EAEA,KAAK,GAAA,MAEF,WAAmB;GAElB,UAAU,QAAA,KAAiC,MAAM;GACjD,SAAS,QAAA,KAAiC,MAAM;EAClD,GACA,IACF;CACF;CAEA,IAAI,WAAW;EACb,OAAO,IAAI;CACb;CAEA,iBAAiB,OAAe,UAA8B;EAC5D,IAAI,CAAC,SAAS,KAAK,GAAG;EACtB,KAAK,GAAG,OAAO,UAAU,IAAI;CAC/B;CAEA,oBAAoB,OAAe,UAA8B;EAC/D,IAAI,CAAC,SAAS,KAAK,GAAG;EACtB,KAAK,IAAI,OAAO,UAAU,IAAI;CAChC;CAEA,WAAW,GAAG,MAAqC;EACjD,OAAO,WAAW,GAAG,IAAI;CAC3B;CAEA,aAAa,GAAG,MAAuC;EACrD,OAAO,aAAa,GAAG,IAAI;CAC7B;AACF;AAGA,MAAa,qBAAkC,IAAI,SAAS,IAAI,WAAW;AAC3E,MAAa,uBAAuB,mBAAmB;AACvD,MAAa,sBAAsB,mBAAmB"}
|
package/dist/current.d.ts
CHANGED
|
@@ -15,5 +15,8 @@ interface Current {
|
|
|
15
15
|
preloadData?: any;
|
|
16
16
|
}
|
|
17
17
|
export declare const Current: Current;
|
|
18
|
+
type AppReadyCallback = (app: AppInstance) => void;
|
|
19
|
+
export declare function setCurrentApp(app: AppInstance): void;
|
|
20
|
+
export declare function whenAppReady(callback: AppReadyCallback): void;
|
|
18
21
|
export declare const getCurrentInstance: () => Current;
|
|
19
22
|
export {};
|
package/dist/current.js
CHANGED
|
@@ -4,8 +4,17 @@ const Current = {
|
|
|
4
4
|
router: null,
|
|
5
5
|
page: null
|
|
6
6
|
};
|
|
7
|
+
const appReadyCallbacks = [];
|
|
8
|
+
function setCurrentApp(app) {
|
|
9
|
+
Current.app = app;
|
|
10
|
+
while (appReadyCallbacks.length) appReadyCallbacks.shift()(app);
|
|
11
|
+
}
|
|
12
|
+
function whenAppReady(callback) {
|
|
13
|
+
if (Current.app) callback(Current.app);
|
|
14
|
+
else appReadyCallbacks.push(callback);
|
|
15
|
+
}
|
|
7
16
|
const getCurrentInstance = () => Current;
|
|
8
17
|
//#endregion
|
|
9
|
-
export { Current, getCurrentInstance };
|
|
18
|
+
export { Current, getCurrentInstance, setCurrentApp, whenAppReady };
|
|
10
19
|
|
|
11
20
|
//# sourceMappingURL=current.js.map
|
package/dist/current.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"current.js","names":[],"sources":["../src/current.ts"],"sourcesContent":["import { AppInstance, PageInstance } from './dsl/instance';\n\nexport interface Router {\n params: Record<string, unknown>;\n path: string;\n $taroPath: string;\n onReady: string;\n onHide: string;\n onShow: string;\n exitState?: any;\n}\n\ninterface Current {\n app: AppInstance | null;\n router: Router | null;\n page: PageInstance | null;\n preloadData?: any;\n}\n\nexport const Current: Current = {\n app: null,\n router: null,\n page: null,\n};\n\nexport const getCurrentInstance = () => Current;\n"],"mappings":";AAmBA,MAAa,UAAmB;CAC9B,KAAK;CACL,QAAQ;CACR,MAAM;AACR;AAEA,MAAa,2BAA2B"}
|
|
1
|
+
{"version":3,"file":"current.js","names":[],"sources":["../src/current.ts"],"sourcesContent":["import { AppInstance, PageInstance } from './dsl/instance';\n\nexport interface Router {\n params: Record<string, unknown>;\n path: string;\n $taroPath: string;\n onReady: string;\n onHide: string;\n onShow: string;\n exitState?: any;\n}\n\ninterface Current {\n app: AppInstance | null;\n router: Router | null;\n page: PageInstance | null;\n preloadData?: any;\n}\n\nexport const Current: Current = {\n app: null,\n router: null,\n page: null,\n};\n\ntype AppReadyCallback = (app: AppInstance) => void;\n\nconst appReadyCallbacks: AppReadyCallback[] = [];\n\nexport function setCurrentApp(app: AppInstance) {\n Current.app = app;\n\n while (appReadyCallbacks.length) {\n appReadyCallbacks.shift()!(app);\n }\n}\n\nexport function whenAppReady(callback: AppReadyCallback) {\n if (Current.app) {\n callback(Current.app);\n } else {\n appReadyCallbacks.push(callback);\n }\n}\n\nexport const getCurrentInstance = () => Current;\n"],"mappings":";AAmBA,MAAa,UAAmB;CAC9B,KAAK;CACL,QAAQ;CACR,MAAM;AACR;AAIA,MAAM,oBAAwC,CAAC;AAE/C,SAAgB,cAAc,KAAkB;CAC9C,QAAQ,MAAM;CAEd,OAAO,kBAAkB,QACvB,kBAAkB,MAAM,EAAG,GAAG;AAElC;AAEA,SAAgB,aAAa,UAA4B;CACvD,IAAI,QAAQ,KACV,SAAS,QAAQ,GAAG;MAEpB,kBAAkB,KAAK,QAAQ;AAEnC;AAEA,MAAa,2BAA2B"}
|
package/dist/dom/class-list.js
CHANGED
|
@@ -50,7 +50,8 @@ var ClassList = class {
|
|
|
50
50
|
toggle(token, force) {
|
|
51
51
|
const result = this.contains(token);
|
|
52
52
|
const method = result ? force !== true && "remove" : force !== false && "add";
|
|
53
|
-
if (method) this
|
|
53
|
+
if (method === "add") this.add(token);
|
|
54
|
+
if (method === "remove") this.remove(token);
|
|
54
55
|
if (force === true || force === false) return force;
|
|
55
56
|
else return !result;
|
|
56
57
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"class-list.js","names":[],"sources":["../../src/dom/class-list.ts"],"sourcesContent":["import type { TaroElement } from './element';\n\nexport class ClassList {\n private el: TaroElement;\n\n private tokenList: string[] = [];\n\n constructor(className: string, el: TaroElement) {\n this.el = el;\n className\n .trim()\n .split(/\\s+/)\n .forEach((token) => this.tokenList.push(token));\n }\n\n public get value() {\n return this.toString();\n }\n\n public get length() {\n return this.tokenList.length;\n }\n\n add() {\n let index = 0;\n let updated = false;\n\n const tokens = arguments;\n const length = tokens.length;\n const tokenList = this.tokenList;\n\n do {\n const token: string = tokens[index];\n\n if (this.checkTokenIsValid(token) && !~tokenList.indexOf(token)) {\n tokenList.push(token);\n\n updated = true;\n }\n } while (++index < length);\n\n if (updated) {\n this._update();\n }\n }\n\n remove() {\n let i = 0;\n let updated = false;\n\n const tokens = arguments;\n const length = tokens.length;\n const tokenList = this.tokenList;\n\n do {\n const token = tokens[i] + '';\n\n if (!this.checkTokenIsValid(token)) continue;\n\n const index = tokenList.indexOf(token);\n\n if (~tokenList.indexOf(token)) {\n tokenList.splice(index, 1);\n\n updated = true;\n }\n } while (++i < length);\n\n if (updated) {\n this._update();\n }\n }\n\n contains(token: string) {\n if (!this.checkTokenIsValid(token)) return false;\n\n return !!~this.tokenList.indexOf(token);\n }\n\n toggle(token: string, force: boolean) {\n const result = this.contains(token);\n const method = result ? force !== true && 'remove' : force !== false && 'add';\n\n if (method) {\n
|
|
1
|
+
{"version":3,"file":"class-list.js","names":[],"sources":["../../src/dom/class-list.ts"],"sourcesContent":["import type { TaroElement } from './element';\n\nexport class ClassList {\n private el: TaroElement;\n\n private tokenList: string[] = [];\n\n constructor(className: string, el: TaroElement) {\n this.el = el;\n className\n .trim()\n .split(/\\s+/)\n .forEach((token) => this.tokenList.push(token));\n }\n\n public get value() {\n return this.toString();\n }\n\n public get length() {\n return this.tokenList.length;\n }\n\n add() {\n let index = 0;\n let updated = false;\n\n const tokens = arguments;\n const length = tokens.length;\n const tokenList = this.tokenList;\n\n do {\n const token: string = tokens[index];\n\n if (this.checkTokenIsValid(token) && !~tokenList.indexOf(token)) {\n tokenList.push(token);\n\n updated = true;\n }\n } while (++index < length);\n\n if (updated) {\n this._update();\n }\n }\n\n remove() {\n let i = 0;\n let updated = false;\n\n const tokens = arguments;\n const length = tokens.length;\n const tokenList = this.tokenList;\n\n do {\n const token = tokens[i] + '';\n\n if (!this.checkTokenIsValid(token)) continue;\n\n const index = tokenList.indexOf(token);\n\n if (~tokenList.indexOf(token)) {\n tokenList.splice(index, 1);\n\n updated = true;\n }\n } while (++i < length);\n\n if (updated) {\n this._update();\n }\n }\n\n contains(token: string) {\n if (!this.checkTokenIsValid(token)) return false;\n\n return !!~this.tokenList.indexOf(token);\n }\n\n toggle(token: string, force: boolean) {\n const result = this.contains(token);\n const method = result ? force !== true && 'remove' : force !== false && 'add';\n\n if (method === 'add') {\n this.add(token);\n }\n\n if (method === 'remove') {\n this.remove(token);\n }\n\n if (force === true || force === false) {\n return force;\n } else {\n return !result;\n }\n }\n\n replace(token: string, replacement_token: string) {\n if (!this.checkTokenIsValid(token) || !this.checkTokenIsValid(replacement_token)) return;\n\n const index = this.tokenList.indexOf(token);\n\n if (~index) {\n this.tokenList.splice(index, 1, replacement_token);\n this._update();\n }\n }\n\n toString() {\n return this.tokenList.filter((v) => v !== '').join(' ');\n }\n\n private checkTokenIsValid(token: string) {\n if (token === '' || /\\s/.test(token)) return false;\n\n return true;\n }\n\n private _update() {\n this.el.className = this.value;\n }\n}\n"],"mappings":";AAEA,IAAa,YAAb,MAAuB;CAKrB,YAAY,WAAmB,IAAiB;EAFhD,KAAQ,YAAsB,CAAC;EAG7B,KAAK,KAAK;EACV,UACG,KAAK,EACL,MAAM,KAAK,EACX,SAAS,UAAU,KAAK,UAAU,KAAK,KAAK,CAAC;CAClD;CAEA,IAAW,QAAQ;EACjB,OAAO,KAAK,SAAS;CACvB;CAEA,IAAW,SAAS;EAClB,OAAO,KAAK,UAAU;CACxB;CAEA,MAAM;EACJ,IAAI,QAAQ;EACZ,IAAI,UAAU;EAEd,MAAM,SAAS;EACf,MAAM,SAAS,OAAO;EACtB,MAAM,YAAY,KAAK;EAEvB,GAAG;GACD,MAAM,QAAgB,OAAO;GAE7B,IAAI,KAAK,kBAAkB,KAAK,KAAK,CAAC,CAAC,UAAU,QAAQ,KAAK,GAAG;IAC/D,UAAU,KAAK,KAAK;IAEpB,UAAU;GACZ;EACF,SAAS,EAAE,QAAQ;EAEnB,IAAI,SACF,KAAK,QAAQ;CAEjB;CAEA,SAAS;EACP,IAAI,IAAI;EACR,IAAI,UAAU;EAEd,MAAM,SAAS;EACf,MAAM,SAAS,OAAO;EACtB,MAAM,YAAY,KAAK;EAEvB,GAAG;GACD,MAAM,QAAQ,OAAO,KAAK;GAE1B,IAAI,CAAC,KAAK,kBAAkB,KAAK,GAAG;GAEpC,MAAM,QAAQ,UAAU,QAAQ,KAAK;GAErC,IAAI,CAAC,UAAU,QAAQ,KAAK,GAAG;IAC7B,UAAU,OAAO,OAAO,CAAC;IAEzB,UAAU;GACZ;EACF,SAAS,EAAE,IAAI;EAEf,IAAI,SACF,KAAK,QAAQ;CAEjB;CAEA,SAAS,OAAe;EACtB,IAAI,CAAC,KAAK,kBAAkB,KAAK,GAAG,OAAO;EAE3C,OAAO,CAAC,CAAC,CAAC,KAAK,UAAU,QAAQ,KAAK;CACxC;CAEA,OAAO,OAAe,OAAgB;EACpC,MAAM,SAAS,KAAK,SAAS,KAAK;EAClC,MAAM,SAAS,SAAS,UAAU,QAAQ,WAAW,UAAU,SAAS;EAExE,IAAI,WAAW,OACb,KAAK,IAAI,KAAK;EAGhB,IAAI,WAAW,UACb,KAAK,OAAO,KAAK;EAGnB,IAAI,UAAU,QAAQ,UAAU,OAC9B,OAAO;OAEP,OAAO,CAAC;CAEZ;CAEA,QAAQ,OAAe,mBAA2B;EAChD,IAAI,CAAC,KAAK,kBAAkB,KAAK,KAAK,CAAC,KAAK,kBAAkB,iBAAiB,GAAG;EAElF,MAAM,QAAQ,KAAK,UAAU,QAAQ,KAAK;EAE1C,IAAI,CAAC,OAAO;GACV,KAAK,UAAU,OAAO,OAAO,GAAG,iBAAiB;GACjD,KAAK,QAAQ;EACf;CACF;CAEA,WAAW;EACT,OAAO,KAAK,UAAU,QAAQ,MAAM,MAAM,EAAE,EAAE,KAAK,GAAG;CACxD;CAEA,kBAA0B,OAAe;EACvC,IAAI,UAAU,MAAM,KAAK,KAAK,KAAK,GAAG,OAAO;EAE7C,OAAO;CACT;CAEA,UAAkB;EAChB,KAAK,GAAG,YAAY,KAAK;CAC3B;AACF"}
|
package/dist/dom/document.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document.js","names":[],"sources":["../../src/dom/document.ts"],"sourcesContent":["import { controlledComponent, isUndefined, toCamelCase } from '@spcsn/taro-shared';\n\nimport { A, COMMENT, DOCUMENT_ELEMENT_NAME, ROOT_STR } from '../constants';\nimport { TaroElement } from '../dom/element';\nimport { createEvent } from '../dom/event';\nimport { eventSource } from '../dom/event-source';\nimport { FormElement } from '../dom/form';\nimport { NodeType } from '../dom/
|
|
1
|
+
{"version":3,"file":"document.js","names":[],"sources":["../../src/dom/document.ts"],"sourcesContent":["import { controlledComponent, isUndefined, toCamelCase } from '@spcsn/taro-shared';\n\nimport { A, COMMENT, DOCUMENT_ELEMENT_NAME, ROOT_STR } from '../constants';\nimport { TaroElement } from '../dom/element';\nimport { createEvent } from '../dom/event';\nimport { eventSource } from '../dom/event-source';\nimport { FormElement } from '../dom/form';\nimport { NodeType } from '../dom/node-types';\nimport { TaroRootElement } from '../dom/root';\nimport { TaroText } from '../dom/text';\nimport env from '../env';\nimport { AnchorElement } from './anchor-element';\nimport { TransferElement } from './transfer';\n\nexport class TaroDocument extends TaroElement {\n public documentElement: TaroElement;\n public head: TaroElement;\n public body: TaroElement;\n public createEvent = createEvent;\n cookie?: string;\n\n public constructor() {\n super();\n this.nodeType = NodeType.DOCUMENT_NODE;\n this.nodeName = DOCUMENT_ELEMENT_NAME;\n }\n\n public createElement(type: string): TaroElement | TaroRootElement | FormElement {\n const nodeName = type.toLowerCase();\n\n let element: TaroElement;\n switch (true) {\n case nodeName === ROOT_STR:\n element = new TaroRootElement();\n return element;\n case controlledComponent.has(nodeName):\n element = new FormElement();\n break;\n case nodeName === A:\n element = new AnchorElement();\n break;\n case nodeName === 'page-meta':\n case nodeName === 'navigation-bar':\n element = new TransferElement(toCamelCase(nodeName));\n break;\n default:\n element = new TaroElement();\n break;\n }\n\n element.nodeName = nodeName;\n element.tagName = type.toUpperCase();\n\n return element;\n }\n\n // Minimal createElementNS shim — kept as no-op for renderers that\n // attempt to mount into an SVG container before falling back.\n public createElementNS(_svgNS: string, type: string): TaroElement | TaroRootElement | FormElement {\n return this.createElement(type);\n }\n\n public createTextNode(text: string): TaroText {\n return new TaroText(text);\n }\n\n public getElementById<T extends TaroElement>(id: string | undefined | null): T | null {\n const el = eventSource.get(id);\n return isUndefined(el) ? null : (el as T);\n }\n\n public querySelector<T extends TaroElement>(query: string): T | null {\n // Minimal id-selector shim — only `#id` is supported.\n if (/^#/.test(query)) {\n return this.getElementById<T>(query.slice(1));\n }\n return null;\n }\n\n public querySelectorAll() {\n // fake hack\n return [];\n }\n\n // @TODO: @PERF: 在 hydrate 移除掉空的 node\n public createComment(): TaroText {\n const textnode = new TaroText('');\n textnode.nodeName = COMMENT;\n return textnode;\n }\n\n get defaultView() {\n return env.window;\n }\n}\n"],"mappings":";;;;;;;;;;;;AAcA,IAAa,eAAb,cAAkC,YAAY;CAO5C,cAAqB;EACnB,MAAM;EAJR,KAAO,cAAc;EAKnB,KAAK,WAAA;EACL,KAAK,WAAW;CAClB;CAEA,cAAqB,MAA2D;EAC9E,MAAM,WAAW,KAAK,YAAY;EAElC,IAAI;EACJ,QAAQ,MAAR;GACE,KAAK,aAAa;IAChB,UAAU,IAAI,gBAAgB;IAC9B,OAAO;GACT,KAAK,oBAAoB,IAAI,QAAQ;IACnC,UAAU,IAAI,YAAY;IAC1B;GACF,KAAK,aAAA;IACH,UAAU,IAAI,cAAc;IAC5B;GACF,KAAK,aAAa;GAClB,KAAK,aAAa;IAChB,UAAU,IAAI,gBAAgB,YAAY,QAAQ,CAAC;IACnD;GACF;IACE,UAAU,IAAI,YAAY;IAC1B;EACJ;EAEA,QAAQ,WAAW;EACnB,QAAQ,UAAU,KAAK,YAAY;EAEnC,OAAO;CACT;CAIA,gBAAuB,QAAgB,MAA2D;EAChG,OAAO,KAAK,cAAc,IAAI;CAChC;CAEA,eAAsB,MAAwB;EAC5C,OAAO,IAAI,SAAS,IAAI;CAC1B;CAEA,eAA6C,IAAyC;EACpF,MAAM,KAAK,YAAY,IAAI,EAAE;EAC7B,OAAO,YAAY,EAAE,IAAI,OAAQ;CACnC;CAEA,cAA4C,OAAyB;EAEnE,IAAI,KAAK,KAAK,KAAK,GACjB,OAAO,KAAK,eAAkB,MAAM,MAAM,CAAC,CAAC;EAE9C,OAAO;CACT;CAEA,mBAA0B;EAExB,OAAO,CAAC;CACV;CAGA,gBAAiC;EAC/B,MAAM,WAAW,IAAI,SAAS,EAAE;EAChC,SAAS,WAAW;EACpB,OAAO;CACT;CAEA,IAAI,cAAc;EAChB,OAAO,IAAI;CACb;AACF"}
|
package/dist/dom/element.js
CHANGED
|
@@ -18,14 +18,14 @@ var TaroElement = class TaroElement extends TaroNode {
|
|
|
18
18
|
hooks.call("patchElement", this);
|
|
19
19
|
}
|
|
20
20
|
_stopPropagation(event) {
|
|
21
|
-
let
|
|
22
|
-
while (
|
|
23
|
-
const listeners =
|
|
24
|
-
if (
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
l._stop = true;
|
|
21
|
+
let parentNode = this.parentNode;
|
|
22
|
+
while (parentNode) {
|
|
23
|
+
const listeners = parentNode.__handlers[event.type];
|
|
24
|
+
if (isArray(listeners)) for (let i = listeners.length; i--;) {
|
|
25
|
+
const listener = listeners[i];
|
|
26
|
+
listener._stop = true;
|
|
28
27
|
}
|
|
28
|
+
parentNode = parentNode.parentNode;
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
31
|
get id() {
|
package/dist/dom/element.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"element.js","names":["getComponentsAlias"],"sources":["../../src/dom/element.ts"],"sourcesContent":["import {\n EMPTY_OBJ,\n hooks,\n isArray,\n isFunction,\n isObject,\n isString,\n isUndefined,\n Shortcuts,\n toCamelCase,\n warn,\n} from '@spcsn/taro-shared';\n\nimport {\n CATCH_VIEW,\n CATCHMOVE,\n CLASS,\n CLICK_VIEW,\n EVENT_CALLBACK_RESULT,\n FOCUS,\n ID,\n PROPERTY_THRESHOLD,\n PURE_VIEW,\n STATIC_VIEW,\n STYLE,\n VIEW,\n} from '../constants';\nimport { MutationObserver, MutationRecordType } from '../dom-external/mutation-observer';\nimport { extend, getComponentsAlias, isElement, isHasExtractProp, shortcutAttr } from '../utils';\nimport { ClassList } from './class-list';\nimport { eventSource } from './event-source';\nimport { TaroNode } from './node';\nimport { NodeType } from './node_types';\nimport { Style } from './style';\nimport { treeToArray } from './tree';\n\nimport type { Attributes, TFunc } from '../interface';\nimport type { TaroEvent } from './event';\n\nexport class TaroElement extends TaroNode {\n public ctx?;\n public tagName: string;\n public props: Record<string, any> = {};\n public style: Style;\n public dataset: Record<string, unknown> = EMPTY_OBJ;\n public innerHTML: string;\n\n public constructor() {\n super();\n this.nodeType = NodeType.ELEMENT_NODE;\n this.style = new Style(this);\n hooks.call('patchElement', this);\n }\n\n private _stopPropagation(event: TaroEvent) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let target = this;\n // eslint-disable-next-line no-cond-assign\n while ((target = target.parentNode as this)) {\n const listeners = target.__handlers[event.type];\n\n if (!isArray(listeners)) {\n continue;\n }\n\n for (let i = listeners.length; i--; ) {\n const l = listeners[i];\n l._stop = true;\n }\n }\n }\n\n public get id(): string {\n return this.getAttribute(ID)!;\n }\n\n public set id(val: string) {\n this.setAttribute(ID, val);\n }\n\n public get className(): string {\n return this.getAttribute(CLASS) || '';\n }\n\n public set className(val: string) {\n this.setAttribute(CLASS, val);\n }\n\n public get cssText(): string {\n return this.getAttribute(STYLE) || '';\n }\n\n public get classList(): ClassList {\n return new ClassList(this.className, this);\n }\n\n public get children(): TaroElement[] {\n return this.childNodes.filter(isElement);\n }\n\n public get attributes(): Attributes[] {\n const props = this.props;\n const propKeys = Object.keys(props);\n const style = this.style.cssText;\n const attrs = propKeys.map((key) => ({ name: key, value: props[key] }));\n return attrs.concat(style ? { name: STYLE, value: style } : []);\n }\n\n public get textContent(): string {\n let text = '';\n const childNodes = this.childNodes;\n\n for (let i = 0; i < childNodes.length; i++) {\n text += childNodes[i].textContent;\n }\n\n return text;\n }\n\n public set textContent(text: string) {\n super.textContent = text;\n }\n\n public hasAttribute(qualifiedName: string): boolean {\n return !isUndefined(this.props[qualifiedName]);\n }\n\n public hasAttributes(): boolean {\n return this.attributes.length > 0;\n }\n\n public get focus() {\n return function () {\n this.setAttribute(FOCUS, true);\n };\n }\n\n // 兼容 Vue3,详情请见:https://github.com/NervJS/taro/issues/10579\n public set focus(value) {\n this.setAttribute(FOCUS, value);\n }\n\n public blur() {\n this.setAttribute(FOCUS, false);\n }\n\n public setAttribute(qualifiedName: string, value: any): void {\n process.env.NODE_ENV !== 'production' &&\n warn(\n isString(value) && value.length > PROPERTY_THRESHOLD,\n `元素 ${this.nodeName} 的 ${qualifiedName} 属性值数据量过大,可能会影响渲染性能。考虑降低图片转为 base64 的阈值或在 CSS 中使用 base64。`,\n );\n\n const isPureView = this.nodeName === VIEW && !isHasExtractProp(this) && !this.isAnyEventBinded();\n\n if (qualifiedName !== STYLE) {\n MutationObserver.record({\n target: this,\n type: MutationRecordType.ATTRIBUTES,\n attributeName: qualifiedName,\n oldValue: this.getAttribute(qualifiedName),\n });\n }\n\n switch (qualifiedName) {\n case STYLE:\n this.style.cssText = value as string;\n break;\n case ID:\n if (this.uid !== this.sid) {\n // eventSource[sid] 永远保留,直到组件卸载\n // eventSource[uid] 可变\n eventSource.delete(this.uid);\n }\n value = String(value);\n this.props[qualifiedName] = this.uid = value;\n eventSource.set(value, this);\n break;\n default:\n this.props[qualifiedName] = value as string;\n\n if (qualifiedName.startsWith('data-')) {\n if (this.dataset === EMPTY_OBJ) {\n this.dataset = Object.create(null);\n }\n this.dataset[toCamelCase(qualifiedName.replace(/^data-/, ''))] = value;\n }\n break;\n }\n\n // Serialization\n if (!this._root) return;\n\n const componentsAlias = getComponentsAlias();\n const _alias = componentsAlias[this.nodeName];\n const viewAlias = componentsAlias[VIEW]._num;\n const clickViewAlias = componentsAlias[CLICK_VIEW]._num;\n const staticViewAlias = componentsAlias[STATIC_VIEW]._num;\n const catchViewAlias = componentsAlias[CATCH_VIEW]._num;\n const _path = this._path;\n\n qualifiedName = shortcutAttr(qualifiedName);\n\n const qualifiedNameInCamelCase = toCamelCase(qualifiedName);\n const payload = {\n path: `${_path}.${qualifiedNameInCamelCase}`,\n value: isFunction(value) ? () => value : value,\n };\n\n hooks.call('modifySetAttrPayload', this, qualifiedName, payload, componentsAlias);\n\n if (_alias) {\n const qualifiedNameAlias = _alias[qualifiedNameInCamelCase] || qualifiedName;\n payload.path = `${_path}.${toCamelCase(qualifiedNameAlias)}`;\n }\n\n this.enqueueUpdate(payload);\n\n if (this.nodeName === VIEW) {\n if (qualifiedNameInCamelCase === CATCHMOVE) {\n // catchMove = true: catch-view\n // catchMove = false: view or click-view or static-view\n this.enqueueUpdate({\n path: `${_path}.${Shortcuts.NodeName}`,\n value: value\n ? catchViewAlias\n : this.isOnlyClickBinded() && !isHasExtractProp(this)\n ? clickViewAlias\n : this.isAnyEventBinded()\n ? viewAlias\n : staticViewAlias,\n });\n } else if (isPureView && isHasExtractProp(this)) {\n // pure-view => static-view\n this.enqueueUpdate({\n path: `${_path}.${Shortcuts.NodeName}`,\n value: staticViewAlias,\n });\n }\n }\n }\n\n public removeAttribute(qualifiedName: string) {\n const isStaticView = this.nodeName === VIEW && isHasExtractProp(this) && !this.isAnyEventBinded();\n\n MutationObserver.record({\n target: this,\n type: MutationRecordType.ATTRIBUTES,\n attributeName: qualifiedName,\n oldValue: this.getAttribute(qualifiedName),\n });\n\n if (qualifiedName === STYLE) {\n this.style.cssText = '';\n } else {\n const isInterrupt = hooks.call('onRemoveAttribute', this, qualifiedName);\n if (isInterrupt) {\n return;\n }\n\n if (!this.props.hasOwnProperty(qualifiedName)) {\n return;\n }\n delete this.props[qualifiedName];\n }\n\n // Serialization\n if (!this._root) return;\n\n const componentsAlias = getComponentsAlias();\n const _alias = componentsAlias[this.nodeName];\n const viewAlias = componentsAlias[VIEW]._num;\n const staticViewAlias = componentsAlias[STATIC_VIEW]._num;\n const pureViewAlias = componentsAlias[PURE_VIEW]._num;\n const clickViewAlias = componentsAlias[CLICK_VIEW]._num;\n const _path = this._path;\n\n qualifiedName = shortcutAttr(qualifiedName);\n\n const qualifiedNameInCamelCase = toCamelCase(qualifiedName);\n const payload = {\n path: `${_path}.${qualifiedNameInCamelCase}`,\n value: '',\n };\n\n hooks.call('modifyRmAttrPayload', this, qualifiedName, payload, componentsAlias);\n\n if (_alias) {\n const qualifiedNameAlias = _alias[qualifiedNameInCamelCase] || qualifiedName;\n payload.path = `${_path}.${toCamelCase(qualifiedNameAlias)}`;\n }\n\n this.enqueueUpdate(payload);\n\n if (this.nodeName === VIEW) {\n if (qualifiedNameInCamelCase === CATCHMOVE) {\n // catch-view => view or click-view or static-view or pure-view\n this.enqueueUpdate({\n path: `${_path}.${Shortcuts.NodeName}`,\n value:\n this.isOnlyClickBinded() && !isHasExtractProp(this)\n ? clickViewAlias\n : this.isAnyEventBinded()\n ? viewAlias\n : isHasExtractProp(this)\n ? staticViewAlias\n : pureViewAlias,\n });\n } else if (isStaticView && !isHasExtractProp(this)) {\n // static-view => pure-view\n this.enqueueUpdate({\n path: `${_path}.${Shortcuts.NodeName}`,\n value: pureViewAlias,\n });\n }\n }\n }\n\n public getAttribute(qualifiedName: string): string {\n const attr = qualifiedName === STYLE ? this.style.cssText : this.props[qualifiedName];\n return attr ?? '';\n }\n\n public getElementsByTagName(tagName: string): TaroElement[] {\n return treeToArray(this, (el) => {\n return el.nodeName === tagName || (tagName === '*' && this !== el);\n });\n }\n\n public getElementsByClassName(className: string): TaroElement[] {\n const classNames = className.trim().split(/\\s+/);\n\n return treeToArray(this, (el) => {\n const classList = el.classList;\n return classNames.every((c) => classList.contains(c));\n });\n }\n\n public dispatchEvent(event: TaroEvent): boolean {\n const cancelable = event.cancelable;\n\n const listeners = this.__handlers[event.type];\n\n if (!isArray(listeners)) {\n return false;\n }\n\n for (let i = listeners.length; i--; ) {\n const listener = listeners[i];\n let result: unknown;\n if (listener._stop) {\n listener._stop = false;\n } else {\n hooks.call('modifyDispatchEvent', event, this);\n result = listener.call(this, event);\n }\n if ((result === false || event._end) && cancelable) {\n event.defaultPrevented = true;\n }\n\n if (!isUndefined(result) && event.mpEvent) {\n const res = hooks.call('modifyTaroEventReturn', this, event, result);\n if (res) {\n event.mpEvent[EVENT_CALLBACK_RESULT] = result;\n }\n }\n\n if (event._end && event._stop) {\n break;\n }\n }\n\n if (event._stop) {\n this._stopPropagation(event);\n }\n\n return listeners != null;\n }\n\n public addEventListener(type, handler, options) {\n const name = this.nodeName;\n const SPECIAL_NODES = hooks.call('getSpecialNodes')!;\n\n let sideEffect = true;\n if (isObject<Record<string, any>>(options) && options.sideEffect === false) {\n sideEffect = false;\n delete options.sideEffect;\n }\n\n hooks.call('modifyAddEventListener', this, sideEffect, getComponentsAlias);\n\n if (sideEffect !== false && !this.isAnyEventBinded() && SPECIAL_NODES.indexOf(name) > -1) {\n const componentsAlias = getComponentsAlias();\n const alias = componentsAlias[name]._num;\n this.enqueueUpdate({\n path: `${this._path}.${Shortcuts.NodeName}`,\n value: alias,\n });\n }\n\n super.addEventListener(type, handler, options);\n }\n\n public removeEventListener(type, handler, sideEffect = true) {\n super.removeEventListener(type, handler);\n\n const name = this.nodeName;\n const SPECIAL_NODES = hooks.call('getSpecialNodes')!;\n\n hooks.call('modifyRemoveEventListener', this, sideEffect, getComponentsAlias);\n\n if (sideEffect !== false && !this.isAnyEventBinded() && SPECIAL_NODES.indexOf(name) > -1) {\n const componentsAlias = getComponentsAlias();\n const value = isHasExtractProp(this) ? `static-${name}` : `pure-${name}`;\n const valueAlias = componentsAlias[value]._num;\n this.enqueueUpdate({\n path: `${this._path}.${Shortcuts.NodeName}`,\n value: valueAlias,\n });\n }\n }\n\n static extend(methodName: string, options: TFunc | Record<string, any>) {\n extend(TaroElement, methodName, options);\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"element.js","names":["getComponentsAlias"],"sources":["../../src/dom/element.ts"],"sourcesContent":["import {\n EMPTY_OBJ,\n hooks,\n isArray,\n isFunction,\n isObject,\n isString,\n isUndefined,\n Shortcuts,\n toCamelCase,\n warn,\n} from '@spcsn/taro-shared';\n\nimport {\n CATCH_VIEW,\n CATCHMOVE,\n CLASS,\n CLICK_VIEW,\n EVENT_CALLBACK_RESULT,\n FOCUS,\n ID,\n PROPERTY_THRESHOLD,\n PURE_VIEW,\n STATIC_VIEW,\n STYLE,\n VIEW,\n} from '../constants';\nimport { MutationObserver, MutationRecordType } from '../dom-external/mutation-observer';\nimport { extend, getComponentsAlias, isElement, isHasExtractProp, shortcutAttr } from '../utils';\nimport { ClassList } from './class-list';\nimport { eventSource } from './event-source';\nimport { TaroNode } from './node';\nimport { NodeType } from './node-types';\nimport { Style } from './style';\nimport { treeToArray } from './tree';\n\nimport type { Attributes, TFunc } from '../interface';\nimport type { TaroEvent } from './event';\n\nexport class TaroElement extends TaroNode {\n public ctx?;\n public tagName: string;\n public props: Record<string, any> = {};\n public style: Style;\n public dataset: Record<string, unknown> = EMPTY_OBJ;\n public innerHTML: string;\n\n public constructor() {\n super();\n this.nodeType = NodeType.ELEMENT_NODE;\n this.style = new Style(this);\n hooks.call('patchElement', this);\n }\n\n private _stopPropagation(event: TaroEvent) {\n let parentNode = this.parentNode as TaroElement | null;\n\n while (parentNode) {\n const listeners = parentNode.__handlers[event.type];\n\n if (isArray(listeners)) {\n for (let i = listeners.length; i--; ) {\n const listener = listeners[i];\n listener._stop = true;\n }\n }\n\n parentNode = parentNode.parentNode as TaroElement | null;\n }\n }\n\n public get id(): string {\n return this.getAttribute(ID)!;\n }\n\n public set id(val: string) {\n this.setAttribute(ID, val);\n }\n\n public get className(): string {\n return this.getAttribute(CLASS) || '';\n }\n\n public set className(val: string) {\n this.setAttribute(CLASS, val);\n }\n\n public get cssText(): string {\n return this.getAttribute(STYLE) || '';\n }\n\n public get classList(): ClassList {\n return new ClassList(this.className, this);\n }\n\n public get children(): TaroElement[] {\n return this.childNodes.filter(isElement);\n }\n\n public get attributes(): Attributes[] {\n const props = this.props;\n const propKeys = Object.keys(props);\n const style = this.style.cssText;\n const attrs = propKeys.map((key) => ({ name: key, value: props[key] }));\n return attrs.concat(style ? { name: STYLE, value: style } : []);\n }\n\n public get textContent(): string {\n let text = '';\n const childNodes = this.childNodes;\n\n for (let i = 0; i < childNodes.length; i++) {\n text += childNodes[i].textContent;\n }\n\n return text;\n }\n\n public set textContent(text: string) {\n super.textContent = text;\n }\n\n public hasAttribute(qualifiedName: string): boolean {\n return !isUndefined(this.props[qualifiedName]);\n }\n\n public hasAttributes(): boolean {\n return this.attributes.length > 0;\n }\n\n public get focus() {\n return function () {\n this.setAttribute(FOCUS, true);\n };\n }\n\n // 兼容 Vue3,详情请见:https://github.com/NervJS/taro/issues/10579\n public set focus(value) {\n this.setAttribute(FOCUS, value);\n }\n\n public blur() {\n this.setAttribute(FOCUS, false);\n }\n\n public setAttribute(qualifiedName: string, value: any): void {\n process.env.NODE_ENV !== 'production' &&\n warn(\n isString(value) && value.length > PROPERTY_THRESHOLD,\n `元素 ${this.nodeName} 的 ${qualifiedName} 属性值数据量过大,可能会影响渲染性能。考虑降低图片转为 base64 的阈值或在 CSS 中使用 base64。`,\n );\n\n const isPureView = this.nodeName === VIEW && !isHasExtractProp(this) && !this.isAnyEventBinded();\n\n if (qualifiedName !== STYLE) {\n MutationObserver.record({\n target: this,\n type: MutationRecordType.ATTRIBUTES,\n attributeName: qualifiedName,\n oldValue: this.getAttribute(qualifiedName),\n });\n }\n\n switch (qualifiedName) {\n case STYLE:\n this.style.cssText = value as string;\n break;\n case ID:\n if (this.uid !== this.sid) {\n // eventSource[sid] 永远保留,直到组件卸载\n // eventSource[uid] 可变\n eventSource.delete(this.uid);\n }\n value = String(value);\n this.props[qualifiedName] = this.uid = value;\n eventSource.set(value, this);\n break;\n default:\n this.props[qualifiedName] = value as string;\n\n if (qualifiedName.startsWith('data-')) {\n if (this.dataset === EMPTY_OBJ) {\n this.dataset = Object.create(null);\n }\n this.dataset[toCamelCase(qualifiedName.replace(/^data-/, ''))] = value;\n }\n break;\n }\n\n // Serialization\n if (!this._root) return;\n\n const componentsAlias = getComponentsAlias();\n const _alias = componentsAlias[this.nodeName];\n const viewAlias = componentsAlias[VIEW]._num;\n const clickViewAlias = componentsAlias[CLICK_VIEW]._num;\n const staticViewAlias = componentsAlias[STATIC_VIEW]._num;\n const catchViewAlias = componentsAlias[CATCH_VIEW]._num;\n const _path = this._path;\n\n qualifiedName = shortcutAttr(qualifiedName);\n\n const qualifiedNameInCamelCase = toCamelCase(qualifiedName);\n const payload = {\n path: `${_path}.${qualifiedNameInCamelCase}`,\n value: isFunction(value) ? () => value : value,\n };\n\n hooks.call('modifySetAttrPayload', this, qualifiedName, payload, componentsAlias);\n\n if (_alias) {\n const qualifiedNameAlias = _alias[qualifiedNameInCamelCase] || qualifiedName;\n payload.path = `${_path}.${toCamelCase(qualifiedNameAlias)}`;\n }\n\n this.enqueueUpdate(payload);\n\n if (this.nodeName === VIEW) {\n if (qualifiedNameInCamelCase === CATCHMOVE) {\n // catchMove = true: catch-view\n // catchMove = false: view or click-view or static-view\n this.enqueueUpdate({\n path: `${_path}.${Shortcuts.NodeName}`,\n value: value\n ? catchViewAlias\n : this.isOnlyClickBinded() && !isHasExtractProp(this)\n ? clickViewAlias\n : this.isAnyEventBinded()\n ? viewAlias\n : staticViewAlias,\n });\n } else if (isPureView && isHasExtractProp(this)) {\n // pure-view => static-view\n this.enqueueUpdate({\n path: `${_path}.${Shortcuts.NodeName}`,\n value: staticViewAlias,\n });\n }\n }\n }\n\n public removeAttribute(qualifiedName: string) {\n const isStaticView = this.nodeName === VIEW && isHasExtractProp(this) && !this.isAnyEventBinded();\n\n MutationObserver.record({\n target: this,\n type: MutationRecordType.ATTRIBUTES,\n attributeName: qualifiedName,\n oldValue: this.getAttribute(qualifiedName),\n });\n\n if (qualifiedName === STYLE) {\n this.style.cssText = '';\n } else {\n const isInterrupt = hooks.call('onRemoveAttribute', this, qualifiedName);\n if (isInterrupt) {\n return;\n }\n\n if (!this.props.hasOwnProperty(qualifiedName)) {\n return;\n }\n delete this.props[qualifiedName];\n }\n\n // Serialization\n if (!this._root) return;\n\n const componentsAlias = getComponentsAlias();\n const _alias = componentsAlias[this.nodeName];\n const viewAlias = componentsAlias[VIEW]._num;\n const staticViewAlias = componentsAlias[STATIC_VIEW]._num;\n const pureViewAlias = componentsAlias[PURE_VIEW]._num;\n const clickViewAlias = componentsAlias[CLICK_VIEW]._num;\n const _path = this._path;\n\n qualifiedName = shortcutAttr(qualifiedName);\n\n const qualifiedNameInCamelCase = toCamelCase(qualifiedName);\n const payload = {\n path: `${_path}.${qualifiedNameInCamelCase}`,\n value: '',\n };\n\n hooks.call('modifyRmAttrPayload', this, qualifiedName, payload, componentsAlias);\n\n if (_alias) {\n const qualifiedNameAlias = _alias[qualifiedNameInCamelCase] || qualifiedName;\n payload.path = `${_path}.${toCamelCase(qualifiedNameAlias)}`;\n }\n\n this.enqueueUpdate(payload);\n\n if (this.nodeName === VIEW) {\n if (qualifiedNameInCamelCase === CATCHMOVE) {\n // catch-view => view or click-view or static-view or pure-view\n this.enqueueUpdate({\n path: `${_path}.${Shortcuts.NodeName}`,\n value:\n this.isOnlyClickBinded() && !isHasExtractProp(this)\n ? clickViewAlias\n : this.isAnyEventBinded()\n ? viewAlias\n : isHasExtractProp(this)\n ? staticViewAlias\n : pureViewAlias,\n });\n } else if (isStaticView && !isHasExtractProp(this)) {\n // static-view => pure-view\n this.enqueueUpdate({\n path: `${_path}.${Shortcuts.NodeName}`,\n value: pureViewAlias,\n });\n }\n }\n }\n\n public getAttribute(qualifiedName: string): string {\n const attr = qualifiedName === STYLE ? this.style.cssText : this.props[qualifiedName];\n return attr ?? '';\n }\n\n public getElementsByTagName(tagName: string): TaroElement[] {\n return treeToArray(this, (el) => {\n return el.nodeName === tagName || (tagName === '*' && this !== el);\n });\n }\n\n public getElementsByClassName(className: string): TaroElement[] {\n const classNames = className.trim().split(/\\s+/);\n\n return treeToArray(this, (el) => {\n const classList = el.classList;\n return classNames.every((c) => classList.contains(c));\n });\n }\n\n public dispatchEvent(event: TaroEvent): boolean {\n const cancelable = event.cancelable;\n\n const listeners = this.__handlers[event.type];\n\n if (!isArray(listeners)) {\n return false;\n }\n\n for (let i = listeners.length; i--; ) {\n const listener = listeners[i];\n let result: unknown;\n if (listener._stop) {\n listener._stop = false;\n } else {\n hooks.call('modifyDispatchEvent', event, this);\n result = listener.call(this, event);\n }\n if ((result === false || event._end) && cancelable) {\n event.defaultPrevented = true;\n }\n\n if (!isUndefined(result) && event.mpEvent) {\n const res = hooks.call('modifyTaroEventReturn', this, event, result);\n if (res) {\n event.mpEvent[EVENT_CALLBACK_RESULT] = result;\n }\n }\n\n if (event._end && event._stop) {\n break;\n }\n }\n\n if (event._stop) {\n this._stopPropagation(event);\n }\n\n return listeners != null;\n }\n\n public addEventListener(type, handler, options) {\n const name = this.nodeName;\n const SPECIAL_NODES = hooks.call('getSpecialNodes')!;\n\n let sideEffect = true;\n if (isObject<Record<string, any>>(options) && options.sideEffect === false) {\n sideEffect = false;\n delete options.sideEffect;\n }\n\n hooks.call('modifyAddEventListener', this, sideEffect, getComponentsAlias);\n\n if (sideEffect !== false && !this.isAnyEventBinded() && SPECIAL_NODES.indexOf(name) > -1) {\n const componentsAlias = getComponentsAlias();\n const alias = componentsAlias[name]._num;\n this.enqueueUpdate({\n path: `${this._path}.${Shortcuts.NodeName}`,\n value: alias,\n });\n }\n\n super.addEventListener(type, handler, options);\n }\n\n public removeEventListener(type, handler, sideEffect = true) {\n super.removeEventListener(type, handler);\n\n const name = this.nodeName;\n const SPECIAL_NODES = hooks.call('getSpecialNodes')!;\n\n hooks.call('modifyRemoveEventListener', this, sideEffect, getComponentsAlias);\n\n if (sideEffect !== false && !this.isAnyEventBinded() && SPECIAL_NODES.indexOf(name) > -1) {\n const componentsAlias = getComponentsAlias();\n const value = isHasExtractProp(this) ? `static-${name}` : `pure-${name}`;\n const valueAlias = componentsAlias[value]._num;\n this.enqueueUpdate({\n path: `${this._path}.${Shortcuts.NodeName}`,\n value: valueAlias,\n });\n }\n }\n\n static extend(methodName: string, options: TFunc | Record<string, any>) {\n extend(TaroElement, methodName, options);\n }\n}\n"],"mappings":"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"}
|
package/dist/dom/event.d.ts
CHANGED
|
@@ -10,6 +10,7 @@ export declare class TaroEvent {
|
|
|
10
10
|
_end: boolean;
|
|
11
11
|
defaultPrevented: boolean;
|
|
12
12
|
button: number;
|
|
13
|
+
keyCode?: number;
|
|
13
14
|
timeStamp: number;
|
|
14
15
|
mpEvent: MpEvent | undefined;
|
|
15
16
|
constructor(type: string, opts: EventOptions, event?: MpEvent);
|
|
@@ -21,4 +22,3 @@ export declare class TaroEvent {
|
|
|
21
22
|
}
|
|
22
23
|
export declare function createEvent(event: MpEvent | string, node?: TaroElement): TaroEvent;
|
|
23
24
|
export declare function eventHandler(event: MpEvent): any;
|
|
24
|
-
export declare function eventHandlerTTDom(ele: any, listener: (event: MpEvent, element: any) => void, event: MpEvent): void;
|
package/dist/dom/event.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { EVENT_CALLBACK_RESULT
|
|
1
|
+
import { EVENT_CALLBACK_RESULT } from "../constants/index.js";
|
|
2
2
|
import { _objectSpread2 } from "../_virtual/_@oxc-project_runtime@0.130.0/helpers/objectSpread2.js";
|
|
3
3
|
import env from "../env.js";
|
|
4
4
|
import { isParentBound } from "../utils/index.js";
|
|
@@ -68,7 +68,7 @@ function createEvent(event, node) {
|
|
|
68
68
|
}, event);
|
|
69
69
|
for (const key in event) if (key === "currentTarget" || key === "target" || key === "type" || key === "timeStamp") continue;
|
|
70
70
|
else domEv[key] = event[key];
|
|
71
|
-
if (domEv.type === "confirm" && (node === null || node === void 0 ? void 0 : node.nodeName) === "input") domEv
|
|
71
|
+
if (domEv.type === "confirm" && (node === null || node === void 0 ? void 0 : node.nodeName) === "input") domEv.keyCode = 13;
|
|
72
72
|
return domEv;
|
|
73
73
|
}
|
|
74
74
|
const eventsBatch = {};
|
|
@@ -79,8 +79,6 @@ function getEventCBResult(event) {
|
|
|
79
79
|
}
|
|
80
80
|
function eventHandler(event) {
|
|
81
81
|
var _currentTarget$datase2, _event$detail;
|
|
82
|
-
event.type === void 0 && Object.defineProperty(event, "type", { value: event._type });
|
|
83
|
-
event.detail === void 0 && Object.defineProperty(event, "detail", { value: event._detail || _objectSpread2({}, event) });
|
|
84
82
|
event.currentTarget = event.currentTarget || event.target || _objectSpread2({}, event);
|
|
85
83
|
hooks.call("modifyMpEventImpl", event);
|
|
86
84
|
const currentTarget = event.currentTarget;
|
|
@@ -111,15 +109,7 @@ function eventHandler(event) {
|
|
|
111
109
|
}
|
|
112
110
|
}
|
|
113
111
|
}
|
|
114
|
-
function eventHandlerTTDom(ele, listener, event) {
|
|
115
|
-
Object.assign(event, {
|
|
116
|
-
mpEvent: event,
|
|
117
|
-
bubbles: true,
|
|
118
|
-
cancelable: true
|
|
119
|
-
});
|
|
120
|
-
listener(event, ele);
|
|
121
|
-
}
|
|
122
112
|
//#endregion
|
|
123
|
-
export { TaroEvent, createEvent, eventHandler
|
|
113
|
+
export { TaroEvent, createEvent, eventHandler };
|
|
124
114
|
|
|
125
115
|
//# sourceMappingURL=event.js.map
|
package/dist/dom/event.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event.js","names":[],"sources":["../../src/dom/event.ts"],"sourcesContent":["import { EMPTY_OBJ, hooks, isUndefined } from '@spcsn/taro-shared';\n\nimport {\n CONFIRM,\n CURRENT_TARGET,\n EVENT_CALLBACK_RESULT,\n INPUT,\n
|
|
1
|
+
{"version":3,"file":"event.js","names":[],"sources":["../../src/dom/event.ts"],"sourcesContent":["import { EMPTY_OBJ, hooks, isUndefined } from '@spcsn/taro-shared';\n\nimport {\n CONFIRM,\n CURRENT_TARGET,\n EVENT_CALLBACK_RESULT,\n INPUT,\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 public keyCode?: number;\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(\n target.targetDataset?.sid || target.dataset?.sid || target.id || null,\n );\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(\n (this.mpEvent?.target?.dataset?.sid as string) || (this.mpEvent?.target?.id as string) || null,\n );\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 domEv.keyCode = 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 event.currentTarget = event.currentTarget || event.target || { ...event };\n hooks.call('modifyMpEventImpl', event);\n\n const currentTarget = event.currentTarget;\n const id =\n (currentTarget.dataset?.sid as string) /** sid */ ||\n currentTarget.id /** uid */ ||\n (event.detail?.id as string) ||\n '';\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"],"mappings":";;;;;;AAmBA,IAAa,YAAb,MAAuB;CA2BrB,YAAmB,MAAc,MAAoB,OAAiB;EAjBtE,KAAO,QAAQ;EAEf,KAAO,OAAO;EAEd,KAAO,mBAAmB;EAG1B,KAAO,SAAS;EAMhB,KAAO,YAAY,KAAK,IAAI;EAK1B,KAAK,OAAO,KAAK,YAAY;EAC7B,KAAK,UAAU;EACf,KAAK,UAAU,QAAQ,QAAQ,KAAK,OAAO;EAC3C,KAAK,aAAa,QAAQ,QAAQ,KAAK,UAAU;CACnD;CAEA,kBAAyB;EACvB,KAAK,QAAQ;CACf;CAEA,2BAAkC;EAChC,KAAK,OAAO,KAAK,QAAQ;CAC3B;CAEA,iBAAwB;EACtB,KAAK,mBAAmB;CAC1B;CAEA,IAAI,SAAS;EACX,MAAM,cAAc,KAAK;EACzB,IAAI,CAAC,aAAa;;GAChB,MAAM,SAAS,OAAO,SAAA,gBAAO,KAAK,aAAA,QAAA,kBAAA,KAAA,IAAA,KAAA,IAAA,cAAS,WAAU,IAAI;GACzD,MAAM,aAAa,IAAI,SAAS,iBAAA,kBAAe,OAAO,aAAA,QAAA,oBAAA,KAAA,IAAA,KAAA,IAAA,gBAAS,QAAO,OAAO,MAAM,IAAI;GAEvF,MAAM,UAAU,IAAI,SAAS,iBAAA,wBAC3B,OAAO,mBAAA,QAAA,0BAAA,KAAA,IAAA,KAAA,IAAA,sBAAe,UAAA,mBAAO,OAAO,aAAA,QAAA,qBAAA,KAAA,IAAA,KAAA,IAAA,iBAAS,QAAO,OAAO,MAAM,IACnE;GAEA,OAAO,UAAA,eAAA,eAAA,CAAA,GACD,eAAe,OAAO,WAAW,UAAU,SAAA,GAC3C,YAAY,OAAO,QAAQ,UAAU,SAC3C;GAEA,KAAK,MAAM,QAAA,iBAAO,KAAK,aAAA,QAAA,mBAAA,KAAA,IAAA,KAAA,IAAA,eAAS,QAC9B,OAAO,OAAO,KAAK,QAAS,OAAO;GAGrC,KAAK,cAAc;GAEnB,OAAO;EACT,OACE,OAAO;CAEX;CAEA,IAAI,gBAAgB;EAClB,MAAM,qBAAqB,KAAK;EAChC,IAAI,CAAC,oBAAoB;;GACvB,MAAM,MAAM,IAAI;GAEhB,MAAM,gBAAgB,OAAO,SAAA,iBAAO,KAAK,aAAA,QAAA,mBAAA,KAAA,IAAA,KAAA,IAAA,eAAS,kBAAiB,IAAI;GAEvE,MAAM,UAAU,IAAI,iBAAA,wBAAe,cAAc,aAAA,QAAA,0BAAA,KAAA,IAAA,KAAA,IAAA,sBAAS,QAAO,cAAc,MAAM,IAAI;GACzF,MAAM,gBAAgB,IAAI,iBAAA,iBACvB,KAAK,aAAA,QAAA,mBAAA,KAAA,MAAA,iBAAA,eAAS,YAAA,QAAA,mBAAA,KAAA,MAAA,iBAAA,eAAQ,aAAA,QAAA,mBAAA,KAAA,IAAA,KAAA,IAAA,eAAS,UAAA,iBAAmB,KAAK,aAAA,QAAA,mBAAA,KAAA,MAAA,iBAAA,eAAS,YAAA,QAAA,mBAAA,KAAA,IAAA,KAAA,IAAA,eAAQ,OAAiB,IAC5F;GAEA,IAAI,YAAY,QAAS,WAAW,YAAY,eAAgB;IAC9D,KAAK,qBAAqB,KAAK;IAC/B,OAAO,KAAK;GACd;GAEA,cAAc,UAAU,QAAQ;GAEhC,KAAK,MAAM,QAAA,iBAAO,KAAK,aAAA,QAAA,mBAAA,KAAA,IAAA,KAAA,IAAA,eAAS,QAC9B,cAAc,OAAO,KAAK,QAAS,OAAO;GAG5C,KAAK,qBAAqB;GAE1B,OAAO;EACT,OACE,OAAO;CAEX;AACF;AAEA,SAAgB,YAAY,OAAyB,MAAoB;CACvE,IAAI,OAAO,UAAU,UAEnB,OAAO,IAAI,UAAU,OAAO;EAAE,SAAS;EAAM,YAAY;CAAK,CAAC;CAGjE,MAAM,QAAQ,IAAI,UAAU,MAAM,MAAM;EAAE,SAAS;EAAM,YAAY;CAAK,GAAG,KAAK;CAElF,KAAK,MAAM,OAAO,OAChB,IAAI,QAAA,mBAA0B,QAAA,YAAkB,QAAA,UAAgB,QAAA,aAC9D;MAEA,MAAM,OAAO,MAAM;CAIvB,IAAI,MAAM,SAAA,cAAA,SAAA,QAAA,SAAA,KAAA,IAAA,KAAA,IAAoB,KAAM,cAAA,SAClC,MAAM,UAAU;CAGlB,OAAO;AACT;AAEA,MAAM,cAAc,CAAC;AAErB,SAAS,iBAAiB,OAAgB;CACxC,MAAM,SAAS,MAAM;CACrB,IAAI,CAAC,YAAY,MAAM,GACrB,OAAO,MAAM;CAEf,OAAO;AACT;AAGA,SAAgB,aAAa,OAAgB;;CAC3C,MAAM,gBAAgB,MAAM,iBAAiB,MAAM,UAAA,eAAA,CAAA,GAAe,KAAM;CACxE,MAAM,KAAK,qBAAqB,KAAK;CAErC,MAAM,gBAAgB,MAAM;CAC5B,MAAM,OAAA,yBACH,cAAc,aAAA,QAAA,2BAAA,KAAA,IAAA,KAAA,IAAA,uBAAS,QACxB,cAAc,QAAA,gBACb,MAAM,YAAA,QAAA,kBAAA,KAAA,IAAA,KAAA,IAAA,cAAQ,OACf;CAEF,MAAM,OAAO,IAAI,SAAS,eAAe,EAAE;CAC3C,IAAI,MAAM;EACR,MAAM,iBAAiB;GACrB,MAAM,IAAI,YAAY,OAAO,IAAI;GAEjC,MAAM,KAAK,mBAAmB,GAAG,IAAI;GACrC,MAAM,KAAK,qBAAqB,GAAG,IAAI;GACvC,MAAM,KAAK,2BAA2B,GAAG,IAAI;EAC/C;EACA,IAAI,MAAM,QAAQ,qBAAqB,GAAG;GACxC,MAAM,OAAO,MAAM;GAEnB,IACE,CAAC,MAAM,KAAK,kBAAkB,IAAI,KAClC,CAAC,cAAc,MAAM,IAAI,KACxB,SAAA,eAAsB,CAAC,CAAC,KAAK,MAAM,WACpC;IAEA,MAAM,KAAK,6BAA6B;KACtC,IAAI,YAAY,OAAO;MACrB,YAAY,MAAM,SAAS,OAAO,GAAG,CAAC;MACtC,OAAO,YAAY;KACrB;KACA,SAAS;IACX,CAAC;IACD,OAAO,iBAAiB,KAAK;GAC/B,OAEE,CAAC,YAAY,UAAZ,YAAY,QAAU,CAAC,IAAG,KAAK,QAAQ;EAE5C,OAAO;GACL,SAAS;GACT,OAAO,iBAAiB,KAAK;EAC/B;CACF;AACF"}
|