@weapp-vite/web 1.3.36 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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 +13 -12
- package/dist/compiler/wxml/renderer.mjs.map +1 -1
- package/dist/compiler/wxml/specialNodes.mjs +6 -1
- 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 +29 -6
- package/dist/index.mjs +197 -4
- package/dist/index.mjs.map +1 -0
- 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 +56 -7
- 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 +245 -74
- 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 +4 -1
- package/dist/plugin/path.mjs.map +1 -1
- package/dist/plugin/register.mjs +48 -36
- package/dist/plugin/register.mjs.map +1 -1
- package/dist/plugin/scan.mjs +206 -94
- 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 +46 -1
- package/dist/plugin/vueSfc.mjs +149 -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 +35 -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/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 +32 -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 +3 -2
- 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 +7 -4
- 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 +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/menuApi.mjs +38 -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 +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/system.mjs +30 -3
- package/dist/runtime/polyfill/system.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 +13 -5
|
@@ -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,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"appState.mjs","names":[],"sources":["../../../src/runtime/polyfill/appState.ts"],"sourcesContent":["import type { AppLaunchOptions } from './routeRuntime/options'\n\nexport function resolveCurrentPages<T>(navigationHistory: Array<{ instance?: T }>) {\n return navigationHistory\n .map(entry => entry.instance)\n .filter((instance): instance is T => Boolean(instance))\n}\n\nexport function cloneLaunchOptions(options: AppLaunchOptions): AppLaunchOptions {\n return {\n path: options.path,\n scene: options.scene,\n query: { ...options.query },\n referrerInfo: { ...options.referrerInfo },\n }\n}\n\nexport function resolveFallbackLaunchOptions(\n navigationHistory: Array<{ id: string, query: Record<string, string> }>,\n): AppLaunchOptions {\n const entry = navigationHistory[navigationHistory.length - 1]
|
|
1
|
+
{"version":3,"file":"appState.mjs","names":[],"sources":["../../../src/runtime/polyfill/appState.ts"],"sourcesContent":["import type { AppLaunchOptions } from './routeRuntime/options'\n\nexport function resolveCurrentPages<T>(navigationHistory: Array<{ instance?: T }>) {\n return navigationHistory\n .map(entry => entry.instance)\n .filter((instance): instance is T => Boolean(instance))\n}\n\nexport function cloneLaunchOptions(options: AppLaunchOptions): AppLaunchOptions {\n return {\n path: options.path,\n scene: options.scene,\n query: { ...options.query },\n referrerInfo: { ...options.referrerInfo },\n }\n}\n\nexport function resolveFallbackLaunchOptions(\n navigationHistory: Array<{ id: string, query: Record<string, string> }>,\n): AppLaunchOptions {\n const entry = navigationHistory[navigationHistory.length - 1]\n if (!entry) {\n return {\n path: '',\n scene: 0,\n query: {},\n referrerInfo: {},\n }\n }\n return {\n path: entry.id,\n scene: 0,\n query: { ...entry.query },\n referrerInfo: {},\n }\n}\n"],"mappings":";AAEA,SAAgB,oBAAuB,mBAA4C;CACjF,OAAO,kBACJ,KAAI,UAAS,MAAM,QAAQ,CAAC,CAC5B,QAAQ,aAA4B,QAAQ,QAAQ,CAAC;AAC1D;AAEA,SAAgB,mBAAmB,SAA6C;CAC9E,OAAO;EACL,MAAM,QAAQ;EACd,OAAO,QAAQ;EACf,OAAO,EAAE,GAAG,QAAQ,MAAM;EAC1B,cAAc,EAAE,GAAG,QAAQ,aAAa;CAC1C;AACF;AAEA,SAAgB,6BACd,mBACkB;CAClB,MAAM,QAAQ,kBAAkB,kBAAkB,SAAS;CAC3D,IAAI,CAAC,OACH,OAAO;EACL,MAAM;EACN,OAAO;EACP,OAAO,CAAC;EACR,cAAc,CAAC;CACjB;CAEF,OAAO;EACL,MAAM,MAAM;EACZ,OAAO;EACP,OAAO,EAAE,GAAG,MAAM,MAAM;EACxB,cAAc,CAAC;CACjB;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"async.mjs","names":[],"sources":["../../../src/runtime/polyfill/async.ts"],"sourcesContent":["interface MiniProgramBaseResultLike {\n errMsg: string\n}\n\
|
|
1
|
+
{"version":3,"file":"async.mjs","names":[],"sources":["../../../src/runtime/polyfill/async.ts"],"sourcesContent":["export interface MiniProgramBaseResultLike {\n errMsg: string\n}\n\nexport interface MiniProgramAsyncOptionsLike<SuccessResult extends MiniProgramBaseResultLike> {\n success?: (result: SuccessResult) => void\n fail?: (result: MiniProgramBaseResultLike) => void\n complete?: (result: SuccessResult | MiniProgramBaseResultLike) => void\n}\n\nexport function callMiniProgramAsyncSuccess<SuccessResult extends MiniProgramBaseResultLike>(\n options: MiniProgramAsyncOptionsLike<SuccessResult> | undefined,\n result: SuccessResult,\n) {\n options?.success?.(result)\n options?.complete?.(result)\n return result\n}\n\nexport function callMiniProgramAsyncFailure<SuccessResult extends MiniProgramBaseResultLike>(\n options: MiniProgramAsyncOptionsLike<SuccessResult> | undefined,\n errMsg: string,\n) {\n const result: MiniProgramBaseResultLike = { errMsg }\n options?.fail?.(result)\n options?.complete?.(result)\n return result\n}\n\nexport const callWxAsyncSuccess = callMiniProgramAsyncSuccess\nexport const callWxAsyncFailure = callMiniProgramAsyncFailure\n\nexport function normalizeDuration(duration: number | undefined, fallback: number) {\n if (typeof duration !== 'number' || Number.isNaN(duration)) {\n return fallback\n }\n return Math.max(0, duration)\n}\n\nexport function scheduleMicrotask(task: () => void) {\n if (typeof queueMicrotask === 'function') {\n queueMicrotask(task)\n return\n }\n Promise.resolve()\n .then(task)\n .catch((error) => {\n setTimeout(() => {\n throw error\n }, 0)\n })\n}\n"],"mappings":";AAUA,SAAgB,4BACd,SACA,QACA;CACA,SAAS,UAAU,MAAM;CACzB,SAAS,WAAW,MAAM;CAC1B,OAAO;AACT;AAEA,SAAgB,4BACd,SACA,QACA;CACA,MAAM,SAAoC,EAAE,OAAO;CACnD,SAAS,OAAO,MAAM;CACtB,SAAS,WAAW,MAAM;CAC1B,OAAO;AACT;AAKA,SAAgB,kBAAkB,UAA8B,UAAkB;CAChF,IAAI,OAAO,aAAa,YAAY,OAAO,MAAM,QAAQ,GACvD,OAAO;CAET,OAAO,KAAK,IAAI,GAAG,QAAQ;AAC7B;AAEA,SAAgB,kBAAkB,MAAkB;CAClD,IAAI,OAAO,mBAAmB,YAAY;EACxC,eAAe,IAAI;EACnB;CACF;CACA,QAAQ,QAAQ,CAAC,CACd,KAAK,IAAI,CAAC,CACV,OAAO,UAAU;EAChB,iBAAiB;GACf,MAAM;EACR,GAAG,CAAC;CACN,CAAC;AACL"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { resolveNativeMediaElement } from "../nativeComponents/mediaRegistry.mjs";
|
|
2
|
+
|
|
1
3
|
//#region src/runtime/polyfill/canvasContext.ts
|
|
2
4
|
function normalizeCanvasNumber(value) {
|
|
3
5
|
if (typeof value !== "number" || Number.isNaN(value)) return 0;
|
|
@@ -8,6 +10,8 @@ function resolveCanvasById(canvasId) {
|
|
|
8
10
|
const runtimeDocument = document;
|
|
9
11
|
const normalized = canvasId.trim();
|
|
10
12
|
if (!normalized) return;
|
|
13
|
+
const registered = resolveNativeMediaElement("canvas", normalized);
|
|
14
|
+
if (registered) return registered;
|
|
11
15
|
const canvasList = runtimeDocument.querySelectorAll?.("canvas") ?? runtimeDocument.body?.querySelectorAll?.("canvas") ?? [];
|
|
12
16
|
for (const candidate of Array.from(canvasList)) {
|
|
13
17
|
const canvas = candidate;
|
|
@@ -52,6 +56,11 @@ function createCanvasCommandQueue(canvasId) {
|
|
|
52
56
|
ctx.lineWidth = normalizeCanvasNumber(width);
|
|
53
57
|
});
|
|
54
58
|
},
|
|
59
|
+
setLineCap(lineCap) {
|
|
60
|
+
pushCommand((ctx) => {
|
|
61
|
+
ctx.lineCap = lineCap;
|
|
62
|
+
});
|
|
63
|
+
},
|
|
55
64
|
setFontSize(size) {
|
|
56
65
|
pushCommand((ctx) => {
|
|
57
66
|
ctx.font = `${Math.max(1, normalizeCanvasNumber(size))}px sans-serif`;
|
|
@@ -103,6 +112,38 @@ function createCanvasCommandQueue(canvasId) {
|
|
|
103
112
|
stroke() {
|
|
104
113
|
pushCommand((ctx) => ctx.stroke());
|
|
105
114
|
},
|
|
115
|
+
fill() {
|
|
116
|
+
pushCommand((ctx) => ctx.fill());
|
|
117
|
+
},
|
|
118
|
+
rect(x, y, width, height) {
|
|
119
|
+
pushCommand((ctx) => {
|
|
120
|
+
ctx.rect(normalizeCanvasNumber(x), normalizeCanvasNumber(y), normalizeCanvasNumber(width), normalizeCanvasNumber(height));
|
|
121
|
+
});
|
|
122
|
+
},
|
|
123
|
+
arc(x, y, radius, startAngle, endAngle, counterClockwise = false) {
|
|
124
|
+
pushCommand((ctx) => {
|
|
125
|
+
ctx.arc(normalizeCanvasNumber(x), normalizeCanvasNumber(y), Math.max(0, normalizeCanvasNumber(radius)), normalizeCanvasNumber(startAngle), normalizeCanvasNumber(endAngle), Boolean(counterClockwise));
|
|
126
|
+
});
|
|
127
|
+
},
|
|
128
|
+
save() {
|
|
129
|
+
pushCommand((ctx) => ctx.save());
|
|
130
|
+
},
|
|
131
|
+
restore() {
|
|
132
|
+
pushCommand((ctx) => ctx.restore());
|
|
133
|
+
},
|
|
134
|
+
translate(x, y) {
|
|
135
|
+
pushCommand((ctx) => {
|
|
136
|
+
ctx.translate(normalizeCanvasNumber(x), normalizeCanvasNumber(y));
|
|
137
|
+
});
|
|
138
|
+
},
|
|
139
|
+
rotate(angle) {
|
|
140
|
+
pushCommand((ctx) => ctx.rotate(normalizeCanvasNumber(angle)));
|
|
141
|
+
},
|
|
142
|
+
scale(scaleWidth, scaleHeight) {
|
|
143
|
+
pushCommand((ctx) => {
|
|
144
|
+
ctx.scale(normalizeCanvasNumber(scaleWidth), normalizeCanvasNumber(scaleHeight));
|
|
145
|
+
});
|
|
146
|
+
},
|
|
106
147
|
draw
|
|
107
148
|
};
|
|
108
149
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canvasContext.mjs","names":[],"sources":["../../../src/runtime/polyfill/canvasContext.ts"],"sourcesContent":["import type { CanvasContext } from './types/platformRuntime'\n\nfunction normalizeCanvasNumber(value: unknown) {\n if (typeof value !== 'number' || Number.isNaN(value)) {\n return 0\n }\n return value\n}\n\nfunction resolveCanvasById(canvasId: string) {\n if (typeof document === 'undefined') {\n return undefined\n }\n const runtimeDocument = document as Document & {\n querySelectorAll?: (selector: string) => ArrayLike<Element>\n body?: {\n querySelectorAll?: (selector: string) => ArrayLike<Element>\n }\n }\n const normalized = canvasId.trim()\n if (!normalized) {\n return undefined\n }\n const canvasList = runtimeDocument.querySelectorAll?.('canvas')\n ?? runtimeDocument.body?.querySelectorAll?.('canvas')\n ?? []\n for (const candidate of Array.from(canvasList)) {\n const canvas = candidate as HTMLCanvasElement\n if (!canvas) {\n continue\n }\n if ((canvas as { id?: string }).id === normalized) {\n return canvas\n }\n if (typeof canvas.getAttribute === 'function' && canvas.getAttribute('canvas-id') === normalized) {\n return canvas\n }\n }\n return undefined\n}\n\nfunction createCanvasCommandQueue(canvasId: string) {\n const commands: Array<(ctx: CanvasRenderingContext2D) => void> = []\n\n const pushCommand = (command: (ctx: CanvasRenderingContext2D) => void) => {\n commands.push(command)\n }\n\n const draw: CanvasContext['draw'] = (reserveOrCallback?: boolean | (() => void), callback?: () => void) => {\n const reserve = typeof reserveOrCallback === 'boolean' ? reserveOrCallback : false\n const done = typeof reserveOrCallback === 'function' ? reserveOrCallback : callback\n const canvas = resolveCanvasById(canvasId)\n const context = canvas?.getContext?.('2d') as CanvasRenderingContext2D | null | undefined\n if (!context) {\n commands.length = 0\n done?.()\n return\n }\n if (!reserve) {\n context.clearRect(0, 0, normalizeCanvasNumber(canvas?.width), normalizeCanvasNumber(canvas?.height))\n }\n for (const command of commands) {\n command(context)\n }\n commands.length = 0\n done?.()\n }\n\n const api: CanvasContext = {\n setFillStyle(color: string) {\n pushCommand((ctx) => {\n ctx.fillStyle = color\n })\n },\n setStrokeStyle(color: string) {\n pushCommand((ctx) => {\n ctx.strokeStyle = color\n })\n },\n setLineWidth(width: number) {\n pushCommand((ctx) => {\n ctx.lineWidth = normalizeCanvasNumber(width)\n })\n },\n setFontSize(size: number) {\n pushCommand((ctx) => {\n const normalized = Math.max(1, normalizeCanvasNumber(size))\n ctx.font = `${normalized}px sans-serif`\n })\n },\n fillRect(x: number, y: number, width: number, height: number) {\n pushCommand((ctx) => {\n ctx.fillRect(\n normalizeCanvasNumber(x),\n normalizeCanvasNumber(y),\n normalizeCanvasNumber(width),\n normalizeCanvasNumber(height),\n )\n })\n },\n strokeRect(x: number, y: number, width: number, height: number) {\n pushCommand((ctx) => {\n ctx.strokeRect(\n normalizeCanvasNumber(x),\n normalizeCanvasNumber(y),\n normalizeCanvasNumber(width),\n normalizeCanvasNumber(height),\n )\n })\n },\n clearRect(x: number, y: number, width: number, height: number) {\n pushCommand((ctx) => {\n ctx.clearRect(\n normalizeCanvasNumber(x),\n normalizeCanvasNumber(y),\n normalizeCanvasNumber(width),\n normalizeCanvasNumber(height),\n )\n })\n },\n fillText(text: string, x: number, y: number, maxWidth?: number) {\n pushCommand((ctx) => {\n const normalizedText = String(text ?? '')\n const normalizedX = normalizeCanvasNumber(x)\n const normalizedY = normalizeCanvasNumber(y)\n if (typeof maxWidth === 'number' && Number.isFinite(maxWidth)) {\n ctx.fillText(normalizedText, normalizedX, normalizedY, normalizeCanvasNumber(maxWidth))\n return\n }\n ctx.fillText(normalizedText, normalizedX, normalizedY)\n })\n },\n beginPath() {\n pushCommand(ctx => ctx.beginPath())\n },\n closePath() {\n pushCommand(ctx => ctx.closePath())\n },\n moveTo(x: number, y: number) {\n pushCommand((ctx) => {\n ctx.moveTo(normalizeCanvasNumber(x), normalizeCanvasNumber(y))\n })\n },\n lineTo(x: number, y: number) {\n pushCommand((ctx) => {\n ctx.lineTo(normalizeCanvasNumber(x), normalizeCanvasNumber(y))\n })\n },\n stroke() {\n pushCommand(ctx => ctx.stroke())\n },\n draw,\n }\n return api\n}\n\nexport function createCanvasContextBridge(canvasId: string) {\n return createCanvasCommandQueue(String(canvasId ?? ''))\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"canvasContext.mjs","names":[],"sources":["../../../src/runtime/polyfill/canvasContext.ts"],"sourcesContent":["import type { CanvasContext } from './types/platformRuntime'\nimport { resolveNativeMediaElement } from '../nativeComponents/mediaRegistry'\n\nfunction normalizeCanvasNumber(value: unknown) {\n if (typeof value !== 'number' || Number.isNaN(value)) {\n return 0\n }\n return value\n}\n\nfunction resolveCanvasById(canvasId: string) {\n if (typeof document === 'undefined') {\n return undefined\n }\n const runtimeDocument = document as Document & {\n querySelectorAll?: (selector: string) => ArrayLike<Element>\n body?: {\n querySelectorAll?: (selector: string) => ArrayLike<Element>\n }\n }\n const normalized = canvasId.trim()\n if (!normalized) {\n return undefined\n }\n const registered = resolveNativeMediaElement<HTMLCanvasElement>('canvas', normalized)\n if (registered) {\n return registered\n }\n const canvasList = runtimeDocument.querySelectorAll?.('canvas')\n ?? runtimeDocument.body?.querySelectorAll?.('canvas')\n ?? []\n for (const candidate of Array.from(canvasList)) {\n const canvas = candidate as HTMLCanvasElement\n if (!canvas) {\n continue\n }\n if ((canvas as { id?: string }).id === normalized) {\n return canvas\n }\n if (typeof canvas.getAttribute === 'function' && canvas.getAttribute('canvas-id') === normalized) {\n return canvas\n }\n }\n return undefined\n}\n\nfunction createCanvasCommandQueue(canvasId: string) {\n const commands: Array<(ctx: CanvasRenderingContext2D) => void> = []\n\n const pushCommand = (command: (ctx: CanvasRenderingContext2D) => void) => {\n commands.push(command)\n }\n\n const draw: CanvasContext['draw'] = (reserveOrCallback?: boolean | (() => void), callback?: () => void) => {\n const reserve = typeof reserveOrCallback === 'boolean' ? reserveOrCallback : false\n const done = typeof reserveOrCallback === 'function' ? reserveOrCallback : callback\n const canvas = resolveCanvasById(canvasId)\n const context = canvas?.getContext?.('2d') as CanvasRenderingContext2D | null | undefined\n if (!context) {\n commands.length = 0\n done?.()\n return\n }\n if (!reserve) {\n context.clearRect(0, 0, normalizeCanvasNumber(canvas?.width), normalizeCanvasNumber(canvas?.height))\n }\n for (const command of commands) {\n command(context)\n }\n commands.length = 0\n done?.()\n }\n\n const api: CanvasContext = {\n setFillStyle(color: string) {\n pushCommand((ctx) => {\n ctx.fillStyle = color\n })\n },\n setStrokeStyle(color: string) {\n pushCommand((ctx) => {\n ctx.strokeStyle = color\n })\n },\n setLineWidth(width: number) {\n pushCommand((ctx) => {\n ctx.lineWidth = normalizeCanvasNumber(width)\n })\n },\n setLineCap(lineCap: CanvasLineCap) {\n pushCommand((ctx) => {\n ctx.lineCap = lineCap\n })\n },\n setFontSize(size: number) {\n pushCommand((ctx) => {\n const normalized = Math.max(1, normalizeCanvasNumber(size))\n ctx.font = `${normalized}px sans-serif`\n })\n },\n fillRect(x: number, y: number, width: number, height: number) {\n pushCommand((ctx) => {\n ctx.fillRect(\n normalizeCanvasNumber(x),\n normalizeCanvasNumber(y),\n normalizeCanvasNumber(width),\n normalizeCanvasNumber(height),\n )\n })\n },\n strokeRect(x: number, y: number, width: number, height: number) {\n pushCommand((ctx) => {\n ctx.strokeRect(\n normalizeCanvasNumber(x),\n normalizeCanvasNumber(y),\n normalizeCanvasNumber(width),\n normalizeCanvasNumber(height),\n )\n })\n },\n clearRect(x: number, y: number, width: number, height: number) {\n pushCommand((ctx) => {\n ctx.clearRect(\n normalizeCanvasNumber(x),\n normalizeCanvasNumber(y),\n normalizeCanvasNumber(width),\n normalizeCanvasNumber(height),\n )\n })\n },\n fillText(text: string, x: number, y: number, maxWidth?: number) {\n pushCommand((ctx) => {\n const normalizedText = String(text ?? '')\n const normalizedX = normalizeCanvasNumber(x)\n const normalizedY = normalizeCanvasNumber(y)\n if (typeof maxWidth === 'number' && Number.isFinite(maxWidth)) {\n ctx.fillText(normalizedText, normalizedX, normalizedY, normalizeCanvasNumber(maxWidth))\n return\n }\n ctx.fillText(normalizedText, normalizedX, normalizedY)\n })\n },\n beginPath() {\n pushCommand(ctx => ctx.beginPath())\n },\n closePath() {\n pushCommand(ctx => ctx.closePath())\n },\n moveTo(x: number, y: number) {\n pushCommand((ctx) => {\n ctx.moveTo(normalizeCanvasNumber(x), normalizeCanvasNumber(y))\n })\n },\n lineTo(x: number, y: number) {\n pushCommand((ctx) => {\n ctx.lineTo(normalizeCanvasNumber(x), normalizeCanvasNumber(y))\n })\n },\n stroke() {\n pushCommand(ctx => ctx.stroke())\n },\n fill() {\n pushCommand(ctx => ctx.fill())\n },\n rect(x: number, y: number, width: number, height: number) {\n pushCommand((ctx) => {\n ctx.rect(\n normalizeCanvasNumber(x),\n normalizeCanvasNumber(y),\n normalizeCanvasNumber(width),\n normalizeCanvasNumber(height),\n )\n })\n },\n arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterClockwise = false) {\n pushCommand((ctx) => {\n ctx.arc(\n normalizeCanvasNumber(x),\n normalizeCanvasNumber(y),\n Math.max(0, normalizeCanvasNumber(radius)),\n normalizeCanvasNumber(startAngle),\n normalizeCanvasNumber(endAngle),\n Boolean(counterClockwise),\n )\n })\n },\n save() {\n pushCommand(ctx => ctx.save())\n },\n restore() {\n pushCommand(ctx => ctx.restore())\n },\n translate(x: number, y: number) {\n pushCommand((ctx) => {\n ctx.translate(normalizeCanvasNumber(x), normalizeCanvasNumber(y))\n })\n },\n rotate(angle: number) {\n pushCommand(ctx => ctx.rotate(normalizeCanvasNumber(angle)))\n },\n scale(scaleWidth: number, scaleHeight: number) {\n pushCommand((ctx) => {\n ctx.scale(normalizeCanvasNumber(scaleWidth), normalizeCanvasNumber(scaleHeight))\n })\n },\n draw,\n }\n return api\n}\n\nexport function createCanvasContextBridge(canvasId: string) {\n return createCanvasCommandQueue(String(canvasId ?? ''))\n}\n"],"mappings":"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"}
|
|
@@ -19,7 +19,7 @@ let cachedBatteryInfo = {
|
|
|
19
19
|
isCharging: false
|
|
20
20
|
};
|
|
21
21
|
async function readRuntimeBatteryInfoInternal() {
|
|
22
|
-
const runtimeNavigator =
|
|
22
|
+
const runtimeNavigator = globalThis.navigator;
|
|
23
23
|
if (runtimeNavigator && typeof runtimeNavigator.getBattery === "function") {
|
|
24
24
|
const battery = await runtimeNavigator.getBattery();
|
|
25
25
|
const nextInfo = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device.mjs","names":[],"sources":["../../../src/runtime/polyfill/device.ts"],"sourcesContent":["type VibrateType = 'heavy' | 'medium' | 'light' | undefined\n\ninterface BatterySnapshot {\n level: number\n isCharging: boolean\n}\n\nfunction resolveVibrateDuration(type: VibrateType) {\n if (type === 'heavy') {\n return 30\n }\n if (type === 'medium') {\n return 20\n }\n return 15\n}\n\nexport function vibrateDevice(type: VibrateType) {\n const runtimeNavigator = (typeof navigator !== 'undefined' ? navigator : undefined) as (Navigator & {\n vibrate?: (pattern: number | number[]) => boolean\n }) | undefined\n if (!runtimeNavigator || typeof runtimeNavigator.vibrate !== 'function') {\n throw new Error('vibrate is unavailable')\n }\n runtimeNavigator.vibrate(resolveVibrateDuration(type))\n}\n\nfunction normalizeBatteryLevel(level: unknown) {\n if (typeof level !== 'number' || Number.isNaN(level)) {\n return 100\n }\n const value = Math.round(level * 100)\n return Math.min(100, Math.max(0, value))\n}\n\nlet cachedBatteryInfo: BatterySnapshot = {\n level: 100,\n isCharging: false,\n}\n\nasync function readRuntimeBatteryInfoInternal() {\n const runtimeNavigator =
|
|
1
|
+
{"version":3,"file":"device.mjs","names":[],"sources":["../../../src/runtime/polyfill/device.ts"],"sourcesContent":["type VibrateType = 'heavy' | 'medium' | 'light' | undefined\n\ninterface BatterySnapshot {\n level: number\n isCharging: boolean\n}\n\nfunction resolveVibrateDuration(type: VibrateType) {\n if (type === 'heavy') {\n return 30\n }\n if (type === 'medium') {\n return 20\n }\n return 15\n}\n\nexport function vibrateDevice(type: VibrateType) {\n const runtimeNavigator = (typeof navigator !== 'undefined' ? navigator : undefined) as (Navigator & {\n vibrate?: (pattern: number | number[]) => boolean\n }) | undefined\n if (!runtimeNavigator || typeof runtimeNavigator.vibrate !== 'function') {\n throw new Error('vibrate is unavailable')\n }\n runtimeNavigator.vibrate(resolveVibrateDuration(type))\n}\n\nfunction normalizeBatteryLevel(level: unknown) {\n if (typeof level !== 'number' || Number.isNaN(level)) {\n return 100\n }\n const value = Math.round(level * 100)\n return Math.min(100, Math.max(0, value))\n}\n\nlet cachedBatteryInfo: BatterySnapshot = {\n level: 100,\n isCharging: false,\n}\n\nasync function readRuntimeBatteryInfoInternal() {\n const runtimeNavigator = globalThis.navigator as (Navigator & {\n getBattery?: () => Promise<{ charging?: boolean, level?: number }>\n }) | undefined\n if (runtimeNavigator && typeof runtimeNavigator.getBattery === 'function') {\n const battery = await runtimeNavigator.getBattery()\n const nextInfo: BatterySnapshot = {\n level: normalizeBatteryLevel(battery?.level),\n isCharging: Boolean(battery?.charging),\n }\n cachedBatteryInfo = nextInfo\n return nextInfo\n }\n return cachedBatteryInfo\n}\n\nexport function readBatteryInfoSyncSnapshot() {\n void readRuntimeBatteryInfoInternal().catch(() => {})\n return {\n ...cachedBatteryInfo,\n }\n}\n\nexport function readBatteryInfoSnapshot() {\n return readRuntimeBatteryInfoInternal()\n}\n"],"mappings":";AAOA,SAAS,uBAAuB,MAAmB;CACjD,IAAI,SAAS,SACX,OAAO;CAET,IAAI,SAAS,UACX,OAAO;CAET,OAAO;AACT;AAEA,SAAgB,cAAc,MAAmB;CAC/C,MAAM,mBAAoB,OAAO,cAAc,cAAc,YAAY;CAGzE,IAAI,CAAC,oBAAoB,OAAO,iBAAiB,YAAY,YAC3D,MAAM,IAAI,MAAM,wBAAwB;CAE1C,iBAAiB,QAAQ,uBAAuB,IAAI,CAAC;AACvD;AAEA,SAAS,sBAAsB,OAAgB;CAC7C,IAAI,OAAO,UAAU,YAAY,OAAO,MAAM,KAAK,GACjD,OAAO;CAET,MAAM,QAAQ,KAAK,MAAM,QAAQ,GAAG;CACpC,OAAO,KAAK,IAAI,KAAK,KAAK,IAAI,GAAG,KAAK,CAAC;AACzC;AAEA,IAAI,oBAAqC;CACvC,OAAO;CACP,YAAY;AACd;AAEA,eAAe,iCAAiC;CAC9C,MAAM,mBAAmB,WAAW;CAGpC,IAAI,oBAAoB,OAAO,iBAAiB,eAAe,YAAY;EACzE,MAAM,UAAU,MAAM,iBAAiB,WAAW;EAClD,MAAM,WAA4B;GAChC,OAAO,sBAAsB,SAAS,KAAK;GAC3C,YAAY,QAAQ,SAAS,QAAQ;EACvC;EACA,oBAAoB;EACpB,OAAO;CACT;CACA,OAAO;AACT;AAEA,SAAgB,8BAA8B;CAC5C,AAAK,+BAA+B,CAAC,CAAC,YAAY,CAAC,CAAC;CACpD,OAAO,EACL,GAAG,kBACL;AACF;AAEA,SAAgB,0BAA0B;CACxC,OAAO,+BAA+B;AACxC"}
|