@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,235 @@
|
|
|
1
|
+
import { getNativeComponentDescriptor } from "../../../shared/nativeComponents.mjs";
|
|
2
|
+
import { dispatchMiniProgramEvent, readBooleanAttribute, resolveContainingShadowRoot } from "../helpers.mjs";
|
|
3
|
+
import { ensureNativeComponentStyle } from "../style.mjs";
|
|
4
|
+
import { createSwiperChangeDetail, resolveSwipeTarget, resolveSwiperEasing, resolveSwiperIndex, resolveSwiperLength, resolveSwiperNumber, resolveSwiperStep } from "./helpers.mjs";
|
|
5
|
+
import { SWIPER_SHADOW_STYLE } from "./style.mjs";
|
|
6
|
+
|
|
7
|
+
//#region src/runtime/nativeComponents/swiper/index.ts
|
|
8
|
+
const BaseElement = globalThis.HTMLElement ?? class {};
|
|
9
|
+
var WeappSwiper = class extends BaseElement {
|
|
10
|
+
static observedAttributes = [...getNativeComponentDescriptor("swiper").attributes];
|
|
11
|
+
#viewport;
|
|
12
|
+
#track;
|
|
13
|
+
#slot;
|
|
14
|
+
#indicators;
|
|
15
|
+
#items = [];
|
|
16
|
+
#current = 0;
|
|
17
|
+
#itemSize = 0;
|
|
18
|
+
#initialized = false;
|
|
19
|
+
#autoplayTimer;
|
|
20
|
+
#animationTimer;
|
|
21
|
+
#resizeObserver;
|
|
22
|
+
#pointer;
|
|
23
|
+
connectedCallback() {
|
|
24
|
+
ensureNativeComponentStyle(resolveContainingShadowRoot(this));
|
|
25
|
+
this.#ensureStructure();
|
|
26
|
+
this.#syncItems();
|
|
27
|
+
this.#syncAttributes(false);
|
|
28
|
+
this.#observeSize();
|
|
29
|
+
this.#restartAutoplay();
|
|
30
|
+
this.#initialized = true;
|
|
31
|
+
}
|
|
32
|
+
disconnectedCallback() {
|
|
33
|
+
this.#clearTimers();
|
|
34
|
+
this.#resizeObserver?.disconnect();
|
|
35
|
+
this.#resizeObserver = void 0;
|
|
36
|
+
this.#initialized = false;
|
|
37
|
+
}
|
|
38
|
+
attributeChangedCallback(name) {
|
|
39
|
+
if (!this.isConnected || !this.#initialized) return;
|
|
40
|
+
this.#syncAttributes(name === "current" || name === "current-item-id", name);
|
|
41
|
+
this.#restartAutoplay();
|
|
42
|
+
}
|
|
43
|
+
#ensureStructure() {
|
|
44
|
+
if (this.#viewport || typeof document === "undefined") return;
|
|
45
|
+
const root = this.shadowRoot ?? this.attachShadow({ mode: "open" });
|
|
46
|
+
const style = document.createElement("style");
|
|
47
|
+
style.textContent = SWIPER_SHADOW_STYLE;
|
|
48
|
+
const viewport = document.createElement("div");
|
|
49
|
+
viewport.className = "viewport";
|
|
50
|
+
const track = document.createElement("div");
|
|
51
|
+
track.className = "track";
|
|
52
|
+
const slot = document.createElement("slot");
|
|
53
|
+
track.append(slot);
|
|
54
|
+
viewport.append(track);
|
|
55
|
+
const indicators = document.createElement("div");
|
|
56
|
+
indicators.className = "indicators";
|
|
57
|
+
root.append(style, viewport, indicators);
|
|
58
|
+
slot.addEventListener("slotchange", () => {
|
|
59
|
+
this.#syncItems();
|
|
60
|
+
this.#syncAttributes(false, "current-item-id");
|
|
61
|
+
this.#restartAutoplay();
|
|
62
|
+
});
|
|
63
|
+
viewport.addEventListener("pointerdown", this.#handlePointerDown);
|
|
64
|
+
viewport.addEventListener("pointermove", this.#handlePointerMove);
|
|
65
|
+
viewport.addEventListener("pointerup", this.#handlePointerEnd);
|
|
66
|
+
viewport.addEventListener("pointercancel", this.#handlePointerEnd);
|
|
67
|
+
this.#viewport = viewport;
|
|
68
|
+
this.#track = track;
|
|
69
|
+
this.#slot = slot;
|
|
70
|
+
this.#indicators = indicators;
|
|
71
|
+
}
|
|
72
|
+
#syncItems() {
|
|
73
|
+
if (!this.#slot) return;
|
|
74
|
+
this.#items = this.#slot.assignedElements({ flatten: true }).filter((element) => element.tagName.toLowerCase() === "weapp-swiper-item");
|
|
75
|
+
if (this.#current >= this.#items.length) this.#current = Math.max(0, this.#items.length - 1);
|
|
76
|
+
this.#renderIndicators();
|
|
77
|
+
}
|
|
78
|
+
#syncAttributes(emitChange, changedName) {
|
|
79
|
+
if (!this.#track || !this.#viewport) return;
|
|
80
|
+
const vertical = readBooleanAttribute(this, "vertical");
|
|
81
|
+
this.toggleAttribute("data-vertical", vertical);
|
|
82
|
+
const displayCount = Math.max(1, Math.trunc(resolveSwiperNumber(this.getAttribute("display-multiple-items"), 1, 1)));
|
|
83
|
+
const previousMargin = resolveSwiperLength(this.getAttribute("previous-margin"));
|
|
84
|
+
const nextMargin = resolveSwiperLength(this.getAttribute("next-margin"));
|
|
85
|
+
this.style.setProperty("--weapp-swiper-display-count", String(displayCount));
|
|
86
|
+
this.style.setProperty("--weapp-swiper-indicator-color", this.getAttribute("indicator-color") ?? "rgba(0, 0, 0, 0.3)");
|
|
87
|
+
this.style.setProperty("--weapp-swiper-indicator-active-color", this.getAttribute("indicator-active-color") ?? "#000000");
|
|
88
|
+
this.#track.style.marginLeft = vertical ? "0" : previousMargin;
|
|
89
|
+
this.#track.style.marginTop = vertical ? previousMargin : "0";
|
|
90
|
+
this.#track.style.width = vertical ? "100%" : `calc(100% - ${previousMargin} - ${nextMargin})`;
|
|
91
|
+
this.#track.style.height = vertical ? `calc(100% - ${previousMargin} - ${nextMargin})` : "100%";
|
|
92
|
+
this.#track.style.transitionTimingFunction = resolveSwiperEasing(this.getAttribute("easing-function"));
|
|
93
|
+
this.#indicators?.toggleAttribute("hidden", !readBooleanAttribute(this, "indicator-dots"));
|
|
94
|
+
if (!this.#initialized || changedName === "current" || changedName === "current-item-id") {
|
|
95
|
+
const itemIds = this.#items.map((item) => item.getAttribute("item-id") ?? "");
|
|
96
|
+
const next = resolveSwiperIndex({
|
|
97
|
+
current: resolveSwiperNumber(this.getAttribute("current"), 0),
|
|
98
|
+
currentItemId: this.getAttribute("current-item-id") ?? void 0,
|
|
99
|
+
itemIds
|
|
100
|
+
});
|
|
101
|
+
if (emitChange && next !== this.#current) {
|
|
102
|
+
this.#setCurrent(next, "");
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
this.#current = next;
|
|
106
|
+
}
|
|
107
|
+
this.#syncVisual(false);
|
|
108
|
+
}
|
|
109
|
+
#syncVisual(animate, dragOffset = 0) {
|
|
110
|
+
const track = this.#track;
|
|
111
|
+
const vertical = readBooleanAttribute(this, "vertical");
|
|
112
|
+
const displayCount = Math.max(1, Math.trunc(resolveSwiperNumber(this.getAttribute("display-multiple-items"), 1, 1)));
|
|
113
|
+
const trackRect = track.getBoundingClientRect();
|
|
114
|
+
this.#itemSize = (vertical ? trackRect.height : trackRect.width) / displayCount;
|
|
115
|
+
const offset = -(this.#current * this.#itemSize) + dragOffset;
|
|
116
|
+
const duration = animate ? resolveSwiperNumber(this.getAttribute("duration"), 500) : 0;
|
|
117
|
+
track.style.transitionDuration = `${duration}ms`;
|
|
118
|
+
track.style.transform = vertical ? `translate3d(0, ${offset}px, 0)` : `translate3d(${offset}px, 0, 0)`;
|
|
119
|
+
this.#items.forEach((item, index) => {
|
|
120
|
+
const active = index >= this.#current && index < this.#current + displayCount;
|
|
121
|
+
item.toggleAttribute("data-active", active);
|
|
122
|
+
item.setAttribute("aria-hidden", String(!active));
|
|
123
|
+
});
|
|
124
|
+
this.#syncIndicatorState();
|
|
125
|
+
}
|
|
126
|
+
#setCurrent(next, source) {
|
|
127
|
+
if (next === this.#current || !this.#items.length) {
|
|
128
|
+
this.#syncVisual(true);
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
this.#current = next;
|
|
132
|
+
this.#syncVisual(true);
|
|
133
|
+
const detail = createSwiperChangeDetail(this.#current, this.#items[this.#current].getAttribute("item-id") ?? "", source);
|
|
134
|
+
dispatchMiniProgramEvent(this, "change", detail);
|
|
135
|
+
this.#scheduleAnimationFinish(detail);
|
|
136
|
+
}
|
|
137
|
+
#scheduleAnimationFinish(detail) {
|
|
138
|
+
if (this.#animationTimer) clearTimeout(this.#animationTimer);
|
|
139
|
+
const duration = resolveSwiperNumber(this.getAttribute("duration"), 500);
|
|
140
|
+
this.#animationTimer = globalThis.setTimeout(() => {
|
|
141
|
+
this.#animationTimer = void 0;
|
|
142
|
+
dispatchMiniProgramEvent(this, "animationfinish", detail);
|
|
143
|
+
}, duration);
|
|
144
|
+
}
|
|
145
|
+
#renderIndicators() {
|
|
146
|
+
this.#indicators.replaceChildren(...this.#items.map(() => {
|
|
147
|
+
const indicator = document.createElement("span");
|
|
148
|
+
indicator.className = "indicator";
|
|
149
|
+
return indicator;
|
|
150
|
+
}));
|
|
151
|
+
this.#syncIndicatorState();
|
|
152
|
+
}
|
|
153
|
+
#syncIndicatorState() {
|
|
154
|
+
[...this.#indicators.children].forEach((indicator, index) => {
|
|
155
|
+
indicator.setAttribute("data-active", String(index === this.#current));
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
#restartAutoplay() {
|
|
159
|
+
if (this.#autoplayTimer) {
|
|
160
|
+
clearTimeout(this.#autoplayTimer);
|
|
161
|
+
this.#autoplayTimer = void 0;
|
|
162
|
+
}
|
|
163
|
+
if (!this.isConnected || !readBooleanAttribute(this, "autoplay") || this.#items.length < 2) return;
|
|
164
|
+
const interval = resolveSwiperNumber(this.getAttribute("interval"), 5e3, 16);
|
|
165
|
+
this.#autoplayTimer = globalThis.setTimeout(() => {
|
|
166
|
+
this.#autoplayTimer = void 0;
|
|
167
|
+
const next = resolveSwiperStep(this.#current, 1, this.#items.length, true);
|
|
168
|
+
this.#setCurrent(next, "autoplay");
|
|
169
|
+
this.#restartAutoplay();
|
|
170
|
+
}, interval);
|
|
171
|
+
}
|
|
172
|
+
#observeSize() {
|
|
173
|
+
if (typeof ResizeObserver === "undefined" || !this.#viewport || this.#resizeObserver) return;
|
|
174
|
+
this.#resizeObserver = new ResizeObserver(() => this.#syncVisual(false));
|
|
175
|
+
this.#resizeObserver.observe(this.#viewport);
|
|
176
|
+
}
|
|
177
|
+
#handlePointerDown = (event) => {
|
|
178
|
+
if (readBooleanAttribute(this, "disable-touch") || this.#items.length < 2 || event.button !== 0) return;
|
|
179
|
+
const vertical = readBooleanAttribute(this, "vertical");
|
|
180
|
+
this.#pointer = {
|
|
181
|
+
id: event.pointerId,
|
|
182
|
+
start: vertical ? event.clientY : event.clientX,
|
|
183
|
+
delta: 0
|
|
184
|
+
};
|
|
185
|
+
this.#viewport?.setPointerCapture?.(event.pointerId);
|
|
186
|
+
this.#clearAnimationTimer();
|
|
187
|
+
this.#syncVisual(false);
|
|
188
|
+
};
|
|
189
|
+
#handlePointerMove = (event) => {
|
|
190
|
+
if (!this.#pointer || event.pointerId !== this.#pointer.id) return;
|
|
191
|
+
const vertical = readBooleanAttribute(this, "vertical");
|
|
192
|
+
let delta = (vertical ? event.clientY : event.clientX) - this.#pointer.start;
|
|
193
|
+
if (!readBooleanAttribute(this, "circular")) {
|
|
194
|
+
const atStart = this.#current === 0 && delta > 0;
|
|
195
|
+
const atEnd = this.#current === this.#items.length - 1 && delta < 0;
|
|
196
|
+
if (atStart || atEnd) delta *= .35;
|
|
197
|
+
}
|
|
198
|
+
this.#pointer.delta = delta;
|
|
199
|
+
this.#syncVisual(false, delta);
|
|
200
|
+
dispatchMiniProgramEvent(this, "transition", {
|
|
201
|
+
dx: vertical ? 0 : delta,
|
|
202
|
+
dy: vertical ? delta : 0
|
|
203
|
+
});
|
|
204
|
+
};
|
|
205
|
+
#handlePointerEnd = (event) => {
|
|
206
|
+
if (!this.#pointer || event.pointerId !== this.#pointer.id) return;
|
|
207
|
+
const delta = this.#pointer.delta;
|
|
208
|
+
this.#pointer = void 0;
|
|
209
|
+
this.#viewport?.releasePointerCapture?.(event.pointerId);
|
|
210
|
+
const next = resolveSwipeTarget({
|
|
211
|
+
current: this.#current,
|
|
212
|
+
delta,
|
|
213
|
+
itemSize: this.#itemSize,
|
|
214
|
+
itemCount: this.#items.length,
|
|
215
|
+
circular: readBooleanAttribute(this, "circular")
|
|
216
|
+
});
|
|
217
|
+
this.#setCurrent(next, "touch");
|
|
218
|
+
this.#restartAutoplay();
|
|
219
|
+
};
|
|
220
|
+
#clearAnimationTimer() {
|
|
221
|
+
clearTimeout(this.#animationTimer);
|
|
222
|
+
this.#animationTimer = void 0;
|
|
223
|
+
}
|
|
224
|
+
#clearTimers() {
|
|
225
|
+
if (this.#autoplayTimer) {
|
|
226
|
+
clearTimeout(this.#autoplayTimer);
|
|
227
|
+
this.#autoplayTimer = void 0;
|
|
228
|
+
}
|
|
229
|
+
this.#clearAnimationTimer();
|
|
230
|
+
}
|
|
231
|
+
};
|
|
232
|
+
|
|
233
|
+
//#endregion
|
|
234
|
+
export { WeappSwiper };
|
|
235
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["#ensureStructure","#syncItems","#syncAttributes","#observeSize","#restartAutoplay","#initialized","#clearTimers","#resizeObserver","#viewport","#handlePointerDown","#handlePointerMove","#handlePointerEnd","#track","#slot","#indicators","#items","#current","#renderIndicators","#setCurrent","#syncVisual","#itemSize","#syncIndicatorState","#scheduleAnimationFinish","#animationTimer","#autoplayTimer","#pointer","#clearAnimationTimer"],"sources":["../../../../src/runtime/nativeComponents/swiper/index.ts"],"sourcesContent":["import type { SwiperChangeSource } from './helpers'\nimport type { WeappSwiperItem } from './item'\nimport { getNativeComponentDescriptor } from '../../../shared/nativeComponents'\nimport { dispatchMiniProgramEvent, readBooleanAttribute, resolveContainingShadowRoot } from '../helpers'\nimport { ensureNativeComponentStyle } from '../style'\nimport {\n createSwiperChangeDetail,\n resolveSwiperEasing,\n resolveSwiperIndex,\n resolveSwiperLength,\n resolveSwiperNumber,\n resolveSwiperStep,\n resolveSwipeTarget,\n} from './helpers'\nimport { SWIPER_SHADOW_STYLE } from './style'\n\nconst BaseElement = (globalThis.HTMLElement ?? class {}) as typeof HTMLElement\n\nexport class WeappSwiper extends BaseElement {\n static observedAttributes = [...getNativeComponentDescriptor('swiper')!.attributes]\n\n #viewport?: HTMLDivElement\n #track?: HTMLDivElement\n #slot?: HTMLSlotElement\n #indicators?: HTMLDivElement\n #items: WeappSwiperItem[] = []\n #current = 0\n #itemSize = 0\n #initialized = false\n #autoplayTimer?: ReturnType<typeof globalThis.setTimeout>\n #animationTimer?: ReturnType<typeof globalThis.setTimeout>\n #resizeObserver?: ResizeObserver\n #pointer?: { id: number, start: number, delta: number }\n\n connectedCallback() {\n ensureNativeComponentStyle(resolveContainingShadowRoot(this))\n this.#ensureStructure()\n this.#syncItems()\n this.#syncAttributes(false)\n this.#observeSize()\n this.#restartAutoplay()\n this.#initialized = true\n }\n\n disconnectedCallback() {\n this.#clearTimers()\n this.#resizeObserver?.disconnect()\n this.#resizeObserver = undefined\n this.#initialized = false\n }\n\n attributeChangedCallback(name: string) {\n if (!this.isConnected || !this.#initialized) {\n return\n }\n this.#syncAttributes(name === 'current' || name === 'current-item-id', name)\n this.#restartAutoplay()\n }\n\n #ensureStructure() {\n if (this.#viewport || typeof document === 'undefined') {\n return\n }\n const root = this.shadowRoot ?? this.attachShadow({ mode: 'open' })\n const style = document.createElement('style')\n style.textContent = SWIPER_SHADOW_STYLE\n const viewport = document.createElement('div')\n viewport.className = 'viewport'\n const track = document.createElement('div')\n track.className = 'track'\n const slot = document.createElement('slot')\n track.append(slot)\n viewport.append(track)\n const indicators = document.createElement('div')\n indicators.className = 'indicators'\n root.append(style, viewport, indicators)\n slot.addEventListener('slotchange', () => {\n this.#syncItems()\n this.#syncAttributes(false, 'current-item-id')\n this.#restartAutoplay()\n })\n viewport.addEventListener('pointerdown', this.#handlePointerDown)\n viewport.addEventListener('pointermove', this.#handlePointerMove)\n viewport.addEventListener('pointerup', this.#handlePointerEnd)\n viewport.addEventListener('pointercancel', this.#handlePointerEnd)\n this.#viewport = viewport\n this.#track = track\n this.#slot = slot\n this.#indicators = indicators\n }\n\n #syncItems() {\n if (!this.#slot) {\n return\n }\n this.#items = this.#slot.assignedElements({ flatten: true })\n .filter((element): element is WeappSwiperItem => element.tagName.toLowerCase() === 'weapp-swiper-item')\n if (this.#current >= this.#items.length) {\n this.#current = Math.max(0, this.#items.length - 1)\n }\n this.#renderIndicators()\n }\n\n #syncAttributes(emitChange: boolean, changedName?: string) {\n if (!this.#track || !this.#viewport) {\n return\n }\n const vertical = readBooleanAttribute(this, 'vertical')\n this.toggleAttribute('data-vertical', vertical)\n const displayCount = Math.max(1, Math.trunc(resolveSwiperNumber(this.getAttribute('display-multiple-items'), 1, 1)))\n const previousMargin = resolveSwiperLength(this.getAttribute('previous-margin'))\n const nextMargin = resolveSwiperLength(this.getAttribute('next-margin'))\n this.style.setProperty('--weapp-swiper-display-count', String(displayCount))\n this.style.setProperty('--weapp-swiper-indicator-color', this.getAttribute('indicator-color') ?? 'rgba(0, 0, 0, 0.3)')\n this.style.setProperty('--weapp-swiper-indicator-active-color', this.getAttribute('indicator-active-color') ?? '#000000')\n this.#track.style.marginLeft = vertical ? '0' : previousMargin\n this.#track.style.marginTop = vertical ? previousMargin : '0'\n this.#track.style.width = vertical ? '100%' : `calc(100% - ${previousMargin} - ${nextMargin})`\n this.#track.style.height = vertical ? `calc(100% - ${previousMargin} - ${nextMargin})` : '100%'\n this.#track.style.transitionTimingFunction = resolveSwiperEasing(this.getAttribute('easing-function'))\n this.#indicators?.toggleAttribute('hidden', !readBooleanAttribute(this, 'indicator-dots'))\n\n if (!this.#initialized || changedName === 'current' || changedName === 'current-item-id') {\n const itemIds = this.#items.map(item => item.getAttribute('item-id') ?? '')\n const next = resolveSwiperIndex({\n current: resolveSwiperNumber(this.getAttribute('current'), 0),\n currentItemId: this.getAttribute('current-item-id') ?? undefined,\n itemIds,\n })\n if (emitChange && next !== this.#current) {\n this.#setCurrent(next, '')\n return\n }\n this.#current = next\n }\n this.#syncVisual(false)\n }\n\n #syncVisual(animate: boolean, dragOffset = 0) {\n const track = this.#track!\n const vertical = readBooleanAttribute(this, 'vertical')\n const displayCount = Math.max(1, Math.trunc(resolveSwiperNumber(this.getAttribute('display-multiple-items'), 1, 1)))\n const trackRect = track.getBoundingClientRect()\n this.#itemSize = (vertical ? trackRect.height : trackRect.width) / displayCount\n const offset = -(this.#current * this.#itemSize) + dragOffset\n const duration = animate ? resolveSwiperNumber(this.getAttribute('duration'), 500) : 0\n track.style.transitionDuration = `${duration}ms`\n track.style.transform = vertical\n ? `translate3d(0, ${offset}px, 0)`\n : `translate3d(${offset}px, 0, 0)`\n this.#items.forEach((item, index) => {\n const active = index >= this.#current && index < this.#current + displayCount\n item.toggleAttribute('data-active', active)\n item.setAttribute('aria-hidden', String(!active))\n })\n this.#syncIndicatorState()\n }\n\n #setCurrent(next: number, source: SwiperChangeSource) {\n if (next === this.#current || !this.#items.length) {\n this.#syncVisual(true)\n return\n }\n this.#current = next\n this.#syncVisual(true)\n const detail = createSwiperChangeDetail(\n this.#current,\n this.#items[this.#current]!.getAttribute('item-id') ?? '',\n source,\n )\n dispatchMiniProgramEvent(this, 'change', detail)\n this.#scheduleAnimationFinish(detail)\n }\n\n #scheduleAnimationFinish(detail: ReturnType<typeof createSwiperChangeDetail>) {\n if (this.#animationTimer) {\n clearTimeout(this.#animationTimer)\n }\n const duration = resolveSwiperNumber(this.getAttribute('duration'), 500)\n this.#animationTimer = globalThis.setTimeout(() => {\n this.#animationTimer = undefined\n dispatchMiniProgramEvent(this, 'animationfinish', detail)\n }, duration)\n }\n\n #renderIndicators() {\n const indicators = this.#indicators!\n indicators.replaceChildren(...this.#items.map(() => {\n const indicator = document.createElement('span')\n indicator.className = 'indicator'\n return indicator\n }))\n this.#syncIndicatorState()\n }\n\n #syncIndicatorState() {\n ;[...this.#indicators!.children].forEach((indicator, index) => {\n indicator.setAttribute('data-active', String(index === this.#current))\n })\n }\n\n #restartAutoplay() {\n if (this.#autoplayTimer) {\n clearTimeout(this.#autoplayTimer)\n this.#autoplayTimer = undefined\n }\n if (!this.isConnected || !readBooleanAttribute(this, 'autoplay') || this.#items.length < 2) {\n return\n }\n const interval = resolveSwiperNumber(this.getAttribute('interval'), 5000, 16)\n this.#autoplayTimer = globalThis.setTimeout(() => {\n this.#autoplayTimer = undefined\n const next = resolveSwiperStep(this.#current, 1, this.#items.length, true)\n this.#setCurrent(next, 'autoplay')\n this.#restartAutoplay()\n }, interval)\n }\n\n #observeSize() {\n if (typeof ResizeObserver === 'undefined' || !this.#viewport || this.#resizeObserver) {\n return\n }\n this.#resizeObserver = new ResizeObserver(() => this.#syncVisual(false))\n this.#resizeObserver.observe(this.#viewport)\n }\n\n #handlePointerDown = (event: PointerEvent) => {\n if (readBooleanAttribute(this, 'disable-touch') || this.#items.length < 2 || event.button !== 0) {\n return\n }\n const vertical = readBooleanAttribute(this, 'vertical')\n this.#pointer = {\n id: event.pointerId,\n start: vertical ? event.clientY : event.clientX,\n delta: 0,\n }\n this.#viewport?.setPointerCapture?.(event.pointerId)\n this.#clearAnimationTimer()\n this.#syncVisual(false)\n }\n\n #handlePointerMove = (event: PointerEvent) => {\n if (!this.#pointer || event.pointerId !== this.#pointer.id) {\n return\n }\n const vertical = readBooleanAttribute(this, 'vertical')\n const position = vertical ? event.clientY : event.clientX\n let delta = position - this.#pointer.start\n if (!readBooleanAttribute(this, 'circular')) {\n const atStart = this.#current === 0 && delta > 0\n const atEnd = this.#current === this.#items.length - 1 && delta < 0\n if (atStart || atEnd) {\n delta *= 0.35\n }\n }\n this.#pointer.delta = delta\n this.#syncVisual(false, delta)\n dispatchMiniProgramEvent(this, 'transition', {\n dx: vertical ? 0 : delta,\n dy: vertical ? delta : 0,\n })\n }\n\n #handlePointerEnd = (event: PointerEvent) => {\n if (!this.#pointer || event.pointerId !== this.#pointer.id) {\n return\n }\n const delta = this.#pointer.delta\n this.#pointer = undefined\n this.#viewport?.releasePointerCapture?.(event.pointerId)\n const next = resolveSwipeTarget({\n current: this.#current,\n delta,\n itemSize: this.#itemSize,\n itemCount: this.#items.length,\n circular: readBooleanAttribute(this, 'circular'),\n })\n this.#setCurrent(next, 'touch')\n this.#restartAutoplay()\n }\n\n #clearAnimationTimer() {\n clearTimeout(this.#animationTimer)\n this.#animationTimer = undefined\n }\n\n #clearTimers() {\n if (this.#autoplayTimer) {\n clearTimeout(this.#autoplayTimer)\n this.#autoplayTimer = undefined\n }\n this.#clearAnimationTimer()\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { resolveContainingShadowRoot } from "../helpers.mjs";
|
|
2
|
+
import { ensureNativeComponentStyle } from "../style.mjs";
|
|
3
|
+
|
|
4
|
+
//#region src/runtime/nativeComponents/swiper/item.ts
|
|
5
|
+
const BaseElement = globalThis.HTMLElement ?? class {};
|
|
6
|
+
var WeappSwiperItem = class extends BaseElement {
|
|
7
|
+
connectedCallback() {
|
|
8
|
+
ensureNativeComponentStyle(resolveContainingShadowRoot(this));
|
|
9
|
+
}
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
//#endregion
|
|
13
|
+
export { WeappSwiperItem };
|
|
14
|
+
//# sourceMappingURL=item.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"item.mjs","names":[],"sources":["../../../../src/runtime/nativeComponents/swiper/item.ts"],"sourcesContent":["import { resolveContainingShadowRoot } from '../helpers'\nimport { ensureNativeComponentStyle } from '../style'\n\nconst BaseElement = (globalThis.HTMLElement ?? class {}) as typeof HTMLElement\n\nexport class WeappSwiperItem extends BaseElement {\n connectedCallback() {\n ensureNativeComponentStyle(resolveContainingShadowRoot(this))\n }\n}\n"],"mappings":";;;;AAGA,MAAM,cAAe,WAAW,eAAe,MAAM,CAAC;AAEtD,IAAa,kBAAb,cAAqC,YAAY;CAC/C,oBAAoB;EAClB,2BAA2B,4BAA4B,IAAI,CAAC;CAC9D;AACF"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
//#region src/runtime/nativeComponents/swiper/style.ts
|
|
2
|
+
const SWIPER_SHADOW_STYLE = `
|
|
3
|
+
:host { position: relative; min-width: 0; min-height: 0; }
|
|
4
|
+
.viewport { position: relative; box-sizing: border-box; width: 100%; height: 100%; overflow: hidden; touch-action: pan-y; }
|
|
5
|
+
.track { display: flex; box-sizing: border-box; width: 100%; height: 100%; will-change: transform; }
|
|
6
|
+
:host([data-vertical]) .viewport { touch-action: pan-x; }
|
|
7
|
+
:host([data-vertical]) .track { flex-direction: column; }
|
|
8
|
+
::slotted(weapp-swiper-item) { flex: 0 0 calc(100% / var(--weapp-swiper-display-count, 1)); min-width: 0; min-height: 0; }
|
|
9
|
+
:host(:not([data-vertical])) ::slotted(weapp-swiper-item) { height: 100%; }
|
|
10
|
+
:host([data-vertical]) ::slotted(weapp-swiper-item) { width: 100%; }
|
|
11
|
+
.indicators { position: absolute; right: 0; bottom: 10px; left: 0; display: flex; gap: 6px; justify-content: center; pointer-events: none; }
|
|
12
|
+
:host([data-vertical]) .indicators { top: 0; right: 10px; bottom: 0; left: auto; flex-direction: column; }
|
|
13
|
+
.indicators[hidden] { display: none; }
|
|
14
|
+
.indicator { width: 8px; height: 8px; border-radius: 50%; background: var(--weapp-swiper-indicator-color, rgba(0, 0, 0, 0.3)); }
|
|
15
|
+
.indicator[data-active="true"] { background: var(--weapp-swiper-indicator-active-color, #000000); }
|
|
16
|
+
`;
|
|
17
|
+
|
|
18
|
+
//#endregion
|
|
19
|
+
export { SWIPER_SHADOW_STYLE };
|
|
20
|
+
//# sourceMappingURL=style.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"style.mjs","names":[],"sources":["../../../../src/runtime/nativeComponents/swiper/style.ts"],"sourcesContent":["export const SWIPER_SHADOW_STYLE = `\n :host { position: relative; min-width: 0; min-height: 0; }\n .viewport { position: relative; box-sizing: border-box; width: 100%; height: 100%; overflow: hidden; touch-action: pan-y; }\n .track { display: flex; box-sizing: border-box; width: 100%; height: 100%; will-change: transform; }\n :host([data-vertical]) .viewport { touch-action: pan-x; }\n :host([data-vertical]) .track { flex-direction: column; }\n ::slotted(weapp-swiper-item) { flex: 0 0 calc(100% / var(--weapp-swiper-display-count, 1)); min-width: 0; min-height: 0; }\n :host(:not([data-vertical])) ::slotted(weapp-swiper-item) { height: 100%; }\n :host([data-vertical]) ::slotted(weapp-swiper-item) { width: 100%; }\n .indicators { position: absolute; right: 0; bottom: 10px; left: 0; display: flex; gap: 6px; justify-content: center; pointer-events: none; }\n :host([data-vertical]) .indicators { top: 0; right: 10px; bottom: 0; left: auto; flex-direction: column; }\n .indicators[hidden] { display: none; }\n .indicator { width: 8px; height: 8px; border-radius: 50%; background: var(--weapp-swiper-indicator-color, rgba(0, 0, 0, 0.3)); }\n .indicator[data-active=\"true\"] { background: var(--weapp-swiper-indicator-active-color, #000000); }\n`\n"],"mappings":";AAAA,MAAa,sBAAsB"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { getNativeComponentDescriptor } from "../../shared/nativeComponents.mjs";
|
|
2
|
+
import { connectFormControl, disconnectFormControl } from "./formControl.mjs";
|
|
3
|
+
import { dispatchMiniProgramEvent, readBooleanAttribute, resolveContainingShadowRoot } from "./helpers.mjs";
|
|
4
|
+
import { ensureNativeComponentStyle } from "./style.mjs";
|
|
5
|
+
|
|
6
|
+
//#region src/runtime/nativeComponents/switch.ts
|
|
7
|
+
const BaseElement = globalThis.HTMLElement ?? class {};
|
|
8
|
+
function createSwitchEventDetail(checked) {
|
|
9
|
+
return { value: checked };
|
|
10
|
+
}
|
|
11
|
+
var WeappSwitch = class extends BaseElement {
|
|
12
|
+
static observedAttributes = [...getNativeComponentDescriptor("switch").attributes];
|
|
13
|
+
#input;
|
|
14
|
+
#initialChecked = false;
|
|
15
|
+
#initialCheckedCaptured = false;
|
|
16
|
+
get checked() {
|
|
17
|
+
return this.#input?.checked ?? readBooleanAttribute(this, "checked");
|
|
18
|
+
}
|
|
19
|
+
set checked(value) {
|
|
20
|
+
this.toggleAttribute("checked", Boolean(value));
|
|
21
|
+
}
|
|
22
|
+
get disabled() {
|
|
23
|
+
return readBooleanAttribute(this, "disabled");
|
|
24
|
+
}
|
|
25
|
+
get formControlName() {
|
|
26
|
+
return this.getAttribute("name") ?? "";
|
|
27
|
+
}
|
|
28
|
+
get formControlValue() {
|
|
29
|
+
return this.checked;
|
|
30
|
+
}
|
|
31
|
+
get formControlDisabled() {
|
|
32
|
+
return this.disabled;
|
|
33
|
+
}
|
|
34
|
+
connectedCallback() {
|
|
35
|
+
ensureNativeComponentStyle(resolveContainingShadowRoot(this));
|
|
36
|
+
if (!this.#initialCheckedCaptured) {
|
|
37
|
+
this.#initialChecked = readBooleanAttribute(this, "checked");
|
|
38
|
+
this.#initialCheckedCaptured = true;
|
|
39
|
+
}
|
|
40
|
+
this.#ensureStructure();
|
|
41
|
+
this.#syncAttributes();
|
|
42
|
+
connectFormControl(this);
|
|
43
|
+
}
|
|
44
|
+
disconnectedCallback() {
|
|
45
|
+
disconnectFormControl(this);
|
|
46
|
+
}
|
|
47
|
+
attributeChangedCallback() {
|
|
48
|
+
this.#syncAttributes();
|
|
49
|
+
}
|
|
50
|
+
formReset() {
|
|
51
|
+
if (this.#input) this.#input.checked = this.#initialChecked;
|
|
52
|
+
}
|
|
53
|
+
formActivate() {
|
|
54
|
+
if (!this.disabled) this.#input?.click();
|
|
55
|
+
}
|
|
56
|
+
#ensureStructure() {
|
|
57
|
+
if (this.#input || typeof document === "undefined") return;
|
|
58
|
+
const root = this.shadowRoot ?? this.attachShadow({ mode: "open" });
|
|
59
|
+
const style = document.createElement("style");
|
|
60
|
+
style.textContent = `
|
|
61
|
+
:host { padding: 0 5px; --weapp-control-color: #07c160; }
|
|
62
|
+
label { display: inline-flex; align-items: center; cursor: pointer; }
|
|
63
|
+
input { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
|
|
64
|
+
.control {
|
|
65
|
+
position: relative;
|
|
66
|
+
box-sizing: border-box;
|
|
67
|
+
width: 52px;
|
|
68
|
+
height: 32px;
|
|
69
|
+
border: 1px solid #dfdfdf;
|
|
70
|
+
border-radius: 16px;
|
|
71
|
+
background: #dfdfdf;
|
|
72
|
+
transition: background 0.2s, border-color 0.2s;
|
|
73
|
+
}
|
|
74
|
+
.control::after {
|
|
75
|
+
position: absolute;
|
|
76
|
+
top: 1px;
|
|
77
|
+
left: 1px;
|
|
78
|
+
width: 28px;
|
|
79
|
+
height: 28px;
|
|
80
|
+
border-radius: 50%;
|
|
81
|
+
background: #ffffff;
|
|
82
|
+
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.35);
|
|
83
|
+
content: '';
|
|
84
|
+
transition: transform 0.2s;
|
|
85
|
+
}
|
|
86
|
+
input:checked + .control { border-color: var(--weapp-control-color); background: var(--weapp-control-color); }
|
|
87
|
+
input:checked + .control::after { transform: translateX(20px); }
|
|
88
|
+
input:disabled + .control { opacity: 0.5; cursor: not-allowed; }
|
|
89
|
+
:host([type='checkbox']) .control {
|
|
90
|
+
width: 23px;
|
|
91
|
+
height: 23px;
|
|
92
|
+
border-radius: 3px;
|
|
93
|
+
background: #ffffff;
|
|
94
|
+
}
|
|
95
|
+
:host([type='checkbox']) .control::after { display: none; }
|
|
96
|
+
:host([type='checkbox']) input:checked + .control { background: var(--weapp-control-color); }
|
|
97
|
+
:host([type='checkbox']) input:checked + .control::before {
|
|
98
|
+
position: absolute;
|
|
99
|
+
top: 3px;
|
|
100
|
+
left: 7px;
|
|
101
|
+
width: 6px;
|
|
102
|
+
height: 11px;
|
|
103
|
+
border: solid #ffffff;
|
|
104
|
+
border-width: 0 2px 2px 0;
|
|
105
|
+
content: '';
|
|
106
|
+
transform: rotate(45deg);
|
|
107
|
+
}
|
|
108
|
+
`;
|
|
109
|
+
const label = document.createElement("label");
|
|
110
|
+
const input = document.createElement("input");
|
|
111
|
+
input.type = "checkbox";
|
|
112
|
+
input.addEventListener("change", (event) => {
|
|
113
|
+
event.stopPropagation();
|
|
114
|
+
dispatchMiniProgramEvent(this, "change", createSwitchEventDetail(input.checked));
|
|
115
|
+
});
|
|
116
|
+
const control = document.createElement("span");
|
|
117
|
+
control.className = "control";
|
|
118
|
+
label.append(input, control);
|
|
119
|
+
root.append(style, label);
|
|
120
|
+
this.#input = input;
|
|
121
|
+
}
|
|
122
|
+
#syncAttributes() {
|
|
123
|
+
if (!this.#input) return;
|
|
124
|
+
this.#input.checked = readBooleanAttribute(this, "checked");
|
|
125
|
+
this.#input.disabled = this.disabled;
|
|
126
|
+
this.style.setProperty("--weapp-control-color", this.getAttribute("color") || "#07c160");
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
|
|
130
|
+
//#endregion
|
|
131
|
+
export { WeappSwitch, createSwitchEventDetail };
|
|
132
|
+
//# sourceMappingURL=switch.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"switch.mjs","names":["#input","#initialCheckedCaptured","#initialChecked","#ensureStructure","#syncAttributes"],"sources":["../../../src/runtime/nativeComponents/switch.ts"],"sourcesContent":["import { getNativeComponentDescriptor } from '../../shared/nativeComponents'\nimport { connectFormControl, disconnectFormControl } from './formControl'\nimport { dispatchMiniProgramEvent, readBooleanAttribute, resolveContainingShadowRoot } from './helpers'\nimport { ensureNativeComponentStyle } from './style'\n\nconst BaseElement = (globalThis.HTMLElement ?? class {}) as typeof HTMLElement\n\nexport function createSwitchEventDetail(checked: boolean) {\n return { value: checked }\n}\n\nexport class WeappSwitch extends BaseElement {\n static observedAttributes = [...getNativeComponentDescriptor('switch')!.attributes]\n\n #input?: HTMLInputElement\n #initialChecked = false\n #initialCheckedCaptured = false\n\n get checked() {\n return this.#input?.checked ?? readBooleanAttribute(this, 'checked')\n }\n\n set checked(value: boolean) {\n this.toggleAttribute('checked', Boolean(value))\n }\n\n get disabled() {\n return readBooleanAttribute(this, 'disabled')\n }\n\n get formControlName() {\n return this.getAttribute('name') ?? ''\n }\n\n get formControlValue() {\n return this.checked\n }\n\n get formControlDisabled() {\n return this.disabled\n }\n\n connectedCallback() {\n ensureNativeComponentStyle(resolveContainingShadowRoot(this))\n if (!this.#initialCheckedCaptured) {\n this.#initialChecked = readBooleanAttribute(this, 'checked')\n this.#initialCheckedCaptured = true\n }\n this.#ensureStructure()\n this.#syncAttributes()\n connectFormControl(this)\n }\n\n disconnectedCallback() {\n disconnectFormControl(this)\n }\n\n attributeChangedCallback() {\n this.#syncAttributes()\n }\n\n formReset() {\n if (this.#input) {\n this.#input.checked = this.#initialChecked\n }\n }\n\n formActivate() {\n if (!this.disabled) {\n this.#input?.click()\n }\n }\n\n #ensureStructure() {\n if (this.#input || typeof document === 'undefined') {\n return\n }\n const root = this.shadowRoot ?? this.attachShadow({ mode: 'open' })\n const style = document.createElement('style')\n style.textContent = `\n :host { padding: 0 5px; --weapp-control-color: #07c160; }\n label { display: inline-flex; align-items: center; cursor: pointer; }\n input { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }\n .control {\n position: relative;\n box-sizing: border-box;\n width: 52px;\n height: 32px;\n border: 1px solid #dfdfdf;\n border-radius: 16px;\n background: #dfdfdf;\n transition: background 0.2s, border-color 0.2s;\n }\n .control::after {\n position: absolute;\n top: 1px;\n left: 1px;\n width: 28px;\n height: 28px;\n border-radius: 50%;\n background: #ffffff;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.35);\n content: '';\n transition: transform 0.2s;\n }\n input:checked + .control { border-color: var(--weapp-control-color); background: var(--weapp-control-color); }\n input:checked + .control::after { transform: translateX(20px); }\n input:disabled + .control { opacity: 0.5; cursor: not-allowed; }\n :host([type='checkbox']) .control {\n width: 23px;\n height: 23px;\n border-radius: 3px;\n background: #ffffff;\n }\n :host([type='checkbox']) .control::after { display: none; }\n :host([type='checkbox']) input:checked + .control { background: var(--weapp-control-color); }\n :host([type='checkbox']) input:checked + .control::before {\n position: absolute;\n top: 3px;\n left: 7px;\n width: 6px;\n height: 11px;\n border: solid #ffffff;\n border-width: 0 2px 2px 0;\n content: '';\n transform: rotate(45deg);\n }\n `\n const label = document.createElement('label')\n const input = document.createElement('input')\n input.type = 'checkbox'\n input.addEventListener('change', (event) => {\n event.stopPropagation()\n dispatchMiniProgramEvent(this, 'change', createSwitchEventDetail(input.checked))\n })\n const control = document.createElement('span')\n control.className = 'control'\n label.append(input, control)\n root.append(style, label)\n this.#input = input\n }\n\n #syncAttributes() {\n if (!this.#input) {\n return\n }\n this.#input.checked = readBooleanAttribute(this, 'checked')\n this.#input.disabled = this.disabled\n this.style.setProperty('--weapp-control-color', this.getAttribute('color') || '#07c160')\n }\n}\n"],"mappings":";;;;;;AAKA,MAAM,cAAe,WAAW,eAAe,MAAM,CAAC;AAEtD,SAAgB,wBAAwB,SAAkB;CACxD,OAAO,EAAE,OAAO,QAAQ;AAC1B;AAEA,IAAa,cAAb,cAAiC,YAAY;CAC3C,OAAO,qBAAqB,CAAC,GAAG,6BAA6B,QAAQ,CAAC,CAAE,UAAU;CAElF;CACA,kBAAkB;CAClB,0BAA0B;CAE1B,IAAI,UAAU;EACZ,OAAO,KAAKA,QAAQ,WAAW,qBAAqB,MAAM,SAAS;CACrE;CAEA,IAAI,QAAQ,OAAgB;EAC1B,KAAK,gBAAgB,WAAW,QAAQ,KAAK,CAAC;CAChD;CAEA,IAAI,WAAW;EACb,OAAO,qBAAqB,MAAM,UAAU;CAC9C;CAEA,IAAI,kBAAkB;EACpB,OAAO,KAAK,aAAa,MAAM,KAAK;CACtC;CAEA,IAAI,mBAAmB;EACrB,OAAO,KAAK;CACd;CAEA,IAAI,sBAAsB;EACxB,OAAO,KAAK;CACd;CAEA,oBAAoB;EAClB,2BAA2B,4BAA4B,IAAI,CAAC;EAC5D,IAAI,CAAC,KAAKC,yBAAyB;GACjC,KAAKC,kBAAkB,qBAAqB,MAAM,SAAS;GAC3D,KAAKD,0BAA0B;EACjC;EACA,KAAKE,iBAAiB;EACtB,KAAKC,gBAAgB;EACrB,mBAAmB,IAAI;CACzB;CAEA,uBAAuB;EACrB,sBAAsB,IAAI;CAC5B;CAEA,2BAA2B;EACzB,KAAKA,gBAAgB;CACvB;CAEA,YAAY;EACV,IAAI,KAAKJ,QACP,KAAKA,OAAO,UAAU,KAAKE;CAE/B;CAEA,eAAe;EACb,IAAI,CAAC,KAAK,UACR,KAAKF,QAAQ,MAAM;CAEvB;CAEA,mBAAmB;EACjB,IAAI,KAAKA,UAAU,OAAO,aAAa,aACrC;EAEF,MAAM,OAAO,KAAK,cAAc,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;EAClE,MAAM,QAAQ,SAAS,cAAc,OAAO;EAC5C,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiDpB,MAAM,QAAQ,SAAS,cAAc,OAAO;EAC5C,MAAM,QAAQ,SAAS,cAAc,OAAO;EAC5C,MAAM,OAAO;EACb,MAAM,iBAAiB,WAAW,UAAU;GAC1C,MAAM,gBAAgB;GACtB,yBAAyB,MAAM,UAAU,wBAAwB,MAAM,OAAO,CAAC;EACjF,CAAC;EACD,MAAM,UAAU,SAAS,cAAc,MAAM;EAC7C,QAAQ,YAAY;EACpB,MAAM,OAAO,OAAO,OAAO;EAC3B,KAAK,OAAO,OAAO,KAAK;EACxB,KAAKA,SAAS;CAChB;CAEA,kBAAkB;EAChB,IAAI,CAAC,KAAKA,QACR;EAEF,KAAKA,OAAO,UAAU,qBAAqB,MAAM,SAAS;EAC1D,KAAKA,OAAO,WAAW,KAAK;EAC5B,KAAK,MAAM,YAAY,yBAAyB,KAAK,aAAa,OAAO,KAAK,SAAS;CACzF;AACF"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
//#region src/runtime/nativeComponents/textarea.d.ts
|
|
2
|
+
declare function createTextareaLineChangeDetail(textarea: Pick<HTMLTextAreaElement, 'scrollHeight' | 'value'>): {
|
|
3
|
+
height: number;
|
|
4
|
+
heightRpx: number;
|
|
5
|
+
lineCount: number;
|
|
6
|
+
};
|
|
7
|
+
//#endregion
|
|
8
|
+
export { createTextareaLineChangeDetail };
|
|
9
|
+
//# sourceMappingURL=textarea.d.mts.map
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { getNativeComponentDescriptor } from "../../shared/nativeComponents.mjs";
|
|
2
|
+
import { connectFormControl, disconnectFormControl } from "./formControl.mjs";
|
|
3
|
+
import { dispatchMiniProgramEvent, readBooleanAttribute, resolveContainingShadowRoot, resolveMaxLength } from "./helpers.mjs";
|
|
4
|
+
import { ensureNativeComponentStyle } from "./style.mjs";
|
|
5
|
+
import { createInputEventDetail } from "./input.mjs";
|
|
6
|
+
|
|
7
|
+
//#region src/runtime/nativeComponents/textarea.ts
|
|
8
|
+
const BaseElement = globalThis.HTMLElement ?? class {};
|
|
9
|
+
function createTextareaLineChangeDetail(textarea) {
|
|
10
|
+
const height = textarea.scrollHeight;
|
|
11
|
+
return {
|
|
12
|
+
height,
|
|
13
|
+
heightRpx: height * 2,
|
|
14
|
+
lineCount: textarea.value.split("\n").length
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
var WeappTextarea = class extends BaseElement {
|
|
18
|
+
static observedAttributes = [...getNativeComponentDescriptor("textarea").attributes];
|
|
19
|
+
#textarea;
|
|
20
|
+
#initialValue = "";
|
|
21
|
+
#initialValueCaptured = false;
|
|
22
|
+
#lastLineCount = 1;
|
|
23
|
+
#lastHeight = 0;
|
|
24
|
+
get value() {
|
|
25
|
+
return this.#textarea?.value ?? this.getAttribute("value") ?? "";
|
|
26
|
+
}
|
|
27
|
+
set value(value) {
|
|
28
|
+
this.setAttribute("value", value ?? "");
|
|
29
|
+
}
|
|
30
|
+
get formControlName() {
|
|
31
|
+
return this.getAttribute("name") ?? "";
|
|
32
|
+
}
|
|
33
|
+
get formControlValue() {
|
|
34
|
+
return this.value;
|
|
35
|
+
}
|
|
36
|
+
get formControlDisabled() {
|
|
37
|
+
return readBooleanAttribute(this, "disabled");
|
|
38
|
+
}
|
|
39
|
+
connectedCallback() {
|
|
40
|
+
ensureNativeComponentStyle(resolveContainingShadowRoot(this));
|
|
41
|
+
if (!this.#initialValueCaptured) {
|
|
42
|
+
this.#initialValue = this.getAttribute("value") ?? "";
|
|
43
|
+
this.#initialValueCaptured = true;
|
|
44
|
+
}
|
|
45
|
+
this.#ensureStructure();
|
|
46
|
+
this.#syncAttributes();
|
|
47
|
+
connectFormControl(this);
|
|
48
|
+
this.#syncFocus();
|
|
49
|
+
}
|
|
50
|
+
disconnectedCallback() {
|
|
51
|
+
disconnectFormControl(this);
|
|
52
|
+
}
|
|
53
|
+
attributeChangedCallback(name) {
|
|
54
|
+
this.#syncAttributes();
|
|
55
|
+
if (name === "focus" || name === "auto-focus") this.#syncFocus();
|
|
56
|
+
}
|
|
57
|
+
focus(options) {
|
|
58
|
+
this.#textarea?.focus(options);
|
|
59
|
+
}
|
|
60
|
+
blur() {
|
|
61
|
+
this.#textarea?.blur();
|
|
62
|
+
}
|
|
63
|
+
formReset() {
|
|
64
|
+
if (!this.#textarea) return;
|
|
65
|
+
this.#textarea.value = this.#initialValue;
|
|
66
|
+
this.#updateLineMetrics(false);
|
|
67
|
+
}
|
|
68
|
+
formActivate() {
|
|
69
|
+
this.focus();
|
|
70
|
+
}
|
|
71
|
+
#ensureStructure() {
|
|
72
|
+
if (this.#textarea || typeof document === "undefined") return;
|
|
73
|
+
const root = this.shadowRoot ?? this.attachShadow({ mode: "open" });
|
|
74
|
+
const style = document.createElement("style");
|
|
75
|
+
style.textContent = `
|
|
76
|
+
:host { cursor: text; }
|
|
77
|
+
textarea {
|
|
78
|
+
display: block;
|
|
79
|
+
box-sizing: border-box;
|
|
80
|
+
width: 100%;
|
|
81
|
+
min-width: 0;
|
|
82
|
+
height: 100%;
|
|
83
|
+
min-height: inherit;
|
|
84
|
+
padding: 0;
|
|
85
|
+
border: 0;
|
|
86
|
+
outline: 0;
|
|
87
|
+
resize: none;
|
|
88
|
+
color: inherit;
|
|
89
|
+
background: transparent;
|
|
90
|
+
font: inherit;
|
|
91
|
+
line-height: inherit;
|
|
92
|
+
}
|
|
93
|
+
`;
|
|
94
|
+
const textarea = document.createElement("textarea");
|
|
95
|
+
textarea.addEventListener("input", (event) => {
|
|
96
|
+
event.stopPropagation();
|
|
97
|
+
dispatchMiniProgramEvent(this, "input", createInputEventDetail(textarea));
|
|
98
|
+
this.#updateLineMetrics(true);
|
|
99
|
+
});
|
|
100
|
+
textarea.addEventListener("focus", () => {
|
|
101
|
+
dispatchMiniProgramEvent(this, "focus", {
|
|
102
|
+
value: textarea.value,
|
|
103
|
+
height: textarea.scrollHeight
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
textarea.addEventListener("blur", () => {
|
|
107
|
+
dispatchMiniProgramEvent(this, "blur", createInputEventDetail(textarea));
|
|
108
|
+
});
|
|
109
|
+
textarea.addEventListener("keydown", (event) => {
|
|
110
|
+
if (event.key === "Enter" && !event.shiftKey) dispatchMiniProgramEvent(this, "confirm", { value: textarea.value });
|
|
111
|
+
});
|
|
112
|
+
root.append(style, textarea);
|
|
113
|
+
this.#textarea = textarea;
|
|
114
|
+
}
|
|
115
|
+
#syncAttributes() {
|
|
116
|
+
if (!this.#textarea) return;
|
|
117
|
+
const value = this.getAttribute("value") ?? "";
|
|
118
|
+
if (this.#textarea.value !== value) this.#textarea.value = value;
|
|
119
|
+
this.#textarea.placeholder = this.getAttribute("placeholder") ?? "";
|
|
120
|
+
this.#textarea.disabled = readBooleanAttribute(this, "disabled");
|
|
121
|
+
const maxlength = resolveMaxLength(this.getAttribute("maxlength"));
|
|
122
|
+
if (maxlength === void 0) this.#textarea.removeAttribute("maxlength");
|
|
123
|
+
else this.#textarea.maxLength = maxlength;
|
|
124
|
+
const confirmType = this.getAttribute("confirm-type");
|
|
125
|
+
if (confirmType) this.#textarea.enterKeyHint = confirmType === "send" ? "send" : confirmType;
|
|
126
|
+
this.#updateLineMetrics(false);
|
|
127
|
+
}
|
|
128
|
+
#syncFocus() {
|
|
129
|
+
if (!readBooleanAttribute(this, "focus") && !readBooleanAttribute(this, "auto-focus")) return;
|
|
130
|
+
queueMicrotask(() => this.focus());
|
|
131
|
+
}
|
|
132
|
+
#updateLineMetrics(emit) {
|
|
133
|
+
const detail = createTextareaLineChangeDetail(this.#textarea);
|
|
134
|
+
if (detail.lineCount === this.#lastLineCount && detail.height === this.#lastHeight) return;
|
|
135
|
+
this.#lastLineCount = detail.lineCount;
|
|
136
|
+
this.#lastHeight = detail.height;
|
|
137
|
+
if (readBooleanAttribute(this, "auto-height") && detail.height > 0) this.style.height = `${detail.height}px`;
|
|
138
|
+
if (emit) dispatchMiniProgramEvent(this, "linechange", detail);
|
|
139
|
+
}
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
//#endregion
|
|
143
|
+
export { WeappTextarea, createTextareaLineChangeDetail };
|
|
144
|
+
//# sourceMappingURL=textarea.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"textarea.mjs","names":["#textarea","#initialValueCaptured","#initialValue","#ensureStructure","#syncAttributes","#syncFocus","#updateLineMetrics","#lastLineCount","#lastHeight"],"sources":["../../../src/runtime/nativeComponents/textarea.ts"],"sourcesContent":["import { getNativeComponentDescriptor } from '../../shared/nativeComponents'\nimport { connectFormControl, disconnectFormControl } from './formControl'\nimport { dispatchMiniProgramEvent, readBooleanAttribute, resolveContainingShadowRoot, resolveMaxLength } from './helpers'\nimport { createInputEventDetail } from './input'\nimport { ensureNativeComponentStyle } from './style'\n\nconst BaseElement = (globalThis.HTMLElement ?? class {}) as typeof HTMLElement\n\nexport function createTextareaLineChangeDetail(textarea: Pick<HTMLTextAreaElement, 'scrollHeight' | 'value'>) {\n const height = textarea.scrollHeight\n return {\n height,\n heightRpx: height * 2,\n lineCount: textarea.value.split('\\n').length,\n }\n}\n\nexport class WeappTextarea extends BaseElement {\n static observedAttributes = [...getNativeComponentDescriptor('textarea')!.attributes]\n\n #textarea?: HTMLTextAreaElement\n #initialValue = ''\n #initialValueCaptured = false\n #lastLineCount = 1\n #lastHeight = 0\n\n get value() {\n return this.#textarea?.value ?? this.getAttribute('value') ?? ''\n }\n\n set value(value: string) {\n this.setAttribute('value', value ?? '')\n }\n\n get formControlName() {\n return this.getAttribute('name') ?? ''\n }\n\n get formControlValue() {\n return this.value\n }\n\n get formControlDisabled() {\n return readBooleanAttribute(this, 'disabled')\n }\n\n connectedCallback() {\n ensureNativeComponentStyle(resolveContainingShadowRoot(this))\n if (!this.#initialValueCaptured) {\n this.#initialValue = this.getAttribute('value') ?? ''\n this.#initialValueCaptured = true\n }\n this.#ensureStructure()\n this.#syncAttributes()\n connectFormControl(this)\n this.#syncFocus()\n }\n\n disconnectedCallback() {\n disconnectFormControl(this)\n }\n\n attributeChangedCallback(name: string) {\n this.#syncAttributes()\n if (name === 'focus' || name === 'auto-focus') {\n this.#syncFocus()\n }\n }\n\n focus(options?: FocusOptions) {\n this.#textarea?.focus(options)\n }\n\n blur() {\n this.#textarea?.blur()\n }\n\n formReset() {\n if (!this.#textarea) {\n return\n }\n this.#textarea.value = this.#initialValue\n this.#updateLineMetrics(false)\n }\n\n formActivate() {\n this.focus()\n }\n\n #ensureStructure() {\n if (this.#textarea || typeof document === 'undefined') {\n return\n }\n const root = this.shadowRoot ?? this.attachShadow({ mode: 'open' })\n const style = document.createElement('style')\n style.textContent = `\n :host { cursor: text; }\n textarea {\n display: block;\n box-sizing: border-box;\n width: 100%;\n min-width: 0;\n height: 100%;\n min-height: inherit;\n padding: 0;\n border: 0;\n outline: 0;\n resize: none;\n color: inherit;\n background: transparent;\n font: inherit;\n line-height: inherit;\n }\n `\n const textarea = document.createElement('textarea')\n textarea.addEventListener('input', (event) => {\n event.stopPropagation()\n dispatchMiniProgramEvent(this, 'input', createInputEventDetail(textarea))\n this.#updateLineMetrics(true)\n })\n textarea.addEventListener('focus', () => {\n dispatchMiniProgramEvent(this, 'focus', { value: textarea.value, height: textarea.scrollHeight })\n })\n textarea.addEventListener('blur', () => {\n dispatchMiniProgramEvent(this, 'blur', createInputEventDetail(textarea))\n })\n textarea.addEventListener('keydown', (event) => {\n if (event.key === 'Enter' && !event.shiftKey) {\n dispatchMiniProgramEvent(this, 'confirm', { value: textarea.value })\n }\n })\n root.append(style, textarea)\n this.#textarea = textarea\n }\n\n #syncAttributes() {\n if (!this.#textarea) {\n return\n }\n const value = this.getAttribute('value') ?? ''\n if (this.#textarea.value !== value) {\n this.#textarea.value = value\n }\n this.#textarea.placeholder = this.getAttribute('placeholder') ?? ''\n this.#textarea.disabled = readBooleanAttribute(this, 'disabled')\n const maxlength = resolveMaxLength(this.getAttribute('maxlength'))\n if (maxlength === undefined) {\n this.#textarea.removeAttribute('maxlength')\n }\n else {\n this.#textarea.maxLength = maxlength\n }\n const confirmType = this.getAttribute('confirm-type')\n if (confirmType) {\n this.#textarea.enterKeyHint = confirmType === 'send' ? 'send' : confirmType as HTMLTextAreaElement['enterKeyHint']\n }\n this.#updateLineMetrics(false)\n }\n\n #syncFocus() {\n if (!readBooleanAttribute(this, 'focus') && !readBooleanAttribute(this, 'auto-focus')) {\n return\n }\n queueMicrotask(() => this.focus())\n }\n\n #updateLineMetrics(emit: boolean) {\n const detail = createTextareaLineChangeDetail(this.#textarea!)\n if (detail.lineCount === this.#lastLineCount && detail.height === this.#lastHeight) {\n return\n }\n this.#lastLineCount = detail.lineCount\n this.#lastHeight = detail.height\n if (readBooleanAttribute(this, 'auto-height') && detail.height > 0) {\n this.style.height = `${detail.height}px`\n }\n if (emit) {\n dispatchMiniProgramEvent(this, 'linechange', detail)\n }\n }\n}\n"],"mappings":"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"}
|