@weapp-vite/web 1.4.20 → 1.5.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.
Files changed (95) hide show
  1. package/README.md +1 -1
  2. package/dist/compiler/wxml/attributes.mjs +5 -3
  3. package/dist/compiler/wxml/attributes.mjs.map +1 -1
  4. package/dist/compiler/wxml/compile.mjs +6 -1
  5. package/dist/compiler/wxml/compile.mjs.map +1 -1
  6. package/dist/compiler/wxml/types.d.mts +1 -2
  7. package/dist/css/wxss.d.mts +3 -4
  8. package/dist/index.d.mts +5 -3
  9. package/dist/index.mjs +4 -3
  10. package/dist/plugin/assets.d.mts +1 -2
  11. package/dist/plugin/constants.mjs +2 -1
  12. package/dist/plugin/constants.mjs.map +1 -1
  13. package/dist/plugin/index.d.mts +2 -2
  14. package/dist/plugin/index.mjs +7 -2
  15. package/dist/plugin/index.mjs.map +1 -1
  16. package/dist/plugin/register.mjs +20 -5
  17. package/dist/plugin/register.mjs.map +1 -1
  18. package/dist/plugin/types.d.mts +5 -6
  19. package/dist/runtime/button/index.d.mts +3 -4
  20. package/dist/runtime/component/constants.mjs +9 -1
  21. package/dist/runtime/component/constants.mjs.map +1 -1
  22. package/dist/runtime/component/element.mjs +24 -4
  23. package/dist/runtime/component/element.mjs.map +1 -1
  24. package/dist/runtime/component/events.mjs +6 -4
  25. package/dist/runtime/component/events.mjs.map +1 -1
  26. package/dist/runtime/component/index.d.mts +2 -2
  27. package/dist/runtime/component/types.d.mts +13 -14
  28. package/dist/runtime/eventBinding.d.mts +16 -0
  29. package/dist/runtime/eventBinding.mjs +51 -0
  30. package/dist/runtime/eventBinding.mjs.map +1 -0
  31. package/dist/runtime/execution.d.mts +3 -4
  32. package/dist/runtime/host/index.d.mts +9 -9
  33. package/dist/runtime/host/types.d.mts +4 -5
  34. package/dist/runtime/hostGlobals.d.mts +1 -2
  35. package/dist/runtime/index.d.mts +5 -3
  36. package/dist/runtime/index.mjs +4 -3
  37. package/dist/runtime/index.mjs.map +1 -1
  38. package/dist/runtime/inputHandlerResult.mjs +22 -0
  39. package/dist/runtime/inputHandlerResult.mjs.map +1 -0
  40. package/dist/runtime/legacyTemplate/dom.mjs +27 -9
  41. package/dist/runtime/legacyTemplate/dom.mjs.map +1 -1
  42. package/dist/runtime/legacyTemplate/index.d.mts +2 -3
  43. package/dist/runtime/legacyTemplate/types.d.mts +2 -3
  44. package/dist/runtime/nativeComponents/form.d.mts +1 -2
  45. package/dist/runtime/nativeComponents/image.d.mts +1 -2
  46. package/dist/runtime/nativeComponents/index.d.mts +2 -2
  47. package/dist/runtime/nativeComponents/input.d.mts +1 -2
  48. package/dist/runtime/nativeComponents/input.mjs +3 -1
  49. package/dist/runtime/nativeComponents/input.mjs.map +1 -1
  50. package/dist/runtime/nativeComponents/scrollView.d.mts +1 -2
  51. package/dist/runtime/nativeComponents/scrollView.mjs +21 -12
  52. package/dist/runtime/nativeComponents/scrollView.mjs.map +1 -1
  53. package/dist/runtime/nativeComponents/switch.d.mts +1 -2
  54. package/dist/runtime/nativeComponents/textarea.d.mts +1 -2
  55. package/dist/runtime/nativeComponents/video/helpers.d.mts +3 -4
  56. package/dist/runtime/navigationBar/index.d.mts +2 -2
  57. package/dist/runtime/pageLayout.d.mts +2 -3
  58. package/dist/runtime/polyfill/async.d.mts +1 -2
  59. package/dist/runtime/polyfill/deviceAuthSystemApi.d.mts +27 -28
  60. package/dist/runtime/polyfill/index.d.mts +17 -16
  61. package/dist/runtime/polyfill/index.mjs +6 -2
  62. package/dist/runtime/polyfill/index.mjs.map +1 -1
  63. package/dist/runtime/polyfill/routeRuntime/appLifecycle.mjs +53 -7
  64. package/dist/runtime/polyfill/routeRuntime/appLifecycle.mjs.map +1 -1
  65. package/dist/runtime/polyfill/routeRuntime/history.d.mts +8 -9
  66. package/dist/runtime/polyfill/routeRuntime/options.d.mts +14 -10
  67. package/dist/runtime/polyfill/routeRuntime/options.mjs.map +1 -1
  68. package/dist/runtime/polyfill/routeRuntime.d.mts +17 -13
  69. package/dist/runtime/polyfill/routeRuntime.mjs +13 -1
  70. package/dist/runtime/polyfill/routeRuntime.mjs.map +1 -1
  71. package/dist/runtime/polyfill/runtimeDataApi.d.mts +28 -29
  72. package/dist/runtime/polyfill/types/base.d.mts +2 -3
  73. package/dist/runtime/polyfill/types/common.d.mts +26 -27
  74. package/dist/runtime/polyfill/types/locationRuntime.d.mts +34 -35
  75. package/dist/runtime/polyfill/types/mediaAuth.d.mts +34 -35
  76. package/dist/runtime/polyfill/types/platformRuntime.d.mts +25 -26
  77. package/dist/runtime/polyfill/types/systemAuth.d.mts +22 -23
  78. package/dist/runtime/polyfill/types/tabBarRuntime.d.mts +5 -6
  79. package/dist/runtime/polyfill/uiMediaApi.d.mts +42 -43
  80. package/dist/runtime/polyfill.d.mts +3 -2
  81. package/dist/runtime/renderContext.d.mts +2 -3
  82. package/dist/runtime/renderContext.mjs +2 -1
  83. package/dist/runtime/renderContext.mjs.map +1 -1
  84. package/dist/runtime/rpx.d.mts +2 -3
  85. package/dist/runtime/seo/index.d.mts +11 -11
  86. package/dist/runtime/style.d.mts +2 -3
  87. package/dist/runtime/template.d.mts +3 -3
  88. package/dist/runtime/viewport/index.d.mts +4 -4
  89. package/dist/runtime/viewport/types.d.mts +2 -3
  90. package/dist/runtime/warning.d.mts +3 -4
  91. package/dist/runtime/wevu.d.mts +7 -4
  92. package/dist/runtime/wevu.mjs +13 -2
  93. package/dist/runtime/wevu.mjs.map +1 -1
  94. package/dist/shared/tabBar.d.mts +2 -3
  95. package/package.json +20 -12
@@ -2,10 +2,12 @@ import { RenderContext, createRenderContext } from "./renderContext.mjs";
2
2
  import { createTemplate, renderTemplate } from "./legacyTemplate/index.mjs";
3
3
  import { TemplateRenderer, TemplateScope } from "./template.mjs";
4
4
  import { defineComponent } from "./component/index.mjs";
5
+ import { AppHideCallback, AppHideOptions, AppLaunchOptions, AppShowCallback } from "./polyfill/routeRuntime/options.mjs";
5
6
  import { ResolvedWebRoutingConfig, WebRouteHistoryState, WebRouteTarget, WebRoutingConfig, WebRoutingMode, disposeWebRouting, getWebRoutingConfig, resolveWebRoutingConfig } from "./polyfill/routeRuntime/history.mjs";
6
7
  import { WebPageHead, WebResourceHint, WebResourceHintRelation, WebResourceHintsConfig, WebRuntimeSeoConfig as WebSeoConfig, configureWebSeo, resetWebDocumentHead, setupWebResourceHints, syncWebDocumentHead, updateWebDocumentTitle } from "./seo/index.mjs";
7
8
  import { WebTabBarConfig, WebTabBarItem } from "../shared/tabBar.mjs";
8
9
  import { ButtonFormConfig, ensureButtonDefined, setButtonFormConfig } from "./button/index.mjs";
10
+ import { bindRuntimeEvent } from "./eventBinding.mjs";
9
11
  import { getRuntimeExecutionMode, setRuntimeExecutionMode } from "./execution.mjs";
10
12
  import { WebRuntimeClipboard, WebRuntimeDialogs, WebRuntimeHost, WebRuntimeStorage } from "./host/types.mjs";
11
13
  import { getRuntimeClipboard, getRuntimeDialogs, getRuntimeFetch, getRuntimeStorage, getWebRuntimeHost, openRuntimeUrl, resetWebRuntimeHost, setWebRuntimeHost } from "./host/index.mjs";
@@ -22,7 +24,7 @@ import { setPageLayout } from "./pageLayout.mjs";
22
24
  import { authorize, checkSession, getAccountInfoSync, getAppAuthorizeSetting, getAppBaseInfo, getBatteryInfo, getBatteryInfoSync, getDeviceInfo, getFuzzyLocation, getLocation, getMenuButtonBoundingClientRect, getNetworkType, getSetting, getSystemInfo, getSystemInfoSync, getSystemSetting, getUserInfo, getUserProfile, getWindowInfo, login, offNetworkStatusChange, offWindowResize, onNetworkStatusChange, onWindowResize, openAppAuthorizeSetting, openSetting, vibrateShort } from "./polyfill/deviceAuthSystemApi.mjs";
23
25
  import { ResolvedWebViewportConfig, WebViewportConfig } from "./viewport/types.mjs";
24
26
  import { getWebViewportWidth, resolveWebViewportConfig, setupWebViewport } from "./viewport/index.mjs";
25
- import { getEnterOptionsSync, getLaunchOptionsSync, initializePageRoutes, navigateBack, navigateTo, reLaunch, redirectTo, registerApp, registerComponent, registerPage, switchTab } from "./polyfill/routeRuntime.mjs";
27
+ import { getEnterOptionsSync, getLaunchOptionsSync, initializePageRoutes, navigateBack, navigateTo, offAppHide, offAppShow, onAppHide, onAppShow, reLaunch, redirectTo, registerApp, registerComponent, registerPage, switchTab } from "./polyfill/routeRuntime.mjs";
26
28
  import { clearStorage, clearStorageSync, createCanvasContext, createSelectorQuery, createVKSession, createVideoContext, createWorker, downloadFile, exitMiniProgram, getFileSystemManager, getStorage, getStorageInfo, getStorageInfoSync, getStorageSync, hideKeyboard, loadSubPackage, navigateToMiniProgram, nextTick, pageScrollTo, preloadSubpackage, removeStorage, removeStorageSync, request, setStorage, setStorageSync, startPullDownRefresh, stopPullDownRefresh, uploadFile } from "./polyfill/runtimeDataApi.mjs";
27
29
  import { chooseAddress, chooseFile, chooseImage, chooseLocation, chooseMedia, chooseMessageFile, chooseVideo, compressImage, compressVideo, getClipboardData, getImageInfo, getVideoInfo, hideLoading, hideTabBar, hideTabBarRedDot, makePhoneCall, openCustomerServiceChat, openDocument, openLocation, openVideoEditor, previewImage, previewMedia, removeTabBarBadge, requestPayment, requestSubscribeMessage, saveFile, saveFileToDisk, saveImageToPhotosAlbum, saveVideoToPhotosAlbum, scanCode, setClipboardData, setTabBarBadge, setTabBarItem, setTabBarStyle, showActionSheet, showLoading, showModal, showShareMenu, showTabBar, showTabBarRedDot, showToast, updateShareMenu } from "./polyfill/uiMediaApi.mjs";
28
30
  import { canIUse, createInterstitialAd, createRewardedVideoAd, getExtConfig, getExtConfigSync, getLogManager, getUpdateManager, hideNavigationBarLoading, reportAnalytics, setBackgroundColor, setBackgroundTextStyle, setNavigationBarColor, setNavigationBarTitle, showNavigationBarLoading } from "./polyfill/index.mjs";
@@ -30,6 +32,6 @@ import "./polyfill.mjs";
30
32
  import { RpxConfig, setupRpx } from "./rpx.mjs";
31
33
  import { injectStyle, removeStyle } from "./style.mjs";
32
34
  import { RuntimeWarningLevel, RuntimeWarningOptions, setRuntimeWarningOptions } from "./warning.mjs";
33
- import { installWebModuleRegistration, registerWebWevuApp, registerWebWevuComponent } from "./wevu.mjs";
35
+ import { installWebModuleRegistration, registerWebWevuApp, registerWebWevuComponent, registerWebWevuComponentFactory } from "./wevu.mjs";
34
36
  export * from "wevu/internal-runtime";
35
- export { type ButtonFormConfig, type NavigationBarMetrics, type RenderContext, type ResolvedWebRoutingConfig, type ResolvedWebViewportConfig, type RpxConfig, type RuntimeWarningLevel, type RuntimeWarningOptions, type TemplateRenderer, type TemplateScope, type WebPageHead, type WebResourceHint, type WebResourceHintRelation, type WebResourceHintsConfig, type WebRouteHistoryState, type WebRouteTarget, type WebRoutingConfig, type WebRoutingMode, type WebRuntimeClipboard, type WebRuntimeDialogs, type WebRuntimeHost, type WebRuntimeStorage, type WebSeoConfig, type WebTabBarConfig, type WebTabBarItem, type WebViewportConfig, authorize, canIUse, checkSession, chooseAddress, chooseFile, chooseImage, chooseLocation, chooseMedia, chooseMessageFile, chooseVideo, clearStorage, clearStorageSync, compressImage, compressVideo, configureWebSeo, createCanvasContext, createInputEventDetail, createInterstitialAd, createRenderContext, createRewardedVideoAd, createScrollEventDetail, createSelectorQuery, createSwitchEventDetail, createTemplate, createTextareaLineChangeDetail, createVKSession, createVideoContext, createVideoProgressDetail, createVideoTimeUpdateDetail, createWorker, defineComponent, disposeWebRouting, downloadFile, ensureButtonDefined, ensureNativeComponentsDefined, exitMiniProgram, getAccountInfoSync, getAppAuthorizeSetting, getAppBaseInfo, getBatteryInfo, getBatteryInfoSync, getClipboardData, getDeviceInfo, getEnterOptionsSync, getExtConfig, getExtConfigSync, getFileSystemManager, getFuzzyLocation, getImageInfo, getLaunchOptionsSync, getLocation, getLogManager, getMenuButtonBoundingClientRect, getNetworkType, getRuntimeClipboard, getRuntimeDialogs, getRuntimeExecutionMode, getRuntimeFetch, getRuntimeStorage, getSetting, getStorage, getStorageInfo, getStorageInfoSync, getStorageSync, getSystemInfo, getSystemInfoSync, getSystemSetting, getUpdateManager, getUserInfo, getUserProfile, getVideoInfo, getWebRoutingConfig, getWebRuntimeHost, getWebViewportWidth, getWindowInfo, hideKeyboard, hideLoading, hideNavigationBarLoading, hideTabBar, hideTabBarRedDot, initializePageRoutes, injectStyle, installWebHostGlobals, installWebModuleRegistration, loadSubPackage, login, makePhoneCall, navigateBack, navigateTo, navigateToMiniProgram, nextTick, offNetworkStatusChange, offWindowResize, onNetworkStatusChange, onWindowResize, openAppAuthorizeSetting, openCustomerServiceChat, openDocument, openLocation, openRuntimeUrl, openSetting, openVideoEditor, pageScrollTo, preloadSubpackage, previewImage, previewMedia, reLaunch, redirectTo, registerApp, registerComponent, registerPage, registerWebWevuApp, registerWebWevuComponent, removeStorage, removeStorageSync, removeStyle, removeTabBarBadge, renderTemplate, reportAnalytics, request, requestPayment, requestSubscribeMessage, resetWebDocumentHead, resetWebRuntimeHost, resolveImageModeStyle, resolveVideoObjectFit, resolveWebRoutingConfig, resolveWebViewportConfig, saveFile, saveFileToDisk, saveImageToPhotosAlbum, saveVideoToPhotosAlbum, scanCode, setBackgroundColor, setBackgroundTextStyle, setButtonFormConfig, setClipboardData, setNavigationBarColor, setNavigationBarMetrics, setNavigationBarTitle, setPageLayout, setRuntimeExecutionMode, setRuntimeWarningOptions, setStorage, setStorageSync, setTabBarBadge, setTabBarItem, setTabBarStyle, setWebRuntimeHost, setupRpx, setupWebResourceHints, setupWebViewport, showActionSheet, showLoading, showModal, showNavigationBarLoading, showShareMenu, showTabBar, showTabBarRedDot, showToast, startPullDownRefresh, stopPullDownRefresh, switchTab, syncWebDocumentHead, updateShareMenu, updateWebDocumentTitle, uploadFile, vibrateShort };
37
+ export { type AppHideCallback, type AppHideOptions, type AppLaunchOptions, type AppShowCallback, type ButtonFormConfig, type NavigationBarMetrics, type RenderContext, type ResolvedWebRoutingConfig, type ResolvedWebViewportConfig, type RpxConfig, type RuntimeWarningLevel, type RuntimeWarningOptions, type TemplateRenderer, type TemplateScope, type WebPageHead, type WebResourceHint, type WebResourceHintRelation, type WebResourceHintsConfig, type WebRouteHistoryState, type WebRouteTarget, type WebRoutingConfig, type WebRoutingMode, type WebRuntimeClipboard, type WebRuntimeDialogs, type WebRuntimeHost, type WebRuntimeStorage, type WebSeoConfig, type WebTabBarConfig, type WebTabBarItem, type WebViewportConfig, authorize, bindRuntimeEvent, canIUse, checkSession, chooseAddress, chooseFile, chooseImage, chooseLocation, chooseMedia, chooseMessageFile, chooseVideo, clearStorage, clearStorageSync, compressImage, compressVideo, configureWebSeo, createCanvasContext, createInputEventDetail, createInterstitialAd, createRenderContext, createRewardedVideoAd, createScrollEventDetail, createSelectorQuery, createSwitchEventDetail, createTemplate, createTextareaLineChangeDetail, createVKSession, createVideoContext, createVideoProgressDetail, createVideoTimeUpdateDetail, createWorker, defineComponent, disposeWebRouting, downloadFile, ensureButtonDefined, ensureNativeComponentsDefined, exitMiniProgram, getAccountInfoSync, getAppAuthorizeSetting, getAppBaseInfo, getBatteryInfo, getBatteryInfoSync, getClipboardData, getDeviceInfo, getEnterOptionsSync, getExtConfig, getExtConfigSync, getFileSystemManager, getFuzzyLocation, getImageInfo, getLaunchOptionsSync, getLocation, getLogManager, getMenuButtonBoundingClientRect, getNetworkType, getRuntimeClipboard, getRuntimeDialogs, getRuntimeExecutionMode, getRuntimeFetch, getRuntimeStorage, getSetting, getStorage, getStorageInfo, getStorageInfoSync, getStorageSync, getSystemInfo, getSystemInfoSync, getSystemSetting, getUpdateManager, getUserInfo, getUserProfile, getVideoInfo, getWebRoutingConfig, getWebRuntimeHost, getWebViewportWidth, getWindowInfo, hideKeyboard, hideLoading, hideNavigationBarLoading, hideTabBar, hideTabBarRedDot, initializePageRoutes, injectStyle, installWebHostGlobals, installWebModuleRegistration, loadSubPackage, login, makePhoneCall, navigateBack, navigateTo, navigateToMiniProgram, nextTick, offAppHide, offAppShow, offNetworkStatusChange, offWindowResize, onAppHide, onAppShow, onNetworkStatusChange, onWindowResize, openAppAuthorizeSetting, openCustomerServiceChat, openDocument, openLocation, openRuntimeUrl, openSetting, openVideoEditor, pageScrollTo, preloadSubpackage, previewImage, previewMedia, reLaunch, redirectTo, registerApp, registerComponent, registerPage, registerWebWevuApp, registerWebWevuComponent, registerWebWevuComponentFactory, removeStorage, removeStorageSync, removeStyle, removeTabBarBadge, renderTemplate, reportAnalytics, request, requestPayment, requestSubscribeMessage, resetWebDocumentHead, resetWebRuntimeHost, resolveImageModeStyle, resolveVideoObjectFit, resolveWebRoutingConfig, resolveWebViewportConfig, saveFile, saveFileToDisk, saveImageToPhotosAlbum, saveVideoToPhotosAlbum, scanCode, setBackgroundColor, setBackgroundTextStyle, setButtonFormConfig, setClipboardData, setNavigationBarColor, setNavigationBarMetrics, setNavigationBarTitle, setPageLayout, setRuntimeExecutionMode, setRuntimeWarningOptions, setStorage, setStorageSync, setTabBarBadge, setTabBarItem, setTabBarStyle, setWebRuntimeHost, setupRpx, setupWebResourceHints, setupWebViewport, showActionSheet, showLoading, showModal, showNavigationBarLoading, showShareMenu, showTabBar, showTabBarRedDot, showToast, startPullDownRefresh, stopPullDownRefresh, switchTab, syncWebDocumentHead, updateShareMenu, updateWebDocumentTitle, uploadFile, vibrateShort };
@@ -6,6 +6,7 @@ import { ensureButtonDefined, setButtonFormConfig } from "./button/index.mjs";
6
6
  import { getRuntimeExecutionMode, setRuntimeExecutionMode } from "./execution.mjs";
7
7
  import { createRenderContext } from "./renderContext.mjs";
8
8
  import { defineComponent } from "./component/index.mjs";
9
+ import { bindRuntimeEvent } from "./eventBinding.mjs";
9
10
  import { getRuntimeClipboard, getRuntimeDialogs, getRuntimeFetch, getRuntimeStorage, getWebRuntimeHost, openRuntimeUrl, resetWebRuntimeHost, setWebRuntimeHost } from "./host/index.mjs";
10
11
  import { resolveImageModeStyle } from "./nativeComponents/image.mjs";
11
12
  import { createInputEventDetail } from "./nativeComponents/input.mjs";
@@ -14,7 +15,7 @@ import { getWebViewportWidth, resolveWebViewportConfig, setupWebViewport } from
14
15
  import { setupRpx } from "./rpx.mjs";
15
16
  import { configureWebSeo, resetWebDocumentHead, setupWebResourceHints, syncWebDocumentHead, updateWebDocumentTitle } from "./seo/index.mjs";
16
17
  import { disposeWebRouting, getWebRoutingConfig, resolveWebRoutingConfig } from "./polyfill/routeRuntime/history.mjs";
17
- import { getEnterOptionsSync, getLaunchOptionsSync, initializePageRoutes, navigateBack, navigateTo, reLaunch, redirectTo, registerApp, registerComponent, registerPage, switchTab } from "./polyfill/routeRuntime.mjs";
18
+ import { getEnterOptionsSync, getLaunchOptionsSync, initializePageRoutes, navigateBack, navigateTo, offAppHide, offAppShow, onAppHide, onAppShow, reLaunch, redirectTo, registerApp, registerComponent, registerPage, switchTab } from "./polyfill/routeRuntime.mjs";
18
19
  import { clearStorage, clearStorageSync, createCanvasContext, createSelectorQuery, createVKSession, createVideoContext, createWorker, downloadFile, exitMiniProgram, getFileSystemManager, getStorage, getStorageInfo, getStorageInfoSync, getStorageSync, hideKeyboard, loadSubPackage, navigateToMiniProgram, nextTick, pageScrollTo, preloadSubpackage, removeStorage, removeStorageSync, request, setStorage, setStorageSync, startPullDownRefresh, stopPullDownRefresh, uploadFile } from "./polyfill/runtimeDataApi.mjs";
19
20
  import { createScrollEventDetail } from "./nativeComponents/scrollView.mjs";
20
21
  import { createSwitchEventDetail } from "./nativeComponents/switch.mjs";
@@ -26,7 +27,7 @@ import { authorize, checkSession, getAccountInfoSync, getAppAuthorizeSetting, ge
26
27
  import { chooseAddress, chooseFile, chooseImage, chooseLocation, chooseMedia, chooseMessageFile, chooseVideo, compressImage, compressVideo, getClipboardData, getImageInfo, getVideoInfo, hideLoading, hideTabBar, hideTabBarRedDot, makePhoneCall, openCustomerServiceChat, openDocument, openLocation, openVideoEditor, previewImage, previewMedia, removeTabBarBadge, requestPayment, requestSubscribeMessage, saveFile, saveFileToDisk, saveImageToPhotosAlbum, saveVideoToPhotosAlbum, scanCode, setClipboardData, setTabBarBadge, setTabBarItem, setTabBarStyle, showActionSheet, showLoading, showModal, showShareMenu, showTabBar, showTabBarRedDot, showToast, updateShareMenu } from "./polyfill/uiMediaApi.mjs";
27
28
  import { canIUse, createInterstitialAd, createRewardedVideoAd, getExtConfig, getExtConfigSync, getLogManager, getUpdateManager, hideNavigationBarLoading, reportAnalytics, setBackgroundColor, setBackgroundTextStyle, setNavigationBarColor, setNavigationBarTitle, showNavigationBarLoading } from "./polyfill/index.mjs";
28
29
  import { createTemplate, renderTemplate } from "./legacyTemplate/index.mjs";
29
- import { installWebModuleRegistration, registerWebWevuApp, registerWebWevuComponent } from "./wevu.mjs";
30
+ import { installWebModuleRegistration, registerWebWevuApp, registerWebWevuComponent, registerWebWevuComponentFactory } from "./wevu.mjs";
30
31
 
31
32
  export * from "wevu/internal-runtime"
32
33
 
@@ -34,5 +35,5 @@ export * from "wevu/internal-runtime"
34
35
  installWebHostGlobals();
35
36
 
36
37
  //#endregion
37
- export { authorize, canIUse, checkSession, chooseAddress, chooseFile, chooseImage, chooseLocation, chooseMedia, chooseMessageFile, chooseVideo, clearStorage, clearStorageSync, compressImage, compressVideo, configureWebSeo, createCanvasContext, createInputEventDetail, createInterstitialAd, createRenderContext, createRewardedVideoAd, createScrollEventDetail, createSelectorQuery, createSwitchEventDetail, createTemplate, createTextareaLineChangeDetail, createVKSession, createVideoContext, createVideoProgressDetail, createVideoTimeUpdateDetail, createWorker, defineComponent, disposeWebRouting, downloadFile, ensureButtonDefined, ensureNativeComponentsDefined, exitMiniProgram, getAccountInfoSync, getAppAuthorizeSetting, getAppBaseInfo, getBatteryInfo, getBatteryInfoSync, getClipboardData, getDeviceInfo, getEnterOptionsSync, getExtConfig, getExtConfigSync, getFileSystemManager, getFuzzyLocation, getImageInfo, getLaunchOptionsSync, getLocation, getLogManager, getMenuButtonBoundingClientRect, getNetworkType, getRuntimeClipboard, getRuntimeDialogs, getRuntimeExecutionMode, getRuntimeFetch, getRuntimeStorage, getSetting, getStorage, getStorageInfo, getStorageInfoSync, getStorageSync, getSystemInfo, getSystemInfoSync, getSystemSetting, getUpdateManager, getUserInfo, getUserProfile, getVideoInfo, getWebRoutingConfig, getWebRuntimeHost, getWebViewportWidth, getWindowInfo, hideKeyboard, hideLoading, hideNavigationBarLoading, hideTabBar, hideTabBarRedDot, initializePageRoutes, injectStyle, installWebHostGlobals, installWebModuleRegistration, loadSubPackage, login, makePhoneCall, navigateBack, navigateTo, navigateToMiniProgram, nextTick, offNetworkStatusChange, offWindowResize, onNetworkStatusChange, onWindowResize, openAppAuthorizeSetting, openCustomerServiceChat, openDocument, openLocation, openRuntimeUrl, openSetting, openVideoEditor, pageScrollTo, preloadSubpackage, previewImage, previewMedia, reLaunch, redirectTo, registerApp, registerComponent, registerPage, registerWebWevuApp, registerWebWevuComponent, removeStorage, removeStorageSync, removeStyle, removeTabBarBadge, renderTemplate, reportAnalytics, request, requestPayment, requestSubscribeMessage, resetWebDocumentHead, resetWebRuntimeHost, resolveImageModeStyle, resolveVideoObjectFit, resolveWebRoutingConfig, resolveWebViewportConfig, saveFile, saveFileToDisk, saveImageToPhotosAlbum, saveVideoToPhotosAlbum, scanCode, setBackgroundColor, setBackgroundTextStyle, setButtonFormConfig, setClipboardData, setNavigationBarColor, setNavigationBarMetrics, setNavigationBarTitle, setPageLayout, setRuntimeExecutionMode, setRuntimeWarningOptions, setStorage, setStorageSync, setTabBarBadge, setTabBarItem, setTabBarStyle, setWebRuntimeHost, setupRpx, setupWebResourceHints, setupWebViewport, showActionSheet, showLoading, showModal, showNavigationBarLoading, showShareMenu, showTabBar, showTabBarRedDot, showToast, startPullDownRefresh, stopPullDownRefresh, switchTab, syncWebDocumentHead, updateShareMenu, updateWebDocumentTitle, uploadFile, vibrateShort };
38
+ export { authorize, bindRuntimeEvent, canIUse, checkSession, chooseAddress, chooseFile, chooseImage, chooseLocation, chooseMedia, chooseMessageFile, chooseVideo, clearStorage, clearStorageSync, compressImage, compressVideo, configureWebSeo, createCanvasContext, createInputEventDetail, createInterstitialAd, createRenderContext, createRewardedVideoAd, createScrollEventDetail, createSelectorQuery, createSwitchEventDetail, createTemplate, createTextareaLineChangeDetail, createVKSession, createVideoContext, createVideoProgressDetail, createVideoTimeUpdateDetail, createWorker, defineComponent, disposeWebRouting, downloadFile, ensureButtonDefined, ensureNativeComponentsDefined, exitMiniProgram, getAccountInfoSync, getAppAuthorizeSetting, getAppBaseInfo, getBatteryInfo, getBatteryInfoSync, getClipboardData, getDeviceInfo, getEnterOptionsSync, getExtConfig, getExtConfigSync, getFileSystemManager, getFuzzyLocation, getImageInfo, getLaunchOptionsSync, getLocation, getLogManager, getMenuButtonBoundingClientRect, getNetworkType, getRuntimeClipboard, getRuntimeDialogs, getRuntimeExecutionMode, getRuntimeFetch, getRuntimeStorage, getSetting, getStorage, getStorageInfo, getStorageInfoSync, getStorageSync, getSystemInfo, getSystemInfoSync, getSystemSetting, getUpdateManager, getUserInfo, getUserProfile, getVideoInfo, getWebRoutingConfig, getWebRuntimeHost, getWebViewportWidth, getWindowInfo, hideKeyboard, hideLoading, hideNavigationBarLoading, hideTabBar, hideTabBarRedDot, initializePageRoutes, injectStyle, installWebHostGlobals, installWebModuleRegistration, loadSubPackage, login, makePhoneCall, navigateBack, navigateTo, navigateToMiniProgram, nextTick, offAppHide, offAppShow, offNetworkStatusChange, offWindowResize, onAppHide, onAppShow, onNetworkStatusChange, onWindowResize, openAppAuthorizeSetting, openCustomerServiceChat, openDocument, openLocation, openRuntimeUrl, openSetting, openVideoEditor, pageScrollTo, preloadSubpackage, previewImage, previewMedia, reLaunch, redirectTo, registerApp, registerComponent, registerPage, registerWebWevuApp, registerWebWevuComponent, registerWebWevuComponentFactory, removeStorage, removeStorageSync, removeStyle, removeTabBarBadge, renderTemplate, reportAnalytics, request, requestPayment, requestSubscribeMessage, resetWebDocumentHead, resetWebRuntimeHost, resolveImageModeStyle, resolveVideoObjectFit, resolveWebRoutingConfig, resolveWebViewportConfig, saveFile, saveFileToDisk, saveImageToPhotosAlbum, saveVideoToPhotosAlbum, scanCode, setBackgroundColor, setBackgroundTextStyle, setButtonFormConfig, setClipboardData, setNavigationBarColor, setNavigationBarMetrics, setNavigationBarTitle, setPageLayout, setRuntimeExecutionMode, setRuntimeWarningOptions, setStorage, setStorageSync, setTabBarBadge, setTabBarItem, setTabBarStyle, setWebRuntimeHost, setupRpx, setupWebResourceHints, setupWebViewport, showActionSheet, showLoading, showModal, showNavigationBarLoading, showShareMenu, showTabBar, showTabBarRedDot, showToast, startPullDownRefresh, stopPullDownRefresh, switchTab, syncWebDocumentHead, updateShareMenu, updateWebDocumentTitle, uploadFile, vibrateShort };
38
39
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../src/runtime/index.ts"],"sourcesContent":["import { installWebHostGlobals } from './hostGlobals'\n\ninstallWebHostGlobals()\n\nexport type { WebTabBarConfig, WebTabBarItem } from './appShell/tabBar'\nexport { ensureButtonDefined, setButtonFormConfig } from './button'\nexport type { ButtonFormConfig } from './button'\nexport { defineComponent } from './component'\nexport { getRuntimeExecutionMode, setRuntimeExecutionMode } from './execution'\nexport {\n getRuntimeClipboard,\n getRuntimeDialogs,\n getRuntimeFetch,\n getRuntimeStorage,\n getWebRuntimeHost,\n openRuntimeUrl,\n resetWebRuntimeHost,\n setWebRuntimeHost,\n} from './host'\nexport type { WebRuntimeClipboard, WebRuntimeDialogs, WebRuntimeHost, WebRuntimeStorage } from './host'\nexport { installWebHostGlobals } from './hostGlobals'\nexport {\n createInputEventDetail,\n createScrollEventDetail,\n createSwitchEventDetail,\n createTextareaLineChangeDetail,\n createVideoProgressDetail,\n createVideoTimeUpdateDetail,\n ensureNativeComponentsDefined,\n resolveImageModeStyle,\n resolveVideoObjectFit,\n} from './nativeComponents'\nexport { setNavigationBarMetrics } from './navigationBar'\nexport type { NavigationBarMetrics } from './navigationBar'\nexport { setPageLayout } from './pageLayout'\nexport {\n authorize,\n canIUse,\n checkSession,\n chooseAddress,\n chooseFile,\n chooseImage,\n chooseLocation,\n chooseMedia,\n chooseMessageFile,\n chooseVideo,\n clearStorage,\n clearStorageSync,\n compressImage,\n compressVideo,\n createCanvasContext,\n createInterstitialAd,\n createRewardedVideoAd,\n createSelectorQuery,\n createVideoContext,\n createVKSession,\n createWorker,\n downloadFile,\n exitMiniProgram,\n getAccountInfoSync,\n getAppAuthorizeSetting,\n getAppBaseInfo,\n getBatteryInfo,\n getBatteryInfoSync,\n getClipboardData,\n getDeviceInfo,\n getEnterOptionsSync,\n getExtConfig,\n getExtConfigSync,\n getFileSystemManager,\n getFuzzyLocation,\n getImageInfo,\n getLaunchOptionsSync,\n getLocation,\n getLogManager,\n getMenuButtonBoundingClientRect,\n getNetworkType,\n getSetting,\n getStorage,\n getStorageInfo,\n getStorageInfoSync,\n getStorageSync,\n getSystemInfo,\n getSystemInfoSync,\n getSystemSetting,\n getUpdateManager,\n getUserInfo,\n getUserProfile,\n getVideoInfo,\n getWindowInfo,\n hideKeyboard,\n hideLoading,\n hideNavigationBarLoading,\n hideTabBar,\n hideTabBarRedDot,\n initializePageRoutes,\n loadSubPackage,\n login,\n makePhoneCall,\n navigateBack,\n navigateTo,\n navigateToMiniProgram,\n nextTick,\n offNetworkStatusChange,\n offWindowResize,\n onNetworkStatusChange,\n onWindowResize,\n openAppAuthorizeSetting,\n openCustomerServiceChat,\n openDocument,\n openLocation,\n openSetting,\n openVideoEditor,\n pageScrollTo,\n preloadSubpackage,\n previewImage,\n previewMedia,\n redirectTo,\n registerApp,\n registerComponent,\n registerPage,\n reLaunch,\n removeStorage,\n removeStorageSync,\n removeTabBarBadge,\n reportAnalytics,\n request,\n requestPayment,\n requestSubscribeMessage,\n saveFile,\n saveFileToDisk,\n saveImageToPhotosAlbum,\n saveVideoToPhotosAlbum,\n scanCode,\n setBackgroundColor,\n setBackgroundTextStyle,\n setClipboardData,\n setNavigationBarColor,\n setNavigationBarTitle,\n setStorage,\n setStorageSync,\n setTabBarBadge,\n setTabBarItem,\n setTabBarStyle,\n showActionSheet,\n showLoading,\n showModal,\n showNavigationBarLoading,\n showShareMenu,\n showTabBar,\n showTabBarRedDot,\n showToast,\n startPullDownRefresh,\n stopPullDownRefresh,\n switchTab,\n updateShareMenu,\n uploadFile,\n vibrateShort,\n} from './polyfill'\nexport {\n disposeWebRouting,\n getWebRoutingConfig,\n resolveWebRoutingConfig,\n} from './polyfill/routeRuntime/history'\nexport type {\n ResolvedWebRoutingConfig,\n WebRouteHistoryState,\n WebRouteTarget,\n WebRoutingConfig,\n WebRoutingMode,\n} from './polyfill/routeRuntime/history'\nexport { createRenderContext } from './renderContext'\nexport type { RenderContext } from './renderContext'\nexport { setupRpx } from './rpx'\nexport type { RpxConfig } from './rpx'\nexport {\n configureWebSeo,\n resetWebDocumentHead,\n setupWebResourceHints,\n syncWebDocumentHead,\n updateWebDocumentTitle,\n} from './seo'\nexport type { WebPageHead, WebResourceHint, WebResourceHintRelation, WebResourceHintsConfig, WebSeoConfig } from './seo'\nexport { injectStyle, removeStyle } from './style'\nexport { createTemplate, renderTemplate } from './template'\nexport type { TemplateRenderer, TemplateScope } from './template'\nexport { getWebViewportWidth, resolveWebViewportConfig, setupWebViewport } from './viewport'\nexport type { ResolvedWebViewportConfig, WebViewportConfig } from './viewport'\nexport { setRuntimeWarningOptions } from './warning'\nexport type { RuntimeWarningLevel, RuntimeWarningOptions } from './warning'\nexport { installWebModuleRegistration, registerWebWevuApp, registerWebWevuComponent } from './wevu'\nexport * from 'wevu/internal-runtime'\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,sBAAsB"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../src/runtime/index.ts"],"sourcesContent":["import { installWebHostGlobals } from './hostGlobals'\n\ninstallWebHostGlobals()\n\nexport type { WebTabBarConfig, WebTabBarItem } from './appShell/tabBar'\nexport { ensureButtonDefined, setButtonFormConfig } from './button'\nexport type { ButtonFormConfig } from './button'\nexport { defineComponent } from './component'\nexport { bindRuntimeEvent } from './eventBinding'\nexport { getRuntimeExecutionMode, setRuntimeExecutionMode } from './execution'\nexport {\n getRuntimeClipboard,\n getRuntimeDialogs,\n getRuntimeFetch,\n getRuntimeStorage,\n getWebRuntimeHost,\n openRuntimeUrl,\n resetWebRuntimeHost,\n setWebRuntimeHost,\n} from './host'\nexport type { WebRuntimeClipboard, WebRuntimeDialogs, WebRuntimeHost, WebRuntimeStorage } from './host'\nexport { installWebHostGlobals } from './hostGlobals'\nexport {\n createInputEventDetail,\n createScrollEventDetail,\n createSwitchEventDetail,\n createTextareaLineChangeDetail,\n createVideoProgressDetail,\n createVideoTimeUpdateDetail,\n ensureNativeComponentsDefined,\n resolveImageModeStyle,\n resolveVideoObjectFit,\n} from './nativeComponents'\nexport { setNavigationBarMetrics } from './navigationBar'\nexport type { NavigationBarMetrics } from './navigationBar'\nexport { setPageLayout } from './pageLayout'\nexport {\n authorize,\n canIUse,\n checkSession,\n chooseAddress,\n chooseFile,\n chooseImage,\n chooseLocation,\n chooseMedia,\n chooseMessageFile,\n chooseVideo,\n clearStorage,\n clearStorageSync,\n compressImage,\n compressVideo,\n createCanvasContext,\n createInterstitialAd,\n createRewardedVideoAd,\n createSelectorQuery,\n createVideoContext,\n createVKSession,\n createWorker,\n downloadFile,\n exitMiniProgram,\n getAccountInfoSync,\n getAppAuthorizeSetting,\n getAppBaseInfo,\n getBatteryInfo,\n getBatteryInfoSync,\n getClipboardData,\n getDeviceInfo,\n getEnterOptionsSync,\n getExtConfig,\n getExtConfigSync,\n getFileSystemManager,\n getFuzzyLocation,\n getImageInfo,\n getLaunchOptionsSync,\n getLocation,\n getLogManager,\n getMenuButtonBoundingClientRect,\n getNetworkType,\n getSetting,\n getStorage,\n getStorageInfo,\n getStorageInfoSync,\n getStorageSync,\n getSystemInfo,\n getSystemInfoSync,\n getSystemSetting,\n getUpdateManager,\n getUserInfo,\n getUserProfile,\n getVideoInfo,\n getWindowInfo,\n hideKeyboard,\n hideLoading,\n hideNavigationBarLoading,\n hideTabBar,\n hideTabBarRedDot,\n initializePageRoutes,\n loadSubPackage,\n login,\n makePhoneCall,\n navigateBack,\n navigateTo,\n navigateToMiniProgram,\n nextTick,\n offAppHide,\n offAppShow,\n offNetworkStatusChange,\n offWindowResize,\n onAppHide,\n onAppShow,\n onNetworkStatusChange,\n onWindowResize,\n openAppAuthorizeSetting,\n openCustomerServiceChat,\n openDocument,\n openLocation,\n openSetting,\n openVideoEditor,\n pageScrollTo,\n preloadSubpackage,\n previewImage,\n previewMedia,\n redirectTo,\n registerApp,\n registerComponent,\n registerPage,\n reLaunch,\n removeStorage,\n removeStorageSync,\n removeTabBarBadge,\n reportAnalytics,\n request,\n requestPayment,\n requestSubscribeMessage,\n saveFile,\n saveFileToDisk,\n saveImageToPhotosAlbum,\n saveVideoToPhotosAlbum,\n scanCode,\n setBackgroundColor,\n setBackgroundTextStyle,\n setClipboardData,\n setNavigationBarColor,\n setNavigationBarTitle,\n setStorage,\n setStorageSync,\n setTabBarBadge,\n setTabBarItem,\n setTabBarStyle,\n showActionSheet,\n showLoading,\n showModal,\n showNavigationBarLoading,\n showShareMenu,\n showTabBar,\n showTabBarRedDot,\n showToast,\n startPullDownRefresh,\n stopPullDownRefresh,\n switchTab,\n updateShareMenu,\n uploadFile,\n vibrateShort,\n} from './polyfill'\nexport type { AppHideCallback, AppHideOptions, AppLaunchOptions, AppShowCallback } from './polyfill'\nexport {\n disposeWebRouting,\n getWebRoutingConfig,\n resolveWebRoutingConfig,\n} from './polyfill/routeRuntime/history'\nexport type {\n ResolvedWebRoutingConfig,\n WebRouteHistoryState,\n WebRouteTarget,\n WebRoutingConfig,\n WebRoutingMode,\n} from './polyfill/routeRuntime/history'\nexport { createRenderContext } from './renderContext'\nexport type { RenderContext } from './renderContext'\nexport { setupRpx } from './rpx'\nexport type { RpxConfig } from './rpx'\nexport {\n configureWebSeo,\n resetWebDocumentHead,\n setupWebResourceHints,\n syncWebDocumentHead,\n updateWebDocumentTitle,\n} from './seo'\nexport type { WebPageHead, WebResourceHint, WebResourceHintRelation, WebResourceHintsConfig, WebSeoConfig } from './seo'\nexport { injectStyle, removeStyle } from './style'\nexport { createTemplate, renderTemplate } from './template'\nexport type { TemplateRenderer, TemplateScope } from './template'\nexport { getWebViewportWidth, resolveWebViewportConfig, setupWebViewport } from './viewport'\nexport type { ResolvedWebViewportConfig, WebViewportConfig } from './viewport'\nexport { setRuntimeWarningOptions } from './warning'\nexport type { RuntimeWarningLevel, RuntimeWarningOptions } from './warning'\nexport {\n installWebModuleRegistration,\n registerWebWevuApp,\n registerWebWevuComponent,\n registerWebWevuComponentFactory,\n} from './wevu'\nexport * from 'wevu/internal-runtime'\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,sBAAsB"}
@@ -0,0 +1,22 @@
1
+ //#region src/runtime/inputHandlerResult.ts
2
+ const nativeInputEventStates = /* @__PURE__ */ new WeakMap();
3
+ function dispatchNativeInputEvent(target, detail) {
4
+ const event = new CustomEvent("input", {
5
+ bubbles: true,
6
+ composed: true,
7
+ detail
8
+ });
9
+ const state = { target };
10
+ nativeInputEventStates.set(event, state);
11
+ target.dispatchEvent(event);
12
+ return state.value;
13
+ }
14
+ function invokeMiniProgramEventHandler(handler, instance, syntheticEvent, nativeEvent) {
15
+ const result = handler.call(instance, syntheticEvent);
16
+ const state = nativeEvent.type === "input" ? nativeInputEventStates.get(nativeEvent) : void 0;
17
+ if (state?.target === nativeEvent.currentTarget && typeof result === "string") state.value = result;
18
+ }
19
+
20
+ //#endregion
21
+ export { dispatchNativeInputEvent, invokeMiniProgramEventHandler };
22
+ //# sourceMappingURL=inputHandlerResult.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inputHandlerResult.mjs","names":[],"sources":["../../src/runtime/inputHandlerResult.ts"],"sourcesContent":["interface NativeInputEventState {\n target: Element\n value?: string\n}\n\nconst nativeInputEventStates = new WeakMap<Event, NativeInputEventState>()\n\nexport function dispatchNativeInputEvent<T>(target: Element, detail: T) {\n const event = new CustomEvent<T>('input', {\n bubbles: true,\n composed: true,\n detail,\n })\n const state: NativeInputEventState = { target }\n nativeInputEventStates.set(event, state)\n target.dispatchEvent(event)\n return state.value\n}\n\nexport function invokeMiniProgramEventHandler(\n handler: (event: unknown) => unknown,\n instance: unknown,\n syntheticEvent: unknown,\n nativeEvent: Event,\n) {\n const result = handler.call(instance, syntheticEvent)\n const state = nativeEvent.type === 'input'\n ? nativeInputEventStates.get(nativeEvent)\n : undefined\n if (state?.target === nativeEvent.currentTarget && typeof result === 'string') {\n state.value = result\n }\n}\n"],"mappings":";AAKA,MAAM,yCAAyB,IAAI,QAAsC;AAEzE,SAAgB,yBAA4B,QAAiB,QAAW;CACtE,MAAM,QAAQ,IAAI,YAAe,SAAS;EACxC,SAAS;EACT,UAAU;EACV;CACF,CAAC;CACD,MAAM,QAA+B,EAAE,OAAO;CAC9C,uBAAuB,IAAI,OAAO,KAAK;CACvC,OAAO,cAAc,KAAK;CAC1B,OAAO,MAAM;AACf;AAEA,SAAgB,8BACd,SACA,UACA,gBACA,aACA;CACA,MAAM,SAAS,QAAQ,KAAK,UAAU,cAAc;CACpD,MAAM,QAAQ,YAAY,SAAS,UAC/B,uBAAuB,IAAI,WAAW,IACtC;CACJ,IAAI,OAAO,WAAW,YAAY,iBAAiB,OAAO,WAAW,UACnE,MAAM,QAAQ;AAElB"}
@@ -1,5 +1,5 @@
1
1
  import { CONTROL_ATTRS, hasControlAttribute, normalizeAttributeName, resolveControlAttributeValue } from "../../shared/wxml.mjs";
2
- import { MINI_PROGRAM_EVENT_ATTRIBUTE_PREFIX, MINI_PROGRAM_EVENT_FLAG_ATTRIBUTE_PREFIX } from "../component/constants.mjs";
2
+ import { MINI_PROGRAM_EVENT_ATTRIBUTE_PREFIX, MINI_PROGRAM_EVENT_FLAG_ATTRIBUTE_PREFIX, encodeEventAttributeName } from "../component/constants.mjs";
3
3
  import { escapeAttribute, resolveAttributeValue } from "./expression.mjs";
4
4
 
5
5
  //#region src/runtime/legacyTemplate/dom.ts
@@ -19,6 +19,24 @@ const EVENT_PREFIX_FLAGS = {
19
19
  catch: true
20
20
  }
21
21
  };
22
+ function parseEventAttribute(name) {
23
+ const separatorIndex = name.indexOf(":");
24
+ if (separatorIndex >= 0) {
25
+ const prefix = name.slice(0, separatorIndex);
26
+ const rawEvent = name.slice(separatorIndex + 1);
27
+ if (rawEvent && prefix in EVENT_PREFIX_FLAGS) return {
28
+ prefix,
29
+ rawEvent
30
+ };
31
+ return;
32
+ }
33
+ const match = EVENT_PREFIX_RE.exec(name);
34
+ if (!match) return;
35
+ return {
36
+ prefix: match[1],
37
+ rawEvent: match[2]
38
+ };
39
+ }
22
40
  function extractFor(attribs) {
23
41
  const expr = resolveControlAttributeValue(attribs, "for");
24
42
  const restAttribs = {};
@@ -40,17 +58,17 @@ function buildAttributeString(attribs, scope) {
40
58
  let result = "";
41
59
  for (const [name, rawValue] of Object.entries(attribs)) {
42
60
  if (CONTROL_ATTRS.has(name)) continue;
43
- const eventMatch = EVENT_PREFIX_RE.exec(name);
44
- if (eventMatch) {
45
- const [, prefix, rawEvent] = eventMatch;
46
- const event = rawEvent.toLowerCase();
61
+ const eventInfo = parseEventAttribute(name);
62
+ if (eventInfo) {
63
+ const normalizedEvent = eventInfo.rawEvent.toLowerCase();
64
+ const runtimeEvent = EVENT_KIND_ALIAS[normalizedEvent] ?? eventInfo.rawEvent;
65
+ const encodedEvent = encodeEventAttributeName(runtimeEvent);
47
66
  const handlerName = resolveAttributeValue(rawValue, scope).trim();
48
67
  if (!handlerName) continue;
49
- const runtimeEvent = EVENT_KIND_ALIAS[event] || event;
50
- const flags = EVENT_PREFIX_FLAGS[prefix];
51
- result += ` ${MINI_PROGRAM_EVENT_ATTRIBUTE_PREFIX}${runtimeEvent}="${escapeAttribute(handlerName)}"`;
68
+ const flags = EVENT_PREFIX_FLAGS[eventInfo.prefix];
69
+ result += ` ${MINI_PROGRAM_EVENT_ATTRIBUTE_PREFIX}${encodedEvent}="${escapeAttribute(handlerName)}"`;
52
70
  const flagTokens = [flags.capture ? "capture" : "", flags.catch ? "catch" : ""].filter(Boolean);
53
- if (flagTokens.length) result += ` ${MINI_PROGRAM_EVENT_FLAG_ATTRIBUTE_PREFIX}${runtimeEvent}="${flagTokens.join(",")}"`;
71
+ if (flagTokens.length) result += ` ${MINI_PROGRAM_EVENT_FLAG_ATTRIBUTE_PREFIX}${encodedEvent}="${flagTokens.join(",")}"`;
54
72
  continue;
55
73
  }
56
74
  const value = resolveAttributeValue(rawValue, scope);
@@ -1 +1 @@
1
- {"version":3,"file":"dom.mjs","names":[],"sources":["../../../src/runtime/legacyTemplate/dom.ts"],"sourcesContent":["import type { Element, Node } from 'domhandler'\nimport type { ExtractForResult, LegacyTemplateScope } from './types'\nimport {\n CONTROL_ATTRS,\n hasControlAttribute,\n normalizeAttributeName,\n resolveControlAttributeValue,\n} from '../../shared/wxml'\nimport {\n MINI_PROGRAM_EVENT_ATTRIBUTE_PREFIX,\n MINI_PROGRAM_EVENT_FLAG_ATTRIBUTE_PREFIX,\n} from '../component/constants'\nimport { escapeAttribute, resolveAttributeValue } from './expression'\n\nconst EVENT_PREFIX_RE = /^(bind|catch|mut-bind|capture-bind|capture-catch)([\\w-]+)$/\nconst EVENT_KIND_ALIAS: Record<string, string> = {\n tap: 'click',\n longtap: 'contextmenu',\n longpress: 'contextmenu',\n}\n\nconst EVENT_PREFIX_FLAGS: Record<string, { catch?: boolean, capture?: boolean }> = {\n 'bind': {},\n 'catch': { catch: true },\n 'mut-bind': {},\n 'capture-bind': { capture: true },\n 'capture-catch': { capture: true, catch: true },\n}\n\nexport function extractFor(attribs: Record<string, string>): ExtractForResult {\n const expr = resolveControlAttributeValue(attribs, 'for')\n const restAttribs: Record<string, string> = {}\n const itemName = resolveControlAttributeValue(attribs, 'for-item')?.trim() || 'item'\n let indexName = resolveControlAttributeValue(attribs, 'for-index')?.trim() || 'index'\n\n for (const [key, val] of Object.entries(attribs)) {\n if (CONTROL_ATTRS.has(key)) {\n continue\n }\n restAttribs[key] = val\n }\n\n if (itemName === indexName) {\n indexName = `${indexName}Index`\n }\n\n return {\n expr,\n itemName,\n indexName,\n restAttribs,\n }\n}\n\nexport function buildAttributeString(\n attribs: Record<string, string>,\n scope: LegacyTemplateScope,\n) {\n let result = ''\n for (const [name, rawValue] of Object.entries(attribs)) {\n if (CONTROL_ATTRS.has(name)) {\n continue\n }\n\n const eventMatch = EVENT_PREFIX_RE.exec(name)\n if (eventMatch) {\n const [, prefix, rawEvent] = eventMatch\n const event = rawEvent.toLowerCase()\n const handlerName = resolveAttributeValue(rawValue, scope).trim()\n if (!handlerName) {\n continue\n }\n const runtimeEvent = EVENT_KIND_ALIAS[event] || event\n const flags = EVENT_PREFIX_FLAGS[prefix]!\n result += ` ${MINI_PROGRAM_EVENT_ATTRIBUTE_PREFIX}${runtimeEvent}=\"${escapeAttribute(handlerName)}\"`\n const flagTokens = [\n flags.capture ? 'capture' : '',\n flags.catch ? 'catch' : '',\n ].filter(Boolean)\n if (flagTokens.length) {\n result += ` ${MINI_PROGRAM_EVENT_FLAG_ATTRIBUTE_PREFIX}${runtimeEvent}=\"${flagTokens.join(',')}\"`\n }\n continue\n }\n\n const value = resolveAttributeValue(rawValue, scope)\n if (value === '') {\n continue\n }\n const normalizedName = normalizeAttributeName(name)\n result += ` ${normalizedName}=\"${escapeAttribute(value)}\"`\n }\n return result\n}\n\nexport function stripControlAttributes(attribs: Record<string, string>) {\n const result: Record<string, string> = {}\n for (const [name, value] of Object.entries(attribs)) {\n if (!CONTROL_ATTRS.has(name)) {\n result[name] = value\n }\n }\n return result\n}\n\nexport function isConditionalElement(node: Node): node is Element {\n if (node.type !== 'tag') {\n return false\n }\n const attribs = (node as Element).attribs\n return hasControlAttribute(attribs, 'if')\n || hasControlAttribute(attribs, 'elif')\n || hasControlAttribute(attribs, 'else')\n}\n"],"mappings":";;;;;AAcA,MAAM,kBAAkB;AACxB,MAAM,mBAA2C;CAC/C,KAAK;CACL,SAAS;CACT,WAAW;AACb;AAEA,MAAM,qBAA6E;CACjF,QAAQ,CAAC;CACT,SAAS,EAAE,OAAO,KAAK;CACvB,YAAY,CAAC;CACb,gBAAgB,EAAE,SAAS,KAAK;CAChC,iBAAiB;EAAE,SAAS;EAAM,OAAO;CAAK;AAChD;AAEA,SAAgB,WAAW,SAAmD;CAC5E,MAAM,OAAO,6BAA6B,SAAS,KAAK;CACxD,MAAM,cAAsC,CAAC;CAC7C,MAAM,WAAW,6BAA6B,SAAS,UAAU,CAAC,EAAE,KAAK,KAAK;CAC9E,IAAI,YAAY,6BAA6B,SAAS,WAAW,CAAC,EAAE,KAAK,KAAK;CAE9E,KAAK,MAAM,CAAC,KAAK,QAAQ,OAAO,QAAQ,OAAO,GAAG;EAChD,IAAI,cAAc,IAAI,GAAG,GACvB;EAEF,YAAY,OAAO;CACrB;CAEA,IAAI,aAAa,WACf,YAAY,GAAG,UAAU;CAG3B,OAAO;EACL;EACA;EACA;EACA;CACF;AACF;AAEA,SAAgB,qBACd,SACA,OACA;CACA,IAAI,SAAS;CACb,KAAK,MAAM,CAAC,MAAM,aAAa,OAAO,QAAQ,OAAO,GAAG;EACtD,IAAI,cAAc,IAAI,IAAI,GACxB;EAGF,MAAM,aAAa,gBAAgB,KAAK,IAAI;EAC5C,IAAI,YAAY;GACd,MAAM,GAAG,QAAQ,YAAY;GAC7B,MAAM,QAAQ,SAAS,YAAY;GACnC,MAAM,cAAc,sBAAsB,UAAU,KAAK,CAAC,CAAC,KAAK;GAChE,IAAI,CAAC,aACH;GAEF,MAAM,eAAe,iBAAiB,UAAU;GAChD,MAAM,QAAQ,mBAAmB;GACjC,UAAU,IAAI,sCAAsC,aAAa,IAAI,gBAAgB,WAAW,EAAE;GAClG,MAAM,aAAa,CACjB,MAAM,UAAU,YAAY,IAC5B,MAAM,QAAQ,UAAU,EAC1B,CAAC,CAAC,OAAO,OAAO;GAChB,IAAI,WAAW,QACb,UAAU,IAAI,2CAA2C,aAAa,IAAI,WAAW,KAAK,GAAG,EAAE;GAEjG;EACF;EAEA,MAAM,QAAQ,sBAAsB,UAAU,KAAK;EACnD,IAAI,UAAU,IACZ;EAEF,MAAM,iBAAiB,uBAAuB,IAAI;EAClD,UAAU,IAAI,eAAe,IAAI,gBAAgB,KAAK,EAAE;CAC1D;CACA,OAAO;AACT;AAEA,SAAgB,uBAAuB,SAAiC;CACtE,MAAM,SAAiC,CAAC;CACxC,KAAK,MAAM,CAAC,MAAM,UAAU,OAAO,QAAQ,OAAO,GAChD,IAAI,CAAC,cAAc,IAAI,IAAI,GACzB,OAAO,QAAQ;CAGnB,OAAO;AACT;AAEA,SAAgB,qBAAqB,MAA6B;CAChE,IAAI,KAAK,SAAS,OAChB,OAAO;CAET,MAAM,UAAW,KAAiB;CAClC,OAAO,oBAAoB,SAAS,IAAI,KACnC,oBAAoB,SAAS,MAAM,KACnC,oBAAoB,SAAS,MAAM;AAC1C"}
1
+ {"version":3,"file":"dom.mjs","names":[],"sources":["../../../src/runtime/legacyTemplate/dom.ts"],"sourcesContent":["import type { Element, Node } from 'domhandler'\nimport type { ExtractForResult, LegacyTemplateScope } from './types'\nimport {\n CONTROL_ATTRS,\n hasControlAttribute,\n normalizeAttributeName,\n resolveControlAttributeValue,\n} from '../../shared/wxml'\nimport {\n encodeEventAttributeName,\n MINI_PROGRAM_EVENT_ATTRIBUTE_PREFIX,\n MINI_PROGRAM_EVENT_FLAG_ATTRIBUTE_PREFIX,\n} from '../component/constants'\nimport { escapeAttribute, resolveAttributeValue } from './expression'\n\nconst EVENT_PREFIX_RE = /^(bind|catch|mut-bind|capture-bind|capture-catch)([\\w-]+)$/\nconst EVENT_KIND_ALIAS: Record<string, string> = {\n tap: 'click',\n longtap: 'contextmenu',\n longpress: 'contextmenu',\n}\n\nconst EVENT_PREFIX_FLAGS: Record<string, { catch?: boolean, capture?: boolean }> = {\n 'bind': {},\n 'catch': { catch: true },\n 'mut-bind': {},\n 'capture-bind': { capture: true },\n 'capture-catch': { capture: true, catch: true },\n}\n\nfunction parseEventAttribute(name: string) {\n const separatorIndex = name.indexOf(':')\n if (separatorIndex >= 0) {\n const prefix = name.slice(0, separatorIndex)\n const rawEvent = name.slice(separatorIndex + 1)\n if (rawEvent && prefix in EVENT_PREFIX_FLAGS) {\n return { prefix, rawEvent }\n }\n return undefined\n }\n const match = EVENT_PREFIX_RE.exec(name)\n if (!match) {\n return undefined\n }\n return { prefix: match[1]!, rawEvent: match[2]! }\n}\n\nexport function extractFor(attribs: Record<string, string>): ExtractForResult {\n const expr = resolveControlAttributeValue(attribs, 'for')\n const restAttribs: Record<string, string> = {}\n const itemName = resolveControlAttributeValue(attribs, 'for-item')?.trim() || 'item'\n let indexName = resolveControlAttributeValue(attribs, 'for-index')?.trim() || 'index'\n\n for (const [key, val] of Object.entries(attribs)) {\n if (CONTROL_ATTRS.has(key)) {\n continue\n }\n restAttribs[key] = val\n }\n\n if (itemName === indexName) {\n indexName = `${indexName}Index`\n }\n\n return {\n expr,\n itemName,\n indexName,\n restAttribs,\n }\n}\n\nexport function buildAttributeString(\n attribs: Record<string, string>,\n scope: LegacyTemplateScope,\n) {\n let result = ''\n for (const [name, rawValue] of Object.entries(attribs)) {\n if (CONTROL_ATTRS.has(name)) {\n continue\n }\n\n const eventInfo = parseEventAttribute(name)\n if (eventInfo) {\n const normalizedEvent = eventInfo.rawEvent.toLowerCase()\n const aliasedEvent = EVENT_KIND_ALIAS[normalizedEvent]\n const runtimeEvent = aliasedEvent ?? eventInfo.rawEvent\n const encodedEvent = encodeEventAttributeName(runtimeEvent)\n const handlerName = resolveAttributeValue(rawValue, scope).trim()\n if (!handlerName) {\n continue\n }\n const flags = EVENT_PREFIX_FLAGS[eventInfo.prefix]!\n result += ` ${MINI_PROGRAM_EVENT_ATTRIBUTE_PREFIX}${encodedEvent}=\"${escapeAttribute(handlerName)}\"`\n const flagTokens = [\n flags.capture ? 'capture' : '',\n flags.catch ? 'catch' : '',\n ].filter(Boolean)\n if (flagTokens.length) {\n result += ` ${MINI_PROGRAM_EVENT_FLAG_ATTRIBUTE_PREFIX}${encodedEvent}=\"${flagTokens.join(',')}\"`\n }\n continue\n }\n\n const value = resolveAttributeValue(rawValue, scope)\n if (value === '') {\n continue\n }\n const normalizedName = normalizeAttributeName(name)\n result += ` ${normalizedName}=\"${escapeAttribute(value)}\"`\n }\n return result\n}\n\nexport function stripControlAttributes(attribs: Record<string, string>) {\n const result: Record<string, string> = {}\n for (const [name, value] of Object.entries(attribs)) {\n if (!CONTROL_ATTRS.has(name)) {\n result[name] = value\n }\n }\n return result\n}\n\nexport function isConditionalElement(node: Node): node is Element {\n if (node.type !== 'tag') {\n return false\n }\n const attribs = (node as Element).attribs\n return hasControlAttribute(attribs, 'if')\n || hasControlAttribute(attribs, 'elif')\n || hasControlAttribute(attribs, 'else')\n}\n"],"mappings":";;;;;AAeA,MAAM,kBAAkB;AACxB,MAAM,mBAA2C;CAC/C,KAAK;CACL,SAAS;CACT,WAAW;AACb;AAEA,MAAM,qBAA6E;CACjF,QAAQ,CAAC;CACT,SAAS,EAAE,OAAO,KAAK;CACvB,YAAY,CAAC;CACb,gBAAgB,EAAE,SAAS,KAAK;CAChC,iBAAiB;EAAE,SAAS;EAAM,OAAO;CAAK;AAChD;AAEA,SAAS,oBAAoB,MAAc;CACzC,MAAM,iBAAiB,KAAK,QAAQ,GAAG;CACvC,IAAI,kBAAkB,GAAG;EACvB,MAAM,SAAS,KAAK,MAAM,GAAG,cAAc;EAC3C,MAAM,WAAW,KAAK,MAAM,iBAAiB,CAAC;EAC9C,IAAI,YAAY,UAAU,oBACxB,OAAO;GAAE;GAAQ;EAAS;EAE5B;CACF;CACA,MAAM,QAAQ,gBAAgB,KAAK,IAAI;CACvC,IAAI,CAAC,OACH;CAEF,OAAO;EAAE,QAAQ,MAAM;EAAK,UAAU,MAAM;CAAI;AAClD;AAEA,SAAgB,WAAW,SAAmD;CAC5E,MAAM,OAAO,6BAA6B,SAAS,KAAK;CACxD,MAAM,cAAsC,CAAC;CAC7C,MAAM,WAAW,6BAA6B,SAAS,UAAU,CAAC,EAAE,KAAK,KAAK;CAC9E,IAAI,YAAY,6BAA6B,SAAS,WAAW,CAAC,EAAE,KAAK,KAAK;CAE9E,KAAK,MAAM,CAAC,KAAK,QAAQ,OAAO,QAAQ,OAAO,GAAG;EAChD,IAAI,cAAc,IAAI,GAAG,GACvB;EAEF,YAAY,OAAO;CACrB;CAEA,IAAI,aAAa,WACf,YAAY,GAAG,UAAU;CAG3B,OAAO;EACL;EACA;EACA;EACA;CACF;AACF;AAEA,SAAgB,qBACd,SACA,OACA;CACA,IAAI,SAAS;CACb,KAAK,MAAM,CAAC,MAAM,aAAa,OAAO,QAAQ,OAAO,GAAG;EACtD,IAAI,cAAc,IAAI,IAAI,GACxB;EAGF,MAAM,YAAY,oBAAoB,IAAI;EAC1C,IAAI,WAAW;GACb,MAAM,kBAAkB,UAAU,SAAS,YAAY;GAEvD,MAAM,eADe,iBAAiB,oBACD,UAAU;GAC/C,MAAM,eAAe,yBAAyB,YAAY;GAC1D,MAAM,cAAc,sBAAsB,UAAU,KAAK,CAAC,CAAC,KAAK;GAChE,IAAI,CAAC,aACH;GAEF,MAAM,QAAQ,mBAAmB,UAAU;GAC3C,UAAU,IAAI,sCAAsC,aAAa,IAAI,gBAAgB,WAAW,EAAE;GAClG,MAAM,aAAa,CACjB,MAAM,UAAU,YAAY,IAC5B,MAAM,QAAQ,UAAU,EAC1B,CAAC,CAAC,OAAO,OAAO;GAChB,IAAI,WAAW,QACb,UAAU,IAAI,2CAA2C,aAAa,IAAI,WAAW,KAAK,GAAG,EAAE;GAEjG;EACF;EAEA,MAAM,QAAQ,sBAAsB,UAAU,KAAK;EACnD,IAAI,UAAU,IACZ;EAEF,MAAM,iBAAiB,uBAAuB,IAAI;EAClD,UAAU,IAAI,eAAe,IAAI,gBAAgB,KAAK,EAAE;CAC1D;CACA,OAAO;AACT;AAEA,SAAgB,uBAAuB,SAAiC;CACtE,MAAM,SAAiC,CAAC;CACxC,KAAK,MAAM,CAAC,MAAM,UAAU,OAAO,QAAQ,OAAO,GAChD,IAAI,CAAC,cAAc,IAAI,IAAI,GACzB,OAAO,QAAQ;CAGnB,OAAO;AACT;AAEA,SAAgB,qBAAqB,MAA6B;CAChE,IAAI,KAAK,SAAS,OAChB,OAAO;CAET,MAAM,UAAW,KAAiB;CAClC,OAAO,oBAAoB,SAAS,IAAI,KACnC,oBAAoB,SAAS,MAAM,KACnC,oBAAoB,SAAS,MAAM;AAC1C"}
@@ -1,8 +1,7 @@
1
1
  import { LegacyTemplateRenderer, LegacyTemplateScope } from "./types.mjs";
2
2
  import { ChildNode } from "domhandler";
3
3
  //#region src/runtime/legacyTemplate/index.d.ts
4
- declare function renderTemplate(nodes: ChildNode[], scope?: LegacyTemplateScope): string;
5
- declare function createTemplate(source: string): LegacyTemplateRenderer;
4
+ export declare function renderTemplate(nodes: ChildNode[], scope?: LegacyTemplateScope): string;
5
+ export declare function createTemplate(source: string): LegacyTemplateRenderer;
6
6
  //#endregion
7
- export { createTemplate, renderTemplate };
8
7
  //# sourceMappingURL=index.d.mts.map
@@ -1,6 +1,5 @@
1
1
  //#region src/runtime/legacyTemplate/types.d.ts
2
- type LegacyTemplateScope = Record<string, any>;
3
- type LegacyTemplateRenderer = (scope?: LegacyTemplateScope) => string;
2
+ export type LegacyTemplateScope = Record<string, any>;
3
+ export type LegacyTemplateRenderer = (scope?: LegacyTemplateScope) => string;
4
4
  //#endregion
5
- export { LegacyTemplateRenderer, LegacyTemplateScope };
6
5
  //# sourceMappingURL=types.d.mts.map
@@ -1,7 +1,6 @@
1
1
  //#region src/runtime/nativeComponents/form.d.ts
2
- interface FormConfig {
2
+ export interface FormConfig {
3
3
  preventDefault?: boolean;
4
4
  }
5
5
  //#endregion
6
- export { FormConfig };
7
6
  //# sourceMappingURL=form.d.mts.map
@@ -1,8 +1,7 @@
1
1
  //#region src/runtime/nativeComponents/image.d.ts
2
- declare function resolveImageModeStyle(mode: string | null): {
2
+ export declare function resolveImageModeStyle(mode: string | null): {
3
3
  fit: string;
4
4
  position: string;
5
5
  };
6
6
  //#endregion
7
- export { resolveImageModeStyle };
8
7
  //# sourceMappingURL=image.d.mts.map
@@ -5,7 +5,7 @@ import { createSwitchEventDetail } from "./switch.mjs";
5
5
  import { createTextareaLineChangeDetail } from "./textarea.mjs";
6
6
  import { createVideoProgressDetail, createVideoTimeUpdateDetail, resolveVideoObjectFit } from "./video/helpers.mjs";
7
7
  //#region src/runtime/nativeComponents/index.d.ts
8
- declare function ensureNativeComponentsDefined(): void;
8
+ export declare function ensureNativeComponentsDefined(): void;
9
9
  //#endregion
10
- export { createInputEventDetail, createScrollEventDetail, createSwitchEventDetail, createTextareaLineChangeDetail, createVideoProgressDetail, createVideoTimeUpdateDetail, ensureNativeComponentsDefined, resolveImageModeStyle, resolveVideoObjectFit };
10
+ export { createInputEventDetail, createScrollEventDetail, createSwitchEventDetail, createTextareaLineChangeDetail, createVideoProgressDetail, createVideoTimeUpdateDetail, resolveImageModeStyle, resolveVideoObjectFit };
11
11
  //# sourceMappingURL=index.d.mts.map
@@ -1,8 +1,7 @@
1
1
  //#region src/runtime/nativeComponents/input.d.ts
2
- declare function createInputEventDetail(input: Pick<HTMLInputElement, 'selectionStart' | 'value'>): {
2
+ export declare function createInputEventDetail(input: Pick<HTMLInputElement, 'selectionStart' | 'value'>): {
3
3
  value: string;
4
4
  cursor: number;
5
5
  };
6
6
  //#endregion
7
- export { createInputEventDetail };
8
7
  //# sourceMappingURL=input.d.mts.map
@@ -2,6 +2,7 @@ import { getNativeComponentDescriptor } from "../../shared/nativeComponents.mjs"
2
2
  import { connectFormControl, disconnectFormControl } from "./formControl.mjs";
3
3
  import { dispatchMiniProgramEvent, readBooleanAttribute, resolveContainingShadowRoot, resolveMaxLength } from "./helpers.mjs";
4
4
  import { ensureNativeComponentStyle } from "./style.mjs";
5
+ import { dispatchNativeInputEvent } from "../inputHandlerResult.mjs";
5
6
 
6
7
  //#region src/runtime/nativeComponents/input.ts
7
8
  const BaseElement = globalThis.HTMLElement ?? class {};
@@ -90,7 +91,8 @@ var WeappInput = class extends BaseElement {
90
91
  const input = document.createElement("input");
91
92
  input.addEventListener("input", (event) => {
92
93
  event.stopPropagation();
93
- dispatchMiniProgramEvent(this, "input", createInputEventDetail(input));
94
+ const returnedValue = dispatchNativeInputEvent(this, createInputEventDetail(input));
95
+ if (returnedValue !== void 0) input.value = returnedValue;
94
96
  });
95
97
  input.addEventListener("focus", () => {
96
98
  dispatchMiniProgramEvent(this, "focus", {
@@ -1 +1 @@
1
- {"version":3,"file":"input.mjs","names":[],"sources":["../../../src/runtime/nativeComponents/input.ts"],"sourcesContent":["import { getNativeComponentDescriptor } from '../../shared/nativeComponents'\nimport { connectFormControl, disconnectFormControl } from './formControl'\nimport { dispatchMiniProgramEvent, readBooleanAttribute, resolveContainingShadowRoot, resolveMaxLength } from './helpers'\nimport { ensureNativeComponentStyle } from './style'\n\nconst BaseElement = (globalThis.HTMLElement ?? class {}) as typeof HTMLElement\n\nfunction resolveInputType(element: Element) {\n if (readBooleanAttribute(element, 'password')) {\n return 'password'\n }\n const type = element.getAttribute('type')\n return type === 'number' || type === 'digit' || type === 'idcard' ? 'text' : (type ?? 'text')\n}\n\nexport function createInputEventDetail(input: Pick<HTMLInputElement, 'selectionStart' | 'value'>) {\n return {\n value: input.value,\n cursor: input.selectionStart ?? input.value.length,\n }\n}\n\nexport class WeappInput extends BaseElement {\n static observedAttributes = [...getNativeComponentDescriptor('input')!.attributes]\n\n #input?: HTMLInputElement\n #initialValue = ''\n #initialValueCaptured = false\n\n get formControlName() {\n return this.getAttribute('name') ?? ''\n }\n\n get formControlValue() {\n return this.value\n }\n\n get formControlDisabled() {\n return readBooleanAttribute(this, 'disabled')\n }\n\n get value() {\n return this.#input?.value ?? this.getAttribute('value') ?? ''\n }\n\n set value(value: string) {\n this.setAttribute('value', value ?? '')\n }\n\n connectedCallback() {\n ensureNativeComponentStyle(resolveContainingShadowRoot(this))\n if (!this.#initialValueCaptured) {\n this.#initialValue = this.getAttribute('value') ?? ''\n this.#initialValueCaptured = true\n }\n this.#ensureStructure()\n this.#syncAttributes()\n connectFormControl(this)\n this.#syncFocus()\n }\n\n disconnectedCallback() {\n disconnectFormControl(this)\n }\n\n attributeChangedCallback(name: string) {\n this.#syncAttributes()\n if (name === 'focus') {\n this.#syncFocus()\n }\n }\n\n focus(options?: FocusOptions) {\n this.#input?.focus(options)\n }\n\n blur() {\n this.#input?.blur()\n }\n\n formReset() {\n if (this.#input) {\n this.#input.value = this.#initialValue\n }\n }\n\n formActivate() {\n this.focus()\n }\n\n #ensureStructure() {\n if (this.#input || typeof document === 'undefined') {\n return\n }\n const root = this.shadowRoot ?? this.attachShadow({ mode: 'open' })\n const style = document.createElement('style')\n style.textContent = `\n :host { cursor: text; }\n input {\n display: block;\n box-sizing: border-box;\n width: 100%;\n min-width: 0;\n height: 100%;\n padding: 0;\n border: 0;\n outline: 0;\n color: inherit;\n background: transparent;\n font: inherit;\n line-height: inherit;\n }\n `\n const input = document.createElement('input')\n input.addEventListener('input', (event) => {\n event.stopPropagation()\n dispatchMiniProgramEvent(this, 'input', createInputEventDetail(input))\n })\n input.addEventListener('focus', () => {\n dispatchMiniProgramEvent(this, 'focus', { value: input.value, height: 0 })\n })\n input.addEventListener('blur', () => {\n dispatchMiniProgramEvent(this, 'blur', createInputEventDetail(input))\n })\n input.addEventListener('keydown', (event) => {\n if (event.key === 'Enter') {\n dispatchMiniProgramEvent(this, 'confirm', { value: input.value })\n }\n })\n root.append(style, input)\n this.#input = input\n }\n\n #syncAttributes() {\n if (!this.#input) {\n return\n }\n const value = this.getAttribute('value') ?? ''\n if (this.#input.value !== value) {\n this.#input.value = value\n }\n this.#input.type = resolveInputType(this)\n this.#input.placeholder = this.getAttribute('placeholder') ?? ''\n this.#input.disabled = readBooleanAttribute(this, 'disabled')\n const maxlength = resolveMaxLength(this.getAttribute('maxlength'))\n if (maxlength === undefined) {\n this.#input.removeAttribute('maxlength')\n }\n else {\n this.#input.maxLength = maxlength\n }\n const confirmType = this.getAttribute('confirm-type')\n if (confirmType) {\n this.#input.enterKeyHint = confirmType === 'send' ? 'send' : confirmType as HTMLInputElement['enterKeyHint']\n }\n }\n\n #syncFocus() {\n if (!readBooleanAttribute(this, 'focus')) {\n return\n }\n queueMicrotask(() => this.focus())\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"input.mjs","names":[],"sources":["../../../src/runtime/nativeComponents/input.ts"],"sourcesContent":["import { getNativeComponentDescriptor } from '../../shared/nativeComponents'\nimport { dispatchNativeInputEvent } from '../inputHandlerResult'\nimport { connectFormControl, disconnectFormControl } from './formControl'\nimport { dispatchMiniProgramEvent, readBooleanAttribute, resolveContainingShadowRoot, resolveMaxLength } from './helpers'\nimport { ensureNativeComponentStyle } from './style'\n\nconst BaseElement = (globalThis.HTMLElement ?? class {}) as typeof HTMLElement\n\nfunction resolveInputType(element: Element) {\n if (readBooleanAttribute(element, 'password')) {\n return 'password'\n }\n const type = element.getAttribute('type')\n return type === 'number' || type === 'digit' || type === 'idcard' ? 'text' : (type ?? 'text')\n}\n\nexport function createInputEventDetail(input: Pick<HTMLInputElement, 'selectionStart' | 'value'>) {\n return {\n value: input.value,\n cursor: input.selectionStart ?? input.value.length,\n }\n}\n\nexport class WeappInput extends BaseElement {\n static observedAttributes = [...getNativeComponentDescriptor('input')!.attributes]\n\n #input?: HTMLInputElement\n #initialValue = ''\n #initialValueCaptured = false\n\n get formControlName() {\n return this.getAttribute('name') ?? ''\n }\n\n get formControlValue() {\n return this.value\n }\n\n get formControlDisabled() {\n return readBooleanAttribute(this, 'disabled')\n }\n\n get value() {\n return this.#input?.value ?? this.getAttribute('value') ?? ''\n }\n\n set value(value: string) {\n this.setAttribute('value', value ?? '')\n }\n\n connectedCallback() {\n ensureNativeComponentStyle(resolveContainingShadowRoot(this))\n if (!this.#initialValueCaptured) {\n this.#initialValue = this.getAttribute('value') ?? ''\n this.#initialValueCaptured = true\n }\n this.#ensureStructure()\n this.#syncAttributes()\n connectFormControl(this)\n this.#syncFocus()\n }\n\n disconnectedCallback() {\n disconnectFormControl(this)\n }\n\n attributeChangedCallback(name: string) {\n this.#syncAttributes()\n if (name === 'focus') {\n this.#syncFocus()\n }\n }\n\n focus(options?: FocusOptions) {\n this.#input?.focus(options)\n }\n\n blur() {\n this.#input?.blur()\n }\n\n formReset() {\n if (this.#input) {\n this.#input.value = this.#initialValue\n }\n }\n\n formActivate() {\n this.focus()\n }\n\n #ensureStructure() {\n if (this.#input || typeof document === 'undefined') {\n return\n }\n const root = this.shadowRoot ?? this.attachShadow({ mode: 'open' })\n const style = document.createElement('style')\n style.textContent = `\n :host { cursor: text; }\n input {\n display: block;\n box-sizing: border-box;\n width: 100%;\n min-width: 0;\n height: 100%;\n padding: 0;\n border: 0;\n outline: 0;\n color: inherit;\n background: transparent;\n font: inherit;\n line-height: inherit;\n }\n `\n const input = document.createElement('input')\n input.addEventListener('input', (event) => {\n event.stopPropagation()\n const returnedValue = dispatchNativeInputEvent(this, createInputEventDetail(input))\n if (returnedValue !== undefined) {\n input.value = returnedValue\n }\n })\n input.addEventListener('focus', () => {\n dispatchMiniProgramEvent(this, 'focus', { value: input.value, height: 0 })\n })\n input.addEventListener('blur', () => {\n dispatchMiniProgramEvent(this, 'blur', createInputEventDetail(input))\n })\n input.addEventListener('keydown', (event) => {\n if (event.key === 'Enter') {\n dispatchMiniProgramEvent(this, 'confirm', { value: input.value })\n }\n })\n root.append(style, input)\n this.#input = input\n }\n\n #syncAttributes() {\n if (!this.#input) {\n return\n }\n const value = this.getAttribute('value') ?? ''\n if (this.#input.value !== value) {\n this.#input.value = value\n }\n this.#input.type = resolveInputType(this)\n this.#input.placeholder = this.getAttribute('placeholder') ?? ''\n this.#input.disabled = readBooleanAttribute(this, 'disabled')\n const maxlength = resolveMaxLength(this.getAttribute('maxlength'))\n if (maxlength === undefined) {\n this.#input.removeAttribute('maxlength')\n }\n else {\n this.#input.maxLength = maxlength\n }\n const confirmType = this.getAttribute('confirm-type')\n if (confirmType) {\n this.#input.enterKeyHint = confirmType === 'send' ? 'send' : confirmType as HTMLInputElement['enterKeyHint']\n }\n }\n\n #syncFocus() {\n if (!readBooleanAttribute(this, 'focus')) {\n return\n }\n queueMicrotask(() => this.focus())\n }\n}\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  //#region src/runtime/nativeComponents/scrollView.d.ts
2
- declare function createScrollEventDetail(viewport: Pick<HTMLDivElement, 'scrollHeight' | 'scrollLeft' | 'scrollTop' | 'scrollWidth'>, previous: {
2
+ export declare function createScrollEventDetail(viewport: Pick<HTMLDivElement, 'scrollHeight' | 'scrollLeft' | 'scrollTop' | 'scrollWidth'>, previous: {
3
3
  scrollLeft: number;
4
4
  scrollTop: number;
5
5
  }): {
@@ -11,5 +11,4 @@ declare function createScrollEventDetail(viewport: Pick<HTMLDivElement, 'scrollH
11
11
  deltaY: number;
12
12
  };
13
13
  //#endregion
14
- export { createScrollEventDetail };
15
14
  //# sourceMappingURL=scrollView.d.mts.map
@@ -33,11 +33,12 @@ var WeappScrollView = class extends BaseElement {
33
33
  }
34
34
  connectedCallback() {
35
35
  ensureNativeComponentStyle(resolveContainingShadowRoot(this));
36
+ const initializePosition = !this.#viewport;
36
37
  this.#ensureStructure();
37
- this.#syncAttributes();
38
+ this.#syncAttributes(void 0, initializePosition);
38
39
  }
39
- attributeChangedCallback() {
40
- this.#syncAttributes();
40
+ attributeChangedCallback(name, oldValue, newValue) {
41
+ if (oldValue !== newValue) this.#syncAttributes(name);
41
42
  }
42
43
  #ensureStructure() {
43
44
  if (this.#viewport || typeof document === "undefined") return;
@@ -51,26 +52,34 @@ var WeappScrollView = class extends BaseElement {
51
52
  viewport.className = "viewport";
52
53
  const slot = document.createElement("slot");
53
54
  viewport.append(slot);
54
- viewport.addEventListener("scroll", () => {
55
+ viewport.addEventListener("scroll", (event) => {
56
+ if (event.target !== viewport) return;
55
57
  const detail = createScrollEventDetail(viewport, {
56
58
  scrollLeft: this.#lastScrollLeft,
57
59
  scrollTop: this.#lastScrollTop
58
60
  });
59
61
  this.#lastScrollLeft = viewport.scrollLeft;
60
62
  this.#lastScrollTop = viewport.scrollTop;
61
- dispatchMiniProgramEvent(this, "scroll", detail);
63
+ dispatchMiniProgramEvent(this, "scroll", detail, {
64
+ bubbles: false,
65
+ composed: false
66
+ });
62
67
  });
63
68
  root.append(style, viewport);
64
69
  this.#viewport = viewport;
65
70
  }
66
- #syncAttributes() {
71
+ #syncAttributes(changedName, initializePosition = false) {
67
72
  if (!this.#viewport) return;
68
- this.#viewport.style.overflowX = readBooleanAttribute(this, "scroll-x") ? "auto" : "hidden";
69
- this.#viewport.style.overflowY = readBooleanAttribute(this, "scroll-y") ? "auto" : "hidden";
70
- const scrollTop = Number(this.getAttribute("scroll-top"));
71
- const scrollLeft = Number(this.getAttribute("scroll-left"));
72
- if (Number.isFinite(scrollTop)) this.#viewport.scrollTop = scrollTop;
73
- if (Number.isFinite(scrollLeft)) this.#viewport.scrollLeft = scrollLeft;
73
+ if (!changedName || changedName === "scroll-x") this.#viewport.style.overflowX = readBooleanAttribute(this, "scroll-x") ? "auto" : "hidden";
74
+ if (!changedName || changedName === "scroll-y") this.#viewport.style.overflowY = readBooleanAttribute(this, "scroll-y") ? "auto" : "hidden";
75
+ if (initializePosition || changedName === "scroll-top") {
76
+ const scrollTop = Number(this.getAttribute("scroll-top"));
77
+ if (Number.isFinite(scrollTop)) this.#viewport.scrollTop = scrollTop;
78
+ }
79
+ if (initializePosition || changedName === "scroll-left") {
80
+ const scrollLeft = Number(this.getAttribute("scroll-left"));
81
+ if (Number.isFinite(scrollLeft)) this.#viewport.scrollLeft = scrollLeft;
82
+ }
74
83
  }
75
84
  };
76
85
 
@@ -1 +1 @@
1
- {"version":3,"file":"scrollView.mjs","names":[],"sources":["../../../src/runtime/nativeComponents/scrollView.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\nexport function createScrollEventDetail(\n viewport: Pick<HTMLDivElement, 'scrollHeight' | 'scrollLeft' | 'scrollTop' | 'scrollWidth'>,\n previous: { scrollLeft: number, scrollTop: number },\n) {\n return {\n scrollLeft: viewport.scrollLeft,\n scrollTop: viewport.scrollTop,\n scrollWidth: viewport.scrollWidth,\n scrollHeight: viewport.scrollHeight,\n deltaX: viewport.scrollLeft - previous.scrollLeft,\n deltaY: viewport.scrollTop - previous.scrollTop,\n }\n}\n\nexport class WeappScrollView extends BaseElement {\n static observedAttributes = [...getNativeComponentDescriptor('scroll-view')!.attributes]\n\n #viewport?: HTMLDivElement\n #lastScrollLeft = 0\n #lastScrollTop = 0\n\n get scrollTop() {\n return this.#viewport?.scrollTop ?? 0\n }\n\n set scrollTop(value: number) {\n if (this.#viewport) {\n this.#viewport.scrollTop = value\n }\n }\n\n get scrollLeft() {\n return this.#viewport?.scrollLeft ?? 0\n }\n\n set scrollLeft(value: number) {\n if (this.#viewport) {\n this.#viewport.scrollLeft = value\n }\n }\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.#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 = `\n :host { min-width: 0; min-height: 0; }\n .viewport { width: 100%; height: 100%; overscroll-behavior: contain; }\n `\n const viewport = document.createElement('div')\n viewport.className = 'viewport'\n const slot = document.createElement('slot')\n viewport.append(slot)\n viewport.addEventListener('scroll', () => {\n const detail = createScrollEventDetail(viewport, {\n scrollLeft: this.#lastScrollLeft,\n scrollTop: this.#lastScrollTop,\n })\n this.#lastScrollLeft = viewport.scrollLeft\n this.#lastScrollTop = viewport.scrollTop\n dispatchMiniProgramEvent(this, 'scroll', detail)\n })\n root.append(style, viewport)\n this.#viewport = viewport\n }\n\n #syncAttributes() {\n if (!this.#viewport) {\n return\n }\n this.#viewport.style.overflowX = readBooleanAttribute(this, 'scroll-x') ? 'auto' : 'hidden'\n this.#viewport.style.overflowY = readBooleanAttribute(this, 'scroll-y') ? 'auto' : 'hidden'\n const scrollTop = Number(this.getAttribute('scroll-top'))\n const scrollLeft = Number(this.getAttribute('scroll-left'))\n if (Number.isFinite(scrollTop)) {\n this.#viewport.scrollTop = scrollTop\n }\n if (Number.isFinite(scrollLeft)) {\n this.#viewport.scrollLeft = scrollLeft\n }\n }\n}\n"],"mappings":";;;;;AAIA,MAAM,cAAe,WAAW,eAAe,MAAM,CAAC;AAEtD,SAAgB,wBACd,UACA,UACA;CACA,OAAO;EACL,YAAY,SAAS;EACrB,WAAW,SAAS;EACpB,aAAa,SAAS;EACtB,cAAc,SAAS;EACvB,QAAQ,SAAS,aAAa,SAAS;EACvC,QAAQ,SAAS,YAAY,SAAS;CACxC;AACF;AAEA,IAAa,kBAAb,cAAqC,YAAY;CAC/C,OAAO,qBAAqB,CAAC,GAAG,6BAA6B,aAAa,CAAC,CAAE,UAAU;CAEvF;CACA,kBAAkB;CAClB,iBAAiB;CAEjB,IAAI,YAAY;EACd,OAAO,KAAK,WAAW,aAAa;CACtC;CAEA,IAAI,UAAU,OAAe;EAC3B,IAAI,KAAK,WACP,KAAK,UAAU,YAAY;CAE/B;CAEA,IAAI,aAAa;EACf,OAAO,KAAK,WAAW,cAAc;CACvC;CAEA,IAAI,WAAW,OAAe;EAC5B,IAAI,KAAK,WACP,KAAK,UAAU,aAAa;CAEhC;CAEA,oBAAoB;EAClB,2BAA2B,4BAA4B,IAAI,CAAC;EAC5D,KAAK,iBAAiB;EACtB,KAAK,gBAAgB;CACvB;CAEA,2BAA2B;EACzB,KAAK,gBAAgB;CACvB;CAEA,mBAAmB;EACjB,IAAI,KAAK,aAAa,OAAO,aAAa,aACxC;EAEF,MAAM,OAAO,KAAK,cAAc,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;EAClE,MAAM,QAAQ,SAAS,cAAc,OAAO;EAC5C,MAAM,cAAc;;;;EAIpB,MAAM,WAAW,SAAS,cAAc,KAAK;EAC7C,SAAS,YAAY;EACrB,MAAM,OAAO,SAAS,cAAc,MAAM;EAC1C,SAAS,OAAO,IAAI;EACpB,SAAS,iBAAiB,gBAAgB;GACxC,MAAM,SAAS,wBAAwB,UAAU;IAC/C,YAAY,KAAK;IACjB,WAAW,KAAK;GAClB,CAAC;GACD,KAAK,kBAAkB,SAAS;GAChC,KAAK,iBAAiB,SAAS;GAC/B,yBAAyB,MAAM,UAAU,MAAM;EACjD,CAAC;EACD,KAAK,OAAO,OAAO,QAAQ;EAC3B,KAAK,YAAY;CACnB;CAEA,kBAAkB;EAChB,IAAI,CAAC,KAAK,WACR;EAEF,KAAK,UAAU,MAAM,YAAY,qBAAqB,MAAM,UAAU,IAAI,SAAS;EACnF,KAAK,UAAU,MAAM,YAAY,qBAAqB,MAAM,UAAU,IAAI,SAAS;EACnF,MAAM,YAAY,OAAO,KAAK,aAAa,YAAY,CAAC;EACxD,MAAM,aAAa,OAAO,KAAK,aAAa,aAAa,CAAC;EAC1D,IAAI,OAAO,SAAS,SAAS,GAC3B,KAAK,UAAU,YAAY;EAE7B,IAAI,OAAO,SAAS,UAAU,GAC5B,KAAK,UAAU,aAAa;CAEhC;AACF"}
1
+ {"version":3,"file":"scrollView.mjs","names":[],"sources":["../../../src/runtime/nativeComponents/scrollView.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\nexport function createScrollEventDetail(\n viewport: Pick<HTMLDivElement, 'scrollHeight' | 'scrollLeft' | 'scrollTop' | 'scrollWidth'>,\n previous: { scrollLeft: number, scrollTop: number },\n) {\n return {\n scrollLeft: viewport.scrollLeft,\n scrollTop: viewport.scrollTop,\n scrollWidth: viewport.scrollWidth,\n scrollHeight: viewport.scrollHeight,\n deltaX: viewport.scrollLeft - previous.scrollLeft,\n deltaY: viewport.scrollTop - previous.scrollTop,\n }\n}\n\nexport class WeappScrollView extends BaseElement {\n static observedAttributes = [...getNativeComponentDescriptor('scroll-view')!.attributes]\n\n #viewport?: HTMLDivElement\n #lastScrollLeft = 0\n #lastScrollTop = 0\n\n get scrollTop() {\n return this.#viewport?.scrollTop ?? 0\n }\n\n set scrollTop(value: number) {\n if (this.#viewport) {\n this.#viewport.scrollTop = value\n }\n }\n\n get scrollLeft() {\n return this.#viewport?.scrollLeft ?? 0\n }\n\n set scrollLeft(value: number) {\n if (this.#viewport) {\n this.#viewport.scrollLeft = value\n }\n }\n\n connectedCallback() {\n ensureNativeComponentStyle(resolveContainingShadowRoot(this))\n const initializePosition = !this.#viewport\n this.#ensureStructure()\n this.#syncAttributes(undefined, initializePosition)\n }\n\n attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null) {\n if (oldValue !== newValue) {\n this.#syncAttributes(name)\n }\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 = `\n :host { min-width: 0; min-height: 0; }\n .viewport { width: 100%; height: 100%; overscroll-behavior: contain; }\n `\n const viewport = document.createElement('div')\n viewport.className = 'viewport'\n const slot = document.createElement('slot')\n viewport.append(slot)\n viewport.addEventListener('scroll', (event) => {\n if (event.target !== viewport) {\n return\n }\n const detail = createScrollEventDetail(viewport, {\n scrollLeft: this.#lastScrollLeft,\n scrollTop: this.#lastScrollTop,\n })\n this.#lastScrollLeft = viewport.scrollLeft\n this.#lastScrollTop = viewport.scrollTop\n dispatchMiniProgramEvent(this, 'scroll', detail, {\n bubbles: false,\n composed: false,\n })\n })\n root.append(style, viewport)\n this.#viewport = viewport\n }\n\n #syncAttributes(changedName?: string, initializePosition = false) {\n if (!this.#viewport) {\n return\n }\n if (!changedName || changedName === 'scroll-x') {\n this.#viewport.style.overflowX = readBooleanAttribute(this, 'scroll-x') ? 'auto' : 'hidden'\n }\n if (!changedName || changedName === 'scroll-y') {\n this.#viewport.style.overflowY = readBooleanAttribute(this, 'scroll-y') ? 'auto' : 'hidden'\n }\n if (initializePosition || changedName === 'scroll-top') {\n const scrollTop = Number(this.getAttribute('scroll-top'))\n if (Number.isFinite(scrollTop)) {\n this.#viewport.scrollTop = scrollTop\n }\n }\n if (initializePosition || changedName === 'scroll-left') {\n const scrollLeft = Number(this.getAttribute('scroll-left'))\n if (Number.isFinite(scrollLeft)) {\n this.#viewport.scrollLeft = scrollLeft\n }\n }\n }\n}\n"],"mappings":";;;;;AAIA,MAAM,cAAe,WAAW,eAAe,MAAM,CAAC;AAEtD,SAAgB,wBACd,UACA,UACA;CACA,OAAO;EACL,YAAY,SAAS;EACrB,WAAW,SAAS;EACpB,aAAa,SAAS;EACtB,cAAc,SAAS;EACvB,QAAQ,SAAS,aAAa,SAAS;EACvC,QAAQ,SAAS,YAAY,SAAS;CACxC;AACF;AAEA,IAAa,kBAAb,cAAqC,YAAY;CAC/C,OAAO,qBAAqB,CAAC,GAAG,6BAA6B,aAAa,CAAC,CAAE,UAAU;CAEvF;CACA,kBAAkB;CAClB,iBAAiB;CAEjB,IAAI,YAAY;EACd,OAAO,KAAK,WAAW,aAAa;CACtC;CAEA,IAAI,UAAU,OAAe;EAC3B,IAAI,KAAK,WACP,KAAK,UAAU,YAAY;CAE/B;CAEA,IAAI,aAAa;EACf,OAAO,KAAK,WAAW,cAAc;CACvC;CAEA,IAAI,WAAW,OAAe;EAC5B,IAAI,KAAK,WACP,KAAK,UAAU,aAAa;CAEhC;CAEA,oBAAoB;EAClB,2BAA2B,4BAA4B,IAAI,CAAC;EAC5D,MAAM,qBAAqB,CAAC,KAAK;EACjC,KAAK,iBAAiB;EACtB,KAAK,gBAAgB,QAAW,kBAAkB;CACpD;CAEA,yBAAyB,MAAc,UAAyB,UAAyB;EACvF,IAAI,aAAa,UACf,KAAK,gBAAgB,IAAI;CAE7B;CAEA,mBAAmB;EACjB,IAAI,KAAK,aAAa,OAAO,aAAa,aACxC;EAEF,MAAM,OAAO,KAAK,cAAc,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;EAClE,MAAM,QAAQ,SAAS,cAAc,OAAO;EAC5C,MAAM,cAAc;;;;EAIpB,MAAM,WAAW,SAAS,cAAc,KAAK;EAC7C,SAAS,YAAY;EACrB,MAAM,OAAO,SAAS,cAAc,MAAM;EAC1C,SAAS,OAAO,IAAI;EACpB,SAAS,iBAAiB,WAAW,UAAU;GAC7C,IAAI,MAAM,WAAW,UACnB;GAEF,MAAM,SAAS,wBAAwB,UAAU;IAC/C,YAAY,KAAK;IACjB,WAAW,KAAK;GAClB,CAAC;GACD,KAAK,kBAAkB,SAAS;GAChC,KAAK,iBAAiB,SAAS;GAC/B,yBAAyB,MAAM,UAAU,QAAQ;IAC/C,SAAS;IACT,UAAU;GACZ,CAAC;EACH,CAAC;EACD,KAAK,OAAO,OAAO,QAAQ;EAC3B,KAAK,YAAY;CACnB;CAEA,gBAAgB,aAAsB,qBAAqB,OAAO;EAChE,IAAI,CAAC,KAAK,WACR;EAEF,IAAI,CAAC,eAAe,gBAAgB,YAClC,KAAK,UAAU,MAAM,YAAY,qBAAqB,MAAM,UAAU,IAAI,SAAS;EAErF,IAAI,CAAC,eAAe,gBAAgB,YAClC,KAAK,UAAU,MAAM,YAAY,qBAAqB,MAAM,UAAU,IAAI,SAAS;EAErF,IAAI,sBAAsB,gBAAgB,cAAc;GACtD,MAAM,YAAY,OAAO,KAAK,aAAa,YAAY,CAAC;GACxD,IAAI,OAAO,SAAS,SAAS,GAC3B,KAAK,UAAU,YAAY;EAE/B;EACA,IAAI,sBAAsB,gBAAgB,eAAe;GACvD,MAAM,aAAa,OAAO,KAAK,aAAa,aAAa,CAAC;GAC1D,IAAI,OAAO,SAAS,UAAU,GAC5B,KAAK,UAAU,aAAa;EAEhC;CACF;AACF"}
@@ -1,7 +1,6 @@
1
1
  //#region src/runtime/nativeComponents/switch.d.ts
2
- declare function createSwitchEventDetail(checked: boolean): {
2
+ export declare function createSwitchEventDetail(checked: boolean): {
3
3
  value: boolean;
4
4
  };
5
5
  //#endregion
6
- export { createSwitchEventDetail };
7
6
  //# sourceMappingURL=switch.d.mts.map
@@ -1,9 +1,8 @@
1
1
  //#region src/runtime/nativeComponents/textarea.d.ts
2
- declare function createTextareaLineChangeDetail(textarea: Pick<HTMLTextAreaElement, 'scrollHeight' | 'value'>): {
2
+ export declare function createTextareaLineChangeDetail(textarea: Pick<HTMLTextAreaElement, 'scrollHeight' | 'value'>): {
3
3
  height: number;
4
4
  heightRpx: number;
5
5
  lineCount: number;
6
6
  };
7
7
  //#endregion
8
- export { createTextareaLineChangeDetail };
9
8
  //# sourceMappingURL=textarea.d.mts.map
@@ -1,12 +1,11 @@
1
1
  //#region src/runtime/nativeComponents/video/helpers.d.ts
2
- declare function resolveVideoObjectFit(value: string | null): "fill" | "cover" | "contain";
3
- declare function createVideoTimeUpdateDetail(currentTime: number, duration: number): {
2
+ export declare function resolveVideoObjectFit(value: string | null): "fill" | "cover" | "contain";
3
+ export declare function createVideoTimeUpdateDetail(currentTime: number, duration: number): {
4
4
  currentTime: number;
5
5
  duration: number;
6
6
  };
7
- declare function createVideoProgressDetail(bufferedEnd: number, duration: number): {
7
+ export declare function createVideoProgressDetail(bufferedEnd: number, duration: number): {
8
8
  buffered: number;
9
9
  };
10
10
  //#endregion
11
- export { createVideoProgressDetail, createVideoTimeUpdateDetail, resolveVideoObjectFit };
12
11
  //# sourceMappingURL=helpers.d.mts.map
@@ -4,7 +4,7 @@ interface NavigationBarMetrics {
4
4
  navContentHeight?: number;
5
5
  safeAreaTop?: number;
6
6
  }
7
- declare function setNavigationBarMetrics(next: NavigationBarMetrics): void;
7
+ export declare function setNavigationBarMetrics(next: NavigationBarMetrics): void;
8
8
  //#endregion
9
- export { type NavigationBarMetrics, setNavigationBarMetrics };
9
+ export type { NavigationBarMetrics };
10
10
  //# sourceMappingURL=index.d.mts.map
@@ -2,8 +2,7 @@ import { WevuPageLayoutMap } from "wevu";
2
2
  //#region src/runtime/pageLayout.d.ts
3
3
  type ResolveTypedPageLayoutName = keyof WevuPageLayoutMap extends never ? string : Extract<keyof WevuPageLayoutMap, string>;
4
4
  type ResolveTypedPageLayoutProps<Name extends string> = Name extends keyof WevuPageLayoutMap ? WevuPageLayoutMap[Name] : Record<string, any>;
5
- declare function setPageLayout(layout: false): void;
6
- declare function setPageLayout<Name extends ResolveTypedPageLayoutName>(layout: Name, props?: ResolveTypedPageLayoutProps<Name>): void;
5
+ export declare function setPageLayout(layout: false): void;
6
+ export declare function setPageLayout<Name extends ResolveTypedPageLayoutName>(layout: Name, props?: ResolveTypedPageLayoutProps<Name>): void;
7
7
  //#endregion
8
- export { setPageLayout };
9
8
  //# sourceMappingURL=pageLayout.d.mts.map
@@ -1,7 +1,6 @@
1
1
  //#region src/runtime/polyfill/async.d.ts
2
- interface MiniProgramBaseResultLike {
2
+ export interface MiniProgramBaseResultLike {
3
3
  errMsg: string;
4
4
  }
5
5
  //#endregion
6
- export { MiniProgramBaseResultLike };
7
6
  //# sourceMappingURL=async.d.mts.map