@weapp-vite/web 1.3.37 → 1.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +144 -5
- package/dist/_virtual/_rolldown/runtime.mjs +19 -1
- package/dist/compiler/wxml/attributes.mjs +1 -1
- package/dist/compiler/wxml/attributes.mjs.map +1 -1
- package/dist/compiler/wxml/compile.mjs +6 -3
- package/dist/compiler/wxml/compile.mjs.map +1 -1
- package/dist/compiler/wxml/interpolation.mjs +1 -2
- package/dist/compiler/wxml/interpolation.mjs.map +1 -1
- package/dist/compiler/wxml/navigation.mjs +5 -7
- package/dist/compiler/wxml/navigation.mjs.map +1 -1
- package/dist/compiler/wxml/parser.mjs +5 -5
- package/dist/compiler/wxml/parser.mjs.map +1 -1
- package/dist/compiler/wxml/renderer.mjs +16 -12
- package/dist/compiler/wxml/renderer.mjs.map +1 -1
- package/dist/compiler/wxml/specialNodes.mjs +8 -2
- package/dist/compiler/wxml/specialNodes.mjs.map +1 -1
- package/dist/compiler/wxml/types.d.mts +12 -0
- package/dist/compiler/wxs.mjs +5 -5
- package/dist/compiler/wxs.mjs.map +1 -1
- package/dist/css/wxss.d.mts +1 -0
- package/dist/css/wxss.mjs +110 -9
- package/dist/css/wxss.mjs.map +1 -1
- package/dist/index.d.mts +24 -6
- package/dist/index.mjs +21 -4
- package/dist/plugin/assets.d.mts +7 -0
- package/dist/plugin/assets.mjs +122 -0
- package/dist/plugin/assets.mjs.map +1 -0
- package/dist/plugin/constants.mjs +10 -1
- package/dist/plugin/constants.mjs.map +1 -1
- package/dist/plugin/dependencyScan.mjs +41 -0
- package/dist/plugin/dependencyScan.mjs.map +1 -0
- package/dist/plugin/entry.mjs +55 -6
- package/dist/plugin/entry.mjs.map +1 -1
- package/dist/plugin/files.mjs +1 -1
- package/dist/plugin/files.mjs.map +1 -1
- package/dist/plugin/index.d.mts +37 -3
- package/dist/plugin/index.mjs +244 -73
- package/dist/plugin/index.mjs.map +1 -1
- package/dist/plugin/layout.mjs +24 -0
- package/dist/plugin/layout.mjs.map +1 -0
- package/dist/plugin/path.mjs +6 -2
- package/dist/plugin/path.mjs.map +1 -1
- package/dist/plugin/register.mjs +45 -33
- package/dist/plugin/register.mjs.map +1 -1
- package/dist/plugin/scan.mjs +211 -92
- package/dist/plugin/scan.mjs.map +1 -1
- package/dist/plugin/scanSfc.mjs +65 -0
- package/dist/plugin/scanSfc.mjs.map +1 -0
- package/dist/plugin/state.mjs +3 -2
- package/dist/plugin/state.mjs.map +1 -1
- package/dist/plugin/styleModule.mjs +52 -0
- package/dist/plugin/styleModule.mjs.map +1 -0
- package/dist/plugin/types.d.mts +37 -1
- package/dist/plugin/vueSfc.mjs +150 -0
- package/dist/plugin/vueSfc.mjs.map +1 -0
- package/dist/runtime/appShell/container.mjs +25 -0
- package/dist/runtime/appShell/container.mjs.map +1 -0
- package/dist/runtime/appShell/tabBar/index.mjs +192 -0
- package/dist/runtime/appShell/tabBar/index.mjs.map +1 -0
- package/dist/runtime/appShell/tabBar/style.mjs +127 -0
- package/dist/runtime/appShell/tabBar/style.mjs.map +1 -0
- package/dist/runtime/button/helpers.mjs +1 -58
- package/dist/runtime/button/helpers.mjs.map +1 -1
- package/dist/runtime/button/index.d.mts +4 -5
- package/dist/runtime/button/index.mjs +6 -28
- package/dist/runtime/button/index.mjs.map +1 -1
- package/dist/runtime/button/style.mjs +53 -28
- package/dist/runtime/button/style.mjs.map +1 -1
- package/dist/runtime/component/behavior.mjs +26 -2
- package/dist/runtime/component/behavior.mjs.map +1 -1
- package/dist/runtime/component/element.mjs +107 -31
- package/dist/runtime/component/element.mjs.map +1 -1
- package/dist/runtime/component/observers.mjs +36 -0
- package/dist/runtime/component/observers.mjs.map +1 -0
- package/dist/runtime/component/publicInstance.mjs +48 -0
- package/dist/runtime/component/publicInstance.mjs.map +1 -0
- package/dist/runtime/component/relations.mjs +36 -0
- package/dist/runtime/component/relations.mjs.map +1 -0
- package/dist/runtime/component/slots.mjs +24 -0
- package/dist/runtime/component/slots.mjs.map +1 -0
- package/dist/runtime/component/state.mjs +13 -3
- package/dist/runtime/component/state.mjs.map +1 -1
- package/dist/runtime/component/types.d.mts +29 -4
- package/dist/runtime/component/virtualHost.mjs +83 -0
- package/dist/runtime/component/virtualHost.mjs.map +1 -0
- package/dist/runtime/host/index.d.mts +13 -0
- package/dist/runtime/host/index.mjs +47 -0
- package/dist/runtime/host/index.mjs.map +1 -0
- package/dist/runtime/host/types.d.mts +28 -0
- package/dist/runtime/hostGlobals.d.mts +9 -0
- package/dist/runtime/hostGlobals.mjs +39 -0
- package/dist/runtime/hostGlobals.mjs.map +1 -0
- package/dist/runtime/index.d.mts +21 -3
- package/dist/runtime/index.mjs +26 -4
- package/dist/runtime/index.mjs.map +1 -0
- package/dist/runtime/legacyTemplate/dom.mjs +3 -3
- package/dist/runtime/legacyTemplate/dom.mjs.map +1 -1
- package/dist/runtime/legacyTemplate/expression.mjs +9 -9
- package/dist/runtime/legacyTemplate/expression.mjs.map +1 -1
- package/dist/runtime/legacyTemplate/index.mjs +6 -6
- package/dist/runtime/legacyTemplate/index.mjs.map +1 -1
- package/dist/runtime/nativeComponents/canvas/index.mjs +53 -0
- package/dist/runtime/nativeComponents/canvas/index.mjs.map +1 -0
- package/dist/runtime/nativeComponents/checkbox.mjs +137 -0
- package/dist/runtime/nativeComponents/checkbox.mjs.map +1 -0
- package/dist/runtime/nativeComponents/cover/index.mjs +23 -0
- package/dist/runtime/nativeComponents/cover/index.mjs.map +1 -0
- package/dist/runtime/nativeComponents/form.d.mts +7 -0
- package/dist/runtime/nativeComponents/form.mjs +50 -0
- package/dist/runtime/nativeComponents/form.mjs.map +1 -0
- package/dist/runtime/nativeComponents/formControl.mjs +61 -0
- package/dist/runtime/nativeComponents/formControl.mjs.map +1 -0
- package/dist/runtime/nativeComponents/helpers.mjs +25 -0
- package/dist/runtime/nativeComponents/helpers.mjs.map +1 -0
- package/dist/runtime/nativeComponents/icon/helpers.mjs +42 -0
- package/dist/runtime/nativeComponents/icon/helpers.mjs.map +1 -0
- package/dist/runtime/nativeComponents/icon/index.mjs +45 -0
- package/dist/runtime/nativeComponents/icon/index.mjs.map +1 -0
- package/dist/runtime/nativeComponents/icon/style.mjs +176 -0
- package/dist/runtime/nativeComponents/icon/style.mjs.map +1 -0
- package/dist/runtime/nativeComponents/image.d.mts +8 -0
- package/dist/runtime/nativeComponents/image.mjs +121 -0
- package/dist/runtime/nativeComponents/image.mjs.map +1 -0
- package/dist/runtime/nativeComponents/index.d.mts +11 -0
- package/dist/runtime/nativeComponents/index.mjs +83 -0
- package/dist/runtime/nativeComponents/index.mjs.map +1 -0
- package/dist/runtime/nativeComponents/input.d.mts +8 -0
- package/dist/runtime/nativeComponents/input.mjs +131 -0
- package/dist/runtime/nativeComponents/input.mjs.map +1 -0
- package/dist/runtime/nativeComponents/label.mjs +36 -0
- package/dist/runtime/nativeComponents/label.mjs.map +1 -0
- package/dist/runtime/nativeComponents/mediaRegistry.mjs +47 -0
- package/dist/runtime/nativeComponents/mediaRegistry.mjs.map +1 -0
- package/dist/runtime/nativeComponents/movable/helpers.mjs +23 -0
- package/dist/runtime/nativeComponents/movable/helpers.mjs.map +1 -0
- package/dist/runtime/nativeComponents/movable/index.mjs +117 -0
- package/dist/runtime/nativeComponents/movable/index.mjs.map +1 -0
- package/dist/runtime/nativeComponents/navigator.mjs +200 -0
- package/dist/runtime/nativeComponents/navigator.mjs.map +1 -0
- package/dist/runtime/nativeComponents/picker/editors.mjs +74 -0
- package/dist/runtime/nativeComponents/picker/editors.mjs.map +1 -0
- package/dist/runtime/nativeComponents/picker/helpers.mjs +57 -0
- package/dist/runtime/nativeComponents/picker/helpers.mjs.map +1 -0
- package/dist/runtime/nativeComponents/picker/index.mjs +210 -0
- package/dist/runtime/nativeComponents/picker/index.mjs.map +1 -0
- package/dist/runtime/nativeComponents/picker/style.mjs +71 -0
- package/dist/runtime/nativeComponents/picker/style.mjs.map +1 -0
- package/dist/runtime/nativeComponents/pickerView/column.mjs +134 -0
- package/dist/runtime/nativeComponents/pickerView/column.mjs.map +1 -0
- package/dist/runtime/nativeComponents/pickerView/helpers.mjs +17 -0
- package/dist/runtime/nativeComponents/pickerView/helpers.mjs.map +1 -0
- package/dist/runtime/nativeComponents/pickerView/index.mjs +128 -0
- package/dist/runtime/nativeComponents/pickerView/index.mjs.map +1 -0
- package/dist/runtime/nativeComponents/pickerView/style.mjs +58 -0
- package/dist/runtime/nativeComponents/pickerView/style.mjs.map +1 -0
- package/dist/runtime/nativeComponents/primitives.mjs +16 -0
- package/dist/runtime/nativeComponents/primitives.mjs.map +1 -0
- package/dist/runtime/nativeComponents/progress/helpers.mjs +29 -0
- package/dist/runtime/nativeComponents/progress/helpers.mjs.map +1 -0
- package/dist/runtime/nativeComponents/progress/index.mjs +130 -0
- package/dist/runtime/nativeComponents/progress/index.mjs.map +1 -0
- package/dist/runtime/nativeComponents/progress/style.mjs +40 -0
- package/dist/runtime/nativeComponents/progress/style.mjs.map +1 -0
- package/dist/runtime/nativeComponents/radio.mjs +147 -0
- package/dist/runtime/nativeComponents/radio.mjs.map +1 -0
- package/dist/runtime/nativeComponents/richText/helpers.mjs +230 -0
- package/dist/runtime/nativeComponents/richText/helpers.mjs.map +1 -0
- package/dist/runtime/nativeComponents/richText/index.mjs +74 -0
- package/dist/runtime/nativeComponents/richText/index.mjs.map +1 -0
- package/dist/runtime/nativeComponents/scrollView.d.mts +15 -0
- package/dist/runtime/nativeComponents/scrollView.mjs +79 -0
- package/dist/runtime/nativeComponents/scrollView.mjs.map +1 -0
- package/dist/runtime/nativeComponents/slider/helpers.mjs +28 -0
- package/dist/runtime/nativeComponents/slider/helpers.mjs.map +1 -0
- package/dist/runtime/nativeComponents/slider/index.mjs +120 -0
- package/dist/runtime/nativeComponents/slider/index.mjs.map +1 -0
- package/dist/runtime/nativeComponents/slider/style.mjs +60 -0
- package/dist/runtime/nativeComponents/slider/style.mjs.map +1 -0
- package/dist/runtime/nativeComponents/style.mjs +41 -0
- package/dist/runtime/nativeComponents/style.mjs.map +1 -0
- package/dist/runtime/nativeComponents/swiper/helpers.mjs +52 -0
- package/dist/runtime/nativeComponents/swiper/helpers.mjs.map +1 -0
- package/dist/runtime/nativeComponents/swiper/index.mjs +235 -0
- package/dist/runtime/nativeComponents/swiper/index.mjs.map +1 -0
- package/dist/runtime/nativeComponents/swiper/item.mjs +14 -0
- package/dist/runtime/nativeComponents/swiper/item.mjs.map +1 -0
- package/dist/runtime/nativeComponents/swiper/style.mjs +20 -0
- package/dist/runtime/nativeComponents/swiper/style.mjs.map +1 -0
- package/dist/runtime/nativeComponents/switch.d.mts +7 -0
- package/dist/runtime/nativeComponents/switch.mjs +132 -0
- package/dist/runtime/nativeComponents/switch.mjs.map +1 -0
- package/dist/runtime/nativeComponents/textarea.d.mts +9 -0
- package/dist/runtime/nativeComponents/textarea.mjs +144 -0
- package/dist/runtime/nativeComponents/textarea.mjs.map +1 -0
- package/dist/runtime/nativeComponents/video/helpers.d.mts +12 -0
- package/dist/runtime/nativeComponents/video/helpers.mjs +21 -0
- package/dist/runtime/nativeComponents/video/helpers.mjs.map +1 -0
- package/dist/runtime/nativeComponents/video/index.mjs +124 -0
- package/dist/runtime/nativeComponents/video/index.mjs.map +1 -0
- package/dist/runtime/nativeComponents/video/style.mjs +14 -0
- package/dist/runtime/nativeComponents/video/style.mjs.map +1 -0
- package/dist/runtime/navigationBar/index.mjs +1 -3
- package/dist/runtime/navigationBar/index.mjs.map +1 -1
- package/dist/runtime/pageLayout.d.mts +9 -0
- package/dist/runtime/pageLayout.mjs +16 -0
- package/dist/runtime/pageLayout.mjs.map +1 -0
- package/dist/runtime/polyfill/animation.mjs +120 -0
- package/dist/runtime/polyfill/animation.mjs.map +1 -0
- package/dist/runtime/polyfill/appState.mjs +1 -1
- package/dist/runtime/polyfill/appState.mjs.map +1 -1
- package/dist/runtime/polyfill/async.d.mts +7 -0
- package/dist/runtime/polyfill/async.mjs.map +1 -1
- package/dist/runtime/polyfill/canvasContext.mjs +41 -0
- package/dist/runtime/polyfill/canvasContext.mjs.map +1 -1
- package/dist/runtime/polyfill/device.mjs +1 -1
- package/dist/runtime/polyfill/device.mjs.map +1 -1
- package/dist/runtime/polyfill/deviceApi.mjs +6 -3
- package/dist/runtime/polyfill/deviceApi.mjs.map +1 -1
- package/dist/runtime/polyfill/deviceAuthSystemApi.mjs +8 -2
- package/dist/runtime/polyfill/deviceAuthSystemApi.mjs.map +1 -1
- package/dist/runtime/polyfill/eventBus.mjs +56 -0
- package/dist/runtime/polyfill/eventBus.mjs.map +1 -0
- package/dist/runtime/polyfill/fileSystemManager.mjs +5 -2
- package/dist/runtime/polyfill/fileSystemManager.mjs.map +1 -1
- package/dist/runtime/polyfill/files.mjs +10 -10
- package/dist/runtime/polyfill/files.mjs.map +1 -1
- package/dist/runtime/polyfill/font.mjs +33 -0
- package/dist/runtime/polyfill/font.mjs.map +1 -0
- package/dist/runtime/polyfill/index.d.mts +2 -2
- package/dist/runtime/polyfill/index.mjs +49 -45
- package/dist/runtime/polyfill/index.mjs.map +1 -1
- package/dist/runtime/polyfill/interaction.mjs +7 -6
- package/dist/runtime/polyfill/interaction.mjs.map +1 -1
- package/dist/runtime/polyfill/interactionApi.mjs +9 -5
- package/dist/runtime/polyfill/interactionApi.mjs.map +1 -1
- package/dist/runtime/polyfill/intersectionObserver.mjs +106 -0
- package/dist/runtime/polyfill/intersectionObserver.mjs.map +1 -0
- package/dist/runtime/polyfill/locale.mjs +14 -0
- package/dist/runtime/polyfill/locale.mjs.map +1 -0
- package/dist/runtime/polyfill/locationApi.mjs +11 -6
- package/dist/runtime/polyfill/locationApi.mjs.map +1 -1
- package/dist/runtime/polyfill/mediaActions.mjs +2 -2
- package/dist/runtime/polyfill/mediaActions.mjs.map +1 -1
- package/dist/runtime/polyfill/mediaApi/file.mjs +3 -2
- package/dist/runtime/polyfill/mediaApi/file.mjs.map +1 -1
- package/dist/runtime/polyfill/mediaApi/info.mjs +6 -4
- package/dist/runtime/polyfill/mediaApi/info.mjs.map +1 -1
- package/dist/runtime/polyfill/mediaApi/picker.mjs +16 -8
- package/dist/runtime/polyfill/mediaApi/picker.mjs.map +1 -1
- package/dist/runtime/polyfill/mediaApi/preview.mjs +4 -2
- package/dist/runtime/polyfill/mediaApi/preview.mjs.map +1 -1
- package/dist/runtime/polyfill/mediaApi/process.mjs +4 -2
- package/dist/runtime/polyfill/mediaApi/process.mjs.map +1 -1
- package/dist/runtime/polyfill/menuApi.mjs +39 -4
- package/dist/runtime/polyfill/menuApi.mjs.map +1 -1
- package/dist/runtime/polyfill/navigationBarRuntime.mjs +6 -1
- package/dist/runtime/polyfill/navigationBarRuntime.mjs.map +1 -1
- package/dist/runtime/polyfill/network/request.mjs +2 -2
- package/dist/runtime/polyfill/network/request.mjs.map +1 -1
- package/dist/runtime/polyfill/platformApi.mjs +3 -2
- package/dist/runtime/polyfill/platformApi.mjs.map +1 -1
- package/dist/runtime/polyfill/routeRuntime/appLifecycle.mjs +88 -0
- package/dist/runtime/polyfill/routeRuntime/appLifecycle.mjs.map +1 -0
- package/dist/runtime/polyfill/routeRuntime/dom.mjs +44 -15
- package/dist/runtime/polyfill/routeRuntime/dom.mjs.map +1 -1
- package/dist/runtime/polyfill/routeRuntime/history.d.mts +30 -0
- package/dist/runtime/polyfill/routeRuntime/history.mjs +148 -0
- package/dist/runtime/polyfill/routeRuntime/history.mjs.map +1 -0
- package/dist/runtime/polyfill/routeRuntime/lifecycle.mjs +39 -8
- package/dist/runtime/polyfill/routeRuntime/lifecycle.mjs.map +1 -1
- package/dist/runtime/polyfill/routeRuntime/options.d.mts +11 -1
- package/dist/runtime/polyfill/routeRuntime/options.mjs +0 -1
- package/dist/runtime/polyfill/routeRuntime/options.mjs.map +1 -1
- package/dist/runtime/polyfill/routeRuntime/result.mjs +12 -0
- package/dist/runtime/polyfill/routeRuntime/result.mjs.map +1 -0
- package/dist/runtime/polyfill/routeRuntime/scroll.mjs +39 -0
- package/dist/runtime/polyfill/routeRuntime/scroll.mjs.map +1 -0
- package/dist/runtime/polyfill/routeRuntime/stack.mjs +122 -0
- package/dist/runtime/polyfill/routeRuntime/stack.mjs.map +1 -0
- package/dist/runtime/polyfill/routeRuntime.d.mts +26 -17
- package/dist/runtime/polyfill/routeRuntime.mjs +121 -96
- package/dist/runtime/polyfill/routeRuntime.mjs.map +1 -1
- package/dist/runtime/polyfill/runtimeDataApi.mjs +8 -3
- package/dist/runtime/polyfill/runtimeDataApi.mjs.map +1 -1
- package/dist/runtime/polyfill/runtimeOps.mjs +10 -6
- package/dist/runtime/polyfill/runtimeOps.mjs.map +1 -1
- package/dist/runtime/polyfill/selectorQuery.mjs +70 -14
- package/dist/runtime/polyfill/selectorQuery.mjs.map +1 -1
- package/dist/runtime/polyfill/storage.mjs +5 -2
- package/dist/runtime/polyfill/storage.mjs.map +1 -1
- package/dist/runtime/polyfill/storageAsync.mjs +4 -2
- package/dist/runtime/polyfill/storageAsync.mjs.map +1 -1
- package/dist/runtime/polyfill/system.mjs +31 -4
- package/dist/runtime/polyfill/system.mjs.map +1 -1
- package/dist/runtime/polyfill/systemApi.mjs +2 -1
- package/dist/runtime/polyfill/systemApi.mjs.map +1 -1
- package/dist/runtime/polyfill/types/locationRuntime.d.mts +1 -4
- package/dist/runtime/polyfill/types/platformRuntime.d.mts +9 -0
- package/dist/runtime/polyfill/types/systemAuth.d.mts +20 -9
- package/dist/runtime/polyfill/types/tabBarRuntime.d.mts +25 -0
- package/dist/runtime/polyfill/ui.mjs +2 -6
- package/dist/runtime/polyfill/ui.mjs.map +1 -1
- package/dist/runtime/polyfill/uiMediaApi.d.mts +11 -10
- package/dist/runtime/polyfill/uiMediaApi.mjs +26 -2
- package/dist/runtime/polyfill/uiMediaApi.mjs.map +1 -1
- package/dist/runtime/polyfill/videoContext.mjs +4 -0
- package/dist/runtime/polyfill/videoContext.mjs.map +1 -1
- package/dist/runtime/polyfill/vkSession.mjs +4 -14
- package/dist/runtime/polyfill/vkSession.mjs.map +1 -1
- package/dist/runtime/polyfill.d.mts +2 -2
- package/dist/runtime/renderContext.mjs +1 -1
- package/dist/runtime/renderContext.mjs.map +1 -1
- package/dist/runtime/rpx.mjs +17 -8
- package/dist/runtime/rpx.mjs.map +1 -1
- package/dist/runtime/seo/index.d.mts +31 -0
- package/dist/runtime/seo/index.mjs +94 -0
- package/dist/runtime/seo/index.mjs.map +1 -0
- package/dist/runtime/viewport/index.d.mts +12 -0
- package/dist/runtime/viewport/index.mjs +44 -0
- package/dist/runtime/viewport/index.mjs.map +1 -0
- package/dist/runtime/viewport/style.mjs +62 -0
- package/dist/runtime/viewport/style.mjs.map +1 -0
- package/dist/runtime/viewport/types.d.mts +14 -0
- package/dist/runtime/wevu.d.mts +20 -0
- package/dist/runtime/wevu.mjs +73 -0
- package/dist/runtime/wevu.mjs.map +1 -0
- package/dist/shared/nativeComponents.mjs +401 -0
- package/dist/shared/nativeComponents.mjs.map +1 -0
- package/dist/shared/tabBar.d.mts +19 -0
- package/dist/shared/tabBar.mjs +37 -0
- package/dist/shared/tabBar.mjs.map +1 -0
- package/dist/shared/wxml.mjs +3 -20
- package/dist/shared/wxml.mjs.map +1 -1
- package/package.json +14 -6
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"switch.mjs","names":["#input","#initialCheckedCaptured","#initialChecked","#ensureStructure","#syncAttributes"],"sources":["../../../src/runtime/nativeComponents/switch.ts"],"sourcesContent":["import { getNativeComponentDescriptor } from '../../shared/nativeComponents'\nimport { connectFormControl, disconnectFormControl } from './formControl'\nimport { dispatchMiniProgramEvent, readBooleanAttribute, resolveContainingShadowRoot } from './helpers'\nimport { ensureNativeComponentStyle } from './style'\n\nconst BaseElement = (globalThis.HTMLElement ?? class {}) as typeof HTMLElement\n\nexport function createSwitchEventDetail(checked: boolean) {\n return { value: checked }\n}\n\nexport class WeappSwitch extends BaseElement {\n static observedAttributes = [...getNativeComponentDescriptor('switch')!.attributes]\n\n #input?: HTMLInputElement\n #initialChecked = false\n #initialCheckedCaptured = false\n\n get checked() {\n return this.#input?.checked ?? readBooleanAttribute(this, 'checked')\n }\n\n set checked(value: boolean) {\n this.toggleAttribute('checked', Boolean(value))\n }\n\n get disabled() {\n return readBooleanAttribute(this, 'disabled')\n }\n\n get formControlName() {\n return this.getAttribute('name') ?? ''\n }\n\n get formControlValue() {\n return this.checked\n }\n\n get formControlDisabled() {\n return this.disabled\n }\n\n connectedCallback() {\n ensureNativeComponentStyle(resolveContainingShadowRoot(this))\n if (!this.#initialCheckedCaptured) {\n this.#initialChecked = readBooleanAttribute(this, 'checked')\n this.#initialCheckedCaptured = true\n }\n this.#ensureStructure()\n this.#syncAttributes()\n connectFormControl(this)\n }\n\n disconnectedCallback() {\n disconnectFormControl(this)\n }\n\n attributeChangedCallback() {\n this.#syncAttributes()\n }\n\n formReset() {\n if (this.#input) {\n this.#input.checked = this.#initialChecked\n }\n }\n\n formActivate() {\n if (!this.disabled) {\n this.#input?.click()\n }\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 { padding: 0 5px; --weapp-control-color: #07c160; }\n label { display: inline-flex; align-items: center; cursor: pointer; }\n input { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }\n .control {\n position: relative;\n box-sizing: border-box;\n width: 52px;\n height: 32px;\n border: 1px solid #dfdfdf;\n border-radius: 16px;\n background: #dfdfdf;\n transition: background 0.2s, border-color 0.2s;\n }\n .control::after {\n position: absolute;\n top: 1px;\n left: 1px;\n width: 28px;\n height: 28px;\n border-radius: 50%;\n background: #ffffff;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.35);\n content: '';\n transition: transform 0.2s;\n }\n input:checked + .control { border-color: var(--weapp-control-color); background: var(--weapp-control-color); }\n input:checked + .control::after { transform: translateX(20px); }\n input:disabled + .control { opacity: 0.5; cursor: not-allowed; }\n :host([type='checkbox']) .control {\n width: 23px;\n height: 23px;\n border-radius: 3px;\n background: #ffffff;\n }\n :host([type='checkbox']) .control::after { display: none; }\n :host([type='checkbox']) input:checked + .control { background: var(--weapp-control-color); }\n :host([type='checkbox']) input:checked + .control::before {\n position: absolute;\n top: 3px;\n left: 7px;\n width: 6px;\n height: 11px;\n border: solid #ffffff;\n border-width: 0 2px 2px 0;\n content: '';\n transform: rotate(45deg);\n }\n `\n const label = document.createElement('label')\n const input = document.createElement('input')\n input.type = 'checkbox'\n input.addEventListener('change', (event) => {\n event.stopPropagation()\n dispatchMiniProgramEvent(this, 'change', createSwitchEventDetail(input.checked))\n })\n const control = document.createElement('span')\n control.className = 'control'\n label.append(input, control)\n root.append(style, label)\n this.#input = input\n }\n\n #syncAttributes() {\n if (!this.#input) {\n return\n }\n this.#input.checked = readBooleanAttribute(this, 'checked')\n this.#input.disabled = this.disabled\n this.style.setProperty('--weapp-control-color', this.getAttribute('color') || '#07c160')\n }\n}\n"],"mappings":";;;;;;AAKA,MAAM,cAAe,WAAW,eAAe,MAAM,CAAC;AAEtD,SAAgB,wBAAwB,SAAkB;CACxD,OAAO,EAAE,OAAO,QAAQ;AAC1B;AAEA,IAAa,cAAb,cAAiC,YAAY;CAC3C,OAAO,qBAAqB,CAAC,GAAG,6BAA6B,QAAQ,CAAC,CAAE,UAAU;CAElF;CACA,kBAAkB;CAClB,0BAA0B;CAE1B,IAAI,UAAU;EACZ,OAAO,KAAKA,QAAQ,WAAW,qBAAqB,MAAM,SAAS;CACrE;CAEA,IAAI,QAAQ,OAAgB;EAC1B,KAAK,gBAAgB,WAAW,QAAQ,KAAK,CAAC;CAChD;CAEA,IAAI,WAAW;EACb,OAAO,qBAAqB,MAAM,UAAU;CAC9C;CAEA,IAAI,kBAAkB;EACpB,OAAO,KAAK,aAAa,MAAM,KAAK;CACtC;CAEA,IAAI,mBAAmB;EACrB,OAAO,KAAK;CACd;CAEA,IAAI,sBAAsB;EACxB,OAAO,KAAK;CACd;CAEA,oBAAoB;EAClB,2BAA2B,4BAA4B,IAAI,CAAC;EAC5D,IAAI,CAAC,KAAKC,yBAAyB;GACjC,KAAKC,kBAAkB,qBAAqB,MAAM,SAAS;GAC3D,KAAKD,0BAA0B;EACjC;EACA,KAAKE,iBAAiB;EACtB,KAAKC,gBAAgB;EACrB,mBAAmB,IAAI;CACzB;CAEA,uBAAuB;EACrB,sBAAsB,IAAI;CAC5B;CAEA,2BAA2B;EACzB,KAAKA,gBAAgB;CACvB;CAEA,YAAY;EACV,IAAI,KAAKJ,QACP,KAAKA,OAAO,UAAU,KAAKE;CAE/B;CAEA,eAAe;EACb,IAAI,CAAC,KAAK,UACR,KAAKF,QAAQ,MAAM;CAEvB;CAEA,mBAAmB;EACjB,IAAI,KAAKA,UAAU,OAAO,aAAa,aACrC;EAEF,MAAM,OAAO,KAAK,cAAc,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;EAClE,MAAM,QAAQ,SAAS,cAAc,OAAO;EAC5C,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiDpB,MAAM,QAAQ,SAAS,cAAc,OAAO;EAC5C,MAAM,QAAQ,SAAS,cAAc,OAAO;EAC5C,MAAM,OAAO;EACb,MAAM,iBAAiB,WAAW,UAAU;GAC1C,MAAM,gBAAgB;GACtB,yBAAyB,MAAM,UAAU,wBAAwB,MAAM,OAAO,CAAC;EACjF,CAAC;EACD,MAAM,UAAU,SAAS,cAAc,MAAM;EAC7C,QAAQ,YAAY;EACpB,MAAM,OAAO,OAAO,OAAO;EAC3B,KAAK,OAAO,OAAO,KAAK;EACxB,KAAKA,SAAS;CAChB;CAEA,kBAAkB;EAChB,IAAI,CAAC,KAAKA,QACR;EAEF,KAAKA,OAAO,UAAU,qBAAqB,MAAM,SAAS;EAC1D,KAAKA,OAAO,WAAW,KAAK;EAC5B,KAAK,MAAM,YAAY,yBAAyB,KAAK,aAAa,OAAO,KAAK,SAAS;CACzF;AACF"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
//#region src/runtime/nativeComponents/textarea.d.ts
|
|
2
|
+
declare function createTextareaLineChangeDetail(textarea: Pick<HTMLTextAreaElement, 'scrollHeight' | 'value'>): {
|
|
3
|
+
height: number;
|
|
4
|
+
heightRpx: number;
|
|
5
|
+
lineCount: number;
|
|
6
|
+
};
|
|
7
|
+
//#endregion
|
|
8
|
+
export { createTextareaLineChangeDetail };
|
|
9
|
+
//# sourceMappingURL=textarea.d.mts.map
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { getNativeComponentDescriptor } from "../../shared/nativeComponents.mjs";
|
|
2
|
+
import { connectFormControl, disconnectFormControl } from "./formControl.mjs";
|
|
3
|
+
import { dispatchMiniProgramEvent, readBooleanAttribute, resolveContainingShadowRoot, resolveMaxLength } from "./helpers.mjs";
|
|
4
|
+
import { ensureNativeComponentStyle } from "./style.mjs";
|
|
5
|
+
import { createInputEventDetail } from "./input.mjs";
|
|
6
|
+
|
|
7
|
+
//#region src/runtime/nativeComponents/textarea.ts
|
|
8
|
+
const BaseElement = globalThis.HTMLElement ?? class {};
|
|
9
|
+
function createTextareaLineChangeDetail(textarea) {
|
|
10
|
+
const height = textarea.scrollHeight;
|
|
11
|
+
return {
|
|
12
|
+
height,
|
|
13
|
+
heightRpx: height * 2,
|
|
14
|
+
lineCount: textarea.value.split("\n").length
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
var WeappTextarea = class extends BaseElement {
|
|
18
|
+
static observedAttributes = [...getNativeComponentDescriptor("textarea").attributes];
|
|
19
|
+
#textarea;
|
|
20
|
+
#initialValue = "";
|
|
21
|
+
#initialValueCaptured = false;
|
|
22
|
+
#lastLineCount = 1;
|
|
23
|
+
#lastHeight = 0;
|
|
24
|
+
get value() {
|
|
25
|
+
return this.#textarea?.value ?? this.getAttribute("value") ?? "";
|
|
26
|
+
}
|
|
27
|
+
set value(value) {
|
|
28
|
+
this.setAttribute("value", value ?? "");
|
|
29
|
+
}
|
|
30
|
+
get formControlName() {
|
|
31
|
+
return this.getAttribute("name") ?? "";
|
|
32
|
+
}
|
|
33
|
+
get formControlValue() {
|
|
34
|
+
return this.value;
|
|
35
|
+
}
|
|
36
|
+
get formControlDisabled() {
|
|
37
|
+
return readBooleanAttribute(this, "disabled");
|
|
38
|
+
}
|
|
39
|
+
connectedCallback() {
|
|
40
|
+
ensureNativeComponentStyle(resolveContainingShadowRoot(this));
|
|
41
|
+
if (!this.#initialValueCaptured) {
|
|
42
|
+
this.#initialValue = this.getAttribute("value") ?? "";
|
|
43
|
+
this.#initialValueCaptured = true;
|
|
44
|
+
}
|
|
45
|
+
this.#ensureStructure();
|
|
46
|
+
this.#syncAttributes();
|
|
47
|
+
connectFormControl(this);
|
|
48
|
+
this.#syncFocus();
|
|
49
|
+
}
|
|
50
|
+
disconnectedCallback() {
|
|
51
|
+
disconnectFormControl(this);
|
|
52
|
+
}
|
|
53
|
+
attributeChangedCallback(name) {
|
|
54
|
+
this.#syncAttributes();
|
|
55
|
+
if (name === "focus" || name === "auto-focus") this.#syncFocus();
|
|
56
|
+
}
|
|
57
|
+
focus(options) {
|
|
58
|
+
this.#textarea?.focus(options);
|
|
59
|
+
}
|
|
60
|
+
blur() {
|
|
61
|
+
this.#textarea?.blur();
|
|
62
|
+
}
|
|
63
|
+
formReset() {
|
|
64
|
+
if (!this.#textarea) return;
|
|
65
|
+
this.#textarea.value = this.#initialValue;
|
|
66
|
+
this.#updateLineMetrics(false);
|
|
67
|
+
}
|
|
68
|
+
formActivate() {
|
|
69
|
+
this.focus();
|
|
70
|
+
}
|
|
71
|
+
#ensureStructure() {
|
|
72
|
+
if (this.#textarea || typeof document === "undefined") return;
|
|
73
|
+
const root = this.shadowRoot ?? this.attachShadow({ mode: "open" });
|
|
74
|
+
const style = document.createElement("style");
|
|
75
|
+
style.textContent = `
|
|
76
|
+
:host { cursor: text; }
|
|
77
|
+
textarea {
|
|
78
|
+
display: block;
|
|
79
|
+
box-sizing: border-box;
|
|
80
|
+
width: 100%;
|
|
81
|
+
min-width: 0;
|
|
82
|
+
height: 100%;
|
|
83
|
+
min-height: inherit;
|
|
84
|
+
padding: 0;
|
|
85
|
+
border: 0;
|
|
86
|
+
outline: 0;
|
|
87
|
+
resize: none;
|
|
88
|
+
color: inherit;
|
|
89
|
+
background: transparent;
|
|
90
|
+
font: inherit;
|
|
91
|
+
line-height: inherit;
|
|
92
|
+
}
|
|
93
|
+
`;
|
|
94
|
+
const textarea = document.createElement("textarea");
|
|
95
|
+
textarea.addEventListener("input", (event) => {
|
|
96
|
+
event.stopPropagation();
|
|
97
|
+
dispatchMiniProgramEvent(this, "input", createInputEventDetail(textarea));
|
|
98
|
+
this.#updateLineMetrics(true);
|
|
99
|
+
});
|
|
100
|
+
textarea.addEventListener("focus", () => {
|
|
101
|
+
dispatchMiniProgramEvent(this, "focus", {
|
|
102
|
+
value: textarea.value,
|
|
103
|
+
height: textarea.scrollHeight
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
textarea.addEventListener("blur", () => {
|
|
107
|
+
dispatchMiniProgramEvent(this, "blur", createInputEventDetail(textarea));
|
|
108
|
+
});
|
|
109
|
+
textarea.addEventListener("keydown", (event) => {
|
|
110
|
+
if (event.key === "Enter" && !event.shiftKey) dispatchMiniProgramEvent(this, "confirm", { value: textarea.value });
|
|
111
|
+
});
|
|
112
|
+
root.append(style, textarea);
|
|
113
|
+
this.#textarea = textarea;
|
|
114
|
+
}
|
|
115
|
+
#syncAttributes() {
|
|
116
|
+
if (!this.#textarea) return;
|
|
117
|
+
const value = this.getAttribute("value") ?? "";
|
|
118
|
+
if (this.#textarea.value !== value) this.#textarea.value = value;
|
|
119
|
+
this.#textarea.placeholder = this.getAttribute("placeholder") ?? "";
|
|
120
|
+
this.#textarea.disabled = readBooleanAttribute(this, "disabled");
|
|
121
|
+
const maxlength = resolveMaxLength(this.getAttribute("maxlength"));
|
|
122
|
+
if (maxlength === void 0) this.#textarea.removeAttribute("maxlength");
|
|
123
|
+
else this.#textarea.maxLength = maxlength;
|
|
124
|
+
const confirmType = this.getAttribute("confirm-type");
|
|
125
|
+
if (confirmType) this.#textarea.enterKeyHint = confirmType === "send" ? "send" : confirmType;
|
|
126
|
+
this.#updateLineMetrics(false);
|
|
127
|
+
}
|
|
128
|
+
#syncFocus() {
|
|
129
|
+
if (!readBooleanAttribute(this, "focus") && !readBooleanAttribute(this, "auto-focus")) return;
|
|
130
|
+
queueMicrotask(() => this.focus());
|
|
131
|
+
}
|
|
132
|
+
#updateLineMetrics(emit) {
|
|
133
|
+
const detail = createTextareaLineChangeDetail(this.#textarea);
|
|
134
|
+
if (detail.lineCount === this.#lastLineCount && detail.height === this.#lastHeight) return;
|
|
135
|
+
this.#lastLineCount = detail.lineCount;
|
|
136
|
+
this.#lastHeight = detail.height;
|
|
137
|
+
if (readBooleanAttribute(this, "auto-height") && detail.height > 0) this.style.height = `${detail.height}px`;
|
|
138
|
+
if (emit) dispatchMiniProgramEvent(this, "linechange", detail);
|
|
139
|
+
}
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
//#endregion
|
|
143
|
+
export { WeappTextarea, createTextareaLineChangeDetail };
|
|
144
|
+
//# sourceMappingURL=textarea.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"textarea.mjs","names":["#textarea","#initialValueCaptured","#initialValue","#ensureStructure","#syncAttributes","#syncFocus","#updateLineMetrics","#lastLineCount","#lastHeight"],"sources":["../../../src/runtime/nativeComponents/textarea.ts"],"sourcesContent":["import { getNativeComponentDescriptor } from '../../shared/nativeComponents'\nimport { connectFormControl, disconnectFormControl } from './formControl'\nimport { dispatchMiniProgramEvent, readBooleanAttribute, resolveContainingShadowRoot, resolveMaxLength } from './helpers'\nimport { createInputEventDetail } from './input'\nimport { ensureNativeComponentStyle } from './style'\n\nconst BaseElement = (globalThis.HTMLElement ?? class {}) as typeof HTMLElement\n\nexport function createTextareaLineChangeDetail(textarea: Pick<HTMLTextAreaElement, 'scrollHeight' | 'value'>) {\n const height = textarea.scrollHeight\n return {\n height,\n heightRpx: height * 2,\n lineCount: textarea.value.split('\\n').length,\n }\n}\n\nexport class WeappTextarea extends BaseElement {\n static observedAttributes = [...getNativeComponentDescriptor('textarea')!.attributes]\n\n #textarea?: HTMLTextAreaElement\n #initialValue = ''\n #initialValueCaptured = false\n #lastLineCount = 1\n #lastHeight = 0\n\n get value() {\n return this.#textarea?.value ?? this.getAttribute('value') ?? ''\n }\n\n set value(value: string) {\n this.setAttribute('value', value ?? '')\n }\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 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' || name === 'auto-focus') {\n this.#syncFocus()\n }\n }\n\n focus(options?: FocusOptions) {\n this.#textarea?.focus(options)\n }\n\n blur() {\n this.#textarea?.blur()\n }\n\n formReset() {\n if (!this.#textarea) {\n return\n }\n this.#textarea.value = this.#initialValue\n this.#updateLineMetrics(false)\n }\n\n formActivate() {\n this.focus()\n }\n\n #ensureStructure() {\n if (this.#textarea || 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 textarea {\n display: block;\n box-sizing: border-box;\n width: 100%;\n min-width: 0;\n height: 100%;\n min-height: inherit;\n padding: 0;\n border: 0;\n outline: 0;\n resize: none;\n color: inherit;\n background: transparent;\n font: inherit;\n line-height: inherit;\n }\n `\n const textarea = document.createElement('textarea')\n textarea.addEventListener('input', (event) => {\n event.stopPropagation()\n dispatchMiniProgramEvent(this, 'input', createInputEventDetail(textarea))\n this.#updateLineMetrics(true)\n })\n textarea.addEventListener('focus', () => {\n dispatchMiniProgramEvent(this, 'focus', { value: textarea.value, height: textarea.scrollHeight })\n })\n textarea.addEventListener('blur', () => {\n dispatchMiniProgramEvent(this, 'blur', createInputEventDetail(textarea))\n })\n textarea.addEventListener('keydown', (event) => {\n if (event.key === 'Enter' && !event.shiftKey) {\n dispatchMiniProgramEvent(this, 'confirm', { value: textarea.value })\n }\n })\n root.append(style, textarea)\n this.#textarea = textarea\n }\n\n #syncAttributes() {\n if (!this.#textarea) {\n return\n }\n const value = this.getAttribute('value') ?? ''\n if (this.#textarea.value !== value) {\n this.#textarea.value = value\n }\n this.#textarea.placeholder = this.getAttribute('placeholder') ?? ''\n this.#textarea.disabled = readBooleanAttribute(this, 'disabled')\n const maxlength = resolveMaxLength(this.getAttribute('maxlength'))\n if (maxlength === undefined) {\n this.#textarea.removeAttribute('maxlength')\n }\n else {\n this.#textarea.maxLength = maxlength\n }\n const confirmType = this.getAttribute('confirm-type')\n if (confirmType) {\n this.#textarea.enterKeyHint = confirmType === 'send' ? 'send' : confirmType as HTMLTextAreaElement['enterKeyHint']\n }\n this.#updateLineMetrics(false)\n }\n\n #syncFocus() {\n if (!readBooleanAttribute(this, 'focus') && !readBooleanAttribute(this, 'auto-focus')) {\n return\n }\n queueMicrotask(() => this.focus())\n }\n\n #updateLineMetrics(emit: boolean) {\n const detail = createTextareaLineChangeDetail(this.#textarea!)\n if (detail.lineCount === this.#lastLineCount && detail.height === this.#lastHeight) {\n return\n }\n this.#lastLineCount = detail.lineCount\n this.#lastHeight = detail.height\n if (readBooleanAttribute(this, 'auto-height') && detail.height > 0) {\n this.style.height = `${detail.height}px`\n }\n if (emit) {\n dispatchMiniProgramEvent(this, 'linechange', detail)\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
//#region src/runtime/nativeComponents/video/helpers.d.ts
|
|
2
|
+
declare function resolveVideoObjectFit(value: string | null): "fill" | "cover" | "contain";
|
|
3
|
+
declare function createVideoTimeUpdateDetail(currentTime: number, duration: number): {
|
|
4
|
+
currentTime: number;
|
|
5
|
+
duration: number;
|
|
6
|
+
};
|
|
7
|
+
declare function createVideoProgressDetail(bufferedEnd: number, duration: number): {
|
|
8
|
+
buffered: number;
|
|
9
|
+
};
|
|
10
|
+
//#endregion
|
|
11
|
+
export { createVideoProgressDetail, createVideoTimeUpdateDetail, resolveVideoObjectFit };
|
|
12
|
+
//# sourceMappingURL=helpers.d.mts.map
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
//#region src/runtime/nativeComponents/video/helpers.ts
|
|
2
|
+
function resolveVideoObjectFit(value) {
|
|
3
|
+
return value === "fill" || value === "cover" || value === "contain" ? value : "contain";
|
|
4
|
+
}
|
|
5
|
+
function createVideoTimeUpdateDetail(currentTime, duration) {
|
|
6
|
+
return {
|
|
7
|
+
currentTime: Number.isFinite(currentTime) ? currentTime : 0,
|
|
8
|
+
duration: Number.isFinite(duration) ? duration : 0
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
function createVideoProgressDetail(bufferedEnd, duration) {
|
|
12
|
+
if (!Number.isFinite(bufferedEnd) || !Number.isFinite(duration) || duration <= 0) return { buffered: 0 };
|
|
13
|
+
return { buffered: Math.min(100, Math.max(0, bufferedEnd / duration * 100)) };
|
|
14
|
+
}
|
|
15
|
+
function resolveVideoDirection(videoWidth, videoHeight) {
|
|
16
|
+
return videoWidth >= videoHeight ? "horizontal" : "vertical";
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
//#endregion
|
|
20
|
+
export { createVideoProgressDetail, createVideoTimeUpdateDetail, resolveVideoDirection, resolveVideoObjectFit };
|
|
21
|
+
//# sourceMappingURL=helpers.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.mjs","names":[],"sources":["../../../../src/runtime/nativeComponents/video/helpers.ts"],"sourcesContent":["export function resolveVideoObjectFit(value: string | null) {\n return value === 'fill' || value === 'cover' || value === 'contain' ? value : 'contain'\n}\n\nexport function createVideoTimeUpdateDetail(currentTime: number, duration: number) {\n return {\n currentTime: Number.isFinite(currentTime) ? currentTime : 0,\n duration: Number.isFinite(duration) ? duration : 0,\n }\n}\n\nexport function createVideoProgressDetail(bufferedEnd: number, duration: number) {\n if (!Number.isFinite(bufferedEnd) || !Number.isFinite(duration) || duration <= 0) {\n return { buffered: 0 }\n }\n return {\n buffered: Math.min(100, Math.max(0, bufferedEnd / duration * 100)),\n }\n}\n\nexport function resolveVideoDirection(videoWidth: number, videoHeight: number) {\n return videoWidth >= videoHeight ? 'horizontal' : 'vertical'\n}\n"],"mappings":";AAAA,SAAgB,sBAAsB,OAAsB;CAC1D,OAAO,UAAU,UAAU,UAAU,WAAW,UAAU,YAAY,QAAQ;AAChF;AAEA,SAAgB,4BAA4B,aAAqB,UAAkB;CACjF,OAAO;EACL,aAAa,OAAO,SAAS,WAAW,IAAI,cAAc;EAC1D,UAAU,OAAO,SAAS,QAAQ,IAAI,WAAW;CACnD;AACF;AAEA,SAAgB,0BAA0B,aAAqB,UAAkB;CAC/E,IAAI,CAAC,OAAO,SAAS,WAAW,KAAK,CAAC,OAAO,SAAS,QAAQ,KAAK,YAAY,GAC7E,OAAO,EAAE,UAAU,EAAE;CAEvB,OAAO,EACL,UAAU,KAAK,IAAI,KAAK,KAAK,IAAI,GAAG,cAAc,WAAW,GAAG,CAAC,EACnE;AACF;AAEA,SAAgB,sBAAsB,YAAoB,aAAqB;CAC7E,OAAO,cAAc,cAAc,eAAe;AACpD"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { getNativeComponentDescriptor } from "../../../shared/nativeComponents.mjs";
|
|
2
|
+
import { dispatchMiniProgramEvent, readBooleanAttribute, resolveContainingShadowRoot } from "../helpers.mjs";
|
|
3
|
+
import { ensureNativeComponentStyle } from "../style.mjs";
|
|
4
|
+
import { registerNativeMediaElement, unregisterNativeMediaElement } from "../mediaRegistry.mjs";
|
|
5
|
+
import { createVideoProgressDetail, createVideoTimeUpdateDetail, resolveVideoDirection, resolveVideoObjectFit } from "./helpers.mjs";
|
|
6
|
+
import { VIDEO_SHADOW_STYLE } from "./style.mjs";
|
|
7
|
+
|
|
8
|
+
//#region src/runtime/nativeComponents/video/index.ts
|
|
9
|
+
const BaseElement = globalThis.HTMLElement ?? class {};
|
|
10
|
+
function readFiniteNumber(value) {
|
|
11
|
+
if (value === null || value.trim() === "") return;
|
|
12
|
+
const number = Number(value);
|
|
13
|
+
return Number.isFinite(number) ? number : void 0;
|
|
14
|
+
}
|
|
15
|
+
function resolveBufferedEnd(video) {
|
|
16
|
+
const { buffered } = video;
|
|
17
|
+
if (!buffered || buffered.length === 0) return 0;
|
|
18
|
+
try {
|
|
19
|
+
return buffered.end(buffered.length - 1);
|
|
20
|
+
} catch {
|
|
21
|
+
return 0;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
var WeappVideo = class extends BaseElement {
|
|
25
|
+
static observedAttributes = [...getNativeComponentDescriptor("video").attributes];
|
|
26
|
+
#video;
|
|
27
|
+
#fullscreenTarget;
|
|
28
|
+
get videoElement() {
|
|
29
|
+
return this.#video;
|
|
30
|
+
}
|
|
31
|
+
connectedCallback() {
|
|
32
|
+
ensureNativeComponentStyle(resolveContainingShadowRoot(this));
|
|
33
|
+
this.#ensureStructure();
|
|
34
|
+
this.#syncAttributes();
|
|
35
|
+
this.#connectFullscreenListener();
|
|
36
|
+
}
|
|
37
|
+
disconnectedCallback() {
|
|
38
|
+
if (this.#video) unregisterNativeMediaElement(this.#video);
|
|
39
|
+
this.#fullscreenTarget?.removeEventListener("fullscreenchange", this.#handleFullscreenChange);
|
|
40
|
+
this.#fullscreenTarget = void 0;
|
|
41
|
+
}
|
|
42
|
+
attributeChangedCallback() {
|
|
43
|
+
this.#syncAttributes();
|
|
44
|
+
}
|
|
45
|
+
#ensureStructure() {
|
|
46
|
+
if (this.#video || typeof document === "undefined") return;
|
|
47
|
+
const root = this.shadowRoot ?? this.attachShadow({ mode: "open" });
|
|
48
|
+
const style = document.createElement("style");
|
|
49
|
+
style.textContent = VIDEO_SHADOW_STYLE;
|
|
50
|
+
const video = document.createElement("video");
|
|
51
|
+
for (const eventName of [
|
|
52
|
+
"play",
|
|
53
|
+
"pause",
|
|
54
|
+
"ended",
|
|
55
|
+
"waiting"
|
|
56
|
+
]) video.addEventListener(eventName, (event) => {
|
|
57
|
+
event.stopPropagation();
|
|
58
|
+
dispatchMiniProgramEvent(this, eventName, {});
|
|
59
|
+
});
|
|
60
|
+
video.addEventListener("timeupdate", (event) => {
|
|
61
|
+
event.stopPropagation();
|
|
62
|
+
dispatchMiniProgramEvent(this, "timeupdate", createVideoTimeUpdateDetail(video.currentTime, video.duration));
|
|
63
|
+
});
|
|
64
|
+
video.addEventListener("progress", (event) => {
|
|
65
|
+
event.stopPropagation();
|
|
66
|
+
dispatchMiniProgramEvent(this, "progress", createVideoProgressDetail(resolveBufferedEnd(video), video.duration));
|
|
67
|
+
});
|
|
68
|
+
video.addEventListener("loadedmetadata", (event) => {
|
|
69
|
+
event.stopPropagation();
|
|
70
|
+
dispatchMiniProgramEvent(this, "loadedmetadata", {
|
|
71
|
+
width: video.videoWidth,
|
|
72
|
+
height: video.videoHeight,
|
|
73
|
+
duration: Number.isFinite(video.duration) ? video.duration : 0
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
video.addEventListener("error", (event) => {
|
|
77
|
+
event.stopPropagation();
|
|
78
|
+
dispatchMiniProgramEvent(this, "error", { errMsg: video.error?.message || "video load failed" }, {
|
|
79
|
+
bubbles: false,
|
|
80
|
+
composed: false
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
root.append(style, video);
|
|
84
|
+
this.#video = video;
|
|
85
|
+
}
|
|
86
|
+
#syncAttributes() {
|
|
87
|
+
const video = this.#video;
|
|
88
|
+
if (!video) return;
|
|
89
|
+
const src = this.getAttribute("src");
|
|
90
|
+
if (src) video.src = src;
|
|
91
|
+
else video.removeAttribute("src");
|
|
92
|
+
video.poster = this.getAttribute("poster") ?? "";
|
|
93
|
+
video.autoplay = readBooleanAttribute(this, "autoplay");
|
|
94
|
+
video.loop = readBooleanAttribute(this, "loop");
|
|
95
|
+
video.muted = readBooleanAttribute(this, "muted");
|
|
96
|
+
video.controls = this.getAttribute("controls") === null || readBooleanAttribute(this, "controls");
|
|
97
|
+
video.style.objectFit = resolveVideoObjectFit(this.getAttribute("object-fit"));
|
|
98
|
+
const initialTime = readFiniteNumber(this.getAttribute("initial-time"));
|
|
99
|
+
if (initialTime !== void 0 && initialTime >= 0) try {
|
|
100
|
+
video.currentTime = initialTime;
|
|
101
|
+
} catch {}
|
|
102
|
+
registerNativeMediaElement("video", [this.getAttribute("id")], video);
|
|
103
|
+
}
|
|
104
|
+
#connectFullscreenListener() {
|
|
105
|
+
const target = this.ownerDocument;
|
|
106
|
+
if (this.#fullscreenTarget === target) return;
|
|
107
|
+
this.#fullscreenTarget?.removeEventListener("fullscreenchange", this.#handleFullscreenChange);
|
|
108
|
+
target.addEventListener("fullscreenchange", this.#handleFullscreenChange);
|
|
109
|
+
this.#fullscreenTarget = target;
|
|
110
|
+
}
|
|
111
|
+
#handleFullscreenChange = (event) => {
|
|
112
|
+
if (event.target !== this.#fullscreenTarget) return;
|
|
113
|
+
const video = this.#video;
|
|
114
|
+
const target = this.#fullscreenTarget;
|
|
115
|
+
dispatchMiniProgramEvent(this, "fullscreenchange", {
|
|
116
|
+
fullScreen: target.fullscreenElement === video,
|
|
117
|
+
direction: resolveVideoDirection(video.videoWidth, video.videoHeight)
|
|
118
|
+
});
|
|
119
|
+
};
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
//#endregion
|
|
123
|
+
export { WeappVideo };
|
|
124
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["#video","#ensureStructure","#syncAttributes","#connectFullscreenListener","#fullscreenTarget","#handleFullscreenChange"],"sources":["../../../../src/runtime/nativeComponents/video/index.ts"],"sourcesContent":["import { getNativeComponentDescriptor } from '../../../shared/nativeComponents'\nimport { dispatchMiniProgramEvent, readBooleanAttribute, resolveContainingShadowRoot } from '../helpers'\nimport { registerNativeMediaElement, unregisterNativeMediaElement } from '../mediaRegistry'\nimport { ensureNativeComponentStyle } from '../style'\nimport {\n createVideoProgressDetail,\n createVideoTimeUpdateDetail,\n resolveVideoDirection,\n resolveVideoObjectFit,\n} from './helpers'\nimport { VIDEO_SHADOW_STYLE } from './style'\n\nconst BaseElement = (globalThis.HTMLElement ?? class {}) as typeof HTMLElement\n\nfunction readFiniteNumber(value: string | null) {\n if (value === null || value.trim() === '') {\n return undefined\n }\n const number = Number(value)\n return Number.isFinite(number) ? number : undefined\n}\n\nfunction resolveBufferedEnd(video: HTMLVideoElement) {\n const { buffered } = video\n if (!buffered || buffered.length === 0) {\n return 0\n }\n try {\n return buffered.end(buffered.length - 1)\n }\n catch {\n return 0\n }\n}\n\nexport class WeappVideo extends BaseElement {\n static observedAttributes = [...getNativeComponentDescriptor('video')!.attributes]\n\n #video?: HTMLVideoElement\n #fullscreenTarget?: Document\n\n get videoElement() {\n return this.#video\n }\n\n connectedCallback() {\n ensureNativeComponentStyle(resolveContainingShadowRoot(this))\n this.#ensureStructure()\n this.#syncAttributes()\n this.#connectFullscreenListener()\n }\n\n disconnectedCallback() {\n if (this.#video) {\n unregisterNativeMediaElement(this.#video)\n }\n this.#fullscreenTarget?.removeEventListener('fullscreenchange', this.#handleFullscreenChange)\n this.#fullscreenTarget = undefined\n }\n\n attributeChangedCallback() {\n this.#syncAttributes()\n }\n\n #ensureStructure() {\n if (this.#video || typeof document === 'undefined') {\n return\n }\n const root = this.shadowRoot ?? this.attachShadow({ mode: 'open' })\n const style = document.createElement('style')\n style.textContent = VIDEO_SHADOW_STYLE\n const video = document.createElement('video')\n for (const eventName of ['play', 'pause', 'ended', 'waiting'] as const) {\n video.addEventListener(eventName, (event) => {\n event.stopPropagation()\n dispatchMiniProgramEvent(this, eventName, {})\n })\n }\n video.addEventListener('timeupdate', (event) => {\n event.stopPropagation()\n dispatchMiniProgramEvent(this, 'timeupdate', createVideoTimeUpdateDetail(video.currentTime, video.duration))\n })\n video.addEventListener('progress', (event) => {\n event.stopPropagation()\n dispatchMiniProgramEvent(this, 'progress', createVideoProgressDetail(resolveBufferedEnd(video), video.duration))\n })\n video.addEventListener('loadedmetadata', (event) => {\n event.stopPropagation()\n dispatchMiniProgramEvent(this, 'loadedmetadata', {\n width: video.videoWidth,\n height: video.videoHeight,\n duration: Number.isFinite(video.duration) ? video.duration : 0,\n })\n })\n video.addEventListener('error', (event) => {\n event.stopPropagation()\n dispatchMiniProgramEvent(this, 'error', {\n errMsg: video.error?.message || 'video load failed',\n }, {\n bubbles: false,\n composed: false,\n })\n })\n root.append(style, video)\n this.#video = video\n }\n\n #syncAttributes() {\n const video = this.#video\n if (!video) {\n return\n }\n const src = this.getAttribute('src')\n if (src) {\n video.src = src\n }\n else {\n video.removeAttribute('src')\n }\n video.poster = this.getAttribute('poster') ?? ''\n video.autoplay = readBooleanAttribute(this, 'autoplay')\n video.loop = readBooleanAttribute(this, 'loop')\n video.muted = readBooleanAttribute(this, 'muted')\n video.controls = this.getAttribute('controls') === null || readBooleanAttribute(this, 'controls')\n video.style.objectFit = resolveVideoObjectFit(this.getAttribute('object-fit'))\n const initialTime = readFiniteNumber(this.getAttribute('initial-time'))\n if (initialTime !== undefined && initialTime >= 0) {\n try {\n video.currentTime = initialTime\n }\n catch {\n // ignore browsers that block currentTime mutation before metadata loads\n }\n }\n registerNativeMediaElement('video', [this.getAttribute('id')], video)\n }\n\n #connectFullscreenListener() {\n const target = this.ownerDocument\n if (this.#fullscreenTarget === target) {\n return\n }\n this.#fullscreenTarget?.removeEventListener('fullscreenchange', this.#handleFullscreenChange)\n target.addEventListener('fullscreenchange', this.#handleFullscreenChange)\n this.#fullscreenTarget = target\n }\n\n #handleFullscreenChange = (event: Event) => {\n if (event.target !== this.#fullscreenTarget) {\n return\n }\n const video = this.#video!\n const target = this.#fullscreenTarget!\n dispatchMiniProgramEvent(this, 'fullscreenchange', {\n fullScreen: target.fullscreenElement === video,\n direction: resolveVideoDirection(video.videoWidth, video.videoHeight),\n })\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
//#region src/runtime/nativeComponents/video/style.ts
|
|
2
|
+
const VIDEO_SHADOW_STYLE = `
|
|
3
|
+
:host { position: relative; background: #000; }
|
|
4
|
+
video {
|
|
5
|
+
display: block;
|
|
6
|
+
width: 100%;
|
|
7
|
+
height: 100%;
|
|
8
|
+
background: #000;
|
|
9
|
+
}
|
|
10
|
+
`;
|
|
11
|
+
|
|
12
|
+
//#endregion
|
|
13
|
+
export { VIDEO_SHADOW_STYLE };
|
|
14
|
+
//# sourceMappingURL=style.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"style.mjs","names":[],"sources":["../../../../src/runtime/nativeComponents/video/style.ts"],"sourcesContent":["export const VIDEO_SHADOW_STYLE = `\n :host { position: relative; background: #000; }\n video {\n display: block;\n width: 100%;\n height: 100%;\n background: #000;\n }\n`\n"],"mappings":";AAAA,MAAa,qBAAqB"}
|
|
@@ -49,7 +49,6 @@ function resolveNavigationBarMetrics() {
|
|
|
49
49
|
};
|
|
50
50
|
}
|
|
51
51
|
function isTransparentColor(value) {
|
|
52
|
-
if (!value) return false;
|
|
53
52
|
const normalized = value.trim().toLowerCase();
|
|
54
53
|
return normalized === "transparent" || normalized === "rgba(0,0,0,0)" || normalized === "rgba(0, 0, 0, 0)" || normalized === "hsla(0,0%,0%,0)";
|
|
55
54
|
}
|
|
@@ -73,8 +72,7 @@ var WeappNavigationBar = class extends BaseElement {
|
|
|
73
72
|
#loading;
|
|
74
73
|
#resizeHandler;
|
|
75
74
|
connectedCallback() {
|
|
76
|
-
if (!this.shadowRoot
|
|
77
|
-
if (this.shadowRoot && !this.shadowRoot.hasChildNodes()) this.#renderShell();
|
|
75
|
+
if (!(this.shadowRoot ?? this.attachShadow({ mode: "open" })).hasChildNodes()) this.#renderShell();
|
|
78
76
|
navigationBarInstances.add(this);
|
|
79
77
|
this.applyMetrics();
|
|
80
78
|
this.applyAppearance();
|
|
@@ -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 | null) {\n if (!value) {\n return false\n }\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 if (!this.shadowRoot) {\n this.attachShadow({ mode: 'open' })\n }\n if (this.shadowRoot && !this.shadowRoot.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":["#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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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { WevuPageLayoutMap } from "wevu";
|
|
2
|
+
//#region src/runtime/pageLayout.d.ts
|
|
3
|
+
type ResolveTypedPageLayoutName = keyof WevuPageLayoutMap extends never ? string : Extract<keyof WevuPageLayoutMap, string>;
|
|
4
|
+
type ResolveTypedPageLayoutProps<Name extends string> = Name extends keyof WevuPageLayoutMap ? WevuPageLayoutMap[Name] : Record<string, any>;
|
|
5
|
+
declare function setPageLayout(layout: false): void;
|
|
6
|
+
declare function setPageLayout<Name extends ResolveTypedPageLayoutName>(layout: Name, props?: ResolveTypedPageLayoutProps<Name>): void;
|
|
7
|
+
//#endregion
|
|
8
|
+
export { setPageLayout };
|
|
9
|
+
//# sourceMappingURL=pageLayout.d.mts.map
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { getCurrentPageInstance } from "./polyfill/routeRuntime.mjs";
|
|
2
|
+
import { WEVU_PAGE_LAYOUT_SETTER_KEY } from "@weapp-core/constants";
|
|
3
|
+
|
|
4
|
+
//#region src/runtime/pageLayout.ts
|
|
5
|
+
function setPageLayout(layout, props) {
|
|
6
|
+
const setter = getCurrentPageInstance()?.[WEVU_PAGE_LAYOUT_SETTER_KEY];
|
|
7
|
+
if (typeof setter === "function") {
|
|
8
|
+
setter(layout, props);
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
throw new Error("setPageLayout() 未找到当前 Web 页面实例。请在页面生命周期、事件回调或当前页面上下文中调用。");
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
//#endregion
|
|
15
|
+
export { setPageLayout };
|
|
16
|
+
//# sourceMappingURL=pageLayout.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pageLayout.mjs","names":[],"sources":["../../src/runtime/pageLayout.ts"],"sourcesContent":["import type { WevuPageLayoutMap } from 'wevu'\nimport { WEVU_PAGE_LAYOUT_SETTER_KEY } from '@weapp-core/constants'\nimport { getCurrentPageInstance } from './polyfill/routeRuntime'\n\ntype PageLayoutSetter = (layout: string | false, props?: Record<string, any>) => void\ntype ResolveTypedPageLayoutName = keyof WevuPageLayoutMap extends never ? string : Extract<keyof WevuPageLayoutMap, string>\ntype ResolveTypedPageLayoutProps<Name extends string> = Name extends keyof WevuPageLayoutMap ? WevuPageLayoutMap[Name] : Record<string, any>\n\nexport function setPageLayout(layout: false): void\nexport function setPageLayout<Name extends ResolveTypedPageLayoutName>(layout: Name, props?: ResolveTypedPageLayoutProps<Name>): void\n\nexport function setPageLayout(layout: string | false, props?: Record<string, any>): void {\n const page = getCurrentPageInstance() as Record<string, any> | undefined\n const setter = page?.[WEVU_PAGE_LAYOUT_SETTER_KEY] as PageLayoutSetter | undefined\n if (typeof setter === 'function') {\n setter(layout, props)\n return\n }\n throw new Error('setPageLayout() 未找到当前 Web 页面实例。请在页面生命周期、事件回调或当前页面上下文中调用。')\n}\n"],"mappings":";;;;AAWA,SAAgB,cAAc,QAAwB,OAAmC;CAEvF,MAAM,SADO,uBACK,CAAC,GAAG;CACtB,IAAI,OAAO,WAAW,YAAY;EAChC,OAAO,QAAQ,KAAK;EACpB;CACF;CACA,MAAM,IAAI,MAAM,0DAA0D;AAC5E"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
//#region src/runtime/polyfill/animation.ts
|
|
2
|
+
var WebAnimation = class {
|
|
3
|
+
defaults;
|
|
4
|
+
#actions = [];
|
|
5
|
+
#operations = [];
|
|
6
|
+
constructor(defaults = {}) {
|
|
7
|
+
this.defaults = defaults;
|
|
8
|
+
}
|
|
9
|
+
#add(type, ...args) {
|
|
10
|
+
this.#operations.push({
|
|
11
|
+
type,
|
|
12
|
+
args
|
|
13
|
+
});
|
|
14
|
+
return this;
|
|
15
|
+
}
|
|
16
|
+
backgroundColor(value) {
|
|
17
|
+
return this.#add("backgroundColor", value);
|
|
18
|
+
}
|
|
19
|
+
bottom(value) {
|
|
20
|
+
return this.#add("bottom", value);
|
|
21
|
+
}
|
|
22
|
+
height(value) {
|
|
23
|
+
return this.#add("height", value);
|
|
24
|
+
}
|
|
25
|
+
left(value) {
|
|
26
|
+
return this.#add("left", value);
|
|
27
|
+
}
|
|
28
|
+
matrix(...args) {
|
|
29
|
+
return this.#add("matrix", ...args);
|
|
30
|
+
}
|
|
31
|
+
matrix3d(...args) {
|
|
32
|
+
return this.#add("matrix3d", ...args);
|
|
33
|
+
}
|
|
34
|
+
opacity(value) {
|
|
35
|
+
return this.#add("opacity", value);
|
|
36
|
+
}
|
|
37
|
+
right(value) {
|
|
38
|
+
return this.#add("right", value);
|
|
39
|
+
}
|
|
40
|
+
rotate(angle) {
|
|
41
|
+
return this.#add("rotate", angle);
|
|
42
|
+
}
|
|
43
|
+
rotate3d(x, y, z, angle) {
|
|
44
|
+
return this.#add("rotate3d", x, y, z, angle);
|
|
45
|
+
}
|
|
46
|
+
rotateX(angle) {
|
|
47
|
+
return this.#add("rotateX", angle);
|
|
48
|
+
}
|
|
49
|
+
rotateY(angle) {
|
|
50
|
+
return this.#add("rotateY", angle);
|
|
51
|
+
}
|
|
52
|
+
rotateZ(angle) {
|
|
53
|
+
return this.#add("rotateZ", angle);
|
|
54
|
+
}
|
|
55
|
+
scale(x, y) {
|
|
56
|
+
return this.#add("scale", x, y ?? x);
|
|
57
|
+
}
|
|
58
|
+
scale3d(x, y, z) {
|
|
59
|
+
return this.#add("scale3d", x, y, z);
|
|
60
|
+
}
|
|
61
|
+
scaleX(value) {
|
|
62
|
+
return this.#add("scaleX", value);
|
|
63
|
+
}
|
|
64
|
+
scaleY(value) {
|
|
65
|
+
return this.#add("scaleY", value);
|
|
66
|
+
}
|
|
67
|
+
scaleZ(value) {
|
|
68
|
+
return this.#add("scaleZ", value);
|
|
69
|
+
}
|
|
70
|
+
skew(x, y) {
|
|
71
|
+
return this.#add("skew", x, y);
|
|
72
|
+
}
|
|
73
|
+
skewX(angle) {
|
|
74
|
+
return this.#add("skewX", angle);
|
|
75
|
+
}
|
|
76
|
+
skewY(angle) {
|
|
77
|
+
return this.#add("skewY", angle);
|
|
78
|
+
}
|
|
79
|
+
top(value) {
|
|
80
|
+
return this.#add("top", value);
|
|
81
|
+
}
|
|
82
|
+
translate(x, y) {
|
|
83
|
+
return this.#add("translate", x, y ?? 0);
|
|
84
|
+
}
|
|
85
|
+
translate3d(x, y, z) {
|
|
86
|
+
return this.#add("translate3d", x, y, z);
|
|
87
|
+
}
|
|
88
|
+
translateX(value) {
|
|
89
|
+
return this.#add("translateX", value);
|
|
90
|
+
}
|
|
91
|
+
translateY(value) {
|
|
92
|
+
return this.#add("translateY", value);
|
|
93
|
+
}
|
|
94
|
+
translateZ(value) {
|
|
95
|
+
return this.#add("translateZ", value);
|
|
96
|
+
}
|
|
97
|
+
width(value) {
|
|
98
|
+
return this.#add("width", value);
|
|
99
|
+
}
|
|
100
|
+
step(options = {}) {
|
|
101
|
+
this.#actions.push({
|
|
102
|
+
animates: this.#operations.splice(0),
|
|
103
|
+
option: {
|
|
104
|
+
...this.defaults,
|
|
105
|
+
...options
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
return this;
|
|
109
|
+
}
|
|
110
|
+
export() {
|
|
111
|
+
return { actions: this.#actions.splice(0) };
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
function createAnimation(options = {}) {
|
|
115
|
+
return new WebAnimation(options);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
//#endregion
|
|
119
|
+
export { WebAnimation, createAnimation };
|
|
120
|
+
//# sourceMappingURL=animation.mjs.map
|
|
@@ -0,0 +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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"}
|
|
@@ -11,7 +11,7 @@ function cloneLaunchOptions(options) {
|
|
|
11
11
|
};
|
|
12
12
|
}
|
|
13
13
|
function resolveFallbackLaunchOptions(navigationHistory) {
|
|
14
|
-
const entry = navigationHistory[navigationHistory.length - 1]
|
|
14
|
+
const entry = navigationHistory[navigationHistory.length - 1];
|
|
15
15
|
if (!entry) return {
|
|
16
16
|
path: "",
|
|
17
17
|
scene: 0,
|