@tarojs/runtime 4.0.0-canary.8 → 4.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.
Files changed (177) hide show
  1. package/LICENSE +17 -3
  2. package/dist/bom/URL.d.ts +54 -0
  3. package/dist/bom/URL.js +221 -0
  4. package/dist/bom/URL.js.map +1 -0
  5. package/dist/bom/URLSearchParams.d.ts +2 -0
  6. package/dist/bom/URLSearchParams.js +131 -0
  7. package/dist/bom/URLSearchParams.js.map +1 -0
  8. package/dist/bom/document.d.ts +3 -0
  9. package/dist/bom/document.js +39 -0
  10. package/dist/bom/document.js.map +1 -0
  11. package/dist/bom/getComputedStyle.d.ts +5 -0
  12. package/dist/bom/getComputedStyle.js +8 -0
  13. package/dist/bom/getComputedStyle.js.map +1 -0
  14. package/dist/bom/history.d.ts +32 -0
  15. package/dist/bom/history.js +121 -0
  16. package/dist/bom/history.js.map +1 -0
  17. package/dist/bom/location.d.ts +39 -0
  18. package/dist/bom/location.js +240 -0
  19. package/dist/bom/location.js.map +1 -0
  20. package/dist/bom/navigator.d.ts +2 -0
  21. package/dist/bom/navigator.js +24 -0
  22. package/dist/bom/navigator.js.map +1 -0
  23. package/dist/bom/raf.d.ts +5 -0
  24. package/dist/bom/raf.js +33 -0
  25. package/dist/bom/raf.js.map +1 -0
  26. package/dist/bom/window.d.ts +26 -0
  27. package/dist/bom/window.js +92 -0
  28. package/dist/bom/window.js.map +1 -0
  29. package/dist/constants/index.d.ts +60 -0
  30. package/dist/constants/index.js +63 -0
  31. package/dist/constants/index.js.map +1 -0
  32. package/dist/current.d.ts +19 -0
  33. package/dist/current.js +9 -0
  34. package/dist/current.js.map +1 -0
  35. package/dist/dom/anchor-element.d.ts +14 -0
  36. package/dist/dom/anchor-element.js +54 -0
  37. package/dist/dom/anchor-element.js.map +1 -0
  38. package/dist/dom/class-list.d.ts +17 -0
  39. package/dist/dom/class-list.js +92 -0
  40. package/dist/dom/class-list.js.map +1 -0
  41. package/dist/dom/document.d.ts +25 -0
  42. package/dist/dom/document.js +80 -0
  43. package/dist/dom/document.js.map +1 -0
  44. package/dist/dom/element.d.ts +40 -0
  45. package/dist/dom/element.js +315 -0
  46. package/dist/dom/element.js.map +1 -0
  47. package/dist/dom/event-source.d.ts +7 -0
  48. package/dist/dom/event-source.js +17 -0
  49. package/dist/dom/event-source.js.map +1 -0
  50. package/dist/dom/event-target.d.ts +8 -0
  51. package/dist/dom/event-target.js +78 -0
  52. package/dist/dom/event-target.js.map +1 -0
  53. package/dist/dom/event.d.ts +24 -0
  54. package/dist/dom/event.js +152 -0
  55. package/dist/dom/event.js.map +1 -0
  56. package/dist/dom/form.d.ts +10 -0
  57. package/dist/dom/form.js +38 -0
  58. package/dist/dom/form.js.map +1 -0
  59. package/dist/dom/node.d.ts +107 -0
  60. package/dist/dom/node.js +292 -0
  61. package/dist/dom/node.js.map +1 -0
  62. package/dist/dom/root.d.ts +16 -0
  63. package/dist/dom/root.js +169 -0
  64. package/dist/dom/root.js.map +1 -0
  65. package/dist/dom/style.d.ts +15 -0
  66. package/dist/dom/style.js +168 -0
  67. package/dist/dom/style.js.map +1 -0
  68. package/dist/dom/style_properties.d.ts +3 -0
  69. package/dist/dom/style_properties.js +186 -0
  70. package/dist/dom/style_properties.js.map +1 -0
  71. package/dist/dom/svg.d.ts +4 -0
  72. package/dist/dom/svg.js +8 -0
  73. package/dist/dom/svg.js.map +1 -0
  74. package/dist/dom/text.d.ts +15 -0
  75. package/dist/dom/text.js +41 -0
  76. package/dist/dom/text.js.map +1 -0
  77. package/dist/dom/transfer.d.ts +8 -0
  78. package/dist/dom/transfer.js +15 -0
  79. package/dist/dom/transfer.js.map +1 -0
  80. package/dist/dom/tree.d.ts +4 -0
  81. package/dist/dom/tree.js +38 -0
  82. package/dist/dom/tree.js.map +1 -0
  83. package/dist/dom-external/element.d.ts +4 -0
  84. package/dist/dom-external/element.js +29 -0
  85. package/dist/dom-external/element.js.map +1 -0
  86. package/dist/dom-external/index.d.ts +1 -0
  87. package/dist/dom-external/index.js +38 -0
  88. package/dist/dom-external/index.js.map +1 -0
  89. package/dist/dom-external/inner-html/html.d.ts +3 -0
  90. package/dist/dom-external/inner-html/html.js +28 -0
  91. package/dist/dom-external/inner-html/html.js.map +1 -0
  92. package/dist/dom-external/inner-html/parser.d.ts +25 -0
  93. package/dist/dom-external/inner-html/parser.js +216 -0
  94. package/dist/dom-external/inner-html/parser.js.map +1 -0
  95. package/dist/dom-external/inner-html/scaner.d.ts +30 -0
  96. package/dist/dom-external/inner-html/scaner.js +304 -0
  97. package/dist/dom-external/inner-html/scaner.js.map +1 -0
  98. package/dist/dom-external/inner-html/style.d.ts +27 -0
  99. package/dist/dom-external/inner-html/style.js +235 -0
  100. package/dist/dom-external/inner-html/style.js.map +1 -0
  101. package/dist/dom-external/inner-html/tags.d.ts +9 -0
  102. package/dist/dom-external/inner-html/tags.js +26 -0
  103. package/dist/dom-external/inner-html/tags.js.map +1 -0
  104. package/dist/dom-external/inner-html/utils.d.ts +2 -0
  105. package/dist/dom-external/inner-html/utils.js +12 -0
  106. package/dist/dom-external/inner-html/utils.js.map +1 -0
  107. package/dist/dom-external/mutation-observer/implements.d.ts +71 -0
  108. package/dist/dom-external/mutation-observer/implements.js +108 -0
  109. package/dist/dom-external/mutation-observer/implements.js.map +1 -0
  110. package/dist/dom-external/mutation-observer/index.d.ts +12 -0
  111. package/dist/dom-external/mutation-observer/index.js +35 -0
  112. package/dist/dom-external/mutation-observer/index.js.map +1 -0
  113. package/dist/dom-external/node.d.ts +12 -0
  114. package/dist/dom-external/node.js +75 -0
  115. package/dist/dom-external/node.js.map +1 -0
  116. package/dist/dsl/common.d.ts +16 -0
  117. package/dist/dsl/common.js +337 -0
  118. package/dist/dsl/common.js.map +1 -0
  119. package/dist/emitter/emitter.d.ts +4 -0
  120. package/dist/emitter/emitter.js +7 -0
  121. package/dist/emitter/emitter.js.map +1 -0
  122. package/dist/env.d.ts +7 -0
  123. package/dist/env.js +9 -0
  124. package/dist/env.js.map +1 -0
  125. package/dist/hydrate.d.ts +11 -0
  126. package/dist/hydrate.js +91 -0
  127. package/dist/hydrate.js.map +1 -0
  128. package/dist/index-26658829.d.ts +23 -0
  129. package/dist/{runtime.cjs.d.ts → index.cjs.d.ts} +108 -102
  130. package/dist/{runtime.h5.js → index.cjs.js} +4301 -2495
  131. package/dist/index.cjs.js.map +1 -0
  132. package/dist/index.d.ts +34 -0
  133. package/dist/index.js +35 -0
  134. package/dist/index.js.map +1 -0
  135. package/dist/instance-4c64b022.d.ts +85 -0
  136. package/dist/next-tick.d.ts +3 -0
  137. package/dist/next-tick.js +47 -0
  138. package/dist/next-tick.js.map +1 -0
  139. package/dist/node_types-9ac5b4dd.d.ts +11 -0
  140. package/dist/options-4c64b022.d.ts +17 -0
  141. package/dist/options.d.ts +3 -0
  142. package/dist/options.js +7 -0
  143. package/dist/options.js.map +1 -0
  144. package/dist/perf.d.ts +9 -0
  145. package/dist/perf.js +49 -0
  146. package/dist/perf.js.map +1 -0
  147. package/dist/polyfill/array.d.ts +3 -0
  148. package/dist/polyfill/array.js +56 -0
  149. package/dist/polyfill/array.js.map +1 -0
  150. package/dist/polyfill/index.d.ts +2 -0
  151. package/dist/polyfill/index.js +34 -0
  152. package/dist/polyfill/index.js.map +1 -0
  153. package/dist/polyfill/intersection-observer.d.ts +2 -0
  154. package/dist/polyfill/intersection-observer.js +600 -0
  155. package/dist/polyfill/intersection-observer.js.map +1 -0
  156. package/dist/polyfill/object.d.ts +4 -0
  157. package/dist/polyfill/object.js +102 -0
  158. package/dist/polyfill/object.js.map +1 -0
  159. package/dist/record-32b054d8.d.ts +25 -0
  160. package/dist/runtime.esm.d.ts +108 -102
  161. package/dist/runtime.esm.js +4126 -3320
  162. package/dist/runtime.esm.js.map +1 -1
  163. package/dist/utils/cache.d.ts +13 -0
  164. package/dist/utils/cache.js +27 -0
  165. package/dist/utils/cache.js.map +1 -0
  166. package/dist/utils/index.d.ts +26 -0
  167. package/dist/utils/index.js +99 -0
  168. package/dist/utils/index.js.map +1 -0
  169. package/dist/utils/lodash.d.ts +3 -0
  170. package/dist/utils/lodash.js +32 -0
  171. package/dist/utils/lodash.js.map +1 -0
  172. package/dist/utils/router.d.ts +8 -0
  173. package/dist/utils/router.js +24 -0
  174. package/dist/utils/router.js.map +1 -0
  175. package/package.json +23 -26
  176. package/dist/runtime.cjs.js +0 -4628
  177. package/dist/runtime.h5.d.ts +0 -800
@@ -0,0 +1,121 @@
1
+ import { __classPrivateFieldSet, __classPrivateFieldGet } from 'tslib';
2
+ import { Events, isNumber, isString } from '@tarojs/shared';
3
+ import { CONTEXT_ACTIONS } from '../constants/index.js';
4
+ import '../emitter/emitter.js';
5
+ import env from '../env.js';
6
+ import { RuntimeCache } from '../utils/cache.js';
7
+
8
+ var _TaroHistory_instances, _TaroHistory_location, _TaroHistory_stack, _TaroHistory_cur, _TaroHistory_window, _TaroHistory_reset;
9
+ const cache = new RuntimeCache('history');
10
+ class TaroHistory extends Events {
11
+ constructor(location, options) {
12
+ super();
13
+ _TaroHistory_instances.add(this);
14
+ /* private property */
15
+ _TaroHistory_location.set(this, void 0);
16
+ _TaroHistory_stack.set(this, []);
17
+ _TaroHistory_cur.set(this, 0);
18
+ _TaroHistory_window.set(this, void 0);
19
+ __classPrivateFieldSet(this, _TaroHistory_window, options.window, "f");
20
+ __classPrivateFieldSet(this, _TaroHistory_location, location, "f");
21
+ __classPrivateFieldGet(this, _TaroHistory_location, "f").on('__record_history__', (href) => {
22
+ var _a;
23
+ __classPrivateFieldSet(this, _TaroHistory_cur, (_a = __classPrivateFieldGet(this, _TaroHistory_cur, "f"), _a++, _a), "f");
24
+ __classPrivateFieldSet(this, _TaroHistory_stack, __classPrivateFieldGet(this, _TaroHistory_stack, "f").slice(0, __classPrivateFieldGet(this, _TaroHistory_cur, "f")), "f");
25
+ __classPrivateFieldGet(this, _TaroHistory_stack, "f").push({
26
+ state: null,
27
+ title: '',
28
+ url: href
29
+ });
30
+ }, null);
31
+ __classPrivateFieldGet(this, _TaroHistory_location, "f").on('__reset_history__', (href) => {
32
+ __classPrivateFieldGet(this, _TaroHistory_instances, "m", _TaroHistory_reset).call(this, href);
33
+ }, null);
34
+ // 切换上下文行为
35
+ this.on(CONTEXT_ACTIONS.INIT, () => {
36
+ __classPrivateFieldGet(this, _TaroHistory_instances, "m", _TaroHistory_reset).call(this);
37
+ }, null);
38
+ this.on(CONTEXT_ACTIONS.RESTORE, (pageId) => {
39
+ cache.set(pageId, {
40
+ location: __classPrivateFieldGet(this, _TaroHistory_location, "f"),
41
+ stack: __classPrivateFieldGet(this, _TaroHistory_stack, "f").slice(),
42
+ cur: __classPrivateFieldGet(this, _TaroHistory_cur, "f")
43
+ });
44
+ }, null);
45
+ this.on(CONTEXT_ACTIONS.RECOVER, (pageId) => {
46
+ if (cache.has(pageId)) {
47
+ const ctx = cache.get(pageId);
48
+ __classPrivateFieldSet(this, _TaroHistory_location, ctx.location, "f");
49
+ __classPrivateFieldSet(this, _TaroHistory_stack, ctx.stack, "f");
50
+ __classPrivateFieldSet(this, _TaroHistory_cur, ctx.cur, "f");
51
+ }
52
+ }, null);
53
+ this.on(CONTEXT_ACTIONS.DESTORY, (pageId) => {
54
+ cache.delete(pageId);
55
+ }, null);
56
+ __classPrivateFieldGet(this, _TaroHistory_instances, "m", _TaroHistory_reset).call(this);
57
+ }
58
+ /* public property */
59
+ get length() {
60
+ return __classPrivateFieldGet(this, _TaroHistory_stack, "f").length;
61
+ }
62
+ get state() {
63
+ return __classPrivateFieldGet(this, _TaroHistory_stack, "f")[__classPrivateFieldGet(this, _TaroHistory_cur, "f")].state;
64
+ }
65
+ /* public method */
66
+ go(delta) {
67
+ if (!isNumber(delta) || isNaN(delta))
68
+ return;
69
+ let targetIdx = __classPrivateFieldGet(this, _TaroHistory_cur, "f") + delta;
70
+ targetIdx = Math.min(Math.max(targetIdx, 0), this.length - 1);
71
+ __classPrivateFieldSet(this, _TaroHistory_cur, targetIdx, "f");
72
+ __classPrivateFieldGet(this, _TaroHistory_location, "f").trigger('__set_href_without_history__', __classPrivateFieldGet(this, _TaroHistory_stack, "f")[__classPrivateFieldGet(this, _TaroHistory_cur, "f")].url);
73
+ __classPrivateFieldGet(this, _TaroHistory_window, "f").trigger('popstate', __classPrivateFieldGet(this, _TaroHistory_stack, "f")[__classPrivateFieldGet(this, _TaroHistory_cur, "f")]);
74
+ }
75
+ back() {
76
+ this.go(-1);
77
+ }
78
+ forward() {
79
+ this.go(1);
80
+ }
81
+ pushState(state, title, url) {
82
+ if (!url || !isString(url))
83
+ return;
84
+ __classPrivateFieldSet(this, _TaroHistory_stack, __classPrivateFieldGet(this, _TaroHistory_stack, "f").slice(0, __classPrivateFieldGet(this, _TaroHistory_cur, "f") + 1), "f");
85
+ __classPrivateFieldGet(this, _TaroHistory_stack, "f").push({
86
+ state,
87
+ title,
88
+ url
89
+ });
90
+ __classPrivateFieldSet(this, _TaroHistory_cur, this.length - 1, "f");
91
+ __classPrivateFieldGet(this, _TaroHistory_location, "f").trigger('__set_href_without_history__', url);
92
+ }
93
+ replaceState(state, title, url) {
94
+ if (!url || !isString(url))
95
+ return;
96
+ __classPrivateFieldGet(this, _TaroHistory_stack, "f")[__classPrivateFieldGet(this, _TaroHistory_cur, "f")] = {
97
+ state,
98
+ title,
99
+ url
100
+ };
101
+ __classPrivateFieldGet(this, _TaroHistory_location, "f").trigger('__set_href_without_history__', url);
102
+ }
103
+ // For debug
104
+ get cache() {
105
+ return cache;
106
+ }
107
+ }
108
+ _TaroHistory_location = new WeakMap(), _TaroHistory_stack = new WeakMap(), _TaroHistory_cur = new WeakMap(), _TaroHistory_window = new WeakMap(), _TaroHistory_instances = new WeakSet(), _TaroHistory_reset = function _TaroHistory_reset(href = '') {
109
+ __classPrivateFieldSet(this, _TaroHistory_stack, [
110
+ {
111
+ state: null,
112
+ title: '',
113
+ url: href || __classPrivateFieldGet(this, _TaroHistory_location, "f").href
114
+ }
115
+ ], "f");
116
+ __classPrivateFieldSet(this, _TaroHistory_cur, 0, "f");
117
+ };
118
+ const History = process.env.TARO_PLATFORM === 'web' ? env.window.History : TaroHistory;
119
+
120
+ export { History };
121
+ //# sourceMappingURL=history.js.map
@@ -0,0 +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.DESTORY, (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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"}
@@ -0,0 +1,39 @@
1
+ import { Events } from "../emitter/emitter.js";
2
+ import { RuntimeCache } from "../utils/cache.js";
3
+ type Options = {
4
+ window: any;
5
+ };
6
+ type LocationContext = {
7
+ lastHref: string;
8
+ };
9
+ declare class TaroLocation extends Events {
10
+ #private;
11
+ constructor(options: Options);
12
+ get protocol(): string;
13
+ set protocol(val: string);
14
+ get host(): string;
15
+ set host(val: string);
16
+ get hostname(): string;
17
+ set hostname(val: string);
18
+ get port(): string;
19
+ set port(val: string);
20
+ get pathname(): string;
21
+ set pathname(val: string);
22
+ get search(): string;
23
+ set search(val: string);
24
+ get hash(): string;
25
+ set hash(val: string);
26
+ get href(): string;
27
+ set href(val: string);
28
+ get origin(): string;
29
+ set origin(val: string);
30
+ /* public method */
31
+ assign(): void;
32
+ reload(): void;
33
+ replace(url: string): void;
34
+ toString(): string;
35
+ get cache(): RuntimeCache<LocationContext>;
36
+ }
37
+ declare const Location: typeof TaroLocation;
38
+ export type { TaroLocation };
39
+ export { Location };
@@ -0,0 +1,240 @@
1
+ import { __classPrivateFieldSet, __classPrivateFieldGet } from 'tslib';
2
+ import { Events, isString, isNumber, warn } from '@tarojs/shared';
3
+ import { CONTEXT_ACTIONS } from '../constants/index.js';
4
+ import { getCurrentInstance } from '../current.js';
5
+ import '../emitter/emitter.js';
6
+ import env from '../env.js';
7
+ import { RuntimeCache } from '../utils/cache.js';
8
+ import { URL } from './URL.js';
9
+
10
+ var _TaroLocation_instances, _TaroLocation_url, _TaroLocation_noCheckUrl, _TaroLocation_window, _TaroLocation_reset, _TaroLocation_getPreValue, _TaroLocation_rollBack, _TaroLocation_recordHistory, _TaroLocation_checkUrlChange;
11
+ const INIT_URL = 'https://taro.com';
12
+ const cache = new RuntimeCache('location');
13
+ class TaroLocation extends Events {
14
+ constructor(options) {
15
+ super();
16
+ _TaroLocation_instances.add(this);
17
+ /* private property */
18
+ _TaroLocation_url.set(this, new URL(INIT_URL));
19
+ _TaroLocation_noCheckUrl.set(this, false);
20
+ _TaroLocation_window.set(this, void 0);
21
+ __classPrivateFieldSet(this, _TaroLocation_window, options.window, "f");
22
+ __classPrivateFieldGet(this, _TaroLocation_instances, "m", _TaroLocation_reset).call(this);
23
+ this.on('__set_href_without_history__', (href) => {
24
+ __classPrivateFieldSet(this, _TaroLocation_noCheckUrl, true, "f");
25
+ const lastHash = __classPrivateFieldGet(this, _TaroLocation_url, "f").hash;
26
+ __classPrivateFieldGet(this, _TaroLocation_url, "f").href = generateFullUrl(href);
27
+ if (lastHash !== __classPrivateFieldGet(this, _TaroLocation_url, "f").hash) {
28
+ __classPrivateFieldGet(this, _TaroLocation_window, "f").trigger('hashchange');
29
+ }
30
+ __classPrivateFieldSet(this, _TaroLocation_noCheckUrl, false, "f");
31
+ }, null);
32
+ // 切换上下文行为
33
+ this.on(CONTEXT_ACTIONS.INIT, () => {
34
+ __classPrivateFieldGet(this, _TaroLocation_instances, "m", _TaroLocation_reset).call(this);
35
+ }, null);
36
+ this.on(CONTEXT_ACTIONS.RESTORE, (pageId) => {
37
+ cache.set(pageId, {
38
+ lastHref: this.href,
39
+ });
40
+ }, null);
41
+ this.on(CONTEXT_ACTIONS.RECOVER, (pageId) => {
42
+ // 数据恢复时,不需要执行跳转
43
+ if (cache.has(pageId)) {
44
+ const ctx = cache.get(pageId);
45
+ __classPrivateFieldSet(this, _TaroLocation_noCheckUrl, true, "f");
46
+ __classPrivateFieldGet(this, _TaroLocation_url, "f").href = ctx.lastHref;
47
+ __classPrivateFieldSet(this, _TaroLocation_noCheckUrl, false, "f");
48
+ }
49
+ }, null);
50
+ this.on(CONTEXT_ACTIONS.DESTORY, (pageId) => {
51
+ cache.delete(pageId);
52
+ }, null);
53
+ }
54
+ /* public property */
55
+ get protocol() {
56
+ return __classPrivateFieldGet(this, _TaroLocation_url, "f").protocol;
57
+ }
58
+ set protocol(val) {
59
+ const REG = /^(http|https):$/i;
60
+ if (!val || !isString(val) || !REG.test(val.trim()))
61
+ return;
62
+ val = val.trim();
63
+ const preValue = __classPrivateFieldGet(this, _TaroLocation_instances, "m", _TaroLocation_getPreValue).call(this);
64
+ __classPrivateFieldGet(this, _TaroLocation_url, "f").protocol = val;
65
+ if (__classPrivateFieldGet(this, _TaroLocation_instances, "m", _TaroLocation_checkUrlChange).call(this, preValue))
66
+ __classPrivateFieldGet(this, _TaroLocation_instances, "m", _TaroLocation_recordHistory).call(this);
67
+ }
68
+ get host() {
69
+ return __classPrivateFieldGet(this, _TaroLocation_url, "f").host;
70
+ }
71
+ set host(val) {
72
+ if (!val || !isString(val))
73
+ return;
74
+ val = val.trim();
75
+ const preValue = __classPrivateFieldGet(this, _TaroLocation_instances, "m", _TaroLocation_getPreValue).call(this);
76
+ __classPrivateFieldGet(this, _TaroLocation_url, "f").host = val;
77
+ if (__classPrivateFieldGet(this, _TaroLocation_instances, "m", _TaroLocation_checkUrlChange).call(this, preValue))
78
+ __classPrivateFieldGet(this, _TaroLocation_instances, "m", _TaroLocation_recordHistory).call(this);
79
+ }
80
+ get hostname() {
81
+ return __classPrivateFieldGet(this, _TaroLocation_url, "f").hostname;
82
+ }
83
+ set hostname(val) {
84
+ if (!val || !isString(val))
85
+ return;
86
+ val = val.trim();
87
+ const preValue = __classPrivateFieldGet(this, _TaroLocation_instances, "m", _TaroLocation_getPreValue).call(this);
88
+ __classPrivateFieldGet(this, _TaroLocation_url, "f").hostname = val;
89
+ if (__classPrivateFieldGet(this, _TaroLocation_instances, "m", _TaroLocation_checkUrlChange).call(this, preValue))
90
+ __classPrivateFieldGet(this, _TaroLocation_instances, "m", _TaroLocation_recordHistory).call(this);
91
+ }
92
+ get port() {
93
+ return __classPrivateFieldGet(this, _TaroLocation_url, "f").port;
94
+ }
95
+ set port(val) {
96
+ const xVal = Number((val = val.trim()));
97
+ if (!isNumber(xVal) || xVal <= 0)
98
+ return;
99
+ const preValue = __classPrivateFieldGet(this, _TaroLocation_instances, "m", _TaroLocation_getPreValue).call(this);
100
+ __classPrivateFieldGet(this, _TaroLocation_url, "f").port = val;
101
+ if (__classPrivateFieldGet(this, _TaroLocation_instances, "m", _TaroLocation_checkUrlChange).call(this, preValue))
102
+ __classPrivateFieldGet(this, _TaroLocation_instances, "m", _TaroLocation_recordHistory).call(this);
103
+ }
104
+ get pathname() {
105
+ return __classPrivateFieldGet(this, _TaroLocation_url, "f").pathname;
106
+ }
107
+ set pathname(val) {
108
+ if (!val || !isString(val))
109
+ return;
110
+ val = val.trim();
111
+ const preValue = __classPrivateFieldGet(this, _TaroLocation_instances, "m", _TaroLocation_getPreValue).call(this);
112
+ __classPrivateFieldGet(this, _TaroLocation_url, "f").pathname = val;
113
+ if (__classPrivateFieldGet(this, _TaroLocation_instances, "m", _TaroLocation_checkUrlChange).call(this, preValue))
114
+ __classPrivateFieldGet(this, _TaroLocation_instances, "m", _TaroLocation_recordHistory).call(this);
115
+ }
116
+ get search() {
117
+ return __classPrivateFieldGet(this, _TaroLocation_url, "f").search;
118
+ }
119
+ set search(val) {
120
+ if (!val || !isString(val))
121
+ return;
122
+ val = val.trim();
123
+ val = val.startsWith('?') ? val : `?${val}`;
124
+ const preValue = __classPrivateFieldGet(this, _TaroLocation_instances, "m", _TaroLocation_getPreValue).call(this);
125
+ __classPrivateFieldGet(this, _TaroLocation_url, "f").search = val;
126
+ if (__classPrivateFieldGet(this, _TaroLocation_instances, "m", _TaroLocation_checkUrlChange).call(this, preValue))
127
+ __classPrivateFieldGet(this, _TaroLocation_instances, "m", _TaroLocation_recordHistory).call(this);
128
+ }
129
+ get hash() {
130
+ return __classPrivateFieldGet(this, _TaroLocation_url, "f").hash;
131
+ }
132
+ // 小程序的navigateTo存在截断hash字符串的问题
133
+ set hash(val) {
134
+ if (!val || !isString(val))
135
+ return;
136
+ val = val.trim();
137
+ val = val.startsWith('#') ? val : `#${val}`;
138
+ const preValue = __classPrivateFieldGet(this, _TaroLocation_instances, "m", _TaroLocation_getPreValue).call(this);
139
+ __classPrivateFieldGet(this, _TaroLocation_url, "f").hash = val;
140
+ if (__classPrivateFieldGet(this, _TaroLocation_instances, "m", _TaroLocation_checkUrlChange).call(this, preValue))
141
+ __classPrivateFieldGet(this, _TaroLocation_instances, "m", _TaroLocation_recordHistory).call(this);
142
+ }
143
+ get href() {
144
+ return __classPrivateFieldGet(this, _TaroLocation_url, "f").href;
145
+ }
146
+ set href(val) {
147
+ const REG = /^(http:|https:)?\/\/.+/;
148
+ if (!val || !isString(val) || !REG.test((val = val.trim())))
149
+ return;
150
+ const preValue = __classPrivateFieldGet(this, _TaroLocation_instances, "m", _TaroLocation_getPreValue).call(this);
151
+ __classPrivateFieldGet(this, _TaroLocation_url, "f").href = val;
152
+ if (__classPrivateFieldGet(this, _TaroLocation_instances, "m", _TaroLocation_checkUrlChange).call(this, preValue))
153
+ __classPrivateFieldGet(this, _TaroLocation_instances, "m", _TaroLocation_recordHistory).call(this);
154
+ }
155
+ get origin() {
156
+ return __classPrivateFieldGet(this, _TaroLocation_url, "f").origin;
157
+ }
158
+ set origin(val) {
159
+ const REG = /^(http:|https:)?\/\/.+/;
160
+ if (!val || !isString(val) || !REG.test((val = val.trim())))
161
+ return;
162
+ const preValue = __classPrivateFieldGet(this, _TaroLocation_instances, "m", _TaroLocation_getPreValue).call(this);
163
+ __classPrivateFieldGet(this, _TaroLocation_url, "f").origin = val;
164
+ if (__classPrivateFieldGet(this, _TaroLocation_instances, "m", _TaroLocation_checkUrlChange).call(this, preValue))
165
+ __classPrivateFieldGet(this, _TaroLocation_instances, "m", _TaroLocation_recordHistory).call(this);
166
+ }
167
+ /* public method */
168
+ assign() {
169
+ warn(true, '小程序环境中调用location.assign()无效.');
170
+ }
171
+ reload() {
172
+ warn(true, '小程序环境中调用location.reload()无效.');
173
+ }
174
+ replace(url) {
175
+ this.trigger('__set_href_without_history__', url);
176
+ }
177
+ toString() {
178
+ return this.href;
179
+ }
180
+ // For debug
181
+ get cache() {
182
+ return cache;
183
+ }
184
+ }
185
+ _TaroLocation_url = new WeakMap(), _TaroLocation_noCheckUrl = new WeakMap(), _TaroLocation_window = new WeakMap(), _TaroLocation_instances = new WeakSet(), _TaroLocation_reset = function _TaroLocation_reset() {
186
+ const Current = getCurrentInstance();
187
+ const router = Current.router;
188
+ if (router) {
189
+ const { path, params } = router;
190
+ const searchArr = Object.keys(params).map((key) => {
191
+ return `${key}=${params[key]}`;
192
+ });
193
+ const searchStr = searchArr.length > 0 ? '?' + searchArr.join('&') : '';
194
+ const url = `${INIT_URL}${path.startsWith('/') ? path : '/' + path}${searchStr}`;
195
+ __classPrivateFieldSet(this, _TaroLocation_url, new URL(url), "f");
196
+ this.trigger('__reset_history__', this.href);
197
+ }
198
+ }, _TaroLocation_getPreValue = function _TaroLocation_getPreValue() {
199
+ return __classPrivateFieldGet(this, _TaroLocation_url, "f")._toRaw();
200
+ }, _TaroLocation_rollBack = function _TaroLocation_rollBack(href) {
201
+ __classPrivateFieldGet(this, _TaroLocation_url, "f").href = href;
202
+ }, _TaroLocation_recordHistory = function _TaroLocation_recordHistory() {
203
+ this.trigger('__record_history__', this.href);
204
+ }, _TaroLocation_checkUrlChange = function _TaroLocation_checkUrlChange(preValue) {
205
+ if (__classPrivateFieldGet(this, _TaroLocation_noCheckUrl, "f")) {
206
+ return false;
207
+ }
208
+ const { protocol, hostname, port, pathname, search, hash } = __classPrivateFieldGet(this, _TaroLocation_url, "f")._toRaw();
209
+ // 跨域三要素不允许修改
210
+ if (protocol !== preValue.protocol || hostname !== preValue.hostname || port !== preValue.port) {
211
+ __classPrivateFieldGet(this, _TaroLocation_instances, "m", _TaroLocation_rollBack).call(this, preValue.href);
212
+ return false;
213
+ }
214
+ // pathname
215
+ if (pathname !== preValue.pathname) {
216
+ return true;
217
+ }
218
+ // search
219
+ if (search !== preValue.search) {
220
+ return true;
221
+ }
222
+ // hashchange
223
+ if (hash !== preValue.hash) {
224
+ __classPrivateFieldGet(this, _TaroLocation_window, "f").trigger('hashchange');
225
+ return true;
226
+ }
227
+ __classPrivateFieldGet(this, _TaroLocation_instances, "m", _TaroLocation_rollBack).call(this, preValue.href);
228
+ return false;
229
+ };
230
+ const Location = process.env.TARO_PLATFORM === 'web' ? env.window.Location : TaroLocation;
231
+ function generateFullUrl(val = '') {
232
+ const origin = INIT_URL;
233
+ if (/^[/?#]/.test(val)) {
234
+ return origin + val;
235
+ }
236
+ return val;
237
+ }
238
+
239
+ export { Location };
240
+ //# sourceMappingURL=location.js.map
@@ -0,0 +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 { URL } from './URL'\n\ntype PreValue = ReturnType<typeof URL.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 URL(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 URL(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":";;;;;;;;;;AAkBA,MAAM,QAAQ,GAAG,kBAAkB,CAAA;AACnC,MAAM,KAAK,GAAG,IAAI,YAAY,CAAkB,UAAU,CAAC,CAAA;AAE3D,MAAM,YAAa,SAAQ,MAAM,CAAA;AAM/B,IAAA,WAAA,CAAa,OAAgB,EAAA;AAC3B,QAAA,KAAK,EAAE,CAAA;;;AALT,QAAA,iBAAA,CAAA,GAAA,CAAA,IAAA,EAAO,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAA,CAAA;AACxB,QAAA,wBAAA,CAAA,GAAA,CAAA,IAAA,EAAc,KAAK,CAAA,CAAA;QACnB,oBAAY,CAAA,GAAA,CAAA,IAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAKV,QAAA,sBAAA,CAAA,IAAI,EAAW,oBAAA,EAAA,OAAO,CAAC,MAAM,MAAA,CAAA;AAE7B,QAAA,sBAAA,CAAA,IAAI,EAAA,uBAAA,EAAA,GAAA,EAAA,mBAAA,CAAO,CAAX,IAAA,CAAA,IAAI,CAAS,CAAA;QAEb,IAAI,CAAC,EAAE,CACL,8BAA8B,EAC9B,CAAC,IAAY,KAAI;AACf,YAAA,sBAAA,CAAA,IAAI,EAAA,wBAAA,EAAe,IAAI,EAAA,GAAA,CAAA,CAAA;AAEvB,YAAA,MAAM,QAAQ,GAAG,sBAAA,CAAA,IAAI,EAAK,iBAAA,EAAA,GAAA,CAAA,CAAC,IAAI,CAAA;YAC/B,sBAAA,CAAA,IAAI,yBAAK,CAAC,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,CAAA;YAEtC,IAAI,QAAQ,KAAK,sBAAA,CAAA,IAAI,yBAAK,CAAC,IAAI,EAAE;AAC/B,gBAAA,sBAAA,CAAA,IAAI,EAAQ,oBAAA,EAAA,GAAA,CAAA,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;aACnC;AAED,YAAA,sBAAA,CAAA,IAAI,EAAA,wBAAA,EAAe,KAAK,EAAA,GAAA,CAAA,CAAA;SACzB,EACD,IAAI,CACL,CAAA;;QAGD,IAAI,CAAC,EAAE,CACL,eAAe,CAAC,IAAI,EACpB,MAAK;AACH,YAAA,sBAAA,CAAA,IAAI,EAAA,uBAAA,EAAA,GAAA,EAAA,mBAAA,CAAO,CAAX,IAAA,CAAA,IAAI,CAAS,CAAA;SACd,EACD,IAAI,CACL,CAAA;QAED,IAAI,CAAC,EAAE,CACL,eAAe,CAAC,OAAO,EACvB,CAAC,MAAc,KAAI;AACjB,YAAA,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE;gBAChB,QAAQ,EAAE,IAAI,CAAC,IAAI;AACpB,aAAA,CAAC,CAAA;SACH,EACD,IAAI,CACL,CAAA;QAED,IAAI,CAAC,EAAE,CACL,eAAe,CAAC,OAAO,EACvB,CAAC,MAAc,KAAI;;AAEjB,YAAA,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;gBACrB,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAE,CAAA;AAC9B,gBAAA,sBAAA,CAAA,IAAI,EAAA,wBAAA,EAAe,IAAI,EAAA,GAAA,CAAA,CAAA;gBACvB,sBAAA,CAAA,IAAI,yBAAK,CAAC,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAA;AAC7B,gBAAA,sBAAA,CAAA,IAAI,EAAA,wBAAA,EAAe,KAAK,EAAA,GAAA,CAAA,CAAA;aACzB;SACF,EACD,IAAI,CACL,CAAA;QAED,IAAI,CAAC,EAAE,CACL,eAAe,CAAC,OAAO,EACvB,CAAC,MAAc,KAAI;AACjB,YAAA,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;SACrB,EACD,IAAI,CACL,CAAA;KACF;;AAqED,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,sBAAA,CAAA,IAAI,EAAK,iBAAA,EAAA,GAAA,CAAA,CAAC,QAAQ,CAAA;KAC1B;IAED,IAAI,QAAQ,CAAE,GAAW,EAAA;QACvB,MAAM,GAAG,GAAG,kBAAkB,CAAA;AAC9B,QAAA,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YAAE,OAAM;AAE3D,QAAA,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;QAChB,MAAM,QAAQ,GAAG,sBAAA,CAAA,IAAI,0DAAa,CAAjB,IAAA,CAAA,IAAI,CAAe,CAAA;AACpC,QAAA,sBAAA,CAAA,IAAI,EAAK,iBAAA,EAAA,GAAA,CAAA,CAAC,QAAQ,GAAG,GAAG,CAAA;AAExB,QAAA,IAAI,uBAAA,IAAI,EAAA,uBAAA,EAAA,GAAA,EAAA,4BAAA,CAAgB,MAApB,IAAI,EAAiB,QAAQ,CAAC;AAAE,YAAA,sBAAA,CAAA,IAAI,EAAA,uBAAA,EAAA,GAAA,EAAA,2BAAA,CAAe,CAAnB,IAAA,CAAA,IAAI,CAAiB,CAAA;KAC1D;AAED,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,sBAAA,CAAA,IAAI,EAAK,iBAAA,EAAA,GAAA,CAAA,CAAC,IAAI,CAAA;KACtB;IAED,IAAI,IAAI,CAAE,GAAW,EAAA;AACnB,QAAA,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAM;AAClC,QAAA,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;QAEhB,MAAM,QAAQ,GAAG,sBAAA,CAAA,IAAI,0DAAa,CAAjB,IAAA,CAAA,IAAI,CAAe,CAAA;AACpC,QAAA,sBAAA,CAAA,IAAI,EAAK,iBAAA,EAAA,GAAA,CAAA,CAAC,IAAI,GAAG,GAAG,CAAA;AAEpB,QAAA,IAAI,uBAAA,IAAI,EAAA,uBAAA,EAAA,GAAA,EAAA,4BAAA,CAAgB,MAApB,IAAI,EAAiB,QAAQ,CAAC;AAAE,YAAA,sBAAA,CAAA,IAAI,EAAA,uBAAA,EAAA,GAAA,EAAA,2BAAA,CAAe,CAAnB,IAAA,CAAA,IAAI,CAAiB,CAAA;KAC1D;AAED,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,sBAAA,CAAA,IAAI,EAAK,iBAAA,EAAA,GAAA,CAAA,CAAC,QAAQ,CAAA;KAC1B;IAED,IAAI,QAAQ,CAAE,GAAW,EAAA;AACvB,QAAA,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAM;AAClC,QAAA,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;QAEhB,MAAM,QAAQ,GAAG,sBAAA,CAAA,IAAI,0DAAa,CAAjB,IAAA,CAAA,IAAI,CAAe,CAAA;AACpC,QAAA,sBAAA,CAAA,IAAI,EAAK,iBAAA,EAAA,GAAA,CAAA,CAAC,QAAQ,GAAG,GAAG,CAAA;AAExB,QAAA,IAAI,uBAAA,IAAI,EAAA,uBAAA,EAAA,GAAA,EAAA,4BAAA,CAAgB,MAApB,IAAI,EAAiB,QAAQ,CAAC;AAAE,YAAA,sBAAA,CAAA,IAAI,EAAA,uBAAA,EAAA,GAAA,EAAA,2BAAA,CAAe,CAAnB,IAAA,CAAA,IAAI,CAAiB,CAAA;KAC1D;AAED,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,sBAAA,CAAA,IAAI,EAAK,iBAAA,EAAA,GAAA,CAAA,CAAC,IAAI,CAAA;KACtB;IAED,IAAI,IAAI,CAAE,GAAW,EAAA;AACnB,QAAA,MAAM,IAAI,GAAG,MAAM,EAAE,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,EAAE,CAAA;QACvC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC;YAAE,OAAM;QAExC,MAAM,QAAQ,GAAG,sBAAA,CAAA,IAAI,0DAAa,CAAjB,IAAA,CAAA,IAAI,CAAe,CAAA;AACpC,QAAA,sBAAA,CAAA,IAAI,EAAK,iBAAA,EAAA,GAAA,CAAA,CAAC,IAAI,GAAG,GAAG,CAAA;AAEpB,QAAA,IAAI,uBAAA,IAAI,EAAA,uBAAA,EAAA,GAAA,EAAA,4BAAA,CAAgB,MAApB,IAAI,EAAiB,QAAQ,CAAC;AAAE,YAAA,sBAAA,CAAA,IAAI,EAAA,uBAAA,EAAA,GAAA,EAAA,2BAAA,CAAe,CAAnB,IAAA,CAAA,IAAI,CAAiB,CAAA;KAC1D;AAED,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,sBAAA,CAAA,IAAI,EAAK,iBAAA,EAAA,GAAA,CAAA,CAAC,QAAQ,CAAA;KAC1B;IAED,IAAI,QAAQ,CAAE,GAAW,EAAA;AACvB,QAAA,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAM;AAClC,QAAA,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;QAEhB,MAAM,QAAQ,GAAG,sBAAA,CAAA,IAAI,0DAAa,CAAjB,IAAA,CAAA,IAAI,CAAe,CAAA;AACpC,QAAA,sBAAA,CAAA,IAAI,EAAK,iBAAA,EAAA,GAAA,CAAA,CAAC,QAAQ,GAAG,GAAG,CAAA;AAExB,QAAA,IAAI,uBAAA,IAAI,EAAA,uBAAA,EAAA,GAAA,EAAA,4BAAA,CAAgB,MAApB,IAAI,EAAiB,QAAQ,CAAC;AAAE,YAAA,sBAAA,CAAA,IAAI,EAAA,uBAAA,EAAA,GAAA,EAAA,2BAAA,CAAe,CAAnB,IAAA,CAAA,IAAI,CAAiB,CAAA;KAC1D;AAED,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,sBAAA,CAAA,IAAI,EAAK,iBAAA,EAAA,GAAA,CAAA,CAAC,MAAM,CAAA;KACxB;IAED,IAAI,MAAM,CAAE,GAAW,EAAA;AACrB,QAAA,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAM;AAClC,QAAA,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;AAChB,QAAA,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAI,CAAA,EAAA,GAAG,EAAE,CAAA;QAE3C,MAAM,QAAQ,GAAG,sBAAA,CAAA,IAAI,0DAAa,CAAjB,IAAA,CAAA,IAAI,CAAe,CAAA;AACpC,QAAA,sBAAA,CAAA,IAAI,EAAK,iBAAA,EAAA,GAAA,CAAA,CAAC,MAAM,GAAG,GAAG,CAAA;AAEtB,QAAA,IAAI,uBAAA,IAAI,EAAA,uBAAA,EAAA,GAAA,EAAA,4BAAA,CAAgB,MAApB,IAAI,EAAiB,QAAQ,CAAC;AAAE,YAAA,sBAAA,CAAA,IAAI,EAAA,uBAAA,EAAA,GAAA,EAAA,2BAAA,CAAe,CAAnB,IAAA,CAAA,IAAI,CAAiB,CAAA;KAC1D;AAED,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,sBAAA,CAAA,IAAI,EAAK,iBAAA,EAAA,GAAA,CAAA,CAAC,IAAI,CAAA;KACtB;;IAGD,IAAI,IAAI,CAAE,GAAW,EAAA;AACnB,QAAA,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAM;AAClC,QAAA,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;AAChB,QAAA,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAI,CAAA,EAAA,GAAG,EAAE,CAAA;QAE3C,MAAM,QAAQ,GAAG,sBAAA,CAAA,IAAI,0DAAa,CAAjB,IAAA,CAAA,IAAI,CAAe,CAAA;AACpC,QAAA,sBAAA,CAAA,IAAI,EAAK,iBAAA,EAAA,GAAA,CAAA,CAAC,IAAI,GAAG,GAAG,CAAA;AAEpB,QAAA,IAAI,uBAAA,IAAI,EAAA,uBAAA,EAAA,GAAA,EAAA,4BAAA,CAAgB,MAApB,IAAI,EAAiB,QAAQ,CAAC;AAAE,YAAA,sBAAA,CAAA,IAAI,EAAA,uBAAA,EAAA,GAAA,EAAA,2BAAA,CAAe,CAAnB,IAAA,CAAA,IAAI,CAAiB,CAAA;KAC1D;AAED,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,sBAAA,CAAA,IAAI,EAAK,iBAAA,EAAA,GAAA,CAAA,CAAC,IAAI,CAAA;KACtB;IAED,IAAI,IAAI,CAAE,GAAW,EAAA;QACnB,MAAM,GAAG,GAAG,wBAAwB,CAAA;QACpC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,EAAE;YAAE,OAAM;QAEnE,MAAM,QAAQ,GAAG,sBAAA,CAAA,IAAI,0DAAa,CAAjB,IAAA,CAAA,IAAI,CAAe,CAAA;AACpC,QAAA,sBAAA,CAAA,IAAI,EAAK,iBAAA,EAAA,GAAA,CAAA,CAAC,IAAI,GAAG,GAAG,CAAA;AAEpB,QAAA,IAAI,uBAAA,IAAI,EAAA,uBAAA,EAAA,GAAA,EAAA,4BAAA,CAAgB,MAApB,IAAI,EAAiB,QAAQ,CAAC;AAAE,YAAA,sBAAA,CAAA,IAAI,EAAA,uBAAA,EAAA,GAAA,EAAA,2BAAA,CAAe,CAAnB,IAAA,CAAA,IAAI,CAAiB,CAAA;KAC1D;AAED,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,sBAAA,CAAA,IAAI,EAAK,iBAAA,EAAA,GAAA,CAAA,CAAC,MAAM,CAAA;KACxB;IAED,IAAI,MAAM,CAAE,GAAW,EAAA;QACrB,MAAM,GAAG,GAAG,wBAAwB,CAAA;QACpC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,EAAE;YAAE,OAAM;QAEnE,MAAM,QAAQ,GAAG,sBAAA,CAAA,IAAI,0DAAa,CAAjB,IAAA,CAAA,IAAI,CAAe,CAAA;AACpC,QAAA,sBAAA,CAAA,IAAI,EAAK,iBAAA,EAAA,GAAA,CAAA,CAAC,MAAM,GAAG,GAAG,CAAA;AAEtB,QAAA,IAAI,uBAAA,IAAI,EAAA,uBAAA,EAAA,GAAA,EAAA,4BAAA,CAAgB,MAApB,IAAI,EAAiB,QAAQ,CAAC;AAAE,YAAA,sBAAA,CAAA,IAAI,EAAA,uBAAA,EAAA,GAAA,EAAA,2BAAA,CAAe,CAAnB,IAAA,CAAA,IAAI,CAAiB,CAAA;KAC1D;;IAGD,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,EAAE,8BAA8B,CAAC,CAAA;KAC3C;IAED,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,EAAE,8BAA8B,CAAC,CAAA;KAC3C;AAED,IAAA,OAAO,CAAE,GAAW,EAAA;AAClB,QAAA,IAAI,CAAC,OAAO,CAAC,8BAA8B,EAAE,GAAG,CAAC,CAAA;KAClD;IAED,QAAQ,GAAA;QACN,OAAO,IAAI,CAAC,IAAI,CAAA;KACjB;;AAGD,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,KAAK,CAAA;KACb;AACF,CAAA;;AAxNG,IAAA,MAAM,OAAO,GAAG,kBAAkB,EAAE,CAAA;AACpC,IAAA,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;IAC7B,IAAI,MAAM,EAAE;AACV,QAAA,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAAA;AAC/B,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;YAChD,OAAO,CAAA,EAAG,GAAG,CAAI,CAAA,EAAA,MAAM,CAAC,GAAG,CAAC,EAAE,CAAA;AAChC,SAAC,CAAC,CAAA;QACF,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAA;QACvE,MAAM,GAAG,GAAG,CAAA,EAAG,QAAQ,CAAA,EAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,CAAA,EAAG,SAAS,CAAA,CAAE,CAAA;QAEhF,sBAAA,CAAA,IAAI,qBAAQ,IAAI,GAAG,CAAC,GAAG,CAAC,MAAA,CAAA;QAExB,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;KAC7C;AACH,CAAC,EAAA,yBAAA,GAAA,SAAA,yBAAA,GAAA;AAGC,IAAA,OAAO,uBAAA,IAAI,EAAA,iBAAA,EAAA,GAAA,CAAK,CAAC,MAAM,EAAE,CAAA;AAC3B,CAAC,2DAEU,IAAY,EAAA;AACrB,IAAA,sBAAA,CAAA,IAAI,EAAK,iBAAA,EAAA,GAAA,CAAA,CAAC,IAAI,GAAG,IAAI,CAAA;AACvB,CAAC,EAAA,2BAAA,GAAA,SAAA,2BAAA,GAAA;IAGC,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;AAC/C,CAAC,uEAKgB,QAAkB,EAAA;AACjC,IAAA,IAAI,sBAAA,CAAA,IAAI,EAAY,wBAAA,EAAA,GAAA,CAAA,EAAE;AACpB,QAAA,OAAO,KAAK,CAAA;KACb;IAED,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,sBAAA,CAAA,IAAI,yBAAK,CAAC,MAAM,EAAE,CAAA;;AAG/E,IAAA,IAAI,QAAQ,KAAK,QAAQ,CAAC,QAAQ,IAAI,QAAQ,KAAK,QAAQ,CAAC,QAAQ,IAAI,IAAI,KAAK,QAAQ,CAAC,IAAI,EAAE;QAC9F,sBAAA,CAAA,IAAI,uDAAU,CAAd,IAAA,CAAA,IAAI,EAAW,QAAQ,CAAC,IAAI,CAAC,CAAA;AAC7B,QAAA,OAAO,KAAK,CAAA;KACb;;AAGD,IAAA,IAAI,QAAQ,KAAK,QAAQ,CAAC,QAAQ,EAAE;AAClC,QAAA,OAAO,IAAI,CAAA;KACZ;;AAGD,IAAA,IAAI,MAAM,KAAK,QAAQ,CAAC,MAAM,EAAE;AAC9B,QAAA,OAAO,IAAI,CAAA;KACZ;;AAGD,IAAA,IAAI,IAAI,KAAK,QAAQ,CAAC,IAAI,EAAE;AAC1B,QAAA,sBAAA,CAAA,IAAI,EAAQ,oBAAA,EAAA,GAAA,CAAA,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;AAClC,QAAA,OAAO,IAAI,CAAA;KACZ;IAED,sBAAA,CAAA,IAAI,uDAAU,CAAd,IAAA,CAAA,IAAI,EAAW,QAAQ,CAAC,IAAI,CAAC,CAAA;AAC7B,IAAA,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;MA6JU,QAAQ,GAAwB,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,GAAG,aAAY;AAErH,SAAS,eAAe,CAAE,GAAG,GAAG,EAAE,EAAA;IAChC,MAAM,MAAM,GAAG,QAAQ,CAAA;AACvB,IAAA,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QACtB,OAAO,MAAM,GAAG,GAAG,CAAA;KACpB;AACD,IAAA,OAAO,GAAG,CAAA;AACZ;;;;"}
@@ -0,0 +1,2 @@
1
+ declare const nav: typeof window.navigator;
2
+ export { nav };
@@ -0,0 +1,24 @@
1
+ import env from '../env.js';
2
+
3
+ const machine = 'Macintosh';
4
+ const arch = 'Intel Mac OS X 10_14_5';
5
+ const engine = 'AppleWebKit/534.36 (KHTML, like Gecko) NodeJS/v4.1.0 Chrome/76.0.3809.132 Safari/534.36';
6
+ const msg = '(' + machine + '; ' + arch + ') ' + engine;
7
+ const nav = process.env.TARO_PLATFORM === 'web' ? env.window.navigator : {
8
+ appCodeName: 'Mozilla',
9
+ appName: 'Netscape',
10
+ appVersion: '5.0 ' + msg,
11
+ cookieEnabled: true,
12
+ mimeTypes: [],
13
+ onLine: true,
14
+ platform: 'MacIntel',
15
+ plugins: [],
16
+ product: 'Taro',
17
+ productSub: '20030107',
18
+ userAgent: 'Mozilla/5.0 ' + msg,
19
+ vendor: 'Joyent',
20
+ vendorSub: ''
21
+ };
22
+
23
+ export { nav };
24
+ //# sourceMappingURL=navigator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigator.js","sources":["../../src/bom/navigator.ts"],"sourcesContent":["import env from '../env'\n\nconst machine = 'Macintosh'\nconst arch = 'Intel Mac OS X 10_14_5'\nconst engine = 'AppleWebKit/534.36 (KHTML, like Gecko) NodeJS/v4.1.0 Chrome/76.0.3809.132 Safari/534.36'\n\nconst msg = '(' + machine + '; ' + arch + ') ' + engine\n\nexport const nav: typeof window.navigator = process.env.TARO_PLATFORM === 'web' ? env.window.navigator : {\n appCodeName: 'Mozilla',\n appName: 'Netscape',\n appVersion: '5.0 ' + msg,\n cookieEnabled: true,\n mimeTypes: [],\n onLine: true,\n platform: 'MacIntel',\n plugins: [],\n product: 'Taro',\n productSub: '20030107',\n userAgent: 'Mozilla/5.0 ' + msg,\n vendor: 'Joyent',\n vendorSub: ''\n}\n"],"names":[],"mappings":";;AAEA,MAAM,OAAO,GAAG,WAAW,CAAA;AAC3B,MAAM,IAAI,GAAG,wBAAwB,CAAA;AACrC,MAAM,MAAM,GAAG,yFAAyF,CAAA;AAExG,MAAM,GAAG,GAAG,GAAG,GAAG,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAA;MAE1C,GAAG,GAA4B,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,GAAG;AACvG,IAAA,WAAW,EAAE,SAAS;AACtB,IAAA,OAAO,EAAE,UAAU;IACnB,UAAU,EAAE,MAAM,GAAG,GAAG;AACxB,IAAA,aAAa,EAAE,IAAI;AACnB,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,MAAM,EAAE,IAAI;AACZ,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,OAAO,EAAE,EAAE;AACX,IAAA,OAAO,EAAE,MAAM;AACf,IAAA,UAAU,EAAE,UAAU;IACtB,SAAS,EAAE,cAAc,GAAG,GAAG;AAC/B,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,SAAS,EAAE,EAAE;;;;;"}
@@ -0,0 +1,5 @@
1
+ /// <reference types="node" />
2
+ declare let now: () => number;
3
+ declare const _raf: typeof requestAnimationFrame | ((callback: any) => NodeJS.Timeout);
4
+ declare const _caf: typeof cancelAnimationFrame;
5
+ export { now, _caf as caf, _raf as raf };
@@ -0,0 +1,33 @@
1
+ // https://github.com/myrne/performance-now
2
+ let now;
3
+ (function () {
4
+ let loadTime;
5
+ if ((typeof performance !== 'undefined' && performance !== null) && performance.now) {
6
+ now = () => performance.now();
7
+ }
8
+ else if (Date.now) {
9
+ loadTime = Date.now();
10
+ now = () => Date.now() - loadTime;
11
+ }
12
+ else {
13
+ loadTime = new Date().getTime();
14
+ now = () => new Date().getTime() - loadTime;
15
+ }
16
+ })();
17
+ let lastTime = 0;
18
+ // https://gist.github.com/paulirish/1579671
19
+ // https://gist.github.com/jalbam/5fe05443270fa6d8136238ec72accbc0
20
+ const _raf = process.env.TARO_PLATFORM === 'web' ? requestAnimationFrame : function (callback) {
21
+ const _now = now();
22
+ const nextTime = Math.max(lastTime + 16, _now); // First time will execute it immediately but barely noticeable and performance is gained.
23
+ return setTimeout(function () { callback(lastTime = nextTime); }, nextTime - _now);
24
+ };
25
+ const _caf = process.env.TARO_PLATFORM === 'web'
26
+ ? cancelAnimationFrame
27
+ : function (seed) {
28
+ // fix https://github.com/NervJS/taro/issues/7749
29
+ clearTimeout(seed);
30
+ };
31
+
32
+ export { _caf as caf, now, _raf as raf };
33
+ //# sourceMappingURL=raf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"raf.js","sources":["../../src/bom/raf.ts"],"sourcesContent":["// https://github.com/myrne/performance-now\nexport let now: () => number\n\n(function () {\n let loadTime\n if ((typeof performance !== 'undefined' && performance !== null) && performance.now) {\n now = () => performance.now()\n } else if (Date.now) {\n loadTime = Date.now()\n now = () => Date.now() - loadTime\n } else {\n loadTime = new Date().getTime()\n now = () => new Date().getTime() - loadTime\n }\n})()\n\nlet lastTime = 0\n\n// https://gist.github.com/paulirish/1579671\n// https://gist.github.com/jalbam/5fe05443270fa6d8136238ec72accbc0\nconst _raf = process.env.TARO_PLATFORM === 'web' ? requestAnimationFrame : function (callback) {\n const _now = now()\n const nextTime = Math.max(lastTime + 16, _now) // First time will execute it immediately but barely noticeable and performance is gained.\n return setTimeout(function () { callback(lastTime = nextTime) }, nextTime - _now)\n}\n\nconst _caf = process.env.TARO_PLATFORM === 'web'\n ? cancelAnimationFrame\n : function (seed) {\n // fix https://github.com/NervJS/taro/issues/7749\n clearTimeout(seed)\n }\n\nexport {\n _caf as caf,\n _raf as raf\n}\n"],"names":[],"mappings":"AAAA;AACW,IAAA,IAAiB;AAE5B,CAAC,YAAA;AACC,IAAA,IAAI,QAAQ,CAAA;AACZ,IAAA,IAAI,CAAC,OAAO,WAAW,KAAK,WAAW,IAAI,WAAW,KAAK,IAAI,KAAK,WAAW,CAAC,GAAG,EAAE;QACnF,GAAG,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,CAAA;KAC9B;AAAM,SAAA,IAAI,IAAI,CAAC,GAAG,EAAE;AACnB,QAAA,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACrB,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAA;KAClC;SAAM;AACL,QAAA,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAA;AAC/B,QAAA,GAAG,GAAG,MAAM,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAA;KAC5C;AACH,CAAC,GAAG,CAAA;AAEJ,IAAI,QAAQ,GAAG,CAAC,CAAA;AAEhB;AACA;AACA,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,KAAK,GAAG,qBAAqB,GAAG,UAAU,QAAQ,EAAA;AAC3F,IAAA,MAAM,IAAI,GAAG,GAAG,EAAE,CAAA;AAClB,IAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,EAAE,EAAE,IAAI,CAAC,CAAA;AAC9C,IAAA,OAAO,UAAU,CAAC,YAAA,EAAc,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAA,EAAE,EAAE,QAAQ,GAAG,IAAI,CAAC,CAAA;AACnF,EAAC;AAEK,MAAA,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,KAAK;AAC9C,MAAE,oBAAoB;MACpB,UAAU,IAAI,EAAA;;QAEd,YAAY,CAAC,IAAI,CAAC,CAAA;AACpB;;;;"}
@@ -0,0 +1,26 @@
1
+ /// <reference types="node" />
2
+ import { Events } from "../emitter/emitter.js";
3
+ import { TaroHistory } from "./history.js";
4
+ import { TaroLocation } from "./location.js";
5
+ declare class TaroWindow extends Events {
6
+ navigator: Navigator;
7
+ requestAnimationFrame: typeof requestAnimationFrame | ((callback: any) => NodeJS.Timeout);
8
+ cancelAnimationFrame: typeof cancelAnimationFrame;
9
+ getComputedStyle: import("./getComputedStyle.js").TGetComputedStyle;
10
+ Date: DateConstructor;
11
+ location: TaroLocation;
12
+ history: TaroHistory;
13
+ XMLHttpRequest?: Partial<XMLHttpRequest>;
14
+ constructor();
15
+ initEvent(): void;
16
+ get document(): import("../dom/document.js").TaroDocument;
17
+ addEventListener(event: string, callback: (arg: any) => void): void;
18
+ removeEventListener(event: string, callback: (arg: any) => void): void;
19
+ setTimeout(...args: Parameters<typeof setTimeout>): NodeJS.Timeout;
20
+ clearTimeout(...args: Parameters<typeof clearTimeout>): void;
21
+ }
22
+ declare const window: TaroWindow;
23
+ declare const location: TaroLocation;
24
+ declare const history: TaroHistory;
25
+ export type { TaroWindow };
26
+ export { window, location, history };