@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,83 @@
|
|
|
1
|
+
import { NATIVE_COMPONENT_DESCRIPTORS } from "../../shared/nativeComponents.mjs";
|
|
2
|
+
import { collectFormControlValues } from "./formControl.mjs";
|
|
3
|
+
import { NATIVE_COMPONENT_STYLE } from "./style.mjs";
|
|
4
|
+
import { WeappForm } from "./form.mjs";
|
|
5
|
+
import { WeappButton } from "../button/index.mjs";
|
|
6
|
+
import { WeappCanvas } from "./canvas/index.mjs";
|
|
7
|
+
import { WeappCheckbox, WeappCheckboxGroup, collectCheckboxGroupValue } from "./checkbox.mjs";
|
|
8
|
+
import { WeappImage, resolveImageModeStyle } from "./image.mjs";
|
|
9
|
+
import { WeappText, WeappView } from "./primitives.mjs";
|
|
10
|
+
import { WeappCoverImage, WeappCoverView } from "./cover/index.mjs";
|
|
11
|
+
import { resolveIconColor, resolveIconSize, resolveIconType } from "./icon/helpers.mjs";
|
|
12
|
+
import { WeappIcon } from "./icon/index.mjs";
|
|
13
|
+
import { WeappInput, createInputEventDetail } from "./input.mjs";
|
|
14
|
+
import { WeappLabel } from "./label.mjs";
|
|
15
|
+
import { clampMovablePosition, resolveMovableDirection } from "./movable/helpers.mjs";
|
|
16
|
+
import { WeappMovableArea, WeappMovableView } from "./movable/index.mjs";
|
|
17
|
+
import { WeappNavigator } from "./navigator.mjs";
|
|
18
|
+
import { createPickerChangeDetail, normalizePickerIndexes, resolvePickerColumns, resolvePickerMode } from "./picker/helpers.mjs";
|
|
19
|
+
import { WeappPicker } from "./picker/index.mjs";
|
|
20
|
+
import { normalizePickerViewValue } from "./pickerView/helpers.mjs";
|
|
21
|
+
import { WeappPickerViewColumn } from "./pickerView/column.mjs";
|
|
22
|
+
import { WeappPickerView } from "./pickerView/index.mjs";
|
|
23
|
+
import { createProgressActiveEndDetail, resolveProgressAnimationDuration, resolveProgressConfig } from "./progress/helpers.mjs";
|
|
24
|
+
import { WeappProgress } from "./progress/index.mjs";
|
|
25
|
+
import { WeappRadio, WeappRadioGroup, collectRadioGroupValue } from "./radio.mjs";
|
|
26
|
+
import { normalizeRichTextNodes, sanitizeRichTextAttributes, sanitizeRichTextStyle } from "./richText/helpers.mjs";
|
|
27
|
+
import { WeappRichText } from "./richText/index.mjs";
|
|
28
|
+
import { WeappScrollView, createScrollEventDetail } from "./scrollView.mjs";
|
|
29
|
+
import { createSliderEventDetail, resolveSliderConfig } from "./slider/helpers.mjs";
|
|
30
|
+
import { WeappSlider } from "./slider/index.mjs";
|
|
31
|
+
import { createSwiperChangeDetail, resolveSwipeTarget, resolveSwiperIndex, resolveSwiperNumber } from "./swiper/helpers.mjs";
|
|
32
|
+
import { WeappSwiper } from "./swiper/index.mjs";
|
|
33
|
+
import { WeappSwiperItem } from "./swiper/item.mjs";
|
|
34
|
+
import { WeappSwitch, createSwitchEventDetail } from "./switch.mjs";
|
|
35
|
+
import { WeappTextarea, createTextareaLineChangeDetail } from "./textarea.mjs";
|
|
36
|
+
import { createVideoProgressDetail, createVideoTimeUpdateDetail, resolveVideoObjectFit } from "./video/helpers.mjs";
|
|
37
|
+
import { WeappVideo } from "./video/index.mjs";
|
|
38
|
+
|
|
39
|
+
//#region src/runtime/nativeComponents/index.ts
|
|
40
|
+
const constructors = {
|
|
41
|
+
"weapp-view": WeappView,
|
|
42
|
+
"weapp-text": WeappText,
|
|
43
|
+
"weapp-image": WeappImage,
|
|
44
|
+
"weapp-button": WeappButton,
|
|
45
|
+
"weapp-input": WeappInput,
|
|
46
|
+
"weapp-textarea": WeappTextarea,
|
|
47
|
+
"weapp-form": WeappForm,
|
|
48
|
+
"weapp-label": WeappLabel,
|
|
49
|
+
"weapp-checkbox-group": WeappCheckboxGroup,
|
|
50
|
+
"weapp-checkbox": WeappCheckbox,
|
|
51
|
+
"weapp-radio-group": WeappRadioGroup,
|
|
52
|
+
"weapp-radio": WeappRadio,
|
|
53
|
+
"weapp-switch": WeappSwitch,
|
|
54
|
+
"weapp-picker": WeappPicker,
|
|
55
|
+
"weapp-picker-view": WeappPickerView,
|
|
56
|
+
"weapp-picker-view-column": WeappPickerViewColumn,
|
|
57
|
+
"weapp-slider": WeappSlider,
|
|
58
|
+
"weapp-icon": WeappIcon,
|
|
59
|
+
"weapp-progress": WeappProgress,
|
|
60
|
+
"weapp-rich-text": WeappRichText,
|
|
61
|
+
"weapp-scroll-view": WeappScrollView,
|
|
62
|
+
"weapp-navigator": WeappNavigator,
|
|
63
|
+
"weapp-swiper": WeappSwiper,
|
|
64
|
+
"weapp-swiper-item": WeappSwiperItem,
|
|
65
|
+
"weapp-canvas": WeappCanvas,
|
|
66
|
+
"weapp-video": WeappVideo,
|
|
67
|
+
"weapp-cover-view": WeappCoverView,
|
|
68
|
+
"weapp-cover-image": WeappCoverImage,
|
|
69
|
+
"weapp-movable-area": WeappMovableArea,
|
|
70
|
+
"weapp-movable-view": WeappMovableView
|
|
71
|
+
};
|
|
72
|
+
function ensureNativeComponentsDefined() {
|
|
73
|
+
if (typeof customElements === "undefined") return;
|
|
74
|
+
for (const descriptor of NATIVE_COMPONENT_DESCRIPTORS) {
|
|
75
|
+
if (customElements.get(descriptor.webTag)) continue;
|
|
76
|
+
const constructor = constructors[descriptor.webTag];
|
|
77
|
+
customElements.define(descriptor.webTag, constructor);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
//#endregion
|
|
82
|
+
export { createInputEventDetail, createScrollEventDetail, createSwitchEventDetail, createTextareaLineChangeDetail, createVideoProgressDetail, createVideoTimeUpdateDetail, ensureNativeComponentsDefined, resolveImageModeStyle, resolveVideoObjectFit };
|
|
83
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../../src/runtime/nativeComponents/index.ts"],"sourcesContent":["import type { NativeComponentWebTag } from '../../shared/nativeComponents'\nimport { NATIVE_COMPONENT_DESCRIPTORS } from '../../shared/nativeComponents'\nimport { WeappButton } from '../button'\nimport { WeappCanvas } from './canvas'\nimport { WeappCheckbox, WeappCheckboxGroup } from './checkbox'\nimport { WeappCoverImage, WeappCoverView } from './cover'\nimport { WeappForm } from './form'\nimport { WeappIcon } from './icon'\nimport { WeappImage } from './image'\nimport { WeappInput } from './input'\nimport { WeappLabel } from './label'\nimport { WeappMovableArea, WeappMovableView } from './movable'\nimport { WeappNavigator } from './navigator'\nimport { WeappPicker } from './picker'\nimport { WeappPickerView, WeappPickerViewColumn } from './pickerView'\nimport { WeappText, WeappView } from './primitives'\nimport { WeappProgress } from './progress'\nimport { WeappRadio, WeappRadioGroup } from './radio'\nimport { WeappRichText } from './richText'\nimport { WeappScrollView } from './scrollView'\nimport { WeappSlider } from './slider'\nimport { WeappSwiper } from './swiper'\nimport { WeappSwiperItem } from './swiper/item'\nimport { WeappSwitch } from './switch'\nimport { WeappTextarea } from './textarea'\nimport { WeappVideo } from './video'\n\nconst constructors = {\n 'weapp-view': WeappView,\n 'weapp-text': WeappText,\n 'weapp-image': WeappImage,\n 'weapp-button': WeappButton,\n 'weapp-input': WeappInput,\n 'weapp-textarea': WeappTextarea,\n 'weapp-form': WeappForm,\n 'weapp-label': WeappLabel,\n 'weapp-checkbox-group': WeappCheckboxGroup,\n 'weapp-checkbox': WeappCheckbox,\n 'weapp-radio-group': WeappRadioGroup,\n 'weapp-radio': WeappRadio,\n 'weapp-switch': WeappSwitch,\n 'weapp-picker': WeappPicker,\n 'weapp-picker-view': WeappPickerView,\n 'weapp-picker-view-column': WeappPickerViewColumn,\n 'weapp-slider': WeappSlider,\n 'weapp-icon': WeappIcon,\n 'weapp-progress': WeappProgress,\n 'weapp-rich-text': WeappRichText,\n 'weapp-scroll-view': WeappScrollView,\n 'weapp-navigator': WeappNavigator,\n 'weapp-swiper': WeappSwiper,\n 'weapp-swiper-item': WeappSwiperItem,\n 'weapp-canvas': WeappCanvas,\n 'weapp-video': WeappVideo,\n 'weapp-cover-view': WeappCoverView,\n 'weapp-cover-image': WeappCoverImage,\n 'weapp-movable-area': WeappMovableArea,\n 'weapp-movable-view': WeappMovableView,\n} satisfies Record<NativeComponentWebTag, CustomElementConstructor>\n\nexport function ensureNativeComponentsDefined() {\n if (typeof customElements === 'undefined') {\n return\n }\n for (const descriptor of NATIVE_COMPONENT_DESCRIPTORS) {\n if (customElements.get(descriptor.webTag)) {\n continue\n }\n const constructor = constructors[descriptor.webTag]\n customElements.define(descriptor.webTag, constructor)\n }\n}\n\nexport { collectCheckboxGroupValue } from './checkbox'\nexport { collectFormControlValues } from './formControl'\nexport { resolveIconColor, resolveIconSize, resolveIconType } from './icon/helpers'\nexport { resolveImageModeStyle } from './image'\nexport { createInputEventDetail } from './input'\nexport { clampMovablePosition, resolveMovableDirection } from './movable/helpers'\nexport {\n createPickerChangeDetail,\n normalizePickerIndexes,\n resolvePickerColumns,\n resolvePickerMode,\n} from './picker/helpers'\nexport { normalizePickerViewValue } from './pickerView/helpers'\nexport {\n createProgressActiveEndDetail,\n resolveProgressAnimationDuration,\n resolveProgressConfig,\n} from './progress/helpers'\nexport { collectRadioGroupValue } from './radio'\nexport {\n normalizeRichTextNodes,\n sanitizeRichTextAttributes,\n sanitizeRichTextStyle,\n} from './richText/helpers'\nexport { createScrollEventDetail } from './scrollView'\nexport { createSliderEventDetail, resolveSliderConfig } from './slider/helpers'\nexport { NATIVE_COMPONENT_STYLE } from './style'\nexport {\n createSwiperChangeDetail,\n resolveSwiperIndex,\n resolveSwiperNumber,\n resolveSwipeTarget,\n} from './swiper/helpers'\nexport { createSwitchEventDetail } from './switch'\nexport { createTextareaLineChangeDetail } from './textarea'\nexport {\n createVideoProgressDetail,\n createVideoTimeUpdateDetail,\n resolveVideoObjectFit,\n} from './video/helpers'\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BA,MAAM,eAAe;CACnB,cAAc;CACd,cAAc;CACd,eAAe;CACf,gBAAgB;CAChB,eAAe;CACf,kBAAkB;CAClB,cAAc;CACd,eAAe;CACf,wBAAwB;CACxB,kBAAkB;CAClB,qBAAqB;CACrB,eAAe;CACf,gBAAgB;CAChB,gBAAgB;CAChB,qBAAqB;CACrB,4BAA4B;CAC5B,gBAAgB;CAChB,cAAc;CACd,kBAAkB;CAClB,mBAAmB;CACnB,qBAAqB;CACrB,mBAAmB;CACnB,gBAAgB;CAChB,qBAAqB;CACrB,gBAAgB;CAChB,eAAe;CACf,oBAAoB;CACpB,qBAAqB;CACrB,sBAAsB;CACtB,sBAAsB;AACxB;AAEA,SAAgB,gCAAgC;CAC9C,IAAI,OAAO,mBAAmB,aAC5B;CAEF,KAAK,MAAM,cAAc,8BAA8B;EACrD,IAAI,eAAe,IAAI,WAAW,MAAM,GACtC;EAEF,MAAM,cAAc,aAAa,WAAW;EAC5C,eAAe,OAAO,WAAW,QAAQ,WAAW;CACtD;AACF"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
//#region src/runtime/nativeComponents/input.d.ts
|
|
2
|
+
declare function createInputEventDetail(input: Pick<HTMLInputElement, 'selectionStart' | 'value'>): {
|
|
3
|
+
value: string;
|
|
4
|
+
cursor: number;
|
|
5
|
+
};
|
|
6
|
+
//#endregion
|
|
7
|
+
export { createInputEventDetail };
|
|
8
|
+
//# sourceMappingURL=input.d.mts.map
|
|
@@ -0,0 +1,131 @@
|
|
|
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
|
+
|
|
6
|
+
//#region src/runtime/nativeComponents/input.ts
|
|
7
|
+
const BaseElement = globalThis.HTMLElement ?? class {};
|
|
8
|
+
function resolveInputType(element) {
|
|
9
|
+
if (readBooleanAttribute(element, "password")) return "password";
|
|
10
|
+
const type = element.getAttribute("type");
|
|
11
|
+
return type === "number" || type === "digit" || type === "idcard" ? "text" : type ?? "text";
|
|
12
|
+
}
|
|
13
|
+
function createInputEventDetail(input) {
|
|
14
|
+
return {
|
|
15
|
+
value: input.value,
|
|
16
|
+
cursor: input.selectionStart ?? input.value.length
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
var WeappInput = class extends BaseElement {
|
|
20
|
+
static observedAttributes = [...getNativeComponentDescriptor("input").attributes];
|
|
21
|
+
#input;
|
|
22
|
+
#initialValue = "";
|
|
23
|
+
#initialValueCaptured = false;
|
|
24
|
+
get formControlName() {
|
|
25
|
+
return this.getAttribute("name") ?? "";
|
|
26
|
+
}
|
|
27
|
+
get formControlValue() {
|
|
28
|
+
return this.value;
|
|
29
|
+
}
|
|
30
|
+
get formControlDisabled() {
|
|
31
|
+
return readBooleanAttribute(this, "disabled");
|
|
32
|
+
}
|
|
33
|
+
get value() {
|
|
34
|
+
return this.#input?.value ?? this.getAttribute("value") ?? "";
|
|
35
|
+
}
|
|
36
|
+
set value(value) {
|
|
37
|
+
this.setAttribute("value", value ?? "");
|
|
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") this.#syncFocus();
|
|
56
|
+
}
|
|
57
|
+
focus(options) {
|
|
58
|
+
this.#input?.focus(options);
|
|
59
|
+
}
|
|
60
|
+
blur() {
|
|
61
|
+
this.#input?.blur();
|
|
62
|
+
}
|
|
63
|
+
formReset() {
|
|
64
|
+
if (this.#input) this.#input.value = this.#initialValue;
|
|
65
|
+
}
|
|
66
|
+
formActivate() {
|
|
67
|
+
this.focus();
|
|
68
|
+
}
|
|
69
|
+
#ensureStructure() {
|
|
70
|
+
if (this.#input || typeof document === "undefined") return;
|
|
71
|
+
const root = this.shadowRoot ?? this.attachShadow({ mode: "open" });
|
|
72
|
+
const style = document.createElement("style");
|
|
73
|
+
style.textContent = `
|
|
74
|
+
:host { cursor: text; }
|
|
75
|
+
input {
|
|
76
|
+
display: block;
|
|
77
|
+
box-sizing: border-box;
|
|
78
|
+
width: 100%;
|
|
79
|
+
min-width: 0;
|
|
80
|
+
height: 100%;
|
|
81
|
+
padding: 0;
|
|
82
|
+
border: 0;
|
|
83
|
+
outline: 0;
|
|
84
|
+
color: inherit;
|
|
85
|
+
background: transparent;
|
|
86
|
+
font: inherit;
|
|
87
|
+
line-height: inherit;
|
|
88
|
+
}
|
|
89
|
+
`;
|
|
90
|
+
const input = document.createElement("input");
|
|
91
|
+
input.addEventListener("input", (event) => {
|
|
92
|
+
event.stopPropagation();
|
|
93
|
+
dispatchMiniProgramEvent(this, "input", createInputEventDetail(input));
|
|
94
|
+
});
|
|
95
|
+
input.addEventListener("focus", () => {
|
|
96
|
+
dispatchMiniProgramEvent(this, "focus", {
|
|
97
|
+
value: input.value,
|
|
98
|
+
height: 0
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
input.addEventListener("blur", () => {
|
|
102
|
+
dispatchMiniProgramEvent(this, "blur", createInputEventDetail(input));
|
|
103
|
+
});
|
|
104
|
+
input.addEventListener("keydown", (event) => {
|
|
105
|
+
if (event.key === "Enter") dispatchMiniProgramEvent(this, "confirm", { value: input.value });
|
|
106
|
+
});
|
|
107
|
+
root.append(style, input);
|
|
108
|
+
this.#input = input;
|
|
109
|
+
}
|
|
110
|
+
#syncAttributes() {
|
|
111
|
+
if (!this.#input) return;
|
|
112
|
+
const value = this.getAttribute("value") ?? "";
|
|
113
|
+
if (this.#input.value !== value) this.#input.value = value;
|
|
114
|
+
this.#input.type = resolveInputType(this);
|
|
115
|
+
this.#input.placeholder = this.getAttribute("placeholder") ?? "";
|
|
116
|
+
this.#input.disabled = readBooleanAttribute(this, "disabled");
|
|
117
|
+
const maxlength = resolveMaxLength(this.getAttribute("maxlength"));
|
|
118
|
+
if (maxlength === void 0) this.#input.removeAttribute("maxlength");
|
|
119
|
+
else this.#input.maxLength = maxlength;
|
|
120
|
+
const confirmType = this.getAttribute("confirm-type");
|
|
121
|
+
if (confirmType) this.#input.enterKeyHint = confirmType === "send" ? "send" : confirmType;
|
|
122
|
+
}
|
|
123
|
+
#syncFocus() {
|
|
124
|
+
if (!readBooleanAttribute(this, "focus")) return;
|
|
125
|
+
queueMicrotask(() => this.focus());
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
|
|
129
|
+
//#endregion
|
|
130
|
+
export { WeappInput, createInputEventDetail };
|
|
131
|
+
//# sourceMappingURL=input.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input.mjs","names":["#input","#initialValueCaptured","#initialValue","#ensureStructure","#syncAttributes","#syncFocus"],"sources":["../../../src/runtime/nativeComponents/input.ts"],"sourcesContent":["import { getNativeComponentDescriptor } from '../../shared/nativeComponents'\nimport { connectFormControl, disconnectFormControl } from './formControl'\nimport { dispatchMiniProgramEvent, readBooleanAttribute, resolveContainingShadowRoot, resolveMaxLength } from './helpers'\nimport { ensureNativeComponentStyle } from './style'\n\nconst BaseElement = (globalThis.HTMLElement ?? class {}) as typeof HTMLElement\n\nfunction resolveInputType(element: Element) {\n if (readBooleanAttribute(element, 'password')) {\n return 'password'\n }\n const type = element.getAttribute('type')\n return type === 'number' || type === 'digit' || type === 'idcard' ? 'text' : (type ?? 'text')\n}\n\nexport function createInputEventDetail(input: Pick<HTMLInputElement, 'selectionStart' | 'value'>) {\n return {\n value: input.value,\n cursor: input.selectionStart ?? input.value.length,\n }\n}\n\nexport class WeappInput extends BaseElement {\n static observedAttributes = [...getNativeComponentDescriptor('input')!.attributes]\n\n #input?: HTMLInputElement\n #initialValue = ''\n #initialValueCaptured = false\n\n get formControlName() {\n return this.getAttribute('name') ?? ''\n }\n\n get formControlValue() {\n return this.value\n }\n\n get formControlDisabled() {\n return readBooleanAttribute(this, 'disabled')\n }\n\n get value() {\n return this.#input?.value ?? this.getAttribute('value') ?? ''\n }\n\n set value(value: string) {\n this.setAttribute('value', value ?? '')\n }\n\n connectedCallback() {\n ensureNativeComponentStyle(resolveContainingShadowRoot(this))\n if (!this.#initialValueCaptured) {\n this.#initialValue = this.getAttribute('value') ?? ''\n this.#initialValueCaptured = true\n }\n this.#ensureStructure()\n this.#syncAttributes()\n connectFormControl(this)\n this.#syncFocus()\n }\n\n disconnectedCallback() {\n disconnectFormControl(this)\n }\n\n attributeChangedCallback(name: string) {\n this.#syncAttributes()\n if (name === 'focus') {\n this.#syncFocus()\n }\n }\n\n focus(options?: FocusOptions) {\n this.#input?.focus(options)\n }\n\n blur() {\n this.#input?.blur()\n }\n\n formReset() {\n if (this.#input) {\n this.#input.value = this.#initialValue\n }\n }\n\n formActivate() {\n this.focus()\n }\n\n #ensureStructure() {\n if (this.#input || typeof document === 'undefined') {\n return\n }\n const root = this.shadowRoot ?? this.attachShadow({ mode: 'open' })\n const style = document.createElement('style')\n style.textContent = `\n :host { cursor: text; }\n input {\n display: block;\n box-sizing: border-box;\n width: 100%;\n min-width: 0;\n height: 100%;\n padding: 0;\n border: 0;\n outline: 0;\n color: inherit;\n background: transparent;\n font: inherit;\n line-height: inherit;\n }\n `\n const input = document.createElement('input')\n input.addEventListener('input', (event) => {\n event.stopPropagation()\n dispatchMiniProgramEvent(this, 'input', createInputEventDetail(input))\n })\n input.addEventListener('focus', () => {\n dispatchMiniProgramEvent(this, 'focus', { value: input.value, height: 0 })\n })\n input.addEventListener('blur', () => {\n dispatchMiniProgramEvent(this, 'blur', createInputEventDetail(input))\n })\n input.addEventListener('keydown', (event) => {\n if (event.key === 'Enter') {\n dispatchMiniProgramEvent(this, 'confirm', { value: input.value })\n }\n })\n root.append(style, input)\n this.#input = input\n }\n\n #syncAttributes() {\n if (!this.#input) {\n return\n }\n const value = this.getAttribute('value') ?? ''\n if (this.#input.value !== value) {\n this.#input.value = value\n }\n this.#input.type = resolveInputType(this)\n this.#input.placeholder = this.getAttribute('placeholder') ?? ''\n this.#input.disabled = readBooleanAttribute(this, 'disabled')\n const maxlength = resolveMaxLength(this.getAttribute('maxlength'))\n if (maxlength === undefined) {\n this.#input.removeAttribute('maxlength')\n }\n else {\n this.#input.maxLength = maxlength\n }\n const confirmType = this.getAttribute('confirm-type')\n if (confirmType) {\n this.#input.enterKeyHint = confirmType === 'send' ? 'send' : confirmType as HTMLInputElement['enterKeyHint']\n }\n }\n\n #syncFocus() {\n if (!readBooleanAttribute(this, 'focus')) {\n return\n }\n queueMicrotask(() => this.focus())\n }\n}\n"],"mappings":";;;;;;AAKA,MAAM,cAAe,WAAW,eAAe,MAAM,CAAC;AAEtD,SAAS,iBAAiB,SAAkB;CAC1C,IAAI,qBAAqB,SAAS,UAAU,GAC1C,OAAO;CAET,MAAM,OAAO,QAAQ,aAAa,MAAM;CACxC,OAAO,SAAS,YAAY,SAAS,WAAW,SAAS,WAAW,SAAU,QAAQ;AACxF;AAEA,SAAgB,uBAAuB,OAA2D;CAChG,OAAO;EACL,OAAO,MAAM;EACb,QAAQ,MAAM,kBAAkB,MAAM,MAAM;CAC9C;AACF;AAEA,IAAa,aAAb,cAAgC,YAAY;CAC1C,OAAO,qBAAqB,CAAC,GAAG,6BAA6B,OAAO,CAAC,CAAE,UAAU;CAEjF;CACA,gBAAgB;CAChB,wBAAwB;CAExB,IAAI,kBAAkB;EACpB,OAAO,KAAK,aAAa,MAAM,KAAK;CACtC;CAEA,IAAI,mBAAmB;EACrB,OAAO,KAAK;CACd;CAEA,IAAI,sBAAsB;EACxB,OAAO,qBAAqB,MAAM,UAAU;CAC9C;CAEA,IAAI,QAAQ;EACV,OAAO,KAAKA,QAAQ,SAAS,KAAK,aAAa,OAAO,KAAK;CAC7D;CAEA,IAAI,MAAM,OAAe;EACvB,KAAK,aAAa,SAAS,SAAS,EAAE;CACxC;CAEA,oBAAoB;EAClB,2BAA2B,4BAA4B,IAAI,CAAC;EAC5D,IAAI,CAAC,KAAKC,uBAAuB;GAC/B,KAAKC,gBAAgB,KAAK,aAAa,OAAO,KAAK;GACnD,KAAKD,wBAAwB;EAC/B;EACA,KAAKE,iBAAiB;EACtB,KAAKC,gBAAgB;EACrB,mBAAmB,IAAI;EACvB,KAAKC,WAAW;CAClB;CAEA,uBAAuB;EACrB,sBAAsB,IAAI;CAC5B;CAEA,yBAAyB,MAAc;EACrC,KAAKD,gBAAgB;EACrB,IAAI,SAAS,SACX,KAAKC,WAAW;CAEpB;CAEA,MAAM,SAAwB;EAC5B,KAAKL,QAAQ,MAAM,OAAO;CAC5B;CAEA,OAAO;EACL,KAAKA,QAAQ,KAAK;CACpB;CAEA,YAAY;EACV,IAAI,KAAKA,QACP,KAAKA,OAAO,QAAQ,KAAKE;CAE7B;CAEA,eAAe;EACb,KAAK,MAAM;CACb;CAEA,mBAAmB;EACjB,IAAI,KAAKF,UAAU,OAAO,aAAa,aACrC;EAEF,MAAM,OAAO,KAAK,cAAc,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;EAClE,MAAM,QAAQ,SAAS,cAAc,OAAO;EAC5C,MAAM,cAAc;;;;;;;;;;;;;;;;;EAiBpB,MAAM,QAAQ,SAAS,cAAc,OAAO;EAC5C,MAAM,iBAAiB,UAAU,UAAU;GACzC,MAAM,gBAAgB;GACtB,yBAAyB,MAAM,SAAS,uBAAuB,KAAK,CAAC;EACvE,CAAC;EACD,MAAM,iBAAiB,eAAe;GACpC,yBAAyB,MAAM,SAAS;IAAE,OAAO,MAAM;IAAO,QAAQ;GAAE,CAAC;EAC3E,CAAC;EACD,MAAM,iBAAiB,cAAc;GACnC,yBAAyB,MAAM,QAAQ,uBAAuB,KAAK,CAAC;EACtE,CAAC;EACD,MAAM,iBAAiB,YAAY,UAAU;GAC3C,IAAI,MAAM,QAAQ,SAChB,yBAAyB,MAAM,WAAW,EAAE,OAAO,MAAM,MAAM,CAAC;EAEpE,CAAC;EACD,KAAK,OAAO,OAAO,KAAK;EACxB,KAAKA,SAAS;CAChB;CAEA,kBAAkB;EAChB,IAAI,CAAC,KAAKA,QACR;EAEF,MAAM,QAAQ,KAAK,aAAa,OAAO,KAAK;EAC5C,IAAI,KAAKA,OAAO,UAAU,OACxB,KAAKA,OAAO,QAAQ;EAEtB,KAAKA,OAAO,OAAO,iBAAiB,IAAI;EACxC,KAAKA,OAAO,cAAc,KAAK,aAAa,aAAa,KAAK;EAC9D,KAAKA,OAAO,WAAW,qBAAqB,MAAM,UAAU;EAC5D,MAAM,YAAY,iBAAiB,KAAK,aAAa,WAAW,CAAC;EACjE,IAAI,cAAc,QAChB,KAAKA,OAAO,gBAAgB,WAAW;OAGvC,KAAKA,OAAO,YAAY;EAE1B,MAAM,cAAc,KAAK,aAAa,cAAc;EACpD,IAAI,aACF,KAAKA,OAAO,eAAe,gBAAgB,SAAS,SAAS;CAEjE;CAEA,aAAa;EACX,IAAI,CAAC,qBAAqB,MAAM,OAAO,GACrC;EAEF,qBAAqB,KAAK,MAAM,CAAC;CACnC;AACF"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { getNativeComponentDescriptor } from "../../shared/nativeComponents.mjs";
|
|
2
|
+
import { isFormActivatable } from "./formControl.mjs";
|
|
3
|
+
import { resolveContainingShadowRoot } from "./helpers.mjs";
|
|
4
|
+
import { ensureNativeComponentStyle } from "./style.mjs";
|
|
5
|
+
|
|
6
|
+
//#region src/runtime/nativeComponents/label.ts
|
|
7
|
+
const BaseElement = globalThis.HTMLElement ?? class {};
|
|
8
|
+
const FORM_CONTROL_SELECTOR = "weapp-input, weapp-textarea, weapp-checkbox, weapp-radio, weapp-switch";
|
|
9
|
+
function findElementById(root, id) {
|
|
10
|
+
if (!("querySelectorAll" in root)) return null;
|
|
11
|
+
return Array.from(root.querySelectorAll("[id]")).find((element) => element.id === id) ?? null;
|
|
12
|
+
}
|
|
13
|
+
var WeappLabel = class extends BaseElement {
|
|
14
|
+
static observedAttributes = [...getNativeComponentDescriptor("label").attributes];
|
|
15
|
+
#bound = false;
|
|
16
|
+
connectedCallback() {
|
|
17
|
+
ensureNativeComponentStyle(resolveContainingShadowRoot(this));
|
|
18
|
+
if (!this.#bound) {
|
|
19
|
+
this.#bound = true;
|
|
20
|
+
this.addEventListener("click", this.#handleClick);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
#handleClick = (event) => {
|
|
24
|
+
if (event.defaultPrevented) return;
|
|
25
|
+
const path = event.composedPath();
|
|
26
|
+
const selfIndex = path.indexOf(this);
|
|
27
|
+
if (path.slice(0, selfIndex).some((node) => node instanceof Element && isFormActivatable(node))) return;
|
|
28
|
+
const forId = this.getAttribute("for")?.trim();
|
|
29
|
+
const target = forId ? findElementById(this.getRootNode(), forId) : this.querySelector(FORM_CONTROL_SELECTOR);
|
|
30
|
+
if (target && isFormActivatable(target)) target.formActivate?.();
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
//#endregion
|
|
35
|
+
export { WeappLabel };
|
|
36
|
+
//# sourceMappingURL=label.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"label.mjs","names":["#bound","#handleClick"],"sources":["../../../src/runtime/nativeComponents/label.ts"],"sourcesContent":["import { getNativeComponentDescriptor } from '../../shared/nativeComponents'\nimport { isFormActivatable } from './formControl'\nimport { resolveContainingShadowRoot } from './helpers'\nimport { ensureNativeComponentStyle } from './style'\n\nconst BaseElement = (globalThis.HTMLElement ?? class {}) as typeof HTMLElement\nconst FORM_CONTROL_SELECTOR = 'weapp-input, weapp-textarea, weapp-checkbox, weapp-radio, weapp-switch'\n\nfunction findElementById(root: Node, id: string) {\n if (!('querySelectorAll' in root)) {\n return null\n }\n return Array.from((root as ParentNode).querySelectorAll<HTMLElement>('[id]'))\n .find(element => element.id === id) ?? null\n}\n\nexport class WeappLabel extends BaseElement {\n static observedAttributes = [...getNativeComponentDescriptor('label')!.attributes]\n\n #bound = false\n\n connectedCallback() {\n ensureNativeComponentStyle(resolveContainingShadowRoot(this))\n if (!this.#bound) {\n this.#bound = true\n this.addEventListener('click', this.#handleClick)\n }\n }\n\n #handleClick = (event: Event) => {\n if (event.defaultPrevented) {\n return\n }\n const path = event.composedPath()\n const selfIndex = path.indexOf(this)\n if (path.slice(0, selfIndex).some(node => node instanceof Element && isFormActivatable(node))) {\n return\n }\n const forId = this.getAttribute('for')?.trim()\n const target = forId\n ? findElementById(this.getRootNode(), forId)\n : this.querySelector<HTMLElement>(FORM_CONTROL_SELECTOR)\n if (target && isFormActivatable(target)) {\n target.formActivate?.()\n }\n }\n}\n"],"mappings":";;;;;;AAKA,MAAM,cAAe,WAAW,eAAe,MAAM,CAAC;AACtD,MAAM,wBAAwB;AAE9B,SAAS,gBAAgB,MAAY,IAAY;CAC/C,IAAI,EAAE,sBAAsB,OAC1B,OAAO;CAET,OAAO,MAAM,KAAM,KAAoB,iBAA8B,MAAM,CAAC,CAAC,CAC1E,MAAK,YAAW,QAAQ,OAAO,EAAE,KAAK;AAC3C;AAEA,IAAa,aAAb,cAAgC,YAAY;CAC1C,OAAO,qBAAqB,CAAC,GAAG,6BAA6B,OAAO,CAAC,CAAE,UAAU;CAEjF,SAAS;CAET,oBAAoB;EAClB,2BAA2B,4BAA4B,IAAI,CAAC;EAC5D,IAAI,CAAC,KAAKA,QAAQ;GAChB,KAAKA,SAAS;GACd,KAAK,iBAAiB,SAAS,KAAKC,YAAY;EAClD;CACF;CAEA,gBAAgB,UAAiB;EAC/B,IAAI,MAAM,kBACR;EAEF,MAAM,OAAO,MAAM,aAAa;EAChC,MAAM,YAAY,KAAK,QAAQ,IAAI;EACnC,IAAI,KAAK,MAAM,GAAG,SAAS,CAAC,CAAC,MAAK,SAAQ,gBAAgB,WAAW,kBAAkB,IAAI,CAAC,GAC1F;EAEF,MAAM,QAAQ,KAAK,aAAa,KAAK,CAAC,EAAE,KAAK;EAC7C,MAAM,SAAS,QACX,gBAAgB,KAAK,YAAY,GAAG,KAAK,IACzC,KAAK,cAA2B,qBAAqB;EACzD,IAAI,UAAU,kBAAkB,MAAM,GACpC,OAAO,eAAe;CAE1B;AACF"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
//#region src/runtime/nativeComponents/mediaRegistry.ts
|
|
2
|
+
const mediaElements = /* @__PURE__ */ new Map();
|
|
3
|
+
const mediaRegistrations = /* @__PURE__ */ new WeakMap();
|
|
4
|
+
function normalizeMediaIds(ids) {
|
|
5
|
+
return Array.from(new Set(Array.from(ids, (id) => String(id ?? "").trim()).filter(Boolean)));
|
|
6
|
+
}
|
|
7
|
+
function unregisterNativeMediaElement(element) {
|
|
8
|
+
const registration = mediaRegistrations.get(element);
|
|
9
|
+
if (!registration) return;
|
|
10
|
+
const kindElements = mediaElements.get(registration.kind);
|
|
11
|
+
for (const id of registration.ids) {
|
|
12
|
+
const elements = kindElements.get(id);
|
|
13
|
+
const index = elements.lastIndexOf(element);
|
|
14
|
+
elements.splice(index, 1);
|
|
15
|
+
if (elements.length === 0) kindElements.delete(id);
|
|
16
|
+
}
|
|
17
|
+
if (kindElements.size === 0) mediaElements.delete(registration.kind);
|
|
18
|
+
mediaRegistrations.delete(element);
|
|
19
|
+
}
|
|
20
|
+
function registerNativeMediaElement(kind, ids, element) {
|
|
21
|
+
unregisterNativeMediaElement(element);
|
|
22
|
+
const normalizedIds = normalizeMediaIds(ids);
|
|
23
|
+
if (normalizedIds.length === 0) return;
|
|
24
|
+
let kindElements = mediaElements.get(kind);
|
|
25
|
+
if (!kindElements) {
|
|
26
|
+
kindElements = /* @__PURE__ */ new Map();
|
|
27
|
+
mediaElements.set(kind, kindElements);
|
|
28
|
+
}
|
|
29
|
+
for (const id of normalizedIds) {
|
|
30
|
+
const elements = kindElements.get(id) ?? [];
|
|
31
|
+
elements.push(element);
|
|
32
|
+
kindElements.set(id, elements);
|
|
33
|
+
}
|
|
34
|
+
mediaRegistrations.set(element, {
|
|
35
|
+
kind,
|
|
36
|
+
ids: normalizedIds
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
function resolveNativeMediaElement(kind, id) {
|
|
40
|
+
const normalizedId = String(id).trim();
|
|
41
|
+
const elements = mediaElements.get(kind)?.get(normalizedId);
|
|
42
|
+
return elements?.[elements.length - 1];
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
//#endregion
|
|
46
|
+
export { registerNativeMediaElement, resolveNativeMediaElement, unregisterNativeMediaElement };
|
|
47
|
+
//# sourceMappingURL=mediaRegistry.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mediaRegistry.mjs","names":[],"sources":["../../../src/runtime/nativeComponents/mediaRegistry.ts"],"sourcesContent":["export type NativeMediaKind = 'canvas' | 'video'\n\ntype NativeMediaElement = HTMLCanvasElement | HTMLVideoElement\n\nconst mediaElements = new Map<NativeMediaKind, Map<string, NativeMediaElement[]>>()\nconst mediaRegistrations = new WeakMap<NativeMediaElement, {\n kind: NativeMediaKind\n ids: string[]\n}>()\n\nfunction normalizeMediaIds(ids: Iterable<string | null | undefined>) {\n return Array.from(new Set(\n Array.from(ids, id => String(id ?? '').trim()).filter(Boolean),\n ))\n}\n\nexport function unregisterNativeMediaElement(element: NativeMediaElement) {\n const registration = mediaRegistrations.get(element)\n if (!registration) {\n return\n }\n const kindElements = mediaElements.get(registration.kind)!\n for (const id of registration.ids) {\n const elements = kindElements.get(id)!\n const index = elements.lastIndexOf(element)\n elements.splice(index, 1)\n if (elements.length === 0) {\n kindElements.delete(id)\n }\n }\n if (kindElements.size === 0) {\n mediaElements.delete(registration.kind)\n }\n mediaRegistrations.delete(element)\n}\n\nexport function registerNativeMediaElement(\n kind: NativeMediaKind,\n ids: Iterable<string | null | undefined>,\n element: NativeMediaElement,\n) {\n unregisterNativeMediaElement(element)\n const normalizedIds = normalizeMediaIds(ids)\n if (normalizedIds.length === 0) {\n return\n }\n let kindElements = mediaElements.get(kind)\n if (!kindElements) {\n kindElements = new Map()\n mediaElements.set(kind, kindElements)\n }\n for (const id of normalizedIds) {\n const elements = kindElements.get(id) ?? []\n elements.push(element)\n kindElements.set(id, elements)\n }\n mediaRegistrations.set(element, { kind, ids: normalizedIds })\n}\n\nexport function resolveNativeMediaElement<T extends NativeMediaElement>(kind: NativeMediaKind, id: string) {\n const normalizedId = String(id).trim()\n const elements = mediaElements.get(kind)?.get(normalizedId)\n return elements?.[elements.length - 1] as T | undefined\n}\n"],"mappings":";AAIA,MAAM,gCAAgB,IAAI,IAAwD;AAClF,MAAM,qCAAqB,IAAI,QAG5B;AAEH,SAAS,kBAAkB,KAA0C;CACnE,OAAO,MAAM,KAAK,IAAI,IACpB,MAAM,KAAK,MAAK,OAAM,OAAO,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,OAAO,CAC/D,CAAC;AACH;AAEA,SAAgB,6BAA6B,SAA6B;CACxE,MAAM,eAAe,mBAAmB,IAAI,OAAO;CACnD,IAAI,CAAC,cACH;CAEF,MAAM,eAAe,cAAc,IAAI,aAAa,IAAI;CACxD,KAAK,MAAM,MAAM,aAAa,KAAK;EACjC,MAAM,WAAW,aAAa,IAAI,EAAE;EACpC,MAAM,QAAQ,SAAS,YAAY,OAAO;EAC1C,SAAS,OAAO,OAAO,CAAC;EACxB,IAAI,SAAS,WAAW,GACtB,aAAa,OAAO,EAAE;CAE1B;CACA,IAAI,aAAa,SAAS,GACxB,cAAc,OAAO,aAAa,IAAI;CAExC,mBAAmB,OAAO,OAAO;AACnC;AAEA,SAAgB,2BACd,MACA,KACA,SACA;CACA,6BAA6B,OAAO;CACpC,MAAM,gBAAgB,kBAAkB,GAAG;CAC3C,IAAI,cAAc,WAAW,GAC3B;CAEF,IAAI,eAAe,cAAc,IAAI,IAAI;CACzC,IAAI,CAAC,cAAc;EACjB,+BAAe,IAAI,IAAI;EACvB,cAAc,IAAI,MAAM,YAAY;CACtC;CACA,KAAK,MAAM,MAAM,eAAe;EAC9B,MAAM,WAAW,aAAa,IAAI,EAAE,KAAK,CAAC;EAC1C,SAAS,KAAK,OAAO;EACrB,aAAa,IAAI,IAAI,QAAQ;CAC/B;CACA,mBAAmB,IAAI,SAAS;EAAE;EAAM,KAAK;CAAc,CAAC;AAC9D;AAEA,SAAgB,0BAAwD,MAAuB,IAAY;CACzG,MAAM,eAAe,OAAO,EAAE,CAAC,CAAC,KAAK;CACrC,MAAM,WAAW,cAAc,IAAI,IAAI,CAAC,EAAE,IAAI,YAAY;CAC1D,OAAO,WAAW,SAAS,SAAS;AACtC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
//#region src/runtime/nativeComponents/movable/helpers.ts
|
|
2
|
+
function resolveMovableDirection(value) {
|
|
3
|
+
if (value === "horizontal" || value === "vertical" || value === "none") return value;
|
|
4
|
+
return "all";
|
|
5
|
+
}
|
|
6
|
+
function resolveMovableNumber(value, fallback = 0) {
|
|
7
|
+
const number = Number(value);
|
|
8
|
+
return Number.isFinite(number) ? number : fallback;
|
|
9
|
+
}
|
|
10
|
+
function clampMovablePosition(position, bounds, direction, outOfBounds) {
|
|
11
|
+
const next = { ...position };
|
|
12
|
+
if (!outOfBounds) {
|
|
13
|
+
next.x = Math.min(Math.max(0, next.x), Math.max(0, bounds.width - bounds.viewWidth));
|
|
14
|
+
next.y = Math.min(Math.max(0, next.y), Math.max(0, bounds.height - bounds.viewHeight));
|
|
15
|
+
}
|
|
16
|
+
if (direction === "horizontal" || direction === "none") next.y = position.y;
|
|
17
|
+
if (direction === "vertical" || direction === "none") next.x = position.x;
|
|
18
|
+
return next;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
//#endregion
|
|
22
|
+
export { clampMovablePosition, resolveMovableDirection, resolveMovableNumber };
|
|
23
|
+
//# sourceMappingURL=helpers.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.mjs","names":[],"sources":["../../../../src/runtime/nativeComponents/movable/helpers.ts"],"sourcesContent":["export type MovableDirection = 'all' | 'horizontal' | 'vertical' | 'none'\n\nexport interface MovablePosition {\n x: number\n y: number\n}\n\nexport interface MovableBounds {\n width: number\n height: number\n viewWidth: number\n viewHeight: number\n}\n\nexport function resolveMovableDirection(value: string | null): MovableDirection {\n if (value === 'horizontal' || value === 'vertical' || value === 'none') {\n return value\n }\n return 'all'\n}\n\nexport function resolveMovableNumber(value: string | null, fallback = 0) {\n const number = Number(value)\n return Number.isFinite(number) ? number : fallback\n}\n\nexport function clampMovablePosition(\n position: MovablePosition,\n bounds: MovableBounds,\n direction: MovableDirection,\n outOfBounds: boolean,\n) {\n const next = { ...position }\n if (!outOfBounds) {\n next.x = Math.min(Math.max(0, next.x), Math.max(0, bounds.width - bounds.viewWidth))\n next.y = Math.min(Math.max(0, next.y), Math.max(0, bounds.height - bounds.viewHeight))\n }\n if (direction === 'horizontal' || direction === 'none') {\n next.y = position.y\n }\n if (direction === 'vertical' || direction === 'none') {\n next.x = position.x\n }\n return next\n}\n"],"mappings":";AAcA,SAAgB,wBAAwB,OAAwC;CAC9E,IAAI,UAAU,gBAAgB,UAAU,cAAc,UAAU,QAC9D,OAAO;CAET,OAAO;AACT;AAEA,SAAgB,qBAAqB,OAAsB,WAAW,GAAG;CACvE,MAAM,SAAS,OAAO,KAAK;CAC3B,OAAO,OAAO,SAAS,MAAM,IAAI,SAAS;AAC5C;AAEA,SAAgB,qBACd,UACA,QACA,WACA,aACA;CACA,MAAM,OAAO,EAAE,GAAG,SAAS;CAC3B,IAAI,CAAC,aAAa;EAChB,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,KAAK,IAAI,GAAG,OAAO,QAAQ,OAAO,SAAS,CAAC;EACnF,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,KAAK,IAAI,GAAG,OAAO,SAAS,OAAO,UAAU,CAAC;CACvF;CACA,IAAI,cAAc,gBAAgB,cAAc,QAC9C,KAAK,IAAI,SAAS;CAEpB,IAAI,cAAc,cAAc,cAAc,QAC5C,KAAK,IAAI,SAAS;CAEpB,OAAO;AACT"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { getNativeComponentDescriptor } from "../../../shared/nativeComponents.mjs";
|
|
2
|
+
import { dispatchMiniProgramEvent, readBooleanAttribute, resolveContainingShadowRoot } from "../helpers.mjs";
|
|
3
|
+
import { ensureNativeComponentStyle } from "../style.mjs";
|
|
4
|
+
import { clampMovablePosition, resolveMovableDirection, resolveMovableNumber } from "./helpers.mjs";
|
|
5
|
+
|
|
6
|
+
//#region src/runtime/nativeComponents/movable/index.ts
|
|
7
|
+
const BaseElement = globalThis.HTMLElement ?? class {};
|
|
8
|
+
var WeappMovableArea = class extends BaseElement {
|
|
9
|
+
connectedCallback() {
|
|
10
|
+
ensureNativeComponentStyle(resolveContainingShadowRoot(this));
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
var WeappMovableView = class extends BaseElement {
|
|
14
|
+
static observedAttributes = [...getNativeComponentDescriptor("movable-view").attributes];
|
|
15
|
+
#position = {
|
|
16
|
+
x: 0,
|
|
17
|
+
y: 0
|
|
18
|
+
};
|
|
19
|
+
#drag;
|
|
20
|
+
#bound = false;
|
|
21
|
+
connectedCallback() {
|
|
22
|
+
ensureNativeComponentStyle(resolveContainingShadowRoot(this));
|
|
23
|
+
this.#syncAttributes();
|
|
24
|
+
if (!this.#bound) {
|
|
25
|
+
this.addEventListener("pointerdown", this.#handlePointerDown);
|
|
26
|
+
this.addEventListener("pointermove", this.#handlePointerMove);
|
|
27
|
+
this.addEventListener("pointerup", this.#handlePointerUp);
|
|
28
|
+
this.addEventListener("pointercancel", this.#handlePointerUp);
|
|
29
|
+
this.#bound = true;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
disconnectedCallback() {
|
|
33
|
+
this.#drag = void 0;
|
|
34
|
+
}
|
|
35
|
+
attributeChangedCallback() {
|
|
36
|
+
this.#syncAttributes();
|
|
37
|
+
}
|
|
38
|
+
#syncAttributes() {
|
|
39
|
+
const direction = resolveMovableDirection(this.getAttribute("direction"));
|
|
40
|
+
this.#position = clampMovablePosition({
|
|
41
|
+
x: resolveMovableNumber(this.getAttribute("x")),
|
|
42
|
+
y: resolveMovableNumber(this.getAttribute("y"))
|
|
43
|
+
}, this.#readBounds(), direction, readBooleanAttribute(this, "out-of-bounds"));
|
|
44
|
+
this.style.transition = readBooleanAttribute(this, "animation") ? "transform 300ms ease" : "none";
|
|
45
|
+
this.#applyPosition();
|
|
46
|
+
}
|
|
47
|
+
#readBounds() {
|
|
48
|
+
const areaRect = this.closest("weapp-movable-area")?.getBoundingClientRect();
|
|
49
|
+
const viewRect = this.getBoundingClientRect();
|
|
50
|
+
return {
|
|
51
|
+
width: areaRect?.width ?? 0,
|
|
52
|
+
height: areaRect?.height ?? 0,
|
|
53
|
+
viewWidth: viewRect.width || 10,
|
|
54
|
+
viewHeight: viewRect.height || 10
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
#applyPosition() {
|
|
58
|
+
this.style.transform = `translate3d(${this.#position.x}px, ${this.#position.y}px, 0)`;
|
|
59
|
+
}
|
|
60
|
+
#handlePointerDown = (event) => {
|
|
61
|
+
if (readBooleanAttribute(this, "disabled")) return;
|
|
62
|
+
const pointer = event;
|
|
63
|
+
const pointerId = Number.isFinite(pointer.pointerId) ? pointer.pointerId : 0;
|
|
64
|
+
this.#drag = {
|
|
65
|
+
pointerId,
|
|
66
|
+
startX: pointer.clientX,
|
|
67
|
+
startY: pointer.clientY,
|
|
68
|
+
position: { ...this.#position }
|
|
69
|
+
};
|
|
70
|
+
this.setPointerCapture?.(pointerId);
|
|
71
|
+
event.preventDefault();
|
|
72
|
+
};
|
|
73
|
+
#handlePointerMove = (event) => {
|
|
74
|
+
const drag = this.#drag;
|
|
75
|
+
if (!drag) return;
|
|
76
|
+
const pointer = event;
|
|
77
|
+
if (Number.isFinite(pointer.pointerId) && pointer.pointerId !== drag.pointerId) return;
|
|
78
|
+
const direction = resolveMovableDirection(this.getAttribute("direction"));
|
|
79
|
+
const next = clampMovablePosition({
|
|
80
|
+
x: drag.position.x + pointer.clientX - drag.startX,
|
|
81
|
+
y: drag.position.y + pointer.clientY - drag.startY
|
|
82
|
+
}, this.#readBounds(), direction, readBooleanAttribute(this, "out-of-bounds"));
|
|
83
|
+
if (direction === "horizontal" || direction === "none") next.y = drag.position.y;
|
|
84
|
+
if (direction === "vertical" || direction === "none") next.x = drag.position.x;
|
|
85
|
+
const changedX = next.x !== this.#position.x;
|
|
86
|
+
const changedY = next.y !== this.#position.y;
|
|
87
|
+
if (!changedX && !changedY) return;
|
|
88
|
+
this.#position = next;
|
|
89
|
+
this.#applyPosition();
|
|
90
|
+
const detail = {
|
|
91
|
+
x: next.x,
|
|
92
|
+
y: next.y,
|
|
93
|
+
source: "touch"
|
|
94
|
+
};
|
|
95
|
+
dispatchMiniProgramEvent(this, "change", detail);
|
|
96
|
+
if (changedX) dispatchMiniProgramEvent(this, "htouchmove", detail);
|
|
97
|
+
if (changedY) dispatchMiniProgramEvent(this, "vtouchmove", detail);
|
|
98
|
+
event.preventDefault();
|
|
99
|
+
};
|
|
100
|
+
#handlePointerUp = (event) => {
|
|
101
|
+
const drag = this.#drag;
|
|
102
|
+
if (!drag) return;
|
|
103
|
+
const pointer = event;
|
|
104
|
+
if (Number.isFinite(pointer.pointerId) && pointer.pointerId !== drag.pointerId) return;
|
|
105
|
+
this.releasePointerCapture?.(drag.pointerId);
|
|
106
|
+
this.#drag = void 0;
|
|
107
|
+
dispatchMiniProgramEvent(this, "change", {
|
|
108
|
+
x: this.#position.x,
|
|
109
|
+
y: this.#position.y,
|
|
110
|
+
source: "touch"
|
|
111
|
+
});
|
|
112
|
+
};
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
//#endregion
|
|
116
|
+
export { WeappMovableArea, WeappMovableView };
|
|
117
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["#syncAttributes","#bound","#handlePointerDown","#handlePointerMove","#handlePointerUp","#drag","#position","#readBounds","#applyPosition"],"sources":["../../../../src/runtime/nativeComponents/movable/index.ts"],"sourcesContent":["import type { MovablePosition } from './helpers'\nimport { getNativeComponentDescriptor } from '../../../shared/nativeComponents'\nimport { dispatchMiniProgramEvent, readBooleanAttribute, resolveContainingShadowRoot } from '../helpers'\nimport { ensureNativeComponentStyle } from '../style'\nimport {\n clampMovablePosition,\n\n resolveMovableDirection,\n resolveMovableNumber,\n} from './helpers'\n\nconst BaseElement = (globalThis.HTMLElement ?? class {}) as typeof HTMLElement\n\nexport class WeappMovableArea extends BaseElement {\n connectedCallback() {\n ensureNativeComponentStyle(resolveContainingShadowRoot(this))\n }\n}\n\nexport class WeappMovableView extends BaseElement {\n static observedAttributes = [...getNativeComponentDescriptor('movable-view')!.attributes]\n\n #position: MovablePosition = { x: 0, y: 0 }\n #drag?: { pointerId: number, startX: number, startY: number, position: MovablePosition }\n #bound = false\n\n connectedCallback() {\n ensureNativeComponentStyle(resolveContainingShadowRoot(this))\n this.#syncAttributes()\n if (!this.#bound) {\n this.addEventListener('pointerdown', this.#handlePointerDown)\n this.addEventListener('pointermove', this.#handlePointerMove)\n this.addEventListener('pointerup', this.#handlePointerUp)\n this.addEventListener('pointercancel', this.#handlePointerUp)\n this.#bound = true\n }\n }\n\n disconnectedCallback() {\n this.#drag = undefined\n }\n\n attributeChangedCallback() {\n this.#syncAttributes()\n }\n\n #syncAttributes() {\n const direction = resolveMovableDirection(this.getAttribute('direction'))\n this.#position = clampMovablePosition({\n x: resolveMovableNumber(this.getAttribute('x')),\n y: resolveMovableNumber(this.getAttribute('y')),\n }, this.#readBounds(), direction, readBooleanAttribute(this, 'out-of-bounds'))\n this.style.transition = readBooleanAttribute(this, 'animation') ? 'transform 300ms ease' : 'none'\n this.#applyPosition()\n }\n\n #readBounds() {\n const area = this.closest('weapp-movable-area')\n const areaRect = area?.getBoundingClientRect()\n const viewRect = this.getBoundingClientRect()\n return {\n width: areaRect?.width ?? 0,\n height: areaRect?.height ?? 0,\n viewWidth: viewRect.width || 10,\n viewHeight: viewRect.height || 10,\n }\n }\n\n #applyPosition() {\n this.style.transform = `translate3d(${this.#position.x}px, ${this.#position.y}px, 0)`\n }\n\n #handlePointerDown = (event: Event) => {\n if (readBooleanAttribute(this, 'disabled')) {\n return\n }\n const pointer = event as PointerEvent\n const pointerId = Number.isFinite(pointer.pointerId) ? pointer.pointerId : 0\n this.#drag = {\n pointerId,\n startX: pointer.clientX,\n startY: pointer.clientY,\n position: { ...this.#position },\n }\n this.setPointerCapture?.(pointerId)\n event.preventDefault()\n }\n\n #handlePointerMove = (event: Event) => {\n const drag = this.#drag\n if (!drag) {\n return\n }\n const pointer = event as PointerEvent\n if (Number.isFinite(pointer.pointerId) && pointer.pointerId !== drag.pointerId) {\n return\n }\n const direction = resolveMovableDirection(this.getAttribute('direction'))\n const next = clampMovablePosition({\n x: drag.position.x + pointer.clientX - drag.startX,\n y: drag.position.y + pointer.clientY - drag.startY,\n }, this.#readBounds(), direction, readBooleanAttribute(this, 'out-of-bounds'))\n if (direction === 'horizontal' || direction === 'none') {\n next.y = drag.position.y\n }\n if (direction === 'vertical' || direction === 'none') {\n next.x = drag.position.x\n }\n const changedX = next.x !== this.#position.x\n const changedY = next.y !== this.#position.y\n if (!changedX && !changedY) {\n return\n }\n this.#position = next\n this.#applyPosition()\n const detail = { x: next.x, y: next.y, source: 'touch' }\n dispatchMiniProgramEvent(this, 'change', detail)\n if (changedX) {\n dispatchMiniProgramEvent(this, 'htouchmove', detail)\n }\n if (changedY) {\n dispatchMiniProgramEvent(this, 'vtouchmove', detail)\n }\n event.preventDefault()\n }\n\n #handlePointerUp = (event: Event) => {\n const drag = this.#drag\n if (!drag) {\n return\n }\n const pointer = event as PointerEvent\n if (Number.isFinite(pointer.pointerId) && pointer.pointerId !== drag.pointerId) {\n return\n }\n this.releasePointerCapture?.(drag.pointerId)\n this.#drag = undefined\n dispatchMiniProgramEvent(this, 'change', {\n x: this.#position.x,\n y: this.#position.y,\n source: 'touch',\n })\n }\n}\n\nexport { clampMovablePosition, resolveMovableDirection } from './helpers'\n"],"mappings":"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"}
|