@spcsn/taro-runtime 0.1.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/LICENSE +174 -0
- package/README.md +49 -0
- package/dist/bom/URL.d.ts +51 -0
- package/dist/bom/URL.js +188 -0
- package/dist/bom/URL.js.map +1 -0
- package/dist/bom/URLSearchParams.d.ts +1 -0
- package/dist/bom/URLSearchParams.js +103 -0
- package/dist/bom/URLSearchParams.js.map +1 -0
- package/dist/bom/document.d.ts +3 -0
- package/dist/bom/document.js +93 -0
- package/dist/bom/document.js.map +1 -0
- package/dist/bom/getComputedStyle.d.ts +4 -0
- package/dist/bom/getComputedStyle.js +9 -0
- package/dist/bom/getComputedStyle.js.map +1 -0
- package/dist/bom/history.d.ts +30 -0
- package/dist/bom/history.js +108 -0
- package/dist/bom/history.js.map +1 -0
- package/dist/bom/location.d.ts +37 -0
- package/dist/bom/location.js +200 -0
- package/dist/bom/location.js.map +1 -0
- package/dist/bom/navigator.d.ts +1 -0
- package/dist/bom/navigator.js +22 -0
- package/dist/bom/navigator.js.map +1 -0
- package/dist/bom/raf.d.ts +4 -0
- package/dist/bom/raf.js +28 -0
- package/dist/bom/raf.js.map +1 -0
- package/dist/bom/window.d.ts +23 -0
- package/dist/bom/window.js +74 -0
- package/dist/bom/window.js.map +1 -0
- package/dist/constants/index.d.ts +57 -0
- package/dist/constants/index.js +63 -0
- package/dist/constants/index.js.map +1 -0
- package/dist/current.d.ts +19 -0
- package/dist/current.js +11 -0
- package/dist/current.js.map +1 -0
- package/dist/dom/anchor-element.d.ts +13 -0
- package/dist/dom/anchor-element.js +42 -0
- package/dist/dom/anchor-element.js.map +1 -0
- package/dist/dom/class-list.d.ts +16 -0
- package/dist/dom/class-list.js +79 -0
- package/dist/dom/class-list.js.map +1 -0
- package/dist/dom/document.d.ts +21 -0
- package/dist/dom/document.js +74 -0
- package/dist/dom/document.js.map +1 -0
- package/dist/dom/element.d.ts +39 -0
- package/dist/dom/element.js +261 -0
- package/dist/dom/element.js.map +1 -0
- package/dist/dom/event-source.d.ts +7 -0
- package/dist/dom/event-source.js +18 -0
- package/dist/dom/event-source.js.map +1 -0
- package/dist/dom/event-target.d.ts +8 -0
- package/dist/dom/event-target.js +72 -0
- package/dist/dom/event-target.js.map +1 -0
- package/dist/dom/event.d.ts +24 -0
- package/dist/dom/event.js +124 -0
- package/dist/dom/event.js.map +1 -0
- package/dist/dom/form.d.ts +9 -0
- package/dist/dom/form.js +30 -0
- package/dist/dom/form.js.map +1 -0
- package/dist/dom/node.d.ts +76 -0
- package/dist/dom/node.js +213 -0
- package/dist/dom/node.js.map +1 -0
- package/dist/dom/node_types.d.ts +10 -0
- package/dist/dom/root.d.ts +16 -0
- package/dist/dom/root.js +127 -0
- package/dist/dom/root.js.map +1 -0
- package/dist/dom/style.d.ts +14 -0
- package/dist/dom/style.js +138 -0
- package/dist/dom/style.js.map +1 -0
- package/dist/dom/style_properties.d.ts +3 -0
- package/dist/dom/style_properties.js +374 -0
- package/dist/dom/style_properties.js.map +1 -0
- package/dist/dom/svg.d.ts +3 -0
- package/dist/dom/svg.js +7 -0
- package/dist/dom/svg.js.map +1 -0
- package/dist/dom/text.d.ts +14 -0
- package/dist/dom/text.js +43 -0
- package/dist/dom/text.js.map +1 -0
- package/dist/dom/transfer.d.ts +7 -0
- package/dist/dom/transfer.js +16 -0
- package/dist/dom/transfer.js.map +1 -0
- package/dist/dom/tree.d.ts +4 -0
- package/dist/dom/tree.js +31 -0
- package/dist/dom/tree.js.map +1 -0
- package/dist/dom-external/element.d.ts +3 -0
- package/dist/dom-external/index.d.ts +1 -0
- package/dist/dom-external/mutation-observer/implements.d.ts +52 -0
- package/dist/dom-external/mutation-observer/implements.js +101 -0
- package/dist/dom-external/mutation-observer/implements.js.map +1 -0
- package/dist/dom-external/mutation-observer/index.d.ts +13 -0
- package/dist/dom-external/mutation-observer/index.js +32 -0
- package/dist/dom-external/mutation-observer/index.js.map +1 -0
- package/dist/dom-external/mutation-observer/record.d.ts +24 -0
- package/dist/dom-external/node.d.ts +5 -0
- package/dist/dsl/common.d.ts +14 -0
- package/dist/dsl/common.js +278 -0
- package/dist/dsl/common.js.map +1 -0
- package/dist/dsl/instance.d.ts +92 -0
- package/dist/emitter/emitter.d.ts +4 -0
- package/dist/emitter/emitter.js +7 -0
- package/dist/emitter/emitter.js.map +1 -0
- package/dist/env.d.ts +7 -0
- package/dist/env.js +10 -0
- package/dist/env.js.map +1 -0
- package/dist/hydrate.d.ts +10 -0
- package/dist/hydrate.js +62 -0
- package/dist/hydrate.js.map +1 -0
- package/dist/index.cjs.d.ts +35 -0
- package/dist/index.cjs.js +3776 -0
- package/dist/index.cjs.js.map +1 -0
- package/dist/index.d.ts +35 -0
- package/dist/index.js +34 -0
- package/dist/interface/animate.d.ts +81 -0
- package/dist/interface/element.d.ts +4 -0
- package/dist/interface/event-target.d.ts +11 -0
- package/dist/interface/event.d.ts +15 -0
- package/dist/interface/hydrate.d.ts +30 -0
- package/dist/interface/index.d.ts +8 -0
- package/dist/interface/node.d.ts +7 -0
- package/dist/interface/options.d.ts +5 -0
- package/dist/interface/utils.d.ts +2 -0
- package/dist/next-tick.d.ts +2 -0
- package/dist/next-tick.js +35 -0
- package/dist/next-tick.js.map +1 -0
- package/dist/options.d.ts +2 -0
- package/dist/options.js +9 -0
- package/dist/options.js.map +1 -0
- package/dist/perf.d.ts +9 -0
- package/dist/perf.js +36 -0
- package/dist/perf.js.map +1 -0
- package/dist/polyfill/array.d.ts +2 -0
- package/dist/polyfill/array.js +36 -0
- package/dist/polyfill/array.js.map +1 -0
- package/dist/polyfill/index.d.ts +2 -0
- package/dist/polyfill/index.js +20 -0
- package/dist/polyfill/index.js.map +1 -0
- package/dist/polyfill/intersection-observer.d.ts +1 -0
- package/dist/polyfill/intersection-observer.js +494 -0
- package/dist/polyfill/intersection-observer.js.map +1 -0
- package/dist/polyfill/object.d.ts +3 -0
- package/dist/polyfill/object.js +63 -0
- package/dist/polyfill/object.js.map +1 -0
- package/dist/runtime.esm.d.ts +35 -0
- package/dist/runtime.esm.js +3644 -0
- package/dist/runtime.esm.js.map +1 -0
- package/dist/utils/cache.d.ts +12 -0
- package/dist/utils/cache.js +26 -0
- package/dist/utils/cache.js.map +1 -0
- package/dist/utils/index.d.ts +25 -0
- package/dist/utils/index.js +82 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/lodash.d.ts +2 -0
- package/dist/utils/lodash.js +33 -0
- package/dist/utils/lodash.js.map +1 -0
- package/dist/utils/router.d.ts +7 -0
- package/dist/utils/router.js +19 -0
- package/dist/utils/router.js.map +1 -0
- package/package.json +45 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import './dom-external';
|
|
2
|
+
import env from './env';
|
|
3
|
+
export { hooks } from '@spcsn/taro-shared';
|
|
4
|
+
export { taroDocumentProvider as document } from './bom/document';
|
|
5
|
+
export { taroGetComputedStyleProvider as getComputedStyle } from './bom/getComputedStyle';
|
|
6
|
+
export { History } from './bom/history';
|
|
7
|
+
export { Location } from './bom/location';
|
|
8
|
+
export { nav as navigator } from './bom/navigator';
|
|
9
|
+
export { caf as cancelAnimationFrame, now, raf as requestAnimationFrame } from './bom/raf';
|
|
10
|
+
export { parseUrl, TaroURLProvider as URL } from './bom/URL';
|
|
11
|
+
export { URLSearchParams } from './bom/URLSearchParams';
|
|
12
|
+
export { taroHistoryProvider as history, taroLocationProvider as location, taroWindowProvider as window, } from './bom/window';
|
|
13
|
+
export { TaroElement } from './dom/element';
|
|
14
|
+
export { createEvent, eventHandler, eventHandlerTTDom, TaroEvent } from './dom/event';
|
|
15
|
+
export { FormElement } from './dom/form';
|
|
16
|
+
export { TaroNode } from './dom/node';
|
|
17
|
+
export { TaroRootElement } from './dom/root';
|
|
18
|
+
export { Style } from './dom/style';
|
|
19
|
+
export { SVGElement } from './dom/svg';
|
|
20
|
+
export { TaroText } from './dom/text';
|
|
21
|
+
export { MutationObserver } from './dom-external/mutation-observer';
|
|
22
|
+
export { env };
|
|
23
|
+
export * from './constants';
|
|
24
|
+
export { Current, getCurrentInstance } from './current';
|
|
25
|
+
export { eventSource } from './dom/event-source';
|
|
26
|
+
export { createComponentConfig, createPageConfig, createRecursiveComponentConfig, getOnHideEventKey, getOnReadyEventKey, getOnShowEventKey, getPageInstance, getPath, injectPageInstance, removePageInstance, safeExecute, stringify, } from './dsl/common';
|
|
27
|
+
export * from './emitter/emitter';
|
|
28
|
+
export { hydrate } from './hydrate';
|
|
29
|
+
export { nextTick } from './next-tick';
|
|
30
|
+
export { options } from './options';
|
|
31
|
+
export * from './perf';
|
|
32
|
+
export * from './utils';
|
|
33
|
+
export * from './dsl/instance';
|
|
34
|
+
export * from './interface';
|
|
35
|
+
export * from './polyfill';
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { A, APP, BEHAVIORS, BODY, CATCHMOVE, CATCH_VIEW, CHANGE, CLASS, CLICK_VIEW, COMMENT, COMPILE_MODE, CONFIRM, CONTAINER, CONTEXT_ACTIONS, CURRENT_TARGET, CUSTOM_WRAPPER, DATASET, DATE, DOCUMENT_ELEMENT_NAME, DOCUMENT_FRAGMENT, EVENT_CALLBACK_RESULT, EXTERNAL_CLASSES, FOCUS, HEAD, HOOKS_APP_ID, HTML, ID, INPUT, KEY_CODE, OBJECT, ON_HIDE, ON_LOAD, ON_READY, ON_SHOW, OPTIONS, PAGE_INIT, PROPERTY_THRESHOLD, PROPS, PURE_VIEW, ROOT_STR, SET_DATA, SET_TIMEOUT, STATIC_VIEW, STYLE, TARGET, TARO_RUNTIME, TIME_STAMP, TOUCHMOVE, TYPE, UID, VALUE, VIEW } from "./constants/index.js";
|
|
2
|
+
import { MutationObserver } from "./dom-external/mutation-observer/index.js";
|
|
3
|
+
import { debounce, throttle } from "./utils/lodash.js";
|
|
4
|
+
import { Events, eventCenter } from "./emitter/emitter.js";
|
|
5
|
+
import env from "./env.js";
|
|
6
|
+
import { taroGetComputedStyleProvider } from "./bom/getComputedStyle.js";
|
|
7
|
+
import { History } from "./bom/history.js";
|
|
8
|
+
import { Current, getCurrentInstance } from "./current.js";
|
|
9
|
+
import { URLSearchParams } from "./bom/URLSearchParams.js";
|
|
10
|
+
import { TaroURLProvider, parseUrl } from "./bom/URL.js";
|
|
11
|
+
import { Location } from "./bom/location.js";
|
|
12
|
+
import { nav } from "./bom/navigator.js";
|
|
13
|
+
import { _caf, _raf, now } from "./bom/raf.js";
|
|
14
|
+
import { taroHistoryProvider, taroLocationProvider, taroWindowProvider } from "./bom/window.js";
|
|
15
|
+
import { addLeadingSlash, getCurrentPage, getHomePage, hasBasename, stripBasename, stripSuffix, stripTrailing } from "./utils/router.js";
|
|
16
|
+
import { convertNumber2PX, customWrapperCache, extend, getComponentsAlias, incrementId, isComment, isElement, isHasExtractProp, isParentBound, isText, shortcutAttr } from "./utils/index.js";
|
|
17
|
+
import { eventSource } from "./dom/event-source.js";
|
|
18
|
+
import { hydrate } from "./hydrate.js";
|
|
19
|
+
import { TaroNode } from "./dom/node.js";
|
|
20
|
+
import { Style } from "./dom/style.js";
|
|
21
|
+
import { TaroElement } from "./dom/element.js";
|
|
22
|
+
import { options } from "./options.js";
|
|
23
|
+
import { TaroEvent, createEvent, eventHandler, eventHandlerTTDom } from "./dom/event.js";
|
|
24
|
+
import { FormElement } from "./dom/form.js";
|
|
25
|
+
import { perf } from "./perf.js";
|
|
26
|
+
import { TaroRootElement } from "./dom/root.js";
|
|
27
|
+
import { TaroText } from "./dom/text.js";
|
|
28
|
+
import { taroDocumentProvider } from "./bom/document.js";
|
|
29
|
+
import { SVGElement } from "./dom/svg.js";
|
|
30
|
+
import { createComponentConfig, createPageConfig, createRecursiveComponentConfig, getOnHideEventKey, getOnReadyEventKey, getOnShowEventKey, getPageInstance, getPath, injectPageInstance, removePageInstance, safeExecute, stringify } from "./dsl/common.js";
|
|
31
|
+
import { nextTick } from "./next-tick.js";
|
|
32
|
+
import { handlePolyfill } from "./polyfill/index.js";
|
|
33
|
+
import { hooks } from "@spcsn/taro-shared";
|
|
34
|
+
export { A, APP, BEHAVIORS, BODY, CATCHMOVE, CATCH_VIEW, CHANGE, CLASS, CLICK_VIEW, COMMENT, COMPILE_MODE, CONFIRM, CONTAINER, CONTEXT_ACTIONS, CURRENT_TARGET, CUSTOM_WRAPPER, Current, DATASET, DATE, DOCUMENT_ELEMENT_NAME, DOCUMENT_FRAGMENT, EVENT_CALLBACK_RESULT, EXTERNAL_CLASSES, Events, FOCUS, FormElement, HEAD, HOOKS_APP_ID, HTML, History, ID, INPUT, KEY_CODE, Location, MutationObserver, OBJECT, ON_HIDE, ON_LOAD, ON_READY, ON_SHOW, OPTIONS, PAGE_INIT, PROPERTY_THRESHOLD, PROPS, PURE_VIEW, ROOT_STR, SET_DATA, SET_TIMEOUT, STATIC_VIEW, STYLE, SVGElement, Style, TARGET, TARO_RUNTIME, TIME_STAMP, TOUCHMOVE, TYPE, TaroElement, TaroEvent, TaroNode, TaroRootElement, TaroText, UID, TaroURLProvider as URL, URLSearchParams, VALUE, VIEW, addLeadingSlash, _caf as cancelAnimationFrame, convertNumber2PX, createComponentConfig, createEvent, createPageConfig, createRecursiveComponentConfig, customWrapperCache, debounce, taroDocumentProvider as document, env, eventCenter, eventHandler, eventHandlerTTDom, eventSource, extend, getComponentsAlias, taroGetComputedStyleProvider as getComputedStyle, getCurrentInstance, getCurrentPage, getHomePage, getOnHideEventKey, getOnReadyEventKey, getOnShowEventKey, getPageInstance, getPath, handlePolyfill, hasBasename, taroHistoryProvider as history, hooks, hydrate, incrementId, injectPageInstance, isComment, isElement, isHasExtractProp, isParentBound, isText, taroLocationProvider as location, nav as navigator, nextTick, now, options, parseUrl, perf, removePageInstance, _raf as requestAnimationFrame, safeExecute, shortcutAttr, stringify, stripBasename, stripSuffix, stripTrailing, throttle, taroWindowProvider as window };
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/** @ignore */
|
|
2
|
+
export interface KeyFrame {
|
|
3
|
+
/** 关键帧的偏移,范围[0-1] */
|
|
4
|
+
offset?: number;
|
|
5
|
+
/** 动画缓动函数 */
|
|
6
|
+
ease?: string;
|
|
7
|
+
/** 基点位置,即 CSS transform-origin */
|
|
8
|
+
transformOrigin?: string;
|
|
9
|
+
/** 背景颜色,即 CSS background-color */
|
|
10
|
+
backgroundColor?: string;
|
|
11
|
+
/** 底边位置,即 CSS bottom */
|
|
12
|
+
bottom?: number | string;
|
|
13
|
+
/** 高度,即 CSS height */
|
|
14
|
+
height?: number | string;
|
|
15
|
+
/** 左边位置,即 CSS left */
|
|
16
|
+
left?: number | string;
|
|
17
|
+
/** 宽度,即 CSS width */
|
|
18
|
+
width?: number | string;
|
|
19
|
+
/** 不透明度,即 CSS opacity */
|
|
20
|
+
opacity?: number | string;
|
|
21
|
+
/** 右边位置,即 CSS right */
|
|
22
|
+
right?: number | string;
|
|
23
|
+
/** 顶边位置,即 CSS top */
|
|
24
|
+
top?: number | string;
|
|
25
|
+
/** 变换矩阵,即 CSS transform matrix */
|
|
26
|
+
matrix?: number[];
|
|
27
|
+
/** 三维变换矩阵,即 CSS transform matrix3d */
|
|
28
|
+
matrix3d?: number[];
|
|
29
|
+
/** 旋转,即 CSS transform rotate */
|
|
30
|
+
rotate?: number;
|
|
31
|
+
/** 三维旋转,即 CSS transform rotate3d */
|
|
32
|
+
rotate3d?: number[];
|
|
33
|
+
/** X 方向旋转,即 CSS transform rotateX */
|
|
34
|
+
rotateX?: number;
|
|
35
|
+
/** Y 方向旋转,即 CSS transform rotateY */
|
|
36
|
+
rotateY?: number;
|
|
37
|
+
/** Z 方向旋转,即 CSS transform rotateZ */
|
|
38
|
+
rotateZ?: number;
|
|
39
|
+
/** 缩放,即 CSS transform scale */
|
|
40
|
+
scale?: number[];
|
|
41
|
+
/** 三维缩放,即 CSS transform scale3d */
|
|
42
|
+
scale3d?: number[];
|
|
43
|
+
/** X 方向缩放,即 CSS transform scaleX */
|
|
44
|
+
scaleX?: number;
|
|
45
|
+
/** Y 方向缩放,即 CSS transform scaleY */
|
|
46
|
+
scaleY?: number;
|
|
47
|
+
/** Z 方向缩放,即 CSS transform scaleZ */
|
|
48
|
+
scaleZ?: number;
|
|
49
|
+
/** 倾斜,即 CSS transform skew */
|
|
50
|
+
skew?: number[];
|
|
51
|
+
/** X 方向倾斜,即 CSS transform skewX */
|
|
52
|
+
skewX?: number;
|
|
53
|
+
/** Y 方向倾斜,即 CSS transform skewY */
|
|
54
|
+
skewY?: number;
|
|
55
|
+
/** 位移,即 CSS transform translate */
|
|
56
|
+
translate?: Array<number | string>;
|
|
57
|
+
/** 三维位移,即 CSS transform translate3d */
|
|
58
|
+
translate3d?: Array<number | string>;
|
|
59
|
+
/** X 方向位移,即 CSS transform translateX */
|
|
60
|
+
translateX?: number | string;
|
|
61
|
+
/** Y 方向位移,即 CSS transform translateY */
|
|
62
|
+
translateY?: number | string;
|
|
63
|
+
/** Z 方向位移,即 CSS transform translateZ */
|
|
64
|
+
translateZ?: number | string;
|
|
65
|
+
composite?: 'replace' | 'add' | 'accumulate' | 'auto';
|
|
66
|
+
easing?: string;
|
|
67
|
+
[property: string]: any;
|
|
68
|
+
}
|
|
69
|
+
/** @ignore */
|
|
70
|
+
export interface ScrollTimelineOption {
|
|
71
|
+
/** 指定滚动元素的选择器(只支持 scroll-view),该元素滚动时会驱动动画的进度 */
|
|
72
|
+
scrollSource: string;
|
|
73
|
+
/** 指定滚动的方向。有效值为 horizontal 或 vertical */
|
|
74
|
+
orientation?: string;
|
|
75
|
+
/** 指定开始驱动动画进度的滚动偏移量,单位 px */
|
|
76
|
+
startScrollOffset: number;
|
|
77
|
+
/** 指定停止驱动动画进度的滚动偏移量,单位 px */
|
|
78
|
+
endScrollOffset: number;
|
|
79
|
+
/** 起始和结束的滚动范围映射的时间长度,该时间可用于与关键帧动画里的时间 (duration) 相匹配,单位 ms */
|
|
80
|
+
timeRange: number;
|
|
81
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface EventListenerOptions {
|
|
2
|
+
capture?: boolean;
|
|
3
|
+
}
|
|
4
|
+
export interface AddEventListenerOptions extends EventListenerOptions {
|
|
5
|
+
once?: boolean;
|
|
6
|
+
passive?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export interface EventHandler<T = any, R = void> {
|
|
9
|
+
(...args: T[]): R;
|
|
10
|
+
_stop?: boolean;
|
|
11
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface EventOptions {
|
|
2
|
+
bubbles: boolean;
|
|
3
|
+
cancelable: boolean;
|
|
4
|
+
}
|
|
5
|
+
type Target = Record<string, unknown> & {
|
|
6
|
+
dataset: Record<string, unknown>;
|
|
7
|
+
id: string;
|
|
8
|
+
};
|
|
9
|
+
export interface MpEvent {
|
|
10
|
+
type: string;
|
|
11
|
+
detail: Record<string, unknown>;
|
|
12
|
+
target: Target;
|
|
13
|
+
currentTarget: Target;
|
|
14
|
+
}
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { Shortcuts } from '@spcsn/taro-shared';
|
|
2
|
+
import type { PageConfig } from './utils';
|
|
3
|
+
export interface MpInstance {
|
|
4
|
+
config: PageConfig;
|
|
5
|
+
setData: (data: unknown, cb: () => void) => void;
|
|
6
|
+
route?: string;
|
|
7
|
+
__route__: string;
|
|
8
|
+
$taroParams?: Record<string, unknown>;
|
|
9
|
+
$taroPath: string;
|
|
10
|
+
__data__: any;
|
|
11
|
+
data: any;
|
|
12
|
+
exitState?: any;
|
|
13
|
+
selectComponent: (selector: string) => any;
|
|
14
|
+
__webviewId__?: number;
|
|
15
|
+
}
|
|
16
|
+
export interface MiniElementData {
|
|
17
|
+
[Shortcuts.Childnodes]?: MiniData[];
|
|
18
|
+
[Shortcuts.NodeName]: string;
|
|
19
|
+
[Shortcuts.Class]?: string;
|
|
20
|
+
[Shortcuts.Style]?: string;
|
|
21
|
+
uid?: string;
|
|
22
|
+
sid: string;
|
|
23
|
+
[key: string]: unknown;
|
|
24
|
+
}
|
|
25
|
+
export interface MiniTextData {
|
|
26
|
+
[Shortcuts.Text]: string;
|
|
27
|
+
[Shortcuts.NodeName]: string;
|
|
28
|
+
}
|
|
29
|
+
export type MiniData = MiniElementData | MiniTextData;
|
|
30
|
+
export type HydratedData = () => MiniData | MiniData[];
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { HydratedData } from './index';
|
|
2
|
+
export type UpdatePayloadValue = string | boolean | HydratedData;
|
|
3
|
+
export type DataTree = Record<string, UpdatePayloadValue | ReturnType<HydratedData>>;
|
|
4
|
+
export interface UpdatePayload {
|
|
5
|
+
path: string;
|
|
6
|
+
value: UpdatePayloadValue;
|
|
7
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import env from "./env.js";
|
|
2
|
+
import { Current } from "./current.js";
|
|
3
|
+
//#region src/next-tick.ts
|
|
4
|
+
const TIMEOUT = 100;
|
|
5
|
+
const nextTick = (cb, ctx) => {
|
|
6
|
+
const beginTime = Date.now();
|
|
7
|
+
const router = Current.router;
|
|
8
|
+
const timerFunc = () => {
|
|
9
|
+
setTimeout(function() {
|
|
10
|
+
ctx ? cb.call(ctx) : cb();
|
|
11
|
+
}, 1);
|
|
12
|
+
};
|
|
13
|
+
if (router === null) return timerFunc();
|
|
14
|
+
const path = router.$taroPath;
|
|
15
|
+
/**
|
|
16
|
+
* 三种情况
|
|
17
|
+
* 1. 调用 nextTick 时,pendingUpdate 已经从 true 变为 false(即已更新完成),那么需要光等 100ms
|
|
18
|
+
* 2. 调用 nextTick 时,pendingUpdate 为 true,那么刚好可以搭上便车
|
|
19
|
+
* 3. 调用 nextTick 时,pendingUpdate 还是 false,框架仍未启动更新逻辑,这时最多轮询 100ms,等待 pendingUpdate 变为 true。
|
|
20
|
+
*/
|
|
21
|
+
function next() {
|
|
22
|
+
const pageElement = env.document.getElementById(path);
|
|
23
|
+
if (pageElement?.pendingUpdate) if (process.env.TARO_PLATFORM === "web") pageElement.firstChild?.["componentOnReady"]?.().then(() => {
|
|
24
|
+
timerFunc();
|
|
25
|
+
}) ?? timerFunc();
|
|
26
|
+
else pageElement.enqueueUpdateCallback(cb, ctx);
|
|
27
|
+
else if (Date.now() - beginTime > TIMEOUT) timerFunc();
|
|
28
|
+
else setTimeout(() => next(), 20);
|
|
29
|
+
}
|
|
30
|
+
next();
|
|
31
|
+
};
|
|
32
|
+
//#endregion
|
|
33
|
+
export { nextTick };
|
|
34
|
+
|
|
35
|
+
//# sourceMappingURL=next-tick.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"next-tick.js","names":[],"sources":["../src/next-tick.ts"],"sourcesContent":["import { Current } from './current';\nimport { TaroRootElement } from './dom/root';\nimport env from './env';\n\nimport type { TFunc } from './interface';\n\nconst TIMEOUT = 100;\n\nexport const nextTick = (cb: TFunc, ctx?: Record<string, any>) => {\n const beginTime = Date.now();\n const router = Current.router;\n\n const timerFunc = () => {\n setTimeout(function () {\n ctx ? cb.call(ctx) : cb();\n }, 1);\n };\n\n if (router === null) return timerFunc();\n\n const path = router.$taroPath;\n\n /**\n * 三种情况\n * 1. 调用 nextTick 时,pendingUpdate 已经从 true 变为 false(即已更新完成),那么需要光等 100ms\n * 2. 调用 nextTick 时,pendingUpdate 为 true,那么刚好可以搭上便车\n * 3. 调用 nextTick 时,pendingUpdate 还是 false,框架仍未启动更新逻辑,这时最多轮询 100ms,等待 pendingUpdate 变为 true。\n */\n function next() {\n const pageElement: TaroRootElement | null = env.document.getElementById<TaroRootElement>(path);\n if (pageElement?.pendingUpdate) {\n if (process.env.TARO_PLATFORM === 'web') {\n // eslint-disable-next-line dot-notation\n pageElement.firstChild?.['componentOnReady']?.().then(() => {\n timerFunc();\n }) ?? timerFunc();\n } else {\n pageElement.enqueueUpdateCallback(cb, ctx);\n }\n } else if (Date.now() - beginTime > TIMEOUT) {\n timerFunc();\n } else {\n setTimeout(() => next(), 20);\n }\n }\n\n next();\n};\n"],"mappings":";;;AAMA,MAAM,UAAU;AAEhB,MAAa,YAAY,IAAW,QAA8B;CAChE,MAAM,YAAY,KAAK,IAAI;CAC3B,MAAM,SAAS,QAAQ;CAEvB,MAAM,kBAAkB;EACtB,WAAW,WAAY;GACrB,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG;EAC1B,GAAG,CAAC;CACN;CAEA,IAAI,WAAW,MAAM,OAAO,UAAU;CAEtC,MAAM,OAAO,OAAO;;;;;;;CAQpB,SAAS,OAAO;EACd,MAAM,cAAsC,IAAI,SAAS,eAAgC,IAAI;EAC7F,IAAI,aAAa,eACf,IAAI,QAAQ,IAAI,kBAAkB,OAEhC,YAAY,aAAa,sBAAsB,EAAE,WAAW;GAC1D,UAAU;EACZ,CAAC,KAAK,UAAU;OAEhB,YAAY,sBAAsB,IAAI,GAAG;OAEtC,IAAI,KAAK,IAAI,IAAI,YAAY,SAClC,UAAU;OAEV,iBAAiB,KAAK,GAAG,EAAE;CAE/B;CAEA,KAAK;AACP"}
|
package/dist/options.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options.js","names":[],"sources":["../src/options.ts"],"sourcesContent":["import type { Options } from './interface';\n\nexport const options: Options = {\n prerender: true,\n debug: false,\n};\n"],"mappings":";AAEA,MAAa,UAAmB;CAC9B,WAAW;CACX,OAAO;AACT"}
|
package/dist/perf.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
declare class Performance {
|
|
2
|
+
#private;
|
|
3
|
+
private recorder;
|
|
4
|
+
start(id: string): void;
|
|
5
|
+
stop(id: string, now?: number): void;
|
|
6
|
+
delayStop(id: string, delay?: number): ((...args: any[]) => void) | undefined;
|
|
7
|
+
}
|
|
8
|
+
export declare const perf: Performance;
|
|
9
|
+
export {};
|
package/dist/perf.js
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { debounce } from "./utils/lodash.js";
|
|
2
|
+
import { options } from "./options.js";
|
|
3
|
+
//#region src/perf.ts
|
|
4
|
+
var Performance = class {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.recorder = /* @__PURE__ */ new Map();
|
|
7
|
+
}
|
|
8
|
+
start(id) {
|
|
9
|
+
if (!options.debug) return;
|
|
10
|
+
this.recorder.set(id, Date.now());
|
|
11
|
+
}
|
|
12
|
+
stop(id, now = Date.now()) {
|
|
13
|
+
if (!options.debug) return;
|
|
14
|
+
const prev = this.recorder.get(id);
|
|
15
|
+
if (!(prev >= 0)) return;
|
|
16
|
+
this.recorder.delete(id);
|
|
17
|
+
const time = now - prev;
|
|
18
|
+
console.log(`${id} 时长: ${time}ms 开始时间:${this.#parseTime(prev)} 结束时间:${this.#parseTime(now)}`);
|
|
19
|
+
}
|
|
20
|
+
delayStop(id, delay = 500) {
|
|
21
|
+
if (!options.debug) return;
|
|
22
|
+
return debounce((now = Date.now(), cb) => {
|
|
23
|
+
this.stop(id, now);
|
|
24
|
+
cb?.();
|
|
25
|
+
}, delay);
|
|
26
|
+
}
|
|
27
|
+
#parseTime(time) {
|
|
28
|
+
const d = new Date(time);
|
|
29
|
+
return `${d.getHours()}:${d.getMinutes()}:${d.getSeconds()}.${`${d.getMilliseconds()}`.padStart(3, "0")}`;
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
const perf = new Performance();
|
|
33
|
+
//#endregion
|
|
34
|
+
export { perf };
|
|
35
|
+
|
|
36
|
+
//# sourceMappingURL=perf.js.map
|
package/dist/perf.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"perf.js","names":["#parseTime"],"sources":["../src/perf.ts"],"sourcesContent":["import { options } from './options';\nimport { debounce } from './utils';\n\nimport type { TFunc } from './interface';\n\nclass Performance {\n private recorder = new Map<string, number>();\n\n public start(id: string) {\n if (!options.debug) {\n return;\n }\n this.recorder.set(id, Date.now());\n }\n\n public stop(id: string, now = Date.now()) {\n if (!options.debug) {\n return;\n }\n const prev = this.recorder.get(id)!;\n if (!(prev >= 0)) return;\n\n this.recorder.delete(id);\n const time = now - prev;\n // eslint-disable-next-line no-console\n console.log(`${id} 时长: ${time}ms 开始时间:${this.#parseTime(prev)} 结束时间:${this.#parseTime(now)}`);\n }\n\n public delayStop(id: string, delay = 500) {\n if (!options.debug) {\n return;\n }\n\n return debounce((now = Date.now(), cb?: TFunc) => {\n this.stop(id, now);\n cb?.();\n }, delay);\n }\n\n #parseTime(time: number) {\n const d = new Date(time);\n return `${d.getHours()}:${d.getMinutes()}:${d.getSeconds()}.${`${d.getMilliseconds()}`.padStart(3, '0')}`;\n }\n}\n\nexport const perf = new Performance();\n"],"mappings":";;;AAKA,IAAM,cAAN,MAAkB;;kCACG,IAAI,IAAoB;;CAE3C,MAAa,IAAY;EACvB,IAAI,CAAC,QAAQ,OACX;EAEF,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,CAAC;CAClC;CAEA,KAAY,IAAY,MAAM,KAAK,IAAI,GAAG;EACxC,IAAI,CAAC,QAAQ,OACX;EAEF,MAAM,OAAO,KAAK,SAAS,IAAI,EAAE;EACjC,IAAI,EAAE,QAAQ,IAAI;EAElB,KAAK,SAAS,OAAO,EAAE;EACvB,MAAM,OAAO,MAAM;EAEnB,QAAQ,IAAI,GAAG,GAAG,OAAO,KAAK,UAAU,KAAKA,WAAW,IAAI,EAAE,QAAQ,KAAKA,WAAW,GAAG,GAAG;CAC9F;CAEA,UAAiB,IAAY,QAAQ,KAAK;EACxC,IAAI,CAAC,QAAQ,OACX;EAGF,OAAO,UAAU,MAAM,KAAK,IAAI,GAAG,OAAe;GAChD,KAAK,KAAK,IAAI,GAAG;GACjB,KAAK;EACP,GAAG,KAAK;CACV;CAEA,WAAW,MAAc;EACvB,MAAM,IAAI,IAAI,KAAK,IAAI;EACvB,OAAO,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,GAAG,EAAE,gBAAgB,IAAI,SAAS,GAAG,GAAG;CACxG;AACF;AAEA,MAAa,OAAO,IAAI,YAAY"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { isFunction } from "@spcsn/taro-shared";
|
|
2
|
+
//#region src/polyfill/array.ts
|
|
3
|
+
function handleArrayFindPolyfill() {
|
|
4
|
+
if (!isFunction(Array.prototype.find)) Object.defineProperty(Array.prototype, "find", { value(predicate) {
|
|
5
|
+
if (this == null) throw new TypeError("\"this\" is null or not defined");
|
|
6
|
+
const o = Object(this);
|
|
7
|
+
const len = o.length >>> 0;
|
|
8
|
+
if (!isFunction(predicate)) throw new TypeError("predicate must be a function");
|
|
9
|
+
const thisArg = arguments[1];
|
|
10
|
+
let k = 0;
|
|
11
|
+
while (k < len) {
|
|
12
|
+
const kValue = o[k];
|
|
13
|
+
if (predicate.call(thisArg, kValue, k, o)) return kValue;
|
|
14
|
+
k++;
|
|
15
|
+
}
|
|
16
|
+
} });
|
|
17
|
+
}
|
|
18
|
+
function handleArrayIncludesPolyfill() {
|
|
19
|
+
if (!isFunction(Array.prototype.includes)) Object.defineProperty(Array.prototype, "includes", { value(searchElement, fromIndex) {
|
|
20
|
+
if (this == null) throw new TypeError("\"this\" is null or not defined");
|
|
21
|
+
const o = Object(this);
|
|
22
|
+
const len = o.length >>> 0;
|
|
23
|
+
if (len === 0) return false;
|
|
24
|
+
const n = fromIndex | 0;
|
|
25
|
+
let k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);
|
|
26
|
+
while (k < len) {
|
|
27
|
+
if (o[k] === searchElement) return true;
|
|
28
|
+
k++;
|
|
29
|
+
}
|
|
30
|
+
return false;
|
|
31
|
+
} });
|
|
32
|
+
}
|
|
33
|
+
//#endregion
|
|
34
|
+
export { handleArrayFindPolyfill, handleArrayIncludesPolyfill };
|
|
35
|
+
|
|
36
|
+
//# sourceMappingURL=array.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"array.js","names":[],"sources":["../../src/polyfill/array.ts"],"sourcesContent":["import { isFunction } from '@spcsn/taro-shared'\n\nexport function handleArrayFindPolyfill () {\n if (!isFunction(Array.prototype.find)) {\n Object.defineProperty(Array.prototype, 'find', {\n value (predicate) {\n if (this == null) {\n throw new TypeError('\"this\" is null or not defined')\n }\n const o = Object(this)\n const len = o.length >>> 0\n if (!isFunction(predicate)) {\n throw new TypeError('predicate must be a function')\n }\n const thisArg = arguments[1]\n let k = 0\n while (k < len) {\n const kValue = o[k]\n if (predicate.call(thisArg, kValue, k, o)) {\n return kValue\n }\n k++\n }\n return undefined\n }\n })\n }\n}\n\nexport function handleArrayIncludesPolyfill () {\n if (!isFunction(Array.prototype.includes)) {\n Object.defineProperty(Array.prototype, 'includes', {\n value (searchElement, fromIndex) {\n if (this == null) {\n throw new TypeError('\"this\" is null or not defined')\n }\n const o = Object(this)\n const len = o.length >>> 0\n if (len === 0) {\n return false\n }\n const n = fromIndex | 0\n let k = Math.max(n >= 0 ? n : len - Math.abs(n), 0)\n while (k < len) {\n if (o[k] === searchElement) {\n return true\n }\n k++\n }\n return false\n }\n })\n }\n}\n"],"mappings":";;AAEA,SAAgB,0BAA2B;CACzC,IAAI,CAAC,WAAW,MAAM,UAAU,IAAI,GAClC,OAAO,eAAe,MAAM,WAAW,QAAQ,EAC7C,MAAO,WAAW;EAChB,IAAI,QAAQ,MACV,MAAM,IAAI,UAAU,iCAA+B;EAErD,MAAM,IAAI,OAAO,IAAI;EACrB,MAAM,MAAM,EAAE,WAAW;EACzB,IAAI,CAAC,WAAW,SAAS,GACvB,MAAM,IAAI,UAAU,8BAA8B;EAEpD,MAAM,UAAU,UAAU;EAC1B,IAAI,IAAI;EACR,OAAO,IAAI,KAAK;GACd,MAAM,SAAS,EAAE;GACjB,IAAI,UAAU,KAAK,SAAS,QAAQ,GAAG,CAAC,GACtC,OAAO;GAET;EACF;CAEF,EACF,CAAC;AAEL;AAEA,SAAgB,8BAA+B;CAC7C,IAAI,CAAC,WAAW,MAAM,UAAU,QAAQ,GACtC,OAAO,eAAe,MAAM,WAAW,YAAY,EACjD,MAAO,eAAe,WAAW;EAC/B,IAAI,QAAQ,MACV,MAAM,IAAI,UAAU,iCAA+B;EAErD,MAAM,IAAI,OAAO,IAAI;EACrB,MAAM,MAAM,EAAE,WAAW;EACzB,IAAI,QAAQ,GACV,OAAO;EAET,MAAM,IAAI,YAAY;EACtB,IAAI,IAAI,KAAK,IAAI,KAAK,IAAI,IAAI,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC;EAClD,OAAO,IAAI,KAAK;GACd,IAAI,EAAE,OAAO,eACX,OAAO;GAET;EACF;EACA,OAAO;CACT,EACF,CAAC;AAEL"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { handleArrayFindPolyfill, handleArrayIncludesPolyfill } from "./array.js";
|
|
2
|
+
import { handleIntersectionObserverPolyfill } from "./intersection-observer.js";
|
|
3
|
+
import { handleObjectAssignPolyfill, handleObjectDefinePropertyPolyfill, handleObjectEntriesPolyfill } from "./object.js";
|
|
4
|
+
import { isObject } from "@spcsn/taro-shared";
|
|
5
|
+
//#region src/polyfill/index.ts
|
|
6
|
+
function handlePolyfill() {
|
|
7
|
+
if (process.env.SUPPORT_TARO_POLYFILL === "enabled" || process.env.SUPPORT_TARO_POLYFILL === "Object" || process.env.SUPPORT_TARO_POLYFILL === "Object.assign") handleObjectAssignPolyfill();
|
|
8
|
+
if (process.env.SUPPORT_TARO_POLYFILL === "enabled" || process.env.SUPPORT_TARO_POLYFILL === "Object" || process.env.SUPPORT_TARO_POLYFILL === "Object.entries") handleObjectEntriesPolyfill();
|
|
9
|
+
if (process.env.SUPPORT_TARO_POLYFILL === "enabled" || process.env.SUPPORT_TARO_POLYFILL === "Object" || process.env.SUPPORT_TARO_POLYFILL === "Object.defineProperty") handleObjectDefinePropertyPolyfill();
|
|
10
|
+
if (process.env.SUPPORT_TARO_POLYFILL === "enabled" || process.env.SUPPORT_TARO_POLYFILL === "Array" || process.env.SUPPORT_TARO_POLYFILL === "Array.find") handleArrayFindPolyfill();
|
|
11
|
+
if (process.env.SUPPORT_TARO_POLYFILL === "enabled" || process.env.SUPPORT_TARO_POLYFILL === "Array" || process.env.SUPPORT_TARO_POLYFILL === "Array.includes") handleArrayIncludesPolyfill();
|
|
12
|
+
if (process.env.TARO_PLATFORM === "web" && isObject(window)) {
|
|
13
|
+
if (process.env.SUPPORT_TARO_POLYFILL === "enabled" || process.env.SUPPORT_TARO_POLYFILL === "IntersectionObserver") handleIntersectionObserverPolyfill();
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
if (process.env.SUPPORT_TARO_POLYFILL !== "disabled" && process.env.TARO_PLATFORM !== "web") handlePolyfill();
|
|
17
|
+
//#endregion
|
|
18
|
+
export { handlePolyfill };
|
|
19
|
+
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../src/polyfill/index.ts"],"sourcesContent":["import { isObject } from '@spcsn/taro-shared'\n\nimport { handleArrayFindPolyfill, handleArrayIncludesPolyfill } from './array'\nimport { handleIntersectionObserverPolyfill } from './intersection-observer'\nimport { handleObjectAssignPolyfill, handleObjectDefinePropertyPolyfill, handleObjectEntriesPolyfill } from './object'\n\nfunction handlePolyfill () {\n if (process.env.SUPPORT_TARO_POLYFILL === 'enabled' || process.env.SUPPORT_TARO_POLYFILL === 'Object' || process.env.SUPPORT_TARO_POLYFILL === 'Object.assign') {\n handleObjectAssignPolyfill()\n }\n if (process.env.SUPPORT_TARO_POLYFILL === 'enabled' || process.env.SUPPORT_TARO_POLYFILL === 'Object' || process.env.SUPPORT_TARO_POLYFILL === 'Object.entries') {\n handleObjectEntriesPolyfill()\n }\n if (process.env.SUPPORT_TARO_POLYFILL === 'enabled' || process.env.SUPPORT_TARO_POLYFILL === 'Object' || process.env.SUPPORT_TARO_POLYFILL === 'Object.defineProperty') {\n handleObjectDefinePropertyPolyfill()\n }\n if (process.env.SUPPORT_TARO_POLYFILL === 'enabled' || process.env.SUPPORT_TARO_POLYFILL === 'Array' || process.env.SUPPORT_TARO_POLYFILL === 'Array.find') {\n handleArrayFindPolyfill()\n }\n if (process.env.SUPPORT_TARO_POLYFILL === 'enabled' || process.env.SUPPORT_TARO_POLYFILL === 'Array' || process.env.SUPPORT_TARO_POLYFILL === 'Array.includes') {\n handleArrayIncludesPolyfill()\n }\n // Exit early if we're not running in a browser.\n if (process.env.TARO_PLATFORM === 'web' && isObject(window)) {\n if (process.env.SUPPORT_TARO_POLYFILL === 'enabled' || process.env.SUPPORT_TARO_POLYFILL === 'IntersectionObserver') {\n handleIntersectionObserverPolyfill()\n }\n }\n}\n\nif (process.env.SUPPORT_TARO_POLYFILL !== 'disabled' && process.env.TARO_PLATFORM !== 'web') {\n handlePolyfill()\n}\n\nexport { handlePolyfill }\n\n"],"mappings":";;;;;AAMA,SAAS,iBAAkB;CACzB,IAAI,QAAQ,IAAI,0BAA0B,aAAa,QAAQ,IAAI,0BAA0B,YAAY,QAAQ,IAAI,0BAA0B,iBAC7I,2BAA2B;CAE7B,IAAI,QAAQ,IAAI,0BAA0B,aAAa,QAAQ,IAAI,0BAA0B,YAAY,QAAQ,IAAI,0BAA0B,kBAC7I,4BAA4B;CAE9B,IAAI,QAAQ,IAAI,0BAA0B,aAAa,QAAQ,IAAI,0BAA0B,YAAY,QAAQ,IAAI,0BAA0B,yBAC7I,mCAAmC;CAErC,IAAI,QAAQ,IAAI,0BAA0B,aAAa,QAAQ,IAAI,0BAA0B,WAAW,QAAQ,IAAI,0BAA0B,cAC5I,wBAAwB;CAE1B,IAAI,QAAQ,IAAI,0BAA0B,aAAa,QAAQ,IAAI,0BAA0B,WAAW,QAAQ,IAAI,0BAA0B,kBAC5I,4BAA4B;CAG9B,IAAI,QAAQ,IAAI,kBAAkB,SAAS,SAAS,MAAM;MACpD,QAAQ,IAAI,0BAA0B,aAAa,QAAQ,IAAI,0BAA0B,wBAC3F,mCAAmC;CAAA;AAGzC;AAEA,IAAI,QAAQ,IAAI,0BAA0B,cAAc,QAAQ,IAAI,kBAAkB,OACpF,eAAe"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function handleIntersectionObserverPolyfill(): void;
|