@weapp-vite/web 1.4.13 → 1.4.15

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 (29) hide show
  1. package/dist/runtime/appShell/tabBar/index.mjs.map +1 -1
  2. package/dist/runtime/button/index.mjs.map +1 -1
  3. package/dist/runtime/component/element.mjs.map +1 -1
  4. package/dist/runtime/nativeComponents/canvas/index.mjs.map +1 -1
  5. package/dist/runtime/nativeComponents/checkbox.mjs.map +1 -1
  6. package/dist/runtime/nativeComponents/form.mjs.map +1 -1
  7. package/dist/runtime/nativeComponents/icon/index.mjs.map +1 -1
  8. package/dist/runtime/nativeComponents/image.mjs.map +1 -1
  9. package/dist/runtime/nativeComponents/input.mjs.map +1 -1
  10. package/dist/runtime/nativeComponents/label.mjs.map +1 -1
  11. package/dist/runtime/nativeComponents/movable/index.mjs.map +1 -1
  12. package/dist/runtime/nativeComponents/navigator.mjs.map +1 -1
  13. package/dist/runtime/nativeComponents/picker/index.mjs.map +1 -1
  14. package/dist/runtime/nativeComponents/pickerView/column.mjs.map +1 -1
  15. package/dist/runtime/nativeComponents/pickerView/index.mjs.map +1 -1
  16. package/dist/runtime/nativeComponents/progress/index.mjs.map +1 -1
  17. package/dist/runtime/nativeComponents/radio.mjs.map +1 -1
  18. package/dist/runtime/nativeComponents/richText/index.mjs.map +1 -1
  19. package/dist/runtime/nativeComponents/scrollView.mjs.map +1 -1
  20. package/dist/runtime/nativeComponents/slider/index.mjs.map +1 -1
  21. package/dist/runtime/nativeComponents/swiper/index.mjs.map +1 -1
  22. package/dist/runtime/nativeComponents/switch.mjs.map +1 -1
  23. package/dist/runtime/nativeComponents/textarea.mjs.map +1 -1
  24. package/dist/runtime/nativeComponents/video/index.mjs.map +1 -1
  25. package/dist/runtime/navigationBar/index.mjs.map +1 -1
  26. package/dist/runtime/polyfill/animation.mjs.map +1 -1
  27. package/dist/runtime/polyfill/routeRuntime/appLifecycle.mjs.map +1 -1
  28. package/dist/runtime/polyfill/routeRuntime/stack.mjs.map +1 -1
  29. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["#renderShell","#bindResize","#resizeHandler","#nav","#title","#loading"],"sources":["../../../src/runtime/navigationBar/index.ts"],"sourcesContent":["import { NAVBAR_STYLE } from './style'\n\ninterface NavigationBarMetrics {\n statusBarHeight?: number\n navContentHeight?: number\n safeAreaTop?: number\n}\n\nconst NAVIGATION_BAR_TAG = 'weapp-navigation-bar'\nconst BaseElement = (globalThis.HTMLElement ?? class {}) as typeof HTMLElement\nconst navigationBarInstances = new Set<WeappNavigationBar>()\nlet navigationBarMetrics: NavigationBarMetrics = {}\nconst IOS_DEVICE_RE = /iphone|ipad|ipod/i\n\nfunction isIOS() {\n if (typeof navigator === 'undefined') {\n return false\n }\n return IOS_DEVICE_RE.test(navigator.userAgent)\n}\n\nfunction getDefaultHeights() {\n if (isIOS()) {\n return { statusBarHeight: 20, navContentHeight: 44 }\n }\n return { statusBarHeight: 24, navContentHeight: 48 }\n}\n\nfunction readSafeAreaTop() {\n if (typeof document === 'undefined' || !document.body) {\n return 0\n }\n const probe = document.createElement('div')\n probe.style.cssText = [\n 'position: absolute',\n 'top: 0',\n 'height: env(safe-area-inset-top)',\n 'height: constant(safe-area-inset-top)',\n 'pointer-events: none',\n 'visibility: hidden',\n ].join(';')\n document.body.appendChild(probe)\n const height = Math.max(0, probe.getBoundingClientRect().height)\n probe.remove()\n return height\n}\n\nfunction resolveNavigationBarMetrics(): Required<NavigationBarMetrics> & { navHeight: number } {\n const defaults = getDefaultHeights()\n const safeAreaTop = navigationBarMetrics.safeAreaTop !== undefined\n ? navigationBarMetrics.safeAreaTop\n : readSafeAreaTop()\n const statusBarHeight = navigationBarMetrics.statusBarHeight !== undefined\n ? navigationBarMetrics.statusBarHeight\n : (safeAreaTop > 0 ? safeAreaTop : defaults.statusBarHeight)\n const navContentHeight = navigationBarMetrics.navContentHeight !== undefined\n ? navigationBarMetrics.navContentHeight\n : defaults.navContentHeight\n return {\n safeAreaTop,\n statusBarHeight,\n navContentHeight,\n navHeight: statusBarHeight + navContentHeight,\n }\n}\n\nfunction isTransparentColor(value: string) {\n const normalized = value.trim().toLowerCase()\n return normalized === 'transparent'\n || normalized === 'rgba(0,0,0,0)'\n || normalized === 'rgba(0, 0, 0, 0)'\n || normalized === 'hsla(0,0%,0%,0)'\n}\n\nexport function setNavigationBarMetrics(next: NavigationBarMetrics) {\n navigationBarMetrics = { ...navigationBarMetrics, ...next }\n for (const instance of navigationBarInstances) {\n instance.applyMetrics()\n }\n}\n\nclass WeappNavigationBar extends BaseElement {\n static observedAttributes = ['title', 'background-color', 'text-style', 'front-color', 'loading']\n\n #nav?: HTMLDivElement\n #title?: HTMLSpanElement\n #loading?: HTMLSpanElement\n #resizeHandler?: () => void\n\n connectedCallback() {\n const root = this.shadowRoot ?? this.attachShadow({ mode: 'open' })\n if (!root.hasChildNodes()) {\n this.#renderShell()\n }\n navigationBarInstances.add(this)\n this.applyMetrics()\n this.applyAppearance()\n this.#bindResize()\n }\n\n disconnectedCallback() {\n navigationBarInstances.delete(this)\n if (this.#resizeHandler) {\n const target = typeof window !== 'undefined' ? (window.visualViewport ?? window) : undefined\n target?.removeEventListener('resize', this.#resizeHandler)\n this.#resizeHandler = undefined\n }\n }\n\n attributeChangedCallback() {\n this.applyAppearance()\n }\n\n applyMetrics() {\n const metrics = resolveNavigationBarMetrics()\n this.style.setProperty('--weapp-status-bar-height', `${metrics.statusBarHeight}px`)\n this.style.setProperty('--weapp-nav-content-height', `${metrics.navContentHeight}px`)\n this.style.setProperty('--weapp-nav-height', `${metrics.navHeight}px`)\n }\n\n applyAppearance() {\n if (!this.#nav || !this.#title || !this.#loading) {\n return\n }\n const title = this.getAttribute('title') ?? ''\n this.#title.textContent = title\n const background = this.getAttribute('background-color') ?? '#ffffff'\n const frontColor = this.getAttribute('front-color')\n const textStyle = (this.getAttribute('text-style') ?? '').toLowerCase()\n const color = frontColor || (textStyle === 'white' ? '#ffffff' : '#000000')\n const loadingAttr = this.getAttribute('loading')\n const loading = loadingAttr !== null && loadingAttr !== 'false' && loadingAttr !== '0'\n this.style.setProperty('--weapp-nav-bg', background)\n this.style.setProperty('--weapp-nav-color', color)\n this.#loading.toggleAttribute('hidden', !loading)\n this.#nav.classList.toggle('weapp-nav--transparent', isTransparentColor(background))\n }\n\n #bindResize() {\n if (this.#resizeHandler || typeof window === 'undefined') {\n return\n }\n const target = window.visualViewport ?? window\n this.#resizeHandler = () => {\n this.applyMetrics()\n }\n target.addEventListener('resize', this.#resizeHandler)\n }\n\n #renderShell() {\n const root = this.shadowRoot!\n root.innerHTML = ''\n const style = document.createElement('style')\n style.textContent = NAVBAR_STYLE\n const spacer = document.createElement('div')\n spacer.className = 'weapp-nav__spacer'\n const nav = document.createElement('div')\n nav.className = 'weapp-nav'\n const status = document.createElement('div')\n status.className = 'weapp-nav__status'\n const content = document.createElement('div')\n content.className = 'weapp-nav__content'\n const left = document.createElement('div')\n left.className = 'weapp-nav__left'\n const right = document.createElement('div')\n right.className = 'weapp-nav__right'\n const title = document.createElement('span')\n title.className = 'weapp-nav__title'\n const loading = document.createElement('span')\n loading.className = 'weapp-nav__loading'\n loading.setAttribute('hidden', '')\n const titleText = document.createElement('span')\n titleText.className = 'weapp-nav__title-text'\n title.append(loading, titleText)\n content.append(left, title, right)\n nav.append(status, content)\n root.append(style, spacer, nav)\n this.#nav = nav\n this.#title = titleText\n this.#loading = loading\n }\n}\n\nexport function ensureNavigationBarDefined() {\n if (typeof customElements === 'undefined') {\n return\n }\n if (!customElements.get(NAVIGATION_BAR_TAG)) {\n customElements.define(NAVIGATION_BAR_TAG, WeappNavigationBar)\n }\n}\n\nexport type { NavigationBarMetrics }\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../src/runtime/navigationBar/index.ts"],"sourcesContent":["import { NAVBAR_STYLE } from './style'\n\ninterface NavigationBarMetrics {\n statusBarHeight?: number\n navContentHeight?: number\n safeAreaTop?: number\n}\n\nconst NAVIGATION_BAR_TAG = 'weapp-navigation-bar'\nconst BaseElement = (globalThis.HTMLElement ?? class {}) as typeof HTMLElement\nconst navigationBarInstances = new Set<WeappNavigationBar>()\nlet navigationBarMetrics: NavigationBarMetrics = {}\nconst IOS_DEVICE_RE = /iphone|ipad|ipod/i\n\nfunction isIOS() {\n if (typeof navigator === 'undefined') {\n return false\n }\n return IOS_DEVICE_RE.test(navigator.userAgent)\n}\n\nfunction getDefaultHeights() {\n if (isIOS()) {\n return { statusBarHeight: 20, navContentHeight: 44 }\n }\n return { statusBarHeight: 24, navContentHeight: 48 }\n}\n\nfunction readSafeAreaTop() {\n if (typeof document === 'undefined' || !document.body) {\n return 0\n }\n const probe = document.createElement('div')\n probe.style.cssText = [\n 'position: absolute',\n 'top: 0',\n 'height: env(safe-area-inset-top)',\n 'height: constant(safe-area-inset-top)',\n 'pointer-events: none',\n 'visibility: hidden',\n ].join(';')\n document.body.appendChild(probe)\n const height = Math.max(0, probe.getBoundingClientRect().height)\n probe.remove()\n return height\n}\n\nfunction resolveNavigationBarMetrics(): Required<NavigationBarMetrics> & { navHeight: number } {\n const defaults = getDefaultHeights()\n const safeAreaTop = navigationBarMetrics.safeAreaTop !== undefined\n ? navigationBarMetrics.safeAreaTop\n : readSafeAreaTop()\n const statusBarHeight = navigationBarMetrics.statusBarHeight !== undefined\n ? navigationBarMetrics.statusBarHeight\n : (safeAreaTop > 0 ? safeAreaTop : defaults.statusBarHeight)\n const navContentHeight = navigationBarMetrics.navContentHeight !== undefined\n ? navigationBarMetrics.navContentHeight\n : defaults.navContentHeight\n return {\n safeAreaTop,\n statusBarHeight,\n navContentHeight,\n navHeight: statusBarHeight + navContentHeight,\n }\n}\n\nfunction isTransparentColor(value: string) {\n const normalized = value.trim().toLowerCase()\n return normalized === 'transparent'\n || normalized === 'rgba(0,0,0,0)'\n || normalized === 'rgba(0, 0, 0, 0)'\n || normalized === 'hsla(0,0%,0%,0)'\n}\n\nexport function setNavigationBarMetrics(next: NavigationBarMetrics) {\n navigationBarMetrics = { ...navigationBarMetrics, ...next }\n for (const instance of navigationBarInstances) {\n instance.applyMetrics()\n }\n}\n\nclass WeappNavigationBar extends BaseElement {\n static observedAttributes = ['title', 'background-color', 'text-style', 'front-color', 'loading']\n\n #nav?: HTMLDivElement\n #title?: HTMLSpanElement\n #loading?: HTMLSpanElement\n #resizeHandler?: () => void\n\n connectedCallback() {\n const root = this.shadowRoot ?? this.attachShadow({ mode: 'open' })\n if (!root.hasChildNodes()) {\n this.#renderShell()\n }\n navigationBarInstances.add(this)\n this.applyMetrics()\n this.applyAppearance()\n this.#bindResize()\n }\n\n disconnectedCallback() {\n navigationBarInstances.delete(this)\n if (this.#resizeHandler) {\n const target = typeof window !== 'undefined' ? (window.visualViewport ?? window) : undefined\n target?.removeEventListener('resize', this.#resizeHandler)\n this.#resizeHandler = undefined\n }\n }\n\n attributeChangedCallback() {\n this.applyAppearance()\n }\n\n applyMetrics() {\n const metrics = resolveNavigationBarMetrics()\n this.style.setProperty('--weapp-status-bar-height', `${metrics.statusBarHeight}px`)\n this.style.setProperty('--weapp-nav-content-height', `${metrics.navContentHeight}px`)\n this.style.setProperty('--weapp-nav-height', `${metrics.navHeight}px`)\n }\n\n applyAppearance() {\n if (!this.#nav || !this.#title || !this.#loading) {\n return\n }\n const title = this.getAttribute('title') ?? ''\n this.#title.textContent = title\n const background = this.getAttribute('background-color') ?? '#ffffff'\n const frontColor = this.getAttribute('front-color')\n const textStyle = (this.getAttribute('text-style') ?? '').toLowerCase()\n const color = frontColor || (textStyle === 'white' ? '#ffffff' : '#000000')\n const loadingAttr = this.getAttribute('loading')\n const loading = loadingAttr !== null && loadingAttr !== 'false' && loadingAttr !== '0'\n this.style.setProperty('--weapp-nav-bg', background)\n this.style.setProperty('--weapp-nav-color', color)\n this.#loading.toggleAttribute('hidden', !loading)\n this.#nav.classList.toggle('weapp-nav--transparent', isTransparentColor(background))\n }\n\n #bindResize() {\n if (this.#resizeHandler || typeof window === 'undefined') {\n return\n }\n const target = window.visualViewport ?? window\n this.#resizeHandler = () => {\n this.applyMetrics()\n }\n target.addEventListener('resize', this.#resizeHandler)\n }\n\n #renderShell() {\n const root = this.shadowRoot!\n root.innerHTML = ''\n const style = document.createElement('style')\n style.textContent = NAVBAR_STYLE\n const spacer = document.createElement('div')\n spacer.className = 'weapp-nav__spacer'\n const nav = document.createElement('div')\n nav.className = 'weapp-nav'\n const status = document.createElement('div')\n status.className = 'weapp-nav__status'\n const content = document.createElement('div')\n content.className = 'weapp-nav__content'\n const left = document.createElement('div')\n left.className = 'weapp-nav__left'\n const right = document.createElement('div')\n right.className = 'weapp-nav__right'\n const title = document.createElement('span')\n title.className = 'weapp-nav__title'\n const loading = document.createElement('span')\n loading.className = 'weapp-nav__loading'\n loading.setAttribute('hidden', '')\n const titleText = document.createElement('span')\n titleText.className = 'weapp-nav__title-text'\n title.append(loading, titleText)\n content.append(left, title, right)\n nav.append(status, content)\n root.append(style, spacer, nav)\n this.#nav = nav\n this.#title = titleText\n this.#loading = loading\n }\n}\n\nexport function ensureNavigationBarDefined() {\n if (typeof customElements === 'undefined') {\n return\n }\n if (!customElements.get(NAVIGATION_BAR_TAG)) {\n customElements.define(NAVIGATION_BAR_TAG, WeappNavigationBar)\n }\n}\n\nexport type { NavigationBarMetrics }\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"animation.mjs","names":["#operations","#add","#actions"],"sources":["../../../src/runtime/polyfill/animation.ts"],"sourcesContent":["export interface WebAnimationStepOptions {\n delay?: number\n duration?: number\n timingFunction?: string\n transformOrigin?: string\n}\n\ninterface WebAnimationOperation {\n type: string\n args: unknown[]\n}\n\ninterface WebAnimationStep {\n animates: WebAnimationOperation[]\n option: WebAnimationStepOptions\n}\n\nexport class WebAnimation {\n #actions: WebAnimationStep[] = []\n #operations: WebAnimationOperation[] = []\n\n constructor(private readonly defaults: WebAnimationStepOptions = {}) {}\n\n #add(type: string, ...args: unknown[]) {\n this.#operations.push({ type, args })\n return this\n }\n\n backgroundColor(value: string) { return this.#add('backgroundColor', value) }\n bottom(value: number | string) { return this.#add('bottom', value) }\n height(value: number | string) { return this.#add('height', value) }\n left(value: number | string) { return this.#add('left', value) }\n matrix(...args: number[]) { return this.#add('matrix', ...args) }\n matrix3d(...args: number[]) { return this.#add('matrix3d', ...args) }\n opacity(value: number) { return this.#add('opacity', value) }\n right(value: number | string) { return this.#add('right', value) }\n rotate(angle: number) { return this.#add('rotate', angle) }\n rotate3d(x: number, y: number, z: number, angle: number) { return this.#add('rotate3d', x, y, z, angle) }\n rotateX(angle: number) { return this.#add('rotateX', angle) }\n rotateY(angle: number) { return this.#add('rotateY', angle) }\n rotateZ(angle: number) { return this.#add('rotateZ', angle) }\n scale(x: number, y?: number) { return this.#add('scale', x, y ?? x) }\n scale3d(x: number, y: number, z: number) { return this.#add('scale3d', x, y, z) }\n scaleX(value: number) { return this.#add('scaleX', value) }\n scaleY(value: number) { return this.#add('scaleY', value) }\n scaleZ(value: number) { return this.#add('scaleZ', value) }\n skew(x: number, y: number) { return this.#add('skew', x, y) }\n skewX(angle: number) { return this.#add('skewX', angle) }\n skewY(angle: number) { return this.#add('skewY', angle) }\n top(value: number | string) { return this.#add('top', value) }\n translate(x: number, y?: number) { return this.#add('translate', x, y ?? 0) }\n translate3d(x: number, y: number, z: number) { return this.#add('translate3d', x, y, z) }\n translateX(value: number) { return this.#add('translateX', value) }\n translateY(value: number) { return this.#add('translateY', value) }\n translateZ(value: number) { return this.#add('translateZ', value) }\n width(value: number | string) { return this.#add('width', value) }\n\n step(options: WebAnimationStepOptions = {}) {\n this.#actions.push({\n animates: this.#operations.splice(0),\n option: { ...this.defaults, ...options },\n })\n return this\n }\n\n export() {\n return { actions: this.#actions.splice(0) }\n }\n}\n\nexport function createAnimation(options: WebAnimationStepOptions = {}) {\n return new WebAnimation(options)\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"animation.mjs","names":[],"sources":["../../../src/runtime/polyfill/animation.ts"],"sourcesContent":["export interface WebAnimationStepOptions {\n delay?: number\n duration?: number\n timingFunction?: string\n transformOrigin?: string\n}\n\ninterface WebAnimationOperation {\n type: string\n args: unknown[]\n}\n\ninterface WebAnimationStep {\n animates: WebAnimationOperation[]\n option: WebAnimationStepOptions\n}\n\nexport class WebAnimation {\n #actions: WebAnimationStep[] = []\n #operations: WebAnimationOperation[] = []\n\n constructor(private readonly defaults: WebAnimationStepOptions = {}) {}\n\n #add(type: string, ...args: unknown[]) {\n this.#operations.push({ type, args })\n return this\n }\n\n backgroundColor(value: string) { return this.#add('backgroundColor', value) }\n bottom(value: number | string) { return this.#add('bottom', value) }\n height(value: number | string) { return this.#add('height', value) }\n left(value: number | string) { return this.#add('left', value) }\n matrix(...args: number[]) { return this.#add('matrix', ...args) }\n matrix3d(...args: number[]) { return this.#add('matrix3d', ...args) }\n opacity(value: number) { return this.#add('opacity', value) }\n right(value: number | string) { return this.#add('right', value) }\n rotate(angle: number) { return this.#add('rotate', angle) }\n rotate3d(x: number, y: number, z: number, angle: number) { return this.#add('rotate3d', x, y, z, angle) }\n rotateX(angle: number) { return this.#add('rotateX', angle) }\n rotateY(angle: number) { return this.#add('rotateY', angle) }\n rotateZ(angle: number) { return this.#add('rotateZ', angle) }\n scale(x: number, y?: number) { return this.#add('scale', x, y ?? x) }\n scale3d(x: number, y: number, z: number) { return this.#add('scale3d', x, y, z) }\n scaleX(value: number) { return this.#add('scaleX', value) }\n scaleY(value: number) { return this.#add('scaleY', value) }\n scaleZ(value: number) { return this.#add('scaleZ', value) }\n skew(x: number, y: number) { return this.#add('skew', x, y) }\n skewX(angle: number) { return this.#add('skewX', angle) }\n skewY(angle: number) { return this.#add('skewY', angle) }\n top(value: number | string) { return this.#add('top', value) }\n translate(x: number, y?: number) { return this.#add('translate', x, y ?? 0) }\n translate3d(x: number, y: number, z: number) { return this.#add('translate3d', x, y, z) }\n translateX(value: number) { return this.#add('translateX', value) }\n translateY(value: number) { return this.#add('translateY', value) }\n translateZ(value: number) { return this.#add('translateZ', value) }\n width(value: number | string) { return this.#add('width', value) }\n\n step(options: WebAnimationStepOptions = {}) {\n this.#actions.push({\n animates: this.#operations.splice(0),\n option: { ...this.defaults, ...options },\n })\n return this\n }\n\n export() {\n return { actions: this.#actions.splice(0) }\n }\n}\n\nexport function createAnimation(options: WebAnimationStepOptions = {}) {\n return new WebAnimation(options)\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"appLifecycle.mjs","names":["#appInstance","#visibilityDocument","#unbindVisibility","#visibilityHandler","#syncVisibility","#launched","#launchOptions","#lastEnterOptions","#foreground"],"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,KAAKA,cAAc;GACrB,MAAM,gBAAgB,KAAKA,aAAa;GACxC,OAAO,OAAO,KAAKA,cAAc,QAAQ;GACzC,IAAI,SAAS,aAAa,GACxB,KAAKA,aAAa,aAAa;QAE5B,IAAI,CAAC,SAAS,KAAKA,aAAa,UAAU,GAC7C,KAAKA,aAAa,aAAa,CAAC;GAElC,OAAO;EACT;EACA,KAAKA,eAAe;EACpB,IAAI,CAAC,SAAS,KAAKA,aAAa,UAAU,GACxC,KAAKA,aAAa,aAAa,CAAC;EAElC,OAAO;CACT;CAEA,eAAe,SAAyC,OAAO,aAAa,cAAc,SAAY,UAAU;EAC9G,IAAI,CAAC,UAAU,KAAKC,wBAAwB,UAAU,OAAO,OAAO,qBAAqB,YACvF;EAEF,KAAKC,kBAAkB;EACvB,KAAKD,sBAAsB;EAC3B,KAAKE,2BAA2B,KAAKC,gBAAgB,MAAM;EAC3D,OAAO,iBAAiB,oBAAoB,KAAKD,kBAAkB;CACrE;CAEA,eAAe,OAAuB;EACpC,IAAI,CAAC,KAAKH,gBAAgB,KAAKK,WAC7B;EAEF,MAAM,UAAU,oBAAoB,KAAK;EACzC,KAAKC,iBAAiB,mBAAmB,OAAO;EAChD,KAAKC,oBAAoB,mBAAmB,OAAO;EACnD,KAAKC,cAAc;EACnB,KAAKH,YAAY;EACjB,KAAKL,aAAa,WAAW,mBAAmB,OAAO,CAAC;EACxD,KAAKA,aAAa,SAAS,mBAAmB,OAAO,CAAC;CACxD;CAEA,IAAI,WAAW;EACb,OAAO,KAAKA;CACd;CAEA,mBAAmB;EACjB,OAAO,KAAKM,iBACR,mBAAmB,KAAKA,cAAc,IACtC,oBAAoB,KAAK,oBAAoB,CAAC;CACpD;CAEA,kBAAkB;EAChB,OAAO,KAAKC,oBACR,mBAAmB,KAAKA,iBAAiB,IACzC,KAAK,iBAAiB;CAC5B;CAEA,UAAU;EACR,KAAKL,kBAAkB;CACzB;CAEA,gBAAgB,QAA4B;EAC1C,IAAI,CAAC,KAAKF,gBAAgB,CAAC,KAAKK,WAC9B;EAEF,IAAI,iBAAiB,MAAM,GAAG;GAC5B,IAAI,CAAC,KAAKG,aACR;GAEF,KAAKR,aAAa,SAAS;GAC3B,KAAKQ,cAAc;GACnB;EACF;EACA,IAAI,KAAKA,aACP;EAEF,MAAM,UAAU,oBAAoB,KAAK,oBAAoB,CAAC;EAC9D,KAAKD,oBAAoB,mBAAmB,OAAO;EACnD,KAAKP,aAAa,SAAS,mBAAmB,OAAO,CAAC;EACtD,KAAKQ,cAAc;CACrB;CAEA,oBAAoB;EAClB,IAAI,KAAKP,uBAAuB,KAAKE,oBACnC,KAAKF,oBAAoB,oBAAoB,oBAAoB,KAAKE,kBAAkB;EAE1F,KAAKF,sBAAsB;EAC3B,KAAKE,qBAAqB;CAC5B;AACF"}
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 +1 @@
1
- {"version":3,"file":"stack.mjs","names":["#tabEntries","#tabPageIds","#destroy","#hide","#mount","#show","#record"],"sources":["../../../../src/runtime/polyfill/routeRuntime/stack.ts"],"sourcesContent":["import type { PageRecord, PageStackEntry } from './options'\nimport {\n mountEntryToDom,\n setEntryActiveInDom,\n unmountEntryFromDom,\n} from './dom'\nimport { hidePageInstance, showPageInstance } from './lifecycle'\nimport { captureEntryScrollPosition, restoreEntryScrollPosition } from './scroll'\n\nexport class PageStackRuntime {\n readonly entries: PageStackEntry[] = []\n readonly #tabEntries = new Map<string, PageStackEntry>()\n #tabPageIds = new Set<string>()\n\n constructor(\n private readonly pageRegistry: Map<string, PageRecord>,\n private readonly onBeforeMount: (entry: PageStackEntry) => void,\n ) {}\n\n configureTabPages(ids: Iterable<string>) {\n this.#tabPageIds = new Set(ids)\n for (const [id, entry] of this.#tabEntries) {\n if (this.#tabPageIds.has(id)) {\n continue\n }\n this.#tabEntries.delete(id)\n this.#destroy(entry)\n }\n }\n\n push(id: string, query: Record<string, string>) {\n if (!this.pageRegistry.has(id)) {\n return false\n }\n this.#hide(this.entries[this.entries.length - 1])\n const entry: PageStackEntry = { id, query, active: true }\n this.entries.push(entry)\n this.#mount(entry)\n return true\n }\n\n replace(id: string, query: Record<string, string>) {\n if (!this.pageRegistry.has(id)) {\n return false\n }\n const entry: PageStackEntry = { id, query, active: true }\n if (this.entries.length) {\n const current = this.entries[this.entries.length - 1]!\n this.entries[this.entries.length - 1] = entry\n this.#destroy(current)\n }\n else {\n this.entries.push(entry)\n }\n this.#mount(entry)\n return true\n }\n\n relaunch(id: string, query: Record<string, string>) {\n if (!this.pageRegistry.has(id)) {\n return false\n }\n const previousEntries = this.entries.splice(0)\n for (const entry of previousEntries.reverse()) {\n this.#destroy(entry)\n }\n for (const entry of this.#tabEntries.values()) {\n this.#destroy(entry)\n }\n this.#tabEntries.clear()\n return this.push(id, query)\n }\n\n switchTab(id: string, query: Record<string, string>) {\n if (!this.#tabPageIds.has(id) || !this.pageRegistry.has(id)) {\n return false\n }\n\n const previousEntries = this.entries.splice(0)\n let target = previousEntries.find(entry => entry.id === id) ?? this.#tabEntries.get(id)\n for (const entry of previousEntries.reverse()) {\n if (entry === target) {\n continue\n }\n if (this.#tabPageIds.has(entry.id)) {\n this.#hide(entry)\n this.#tabEntries.set(entry.id, entry)\n }\n else {\n this.#destroy(entry)\n }\n }\n\n if (target) {\n this.#tabEntries.delete(id)\n target.query = query\n this.entries.push(target)\n this.#show(target)\n return true\n }\n\n target = { id, query, active: true }\n this.entries.push(target)\n this.#mount(target)\n return true\n }\n\n back(delta = 1) {\n if (this.entries.length <= 1) {\n return false\n }\n const normalizedDelta = Math.max(1, delta)\n const targetIndex = Math.max(0, this.entries.length - 1 - normalizedDelta)\n const removed = this.entries.splice(targetIndex + 1)\n for (const entry of removed.reverse()) {\n this.#destroy(entry)\n }\n this.#show(this.entries[targetIndex]!)\n return true\n }\n\n #mount(entry: PageStackEntry) {\n mountEntryToDom(entry, this.pageRegistry, this.onBeforeMount)\n }\n\n #record(entry: PageStackEntry) {\n return this.pageRegistry.get(entry.id)\n }\n\n #hide(entry: PageStackEntry | undefined) {\n if (!entry) {\n return\n }\n captureEntryScrollPosition(entry)\n setEntryActiveInDom(entry, false)\n const record = this.#record(entry)\n if (entry.instance && record) {\n hidePageInstance(entry.instance, record)\n }\n }\n\n #show(entry: PageStackEntry) {\n setEntryActiveInDom(entry, true)\n restoreEntryScrollPosition(entry)\n const record = this.#record(entry)\n if (entry.instance && record) {\n showPageInstance(entry.instance, record)\n }\n }\n\n #destroy(entry: PageStackEntry) {\n unmountEntryFromDom(entry)\n entry.active = false\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"stack.mjs","names":[],"sources":["../../../../src/runtime/polyfill/routeRuntime/stack.ts"],"sourcesContent":["import type { PageRecord, PageStackEntry } from './options'\nimport {\n mountEntryToDom,\n setEntryActiveInDom,\n unmountEntryFromDom,\n} from './dom'\nimport { hidePageInstance, showPageInstance } from './lifecycle'\nimport { captureEntryScrollPosition, restoreEntryScrollPosition } from './scroll'\n\nexport class PageStackRuntime {\n readonly entries: PageStackEntry[] = []\n readonly #tabEntries = new Map<string, PageStackEntry>()\n #tabPageIds = new Set<string>()\n\n constructor(\n private readonly pageRegistry: Map<string, PageRecord>,\n private readonly onBeforeMount: (entry: PageStackEntry) => void,\n ) {}\n\n configureTabPages(ids: Iterable<string>) {\n this.#tabPageIds = new Set(ids)\n for (const [id, entry] of this.#tabEntries) {\n if (this.#tabPageIds.has(id)) {\n continue\n }\n this.#tabEntries.delete(id)\n this.#destroy(entry)\n }\n }\n\n push(id: string, query: Record<string, string>) {\n if (!this.pageRegistry.has(id)) {\n return false\n }\n this.#hide(this.entries[this.entries.length - 1])\n const entry: PageStackEntry = { id, query, active: true }\n this.entries.push(entry)\n this.#mount(entry)\n return true\n }\n\n replace(id: string, query: Record<string, string>) {\n if (!this.pageRegistry.has(id)) {\n return false\n }\n const entry: PageStackEntry = { id, query, active: true }\n if (this.entries.length) {\n const current = this.entries[this.entries.length - 1]!\n this.entries[this.entries.length - 1] = entry\n this.#destroy(current)\n }\n else {\n this.entries.push(entry)\n }\n this.#mount(entry)\n return true\n }\n\n relaunch(id: string, query: Record<string, string>) {\n if (!this.pageRegistry.has(id)) {\n return false\n }\n const previousEntries = this.entries.splice(0)\n for (const entry of previousEntries.reverse()) {\n this.#destroy(entry)\n }\n for (const entry of this.#tabEntries.values()) {\n this.#destroy(entry)\n }\n this.#tabEntries.clear()\n return this.push(id, query)\n }\n\n switchTab(id: string, query: Record<string, string>) {\n if (!this.#tabPageIds.has(id) || !this.pageRegistry.has(id)) {\n return false\n }\n\n const previousEntries = this.entries.splice(0)\n let target = previousEntries.find(entry => entry.id === id) ?? this.#tabEntries.get(id)\n for (const entry of previousEntries.reverse()) {\n if (entry === target) {\n continue\n }\n if (this.#tabPageIds.has(entry.id)) {\n this.#hide(entry)\n this.#tabEntries.set(entry.id, entry)\n }\n else {\n this.#destroy(entry)\n }\n }\n\n if (target) {\n this.#tabEntries.delete(id)\n target.query = query\n this.entries.push(target)\n this.#show(target)\n return true\n }\n\n target = { id, query, active: true }\n this.entries.push(target)\n this.#mount(target)\n return true\n }\n\n back(delta = 1) {\n if (this.entries.length <= 1) {\n return false\n }\n const normalizedDelta = Math.max(1, delta)\n const targetIndex = Math.max(0, this.entries.length - 1 - normalizedDelta)\n const removed = this.entries.splice(targetIndex + 1)\n for (const entry of removed.reverse()) {\n this.#destroy(entry)\n }\n this.#show(this.entries[targetIndex]!)\n return true\n }\n\n #mount(entry: PageStackEntry) {\n mountEntryToDom(entry, this.pageRegistry, this.onBeforeMount)\n }\n\n #record(entry: PageStackEntry) {\n return this.pageRegistry.get(entry.id)\n }\n\n #hide(entry: PageStackEntry | undefined) {\n if (!entry) {\n return\n }\n captureEntryScrollPosition(entry)\n setEntryActiveInDom(entry, false)\n const record = this.#record(entry)\n if (entry.instance && record) {\n hidePageInstance(entry.instance, record)\n }\n }\n\n #show(entry: PageStackEntry) {\n setEntryActiveInDom(entry, true)\n restoreEntryScrollPosition(entry)\n const record = this.#record(entry)\n if (entry.instance && record) {\n showPageInstance(entry.instance, record)\n }\n }\n\n #destroy(entry: PageStackEntry) {\n unmountEntryFromDom(entry)\n entry.active = false\n }\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@weapp-vite/web",
3
3
  "type": "module",
4
- "version": "1.4.13",
4
+ "version": "1.4.15",
5
5
  "description": "Experimental web runtime for weapp-vite templates",
6
6
  "author": "ice breaker <1324318532@qq.com>",
7
7
  "license": "MIT",
@@ -55,18 +55,18 @@
55
55
  "esbuild": "^0.28.2",
56
56
  "htmlparser2": "^12.0.0",
57
57
  "lit": "^3.3.3",
58
- "magic-string": "^1.2.2",
58
+ "magic-string": "^1.2.3",
59
59
  "pathe": "^2.0.3",
60
60
  "postcss": "^8.5.26",
61
61
  "postcss-selector-parser": "^7.1.5",
62
- "rolldown": "1.2.5",
62
+ "rolldown": "1.2.6",
63
63
  "@weapp-core/constants": "0.2.0",
64
- "rolldown-require": "2.0.26",
65
- "wevu": "6.23.0",
66
- "@weapp-core/shared": "3.2.0"
64
+ "@weapp-core/shared": "3.2.0",
65
+ "rolldown-require": "2.0.27",
66
+ "wevu": "6.25.0"
67
67
  },
68
68
  "devDependencies": {
69
- "happy-dom": "^20.11.6"
69
+ "happy-dom": "^20.11.12"
70
70
  },
71
71
  "scripts": {
72
72
  "dev": "tsdown -w --sourcemap",