@weapp-vite/web 1.4.21 → 1.5.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.
Files changed (50) hide show
  1. package/README.md +1 -1
  2. package/dist/compiler/wxml/attributes.mjs +5 -3
  3. package/dist/compiler/wxml/attributes.mjs.map +1 -1
  4. package/dist/compiler/wxml/compile.mjs +6 -1
  5. package/dist/compiler/wxml/compile.mjs.map +1 -1
  6. package/dist/index.d.mts +5 -3
  7. package/dist/index.mjs +4 -3
  8. package/dist/plugin/constants.mjs +2 -1
  9. package/dist/plugin/constants.mjs.map +1 -1
  10. package/dist/plugin/index.mjs +7 -2
  11. package/dist/plugin/index.mjs.map +1 -1
  12. package/dist/plugin/register.mjs +20 -5
  13. package/dist/plugin/register.mjs.map +1 -1
  14. package/dist/runtime/component/constants.mjs +9 -1
  15. package/dist/runtime/component/constants.mjs.map +1 -1
  16. package/dist/runtime/component/element.mjs +24 -4
  17. package/dist/runtime/component/element.mjs.map +1 -1
  18. package/dist/runtime/component/events.mjs +6 -4
  19. package/dist/runtime/component/events.mjs.map +1 -1
  20. package/dist/runtime/eventBinding.d.mts +16 -0
  21. package/dist/runtime/eventBinding.mjs +51 -0
  22. package/dist/runtime/eventBinding.mjs.map +1 -0
  23. package/dist/runtime/index.d.mts +5 -3
  24. package/dist/runtime/index.mjs +4 -3
  25. package/dist/runtime/index.mjs.map +1 -1
  26. package/dist/runtime/inputHandlerResult.mjs +22 -0
  27. package/dist/runtime/inputHandlerResult.mjs.map +1 -0
  28. package/dist/runtime/legacyTemplate/dom.mjs +27 -9
  29. package/dist/runtime/legacyTemplate/dom.mjs.map +1 -1
  30. package/dist/runtime/nativeComponents/input.mjs +3 -1
  31. package/dist/runtime/nativeComponents/input.mjs.map +1 -1
  32. package/dist/runtime/nativeComponents/scrollView.mjs +21 -12
  33. package/dist/runtime/nativeComponents/scrollView.mjs.map +1 -1
  34. package/dist/runtime/polyfill/index.d.mts +3 -2
  35. package/dist/runtime/polyfill/index.mjs +6 -2
  36. package/dist/runtime/polyfill/index.mjs.map +1 -1
  37. package/dist/runtime/polyfill/routeRuntime/appLifecycle.mjs +53 -7
  38. package/dist/runtime/polyfill/routeRuntime/appLifecycle.mjs.map +1 -1
  39. package/dist/runtime/polyfill/routeRuntime/options.d.mts +6 -1
  40. package/dist/runtime/polyfill/routeRuntime/options.mjs.map +1 -1
  41. package/dist/runtime/polyfill/routeRuntime.d.mts +6 -1
  42. package/dist/runtime/polyfill/routeRuntime.mjs +13 -1
  43. package/dist/runtime/polyfill/routeRuntime.mjs.map +1 -1
  44. package/dist/runtime/polyfill.d.mts +3 -2
  45. package/dist/runtime/renderContext.mjs +2 -1
  46. package/dist/runtime/renderContext.mjs.map +1 -1
  47. package/dist/runtime/wevu.d.mts +4 -0
  48. package/dist/runtime/wevu.mjs +13 -2
  49. package/dist/runtime/wevu.mjs.map +1 -1
  50. package/package.json +17 -9
@@ -1 +1 @@
1
- {"version":3,"file":"input.mjs","names":[],"sources":["../../../src/runtime/nativeComponents/input.ts"],"sourcesContent":["import { getNativeComponentDescriptor } from '../../shared/nativeComponents'\nimport { connectFormControl, disconnectFormControl } from './formControl'\nimport { dispatchMiniProgramEvent, readBooleanAttribute, resolveContainingShadowRoot, resolveMaxLength } from './helpers'\nimport { ensureNativeComponentStyle } from './style'\n\nconst BaseElement = (globalThis.HTMLElement ?? class {}) as typeof HTMLElement\n\nfunction resolveInputType(element: Element) {\n if (readBooleanAttribute(element, 'password')) {\n return 'password'\n }\n const type = element.getAttribute('type')\n return type === 'number' || type === 'digit' || type === 'idcard' ? 'text' : (type ?? 'text')\n}\n\nexport function createInputEventDetail(input: Pick<HTMLInputElement, 'selectionStart' | 'value'>) {\n return {\n value: input.value,\n cursor: input.selectionStart ?? input.value.length,\n }\n}\n\nexport class WeappInput extends BaseElement {\n static observedAttributes = [...getNativeComponentDescriptor('input')!.attributes]\n\n #input?: HTMLInputElement\n #initialValue = ''\n #initialValueCaptured = false\n\n get formControlName() {\n return this.getAttribute('name') ?? ''\n }\n\n get formControlValue() {\n return this.value\n }\n\n get formControlDisabled() {\n return readBooleanAttribute(this, 'disabled')\n }\n\n get value() {\n return this.#input?.value ?? this.getAttribute('value') ?? ''\n }\n\n set value(value: string) {\n this.setAttribute('value', value ?? '')\n }\n\n connectedCallback() {\n ensureNativeComponentStyle(resolveContainingShadowRoot(this))\n if (!this.#initialValueCaptured) {\n this.#initialValue = this.getAttribute('value') ?? ''\n this.#initialValueCaptured = true\n }\n this.#ensureStructure()\n this.#syncAttributes()\n connectFormControl(this)\n this.#syncFocus()\n }\n\n disconnectedCallback() {\n disconnectFormControl(this)\n }\n\n attributeChangedCallback(name: string) {\n this.#syncAttributes()\n if (name === 'focus') {\n this.#syncFocus()\n }\n }\n\n focus(options?: FocusOptions) {\n this.#input?.focus(options)\n }\n\n blur() {\n this.#input?.blur()\n }\n\n formReset() {\n if (this.#input) {\n this.#input.value = this.#initialValue\n }\n }\n\n formActivate() {\n this.focus()\n }\n\n #ensureStructure() {\n if (this.#input || typeof document === 'undefined') {\n return\n }\n const root = this.shadowRoot ?? this.attachShadow({ mode: 'open' })\n const style = document.createElement('style')\n style.textContent = `\n :host { cursor: text; }\n input {\n display: block;\n box-sizing: border-box;\n width: 100%;\n min-width: 0;\n height: 100%;\n padding: 0;\n border: 0;\n outline: 0;\n color: inherit;\n background: transparent;\n font: inherit;\n line-height: inherit;\n }\n `\n const input = document.createElement('input')\n input.addEventListener('input', (event) => {\n event.stopPropagation()\n dispatchMiniProgramEvent(this, 'input', createInputEventDetail(input))\n })\n input.addEventListener('focus', () => {\n dispatchMiniProgramEvent(this, 'focus', { value: input.value, height: 0 })\n })\n input.addEventListener('blur', () => {\n dispatchMiniProgramEvent(this, 'blur', createInputEventDetail(input))\n })\n input.addEventListener('keydown', (event) => {\n if (event.key === 'Enter') {\n dispatchMiniProgramEvent(this, 'confirm', { value: input.value })\n }\n })\n root.append(style, input)\n this.#input = input\n }\n\n #syncAttributes() {\n if (!this.#input) {\n return\n }\n const value = this.getAttribute('value') ?? ''\n if (this.#input.value !== value) {\n this.#input.value = value\n }\n this.#input.type = resolveInputType(this)\n this.#input.placeholder = this.getAttribute('placeholder') ?? ''\n this.#input.disabled = readBooleanAttribute(this, 'disabled')\n const maxlength = resolveMaxLength(this.getAttribute('maxlength'))\n if (maxlength === undefined) {\n this.#input.removeAttribute('maxlength')\n }\n else {\n this.#input.maxLength = maxlength\n }\n const confirmType = this.getAttribute('confirm-type')\n if (confirmType) {\n this.#input.enterKeyHint = confirmType === 'send' ? 'send' : confirmType as HTMLInputElement['enterKeyHint']\n }\n }\n\n #syncFocus() {\n if (!readBooleanAttribute(this, 'focus')) {\n return\n }\n queueMicrotask(() => this.focus())\n }\n}\n"],"mappings":";;;;;;AAKA,MAAM,cAAe,WAAW,eAAe,MAAM,CAAC;AAEtD,SAAS,iBAAiB,SAAkB;CAC1C,IAAI,qBAAqB,SAAS,UAAU,GAC1C,OAAO;CAET,MAAM,OAAO,QAAQ,aAAa,MAAM;CACxC,OAAO,SAAS,YAAY,SAAS,WAAW,SAAS,WAAW,SAAU,QAAQ;AACxF;AAEA,SAAgB,uBAAuB,OAA2D;CAChG,OAAO;EACL,OAAO,MAAM;EACb,QAAQ,MAAM,kBAAkB,MAAM,MAAM;CAC9C;AACF;AAEA,IAAa,aAAb,cAAgC,YAAY;CAC1C,OAAO,qBAAqB,CAAC,GAAG,6BAA6B,OAAO,CAAC,CAAE,UAAU;CAEjF;CACA,gBAAgB;CAChB,wBAAwB;CAExB,IAAI,kBAAkB;EACpB,OAAO,KAAK,aAAa,MAAM,KAAK;CACtC;CAEA,IAAI,mBAAmB;EACrB,OAAO,KAAK;CACd;CAEA,IAAI,sBAAsB;EACxB,OAAO,qBAAqB,MAAM,UAAU;CAC9C;CAEA,IAAI,QAAQ;EACV,OAAO,KAAK,QAAQ,SAAS,KAAK,aAAa,OAAO,KAAK;CAC7D;CAEA,IAAI,MAAM,OAAe;EACvB,KAAK,aAAa,SAAS,SAAS,EAAE;CACxC;CAEA,oBAAoB;EAClB,2BAA2B,4BAA4B,IAAI,CAAC;EAC5D,IAAI,CAAC,KAAK,uBAAuB;GAC/B,KAAK,gBAAgB,KAAK,aAAa,OAAO,KAAK;GACnD,KAAK,wBAAwB;EAC/B;EACA,KAAK,iBAAiB;EACtB,KAAK,gBAAgB;EACrB,mBAAmB,IAAI;EACvB,KAAK,WAAW;CAClB;CAEA,uBAAuB;EACrB,sBAAsB,IAAI;CAC5B;CAEA,yBAAyB,MAAc;EACrC,KAAK,gBAAgB;EACrB,IAAI,SAAS,SACX,KAAK,WAAW;CAEpB;CAEA,MAAM,SAAwB;EAC5B,KAAK,QAAQ,MAAM,OAAO;CAC5B;CAEA,OAAO;EACL,KAAK,QAAQ,KAAK;CACpB;CAEA,YAAY;EACV,IAAI,KAAK,QACP,KAAK,OAAO,QAAQ,KAAK;CAE7B;CAEA,eAAe;EACb,KAAK,MAAM;CACb;CAEA,mBAAmB;EACjB,IAAI,KAAK,UAAU,OAAO,aAAa,aACrC;EAEF,MAAM,OAAO,KAAK,cAAc,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;EAClE,MAAM,QAAQ,SAAS,cAAc,OAAO;EAC5C,MAAM,cAAc;;;;;;;;;;;;;;;;;EAiBpB,MAAM,QAAQ,SAAS,cAAc,OAAO;EAC5C,MAAM,iBAAiB,UAAU,UAAU;GACzC,MAAM,gBAAgB;GACtB,yBAAyB,MAAM,SAAS,uBAAuB,KAAK,CAAC;EACvE,CAAC;EACD,MAAM,iBAAiB,eAAe;GACpC,yBAAyB,MAAM,SAAS;IAAE,OAAO,MAAM;IAAO,QAAQ;GAAE,CAAC;EAC3E,CAAC;EACD,MAAM,iBAAiB,cAAc;GACnC,yBAAyB,MAAM,QAAQ,uBAAuB,KAAK,CAAC;EACtE,CAAC;EACD,MAAM,iBAAiB,YAAY,UAAU;GAC3C,IAAI,MAAM,QAAQ,SAChB,yBAAyB,MAAM,WAAW,EAAE,OAAO,MAAM,MAAM,CAAC;EAEpE,CAAC;EACD,KAAK,OAAO,OAAO,KAAK;EACxB,KAAK,SAAS;CAChB;CAEA,kBAAkB;EAChB,IAAI,CAAC,KAAK,QACR;EAEF,MAAM,QAAQ,KAAK,aAAa,OAAO,KAAK;EAC5C,IAAI,KAAK,OAAO,UAAU,OACxB,KAAK,OAAO,QAAQ;EAEtB,KAAK,OAAO,OAAO,iBAAiB,IAAI;EACxC,KAAK,OAAO,cAAc,KAAK,aAAa,aAAa,KAAK;EAC9D,KAAK,OAAO,WAAW,qBAAqB,MAAM,UAAU;EAC5D,MAAM,YAAY,iBAAiB,KAAK,aAAa,WAAW,CAAC;EACjE,IAAI,cAAc,QAChB,KAAK,OAAO,gBAAgB,WAAW;OAGvC,KAAK,OAAO,YAAY;EAE1B,MAAM,cAAc,KAAK,aAAa,cAAc;EACpD,IAAI,aACF,KAAK,OAAO,eAAe,gBAAgB,SAAS,SAAS;CAEjE;CAEA,aAAa;EACX,IAAI,CAAC,qBAAqB,MAAM,OAAO,GACrC;EAEF,qBAAqB,KAAK,MAAM,CAAC;CACnC;AACF"}
1
+ {"version":3,"file":"input.mjs","names":[],"sources":["../../../src/runtime/nativeComponents/input.ts"],"sourcesContent":["import { getNativeComponentDescriptor } from '../../shared/nativeComponents'\nimport { dispatchNativeInputEvent } from '../inputHandlerResult'\nimport { connectFormControl, disconnectFormControl } from './formControl'\nimport { dispatchMiniProgramEvent, readBooleanAttribute, resolveContainingShadowRoot, resolveMaxLength } from './helpers'\nimport { ensureNativeComponentStyle } from './style'\n\nconst BaseElement = (globalThis.HTMLElement ?? class {}) as typeof HTMLElement\n\nfunction resolveInputType(element: Element) {\n if (readBooleanAttribute(element, 'password')) {\n return 'password'\n }\n const type = element.getAttribute('type')\n return type === 'number' || type === 'digit' || type === 'idcard' ? 'text' : (type ?? 'text')\n}\n\nexport function createInputEventDetail(input: Pick<HTMLInputElement, 'selectionStart' | 'value'>) {\n return {\n value: input.value,\n cursor: input.selectionStart ?? input.value.length,\n }\n}\n\nexport class WeappInput extends BaseElement {\n static observedAttributes = [...getNativeComponentDescriptor('input')!.attributes]\n\n #input?: HTMLInputElement\n #initialValue = ''\n #initialValueCaptured = false\n\n get formControlName() {\n return this.getAttribute('name') ?? ''\n }\n\n get formControlValue() {\n return this.value\n }\n\n get formControlDisabled() {\n return readBooleanAttribute(this, 'disabled')\n }\n\n get value() {\n return this.#input?.value ?? this.getAttribute('value') ?? ''\n }\n\n set value(value: string) {\n this.setAttribute('value', value ?? '')\n }\n\n connectedCallback() {\n ensureNativeComponentStyle(resolveContainingShadowRoot(this))\n if (!this.#initialValueCaptured) {\n this.#initialValue = this.getAttribute('value') ?? ''\n this.#initialValueCaptured = true\n }\n this.#ensureStructure()\n this.#syncAttributes()\n connectFormControl(this)\n this.#syncFocus()\n }\n\n disconnectedCallback() {\n disconnectFormControl(this)\n }\n\n attributeChangedCallback(name: string) {\n this.#syncAttributes()\n if (name === 'focus') {\n this.#syncFocus()\n }\n }\n\n focus(options?: FocusOptions) {\n this.#input?.focus(options)\n }\n\n blur() {\n this.#input?.blur()\n }\n\n formReset() {\n if (this.#input) {\n this.#input.value = this.#initialValue\n }\n }\n\n formActivate() {\n this.focus()\n }\n\n #ensureStructure() {\n if (this.#input || typeof document === 'undefined') {\n return\n }\n const root = this.shadowRoot ?? this.attachShadow({ mode: 'open' })\n const style = document.createElement('style')\n style.textContent = `\n :host { cursor: text; }\n input {\n display: block;\n box-sizing: border-box;\n width: 100%;\n min-width: 0;\n height: 100%;\n padding: 0;\n border: 0;\n outline: 0;\n color: inherit;\n background: transparent;\n font: inherit;\n line-height: inherit;\n }\n `\n const input = document.createElement('input')\n input.addEventListener('input', (event) => {\n event.stopPropagation()\n const returnedValue = dispatchNativeInputEvent(this, createInputEventDetail(input))\n if (returnedValue !== undefined) {\n input.value = returnedValue\n }\n })\n input.addEventListener('focus', () => {\n dispatchMiniProgramEvent(this, 'focus', { value: input.value, height: 0 })\n })\n input.addEventListener('blur', () => {\n dispatchMiniProgramEvent(this, 'blur', createInputEventDetail(input))\n })\n input.addEventListener('keydown', (event) => {\n if (event.key === 'Enter') {\n dispatchMiniProgramEvent(this, 'confirm', { value: input.value })\n }\n })\n root.append(style, input)\n this.#input = input\n }\n\n #syncAttributes() {\n if (!this.#input) {\n return\n }\n const value = this.getAttribute('value') ?? ''\n if (this.#input.value !== value) {\n this.#input.value = value\n }\n this.#input.type = resolveInputType(this)\n this.#input.placeholder = this.getAttribute('placeholder') ?? ''\n this.#input.disabled = readBooleanAttribute(this, 'disabled')\n const maxlength = resolveMaxLength(this.getAttribute('maxlength'))\n if (maxlength === undefined) {\n this.#input.removeAttribute('maxlength')\n }\n else {\n this.#input.maxLength = maxlength\n }\n const confirmType = this.getAttribute('confirm-type')\n if (confirmType) {\n this.#input.enterKeyHint = confirmType === 'send' ? 'send' : confirmType as HTMLInputElement['enterKeyHint']\n }\n }\n\n #syncFocus() {\n if (!readBooleanAttribute(this, 'focus')) {\n return\n }\n queueMicrotask(() => this.focus())\n }\n}\n"],"mappings":"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"}
@@ -33,11 +33,12 @@ var WeappScrollView = class extends BaseElement {
33
33
  }
34
34
  connectedCallback() {
35
35
  ensureNativeComponentStyle(resolveContainingShadowRoot(this));
36
+ const initializePosition = !this.#viewport;
36
37
  this.#ensureStructure();
37
- this.#syncAttributes();
38
+ this.#syncAttributes(void 0, initializePosition);
38
39
  }
39
- attributeChangedCallback() {
40
- this.#syncAttributes();
40
+ attributeChangedCallback(name, oldValue, newValue) {
41
+ if (oldValue !== newValue) this.#syncAttributes(name);
41
42
  }
42
43
  #ensureStructure() {
43
44
  if (this.#viewport || typeof document === "undefined") return;
@@ -51,26 +52,34 @@ var WeappScrollView = class extends BaseElement {
51
52
  viewport.className = "viewport";
52
53
  const slot = document.createElement("slot");
53
54
  viewport.append(slot);
54
- viewport.addEventListener("scroll", () => {
55
+ viewport.addEventListener("scroll", (event) => {
56
+ if (event.target !== viewport) return;
55
57
  const detail = createScrollEventDetail(viewport, {
56
58
  scrollLeft: this.#lastScrollLeft,
57
59
  scrollTop: this.#lastScrollTop
58
60
  });
59
61
  this.#lastScrollLeft = viewport.scrollLeft;
60
62
  this.#lastScrollTop = viewport.scrollTop;
61
- dispatchMiniProgramEvent(this, "scroll", detail);
63
+ dispatchMiniProgramEvent(this, "scroll", detail, {
64
+ bubbles: false,
65
+ composed: false
66
+ });
62
67
  });
63
68
  root.append(style, viewport);
64
69
  this.#viewport = viewport;
65
70
  }
66
- #syncAttributes() {
71
+ #syncAttributes(changedName, initializePosition = false) {
67
72
  if (!this.#viewport) return;
68
- this.#viewport.style.overflowX = readBooleanAttribute(this, "scroll-x") ? "auto" : "hidden";
69
- this.#viewport.style.overflowY = readBooleanAttribute(this, "scroll-y") ? "auto" : "hidden";
70
- const scrollTop = Number(this.getAttribute("scroll-top"));
71
- const scrollLeft = Number(this.getAttribute("scroll-left"));
72
- if (Number.isFinite(scrollTop)) this.#viewport.scrollTop = scrollTop;
73
- if (Number.isFinite(scrollLeft)) this.#viewport.scrollLeft = scrollLeft;
73
+ if (!changedName || changedName === "scroll-x") this.#viewport.style.overflowX = readBooleanAttribute(this, "scroll-x") ? "auto" : "hidden";
74
+ if (!changedName || changedName === "scroll-y") this.#viewport.style.overflowY = readBooleanAttribute(this, "scroll-y") ? "auto" : "hidden";
75
+ if (initializePosition || changedName === "scroll-top") {
76
+ const scrollTop = Number(this.getAttribute("scroll-top"));
77
+ if (Number.isFinite(scrollTop)) this.#viewport.scrollTop = scrollTop;
78
+ }
79
+ if (initializePosition || changedName === "scroll-left") {
80
+ const scrollLeft = Number(this.getAttribute("scroll-left"));
81
+ if (Number.isFinite(scrollLeft)) this.#viewport.scrollLeft = scrollLeft;
82
+ }
74
83
  }
75
84
  };
76
85
 
@@ -1 +1 @@
1
- {"version":3,"file":"scrollView.mjs","names":[],"sources":["../../../src/runtime/nativeComponents/scrollView.ts"],"sourcesContent":["import { getNativeComponentDescriptor } from '../../shared/nativeComponents'\nimport { dispatchMiniProgramEvent, readBooleanAttribute, resolveContainingShadowRoot } from './helpers'\nimport { ensureNativeComponentStyle } from './style'\n\nconst BaseElement = (globalThis.HTMLElement ?? class {}) as typeof HTMLElement\n\nexport function createScrollEventDetail(\n viewport: Pick<HTMLDivElement, 'scrollHeight' | 'scrollLeft' | 'scrollTop' | 'scrollWidth'>,\n previous: { scrollLeft: number, scrollTop: number },\n) {\n return {\n scrollLeft: viewport.scrollLeft,\n scrollTop: viewport.scrollTop,\n scrollWidth: viewport.scrollWidth,\n scrollHeight: viewport.scrollHeight,\n deltaX: viewport.scrollLeft - previous.scrollLeft,\n deltaY: viewport.scrollTop - previous.scrollTop,\n }\n}\n\nexport class WeappScrollView extends BaseElement {\n static observedAttributes = [...getNativeComponentDescriptor('scroll-view')!.attributes]\n\n #viewport?: HTMLDivElement\n #lastScrollLeft = 0\n #lastScrollTop = 0\n\n get scrollTop() {\n return this.#viewport?.scrollTop ?? 0\n }\n\n set scrollTop(value: number) {\n if (this.#viewport) {\n this.#viewport.scrollTop = value\n }\n }\n\n get scrollLeft() {\n return this.#viewport?.scrollLeft ?? 0\n }\n\n set scrollLeft(value: number) {\n if (this.#viewport) {\n this.#viewport.scrollLeft = value\n }\n }\n\n connectedCallback() {\n ensureNativeComponentStyle(resolveContainingShadowRoot(this))\n this.#ensureStructure()\n this.#syncAttributes()\n }\n\n attributeChangedCallback() {\n this.#syncAttributes()\n }\n\n #ensureStructure() {\n if (this.#viewport || typeof document === 'undefined') {\n return\n }\n const root = this.shadowRoot ?? this.attachShadow({ mode: 'open' })\n const style = document.createElement('style')\n style.textContent = `\n :host { min-width: 0; min-height: 0; }\n .viewport { width: 100%; height: 100%; overscroll-behavior: contain; }\n `\n const viewport = document.createElement('div')\n viewport.className = 'viewport'\n const slot = document.createElement('slot')\n viewport.append(slot)\n viewport.addEventListener('scroll', () => {\n const detail = createScrollEventDetail(viewport, {\n scrollLeft: this.#lastScrollLeft,\n scrollTop: this.#lastScrollTop,\n })\n this.#lastScrollLeft = viewport.scrollLeft\n this.#lastScrollTop = viewport.scrollTop\n dispatchMiniProgramEvent(this, 'scroll', detail)\n })\n root.append(style, viewport)\n this.#viewport = viewport\n }\n\n #syncAttributes() {\n if (!this.#viewport) {\n return\n }\n this.#viewport.style.overflowX = readBooleanAttribute(this, 'scroll-x') ? 'auto' : 'hidden'\n this.#viewport.style.overflowY = readBooleanAttribute(this, 'scroll-y') ? 'auto' : 'hidden'\n const scrollTop = Number(this.getAttribute('scroll-top'))\n const scrollLeft = Number(this.getAttribute('scroll-left'))\n if (Number.isFinite(scrollTop)) {\n this.#viewport.scrollTop = scrollTop\n }\n if (Number.isFinite(scrollLeft)) {\n this.#viewport.scrollLeft = scrollLeft\n }\n }\n}\n"],"mappings":";;;;;AAIA,MAAM,cAAe,WAAW,eAAe,MAAM,CAAC;AAEtD,SAAgB,wBACd,UACA,UACA;CACA,OAAO;EACL,YAAY,SAAS;EACrB,WAAW,SAAS;EACpB,aAAa,SAAS;EACtB,cAAc,SAAS;EACvB,QAAQ,SAAS,aAAa,SAAS;EACvC,QAAQ,SAAS,YAAY,SAAS;CACxC;AACF;AAEA,IAAa,kBAAb,cAAqC,YAAY;CAC/C,OAAO,qBAAqB,CAAC,GAAG,6BAA6B,aAAa,CAAC,CAAE,UAAU;CAEvF;CACA,kBAAkB;CAClB,iBAAiB;CAEjB,IAAI,YAAY;EACd,OAAO,KAAK,WAAW,aAAa;CACtC;CAEA,IAAI,UAAU,OAAe;EAC3B,IAAI,KAAK,WACP,KAAK,UAAU,YAAY;CAE/B;CAEA,IAAI,aAAa;EACf,OAAO,KAAK,WAAW,cAAc;CACvC;CAEA,IAAI,WAAW,OAAe;EAC5B,IAAI,KAAK,WACP,KAAK,UAAU,aAAa;CAEhC;CAEA,oBAAoB;EAClB,2BAA2B,4BAA4B,IAAI,CAAC;EAC5D,KAAK,iBAAiB;EACtB,KAAK,gBAAgB;CACvB;CAEA,2BAA2B;EACzB,KAAK,gBAAgB;CACvB;CAEA,mBAAmB;EACjB,IAAI,KAAK,aAAa,OAAO,aAAa,aACxC;EAEF,MAAM,OAAO,KAAK,cAAc,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;EAClE,MAAM,QAAQ,SAAS,cAAc,OAAO;EAC5C,MAAM,cAAc;;;;EAIpB,MAAM,WAAW,SAAS,cAAc,KAAK;EAC7C,SAAS,YAAY;EACrB,MAAM,OAAO,SAAS,cAAc,MAAM;EAC1C,SAAS,OAAO,IAAI;EACpB,SAAS,iBAAiB,gBAAgB;GACxC,MAAM,SAAS,wBAAwB,UAAU;IAC/C,YAAY,KAAK;IACjB,WAAW,KAAK;GAClB,CAAC;GACD,KAAK,kBAAkB,SAAS;GAChC,KAAK,iBAAiB,SAAS;GAC/B,yBAAyB,MAAM,UAAU,MAAM;EACjD,CAAC;EACD,KAAK,OAAO,OAAO,QAAQ;EAC3B,KAAK,YAAY;CACnB;CAEA,kBAAkB;EAChB,IAAI,CAAC,KAAK,WACR;EAEF,KAAK,UAAU,MAAM,YAAY,qBAAqB,MAAM,UAAU,IAAI,SAAS;EACnF,KAAK,UAAU,MAAM,YAAY,qBAAqB,MAAM,UAAU,IAAI,SAAS;EACnF,MAAM,YAAY,OAAO,KAAK,aAAa,YAAY,CAAC;EACxD,MAAM,aAAa,OAAO,KAAK,aAAa,aAAa,CAAC;EAC1D,IAAI,OAAO,SAAS,SAAS,GAC3B,KAAK,UAAU,YAAY;EAE7B,IAAI,OAAO,SAAS,UAAU,GAC5B,KAAK,UAAU,aAAa;CAEhC;AACF"}
1
+ {"version":3,"file":"scrollView.mjs","names":[],"sources":["../../../src/runtime/nativeComponents/scrollView.ts"],"sourcesContent":["import { getNativeComponentDescriptor } from '../../shared/nativeComponents'\nimport { dispatchMiniProgramEvent, readBooleanAttribute, resolveContainingShadowRoot } from './helpers'\nimport { ensureNativeComponentStyle } from './style'\n\nconst BaseElement = (globalThis.HTMLElement ?? class {}) as typeof HTMLElement\n\nexport function createScrollEventDetail(\n viewport: Pick<HTMLDivElement, 'scrollHeight' | 'scrollLeft' | 'scrollTop' | 'scrollWidth'>,\n previous: { scrollLeft: number, scrollTop: number },\n) {\n return {\n scrollLeft: viewport.scrollLeft,\n scrollTop: viewport.scrollTop,\n scrollWidth: viewport.scrollWidth,\n scrollHeight: viewport.scrollHeight,\n deltaX: viewport.scrollLeft - previous.scrollLeft,\n deltaY: viewport.scrollTop - previous.scrollTop,\n }\n}\n\nexport class WeappScrollView extends BaseElement {\n static observedAttributes = [...getNativeComponentDescriptor('scroll-view')!.attributes]\n\n #viewport?: HTMLDivElement\n #lastScrollLeft = 0\n #lastScrollTop = 0\n\n get scrollTop() {\n return this.#viewport?.scrollTop ?? 0\n }\n\n set scrollTop(value: number) {\n if (this.#viewport) {\n this.#viewport.scrollTop = value\n }\n }\n\n get scrollLeft() {\n return this.#viewport?.scrollLeft ?? 0\n }\n\n set scrollLeft(value: number) {\n if (this.#viewport) {\n this.#viewport.scrollLeft = value\n }\n }\n\n connectedCallback() {\n ensureNativeComponentStyle(resolveContainingShadowRoot(this))\n const initializePosition = !this.#viewport\n this.#ensureStructure()\n this.#syncAttributes(undefined, initializePosition)\n }\n\n attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null) {\n if (oldValue !== newValue) {\n this.#syncAttributes(name)\n }\n }\n\n #ensureStructure() {\n if (this.#viewport || typeof document === 'undefined') {\n return\n }\n const root = this.shadowRoot ?? this.attachShadow({ mode: 'open' })\n const style = document.createElement('style')\n style.textContent = `\n :host { min-width: 0; min-height: 0; }\n .viewport { width: 100%; height: 100%; overscroll-behavior: contain; }\n `\n const viewport = document.createElement('div')\n viewport.className = 'viewport'\n const slot = document.createElement('slot')\n viewport.append(slot)\n viewport.addEventListener('scroll', (event) => {\n if (event.target !== viewport) {\n return\n }\n const detail = createScrollEventDetail(viewport, {\n scrollLeft: this.#lastScrollLeft,\n scrollTop: this.#lastScrollTop,\n })\n this.#lastScrollLeft = viewport.scrollLeft\n this.#lastScrollTop = viewport.scrollTop\n dispatchMiniProgramEvent(this, 'scroll', detail, {\n bubbles: false,\n composed: false,\n })\n })\n root.append(style, viewport)\n this.#viewport = viewport\n }\n\n #syncAttributes(changedName?: string, initializePosition = false) {\n if (!this.#viewport) {\n return\n }\n if (!changedName || changedName === 'scroll-x') {\n this.#viewport.style.overflowX = readBooleanAttribute(this, 'scroll-x') ? 'auto' : 'hidden'\n }\n if (!changedName || changedName === 'scroll-y') {\n this.#viewport.style.overflowY = readBooleanAttribute(this, 'scroll-y') ? 'auto' : 'hidden'\n }\n if (initializePosition || changedName === 'scroll-top') {\n const scrollTop = Number(this.getAttribute('scroll-top'))\n if (Number.isFinite(scrollTop)) {\n this.#viewport.scrollTop = scrollTop\n }\n }\n if (initializePosition || changedName === 'scroll-left') {\n const scrollLeft = Number(this.getAttribute('scroll-left'))\n if (Number.isFinite(scrollLeft)) {\n this.#viewport.scrollLeft = scrollLeft\n }\n }\n }\n}\n"],"mappings":";;;;;AAIA,MAAM,cAAe,WAAW,eAAe,MAAM,CAAC;AAEtD,SAAgB,wBACd,UACA,UACA;CACA,OAAO;EACL,YAAY,SAAS;EACrB,WAAW,SAAS;EACpB,aAAa,SAAS;EACtB,cAAc,SAAS;EACvB,QAAQ,SAAS,aAAa,SAAS;EACvC,QAAQ,SAAS,YAAY,SAAS;CACxC;AACF;AAEA,IAAa,kBAAb,cAAqC,YAAY;CAC/C,OAAO,qBAAqB,CAAC,GAAG,6BAA6B,aAAa,CAAC,CAAE,UAAU;CAEvF;CACA,kBAAkB;CAClB,iBAAiB;CAEjB,IAAI,YAAY;EACd,OAAO,KAAK,WAAW,aAAa;CACtC;CAEA,IAAI,UAAU,OAAe;EAC3B,IAAI,KAAK,WACP,KAAK,UAAU,YAAY;CAE/B;CAEA,IAAI,aAAa;EACf,OAAO,KAAK,WAAW,cAAc;CACvC;CAEA,IAAI,WAAW,OAAe;EAC5B,IAAI,KAAK,WACP,KAAK,UAAU,aAAa;CAEhC;CAEA,oBAAoB;EAClB,2BAA2B,4BAA4B,IAAI,CAAC;EAC5D,MAAM,qBAAqB,CAAC,KAAK;EACjC,KAAK,iBAAiB;EACtB,KAAK,gBAAgB,QAAW,kBAAkB;CACpD;CAEA,yBAAyB,MAAc,UAAyB,UAAyB;EACvF,IAAI,aAAa,UACf,KAAK,gBAAgB,IAAI;CAE7B;CAEA,mBAAmB;EACjB,IAAI,KAAK,aAAa,OAAO,aAAa,aACxC;EAEF,MAAM,OAAO,KAAK,cAAc,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;EAClE,MAAM,QAAQ,SAAS,cAAc,OAAO;EAC5C,MAAM,cAAc;;;;EAIpB,MAAM,WAAW,SAAS,cAAc,KAAK;EAC7C,SAAS,YAAY;EACrB,MAAM,OAAO,SAAS,cAAc,MAAM;EAC1C,SAAS,OAAO,IAAI;EACpB,SAAS,iBAAiB,WAAW,UAAU;GAC7C,IAAI,MAAM,WAAW,UACnB;GAEF,MAAM,SAAS,wBAAwB,UAAU;IAC/C,YAAY,KAAK;IACjB,WAAW,KAAK;GAClB,CAAC;GACD,KAAK,kBAAkB,SAAS;GAChC,KAAK,iBAAiB,SAAS;GAC/B,yBAAyB,MAAM,UAAU,QAAQ;IAC/C,SAAS;IACT,UAAU;GACZ,CAAC;EACH,CAAC;EACD,KAAK,OAAO,OAAO,QAAQ;EAC3B,KAAK,YAAY;CACnB;CAEA,gBAAgB,aAAsB,qBAAqB,OAAO;EAChE,IAAI,CAAC,KAAK,WACR;EAEF,IAAI,CAAC,eAAe,gBAAgB,YAClC,KAAK,UAAU,MAAM,YAAY,qBAAqB,MAAM,UAAU,IAAI,SAAS;EAErF,IAAI,CAAC,eAAe,gBAAgB,YAClC,KAAK,UAAU,MAAM,YAAY,qBAAqB,MAAM,UAAU,IAAI,SAAS;EAErF,IAAI,sBAAsB,gBAAgB,cAAc;GACtD,MAAM,YAAY,OAAO,KAAK,aAAa,YAAY,CAAC;GACxD,IAAI,OAAO,SAAS,SAAS,GAC3B,KAAK,UAAU,YAAY;EAE/B;EACA,IAAI,sBAAsB,gBAAgB,eAAe;GACvD,MAAM,aAAa,OAAO,KAAK,aAAa,aAAa,CAAC;GAC1D,IAAI,OAAO,SAAS,UAAU,GAC5B,KAAK,UAAU,aAAa;EAEhC;CACF;AACF"}
@@ -1,7 +1,8 @@
1
1
  import { LogManager, LogManagerOptions, SetBackgroundColorOptions, SetBackgroundTextStyleOptions, UpdateManager } from "./types/locationRuntime.mjs";
2
2
  import { AdBaseOptions, GetExtConfigOptions, InterstitialAd, RewardedVideoAd } from "./types/platformRuntime.mjs";
3
+ import { AppHideCallback, AppHideOptions, AppLaunchOptions, AppShowCallback } from "./routeRuntime/options.mjs";
3
4
  import { authorize, checkSession, getAccountInfoSync, getAppAuthorizeSetting, getAppBaseInfo, getBatteryInfo, getBatteryInfoSync, getDeviceInfo, getFuzzyLocation, getLocation, getMenuButtonBoundingClientRect, getNetworkType, getSetting, getSystemInfo, getSystemInfoSync, getSystemSetting, getUserInfo, getUserProfile, getWindowInfo, login, offNetworkStatusChange, offWindowResize, onNetworkStatusChange, onWindowResize, openAppAuthorizeSetting, openSetting, vibrateShort } from "./deviceAuthSystemApi.mjs";
4
- import { getEnterOptionsSync, getLaunchOptionsSync, initializePageRoutes, navigateBack, navigateTo, reLaunch, redirectTo, registerApp, registerComponent, registerPage, switchTab } from "./routeRuntime.mjs";
5
+ import { getEnterOptionsSync, getLaunchOptionsSync, initializePageRoutes, navigateBack, navigateTo, offAppHide, offAppShow, onAppHide, onAppShow, reLaunch, redirectTo, registerApp, registerComponent, registerPage, switchTab } from "./routeRuntime.mjs";
5
6
  import { clearStorage, clearStorageSync, createCanvasContext, createSelectorQuery, createVKSession, createVideoContext, createWorker, downloadFile, exitMiniProgram, getFileSystemManager, getStorage, getStorageInfo, getStorageInfoSync, getStorageSync, hideKeyboard, loadSubPackage, navigateToMiniProgram, nextTick, pageScrollTo, preloadSubpackage, removeStorage, removeStorageSync, request, setStorage, setStorageSync, startPullDownRefresh, stopPullDownRefresh, uploadFile } from "./runtimeDataApi.mjs";
6
7
  import { chooseAddress, chooseFile, chooseImage, chooseLocation, chooseMedia, chooseMessageFile, chooseVideo, compressImage, compressVideo, getClipboardData, getImageInfo, getVideoInfo, hideLoading, hideTabBar, hideTabBarRedDot, makePhoneCall, openCustomerServiceChat, openDocument, openLocation, openVideoEditor, previewImage, previewMedia, removeTabBarBadge, requestPayment, requestSubscribeMessage, saveFile, saveFileToDisk, saveImageToPhotosAlbum, saveVideoToPhotosAlbum, scanCode, setClipboardData, setTabBarBadge, setTabBarItem, setTabBarStyle, showActionSheet, showLoading, showModal, showShareMenu, showTabBar, showTabBarRedDot, showToast, updateShareMenu } from "./uiMediaApi.mjs";
7
8
  //#region src/runtime/polyfill/index.d.ts
@@ -35,5 +36,5 @@ export declare function getUpdateManager(): UpdateManager;
35
36
  export declare function getLogManager(options?: LogManagerOptions): LogManager;
36
37
  export declare function reportAnalytics(eventName: string, data?: Record<string, unknown>): void;
37
38
  //#endregion
38
- export { authorize, checkSession, chooseAddress, chooseFile, chooseImage, chooseLocation, chooseMedia, chooseMessageFile, chooseVideo, clearStorage, clearStorageSync, compressImage, compressVideo, createCanvasContext, createSelectorQuery, createVKSession, createVideoContext, createWorker, downloadFile, exitMiniProgram, getAccountInfoSync, getAppAuthorizeSetting, getAppBaseInfo, getBatteryInfo, getBatteryInfoSync, getClipboardData, getDeviceInfo, getEnterOptionsSync, getFileSystemManager, getFuzzyLocation, getImageInfo, getLaunchOptionsSync, getLocation, getMenuButtonBoundingClientRect, getNetworkType, getSetting, getStorage, getStorageInfo, getStorageInfoSync, getStorageSync, getSystemInfo, getSystemInfoSync, getSystemSetting, getUserInfo, getUserProfile, getVideoInfo, getWindowInfo, hideKeyboard, hideLoading, hideTabBar, hideTabBarRedDot, initializePageRoutes, loadSubPackage, login, makePhoneCall, navigateBack, navigateTo, navigateToMiniProgram, nextTick, offNetworkStatusChange, offWindowResize, onNetworkStatusChange, onWindowResize, openAppAuthorizeSetting, openCustomerServiceChat, openDocument, openLocation, openSetting, openVideoEditor, pageScrollTo, preloadSubpackage, previewImage, previewMedia, reLaunch, redirectTo, registerApp, registerComponent, registerPage, removeStorage, removeStorageSync, removeTabBarBadge, request, requestPayment, requestSubscribeMessage, saveFile, saveFileToDisk, saveImageToPhotosAlbum, saveVideoToPhotosAlbum, scanCode, setClipboardData, setStorage, setStorageSync, setTabBarBadge, setTabBarItem, setTabBarStyle, showActionSheet, showLoading, showModal, showShareMenu, showTabBar, showTabBarRedDot, showToast, startPullDownRefresh, stopPullDownRefresh, switchTab, updateShareMenu, uploadFile, vibrateShort };
39
+ export { type AppHideCallback, type AppHideOptions, type AppLaunchOptions, type AppShowCallback, authorize, checkSession, chooseAddress, chooseFile, chooseImage, chooseLocation, chooseMedia, chooseMessageFile, chooseVideo, clearStorage, clearStorageSync, compressImage, compressVideo, createCanvasContext, createSelectorQuery, createVKSession, createVideoContext, createWorker, downloadFile, exitMiniProgram, getAccountInfoSync, getAppAuthorizeSetting, getAppBaseInfo, getBatteryInfo, getBatteryInfoSync, getClipboardData, getDeviceInfo, getEnterOptionsSync, getFileSystemManager, getFuzzyLocation, getImageInfo, getLaunchOptionsSync, getLocation, getMenuButtonBoundingClientRect, getNetworkType, getSetting, getStorage, getStorageInfo, getStorageInfoSync, getStorageSync, getSystemInfo, getSystemInfoSync, getSystemSetting, getUserInfo, getUserProfile, getVideoInfo, getWindowInfo, hideKeyboard, hideLoading, hideTabBar, hideTabBarRedDot, initializePageRoutes, loadSubPackage, login, makePhoneCall, navigateBack, navigateTo, navigateToMiniProgram, nextTick, offAppHide, offAppShow, offNetworkStatusChange, offWindowResize, onAppHide, onAppShow, onNetworkStatusChange, onWindowResize, openAppAuthorizeSetting, openCustomerServiceChat, openDocument, openLocation, openSetting, openVideoEditor, pageScrollTo, preloadSubpackage, previewImage, previewMedia, reLaunch, redirectTo, registerApp, registerComponent, registerPage, removeStorage, removeStorageSync, removeTabBarBadge, request, requestPayment, requestSubscribeMessage, saveFile, saveFileToDisk, saveImageToPhotosAlbum, saveVideoToPhotosAlbum, scanCode, setClipboardData, setStorage, setStorageSync, setTabBarBadge, setTabBarItem, setTabBarStyle, showActionSheet, showLoading, showModal, showShareMenu, showTabBar, showTabBarRedDot, showToast, startPullDownRefresh, stopPullDownRefresh, switchTab, updateShareMenu, uploadFile, vibrateShort };
39
40
  //# sourceMappingURL=index.d.mts.map
@@ -1,6 +1,6 @@
1
1
  import { emitRuntimeWarning } from "../warning.mjs";
2
2
  import { callMiniProgramAsyncFailure, callMiniProgramAsyncSuccess } from "./async.mjs";
3
- import { getAppInstance, getCurrentPagesInternal, getEnterOptionsSync, getLaunchOptionsSync, initializePageRoutes, navigateBack, navigateTo, reLaunch, redirectTo, registerApp, registerComponent, registerPage, switchTab } from "./routeRuntime.mjs";
3
+ import { getAppInstance, getCurrentPagesInternal, getEnterOptionsSync, getLaunchOptionsSync, initializePageRoutes, navigateBack, navigateTo, offAppHide, offAppShow, onAppHide, onAppShow, reLaunch, redirectTo, registerApp, registerComponent, registerPage, switchTab } from "./routeRuntime.mjs";
4
4
  import { WEB_USER_DATA_PATH } from "./files.mjs";
5
5
  import { clearStorage, clearStorageSync, createCanvasContext, createIntersectionObserver, createSelectorQuery, createVKSession, createVideoContext, createWorker, downloadFile, exitMiniProgram, getFileSystemManager, getStorage, getStorageInfo, getStorageInfoSync, getStorageSync, hideKeyboard, loadSubPackage, navigateToMiniProgram, nextTick, pageScrollTo, preloadSubpackage, removeStorage, removeStorageSync, request, runtimeDataApi_exports, setStorage, setStorageSync, startPullDownRefresh, stopPullDownRefresh, uploadFile } from "./runtimeDataApi.mjs";
6
6
  import { createAnimation } from "./animation.mjs";
@@ -79,6 +79,10 @@ Object.assign(miniProgramBridge, {
79
79
  reLaunch,
80
80
  getLaunchOptionsSync,
81
81
  getEnterOptionsSync,
82
+ offAppHide,
83
+ offAppShow,
84
+ onAppHide,
85
+ onAppShow,
82
86
  ...runtimeDataApi_exports,
83
87
  setNavigationBarTitle,
84
88
  setNavigationBarColor,
@@ -110,5 +114,5 @@ if (typeof globalTarget.getApp !== "function") globalTarget.getApp = getAppInsta
110
114
  if (typeof globalTarget.getCurrentPages !== "function") globalTarget.getCurrentPages = getCurrentPagesInternal;
111
115
 
112
116
  //#endregion
113
- export { $emit, $off, $on, $once, authorize, canIUse, checkSession, chooseAddress, chooseFile, chooseImage, chooseLocation, chooseMedia, chooseMessageFile, chooseVideo, clearStorage, clearStorageSync, compressImage, compressVideo, createCanvasContext, createIntersectionObserver, createInterstitialAd, createRewardedVideoAd, createSelectorQuery, createVKSession, createVideoContext, createWorker, downloadFile, exitMiniProgram, getAccountInfoSync, getAppAuthorizeSetting, getAppBaseInfo, getBatteryInfo, getBatteryInfoSync, getClipboardData, getDeviceInfo, getEnterOptionsSync, getExtConfig, getExtConfigSync, getFileSystemManager, getFuzzyLocation, getImageInfo, getLaunchOptionsSync, getLocation, getLogManager, getMenuButtonBoundingClientRect, getNetworkType, getSetting, getStorage, getStorageInfo, getStorageInfoSync, getStorageSync, getSystemInfo, getSystemInfoSync, getSystemSetting, getUpdateManager, getUserInfo, getUserProfile, getVideoInfo, getWindowInfo, hideKeyboard, hideLoading, hideNavigationBarLoading, hideTabBar, hideTabBarRedDot, initializePageRoutes, loadSubPackage, login, makePhoneCall, navigateBack, navigateTo, navigateToMiniProgram, nextTick, offNetworkStatusChange, offWindowResize, onNetworkStatusChange, onWindowResize, openAppAuthorizeSetting, openCustomerServiceChat, openDocument, openLocation, openSetting, openVideoEditor, pageScrollTo, preloadSubpackage, previewImage, previewMedia, reLaunch, redirectTo, registerApp, registerComponent, registerPage, removeStorage, removeStorageSync, removeTabBarBadge, reportAnalytics, request, requestPayment, requestSubscribeMessage, rpx2px, saveFile, saveFileToDisk, saveImageToPhotosAlbum, saveVideoToPhotosAlbum, scanCode, setBackgroundColor, setBackgroundTextStyle, setClipboardData, setNavigationBarColor, setNavigationBarTitle, setStorage, setStorageSync, setTabBarBadge, setTabBarItem, setTabBarStyle, showActionSheet, showLoading, showModal, showNavigationBarLoading, showShareMenu, showTabBar, showTabBarRedDot, showToast, startPullDownRefresh, stopPullDownRefresh, switchTab, updateShareMenu, uploadFile, upx2px, vibrateShort };
117
+ export { $emit, $off, $on, $once, authorize, canIUse, checkSession, chooseAddress, chooseFile, chooseImage, chooseLocation, chooseMedia, chooseMessageFile, chooseVideo, clearStorage, clearStorageSync, compressImage, compressVideo, createCanvasContext, createIntersectionObserver, createInterstitialAd, createRewardedVideoAd, createSelectorQuery, createVKSession, createVideoContext, createWorker, downloadFile, exitMiniProgram, getAccountInfoSync, getAppAuthorizeSetting, getAppBaseInfo, getBatteryInfo, getBatteryInfoSync, getClipboardData, getDeviceInfo, getEnterOptionsSync, getExtConfig, getExtConfigSync, getFileSystemManager, getFuzzyLocation, getImageInfo, getLaunchOptionsSync, getLocation, getLogManager, getMenuButtonBoundingClientRect, getNetworkType, getSetting, getStorage, getStorageInfo, getStorageInfoSync, getStorageSync, getSystemInfo, getSystemInfoSync, getSystemSetting, getUpdateManager, getUserInfo, getUserProfile, getVideoInfo, getWindowInfo, hideKeyboard, hideLoading, hideNavigationBarLoading, hideTabBar, hideTabBarRedDot, initializePageRoutes, loadSubPackage, login, makePhoneCall, navigateBack, navigateTo, navigateToMiniProgram, nextTick, offAppHide, offAppShow, offNetworkStatusChange, offWindowResize, onAppHide, onAppShow, onNetworkStatusChange, onWindowResize, openAppAuthorizeSetting, openCustomerServiceChat, openDocument, openLocation, openSetting, openVideoEditor, pageScrollTo, preloadSubpackage, previewImage, previewMedia, reLaunch, redirectTo, registerApp, registerComponent, registerPage, removeStorage, removeStorageSync, removeTabBarBadge, reportAnalytics, request, requestPayment, requestSubscribeMessage, rpx2px, saveFile, saveFileToDisk, saveImageToPhotosAlbum, saveVideoToPhotosAlbum, scanCode, setBackgroundColor, setBackgroundTextStyle, setClipboardData, setNavigationBarColor, setNavigationBarTitle, setStorage, setStorageSync, setTabBarBadge, setTabBarItem, setTabBarStyle, showActionSheet, showLoading, showModal, showNavigationBarLoading, showShareMenu, showTabBar, showTabBarRedDot, showToast, startPullDownRefresh, stopPullDownRefresh, switchTab, updateShareMenu, uploadFile, upx2px, vibrateShort };
114
118
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["runtimeDataApi","uiMediaApi","deviceAuthSystemApi","eventBusApi"],"sources":["../../../src/runtime/polyfill/index.ts"],"sourcesContent":["import type {\n AdBaseOptions,\n CloudBridge,\n GetExtConfigOptions,\n InterstitialAd,\n LogManager,\n LogManagerOptions,\n MiniProgramAsyncOptions,\n MiniProgramBaseResult,\n RewardedVideoAd,\n SetBackgroundColorOptions,\n SetBackgroundTextStyleOptions,\n UpdateManager,\n} from './types'\nimport { getDefaultMiniProgramRuntimeGlobalKey, getMiniProgramRuntimeGlobalKeys } from '@weapp-core/shared'\nimport { emitRuntimeWarning } from '../warning'\nimport { createAnimation } from './animation'\nimport {\n callMiniProgramAsyncFailure,\n callMiniProgramAsyncSuccess,\n} from './async'\nimport {\n setBackgroundColorBridge,\n setBackgroundTextStyleBridge,\n} from './background'\nimport { createCloudBridge } from './cloud'\nimport * as deviceAuthSystemApi from './deviceAuthSystemApi'\nimport * as eventBusApi from './eventBus'\nimport { WEB_USER_DATA_PATH } from './files'\nimport { loadFontFace } from './font'\nimport { getLocale } from './locale'\nimport { createNavigationBarRuntimeBridge } from './navigationBarRuntime'\nimport {\n createInterstitialAdBridge,\n createRewardedVideoAdBridge,\n getExtConfigBridge,\n getExtConfigSyncBridge,\n getLogManagerBridge,\n getUpdateManagerBridge,\n reportAnalyticsBridge,\n} from './platformApi'\nimport {\n getAppInstance,\n getCurrentPagesInternal,\n getEnterOptionsSync,\n getLaunchOptionsSync,\n navigateBack,\n navigateTo,\n redirectTo,\n reLaunch,\n switchTab,\n} from './routeRuntime'\nimport {\n canIUseBridge,\n} from './runtimeCapabilityApi'\nimport * as runtimeDataApi from './runtimeDataApi'\nimport * as uiMediaApi from './uiMediaApi'\n\nexport { createAnimation } from './animation'\nexport * from './deviceAuthSystemApi'\nexport * from './eventBus'\nexport { loadFontFace } from './font'\nexport { getLocale } from './locale'\n\nexport {\n getEnterOptionsSync,\n getLaunchOptionsSync,\n initializePageRoutes,\n navigateBack,\n navigateTo,\n redirectTo,\n registerApp,\n registerComponent,\n registerPage,\n reLaunch,\n switchTab,\n} from './routeRuntime'\n\nexport * from './runtimeDataApi'\nexport * from './uiMediaApi'\n\nconst MINI_PROGRAM_GLOBAL_KEYS = getMiniProgramRuntimeGlobalKeys()\nconst DEFAULT_MINI_PROGRAM_GLOBAL_KEY = getDefaultMiniProgramRuntimeGlobalKey()\nconst globalTarget = globalThis as Record<string, unknown>\n\nfunction resolveMiniProgramBridge() {\n for (const runtimeGlobalKey of MINI_PROGRAM_GLOBAL_KEYS) {\n const candidate = globalTarget[runtimeGlobalKey]\n if (candidate && typeof candidate === 'object') {\n return candidate as Record<string, unknown>\n }\n }\n return undefined\n}\n\nconst navigationBarRuntimeBridge = createNavigationBarRuntimeBridge(\n () => getCurrentPagesInternal() as Array<HTMLElement & { renderRoot?: ShadowRoot | HTMLElement }>,\n emitRuntimeWarning,\n)\n\nexport function setNavigationBarTitle(options: { title: string }) {\n return navigationBarRuntimeBridge.setNavigationBarTitle(options)\n}\n\nexport function setNavigationBarColor(options: {\n frontColor?: string\n backgroundColor?: string\n animation?: { duration?: number, timingFunction?: string }\n}) {\n return navigationBarRuntimeBridge.setNavigationBarColor(options)\n}\n\nexport function showNavigationBarLoading() {\n return navigationBarRuntimeBridge.showNavigationBarLoading()\n}\n\nexport function hideNavigationBarLoading() {\n return navigationBarRuntimeBridge.hideNavigationBarLoading()\n}\n\nexport function setBackgroundColor(options?: SetBackgroundColorOptions) {\n return setBackgroundColorBridge(options)\n}\n\nexport function setBackgroundTextStyle(options?: SetBackgroundTextStyleOptions) {\n return setBackgroundTextStyleBridge(options)\n}\n\nexport function canIUse(schema: string) {\n return canIUseBridge(resolveMiniProgramBridge(), schema)\n}\n\nconst cloudBridge: CloudBridge = createCloudBridge(\n (options, result) => callMiniProgramAsyncSuccess(\n options as unknown as MiniProgramAsyncOptions<MiniProgramBaseResult> | undefined,\n result as MiniProgramBaseResult,\n ),\n (options, errMsg) => callMiniProgramAsyncFailure(\n options as unknown as MiniProgramAsyncOptions<MiniProgramBaseResult> | undefined,\n errMsg,\n ),\n) as CloudBridge\n\nexport function createRewardedVideoAd(options?: AdBaseOptions): RewardedVideoAd {\n return createRewardedVideoAdBridge(options)\n}\n\nexport function createInterstitialAd(options?: AdBaseOptions): InterstitialAd {\n return createInterstitialAdBridge(options)\n}\n\nexport function getExtConfigSync() {\n return getExtConfigSyncBridge()\n}\n\nexport function getExtConfig(options?: GetExtConfigOptions) {\n return getExtConfigBridge(options)\n}\n\nexport function getUpdateManager(): UpdateManager {\n return getUpdateManagerBridge()\n}\n\nexport function getLogManager(options?: LogManagerOptions): LogManager {\n return getLogManagerBridge(options)\n}\n\nexport function reportAnalytics(eventName: string, data?: Record<string, unknown>) {\n reportAnalyticsBridge(eventName, data)\n}\n\nconst miniProgramBridge = (globalTarget[DEFAULT_MINI_PROGRAM_GLOBAL_KEY] as Record<string, unknown> | undefined) ?? {}\nObject.assign(miniProgramBridge, {\n navigateTo,\n navigateBack,\n redirectTo,\n switchTab,\n reLaunch,\n getLaunchOptionsSync,\n getEnterOptionsSync,\n ...runtimeDataApi,\n setNavigationBarTitle,\n setNavigationBarColor,\n setBackgroundColor,\n setBackgroundTextStyle,\n showNavigationBarLoading,\n hideNavigationBarLoading,\n ...uiMediaApi,\n ...deviceAuthSystemApi,\n ...eventBusApi,\n loadFontFace,\n getLocale,\n createAnimation,\n createRewardedVideoAd,\n createInterstitialAd,\n getExtConfigSync,\n getExtConfig,\n getUpdateManager,\n getLogManager,\n reportAnalytics,\n canIUse,\n cloud: cloudBridge,\n})\nconst miniProgramEnv = (miniProgramBridge.env as Record<string, unknown> | undefined) ?? {}\nif (typeof miniProgramEnv.USER_DATA_PATH !== 'string' || !miniProgramEnv.USER_DATA_PATH.trim()) {\n miniProgramEnv.USER_DATA_PATH = WEB_USER_DATA_PATH\n}\nminiProgramBridge.env = miniProgramEnv\nfor (const runtimeGlobalKey of MINI_PROGRAM_GLOBAL_KEYS) {\n globalTarget[runtimeGlobalKey] = miniProgramBridge\n}\nif (typeof globalTarget.getApp !== 'function') {\n globalTarget.getApp = getAppInstance\n}\nif (typeof globalTarget.getCurrentPages !== 'function') {\n globalTarget.getCurrentPages = getCurrentPagesInternal\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAiFA,MAAM,2BAA2B,gCAAgC;AACjE,MAAM,kCAAkC,sCAAsC;AAC9E,MAAM,eAAe;AAErB,SAAS,2BAA2B;CAClC,KAAK,MAAM,oBAAoB,0BAA0B;EACvD,MAAM,YAAY,aAAa;EAC/B,IAAI,aAAa,OAAO,cAAc,UACpC,OAAO;CAEX;AAEF;AAEA,MAAM,6BAA6B,uCAC3B,wBAAwB,GAC9B,kBACF;AAEA,SAAgB,sBAAsB,SAA4B;CAChE,OAAO,2BAA2B,sBAAsB,OAAO;AACjE;AAEA,SAAgB,sBAAsB,SAInC;CACD,OAAO,2BAA2B,sBAAsB,OAAO;AACjE;AAEA,SAAgB,2BAA2B;CACzC,OAAO,2BAA2B,yBAAyB;AAC7D;AAEA,SAAgB,2BAA2B;CACzC,OAAO,2BAA2B,yBAAyB;AAC7D;AAEA,SAAgB,mBAAmB,SAAqC;CACtE,OAAO,yBAAyB,OAAO;AACzC;AAEA,SAAgB,uBAAuB,SAAyC;CAC9E,OAAO,6BAA6B,OAAO;AAC7C;AAEA,SAAgB,QAAQ,QAAgB;CACtC,OAAO,cAAc,yBAAyB,GAAG,MAAM;AACzD;AAEA,MAAM,cAA2B,mBAC9B,SAAS,WAAW,4BACnB,SACA,MACF,IACC,SAAS,WAAW,4BACnB,SACA,MACF,CACF;AAEA,SAAgB,sBAAsB,SAA0C;CAC9E,OAAO,4BAA4B,OAAO;AAC5C;AAEA,SAAgB,qBAAqB,SAAyC;CAC5E,OAAO,2BAA2B,OAAO;AAC3C;AAEA,SAAgB,mBAAmB;CACjC,OAAO,uBAAuB;AAChC;AAEA,SAAgB,aAAa,SAA+B;CAC1D,OAAO,mBAAmB,OAAO;AACnC;AAEA,SAAgB,mBAAkC;CAChD,OAAO,uBAAuB;AAChC;AAEA,SAAgB,cAAc,SAAyC;CACrE,OAAO,oBAAoB,OAAO;AACpC;AAEA,SAAgB,gBAAgB,WAAmB,MAAgC;CACjF,sBAAsB,WAAW,IAAI;AACvC;AAEA,MAAM,oBAAqB,aAAa,oCAA4E,CAAC;AACrH,OAAO,OAAO,mBAAmB;CAC/B;CACA;CACA;CACA;CACA;CACA;CACA;CACA,GAAGA;CACH;CACA;CACA;CACA;CACA;CACA;CACA,GAAGC;CACH,GAAGC;CACH,GAAGC;CACH;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,OAAO;AACT,CAAC;AACD,MAAM,iBAAkB,kBAAkB,OAA+C,CAAC;AAC1F,IAAI,OAAO,eAAe,mBAAmB,YAAY,CAAC,eAAe,eAAe,KAAK,GAC3F,eAAe,iBAAiB;AAElC,kBAAkB,MAAM;AACxB,KAAK,MAAM,oBAAoB,0BAC7B,aAAa,oBAAoB;AAEnC,IAAI,OAAO,aAAa,WAAW,YACjC,aAAa,SAAS;AAExB,IAAI,OAAO,aAAa,oBAAoB,YAC1C,aAAa,kBAAkB"}
1
+ {"version":3,"file":"index.mjs","names":["runtimeDataApi","uiMediaApi","deviceAuthSystemApi","eventBusApi"],"sources":["../../../src/runtime/polyfill/index.ts"],"sourcesContent":["import type {\n AdBaseOptions,\n CloudBridge,\n GetExtConfigOptions,\n InterstitialAd,\n LogManager,\n LogManagerOptions,\n MiniProgramAsyncOptions,\n MiniProgramBaseResult,\n RewardedVideoAd,\n SetBackgroundColorOptions,\n SetBackgroundTextStyleOptions,\n UpdateManager,\n} from './types'\nimport { getDefaultMiniProgramRuntimeGlobalKey, getMiniProgramRuntimeGlobalKeys } from '@weapp-core/shared'\nimport { emitRuntimeWarning } from '../warning'\nimport { createAnimation } from './animation'\nimport {\n callMiniProgramAsyncFailure,\n callMiniProgramAsyncSuccess,\n} from './async'\nimport {\n setBackgroundColorBridge,\n setBackgroundTextStyleBridge,\n} from './background'\nimport { createCloudBridge } from './cloud'\nimport * as deviceAuthSystemApi from './deviceAuthSystemApi'\nimport * as eventBusApi from './eventBus'\nimport { WEB_USER_DATA_PATH } from './files'\nimport { loadFontFace } from './font'\nimport { getLocale } from './locale'\nimport { createNavigationBarRuntimeBridge } from './navigationBarRuntime'\nimport {\n createInterstitialAdBridge,\n createRewardedVideoAdBridge,\n getExtConfigBridge,\n getExtConfigSyncBridge,\n getLogManagerBridge,\n getUpdateManagerBridge,\n reportAnalyticsBridge,\n} from './platformApi'\nimport {\n getAppInstance,\n getCurrentPagesInternal,\n getEnterOptionsSync,\n getLaunchOptionsSync,\n navigateBack,\n navigateTo,\n offAppHide,\n offAppShow,\n onAppHide,\n onAppShow,\n redirectTo,\n reLaunch,\n switchTab,\n} from './routeRuntime'\nimport {\n canIUseBridge,\n} from './runtimeCapabilityApi'\nimport * as runtimeDataApi from './runtimeDataApi'\nimport * as uiMediaApi from './uiMediaApi'\n\nexport { createAnimation } from './animation'\nexport * from './deviceAuthSystemApi'\nexport * from './eventBus'\nexport { loadFontFace } from './font'\nexport { getLocale } from './locale'\n\nexport {\n getEnterOptionsSync,\n getLaunchOptionsSync,\n initializePageRoutes,\n navigateBack,\n navigateTo,\n offAppHide,\n offAppShow,\n onAppHide,\n onAppShow,\n redirectTo,\n registerApp,\n registerComponent,\n registerPage,\n reLaunch,\n switchTab,\n} from './routeRuntime'\n\nexport type { AppHideCallback, AppHideOptions, AppLaunchOptions, AppShowCallback } from './routeRuntime/options'\n\nexport * from './runtimeDataApi'\nexport * from './uiMediaApi'\n\nconst MINI_PROGRAM_GLOBAL_KEYS = getMiniProgramRuntimeGlobalKeys()\nconst DEFAULT_MINI_PROGRAM_GLOBAL_KEY = getDefaultMiniProgramRuntimeGlobalKey()\nconst globalTarget = globalThis as Record<string, unknown>\n\nfunction resolveMiniProgramBridge() {\n for (const runtimeGlobalKey of MINI_PROGRAM_GLOBAL_KEYS) {\n const candidate = globalTarget[runtimeGlobalKey]\n if (candidate && typeof candidate === 'object') {\n return candidate as Record<string, unknown>\n }\n }\n return undefined\n}\n\nconst navigationBarRuntimeBridge = createNavigationBarRuntimeBridge(\n () => getCurrentPagesInternal() as Array<HTMLElement & { renderRoot?: ShadowRoot | HTMLElement }>,\n emitRuntimeWarning,\n)\n\nexport function setNavigationBarTitle(options: { title: string }) {\n return navigationBarRuntimeBridge.setNavigationBarTitle(options)\n}\n\nexport function setNavigationBarColor(options: {\n frontColor?: string\n backgroundColor?: string\n animation?: { duration?: number, timingFunction?: string }\n}) {\n return navigationBarRuntimeBridge.setNavigationBarColor(options)\n}\n\nexport function showNavigationBarLoading() {\n return navigationBarRuntimeBridge.showNavigationBarLoading()\n}\n\nexport function hideNavigationBarLoading() {\n return navigationBarRuntimeBridge.hideNavigationBarLoading()\n}\n\nexport function setBackgroundColor(options?: SetBackgroundColorOptions) {\n return setBackgroundColorBridge(options)\n}\n\nexport function setBackgroundTextStyle(options?: SetBackgroundTextStyleOptions) {\n return setBackgroundTextStyleBridge(options)\n}\n\nexport function canIUse(schema: string) {\n return canIUseBridge(resolveMiniProgramBridge(), schema)\n}\n\nconst cloudBridge: CloudBridge = createCloudBridge(\n (options, result) => callMiniProgramAsyncSuccess(\n options as unknown as MiniProgramAsyncOptions<MiniProgramBaseResult> | undefined,\n result as MiniProgramBaseResult,\n ),\n (options, errMsg) => callMiniProgramAsyncFailure(\n options as unknown as MiniProgramAsyncOptions<MiniProgramBaseResult> | undefined,\n errMsg,\n ),\n) as CloudBridge\n\nexport function createRewardedVideoAd(options?: AdBaseOptions): RewardedVideoAd {\n return createRewardedVideoAdBridge(options)\n}\n\nexport function createInterstitialAd(options?: AdBaseOptions): InterstitialAd {\n return createInterstitialAdBridge(options)\n}\n\nexport function getExtConfigSync() {\n return getExtConfigSyncBridge()\n}\n\nexport function getExtConfig(options?: GetExtConfigOptions) {\n return getExtConfigBridge(options)\n}\n\nexport function getUpdateManager(): UpdateManager {\n return getUpdateManagerBridge()\n}\n\nexport function getLogManager(options?: LogManagerOptions): LogManager {\n return getLogManagerBridge(options)\n}\n\nexport function reportAnalytics(eventName: string, data?: Record<string, unknown>) {\n reportAnalyticsBridge(eventName, data)\n}\n\nconst miniProgramBridge = (globalTarget[DEFAULT_MINI_PROGRAM_GLOBAL_KEY] as Record<string, unknown> | undefined) ?? {}\nObject.assign(miniProgramBridge, {\n navigateTo,\n navigateBack,\n redirectTo,\n switchTab,\n reLaunch,\n getLaunchOptionsSync,\n getEnterOptionsSync,\n offAppHide,\n offAppShow,\n onAppHide,\n onAppShow,\n ...runtimeDataApi,\n setNavigationBarTitle,\n setNavigationBarColor,\n setBackgroundColor,\n setBackgroundTextStyle,\n showNavigationBarLoading,\n hideNavigationBarLoading,\n ...uiMediaApi,\n ...deviceAuthSystemApi,\n ...eventBusApi,\n loadFontFace,\n getLocale,\n createAnimation,\n createRewardedVideoAd,\n createInterstitialAd,\n getExtConfigSync,\n getExtConfig,\n getUpdateManager,\n getLogManager,\n reportAnalytics,\n canIUse,\n cloud: cloudBridge,\n})\nconst miniProgramEnv = (miniProgramBridge.env as Record<string, unknown> | undefined) ?? {}\nif (typeof miniProgramEnv.USER_DATA_PATH !== 'string' || !miniProgramEnv.USER_DATA_PATH.trim()) {\n miniProgramEnv.USER_DATA_PATH = WEB_USER_DATA_PATH\n}\nminiProgramBridge.env = miniProgramEnv\nfor (const runtimeGlobalKey of MINI_PROGRAM_GLOBAL_KEYS) {\n globalTarget[runtimeGlobalKey] = miniProgramBridge\n}\nif (typeof globalTarget.getApp !== 'function') {\n globalTarget.getApp = getAppInstance\n}\nif (typeof globalTarget.getCurrentPages !== 'function') {\n globalTarget.getCurrentPages = getCurrentPagesInternal\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AA2FA,MAAM,2BAA2B,gCAAgC;AACjE,MAAM,kCAAkC,sCAAsC;AAC9E,MAAM,eAAe;AAErB,SAAS,2BAA2B;CAClC,KAAK,MAAM,oBAAoB,0BAA0B;EACvD,MAAM,YAAY,aAAa;EAC/B,IAAI,aAAa,OAAO,cAAc,UACpC,OAAO;CAEX;AAEF;AAEA,MAAM,6BAA6B,uCAC3B,wBAAwB,GAC9B,kBACF;AAEA,SAAgB,sBAAsB,SAA4B;CAChE,OAAO,2BAA2B,sBAAsB,OAAO;AACjE;AAEA,SAAgB,sBAAsB,SAInC;CACD,OAAO,2BAA2B,sBAAsB,OAAO;AACjE;AAEA,SAAgB,2BAA2B;CACzC,OAAO,2BAA2B,yBAAyB;AAC7D;AAEA,SAAgB,2BAA2B;CACzC,OAAO,2BAA2B,yBAAyB;AAC7D;AAEA,SAAgB,mBAAmB,SAAqC;CACtE,OAAO,yBAAyB,OAAO;AACzC;AAEA,SAAgB,uBAAuB,SAAyC;CAC9E,OAAO,6BAA6B,OAAO;AAC7C;AAEA,SAAgB,QAAQ,QAAgB;CACtC,OAAO,cAAc,yBAAyB,GAAG,MAAM;AACzD;AAEA,MAAM,cAA2B,mBAC9B,SAAS,WAAW,4BACnB,SACA,MACF,IACC,SAAS,WAAW,4BACnB,SACA,MACF,CACF;AAEA,SAAgB,sBAAsB,SAA0C;CAC9E,OAAO,4BAA4B,OAAO;AAC5C;AAEA,SAAgB,qBAAqB,SAAyC;CAC5E,OAAO,2BAA2B,OAAO;AAC3C;AAEA,SAAgB,mBAAmB;CACjC,OAAO,uBAAuB;AAChC;AAEA,SAAgB,aAAa,SAA+B;CAC1D,OAAO,mBAAmB,OAAO;AACnC;AAEA,SAAgB,mBAAkC;CAChD,OAAO,uBAAuB;AAChC;AAEA,SAAgB,cAAc,SAAyC;CACrE,OAAO,oBAAoB,OAAO;AACpC;AAEA,SAAgB,gBAAgB,WAAmB,MAAgC;CACjF,sBAAsB,WAAW,IAAI;AACvC;AAEA,MAAM,oBAAqB,aAAa,oCAA4E,CAAC;AACrH,OAAO,OAAO,mBAAmB;CAC/B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,GAAGA;CACH;CACA;CACA;CACA;CACA;CACA;CACA,GAAGC;CACH,GAAGC;CACH,GAAGC;CACH;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,OAAO;AACT,CAAC;AACD,MAAM,iBAAkB,kBAAkB,OAA+C,CAAC;AAC1F,IAAI,OAAO,eAAe,mBAAmB,YAAY,CAAC,eAAe,eAAe,KAAK,GAC3F,eAAe,iBAAiB;AAElC,kBAAkB,MAAM;AACxB,KAAK,MAAM,oBAAoB,0BAC7B,aAAa,oBAAoB;AAEnC,IAAI,OAAO,aAAa,WAAW,YACjC,aAAa,SAAS;AAExB,IAAI,OAAO,aAAa,oBAAoB,YAC1C,aAAa,kBAAkB"}
@@ -11,15 +11,47 @@ function isDocumentHidden(target) {
11
11
  var AppLifecycleRuntime = class {
12
12
  resolveCurrentEntry;
13
13
  #appInstance;
14
+ #hideCallbacks = [];
14
15
  #foreground = false;
15
16
  #lastEnterOptions;
16
17
  #launchOptions;
17
18
  #launched = false;
19
+ #showCallbacks = [];
18
20
  #visibilityDocument;
19
21
  #visibilityHandler;
20
22
  constructor(resolveCurrentEntry) {
21
23
  this.resolveCurrentEntry = resolveCurrentEntry;
22
24
  }
25
+ offAppHide(callback) {
26
+ if (!callback) {
27
+ this.#hideCallbacks.length = 0;
28
+ return;
29
+ }
30
+ let retainedCount = 0;
31
+ for (const registeredCallback of this.#hideCallbacks) if (registeredCallback !== callback) {
32
+ this.#hideCallbacks[retainedCount] = registeredCallback;
33
+ retainedCount += 1;
34
+ }
35
+ this.#hideCallbacks.length = retainedCount;
36
+ }
37
+ offAppShow(callback) {
38
+ if (!callback) {
39
+ this.#showCallbacks.length = 0;
40
+ return;
41
+ }
42
+ let retainedCount = 0;
43
+ for (const registeredCallback of this.#showCallbacks) if (registeredCallback !== callback) {
44
+ this.#showCallbacks[retainedCount] = registeredCallback;
45
+ retainedCount += 1;
46
+ }
47
+ this.#showCallbacks.length = retainedCount;
48
+ }
49
+ onAppHide(callback) {
50
+ this.#hideCallbacks.push(callback);
51
+ }
52
+ onAppShow(callback) {
53
+ this.#showCallbacks.push(callback);
54
+ }
23
55
  register(options) {
24
56
  const resolved = options ?? {};
25
57
  if (this.#appInstance) {
@@ -42,13 +74,13 @@ var AppLifecycleRuntime = class {
42
74
  }
43
75
  ensureLaunched(entry) {
44
76
  if (!this.#appInstance || this.#launched) return;
45
- const options = resolveEntryOptions(entry);
46
- this.#launchOptions = cloneLaunchOptions(options);
47
- this.#lastEnterOptions = cloneLaunchOptions(options);
77
+ const payload = resolveEntryOptions(entry);
78
+ this.#launchOptions = cloneLaunchOptions(payload);
79
+ this.#lastEnterOptions = cloneLaunchOptions(payload);
48
80
  this.#foreground = true;
49
81
  this.#launched = true;
50
- this.#appInstance.onLaunch?.(cloneLaunchOptions(options));
51
- this.#appInstance.onShow?.(cloneLaunchOptions(options));
82
+ this.#appInstance.onLaunch?.(payload);
83
+ this.#triggerAppShow(payload, true);
52
84
  }
53
85
  get instance() {
54
86
  return this.#appInstance;
@@ -60,21 +92,35 @@ var AppLifecycleRuntime = class {
60
92
  return this.#lastEnterOptions ? cloneLaunchOptions(this.#lastEnterOptions) : this.getLaunchOptions();
61
93
  }
62
94
  dispose() {
95
+ this.#hideCallbacks.length = 0;
96
+ this.#showCallbacks.length = 0;
63
97
  this.#unbindVisibility();
64
98
  }
65
99
  #syncVisibility(target) {
66
100
  if (!this.#appInstance || !this.#launched) return;
67
101
  if (isDocumentHidden(target)) {
68
102
  if (!this.#foreground) return;
69
- this.#appInstance.onHide?.();
70
103
  this.#foreground = false;
104
+ this.#triggerAppHide();
71
105
  return;
72
106
  }
73
107
  if (this.#foreground) return;
74
108
  const options = resolveEntryOptions(this.resolveCurrentEntry());
75
109
  this.#lastEnterOptions = cloneLaunchOptions(options);
76
- this.#appInstance.onShow?.(cloneLaunchOptions(options));
77
110
  this.#foreground = true;
111
+ this.#triggerAppShow(options, false);
112
+ }
113
+ #triggerAppHide() {
114
+ const options = { reason: 3 };
115
+ const callbacks = [...this.#hideCallbacks];
116
+ for (const callback of callbacks) callback(options);
117
+ this.#appInstance?.onHide?.(options);
118
+ }
119
+ #triggerAppShow(options, isInitialShow) {
120
+ const callbacks = [...this.#showCallbacks];
121
+ if (isInitialShow) this.#appInstance?.onShow?.(options);
122
+ for (const callback of callbacks) callback(options);
123
+ if (!isInitialShow) this.#appInstance?.onShow?.(options);
78
124
  }
79
125
  #unbindVisibility() {
80
126
  if (this.#visibilityDocument && this.#visibilityHandler) this.#visibilityDocument.removeEventListener("visibilitychange", this.#visibilityHandler);
@@ -1 +1 @@
1
- {"version":3,"file":"appLifecycle.mjs","names":[],"sources":["../../../../src/runtime/polyfill/routeRuntime/appLifecycle.ts"],"sourcesContent":["import type { AppLaunchOptions, AppRuntime, PageStackEntry } from './options'\nimport { cloneLaunchOptions, resolveFallbackLaunchOptions } from '../appState'\nimport { isRecord } from './options'\n\ntype VisibilityDocument = Pick<Document, 'addEventListener' | 'hidden' | 'removeEventListener' | 'visibilityState'>\n\nfunction resolveEntryOptions(entry: Pick<PageStackEntry, 'id' | 'query'> | undefined): AppLaunchOptions {\n return resolveFallbackLaunchOptions(entry ? [entry] : [])\n}\n\nfunction isDocumentHidden(target: VisibilityDocument) {\n return target.visibilityState === 'hidden' || target.hidden === true\n}\n\nexport class AppLifecycleRuntime {\n #appInstance: AppRuntime | undefined\n #foreground = false\n #lastEnterOptions: AppLaunchOptions | undefined\n #launchOptions: AppLaunchOptions | undefined\n #launched = false\n #visibilityDocument: VisibilityDocument | undefined\n #visibilityHandler: (() => void) | undefined\n\n constructor(private readonly resolveCurrentEntry: () => PageStackEntry | undefined) {}\n\n register<T extends AppRuntime | undefined>(options: T): T {\n const resolved = (options ?? {}) as AppRuntime\n if (this.#appInstance) {\n const currentGlobal = this.#appInstance.globalData\n Object.assign(this.#appInstance, resolved)\n if (isRecord(currentGlobal)) {\n this.#appInstance.globalData = currentGlobal\n }\n else if (!isRecord(this.#appInstance.globalData)) {\n this.#appInstance.globalData = {}\n }\n return options\n }\n this.#appInstance = resolved\n if (!isRecord(this.#appInstance.globalData)) {\n this.#appInstance.globalData = {}\n }\n return options\n }\n\n bindVisibility(target: VisibilityDocument | undefined = typeof document === 'undefined' ? undefined : document) {\n if (!target || this.#visibilityDocument === target || typeof target.addEventListener !== 'function') {\n return\n }\n this.#unbindVisibility()\n this.#visibilityDocument = target\n this.#visibilityHandler = () => this.#syncVisibility(target)\n target.addEventListener('visibilitychange', this.#visibilityHandler)\n }\n\n ensureLaunched(entry: PageStackEntry) {\n if (!this.#appInstance || this.#launched) {\n return\n }\n const options = resolveEntryOptions(entry)\n this.#launchOptions = cloneLaunchOptions(options)\n this.#lastEnterOptions = cloneLaunchOptions(options)\n this.#foreground = true\n this.#launched = true\n this.#appInstance.onLaunch?.(cloneLaunchOptions(options))\n this.#appInstance.onShow?.(cloneLaunchOptions(options))\n }\n\n get instance() {\n return this.#appInstance\n }\n\n getLaunchOptions() {\n return this.#launchOptions\n ? cloneLaunchOptions(this.#launchOptions)\n : resolveEntryOptions(this.resolveCurrentEntry())\n }\n\n getEnterOptions() {\n return this.#lastEnterOptions\n ? cloneLaunchOptions(this.#lastEnterOptions)\n : this.getLaunchOptions()\n }\n\n dispose() {\n this.#unbindVisibility()\n }\n\n #syncVisibility(target: VisibilityDocument) {\n if (!this.#appInstance || !this.#launched) {\n return\n }\n if (isDocumentHidden(target)) {\n if (!this.#foreground) {\n return\n }\n this.#appInstance.onHide?.()\n this.#foreground = false\n return\n }\n if (this.#foreground) {\n return\n }\n const options = resolveEntryOptions(this.resolveCurrentEntry())\n this.#lastEnterOptions = cloneLaunchOptions(options)\n this.#appInstance.onShow?.(cloneLaunchOptions(options))\n this.#foreground = true\n }\n\n #unbindVisibility() {\n if (this.#visibilityDocument && this.#visibilityHandler) {\n this.#visibilityDocument.removeEventListener('visibilitychange', this.#visibilityHandler)\n }\n this.#visibilityDocument = undefined\n this.#visibilityHandler = undefined\n }\n}\n"],"mappings":";;;;AAMA,SAAS,oBAAoB,OAA2E;CACtG,OAAO,6BAA6B,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAC;AAC1D;AAEA,SAAS,iBAAiB,QAA4B;CACpD,OAAO,OAAO,oBAAoB,YAAY,OAAO,WAAW;AAClE;AAEA,IAAa,sBAAb,MAAiC;CASF;CAR7B;CACA,cAAc;CACd;CACA;CACA,YAAY;CACZ;CACA;CAEA,YAAY,AAAiB,qBAAuD;EAAvD;CAAwD;CAErF,SAA2C,SAAe;EACxD,MAAM,WAAY,WAAW,CAAC;EAC9B,IAAI,KAAK,cAAc;GACrB,MAAM,gBAAgB,KAAK,aAAa;GACxC,OAAO,OAAO,KAAK,cAAc,QAAQ;GACzC,IAAI,SAAS,aAAa,GACxB,KAAK,aAAa,aAAa;QAE5B,IAAI,CAAC,SAAS,KAAK,aAAa,UAAU,GAC7C,KAAK,aAAa,aAAa,CAAC;GAElC,OAAO;EACT;EACA,KAAK,eAAe;EACpB,IAAI,CAAC,SAAS,KAAK,aAAa,UAAU,GACxC,KAAK,aAAa,aAAa,CAAC;EAElC,OAAO;CACT;CAEA,eAAe,SAAyC,OAAO,aAAa,cAAc,SAAY,UAAU;EAC9G,IAAI,CAAC,UAAU,KAAK,wBAAwB,UAAU,OAAO,OAAO,qBAAqB,YACvF;EAEF,KAAK,kBAAkB;EACvB,KAAK,sBAAsB;EAC3B,KAAK,2BAA2B,KAAK,gBAAgB,MAAM;EAC3D,OAAO,iBAAiB,oBAAoB,KAAK,kBAAkB;CACrE;CAEA,eAAe,OAAuB;EACpC,IAAI,CAAC,KAAK,gBAAgB,KAAK,WAC7B;EAEF,MAAM,UAAU,oBAAoB,KAAK;EACzC,KAAK,iBAAiB,mBAAmB,OAAO;EAChD,KAAK,oBAAoB,mBAAmB,OAAO;EACnD,KAAK,cAAc;EACnB,KAAK,YAAY;EACjB,KAAK,aAAa,WAAW,mBAAmB,OAAO,CAAC;EACxD,KAAK,aAAa,SAAS,mBAAmB,OAAO,CAAC;CACxD;CAEA,IAAI,WAAW;EACb,OAAO,KAAK;CACd;CAEA,mBAAmB;EACjB,OAAO,KAAK,iBACR,mBAAmB,KAAK,cAAc,IACtC,oBAAoB,KAAK,oBAAoB,CAAC;CACpD;CAEA,kBAAkB;EAChB,OAAO,KAAK,oBACR,mBAAmB,KAAK,iBAAiB,IACzC,KAAK,iBAAiB;CAC5B;CAEA,UAAU;EACR,KAAK,kBAAkB;CACzB;CAEA,gBAAgB,QAA4B;EAC1C,IAAI,CAAC,KAAK,gBAAgB,CAAC,KAAK,WAC9B;EAEF,IAAI,iBAAiB,MAAM,GAAG;GAC5B,IAAI,CAAC,KAAK,aACR;GAEF,KAAK,aAAa,SAAS;GAC3B,KAAK,cAAc;GACnB;EACF;EACA,IAAI,KAAK,aACP;EAEF,MAAM,UAAU,oBAAoB,KAAK,oBAAoB,CAAC;EAC9D,KAAK,oBAAoB,mBAAmB,OAAO;EACnD,KAAK,aAAa,SAAS,mBAAmB,OAAO,CAAC;EACtD,KAAK,cAAc;CACrB;CAEA,oBAAoB;EAClB,IAAI,KAAK,uBAAuB,KAAK,oBACnC,KAAK,oBAAoB,oBAAoB,oBAAoB,KAAK,kBAAkB;EAE1F,KAAK,sBAAsB;EAC3B,KAAK,qBAAqB;CAC5B;AACF"}
1
+ {"version":3,"file":"appLifecycle.mjs","names":[],"sources":["../../../../src/runtime/polyfill/routeRuntime/appLifecycle.ts"],"sourcesContent":["import type { AppHideCallback, AppHideOptions, AppLaunchOptions, AppRuntime, AppShowCallback, PageStackEntry } from './options'\nimport { cloneLaunchOptions, resolveFallbackLaunchOptions } from '../appState'\nimport { isRecord } from './options'\n\ntype VisibilityDocument = Pick<Document, 'addEventListener' | 'hidden' | 'removeEventListener' | 'visibilityState'>\n\nfunction resolveEntryOptions(entry: Pick<PageStackEntry, 'id' | 'query'> | undefined): AppLaunchOptions {\n return resolveFallbackLaunchOptions(entry ? [entry] : [])\n}\n\nfunction isDocumentHidden(target: VisibilityDocument) {\n return target.visibilityState === 'hidden' || target.hidden === true\n}\n\nexport class AppLifecycleRuntime {\n #appInstance: AppRuntime | undefined\n readonly #hideCallbacks: AppHideCallback[] = []\n #foreground = false\n #lastEnterOptions: AppLaunchOptions | undefined\n #launchOptions: AppLaunchOptions | undefined\n #launched = false\n readonly #showCallbacks: AppShowCallback[] = []\n #visibilityDocument: VisibilityDocument | undefined\n #visibilityHandler: (() => void) | undefined\n\n constructor(private readonly resolveCurrentEntry: () => PageStackEntry | undefined) {}\n\n offAppHide(callback?: AppHideCallback) {\n if (!callback) {\n this.#hideCallbacks.length = 0\n return\n }\n\n let retainedCount = 0\n for (const registeredCallback of this.#hideCallbacks) {\n if (registeredCallback !== callback) {\n this.#hideCallbacks[retainedCount] = registeredCallback\n retainedCount += 1\n }\n }\n this.#hideCallbacks.length = retainedCount\n }\n\n offAppShow(callback?: AppShowCallback) {\n if (!callback) {\n this.#showCallbacks.length = 0\n return\n }\n\n let retainedCount = 0\n for (const registeredCallback of this.#showCallbacks) {\n if (registeredCallback !== callback) {\n this.#showCallbacks[retainedCount] = registeredCallback\n retainedCount += 1\n }\n }\n this.#showCallbacks.length = retainedCount\n }\n\n onAppHide(callback: AppHideCallback) {\n this.#hideCallbacks.push(callback)\n }\n\n onAppShow(callback: AppShowCallback) {\n this.#showCallbacks.push(callback)\n }\n\n register<T extends AppRuntime | undefined>(options: T): T {\n const resolved = (options ?? {}) as AppRuntime\n if (this.#appInstance) {\n const currentGlobal = this.#appInstance.globalData\n Object.assign(this.#appInstance, resolved)\n if (isRecord(currentGlobal)) {\n this.#appInstance.globalData = currentGlobal\n }\n else if (!isRecord(this.#appInstance.globalData)) {\n this.#appInstance.globalData = {}\n }\n return options\n }\n this.#appInstance = resolved\n if (!isRecord(this.#appInstance.globalData)) {\n this.#appInstance.globalData = {}\n }\n return options\n }\n\n bindVisibility(target: VisibilityDocument | undefined = typeof document === 'undefined' ? undefined : document) {\n if (!target || this.#visibilityDocument === target || typeof target.addEventListener !== 'function') {\n return\n }\n this.#unbindVisibility()\n this.#visibilityDocument = target\n this.#visibilityHandler = () => this.#syncVisibility(target)\n target.addEventListener('visibilitychange', this.#visibilityHandler)\n }\n\n ensureLaunched(entry: PageStackEntry) {\n if (!this.#appInstance || this.#launched) {\n return\n }\n const payload = resolveEntryOptions(entry)\n this.#launchOptions = cloneLaunchOptions(payload)\n this.#lastEnterOptions = cloneLaunchOptions(payload)\n this.#foreground = true\n this.#launched = true\n this.#appInstance.onLaunch?.(payload)\n this.#triggerAppShow(payload, true)\n }\n\n get instance() {\n return this.#appInstance\n }\n\n getLaunchOptions() {\n return this.#launchOptions\n ? cloneLaunchOptions(this.#launchOptions)\n : resolveEntryOptions(this.resolveCurrentEntry())\n }\n\n getEnterOptions() {\n return this.#lastEnterOptions\n ? cloneLaunchOptions(this.#lastEnterOptions)\n : this.getLaunchOptions()\n }\n\n dispose() {\n this.#hideCallbacks.length = 0\n this.#showCallbacks.length = 0\n this.#unbindVisibility()\n }\n\n #syncVisibility(target: VisibilityDocument) {\n if (!this.#appInstance || !this.#launched) {\n return\n }\n if (isDocumentHidden(target)) {\n if (!this.#foreground) {\n return\n }\n this.#foreground = false\n this.#triggerAppHide()\n return\n }\n if (this.#foreground) {\n return\n }\n const options = resolveEntryOptions(this.resolveCurrentEntry())\n this.#lastEnterOptions = cloneLaunchOptions(options)\n this.#foreground = true\n this.#triggerAppShow(options, false)\n }\n\n #triggerAppHide() {\n // 浏览器可见性事件无法区分微信退出方式,统一映射为“其他”。\n const options: AppHideOptions = { reason: 3 }\n const callbacks = [...this.#hideCallbacks]\n for (const callback of callbacks) {\n callback(options)\n }\n this.#appInstance?.onHide?.(options)\n }\n\n #triggerAppShow(options: AppLaunchOptions, isInitialShow: boolean) {\n const callbacks = [...this.#showCallbacks]\n if (isInitialShow) {\n this.#appInstance?.onShow?.(options)\n }\n for (const callback of callbacks) {\n callback(options)\n }\n if (!isInitialShow) {\n this.#appInstance?.onShow?.(options)\n }\n }\n\n #unbindVisibility() {\n if (this.#visibilityDocument && this.#visibilityHandler) {\n this.#visibilityDocument.removeEventListener('visibilitychange', this.#visibilityHandler)\n }\n this.#visibilityDocument = undefined\n this.#visibilityHandler = undefined\n }\n}\n"],"mappings":"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"}
@@ -20,7 +20,7 @@ export interface PageHooks {
20
20
  interface AppLifecycleHooks {
21
21
  onLaunch?: (this: AppRuntime, options: AppLaunchOptions) => void;
22
22
  onShow?: (this: AppRuntime, options: AppLaunchOptions) => void;
23
- onHide?: (this: AppRuntime) => void;
23
+ onHide?: (this: AppRuntime, options: AppHideOptions) => void;
24
24
  }
25
25
  export type AppRuntime = Record<string, unknown> & Partial<AppLifecycleHooks> & {
26
26
  globalData?: Record<string, unknown>;
@@ -31,6 +31,11 @@ export interface AppLaunchOptions {
31
31
  query: Record<string, string>;
32
32
  referrerInfo: Record<string, unknown>;
33
33
  }
34
+ export interface AppHideOptions {
35
+ reason: 0 | 1 | 2 | 3;
36
+ }
37
+ export type AppHideCallback = (options: AppHideOptions) => void;
38
+ export type AppShowCallback = (options: AppLaunchOptions) => void;
34
39
  export interface RouteOptions extends MiniProgramAsyncOptions<MiniProgramBaseResult> {
35
40
  url: string;
36
41
  }
@@ -1 +1 @@
1
- {"version":3,"file":"options.mjs","names":[],"sources":["../../../../src/runtime/polyfill/routeRuntime/options.ts"],"sourcesContent":["import type { NavigationBarConfig } from '../../../compiler/wxml'\nimport type { ComponentOptions, ComponentPublicInstance } from '../../component'\nimport type { TemplateRenderer } from '../../template'\nimport type { MiniProgramAsyncOptions, MiniProgramBaseResult } from '../types'\n\nexport interface RegisterMeta {\n id: string\n template?: TemplateRenderer\n style?: string\n navigationBar?: NavigationBarConfig\n}\n\nexport interface PageHooks {\n onLoad?: (this: ComponentPublicInstance, query: Record<string, string>) => void\n onReady?: (this: ComponentPublicInstance) => void\n onShow?: (this: ComponentPublicInstance) => void\n onHide?: (this: ComponentPublicInstance) => void\n onUnload?: (this: ComponentPublicInstance) => void\n}\n\nexport interface PageRecord {\n tag: string\n hooks: PageHooks\n instances: Set<ComponentPublicInstance>\n navigationBar?: NavigationBarConfig\n}\n\nexport interface ComponentRecord {\n tag: string\n}\n\nexport interface PageStackEntry {\n id: string\n query: Record<string, string>\n active: boolean\n element?: HTMLElement & ComponentPublicInstance\n instance?: ComponentPublicInstance\n scrollTop?: number\n}\n\nexport interface RouteMeta {\n id: string\n query: Record<string, string>\n entry: PageStackEntry\n}\n\ninterface AppLifecycleHooks {\n onLaunch?: (this: AppRuntime, options: AppLaunchOptions) => void\n onShow?: (this: AppRuntime, options: AppLaunchOptions) => void\n onHide?: (this: AppRuntime) => void\n}\n\nexport type AppRuntime = Record<string, unknown> & Partial<AppLifecycleHooks> & {\n globalData?: Record<string, unknown>\n}\n\nexport interface AppLaunchOptions {\n path: string\n scene: number\n query: Record<string, string>\n referrerInfo: Record<string, unknown>\n}\n\nexport interface RouteOptions extends MiniProgramAsyncOptions<MiniProgramBaseResult> {\n url: string\n}\n\nexport interface NavigateBackOptions extends MiniProgramAsyncOptions<MiniProgramBaseResult> {\n delta?: number\n}\n\ntype MethodHandler = (this: ComponentPublicInstance, ...args: unknown[]) => unknown\n\nexport type PageRawOptions = ComponentOptions & PageHooks & Record<string, unknown>\nexport type ComponentRawOptions = ComponentOptions & Record<string, unknown>\n\nconst PAGE_LIFECYCLE_KEYS = new Set(['onLoad', 'onReady', 'onShow', 'onHide', 'onUnload'])\nconst RESERVED_PAGE_METHOD_KEYS = new Set([\n 'data',\n 'methods',\n 'lifetimes',\n 'properties',\n 'behaviors',\n 'options',\n 'observers',\n 'mixins',\n ...PAGE_LIFECYCLE_KEYS,\n])\nconst RESERVED_COMPONENT_METHOD_KEYS = new Set([\n 'data',\n 'methods',\n 'lifetimes',\n 'pageLifetimes',\n 'properties',\n 'behaviors',\n 'options',\n 'observers',\n 'mixins',\n])\n\nfunction cloneLifetimes(source: NonNullable<ComponentOptions['lifetimes']>): ComponentOptions['lifetimes'] {\n return {\n ...source,\n }\n}\n\nexport function isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null\n}\n\nfunction isMethodHandler(value: unknown): value is MethodHandler {\n return typeof value === 'function'\n}\n\nfunction normalizeMethodBag(\n source: Record<string, unknown> | undefined,\n reserved: Set<string>,\n) {\n const methods: Record<string, MethodHandler> = {}\n const sourceMethods = isRecord(source?.methods) ? source?.methods : undefined\n\n if (sourceMethods) {\n for (const [key, value] of Object.entries(sourceMethods)) {\n if (isMethodHandler(value)) {\n methods[key] = value\n }\n }\n }\n\n if (source) {\n for (const [key, value] of Object.entries(source)) {\n if (reserved.has(key)) {\n continue\n }\n if (isMethodHandler(value) && methods[key] === undefined) {\n methods[key] = value\n }\n }\n }\n return methods\n}\n\nexport function normalizePageOptions(raw: PageRawOptions | undefined): { component: ComponentOptions, hooks: PageHooks } {\n const component = { ...(raw ?? {}) } as ComponentOptions\n component.methods = normalizeMethodBag(raw as Record<string, unknown> | undefined, RESERVED_PAGE_METHOD_KEYS) as ComponentOptions['methods']\n if (raw?.lifetimes) {\n component.lifetimes = cloneLifetimes(raw.lifetimes)\n }\n const hooks: PageHooks = {}\n if (typeof raw?.onLoad === 'function') {\n hooks.onLoad = raw.onLoad as PageHooks['onLoad']\n }\n if (typeof raw?.onReady === 'function') {\n hooks.onReady = raw.onReady as PageHooks['onReady']\n }\n if (typeof raw?.onShow === 'function') {\n hooks.onShow = raw.onShow as PageHooks['onShow']\n }\n if (typeof raw?.onHide === 'function') {\n hooks.onHide = raw.onHide as PageHooks['onHide']\n }\n if (typeof raw?.onUnload === 'function') {\n hooks.onUnload = raw.onUnload as PageHooks['onUnload']\n }\n return { component, hooks }\n}\n\nexport function normalizeComponentOptions(raw: ComponentRawOptions | undefined): ComponentOptions {\n const component = { ...(raw ?? {}) } as ComponentOptions\n component.methods = normalizeMethodBag(raw as Record<string, unknown> | undefined, RESERVED_COMPONENT_METHOD_KEYS) as ComponentOptions['methods']\n if (raw?.lifetimes) {\n component.lifetimes = cloneLifetimes(raw.lifetimes)\n }\n return component\n}\n"],"mappings":";AA6EA,MAAM,4CAA4B,IAAI,IAAI;CACxC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,mBAAG,IAV2B,IAAI;EAAC;EAAU;EAAW;EAAU;EAAU;CAAU,CAUjE;AACvB,CAAC;AACD,MAAM,iDAAiC,IAAI,IAAI;CAC7C;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;AAED,SAAS,eAAe,QAAmF;CACzG,OAAO,EACL,GAAG,OACL;AACF;AAEA,SAAgB,SAAS,OAAkD;CACzE,OAAO,OAAO,UAAU,YAAY,UAAU;AAChD;AAEA,SAAS,gBAAgB,OAAwC;CAC/D,OAAO,OAAO,UAAU;AAC1B;AAEA,SAAS,mBACP,QACA,UACA;CACA,MAAM,UAAyC,CAAC;CAChD,MAAM,gBAAgB,SAAS,QAAQ,OAAO,IAAI,QAAQ,UAAU;CAEpE,IAAI,eACF;OAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,aAAa,GACrD,IAAI,gBAAgB,KAAK,GACvB,QAAQ,OAAO;CAEnB;CAGF,IAAI,QACF,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,MAAM,GAAG;EACjD,IAAI,SAAS,IAAI,GAAG,GAClB;EAEF,IAAI,gBAAgB,KAAK,KAAK,QAAQ,SAAS,QAC7C,QAAQ,OAAO;CAEnB;CAEF,OAAO;AACT;AAEA,SAAgB,qBAAqB,KAAoF;CACvH,MAAM,YAAY,EAAE,GAAI,OAAO,CAAC,EAAG;CACnC,UAAU,UAAU,mBAAmB,KAA4C,yBAAyB;CAC5G,IAAI,KAAK,WACP,UAAU,YAAY,eAAe,IAAI,SAAS;CAEpD,MAAM,QAAmB,CAAC;CAC1B,IAAI,OAAO,KAAK,WAAW,YACzB,MAAM,SAAS,IAAI;CAErB,IAAI,OAAO,KAAK,YAAY,YAC1B,MAAM,UAAU,IAAI;CAEtB,IAAI,OAAO,KAAK,WAAW,YACzB,MAAM,SAAS,IAAI;CAErB,IAAI,OAAO,KAAK,WAAW,YACzB,MAAM,SAAS,IAAI;CAErB,IAAI,OAAO,KAAK,aAAa,YAC3B,MAAM,WAAW,IAAI;CAEvB,OAAO;EAAE;EAAW;CAAM;AAC5B;AAEA,SAAgB,0BAA0B,KAAwD;CAChG,MAAM,YAAY,EAAE,GAAI,OAAO,CAAC,EAAG;CACnC,UAAU,UAAU,mBAAmB,KAA4C,8BAA8B;CACjH,IAAI,KAAK,WACP,UAAU,YAAY,eAAe,IAAI,SAAS;CAEpD,OAAO;AACT"}
1
+ {"version":3,"file":"options.mjs","names":[],"sources":["../../../../src/runtime/polyfill/routeRuntime/options.ts"],"sourcesContent":["import type { NavigationBarConfig } from '../../../compiler/wxml'\nimport type { ComponentOptions, ComponentPublicInstance } from '../../component'\nimport type { TemplateRenderer } from '../../template'\nimport type { MiniProgramAsyncOptions, MiniProgramBaseResult } from '../types'\n\nexport interface RegisterMeta {\n id: string\n template?: TemplateRenderer\n style?: string\n navigationBar?: NavigationBarConfig\n}\n\nexport interface PageHooks {\n onLoad?: (this: ComponentPublicInstance, query: Record<string, string>) => void\n onReady?: (this: ComponentPublicInstance) => void\n onShow?: (this: ComponentPublicInstance) => void\n onHide?: (this: ComponentPublicInstance) => void\n onUnload?: (this: ComponentPublicInstance) => void\n}\n\nexport interface PageRecord {\n tag: string\n hooks: PageHooks\n instances: Set<ComponentPublicInstance>\n navigationBar?: NavigationBarConfig\n}\n\nexport interface ComponentRecord {\n tag: string\n}\n\nexport interface PageStackEntry {\n id: string\n query: Record<string, string>\n active: boolean\n element?: HTMLElement & ComponentPublicInstance\n instance?: ComponentPublicInstance\n scrollTop?: number\n}\n\nexport interface RouteMeta {\n id: string\n query: Record<string, string>\n entry: PageStackEntry\n}\n\ninterface AppLifecycleHooks {\n onLaunch?: (this: AppRuntime, options: AppLaunchOptions) => void\n onShow?: (this: AppRuntime, options: AppLaunchOptions) => void\n onHide?: (this: AppRuntime, options: AppHideOptions) => void\n}\n\nexport type AppRuntime = Record<string, unknown> & Partial<AppLifecycleHooks> & {\n globalData?: Record<string, unknown>\n}\n\nexport interface AppLaunchOptions {\n path: string\n scene: number\n query: Record<string, string>\n referrerInfo: Record<string, unknown>\n}\n\nexport interface AppHideOptions {\n reason: 0 | 1 | 2 | 3\n}\n\nexport type AppHideCallback = (options: AppHideOptions) => void\nexport type AppShowCallback = (options: AppLaunchOptions) => void\n\nexport interface RouteOptions extends MiniProgramAsyncOptions<MiniProgramBaseResult> {\n url: string\n}\n\nexport interface NavigateBackOptions extends MiniProgramAsyncOptions<MiniProgramBaseResult> {\n delta?: number\n}\n\ntype MethodHandler = (this: ComponentPublicInstance, ...args: unknown[]) => unknown\n\nexport type PageRawOptions = ComponentOptions & PageHooks & Record<string, unknown>\nexport type ComponentRawOptions = ComponentOptions & Record<string, unknown>\n\nconst PAGE_LIFECYCLE_KEYS = new Set(['onLoad', 'onReady', 'onShow', 'onHide', 'onUnload'])\nconst RESERVED_PAGE_METHOD_KEYS = new Set([\n 'data',\n 'methods',\n 'lifetimes',\n 'properties',\n 'behaviors',\n 'options',\n 'observers',\n 'mixins',\n ...PAGE_LIFECYCLE_KEYS,\n])\nconst RESERVED_COMPONENT_METHOD_KEYS = new Set([\n 'data',\n 'methods',\n 'lifetimes',\n 'pageLifetimes',\n 'properties',\n 'behaviors',\n 'options',\n 'observers',\n 'mixins',\n])\n\nfunction cloneLifetimes(source: NonNullable<ComponentOptions['lifetimes']>): ComponentOptions['lifetimes'] {\n return {\n ...source,\n }\n}\n\nexport function isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null\n}\n\nfunction isMethodHandler(value: unknown): value is MethodHandler {\n return typeof value === 'function'\n}\n\nfunction normalizeMethodBag(\n source: Record<string, unknown> | undefined,\n reserved: Set<string>,\n) {\n const methods: Record<string, MethodHandler> = {}\n const sourceMethods = isRecord(source?.methods) ? source?.methods : undefined\n\n if (sourceMethods) {\n for (const [key, value] of Object.entries(sourceMethods)) {\n if (isMethodHandler(value)) {\n methods[key] = value\n }\n }\n }\n\n if (source) {\n for (const [key, value] of Object.entries(source)) {\n if (reserved.has(key)) {\n continue\n }\n if (isMethodHandler(value) && methods[key] === undefined) {\n methods[key] = value\n }\n }\n }\n return methods\n}\n\nexport function normalizePageOptions(raw: PageRawOptions | undefined): { component: ComponentOptions, hooks: PageHooks } {\n const component = { ...(raw ?? {}) } as ComponentOptions\n component.methods = normalizeMethodBag(raw as Record<string, unknown> | undefined, RESERVED_PAGE_METHOD_KEYS) as ComponentOptions['methods']\n if (raw?.lifetimes) {\n component.lifetimes = cloneLifetimes(raw.lifetimes)\n }\n const hooks: PageHooks = {}\n if (typeof raw?.onLoad === 'function') {\n hooks.onLoad = raw.onLoad as PageHooks['onLoad']\n }\n if (typeof raw?.onReady === 'function') {\n hooks.onReady = raw.onReady as PageHooks['onReady']\n }\n if (typeof raw?.onShow === 'function') {\n hooks.onShow = raw.onShow as PageHooks['onShow']\n }\n if (typeof raw?.onHide === 'function') {\n hooks.onHide = raw.onHide as PageHooks['onHide']\n }\n if (typeof raw?.onUnload === 'function') {\n hooks.onUnload = raw.onUnload as PageHooks['onUnload']\n }\n return { component, hooks }\n}\n\nexport function normalizeComponentOptions(raw: ComponentRawOptions | undefined): ComponentOptions {\n const component = { ...(raw ?? {}) } as ComponentOptions\n component.methods = normalizeMethodBag(raw as Record<string, unknown> | undefined, RESERVED_COMPONENT_METHOD_KEYS) as ComponentOptions['methods']\n if (raw?.lifetimes) {\n component.lifetimes = cloneLifetimes(raw.lifetimes)\n }\n return component\n}\n"],"mappings":";AAoFA,MAAM,4CAA4B,IAAI,IAAI;CACxC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,mBAAG,IAV2B,IAAI;EAAC;EAAU;EAAW;EAAU;EAAU;CAAU,CAUjE;AACvB,CAAC;AACD,MAAM,iDAAiC,IAAI,IAAI;CAC7C;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;AAED,SAAS,eAAe,QAAmF;CACzG,OAAO,EACL,GAAG,OACL;AACF;AAEA,SAAgB,SAAS,OAAkD;CACzE,OAAO,OAAO,UAAU,YAAY,UAAU;AAChD;AAEA,SAAS,gBAAgB,OAAwC;CAC/D,OAAO,OAAO,UAAU;AAC1B;AAEA,SAAS,mBACP,QACA,UACA;CACA,MAAM,UAAyC,CAAC;CAChD,MAAM,gBAAgB,SAAS,QAAQ,OAAO,IAAI,QAAQ,UAAU;CAEpE,IAAI,eACF;OAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,aAAa,GACrD,IAAI,gBAAgB,KAAK,GACvB,QAAQ,OAAO;CAEnB;CAGF,IAAI,QACF,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,MAAM,GAAG;EACjD,IAAI,SAAS,IAAI,GAAG,GAClB;EAEF,IAAI,gBAAgB,KAAK,KAAK,QAAQ,SAAS,QAC7C,QAAQ,OAAO;CAEnB;CAEF,OAAO;AACT;AAEA,SAAgB,qBAAqB,KAAoF;CACvH,MAAM,YAAY,EAAE,GAAI,OAAO,CAAC,EAAG;CACnC,UAAU,UAAU,mBAAmB,KAA4C,yBAAyB;CAC5G,IAAI,KAAK,WACP,UAAU,YAAY,eAAe,IAAI,SAAS;CAEpD,MAAM,QAAmB,CAAC;CAC1B,IAAI,OAAO,KAAK,WAAW,YACzB,MAAM,SAAS,IAAI;CAErB,IAAI,OAAO,KAAK,YAAY,YAC1B,MAAM,UAAU,IAAI;CAEtB,IAAI,OAAO,KAAK,WAAW,YACzB,MAAM,SAAS,IAAI;CAErB,IAAI,OAAO,KAAK,WAAW,YACzB,MAAM,SAAS,IAAI;CAErB,IAAI,OAAO,KAAK,aAAa,YAC3B,MAAM,WAAW,IAAI;CAEvB,OAAO;EAAE;EAAW;CAAM;AAC5B;AAEA,SAAgB,0BAA0B,KAAwD;CAChG,MAAM,YAAY,EAAE,GAAI,OAAO,CAAC,EAAG;CACnC,UAAU,UAAU,mBAAmB,KAA4C,8BAA8B;CACjH,IAAI,KAAK,WACP,UAAU,YAAY,eAAe,IAAI,SAAS;CAEpD,OAAO;AACT"}
@@ -1,11 +1,12 @@
1
1
  import "../component/index.mjs";
2
- import { AppLaunchOptions, AppRuntime, ComponentRawOptions, NavigateBackOptions, PageRawOptions, RegisterMeta, RouteOptions } from "./routeRuntime/options.mjs";
2
+ import { AppHideCallback, AppLaunchOptions, AppRuntime, AppShowCallback, ComponentRawOptions, NavigateBackOptions, PageRawOptions, RegisterMeta, RouteOptions } from "./routeRuntime/options.mjs";
3
3
  import { WebRoutingConfig } from "./routeRuntime/history.mjs";
4
4
  import { WebResourceHintsConfig, WebRuntimeSeoConfig as WebSeoConfig } from "../seo/index.mjs";
5
5
  import { WebTabBarConfig } from "../../shared/tabBar.mjs";
6
6
  import { ButtonFormConfig } from "../button/index.mjs";
7
7
  import { NavigationBarMetrics } from "../navigationBar/index.mjs";
8
8
  import { WebViewportConfig } from "../viewport/types.mjs";
9
+ import "./index.mjs";
9
10
  //#region src/runtime/polyfill/routeRuntime.d.ts
10
11
  export declare function initializePageRoutes(ids: string[], options?: {
11
12
  rpx?: {
@@ -30,6 +31,10 @@ export declare function initializePageRoutes(ids: string[], options?: {
30
31
  export declare function registerPage<T extends PageRawOptions | undefined>(options: T, meta: RegisterMeta): T;
31
32
  export declare function registerComponent<T extends ComponentRawOptions | undefined>(options: T, meta: RegisterMeta): T;
32
33
  export declare function registerApp<T extends AppRuntime | undefined>(options: T, _meta?: RegisterMeta): T;
34
+ export declare function offAppHide(callback?: AppHideCallback): void;
35
+ export declare function offAppShow(callback?: AppShowCallback): void;
36
+ export declare function onAppHide(callback: AppHideCallback): void;
37
+ export declare function onAppShow(callback: AppShowCallback): void;
33
38
  export declare function navigateTo(options: RouteOptions): Promise<{
34
39
  errMsg: string;
35
40
  }>;
@@ -171,6 +171,18 @@ function registerComponent(options, meta) {
171
171
  function registerApp(options, _meta) {
172
172
  return appLifecycle.register(options);
173
173
  }
174
+ function offAppHide(callback) {
175
+ appLifecycle.offAppHide(callback);
176
+ }
177
+ function offAppShow(callback) {
178
+ appLifecycle.offAppShow(callback);
179
+ }
180
+ function onAppHide(callback) {
181
+ appLifecycle.onAppHide(callback);
182
+ }
183
+ function onAppShow(callback) {
184
+ appLifecycle.onAppShow(callback);
185
+ }
174
186
  function navigateTo(options) {
175
187
  const { id, query } = parsePageUrl(options?.url ?? "");
176
188
  const succeeded = pageStack.push(id, query);
@@ -223,5 +235,5 @@ function getEnterOptionsSync() {
223
235
  }
224
236
 
225
237
  //#endregion
226
- export { getAppInstance, getCurrentPageInstance, getCurrentPagesInternal, getEnterOptionsSync, getLaunchOptionsSync, initializePageRoutes, navigateBack, navigateTo, reLaunch, redirectTo, registerApp, registerComponent, registerPage, switchTab };
238
+ export { getAppInstance, getCurrentPageInstance, getCurrentPagesInternal, getEnterOptionsSync, getLaunchOptionsSync, initializePageRoutes, navigateBack, navigateTo, offAppHide, offAppShow, onAppHide, onAppShow, reLaunch, redirectTo, registerApp, registerComponent, registerPage, switchTab };
227
239
  //# sourceMappingURL=routeRuntime.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"routeRuntime.mjs","names":[],"sources":["../../../src/runtime/polyfill/routeRuntime.ts"],"sourcesContent":["import type { WebTabBarConfig } from '../../shared/tabBar'\nimport type { ButtonFormConfig } from '../button'\nimport type { ComponentPublicInstance } from '../component'\nimport type { NavigationBarMetrics } from '../navigationBar'\nimport type { WebResourceHintsConfig, WebSeoConfig } from '../seo'\nimport type { WebViewportConfig } from '../viewport'\nimport type { WebRouteHistoryState, WebRouteTarget, WebRoutingConfig } from './routeRuntime/history'\nimport type { AppRuntime, ComponentRawOptions, ComponentRecord, NavigateBackOptions, PageRawOptions, PageRecord, RegisterMeta, RouteOptions } from './routeRuntime/options'\nimport { slugify } from '../../shared/slugify'\nimport {\n configureTabBar,\n getTabBarPagePaths,\n syncTabBarRoute,\n} from '../appShell/tabBar'\nimport { setButtonFormConfig } from '../button'\nimport { defineComponent } from '../component'\nimport { setRuntimeExecutionMode } from '../execution'\nimport { ensureNativeComponentsDefined } from '../nativeComponents'\nimport { ensureNavigationBarDefined, setNavigationBarMetrics } from '../navigationBar'\nimport { setupRpx } from '../rpx'\nimport { configureWebSeo, setupWebResourceHints, syncWebDocumentHead } from '../seo'\nimport { setupWebViewport } from '../viewport'\nimport { setRuntimeWarningOptions } from '../warning'\nimport { resolveCurrentPages } from './appState'\nimport { AppLifecycleRuntime } from './routeRuntime/appLifecycle'\nimport {\n configureWebRouting,\n getWebHistoryStack,\n readWebRouteTarget,\n syncWebRouting,\n} from './routeRuntime/history'\nimport {\n augmentPageComponentOptions,\n dispatchPageLifetimeToComponents,\n} from './routeRuntime/lifecycle'\nimport {\n normalizeComponentOptions,\n normalizePageOptions,\n} from './routeRuntime/options'\nimport { resolveRouteAction } from './routeRuntime/result'\nimport { PageStackRuntime } from './routeRuntime/stack'\nimport { parsePageUrl } from './routeRuntime/url'\n\nconst pageRegistry = new Map<string, PageRecord>()\nconst componentRegistry = new Map<string, ComponentRecord>()\nlet pageOrder: string[] = []\nlet pageResizeBridgeBound = false\n\nlet pageStack: PageStackRuntime\nconst appLifecycle = new AppLifecycleRuntime(\n () => pageStack?.entries[pageStack.entries.length - 1],\n)\npageStack = new PageStackRuntime(pageRegistry, entry => appLifecycle.ensureLaunched(entry))\n\nfunction syncCurrentWebDocument() {\n const current = pageStack.entries[pageStack.entries.length - 1]\n syncWebDocumentHead({\n route: current?.id,\n title: current ? pageRegistry.get(current.id)?.navigationBar?.title : undefined,\n })\n}\n\nfunction syncCurrentWebRoute(operation: 'push' | 'replace') {\n syncWebRouting(pageStack.entries, operation)\n syncCurrentWebDocument()\n}\n\nfunction reconcileWebRoute(target: WebRouteTarget | undefined, state: WebRouteHistoryState | undefined) {\n const currentIds = pageStack.entries.map(entry => entry.id)\n const historyStack = getWebHistoryStack(state)\n if (historyStack?.length) {\n const desiredIds = historyStack.map(entry => entry.id)\n const sharedLength = Math.min(desiredIds.length, currentIds.length)\n const samePrefix = desiredIds\n .slice(0, sharedLength)\n .every((id, index) => currentIds[index] === id)\n if (samePrefix && desiredIds.length < currentIds.length) {\n pageStack.back(currentIds.length - desiredIds.length)\n }\n else if (samePrefix && desiredIds.length > currentIds.length) {\n for (const entry of historyStack.slice(currentIds.length)) {\n pageStack.push(entry.id, { ...entry.query })\n }\n }\n else {\n const last = historyStack[historyStack.length - 1]!\n pageStack.relaunch(last.id, { ...last.query })\n }\n syncTabBarRoute(pageStack.entries[pageStack.entries.length - 1]?.id ?? '')\n syncCurrentWebDocument()\n return\n }\n if (target && pageRegistry.has(target.id)) {\n pageStack.relaunch(target.id, { ...target.query })\n syncTabBarRoute(target.id)\n syncCurrentWebDocument()\n }\n}\n\nfunction performSwitchTab(options: RouteOptions) {\n const { id, query } = parsePageUrl(options?.url ?? '')\n const succeeded = pageStack.switchTab(id, query)\n if (succeeded) {\n syncTabBarRoute(id)\n syncCurrentWebRoute('push')\n }\n return resolveRouteAction('switchTab', options, succeeded, 'not a tabBar page')\n}\n\nfunction bindPageResizeBridge() {\n if (pageResizeBridgeBound || typeof window === 'undefined') {\n return\n }\n if (typeof window.addEventListener !== 'function') {\n return\n }\n pageResizeBridgeBound = true\n window.addEventListener('resize', () => {\n const pages = resolveCurrentPages<ComponentPublicInstance>(pageStack.entries)\n const current = pages[pages.length - 1]\n if (!current) {\n return\n }\n dispatchPageLifetimeToComponents(current, 'resize')\n })\n}\n\nexport function initializePageRoutes(\n ids: string[],\n options?: {\n rpx?: { designWidth?: number, varName?: string }\n navigationBar?: NavigationBarMetrics\n form?: ButtonFormConfig\n tabBar?: WebTabBarConfig\n runtime?: {\n executionMode?: 'compat' | 'safe' | 'strict'\n warnings?: {\n level?: 'off' | 'warn' | 'error'\n dedupe?: boolean\n }\n viewport?: WebViewportConfig\n routing?: WebRoutingConfig\n seo?: WebSeoConfig\n resourceHints?: WebResourceHintsConfig\n }\n },\n) {\n setRuntimeExecutionMode(options?.runtime?.executionMode)\n setRuntimeWarningOptions(options?.runtime?.warnings)\n setupWebViewport(options?.runtime?.viewport)\n configureWebSeo(options?.runtime?.seo)\n setupWebResourceHints(options?.runtime?.resourceHints)\n configureWebRouting(options?.runtime?.routing, ids, reconcileWebRoute)\n appLifecycle.bindVisibility()\n ensureNativeComponentsDefined()\n pageOrder = Array.from(new Set(ids))\n configureTabBar(options?.tabBar, url => performSwitchTab({ url }))\n pageStack.configureTabPages(getTabBarPagePaths())\n if (!pageOrder.length) {\n return\n }\n bindPageResizeBridge()\n if (options?.rpx) {\n setupRpx(options.rpx)\n }\n if (options?.navigationBar) {\n setNavigationBarMetrics(options.navigationBar)\n }\n if (options?.form) {\n setButtonFormConfig(options.form)\n }\n if (!pageStack.entries.length) {\n const initialTarget = readWebRouteTarget(pageOrder)\n const initialId = initialTarget?.id ?? pageOrder[0]\n const initialQuery = initialTarget?.query ?? {}\n if (pageStack.push(initialId, initialQuery)) {\n syncTabBarRoute(initialId)\n syncCurrentWebRoute('replace')\n }\n }\n}\n\nexport function registerPage<T extends PageRawOptions | undefined>(options: T, meta: RegisterMeta): T {\n ensureNativeComponentsDefined()\n ensureNavigationBarDefined()\n const tag = slugify(meta.id, 'wv-page')\n const template = meta.template ?? (() => '')\n const normalized = normalizePageOptions(options)\n const existing = pageRegistry.get(meta.id)\n if (existing) {\n existing.hooks = normalized.hooks\n existing.navigationBar = meta.navigationBar\n const component = augmentPageComponentOptions(normalized.component, existing)\n defineComponent(tag, {\n id: meta.id,\n template,\n style: meta.style,\n component,\n })\n return options\n }\n const record: PageRecord = {\n tag,\n hooks: normalized.hooks,\n instances: new Set(),\n navigationBar: meta.navigationBar,\n }\n const component = augmentPageComponentOptions(normalized.component, record)\n defineComponent(tag, {\n id: meta.id,\n template,\n style: meta.style,\n component,\n })\n pageRegistry.set(meta.id, record)\n return options\n}\n\nexport function getCurrentPageInstance(): ComponentPublicInstance | undefined {\n return pageStack.entries[pageStack.entries.length - 1]?.instance\n}\n\nexport function registerComponent<T extends ComponentRawOptions | undefined>(options: T, meta: RegisterMeta): T {\n ensureNativeComponentsDefined()\n const tag = slugify(meta.id, 'wv-component')\n const template = meta.template ?? (() => '')\n const component = normalizeComponentOptions(options)\n if (componentRegistry.has(meta.id)) {\n defineComponent(tag, {\n id: meta.id,\n template,\n style: meta.style,\n component,\n })\n return options\n }\n defineComponent(tag, {\n id: meta.id,\n template,\n style: meta.style,\n component,\n })\n componentRegistry.set(meta.id, { tag })\n return options\n}\n\nexport function registerApp<T extends AppRuntime | undefined>(options: T, _meta?: RegisterMeta): T {\n return appLifecycle.register(options)\n}\n\nexport function navigateTo(options: RouteOptions) {\n const { id, query } = parsePageUrl(options?.url ?? '')\n const succeeded = pageStack.push(id, query)\n if (succeeded) {\n syncTabBarRoute(id)\n syncCurrentWebRoute('push')\n }\n return resolveRouteAction('navigateTo', options, succeeded)\n}\n\nexport function redirectTo(options: RouteOptions) {\n const { id, query } = parsePageUrl(options?.url ?? '')\n const succeeded = pageStack.replace(id, query)\n if (succeeded) {\n syncTabBarRoute(id)\n syncCurrentWebRoute('replace')\n }\n return resolveRouteAction('redirectTo', options, succeeded)\n}\n\nexport function reLaunch(options: RouteOptions) {\n const { id, query } = parsePageUrl(options?.url ?? '')\n const succeeded = pageStack.relaunch(id, query)\n if (succeeded) {\n syncTabBarRoute(id)\n syncCurrentWebRoute('replace')\n }\n return resolveRouteAction('reLaunch', options, succeeded)\n}\n\nexport function switchTab(options: RouteOptions) {\n return performSwitchTab(options)\n}\n\nexport function navigateBack(options?: NavigateBackOptions) {\n const succeeded = pageStack.back(options?.delta)\n if (succeeded) {\n syncTabBarRoute(pageStack.entries[pageStack.entries.length - 1]?.id ?? '')\n syncCurrentWebRoute('replace')\n }\n return resolveRouteAction('navigateBack', options, succeeded)\n}\n\nexport function getCurrentPagesInternal() {\n return resolveCurrentPages<ComponentPublicInstance>(pageStack.entries)\n}\n\nexport function getAppInstance() {\n return appLifecycle.instance\n}\n\nexport function getLaunchOptionsSync() {\n return appLifecycle.getLaunchOptions()\n}\n\nexport function getEnterOptionsSync() {\n return appLifecycle.getEnterOptions()\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"routeRuntime.mjs","names":[],"sources":["../../../src/runtime/polyfill/routeRuntime.ts"],"sourcesContent":["import type { WebTabBarConfig } from '../../shared/tabBar'\nimport type { ButtonFormConfig } from '../button'\nimport type { ComponentPublicInstance } from '../component'\nimport type { NavigationBarMetrics } from '../navigationBar'\nimport type { WebResourceHintsConfig, WebSeoConfig } from '../seo'\nimport type { WebViewportConfig } from '../viewport'\nimport type { WebRouteHistoryState, WebRouteTarget, WebRoutingConfig } from './routeRuntime/history'\nimport type { AppHideCallback, AppRuntime, AppShowCallback, ComponentRawOptions, ComponentRecord, NavigateBackOptions, PageRawOptions, PageRecord, RegisterMeta, RouteOptions } from './routeRuntime/options'\nimport { slugify } from '../../shared/slugify'\nimport {\n configureTabBar,\n getTabBarPagePaths,\n syncTabBarRoute,\n} from '../appShell/tabBar'\nimport { setButtonFormConfig } from '../button'\nimport { defineComponent } from '../component'\nimport { setRuntimeExecutionMode } from '../execution'\nimport { ensureNativeComponentsDefined } from '../nativeComponents'\nimport { ensureNavigationBarDefined, setNavigationBarMetrics } from '../navigationBar'\nimport { setupRpx } from '../rpx'\nimport { configureWebSeo, setupWebResourceHints, syncWebDocumentHead } from '../seo'\nimport { setupWebViewport } from '../viewport'\nimport { setRuntimeWarningOptions } from '../warning'\nimport { resolveCurrentPages } from './appState'\nimport { AppLifecycleRuntime } from './routeRuntime/appLifecycle'\nimport {\n configureWebRouting,\n getWebHistoryStack,\n readWebRouteTarget,\n syncWebRouting,\n} from './routeRuntime/history'\nimport {\n augmentPageComponentOptions,\n dispatchPageLifetimeToComponents,\n} from './routeRuntime/lifecycle'\nimport {\n normalizeComponentOptions,\n normalizePageOptions,\n} from './routeRuntime/options'\nimport { resolveRouteAction } from './routeRuntime/result'\nimport { PageStackRuntime } from './routeRuntime/stack'\nimport { parsePageUrl } from './routeRuntime/url'\n\nconst pageRegistry = new Map<string, PageRecord>()\nconst componentRegistry = new Map<string, ComponentRecord>()\nlet pageOrder: string[] = []\nlet pageResizeBridgeBound = false\n\nlet pageStack: PageStackRuntime\nconst appLifecycle = new AppLifecycleRuntime(\n () => pageStack?.entries[pageStack.entries.length - 1],\n)\npageStack = new PageStackRuntime(pageRegistry, entry => appLifecycle.ensureLaunched(entry))\n\nfunction syncCurrentWebDocument() {\n const current = pageStack.entries[pageStack.entries.length - 1]\n syncWebDocumentHead({\n route: current?.id,\n title: current ? pageRegistry.get(current.id)?.navigationBar?.title : undefined,\n })\n}\n\nfunction syncCurrentWebRoute(operation: 'push' | 'replace') {\n syncWebRouting(pageStack.entries, operation)\n syncCurrentWebDocument()\n}\n\nfunction reconcileWebRoute(target: WebRouteTarget | undefined, state: WebRouteHistoryState | undefined) {\n const currentIds = pageStack.entries.map(entry => entry.id)\n const historyStack = getWebHistoryStack(state)\n if (historyStack?.length) {\n const desiredIds = historyStack.map(entry => entry.id)\n const sharedLength = Math.min(desiredIds.length, currentIds.length)\n const samePrefix = desiredIds\n .slice(0, sharedLength)\n .every((id, index) => currentIds[index] === id)\n if (samePrefix && desiredIds.length < currentIds.length) {\n pageStack.back(currentIds.length - desiredIds.length)\n }\n else if (samePrefix && desiredIds.length > currentIds.length) {\n for (const entry of historyStack.slice(currentIds.length)) {\n pageStack.push(entry.id, { ...entry.query })\n }\n }\n else {\n const last = historyStack[historyStack.length - 1]!\n pageStack.relaunch(last.id, { ...last.query })\n }\n syncTabBarRoute(pageStack.entries[pageStack.entries.length - 1]?.id ?? '')\n syncCurrentWebDocument()\n return\n }\n if (target && pageRegistry.has(target.id)) {\n pageStack.relaunch(target.id, { ...target.query })\n syncTabBarRoute(target.id)\n syncCurrentWebDocument()\n }\n}\n\nfunction performSwitchTab(options: RouteOptions) {\n const { id, query } = parsePageUrl(options?.url ?? '')\n const succeeded = pageStack.switchTab(id, query)\n if (succeeded) {\n syncTabBarRoute(id)\n syncCurrentWebRoute('push')\n }\n return resolveRouteAction('switchTab', options, succeeded, 'not a tabBar page')\n}\n\nfunction bindPageResizeBridge() {\n if (pageResizeBridgeBound || typeof window === 'undefined') {\n return\n }\n if (typeof window.addEventListener !== 'function') {\n return\n }\n pageResizeBridgeBound = true\n window.addEventListener('resize', () => {\n const pages = resolveCurrentPages<ComponentPublicInstance>(pageStack.entries)\n const current = pages[pages.length - 1]\n if (!current) {\n return\n }\n dispatchPageLifetimeToComponents(current, 'resize')\n })\n}\n\nexport function initializePageRoutes(\n ids: string[],\n options?: {\n rpx?: { designWidth?: number, varName?: string }\n navigationBar?: NavigationBarMetrics\n form?: ButtonFormConfig\n tabBar?: WebTabBarConfig\n runtime?: {\n executionMode?: 'compat' | 'safe' | 'strict'\n warnings?: {\n level?: 'off' | 'warn' | 'error'\n dedupe?: boolean\n }\n viewport?: WebViewportConfig\n routing?: WebRoutingConfig\n seo?: WebSeoConfig\n resourceHints?: WebResourceHintsConfig\n }\n },\n) {\n setRuntimeExecutionMode(options?.runtime?.executionMode)\n setRuntimeWarningOptions(options?.runtime?.warnings)\n setupWebViewport(options?.runtime?.viewport)\n configureWebSeo(options?.runtime?.seo)\n setupWebResourceHints(options?.runtime?.resourceHints)\n configureWebRouting(options?.runtime?.routing, ids, reconcileWebRoute)\n appLifecycle.bindVisibility()\n ensureNativeComponentsDefined()\n pageOrder = Array.from(new Set(ids))\n configureTabBar(options?.tabBar, url => performSwitchTab({ url }))\n pageStack.configureTabPages(getTabBarPagePaths())\n if (!pageOrder.length) {\n return\n }\n bindPageResizeBridge()\n if (options?.rpx) {\n setupRpx(options.rpx)\n }\n if (options?.navigationBar) {\n setNavigationBarMetrics(options.navigationBar)\n }\n if (options?.form) {\n setButtonFormConfig(options.form)\n }\n if (!pageStack.entries.length) {\n const initialTarget = readWebRouteTarget(pageOrder)\n const initialId = initialTarget?.id ?? pageOrder[0]\n const initialQuery = initialTarget?.query ?? {}\n if (pageStack.push(initialId, initialQuery)) {\n syncTabBarRoute(initialId)\n syncCurrentWebRoute('replace')\n }\n }\n}\n\nexport function registerPage<T extends PageRawOptions | undefined>(options: T, meta: RegisterMeta): T {\n ensureNativeComponentsDefined()\n ensureNavigationBarDefined()\n const tag = slugify(meta.id, 'wv-page')\n const template = meta.template ?? (() => '')\n const normalized = normalizePageOptions(options)\n const existing = pageRegistry.get(meta.id)\n if (existing) {\n existing.hooks = normalized.hooks\n existing.navigationBar = meta.navigationBar\n const component = augmentPageComponentOptions(normalized.component, existing)\n defineComponent(tag, {\n id: meta.id,\n template,\n style: meta.style,\n component,\n })\n return options\n }\n const record: PageRecord = {\n tag,\n hooks: normalized.hooks,\n instances: new Set(),\n navigationBar: meta.navigationBar,\n }\n const component = augmentPageComponentOptions(normalized.component, record)\n defineComponent(tag, {\n id: meta.id,\n template,\n style: meta.style,\n component,\n })\n pageRegistry.set(meta.id, record)\n return options\n}\n\nexport function getCurrentPageInstance(): ComponentPublicInstance | undefined {\n return pageStack.entries[pageStack.entries.length - 1]?.instance\n}\n\nexport function registerComponent<T extends ComponentRawOptions | undefined>(options: T, meta: RegisterMeta): T {\n ensureNativeComponentsDefined()\n const tag = slugify(meta.id, 'wv-component')\n const template = meta.template ?? (() => '')\n const component = normalizeComponentOptions(options)\n if (componentRegistry.has(meta.id)) {\n defineComponent(tag, {\n id: meta.id,\n template,\n style: meta.style,\n component,\n })\n return options\n }\n defineComponent(tag, {\n id: meta.id,\n template,\n style: meta.style,\n component,\n })\n componentRegistry.set(meta.id, { tag })\n return options\n}\n\nexport function registerApp<T extends AppRuntime | undefined>(options: T, _meta?: RegisterMeta): T {\n return appLifecycle.register(options)\n}\n\nexport function offAppHide(callback?: AppHideCallback) {\n appLifecycle.offAppHide(callback)\n}\n\nexport function offAppShow(callback?: AppShowCallback) {\n appLifecycle.offAppShow(callback)\n}\n\nexport function onAppHide(callback: AppHideCallback) {\n appLifecycle.onAppHide(callback)\n}\n\nexport function onAppShow(callback: AppShowCallback) {\n appLifecycle.onAppShow(callback)\n}\n\nexport function navigateTo(options: RouteOptions) {\n const { id, query } = parsePageUrl(options?.url ?? '')\n const succeeded = pageStack.push(id, query)\n if (succeeded) {\n syncTabBarRoute(id)\n syncCurrentWebRoute('push')\n }\n return resolveRouteAction('navigateTo', options, succeeded)\n}\n\nexport function redirectTo(options: RouteOptions) {\n const { id, query } = parsePageUrl(options?.url ?? '')\n const succeeded = pageStack.replace(id, query)\n if (succeeded) {\n syncTabBarRoute(id)\n syncCurrentWebRoute('replace')\n }\n return resolveRouteAction('redirectTo', options, succeeded)\n}\n\nexport function reLaunch(options: RouteOptions) {\n const { id, query } = parsePageUrl(options?.url ?? '')\n const succeeded = pageStack.relaunch(id, query)\n if (succeeded) {\n syncTabBarRoute(id)\n syncCurrentWebRoute('replace')\n }\n return resolveRouteAction('reLaunch', options, succeeded)\n}\n\nexport function switchTab(options: RouteOptions) {\n return performSwitchTab(options)\n}\n\nexport function navigateBack(options?: NavigateBackOptions) {\n const succeeded = pageStack.back(options?.delta)\n if (succeeded) {\n syncTabBarRoute(pageStack.entries[pageStack.entries.length - 1]?.id ?? '')\n syncCurrentWebRoute('replace')\n }\n return resolveRouteAction('navigateBack', options, succeeded)\n}\n\nexport function getCurrentPagesInternal() {\n return resolveCurrentPages<ComponentPublicInstance>(pageStack.entries)\n}\n\nexport function getAppInstance() {\n return appLifecycle.instance\n}\n\nexport function getLaunchOptionsSync() {\n return appLifecycle.getLaunchOptions()\n}\n\nexport function getEnterOptionsSync() {\n return appLifecycle.getEnterOptions()\n}\n"],"mappings":"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"}
@@ -1,6 +1,7 @@
1
+ import { AppHideCallback, AppHideOptions, AppLaunchOptions, AppShowCallback } from "./polyfill/routeRuntime/options.mjs";
1
2
  import { authorize, checkSession, getAccountInfoSync, getAppAuthorizeSetting, getAppBaseInfo, getBatteryInfo, getBatteryInfoSync, getDeviceInfo, getFuzzyLocation, getLocation, getMenuButtonBoundingClientRect, getNetworkType, getSetting, getSystemInfo, getSystemInfoSync, getSystemSetting, getUserInfo, getUserProfile, getWindowInfo, login, offNetworkStatusChange, offWindowResize, onNetworkStatusChange, onWindowResize, openAppAuthorizeSetting, openSetting, vibrateShort } from "./polyfill/deviceAuthSystemApi.mjs";
2
- import { getEnterOptionsSync, getLaunchOptionsSync, initializePageRoutes, navigateBack, navigateTo, reLaunch, redirectTo, registerApp, registerComponent, registerPage, switchTab } from "./polyfill/routeRuntime.mjs";
3
+ import { getEnterOptionsSync, getLaunchOptionsSync, initializePageRoutes, navigateBack, navigateTo, offAppHide, offAppShow, onAppHide, onAppShow, reLaunch, redirectTo, registerApp, registerComponent, registerPage, switchTab } from "./polyfill/routeRuntime.mjs";
3
4
  import { clearStorage, clearStorageSync, createCanvasContext, createSelectorQuery, createVKSession, createVideoContext, createWorker, downloadFile, exitMiniProgram, getFileSystemManager, getStorage, getStorageInfo, getStorageInfoSync, getStorageSync, hideKeyboard, loadSubPackage, navigateToMiniProgram, nextTick, pageScrollTo, preloadSubpackage, removeStorage, removeStorageSync, request, setStorage, setStorageSync, startPullDownRefresh, stopPullDownRefresh, uploadFile } from "./polyfill/runtimeDataApi.mjs";
4
5
  import { chooseAddress, chooseFile, chooseImage, chooseLocation, chooseMedia, chooseMessageFile, chooseVideo, compressImage, compressVideo, getClipboardData, getImageInfo, getVideoInfo, hideLoading, hideTabBar, hideTabBarRedDot, makePhoneCall, openCustomerServiceChat, openDocument, openLocation, openVideoEditor, previewImage, previewMedia, removeTabBarBadge, requestPayment, requestSubscribeMessage, saveFile, saveFileToDisk, saveImageToPhotosAlbum, saveVideoToPhotosAlbum, scanCode, setClipboardData, setTabBarBadge, setTabBarItem, setTabBarStyle, showActionSheet, showLoading, showModal, showShareMenu, showTabBar, showTabBarRedDot, showToast, updateShareMenu } from "./polyfill/uiMediaApi.mjs";
5
6
  import { canIUse, createInterstitialAd, createRewardedVideoAd, getExtConfig, getExtConfigSync, getLogManager, getUpdateManager, hideNavigationBarLoading, reportAnalytics, setBackgroundColor, setBackgroundTextStyle, setNavigationBarColor, setNavigationBarTitle, showNavigationBarLoading } from "./polyfill/index.mjs";
6
- export { authorize, canIUse, checkSession, chooseAddress, chooseFile, chooseImage, chooseLocation, chooseMedia, chooseMessageFile, chooseVideo, clearStorage, clearStorageSync, compressImage, compressVideo, createCanvasContext, createInterstitialAd, createRewardedVideoAd, createSelectorQuery, createVKSession, createVideoContext, createWorker, downloadFile, exitMiniProgram, getAccountInfoSync, getAppAuthorizeSetting, getAppBaseInfo, getBatteryInfo, getBatteryInfoSync, getClipboardData, getDeviceInfo, getEnterOptionsSync, getExtConfig, getExtConfigSync, getFileSystemManager, getFuzzyLocation, getImageInfo, getLaunchOptionsSync, getLocation, getLogManager, getMenuButtonBoundingClientRect, getNetworkType, getSetting, getStorage, getStorageInfo, getStorageInfoSync, getStorageSync, getSystemInfo, getSystemInfoSync, getSystemSetting, getUpdateManager, getUserInfo, getUserProfile, getVideoInfo, getWindowInfo, hideKeyboard, hideLoading, hideNavigationBarLoading, hideTabBar, hideTabBarRedDot, initializePageRoutes, loadSubPackage, login, makePhoneCall, navigateBack, navigateTo, navigateToMiniProgram, nextTick, offNetworkStatusChange, offWindowResize, onNetworkStatusChange, onWindowResize, openAppAuthorizeSetting, openCustomerServiceChat, openDocument, openLocation, openSetting, openVideoEditor, pageScrollTo, preloadSubpackage, previewImage, previewMedia, reLaunch, redirectTo, registerApp, registerComponent, registerPage, removeStorage, removeStorageSync, removeTabBarBadge, reportAnalytics, request, requestPayment, requestSubscribeMessage, saveFile, saveFileToDisk, saveImageToPhotosAlbum, saveVideoToPhotosAlbum, scanCode, setBackgroundColor, setBackgroundTextStyle, setClipboardData, setNavigationBarColor, setNavigationBarTitle, setStorage, setStorageSync, setTabBarBadge, setTabBarItem, setTabBarStyle, showActionSheet, showLoading, showModal, showNavigationBarLoading, showShareMenu, showTabBar, showTabBarRedDot, showToast, startPullDownRefresh, stopPullDownRefresh, switchTab, updateShareMenu, uploadFile, vibrateShort };
7
+ export { type AppHideCallback, type AppHideOptions, type AppLaunchOptions, type AppShowCallback, authorize, canIUse, checkSession, chooseAddress, chooseFile, chooseImage, chooseLocation, chooseMedia, chooseMessageFile, chooseVideo, clearStorage, clearStorageSync, compressImage, compressVideo, createCanvasContext, createInterstitialAd, createRewardedVideoAd, createSelectorQuery, createVKSession, createVideoContext, createWorker, downloadFile, exitMiniProgram, getAccountInfoSync, getAppAuthorizeSetting, getAppBaseInfo, getBatteryInfo, getBatteryInfoSync, getClipboardData, getDeviceInfo, getEnterOptionsSync, getExtConfig, getExtConfigSync, getFileSystemManager, getFuzzyLocation, getImageInfo, getLaunchOptionsSync, getLocation, getLogManager, getMenuButtonBoundingClientRect, getNetworkType, getSetting, getStorage, getStorageInfo, getStorageInfoSync, getStorageSync, getSystemInfo, getSystemInfoSync, getSystemSetting, getUpdateManager, getUserInfo, getUserProfile, getVideoInfo, getWindowInfo, hideKeyboard, hideLoading, hideNavigationBarLoading, hideTabBar, hideTabBarRedDot, initializePageRoutes, loadSubPackage, login, makePhoneCall, navigateBack, navigateTo, navigateToMiniProgram, nextTick, offAppHide, offAppShow, offNetworkStatusChange, offWindowResize, onAppHide, onAppShow, onNetworkStatusChange, onWindowResize, openAppAuthorizeSetting, openCustomerServiceChat, openDocument, openLocation, openSetting, openVideoEditor, pageScrollTo, preloadSubpackage, previewImage, previewMedia, reLaunch, redirectTo, registerApp, registerComponent, registerPage, removeStorage, removeStorageSync, removeTabBarBadge, reportAnalytics, request, requestPayment, requestSubscribeMessage, saveFile, saveFileToDisk, saveImageToPhotosAlbum, saveVideoToPhotosAlbum, scanCode, setBackgroundColor, setBackgroundTextStyle, setClipboardData, setNavigationBarColor, setNavigationBarTitle, setStorage, setStorageSync, setTabBarBadge, setTabBarItem, setTabBarStyle, showActionSheet, showLoading, showModal, showNavigationBarLoading, showShareMenu, showTabBar, showTabBarRedDot, showToast, startPullDownRefresh, stopPullDownRefresh, switchTab, updateShareMenu, uploadFile, vibrateShort };
@@ -1,5 +1,6 @@
1
1
  import { emitRuntimeWarning } from "./warning.mjs";
2
2
  import { getRuntimeExecutionMode, warnRuntimeExecutionOnce } from "./execution.mjs";
3
+ import { invokeMiniProgramEventHandler } from "./inputHandlerResult.mjs";
3
4
 
4
5
  //#region src/runtime/renderContext.ts
5
6
  const expressionCache = /* @__PURE__ */ new Map();
@@ -80,7 +81,7 @@ function createEventHandler(instance, methods, eventName, handlerRef, flags) {
80
81
  currentTarget: { dataset },
81
82
  originalEvent: nativeEvent
82
83
  };
83
- handler.call(instance, syntheticEvent);
84
+ invokeMiniProgramEventHandler(handler, instance, syntheticEvent, nativeEvent);
84
85
  };
85
86
  }
86
87
  function createWxsModule(code, id, requireMap) {