@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,50 @@
|
|
|
1
|
+
import { collectFormControlValues, resetFormControls } from "./formControl.mjs";
|
|
2
|
+
import { dispatchMiniProgramEvent, resolveContainingShadowRoot } from "./helpers.mjs";
|
|
3
|
+
import { ensureNativeComponentStyle } from "./style.mjs";
|
|
4
|
+
|
|
5
|
+
//#region src/runtime/nativeComponents/form.ts
|
|
6
|
+
const DEFAULT_FORM_CONFIG = { preventDefault: true };
|
|
7
|
+
const BaseElement = globalThis.HTMLElement ?? class {};
|
|
8
|
+
let formConfig = { ...DEFAULT_FORM_CONFIG };
|
|
9
|
+
var WeappForm = class extends BaseElement {
|
|
10
|
+
#form;
|
|
11
|
+
connectedCallback() {
|
|
12
|
+
ensureNativeComponentStyle(resolveContainingShadowRoot(this));
|
|
13
|
+
this.#ensureStructure();
|
|
14
|
+
}
|
|
15
|
+
requestSubmit() {
|
|
16
|
+
const submitEvent = new CustomEvent("submit", {
|
|
17
|
+
detail: { value: collectFormControlValues(this) },
|
|
18
|
+
bubbles: true,
|
|
19
|
+
composed: true,
|
|
20
|
+
cancelable: true
|
|
21
|
+
});
|
|
22
|
+
if (this.dispatchEvent(submitEvent) && !formConfig.preventDefault) this.#form?.submit();
|
|
23
|
+
}
|
|
24
|
+
reset() {
|
|
25
|
+
resetFormControls(this);
|
|
26
|
+
dispatchMiniProgramEvent(this, "reset", {});
|
|
27
|
+
}
|
|
28
|
+
#ensureStructure() {
|
|
29
|
+
if (this.#form || typeof document === "undefined") return;
|
|
30
|
+
const root = this.shadowRoot ?? this.attachShadow({ mode: "open" });
|
|
31
|
+
const style = document.createElement("style");
|
|
32
|
+
style.textContent = ":host { display: inline; box-sizing: border-box; } form { display: block; margin: 3px 0 0; }";
|
|
33
|
+
const form = document.createElement("form");
|
|
34
|
+
form.addEventListener("submit", (event) => event.preventDefault());
|
|
35
|
+
const slot = document.createElement("slot");
|
|
36
|
+
form.append(slot);
|
|
37
|
+
root.append(style, form);
|
|
38
|
+
this.#form = form;
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
function setFormConfig(next) {
|
|
42
|
+
formConfig = {
|
|
43
|
+
...formConfig,
|
|
44
|
+
...next
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
//#endregion
|
|
49
|
+
export { WeappForm, setFormConfig };
|
|
50
|
+
//# sourceMappingURL=form.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form.mjs","names":["#ensureStructure","#form"],"sources":["../../../src/runtime/nativeComponents/form.ts"],"sourcesContent":["import { collectFormControlValues, resetFormControls } from './formControl'\nimport { dispatchMiniProgramEvent, resolveContainingShadowRoot } from './helpers'\nimport { ensureNativeComponentStyle } from './style'\n\nexport interface FormConfig {\n preventDefault?: boolean\n}\n\nconst DEFAULT_FORM_CONFIG: Required<FormConfig> = {\n preventDefault: true,\n}\n\nconst BaseElement = (globalThis.HTMLElement ?? class {}) as typeof HTMLElement\nlet formConfig: Required<FormConfig> = { ...DEFAULT_FORM_CONFIG }\n\nexport class WeappForm extends BaseElement {\n #form?: HTMLFormElement\n\n connectedCallback() {\n ensureNativeComponentStyle(resolveContainingShadowRoot(this))\n this.#ensureStructure()\n }\n\n requestSubmit() {\n const submitEvent = new CustomEvent('submit', {\n detail: { value: collectFormControlValues(this) },\n bubbles: true,\n composed: true,\n cancelable: true,\n })\n const shouldSubmit = this.dispatchEvent(submitEvent)\n if (shouldSubmit && !formConfig.preventDefault) {\n this.#form?.submit()\n }\n }\n\n reset() {\n resetFormControls(this)\n dispatchMiniProgramEvent(this, 'reset', {})\n }\n\n #ensureStructure() {\n if (this.#form || typeof document === 'undefined') {\n return\n }\n const root = this.shadowRoot ?? this.attachShadow({ mode: 'open' })\n const style = document.createElement('style')\n style.textContent = ':host { display: inline; box-sizing: border-box; } form { display: block; margin: 3px 0 0; }'\n const form = document.createElement('form')\n form.addEventListener('submit', event => event.preventDefault())\n const slot = document.createElement('slot')\n form.append(slot)\n root.append(style, form)\n this.#form = form\n }\n}\n\nexport function setFormConfig(next: FormConfig) {\n formConfig = {\n ...formConfig,\n ...next,\n }\n}\n"],"mappings":";;;;;AAQA,MAAM,sBAA4C,EAChD,gBAAgB,KAClB;AAEA,MAAM,cAAe,WAAW,eAAe,MAAM,CAAC;AACtD,IAAI,aAAmC,EAAE,GAAG,oBAAoB;AAEhE,IAAa,YAAb,cAA+B,YAAY;CACzC;CAEA,oBAAoB;EAClB,2BAA2B,4BAA4B,IAAI,CAAC;EAC5D,KAAKA,iBAAiB;CACxB;CAEA,gBAAgB;EACd,MAAM,cAAc,IAAI,YAAY,UAAU;GAC5C,QAAQ,EAAE,OAAO,yBAAyB,IAAI,EAAE;GAChD,SAAS;GACT,UAAU;GACV,YAAY;EACd,CAAC;EAED,IADqB,KAAK,cAAc,WACzB,KAAK,CAAC,WAAW,gBAC9B,KAAKC,OAAO,OAAO;CAEvB;CAEA,QAAQ;EACN,kBAAkB,IAAI;EACtB,yBAAyB,MAAM,SAAS,CAAC,CAAC;CAC5C;CAEA,mBAAmB;EACjB,IAAI,KAAKA,SAAS,OAAO,aAAa,aACpC;EAEF,MAAM,OAAO,KAAK,cAAc,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;EAClE,MAAM,QAAQ,SAAS,cAAc,OAAO;EAC5C,MAAM,cAAc;EACpB,MAAM,OAAO,SAAS,cAAc,MAAM;EAC1C,KAAK,iBAAiB,WAAU,UAAS,MAAM,eAAe,CAAC;EAC/D,MAAM,OAAO,SAAS,cAAc,MAAM;EAC1C,KAAK,OAAO,IAAI;EAChB,KAAK,OAAO,OAAO,IAAI;EACvB,KAAKA,QAAQ;CACf;AACF;AAEA,SAAgB,cAAc,MAAkB;CAC9C,aAAa;EACX,GAAG;EACH,GAAG;CACL;AACF"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
//#region src/runtime/nativeComponents/formControl.ts
|
|
2
|
+
const controlsByForm = /* @__PURE__ */ new WeakMap();
|
|
3
|
+
const formByControl = /* @__PURE__ */ new WeakMap();
|
|
4
|
+
function resolveParentAcrossShadow(element) {
|
|
5
|
+
if (element.parentElement) return element.parentElement;
|
|
6
|
+
const root = element.getRootNode();
|
|
7
|
+
return typeof ShadowRoot !== "undefined" && root instanceof ShadowRoot ? root.host : null;
|
|
8
|
+
}
|
|
9
|
+
function findClosestComposedElement(element, selector) {
|
|
10
|
+
let current = element;
|
|
11
|
+
while (current) {
|
|
12
|
+
if (current.matches(selector)) return current;
|
|
13
|
+
current = resolveParentAcrossShadow(current);
|
|
14
|
+
}
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
function disconnectFormControl(control) {
|
|
18
|
+
const form = formByControl.get(control);
|
|
19
|
+
if (!form) return;
|
|
20
|
+
controlsByForm.get(form)?.delete(control);
|
|
21
|
+
formByControl.delete(control);
|
|
22
|
+
}
|
|
23
|
+
function connectFormControl(control) {
|
|
24
|
+
disconnectFormControl(control);
|
|
25
|
+
const form = findClosestComposedElement(control, "weapp-form");
|
|
26
|
+
if (!form) return;
|
|
27
|
+
let controls = controlsByForm.get(form);
|
|
28
|
+
if (!controls) {
|
|
29
|
+
controls = /* @__PURE__ */ new Set();
|
|
30
|
+
controlsByForm.set(form, controls);
|
|
31
|
+
}
|
|
32
|
+
controls.add(control);
|
|
33
|
+
formByControl.set(control, form);
|
|
34
|
+
}
|
|
35
|
+
function collectFormControlValues(form) {
|
|
36
|
+
const values = {};
|
|
37
|
+
for (const control of controlsByForm.get(form) ?? []) {
|
|
38
|
+
if (formByControl.get(control) !== form || control.formControlDisabled) continue;
|
|
39
|
+
const name = control.formControlName.trim();
|
|
40
|
+
if (!name) continue;
|
|
41
|
+
values[name] = control.formControlValue;
|
|
42
|
+
}
|
|
43
|
+
return values;
|
|
44
|
+
}
|
|
45
|
+
function resetFormControls(form) {
|
|
46
|
+
for (const control of controlsByForm.get(form) ?? []) control.formReset();
|
|
47
|
+
}
|
|
48
|
+
function requestContainingFormAction(source, action) {
|
|
49
|
+
const form = findClosestComposedElement(source, "weapp-form");
|
|
50
|
+
if (!form) return false;
|
|
51
|
+
if (action === "submit") form.requestSubmit();
|
|
52
|
+
else form.reset();
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
function isFormActivatable(value) {
|
|
56
|
+
return typeof value.formActivate === "function";
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
//#endregion
|
|
60
|
+
export { collectFormControlValues, connectFormControl, disconnectFormControl, findClosestComposedElement, isFormActivatable, requestContainingFormAction, resetFormControls };
|
|
61
|
+
//# sourceMappingURL=formControl.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formControl.mjs","names":[],"sources":["../../../src/runtime/nativeComponents/formControl.ts"],"sourcesContent":["export interface FormControlContract extends HTMLElement {\n readonly formControlName: string\n readonly formControlValue: unknown\n readonly formControlDisabled: boolean\n formReset: () => void\n formActivate?: () => void\n}\n\nexport interface FormOwnerContract extends HTMLElement {\n requestSubmit: () => void\n reset: () => void\n}\n\nconst controlsByForm = new WeakMap<HTMLElement, Set<FormControlContract>>()\nconst formByControl = new WeakMap<FormControlContract, HTMLElement>()\n\nfunction resolveParentAcrossShadow(element: Element): Element | null {\n if (element.parentElement) {\n return element.parentElement\n }\n const root = element.getRootNode()\n return typeof ShadowRoot !== 'undefined' && root instanceof ShadowRoot\n ? root.host\n : null\n}\n\nexport function findClosestComposedElement(element: Element, selector: string) {\n let current: Element | null = element\n while (current) {\n if (current.matches(selector)) {\n return current as HTMLElement\n }\n current = resolveParentAcrossShadow(current)\n }\n return null\n}\n\nexport function disconnectFormControl(control: FormControlContract) {\n const form = formByControl.get(control)\n if (!form) {\n return\n }\n controlsByForm.get(form)?.delete(control)\n formByControl.delete(control)\n}\n\nexport function connectFormControl(control: FormControlContract) {\n disconnectFormControl(control)\n const form = findClosestComposedElement(control, 'weapp-form')\n if (!form) {\n return\n }\n let controls = controlsByForm.get(form)\n if (!controls) {\n controls = new Set()\n controlsByForm.set(form, controls)\n }\n controls.add(control)\n formByControl.set(control, form)\n}\n\nexport function collectFormControlValues(form: HTMLElement) {\n const values: Record<string, unknown> = {}\n for (const control of controlsByForm.get(form) ?? []) {\n if (formByControl.get(control) !== form || control.formControlDisabled) {\n continue\n }\n const name = control.formControlName.trim()\n if (!name) {\n continue\n }\n values[name] = control.formControlValue\n }\n return values\n}\n\nexport function resetFormControls(form: HTMLElement) {\n for (const control of controlsByForm.get(form) ?? []) {\n control.formReset()\n }\n}\n\nexport function requestContainingFormAction(source: Element, action: 'submit' | 'reset') {\n const form = findClosestComposedElement(source, 'weapp-form') as FormOwnerContract | null\n if (!form) {\n return false\n }\n if (action === 'submit') {\n form.requestSubmit()\n }\n else {\n form.reset()\n }\n return true\n}\n\nexport function isFormActivatable(value: Element): value is FormControlContract {\n return typeof (value as FormControlContract).formActivate === 'function'\n}\n"],"mappings":";AAaA,MAAM,iCAAiB,IAAI,QAA+C;AAC1E,MAAM,gCAAgB,IAAI,QAA0C;AAEpE,SAAS,0BAA0B,SAAkC;CACnE,IAAI,QAAQ,eACV,OAAO,QAAQ;CAEjB,MAAM,OAAO,QAAQ,YAAY;CACjC,OAAO,OAAO,eAAe,eAAe,gBAAgB,aACxD,KAAK,OACL;AACN;AAEA,SAAgB,2BAA2B,SAAkB,UAAkB;CAC7E,IAAI,UAA0B;CAC9B,OAAO,SAAS;EACd,IAAI,QAAQ,QAAQ,QAAQ,GAC1B,OAAO;EAET,UAAU,0BAA0B,OAAO;CAC7C;CACA,OAAO;AACT;AAEA,SAAgB,sBAAsB,SAA8B;CAClE,MAAM,OAAO,cAAc,IAAI,OAAO;CACtC,IAAI,CAAC,MACH;CAEF,eAAe,IAAI,IAAI,CAAC,EAAE,OAAO,OAAO;CACxC,cAAc,OAAO,OAAO;AAC9B;AAEA,SAAgB,mBAAmB,SAA8B;CAC/D,sBAAsB,OAAO;CAC7B,MAAM,OAAO,2BAA2B,SAAS,YAAY;CAC7D,IAAI,CAAC,MACH;CAEF,IAAI,WAAW,eAAe,IAAI,IAAI;CACtC,IAAI,CAAC,UAAU;EACb,2BAAW,IAAI,IAAI;EACnB,eAAe,IAAI,MAAM,QAAQ;CACnC;CACA,SAAS,IAAI,OAAO;CACpB,cAAc,IAAI,SAAS,IAAI;AACjC;AAEA,SAAgB,yBAAyB,MAAmB;CAC1D,MAAM,SAAkC,CAAC;CACzC,KAAK,MAAM,WAAW,eAAe,IAAI,IAAI,KAAK,CAAC,GAAG;EACpD,IAAI,cAAc,IAAI,OAAO,MAAM,QAAQ,QAAQ,qBACjD;EAEF,MAAM,OAAO,QAAQ,gBAAgB,KAAK;EAC1C,IAAI,CAAC,MACH;EAEF,OAAO,QAAQ,QAAQ;CACzB;CACA,OAAO;AACT;AAEA,SAAgB,kBAAkB,MAAmB;CACnD,KAAK,MAAM,WAAW,eAAe,IAAI,IAAI,KAAK,CAAC,GACjD,QAAQ,UAAU;AAEtB;AAEA,SAAgB,4BAA4B,QAAiB,QAA4B;CACvF,MAAM,OAAO,2BAA2B,QAAQ,YAAY;CAC5D,IAAI,CAAC,MACH,OAAO;CAET,IAAI,WAAW,UACb,KAAK,cAAc;MAGnB,KAAK,MAAM;CAEb,OAAO;AACT;AAEA,SAAgB,kBAAkB,OAA8C;CAC9E,OAAO,OAAQ,MAA8B,iBAAiB;AAChE"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
//#region src/runtime/nativeComponents/helpers.ts
|
|
2
|
+
function readBooleanAttribute(element, name) {
|
|
3
|
+
const value = element.getAttribute(name);
|
|
4
|
+
return value !== null && value !== "false" && value !== "0";
|
|
5
|
+
}
|
|
6
|
+
function resolveMaxLength(value) {
|
|
7
|
+
if (value === null) return;
|
|
8
|
+
const maxlength = Number(value);
|
|
9
|
+
return Number.isInteger(maxlength) && maxlength >= 0 ? maxlength : void 0;
|
|
10
|
+
}
|
|
11
|
+
function resolveContainingShadowRoot(element) {
|
|
12
|
+
const root = element.getRootNode();
|
|
13
|
+
return typeof ShadowRoot !== "undefined" && root instanceof ShadowRoot ? root : void 0;
|
|
14
|
+
}
|
|
15
|
+
function dispatchMiniProgramEvent(element, name, detail, options = {}) {
|
|
16
|
+
element.dispatchEvent(new CustomEvent(name, {
|
|
17
|
+
bubbles: options.bubbles ?? true,
|
|
18
|
+
composed: options.composed ?? true,
|
|
19
|
+
detail
|
|
20
|
+
}));
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
//#endregion
|
|
24
|
+
export { dispatchMiniProgramEvent, readBooleanAttribute, resolveContainingShadowRoot, resolveMaxLength };
|
|
25
|
+
//# sourceMappingURL=helpers.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.mjs","names":[],"sources":["../../../src/runtime/nativeComponents/helpers.ts"],"sourcesContent":["export function readBooleanAttribute(element: Element, name: string) {\n const value = element.getAttribute(name)\n return value !== null && value !== 'false' && value !== '0'\n}\n\nexport function resolveMaxLength(value: string | null) {\n if (value === null) {\n return undefined\n }\n const maxlength = Number(value)\n return Number.isInteger(maxlength) && maxlength >= 0 ? maxlength : undefined\n}\n\nexport function resolveContainingShadowRoot(element: Element) {\n const root = element.getRootNode()\n return typeof ShadowRoot !== 'undefined' && root instanceof ShadowRoot ? root : undefined\n}\n\nexport function dispatchMiniProgramEvent<T>(\n element: Element,\n name: string,\n detail: T,\n options: Pick<CustomEventInit<T>, 'bubbles' | 'composed'> = {},\n) {\n element.dispatchEvent(new CustomEvent(name, {\n bubbles: options.bubbles ?? true,\n composed: options.composed ?? true,\n detail,\n }))\n}\n"],"mappings":";AAAA,SAAgB,qBAAqB,SAAkB,MAAc;CACnE,MAAM,QAAQ,QAAQ,aAAa,IAAI;CACvC,OAAO,UAAU,QAAQ,UAAU,WAAW,UAAU;AAC1D;AAEA,SAAgB,iBAAiB,OAAsB;CACrD,IAAI,UAAU,MACZ;CAEF,MAAM,YAAY,OAAO,KAAK;CAC9B,OAAO,OAAO,UAAU,SAAS,KAAK,aAAa,IAAI,YAAY;AACrE;AAEA,SAAgB,4BAA4B,SAAkB;CAC5D,MAAM,OAAO,QAAQ,YAAY;CACjC,OAAO,OAAO,eAAe,eAAe,gBAAgB,aAAa,OAAO;AAClF;AAEA,SAAgB,yBACd,SACA,MACA,QACA,UAA4D,CAAC,GAC7D;CACA,QAAQ,cAAc,IAAI,YAAY,MAAM;EAC1C,SAAS,QAAQ,WAAW;EAC5B,UAAU,QAAQ,YAAY;EAC9B;CACF,CAAC,CAAC;AACJ"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
//#region src/runtime/nativeComponents/icon/helpers.ts
|
|
2
|
+
const ICON_TYPES = [
|
|
3
|
+
"success",
|
|
4
|
+
"success_no_circle",
|
|
5
|
+
"info",
|
|
6
|
+
"warn",
|
|
7
|
+
"waiting",
|
|
8
|
+
"cancel",
|
|
9
|
+
"download",
|
|
10
|
+
"search",
|
|
11
|
+
"clear"
|
|
12
|
+
];
|
|
13
|
+
const iconTypes = new Set(ICON_TYPES);
|
|
14
|
+
const DEFAULT_ICON_COLORS = {
|
|
15
|
+
success: "#09bb07",
|
|
16
|
+
success_no_circle: "#09bb07",
|
|
17
|
+
info: "#10aeff",
|
|
18
|
+
warn: "#f76260",
|
|
19
|
+
waiting: "#10aeff",
|
|
20
|
+
cancel: "#f76260",
|
|
21
|
+
download: "#09bb07",
|
|
22
|
+
search: "#7a7e83",
|
|
23
|
+
clear: "#7a7e83"
|
|
24
|
+
};
|
|
25
|
+
function finiteNumber(value, fallback) {
|
|
26
|
+
const numeric = Number(value);
|
|
27
|
+
return Number.isFinite(numeric) ? numeric : fallback;
|
|
28
|
+
}
|
|
29
|
+
function resolveIconType(value) {
|
|
30
|
+
const type = String(value ?? "").trim().toLowerCase();
|
|
31
|
+
return iconTypes.has(type) ? type : "success";
|
|
32
|
+
}
|
|
33
|
+
function resolveIconSize(value) {
|
|
34
|
+
return Math.max(0, finiteNumber(value, 23));
|
|
35
|
+
}
|
|
36
|
+
function resolveIconColor(type, value) {
|
|
37
|
+
return String(value ?? "").trim() || DEFAULT_ICON_COLORS[type];
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
//#endregion
|
|
41
|
+
export { ICON_TYPES, resolveIconColor, resolveIconSize, resolveIconType };
|
|
42
|
+
//# sourceMappingURL=helpers.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.mjs","names":[],"sources":["../../../../src/runtime/nativeComponents/icon/helpers.ts"],"sourcesContent":["export const ICON_TYPES = [\n 'success',\n 'success_no_circle',\n 'info',\n 'warn',\n 'waiting',\n 'cancel',\n 'download',\n 'search',\n 'clear',\n] as const\n\nexport type IconType = typeof ICON_TYPES[number]\n\nconst iconTypes = new Set<string>(ICON_TYPES)\n\nconst DEFAULT_ICON_COLORS: Record<IconType, string> = {\n success: '#09bb07',\n success_no_circle: '#09bb07',\n info: '#10aeff',\n warn: '#f76260',\n waiting: '#10aeff',\n cancel: '#f76260',\n download: '#09bb07',\n search: '#7a7e83',\n clear: '#7a7e83',\n}\n\nfunction finiteNumber(value: unknown, fallback: number) {\n const numeric = Number(value)\n return Number.isFinite(numeric) ? numeric : fallback\n}\n\nexport function resolveIconType(value: unknown): IconType {\n const type = String(value ?? '').trim().toLowerCase()\n return iconTypes.has(type) ? type as IconType : 'success'\n}\n\nexport function resolveIconSize(value: unknown) {\n return Math.max(0, finiteNumber(value, 23))\n}\n\nexport function resolveIconColor(type: IconType, value: unknown) {\n const color = String(value ?? '').trim()\n return color || DEFAULT_ICON_COLORS[type]\n}\n"],"mappings":";AAAA,MAAa,aAAa;CACxB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF;AAIA,MAAM,YAAY,IAAI,IAAY,UAAU;AAE5C,MAAM,sBAAgD;CACpD,SAAS;CACT,mBAAmB;CACnB,MAAM;CACN,MAAM;CACN,SAAS;CACT,QAAQ;CACR,UAAU;CACV,QAAQ;CACR,OAAO;AACT;AAEA,SAAS,aAAa,OAAgB,UAAkB;CACtD,MAAM,UAAU,OAAO,KAAK;CAC5B,OAAO,OAAO,SAAS,OAAO,IAAI,UAAU;AAC9C;AAEA,SAAgB,gBAAgB,OAA0B;CACxD,MAAM,OAAO,OAAO,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY;CACpD,OAAO,UAAU,IAAI,IAAI,IAAI,OAAmB;AAClD;AAEA,SAAgB,gBAAgB,OAAgB;CAC9C,OAAO,KAAK,IAAI,GAAG,aAAa,OAAO,EAAE,CAAC;AAC5C;AAEA,SAAgB,iBAAiB,MAAgB,OAAgB;CAE/D,OADc,OAAO,SAAS,EAAE,CAAC,CAAC,KACvB,KAAK,oBAAoB;AACtC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { getNativeComponentDescriptor } from "../../../shared/nativeComponents.mjs";
|
|
2
|
+
import { resolveContainingShadowRoot } from "../helpers.mjs";
|
|
3
|
+
import { ensureNativeComponentStyle } from "../style.mjs";
|
|
4
|
+
import { ICON_TYPES, resolveIconColor, resolveIconSize, resolveIconType } from "./helpers.mjs";
|
|
5
|
+
import { ICON_SHADOW_STYLE } from "./style.mjs";
|
|
6
|
+
|
|
7
|
+
//#region src/runtime/nativeComponents/icon/index.ts
|
|
8
|
+
const BaseElement = globalThis.HTMLElement ?? class {};
|
|
9
|
+
var WeappIcon = class extends BaseElement {
|
|
10
|
+
static observedAttributes = [...getNativeComponentDescriptor("icon").attributes];
|
|
11
|
+
#icon;
|
|
12
|
+
connectedCallback() {
|
|
13
|
+
ensureNativeComponentStyle(resolveContainingShadowRoot(this));
|
|
14
|
+
this.#ensureStructure();
|
|
15
|
+
this.#syncAttributes();
|
|
16
|
+
}
|
|
17
|
+
attributeChangedCallback() {
|
|
18
|
+
this.#syncAttributes();
|
|
19
|
+
}
|
|
20
|
+
#ensureStructure() {
|
|
21
|
+
if (this.#icon || typeof document === "undefined") return;
|
|
22
|
+
const root = this.shadowRoot ?? this.attachShadow({ mode: "open" });
|
|
23
|
+
const style = document.createElement("style");
|
|
24
|
+
style.textContent = ICON_SHADOW_STYLE;
|
|
25
|
+
const icon = document.createElement("span");
|
|
26
|
+
icon.className = "icon";
|
|
27
|
+
icon.setAttribute("role", "img");
|
|
28
|
+
root.append(style, icon);
|
|
29
|
+
this.#icon = icon;
|
|
30
|
+
}
|
|
31
|
+
#syncAttributes() {
|
|
32
|
+
if (!this.#icon) return;
|
|
33
|
+
const type = resolveIconType(this.getAttribute("type"));
|
|
34
|
+
const size = resolveIconSize(this.getAttribute("size"));
|
|
35
|
+
const color = resolveIconColor(type, this.getAttribute("color"));
|
|
36
|
+
this.style.setProperty("--weapp-icon-size", `${size}px`);
|
|
37
|
+
this.style.setProperty("--weapp-icon-color", color);
|
|
38
|
+
this.#icon.className = `icon ${type}`;
|
|
39
|
+
this.#icon.setAttribute("aria-label", type);
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
//#endregion
|
|
44
|
+
export { ICON_TYPES, WeappIcon, resolveIconColor, resolveIconSize, resolveIconType };
|
|
45
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["#ensureStructure","#syncAttributes","#icon"],"sources":["../../../../src/runtime/nativeComponents/icon/index.ts"],"sourcesContent":["import { getNativeComponentDescriptor } from '../../../shared/nativeComponents'\nimport { resolveContainingShadowRoot } from '../helpers'\nimport { ensureNativeComponentStyle } from '../style'\nimport { resolveIconColor, resolveIconSize, resolveIconType } from './helpers'\nimport { ICON_SHADOW_STYLE } from './style'\n\nconst BaseElement = (globalThis.HTMLElement ?? class {}) as typeof HTMLElement\n\nexport class WeappIcon extends BaseElement {\n static observedAttributes = [...getNativeComponentDescriptor('icon')!.attributes]\n\n #icon?: HTMLSpanElement\n\n connectedCallback() {\n ensureNativeComponentStyle(resolveContainingShadowRoot(this))\n this.#ensureStructure()\n this.#syncAttributes()\n }\n\n attributeChangedCallback() {\n this.#syncAttributes()\n }\n\n #ensureStructure() {\n if (this.#icon || typeof document === 'undefined') {\n return\n }\n const root = this.shadowRoot ?? this.attachShadow({ mode: 'open' })\n const style = document.createElement('style')\n style.textContent = ICON_SHADOW_STYLE\n const icon = document.createElement('span')\n icon.className = 'icon'\n icon.setAttribute('role', 'img')\n root.append(style, icon)\n this.#icon = icon\n }\n\n #syncAttributes() {\n if (!this.#icon) {\n return\n }\n const type = resolveIconType(this.getAttribute('type'))\n const size = resolveIconSize(this.getAttribute('size'))\n const color = resolveIconColor(type, this.getAttribute('color'))\n this.style.setProperty('--weapp-icon-size', `${size}px`)\n this.style.setProperty('--weapp-icon-color', color)\n this.#icon.className = `icon ${type}`\n this.#icon.setAttribute('aria-label', type)\n }\n}\n\nexport * from './helpers'\n"],"mappings":";;;;;;;AAMA,MAAM,cAAe,WAAW,eAAe,MAAM,CAAC;AAEtD,IAAa,YAAb,cAA+B,YAAY;CACzC,OAAO,qBAAqB,CAAC,GAAG,6BAA6B,MAAM,CAAC,CAAE,UAAU;CAEhF;CAEA,oBAAoB;EAClB,2BAA2B,4BAA4B,IAAI,CAAC;EAC5D,KAAKA,iBAAiB;EACtB,KAAKC,gBAAgB;CACvB;CAEA,2BAA2B;EACzB,KAAKA,gBAAgB;CACvB;CAEA,mBAAmB;EACjB,IAAI,KAAKC,SAAS,OAAO,aAAa,aACpC;EAEF,MAAM,OAAO,KAAK,cAAc,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;EAClE,MAAM,QAAQ,SAAS,cAAc,OAAO;EAC5C,MAAM,cAAc;EACpB,MAAM,OAAO,SAAS,cAAc,MAAM;EAC1C,KAAK,YAAY;EACjB,KAAK,aAAa,QAAQ,KAAK;EAC/B,KAAK,OAAO,OAAO,IAAI;EACvB,KAAKA,QAAQ;CACf;CAEA,kBAAkB;EAChB,IAAI,CAAC,KAAKA,OACR;EAEF,MAAM,OAAO,gBAAgB,KAAK,aAAa,MAAM,CAAC;EACtD,MAAM,OAAO,gBAAgB,KAAK,aAAa,MAAM,CAAC;EACtD,MAAM,QAAQ,iBAAiB,MAAM,KAAK,aAAa,OAAO,CAAC;EAC/D,KAAK,MAAM,YAAY,qBAAqB,GAAG,KAAK,GAAG;EACvD,KAAK,MAAM,YAAY,sBAAsB,KAAK;EAClD,KAAKA,MAAM,YAAY,QAAQ;EAC/B,KAAKA,MAAM,aAAa,cAAc,IAAI;CAC5C;AACF"}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
//#region src/runtime/nativeComponents/icon/style.ts
|
|
2
|
+
const ICON_SHADOW_STYLE = `
|
|
3
|
+
:host {
|
|
4
|
+
width: var(--weapp-icon-size);
|
|
5
|
+
height: var(--weapp-icon-size);
|
|
6
|
+
color: var(--weapp-icon-color);
|
|
7
|
+
line-height: 1;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.icon {
|
|
11
|
+
position: relative;
|
|
12
|
+
display: block;
|
|
13
|
+
box-sizing: border-box;
|
|
14
|
+
width: 100%;
|
|
15
|
+
height: 100%;
|
|
16
|
+
color: inherit;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.icon::before,
|
|
20
|
+
.icon::after {
|
|
21
|
+
position: absolute;
|
|
22
|
+
box-sizing: border-box;
|
|
23
|
+
content: '';
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.success,
|
|
27
|
+
.info,
|
|
28
|
+
.warn,
|
|
29
|
+
.cancel,
|
|
30
|
+
.clear {
|
|
31
|
+
background: currentColor;
|
|
32
|
+
border-radius: 50%;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.success::before,
|
|
36
|
+
.success_no_circle::before {
|
|
37
|
+
top: 24%;
|
|
38
|
+
left: 27%;
|
|
39
|
+
width: 47%;
|
|
40
|
+
height: 29%;
|
|
41
|
+
border-bottom: max(1px, calc(var(--weapp-icon-size) * 0.09)) solid currentColor;
|
|
42
|
+
border-left: max(1px, calc(var(--weapp-icon-size) * 0.09)) solid currentColor;
|
|
43
|
+
transform: rotate(-45deg);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.success::before {
|
|
47
|
+
color: #fff;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.info::before {
|
|
51
|
+
top: 20%;
|
|
52
|
+
left: 46%;
|
|
53
|
+
width: 8%;
|
|
54
|
+
height: 13%;
|
|
55
|
+
background: #fff;
|
|
56
|
+
border-radius: 50%;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.info::after {
|
|
60
|
+
top: 39%;
|
|
61
|
+
left: 46%;
|
|
62
|
+
width: 8%;
|
|
63
|
+
height: 40%;
|
|
64
|
+
background: #fff;
|
|
65
|
+
border-radius: 999px;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.warn::before {
|
|
69
|
+
top: 18%;
|
|
70
|
+
left: 46%;
|
|
71
|
+
width: 8%;
|
|
72
|
+
height: 43%;
|
|
73
|
+
background: #fff;
|
|
74
|
+
border-radius: 999px;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.warn::after {
|
|
78
|
+
bottom: 19%;
|
|
79
|
+
left: 46%;
|
|
80
|
+
width: 8%;
|
|
81
|
+
height: 8%;
|
|
82
|
+
background: #fff;
|
|
83
|
+
border-radius: 50%;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.waiting {
|
|
87
|
+
border: max(1px, calc(var(--weapp-icon-size) * 0.08)) solid currentColor;
|
|
88
|
+
border-radius: 50%;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.waiting::before {
|
|
92
|
+
top: 20%;
|
|
93
|
+
left: 46%;
|
|
94
|
+
width: max(1px, calc(var(--weapp-icon-size) * 0.07));
|
|
95
|
+
height: 33%;
|
|
96
|
+
background: currentColor;
|
|
97
|
+
border-radius: 999px;
|
|
98
|
+
transform-origin: 50% 90%;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.waiting::after {
|
|
102
|
+
top: 47%;
|
|
103
|
+
left: 48%;
|
|
104
|
+
width: 29%;
|
|
105
|
+
height: max(1px, calc(var(--weapp-icon-size) * 0.07));
|
|
106
|
+
background: currentColor;
|
|
107
|
+
border-radius: 999px;
|
|
108
|
+
transform: rotate(28deg);
|
|
109
|
+
transform-origin: 0 50%;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
.cancel::before,
|
|
113
|
+
.cancel::after,
|
|
114
|
+
.clear::before,
|
|
115
|
+
.clear::after {
|
|
116
|
+
top: 46%;
|
|
117
|
+
left: 24%;
|
|
118
|
+
width: 52%;
|
|
119
|
+
height: max(1px, calc(var(--weapp-icon-size) * 0.08));
|
|
120
|
+
background: #fff;
|
|
121
|
+
border-radius: 999px;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
.cancel::before,
|
|
125
|
+
.clear::before {
|
|
126
|
+
transform: rotate(45deg);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
.cancel::after,
|
|
130
|
+
.clear::after {
|
|
131
|
+
transform: rotate(-45deg);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
.download::before {
|
|
135
|
+
top: 7%;
|
|
136
|
+
left: 46%;
|
|
137
|
+
width: 8%;
|
|
138
|
+
height: 59%;
|
|
139
|
+
background: currentColor;
|
|
140
|
+
border-radius: 999px;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
.download::after {
|
|
144
|
+
top: 38%;
|
|
145
|
+
left: 27%;
|
|
146
|
+
width: 46%;
|
|
147
|
+
height: 46%;
|
|
148
|
+
border-right: max(1px, calc(var(--weapp-icon-size) * 0.08)) solid currentColor;
|
|
149
|
+
border-bottom: max(1px, calc(var(--weapp-icon-size) * 0.08)) solid currentColor;
|
|
150
|
+
transform: rotate(45deg);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
.search::before {
|
|
154
|
+
top: 8%;
|
|
155
|
+
left: 8%;
|
|
156
|
+
width: 64%;
|
|
157
|
+
height: 64%;
|
|
158
|
+
border: max(1px, calc(var(--weapp-icon-size) * 0.08)) solid currentColor;
|
|
159
|
+
border-radius: 50%;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
.search::after {
|
|
163
|
+
right: 5%;
|
|
164
|
+
bottom: 10%;
|
|
165
|
+
width: 37%;
|
|
166
|
+
height: max(1px, calc(var(--weapp-icon-size) * 0.08));
|
|
167
|
+
background: currentColor;
|
|
168
|
+
border-radius: 999px;
|
|
169
|
+
transform: rotate(45deg);
|
|
170
|
+
transform-origin: 100% 50%;
|
|
171
|
+
}
|
|
172
|
+
`;
|
|
173
|
+
|
|
174
|
+
//#endregion
|
|
175
|
+
export { ICON_SHADOW_STYLE };
|
|
176
|
+
//# sourceMappingURL=style.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"style.mjs","names":[],"sources":["../../../../src/runtime/nativeComponents/icon/style.ts"],"sourcesContent":["export const ICON_SHADOW_STYLE = `\n :host {\n width: var(--weapp-icon-size);\n height: var(--weapp-icon-size);\n color: var(--weapp-icon-color);\n line-height: 1;\n }\n\n .icon {\n position: relative;\n display: block;\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n color: inherit;\n }\n\n .icon::before,\n .icon::after {\n position: absolute;\n box-sizing: border-box;\n content: '';\n }\n\n .success,\n .info,\n .warn,\n .cancel,\n .clear {\n background: currentColor;\n border-radius: 50%;\n }\n\n .success::before,\n .success_no_circle::before {\n top: 24%;\n left: 27%;\n width: 47%;\n height: 29%;\n border-bottom: max(1px, calc(var(--weapp-icon-size) * 0.09)) solid currentColor;\n border-left: max(1px, calc(var(--weapp-icon-size) * 0.09)) solid currentColor;\n transform: rotate(-45deg);\n }\n\n .success::before {\n color: #fff;\n }\n\n .info::before {\n top: 20%;\n left: 46%;\n width: 8%;\n height: 13%;\n background: #fff;\n border-radius: 50%;\n }\n\n .info::after {\n top: 39%;\n left: 46%;\n width: 8%;\n height: 40%;\n background: #fff;\n border-radius: 999px;\n }\n\n .warn::before {\n top: 18%;\n left: 46%;\n width: 8%;\n height: 43%;\n background: #fff;\n border-radius: 999px;\n }\n\n .warn::after {\n bottom: 19%;\n left: 46%;\n width: 8%;\n height: 8%;\n background: #fff;\n border-radius: 50%;\n }\n\n .waiting {\n border: max(1px, calc(var(--weapp-icon-size) * 0.08)) solid currentColor;\n border-radius: 50%;\n }\n\n .waiting::before {\n top: 20%;\n left: 46%;\n width: max(1px, calc(var(--weapp-icon-size) * 0.07));\n height: 33%;\n background: currentColor;\n border-radius: 999px;\n transform-origin: 50% 90%;\n }\n\n .waiting::after {\n top: 47%;\n left: 48%;\n width: 29%;\n height: max(1px, calc(var(--weapp-icon-size) * 0.07));\n background: currentColor;\n border-radius: 999px;\n transform: rotate(28deg);\n transform-origin: 0 50%;\n }\n\n .cancel::before,\n .cancel::after,\n .clear::before,\n .clear::after {\n top: 46%;\n left: 24%;\n width: 52%;\n height: max(1px, calc(var(--weapp-icon-size) * 0.08));\n background: #fff;\n border-radius: 999px;\n }\n\n .cancel::before,\n .clear::before {\n transform: rotate(45deg);\n }\n\n .cancel::after,\n .clear::after {\n transform: rotate(-45deg);\n }\n\n .download::before {\n top: 7%;\n left: 46%;\n width: 8%;\n height: 59%;\n background: currentColor;\n border-radius: 999px;\n }\n\n .download::after {\n top: 38%;\n left: 27%;\n width: 46%;\n height: 46%;\n border-right: max(1px, calc(var(--weapp-icon-size) * 0.08)) solid currentColor;\n border-bottom: max(1px, calc(var(--weapp-icon-size) * 0.08)) solid currentColor;\n transform: rotate(45deg);\n }\n\n .search::before {\n top: 8%;\n left: 8%;\n width: 64%;\n height: 64%;\n border: max(1px, calc(var(--weapp-icon-size) * 0.08)) solid currentColor;\n border-radius: 50%;\n }\n\n .search::after {\n right: 5%;\n bottom: 10%;\n width: 37%;\n height: max(1px, calc(var(--weapp-icon-size) * 0.08));\n background: currentColor;\n border-radius: 999px;\n transform: rotate(45deg);\n transform-origin: 100% 50%;\n }\n`\n"],"mappings":";AAAA,MAAa,oBAAoB"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { getNativeComponentDescriptor } from "../../shared/nativeComponents.mjs";
|
|
2
|
+
import { dispatchMiniProgramEvent, readBooleanAttribute, resolveContainingShadowRoot } from "./helpers.mjs";
|
|
3
|
+
import { ensureNativeComponentStyle } from "./style.mjs";
|
|
4
|
+
|
|
5
|
+
//#region src/runtime/nativeComponents/image.ts
|
|
6
|
+
const BaseElement = globalThis.HTMLElement ?? class {};
|
|
7
|
+
const IMAGE_MODE_STYLES = {
|
|
8
|
+
"scaleToFill": {
|
|
9
|
+
fit: "fill",
|
|
10
|
+
position: "center"
|
|
11
|
+
},
|
|
12
|
+
"aspectFit": {
|
|
13
|
+
fit: "contain",
|
|
14
|
+
position: "center"
|
|
15
|
+
},
|
|
16
|
+
"aspectFill": {
|
|
17
|
+
fit: "cover",
|
|
18
|
+
position: "center"
|
|
19
|
+
},
|
|
20
|
+
"top": {
|
|
21
|
+
fit: "none",
|
|
22
|
+
position: "top"
|
|
23
|
+
},
|
|
24
|
+
"bottom": {
|
|
25
|
+
fit: "none",
|
|
26
|
+
position: "bottom"
|
|
27
|
+
},
|
|
28
|
+
"center": {
|
|
29
|
+
fit: "none",
|
|
30
|
+
position: "center"
|
|
31
|
+
},
|
|
32
|
+
"left": {
|
|
33
|
+
fit: "none",
|
|
34
|
+
position: "left"
|
|
35
|
+
},
|
|
36
|
+
"right": {
|
|
37
|
+
fit: "none",
|
|
38
|
+
position: "right"
|
|
39
|
+
},
|
|
40
|
+
"top left": {
|
|
41
|
+
fit: "none",
|
|
42
|
+
position: "left top"
|
|
43
|
+
},
|
|
44
|
+
"top right": {
|
|
45
|
+
fit: "none",
|
|
46
|
+
position: "right top"
|
|
47
|
+
},
|
|
48
|
+
"bottom left": {
|
|
49
|
+
fit: "none",
|
|
50
|
+
position: "left bottom"
|
|
51
|
+
},
|
|
52
|
+
"bottom right": {
|
|
53
|
+
fit: "none",
|
|
54
|
+
position: "right bottom"
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
function resolveImageModeStyle(mode) {
|
|
58
|
+
return IMAGE_MODE_STYLES[mode ?? "scaleToFill"] ?? IMAGE_MODE_STYLES.scaleToFill;
|
|
59
|
+
}
|
|
60
|
+
var WeappImage = class extends BaseElement {
|
|
61
|
+
static observedAttributes = [...getNativeComponentDescriptor("image").attributes];
|
|
62
|
+
#image;
|
|
63
|
+
connectedCallback() {
|
|
64
|
+
ensureNativeComponentStyle(resolveContainingShadowRoot(this));
|
|
65
|
+
this.#ensureStructure();
|
|
66
|
+
this.#syncAttributes();
|
|
67
|
+
}
|
|
68
|
+
attributeChangedCallback() {
|
|
69
|
+
this.#syncAttributes();
|
|
70
|
+
}
|
|
71
|
+
#ensureStructure() {
|
|
72
|
+
if (this.#image || typeof document === "undefined") return;
|
|
73
|
+
const root = this.shadowRoot ?? this.attachShadow({ mode: "open" });
|
|
74
|
+
const style = document.createElement("style");
|
|
75
|
+
style.textContent = `
|
|
76
|
+
:host { position: relative; }
|
|
77
|
+
img { display: block; width: 100%; height: 100%; }
|
|
78
|
+
`;
|
|
79
|
+
const image = document.createElement("img");
|
|
80
|
+
image.addEventListener("load", () => {
|
|
81
|
+
dispatchMiniProgramEvent(this, "load", {
|
|
82
|
+
width: image.naturalWidth,
|
|
83
|
+
height: image.naturalHeight
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
image.addEventListener("error", () => {
|
|
87
|
+
dispatchMiniProgramEvent(this, "error", { errMsg: "image load failed" }, {
|
|
88
|
+
bubbles: false,
|
|
89
|
+
composed: false
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
root.append(style, image);
|
|
93
|
+
this.#image = image;
|
|
94
|
+
}
|
|
95
|
+
#syncAttributes() {
|
|
96
|
+
if (!this.#image) return;
|
|
97
|
+
this.#image.src = this.getAttribute("src") ?? "";
|
|
98
|
+
this.#image.alt = this.getAttribute("alt") ?? "";
|
|
99
|
+
this.#image.loading = readBooleanAttribute(this, "lazy-load") ? "lazy" : "eager";
|
|
100
|
+
const mode = this.getAttribute("mode") ?? "scaleToFill";
|
|
101
|
+
const modeStyle = resolveImageModeStyle(mode);
|
|
102
|
+
this.#image.style.objectFit = modeStyle.fit;
|
|
103
|
+
this.#image.style.objectPosition = modeStyle.position;
|
|
104
|
+
this.toggleAttribute("data-width-fix", mode === "widthFix");
|
|
105
|
+
this.toggleAttribute("data-height-fix", mode === "heightFix");
|
|
106
|
+
if (mode === "widthFix") {
|
|
107
|
+
this.#image.style.height = "auto";
|
|
108
|
+
this.style.height = "auto";
|
|
109
|
+
} else if (mode === "heightFix") {
|
|
110
|
+
this.#image.style.width = "auto";
|
|
111
|
+
this.style.width = "auto";
|
|
112
|
+
} else {
|
|
113
|
+
this.#image.style.width = "100%";
|
|
114
|
+
this.#image.style.height = "100%";
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
//#endregion
|
|
120
|
+
export { WeappImage, resolveImageModeStyle };
|
|
121
|
+
//# sourceMappingURL=image.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image.mjs","names":["#ensureStructure","#syncAttributes","#image"],"sources":["../../../src/runtime/nativeComponents/image.ts"],"sourcesContent":["import { getNativeComponentDescriptor } from '../../shared/nativeComponents'\nimport { dispatchMiniProgramEvent, readBooleanAttribute, resolveContainingShadowRoot } from './helpers'\nimport { ensureNativeComponentStyle } from './style'\n\nconst BaseElement = (globalThis.HTMLElement ?? class {}) as typeof HTMLElement\n\nconst IMAGE_MODE_STYLES: Record<string, { fit: string, position: string }> = {\n 'scaleToFill': { fit: 'fill', position: 'center' },\n 'aspectFit': { fit: 'contain', position: 'center' },\n 'aspectFill': { fit: 'cover', position: 'center' },\n 'top': { fit: 'none', position: 'top' },\n 'bottom': { fit: 'none', position: 'bottom' },\n 'center': { fit: 'none', position: 'center' },\n 'left': { fit: 'none', position: 'left' },\n 'right': { fit: 'none', position: 'right' },\n 'top left': { fit: 'none', position: 'left top' },\n 'top right': { fit: 'none', position: 'right top' },\n 'bottom left': { fit: 'none', position: 'left bottom' },\n 'bottom right': { fit: 'none', position: 'right bottom' },\n}\n\nexport function resolveImageModeStyle(mode: string | null) {\n return IMAGE_MODE_STYLES[mode ?? 'scaleToFill'] ?? IMAGE_MODE_STYLES.scaleToFill!\n}\n\nexport class WeappImage extends BaseElement {\n static observedAttributes = [...getNativeComponentDescriptor('image')!.attributes]\n\n #image?: HTMLImageElement\n\n connectedCallback() {\n ensureNativeComponentStyle(resolveContainingShadowRoot(this))\n this.#ensureStructure()\n this.#syncAttributes()\n }\n\n attributeChangedCallback() {\n this.#syncAttributes()\n }\n\n #ensureStructure() {\n if (this.#image || 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 { position: relative; }\n img { display: block; width: 100%; height: 100%; }\n `\n const image = document.createElement('img')\n image.addEventListener('load', () => {\n dispatchMiniProgramEvent(this, 'load', {\n width: image.naturalWidth,\n height: image.naturalHeight,\n })\n })\n image.addEventListener('error', () => {\n dispatchMiniProgramEvent(this, 'error', { errMsg: 'image load failed' }, {\n bubbles: false,\n composed: false,\n })\n })\n root.append(style, image)\n this.#image = image\n }\n\n #syncAttributes() {\n if (!this.#image) {\n return\n }\n this.#image.src = this.getAttribute('src') ?? ''\n this.#image.alt = this.getAttribute('alt') ?? ''\n this.#image.loading = readBooleanAttribute(this, 'lazy-load') ? 'lazy' : 'eager'\n const mode = this.getAttribute('mode') ?? 'scaleToFill'\n const modeStyle = resolveImageModeStyle(mode)\n this.#image.style.objectFit = modeStyle.fit\n this.#image.style.objectPosition = modeStyle.position\n this.toggleAttribute('data-width-fix', mode === 'widthFix')\n this.toggleAttribute('data-height-fix', mode === 'heightFix')\n if (mode === 'widthFix') {\n this.#image.style.height = 'auto'\n this.style.height = 'auto'\n }\n else if (mode === 'heightFix') {\n this.#image.style.width = 'auto'\n this.style.width = 'auto'\n }\n else {\n this.#image.style.width = '100%'\n this.#image.style.height = '100%'\n }\n }\n}\n"],"mappings":";;;;;AAIA,MAAM,cAAe,WAAW,eAAe,MAAM,CAAC;AAEtD,MAAM,oBAAuE;CAC3E,eAAe;EAAE,KAAK;EAAQ,UAAU;CAAS;CACjD,aAAa;EAAE,KAAK;EAAW,UAAU;CAAS;CAClD,cAAc;EAAE,KAAK;EAAS,UAAU;CAAS;CACjD,OAAO;EAAE,KAAK;EAAQ,UAAU;CAAM;CACtC,UAAU;EAAE,KAAK;EAAQ,UAAU;CAAS;CAC5C,UAAU;EAAE,KAAK;EAAQ,UAAU;CAAS;CAC5C,QAAQ;EAAE,KAAK;EAAQ,UAAU;CAAO;CACxC,SAAS;EAAE,KAAK;EAAQ,UAAU;CAAQ;CAC1C,YAAY;EAAE,KAAK;EAAQ,UAAU;CAAW;CAChD,aAAa;EAAE,KAAK;EAAQ,UAAU;CAAY;CAClD,eAAe;EAAE,KAAK;EAAQ,UAAU;CAAc;CACtD,gBAAgB;EAAE,KAAK;EAAQ,UAAU;CAAe;AAC1D;AAEA,SAAgB,sBAAsB,MAAqB;CACzD,OAAO,kBAAkB,QAAQ,kBAAkB,kBAAkB;AACvE;AAEA,IAAa,aAAb,cAAgC,YAAY;CAC1C,OAAO,qBAAqB,CAAC,GAAG,6BAA6B,OAAO,CAAC,CAAE,UAAU;CAEjF;CAEA,oBAAoB;EAClB,2BAA2B,4BAA4B,IAAI,CAAC;EAC5D,KAAKA,iBAAiB;EACtB,KAAKC,gBAAgB;CACvB;CAEA,2BAA2B;EACzB,KAAKA,gBAAgB;CACvB;CAEA,mBAAmB;EACjB,IAAI,KAAKC,UAAU,OAAO,aAAa,aACrC;EAEF,MAAM,OAAO,KAAK,cAAc,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;EAClE,MAAM,QAAQ,SAAS,cAAc,OAAO;EAC5C,MAAM,cAAc;;;;EAIpB,MAAM,QAAQ,SAAS,cAAc,KAAK;EAC1C,MAAM,iBAAiB,cAAc;GACnC,yBAAyB,MAAM,QAAQ;IACrC,OAAO,MAAM;IACb,QAAQ,MAAM;GAChB,CAAC;EACH,CAAC;EACD,MAAM,iBAAiB,eAAe;GACpC,yBAAyB,MAAM,SAAS,EAAE,QAAQ,oBAAoB,GAAG;IACvE,SAAS;IACT,UAAU;GACZ,CAAC;EACH,CAAC;EACD,KAAK,OAAO,OAAO,KAAK;EACxB,KAAKA,SAAS;CAChB;CAEA,kBAAkB;EAChB,IAAI,CAAC,KAAKA,QACR;EAEF,KAAKA,OAAO,MAAM,KAAK,aAAa,KAAK,KAAK;EAC9C,KAAKA,OAAO,MAAM,KAAK,aAAa,KAAK,KAAK;EAC9C,KAAKA,OAAO,UAAU,qBAAqB,MAAM,WAAW,IAAI,SAAS;EACzE,MAAM,OAAO,KAAK,aAAa,MAAM,KAAK;EAC1C,MAAM,YAAY,sBAAsB,IAAI;EAC5C,KAAKA,OAAO,MAAM,YAAY,UAAU;EACxC,KAAKA,OAAO,MAAM,iBAAiB,UAAU;EAC7C,KAAK,gBAAgB,kBAAkB,SAAS,UAAU;EAC1D,KAAK,gBAAgB,mBAAmB,SAAS,WAAW;EAC5D,IAAI,SAAS,YAAY;GACvB,KAAKA,OAAO,MAAM,SAAS;GAC3B,KAAK,MAAM,SAAS;EACtB,OACK,IAAI,SAAS,aAAa;GAC7B,KAAKA,OAAO,MAAM,QAAQ;GAC1B,KAAK,MAAM,QAAQ;EACrB,OACK;GACH,KAAKA,OAAO,MAAM,QAAQ;GAC1B,KAAKA,OAAO,MAAM,SAAS;EAC7B;CACF;AACF"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { resolveImageModeStyle } from "./image.mjs";
|
|
2
|
+
import { createInputEventDetail } from "./input.mjs";
|
|
3
|
+
import { createScrollEventDetail } from "./scrollView.mjs";
|
|
4
|
+
import { createSwitchEventDetail } from "./switch.mjs";
|
|
5
|
+
import { createTextareaLineChangeDetail } from "./textarea.mjs";
|
|
6
|
+
import { createVideoProgressDetail, createVideoTimeUpdateDetail, resolveVideoObjectFit } from "./video/helpers.mjs";
|
|
7
|
+
//#region src/runtime/nativeComponents/index.d.ts
|
|
8
|
+
declare function ensureNativeComponentsDefined(): void;
|
|
9
|
+
//#endregion
|
|
10
|
+
export { createInputEventDetail, createScrollEventDetail, createSwitchEventDetail, createTextareaLineChangeDetail, createVideoProgressDetail, createVideoTimeUpdateDetail, ensureNativeComponentsDefined, resolveImageModeStyle, resolveVideoObjectFit };
|
|
11
|
+
//# sourceMappingURL=index.d.mts.map
|