uni-app.cjs.js 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. 'use strict';
  2. var vue = require('vue');
  3. var shared = require('@vue/shared');
  4. var uniShared = require('@dcloudio/uni-shared');
  5. function assertKey(key, shallow = false) {
  6. if (!key) {
  7. throw new Error(`${shallow ? 'shallowSsrRef' : 'ssrRef'}: You must provide a key.`);
  8. }
  9. }
  10. function proxy(target, track, trigger) {
  11. return new Proxy(target, {
  12. get(target, prop) {
  13. track();
  14. if (shared.isObject(target[prop])) {
  15. return proxy(target[prop], track, trigger);
  16. }
  17. return Reflect.get(target, prop);
  18. },
  19. set(obj, prop, newVal) {
  20. const result = Reflect.set(obj, prop, newVal);
  21. trigger();
  22. return result;
  23. },
  24. });
  25. }
  26. const globalData = {};
  27. const ssrServerRef = (value, key, shallow = false) => {
  28. assertKey(key, shallow);
  29. const ctx = vue.getCurrentInstance() && vue.useSSRContext();
  30. let state;
  31. if (ctx) {
  32. const __uniSSR = ctx[uniShared.UNI_SSR] || (ctx[uniShared.UNI_SSR] = {});
  33. state = __uniSSR[uniShared.UNI_SSR_DATA] || (__uniSSR[uniShared.UNI_SSR_DATA] = {});
  34. }
  35. else {
  36. state = globalData;
  37. }
  38. state[key] = uniShared.sanitise(value);
  39. // SSR 模式下 watchEffect 不生效 https://github.com/vuejs/vue-next/blob/master/packages/runtime-core/src/apiWatch.ts#L283
  40. // 故自定义ref
  41. return vue.customRef((track, trigger) => {
  42. const customTrigger = () => (trigger(), (state[key] = uniShared.sanitise(value)));
  43. return {
  44. get: () => {
  45. track();
  46. if (!shallow && shared.isObject(value)) {
  47. return proxy(value, track, customTrigger);
  48. }
  49. return value;
  50. },
  51. set: (v) => {
  52. value = v;
  53. customTrigger();
  54. },
  55. };
  56. });
  57. };
  58. const ssrRef = (value, key) => {
  59. {
  60. return ssrServerRef(value, key);
  61. }
  62. };
  63. const shallowSsrRef = (value, key) => {
  64. {
  65. return ssrServerRef(value, key, true);
  66. }
  67. };
  68. function getSsrGlobalData() {
  69. return uniShared.sanitise(globalData);
  70. }
  71. /**
  72. * uni 对象是跨实例的,而此处列的 API 均是需要跟当前实例关联的,比如 requireNativePlugin 获取 dom 时,依赖当前 weex 实例
  73. */
  74. function getCurrentSubNVue() {
  75. // @ts-ignore
  76. return uni.getSubNVueById(plus.webview.currentWebview().id);
  77. }
  78. function requireNativePlugin(name) {
  79. return weex.requireModule(name);
  80. }
  81. function formatAppLog(type, filename, ...args) {
  82. // @ts-ignore
  83. if (uni.__log__) {
  84. // @ts-ignore
  85. uni.__log__(type, filename, ...args);
  86. }
  87. else {
  88. console[type].apply(console, [...args, filename]);
  89. }
  90. }
  91. function formatH5Log(type, filename, ...args) {
  92. console[type].apply(console, [...args, filename]);
  93. }
  94. function resolveEasycom(component, easycom) {
  95. return typeof component === 'string' ? easycom : component;
  96. }
  97. /// <reference types="@dcloudio/types" />
  98. const createHook = (lifecycle) => (hook, target = vue.getCurrentInstance()) => {
  99. // post-create lifecycle registrations are noops during SSR
  100. !vue.isInSSRComponentSetup && vue.injectHook(lifecycle, hook, target);
  101. };
  102. const onShow = /*#__PURE__*/ createHook(uniShared.ON_SHOW);
  103. const onHide = /*#__PURE__*/ createHook(uniShared.ON_HIDE);
  104. const onLaunch =
  105. /*#__PURE__*/ createHook(uniShared.ON_LAUNCH);
  106. const onError =
  107. /*#__PURE__*/ createHook(uniShared.ON_ERROR);
  108. const onThemeChange =
  109. /*#__PURE__*/ createHook(uniShared.ON_THEME_CHANGE);
  110. const onPageNotFound =
  111. /*#__PURE__*/ createHook(uniShared.ON_PAGE_NOT_FOUND);
  112. const onUnhandledRejection = /*#__PURE__*/ createHook(uniShared.ON_UNHANDLE_REJECTION);
  113. const onExit = /*#__PURE__*/ createHook(uniShared.ON_EXIT);
  114. const onInit =
  115. /*#__PURE__*/ createHook(uniShared.ON_INIT);
  116. // 小程序如果想在 setup 的 props 传递页面参数,需要定义 props,故同时暴露 onLoad 吧
  117. const onLoad =
  118. /*#__PURE__*/ createHook(uniShared.ON_LOAD);
  119. const onReady = /*#__PURE__*/ createHook(uniShared.ON_READY);
  120. const onUnload = /*#__PURE__*/ createHook(uniShared.ON_UNLOAD);
  121. const onResize =
  122. /*#__PURE__*/ createHook(uniShared.ON_RESIZE);
  123. const onBackPress =
  124. /*#__PURE__*/ createHook(uniShared.ON_BACK_PRESS);
  125. const onPageScroll =
  126. /*#__PURE__*/ createHook(uniShared.ON_PAGE_SCROLL);
  127. const onTabItemTap =
  128. /*#__PURE__*/ createHook(uniShared.ON_TAB_ITEM_TAP);
  129. const onReachBottom = /*#__PURE__*/ createHook(uniShared.ON_REACH_BOTTOM);
  130. const onPullDownRefresh = /*#__PURE__*/ createHook(uniShared.ON_PULL_DOWN_REFRESH);
  131. const onSaveExitState =
  132. /*#__PURE__*/ createHook(uniShared.ON_SAVE_EXIT_STATE);
  133. const onShareTimeline =
  134. /*#__PURE__*/ createHook(uniShared.ON_SHARE_TIMELINE);
  135. const onAddToFavorites =
  136. /*#__PURE__*/ createHook(uniShared.ON_ADD_TO_FAVORITES);
  137. const onShareAppMessage =
  138. /*#__PURE__*/ createHook(uniShared.ON_SHARE_APP_MESSAGE);
  139. const onNavigationBarButtonTap = /*#__PURE__*/ createHook(uniShared.ON_NAVIGATION_BAR_BUTTON_TAP);
  140. const onNavigationBarSearchInputChanged = /*#__PURE__*/ createHook(uniShared.ON_NAVIGATION_BAR_SEARCH_INPUT_CHANGED);
  141. const onNavigationBarSearchInputClicked = /*#__PURE__*/ createHook(uniShared.ON_NAVIGATION_BAR_SEARCH_INPUT_CLICKED);
  142. const onNavigationBarSearchInputConfirmed = /*#__PURE__*/ createHook(uniShared.ON_NAVIGATION_BAR_SEARCH_INPUT_CONFIRMED);
  143. const onNavigationBarSearchInputFocusChanged =
  144. /*#__PURE__*/ createHook(uniShared.ON_NAVIGATION_BAR_SEARCH_INPUT_FOCUS_CHANGED);
  145. // for uni-app-x web
  146. const onPageHide = onHide;
  147. const onPageShow = onShow;
  148. function renderComponentSlot(slots, name, props = null) {
  149. if (slots[name]) {
  150. return slots[name](props);
  151. }
  152. return null;
  153. }
  154. Object.defineProperty(exports, 'capitalize', {
  155. enumerable: true,
  156. get: function () { return shared.capitalize; }
  157. });
  158. Object.defineProperty(exports, 'extend', {
  159. enumerable: true,
  160. get: function () { return shared.extend; }
  161. });
  162. Object.defineProperty(exports, 'hasOwn', {
  163. enumerable: true,
  164. get: function () { return shared.hasOwn; }
  165. });
  166. Object.defineProperty(exports, 'isPlainObject', {
  167. enumerable: true,
  168. get: function () { return shared.isPlainObject; }
  169. });
  170. exports.formatAppLog = formatAppLog;
  171. exports.formatH5Log = formatH5Log;
  172. exports.getCurrentSubNVue = getCurrentSubNVue;
  173. exports.getSsrGlobalData = getSsrGlobalData;
  174. exports.onAddToFavorites = onAddToFavorites;
  175. exports.onBackPress = onBackPress;
  176. exports.onError = onError;
  177. exports.onExit = onExit;
  178. exports.onHide = onHide;
  179. exports.onInit = onInit;
  180. exports.onLaunch = onLaunch;
  181. exports.onLoad = onLoad;
  182. exports.onNavigationBarButtonTap = onNavigationBarButtonTap;
  183. exports.onNavigationBarSearchInputChanged = onNavigationBarSearchInputChanged;
  184. exports.onNavigationBarSearchInputClicked = onNavigationBarSearchInputClicked;
  185. exports.onNavigationBarSearchInputConfirmed = onNavigationBarSearchInputConfirmed;
  186. exports.onNavigationBarSearchInputFocusChanged = onNavigationBarSearchInputFocusChanged;
  187. exports.onPageHide = onPageHide;
  188. exports.onPageNotFound = onPageNotFound;
  189. exports.onPageScroll = onPageScroll;
  190. exports.onPageShow = onPageShow;
  191. exports.onPullDownRefresh = onPullDownRefresh;
  192. exports.onReachBottom = onReachBottom;
  193. exports.onReady = onReady;
  194. exports.onResize = onResize;
  195. exports.onSaveExitState = onSaveExitState;
  196. exports.onShareAppMessage = onShareAppMessage;
  197. exports.onShareTimeline = onShareTimeline;
  198. exports.onShow = onShow;
  199. exports.onTabItemTap = onTabItemTap;
  200. exports.onThemeChange = onThemeChange;
  201. exports.onUnhandledRejection = onUnhandledRejection;
  202. exports.onUnload = onUnload;
  203. exports.renderComponentSlot = renderComponentSlot;
  204. exports.requireNativePlugin = requireNativePlugin;
  205. exports.resolveEasycom = resolveEasycom;
  206. exports.shallowSsrRef = shallowSsrRef;
  207. exports.ssrRef = ssrRef;