@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.
- package/LICENSE +17 -3
- package/dist/components.d.ts +20 -0
- package/dist/components.js +337 -0
- package/dist/components.js.map +1 -0
- package/dist/constants.d.ts +24 -0
- package/dist/constants.js +28 -0
- package/dist/constants.js.map +1 -0
- package/dist/event-channel.d.ts +14 -0
- package/dist/event-channel.js +48 -0
- package/dist/event-channel.js.map +1 -0
- package/dist/event-emitter.d.ts +12 -0
- package/dist/event-emitter.js +97 -0
- package/dist/event-emitter.js.map +1 -0
- package/dist/index.cjs.js +1338 -0
- package/dist/index.cjs.js.map +1 -0
- package/dist/index.d.ts +9 -306
- package/dist/index.js +9 -1285
- package/dist/index.js.map +1 -1
- package/dist/is.d.ts +10 -0
- package/dist/is.js +29 -0
- package/dist/is.js.map +1 -0
- package/dist/native-apis.d.ts +34 -0
- package/dist/native-apis.js +362 -0
- package/dist/native-apis.js.map +1 -0
- package/dist/runtime-hooks.d.ts +143 -0
- package/dist/runtime-hooks.js +179 -0
- package/dist/runtime-hooks.js.map +1 -0
- package/dist/shared.esm.js +66 -13
- package/dist/shared.esm.js.map +1 -1
- package/dist/shortcuts.d.ts +10 -0
- package/dist/shortcuts.js +16 -0
- package/dist/shortcuts.js.map +1 -0
- package/dist/template.d.ts +26 -25
- package/dist/template.js +23 -15
- package/dist/template.js.map +1 -1
- package/dist/utils.d.ts +56 -0
- package/dist/utils.js +220 -0
- package/dist/utils.js.map +1 -0
- package/package.json +16 -12
- package/dist/shared.esm.d.ts +0 -306
|
@@ -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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"}
|
package/dist/shared.esm.js
CHANGED
|
@@ -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
|
-
|
|
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
|