@tarojs/shared 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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-apis.js","sources":["../src/native-apis.ts"],"sourcesContent":["import { isFunction, isString } from './is'\nimport { nonsupport, setUniqueKeyToRoute } from './utils'\n\ndeclare const getCurrentPages: () => any\ndeclare const getApp: () => any\ndeclare const requirePlugin: () => void\n\ntype IObject = Record<string, any>\n\ninterface IProcessApisIOptions {\n noPromiseApis?: Set<string>\n needPromiseApis?: Set<string>\n handleSyncApis?: (key: string, global: IObject, args: any[]) => any\n transformMeta?: (key: string, options: IObject) => { key: string, options: IObject }\n modifyApis?: (apis: Set<string>) => void\n modifyAsyncResult?: (key: string, res) => void\n isOnlyPromisify?: boolean\n [propName: string]: any\n}\n\nexport interface IApiDiff {\n [key: string]: {\n /** API重命名 */\n alias?: string\n options?: {\n /** API参数键名修改 */\n change?: {\n old: string\n new: string\n }[]\n /** API参数值修改 */\n set?: {\n key: string\n value: ((options: Record<string, any>) => unknown) | unknown\n }[]\n }\n }\n}\n\nconst needPromiseApis = new Set<string>([\n 'addPhoneContact',\n 'authorize',\n 'canvasGetImageData',\n 'canvasPutImageData',\n 'canvasToTempFilePath',\n 'checkSession',\n 'chooseAddress',\n 'chooseImage',\n 'chooseInvoiceTitle',\n 'chooseLocation',\n 'chooseVideo',\n 'clearStorage',\n 'closeBLEConnection',\n 'closeBluetoothAdapter',\n 'closeSocket',\n 'compressImage',\n 'connectSocket',\n 'createBLEConnection',\n 'downloadFile',\n 'exitMiniProgram',\n 'getAvailableAudioSources',\n 'getBLEDeviceCharacteristics',\n 'getBLEDeviceServices',\n 'getBatteryInfo',\n 'getBeacons',\n 'getBluetoothAdapterState',\n 'getBluetoothDevices',\n 'getClipboardData',\n 'getConnectedBluetoothDevices',\n 'getConnectedWifi',\n 'getExtConfig',\n 'getFileInfo',\n 'getImageInfo',\n 'getLocation',\n 'getNetworkType',\n 'getSavedFileInfo',\n 'getSavedFileList',\n 'getScreenBrightness',\n 'getSetting',\n 'getStorage',\n 'getStorageInfo',\n 'getSystemInfo',\n 'getUserInfo',\n 'getWifiList',\n 'hideHomeButton',\n 'hideShareMenu',\n 'hideTabBar',\n 'hideTabBarRedDot',\n 'loadFontFace',\n 'login',\n 'makePhoneCall',\n 'navigateBack',\n 'navigateBackMiniProgram',\n 'navigateTo',\n 'navigateToBookshelf',\n 'navigateToMiniProgram',\n 'notifyBLECharacteristicValueChange',\n 'hideKeyboard',\n 'hideLoading',\n 'hideNavigationBarLoading',\n 'hideToast',\n 'openBluetoothAdapter',\n 'openDocument',\n 'openLocation',\n 'openSetting',\n 'pageScrollTo',\n 'previewImage',\n 'queryBookshelf',\n 'reLaunch',\n 'readBLECharacteristicValue',\n 'redirectTo',\n 'removeSavedFile',\n 'removeStorage',\n 'removeTabBarBadge',\n 'requestSubscribeMessage',\n 'saveFile',\n 'saveImageToPhotosAlbum',\n 'saveVideoToPhotosAlbum',\n 'scanCode',\n 'sendSocketMessage',\n 'setBackgroundColor',\n 'setBackgroundTextStyle',\n 'setClipboardData',\n 'setEnableDebug',\n 'setInnerAudioOption',\n 'setKeepScreenOn',\n 'setNavigationBarColor',\n 'setNavigationBarTitle',\n 'setScreenBrightness',\n 'setStorage',\n 'setTabBarBadge',\n 'setTabBarItem',\n 'setTabBarStyle',\n 'showActionSheet',\n 'showFavoriteGuide',\n 'showLoading',\n 'showModal',\n 'showShareMenu',\n 'showTabBar',\n 'showTabBarRedDot',\n 'showToast',\n 'startBeaconDiscovery',\n 'startBluetoothDevicesDiscovery',\n 'startDeviceMotionListening',\n 'startPullDownRefresh',\n 'stopBeaconDiscovery',\n 'stopBluetoothDevicesDiscovery',\n 'stopCompass',\n 'startCompass',\n 'startAccelerometer',\n 'stopAccelerometer',\n 'showNavigationBarLoading',\n 'stopDeviceMotionListening',\n 'stopPullDownRefresh',\n 'switchTab',\n 'uploadFile',\n 'vibrateLong',\n 'vibrateShort',\n 'writeBLECharacteristicValue'\n])\n\nfunction getCanIUseWebp (taro) {\n return function () {\n const res = taro.getSystemInfoSync?.()\n\n if (!res) {\n if (process.env.NODE_ENV !== 'production') {\n console.error('不支持 API canIUseWebp')\n }\n return false\n }\n\n const { platform } = res\n\n const platformLower = platform.toLowerCase()\n if (platformLower === 'android' || platformLower === 'devtools') {\n return true\n }\n return false\n }\n}\n\nfunction getNormalRequest (global) {\n return function request (options) {\n options = options\n ? (\n isString(options)\n ? { url: options }\n : options\n )\n : {}\n\n const originSuccess = options.success\n const originFail = options.fail\n const originComplete = options.complete\n let requestTask\n const p: any = new Promise((resolve, reject) => {\n options.success = res => {\n originSuccess && originSuccess(res)\n resolve(res)\n }\n options.fail = res => {\n originFail && originFail(res)\n reject(res)\n }\n\n options.complete = res => {\n originComplete && originComplete(res)\n }\n\n requestTask = global.request(options)\n })\n\n equipTaskMethodsIntoPromise(requestTask, p)\n\n p.abort = (cb) => {\n cb && cb()\n if (requestTask) {\n requestTask.abort()\n }\n return p\n }\n return p\n }\n}\n\nfunction processApis (taro, global, config: IProcessApisIOptions = {}) {\n const patchNeedPromiseApis = config.needPromiseApis || []\n const _needPromiseApis = new Set<string>([...patchNeedPromiseApis, ...needPromiseApis])\n const preserved = [\n 'getEnv',\n 'interceptors',\n 'Current',\n 'getCurrentInstance',\n 'options',\n 'nextTick',\n 'eventCenter',\n 'Events',\n 'preload',\n 'webpackJsonp'\n ]\n\n const apis = new Set(\n !config.isOnlyPromisify\n ? Object.keys(global).filter(api => preserved.indexOf(api) === -1)\n : patchNeedPromiseApis\n )\n\n if (config.modifyApis) {\n config.modifyApis(apis)\n }\n\n apis.forEach(key => {\n if (_needPromiseApis.has(key)) {\n const originKey = key\n taro[originKey] = (options: Record<string, any> | string = {}, ...args) => {\n let key = originKey\n\n // 第一个参数 options 为字符串,单独处理\n if (typeof options === 'string') {\n if (args.length) {\n return global[key](options, ...args)\n }\n return global[key](options)\n }\n\n // 改变 key 或 option 字段,如需要把支付宝标准的字段对齐微信标准的字段\n if (config.transformMeta) {\n const transformResult = config.transformMeta(key, options)\n key = transformResult.key\n ; (options as Record<string, any>) = transformResult.options\n // 新 key 可能不存在\n if (!global.hasOwnProperty(key)) {\n return nonsupport(key)()\n }\n }\n\n let task: any = null\n const obj: Record<string, any> = Object.assign({}, options)\n\n // 为页面跳转相关的 API 设置一个随机数作为路由参数。为了给 runtime 区分页面。\n setUniqueKeyToRoute(key, options)\n\n // Promise 化\n const p: any = new Promise((resolve, reject) => {\n obj.success = res => {\n config.modifyAsyncResult?.(key, res)\n options.success?.(res)\n if (key === 'connectSocket') {\n resolve(\n Promise.resolve().then(() => task ? Object.assign(task, res) : res)\n )\n } else {\n resolve(res)\n }\n }\n obj.fail = res => {\n options.fail?.(res)\n reject(res)\n }\n obj.complete = res => {\n options.complete?.(res)\n }\n if (args.length) {\n task = global[key](obj, ...args)\n } else {\n task = global[key](obj)\n }\n })\n\n // 给 promise 对象挂载属性\n if (['uploadFile', 'downloadFile'].includes(key)) {\n equipTaskMethodsIntoPromise(task, p)\n p.progress = cb => {\n task?.onProgressUpdate(cb)\n return p\n }\n p.abort = cb => {\n cb?.()\n task?.abort()\n return p\n }\n }\n return p\n }\n } else {\n let platformKey = key\n\n // 改变 key 或 option 字段,如需要把支付宝标准的字段对齐微信标准的字段\n if (config.transformMeta) {\n platformKey = config.transformMeta(key, {}).key\n }\n\n // API 不存在\n if (!global.hasOwnProperty(platformKey)) {\n taro[key] = nonsupport(key)\n return\n }\n if (isFunction(global[key])) {\n taro[key] = (...args) => {\n if (config.handleSyncApis) {\n return config.handleSyncApis(key, global, args)\n } else {\n return global[platformKey].apply(global, args)\n }\n }\n } else {\n taro[key] = global[platformKey]\n }\n }\n })\n\n !config.isOnlyPromisify && equipCommonApis(taro, global, config)\n}\n\n/**\n * 挂载常用 API\n * @param taro Taro 对象\n * @param global 小程序全局对象,如微信的 wx,支付宝的 my\n */\nfunction equipCommonApis (taro, global, apis: Record<string, any> = {}) {\n taro.canIUseWebp = getCanIUseWebp(taro)\n taro.getCurrentPages = getCurrentPages || nonsupport('getCurrentPages')\n taro.getApp = getApp || nonsupport('getApp')\n taro.env = global.env || {}\n\n try {\n taro.requirePlugin = requirePlugin || nonsupport('requirePlugin')\n } catch (error) {\n taro.requirePlugin = nonsupport('requirePlugin')\n }\n\n // request & interceptors\n const request = apis.request || getNormalRequest(global)\n function taroInterceptor (chain) {\n return request(chain.requestParams)\n }\n const link = new taro.Link(taroInterceptor)\n taro.request = link.request.bind(link)\n taro.addInterceptor = link.addInterceptor.bind(link)\n taro.cleanInterceptors = link.cleanInterceptors.bind(link)\n taro.miniGlobal = taro.options.miniGlobal = global\n taro.getAppInfo = function () {\n return {\n platform: process.env.TARO_PLATFORM || 'MiniProgram',\n taroVersion: process.env.TARO_VERSION || 'unknown',\n designWidth: taro.config.designWidth\n }\n }\n taro.createSelectorQuery = delayRef(taro, global, 'createSelectorQuery', 'exec')\n taro.createIntersectionObserver = delayRef(taro, global, 'createIntersectionObserver', 'observe')\n}\n\n/**\n * 将Task对象中的方法挂载到promise对象中,适配小程序api原生返回结果\n * @param task Task对象 {RequestTask | DownloadTask | UploadTask}\n * @param promise Promise\n */\nfunction equipTaskMethodsIntoPromise (task, promise) {\n if (!task || !promise) return\n const taskMethods = ['abort', 'onHeadersReceived', 'offHeadersReceived', 'onProgressUpdate', 'offProgressUpdate', 'onChunkReceived', 'offChunkReceived']\n task && taskMethods.forEach(method => {\n if (method in task) {\n promise[method] = task[method].bind(task)\n }\n })\n}\n\nfunction delayRef (taro, global, name: string, method: string) {\n return function (...args) {\n const res = global[name](...args)\n const raw = res[method].bind(res)\n res[method] = function (...methodArgs) {\n taro.nextTick(() => raw(...methodArgs))\n }\n return res\n }\n}\n\nexport {\n processApis\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,143 @@
1
+ import { Events } from './event-emitter';
2
+ import type { Shortcuts } from './template';
3
+ type TFunc = (...args: any[]) => any;
4
+ export declare enum HOOK_TYPE {
5
+ SINGLE = 0,
6
+ MULTI = 1,
7
+ WATERFALL = 2
8
+ }
9
+ interface Hook {
10
+ type: HOOK_TYPE;
11
+ initial?: TFunc | null;
12
+ }
13
+ interface MiniLifecycle {
14
+ app: [
15
+ string, /** onLaunch */
16
+ string, /** onShow */
17
+ string /** onHide */
18
+ ];
19
+ page: [
20
+ string, /** onLoad */
21
+ string, /** onUnload */
22
+ string, /** onReady */
23
+ string, /** onShow */
24
+ string, /** onHide */
25
+ string[], /** others */
26
+ string[] /** side-effects */
27
+ ];
28
+ component: [
29
+ string, /** attached */
30
+ string
31
+ ];
32
+ }
33
+ interface MiniElementData {
34
+ [Shortcuts.Childnodes]?: MiniData[];
35
+ [Shortcuts.NodeName]: string;
36
+ [Shortcuts.Class]?: string;
37
+ [Shortcuts.Style]?: string;
38
+ uid?: string;
39
+ sid: string;
40
+ [key: string]: unknown;
41
+ }
42
+ interface MiniTextData {
43
+ [Shortcuts.Text]: string;
44
+ [Shortcuts.NodeName]: string;
45
+ }
46
+ type MiniData = MiniElementData | MiniTextData;
47
+ interface UpdatePayload {
48
+ path: string;
49
+ value: string | boolean | (() => MiniData | MiniData[]);
50
+ }
51
+ type Target = Record<string, unknown> & {
52
+ dataset: Record<string, unknown>;
53
+ id: string;
54
+ };
55
+ interface MpEvent {
56
+ type: string;
57
+ detail: Record<string, unknown>;
58
+ target: Target;
59
+ currentTarget: Target;
60
+ }
61
+ export declare function TaroHook(type: HOOK_TYPE, initial?: TFunc): Hook;
62
+ export declare class TaroHooks<T extends Record<string, TFunc> = any> extends Events {
63
+ hooks: Record<keyof T, Hook>;
64
+ constructor(hooks: Record<keyof T, Hook>, opts?: any);
65
+ private tapOneOrMany;
66
+ tap<K extends Extract<keyof T, string>>(hookName: K, callback: T[K] | T[K][]): void;
67
+ call<K extends Extract<keyof T, string>>(hookName: K, ...rest: Parameters<T[K]>): ReturnType<T[K]> | undefined;
68
+ isExist(hookName: string): boolean;
69
+ }
70
+ type ITaroHooks = {
71
+ /** 小程序端 App、Page 构造对象的生命周期方法名称 */
72
+ getMiniLifecycle: (defaultConfig: MiniLifecycle) => MiniLifecycle;
73
+ getMiniLifecycleImpl: () => MiniLifecycle;
74
+ /** 解决 React 生命周期名称的兼容问题 */
75
+ getLifecycle: (instance: any, lifecyle: any) => TFunc | Array<TFunc> | undefined;
76
+ /** 提供Hook,为不同平台提供修改生命周期配置 */
77
+ modifyRecursiveComponentConfig: (defaultConfig: MiniLifecycle, options: any) => any;
78
+ /** 解决百度小程序的模版语法问题 */
79
+ getPathIndex: (indexOfNode: number) => string;
80
+ /** 解决支付宝小程序分包时全局作用域不一致的问题 */
81
+ getEventCenter: (EventsClass: typeof Events) => Events;
82
+ isBubbleEvents: (eventName: string) => boolean;
83
+ getSpecialNodes: () => string[];
84
+ onRemoveAttribute: (element: any, qualifiedName: string) => boolean;
85
+ /** 用于把 React 同一事件回调中的所有 setState 合并到同一个更新处理中 */
86
+ batchedEventUpdates: (cb: TFunc) => void;
87
+ /** 用于处理 React 中的小程序生命周期 hooks */
88
+ mergePageInstance: (prev: any, next: any) => void;
89
+ /** 用于修改传递给小程序 Page 构造器的对象 */
90
+ modifyPageObject: (config: Record<any, any>) => void;
91
+ /** H5 下拉刷新 wrapper */
92
+ createPullDownComponent: (el: any, path: string, framework: any, customWrapper?: any, stampId?: string) => void;
93
+ /** H5 获取原生 DOM 对象 */
94
+ getDOMNode: (instance: any) => any;
95
+ /**
96
+ * @todo: multi
97
+ * 修改 Taro DOM 序列化数据
98
+ **/
99
+ modifyHydrateData: (data: Record<string, any>, node: any) => void;
100
+ /**
101
+ * 自定义处理 Taro DOM 序列化数据,如使其脱离 data 树
102
+ */
103
+ transferHydrateData: (data: Record<string, any>, element: any, componentsAlias: Record<string, any>) => void;
104
+ /**
105
+ * @todo: multi
106
+ * 修改 Taro DOM 序列化数据
107
+ **/
108
+ modifySetAttrPayload: (element: any, key: string, payload: UpdatePayload, componentsAlias: Record<string, any>) => void;
109
+ /**
110
+ * @todo: multi
111
+ * 修改 Taro DOM 序列化数据
112
+ **/
113
+ modifyRmAttrPayload: (element: any, key: string, payload: UpdatePayload, componentsAlias: Record<string, any>) => void;
114
+ /**
115
+ * @todo: multi
116
+ * 调用 addEventListener 时触发
117
+ **/
118
+ onAddEvent: (type: string, handler: any, options: any, node: any) => void;
119
+ /** 用于修改小程序原生事件对象 */
120
+ modifyMpEvent: (event: MpEvent) => void;
121
+ modifyMpEventImpl: (event: MpEvent) => void;
122
+ /** 用于修改 Taro DOM 事件对象 */
123
+ modifyTaroEvent: (event: any, element: any) => void;
124
+ dispatchTaroEvent: (event: any, element: any) => void;
125
+ dispatchTaroEventFinish: (event: any, element: any) => void;
126
+ modifyTaroEventReturn: (node: any, event: any, returnVal: any) => any;
127
+ modifyDispatchEvent: (event: any, element: any) => void;
128
+ injectNewStyleProperties: (styleProperties: string[]) => void;
129
+ initNativeApi: (taro: Record<string, any>) => void;
130
+ patchElement: (node: any) => void;
131
+ /** 解 Proxy */
132
+ proxyToRaw: (proxyObj: any) => Record<any, any>;
133
+ /** 元素增加事件监听钩子 */
134
+ modifyAddEventListener: (element: any, sideEffect: boolean, getComponentsAlias: () => Record<string, any>) => void;
135
+ /** 元素删除事件监听钩子 */
136
+ modifyRemoveEventListener: (element: any, sideEffect: boolean, getComponentsAlias: () => Record<string, any>) => void;
137
+ /** 鸿蒙用于监听 memory 等级的钩子 */
138
+ getMemoryLevel: (level: {
139
+ level: number;
140
+ }) => void;
141
+ };
142
+ export declare const hooks: TaroHooks<ITaroHooks>;
143
+ export {};
@@ -0,0 +1,179 @@
1
+ import { Events } from './event-emitter.js';
2
+ import { isFunction } from './is.js';
3
+
4
+ var HOOK_TYPE;
5
+ (function (HOOK_TYPE) {
6
+ HOOK_TYPE[HOOK_TYPE["SINGLE"] = 0] = "SINGLE";
7
+ HOOK_TYPE[HOOK_TYPE["MULTI"] = 1] = "MULTI";
8
+ HOOK_TYPE[HOOK_TYPE["WATERFALL"] = 2] = "WATERFALL";
9
+ })(HOOK_TYPE || (HOOK_TYPE = {}));
10
+ const defaultMiniLifecycle = {
11
+ app: [
12
+ 'onLaunch',
13
+ 'onShow',
14
+ 'onHide'
15
+ ],
16
+ page: [
17
+ 'onLoad',
18
+ 'onUnload',
19
+ 'onReady',
20
+ 'onShow',
21
+ 'onHide',
22
+ [
23
+ 'onPullDownRefresh',
24
+ 'onReachBottom',
25
+ 'onPageScroll',
26
+ 'onResize',
27
+ 'defer:onTabItemTap', // defer: 需要等页面组件挂载后再调用
28
+ 'onTitleClick',
29
+ 'onOptionMenuClick',
30
+ 'onPopMenuClick',
31
+ 'onPullIntercept',
32
+ 'onAddToFavorites'
33
+ ],
34
+ [
35
+ 'onShareAppMessage',
36
+ 'onShareTimeline'
37
+ ]
38
+ ],
39
+ component: [
40
+ 'attached',
41
+ 'detached'
42
+ ]
43
+ };
44
+ function TaroHook(type, initial) {
45
+ return {
46
+ type,
47
+ initial: initial || null
48
+ };
49
+ }
50
+ class TaroHooks extends Events {
51
+ constructor(hooks, opts) {
52
+ super(opts);
53
+ this.hooks = hooks;
54
+ for (const hookName in hooks) {
55
+ const { initial } = hooks[hookName];
56
+ if (isFunction(initial)) {
57
+ this.on(hookName, initial);
58
+ }
59
+ }
60
+ }
61
+ tapOneOrMany(hookName, callback) {
62
+ const list = isFunction(callback) ? [callback] : callback;
63
+ list.forEach(cb => this.on(hookName, cb));
64
+ }
65
+ tap(hookName, callback) {
66
+ const hooks = this.hooks;
67
+ const { type, initial } = hooks[hookName];
68
+ if (type === HOOK_TYPE.SINGLE) {
69
+ this.off(hookName);
70
+ this.on(hookName, isFunction(callback) ? callback : callback[callback.length - 1]);
71
+ }
72
+ else {
73
+ initial && this.off(hookName, initial);
74
+ this.tapOneOrMany(hookName, callback);
75
+ }
76
+ }
77
+ call(hookName, ...rest) {
78
+ var _a;
79
+ const hook = this.hooks[hookName];
80
+ if (!hook)
81
+ return;
82
+ const { type } = hook;
83
+ const calls = this.callbacks;
84
+ if (!calls)
85
+ return;
86
+ const list = calls[hookName];
87
+ if (list) {
88
+ const tail = list.tail;
89
+ let node = list.next;
90
+ let args = rest;
91
+ let res;
92
+ while (node !== tail) {
93
+ res = (_a = node.callback) === null || _a === void 0 ? void 0 : _a.apply(node.context || this, args);
94
+ if (type === HOOK_TYPE.WATERFALL) {
95
+ const params = [res];
96
+ args = params;
97
+ }
98
+ node = node.next;
99
+ }
100
+ return res;
101
+ }
102
+ }
103
+ isExist(hookName) {
104
+ var _a;
105
+ return Boolean((_a = this.callbacks) === null || _a === void 0 ? void 0 : _a[hookName]);
106
+ }
107
+ }
108
+ const hooks = new TaroHooks({
109
+ getMiniLifecycle: TaroHook(HOOK_TYPE.SINGLE, defaultConfig => defaultConfig),
110
+ getMiniLifecycleImpl: TaroHook(HOOK_TYPE.SINGLE, function () {
111
+ return this.call('getMiniLifecycle', defaultMiniLifecycle);
112
+ }),
113
+ getLifecycle: TaroHook(HOOK_TYPE.SINGLE, (instance, lifecycle) => instance[lifecycle]),
114
+ modifyRecursiveComponentConfig: TaroHook(HOOK_TYPE.SINGLE, (defaultConfig) => defaultConfig),
115
+ getPathIndex: TaroHook(HOOK_TYPE.SINGLE, indexOfNode => `[${indexOfNode}]`),
116
+ getEventCenter: TaroHook(HOOK_TYPE.SINGLE, Events => new Events()),
117
+ isBubbleEvents: TaroHook(HOOK_TYPE.SINGLE, eventName => {
118
+ /**
119
+ * 支持冒泡的事件, 除 支付宝小程序外,其余的可冒泡事件都和微信保持一致
120
+ * 详见 见 https://developers.weixin.qq.com/miniprogram/dev/framework/view/wxml/event.html
121
+ */
122
+ const BUBBLE_EVENTS = new Set([
123
+ 'touchstart',
124
+ 'touchmove',
125
+ 'touchcancel',
126
+ 'touchend',
127
+ 'touchforcechange',
128
+ 'tap',
129
+ 'longpress',
130
+ 'longtap',
131
+ 'transitionend',
132
+ 'animationstart',
133
+ 'animationiteration',
134
+ 'animationend'
135
+ ]);
136
+ return BUBBLE_EVENTS.has(eventName);
137
+ }),
138
+ getSpecialNodes: TaroHook(HOOK_TYPE.SINGLE, () => ['view', 'text', 'image']),
139
+ onRemoveAttribute: TaroHook(HOOK_TYPE.SINGLE),
140
+ batchedEventUpdates: TaroHook(HOOK_TYPE.SINGLE),
141
+ mergePageInstance: TaroHook(HOOK_TYPE.SINGLE),
142
+ modifyPageObject: TaroHook(HOOK_TYPE.SINGLE),
143
+ createPullDownComponent: TaroHook(HOOK_TYPE.SINGLE),
144
+ getDOMNode: TaroHook(HOOK_TYPE.SINGLE),
145
+ modifyHydrateData: TaroHook(HOOK_TYPE.SINGLE),
146
+ transferHydrateData: TaroHook(HOOK_TYPE.SINGLE),
147
+ modifySetAttrPayload: TaroHook(HOOK_TYPE.SINGLE),
148
+ modifyRmAttrPayload: TaroHook(HOOK_TYPE.SINGLE),
149
+ onAddEvent: TaroHook(HOOK_TYPE.SINGLE),
150
+ proxyToRaw: TaroHook(HOOK_TYPE.SINGLE, function (proxyObj) {
151
+ return proxyObj;
152
+ }),
153
+ modifyMpEvent: TaroHook(HOOK_TYPE.MULTI),
154
+ modifyMpEventImpl: TaroHook(HOOK_TYPE.SINGLE, function (e) {
155
+ try {
156
+ // 有些小程序的事件对象的某些属性只读
157
+ this.call('modifyMpEvent', e);
158
+ }
159
+ catch (error) {
160
+ console.warn('[Taro modifyMpEvent hook Error]: ' + (error === null || error === void 0 ? void 0 : error.message));
161
+ }
162
+ }),
163
+ injectNewStyleProperties: TaroHook(HOOK_TYPE.SINGLE),
164
+ modifyTaroEvent: TaroHook(HOOK_TYPE.MULTI),
165
+ dispatchTaroEvent: TaroHook(HOOK_TYPE.SINGLE, (e, node) => {
166
+ node.dispatchEvent(e);
167
+ }),
168
+ dispatchTaroEventFinish: TaroHook(HOOK_TYPE.MULTI),
169
+ modifyTaroEventReturn: TaroHook(HOOK_TYPE.SINGLE, () => undefined),
170
+ modifyDispatchEvent: TaroHook(HOOK_TYPE.MULTI),
171
+ initNativeApi: TaroHook(HOOK_TYPE.MULTI),
172
+ patchElement: TaroHook(HOOK_TYPE.MULTI),
173
+ modifyAddEventListener: TaroHook(HOOK_TYPE.SINGLE),
174
+ modifyRemoveEventListener: TaroHook(HOOK_TYPE.SINGLE),
175
+ getMemoryLevel: TaroHook(HOOK_TYPE.SINGLE),
176
+ });
177
+
178
+ export { HOOK_TYPE, TaroHook, TaroHooks, hooks };
179
+ //# sourceMappingURL=runtime-hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-hooks.js","sources":["../src/runtime-hooks.ts"],"sourcesContent":["import { Events } from './event-emitter'\nimport { isFunction } from './is'\n\nimport type { Shortcuts } from './template'\n\n// Note: @tarojs/runtime 不依赖 @tarojs/taro, 所以不能改为从 @tarojs/taro 引入 (可能导致循环依赖)\ntype TFunc = (...args: any[]) => any\n\nexport enum HOOK_TYPE {\n SINGLE,\n MULTI,\n WATERFALL\n}\n\ninterface Hook {\n type: HOOK_TYPE\n initial?: TFunc | null\n}\n\ninterface Node {\n next: Node\n context?: any\n callback?: TFunc\n}\n\ninterface MiniLifecycle {\n app: [\n string, /** onLaunch */\n string, /** onShow */\n string /** onHide */\n ]\n page: [\n string, /** onLoad */\n string, /** onUnload */\n string, /** onReady */\n string, /** onShow */\n string, /** onHide */\n string[], /** others */\n string[] /** side-effects */\n ]\n component: [\n string, /** attached */\n string, /** detached */\n ]\n}\n\ninterface MiniElementData {\n [Shortcuts.Childnodes]?: MiniData[]\n [Shortcuts.NodeName]: string\n [Shortcuts.Class]?: string\n [Shortcuts.Style]?: string\n uid?: string\n sid: string\n [key: string]: unknown\n}\n\ninterface MiniTextData {\n [Shortcuts.Text]: string\n [Shortcuts.NodeName]: string\n}\n\ntype MiniData = MiniElementData | MiniTextData\n\ninterface UpdatePayload {\n path: string\n value: string | boolean | (() => MiniData | MiniData[])\n}\n\ntype Target = Record<string, unknown> & { dataset: Record<string, unknown>, id: string }\n\ninterface MpEvent {\n type: string\n detail: Record<string, unknown>\n target: Target\n currentTarget: Target\n}\n\nconst defaultMiniLifecycle: MiniLifecycle = {\n app: [\n 'onLaunch',\n 'onShow',\n 'onHide'\n ],\n page: [\n 'onLoad',\n 'onUnload',\n 'onReady',\n 'onShow',\n 'onHide',\n [\n 'onPullDownRefresh',\n 'onReachBottom',\n 'onPageScroll',\n 'onResize',\n 'defer:onTabItemTap', // defer: 需要等页面组件挂载后再调用\n 'onTitleClick',\n 'onOptionMenuClick',\n 'onPopMenuClick',\n 'onPullIntercept',\n 'onAddToFavorites'\n ],\n [\n 'onShareAppMessage',\n 'onShareTimeline'\n ]\n ],\n component: [\n 'attached',\n 'detached'\n ]\n}\n\nexport function TaroHook (type: HOOK_TYPE, initial?: TFunc): Hook {\n return {\n type,\n initial: initial || null\n }\n}\n\nexport class TaroHooks<T extends Record<string, TFunc> = any> extends Events {\n hooks: Record<keyof T, Hook>\n\n constructor (hooks: Record<keyof T, Hook>, opts?) {\n super(opts)\n this.hooks = hooks\n for (const hookName in hooks) {\n const { initial } = hooks[hookName]\n if (isFunction(initial)) {\n this.on(hookName, initial)\n }\n }\n }\n\n private tapOneOrMany<K extends Extract<keyof T, string>> (hookName: K, callback: T[K] | T[K][]) {\n const list = isFunction(callback) ? [callback] : callback\n list.forEach(cb => this.on(hookName, cb))\n }\n\n tap<K extends Extract<keyof T, string>> (hookName: K, callback: T[K] | T[K][]) {\n const hooks = this.hooks\n const { type, initial } = hooks[hookName]\n if (type === HOOK_TYPE.SINGLE) {\n this.off(hookName)\n this.on(hookName, isFunction(callback) ? callback : callback[callback.length - 1])\n } else {\n initial && this.off(hookName, initial)\n this.tapOneOrMany(hookName, callback)\n }\n }\n\n call<K extends Extract<keyof T, string>> (hookName: K, ...rest: Parameters<T[K]>): ReturnType<T[K]> | undefined {\n const hook = this.hooks[hookName]\n if (!hook) return\n\n const { type } = hook\n\n const calls = this.callbacks\n if (!calls) return\n\n const list = calls[hookName] as { tail: Node, next: Node }\n\n if (list) {\n const tail = list.tail\n let node: Node = list.next\n let args = rest\n let res\n\n while (node !== tail) {\n res = node.callback?.apply(node.context || this, args)\n if (type === HOOK_TYPE.WATERFALL) {\n const params: any = [res]\n args = params\n }\n node = node.next\n }\n return res\n }\n }\n\n isExist (hookName: string) {\n return Boolean(this.callbacks?.[hookName])\n }\n}\n\ntype ITaroHooks = {\n /** 小程序端 App、Page 构造对象的生命周期方法名称 */\n getMiniLifecycle: (defaultConfig: MiniLifecycle) => MiniLifecycle\n getMiniLifecycleImpl: () => MiniLifecycle\n /** 解决 React 生命周期名称的兼容问题 */\n getLifecycle: (instance, lifecyle) => TFunc | Array<TFunc> | undefined\n /** 提供Hook,为不同平台提供修改生命周期配置 */\n modifyRecursiveComponentConfig: (defaultConfig:MiniLifecycle, options:any) => any\n /** 解决百度小程序的模版语法问题 */\n getPathIndex: (indexOfNode: number) => string\n /** 解决支付宝小程序分包时全局作用域不一致的问题 */\n getEventCenter: (EventsClass: typeof Events) => Events\n isBubbleEvents: (eventName: string) => boolean\n getSpecialNodes: () => string[]\n onRemoveAttribute: (element, qualifiedName: string) => boolean\n /** 用于把 React 同一事件回调中的所有 setState 合并到同一个更新处理中 */\n batchedEventUpdates: (cb: TFunc) => void\n /** 用于处理 React 中的小程序生命周期 hooks */\n mergePageInstance: (prev, next) => void\n /** 用于修改传递给小程序 Page 构造器的对象 */\n modifyPageObject: (config: Record<any, any>) => void\n /** H5 下拉刷新 wrapper */\n createPullDownComponent: (el, path: string, framework, customWrapper?: any, stampId?: string) => void\n /** H5 获取原生 DOM 对象 */\n getDOMNode: (instance) => any\n /**\n * @todo: multi\n * 修改 Taro DOM 序列化数据\n **/\n modifyHydrateData:(data: Record<string, any>, node) => void\n /**\n * 自定义处理 Taro DOM 序列化数据,如使其脱离 data 树\n */\n transferHydrateData: (data: Record<string, any>, element, componentsAlias: Record<string, any>) => void\n /**\n * @todo: multi\n * 修改 Taro DOM 序列化数据\n **/\n modifySetAttrPayload: (element, key: string, payload: UpdatePayload, componentsAlias: Record<string, any>) => void\n /**\n * @todo: multi\n * 修改 Taro DOM 序列化数据\n **/\n modifyRmAttrPayload: (element, key: string, payload: UpdatePayload, componentsAlias: Record<string, any>) => void\n /**\n * @todo: multi\n * 调用 addEventListener 时触发\n **/\n onAddEvent: (type: string, handler, options: any, node) => void\n /** 用于修改小程序原生事件对象 */\n modifyMpEvent: (event: MpEvent) => void\n modifyMpEventImpl: (event: MpEvent) => void\n /** 用于修改 Taro DOM 事件对象 */\n modifyTaroEvent: (event, element) => void\n\n dispatchTaroEvent: (event, element) => void\n dispatchTaroEventFinish: (event, element) => void\n modifyTaroEventReturn: (node, event, returnVal) => any\n\n modifyDispatchEvent: (event, element) => void\n injectNewStyleProperties: (styleProperties: string[]) => void\n initNativeApi: (taro: Record<string, any>) => void\n patchElement: (node) => void\n\n /** 解 Proxy */\n proxyToRaw: (proxyObj) => Record<any, any>\n /** 元素增加事件监听钩子 */\n modifyAddEventListener: (element, sideEffect: boolean, getComponentsAlias: () => Record<string, any>) => void\n /** 元素删除事件监听钩子 */\n modifyRemoveEventListener: (element, sideEffect: boolean, getComponentsAlias: () => Record<string, any>) => void\n /** 鸿蒙用于监听 memory 等级的钩子 */\n getMemoryLevel: (level: { level: number }) => void\n}\n\nexport const hooks = new TaroHooks<ITaroHooks>({\n getMiniLifecycle: TaroHook(HOOK_TYPE.SINGLE, defaultConfig => defaultConfig),\n\n getMiniLifecycleImpl: TaroHook(HOOK_TYPE.SINGLE, function (this: TaroHooks<ITaroHooks>) {\n return this.call('getMiniLifecycle', defaultMiniLifecycle)\n }),\n\n getLifecycle: TaroHook(HOOK_TYPE.SINGLE, (instance, lifecycle) => instance[lifecycle]),\n\n modifyRecursiveComponentConfig: TaroHook(HOOK_TYPE.SINGLE, (defaultConfig) => defaultConfig),\n\n getPathIndex: TaroHook(HOOK_TYPE.SINGLE, indexOfNode => `[${indexOfNode}]`),\n\n getEventCenter: TaroHook(HOOK_TYPE.SINGLE, Events => new Events()),\n\n isBubbleEvents: TaroHook(HOOK_TYPE.SINGLE, eventName => {\n /**\n * 支持冒泡的事件, 除 支付宝小程序外,其余的可冒泡事件都和微信保持一致\n * 详见 见 https://developers.weixin.qq.com/miniprogram/dev/framework/view/wxml/event.html\n */\n const BUBBLE_EVENTS = new Set([\n 'touchstart',\n 'touchmove',\n 'touchcancel',\n 'touchend',\n 'touchforcechange',\n 'tap',\n 'longpress',\n 'longtap',\n 'transitionend',\n 'animationstart',\n 'animationiteration',\n 'animationend'\n ])\n\n return BUBBLE_EVENTS.has(eventName)\n }),\n\n getSpecialNodes: TaroHook(HOOK_TYPE.SINGLE, () => ['view', 'text', 'image']),\n\n onRemoveAttribute: TaroHook(HOOK_TYPE.SINGLE),\n\n batchedEventUpdates: TaroHook(HOOK_TYPE.SINGLE),\n\n mergePageInstance: TaroHook(HOOK_TYPE.SINGLE),\n\n modifyPageObject: TaroHook(HOOK_TYPE.SINGLE),\n\n createPullDownComponent: TaroHook(HOOK_TYPE.SINGLE),\n\n getDOMNode: TaroHook(HOOK_TYPE.SINGLE),\n\n modifyHydrateData: TaroHook(HOOK_TYPE.SINGLE),\n\n transferHydrateData: TaroHook(HOOK_TYPE.SINGLE),\n\n modifySetAttrPayload: TaroHook(HOOK_TYPE.SINGLE),\n\n modifyRmAttrPayload: TaroHook(HOOK_TYPE.SINGLE),\n\n onAddEvent: TaroHook(HOOK_TYPE.SINGLE),\n\n proxyToRaw: TaroHook(HOOK_TYPE.SINGLE, function (proxyObj) {\n return proxyObj\n }),\n\n modifyMpEvent: TaroHook(HOOK_TYPE.MULTI),\n\n modifyMpEventImpl: TaroHook(HOOK_TYPE.SINGLE, function (this: TaroHooks<ITaroHooks>, e: MpEvent) {\n try {\n // 有些小程序的事件对象的某些属性只读\n this.call('modifyMpEvent', e)\n } catch (error) {\n console.warn('[Taro modifyMpEvent hook Error]: ' + error?.message)\n }\n }),\n\n injectNewStyleProperties: TaroHook(HOOK_TYPE.SINGLE),\n\n modifyTaroEvent: TaroHook(HOOK_TYPE.MULTI),\n\n dispatchTaroEvent: TaroHook(HOOK_TYPE.SINGLE, (e, node) => {\n node.dispatchEvent(e)\n }),\n\n dispatchTaroEventFinish: TaroHook(HOOK_TYPE.MULTI),\n\n modifyTaroEventReturn: TaroHook(HOOK_TYPE.SINGLE, () => undefined),\n\n modifyDispatchEvent: TaroHook(HOOK_TYPE.MULTI),\n\n initNativeApi: TaroHook(HOOK_TYPE.MULTI),\n\n patchElement: TaroHook(HOOK_TYPE.MULTI),\n\n modifyAddEventListener: TaroHook(HOOK_TYPE.SINGLE),\n\n modifyRemoveEventListener: TaroHook(HOOK_TYPE.SINGLE),\n\n getMemoryLevel: TaroHook(HOOK_TYPE.SINGLE),\n})\n"],"names":[],"mappings":"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"}
@@ -39,11 +39,7 @@ const Progress = {
39
39
  const RichText = {
40
40
  nodes: DEFAULT_EMPTY_ARRAY
41
41
  };
42
- const Text = {
43
- selectable: DEFAULT_FALSE,
44
- space: NO_DEFAULT_VALUE,
45
- decode: DEFAULT_FALSE
46
- };
42
+ const Text = Object.assign({ selectable: DEFAULT_FALSE, space: NO_DEFAULT_VALUE, decode: DEFAULT_FALSE }, touchEvents);
47
43
  const Button = Object.assign({ size: singleQuote('default'), type: NO_DEFAULT_VALUE, plain: DEFAULT_FALSE, disabled: NO_DEFAULT_VALUE, loading: DEFAULT_FALSE, 'form-type': NO_DEFAULT_VALUE, 'open-type': NO_DEFAULT_VALUE, 'hover-class': singleQuote('button-hover'), 'hover-stop-propagation': DEFAULT_FALSE, 'hover-start-time': '20', 'hover-stay-time': '70', name: NO_DEFAULT_VALUE, bindagreeprivacyauthorization: NO_DEFAULT_VALUE }, touchEvents);
48
44
  const Checkbox = {
49
45
  value: NO_DEFAULT_VALUE,
@@ -84,10 +80,7 @@ const Input = {
84
80
  bindConfirm: NO_DEFAULT_VALUE,
85
81
  name: NO_DEFAULT_VALUE
86
82
  };
87
- const Label = {
88
- for: NO_DEFAULT_VALUE,
89
- name: NO_DEFAULT_VALUE
90
- };
83
+ const Label = Object.assign({ for: NO_DEFAULT_VALUE, name: NO_DEFAULT_VALUE }, touchEvents);
91
84
  const Picker = {
92
85
  mode: singleQuote('selector'),
93
86
  disabled: NO_DEFAULT_VALUE,
@@ -250,6 +243,7 @@ const Slot = {
250
243
  const NativeSlot = {
251
244
  name: NO_DEFAULT_VALUE
252
245
  };
246
+ const Script = {};
253
247
  const internalComponents = {
254
248
  View,
255
249
  Icon,
@@ -291,6 +285,7 @@ const internalComponents = {
291
285
  Slot,
292
286
  SlotView,
293
287
  NativeSlot,
288
+ Script,
294
289
  };
295
290
  const controlledComponent = new Set([
296
291
  'input',
@@ -335,7 +330,7 @@ const nestElements = new Map([
335
330
  ['form', 4],
336
331
  ['scroll-view', 4],
337
332
  ['swiper', 4],
338
- ['swiper-item', 4]
333
+ ['swiper-item', 4],
339
334
  ]);
340
335
 
341
336
  var PLATFORM_TYPE;
@@ -361,7 +356,7 @@ const PLATFORM_CONFIG_MAP = {
361
356
  },
362
357
  quickapp: {
363
358
  type: PLATFORM_TYPE.QUICK
364
- }
359
+ },
365
360
  };
366
361
 
367
362
  class Events {
@@ -459,6 +454,50 @@ class Events {
459
454
  }
460
455
  Events.eventSplitter = ','; // Note: Harmony ACE API 8 开发板不支持使用正则 split 字符串 /\s+/
461
456
 
457
+ class PageEvts extends Events {
458
+ constructor() {
459
+ super(...arguments);
460
+ this.exeList = [];
461
+ }
462
+ on(eventName, callback) {
463
+ super.on(eventName, callback, this);
464
+ this.exeList = this.exeList.reduce((prev, item) => {
465
+ if (item.eventName === eventName) {
466
+ super.trigger(item.eventName, item.data);
467
+ }
468
+ else {
469
+ prev.push(item);
470
+ }
471
+ return prev;
472
+ }, []);
473
+ return this;
474
+ }
475
+ emit(events, data) {
476
+ // eslint-disable-next-line
477
+ routeChannel.trigger(events, data);
478
+ }
479
+ }
480
+ const pageChannel = new PageEvts();
481
+ class RouteEvts extends Events {
482
+ emit(events, data) {
483
+ pageChannel.off(events);
484
+ pageChannel.exeList.push({
485
+ eventName: events,
486
+ data
487
+ });
488
+ }
489
+ addEvents(events) {
490
+ if (!events || typeof events !== 'object')
491
+ return;
492
+ Object.keys(events).forEach(key => {
493
+ this.off(key);
494
+ this.on(key, events[key], this);
495
+ });
496
+ }
497
+ }
498
+ const routeChannel = new RouteEvts();
499
+ const EventChannel = { pageChannel, routeChannel };
500
+
462
501
  function isString(o) {
463
502
  return typeof o === 'string';
464
503
  }
@@ -509,7 +548,7 @@ const defaultMiniLifecycle = {
509
548
  'onReachBottom',
510
549
  'onPageScroll',
511
550
  'onResize',
512
- 'defer:onTabItemTap',
551
+ 'defer:onTabItemTap', // defer: 需要等页面组件挂载后再调用
513
552
  'onTitleClick',
514
553
  'onOptionMenuClick',
515
554
  'onPopMenuClick',
@@ -1231,5 +1270,19 @@ function delayRef(taro, global, name, method) {
1231
1270
  };
1232
1271
  }
1233
1272
 
1234
- export { EMPTY_ARR, EMPTY_OBJ, Events, HOOK_TYPE, PLATFORM_CONFIG_MAP, PLATFORM_TYPE, TaroHook, TaroHooks, animation, box, cacheDataGet, cacheDataHas, cacheDataSet, capitalize, controlledComponent, ensure, focusComponents, getComponentsAlias, getPlatformType, getUniqueKey, hasOwn, hooks, indent, internalComponents, isArray, isBoolean, isBooleanStringLiteral, isFunction, isNull, isNumber, isObject, isString, isUndefined, isWebPlatform, mergeInternalComponents, mergeReconciler, nestElements, nonsupport, noop, processApis, queryToJson, setUniqueKeyToRoute, singleQuote, toCamelCase, toDashed, toKebabCase, touchEvents, unbox, voidElements, warn };
1273
+ // 字符串简写
1274
+ var Shortcuts;
1275
+ (function (Shortcuts) {
1276
+ Shortcuts["Container"] = "container";
1277
+ Shortcuts["Childnodes"] = "cn";
1278
+ Shortcuts["Text"] = "v";
1279
+ Shortcuts["NodeType"] = "nt";
1280
+ Shortcuts["NodeName"] = "nn";
1281
+ // Attrtibutes
1282
+ Shortcuts["Style"] = "st";
1283
+ Shortcuts["Class"] = "cl";
1284
+ Shortcuts["Src"] = "src";
1285
+ })(Shortcuts || (Shortcuts = {}));
1286
+
1287
+ export { EMPTY_ARR, EMPTY_OBJ, EventChannel, Events, HOOK_TYPE, PLATFORM_CONFIG_MAP, PLATFORM_TYPE, Shortcuts, TaroHook, TaroHooks, animation, box, cacheDataGet, cacheDataHas, cacheDataSet, capitalize, controlledComponent, ensure, focusComponents, getComponentsAlias, getPlatformType, getUniqueKey, hasOwn, hooks, indent, internalComponents, isArray, isBoolean, isBooleanStringLiteral, isFunction, isNull, isNumber, isObject, isString, isUndefined, isWebPlatform, mergeInternalComponents, mergeReconciler, nestElements, nonsupport, noop, processApis, queryToJson, setUniqueKeyToRoute, singleQuote, toCamelCase, toDashed, toKebabCase, touchEvents, unbox, voidElements, warn };
1235
1288
  //# sourceMappingURL=shared.esm.js.map