@tarojs/with-weapp 3.3.14 → 3.5.0-canary.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/dist/index.esm.js +1 -1
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +56 -44
- package/dist/index.js.map +1 -1
- package/dist/with-weapp.js +45 -43
- package/dist/with-weapp.js.map +1 -1
- package/package.json +6 -6
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/lifecycle.ts","../src/utils.ts","../src/diff.js","../src/clone.js","../src/index.ts"],"sourcesContent":["interface LifecycleMap {\n [key: string]: string[]\n}\n\nexport enum TaroLifeCycles {\n WillMount = 'componentWillMount',\n DidMount = 'componentDidMount',\n DidShow = 'componentDidShow',\n DidHide = 'componentDidHide',\n WillUnmount = 'componentWillUnmount'\n}\n\nexport const lifecycleMap: LifecycleMap = {\n [TaroLifeCycles.WillMount]: ['created'],\n [TaroLifeCycles.DidMount]: ['attached'],\n [TaroLifeCycles.DidShow]: ['onShow'],\n [TaroLifeCycles.DidHide]: ['onHide'],\n [TaroLifeCycles.WillUnmount]: ['detached', 'onUnload']\n}\n\nexport const lifecycles = new Set<string>(['ready'])\n\nfor (const key in lifecycleMap) {\n const lifecycle = lifecycleMap[key]\n lifecycle.forEach(l => lifecycles.add(l))\n}\n\nexport const uniquePageLifecycle = [\n 'onPullDownRefresh',\n 'onReachBottom',\n 'onShareAppMessage',\n 'onShareTimeline',\n 'onAddToFavorites',\n 'onPageScroll',\n 'onResize',\n 'onTabItemTap'\n]\n\nexport const appOptions = [\n 'onLaunch',\n 'onShow',\n 'onHide',\n 'onError',\n 'onPageNotFound',\n 'onUnhandledRejection',\n 'onThemeChange'\n]\n","/**\n * Simple bind, faster than native\n */\nexport function bind (fn /*: Function */, ctx /*: Object */) /*: Function */ {\n if (!fn) return false\n\n function boundFn (a) {\n const l /*: number */ = arguments.length\n return l ? (l > 1 ? fn.apply(ctx, arguments) : fn.call(ctx, a)) : fn.call(ctx)\n }\n\n // record original fn length\n boundFn._length = fn.length\n return boundFn\n}\n\nexport function isEqual (obj1, obj2) {\n return JSON.stringify(obj1) === JSON.stringify(obj2)\n}\n\nexport function noop (..._: unknown[]) {\n //\n}\n\nconst sharedPropertyDefinition = {\n enumerable: true,\n configurable: true,\n get: noop,\n set: noop\n}\n\nexport function proxy (target, sourceKey: string, key: string) {\n sharedPropertyDefinition.get = function proxyGetter () {\n return this[sourceKey][key]\n }\n sharedPropertyDefinition.set = function proxySetter (val) {\n this[sourceKey][key] = val\n }\n Object.defineProperty(target, key, sharedPropertyDefinition)\n}\n\nexport function safeGet (obj, propsArg, defaultValue?) {\n if (!obj) {\n return defaultValue\n }\n let props, prop\n if (Array.isArray(propsArg)) {\n props = propsArg.slice(0)\n }\n if (typeof propsArg === 'string') {\n props = propsArg.replace(/\\[(.+?)\\]/g, '.$1')\n props = props.split('.')\n }\n if (typeof propsArg === 'symbol') {\n props = [propsArg]\n }\n if (!Array.isArray(props)) {\n throw new Error('props arg must be an array, a string or a symbol')\n }\n while (props.length) {\n prop = props.shift()\n if (!obj) {\n return defaultValue\n }\n obj = obj[prop]\n if (obj === undefined) {\n return defaultValue\n }\n }\n return obj\n}\n\nexport function safeSet (obj, props, value) {\n if (typeof props === 'string') {\n props = props.replace(/\\[(.+?)\\]/g, '.$1')\n props = props.split('.')\n }\n if (typeof props === 'symbol') {\n props = [props]\n }\n const lastProp = props.pop()\n if (!lastProp) {\n return false\n }\n let thisProp\n while ((thisProp = props.shift())) {\n if (typeof obj[thisProp] === 'undefined') {\n obj[thisProp] = {}\n }\n\n // 直接按路径修改 this.state 可能会导致 nextProps 也被修改\n // 因此按路径寻找时,每一层都复制一遍\n if (Array.isArray(obj[thisProp])) {\n obj[thisProp] = [...obj[thisProp]]\n } else if (typeof obj[thisProp] === 'object') {\n obj[thisProp] = { ...obj[thisProp] }\n }\n\n obj = obj[thisProp]\n if (!obj || typeof obj !== 'object') {\n return false\n }\n }\n obj[lastProp] = value\n return true\n}\n\nexport function report (msg) {\n console.warn('[Taro Convert Warning] ' + msg)\n}\n\nexport const unsupport = new Map([\n ['onError', '不支持 App 的 onError 生命周期方法。'],\n ['onPageNotFound', '不支持 App 的 onPageNotFound 生命周期方法。'],\n ['onUnhandledRejection', '不支持 App 的 onUnhandledRejection 生命周期方法。'],\n ['onThemeChange', '不支持 App 的 onThemeChange 生命周期方法。'],\n ['moved', '不支持自定义组件的 moved 生命周期。'],\n ['externalClasses', '不支持自定义组件的 externalClasses 功能。'],\n ['relations', '不支持自定义组件的 relations 功能。'],\n ['options', '不支持自定义组件的 options 功能。'],\n ['definitionFilter', '不支持自定义组件的 definitionFilter 功能。'],\n ['selectComponent', 'selectComponent 方法产生不到目标效果,请使用 React 的 ref 进行重构。'],\n ['selectAllComponents', 'selectAllComponents 方法产生不到目标效果,请使用 React 的 ref 进行重构。'],\n ['selectOwnerComponent', 'selectOwnerComponent 方法产生不到目标效果,请使用 React 语法重构。'],\n ['groupSetData', 'groupSetData 方法产生不到目标效果,请使用 React 语法重构。']\n])\n\nexport function flattenBehaviors (behavior, behaviorMap: Map<string, any[]>) {\n if (typeof behavior === 'string') {\n return report(`不支持使用内置 Behavior: [${behavior}]`)\n }\n const subBehaviors = behavior.behaviors\n if (subBehaviors?.length) {\n subBehaviors.forEach(subBehavior => flattenBehaviors(subBehavior, behaviorMap))\n }\n\n Object.keys(behavior).forEach(key => {\n // 不支持的属性\n if (unsupport.has(key)) {\n const advise = unsupport.get(key)\n return report(advise)\n }\n\n if (behaviorMap.has(key)) {\n const list = behaviorMap.get(key)!\n const value = behavior[key]\n list.push(value)\n }\n })\n}\n","/*eslint-disable*/\nconst ARRAYTYPE = '[object Array]'\nconst OBJECTTYPE = '[object Object]'\nconst FUNCTIONTYPE = '[object Function]'\n\nexport function diff (current, pre) {\n const result = {}\n syncKeys(current, pre)\n _diff(current, pre, '', result)\n return result\n}\n\nfunction syncKeys (current, pre) {\n if (current === pre) return\n const rootCurrentType = type(current)\n const rootPreType = type(pre)\n if (rootCurrentType == OBJECTTYPE && rootPreType == OBJECTTYPE) {\n // if(Object.keys(current).length >= Object.keys(pre).length){\n for (let key in pre) {\n const currentValue = current[key]\n if (currentValue === undefined) {\n current[key] = null\n } else {\n syncKeys(currentValue, pre[key])\n }\n }\n // }\n } else if (rootCurrentType == ARRAYTYPE && rootPreType == ARRAYTYPE) {\n if (current.length >= pre.length) {\n pre.forEach((item, index) => {\n syncKeys(current[index], item)\n })\n }\n }\n}\n\nfunction _diff (current, pre, path, result) {\n if (current === pre) return\n const rootCurrentType = type(current)\n const rootPreType = type(pre)\n if (rootCurrentType == OBJECTTYPE) {\n if (rootPreType != OBJECTTYPE || Object.keys(current).length < Object.keys(pre).length) {\n setResult(result, path, current)\n } else {\n for (let key in current) {\n const currentValue = current[key]\n const preValue = pre[key]\n const currentType = type(currentValue)\n const preType = type(preValue)\n if (currentType != ARRAYTYPE && currentType != OBJECTTYPE) {\n if (currentValue != pre[key]) {\n setResult(result, (path == '' ? '' : path + '.') + key, currentValue)\n }\n } else if (currentType == ARRAYTYPE) {\n if (preType != ARRAYTYPE) {\n setResult(result, (path == '' ? '' : path + '.') + key, currentValue)\n } else {\n if (currentValue.length < preValue.length) {\n setResult(result, (path == '' ? '' : path + '.') + key, currentValue)\n } else {\n currentValue.forEach((item, index) => {\n _diff(item, preValue[index], (path == '' ? '' : path + '.') + key + '[' + index + ']', result)\n })\n }\n }\n } else if (currentType == OBJECTTYPE) {\n if (preType != OBJECTTYPE || Object.keys(currentValue).length < Object.keys(preValue).length) {\n setResult(result, (path == '' ? '' : path + '.') + key, currentValue)\n } else {\n for (let subKey in currentValue) {\n _diff(currentValue[subKey], preValue[subKey], (path == '' ? '' : path + '.') + key + '.' + subKey, result)\n }\n }\n }\n }\n }\n } else if (rootCurrentType == ARRAYTYPE) {\n if (rootPreType != ARRAYTYPE) {\n setResult(result, path, current)\n } else {\n if (current.length < pre.length) {\n setResult(result, path, current)\n } else {\n current.forEach((item, index) => {\n _diff(item, pre[index], path + '[' + index + ']', result)\n })\n }\n }\n } else {\n setResult(result, path, current)\n }\n}\n\nfunction setResult (result, k, v) {\n if (type(v) != FUNCTIONTYPE) {\n result[k] = v\n }\n}\n\nfunction type (obj) {\n return Object.prototype.toString.call(obj)\n}\n","const json = JSON\n\nexport const clone = (obj) => json.parse(stringify(obj))\n\nconst isArray = Array.isArray || function (x) {\n return {}.toString.call(x) === '[object Array]'\n}\n\nconst objectKeys = Object.keys || function (obj) {\n const has = Object.prototype.hasOwnProperty || function () { return true }\n const keys = []\n for (const key in obj) {\n if (has.call(obj, key)) keys.push(key)\n }\n return keys\n}\n\nfunction stringify (obj, opts) {\n if (!opts) opts = {}\n if (typeof opts === 'function') opts = { cmp: opts }\n let space = opts.space || ''\n if (typeof space === 'number') space = Array(space + 1).join(' ')\n const cycles = (typeof opts.cycles === 'boolean') ? opts.cycles : false\n const replacer = opts.replacer || function (key, value) { return value }\n\n const cmp = opts.cmp && (function (f) {\n return function (node) {\n return function (a, b) {\n const aobj = { key: a, value: node[a] }\n const bobj = { key: b, value: node[b] }\n return f(aobj, bobj)\n }\n }\n })(opts.cmp)\n\n const seen = []\n return (function stringify (parent, key, node, level) {\n const indent = space ? ('\\n' + new Array(level + 1).join(space)) : ''\n const colonSeparator = space ? ': ' : ':'\n\n if (node && node.toJSON && typeof node.toJSON === 'function') {\n node = node.toJSON()\n }\n\n node = replacer.call(parent, key, node)\n\n if (node === undefined) {\n return\n }\n if (typeof node !== 'object' || node === null) {\n return json.stringify(node)\n }\n if (isArray(node)) {\n const out = []\n for (let i = 0; i < node.length; i++) {\n const item = stringify(node, i, node[i], level + 1) || json.stringify(null)\n out.push(indent + space + item)\n }\n return '[' + out.join(',') + indent + ']'\n } else {\n if (seen.indexOf(node) !== -1) {\n if (cycles) return json.stringify('__cycle__')\n throw new TypeError('Converting circular structure to JSON')\n } else seen.push(node)\n\n const keys = objectKeys(node).sort(cmp && cmp(node))\n const out = []\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i]\n const value = stringify(node, key, node[key], level + 1)\n\n if (!value) continue\n\n const keyValue = json.stringify(key) +\n colonSeparator +\n value\n\n out.push(indent + space + keyValue)\n }\n seen.splice(seen.indexOf(node), 1)\n return '{' + out.join(',') + indent + '}'\n }\n })({ '': obj }, '', obj, 0)\n}\n","import { ComponentLifecycle, eventCenter, nextTick } from '@tarojs/taro'\nimport { getCurrentInstance } from '@tarojs/runtime'\nimport { lifecycles, lifecycleMap, TaroLifeCycles, uniquePageLifecycle, appOptions } from './lifecycle'\nimport { bind, isEqual, safeGet, safeSet, report, unsupport, flattenBehaviors } from './utils'\nimport { diff } from './diff'\nimport { clone } from './clone'\n\ntype Observer = (newProps, oldProps, changePath: string) => void\ntype Func = (...args: any[]) => void\n\ninterface ObserverProperties {\n name: string,\n observer: string | Observer\n}\n\ninterface ComponentClass<P = Record<string, any>, S = Record<string, any>> extends ComponentLifecycle<P, S> {\n new (props: P)\n externalClasses: Record<string, unknown>\n defaultProps?: Partial<P>\n _observeProps?: ObserverProperties[]\n observers?: Record<string, Func>\n}\n\ninterface WxOptions {\n methods?: {\n [key: string]: Func;\n }\n properties?: Record<string, Record<string, unknown> | Func>\n props?: Record<string, unknown>\n data?: Record<string, unknown>,\n observers?: Record<string, Func>\n lifetimes?: Record<string, Func>\n behaviors?: any[]\n}\n\nfunction defineGetter (component, key: string, getter: string) {\n Object.defineProperty(component, key, {\n enumerable: true,\n configurable: true,\n get: () => {\n if (getter === 'props') {\n return component.props\n }\n return {\n ...component.state,\n ...component.props\n }\n }\n })\n}\n\nfunction isFunction (o): o is Func {\n return typeof o === 'function'\n}\n\nexport default function withWeapp (weappConf: WxOptions, isApp = false) {\n if (typeof weappConf === 'object' && Object.keys(weappConf).length === 0) {\n report('withWeapp 请传入“App/页面/组件“的配置对象。如果原生写法使用了基类,请将基类组合后的配置对象传入,详情请参考文档。')\n }\n return (ConnectComponent: ComponentClass<any, any>) => {\n const behaviorMap = new Map<string, any[]>([\n ['properties', []],\n ['data', []],\n ['methods', []],\n ['created', []],\n ['attached', []],\n ['ready', []],\n ['detached', []]\n ])\n const behaviorProperties = {}\n if (weappConf.behaviors?.length) {\n const { behaviors } = weappConf\n behaviors.forEach(behavior => flattenBehaviors(behavior, behaviorMap))\n\n const propertiesList = behaviorMap.get('properties')!\n if (propertiesList.length) {\n propertiesList.forEach(property => {\n Object.assign(behaviorProperties, property)\n })\n Object.keys(behaviorProperties).forEach(propName => {\n const propValue = behaviorProperties[propName]\n if (!weappConf.properties) {\n weappConf.properties = {}\n }\n if (!weappConf.properties.hasOwnProperty(propName)) {\n if (propValue && typeof propValue === 'object' && propValue.value) {\n propValue.value = clone(propValue.value)\n }\n weappConf.properties[propName] = propValue\n }\n })\n }\n }\n\n class BaseComponent<P = Record<string, any>, S = Record<string, any>> extends ConnectComponent {\n private _observeProps: ObserverProperties[] = []\n\n // mixins 可以多次调用生命周期\n private willMounts: Func[] = []\n\n private didMounts: Func[] = []\n\n private didHides: Func[] = []\n\n private didShows: Func[] = []\n\n private willUnmounts: Func[] = []\n\n private eventDistoryList: Func[] = []\n\n private current: any = getCurrentInstance()\n\n public observers?: Record<string, Func>\n\n public taroGlobalData: Record<any, any> = Object.create(null)\n\n public data: any\n\n constructor (props) {\n super(props)\n this.state = this.state || {}\n this.init(weappConf)\n defineGetter(this, 'data', 'state')\n defineGetter(this, 'properties', 'props')\n }\n\n private initProps (props: any) {\n for (const propKey in props) {\n if (props.hasOwnProperty(propKey)) {\n const propValue = props[propKey]\n // propValue 可能是 null, 构造函数, 对象\n if (propValue && !isFunction(propValue)) {\n if (propValue.observer) {\n this._observeProps.push({\n name: propKey,\n observer: propValue.observer\n })\n }\n }\n }\n }\n }\n\n private init (options: WxOptions) {\n // 处理 Behaviors\n if (options.behaviors?.length) {\n for (const [key, list] of behaviorMap.entries()) {\n switch (key) {\n case 'created':\n case 'attached':\n case 'detached':\n case 'ready':\n list.forEach(fn => this.initLifeCycles(key, fn))\n break\n }\n }\n }\n\n for (const confKey in options) {\n // 不支持的属性\n if (unsupport.has(confKey)) {\n const advise = unsupport.get(confKey)\n report(advise)\n }\n\n const confValue = options[confKey]\n\n switch (confKey) {\n case 'behaviors':\n break\n case 'data': {\n if (isApp) {\n this[confKey] = confValue\n if (!appOptions.includes(confKey)) {\n this.defineProperty(this.taroGlobalData, confKey, this)\n }\n } else {\n this.state = {\n ...confValue,\n ...this.state\n }\n }\n break\n }\n case 'properties':\n this.initProps(Object.assign(behaviorProperties, confValue))\n break\n case 'methods':\n for (const key in confValue) {\n const method = confValue[key]\n this[key] = bind(method, this)\n }\n break\n case 'lifetimes':\n for (const key in confValue) {\n this.initLifeCycles(key, confValue[key])\n }\n break\n case 'pageLifetimes':\n for (const key in confValue) {\n const cb = confValue[key]\n switch (key) {\n case 'show': {\n this.initLifeCycleListener('show', cb)\n break\n }\n case 'hide': {\n this.initLifeCycleListener('hide', cb)\n break\n }\n case 'resize': {\n report('不支持组件所在页面的生命周期 pageLifetimes.resize。')\n break\n }\n }\n }\n break\n default:\n if (lifecycles.has(confKey)) {\n // 优先使用 lifetimes 中定义的生命周期\n if (options.lifetimes?.[confKey]) {\n break\n }\n\n const lifecycle = options[confKey]\n this.initLifeCycles(confKey, lifecycle)\n } else if (isFunction(confValue)) {\n this[confKey] = bind(confValue, this)\n\n if (isApp && !appOptions.includes(confKey)) {\n this.defineProperty(this.taroGlobalData, confKey, this)\n }\n\n // 原生页面和 Taro 页面中共计只能定义一次的生命周期\n if (uniquePageLifecycle.includes(confKey) && ConnectComponent.prototype[confKey]) {\n report(`生命周期 ${confKey} 已在原生部分进行定义,React 部分的定义将不会被执行。`)\n }\n } else {\n this[confKey] = confValue\n\n if (isApp && !appOptions.includes(confKey)) {\n this.defineProperty(this.taroGlobalData, confKey, this)\n }\n }\n\n break\n }\n }\n\n // 处理 Behaviors\n if (options.behaviors?.length) {\n const behaviorData = {}\n const methods = {}\n for (const [key, list] of behaviorMap.entries()) {\n switch (key) {\n case 'data':\n [...list, this.state].forEach((dataObject, index) => {\n Object.keys(dataObject).forEach(dataKey => {\n const value = dataObject[dataKey]\n const preValue = behaviorData[dataKey]\n const valueType = typeof value\n const preValueType = typeof preValue\n if (valueType === 'object') {\n if (!value) {\n behaviorData[dataKey] = value\n } else if (preValueType !== 'object' || !preValueType || Array.isArray(value)) {\n behaviorData[dataKey] = index === list.length ? value : clone(value)\n } else {\n const newVal = Object.assign({}, preValue, value)\n behaviorData[dataKey] = index === list.length ? newVal : clone(newVal)\n }\n } else {\n behaviorData[dataKey] = value\n }\n })\n })\n this.state = behaviorData\n break\n case 'methods':\n list.forEach(methodsObject => {\n Object.assign(methods, methodsObject)\n })\n Object.keys(methods).forEach(methodName => {\n if (!this[methodName]) {\n const method = methods[methodName]\n this[methodName] = bind(method, this)\n }\n })\n break\n default:\n break\n }\n }\n }\n }\n\n private initLifeCycles (lifecycleName: string, lifecycle: (...args: any[]) => any) {\n // 不支持的生命周期\n if (unsupport.has(lifecycleName)) {\n const advise = unsupport.get(lifecycleName)\n return report(advise)\n }\n\n if (lifecycleName === 'ready') {\n // 如果组件是延时渲染的,页面 onReady 的事件已经 emit 了,因此使用 componentDidMount + nextTick 模拟\n if (this.current.page.onReady.called) {\n this.didMounts.push(function (...args: unknown[]) {\n nextTick(() => {\n if (isFunction(lifecycle)) {\n lifecycle.apply(this, args)\n }\n })\n })\n } else {\n this.initLifeCycleListener('ready', lifecycle)\n }\n } else {\n for (const lifecycleKey in lifecycleMap) {\n const cycleNames = lifecycleMap[lifecycleKey]\n if (cycleNames.indexOf(lifecycleName) !== -1) {\n switch (lifecycleKey) {\n case TaroLifeCycles.DidHide:\n this.didHides.push(lifecycle)\n break\n case TaroLifeCycles.DidMount:\n this.didMounts.push(lifecycle)\n break\n case TaroLifeCycles.DidShow:\n this.didShows.push(lifecycle)\n break\n case TaroLifeCycles.WillMount:\n this.willMounts.push(lifecycle)\n break\n case TaroLifeCycles.WillUnmount:\n this.willUnmounts.push(lifecycle)\n break\n default:\n break\n }\n }\n }\n }\n\n // mixins 不会覆盖已经设置的生命周期,加入到 this 是为了形如 this.created() 的调用\n if (!isFunction(this[lifecycleName])) {\n this[lifecycleName] = lifecycle\n }\n }\n\n private safeExecute = (func?: Func, ...args: unknown[]) => {\n if (isFunction(func)) func.apply(this, args)\n }\n\n private initLifeCycleListener (name: string, cb: (...args: any[]) => void) {\n // 组件的 ready、show、hide 需要利用页面事件触发\n const { router } = this.current\n const lifecycleName = `on${name[0].toUpperCase()}${name.slice(1)}`\n cb = cb.bind(this)\n router?.[lifecycleName] && eventCenter.on(router[lifecycleName], cb)\n // unMount 时需要取消事件监听\n this.eventDistoryList.push(() => eventCenter.off(router[lifecycleName], cb))\n }\n\n private executeLifeCycles (funcs: Func[], ...args: unknown[]) {\n for (let i = 0; i < funcs.length; i++) {\n const func = funcs[i]\n this.safeExecute(func, ...args)\n }\n }\n\n private triggerPropertiesObservers (prevProps, nextProps) {\n this._observeProps.forEach(({ name: key, observer }) => {\n const prop = prevProps?.[key]\n const nextProp = nextProps[key]\n // 小程序是深比较不同之后才 trigger observer\n if (!isEqual(prop, nextProp)) {\n if (typeof observer === 'string') {\n const ob = this[observer]\n if (isFunction(ob)) {\n ob.call(this, nextProp, prop, key)\n }\n } else if (isFunction(observer)) {\n observer.call(this, nextProp, prop, key)\n }\n }\n })\n }\n\n private triggerObservers (current, prev) {\n const observers = this.observers\n if (observers == null) {\n return\n }\n\n if (Object.keys(observers).length === 0) {\n return\n }\n\n const result = diff(current, prev)\n const resultKeys = Object.keys(result)\n if (resultKeys.length === 0) {\n return\n }\n\n for (const observerKey in observers) {\n if (/\\*\\*/.test(observerKey)) {\n report('数据监听器 observers 不支持使用通配符 **。')\n continue\n }\n\n const keys = observerKey.split(',').map(k => k.trim())\n let isModified = false\n\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i]\n for (let j = 0; j < resultKeys.length; j++) {\n const resultKey = resultKeys[j]\n if (\n resultKey.startsWith(key) ||\n (key.startsWith(resultKey) && key.endsWith(']'))\n ) {\n isModified = true\n }\n }\n }\n if (isModified) {\n observers[observerKey].apply(this, keys.map(key => safeGet(current, key)))\n }\n }\n }\n\n private defineProperty (target, key, data) {\n Object.defineProperty(target, key, {\n configurable: true,\n enumerable: true,\n set (value) {\n data[key] = value\n },\n get () {\n return data[key]\n }\n })\n }\n\n public privateStopNoop (...args) {\n let e\n let fn\n if (args.length === 2) {\n fn = args[0]\n e = args[1]\n } else if (args.length === 1) {\n e = args[0]\n }\n if (e.type === 'touchmove') {\n report('catchtouchmove 转换后只能停止回调函数的冒泡,不能阻止滚动穿透。如要阻止滚动穿透,可以手动给编译后的 View 组件加上 catchMove 属性')\n }\n e.stopPropagation()\n isFunction(fn) && fn(e)\n }\n\n // ================ React 生命周期 ================\n\n public componentWillMount () {\n this.safeExecute(super.componentWillMount)\n this.executeLifeCycles(this.willMounts, this.current.router || {})\n this.triggerObservers(this.data, BaseComponent.defaultProps)\n this.triggerPropertiesObservers(BaseComponent.defaultProps, this.props)\n }\n\n public componentDidMount () {\n this.safeExecute(super.componentDidMount)\n this.executeLifeCycles(this.didMounts)\n }\n\n public componentWillUnmount () {\n this.eventDistoryList.forEach(fn => fn())\n this.safeExecute(super.componentWillUnmount)\n this.executeLifeCycles(this.willUnmounts)\n }\n\n public componentDidHide () {\n this.safeExecute(super.componentDidHide)\n this.executeLifeCycles(this.didHides)\n }\n\n public componentDidShow () {\n this.safeExecute(super.componentDidShow, this.current.router || {})\n this.executeLifeCycles(this.didShows, this.current.router || {})\n }\n\n public componentWillReceiveProps (nextProps: P) {\n this.triggerObservers(nextProps, this.props)\n this.triggerPropertiesObservers(this.props, nextProps)\n this.safeExecute(super.componentWillReceiveProps)\n }\n\n // ================ 小程序 App, Page, Component 实例属性与方法 ================\n\n get is () {\n return this.current.page.is\n }\n\n get id () {\n return this.current.page.id\n }\n\n get dataset () {\n return this.current.page.dataset\n }\n\n public setData = (obj: S, callback?: () => void) => {\n let oldState\n if (this.observers && Object.keys(Object.keys(this.observers))) {\n oldState = clone(this.state)\n }\n Object.keys(obj).forEach(key => {\n safeSet(this.state, key, obj[key])\n })\n this.setState(this.state, () => {\n this.triggerObservers(this.state, oldState)\n if (callback) {\n callback.call(this)\n }\n })\n }\n\n public triggerEvent = (eventName: string, detail, options) => {\n if (options) {\n report('triggerEvent 不支持事件选项。')\n }\n\n const props = this.props\n const dataset = {}\n for (const key in props) {\n if (!key.startsWith('data-')) continue\n dataset[key.replace(/^data-/, '')] = props[key]\n }\n\n const func = props[`on${eventName[0].toUpperCase()}${eventName.slice(1)}`]\n if (isFunction(func)) {\n func.call(this, {\n type: eventName,\n detail,\n target: {\n id: props.id || '',\n dataset\n },\n currentTarget: {\n id: props.id || '',\n dataset\n }\n })\n }\n }\n\n private componentMethodsProxy (method: string) {\n return (...args: any[]) => {\n const page = this.current.page\n if (page?.[method]) {\n return page[method](...args)\n } else {\n console.error(`page 下没有 ${method} 方法`)\n }\n }\n }\n\n public hasBehavior = this.componentMethodsProxy('hasBehavior')\n public createSelectorQuery = this.componentMethodsProxy('createSelectorQuery')\n public createIntersectionObserver = this.componentMethodsProxy('createIntersectionObserver')\n public createMediaQueryObserver = this.componentMethodsProxy('createMediaQueryObserver')\n public getRelationNodes = this.componentMethodsProxy('getRelationNodes')\n public getTabBar = this.componentMethodsProxy('getTabBar')\n public getPageId = this.componentMethodsProxy('getPageId')\n public animate = this.componentMethodsProxy('animate')\n public clearAnimation = this.componentMethodsProxy('clearAnimation')\n public setUpdatePerformanceListener = this.componentMethodsProxy('setUpdatePerformanceListener')\n\n public selectComponent () {\n report(unsupport.get('selectComponent'))\n }\n\n public selectAllComponents () {\n report(unsupport.get('selectAllComponents'))\n }\n\n public selectOwnerComponent () {\n report(unsupport.get('selectOwnerComponent'))\n }\n\n public groupSetData () {\n report(unsupport.get('groupSetData'))\n }\n }\n\n const props = weappConf.properties\n\n if (props) {\n for (const propKey in props) {\n const propValue = props[propKey]\n if (propValue != null && !isFunction(propValue)) {\n if (propValue.value !== undefined) { // 如果是 null 也赋值到 defaultProps\n BaseComponent.defaultProps = {\n [propKey]: propValue.value,\n ...BaseComponent.defaultProps\n }\n }\n }\n }\n }\n\n const staticOptions = ['externalClasses', 'relations', 'options']\n\n staticOptions.forEach(option => {\n const value = weappConf[option]\n if (value != null) {\n BaseComponent[option] = value\n }\n })\n\n return BaseComponent\n }\n}\n"],"names":["TaroLifeCycles","lifecycleMap","WillMount","DidMount","DidShow","DidHide","WillUnmount","lifecycles","Set","key","lifecycle","forEach","l","add","uniquePageLifecycle","appOptions","bind","fn","ctx","boundFn","a","arguments","length","apply","call","_length","isEqual","obj1","obj2","JSON","stringify","safeGet","obj","propsArg","defaultValue","props","prop","Array","isArray","slice","replace","split","Error","shift","undefined","safeSet","value","lastProp","pop","thisProp","report","msg","console","warn","unsupport","Map","flattenBehaviors","behavior","behaviorMap","subBehaviors","behaviors","subBehavior","Object","keys","has","advise","get","list","push","ARRAYTYPE","OBJECTTYPE","FUNCTIONTYPE","diff","current","pre","result","syncKeys","_diff","rootCurrentType","type","rootPreType","currentValue","item","index","path","setResult","preValue","currentType","preType","subKey","k","v","prototype","toString","json","clone","parse","x","objectKeys","hasOwnProperty","opts","cmp","space","join","cycles","replacer","f","node","b","aobj","bobj","seen","parent","level","indent","colonSeparator","toJSON","out","i","indexOf","TypeError","sort","keyValue","splice","defineGetter","component","getter","defineProperty","enumerable","configurable","state","isFunction","o","withWeapp","weappConf","isApp","ConnectComponent","behaviorProperties","propertiesList","property","assign","propName","propValue","properties","BaseComponent","getCurrentInstance","create","func","args","callback","oldState","observers","setState","triggerObservers","eventName","detail","options","dataset","startsWith","toUpperCase","target","id","currentTarget","componentMethodsProxy","init","propKey","observer","_observeProps","name","entries","initLifeCycles","confKey","confValue","includes","taroGlobalData","initProps","method","cb","initLifeCycleListener","lifetimes","behaviorData","methods","dataObject","dataKey","valueType","preValueType","newVal","methodsObject","methodName","lifecycleName","page","onReady","called","didMounts","nextTick","lifecycleKey","cycleNames","didHides","didShows","willMounts","willUnmounts","router","eventCenter","on","eventDistoryList","off","funcs","safeExecute","prevProps","nextProps","nextProp","ob","prev","resultKeys","observerKey","test","map","trim","isModified","j","resultKey","endsWith","data","set","e","stopPropagation","executeLifeCycles","defaultProps","triggerPropertiesObservers","is","error","staticOptions","option"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/lifecycle.ts","../src/utils.ts","../src/diff.js","../src/clone.js","../src/index.ts"],"sourcesContent":["interface LifecycleMap {\n [key: string]: string[]\n}\n\nexport enum TaroLifeCycles {\n WillMount = 'componentWillMount',\n DidMount = 'componentDidMount',\n DidShow = 'componentDidShow',\n DidHide = 'componentDidHide',\n WillUnmount = 'componentWillUnmount'\n}\n\nexport const lifecycleMap: LifecycleMap = {\n [TaroLifeCycles.WillMount]: ['created'],\n [TaroLifeCycles.DidMount]: ['attached'],\n [TaroLifeCycles.DidShow]: ['onShow'],\n [TaroLifeCycles.DidHide]: ['onHide'],\n [TaroLifeCycles.WillUnmount]: ['detached', 'onUnload']\n}\n\nexport const lifecycles = new Set<string>(['ready'])\n\nfor (const key in lifecycleMap) {\n const lifecycle = lifecycleMap[key]\n lifecycle.forEach(l => lifecycles.add(l))\n}\n\nexport const uniquePageLifecycle = [\n 'onPullDownRefresh',\n 'onReachBottom',\n 'onShareAppMessage',\n 'onShareTimeline',\n 'onAddToFavorites',\n 'onPageScroll',\n 'onResize',\n 'onTabItemTap'\n]\n\nexport const appOptions = [\n 'onLaunch',\n 'onShow',\n 'onHide',\n 'onError',\n 'onPageNotFound',\n 'onUnhandledRejection',\n 'onThemeChange'\n]\n","/**\n * Simple bind, faster than native\n */\nexport function bind (fn /*: Function */, ctx /*: Object */) /*: Function */ {\n if (!fn) return false\n\n function boundFn (a) {\n const l /*: number */ = arguments.length\n return l ? (l > 1 ? fn.apply(ctx, arguments) : fn.call(ctx, a)) : fn.call(ctx)\n }\n\n // record original fn length\n boundFn._length = fn.length\n return boundFn\n}\n\nexport function isEqual (obj1, obj2) {\n return JSON.stringify(obj1) === JSON.stringify(obj2)\n}\n\nexport function noop (..._: unknown[]) {\n //\n}\n\nconst sharedPropertyDefinition = {\n enumerable: true,\n configurable: true,\n get: noop,\n set: noop\n}\n\nexport function proxy (target, sourceKey: string, key: string) {\n sharedPropertyDefinition.get = function proxyGetter () {\n return this[sourceKey][key]\n }\n sharedPropertyDefinition.set = function proxySetter (val) {\n this[sourceKey][key] = val\n }\n Object.defineProperty(target, key, sharedPropertyDefinition)\n}\n\nexport function safeGet (obj, propsArg, defaultValue?) {\n if (!obj) {\n return defaultValue\n }\n let props, prop\n if (Array.isArray(propsArg)) {\n props = propsArg.slice(0)\n }\n if (typeof propsArg === 'string') {\n props = propsArg.replace(/\\[(.+?)\\]/g, '.$1')\n props = props.split('.')\n }\n if (typeof propsArg === 'symbol') {\n props = [propsArg]\n }\n if (!Array.isArray(props)) {\n throw new Error('props arg must be an array, a string or a symbol')\n }\n while (props.length) {\n prop = props.shift()\n if (!obj) {\n return defaultValue\n }\n obj = obj[prop]\n if (obj === undefined) {\n return defaultValue\n }\n }\n return obj\n}\n\nexport function safeSet (obj, props, value) {\n if (typeof props === 'string') {\n props = props.replace(/\\[(.+?)\\]/g, '.$1')\n props = props.split('.')\n }\n if (typeof props === 'symbol') {\n props = [props]\n }\n const lastProp = props.pop()\n if (!lastProp) {\n return false\n }\n let thisProp\n while ((thisProp = props.shift())) {\n if (typeof obj[thisProp] === 'undefined') {\n obj[thisProp] = {}\n }\n\n // 直接按路径修改 this.state 可能会导致 nextProps 也被修改\n // 因此按路径寻找时,每一层都复制一遍\n if (Array.isArray(obj[thisProp])) {\n obj[thisProp] = [...obj[thisProp]]\n } else if (typeof obj[thisProp] === 'object') {\n obj[thisProp] = { ...obj[thisProp] }\n }\n\n obj = obj[thisProp]\n if (!obj || typeof obj !== 'object') {\n return false\n }\n }\n obj[lastProp] = value\n return true\n}\n\nexport function report (msg) {\n console.warn('[Taro Convert Warning] ' + msg)\n}\n\nexport const unsupport = new Map([\n ['onError', '不支持 App 的 onError 生命周期方法。'],\n ['onPageNotFound', '不支持 App 的 onPageNotFound 生命周期方法。'],\n ['onUnhandledRejection', '不支持 App 的 onUnhandledRejection 生命周期方法。'],\n ['onThemeChange', '不支持 App 的 onThemeChange 生命周期方法。'],\n ['moved', '不支持自定义组件的 moved 生命周期。'],\n ['externalClasses', '不支持自定义组件的 externalClasses 功能。'],\n ['relations', '不支持自定义组件的 relations 功能。'],\n ['options', '不支持自定义组件的 options 功能。'],\n ['definitionFilter', '不支持自定义组件的 definitionFilter 功能。'],\n ['selectComponent', 'selectComponent 方法产生不到目标效果,请使用 React 的 ref 进行重构。'],\n ['selectAllComponents', 'selectAllComponents 方法产生不到目标效果,请使用 React 的 ref 进行重构。'],\n ['selectOwnerComponent', 'selectOwnerComponent 方法产生不到目标效果,请使用 React 语法重构。'],\n ['groupSetData', 'groupSetData 方法产生不到目标效果,请使用 React 语法重构。']\n])\n\nexport function flattenBehaviors (behavior, behaviorMap: Map<string, any[]>) {\n if (typeof behavior === 'string') {\n return report(`不支持使用内置 Behavior: [${behavior}]`)\n }\n const subBehaviors = behavior.behaviors\n if (subBehaviors?.length) {\n subBehaviors.forEach(subBehavior => flattenBehaviors(subBehavior, behaviorMap))\n }\n\n Object.keys(behavior).forEach(key => {\n // 不支持的属性\n if (unsupport.has(key)) {\n const advise = unsupport.get(key)\n return report(advise)\n }\n\n if (behaviorMap.has(key)) {\n const list = behaviorMap.get(key)!\n const value = behavior[key]\n list.push(value)\n }\n })\n}\n","/*eslint-disable*/\nconst ARRAYTYPE = '[object Array]'\nconst OBJECTTYPE = '[object Object]'\nconst FUNCTIONTYPE = '[object Function]'\n\nexport function diff (current, pre) {\n const result = {}\n syncKeys(current, pre)\n _diff(current, pre, '', result)\n return result\n}\n\nfunction syncKeys (current, pre) {\n if (current === pre) return\n const rootCurrentType = type(current)\n const rootPreType = type(pre)\n if (rootCurrentType == OBJECTTYPE && rootPreType == OBJECTTYPE) {\n // if(Object.keys(current).length >= Object.keys(pre).length){\n for (let key in pre) {\n const currentValue = current[key]\n if (currentValue === undefined) {\n current[key] = null\n } else {\n syncKeys(currentValue, pre[key])\n }\n }\n // }\n } else if (rootCurrentType == ARRAYTYPE && rootPreType == ARRAYTYPE) {\n if (current.length >= pre.length) {\n pre.forEach((item, index) => {\n syncKeys(current[index], item)\n })\n }\n }\n}\n\nfunction _diff (current, pre, path, result) {\n if (current === pre) return\n const rootCurrentType = type(current)\n const rootPreType = type(pre)\n if (rootCurrentType == OBJECTTYPE) {\n if (rootPreType != OBJECTTYPE || Object.keys(current).length < Object.keys(pre).length) {\n setResult(result, path, current)\n } else {\n for (let key in current) {\n const currentValue = current[key]\n const preValue = pre[key]\n const currentType = type(currentValue)\n const preType = type(preValue)\n if (currentType != ARRAYTYPE && currentType != OBJECTTYPE) {\n if (currentValue != pre[key]) {\n setResult(result, (path == '' ? '' : path + '.') + key, currentValue)\n }\n } else if (currentType == ARRAYTYPE) {\n if (preType != ARRAYTYPE) {\n setResult(result, (path == '' ? '' : path + '.') + key, currentValue)\n } else {\n if (currentValue.length < preValue.length) {\n setResult(result, (path == '' ? '' : path + '.') + key, currentValue)\n } else {\n currentValue.forEach((item, index) => {\n _diff(item, preValue[index], (path == '' ? '' : path + '.') + key + '[' + index + ']', result)\n })\n }\n }\n } else if (currentType == OBJECTTYPE) {\n if (preType != OBJECTTYPE || Object.keys(currentValue).length < Object.keys(preValue).length) {\n setResult(result, (path == '' ? '' : path + '.') + key, currentValue)\n } else {\n for (let subKey in currentValue) {\n _diff(currentValue[subKey], preValue[subKey], (path == '' ? '' : path + '.') + key + '.' + subKey, result)\n }\n }\n }\n }\n }\n } else if (rootCurrentType == ARRAYTYPE) {\n if (rootPreType != ARRAYTYPE) {\n setResult(result, path, current)\n } else {\n if (current.length < pre.length) {\n setResult(result, path, current)\n } else {\n current.forEach((item, index) => {\n _diff(item, pre[index], path + '[' + index + ']', result)\n })\n }\n }\n } else {\n setResult(result, path, current)\n }\n}\n\nfunction setResult (result, k, v) {\n if (type(v) != FUNCTIONTYPE) {\n result[k] = v\n }\n}\n\nfunction type (obj) {\n return Object.prototype.toString.call(obj)\n}\n","const json = JSON\n\nexport const clone = (obj) => json.parse(stringify(obj))\n\nconst isArray = Array.isArray || function (x) {\n return {}.toString.call(x) === '[object Array]'\n}\n\nconst objectKeys = Object.keys || function (obj) {\n const has = Object.prototype.hasOwnProperty || function () { return true }\n const keys = []\n for (const key in obj) {\n if (has.call(obj, key)) keys.push(key)\n }\n return keys\n}\n\nfunction stringify (obj, opts) {\n if (!opts) opts = {}\n if (typeof opts === 'function') opts = { cmp: opts }\n let space = opts.space || ''\n if (typeof space === 'number') space = Array(space + 1).join(' ')\n const cycles = (typeof opts.cycles === 'boolean') ? opts.cycles : false\n const replacer = opts.replacer || function (key, value) { return value }\n\n const cmp = opts.cmp && (function (f) {\n return function (node) {\n return function (a, b) {\n const aobj = { key: a, value: node[a] }\n const bobj = { key: b, value: node[b] }\n return f(aobj, bobj)\n }\n }\n })(opts.cmp)\n\n const seen = []\n return (function stringify (parent, key, node, level) {\n const indent = space ? ('\\n' + new Array(level + 1).join(space)) : ''\n const colonSeparator = space ? ': ' : ':'\n\n if (node && node.toJSON && typeof node.toJSON === 'function') {\n node = node.toJSON()\n }\n\n node = replacer.call(parent, key, node)\n\n if (node === undefined) {\n return\n }\n if (typeof node !== 'object' || node === null) {\n return json.stringify(node)\n }\n if (isArray(node)) {\n const out = []\n for (let i = 0; i < node.length; i++) {\n const item = stringify(node, i, node[i], level + 1) || json.stringify(null)\n out.push(indent + space + item)\n }\n return '[' + out.join(',') + indent + ']'\n } else {\n if (seen.indexOf(node) !== -1) {\n if (cycles) return json.stringify('__cycle__')\n throw new TypeError('Converting circular structure to JSON')\n } else seen.push(node)\n\n const keys = objectKeys(node).sort(cmp && cmp(node))\n const out = []\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i]\n const value = stringify(node, key, node[key], level + 1)\n\n if (!value) continue\n\n const keyValue = json.stringify(key) +\n colonSeparator +\n value\n\n out.push(indent + space + keyValue)\n }\n seen.splice(seen.indexOf(node), 1)\n return '{' + out.join(',') + indent + '}'\n }\n })({ '': obj }, '', obj, 0)\n}\n","import { ComponentLifecycle, eventCenter, nextTick } from '@tarojs/taro'\nimport { getCurrentInstance } from '@tarojs/runtime'\nimport { lifecycles, lifecycleMap, TaroLifeCycles, uniquePageLifecycle, appOptions } from './lifecycle'\nimport { bind, isEqual, safeGet, safeSet, report, unsupport, flattenBehaviors } from './utils'\nimport { diff } from './diff'\nimport { clone } from './clone'\n\ntype Observer = (newProps, oldProps, changePath: string) => void\ntype Func = (...args: any[]) => void\n\ninterface ObserverProperties {\n name: string,\n observer: string | Observer\n}\n\ninterface ComponentClass<P = Record<string, any>, S = Record<string, any>> extends ComponentLifecycle<P, S> {\n new (props: P)\n externalClasses: Record<string, unknown>\n defaultProps?: Partial<P>\n _observeProps?: ObserverProperties[]\n observers?: Record<string, Func>\n}\n\ninterface WxOptions {\n methods?: {\n [key: string]: Func;\n }\n properties?: Record<string, Record<string, unknown> | Func>\n props?: Record<string, unknown>\n data?: Record<string, unknown>,\n observers?: Record<string, Func>\n lifetimes?: Record<string, Func>\n behaviors?: any[]\n}\n\nfunction defineGetter (component, key: string, getter: string) {\n Object.defineProperty(component, key, {\n enumerable: true,\n configurable: true,\n get: () => {\n if (getter === 'props') {\n return component.props\n }\n return {\n ...component.state,\n ...component.props\n }\n }\n })\n}\n\nfunction isFunction (o): o is Func {\n return typeof o === 'function'\n}\n\nexport default function withWeapp (weappConf: WxOptions, isApp = false) {\n if (typeof weappConf === 'object' && Object.keys(weappConf).length === 0) {\n report('withWeapp 请传入“App/页面/组件“的配置对象。如果原生写法使用了基类,请将基类组合后的配置对象传入,详情请参考文档。')\n }\n return (ConnectComponent: ComponentClass<any, any>) => {\n const behaviorMap = new Map<string, any[]>([\n ['properties', []],\n ['data', []],\n ['methods', []],\n ['created', []],\n ['attached', []],\n ['ready', []],\n ['detached', []]\n ])\n const behaviorProperties = {}\n if (weappConf.behaviors?.length) {\n const { behaviors } = weappConf\n behaviors.forEach(behavior => flattenBehaviors(behavior, behaviorMap))\n\n const propertiesList = behaviorMap.get('properties')!\n if (propertiesList.length) {\n propertiesList.forEach(property => {\n Object.assign(behaviorProperties, property)\n })\n Object.keys(behaviorProperties).forEach(propName => {\n const propValue = behaviorProperties[propName]\n if (!weappConf.properties) {\n weappConf.properties = {}\n }\n if (!weappConf.properties.hasOwnProperty(propName)) {\n if (propValue && typeof propValue === 'object' && propValue.value) {\n propValue.value = clone(propValue.value)\n }\n weappConf.properties[propName] = propValue\n }\n })\n }\n }\n\n class BaseComponent<P = Record<string, any>, S = Record<string, any>> extends ConnectComponent {\n private _observeProps: ObserverProperties[] = []\n\n // mixins 可以多次调用生命周期\n private willMounts: Func[] = []\n\n private didMounts: Func[] = []\n\n private didHides: Func[] = []\n\n private didShows: Func[] = []\n\n private willUnmounts: Func[] = []\n\n private eventDistoryList: Func[] = []\n\n private current: any = getCurrentInstance()\n\n public observers?: Record<string, Func>\n\n public taroGlobalData: Record<any, any> = Object.create(null)\n\n public data: any\n\n constructor (props) {\n super(props)\n this.state = this.state || {}\n this.init(weappConf)\n defineGetter(this, 'data', 'state')\n defineGetter(this, 'properties', 'props')\n }\n\n private initProps (props: any) {\n for (const propKey in props) {\n if (props.hasOwnProperty(propKey)) {\n const propValue = props[propKey]\n // propValue 可能是 null, 构造函数, 对象\n if (propValue && !isFunction(propValue)) {\n if (propValue.observer) {\n this._observeProps.push({\n name: propKey,\n observer: propValue.observer\n })\n }\n }\n }\n }\n }\n\n private init (options: WxOptions) {\n // 处理 Behaviors\n if (options.behaviors?.length) {\n for (const [key, list] of behaviorMap.entries()) {\n switch (key) {\n case 'created':\n case 'attached':\n case 'detached':\n case 'ready':\n list.forEach(fn => this.initLifeCycles(key, fn))\n break\n }\n }\n }\n\n for (const confKey in options) {\n // 不支持的属性\n if (unsupport.has(confKey)) {\n const advise = unsupport.get(confKey)\n report(advise)\n }\n\n const confValue = options[confKey]\n\n switch (confKey) {\n case 'behaviors':\n break\n case 'data': {\n if (isApp) {\n this[confKey] = confValue\n if (!appOptions.includes(confKey)) {\n this.defineProperty(this.taroGlobalData, confKey, this)\n }\n } else {\n this.state = {\n ...confValue,\n ...this.state\n }\n }\n break\n }\n case 'properties':\n this.initProps(Object.assign(behaviorProperties, confValue))\n break\n case 'methods':\n for (const key in confValue) {\n const method = confValue[key]\n this[key] = bind(method, this)\n }\n break\n case 'lifetimes':\n for (const key in confValue) {\n this.initLifeCycles(key, confValue[key])\n }\n break\n case 'pageLifetimes':\n for (const key in confValue) {\n const cb = confValue[key]\n switch (key) {\n case 'show': {\n this.initLifeCycleListener('show', cb)\n break\n }\n case 'hide': {\n this.initLifeCycleListener('hide', cb)\n break\n }\n case 'resize': {\n report('不支持组件所在页面的生命周期 pageLifetimes.resize。')\n break\n }\n }\n }\n break\n default:\n if (lifecycles.has(confKey)) {\n // 优先使用 lifetimes 中定义的生命周期\n if (options.lifetimes?.[confKey]) {\n break\n }\n\n const lifecycle = options[confKey]\n this.initLifeCycles(confKey, lifecycle)\n } else if (isFunction(confValue)) {\n this[confKey] = bind(confValue, this)\n\n if (isApp && !appOptions.includes(confKey)) {\n this.defineProperty(this.taroGlobalData, confKey, this)\n }\n\n // 原生页面和 Taro 页面中共计只能定义一次的生命周期\n if (uniquePageLifecycle.includes(confKey) && ConnectComponent.prototype[confKey]) {\n report(`生命周期 ${confKey} 已在原生部分进行定义,React 部分的定义将不会被执行。`)\n }\n } else {\n this[confKey] = confValue\n\n if (isApp && !appOptions.includes(confKey)) {\n this.defineProperty(this.taroGlobalData, confKey, this)\n }\n }\n\n break\n }\n }\n\n // 处理 Behaviors\n if (options.behaviors?.length) {\n const behaviorData = {}\n const methods = {}\n for (const [key, list] of behaviorMap.entries()) {\n switch (key) {\n case 'data':\n [...list, this.state].forEach((dataObject, index) => {\n Object.keys(dataObject).forEach(dataKey => {\n const value = dataObject[dataKey]\n const preValue = behaviorData[dataKey]\n const valueType = typeof value\n const preValueType = typeof preValue\n if (valueType === 'object') {\n if (!value) {\n behaviorData[dataKey] = value\n } else if (preValueType !== 'object' || !preValueType || Array.isArray(value)) {\n behaviorData[dataKey] = index === list.length ? value : clone(value)\n } else {\n const newVal = Object.assign({}, preValue, value)\n behaviorData[dataKey] = index === list.length ? newVal : clone(newVal)\n }\n } else {\n behaviorData[dataKey] = value\n }\n })\n })\n this.state = behaviorData\n break\n case 'methods':\n list.forEach(methodsObject => {\n Object.assign(methods, methodsObject)\n })\n Object.keys(methods).forEach(methodName => {\n if (!this[methodName]) {\n const method = methods[methodName]\n this[methodName] = bind(method, this)\n }\n })\n break\n default:\n break\n }\n }\n }\n }\n\n private initLifeCycles (lifecycleName: string, lifecycle: (...args: any[]) => any) {\n // 不支持的生命周期\n if (unsupport.has(lifecycleName)) {\n const advise = unsupport.get(lifecycleName)\n return report(advise)\n }\n\n if (lifecycleName === 'ready') {\n // 如果组件是延时渲染的,页面 onReady 的事件已经 emit 了,因此使用 componentDidMount + nextTick 模拟\n if (this.current.page.onReady.called) {\n this.didMounts.push(function (...args: unknown[]) {\n nextTick(() => {\n if (isFunction(lifecycle)) {\n lifecycle.apply(this, args)\n }\n })\n })\n } else {\n this.initLifeCycleListener('ready', lifecycle)\n }\n } else {\n for (const lifecycleKey in lifecycleMap) {\n const cycleNames = lifecycleMap[lifecycleKey]\n if (cycleNames.indexOf(lifecycleName) !== -1) {\n switch (lifecycleKey) {\n case TaroLifeCycles.DidHide:\n this.didHides.push(lifecycle)\n break\n case TaroLifeCycles.DidMount:\n this.didMounts.push(lifecycle)\n break\n case TaroLifeCycles.DidShow:\n this.didShows.push(lifecycle)\n break\n case TaroLifeCycles.WillMount:\n this.willMounts.push(lifecycle)\n break\n case TaroLifeCycles.WillUnmount:\n this.willUnmounts.push(lifecycle)\n break\n default:\n break\n }\n }\n }\n }\n\n // mixins 不会覆盖已经设置的生命周期,加入到 this 是为了形如 this.created() 的调用\n if (!isFunction(this[lifecycleName])) {\n this[lifecycleName] = lifecycle\n }\n }\n\n private safeExecute = (func?: Func, ...args: unknown[]) => {\n if (isFunction(func)) func.apply(this, args)\n }\n\n private initLifeCycleListener (name: string, cb: (...args: any[]) => void) {\n // 组件的 ready、show、hide 需要利用页面事件触发\n const { router } = this.current\n const lifecycleName = `on${name[0].toUpperCase()}${name.slice(1)}`\n cb = cb.bind(this)\n router?.[lifecycleName] && eventCenter.on(router[lifecycleName], cb)\n // unMount 时需要取消事件监听\n this.eventDistoryList.push(() => eventCenter.off(router[lifecycleName], cb))\n }\n\n private executeLifeCycles (funcs: Func[], ...args: unknown[]) {\n for (let i = 0; i < funcs.length; i++) {\n const func = funcs[i]\n this.safeExecute(func, ...args)\n }\n }\n\n private triggerPropertiesObservers (prevProps, nextProps) {\n this._observeProps.forEach(({ name: key, observer }) => {\n const prop = prevProps?.[key]\n const nextProp = nextProps[key]\n // 小程序是深比较不同之后才 trigger observer\n if (!isEqual(prop, nextProp)) {\n if (typeof observer === 'string') {\n const ob = this[observer]\n if (isFunction(ob)) {\n ob.call(this, nextProp, prop, key)\n }\n } else if (isFunction(observer)) {\n observer.call(this, nextProp, prop, key)\n }\n }\n })\n }\n\n private triggerObservers (current, prev) {\n const observers = this.observers\n if (observers == null) {\n return\n }\n\n if (Object.keys(observers).length === 0) {\n return\n }\n\n const result = diff(current, prev)\n const resultKeys = Object.keys(result)\n if (resultKeys.length === 0) {\n return\n }\n\n for (const observerKey in observers) {\n if (/\\*\\*/.test(observerKey)) {\n report('数据监听器 observers 不支持使用通配符 **。')\n continue\n }\n\n const keys = observerKey.split(',').map(k => k.trim())\n let isModified = false\n\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i]\n for (let j = 0; j < resultKeys.length; j++) {\n const resultKey = resultKeys[j]\n if (\n resultKey.startsWith(key) ||\n (key.startsWith(resultKey) && key.endsWith(']'))\n ) {\n isModified = true\n }\n }\n }\n if (isModified) {\n observers[observerKey].apply(this, keys.map(key => safeGet(current, key)))\n }\n }\n }\n\n private defineProperty (target, key, data) {\n Object.defineProperty(target, key, {\n configurable: true,\n enumerable: true,\n set (value) {\n data[key] = value\n },\n get () {\n return data[key]\n }\n })\n }\n\n public privateStopNoop (...args) {\n let e\n let fn\n if (args.length === 2) {\n fn = args[0]\n e = args[1]\n } else if (args.length === 1) {\n e = args[0]\n }\n if (e.type === 'touchmove') {\n report('catchtouchmove 转换后只能停止回调函数的冒泡,不能阻止滚动穿透。如要阻止滚动穿透,可以手动给编译后的 View 组件加上 catchMove 属性')\n }\n e.stopPropagation()\n isFunction(fn) && fn(e)\n }\n\n // ================ React 生命周期 ================\n\n public componentWillMount () {\n this.safeExecute(super.componentWillMount)\n this.executeLifeCycles(this.willMounts, this.current.router || {})\n this.triggerObservers(this.data, BaseComponent.defaultProps)\n this.triggerPropertiesObservers(BaseComponent.defaultProps, this.props)\n }\n\n public componentDidMount () {\n this.safeExecute(super.componentDidMount)\n this.executeLifeCycles(this.didMounts)\n }\n\n public componentWillUnmount () {\n this.eventDistoryList.forEach(fn => fn())\n this.safeExecute(super.componentWillUnmount)\n this.executeLifeCycles(this.willUnmounts)\n }\n\n public componentDidHide () {\n this.safeExecute(super.componentDidHide)\n this.executeLifeCycles(this.didHides)\n }\n\n public componentDidShow () {\n this.safeExecute(super.componentDidShow, this.current.router || {})\n this.executeLifeCycles(this.didShows, this.current.router || {})\n }\n\n public componentWillReceiveProps (nextProps: P) {\n this.triggerObservers(nextProps, this.props)\n this.triggerPropertiesObservers(this.props, nextProps)\n this.safeExecute(super.componentWillReceiveProps)\n }\n\n // ================ 小程序 App, Page, Component 实例属性与方法 ================\n\n get is () {\n return this.current.page.is\n }\n\n get id () {\n return this.current.page.id\n }\n\n get dataset () {\n return this.current.page.dataset\n }\n\n public setData = (obj: S, callback?: () => void) => {\n let oldState\n if (this.observers && Object.keys(Object.keys(this.observers))) {\n oldState = clone(this.state)\n }\n Object.keys(obj).forEach(key => {\n safeSet(this.state, key, obj[key])\n })\n this.setState(this.state, () => {\n this.triggerObservers(this.state, oldState)\n if (callback) {\n callback.call(this)\n }\n })\n }\n\n public triggerEvent = (eventName: string, detail, options) => {\n if (options) {\n report('triggerEvent 不支持事件选项。')\n }\n\n const props = this.props\n const dataset = {}\n for (const key in props) {\n if (!key.startsWith('data-')) continue\n dataset[key.replace(/^data-/, '')] = props[key]\n }\n\n const func = props[`on${eventName[0].toUpperCase()}${eventName.slice(1)}`]\n if (isFunction(func)) {\n func.call(this, {\n type: eventName,\n detail,\n target: {\n id: props.id || '',\n dataset\n },\n currentTarget: {\n id: props.id || '',\n dataset\n }\n })\n }\n }\n\n private componentMethodsProxy (method: string) {\n return (...args: any[]) => {\n const page = this.current.page\n if (page?.[method]) {\n return page[method](...args)\n } else {\n console.error(`page 下没有 ${method} 方法`)\n }\n }\n }\n\n public hasBehavior = this.componentMethodsProxy('hasBehavior')\n public createSelectorQuery = this.componentMethodsProxy('createSelectorQuery')\n public createIntersectionObserver = this.componentMethodsProxy('createIntersectionObserver')\n public createMediaQueryObserver = this.componentMethodsProxy('createMediaQueryObserver')\n public getRelationNodes = this.componentMethodsProxy('getRelationNodes')\n public getTabBar = this.componentMethodsProxy('getTabBar')\n public getPageId = this.componentMethodsProxy('getPageId')\n public animate = this.componentMethodsProxy('animate')\n public clearAnimation = this.componentMethodsProxy('clearAnimation')\n public setUpdatePerformanceListener = this.componentMethodsProxy('setUpdatePerformanceListener')\n\n public selectComponent () {\n report(unsupport.get('selectComponent'))\n }\n\n public selectAllComponents () {\n report(unsupport.get('selectAllComponents'))\n }\n\n public selectOwnerComponent () {\n report(unsupport.get('selectOwnerComponent'))\n }\n\n public groupSetData () {\n report(unsupport.get('groupSetData'))\n }\n }\n\n const props = weappConf.properties\n\n if (props) {\n for (const propKey in props) {\n const propValue = props[propKey]\n if (propValue != null && !isFunction(propValue)) {\n if (propValue.value !== undefined) { // 如果是 null 也赋值到 defaultProps\n BaseComponent.defaultProps = {\n [propKey]: propValue.value,\n ...BaseComponent.defaultProps\n }\n }\n }\n }\n }\n\n const staticOptions = ['externalClasses', 'relations', 'options']\n\n staticOptions.forEach(option => {\n const value = weappConf[option]\n if (value != null) {\n BaseComponent[option] = value\n }\n })\n\n return BaseComponent\n }\n}\n"],"names":["TaroLifeCycles","lifecycleMap","WillMount","DidMount","DidShow","DidHide","WillUnmount","lifecycles","Set","key","lifecycle","forEach","l","add","uniquePageLifecycle","appOptions","bind","fn","ctx","boundFn","a","arguments","length","apply","call","_length","isEqual","obj1","obj2","JSON","stringify","safeGet","obj","propsArg","defaultValue","props","prop","Array","isArray","slice","replace","split","_typeof","Error","shift","undefined","safeSet","value","lastProp","pop","thisProp","report","msg","console","warn","unsupport","Map","flattenBehaviors","behavior","behaviorMap","subBehaviors","behaviors","subBehavior","Object","keys","has","advise","get","list","push","ARRAYTYPE","OBJECTTYPE","FUNCTIONTYPE","diff","current","pre","result","syncKeys","_diff","rootCurrentType","type","rootPreType","currentValue","item","index","path","setResult","preValue","currentType","preType","subKey","k","v","prototype","toString","json","clone","parse","x","objectKeys","hasOwnProperty","opts","cmp","space","join","cycles","replacer","f","node","b","aobj","bobj","seen","parent","level","indent","colonSeparator","toJSON","out","i","indexOf","TypeError","sort","keyValue","splice","defineGetter","component","getter","defineProperty","enumerable","configurable","state","isFunction","o","withWeapp","weappConf","isApp","ConnectComponent","behaviorProperties","propertiesList","property","assign","propName","propValue","properties","BaseComponent","getCurrentInstance","create","func","args","callback","oldState","observers","setState","triggerObservers","eventName","detail","options","dataset","startsWith","toUpperCase","target","id","currentTarget","componentMethodsProxy","init","propKey","observer","_observeProps","name","entries","initLifeCycles","confKey","confValue","includes","taroGlobalData","initProps","method","cb","initLifeCycleListener","lifetimes","behaviorData","methods","dataObject","dataKey","valueType","preValueType","newVal","methodsObject","methodName","lifecycleName","page","onReady","called","didMounts","nextTick","lifecycleKey","cycleNames","didHides","didShows","willMounts","willUnmounts","router","eventCenter","on","eventDistoryList","off","funcs","safeExecute","prevProps","nextProps","nextProp","ob","prev","resultKeys","observerKey","test","map","trim","isModified","j","resultKey","endsWith","data","set","e","stopPropagation","executeLifeCycles","defaultProps","triggerPropertiesObservers","is","error","staticOptions","option"],"mappings":"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"}
|
package/dist/with-weapp.js
CHANGED
|
@@ -1,20 +1,22 @@
|
|
|
1
1
|
(function (global, factory) {
|
|
2
2
|
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@babel/runtime/helpers/defineProperty'), require('@babel/runtime/helpers/toConsumableArray'), require('@babel/runtime/helpers/slicedToArray'), require('@babel/runtime/helpers/classCallCheck'), require('@babel/runtime/helpers/createClass'), require('@babel/runtime/helpers/assertThisInitialized'), require('@babel/runtime/helpers/get'), require('@babel/runtime/helpers/inherits'), require('@babel/runtime/helpers/possibleConstructorReturn'), require('@babel/runtime/helpers/getPrototypeOf'), require('@babel/runtime/helpers/typeof'), require('@tarojs/taro'), require('@tarojs/runtime')) :
|
|
3
3
|
typeof define === 'function' && define.amd ? define(['exports', '@babel/runtime/helpers/defineProperty', '@babel/runtime/helpers/toConsumableArray', '@babel/runtime/helpers/slicedToArray', '@babel/runtime/helpers/classCallCheck', '@babel/runtime/helpers/createClass', '@babel/runtime/helpers/assertThisInitialized', '@babel/runtime/helpers/get', '@babel/runtime/helpers/inherits', '@babel/runtime/helpers/possibleConstructorReturn', '@babel/runtime/helpers/getPrototypeOf', '@babel/runtime/helpers/typeof', '@tarojs/taro', '@tarojs/runtime'], factory) :
|
|
4
|
-
(global = global || self, factory(global.TaroWithWeapp = {}, global._defineProperty, global._toConsumableArray, global._slicedToArray, global._classCallCheck, global._createClass, global._assertThisInitialized, global._get, global._inherits, global._possibleConstructorReturn, global._getPrototypeOf, global._typeof, global.taro, global.runtime));
|
|
4
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.TaroWithWeapp = {}, global._defineProperty, global._toConsumableArray, global._slicedToArray, global._classCallCheck, global._createClass, global._assertThisInitialized, global._get, global._inherits, global._possibleConstructorReturn, global._getPrototypeOf, global._typeof, global.taro, global.runtime));
|
|
5
5
|
}(this, (function (exports, _defineProperty, _toConsumableArray, _slicedToArray, _classCallCheck, _createClass, _assertThisInitialized, _get, _inherits, _possibleConstructorReturn, _getPrototypeOf, _typeof, taro, runtime) { 'use strict';
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
7
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
8
|
+
|
|
9
|
+
var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
|
|
10
|
+
var _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumableArray);
|
|
11
|
+
var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);
|
|
12
|
+
var _classCallCheck__default = /*#__PURE__*/_interopDefaultLegacy(_classCallCheck);
|
|
13
|
+
var _createClass__default = /*#__PURE__*/_interopDefaultLegacy(_createClass);
|
|
14
|
+
var _assertThisInitialized__default = /*#__PURE__*/_interopDefaultLegacy(_assertThisInitialized);
|
|
15
|
+
var _get__default = /*#__PURE__*/_interopDefaultLegacy(_get);
|
|
16
|
+
var _inherits__default = /*#__PURE__*/_interopDefaultLegacy(_inherits);
|
|
17
|
+
var _possibleConstructorReturn__default = /*#__PURE__*/_interopDefaultLegacy(_possibleConstructorReturn);
|
|
18
|
+
var _getPrototypeOf__default = /*#__PURE__*/_interopDefaultLegacy(_getPrototypeOf);
|
|
19
|
+
var _typeof__default = /*#__PURE__*/_interopDefaultLegacy(_typeof);
|
|
18
20
|
|
|
19
21
|
var _lifecycleMap;
|
|
20
22
|
|
|
@@ -28,7 +30,7 @@
|
|
|
28
30
|
TaroLifeCycles["WillUnmount"] = "componentWillUnmount";
|
|
29
31
|
})(TaroLifeCycles || (TaroLifeCycles = {}));
|
|
30
32
|
|
|
31
|
-
var lifecycleMap = (_lifecycleMap = {},
|
|
33
|
+
var lifecycleMap = (_lifecycleMap = {}, _defineProperty__default['default'](_lifecycleMap, TaroLifeCycles.WillMount, ['created']), _defineProperty__default['default'](_lifecycleMap, TaroLifeCycles.DidMount, ['attached']), _defineProperty__default['default'](_lifecycleMap, TaroLifeCycles.DidShow, ['onShow']), _defineProperty__default['default'](_lifecycleMap, TaroLifeCycles.DidHide, ['onHide']), _defineProperty__default['default'](_lifecycleMap, TaroLifeCycles.WillUnmount, ['detached', 'onUnload']), _lifecycleMap);
|
|
32
34
|
var lifecycles = new Set(['ready']);
|
|
33
35
|
|
|
34
36
|
for (var key in lifecycleMap) {
|
|
@@ -81,7 +83,7 @@
|
|
|
81
83
|
props = props.split('.');
|
|
82
84
|
}
|
|
83
85
|
|
|
84
|
-
if (
|
|
86
|
+
if (_typeof__default['default'](propsArg) === 'symbol') {
|
|
85
87
|
props = [propsArg];
|
|
86
88
|
}
|
|
87
89
|
|
|
@@ -111,7 +113,7 @@
|
|
|
111
113
|
props = props.split('.');
|
|
112
114
|
}
|
|
113
115
|
|
|
114
|
-
if (
|
|
116
|
+
if (_typeof__default['default'](props) === 'symbol') {
|
|
115
117
|
props = [props];
|
|
116
118
|
}
|
|
117
119
|
|
|
@@ -131,14 +133,14 @@
|
|
|
131
133
|
|
|
132
134
|
|
|
133
135
|
if (Array.isArray(obj[thisProp])) {
|
|
134
|
-
obj[thisProp] =
|
|
135
|
-
} else if (
|
|
136
|
+
obj[thisProp] = _toConsumableArray__default['default'](obj[thisProp]);
|
|
137
|
+
} else if (_typeof__default['default'](obj[thisProp]) === 'object') {
|
|
136
138
|
obj[thisProp] = Object.assign({}, obj[thisProp]);
|
|
137
139
|
}
|
|
138
140
|
|
|
139
141
|
obj = obj[thisProp];
|
|
140
142
|
|
|
141
|
-
if (!obj ||
|
|
143
|
+
if (!obj || _typeof__default['default'](obj) !== 'object') {
|
|
142
144
|
return false;
|
|
143
145
|
}
|
|
144
146
|
}
|
|
@@ -357,7 +359,7 @@
|
|
|
357
359
|
return;
|
|
358
360
|
}
|
|
359
361
|
|
|
360
|
-
if (
|
|
362
|
+
if (_typeof__default['default'](node) !== 'object' || node === null) {
|
|
361
363
|
return json.stringify(node);
|
|
362
364
|
}
|
|
363
365
|
|
|
@@ -402,7 +404,7 @@
|
|
|
402
404
|
|
|
403
405
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
404
406
|
|
|
405
|
-
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super =
|
|
407
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
|
|
406
408
|
|
|
407
409
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
408
410
|
|
|
@@ -427,7 +429,7 @@
|
|
|
427
429
|
function withWeapp(weappConf) {
|
|
428
430
|
var isApp = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
429
431
|
|
|
430
|
-
if (
|
|
432
|
+
if (_typeof__default['default'](weappConf) === 'object' && Object.keys(weappConf).length === 0) {
|
|
431
433
|
report('withWeapp 请传入“App/页面/组件“的配置对象。如果原生写法使用了基类,请将基类组合后的配置对象传入,详情请参考文档。');
|
|
432
434
|
}
|
|
433
435
|
|
|
@@ -456,7 +458,7 @@
|
|
|
456
458
|
}
|
|
457
459
|
|
|
458
460
|
if (!weappConf.properties.hasOwnProperty(propName)) {
|
|
459
|
-
if (propValue &&
|
|
461
|
+
if (propValue && _typeof__default['default'](propValue) === 'object' && propValue.value) {
|
|
460
462
|
propValue.value = clone(propValue.value);
|
|
461
463
|
}
|
|
462
464
|
|
|
@@ -467,14 +469,14 @@
|
|
|
467
469
|
}
|
|
468
470
|
|
|
469
471
|
var BaseComponent = /*#__PURE__*/function (_ConnectComponent) {
|
|
470
|
-
|
|
472
|
+
_inherits__default['default'](BaseComponent, _ConnectComponent);
|
|
471
473
|
|
|
472
474
|
var _super = _createSuper(BaseComponent);
|
|
473
475
|
|
|
474
476
|
function BaseComponent(props) {
|
|
475
477
|
var _this;
|
|
476
478
|
|
|
477
|
-
|
|
479
|
+
_classCallCheck__default['default'](this, BaseComponent);
|
|
478
480
|
|
|
479
481
|
_this = _super.call(this, props);
|
|
480
482
|
_this._observeProps = []; // mixins 可以多次调用生命周期
|
|
@@ -493,7 +495,7 @@
|
|
|
493
495
|
args[_key - 1] = arguments[_key];
|
|
494
496
|
}
|
|
495
497
|
|
|
496
|
-
if (isFunction(func)) func.apply(
|
|
498
|
+
if (isFunction(func)) func.apply(_assertThisInitialized__default['default'](_this), args);
|
|
497
499
|
};
|
|
498
500
|
|
|
499
501
|
_this.setData = function (obj, callback) {
|
|
@@ -511,7 +513,7 @@
|
|
|
511
513
|
_this.triggerObservers(_this.state, oldState);
|
|
512
514
|
|
|
513
515
|
if (callback) {
|
|
514
|
-
callback.call(
|
|
516
|
+
callback.call(_assertThisInitialized__default['default'](_this));
|
|
515
517
|
}
|
|
516
518
|
});
|
|
517
519
|
};
|
|
@@ -532,7 +534,7 @@
|
|
|
532
534
|
var func = props["on".concat(eventName[0].toUpperCase()).concat(eventName.slice(1))];
|
|
533
535
|
|
|
534
536
|
if (isFunction(func)) {
|
|
535
|
-
func.call(
|
|
537
|
+
func.call(_assertThisInitialized__default['default'](_this), {
|
|
536
538
|
type: eventName,
|
|
537
539
|
detail: detail,
|
|
538
540
|
target: {
|
|
@@ -561,12 +563,12 @@
|
|
|
561
563
|
|
|
562
564
|
_this.init(weappConf);
|
|
563
565
|
|
|
564
|
-
defineGetter(
|
|
565
|
-
defineGetter(
|
|
566
|
+
defineGetter(_assertThisInitialized__default['default'](_this), 'data', 'state');
|
|
567
|
+
defineGetter(_assertThisInitialized__default['default'](_this), 'properties', 'props');
|
|
566
568
|
return _this;
|
|
567
569
|
}
|
|
568
570
|
|
|
569
|
-
|
|
571
|
+
_createClass__default['default'](BaseComponent, [{
|
|
570
572
|
key: "initProps",
|
|
571
573
|
value: function initProps(props) {
|
|
572
574
|
for (var propKey in props) {
|
|
@@ -598,7 +600,7 @@
|
|
|
598
600
|
|
|
599
601
|
try {
|
|
600
602
|
var _loop = function _loop() {
|
|
601
|
-
var _step$value =
|
|
603
|
+
var _step$value = _slicedToArray__default['default'](_step.value, 2),
|
|
602
604
|
key = _step$value[0],
|
|
603
605
|
list = _step$value[1];
|
|
604
606
|
|
|
@@ -741,20 +743,20 @@
|
|
|
741
743
|
|
|
742
744
|
try {
|
|
743
745
|
var _loop2 = function _loop2() {
|
|
744
|
-
var _step2$value =
|
|
746
|
+
var _step2$value = _slicedToArray__default['default'](_step2.value, 2),
|
|
745
747
|
key = _step2$value[0],
|
|
746
748
|
list = _step2$value[1];
|
|
747
749
|
|
|
748
750
|
switch (key) {
|
|
749
751
|
case 'data':
|
|
750
|
-
[].concat(
|
|
752
|
+
[].concat(_toConsumableArray__default['default'](list), [_this2.state]).forEach(function (dataObject, index) {
|
|
751
753
|
Object.keys(dataObject).forEach(function (dataKey) {
|
|
752
754
|
var value = dataObject[dataKey];
|
|
753
755
|
var preValue = behaviorData[dataKey];
|
|
754
756
|
|
|
755
|
-
var valueType =
|
|
757
|
+
var valueType = _typeof__default['default'](value);
|
|
756
758
|
|
|
757
|
-
var preValueType =
|
|
759
|
+
var preValueType = _typeof__default['default'](preValue);
|
|
758
760
|
|
|
759
761
|
if (valueType === 'object') {
|
|
760
762
|
if (!value) {
|
|
@@ -1001,7 +1003,7 @@
|
|
|
1001
1003
|
}, {
|
|
1002
1004
|
key: "componentWillMount",
|
|
1003
1005
|
value: function componentWillMount() {
|
|
1004
|
-
this.safeExecute(
|
|
1006
|
+
this.safeExecute(_get__default['default'](_getPrototypeOf__default['default'](BaseComponent.prototype), "componentWillMount", this));
|
|
1005
1007
|
this.executeLifeCycles(this.willMounts, this.current.router || {});
|
|
1006
1008
|
this.triggerObservers(this.data, BaseComponent.defaultProps);
|
|
1007
1009
|
this.triggerPropertiesObservers(BaseComponent.defaultProps, this.props);
|
|
@@ -1009,7 +1011,7 @@
|
|
|
1009
1011
|
}, {
|
|
1010
1012
|
key: "componentDidMount",
|
|
1011
1013
|
value: function componentDidMount() {
|
|
1012
|
-
this.safeExecute(
|
|
1014
|
+
this.safeExecute(_get__default['default'](_getPrototypeOf__default['default'](BaseComponent.prototype), "componentDidMount", this));
|
|
1013
1015
|
this.executeLifeCycles(this.didMounts);
|
|
1014
1016
|
}
|
|
1015
1017
|
}, {
|
|
@@ -1018,19 +1020,19 @@
|
|
|
1018
1020
|
this.eventDistoryList.forEach(function (fn) {
|
|
1019
1021
|
return fn();
|
|
1020
1022
|
});
|
|
1021
|
-
this.safeExecute(
|
|
1023
|
+
this.safeExecute(_get__default['default'](_getPrototypeOf__default['default'](BaseComponent.prototype), "componentWillUnmount", this));
|
|
1022
1024
|
this.executeLifeCycles(this.willUnmounts);
|
|
1023
1025
|
}
|
|
1024
1026
|
}, {
|
|
1025
1027
|
key: "componentDidHide",
|
|
1026
1028
|
value: function componentDidHide() {
|
|
1027
|
-
this.safeExecute(
|
|
1029
|
+
this.safeExecute(_get__default['default'](_getPrototypeOf__default['default'](BaseComponent.prototype), "componentDidHide", this));
|
|
1028
1030
|
this.executeLifeCycles(this.didHides);
|
|
1029
1031
|
}
|
|
1030
1032
|
}, {
|
|
1031
1033
|
key: "componentDidShow",
|
|
1032
1034
|
value: function componentDidShow() {
|
|
1033
|
-
this.safeExecute(
|
|
1035
|
+
this.safeExecute(_get__default['default'](_getPrototypeOf__default['default'](BaseComponent.prototype), "componentDidShow", this), this.current.router || {});
|
|
1034
1036
|
this.executeLifeCycles(this.didShows, this.current.router || {});
|
|
1035
1037
|
}
|
|
1036
1038
|
}, {
|
|
@@ -1038,7 +1040,7 @@
|
|
|
1038
1040
|
value: function componentWillReceiveProps(nextProps) {
|
|
1039
1041
|
this.triggerObservers(nextProps, this.props);
|
|
1040
1042
|
this.triggerPropertiesObservers(this.props, nextProps);
|
|
1041
|
-
this.safeExecute(
|
|
1043
|
+
this.safeExecute(_get__default['default'](_getPrototypeOf__default['default'](BaseComponent.prototype), "componentWillReceiveProps", this));
|
|
1042
1044
|
} // ================ 小程序 App, Page, Component 实例属性与方法 ================
|
|
1043
1045
|
|
|
1044
1046
|
}, {
|
|
@@ -1105,7 +1107,7 @@
|
|
|
1105
1107
|
if (propValue != null && !isFunction(propValue)) {
|
|
1106
1108
|
if (propValue.value !== undefined) {
|
|
1107
1109
|
// 如果是 null 也赋值到 defaultProps
|
|
1108
|
-
BaseComponent.defaultProps = Object.assign(
|
|
1110
|
+
BaseComponent.defaultProps = Object.assign(_defineProperty__default['default']({}, propKey, propValue.value), BaseComponent.defaultProps);
|
|
1109
1111
|
}
|
|
1110
1112
|
}
|
|
1111
1113
|
}
|
|
@@ -1123,7 +1125,7 @@
|
|
|
1123
1125
|
};
|
|
1124
1126
|
}
|
|
1125
1127
|
|
|
1126
|
-
exports
|
|
1128
|
+
exports['default'] = withWeapp;
|
|
1127
1129
|
|
|
1128
1130
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
1129
1131
|
|