123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223 |
- var _a;
- import { ETargetPlatform, EElementType } from './types.js';
- import { mergeObjectKeys } from './utils.js';
- var ifInAlipay = function () {
- //@ts-expect-error
- return typeof my !== 'undefined';
- };
- var ifInWeChat = function () {
- //@ts-expect-error
- return typeof wx !== 'undefined';
- };
- export var checkIfPlatformIsLoadCorrectly = function (config, target) {
- if (config.name !== target) {
- var errMsg = "\u671F\u671B\u7684\u8FD0\u884C\u5E73\u53F0\u4E3A ".concat(target, "\uFF0C\u4F46\u662F\u5F53\u524D\u5E73\u53F0\u914D\u7F6E\u4E3A ").concat(config.name, "\uFF0C\u8BF7\u68C0\u67E5\u662F\u5426\u52A0\u8F7D\u4E86\u6B63\u786E\u7684\u5E73\u53F0\u914D\u7F6E");
- throw new Error(errMsg);
- // 这里的判断方法可能不准,有反馈了再改
- }
- else if (!config.tellIfInThisPlatform()) {
- var errMsg = "\u671F\u671B\u7684\u8FD0\u884C\u5E73\u53F0\u4E3A ".concat(target, "\uFF0C\u4F46\u662F\u5F53\u524D\u8FD0\u884C\u65F6\u73AF\u5883\u4E0D\u662F ").concat(target, "\uFF0C\u8BF7\u68C0\u67E5\u662F\u5426\u52A0\u8F7D\u4E86\u6B63\u786E\u7684\u5E73\u53F0\u914D\u7F6E");
- throw new Error(errMsg);
- }
- return true;
- };
- // 方便 ts 类型推导
- export var commonPageEvents = {
- onLoad: 'onLoad',
- onShow: 'onShow',
- onReady: 'onReady',
- onHide: 'onHide',
- onPullDownRefresh: 'onPullDownRefresh',
- onReachBottom: 'onReachBottom',
- onShareAppMessage: 'onShareAppMessage',
- onPageScroll: 'onPageScroll',
- onTabItemTap: 'onTabItemTap',
- onResize: 'onResize',
- onUnload: 'onUnload',
- };
- export var alipayPageEvents = {
- onTitleClick: 'onTitleClick',
- onOptionMenuClick: 'onOptionMenuClick',
- beforeTabItemTap: 'beforeTabItemTap',
- onKeyboardHeight: 'onKeyboardHeight',
- onBack: 'onBack',
- onSelectedTabItemTap: 'onSelectedTabItemTap',
- beforeReload: 'beforeReload',
- };
- export var commonComponentPageEvents = {
- 'page:show': 'page:show',
- 'page:hide': 'page:hide',
- };
- /**
- * @see https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/lifetimes.html
- */
- export var wechatComponentPageEvents = {
- 'page:hide': 'hide',
- 'page:show': 'show',
- };
- /**
- * @see https://opendocs.alipay.com/mini/framework/page-detail#events
- */
- export var alipayComponentPageEvents = {
- 'page:hide': 'onHide',
- 'page:show': 'onShow',
- };
- export var commonComponentEvents = {
- created: 'created',
- attached: 'attached',
- ready: 'ready',
- moved: 'moved',
- detached: 'detached',
- };
- export var alipayComponentEvents = {
- onInit: 'onInit',
- didMount: 'didMount',
- didUpdate: 'didUpdate',
- deriveDataFromProps: 'deriveDataFromProps',
- didUnmount: 'didUnmount',
- };
- export var wechatComponentEvents = {
- error: 'error',
- };
- // 保留字,不允许开发者注册使用
- export var blockedProperty = ['mixins', 'methods', 'observers', 'pageEvents'];
- export var platformConfig = (_a = {},
- _a[ETargetPlatform.alipay] = {
- name: ETargetPlatform.alipay,
- supportHandleEventResult: true,
- tellIfInThisPlatform: ifInAlipay,
- pageEvents: mergeObjectKeys(commonPageEvents, alipayPageEvents),
- pageLifeCycleToMount: commonPageEvents.onLoad,
- pageLifeCycleToUnmount: commonPageEvents.onUnload,
- componentEvents: mergeObjectKeys(commonComponentEvents, alipayComponentEvents),
- componentPageEvents: Object.keys(commonComponentPageEvents),
- componentLifeCycleToMount: alipayComponentEvents.onInit,
- componentLifeCycleToUnmount: alipayComponentEvents.didUnmount,
- blockedProperty: blockedProperty,
- getPropsFromInstance: function (instance) {
- return instance.props;
- },
- buildOptions: function (elementType, props, data, lifeCycleHandlers, userEventHandlers, options, _observers, componentPageLifeCycleHandlers) {
- if (options === void 0) { options = null; }
- if (elementType === EElementType.page) {
- return Object.assign({
- data: data,
- options: options,
- }, lifeCycleHandlers, userEventHandlers);
- }
- else {
- /**
- * 参考这里
- * https://opendocs.alipay.com/mini/framework/component-lifecycle
- */
- var alipayLifeCycle_1 = {};
- var commonLifetime_1 = {};
- Object.keys(lifeCycleHandlers).forEach(function (key) {
- if (commonComponentEvents[key]) {
- commonLifetime_1[key] = lifeCycleHandlers[key];
- }
- else {
- alipayLifeCycle_1[key] = lifeCycleHandlers[key];
- }
- });
- var rootEvents_1 = {};
- Object.keys(componentPageLifeCycleHandlers).map(function (p) {
- rootEvents_1[alipayComponentPageEvents[p]] =
- componentPageLifeCycleHandlers[p];
- });
- return Object.assign({
- rootEvents: rootEvents_1,
- props: props,
- data: data,
- options: Object.assign({
- lifetimes: true,
- }, options || {}),
- lifetimes: commonLifetime_1,
- }, alipayLifeCycle_1, { methods: userEventHandlers });
- }
- },
- },
- _a[ETargetPlatform.wechat] = {
- name: ETargetPlatform.wechat,
- componentPageEvents: Object.keys(commonComponentPageEvents),
- tellIfInThisPlatform: ifInWeChat,
- supportHandleEventResult: false,
- pageEvents: Object.keys(commonPageEvents),
- pageLifeCycleToMount: commonPageEvents.onLoad,
- pageLifeCycleToUnmount: commonPageEvents.onUnload,
- componentEvents: mergeObjectKeys(commonComponentEvents, wechatComponentEvents),
- componentLifeCycleToMount: commonComponentEvents.attached,
- componentLifeCycleToUnmount: commonComponentEvents.detached,
- blockedProperty: blockedProperty,
- getPropsFromInstance: function (instance, propNames) {
- var newProps = {};
- for (var _i = 0, propNames_1 = propNames; _i < propNames_1.length; _i++) {
- var propName = propNames_1[_i];
- //@ts-expect-error
- newProps[propName] = instance.data[propName];
- }
- return newProps;
- },
- buildOptions: function (elementType, props, data, lifeCycleHandlers, userEventHandlers, options, observers, componentPageLifeCycleHandlers) {
- if (options === void 0) { options = {}; }
- if (elementType === EElementType.page) {
- return Object.assign({
- data: data,
- options: options,
- }, lifeCycleHandlers, userEventHandlers);
- }
- else {
- var defaultProps = props || {};
- var properties = {};
- for (var key in defaultProps) {
- if (!Object.prototype.hasOwnProperty.call(defaultProps, key))
- continue;
- var value = defaultProps[key];
- var targetType = void 0;
- if (typeof value === 'string') {
- targetType = String;
- }
- else if (typeof value === 'number') {
- targetType = Number;
- }
- else if (typeof value === 'boolean') {
- targetType = Boolean;
- }
- else if (Array.isArray(value)) {
- targetType = Array;
- }
- else if (typeof value === 'object') {
- if (value === null) {
- targetType = null;
- }
- else {
- targetType = Object;
- }
- }
- else {
- throw new Error("\u4E0D\u652F\u6301\u7684 properties \u7C7B\u578B: ".concat(key, " - ").concat(typeof value));
- }
- properties[key] = {
- type: targetType,
- value: value,
- };
- }
- var pageLifetimes_1 = {};
- Object.keys(componentPageLifeCycleHandlers).map(function (p) {
- pageLifetimes_1[wechatComponentPageEvents[p]] =
- componentPageLifeCycleHandlers[p];
- });
- return {
- pageLifetimes: pageLifetimes_1,
- properties: properties,
- data: data,
- options: options,
- observers: observers,
- lifetimes: lifeCycleHandlers || {},
- methods: userEventHandlers || {},
- };
- }
- },
- },
- _a);
|