winui-svelte 0.0.3 → 0.0.5
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/API.md +1267 -21
- package/README.md +178 -101
- package/dist/accessibility/announce.d.ts +22 -0
- package/dist/accessibility/announce.d.ts.map +1 -0
- package/dist/accessibility/announce.js +52 -0
- package/dist/accessibility/announce.js.map +1 -0
- package/dist/accessibility/audit/accessibility-rules.json +100 -0
- package/dist/accessibility/audit/audit-tree.d.ts +48 -0
- package/dist/accessibility/audit/audit-tree.d.ts.map +1 -0
- package/dist/accessibility/audit/audit-tree.js +125 -0
- package/dist/accessibility/audit/audit-tree.js.map +1 -0
- package/dist/accessibility/audit/contrast.d.ts +65 -0
- package/dist/accessibility/audit/contrast.d.ts.map +1 -0
- package/dist/accessibility/audit/contrast.js +120 -0
- package/dist/accessibility/audit/contrast.js.map +1 -0
- package/dist/accessibility/audit/index.d.ts +19 -0
- package/dist/accessibility/audit/index.d.ts.map +1 -0
- package/dist/accessibility/audit/index.js +22 -0
- package/dist/accessibility/audit/index.js.map +1 -0
- package/dist/accessibility/audit/rules.d.ts +87 -0
- package/dist/accessibility/audit/rules.d.ts.map +1 -0
- package/dist/accessibility/audit/rules.js +67 -0
- package/dist/accessibility/audit/rules.js.map +1 -0
- package/dist/accessibility/audit/visual-tree-host.d.ts +5 -0
- package/dist/accessibility/audit/visual-tree-host.d.ts.map +1 -0
- package/dist/accessibility/audit/visual-tree-host.js +139 -0
- package/dist/accessibility/audit/visual-tree-host.js.map +1 -0
- package/dist/accessibility/index.d.ts +6 -0
- package/dist/accessibility/index.d.ts.map +1 -0
- package/dist/accessibility/index.js +6 -0
- package/dist/accessibility/index.js.map +1 -0
- package/dist/accessibility/live-priority.d.ts +22 -0
- package/dist/accessibility/live-priority.d.ts.map +1 -0
- package/dist/accessibility/live-priority.js +27 -0
- package/dist/accessibility/live-priority.js.map +1 -0
- package/dist/accessibility/live-region.d.ts +16 -0
- package/dist/accessibility/live-region.d.ts.map +1 -0
- package/dist/accessibility/live-region.js +20 -0
- package/dist/accessibility/live-region.js.map +1 -0
- package/dist/accessibility/notification.d.ts +15 -0
- package/dist/accessibility/notification.d.ts.map +1 -0
- package/dist/accessibility/notification.js +28 -0
- package/dist/accessibility/notification.js.map +1 -0
- package/dist/app/activate.d.ts +44 -0
- package/dist/app/activate.d.ts.map +1 -0
- package/dist/app/activate.js +64 -0
- package/dist/app/activate.js.map +1 -0
- package/dist/app/activation/classify.d.ts +41 -0
- package/dist/app/activation/classify.d.ts.map +1 -0
- package/dist/app/activation/classify.js +108 -0
- package/dist/app/activation/classify.js.map +1 -0
- package/dist/app/activation/command.d.ts +41 -0
- package/dist/app/activation/command.d.ts.map +1 -0
- package/dist/app/activation/command.js +63 -0
- package/dist/app/activation/command.js.map +1 -0
- package/dist/app/activation/context.d.ts +23 -0
- package/dist/app/activation/context.d.ts.map +1 -0
- package/dist/app/activation/context.js +15 -0
- package/dist/app/activation/context.js.map +1 -0
- package/dist/app/activation/index.d.ts +11 -0
- package/dist/app/activation/index.d.ts.map +1 -0
- package/dist/app/activation/index.js +5 -0
- package/dist/app/activation/index.js.map +1 -0
- package/dist/app/activation/kinds.d.ts +48 -0
- package/dist/app/activation/kinds.d.ts.map +1 -0
- package/dist/app/activation/kinds.js +9 -0
- package/dist/app/activation/kinds.js.map +1 -0
- package/dist/app/activation/login.d.ts +55 -0
- package/dist/app/activation/login.d.ts.map +1 -0
- package/dist/app/activation/login.js +68 -0
- package/dist/app/activation/login.js.map +1 -0
- package/dist/app/activation/native.d.ts +16 -0
- package/dist/app/activation/native.d.ts.map +1 -0
- package/dist/app/activation/native.js +260 -0
- package/dist/app/activation/native.js.map +1 -0
- package/dist/app/activation/protocol-handlers.d.ts +29 -0
- package/dist/app/activation/protocol-handlers.d.ts.map +1 -0
- package/dist/app/activation/protocol-handlers.js +64 -0
- package/dist/app/activation/protocol-handlers.js.map +1 -0
- package/dist/app/activation/receive.d.ts +44 -0
- package/dist/app/activation/receive.d.ts.map +1 -0
- package/dist/app/activation/receive.js +60 -0
- package/dist/app/activation/receive.js.map +1 -0
- package/dist/app/activation/registration.d.ts +104 -0
- package/dist/app/activation/registration.d.ts.map +1 -0
- package/dist/app/activation/registration.js +240 -0
- package/dist/app/activation/registration.js.map +1 -0
- package/dist/app/activation/registry.d.ts +23 -0
- package/dist/app/activation/registry.d.ts.map +1 -0
- package/dist/app/activation/registry.js +2 -0
- package/dist/app/activation/registry.js.map +1 -0
- package/dist/app/activation/scheme.d.ts +36 -0
- package/dist/app/activation/scheme.d.ts.map +1 -0
- package/dist/app/activation/scheme.js +103 -0
- package/dist/app/activation/scheme.js.map +1 -0
- package/dist/app/hotkeys/errors.d.ts +22 -0
- package/dist/app/hotkeys/errors.d.ts.map +1 -0
- package/dist/app/hotkeys/errors.js +23 -0
- package/dist/app/hotkeys/errors.js.map +1 -0
- package/dist/app/hotkeys/index.d.ts +30 -0
- package/dist/app/hotkeys/index.d.ts.map +1 -0
- package/dist/app/hotkeys/index.js +59 -0
- package/dist/app/hotkeys/index.js.map +1 -0
- package/dist/app/hotkeys/keys.d.ts +43 -0
- package/dist/app/hotkeys/keys.d.ts.map +1 -0
- package/dist/app/hotkeys/keys.js +135 -0
- package/dist/app/hotkeys/keys.js.map +1 -0
- package/dist/app/hotkeys/native.d.ts +10 -0
- package/dist/app/hotkeys/native.d.ts.map +1 -0
- package/dist/app/hotkeys/native.js +35 -0
- package/dist/app/hotkeys/native.js.map +1 -0
- package/dist/app/hotkeys/registry.d.ts +67 -0
- package/dist/app/hotkeys/registry.d.ts.map +1 -0
- package/dist/app/hotkeys/registry.js +85 -0
- package/dist/app/hotkeys/registry.js.map +1 -0
- package/dist/app/index.d.ts +6 -0
- package/dist/app/index.d.ts.map +1 -1
- package/dist/app/index.js +3 -0
- package/dist/app/index.js.map +1 -1
- package/dist/app/launch-command.d.ts +46 -0
- package/dist/app/launch-command.d.ts.map +1 -0
- package/dist/app/launch-command.js +61 -0
- package/dist/app/launch-command.js.map +1 -0
- package/dist/app/native.d.ts +16 -0
- package/dist/app/native.d.ts.map +1 -0
- package/dist/app/native.js +48 -0
- package/dist/app/native.js.map +1 -0
- package/dist/app/notification-schedule.d.ts +16 -0
- package/dist/app/notification-schedule.d.ts.map +1 -0
- package/dist/app/notification-schedule.js +20 -0
- package/dist/app/notification-schedule.js.map +1 -0
- package/dist/app/notification-source.d.ts +13 -0
- package/dist/app/notification-source.d.ts.map +1 -1
- package/dist/app/notification-source.js +22 -7
- package/dist/app/notification-source.js.map +1 -1
- package/dist/app/notify.d.ts +37 -1
- package/dist/app/notify.d.ts.map +1 -1
- package/dist/app/notify.js +30 -10
- package/dist/app/notify.js.map +1 -1
- package/dist/app/relaunch.d.ts +46 -0
- package/dist/app/relaunch.d.ts.map +1 -0
- package/dist/app/relaunch.js +45 -0
- package/dist/app/relaunch.js.map +1 -0
- package/dist/app/restart-after-crash.d.ts +57 -0
- package/dist/app/restart-after-crash.d.ts.map +1 -0
- package/dist/app/restart-after-crash.js +81 -0
- package/dist/app/restart-after-crash.js.map +1 -0
- package/dist/app/schedule-bindings.d.ts +4 -0
- package/dist/app/schedule-bindings.d.ts.map +1 -0
- package/dist/app/schedule-bindings.js +4 -0
- package/dist/app/schedule-bindings.js.map +1 -0
- package/dist/app/windows-time.d.ts +10 -0
- package/dist/app/windows-time.d.ts.map +1 -0
- package/dist/app/windows-time.js +13 -0
- package/dist/app/windows-time.js.map +1 -0
- package/dist/bindings/.dynwinrt-managed +1 -1
- package/dist/bindings/microsoft/ui/input/CharacterReceivedEventArgs.d.ts +40 -0
- package/dist/bindings/microsoft/ui/input/CharacterReceivedEventArgs.js +89 -0
- package/dist/bindings/microsoft/ui/input/ContextMenuKeyEventArgs.d.ts +16 -0
- package/dist/bindings/microsoft/ui/input/ContextMenuKeyEventArgs.js +51 -0
- package/dist/bindings/microsoft/ui/input/IInputKeyboardSource2.d.ts +133 -0
- package/dist/bindings/microsoft/ui/input/IInputKeyboardSource2.js +494 -0
- package/dist/bindings/microsoft/ui/input/InputKeyboardSource.d.ts +102 -0
- package/dist/bindings/microsoft/ui/input/InputKeyboardSource.js +346 -0
- package/dist/bindings/microsoft/ui/input/KeyEventArgs.d.ts +46 -0
- package/dist/bindings/microsoft/ui/input/KeyEventArgs.js +100 -0
- package/dist/bindings/microsoft/ui/input/VirtualKeyStates.d.ts +19 -0
- package/dist/bindings/microsoft/ui/input/VirtualKeyStates.js +20 -0
- package/dist/bindings/microsoft/ui/xaml/automation/AutomationProperty.d.ts +10 -0
- package/dist/bindings/microsoft/ui/xaml/automation/AutomationProperty.js +39 -0
- package/dist/bindings/microsoft/ui/xaml/automation/AutomationTextEditChangeType.d.ts +23 -0
- package/dist/bindings/microsoft/ui/xaml/automation/AutomationTextEditChangeType.js +24 -0
- package/dist/bindings/microsoft/ui/xaml/automation/peers/AutomationEvents.d.ts +127 -0
- package/dist/bindings/microsoft/ui/xaml/automation/peers/AutomationEvents.js +128 -0
- package/dist/bindings/microsoft/ui/xaml/automation/peers/AutomationNavigationDirection.d.ts +27 -0
- package/dist/bindings/microsoft/ui/xaml/automation/peers/AutomationNavigationDirection.js +28 -0
- package/dist/bindings/microsoft/ui/xaml/automation/peers/AutomationNotificationKind.d.ts +27 -0
- package/dist/bindings/microsoft/ui/xaml/automation/peers/AutomationNotificationKind.js +28 -0
- package/dist/bindings/microsoft/ui/xaml/automation/peers/AutomationNotificationProcessing.d.ts +27 -0
- package/dist/bindings/microsoft/ui/xaml/automation/peers/AutomationNotificationProcessing.js +28 -0
- package/dist/bindings/microsoft/ui/xaml/automation/peers/AutomationOrientation.d.ts +19 -0
- package/dist/bindings/microsoft/ui/xaml/automation/peers/AutomationOrientation.js +20 -0
- package/dist/bindings/microsoft/ui/xaml/automation/peers/AutomationPeer.d.ts +373 -0
- package/dist/bindings/microsoft/ui/xaml/automation/peers/AutomationPeer.js +741 -0
- package/dist/bindings/microsoft/ui/xaml/automation/peers/AutomationPeerAnnotation.d.ts +57 -0
- package/dist/bindings/microsoft/ui/xaml/automation/peers/AutomationPeerAnnotation.js +216 -0
- package/dist/bindings/microsoft/ui/xaml/automation/peers/AutomationStructureChangeType.d.ts +31 -0
- package/dist/bindings/microsoft/ui/xaml/automation/peers/AutomationStructureChangeType.js +32 -0
- package/dist/bindings/microsoft/ui/xaml/automation/peers/FrameworkElementAutomationPeer.d.ts +142 -0
- package/dist/bindings/microsoft/ui/xaml/automation/peers/FrameworkElementAutomationPeer.js +531 -0
- package/dist/bindings/microsoft/ui/xaml/automation/peers/IAutomationPeer.d.ts +448 -0
- package/dist/bindings/microsoft/ui/xaml/automation/peers/IAutomationPeer.js +1073 -0
- package/dist/bindings/microsoft/ui/xaml/automation/peers/IAutomationPeerProtected.d.ts +32 -0
- package/dist/bindings/microsoft/ui/xaml/automation/peers/IAutomationPeerProtected.js +138 -0
- package/dist/bindings/microsoft/ui/xaml/automation/peers/PatternInterface.d.ts +143 -0
- package/dist/bindings/microsoft/ui/xaml/automation/peers/PatternInterface.js +144 -0
- package/dist/bindings/microsoft/ui/xaml/automation/provider/IRawElementProviderSimple.d.ts +25 -0
- package/dist/bindings/microsoft/ui/xaml/automation/provider/IRawElementProviderSimple.js +110 -0
- package/dist/bindings/microsoft/ui/xaml/input/FindNextElementOptions.d.ts +52 -0
- package/dist/bindings/microsoft/ui/xaml/input/FindNextElementOptions.js +133 -0
- package/dist/bindings/microsoft/ui/xaml/input/FocusManager.d.ts +159 -0
- package/dist/bindings/microsoft/ui/xaml/input/FocusManager.js +360 -0
- package/dist/bindings/microsoft/ui/xaml/input/FocusManagerGotFocusEventArgs.d.ts +21 -0
- package/dist/bindings/microsoft/ui/xaml/input/FocusManagerGotFocusEventArgs.js +58 -0
- package/dist/bindings/microsoft/ui/xaml/input/FocusManagerLostFocusEventArgs.d.ts +21 -0
- package/dist/bindings/microsoft/ui/xaml/input/FocusManagerLostFocusEventArgs.js +58 -0
- package/dist/bindings/microsoft/ui/xaml/input/FocusMovementResult.d.ts +15 -0
- package/dist/bindings/microsoft/ui/xaml/input/FocusMovementResult.js +47 -0
- package/dist/bindings/microsoft/ui/xaml/input/XYFocusNavigationStrategyOverride.d.ts +27 -0
- package/dist/bindings/microsoft/ui/xaml/input/XYFocusNavigationStrategyOverride.js +28 -0
- package/dist/bindings/microsoft/ui/xaml/media/animation/BasicConnectedAnimationConfiguration.d.ts +11 -0
- package/dist/bindings/microsoft/ui/xaml/media/animation/BasicConnectedAnimationConfiguration.js +62 -0
- package/dist/bindings/microsoft/ui/xaml/media/animation/DirectConnectedAnimationConfiguration.d.ts +11 -0
- package/dist/bindings/microsoft/ui/xaml/media/animation/DirectConnectedAnimationConfiguration.js +62 -0
- package/dist/bindings/microsoft/ui/xaml/media/animation/GravityConnectedAnimationConfiguration.d.ts +17 -0
- package/dist/bindings/microsoft/ui/xaml/media/animation/GravityConnectedAnimationConfiguration.js +74 -0
- package/dist/bindings/windows/application-model/AddResourcePackageOptions.d.ts +7 -0
- package/dist/bindings/windows/application-model/AddResourcePackageOptions.js +8 -0
- package/dist/bindings/windows/application-model/IPackageCatalog2.d.ts +50 -0
- package/dist/bindings/windows/application-model/IPackageCatalog2.js +211 -0
- package/dist/bindings/windows/application-model/IPackageCatalog3.d.ts +29 -0
- package/dist/bindings/windows/application-model/IPackageCatalog3.js +136 -0
- package/dist/bindings/windows/application-model/IPackageCatalog4.d.ts +60 -0
- package/dist/bindings/windows/application-model/IPackageCatalog4.js +199 -0
- package/dist/bindings/windows/application-model/PackageCatalog.d.ts +100 -0
- package/dist/bindings/windows/application-model/PackageCatalog.js +440 -0
- package/dist/bindings/windows/application-model/PackageCatalogAddOptionalPackageResult.d.ts +10 -0
- package/dist/bindings/windows/application-model/PackageCatalogAddOptionalPackageResult.js +47 -0
- package/dist/bindings/windows/application-model/PackageCatalogAddResourcePackageResult.d.ts +11 -0
- package/dist/bindings/windows/application-model/PackageCatalogAddResourcePackageResult.js +51 -0
- package/dist/bindings/windows/application-model/PackageCatalogRemoveOptionalPackagesResult.d.ts +10 -0
- package/dist/bindings/windows/application-model/PackageCatalogRemoveOptionalPackagesResult.js +50 -0
- package/dist/bindings/windows/application-model/PackageCatalogRemoveResourcePackagesResult.d.ts +10 -0
- package/dist/bindings/windows/application-model/PackageCatalogRemoveResourcePackagesResult.js +50 -0
- package/dist/bindings/windows/application-model/PackageContentGroupStagingEventArgs.d.ts +15 -0
- package/dist/bindings/windows/application-model/PackageContentGroupStagingEventArgs.js +67 -0
- package/dist/bindings/windows/application-model/PackageInstallingEventArgs.d.ts +13 -0
- package/dist/bindings/windows/application-model/PackageInstallingEventArgs.js +59 -0
- package/dist/bindings/windows/application-model/PackageStagingEventArgs.d.ts +13 -0
- package/dist/bindings/windows/application-model/PackageStagingEventArgs.js +59 -0
- package/dist/bindings/windows/application-model/PackageStatusChangedEventArgs.d.ts +9 -0
- package/dist/bindings/windows/application-model/PackageStatusChangedEventArgs.js +43 -0
- package/dist/bindings/windows/application-model/PackageUninstallingEventArgs.d.ts +13 -0
- package/dist/bindings/windows/application-model/PackageUninstallingEventArgs.js +59 -0
- package/dist/bindings/windows/application-model/PackageUpdatingEventArgs.d.ts +14 -0
- package/dist/bindings/windows/application-model/PackageUpdatingEventArgs.js +63 -0
- package/dist/bindings/windows/application-model/StartupTask.d.ts +15 -0
- package/dist/bindings/windows/application-model/StartupTask.js +115 -0
- package/dist/bindings/windows/application-model/StartupTaskState.d.ts +5 -0
- package/dist/bindings/windows/application-model/StartupTaskState.js +6 -0
- package/dist/bindings/windows/foundation/EventHandler_MicrosoftUIXamlInputFocusManagerGotFocusEventArgs_g9744aab498e22ee2.d.ts +7 -0
- package/dist/bindings/windows/foundation/EventHandler_MicrosoftUIXamlInputFocusManagerGotFocusEventArgs_g9744aab498e22ee2.js +7 -0
- package/dist/bindings/windows/foundation/EventHandler_MicrosoftUIXamlInputFocusManagerLostFocusEventArgs_g1708c8c6742d9f14.d.ts +7 -0
- package/dist/bindings/windows/foundation/EventHandler_MicrosoftUIXamlInputFocusManagerLostFocusEventArgs_g1708c8c6742d9f14.js +7 -0
- package/dist/bindings/windows/foundation/EventHandler_MicrosoftUIXamlInputGettingFocusEventArgs_gcf469412ccadc527.d.ts +7 -0
- package/dist/bindings/windows/foundation/EventHandler_MicrosoftUIXamlInputGettingFocusEventArgs_gcf469412ccadc527.js +7 -0
- package/dist/bindings/windows/foundation/EventHandler_MicrosoftUIXamlInputLosingFocusEventArgs_g01067b38dcf7cb15.d.ts +7 -0
- package/dist/bindings/windows/foundation/EventHandler_MicrosoftUIXamlInputLosingFocusEventArgs_g01067b38dcf7cb15.js +7 -0
- package/dist/bindings/windows/foundation/TypedEventHandler_MicrosoftUIInputInputKeyboardSource_MicrosoftUIInputCharacterReceivedEventArgs_g949756a8af790124.d.ts +8 -0
- package/dist/bindings/windows/foundation/TypedEventHandler_MicrosoftUIInputInputKeyboardSource_MicrosoftUIInputCharacterReceivedEventArgs_g949756a8af790124.js +7 -0
- package/dist/bindings/windows/foundation/TypedEventHandler_MicrosoftUIInputInputKeyboardSource_MicrosoftUIInputContextMenuKeyEventArgs_gfaa54200cb240b39.d.ts +8 -0
- package/dist/bindings/windows/foundation/TypedEventHandler_MicrosoftUIInputInputKeyboardSource_MicrosoftUIInputContextMenuKeyEventArgs_gfaa54200cb240b39.js +7 -0
- package/dist/bindings/windows/foundation/TypedEventHandler_MicrosoftUIInputInputKeyboardSource_MicrosoftUIInputKeyEventArgs_gead6188cb3dd043f.d.ts +8 -0
- package/dist/bindings/windows/foundation/TypedEventHandler_MicrosoftUIInputInputKeyboardSource_MicrosoftUIInputKeyEventArgs_gead6188cb3dd043f.js +7 -0
- package/dist/bindings/windows/foundation/TypedEventHandler_WindowsApplicationModelPackageCatalog_WindowsApplicationModelPackageContentGroupStag_g9de03bf71c8249f6.d.ts +8 -0
- package/dist/bindings/windows/foundation/TypedEventHandler_WindowsApplicationModelPackageCatalog_WindowsApplicationModelPackageContentGroupStag_g9de03bf71c8249f6.js +7 -0
- package/dist/bindings/windows/foundation/TypedEventHandler_WindowsApplicationModelPackageCatalog_WindowsApplicationModelPackageInstallingEventA_g5da5beb9a0e17bc6.d.ts +8 -0
- package/dist/bindings/windows/foundation/TypedEventHandler_WindowsApplicationModelPackageCatalog_WindowsApplicationModelPackageInstallingEventA_g5da5beb9a0e17bc6.js +7 -0
- package/dist/bindings/windows/foundation/TypedEventHandler_WindowsApplicationModelPackageCatalog_WindowsApplicationModelPackageStagingEventArgs_ga7c7c75d178b56a6.d.ts +8 -0
- package/dist/bindings/windows/foundation/TypedEventHandler_WindowsApplicationModelPackageCatalog_WindowsApplicationModelPackageStagingEventArgs_ga7c7c75d178b56a6.js +7 -0
- package/dist/bindings/windows/foundation/TypedEventHandler_WindowsApplicationModelPackageCatalog_WindowsApplicationModelPackageStatusChangedEve_ge8daadde37a07d11.d.ts +8 -0
- package/dist/bindings/windows/foundation/TypedEventHandler_WindowsApplicationModelPackageCatalog_WindowsApplicationModelPackageStatusChangedEve_ge8daadde37a07d11.js +7 -0
- package/dist/bindings/windows/foundation/TypedEventHandler_WindowsApplicationModelPackageCatalog_WindowsApplicationModelPackageUninstallingEven_gb8f6a82edaf89485.d.ts +8 -0
- package/dist/bindings/windows/foundation/TypedEventHandler_WindowsApplicationModelPackageCatalog_WindowsApplicationModelPackageUninstallingEven_gb8f6a82edaf89485.js +7 -0
- package/dist/bindings/windows/foundation/TypedEventHandler_WindowsApplicationModelPackageCatalog_WindowsApplicationModelPackageUpdatingEventArg_gb2c74bce54d9728d.d.ts +8 -0
- package/dist/bindings/windows/foundation/TypedEventHandler_WindowsApplicationModelPackageCatalog_WindowsApplicationModelPackageUpdatingEventArg_gb2c74bce54d9728d.js +7 -0
- package/dist/bindings/windows/foundation/TypedEventHandler_WindowsServicesStoreStoreContext_Object_ga48d68d009829e64.d.ts +7 -0
- package/dist/bindings/windows/foundation/TypedEventHandler_WindowsServicesStoreStoreContext_Object_ga48d68d009829e64.js +7 -0
- package/dist/bindings/windows/foundation/TypedEventHandler_WindowsServicesStoreStorePackageLicense_Object_gc978b769c354e904.d.ts +7 -0
- package/dist/bindings/windows/foundation/TypedEventHandler_WindowsServicesStoreStorePackageLicense_Object_gc978b769c354e904.js +7 -0
- package/dist/bindings/windows/foundation/TypedEventHandler_WindowsServicesStoreStoreQueueItem_Object_g088e531e702509cf.d.ts +7 -0
- package/dist/bindings/windows/foundation/TypedEventHandler_WindowsServicesStoreStoreQueueItem_Object_g088e531e702509cf.js +7 -0
- package/dist/bindings/windows/foundation/TypedEventHandler_WindowsServicesStoreStoreQueueItem_WindowsServicesStoreStoreQueueItemCompletedEventA_g34ce9111d212b7b3.d.ts +8 -0
- package/dist/bindings/windows/foundation/TypedEventHandler_WindowsServicesStoreStoreQueueItem_WindowsServicesStoreStoreQueueItemCompletedEventA_g34ce9111d212b7b3.js +7 -0
- package/dist/bindings/windows/foundation/TypedEventHandler_WindowsUINotificationsToastNotificationManagerForUser_Object_gf9f98c6574495e8c.d.ts +7 -0
- package/dist/bindings/windows/foundation/TypedEventHandler_WindowsUINotificationsToastNotificationManagerForUser_Object_gf9f98c6574495e8c.js +7 -0
- package/dist/bindings/windows/foundation/TypedEventHandler_WindowsUINotificationsToastNotifier_WindowsUINotificationsScheduledToastNotification_g001c9266a166b291.d.ts +8 -0
- package/dist/bindings/windows/foundation/TypedEventHandler_WindowsUINotificationsToastNotifier_WindowsUINotificationsScheduledToastNotification_g001c9266a166b291.js +7 -0
- package/dist/bindings/windows/foundation/collections/IIterable_WindowsApplicationModelPackage_g6cb7c58670977615.d.ts +23 -0
- package/dist/bindings/windows/foundation/collections/IIterable_WindowsApplicationModelPackage_g6cb7c58670977615.js +45 -0
- package/dist/bindings/windows/foundation/collections/IIterable_WindowsServicesStoreStorePackageUpdate_g2b3af8b1803050c9.d.ts +23 -0
- package/dist/bindings/windows/foundation/collections/IIterable_WindowsServicesStoreStorePackageUpdate_g2b3af8b1803050c9.js +45 -0
- package/dist/bindings/windows/foundation/collections/IIterable_WindowsServicesStoreStoreQueueItem_gefa6c894c870ec86.d.ts +23 -0
- package/dist/bindings/windows/foundation/collections/IIterable_WindowsServicesStoreStoreQueueItem_gefa6c894c870ec86.js +45 -0
- package/dist/bindings/windows/foundation/collections/IIterator_WindowsApplicationModelPackage_gfb85903b74efaccc.d.ts +31 -0
- package/dist/bindings/windows/foundation/collections/IIterator_WindowsApplicationModelPackage_gfb85903b74efaccc.js +67 -0
- package/dist/bindings/windows/foundation/collections/IIterator_WindowsServicesStoreStorePackageUpdate_gd49c43fc9590df8e.d.ts +31 -0
- package/dist/bindings/windows/foundation/collections/IIterator_WindowsServicesStoreStorePackageUpdate_gd49c43fc9590df8e.js +67 -0
- package/dist/bindings/windows/foundation/collections/IIterator_WindowsServicesStoreStoreQueueItem_gb618559796af22f1.d.ts +31 -0
- package/dist/bindings/windows/foundation/collections/IIterator_WindowsServicesStoreStoreQueueItem_gb618559796af22f1.js +67 -0
- package/dist/bindings/windows/foundation/collections/IMapView_String_WindowsServicesStoreStoreLicense_g162ecf9ec8342f7c.d.ts +36 -0
- package/dist/bindings/windows/foundation/collections/IMapView_String_WindowsServicesStoreStoreLicense_g162ecf9ec8342f7c.js +71 -0
- package/dist/bindings/windows/foundation/collections/IMapView_String_WindowsServicesStoreStoreProduct_g8ea2e65832c6f5a4.d.ts +36 -0
- package/dist/bindings/windows/foundation/collections/IMapView_String_WindowsServicesStoreStoreProduct_g8ea2e65832c6f5a4.js +71 -0
- package/dist/bindings/windows/foundation/collections/IMap_String_WindowsServicesStoreStoreLicense_gf681f328cc2e3874.d.ts +60 -0
- package/dist/bindings/windows/foundation/collections/IMap_String_WindowsServicesStoreStoreLicense_gf681f328cc2e3874.js +114 -0
- package/dist/bindings/windows/foundation/collections/IMap_String_WindowsServicesStoreStoreProduct_g4d742845f441491c.d.ts +60 -0
- package/dist/bindings/windows/foundation/collections/IMap_String_WindowsServicesStoreStoreProduct_g4d742845f441491c.js +114 -0
- package/dist/bindings/windows/foundation/collections/IVectorView_MicrosoftUIXamlAutomationPeersAutomationPeerAnnotation_g1291d190459cae2b.d.ts +40 -0
- package/dist/bindings/windows/foundation/collections/IVectorView_MicrosoftUIXamlAutomationPeersAutomationPeerAnnotation_g1291d190459cae2b.js +85 -0
- package/dist/bindings/windows/foundation/collections/IVectorView_MicrosoftUIXamlAutomationPeersAutomationPeer_gcf17e6c70dae9df8.d.ts +40 -0
- package/dist/bindings/windows/foundation/collections/IVectorView_MicrosoftUIXamlAutomationPeersAutomationPeer_gcf17e6c70dae9df8.js +85 -0
- package/dist/bindings/windows/foundation/collections/IVectorView_WindowsApplicationModelStartupTask_g213762a6fd9a9707.d.ts +40 -0
- package/dist/bindings/windows/foundation/collections/IVectorView_WindowsApplicationModelStartupTask_g213762a6fd9a9707.js +85 -0
- package/dist/bindings/windows/foundation/collections/IVectorView_WindowsServicesStoreStoreAvailability_geb0561a0f0dd0005.d.ts +40 -0
- package/dist/bindings/windows/foundation/collections/IVectorView_WindowsServicesStoreStoreAvailability_geb0561a0f0dd0005.js +85 -0
- package/dist/bindings/windows/foundation/collections/IVectorView_WindowsServicesStoreStoreImage_g3308691eac26400f.d.ts +40 -0
- package/dist/bindings/windows/foundation/collections/IVectorView_WindowsServicesStoreStoreImage_g3308691eac26400f.js +85 -0
- package/dist/bindings/windows/foundation/collections/IVectorView_WindowsServicesStoreStorePackageUpdateStatus_g48777acdbcb2a5c8.d.ts +54 -0
- package/dist/bindings/windows/foundation/collections/IVectorView_WindowsServicesStoreStorePackageUpdateStatus_g48777acdbcb2a5c8.js +109 -0
- package/dist/bindings/windows/foundation/collections/IVectorView_WindowsServicesStoreStorePackageUpdate_gc7d2f3857622cec3.d.ts +40 -0
- package/dist/bindings/windows/foundation/collections/IVectorView_WindowsServicesStoreStorePackageUpdate_gc7d2f3857622cec3.js +85 -0
- package/dist/bindings/windows/foundation/collections/IVectorView_WindowsServicesStoreStoreQueueItem_g866c0e5377ca52ec.d.ts +40 -0
- package/dist/bindings/windows/foundation/collections/IVectorView_WindowsServicesStoreStoreQueueItem_g866c0e5377ca52ec.js +85 -0
- package/dist/bindings/windows/foundation/collections/IVectorView_WindowsServicesStoreStoreSku_g915fbb9b0e903e7f.d.ts +40 -0
- package/dist/bindings/windows/foundation/collections/IVectorView_WindowsServicesStoreStoreSku_g915fbb9b0e903e7f.js +85 -0
- package/dist/bindings/windows/foundation/collections/IVectorView_WindowsServicesStoreStoreVideo_gcff017d5106c30d1.d.ts +40 -0
- package/dist/bindings/windows/foundation/collections/IVectorView_WindowsServicesStoreStoreVideo_gcff017d5106c30d1.js +85 -0
- package/dist/bindings/windows/foundation/collections/IVectorView_WindowsUINotificationsScheduledToastNotification_gafec5ba714dc8e71.d.ts +40 -0
- package/dist/bindings/windows/foundation/collections/IVectorView_WindowsUINotificationsScheduledToastNotification_gafec5ba714dc8e71.js +85 -0
- package/dist/bindings/windows/foundation/collections/IVectorView_WindowsUINotificationsToastCollection_g3093026941314e4f.d.ts +40 -0
- package/dist/bindings/windows/foundation/collections/IVectorView_WindowsUINotificationsToastCollection_g3093026941314e4f.js +85 -0
- package/dist/bindings/windows/foundation/collections/IVectorView_WindowsUINotificationsToastNotification_g8c913fdb725fef16.d.ts +40 -0
- package/dist/bindings/windows/foundation/collections/IVectorView_WindowsUINotificationsToastNotification_g8c913fdb725fef16.js +85 -0
- package/dist/bindings/windows/foundation/collections/IVector_MicrosoftUIXamlAutomationPeersAutomationPeerAnnotation_g0be2a565a8b48fdc.d.ts +62 -0
- package/dist/bindings/windows/foundation/collections/IVector_MicrosoftUIXamlAutomationPeersAutomationPeerAnnotation_g0be2a565a8b48fdc.js +135 -0
- package/dist/bindings/windows/foundation/collections/IVector_MicrosoftUIXamlAutomationPeersAutomationPeer_gfdcbe941c5dbe60f.d.ts +62 -0
- package/dist/bindings/windows/foundation/collections/IVector_MicrosoftUIXamlAutomationPeersAutomationPeer_gfdcbe941c5dbe60f.js +135 -0
- package/dist/bindings/windows/services/store/IStoreAppLicense2.d.ts +27 -0
- package/dist/bindings/windows/services/store/IStoreAppLicense2.js +116 -0
- package/dist/bindings/windows/services/store/IStoreContext2.d.ts +30 -0
- package/dist/bindings/windows/services/store/IStoreContext2.js +140 -0
- package/dist/bindings/windows/services/store/IStoreContext3.d.ts +107 -0
- package/dist/bindings/windows/services/store/IStoreContext3.js +519 -0
- package/dist/bindings/windows/services/store/IStoreContext4.d.ts +34 -0
- package/dist/bindings/windows/services/store/IStoreContext4.js +167 -0
- package/dist/bindings/windows/services/store/IStoreContext5.d.ts +36 -0
- package/dist/bindings/windows/services/store/IStoreContext5.js +187 -0
- package/dist/bindings/windows/services/store/IStorePackageUpdateResult2.d.ts +28 -0
- package/dist/bindings/windows/services/store/IStorePackageUpdateResult2.js +122 -0
- package/dist/bindings/windows/services/store/IStorePrice2.d.ts +33 -0
- package/dist/bindings/windows/services/store/IStorePrice2.js +140 -0
- package/dist/bindings/windows/services/store/IStoreQueueItem2.d.ts +33 -0
- package/dist/bindings/windows/services/store/IStoreQueueItem2.js +176 -0
- package/dist/bindings/windows/services/store/StoreAcquireLicenseResult.d.ts +10 -0
- package/dist/bindings/windows/services/store/StoreAcquireLicenseResult.js +47 -0
- package/dist/bindings/windows/services/store/StoreAppLicense.d.ts +38 -0
- package/dist/bindings/windows/services/store/StoreAppLicense.js +136 -0
- package/dist/bindings/windows/services/store/StoreAvailability.d.ts +26 -0
- package/dist/bindings/windows/services/store/StoreAvailability.js +134 -0
- package/dist/bindings/windows/services/store/StoreCanAcquireLicenseResult.d.ts +11 -0
- package/dist/bindings/windows/services/store/StoreCanAcquireLicenseResult.js +51 -0
- package/dist/bindings/windows/services/store/StoreCanLicenseStatus.d.ts +9 -0
- package/dist/bindings/windows/services/store/StoreCanLicenseStatus.js +10 -0
- package/dist/bindings/windows/services/store/StoreCollectionData.d.ts +33 -0
- package/dist/bindings/windows/services/store/StoreCollectionData.js +102 -0
- package/dist/bindings/windows/services/store/StoreConsumableResult.d.ts +12 -0
- package/dist/bindings/windows/services/store/StoreConsumableResult.js +55 -0
- package/dist/bindings/windows/services/store/StoreConsumableStatus.d.ts +8 -0
- package/dist/bindings/windows/services/store/StoreConsumableStatus.js +9 -0
- package/dist/bindings/windows/services/store/StoreContext.d.ts +121 -0
- package/dist/bindings/windows/services/store/StoreContext.js +975 -0
- package/dist/bindings/windows/services/store/StoreDurationUnit.d.ts +10 -0
- package/dist/bindings/windows/services/store/StoreDurationUnit.js +11 -0
- package/dist/bindings/windows/services/store/StoreImage.d.ts +13 -0
- package/dist/bindings/windows/services/store/StoreImage.js +59 -0
- package/dist/bindings/windows/services/store/StoreLicense.d.ts +21 -0
- package/dist/bindings/windows/services/store/StoreLicense.js +73 -0
- package/dist/bindings/windows/services/store/StorePackageInstallOptions.d.ts +13 -0
- package/dist/bindings/windows/services/store/StorePackageInstallOptions.js +61 -0
- package/dist/bindings/windows/services/store/StorePackageLicense.d.ts +31 -0
- package/dist/bindings/windows/services/store/StorePackageLicense.js +117 -0
- package/dist/bindings/windows/services/store/StorePackageUpdate.d.ts +10 -0
- package/dist/bindings/windows/services/store/StorePackageUpdate.js +47 -0
- package/dist/bindings/windows/services/store/StorePackageUpdateResult.d.ts +29 -0
- package/dist/bindings/windows/services/store/StorePackageUpdateResult.js +99 -0
- package/dist/bindings/windows/services/store/StorePackageUpdateState.d.ts +5 -0
- package/dist/bindings/windows/services/store/StorePackageUpdateState.js +6 -0
- package/dist/bindings/windows/services/store/StorePackageUpdateStatus.d.ts +5 -0
- package/dist/bindings/windows/services/store/StorePackageUpdateStatus.js +6 -0
- package/dist/bindings/windows/services/store/StorePrice.d.ts +27 -0
- package/dist/bindings/windows/services/store/StorePrice.js +106 -0
- package/dist/bindings/windows/services/store/StoreProduct.d.ts +34 -0
- package/dist/bindings/windows/services/store/StoreProduct.js +201 -0
- package/dist/bindings/windows/services/store/StoreProductOptions.d.ts +13 -0
- package/dist/bindings/windows/services/store/StoreProductOptions.js +60 -0
- package/dist/bindings/windows/services/store/StoreProductPagedQueryResult.d.ts +12 -0
- package/dist/bindings/windows/services/store/StoreProductPagedQueryResult.js +73 -0
- package/dist/bindings/windows/services/store/StoreProductQueryResult.d.ts +10 -0
- package/dist/bindings/windows/services/store/StoreProductQueryResult.js +53 -0
- package/dist/bindings/windows/services/store/StoreProductResult.d.ts +10 -0
- package/dist/bindings/windows/services/store/StoreProductResult.js +47 -0
- package/dist/bindings/windows/services/store/StorePurchaseProperties.d.ts +17 -0
- package/dist/bindings/windows/services/store/StorePurchaseProperties.js +90 -0
- package/dist/bindings/windows/services/store/StorePurchaseResult.d.ts +10 -0
- package/dist/bindings/windows/services/store/StorePurchaseResult.js +47 -0
- package/dist/bindings/windows/services/store/StorePurchaseStatus.d.ts +9 -0
- package/dist/bindings/windows/services/store/StorePurchaseStatus.js +10 -0
- package/dist/bindings/windows/services/store/StoreQueueItem.d.ts +40 -0
- package/dist/bindings/windows/services/store/StoreQueueItem.js +199 -0
- package/dist/bindings/windows/services/store/StoreQueueItemCompletedEventArgs.d.ts +9 -0
- package/dist/bindings/windows/services/store/StoreQueueItemCompletedEventArgs.js +43 -0
- package/dist/bindings/windows/services/store/StoreQueueItemExtendedState.d.ts +19 -0
- package/dist/bindings/windows/services/store/StoreQueueItemExtendedState.js +20 -0
- package/dist/bindings/windows/services/store/StoreQueueItemKind.d.ts +7 -0
- package/dist/bindings/windows/services/store/StoreQueueItemKind.js +8 -0
- package/dist/bindings/windows/services/store/StoreQueueItemState.d.ts +9 -0
- package/dist/bindings/windows/services/store/StoreQueueItemState.js +10 -0
- package/dist/bindings/windows/services/store/StoreQueueItemStatus.d.ts +27 -0
- package/dist/bindings/windows/services/store/StoreQueueItemStatus.js +83 -0
- package/dist/bindings/windows/services/store/StoreRateAndReviewResult.d.ts +12 -0
- package/dist/bindings/windows/services/store/StoreRateAndReviewResult.js +55 -0
- package/dist/bindings/windows/services/store/StoreRateAndReviewStatus.d.ts +8 -0
- package/dist/bindings/windows/services/store/StoreRateAndReviewStatus.js +9 -0
- package/dist/bindings/windows/services/store/StoreSku.d.ts +36 -0
- package/dist/bindings/windows/services/store/StoreSku.js +208 -0
- package/dist/bindings/windows/services/store/StoreSubscriptionInfo.d.ts +13 -0
- package/dist/bindings/windows/services/store/StoreSubscriptionInfo.js +59 -0
- package/dist/bindings/windows/services/store/StoreUninstallStorePackageResult.d.ts +10 -0
- package/dist/bindings/windows/services/store/StoreUninstallStorePackageResult.js +47 -0
- package/dist/bindings/windows/services/store/StoreUninstallStorePackageStatus.d.ts +9 -0
- package/dist/bindings/windows/services/store/StoreUninstallStorePackageStatus.js +10 -0
- package/dist/bindings/windows/services/store/StoreVideo.d.ts +15 -0
- package/dist/bindings/windows/services/store/StoreVideo.js +66 -0
- package/dist/bindings/windows/ui/notifications/IScheduledToastNotification2.d.ts +39 -0
- package/dist/bindings/windows/ui/notifications/IScheduledToastNotification2.js +173 -0
- package/dist/bindings/windows/ui/notifications/IScheduledToastNotification3.d.ts +35 -0
- package/dist/bindings/windows/ui/notifications/IScheduledToastNotification3.js +153 -0
- package/dist/bindings/windows/ui/notifications/IScheduledToastNotification4.d.ts +39 -0
- package/dist/bindings/windows/ui/notifications/IScheduledToastNotification4.js +147 -0
- package/dist/bindings/windows/ui/notifications/IToastNotificationHistory2.d.ts +31 -0
- package/dist/bindings/windows/ui/notifications/IToastNotificationHistory2.js +134 -0
- package/dist/bindings/windows/ui/notifications/IToastNotificationManagerForUser2.d.ts +39 -0
- package/dist/bindings/windows/ui/notifications/IToastNotificationManagerForUser2.js +185 -0
- package/dist/bindings/windows/ui/notifications/IToastNotificationManagerForUser3.d.ts +49 -0
- package/dist/bindings/windows/ui/notifications/IToastNotificationManagerForUser3.js +195 -0
- package/dist/bindings/windows/ui/notifications/IToastNotifier2.d.ts +32 -0
- package/dist/bindings/windows/ui/notifications/IToastNotifier2.js +137 -0
- package/dist/bindings/windows/ui/notifications/IToastNotifier3.d.ts +46 -0
- package/dist/bindings/windows/ui/notifications/IToastNotifier3.js +184 -0
- package/dist/bindings/windows/ui/notifications/NotificationSetting.d.ts +9 -0
- package/dist/bindings/windows/ui/notifications/NotificationSetting.js +10 -0
- package/dist/bindings/windows/ui/notifications/NotificationUpdateResult.d.ts +7 -0
- package/dist/bindings/windows/ui/notifications/NotificationUpdateResult.js +8 -0
- package/dist/bindings/windows/ui/notifications/ScheduledToastNotification.d.ts +51 -0
- package/dist/bindings/windows/ui/notifications/ScheduledToastNotification.js +231 -0
- package/dist/bindings/windows/ui/notifications/ScheduledToastNotificationShowingEventArgs.d.ts +13 -0
- package/dist/bindings/windows/ui/notifications/ScheduledToastNotificationShowingEventArgs.js +58 -0
- package/dist/bindings/windows/ui/notifications/ToastCollection.d.ts +16 -0
- package/dist/bindings/windows/ui/notifications/ToastCollection.js +91 -0
- package/dist/bindings/windows/ui/notifications/ToastCollectionManager.d.ts +17 -0
- package/dist/bindings/windows/ui/notifications/ToastCollectionManager.js +136 -0
- package/dist/bindings/windows/ui/notifications/ToastNotificationHistory.d.ts +24 -0
- package/dist/bindings/windows/ui/notifications/ToastNotificationHistory.js +137 -0
- package/dist/bindings/windows/ui/notifications/ToastNotificationManager.d.ts +19 -0
- package/dist/bindings/windows/ui/notifications/ToastNotificationManager.js +133 -0
- package/dist/bindings/windows/ui/notifications/ToastNotificationManagerForUser.d.ts +40 -0
- package/dist/bindings/windows/ui/notifications/ToastNotificationManagerForUser.js +205 -0
- package/dist/bindings/windows/ui/notifications/ToastNotificationMode.d.ts +7 -0
- package/dist/bindings/windows/ui/notifications/ToastNotificationMode.js +8 -0
- package/dist/bindings/windows/ui/notifications/ToastNotifier.d.ts +41 -0
- package/dist/bindings/windows/ui/notifications/ToastNotifier.js +183 -0
- package/dist/bindings/windows/ui/notifications/ToastTemplateType.d.ts +12 -0
- package/dist/bindings/windows/ui/notifications/ToastTemplateType.js +13 -0
- package/dist/components/convert.d.ts +4 -4
- package/dist/components/convert.d.ts.map +1 -1
- package/dist/components/convert.js +3 -2
- package/dist/components/convert.js.map +1 -1
- package/dist/components/fluent-glyph.d.ts +4 -0
- package/dist/components/fluent-glyph.d.ts.map +1 -1
- package/dist/components/generated/bindings.d.ts +1 -0
- package/dist/components/generated/bindings.d.ts.map +1 -1
- package/dist/components/generated/bindings.js +1 -0
- package/dist/components/generated/bindings.js.map +1 -1
- package/dist/components/generated/controls/FontIcon.svelte.d.ts +1 -1
- package/dist/components/generated/controls/FontIconSource.svelte.d.ts +1 -1
- package/dist/components/generated/controls/UIElement.svelte.d.ts +1 -1
- package/dist/components/generated/enums.d.ts +3 -0
- package/dist/components/generated/enums.d.ts.map +1 -1
- package/dist/components/generated/enums.js +1 -0
- package/dist/components/generated/enums.js.map +1 -1
- package/dist/components/index.d.ts +4 -2
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/runtime.svelte.d.ts +1 -0
- package/dist/components/runtime.svelte.d.ts.map +1 -1
- package/dist/components/runtime.svelte.js +17 -6
- package/dist/components/runtime.svelte.js.map +1 -1
- package/dist/composition/animate.d.ts +78 -0
- package/dist/composition/animate.d.ts.map +1 -0
- package/dist/composition/animate.js +184 -0
- package/dist/composition/animate.js.map +1 -0
- package/dist/composition/expression.d.ts +177 -0
- package/dist/composition/expression.d.ts.map +1 -0
- package/dist/composition/expression.js +330 -0
- package/dist/composition/expression.js.map +1 -0
- package/dist/composition/index.d.ts +11 -0
- package/dist/composition/index.d.ts.map +1 -0
- package/dist/composition/index.js +9 -0
- package/dist/composition/index.js.map +1 -0
- package/dist/composition/property-set.d.ts +36 -0
- package/dist/composition/property-set.d.ts.map +1 -0
- package/dist/composition/property-set.js +81 -0
- package/dist/composition/property-set.js.map +1 -0
- package/dist/composition/spring.d.ts +43 -0
- package/dist/composition/spring.d.ts.map +1 -0
- package/dist/composition/spring.js +23 -0
- package/dist/composition/spring.js.map +1 -0
- package/dist/composition/targets.d.ts +48 -0
- package/dist/composition/targets.d.ts.map +1 -0
- package/dist/composition/targets.js +34 -0
- package/dist/composition/targets.js.map +1 -0
- package/dist/css/index.d.ts +2 -0
- package/dist/css/index.d.ts.map +1 -1
- package/dist/css/index.js +2 -0
- package/dist/css/index.js.map +1 -1
- package/dist/css/parse/box-shadow.d.ts +46 -0
- package/dist/css/parse/box-shadow.d.ts.map +1 -0
- package/dist/css/parse/box-shadow.js +65 -0
- package/dist/css/parse/box-shadow.js.map +1 -0
- package/dist/css/parse/filters.d.ts.map +1 -1
- package/dist/css/parse/filters.js +1 -1
- package/dist/css/parse/filters.js.map +1 -1
- package/dist/css/parse/parser.js +1 -1
- package/dist/css/parse/parser.js.map +1 -1
- package/dist/css/parse/scroll-timeline.d.ts +181 -0
- package/dist/css/parse/scroll-timeline.d.ts.map +1 -0
- package/dist/css/parse/scroll-timeline.js +278 -0
- package/dist/css/parse/scroll-timeline.js.map +1 -0
- package/dist/css/runtime/resources.d.ts +3 -1
- package/dist/css/runtime/resources.d.ts.map +1 -1
- package/dist/css/runtime/resources.js +2 -2
- package/dist/css/runtime/resources.js.map +1 -1
- package/dist/css/runtime/runtime.d.ts +37 -3
- package/dist/css/runtime/runtime.d.ts.map +1 -1
- package/dist/css/runtime/runtime.js +27 -13
- package/dist/css/runtime/runtime.js.map +1 -1
- package/dist/css/runtime/sheet-module.d.ts +3 -1
- package/dist/css/runtime/sheet-module.d.ts.map +1 -1
- package/dist/css/runtime/sheet-module.js +24 -10
- package/dist/css/runtime/sheet-module.js.map +1 -1
- package/dist/css/runtime/visual-state-native.d.ts +10 -0
- package/dist/css/runtime/visual-state-native.d.ts.map +1 -0
- package/dist/css/runtime/visual-state-native.js +112 -0
- package/dist/css/runtime/visual-state-native.js.map +1 -0
- package/dist/css/runtime/visual-states.d.ts +27 -0
- package/dist/css/runtime/visual-states.d.ts.map +1 -0
- package/dist/css/runtime/visual-states.js +83 -0
- package/dist/css/runtime/visual-states.js.map +1 -0
- package/dist/css/scroll-timeline.d.ts +21 -0
- package/dist/css/scroll-timeline.d.ts.map +1 -0
- package/dist/css/scroll-timeline.js +11 -0
- package/dist/css/scroll-timeline.js.map +1 -0
- package/dist/css/shadow.d.ts +23 -0
- package/dist/css/shadow.d.ts.map +1 -0
- package/dist/css/shadow.js +11 -0
- package/dist/css/shadow.js.map +1 -0
- package/dist/css/translate/animation-properties.d.ts +8 -2
- package/dist/css/translate/animation-properties.d.ts.map +1 -1
- package/dist/css/translate/animation-properties.js +202 -15
- package/dist/css/translate/animation-properties.js.map +1 -1
- package/dist/css/translate/build-shorthands.d.ts +3 -2
- package/dist/css/translate/build-shorthands.d.ts.map +1 -1
- package/dist/css/translate/build-shorthands.js +5 -3
- package/dist/css/translate/build-shorthands.js.map +1 -1
- package/dist/css/translate/cascade.d.ts.map +1 -1
- package/dist/css/translate/cascade.js +4 -1
- package/dist/css/translate/cascade.js.map +1 -1
- package/dist/css/translate/easing.d.ts +2 -0
- package/dist/css/translate/easing.d.ts.map +1 -1
- package/dist/css/translate/easing.js +4 -0
- package/dist/css/translate/easing.js.map +1 -1
- package/dist/css/translate/font-face.d.ts +22 -0
- package/dist/css/translate/font-face.d.ts.map +1 -0
- package/dist/css/translate/font-face.js +76 -0
- package/dist/css/translate/font-face.js.map +1 -0
- package/dist/css/translate/handled-members.d.ts +7 -0
- package/dist/css/translate/handled-members.d.ts.map +1 -0
- package/dist/css/translate/handled-members.js +16 -0
- package/dist/css/translate/handled-members.js.map +1 -0
- package/dist/css/translate/lazy-groups.d.ts.map +1 -1
- package/dist/css/translate/lazy-groups.js +41 -1
- package/dist/css/translate/lazy-groups.js.map +1 -1
- package/dist/css/translate/linked-tracks.d.ts +13 -0
- package/dist/css/translate/linked-tracks.d.ts.map +1 -0
- package/dist/css/translate/linked-tracks.js +48 -0
- package/dist/css/translate/linked-tracks.js.map +1 -0
- package/dist/css/translate/scroll-link.d.ts +106 -0
- package/dist/css/translate/scroll-link.d.ts.map +1 -0
- package/dist/css/translate/scroll-link.js +222 -0
- package/dist/css/translate/scroll-link.js.map +1 -0
- package/dist/css/translate/scroll-timeline-properties.d.ts +46 -0
- package/dist/css/translate/scroll-timeline-properties.d.ts.map +1 -0
- package/dist/css/translate/scroll-timeline-properties.js +167 -0
- package/dist/css/translate/scroll-timeline-properties.js.map +1 -0
- package/dist/css/translate/shadow-mode.d.ts +24 -0
- package/dist/css/translate/shadow-mode.d.ts.map +1 -0
- package/dist/css/translate/shadow-mode.js +20 -0
- package/dist/css/translate/shadow-mode.js.map +1 -0
- package/dist/css/translate/shadow-properties.d.ts +50 -0
- package/dist/css/translate/shadow-properties.d.ts.map +1 -0
- package/dist/css/translate/shadow-properties.js +155 -0
- package/dist/css/translate/shadow-properties.js.map +1 -0
- package/dist/css/translate/shorthands.d.ts +4 -2
- package/dist/css/translate/shorthands.d.ts.map +1 -1
- package/dist/css/translate/shorthands.js +3 -2
- package/dist/css/translate/shorthands.js.map +1 -1
- package/dist/css/translate/state-properties.d.ts +52 -0
- package/dist/css/translate/state-properties.d.ts.map +1 -0
- package/dist/css/translate/state-properties.js +115 -0
- package/dist/css/translate/state-properties.js.map +1 -0
- package/dist/css/translate/surface-properties.d.ts +3 -1
- package/dist/css/translate/surface-properties.d.ts.map +1 -1
- package/dist/css/translate/surface-properties.js +21 -17
- package/dist/css/translate/surface-properties.js.map +1 -1
- package/dist/css/translate/translate.d.ts +3 -2
- package/dist/css/translate/translate.d.ts.map +1 -1
- package/dist/css/translate/translate.js +47 -13
- package/dist/css/translate/translate.js.map +1 -1
- package/dist/css/translate/type-ramp.d.ts +8 -0
- package/dist/css/translate/type-ramp.d.ts.map +1 -0
- package/dist/css/translate/type-ramp.js +59 -0
- package/dist/css/translate/type-ramp.js.map +1 -0
- package/dist/css/translate/types.d.ts +7 -0
- package/dist/css/translate/types.d.ts.map +1 -1
- package/dist/css/translate/typography-properties.d.ts +52 -0
- package/dist/css/translate/typography-properties.d.ts.map +1 -0
- package/dist/css/translate/typography-properties.js +430 -0
- package/dist/css/translate/typography-properties.js.map +1 -0
- package/dist/css/translate/unsupported-properties.d.ts +2 -0
- package/dist/css/translate/unsupported-properties.d.ts.map +1 -1
- package/dist/css/translate/unsupported-properties.js +7 -1
- package/dist/css/translate/unsupported-properties.js.map +1 -1
- package/dist/css/translate/view-transition-properties.d.ts +29 -0
- package/dist/css/translate/view-transition-properties.d.ts.map +1 -0
- package/dist/css/translate/view-transition-properties.js +53 -0
- package/dist/css/translate/view-transition-properties.js.map +1 -0
- package/dist/css/translate/winui-only-properties.d.ts.map +1 -1
- package/dist/css/translate/winui-only-properties.js +16 -1
- package/dist/css/translate/winui-only-properties.js.map +1 -1
- package/dist/css/typography.d.ts +2 -0
- package/dist/css/typography.d.ts.map +1 -0
- package/dist/css/typography.js +6 -0
- package/dist/css/typography.js.map +1 -0
- package/dist/css/validate/vscode-css-data.json +262 -1
- package/dist/css/validate/vscode-data.d.ts +5 -0
- package/dist/css/validate/vscode-data.d.ts.map +1 -1
- package/dist/css/validate/vscode-data.js +37 -0
- package/dist/css/validate/vscode-data.js.map +1 -1
- package/dist/css/view-transition.d.ts +13 -0
- package/dist/css/view-transition.d.ts.map +1 -0
- package/dist/css/view-transition.js +12 -0
- package/dist/css/view-transition.js.map +1 -0
- package/dist/css/visual-states.d.ts +7 -0
- package/dist/css/visual-states.d.ts.map +1 -0
- package/dist/css/visual-states.js +16 -0
- package/dist/css/visual-states.js.map +1 -0
- package/dist/dev/dev-window.d.ts +23 -0
- package/dist/dev/dev-window.d.ts.map +1 -0
- package/dist/dev/dev-window.js +42 -0
- package/dist/dev/dev-window.js.map +1 -0
- package/dist/dev/index.d.ts +3 -0
- package/dist/dev/index.d.ts.map +1 -0
- package/dist/dev/index.js +2 -0
- package/dist/dev/index.js.map +1 -0
- package/dist/dev/start-dev.d.ts +47 -0
- package/dist/dev/start-dev.d.ts.map +1 -0
- package/dist/dev/start-dev.js +81 -0
- package/dist/dev/start-dev.js.map +1 -0
- package/dist/devices/bindings.d.ts +4 -1
- package/dist/devices/bindings.d.ts.map +1 -1
- package/dist/devices/bindings.js +4 -1
- package/dist/devices/bindings.js.map +1 -1
- package/dist/devices/displays.svelte.d.ts.map +1 -1
- package/dist/devices/displays.svelte.js +2 -1
- package/dist/devices/displays.svelte.js.map +1 -1
- package/dist/devices/live.svelte.d.ts +3 -24
- package/dist/devices/live.svelte.d.ts.map +1 -1
- package/dist/devices/live.svelte.js +2 -40
- package/dist/devices/live.svelte.js.map +1 -1
- package/dist/devices/power.d.ts +5 -3
- package/dist/devices/power.d.ts.map +1 -1
- package/dist/devices/power.js +3 -2
- package/dist/devices/power.js.map +1 -1
- package/dist/devices/power.svelte.d.ts +27 -0
- package/dist/devices/power.svelte.d.ts.map +1 -1
- package/dist/devices/power.svelte.js +40 -0
- package/dist/devices/power.svelte.js.map +1 -1
- package/dist/devices/subscription.d.ts +35 -0
- package/dist/devices/subscription.d.ts.map +1 -0
- package/dist/devices/subscription.js +47 -0
- package/dist/devices/subscription.js.map +1 -0
- package/dist/devices/system-power.d.ts +54 -0
- package/dist/devices/system-power.d.ts.map +1 -0
- package/dist/devices/system-power.js +66 -0
- package/dist/devices/system-power.js.map +1 -0
- package/dist/enums.d.ts +13 -1
- package/dist/enums.d.ts.map +1 -1
- package/dist/enums.js +13 -1
- package/dist/enums.js.map +1 -1
- package/dist/font-files.d.ts +19 -0
- package/dist/font-files.d.ts.map +1 -0
- package/dist/font-files.js +55 -0
- package/dist/font-files.js.map +1 -0
- package/dist/font-registry.d.ts +24 -0
- package/dist/font-registry.d.ts.map +1 -0
- package/dist/font-registry.js +67 -0
- package/dist/font-registry.js.map +1 -0
- package/dist/font-spelling.d.ts +15 -0
- package/dist/font-spelling.d.ts.map +1 -0
- package/dist/font-spelling.js +27 -0
- package/dist/font-spelling.js.map +1 -0
- package/dist/forms/FormField.svelte +2 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/input/active-element.svelte.d.ts +22 -0
- package/dist/input/active-element.svelte.d.ts.map +1 -0
- package/dist/input/active-element.svelte.js +32 -0
- package/dist/input/active-element.svelte.js.map +1 -0
- package/dist/input/dom-event.d.ts +93 -0
- package/dist/input/dom-event.d.ts.map +1 -0
- package/dist/input/dom-event.js +39 -0
- package/dist/input/dom-event.js.map +1 -0
- package/dist/input/events.d.ts +13 -0
- package/dist/input/events.d.ts.map +1 -0
- package/dist/input/events.js +187 -0
- package/dist/input/events.js.map +1 -0
- package/dist/input/focused-element.d.ts +18 -0
- package/dist/input/focused-element.d.ts.map +1 -0
- package/dist/input/focused-element.js +32 -0
- package/dist/input/focused-element.js.map +1 -0
- package/dist/input/index.d.ts +13 -0
- package/dist/input/index.d.ts.map +1 -0
- package/dist/input/index.js +7 -0
- package/dist/input/index.js.map +1 -0
- package/dist/input/key-names.d.ts +18 -0
- package/dist/input/key-names.d.ts.map +1 -0
- package/dist/input/key-names.js +182 -0
- package/dist/input/key-names.js.map +1 -0
- package/dist/input/keyboard-fields.d.ts +38 -0
- package/dist/input/keyboard-fields.d.ts.map +1 -0
- package/dist/input/keyboard-fields.js +43 -0
- package/dist/input/keyboard-fields.js.map +1 -0
- package/dist/input/move-focus.d.ts +19 -0
- package/dist/input/move-focus.d.ts.map +1 -0
- package/dist/input/move-focus.js +29 -0
- package/dist/input/move-focus.js.map +1 -0
- package/dist/input/pointer-capture.d.ts +47 -0
- package/dist/input/pointer-capture.d.ts.map +1 -0
- package/dist/input/pointer-capture.js +59 -0
- package/dist/input/pointer-capture.js.map +1 -0
- package/dist/input/pointer-fields.d.ts +118 -0
- package/dist/input/pointer-fields.d.ts.map +1 -0
- package/dist/input/pointer-fields.js +141 -0
- package/dist/input/pointer-fields.js.map +1 -0
- package/dist/input/pointer-routes.d.ts +13 -0
- package/dist/input/pointer-routes.d.ts.map +1 -0
- package/dist/input/pointer-routes.js +13 -0
- package/dist/input/pointer-routes.js.map +1 -0
- package/dist/input/trap-focus.d.ts +18 -0
- package/dist/input/trap-focus.d.ts.map +1 -0
- package/dist/input/trap-focus.js +45 -0
- package/dist/input/trap-focus.js.map +1 -0
- package/dist/key-code.d.ts +131 -0
- package/dist/key-code.d.ts.map +1 -0
- package/dist/key-code.js +134 -0
- package/dist/key-code.js.map +1 -0
- package/dist/messaging/page.d.ts +25 -0
- package/dist/messaging/page.d.ts.map +1 -0
- package/dist/messaging/page.js +43 -0
- package/dist/messaging/page.js.map +1 -0
- package/dist/messaging/web-view2/cookies.d.ts +53 -0
- package/dist/messaging/web-view2/cookies.d.ts.map +1 -0
- package/dist/messaging/web-view2/cookies.js +54 -0
- package/dist/messaging/web-view2/cookies.js.map +1 -0
- package/dist/messaging/web-view2/core.d.ts +101 -0
- package/dist/messaging/web-view2/core.d.ts.map +1 -0
- package/dist/messaging/web-view2/core.js +37 -0
- package/dist/messaging/web-view2/core.js.map +1 -0
- package/dist/messaging/web-view2/index.d.ts +9 -0
- package/dist/messaging/web-view2/index.d.ts.map +1 -0
- package/dist/messaging/web-view2/index.js +7 -0
- package/dist/messaging/web-view2/index.js.map +1 -0
- package/dist/messaging/web-view2/policy.d.ts +64 -0
- package/dist/messaging/web-view2/policy.d.ts.map +1 -0
- package/dist/messaging/web-view2/policy.js +96 -0
- package/dist/messaging/web-view2/policy.js.map +1 -0
- package/dist/messaging/web-view2/transport.d.ts +34 -0
- package/dist/messaging/web-view2/transport.d.ts.map +1 -0
- package/dist/messaging/web-view2/transport.js +109 -0
- package/dist/messaging/web-view2/transport.js.map +1 -0
- package/dist/notice/index.d.ts +4 -0
- package/dist/notice/index.d.ts.map +1 -0
- package/dist/notice/index.js +2 -0
- package/dist/notice/index.js.map +1 -0
- package/dist/notice/native.d.ts +18 -0
- package/dist/notice/native.d.ts.map +1 -0
- package/dist/notice/native.js +32 -0
- package/dist/notice/native.js.map +1 -0
- package/dist/notice/notice.d.ts +70 -0
- package/dist/notice/notice.d.ts.map +1 -0
- package/dist/notice/notice.js +95 -0
- package/dist/notice/notice.js.map +1 -0
- package/dist/renderer/host/connected-configuration.d.ts +23 -0
- package/dist/renderer/host/connected-configuration.d.ts.map +1 -0
- package/dist/renderer/host/connected-configuration.js +36 -0
- package/dist/renderer/host/connected-configuration.js.map +1 -0
- package/dist/renderer/host/control.d.ts +8 -0
- package/dist/renderer/host/control.d.ts.map +1 -1
- package/dist/renderer/host/control.js +7 -2
- package/dist/renderer/host/control.js.map +1 -1
- package/dist/renderer/host/element-animation.d.ts.map +1 -1
- package/dist/renderer/host/element-animation.js +2 -15
- package/dist/renderer/host/element-animation.js.map +1 -1
- package/dist/renderer/host/glide-height.d.ts +27 -0
- package/dist/renderer/host/glide-height.d.ts.map +1 -0
- package/dist/renderer/host/glide-height.js +106 -0
- package/dist/renderer/host/glide-height.js.map +1 -0
- package/dist/renderer/host/implicit-layout-animation.d.ts +50 -0
- package/dist/renderer/host/implicit-layout-animation.d.ts.map +1 -0
- package/dist/renderer/host/implicit-layout-animation.js +121 -0
- package/dist/renderer/host/implicit-layout-animation.js.map +1 -0
- package/dist/renderer/host/motion-preference.d.ts +19 -0
- package/dist/renderer/host/motion-preference.d.ts.map +1 -0
- package/dist/renderer/host/motion-preference.js +26 -0
- package/dist/renderer/host/motion-preference.js.map +1 -0
- package/dist/renderer/host/values.d.ts +1 -1
- package/dist/renderer/host/view-transition-names.d.ts +13 -0
- package/dist/renderer/host/view-transition-names.d.ts.map +1 -0
- package/dist/renderer/host/view-transition-names.js +25 -0
- package/dist/renderer/host/view-transition-names.js.map +1 -0
- package/dist/settings/SettingsCard.d.svelte.ts +12 -0
- package/dist/settings/SettingsCard.svelte +80 -0
- package/dist/settings/SettingsExpander.d.svelte.ts +12 -0
- package/dist/settings/SettingsExpander.svelte +46 -0
- package/dist/settings/SettingsRow.svelte +79 -0
- package/dist/settings/index.d.ts +5 -0
- package/dist/settings/index.d.ts.map +1 -0
- package/dist/settings/index.js +7 -0
- package/dist/settings/index.js.map +1 -0
- package/dist/settings/settings-context.d.ts +7 -0
- package/dist/settings/settings-context.d.ts.map +1 -0
- package/dist/settings/settings-context.js +11 -0
- package/dist/settings/settings-context.js.map +1 -0
- package/dist/settings/settings-props.d.ts +40 -0
- package/dist/settings/settings-props.d.ts.map +1 -0
- package/dist/settings/settings-props.js +3 -0
- package/dist/settings/settings-props.js.map +1 -0
- package/dist/store/bindings.d.ts +7 -0
- package/dist/store/bindings.d.ts.map +1 -0
- package/dist/store/bindings.js +10 -0
- package/dist/store/bindings.js.map +1 -0
- package/dist/store/identity.d.ts +24 -0
- package/dist/store/identity.d.ts.map +1 -0
- package/dist/store/identity.js +27 -0
- package/dist/store/identity.js.map +1 -0
- package/dist/store/index.d.ts +10 -0
- package/dist/store/index.d.ts.map +1 -0
- package/dist/store/index.js +8 -0
- package/dist/store/index.js.map +1 -0
- package/dist/store/license.d.ts +63 -0
- package/dist/store/license.d.ts.map +1 -0
- package/dist/store/license.js +95 -0
- package/dist/store/license.js.map +1 -0
- package/dist/store/packages.d.ts +45 -0
- package/dist/store/packages.d.ts.map +1 -0
- package/dist/store/packages.js +80 -0
- package/dist/store/packages.js.map +1 -0
- package/dist/store/reply.d.ts +26 -0
- package/dist/store/reply.d.ts.map +1 -0
- package/dist/store/reply.js +15 -0
- package/dist/store/reply.js.map +1 -0
- package/dist/store/startup.d.ts +23 -0
- package/dist/store/startup.d.ts.map +1 -0
- package/dist/store/startup.js +18 -0
- package/dist/store/startup.js.map +1 -0
- package/dist/store/states.d.ts +50 -0
- package/dist/store/states.d.ts.map +1 -0
- package/dist/store/states.js +56 -0
- package/dist/store/states.js.map +1 -0
- package/dist/store/types.d.ts +102 -0
- package/dist/store/types.d.ts.map +1 -0
- package/dist/store/types.js +2 -0
- package/dist/store/types.js.map +1 -0
- package/dist/store/updates.d.ts +23 -0
- package/dist/store/updates.d.ts.map +1 -0
- package/dist/store/updates.js +18 -0
- package/dist/store/updates.js.map +1 -0
- package/dist/store/window-interop.d.ts +10 -0
- package/dist/store/window-interop.d.ts.map +1 -0
- package/dist/store/window-interop.js +35 -0
- package/dist/store/window-interop.js.map +1 -0
- package/dist/store/windows-backend.d.ts +23 -0
- package/dist/store/windows-backend.d.ts.map +1 -0
- package/dist/store/windows-backend.js +26 -0
- package/dist/store/windows-backend.js.map +1 -0
- package/dist/store/windows-identity.d.ts +22 -0
- package/dist/store/windows-identity.d.ts.map +1 -0
- package/dist/store/windows-identity.js +51 -0
- package/dist/store/windows-identity.js.map +1 -0
- package/dist/store/windows-packages.d.ts +26 -0
- package/dist/store/windows-packages.d.ts.map +1 -0
- package/dist/store/windows-packages.js +70 -0
- package/dist/store/windows-packages.js.map +1 -0
- package/dist/store/windows-store.d.ts +47 -0
- package/dist/store/windows-store.d.ts.map +1 -0
- package/dist/store/windows-store.js +107 -0
- package/dist/store/windows-store.js.map +1 -0
- package/dist/tray/exit-hook.d.ts +3 -0
- package/dist/tray/exit-hook.d.ts.map +1 -0
- package/dist/tray/exit-hook.js +11 -0
- package/dist/tray/exit-hook.js.map +1 -0
- package/dist/tray/native.d.ts.map +1 -1
- package/dist/tray/native.js +5 -41
- package/dist/tray/native.js.map +1 -1
- package/dist/tray/standalone/index.d.ts +11 -0
- package/dist/tray/standalone/index.d.ts.map +1 -0
- package/dist/tray/standalone/index.js +6 -0
- package/dist/tray/standalone/index.js.map +1 -0
- package/dist/tray/standalone/native.d.ts +40 -0
- package/dist/tray/standalone/native.d.ts.map +1 -0
- package/dist/tray/standalone/native.js +96 -0
- package/dist/tray/standalone/native.js.map +1 -0
- package/dist/tray/standalone/standalone-tray.d.ts +44 -0
- package/dist/tray/standalone/standalone-tray.d.ts.map +1 -0
- package/dist/tray/standalone/standalone-tray.js +75 -0
- package/dist/tray/standalone/standalone-tray.js.map +1 -0
- package/dist/tray/tray-icon.d.ts.map +1 -1
- package/dist/tray/tray-icon.js +3 -6
- package/dist/tray/tray-icon.js.map +1 -1
- package/dist/web-apis/animations.d.ts +2 -5
- package/dist/web-apis/animations.d.ts.map +1 -1
- package/dist/web-apis/animations.js +1 -20
- package/dist/web-apis/animations.js.map +1 -1
- package/dist/web-apis/atomic-file.d.ts +19 -0
- package/dist/web-apis/atomic-file.d.ts.map +1 -0
- package/dist/web-apis/atomic-file.js +28 -0
- package/dist/web-apis/atomic-file.js.map +1 -0
- package/dist/web-apis/badge-glyph.d.ts +19 -0
- package/dist/web-apis/badge-glyph.d.ts.map +1 -0
- package/dist/web-apis/badge-glyph.js +17 -0
- package/dist/web-apis/badge-glyph.js.map +1 -0
- package/dist/web-apis/badging.d.ts +8 -18
- package/dist/web-apis/badging.d.ts.map +1 -1
- package/dist/web-apis/badging.js +25 -17
- package/dist/web-apis/badging.js.map +1 -1
- package/dist/web-apis/contacts.d.ts +1 -1
- package/dist/web-apis/fonts.d.ts +113 -0
- package/dist/web-apis/fonts.d.ts.map +1 -0
- package/dist/web-apis/fonts.js +237 -0
- package/dist/web-apis/fonts.js.map +1 -0
- package/dist/web-apis/geolocation.d.ts +1 -1
- package/dist/web-apis/keyframe-input.d.ts +15 -0
- package/dist/web-apis/keyframe-input.d.ts.map +1 -0
- package/dist/web-apis/keyframe-input.js +30 -0
- package/dist/web-apis/keyframe-input.js.map +1 -0
- package/dist/web-apis/notification.d.ts +48 -1
- package/dist/web-apis/notification.d.ts.map +1 -1
- package/dist/web-apis/notification.js +98 -4
- package/dist/web-apis/notification.js.map +1 -1
- package/dist/web-apis/page.d.ts +20 -4
- package/dist/web-apis/page.d.ts.map +1 -1
- package/dist/web-apis/page.js +54 -8
- package/dist/web-apis/page.js.map +1 -1
- package/dist/web-apis/scroll-timeline.d.ts +127 -0
- package/dist/web-apis/scroll-timeline.d.ts.map +1 -0
- package/dist/web-apis/scroll-timeline.js +415 -0
- package/dist/web-apis/scroll-timeline.js.map +1 -0
- package/dist/web-apis/view-transitions.d.ts +80 -0
- package/dist/web-apis/view-transitions.d.ts.map +1 -0
- package/dist/web-apis/view-transitions.js +299 -0
- package/dist/web-apis/view-transitions.js.map +1 -0
- package/dist/web-apis/web-storage.d.ts +1 -18
- package/dist/web-apis/web-storage.d.ts.map +1 -1
- package/dist/web-apis/web-storage.js +1 -26
- package/dist/web-apis/web-storage.js.map +1 -1
- package/dist/web-apis/window-controls-overlay.d.ts +105 -0
- package/dist/web-apis/window-controls-overlay.d.ts.map +1 -0
- package/dist/web-apis/window-controls-overlay.js +147 -0
- package/dist/web-apis/window-controls-overlay.js.map +1 -0
- package/dist/web-apis/window-geometry.d.ts +39 -0
- package/dist/web-apis/window-geometry.d.ts.map +1 -0
- package/dist/web-apis/window-geometry.js +95 -0
- package/dist/web-apis/window-geometry.js.map +1 -0
- package/dist/win2d/Canvas.svelte +1 -0
- package/dist/win2d/child-slot.d.ts +13 -0
- package/dist/win2d/child-slot.d.ts.map +1 -0
- package/dist/win2d/child-slot.js +29 -0
- package/dist/win2d/child-slot.js.map +1 -0
- package/dist/win2d/context-2d/pointer-events.d.ts +1 -2
- package/dist/win2d/context-2d/pointer-events.d.ts.map +1 -1
- package/dist/win2d/context-2d/pointer-events.js +13 -102
- package/dist/win2d/context-2d/pointer-events.js.map +1 -1
- package/dist/win2d/element-lifecycle.d.ts +37 -0
- package/dist/win2d/element-lifecycle.d.ts.map +1 -0
- package/dist/win2d/element-lifecycle.js +73 -0
- package/dist/win2d/element-lifecycle.js.map +1 -0
- package/dist/win2d/element-shadow.d.ts +26 -0
- package/dist/win2d/element-shadow.d.ts.map +1 -0
- package/dist/win2d/element-shadow.js +128 -0
- package/dist/win2d/element-shadow.js.map +1 -0
- package/dist/win2d/element-visual.d.ts +1 -3
- package/dist/win2d/element-visual.d.ts.map +1 -1
- package/dist/win2d/element-visual.js +18 -72
- package/dist/win2d/element-visual.js.map +1 -1
- package/dist/win2d/scroll-host.d.ts +27 -0
- package/dist/win2d/scroll-host.d.ts.map +1 -0
- package/dist/win2d/scroll-host.js +293 -0
- package/dist/win2d/scroll-host.js.map +1 -0
- package/dist/win2d/scroll-link.d.ts +57 -0
- package/dist/win2d/scroll-link.d.ts.map +1 -0
- package/dist/win2d/scroll-link.js +165 -0
- package/dist/win2d/scroll-link.js.map +1 -0
- package/dist/win2d/shadow-geometry.d.ts +46 -0
- package/dist/win2d/shadow-geometry.d.ts.map +1 -0
- package/dist/win2d/shadow-geometry.js +82 -0
- package/dist/win2d/shadow-geometry.js.map +1 -0
- package/dist/win2d/shadow-host.d.ts +13 -0
- package/dist/win2d/shadow-host.d.ts.map +1 -0
- package/dist/win2d/shadow-host.js +23 -0
- package/dist/win2d/shadow-host.js.map +1 -0
- package/dist/win2d/shadow-receivers.d.ts +13 -0
- package/dist/win2d/shadow-receivers.d.ts.map +1 -0
- package/dist/win2d/shadow-receivers.js +56 -0
- package/dist/win2d/shadow-receivers.js.map +1 -0
- package/dist/win32-calls.d.ts +3 -1
- package/dist/win32-calls.d.ts.map +1 -1
- package/dist/win32-calls.js +3 -2
- package/dist/win32-calls.js.map +1 -1
- package/dist/win32-icons.d.ts +36 -0
- package/dist/win32-icons.d.ts.map +1 -0
- package/dist/win32-icons.js +143 -0
- package/dist/win32-icons.js.map +1 -0
- package/dist/window/anchor.d.ts +92 -0
- package/dist/window/anchor.d.ts.map +1 -0
- package/dist/window/anchor.js +100 -0
- package/dist/window/anchor.js.map +1 -0
- package/dist/window/apply-chrome.d.ts +8 -1
- package/dist/window/apply-chrome.d.ts.map +1 -1
- package/dist/window/apply-chrome.js +16 -2
- package/dist/window/apply-chrome.js.map +1 -1
- package/dist/window/backdrop.d.ts +4 -1
- package/dist/window/backdrop.d.ts.map +1 -1
- package/dist/window/backdrop.js +10 -2
- package/dist/window/backdrop.js.map +1 -1
- package/dist/window/badge-icon.d.ts +37 -0
- package/dist/window/badge-icon.d.ts.map +1 -0
- package/dist/window/badge-icon.js +196 -0
- package/dist/window/badge-icon.js.map +1 -0
- package/dist/window/chrome.d.ts +10 -0
- package/dist/window/chrome.d.ts.map +1 -1
- package/dist/window/chrome.js +8 -0
- package/dist/window/chrome.js.map +1 -1
- package/dist/window/create-window.d.ts +1 -1
- package/dist/window/create-window.d.ts.map +1 -1
- package/dist/window/create-window.js +3 -1
- package/dist/window/create-window.js.map +1 -1
- package/dist/window/css-pixels.d.ts +14 -0
- package/dist/window/css-pixels.d.ts.map +1 -0
- package/dist/window/css-pixels.js +12 -0
- package/dist/window/css-pixels.js.map +1 -0
- package/dist/window/dock.d.ts +51 -0
- package/dist/window/dock.d.ts.map +1 -0
- package/dist/window/dock.js +69 -0
- package/dist/window/dock.js.map +1 -0
- package/dist/window/index.d.ts +5 -1
- package/dist/window/index.d.ts.map +1 -1
- package/dist/window/index.js +3 -1
- package/dist/window/index.js.map +1 -1
- package/dist/window/message-hooks.d.ts +26 -0
- package/dist/window/message-hooks.d.ts.map +1 -0
- package/dist/window/message-hooks.js +46 -0
- package/dist/window/message-hooks.js.map +1 -0
- package/dist/window/message-pump.d.ts +3 -1
- package/dist/window/message-pump.d.ts.map +1 -1
- package/dist/window/message-pump.js +4 -1
- package/dist/window/message-pump.js.map +1 -1
- package/dist/window/native.d.ts +40 -0
- package/dist/window/native.d.ts.map +1 -1
- package/dist/window/native.js +144 -6
- package/dist/window/native.js.map +1 -1
- package/dist/window/reduced-motion.d.ts +7 -0
- package/dist/window/reduced-motion.d.ts.map +1 -0
- package/dist/window/reduced-motion.js +15 -0
- package/dist/window/reduced-motion.js.map +1 -0
- package/dist/window/system-dispatcher-queue.d.ts +7 -0
- package/dist/window/system-dispatcher-queue.d.ts.map +1 -0
- package/dist/window/system-dispatcher-queue.js +56 -0
- package/dist/window/system-dispatcher-queue.js.map +1 -0
- package/dist/window/taskbar-calls.d.ts +58 -0
- package/dist/window/taskbar-calls.d.ts.map +1 -0
- package/dist/window/taskbar-calls.js +77 -0
- package/dist/window/taskbar-calls.js.map +1 -0
- package/dist/window/taskbar-native.d.ts +9 -0
- package/dist/window/taskbar-native.d.ts.map +1 -0
- package/dist/window/taskbar-native.js +119 -0
- package/dist/window/taskbar-native.js.map +1 -0
- package/dist/window/taskbar.d.ts +104 -0
- package/dist/window/taskbar.d.ts.map +1 -0
- package/dist/window/taskbar.js +117 -0
- package/dist/window/taskbar.js.map +1 -0
- package/dist/window/transparent-backdrop.d.ts +18 -0
- package/dist/window/transparent-backdrop.d.ts.map +1 -0
- package/dist/window/transparent-backdrop.js +71 -0
- package/dist/window/transparent-backdrop.js.map +1 -0
- package/dist/window/window-handle.d.ts +34 -0
- package/dist/window/window-handle.d.ts.map +1 -1
- package/dist/window/window-handle.js +55 -0
- package/dist/window/window-handle.js.map +1 -1
- package/dist/window/window-host.svelte.d.ts +34 -13
- package/dist/window/window-host.svelte.d.ts.map +1 -1
- package/dist/window/window-host.svelte.js +220 -18
- package/dist/window/window-host.svelte.js.map +1 -1
- package/dist/window/window-state-keeper.d.ts +49 -0
- package/dist/window/window-state-keeper.d.ts.map +1 -0
- package/dist/window/window-state-keeper.js +164 -0
- package/dist/window/window-state-keeper.js.map +1 -0
- package/dist/window/window-state.d.ts +83 -0
- package/dist/window/window-state.d.ts.map +1 -0
- package/dist/window/window-state.js +155 -0
- package/dist/window/window-state.js.map +1 -0
- package/dist/winui.d.ts +7 -0
- package/dist/winui.d.ts.map +1 -1
- package/dist/winui.js +7 -0
- package/dist/winui.js.map +1 -1
- package/package.json +123 -7
- package/src/accessibility/announce.ts +67 -0
- package/src/accessibility/audit/audit-tree.ts +199 -0
- package/src/accessibility/audit/contrast.ts +149 -0
- package/src/accessibility/audit/index.ts +27 -0
- package/src/accessibility/audit/rules.ts +110 -0
- package/src/accessibility/audit/visual-tree-host.ts +179 -0
- package/src/accessibility/index.ts +8 -0
- package/src/accessibility/live-priority.ts +32 -0
- package/src/accessibility/live-region.ts +27 -0
- package/src/accessibility/notification.ts +35 -0
- package/src/app/activate.ts +88 -0
- package/src/app/activation/classify.ts +130 -0
- package/src/app/activation/command.ts +83 -0
- package/src/app/activation/context.ts +29 -0
- package/src/app/activation/index.ts +10 -0
- package/src/app/activation/kinds.ts +63 -0
- package/src/app/activation/login.ts +90 -0
- package/src/app/activation/native.ts +301 -0
- package/src/app/activation/protocol-handlers.ts +83 -0
- package/src/app/activation/receive.ts +106 -0
- package/src/app/activation/registration.ts +305 -0
- package/src/app/activation/registry.ts +26 -0
- package/src/app/activation/scheme.ts +115 -0
- package/src/app/hotkeys/errors.ts +30 -0
- package/src/app/hotkeys/index.ts +76 -0
- package/src/app/hotkeys/keys.ts +194 -0
- package/src/app/hotkeys/native.ts +36 -0
- package/src/app/hotkeys/registry.ts +153 -0
- package/src/app/index.ts +6 -0
- package/src/app/launch-command.ts +80 -0
- package/src/app/native.ts +58 -0
- package/src/app/notification-schedule.ts +25 -0
- package/src/app/notification-source.ts +23 -8
- package/src/app/notify.ts +65 -10
- package/src/app/relaunch.ts +79 -0
- package/src/app/restart-after-crash.ts +111 -0
- package/src/app/schedule-bindings.ts +3 -0
- package/src/app/windows-time.ts +13 -0
- package/src/components/convert.ts +6 -5
- package/src/components/fluent-glyph.ts +6 -0
- package/src/components/generated/bindings.ts +1 -0
- package/src/components/generated/controls/FontIcon.svelte.ts +1 -1
- package/src/components/generated/controls/FontIconSource.svelte.ts +1 -1
- package/src/components/generated/controls/UIElement.svelte.ts +1 -1
- package/src/components/generated/enums.ts +3 -0
- package/src/components/index.ts +4 -2
- package/src/components/runtime.svelte.ts +18 -6
- package/src/composition/animate.ts +263 -0
- package/src/composition/expression.ts +492 -0
- package/src/composition/index.ts +36 -0
- package/src/composition/property-set.ts +104 -0
- package/src/composition/spring.ts +57 -0
- package/src/composition/targets.ts +74 -0
- package/src/css/API.md +321 -2
- package/src/css/index.ts +2 -0
- package/src/css/parse/box-shadow.ts +90 -0
- package/src/css/parse/filters.ts +1 -1
- package/src/css/parse/parser.ts +1 -1
- package/src/css/parse/scroll-timeline.ts +373 -0
- package/src/css/runtime/resources.ts +2 -2
- package/src/css/runtime/runtime.ts +52 -16
- package/src/css/runtime/sheet-module.ts +31 -11
- package/src/css/runtime/visual-state-native.ts +161 -0
- package/src/css/runtime/visual-states.ts +117 -0
- package/src/css/scroll-timeline.ts +12 -0
- package/src/css/shadow.ts +12 -0
- package/src/css/translate/animation-properties.ts +240 -15
- package/src/css/translate/build-shorthands.ts +5 -3
- package/src/css/translate/cascade.ts +5 -1
- package/src/css/translate/easing.ts +5 -0
- package/src/css/translate/font-face.ts +97 -0
- package/src/css/translate/handled-members.ts +16 -0
- package/src/css/translate/lazy-groups.ts +43 -1
- package/src/css/translate/linked-tracks.ts +56 -0
- package/src/css/translate/scroll-link.ts +317 -0
- package/src/css/translate/scroll-timeline-properties.ts +222 -0
- package/src/css/translate/shadow-mode.ts +29 -0
- package/src/css/translate/shadow-properties.ts +199 -0
- package/src/css/translate/shorthands.ts +4 -3
- package/src/css/translate/state-properties.ts +151 -0
- package/src/css/translate/surface-properties.ts +22 -17
- package/src/css/translate/translate.ts +69 -17
- package/src/css/translate/type-ramp.ts +65 -0
- package/src/css/translate/types.ts +8 -0
- package/src/css/translate/typography-properties.ts +533 -0
- package/src/css/translate/unsupported-properties.ts +8 -1
- package/src/css/translate/view-transition-properties.ts +70 -0
- package/src/css/translate/winui-only-properties.ts +16 -1
- package/src/css/typography.ts +6 -0
- package/src/css/validate/vscode-data.ts +44 -0
- package/src/css/view-transition.ts +13 -0
- package/src/css/visual-states.ts +17 -0
- package/src/dev/dev-window.ts +63 -0
- package/src/dev/index.ts +2 -0
- package/src/dev/start-dev.ts +120 -0
- package/src/devices/bindings.ts +4 -1
- package/src/devices/displays.svelte.ts +2 -1
- package/src/devices/live.svelte.ts +4 -54
- package/src/devices/power.svelte.ts +51 -0
- package/src/devices/power.ts +12 -3
- package/src/devices/subscription.ts +60 -0
- package/src/devices/system-power.ts +95 -0
- package/src/enums.ts +13 -1
- package/src/font-files.ts +68 -0
- package/src/font-registry.ts +79 -0
- package/src/font-spelling.ts +29 -0
- package/src/index.ts +2 -0
- package/src/input/active-element.svelte.ts +44 -0
- package/src/input/dom-event.ts +121 -0
- package/src/input/events.ts +272 -0
- package/src/input/focused-element.ts +34 -0
- package/src/input/index.ts +12 -0
- package/src/input/key-names.ts +231 -0
- package/src/input/keyboard-fields.ts +71 -0
- package/src/input/move-focus.ts +35 -0
- package/src/input/pointer-capture.ts +92 -0
- package/src/input/pointer-fields.ts +212 -0
- package/src/input/pointer-routes.ts +16 -0
- package/src/input/trap-focus.ts +56 -0
- package/src/key-code.ts +139 -0
- package/src/messaging/page.ts +61 -0
- package/src/messaging/web-view2/cookies.ts +109 -0
- package/src/messaging/web-view2/core.ts +126 -0
- package/src/messaging/web-view2/index.ts +14 -0
- package/src/messaging/web-view2/policy.ts +127 -0
- package/src/messaging/web-view2/transport.ts +137 -0
- package/src/notice/index.ts +3 -0
- package/src/notice/native.ts +48 -0
- package/src/notice/notice.ts +148 -0
- package/src/renderer/host/connected-configuration.ts +49 -0
- package/src/renderer/host/control.ts +7 -2
- package/src/renderer/host/element-animation.ts +2 -16
- package/src/renderer/host/glide-height.ts +147 -0
- package/src/renderer/host/implicit-layout-animation.ts +190 -0
- package/src/renderer/host/motion-preference.ts +31 -0
- package/src/renderer/host/view-transition-names.ts +30 -0
- package/src/settings/SettingsCard.d.svelte.ts +12 -0
- package/src/settings/SettingsExpander.d.svelte.ts +12 -0
- package/src/settings/index.ts +9 -0
- package/src/settings/settings-context.ts +13 -0
- package/src/settings/settings-props.ts +57 -0
- package/src/store/bindings.ts +11 -0
- package/src/store/identity.ts +36 -0
- package/src/store/index.ts +21 -0
- package/src/store/license.ts +136 -0
- package/src/store/packages.ts +94 -0
- package/src/store/reply.ts +29 -0
- package/src/store/startup.ts +29 -0
- package/src/store/states.ts +72 -0
- package/src/store/types.ts +122 -0
- package/src/store/updates.ts +29 -0
- package/src/store/window-interop.ts +40 -0
- package/src/store/windows-backend.ts +27 -0
- package/src/store/windows-identity.ts +58 -0
- package/src/store/windows-packages.ts +91 -0
- package/src/store/windows-store.ts +126 -0
- package/src/tray/exit-hook.ts +13 -0
- package/src/tray/native.ts +5 -41
- package/src/tray/standalone/index.ts +16 -0
- package/src/tray/standalone/native.ts +144 -0
- package/src/tray/standalone/standalone-tray.ts +124 -0
- package/src/tray/tray-icon.ts +3 -8
- package/src/web-apis/animations.ts +4 -31
- package/src/web-apis/atomic-file.ts +36 -0
- package/src/web-apis/badge-glyph.ts +18 -0
- package/src/web-apis/badging.ts +37 -19
- package/src/web-apis/fonts.ts +277 -0
- package/src/web-apis/keyframe-input.ts +43 -0
- package/src/web-apis/notification.ts +114 -4
- package/src/web-apis/page.ts +70 -8
- package/src/web-apis/scroll-timeline.ts +544 -0
- package/src/web-apis/view-transitions.ts +409 -0
- package/src/web-apis/web-storage.ts +2 -35
- package/src/web-apis/window-controls-overlay.ts +213 -0
- package/src/web-apis/window-geometry.ts +106 -0
- package/src/win2d/child-slot.ts +43 -0
- package/src/win2d/context-2d/pointer-events.ts +14 -119
- package/src/win2d/element-lifecycle.ts +97 -0
- package/src/win2d/element-shadow.ts +167 -0
- package/src/win2d/element-visual.ts +19 -84
- package/src/win2d/scroll-host.ts +364 -0
- package/src/win2d/scroll-link.ts +227 -0
- package/src/win2d/shadow-geometry.ts +98 -0
- package/src/win2d/shadow-host.ts +26 -0
- package/src/win2d/shadow-receivers.ts +82 -0
- package/src/win32-calls.ts +6 -2
- package/src/win32-icons.ts +162 -0
- package/src/window/anchor.ts +156 -0
- package/src/window/apply-chrome.ts +22 -0
- package/src/window/backdrop.ts +11 -2
- package/src/window/badge-icon.ts +234 -0
- package/src/window/chrome.ts +12 -0
- package/src/window/create-window.ts +5 -1
- package/src/window/css-pixels.ts +18 -0
- package/src/window/dock.ts +99 -0
- package/src/window/index.ts +5 -1
- package/src/window/message-hooks.ts +63 -0
- package/src/window/message-pump.ts +8 -1
- package/src/window/native.ts +174 -6
- package/src/window/reduced-motion.ts +14 -0
- package/src/window/system-dispatcher-queue.ts +61 -0
- package/src/window/taskbar-calls.ts +111 -0
- package/src/window/taskbar-native.ts +140 -0
- package/src/window/taskbar.ts +174 -0
- package/src/window/transparent-backdrop.ts +75 -0
- package/src/window/window-handle.ts +62 -0
- package/src/window/window-host.svelte.ts +300 -31
- package/src/window/window-state-keeper.ts +205 -0
- package/src/window/window-state.ts +207 -0
- package/src/winui.ts +7 -0
- package/web-types.json +10625 -1484
package/API.md
CHANGED
|
@@ -12,31 +12,45 @@ monorepo needs no build step (the repository is a pnpm workspace, see
|
|
|
12
12
|
|
|
13
13
|
| Specifier | File | What |
|
|
14
14
|
|---|---|---|
|
|
15
|
-
| `winui-svelte` | `src/index.ts` | `control`, `withControl`, `elementRef`, `elementSize`, `elementTheme`, `focusElement`, `mountControl`, `registerControls`, `setClassHandler`, `dispatch` / `flush` / `onFlush`, the value helpers |
|
|
15
|
+
| `winui-svelte` | `src/index.ts` | `control`, `withControl`, `elementRef`, `elementSize`, `elementTheme`, `focusElement`, `glideHeight`, `mountControl`, `registerControls`, `setClassHandler`, `dispatch` / `flush` / `onFlush`, the value helpers |
|
|
16
16
|
| `winui-svelte/components` | `src/components/generated/index.ts` | every WinUI 3 control as a component (`StackPanel`, `ToggleSwitch`, ...) and its props type (`ToggleSwitchComponentProps`); `xamlOf`, `goToState`, `installXaml`, `resourceDictionaryOf`; importing it registers the generated bindings with the renderer |
|
|
17
17
|
| `winui-svelte/state` | `src/state/index.ts` | `createHostChannel()` (its `messaging` is the typed link), `hostState()`, `StateProtocol`, the transports (stdio, MessagePort, in-memory), `diff` / `applyOps` (see `src/state/README.md`) |
|
|
18
18
|
| `winui-svelte/host` | `src/renderer/host/host.ts` | `renderer`, the renderer WinUI controls are built through (`mountControl` makes it the active one), and the mount-target plumbing below; not for app code |
|
|
19
|
+
| `winui-svelte/scroll-timeline` | `src/web-apis/scroll-timeline.ts` | `installScrollTimeline()`: `ScrollTimeline`, `ViewTimeline` and `element.animate(keyframes, { timeline })` over Composition (the CSS side is `winui-svelte/css/scroll-timeline`, which a sheet that uses `animation-timeline` imports) |
|
|
20
|
+
| `winui-svelte/view-transitions` | `src/web-apis/view-transitions.ts` | `installViewTransitions()`: `document.startViewTransition` and `ViewTransition` over WinUI's connected animations (the CSS side is `winui-svelte/css/view-transition`, which a sheet or style attribute that sets `view-transition-name` imports) |
|
|
19
21
|
| `winui-svelte/element-animation` | `src/renderer/host/element-animation.ts` | `enableElementAnimation()`: what Svelte's `transition:`, `in:`, `out:`, `animate:` and `svelte/motion` ask of an element, on WinUI controls (the Vite plugin calls it from a component that uses them; otherwise not bundled) |
|
|
20
22
|
| `winui-svelte/attached-owners` | `src/components/attached-owners.ts` | `preloadAttachedOwners(names)`: loads the modules attached properties (`canvasLeft`, `gridRow`) are written through (the Vite plugin calls it from a component whose markup or script names one, so the property is set with the control; a prop named nowhere, built from a computed key, needs `await preloadAttachedOwners(["Canvas"])` first, or its control throws) |
|
|
23
|
+
| `winui-svelte/settings` | `src/settings/index.ts` | `SettingsCard`, `SettingsExpander`: Fluent settings cards after the Community Toolkit's (opt-in) |
|
|
24
|
+
| `winui-svelte/implicit-layout-animation` | `src/renderer/host/implicit-layout-animation.ts` | `implicitLayoutAnimation({ duration, easing })`, `LayoutEasing`: children slide to their new places when the layout moves them (opt-in) |
|
|
21
25
|
| `winui-svelte/connected-animation` | `src/renderer/host/connected-animation.ts` | `connectElement({ key, element })`, `startConnected({ key, element })`: WinUI's connected animation between two pages (opt-in) |
|
|
26
|
+
| `winui-svelte/composition` | `src/composition/index.ts` | `animateOnCompositor`, `compositorAnimation`, `visualReference`, `createPropertySet`, the typed expression builder and `scalarSpring` / `vector2Spring` / `vector3Spring`: expression and spring animations on the compositor (opt-in, see "Composition animations") |
|
|
22
27
|
| `winui-svelte/keyed-list` | `src/renderer/list/keyed-list.ts` | `syncKeyed()`: sync a native collection to wanted keys, touching only what changed |
|
|
23
28
|
| `winui-svelte/state` | `src/state/index.ts` | `createHostChannel()`, `hostState()`, the transports (see `src/state/README.md`) |
|
|
24
29
|
| `winui-svelte/messaging` | `src/messaging/index.ts` | `defineMessaging(transport)`: typed `sendMessage` / `onMessage` over a ProtocolMap, as @webext-core/messaging; the state channel is built on it |
|
|
30
|
+
| `winui-svelte/messaging/web-view2` | `src/messaging/web-view2/index.ts` | `webView2Transport({ control })` and the typed `CoreWebView2` helpers (opt-in, see "WebView2 bridge") |
|
|
31
|
+
| `winui-svelte/messaging/page` | `src/messaging/page.ts` | `createPageTransport()`: the web page's end of the link, no WinUI import, safe for a browser bundle |
|
|
25
32
|
| `winui-svelte/vite` | `src/vite/index.ts` | `winuiSvelte()` Vite plugin, `startModuleServer()`, `buildApp()` (the production bundle), compile-error formatting |
|
|
33
|
+
| `winui-svelte/dev` | `src/dev/index.ts` | `startDev()`, the dev loop in one call: Windows App SDK, dev server and the window's thread |
|
|
26
34
|
| `winui-svelte/runner` | `src/vite/runner.ts` | `createWindowModuleRunner()`, the window thread's side of the module server |
|
|
27
35
|
| `winui-svelte/compile` | `src/vite/compile.ts` | `compileSvelte()` for bundlers (esbuild) and tests, `WINUI_COMPILE_OPTIONS`, `withElementAnimation()` |
|
|
28
36
|
| `winui-svelte/testing` | `src/vite/loader.ts` | `svelteHooks()`: Node module hooks that run `.svelte` files, with Svelte's runtime read through the package's edits (pure tests) |
|
|
29
37
|
| `winui-svelte/bootstrap` | `src/window/bootstrap.ts` | `initWindowsAppSdk()`; imports nothing of WinRT, safe on the host's main thread |
|
|
30
38
|
| `winui-svelte/thread` | `src/window/thread.ts` | `runOnUiThread()`; imports only dynwinrt, so the apartment comes first |
|
|
31
39
|
| `winui-svelte/window` | `src/window/index.ts` | `runWindow()`, `exitApplication()`, `createWindow()`, `startTimer()`, `systemSettings()`, the picker options (see App services) |
|
|
32
|
-
| `winui-svelte/app` | `src/app/index.ts` | `ensureSingleInstance()`, `notify()` (opt-in; see App lifecycle) |
|
|
40
|
+
| `winui-svelte/app` | `src/app/index.ts` | `ensureSingleInstance()`, `notify()`, `activateInstance()`, `activateOrLaunch()`, `launchApp()`, `relaunch()`, `restartAfterCrash()` (opt-in; see App lifecycle) |
|
|
41
|
+
| `winui-svelte/app/activation` | `src/app/activation/index.ts` | `installProtocolHandlers()`, `registerFileTypes()`, `launchAtLogin()`, `startActivation()`, `ActivationKind` (opt-in; see Activation) |
|
|
33
42
|
| `winui-svelte/data-transfer` | `src/data-transfer/index.ts` | `enableDragEvents()`, `dropzone`, `draggable`, `filePicker`, `pickFiles`, `pickSaveFile`, `clipboard`, `launchUri` / `launchFile` / `openFolder` / `revealInExplorer`, `share`, `NativeFile`, `DataTransfer`, `DragEvent` (opt-in; see Data transfer) |
|
|
43
|
+
| `winui-svelte/input` | `src/input/index.ts` | `enableInputEvents()`, `setPointerCapture` / `releasePointerCapture` / `hasPointerCapture`, `activeElement()`, `moveFocus()`, `trapFocus()`, `PointerType`, `PointerEvent` / `WheelEvent` / `KeyboardEvent` / `FocusEvent` (opt-in; see Input events and focus) |
|
|
34
44
|
| `winui-svelte/media` | `src/media/index.ts` | `bitmapImageOf()`, `svgImageSourceOf()`, `decodeDataUri()`, `createMediaPlayer()`, `mediaSourceOfBytes()`, `observePlayback()`, `PlaybackState` (opt-in; see Media) |
|
|
35
45
|
| `winui-svelte/win2d` | `src/win2d/index.ts` | `Canvas`, the Win2D controls, the drawing helpers and Win2D classes, `applyEffect` (opt-in; see Win2D) |
|
|
36
46
|
| `winui-svelte/enums` | `src/enums.ts` | every closed set a prop or option takes: WinUI's enums, `ThemeBrush`, `ColorKeyword`, `Backdrop`, `WindowTheme`, `TrayBalloonIcon` and the rest (see Closed sets) |
|
|
37
47
|
| `winui-svelte/win2d/context-2d` | `src/win2d/context-2d/index.ts` | `Canvas2D`, `createCanvas2D`, `CanvasElement`, `Context2D`, `Path2D` and the rest of the HTML Canvas 2D API over Win2D (opt-in; see Canvas 2D) |
|
|
38
48
|
| `winui-svelte/tray` | `src/tray/index.ts` | `TrayIcon` (with its `menu`), `createTrayIcon()`, `placeMenuWindow()`, `hideToTray()`, `restoreFromTray()`, `toggleInTray()`, `removeAllTrayIcons()`, `TrayGesture` (opt-in; see System tray) |
|
|
49
|
+
| `winui-svelte/tray/standalone` | `src/tray/standalone/index.ts` | `createStandaloneTray()`, `NativeMenuEntryKind`, and the `winui-svelte/app` calls that start or signal the app: a tray with no window, no WinUI and no components (opt-in; see Tray with no window) |
|
|
50
|
+
| `winui-svelte/notice` | `src/notice/index.ts` | `showNotice()`, `NoticeIcon`, `NoticeButtons`, `NoticeButton`: a message box with no window or app (opt-in; see Notice with no app) |
|
|
39
51
|
| `winui-svelte/forms` | `src/forms/index.ts` | `Form`, `FormField`, `textField`, `numberField`, `selectField` and the other field attachments, `formButton`, `FormValues`, `validityOf` (opt-in; see Forms) |
|
|
52
|
+
| `winui-svelte/store` | `src/store/index.ts` | `getAppLicense`, `watchLicense`, `checkForUpdates`, `watchPackages`, `getStartupTask`, `getPackageInfo`: the Store and package APIs, answering `hasPackage: false` outside a package (opt-in) |
|
|
53
|
+
| `winui-svelte/accessibility`, `/accessibility/audit` | `src/accessibility/index.ts`, `src/accessibility/audit/index.ts` | `announce`, `liveRegion`, `LivePriority`; `auditAccessibility`, `accessibilityRules` (opt-in; see Accessibility) |
|
|
40
54
|
| `winui-svelte/devices` | `src/devices/index.ts` | device enumeration, input devices, Bluetooth, printers, power, network, display, audio, gamepads and sensors, each also at `winui-svelte/devices/<area>` (opt-in; see Windows devices) |
|
|
41
55
|
|
|
42
56
|
The table is the source layout: `exports` point at `.ts` files so the monorepo
|
|
@@ -196,6 +210,57 @@ handed over as it is and read once, when the element is made)
|
|
|
196
210
|
A property that
|
|
197
211
|
changes is set through `{@attach control(...)}`, as components do
|
|
198
212
|
|
|
213
|
+
## Wrapping chips
|
|
214
|
+
|
|
215
|
+
CSS `flex-wrap: wrap` has no WinUI panel to become: the element's tag decides
|
|
216
|
+
the panel, the build does not swap it, and `flex-wrap` stays a build error whose
|
|
217
|
+
message names the two ways below (WinUI 3 has no `WrapPanel`; the Community
|
|
218
|
+
Toolkit's is a separate package)
|
|
219
|
+
Measured in a 300 wide window (`test/chip-tray.test.ts`, the
|
|
220
|
+
`examples/chip-tray` example)
|
|
221
|
+
|
|
222
|
+
| Way | Wraps | Chip widths | Use it for |
|
|
223
|
+
|---|---|---|---|
|
|
224
|
+
| `RichTextBlock`, a `Paragraph`, each chip in an `InlineUIContainer` | yes, like words in a sentence | each chip keeps its own | link chips, tags, any tray whose items differ in width |
|
|
225
|
+
| `VariableSizedWrapGrid` | yes, at its width or `maximumRowsOrColumns` | one cell for all (the first chip sets it, or `itemWidth` and `itemHeight`) | equal tiles |
|
|
226
|
+
| `ItemsRepeater` with `UniformGridLayout`, `GridView` | yes | one cell for all | the same, with virtualization and selection |
|
|
227
|
+
|
|
228
|
+
The first row is the answer to `flex-wrap`:
|
|
229
|
+
|
|
230
|
+
```svelte
|
|
231
|
+
<script lang="ts">
|
|
232
|
+
import { Border, HyperlinkButton, InlineUIContainer, Paragraph, RichTextBlock } from "winui-svelte/components";
|
|
233
|
+
</script>
|
|
234
|
+
|
|
235
|
+
<RichTextBlock>
|
|
236
|
+
<Paragraph>
|
|
237
|
+
{#each links as link (link.href)}
|
|
238
|
+
<InlineUIContainer>
|
|
239
|
+
<Border class="chip">
|
|
240
|
+
<HyperlinkButton navigateUri={link.href}>{link.label}</HyperlinkButton>
|
|
241
|
+
</Border>
|
|
242
|
+
</InlineUIContainer>
|
|
243
|
+
{/each}
|
|
244
|
+
</Paragraph>
|
|
245
|
+
</RichTextBlock>
|
|
246
|
+
|
|
247
|
+
<style>
|
|
248
|
+
.chip {
|
|
249
|
+
margin: 0 6px 6px 0;
|
|
250
|
+
}
|
|
251
|
+
</style>
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
- The gap between chips is each chip's margin: a `RichTextBlock` has no `gap`
|
|
255
|
+
- Chips sit on the text baseline; `RichTextBlock` has `textAlignment`, which
|
|
256
|
+
centres or right-aligns the lines
|
|
257
|
+
- The tray is text: a `RichTextBlock` is read-only and takes `isTextSelectionEnabled`
|
|
258
|
+
- Not covered: a CSS rule cannot turn `display: flex; flex-wrap: wrap` into this
|
|
259
|
+
(a flex container is a `<stack-panel>` or `<grid>` and the build never changes
|
|
260
|
+
a tag), and `ItemsRepeater` has no layout that flows items of different widths
|
|
261
|
+
(`UniformGridLayout` is uniform, `LinedFlowLayout` needs one line height and
|
|
262
|
+
aspect ratios from its items)
|
|
263
|
+
|
|
199
264
|
## Transitions (`winui-svelte/element-animation`, `winui-svelte/element-effects`)
|
|
200
265
|
|
|
201
266
|
Svelte's `transition:`, `in:`, `out:` and `animate:` run unchanged: Svelte's
|
|
@@ -293,6 +358,131 @@ What it does:
|
|
|
293
358
|
- `getComputedStyle` is defined as a global for WinUI's elements; any other
|
|
294
359
|
argument goes to the one that was there, if any
|
|
295
360
|
|
|
361
|
+
### Gliding a height (`glideHeight`)
|
|
362
|
+
|
|
363
|
+
WinUI cannot animate `Height="Auto"`, so a card whose content grows or shrinks
|
|
364
|
+
jumps; the web's answer is a `ResizeObserver` plus `element.animate({ height })`,
|
|
365
|
+
and `glideHeight` is that pair as one attachment:
|
|
366
|
+
|
|
367
|
+
```svelte
|
|
368
|
+
<script lang="ts">
|
|
369
|
+
import { glideHeight } from "winui-svelte";
|
|
370
|
+
import { enableElementAnimation } from "winui-svelte/element-animation";
|
|
371
|
+
|
|
372
|
+
enableElementAnimation();
|
|
373
|
+
</script>
|
|
374
|
+
|
|
375
|
+
<border class="card" {@attach glideHeight({ duration: 300, easing: "ease-out" })}>
|
|
376
|
+
<text-block textWrapping="Wrap">{text}</text-block>
|
|
377
|
+
</border>
|
|
378
|
+
```
|
|
379
|
+
|
|
380
|
+
- It listens to the element's `SizeChanged`; on a change it runs
|
|
381
|
+
`element.animate([{ height: from }, { height: to }])`, which sets `Height`
|
|
382
|
+
explicitly for the glide and gives `Auto` back when it ends (`element.animate`
|
|
383
|
+
animates `height` and `width` like it does `Opacity` and `Translation`)
|
|
384
|
+
- Needs `enableElementAnimation()` once (a `transition:` directive in the
|
|
385
|
+
app turns it on too); without it `glideHeight` throws and says so
|
|
386
|
+
- Can: grow and shrink, any easing and duration, a change made during a glide
|
|
387
|
+
(picked up when it ends), a hot update or removal (the glide is cancelled);
|
|
388
|
+
reduced motion makes it instant
|
|
389
|
+
- Cannot: glide the first layout, an element with a fixed `height` (it never
|
|
390
|
+
changes by itself), or the content inside; the layout is already at the new
|
|
391
|
+
height when the glide starts, so the frame before the first step can show it,
|
|
392
|
+
and content that would overflow a shrinking card is clipped only if the card
|
|
393
|
+
clips it (`clip-to-bounds`, a `ScrollViewer`)
|
|
394
|
+
- Measured in a window (`test/card-glide.test.ts`, the `examples/card-glide`
|
|
395
|
+
example): 250 ms into a 600 ms glide the height lies between the two sizes,
|
|
396
|
+
both growing and shrinking, and the card ends on its content's height with no
|
|
397
|
+
fixed `Height` left
|
|
398
|
+
|
|
399
|
+
### Sliding siblings (`implicitLayoutAnimation`)
|
|
400
|
+
|
|
401
|
+
When an expander opens, the controls below it jump; on the web a FLIP
|
|
402
|
+
animation slides them, and in WinUI the Composition layer does it with an
|
|
403
|
+
implicit animation on each child's `Offset`
|
|
404
|
+
|
|
405
|
+
```svelte
|
|
406
|
+
<script lang="ts">
|
|
407
|
+
import { implicitLayoutAnimation, LayoutEasing } from "winui-svelte/implicit-layout-animation";
|
|
408
|
+
</script>
|
|
409
|
+
|
|
410
|
+
<stack-panel {@attach implicitLayoutAnimation({ duration: 260, easing: LayoutEasing.EASE_OUT })}>
|
|
411
|
+
<expander header="Advanced">...</expander>
|
|
412
|
+
<button>Save</button>
|
|
413
|
+
</stack-panel>
|
|
414
|
+
```
|
|
415
|
+
|
|
416
|
+
- It is an attachment for a panel; every child that the panel has laid out gets
|
|
417
|
+
a `Vector3KeyFrameAnimation` on `Offset` that ends at `this.FinalValue`, so
|
|
418
|
+
the composition layer starts it by itself whenever layout changes the offset
|
|
419
|
+
(no per-frame work in JavaScript, no `enableElementAnimation()`)
|
|
420
|
+
- `duration` is in milliseconds (default 260); `easing` is one of
|
|
421
|
+
`LayoutEasing` (`ease`, `ease-in`, `ease-out`, `ease-in-out`, `linear`,
|
|
422
|
+
`emphasized`; default `ease-out`)
|
|
423
|
+
- A child that is added slides from nowhere: the panel picks it up on its next
|
|
424
|
+
layout, after it was placed, so only the ones that were already there move
|
|
425
|
+
- Reduced motion: with Windows' animation effects off the attachment does
|
|
426
|
+
nothing, and it starts when they are turned on
|
|
427
|
+
- It replaces a child's own `implicitAnimations`, and it
|
|
428
|
+
is not a CSS property: the CSS part has no hook that reaches a Visual's
|
|
429
|
+
implicit animation collection cheaply, so the attachment is the one way
|
|
430
|
+
- Measured in a window (`test/layout-animation.test.ts`, the
|
|
431
|
+
`examples/layout-animation` example): 800 ms into a 5 s slide the marker
|
|
432
|
+
that a growing spacer pushes down is drawn between its two places, and ends
|
|
433
|
+
in the second
|
|
434
|
+
- `style:translate="0px 60px"` on a component (`<Border style:translate=...>`)
|
|
435
|
+
works: the same test reads the pixels and finds the control drawn 60 px lower
|
|
436
|
+
at once, with its layout slot left unchanged
|
|
437
|
+
|
|
438
|
+
## Settings cards (`winui-svelte/settings`)
|
|
439
|
+
|
|
440
|
+
The Windows Community Toolkit's `SettingsCard` and `SettingsExpander` are
|
|
441
|
+
managed code with no projectable metadata, so these are built from WinUI's own
|
|
442
|
+
controls (`Border`, `Button`, `Grid`, `FontIcon`, `TextBlock`, `Expander`) and
|
|
443
|
+
the card theme resources (`CardBackgroundFillColorDefaultBrush` and
|
|
444
|
+
`CardStrokeColorDefaultBrush`), so light, dark and high contrast follow Windows
|
|
445
|
+
|
|
446
|
+
```svelte
|
|
447
|
+
<script lang="ts">
|
|
448
|
+
import { ToggleSwitch } from "winui-svelte/components";
|
|
449
|
+
import { SettingsCard, SettingsExpander } from "winui-svelte/settings";
|
|
450
|
+
|
|
451
|
+
let isExpanded = $state(false);
|
|
452
|
+
</script>
|
|
453
|
+
|
|
454
|
+
<SettingsCard description="Start with Windows" header="Run at startup" headerIcon="PowerButton">
|
|
455
|
+
<ToggleSwitch />
|
|
456
|
+
</SettingsCard>
|
|
457
|
+
<SettingsCard header="Open the logs" isClickEnabled onclick={openLogs} />
|
|
458
|
+
<SettingsExpander header="Appearance" bind:isExpanded>
|
|
459
|
+
{#snippet items()}
|
|
460
|
+
<SettingsCard header="Theme">...</SettingsCard>
|
|
461
|
+
{/snippet}
|
|
462
|
+
</SettingsExpander>
|
|
463
|
+
```
|
|
464
|
+
|
|
465
|
+
| Prop | Meaning |
|
|
466
|
+
|---|---|
|
|
467
|
+
| `header`, `description` | the name and the line under it |
|
|
468
|
+
| `headerIcon` | a Fluent glyph name or code, or a snippet that draws an icon |
|
|
469
|
+
| children | the control on the right (the toolkit's `Content`) |
|
|
470
|
+
| `isClickEnabled`, `onclick` | the card is a `Button`: focus, Enter and Space, a pressed state |
|
|
471
|
+
| `actionIcon`, `action` | the glyph at the end of a clickable card (default `ChevronRight`), or a snippet that replaces it |
|
|
472
|
+
| `isEnabled`, `automationId` | as on any control |
|
|
473
|
+
| `SettingsExpander`: `isExpanded`, `items` | `bind:isExpanded`; the items are `SettingsCard`s, which draw flat inside |
|
|
474
|
+
|
|
475
|
+
- Accessibility: a clickable card carries its header as the UI Automation name
|
|
476
|
+
and its description as the help text, and the expander is named after its
|
|
477
|
+
header; a card that is not clickable is a plain container whose texts are read
|
|
478
|
+
- Measured in a window (`test/settings-cards.test.ts`, the
|
|
479
|
+
`examples/settings-cards` example): a card is at least 68 px high, the
|
|
480
|
+
clickable card is named after its header, the items of a closed expander take
|
|
481
|
+
no room and show once it is open; the gallery has a `Settings cards` page
|
|
482
|
+
- Not there: the toolkit's `SettingsCard.ContentAlignment`, `IsActionIconVisible`
|
|
483
|
+
and its automatic wrapping into two rows on a narrow window; the content sits
|
|
484
|
+
on the right at its own size
|
|
485
|
+
|
|
296
486
|
## Connected animation (`winui-svelte/connected-animation`)
|
|
297
487
|
|
|
298
488
|
`connectElement({ key, element })` remembers an element as the start of a
|
|
@@ -309,6 +499,81 @@ connectElement({ key: "photo", element: thumbnail });
|
|
|
309
499
|
startConnected({ key: "photo", element: hero });
|
|
310
500
|
```
|
|
311
501
|
|
|
502
|
+
## Composition animations (`winui-svelte/composition`)
|
|
503
|
+
|
|
504
|
+
Expression and spring animations that the compositor runs on its own thread,
|
|
505
|
+
typed end to end: an expression is built from typed parts and prints its own
|
|
506
|
+
text, so a member a visual does not have, or an animation of the wrong kind
|
|
507
|
+
for its property, fails `tsc`
|
|
508
|
+
The scroll-linked animations of `animation-timeline` are built with the same
|
|
509
|
+
expression builder
|
|
510
|
+
|
|
511
|
+
- `visualReference(element)`: an element's visual for expressions to read;
|
|
512
|
+
its members are `VISUAL_MEMBERS` (`offset`, `scale`, `translation`,
|
|
513
|
+
`centerPoint` are three-component, `size` and `anchorPoint` two-component,
|
|
514
|
+
`opacity` and `rotationAngleInDegrees` scalars), and a vector member gives
|
|
515
|
+
its components (`offset.y`): a member is a `Vector2Member` or
|
|
516
|
+
`Vector3Member`, the expression of its kind with `x`, `y` (and `z`)
|
|
517
|
+
- An expression is a `ScalarExpression`, `Vector2Expression` or
|
|
518
|
+
`Vector3Expression`, each with `plus`, `minus` (its own kind, or a plain
|
|
519
|
+
number, `{ x, y }` or `{ x, y, z }`), `times`, `dividedBy` (a scalar),
|
|
520
|
+
`negated()` and `lerp({ to, amount })`; a scalar also has
|
|
521
|
+
`clamped({ min, max })`
|
|
522
|
+
`scalar(1)`, `vector2({ x, y })` and `vector3({ x, y, z })` make literals,
|
|
523
|
+
`reference({ name, members, source })` names any Composition object with the
|
|
524
|
+
members it declares (`ExpressionKind` gives each one's kind)
|
|
525
|
+
- `rawExpression({ kind, text, references })` is the escape hatch: expression
|
|
526
|
+
text as it is, with the kind it gives and the objects it names
|
|
527
|
+
- `scalarSpring`, `vector2Spring`, `vector3Spring` take `SpringOptions`:
|
|
528
|
+
`finalValue`, and optionally `initialValue`, `initialVelocity`,
|
|
529
|
+
`dampingRatio` (below 1 overshoots), `period` and `delay` in milliseconds
|
|
530
|
+
- `animateOnCompositor({ element, property, animation })` starts an expression
|
|
531
|
+
or a spring on a property of the element's visual (`offset`, `offset.x`,
|
|
532
|
+
`opacity`...; `translation` is enabled on the element when it is used) and
|
|
533
|
+
returns a `RunningAnimation`: `stop()`, and `finished`, which settles when a
|
|
534
|
+
spring comes to rest or the animation is stopped
|
|
535
|
+
`compositorAnimation({ property, animation })` is the same as an attachment,
|
|
536
|
+
stopped when the element goes or the attachment runs again
|
|
537
|
+
- `createPropertySet({ element, values })` makes a `CompositionPropertySet`
|
|
538
|
+
whose members are the keys of `values`, each a number, `{ x, y }` or
|
|
539
|
+
`{ x, y, z }`: `reference` reads them in expressions, `insert(changes)`
|
|
540
|
+
writes new values from the UI thread, `animate({ property, animation })`
|
|
541
|
+
drives one on the compositor, `close()` releases it
|
|
542
|
+
|
|
543
|
+
```svelte
|
|
544
|
+
<script lang="ts">
|
|
545
|
+
import type { Border as BorderControl } from "#winui/microsoft/ui/xaml/controls/Border";
|
|
546
|
+
import { elementRef } from "winui-svelte";
|
|
547
|
+
import { Border } from "winui-svelte/components";
|
|
548
|
+
import { compositorAnimation, vector3Spring, visualReference } from "winui-svelte/composition";
|
|
549
|
+
|
|
550
|
+
const leader = elementRef<BorderControl>();
|
|
551
|
+
</script>
|
|
552
|
+
|
|
553
|
+
<Border
|
|
554
|
+
{@attach compositorAnimation({
|
|
555
|
+
property: "offset",
|
|
556
|
+
animation: vector3Spring({ finalValue: { x: 200, y: 0, z: 0 }, dampingRatio: 0.4, period: 80 })
|
|
557
|
+
})}
|
|
558
|
+
{@attach leader.attach}
|
|
559
|
+
/>
|
|
560
|
+
{#if leader.current}
|
|
561
|
+
<Border
|
|
562
|
+
{@attach compositorAnimation({
|
|
563
|
+
property: "offset",
|
|
564
|
+
animation: visualReference(leader.current).offset.plus({ x: 0, y: 120, z: 0 })
|
|
565
|
+
})}
|
|
566
|
+
/>
|
|
567
|
+
{/if}
|
|
568
|
+
```
|
|
569
|
+
|
|
570
|
+
- Values read on the UI thread (`Visual.Offset`) are the last ones set there,
|
|
571
|
+
not the animated ones; read an animated value back from what is drawn
|
|
572
|
+
- Not there yet: `InteractionTracker` (input-driven inertia, which needs a
|
|
573
|
+
`VisualInteractionSource` redirected from a pointer press and bindings not
|
|
574
|
+
generated today) and springs as a CSS easing (`transition-timing-function`
|
|
575
|
+
has no spring function on the web to map)
|
|
576
|
+
|
|
312
577
|
## Scheduling (`winui-svelte`)
|
|
313
578
|
|
|
314
579
|
```ts
|
|
@@ -326,6 +591,35 @@ function flush(): void;
|
|
|
326
591
|
function onFlush(listener: () => void): () => void;
|
|
327
592
|
```
|
|
328
593
|
|
|
594
|
+
## Dev loop (`winui-svelte/dev`)
|
|
595
|
+
|
|
596
|
+
```ts
|
|
597
|
+
interface DevOptions {
|
|
598
|
+
root: string; // the folder of the app's sources
|
|
599
|
+
component: string; // the root component, a path under root ("/App.svelte")
|
|
600
|
+
props?: Record<string, Json>;
|
|
601
|
+
host?: "stdio" | Transport; // the link to the Tauri core, Electron main process or script that started this process
|
|
602
|
+
window?: object; // title, size, backdrop and the rest of createWindow's chrome
|
|
603
|
+
configFile?: string;
|
|
604
|
+
isNative?: (file: string) => boolean;
|
|
605
|
+
}
|
|
606
|
+
|
|
607
|
+
// Opens the component in a window and keeps it live: a saved .svelte or .ts
|
|
608
|
+
// file updates the open window without a restart. Resolves to the exit code
|
|
609
|
+
// once the window has closed and the server stopped.
|
|
610
|
+
function startDev(options: DevOptions): Promise<number>;
|
|
611
|
+
```
|
|
612
|
+
|
|
613
|
+
With `host`, a Tauri core (a sidecar on `"stdio"`) or an Electron main process
|
|
614
|
+
(a `utilityProcess` and a transport of its own) owns the state: the component
|
|
615
|
+
gets a `channel` prop (`hostState`, `channel.send`) and the window closes when
|
|
616
|
+
the link ends, so the dev loop runs under the real framework and a saved file
|
|
617
|
+
still updates the open window
|
|
618
|
+
|
|
619
|
+
`startDev` joins `initWindowsAppSdk`, `startModuleServer` and a worker whose
|
|
620
|
+
`runOnUiThread` creates the module runner and the window; a host that needs its
|
|
621
|
+
own (a second window, a message link) uses those pieces directly
|
|
622
|
+
|
|
329
623
|
## Vite (`winui-svelte/vite`)
|
|
330
624
|
|
|
331
625
|
```ts
|
|
@@ -444,7 +738,7 @@ function createWindow<Props extends object>(options: WindowOptions<Props>): AppW
|
|
|
444
738
|
type WindowOptions<Props> = {
|
|
445
739
|
title?: string;
|
|
446
740
|
size?: { width: number; height: number }; // device pixels
|
|
447
|
-
backdrop?: Backdrop; // "acrylic" | "acrylicBase" | "acrylicThin" | "mica" | "micaAlt" | "none"
|
|
741
|
+
backdrop?: Backdrop; // "acrylic" | "acrylicBase" | "acrylicThin" | "mica" | "micaAlt" | "none" | "transparent"
|
|
448
742
|
extendsIntoTitleBar?: boolean;
|
|
449
743
|
isBackground?: boolean; // shown without activating (tests, captures)
|
|
450
744
|
} & ({ component: Component<Props>; props: Props } | { control: FrameworkElement });
|
|
@@ -1056,11 +1350,11 @@ const vertical: Orientation = 1;
|
|
|
1056
1350
|
| A flag enum WinUI marks `[Flags]` (`FlagsInput`) | the same, or a list of names it combines | `modifiers={["Control", "Shift"]}` |
|
|
1057
1351
|
| A color (`ColorInput`) | hex text (`HexColor`), a `ColorKeyword`, or WinUI's own value | `"#0078d4"`, `"transparent"` |
|
|
1058
1352
|
| A brush (`BrushInput`) | a color, a `ThemeBrush`, a key of `AppBrushes`, or a `Brush` | `"AcrylicBackgroundFillColorDefaultBrush"` |
|
|
1059
|
-
| An icon glyph (`GlyphInput`, on `FontIcon` and `FontIconSource`) | a name of Segoe Fluent Icons, the code point of one, code points to compose, or the character (`fontFamily` takes a family name such as `"Segoe Fluent Icons"` or a `FontFamily`; `FluentGlyph` from `winui-svelte/components` holds the code point of each icon by name) | `glyph="Save"`, `glyph={FluentGlyph.Save}`, `glyph={[
|
|
1353
|
+
| An icon glyph (`GlyphInput`, on `FontIcon` and `FontIconSource`) | a name of Segoe Fluent Icons, the code point of one (only a `FluentGlyph` value, no other number), code points to compose, or the character (`fontFamily` takes a family name such as `"Segoe Fluent Icons"` or a `FontFamily`; `FluentGlyph` from `winui-svelte/components` holds the code point of each icon by name; the types `FluentGlyphName`, `FluentGlyphCode` and `FluentGlyphValue` (a name or a code point) name its parts) | `glyph="Save"`, `glyph={FluentGlyph.Save}`, `glyph={[FluentGlyph.GlobalNavButton, FluentGlyph.Save]}`, `glyph=""` |
|
|
1060
1354
|
| A path geometry (`GeometryInput`, on `PathIcon` and `Path`) | Path Markup Syntax text or a `Geometry` | `data="M0,0 L10,10"` |
|
|
1061
1355
|
| A font family (`FontFamilyInput`) | a family name or a `FontFamily` | `"Segoe UI Variable"` |
|
|
1062
1356
|
| A grid length (`GridLengthInput`) | pixels, or `GridLengthText` as XAML writes it | `"Auto"`, `"2*"`, `"120"` |
|
|
1063
|
-
| The package's own | `Backdrop`, `WindowTheme`, `TitleBarHeight`, `WindowPresentation`, `PickerLocation`, `NavigationCacheMode`, `NavigationMode`, `MoveDirection`, `XamlKind`, `FocusKind`, `TrayGesture`, `TrayBalloonIcon` | `backdrop={Backdrop.mica}` |
|
|
1357
|
+
| The package's own | `Backdrop`, `WindowTheme`, `TitleBarHeight`, `WindowPresentation`, `PickerLocation`, `NavigationCacheMode`, `NavigationMode`, `MoveDirection`, `XamlKind`, `FocusKind`, `TrayGesture`, `TrayBalloonIcon`, `ConnectedAnimationKind` | `backdrop={Backdrop.mica}` |
|
|
1064
1358
|
|
|
1065
1359
|
A WinUI enum's members keep WinUI's names and case (`"Minimal"`, not
|
|
1066
1360
|
`"minimal"`), as the metadata and the docs have them; the package's own sets
|
|
@@ -1329,6 +1623,63 @@ frame
|
|
|
1329
1623
|
`test/web.test.ts` loads one in a real window; it needs an ordinary
|
|
1330
1624
|
desktop session (a sandboxed process cannot launch the browser, 0x8007139F)
|
|
1331
1625
|
|
|
1626
|
+
### WebView2 bridge (`winui-svelte/messaging/web-view2`)
|
|
1627
|
+
|
|
1628
|
+
A Svelte app and the web content in a `WebView2` talk with the same
|
|
1629
|
+
request and response frames as every other transport, over
|
|
1630
|
+
`CoreWebView2.PostWebMessageAsJson` and `WebMessageReceived`
|
|
1631
|
+
Both are raised on the UI thread, where dynwinrt delivers callbacks
|
|
1632
|
+
|
|
1633
|
+
```ts
|
|
1634
|
+
import { defineMessaging } from "winui-svelte/messaging";
|
|
1635
|
+
import { webView2Transport } from "winui-svelte/messaging/web-view2";
|
|
1636
|
+
|
|
1637
|
+
// control is the WebView2 (the sender of oncorewebview2initialized)
|
|
1638
|
+
const transport = webView2Transport({ control, allowedOrigins: ["https://app.example"] });
|
|
1639
|
+
const bridge = defineMessaging<AppProtocol>({ transport });
|
|
1640
|
+
bridge.onMessage("save", ({ data }) => save(data));
|
|
1641
|
+
const title = await bridge.sendMessage("title");
|
|
1642
|
+
transport.dispose();
|
|
1643
|
+
```
|
|
1644
|
+
|
|
1645
|
+
```ts
|
|
1646
|
+
// in the web page's bundle
|
|
1647
|
+
import { createPageTransport, defineMessaging } from "winui-svelte/messaging/page";
|
|
1648
|
+
|
|
1649
|
+
const bridge = defineMessaging<AppProtocol>({ transport: createPageTransport() });
|
|
1650
|
+
```
|
|
1651
|
+
|
|
1652
|
+
- The transport starts the browser (`EnsureCoreWebView2Async`) and waits for
|
|
1653
|
+
it (a control with no `source` does not start on its own, and a page set
|
|
1654
|
+
from `oncorewebview2initialized` can be overtaken by the `source` navigation;
|
|
1655
|
+
the example loads its page from the first `onnavigationcompleted`); frames sent before it is ready are kept and posted in order
|
|
1656
|
+
- `dispose()` stops listening, drops the queue and closes the link
|
|
1657
|
+
- `window.chrome.webview` is in every page WebView2 loads, so the page needs
|
|
1658
|
+
no injected script; `addDocumentCreatedScript` is for the scripts an app adds
|
|
1659
|
+
of its own
|
|
1660
|
+
- Every incoming message is parsed as JSON and checked against
|
|
1661
|
+
`allowedOrigins` (the origin of the page that posted it); a message that
|
|
1662
|
+
fails either is dropped and reported through the listener's `malformed`
|
|
1663
|
+
Without `allowedOrigins` every page is trusted, which suits only content the
|
|
1664
|
+
app ships; a page that is not the app's own needs the list
|
|
1665
|
+
- Nothing received is evaluated, and `AreHostObjectsAllowed` is switched off;
|
|
1666
|
+
the bridge never calls `AddHostObjectToScript`
|
|
1667
|
+
|
|
1668
|
+
| Helper | What |
|
|
1669
|
+
|---|---|
|
|
1670
|
+
| `waitForCoreWebView2(control)` | resolves with the `CoreWebView2` once the browser started |
|
|
1671
|
+
| `executeScript({ control, code })` | runs script in the page and resolves with its JSON value, checked |
|
|
1672
|
+
| `addDocumentCreatedScript({ control, code })` | runs script before every page script; resolves with the function that removes it |
|
|
1673
|
+
| `openDevTools(control)` | opens the developer tools window |
|
|
1674
|
+
| `getCookies`, `setCookie`, `deleteCookie` | the profile's cookies as plain data (`CookieSameSite`) |
|
|
1675
|
+
| `onPermissionRequested({ control, decide })` | answers permission requests with a `PermissionState` (`default`, `allow`, `deny`) for a `PermissionKind` |
|
|
1676
|
+
| `onDownloadStarting({ control, pathFor })` | sends a download to a path with no dialog, or cancels it with `null` |
|
|
1677
|
+
| `onNavigationStarting({ control, isAllowed })` | cancels the navigations `isAllowed` refuses |
|
|
1678
|
+
|
|
1679
|
+
`examples/web-bridge` is an app talking to a hosted page, and
|
|
1680
|
+
`test/web-bridge.test.ts` runs it in a real window; it needs an ordinary
|
|
1681
|
+
desktop session (a sandboxed process cannot launch the browser, 0x8007139F)
|
|
1682
|
+
|
|
1332
1683
|
### ListView and GridView
|
|
1333
1684
|
|
|
1334
1685
|
```svelte
|
|
@@ -1490,7 +1841,7 @@ the control's own nodes, and binding it undoes the key selection
|
|
|
1490
1841
|
Mount it as the app's root (`mountControl({ component: App, props })` inside `runWindow`'s
|
|
1491
1842
|
`onStart`): the component is the window
|
|
1492
1843
|
`backdrop` is `"acrylic"`, `"acrylicBase"`,
|
|
1493
|
-
`"acrylicThin"`, `"mica"`, `"micaAlt"` or `"
|
|
1844
|
+
`"acrylicThin"`, `"mica"`, `"micaAlt"`, `"none"` or `"transparent"` (`Backdrop`, also taken by `createWindow`); it can
|
|
1494
1845
|
change while the window is open
|
|
1495
1846
|
WinUI itself shows the theme's solid color
|
|
1496
1847
|
in place of the material while the window is inactive, and restores it on
|
|
@@ -1500,6 +1851,45 @@ the other two acrylic variants: XAML's `DesktopAcrylicBackdrop` has no kind, so
|
|
|
1500
1851
|
the window takes `DesktopAcrylicController` as a target instead
|
|
1501
1852
|
(`window.systemBackdrop` reads null; the controller is closed when the backdrop
|
|
1502
1853
|
changes or the window closes)
|
|
1854
|
+
`"transparent"` shows the desktop through every pixel the content leaves clear,
|
|
1855
|
+
with per-pixel alpha: the window gets a fully clear composition brush behind
|
|
1856
|
+
its content (`ICompositionSupportsSystemBackdrop`; the Windows App SDK's
|
|
1857
|
+
`TransparentTintBackdrop` is in no runtime from 2.3 to 2.6.5 and not in the
|
|
1858
|
+
metadata restored, 2.2, so it cannot be generated), and the whole window
|
|
1859
|
+
becomes the window manager's frame (`DwmExtendFrameIntoClientArea` with every
|
|
1860
|
+
margin -1) with square corners (`DWMWA_WINDOW_CORNER_PREFERENCE` do-not-round),
|
|
1861
|
+
which also drops the outline and the shadow Windows 11 draws round a rounded
|
|
1862
|
+
window
|
|
1863
|
+
Without the frame step the clear pixels read black, not the desktop; it is
|
|
1864
|
+
applied again whenever `isBorderless` changes, since WinUI's presenter undoes
|
|
1865
|
+
the corner preference
|
|
1866
|
+
`window.systemBackdrop` reads null for it
|
|
1867
|
+
Measured on Windows 11 build 26300 with the Windows App SDK runtimes 2.3 to
|
|
1868
|
+
2.6.5 installed; no other Windows build has been run, and the corner preference
|
|
1869
|
+
exists on Windows 11 only
|
|
1870
|
+
A window on a desktop of its own (a hidden desktop) is never composed by
|
|
1871
|
+
Windows, so there is nothing to see through to: `test/transparent-window.test.ts`
|
|
1872
|
+
reads the screen of the ordinary desktop for that reason
|
|
1873
|
+
Not checked: a filter or a drop shadow (`filter: drop-shadow()`) on content
|
|
1874
|
+
over a transparent window
|
|
1875
|
+
The window's own `cornerRadius` clips with an edge that is not anti-aliased, so
|
|
1876
|
+
round the card's own `corner-radius` instead
|
|
1877
|
+
Pair it with `isBorderless` and content that sets no background of its own
|
|
1878
|
+
A floating card over a transparent window:
|
|
1879
|
+
|
|
1880
|
+
```svelte
|
|
1881
|
+
<Window backdrop="transparent" isBorderless isShownInSwitchers={false}>
|
|
1882
|
+
<border
|
|
1883
|
+
background="#e61f1f1f"
|
|
1884
|
+
corner-radius="12"
|
|
1885
|
+
padding="16"
|
|
1886
|
+
horizontal-alignment="center"
|
|
1887
|
+
vertical-alignment="center">
|
|
1888
|
+
<text-block foreground="white">Everything around the card is the desktop</text-block>
|
|
1889
|
+
</border>
|
|
1890
|
+
</Window>
|
|
1891
|
+
```
|
|
1892
|
+
|
|
1503
1893
|
A `titleBar` snippet is shown above the content
|
|
1504
1894
|
and set as the window's title bar (`setTitleBar`, so it is the drag region and
|
|
1505
1895
|
the controls in it still click); it makes `extendsIntoTitleBar` true unless
|
|
@@ -1512,6 +1902,18 @@ taking focus
|
|
|
1512
1902
|
`onboundschanged` hears the bounds the window opened with and
|
|
1513
1903
|
then every move or resize (device pixels), so an app that reopens the window
|
|
1514
1904
|
where it was has them before the user touches it
|
|
1905
|
+
`stateKey` keeps the window where its user leaves it: the bounds (the normal
|
|
1906
|
+
ones, also while it is maximized), the maximized or minimized state and the
|
|
1907
|
+
presentation are saved in `%LOCALAPPDATA%\<app>\window-state\<stateKey>.json`,
|
|
1908
|
+
written a moment after each move, resize or state change and again when the
|
|
1909
|
+
window closes, and restored before the window first shows
|
|
1910
|
+
The restored bounds are kept whole inside the work area of the display nearest
|
|
1911
|
+
to them (a display that is gone, or smaller, never leaves the window off
|
|
1912
|
+
screen) and are resized to the scale of the display they land on
|
|
1913
|
+
On the first run, and when the file is missing, corrupt or from another
|
|
1914
|
+
version, `placement` or the centered default applies; a saved place wins over
|
|
1915
|
+
`placement`, and a `presentation` prop wins over the saved presentation
|
|
1916
|
+
`stateKey` is read once, before the window opens
|
|
1515
1917
|
`onclosing` runs when the window is asked to close (the close button, Alt+F4,
|
|
1516
1918
|
`handle.close()`): returning `true` keeps it open (ask the user, then close it
|
|
1517
1919
|
again from code); `onclosed` follows a close that went through
|
|
@@ -1524,6 +1926,10 @@ content's requested theme and the caption buttons'
|
|
|
1524
1926
|
`titleBarHeight` is
|
|
1525
1927
|
`"standard"` or `"tall"` (for a title bar that holds a search box or tabs; it
|
|
1526
1928
|
applies when the content extends into the title bar)
|
|
1929
|
+
`iconShowOptions` is `"showIconAndSystemMenu"` (the default) or
|
|
1930
|
+
`"hideIconAndSystemMenu"`: whether the title bar shows the window's icon and
|
|
1931
|
+
opens the system menu on a click on it (`AppWindowTitleBar.IconShowOptions`;
|
|
1932
|
+
it is set again to the default when the prop is dropped)
|
|
1527
1933
|
`captionButtons` sets
|
|
1528
1934
|
the colors of the minimize, maximize and close buttons: `foreground`,
|
|
1529
1935
|
`background`, `hover*`, `pressed*` and `inactive*` (each `Foreground` or
|
|
@@ -1545,19 +1951,97 @@ The size limits and
|
|
|
1545
1951
|
`isAlwaysOnTop` are the windowed presentation's, and are set again when the
|
|
1546
1952
|
window returns to it
|
|
1547
1953
|
A window that is only its content (a pill, an overlay, a splash screen) is made
|
|
1548
|
-
of the frame props: `isBorderless` (no frame, no title bar
|
|
1954
|
+
of the frame props: `isBorderless` (no frame, no title bar; the window keeps its
|
|
1955
|
+
8 device pixel resize frame, which shrinks the client area and paints a strip
|
|
1956
|
+
along the top, until `isResizable={false}` takes it away),
|
|
1549
1957
|
`isShownInSwitchers` and `isToolWindow` (no taskbar button or Alt+Tab entry),
|
|
1550
1958
|
`isActivatable={false}` (a click never takes focus), `isClickThrough`,
|
|
1551
1959
|
`isExcludedFromCapture` (black in screenshots and screen sharing),
|
|
1552
1960
|
`isHidden` (opens hidden, hides and shows later) and `cornerRadius` (clips the
|
|
1553
|
-
window to a rounded rectangle; the edge is not anti-aliased
|
|
1961
|
+
window to a rounded rectangle; the edge is not anti-aliased, so on a
|
|
1962
|
+
transparent window round the card's own `corner-radius` instead, which is)
|
|
1554
1963
|
A prop left out leaves the window as it is, and dropped again it puts the
|
|
1555
1964
|
window back
|
|
1556
1965
|
`createWindow` takes them too
|
|
1557
1966
|
`handle.setShownInSwitchers(isShown)` does not throw for a window that has no
|
|
1558
1967
|
taskbar button (WinUI answers 0x80004001 there); `hideToTray` uses it
|
|
1559
|
-
A window with a transparent background (per-pixel alpha) is
|
|
1560
|
-
|
|
1968
|
+
A window with a transparent background (per-pixel alpha) is
|
|
1969
|
+
`backdrop="transparent"`; no web API makes a window transparent (Tauri and
|
|
1970
|
+
Electron take `transparent: true` when they create theirs), so the value is
|
|
1971
|
+
WinUI's alone
|
|
1972
|
+
`isActivatable` is read again whenever it changes, so an overlay can take focus
|
|
1973
|
+
while text is selected and give it up afterwards: `isActivatable={false}` sets
|
|
1974
|
+
`WS_EX_NOACTIVATE`, `true` or a dropped prop clears it (call `handle.activate()`
|
|
1975
|
+
to take focus once it is set)
|
|
1976
|
+
|
|
1977
|
+
`sizeToContent` (`"none"`, the default, `"width"`, `"height"` or `"both"`; the
|
|
1978
|
+
`SizeToContent` set) makes the window follow its content: after every layout
|
|
1979
|
+
pass the root's desired size, plus the frame, is clamped to `minWidth`,
|
|
1980
|
+
`minHeight`, `maxWidth` and `maxHeight` and applied with one
|
|
1981
|
+
`AppWindow.MoveAndResize`, so the size and the position never show half done
|
|
1982
|
+
`anchor` (`"topLeft"`, the default, `"topRight"`, `"bottomLeft"` or
|
|
1983
|
+
`"bottomRight"`; the `WindowAnchor` set) is the corner that stays where it is:
|
|
1984
|
+
anchored bottom-right, a window whose content grows taller grows upward
|
|
1985
|
+
A side the content sets ignores the `width` or `height` prop
|
|
1986
|
+
The scale is applied (the desired size is in device-independent pixels), so a
|
|
1987
|
+
move to a display with another scale refits
|
|
1988
|
+
The root is measured with `FrameworkElement.DesiredSize` on `LayoutUpdated`:
|
|
1989
|
+
a `ResizeObserver` reports the laid-out size, which a stretched root keeps
|
|
1990
|
+
while its content grows
|
|
1991
|
+
`createWindow` takes both props
|
|
1992
|
+
|
|
1993
|
+
```svelte
|
|
1994
|
+
<Window
|
|
1995
|
+
isBorderless
|
|
1996
|
+
isActivatable={false}
|
|
1997
|
+
sizeToContent="height"
|
|
1998
|
+
anchor="bottomRight"
|
|
1999
|
+
width={504}
|
|
2000
|
+
bind:handle
|
|
2001
|
+
>
|
|
2002
|
+
<Card />
|
|
2003
|
+
</Window>
|
|
2004
|
+
```
|
|
2005
|
+
|
|
2006
|
+
```ts
|
|
2007
|
+
// device pixels, from the work area of the display the user is on
|
|
2008
|
+
handle.dock({ anchor: "bottomRight", inset: 6 })
|
|
2009
|
+
```
|
|
2010
|
+
|
|
2011
|
+
`handle.dock({ anchor, inset, display })` moves the window against a corner of
|
|
2012
|
+
a display's work area (`DisplayArea.WorkArea`: the display without the
|
|
2013
|
+
taskbar) with one `MoveAndResize`; `inset` is in device pixels (0 by default)
|
|
2014
|
+
`display` is `"active"` (the default: the display of the foreground window),
|
|
2015
|
+
`"current"` (the one the window is on) or `"primary"` (the `DockDisplay` set)
|
|
2016
|
+
A window moved to a display with another scale goes there first and is docked
|
|
2017
|
+
at the size it has after Windows rescaled it
|
|
2018
|
+
`dockWindow({ appWindow, ... })` and `displayAreaOf({ appWindow, display })`
|
|
2019
|
+
(`winui-svelte/window`) do the same for a bare `AppWindow`
|
|
2020
|
+
The arithmetic is plain functions (`anchoredBounds`, `dockedBounds`,
|
|
2021
|
+
`fittedBounds` in `src/window/anchor.ts`) over device pixels
|
|
2022
|
+
|
|
2023
|
+
`handle.geometry` is the window's own `window.outerWidth`, `outerHeight`,
|
|
2024
|
+
`screenX`, `screenY`, `devicePixelRatio`, `resizeTo(width, height)`,
|
|
2025
|
+
`resizeBy`, `moveTo(x, y)` and `moveBy`, in CSS pixels (WinUI's
|
|
2026
|
+
device-independent pixels at the window's scale), over `AppWindow.Resize` and
|
|
2027
|
+
`AppWindow.Move`
|
|
2028
|
+
A process has many windows, so there is no `window` global for them
|
|
2029
|
+
|
|
2030
|
+
`handle.windowControlsOverlay` is `navigator.windowControlsOverlay` for the
|
|
2031
|
+
window: `visible` (the content extends into the title bar),
|
|
2032
|
+
`getTitlebarAreaRect()` (the part of the title bar the content may use, from
|
|
2033
|
+
the system's icon to the caption buttons, as `x`, `y`, `width`, `height`,
|
|
2034
|
+
`left`, `top`, `right` and `bottom` in CSS pixels, all zeros while `visible`
|
|
2035
|
+
is false) and `ongeometrychange` (a `geometrychange` event with
|
|
2036
|
+
`titlebarAreaRect` and `visible`, fired when the area or `visible` changes)
|
|
2037
|
+
It reads `AppWindowTitleBar.LeftInset`, `RightInset` and `Height` (device
|
|
2038
|
+
pixels, divided by the scale) and the client width; the left inset is the
|
|
2039
|
+
caption buttons in a right-to-left window
|
|
2040
|
+
It follows the window from the first read of the property until the window
|
|
2041
|
+
closes, on `AppWindow.Changed` (a size, DPI or presenter change)
|
|
2042
|
+
Limits: the CSS `env(titlebar-area-x)`, `titlebar-area-width` and the rest are
|
|
2043
|
+
not supported (WinUI has no run-time lengths, so the translator reports them
|
|
2044
|
+
as an error); lay the title bar out from `getTitlebarAreaRect()` instead
|
|
1561
2045
|
|
|
1562
2046
|
`owner` (another window's `WindowHandle`) and `isModal`
|
|
1563
2047
|
(blocks the owner until this window closes) are read once, before the window
|
|
@@ -1786,6 +2270,20 @@ The animation target is attached on every timeline: `storyboardTarget`,
|
|
|
1786
2270
|
`storyboardTargetName` and `storyboardTargetProperty` call
|
|
1787
2271
|
`Storyboard.SetTarget`, `SetTargetName` and `SetTargetProperty`
|
|
1788
2272
|
|
|
2273
|
+
### A refused change
|
|
2274
|
+
|
|
2275
|
+
A bound property (`bind:isOn`, `bind:isChecked`, `bind:value` and the rest) is
|
|
2276
|
+
two-way: the user's change is written to the bound prop, and the prop's value
|
|
2277
|
+
is written to the control
|
|
2278
|
+
When the app refuses the change (a function binding whose setter leaves the
|
|
2279
|
+
state as it was, or a handler that puts it back) the prop does not change, so
|
|
2280
|
+
nothing would write it to the control; after the app has been told, in the next
|
|
2281
|
+
Svelte tick, the control is set back to what the prop holds, so a refused
|
|
2282
|
+
toggle snaps back with no `await tick()` and no write to the control in the
|
|
2283
|
+
handler
|
|
2284
|
+
`test/refused-toggle.test.ts` proves it in a window for a `ToggleSwitch` and a
|
|
2285
|
+
`CheckBox`
|
|
2286
|
+
|
|
1789
2287
|
### Observed state
|
|
1790
2288
|
|
|
1791
2289
|
Read-only state WinUI reports by an event is a bindable prop the control
|
|
@@ -1977,7 +2475,7 @@ read and write the file with `node:fs`
|
|
|
1977
2475
|
### App lifecycle (`winui-svelte/app`)
|
|
1978
2476
|
|
|
1979
2477
|
```ts
|
|
1980
|
-
import { ensureSingleInstance, notify } from "winui-svelte/app";
|
|
2478
|
+
import { ensureSingleInstance, notify, relaunch, restartAfterCrash } from "winui-svelte/app";
|
|
1981
2479
|
|
|
1982
2480
|
const single = ensureSingleInstance({
|
|
1983
2481
|
key: "com.example.notes",
|
|
@@ -1997,6 +2495,9 @@ notify({
|
|
|
1997
2495
|
iconPath: "C:\notes\icon.png",
|
|
1998
2496
|
appUserModelId: "com.example.notes",
|
|
1999
2497
|
});
|
|
2498
|
+
|
|
2499
|
+
relaunch({ arguments: ["--after-update"], instance: single });
|
|
2500
|
+
restartAfterCrash({ arguments: ["--recovered"] });
|
|
2000
2501
|
```
|
|
2001
2502
|
|
|
2002
2503
|
An opt-in subpath: an app that does not import it does not bundle it
|
|
@@ -2038,6 +2539,192 @@ An opt-in subpath: an app that does not import it does not bundle it
|
|
|
2038
2539
|
With package identity (an MSIX or sparse package) it is the supported case
|
|
2039
2540
|
`ensureSingleInstance` needs no identity: `test/app.test.ts` starts a real
|
|
2040
2541
|
second copy and checks that the first hears its arguments
|
|
2542
|
+
- `activateInstance({ key, activation })` is for a process that is not the
|
|
2543
|
+
app (a tray, a launcher): it sends the same JSON line to the copy that
|
|
2544
|
+
serves `key` and resolves with true, or with false when no copy runs
|
|
2545
|
+
Unlike a later copy it never claims the pipe, so it cannot become the
|
|
2546
|
+
first copy by mistake
|
|
2547
|
+
The running copy's `onRedirect` receives `activation`
|
|
2548
|
+
- `launchApp({ command, arguments, workingDirectory })` starts a program
|
|
2549
|
+
that outlives the caller: detached, no console window, no shared handles
|
|
2550
|
+
- `activateOrLaunch({ key, activation, launch })` is the two together: it
|
|
2551
|
+
activates the running copy, or else starts the app with `launch`, and
|
|
2552
|
+
resolves with true for the first and false for the second
|
|
2553
|
+
- `relaunch({ arguments })` starts the same Node with the same flags, entry
|
|
2554
|
+
script (`process.argv[1]`) and then `arguments`, detached, and calls
|
|
2555
|
+
`exitApplication`, so the new copy outlives this one
|
|
2556
|
+
Pass `instance` (the `ensureSingleInstance` result) to release the claim
|
|
2557
|
+
first; otherwise the new copy finds the old one still serving the key and
|
|
2558
|
+
redirects to it
|
|
2559
|
+
An app whose windows run in a worker thread passes `entryScript`, the script
|
|
2560
|
+
that starts the process, because `process.argv[1]` there is the worker's
|
|
2561
|
+
- `restartAfterCrash({ arguments, conditions })` is
|
|
2562
|
+
`RegisterApplicationRestart`: Windows starts the same Node and entry
|
|
2563
|
+
script with `arguments` after a crash, a hang, an update that closes the
|
|
2564
|
+
app or a reboot for one; `conditions` is a subset of `RestartCondition`
|
|
2565
|
+
(`crash`, `hang`, `update`, `reboot`; all by default)
|
|
2566
|
+
Limits: no callback (a crashed Node cannot run code, so
|
|
2567
|
+
`RegisterApplicationRecoveryCallback` is not offered); Windows restarts
|
|
2568
|
+
only an app that ran for 60 seconds; after a crash or a hang the user is
|
|
2569
|
+
offered the restart, and only after an update is it automatic; a normal
|
|
2570
|
+
exit is never restarted; a command line too long for Windows throws
|
|
2571
|
+
`test/app.test.ts` checks the registration and that a normal exit starts
|
|
2572
|
+
nothing, and `relaunch` with a real second process (no crash is caused)
|
|
2573
|
+
|
|
2574
|
+
### Activation (`winui-svelte/app/activation`)
|
|
2575
|
+
|
|
2576
|
+
Starting the app from a link, a file or sign-in, without an installer
|
|
2577
|
+
An opt-in subpath: an app that does not import it does not bundle it, and
|
|
2578
|
+
nothing is written to Windows until a registration function is called
|
|
2579
|
+
|
|
2580
|
+
```ts
|
|
2581
|
+
import {
|
|
2582
|
+
ActivationKind,
|
|
2583
|
+
installProtocolHandlers,
|
|
2584
|
+
launchAtLogin,
|
|
2585
|
+
registerFileTypes,
|
|
2586
|
+
startActivation,
|
|
2587
|
+
} from "winui-svelte/app/activation";
|
|
2588
|
+
|
|
2589
|
+
installProtocolHandlers();
|
|
2590
|
+
navigator.registerProtocolHandler("note", "https://notes.example/open?uri=%s");
|
|
2591
|
+
registerFileTypes({ id: "com.example.notes", extensions: [".note"] });
|
|
2592
|
+
launchAtLogin({ id: "com.example.notes", isEnabled: true });
|
|
2593
|
+
|
|
2594
|
+
const single = startActivation({
|
|
2595
|
+
key: "com.example.notes",
|
|
2596
|
+
window: mainWindow,
|
|
2597
|
+
extensions: [".note"],
|
|
2598
|
+
onActivation(event) {
|
|
2599
|
+
if (event.kind === ActivationKind.protocol) open(new URL(event.uri));
|
|
2600
|
+
if (event.kind === ActivationKind.file) openFiles(event.files);
|
|
2601
|
+
},
|
|
2602
|
+
});
|
|
2603
|
+
if (!single.isPrimary) {
|
|
2604
|
+
exitApplication();
|
|
2605
|
+
}
|
|
2606
|
+
```
|
|
2607
|
+
|
|
2608
|
+
| Web API or extra | Windows | Notes |
|
|
2609
|
+
|---|---|---|
|
|
2610
|
+
| `navigator.registerProtocolHandler(scheme, url)` | `HKCU\Software\Classes\<scheme>` with `URL Protocol` and `shell\open\command` | `url` must hold `%s` (`SyntaxError` otherwise) and is not used further: the handler is always this app |
|
|
2611
|
+
| `navigator.unregisterProtocolHandler(scheme, url)` | deletes that key | only a key the package wrote; another program's is left alone |
|
|
2612
|
+
| `registerFileTypes({ id, extensions, description })` | a ProgID `<id><extension>` and the extension's `OpenWithProgids` | the app is listed in Open with; the default stays the user's choice |
|
|
2613
|
+
| `unregisterFileTypes({ id, extensions })` | deletes both and the empty keys left | returns the extensions removed |
|
|
2614
|
+
| `launchAtLogin({ id, isEnabled, arguments })` | `HKCU\Software\Microsoft\Windows\CurrentVersion\Run` value `id` | listed in Settings, Apps, Startup; the start arrives as `startup` |
|
|
2615
|
+
| `getLaunchAtLogin({ id })` | reads that value | `{ isEnabled, commandLine }`; the user's switch in Settings is not read |
|
|
2616
|
+
| `startActivation({ key, onActivation })` | `ensureSingleInstance` and the command line | one `ActivationEvent` per start or redirect |
|
|
2617
|
+
|
|
2618
|
+
- `ActivationEvent` is a union on `kind` (`ActivationKind`, also from
|
|
2619
|
+
`winui-svelte/enums`): `launch` (started by hand), `file` (`files`, absolute
|
|
2620
|
+
paths of existing files), `protocol` (`uri`, `scheme`), `startup` (started
|
|
2621
|
+
at sign-in) and `redirect` (a later copy with nothing to open)
|
|
2622
|
+
Every event has `isRedirect`, `arguments` and `workingDirectory`; a link
|
|
2623
|
+
sent by a later copy is `protocol` with `isRedirect: true`
|
|
2624
|
+
- A link wins over files, files win over the startup marker; an argument
|
|
2625
|
+
that fits none stays in `arguments`
|
|
2626
|
+
Arguments are checked with a schema (up to 1024 of them, up to 32767
|
|
2627
|
+
characters each, no NUL); a failure goes to `onError`, the rest go on
|
|
2628
|
+
- Events arrive in order, one at a time, in the first copy; the later copy
|
|
2629
|
+
gets `isPrimary: false` and exits
|
|
2630
|
+
Redirects are also handed to `launchQueue.enqueueActivation` when you pass
|
|
2631
|
+
`launchQueue`; the first start's command line reaches `launchQueue` through
|
|
2632
|
+
`installLaunch`
|
|
2633
|
+
- The command Windows runs is this process's `node.exe`, its flags and its
|
|
2634
|
+
entry script, then `"%1"`; pass `command: { program, arguments }` for a
|
|
2635
|
+
bundled executable
|
|
2636
|
+
The Windows App SDK's `ActivationRegistrationManager` takes an executable path
|
|
2637
|
+
and no arguments, so for `node.exe` it cannot name the script; the registry route is the one it writes underneath, and needs
|
|
2638
|
+
no package identity
|
|
2639
|
+
- Security: only `HKEY_CURRENT_USER` is ever opened, never
|
|
2640
|
+
`HKEY_LOCAL_MACHINE`
|
|
2641
|
+
Schemes follow RFC 3986 (a letter, then letters, digits, `+`, `-` and `.`,
|
|
2642
|
+
two characters or more) and `http`, `https`, `file`, `ftp`, `mailto`, `ms-*`
|
|
2643
|
+
and the other system and browser schemes are a `SecurityError`; so are
|
|
2644
|
+
extensions that run code (`.exe`, `.bat`, `.js`, `.lnk` and so on)
|
|
2645
|
+
Every key the package creates carries a `WinuiSvelte` value, and it
|
|
2646
|
+
overwrites or deletes only keys that carry it; a scheme or ProgID that
|
|
2647
|
+
another program owns is an `InvalidStateError`
|
|
2648
|
+
A received link is data: it is validated (no control characters, 8192
|
|
2649
|
+
characters at most) and handed to your code, never run
|
|
2650
|
+
Windows can pass a quote in a link through `"%1"` unescaped, so treat the
|
|
2651
|
+
whole of `uri` as untrusted
|
|
2652
|
+
- Needs packaging for: the share target and a default-app claim (a package
|
|
2653
|
+
manifest declares them); unpackaged, the app is offered in Open with and the
|
|
2654
|
+
user picks the default
|
|
2655
|
+
- `installProtocolHandlers()` returns the function that removes the two
|
|
2656
|
+
navigator methods; the registrations stay until you unregister them
|
|
2657
|
+
Each registration function takes `registry` (a fake in tests) and `command`
|
|
2658
|
+
- `src/app/activation/native.test.ts` registers a protocol, a file type and a
|
|
2659
|
+
startup entry under HKCU with a unique name, reads them with `reg query`,
|
|
2660
|
+
removes them and checks nothing is left, even when it fails;
|
|
2661
|
+
`test/activation.test.ts` starts real second copies with a link, a file and
|
|
2662
|
+
nothing, and checks the first hears each as one event
|
|
2663
|
+
|
|
2664
|
+
### Global hotkeys (`winui-svelte/app/hotkeys`)
|
|
2665
|
+
|
|
2666
|
+
A system-wide key combination, heard whichever app has the focus
|
|
2667
|
+
A web page cannot own a global key, so there is no web API to mirror; the
|
|
2668
|
+
callback is told a `KeyboardEvent`-like object and the prop is the lowercase
|
|
2669
|
+
`onpressed`
|
|
2670
|
+
An opt-in subpath: an app that does not import it does not bundle it
|
|
2671
|
+
|
|
2672
|
+
```ts
|
|
2673
|
+
import { registerHotkey } from "winui-svelte/app/hotkeys";
|
|
2674
|
+
|
|
2675
|
+
const hotkey = registerHotkey({
|
|
2676
|
+
keys: "ctrl+alt+k",
|
|
2677
|
+
onpressed: ({ keys }) => togglePalette(),
|
|
2678
|
+
});
|
|
2679
|
+
// later: hotkey.isRegistered, hotkey.unregister()
|
|
2680
|
+
```
|
|
2681
|
+
|
|
2682
|
+
- `keys` is a string of modifiers and one key joined by `+`, in any case
|
|
2683
|
+
(`ctrl+alt+k`, `win+shift+f23`, `ctrl+5`, `f9`), or a typed object
|
|
2684
|
+
`{ modifiers: [HotkeyModifier.control], key: "k" }`
|
|
2685
|
+
Modifiers: `ctrl`/`control`, `alt`/`option`, `shift`, `win`/`windows`/`meta`/`super`
|
|
2686
|
+
Keys are named as `KeyboardEvent.code` names them, lowercase: letters,
|
|
2687
|
+
`digit0` to `digit9` (a bare `5` works in a string), `f1` to `f24`, `numpad0`
|
|
2688
|
+
to `numpad9`, `arrowleft`, `escape`, `space`, `minus`, `equal`,
|
|
2689
|
+
`bracketleft`, the media and volume keys
|
|
2690
|
+
`KeyCode` (in `winui-svelte/enums`, spelled as `KeyboardEvent.code` is) is the
|
|
2691
|
+
table every key name maps from to its virtual-key code, the same one the
|
|
2692
|
+
input events name keys with, and `HotkeyModifier` holds the modifiers
|
|
2693
|
+
A few aliases are accepted in a string (`esc`, `del`, `left`, `pgup`)
|
|
2694
|
+
A modifier named twice, no key, two keys or an unknown name throws
|
|
2695
|
+
`HotkeyParseError`
|
|
2696
|
+
- `onpressed` runs on the UI thread with `{ keys, key, modifiers, ctrlKey,
|
|
2697
|
+
altKey, shiftKey, metaKey }`; holding the keys down presses once, because
|
|
2698
|
+
`MOD_NOREPEAT` is the default (`isRepeatAllowed: true` lifts it)
|
|
2699
|
+
An error thrown by the callback goes to `onUiError` and the hotkey stays
|
|
2700
|
+
- Failures are typed and all extend `HotkeyError`: `HotkeyConflictError` when
|
|
2701
|
+
another app (or this one) owns the combination
|
|
2702
|
+
(`ERROR_HOTKEY_ALREADY_REGISTERED`), `HotkeyRefusedError` (with `code`) when
|
|
2703
|
+
Windows refuses it, `HotkeyParseError` for the string
|
|
2704
|
+
- `unregister()` gives the combination back and may be called twice
|
|
2705
|
+
In a component, register in an `$effect` and return the unregister, so a
|
|
2706
|
+
closed window releases it; Windows frees the rest when the thread ends
|
|
2707
|
+
- How it works: `RegisterHotKey` with no window posts `WM_HOTKEY` to the
|
|
2708
|
+
registering thread's queue, where no window procedure ever sees it
|
|
2709
|
+
The message pump (`createMessageSource`) offers each message it takes to a
|
|
2710
|
+
short list of hooks (`src/window/message-hooks.ts`) before the content and
|
|
2711
|
+
`DispatchMessage`, and the hotkey registry is one hook
|
|
2712
|
+
Any thread that runs the package's pump hears the hotkeys registered on it,
|
|
2713
|
+
a tray-only app with no window included; the registry and the hook list are
|
|
2714
|
+
one per thread
|
|
2715
|
+
- Limits:
|
|
2716
|
+
- Nothing is heard while the pump is not running (before `runWindow` has
|
|
2717
|
+
started it, or after it stopped), and a callback waits for the message in
|
|
2718
|
+
front of it
|
|
2719
|
+
- Register on the thread whose pump runs, the UI thread
|
|
2720
|
+
- Windows reserves some combinations (`win+l`, `ctrl+alt+delete`, and others
|
|
2721
|
+
the shell owns): they throw `HotkeyRefusedError` or `HotkeyConflictError`
|
|
2722
|
+
- The first app to register a combination owns it; the only way to know is
|
|
2723
|
+
to try, and to ask the user for another when it throws
|
|
2724
|
+
- A key with no modifier (`f9`) is taken from every app
|
|
2725
|
+
- `test/hotkeys.test.ts` registers `ctrl+alt+shift+f23` in a real window and
|
|
2726
|
+
posts `WM_HOTKEY` to the thread itself with `PostThreadMessageW`; no key is
|
|
2727
|
+
pressed
|
|
2041
2728
|
|
|
2042
2729
|
### System tray (`winui-svelte/tray`)
|
|
2043
2730
|
|
|
@@ -2160,6 +2847,147 @@ window's content
|
|
|
2160
2847
|
A Tauri or Electron host that already has a tray should keep it: two icons
|
|
2161
2848
|
would show, and this one lives and dies with the WinUI window's process
|
|
2162
2849
|
|
|
2850
|
+
### Tray with no window (`winui-svelte/tray/standalone`)
|
|
2851
|
+
|
|
2852
|
+
A tray that runs in a process of its own, plain Node, with no `Window`, no
|
|
2853
|
+
app, no WinUI and none of the component barrel: the notification-area icon
|
|
2854
|
+
and its menu, and a click that starts or signals the full app
|
|
2855
|
+
The panel then opens only when the user asks, and between clicks the tray
|
|
2856
|
+
holds a fraction of the memory
|
|
2857
|
+
`winui-svelte/tray` cannot do this: its `TrayIcon` mounts a WinUI window
|
|
2858
|
+
for the menu and its timers run on the dispatcher queue
|
|
2859
|
+
|
|
2860
|
+
```ts
|
|
2861
|
+
import {
|
|
2862
|
+
activateOrLaunch,
|
|
2863
|
+
createStandaloneTray,
|
|
2864
|
+
NativeMenuEntryKind
|
|
2865
|
+
} from "winui-svelte/tray/standalone";
|
|
2866
|
+
|
|
2867
|
+
function openPanel() {
|
|
2868
|
+
void activateOrLaunch({
|
|
2869
|
+
key: "com.example.panel",
|
|
2870
|
+
activation: { arguments: ["--show"], workingDirectory: process.cwd() },
|
|
2871
|
+
launch: { command: "C:\\Program Files\\Panel\\panel.exe", arguments: ["--show"] }
|
|
2872
|
+
});
|
|
2873
|
+
}
|
|
2874
|
+
|
|
2875
|
+
createStandaloneTray({
|
|
2876
|
+
icon: "tray.ico",
|
|
2877
|
+
tooltip: "Panel",
|
|
2878
|
+
onclick: openPanel,
|
|
2879
|
+
menu: [
|
|
2880
|
+
{ kind: NativeMenuEntryKind.COMMAND, label: "Open", onselect: openPanel },
|
|
2881
|
+
{ kind: NativeMenuEntryKind.SEPARATOR },
|
|
2882
|
+
{ kind: NativeMenuEntryKind.COMMAND, label: "Quit", onselect: () => process.exit(0) }
|
|
2883
|
+
]
|
|
2884
|
+
});
|
|
2885
|
+
```
|
|
2886
|
+
|
|
2887
|
+
- `createStandaloneTray(options)` takes the icon's options (`icon`,
|
|
2888
|
+
`tooltip`, `isVisible`, `guid`, `onclick`, `ondoubleclick`,
|
|
2889
|
+
`onmiddleclick`) and `menu`, and returns the same handle as
|
|
2890
|
+
`createTrayIcon` (`update`, `notify`, `bounds`, `isRegistered`, `remove`)
|
|
2891
|
+
The icon keeps the process alive; `remove()` or the process ending takes it
|
|
2892
|
+
out of the tray
|
|
2893
|
+
- The menu is Windows' own popup menu (`TrackPopupMenuEx`), made on a right
|
|
2894
|
+
click and destroyed when it closes; nothing of it exists while idle
|
|
2895
|
+
A command is `{ kind, label, onselect, isEnabled }`, a line is
|
|
2896
|
+
`{ kind: NativeMenuEntryKind.SEPARATOR }`
|
|
2897
|
+
The menu is modal: the thread runs its own message loop until it closes
|
|
2898
|
+
It does not follow a dark system theme, which a native popup menu does not
|
|
2899
|
+
without an undocumented call; a menu that must match the theme belongs in
|
|
2900
|
+
`winui-svelte/tray` with `TrayIcon`'s `menu` snippet
|
|
2901
|
+
- The same entry re-exports `activateInstance`, `activateOrLaunch` and
|
|
2902
|
+
`launchApp` from `winui-svelte/app` (App lifecycle), so a tray imports from
|
|
2903
|
+
one place; the app side calls `ensureSingleInstance` with the same `key`
|
|
2904
|
+
- The clicks are heard the way `winui-svelte/tray` hears them, by polling
|
|
2905
|
+
the pointer on the process's timer (Node's `setInterval`)
|
|
2906
|
+
- A test bundles it (`scripts/pack/tray-only.test.ts`) and fails if any
|
|
2907
|
+
component, window or renderer module, or a component's name, is in the
|
|
2908
|
+
output, or if it grows past its budget
|
|
2909
|
+
|
|
2910
|
+
### Notice with no app (`winui-svelte/notice`)
|
|
2911
|
+
|
|
2912
|
+
`showNotice` shows a message box before there is a window or an app: the
|
|
2913
|
+
checks that end a run before it starts (the Windows 11 gate, a revoked
|
|
2914
|
+
licence) can tell the user why
|
|
2915
|
+
|
|
2916
|
+
```ts
|
|
2917
|
+
import { NoticeButton, NoticeButtons, NoticeIcon, showNotice } from "winui-svelte/notice";
|
|
2918
|
+
|
|
2919
|
+
await showNotice({
|
|
2920
|
+
title: "My app",
|
|
2921
|
+
message: "This app needs Windows 11",
|
|
2922
|
+
icon: NoticeIcon.ERROR
|
|
2923
|
+
});
|
|
2924
|
+
const pressed = await showNotice({
|
|
2925
|
+
title: "Update",
|
|
2926
|
+
message: "Install now?",
|
|
2927
|
+
icon: NoticeIcon.QUESTION,
|
|
2928
|
+
buttons: NoticeButtons.YES_NO
|
|
2929
|
+
});
|
|
2930
|
+
const isConfirmed = pressed === NoticeButton.YES;
|
|
2931
|
+
```
|
|
2932
|
+
|
|
2933
|
+
- `showNotice({ title, message, icon, buttons, owner })` resolves with the
|
|
2934
|
+
`NoticeButton` pressed: `ok`, `cancel`, `yes`, `no`, `retry`, `abort` or
|
|
2935
|
+
`ignore`
|
|
2936
|
+
`icon` is a `NoticeIcon` (`none`, `information`, `warning`, `error`,
|
|
2937
|
+
`question`), `buttons` a `NoticeButtons` (`ok`, `okCancel`, `yesNo`,
|
|
2938
|
+
`yesNoCancel`, `retryCancel`, `abortRetryIgnore`)
|
|
2939
|
+
- It is `MessageBoxW` and nothing else: no WinUI, no `runWindow`, no
|
|
2940
|
+
`initWindowsAppSdk`, so plain Node can call it first thing
|
|
2941
|
+
Without an `owner` the box stays on top and takes the foreground;
|
|
2942
|
+
`owner` is a window handle to center on and block
|
|
2943
|
+
- It is not a TaskDialog: `TaskDialogIndirect` needs Common Controls 6, which
|
|
2944
|
+
`node.exe` has no manifest for, so custom button text, links and progress
|
|
2945
|
+
bars are not here
|
|
2946
|
+
- The dialog is modal and runs its own message loop, so the calling thread
|
|
2947
|
+
waits for it
|
|
2948
|
+
It throws when Windows could not show the box
|
|
2949
|
+
A box cannot be dismissed from a test without input, so the tests fake the
|
|
2950
|
+
call; the one real call they make passes a window handle that does not
|
|
2951
|
+
exist, which Windows refuses at once without showing anything
|
|
2952
|
+
### Taskbar button (`winui-svelte/window/taskbar`)
|
|
2953
|
+
|
|
2954
|
+
`handle.taskbar` is the window's button on the taskbar: a progress bar, an
|
|
2955
|
+
overlay icon and flashing, over `ITaskbarList3` and `FlashWindowEx`
|
|
2956
|
+
No package identity is needed; call it on the UI thread
|
|
2957
|
+
The shell calls need the real desktop shell, so a window on a desktop of its
|
|
2958
|
+
own gets `E_NOTIMPL`; a window that has no taskbar button (a background or
|
|
2959
|
+
tray window) accepts the calls and shows nothing
|
|
2960
|
+
|
|
2961
|
+
```ts
|
|
2962
|
+
import { TaskbarProgressState } from "winui-svelte/window/taskbar";
|
|
2963
|
+
|
|
2964
|
+
handle.taskbar.setProgress({ state: TaskbarProgressState.NORMAL, value: 0.4 });
|
|
2965
|
+
handle.taskbar.setOverlayBadge({ count: 3 });
|
|
2966
|
+
handle.taskbar.flash({ count: 2 });
|
|
2967
|
+
```
|
|
2968
|
+
|
|
2969
|
+
- `setProgress({ state, value })`: `state` is a `TaskbarProgressState`
|
|
2970
|
+
(`none`, `indeterminate`, `normal`, `error`, `paused`); `value` is 0 to 1,
|
|
2971
|
+
clamped, and ignored for `none` and `indeterminate`; a value that is not a
|
|
2972
|
+
number is a `TypeError`
|
|
2973
|
+
- `setOverlayIcon({ icon, description })`: `icon` is the path of an .ico file
|
|
2974
|
+
or `null` to remove it; `description` is what a screen reader says
|
|
2975
|
+
- `setOverlayBadge({ count })` or `setOverlayBadge({ glyph })`: draws the badge
|
|
2976
|
+
as pixels (a disc with the digits, or the `BadgeGlyph`'s colour and mark) at
|
|
2977
|
+
the system's small icon size; `clearOverlay()` takes any overlay away
|
|
2978
|
+
- `flash({ count, until })`: `until` is a `TaskbarFlashUntil` (`count`, the
|
|
2979
|
+
default, flashes `count` times, 3 by default; `foreground` until the window is
|
|
2980
|
+
brought forward; `stopped` until `stopFlashing()`)
|
|
2981
|
+
- `createTaskbarButton(hwnd)` and `TaskbarButton` take a window handle
|
|
2982
|
+
(`appWindow.id.value`) directly; `taskbarBadgeBackend(button)` is the
|
|
2983
|
+
`fallback` for `installBadging`
|
|
2984
|
+
- `examples/taskbar`: a download bar mirrored on the button and an unread count
|
|
2985
|
+
- `ITaskbarList3` has no WinRT form, so its methods are declared by hand at
|
|
2986
|
+
their vtable slots over dynwinrt's `DynComUnsafe`, as the share interop is
|
|
2987
|
+
- The shell offers no way to read a bar or an overlay back, so the window test
|
|
2988
|
+
(`test/taskbar.test.ts`, on the default desktop with an off-screen window)
|
|
2989
|
+
checks that every call returns `S_OK`
|
|
2990
|
+
|
|
2163
2991
|
### Localization: what works unpackaged
|
|
2164
2992
|
|
|
2165
2993
|
- **`Intl` and your own string tables work everywhere.**
|
|
@@ -2379,6 +3207,127 @@ takes drops, through the handlers a real drop reaches, and resolves with the
|
|
|
2379
3207
|
operation the control accepted (`0` when it refused); it sends no input, so an
|
|
2380
3208
|
app can test its drop handling in a real window
|
|
2381
3209
|
|
|
3210
|
+
## Input events and focus (`winui-svelte/input`)
|
|
3211
|
+
|
|
3212
|
+
The web's pointer, wheel, keyboard and focus events on any element, and focus
|
|
3213
|
+
management, over `Microsoft.UI.Xaml.Input`
|
|
3214
|
+
Opt-in: nothing is bundled until an app imports it, and importing does no work
|
|
3215
|
+
Everything runs on the UI thread
|
|
3216
|
+
|
|
3217
|
+
### Events as on the web
|
|
3218
|
+
|
|
3219
|
+
```svelte
|
|
3220
|
+
<script lang="ts">
|
|
3221
|
+
import { enableInputEvents, setPointerCapture, PointerType } from "winui-svelte/input";
|
|
3222
|
+
import type { KeyboardEvent, PointerEvent } from "winui-svelte/input";
|
|
3223
|
+
|
|
3224
|
+
enableInputEvents(); // once, before the first window
|
|
3225
|
+
</script>
|
|
3226
|
+
|
|
3227
|
+
<border
|
|
3228
|
+
onpointerdown={(event: PointerEvent) => {
|
|
3229
|
+
setPointerCapture({ control: event.currentTarget, pointerId: event.pointerId });
|
|
3230
|
+
const isPen = event.pointerType === PointerType.pen;
|
|
3231
|
+
console.log(event.clientX, event.clientY, isPen ? event.pressure : 1);
|
|
3232
|
+
}}
|
|
3233
|
+
onpointermove={(event: PointerEvent) => {
|
|
3234
|
+
for (const point of event.getCoalescedEvents()) {
|
|
3235
|
+
console.log(point.x, point.y);
|
|
3236
|
+
}
|
|
3237
|
+
}}
|
|
3238
|
+
onkeydown={(event: KeyboardEvent) => {
|
|
3239
|
+
if (event.key === "Escape") {
|
|
3240
|
+
event.preventDefault();
|
|
3241
|
+
}
|
|
3242
|
+
}}
|
|
3243
|
+
>
|
|
3244
|
+
<text-block>Draw here</text-block>
|
|
3245
|
+
</border>
|
|
3246
|
+
```
|
|
3247
|
+
|
|
3248
|
+
`enableInputEvents()` adds the eleven names to the renderer's event-alias table
|
|
3249
|
+
(`src/renderer/host/event-adapters.ts`, the one `enableDragEvents()` fills), so a
|
|
3250
|
+
raw element takes them
|
|
3251
|
+
A WinUI-named event on the same element (`onpointerpressed`) keeps WinUI's own
|
|
3252
|
+
arguments, and so does every component prop: components get no new props
|
|
3253
|
+
`onkeydown` is the one name both share; on a raw element it takes the web's
|
|
3254
|
+
`KeyboardEvent` once the events are enabled
|
|
3255
|
+
|
|
3256
|
+
| Web event | WinUI | Notes |
|
|
3257
|
+
|---|---|---|
|
|
3258
|
+
| `pointerdown`, `pointerup`, `pointermove` | `PointerPressed`, `PointerReleased`, `PointerMoved` | `pointerId`, `pointerType` (`PointerType.mouse`, `pen`, `touch`; a touchpad is a mouse), `isPrimary`, `pressure`, `tiltX`, `tiltY`, `twist`, `button`, `buttons`, `clientX`, `clientY` (also `offsetX`, `pageX`, `x`), the four modifiers |
|
|
3259
|
+
| `pointerenter`, `pointerleave` | `PointerEntered`, `PointerExited` | WinUI bubbles them, the web does not |
|
|
3260
|
+
| `pointercancel` | `PointerCanceled` | |
|
|
3261
|
+
| `wheel` | `PointerWheelChanged` | `deltaX`, `deltaY` (positive when the wheel turns toward the user), `deltaMode` (always 0, pixels; WinUI gives 120 per notch) |
|
|
3262
|
+
| `keydown`, `keyup` | `KeyDown`, `KeyUp` | `key` and `code` mapped from `VirtualKey`, `repeat`, the modifiers read from the keyboard state |
|
|
3263
|
+
| `focusin`, `focusout` | `GotFocus`, `LostFocus` | `target`, `currentTarget`; no `relatedTarget` |
|
|
3264
|
+
|
|
3265
|
+
`event.getCoalescedEvents()` lists the points the pointer passed since the last
|
|
3266
|
+
event, oldest first, as plain field objects (`x`, `y`, `pressure` and the rest)
|
|
3267
|
+
`event.preventDefault()` and `stopPropagation()` both mark the WinUI event
|
|
3268
|
+
handled, so it goes no further up the tree and the control skips its own
|
|
3269
|
+
handling (a handled `keydown` for Tab does not move focus)
|
|
3270
|
+
`event.target` is `originalSource` (the element the event started at) and
|
|
3271
|
+
`event.currentTarget` the element the handler is written on
|
|
3272
|
+
|
|
3273
|
+
Limits:
|
|
3274
|
+
|
|
3275
|
+
- `key` and `code` assume the US layout, because WinUI's `VirtualKey` has no
|
|
3276
|
+
punctuation keys (they are `Unidentified`) and Shift does not turn `1` into
|
|
3277
|
+
`!`; read text from a `TextBox`, not from `keydown`
|
|
3278
|
+
- `isComposing` is always false: WinUI sends input method text to the text
|
|
3279
|
+
controls, not to `KeyDown`
|
|
3280
|
+
- `mouse*` and `click` are not provided; use the pointer names, or the
|
|
3281
|
+
`click` prop of a component
|
|
3282
|
+
- `getCoalescedEvents` entries are field objects, not full events
|
|
3283
|
+
|
|
3284
|
+
### Pointer capture
|
|
3285
|
+
|
|
3286
|
+
```ts
|
|
3287
|
+
setPointerCapture({ control, pointerId }); // returns true when WinUI took it
|
|
3288
|
+
hasPointerCapture({ control, pointerId });
|
|
3289
|
+
releasePointerCapture({ control, pointerId });
|
|
3290
|
+
```
|
|
3291
|
+
|
|
3292
|
+
WinUI captures a `Pointer` object where the web captures an id, so the element
|
|
3293
|
+
remembers every pointer its input events carried; capturing an id that has not
|
|
3294
|
+
reached the element yet throws
|
|
3295
|
+
Call it from a `pointerdown` handler, as on the web
|
|
3296
|
+
|
|
3297
|
+
The Canvas 2D of `winui-svelte/win2d/context-2d` reads the same fields (one
|
|
3298
|
+
implementation), so a drawing library on a canvas sees the same `pointerType`,
|
|
3299
|
+
`pressure`, tilt and coalesced events
|
|
3300
|
+
|
|
3301
|
+
### Focus
|
|
3302
|
+
|
|
3303
|
+
```svelte
|
|
3304
|
+
<script lang="ts">
|
|
3305
|
+
import { activeElement, moveFocus, trapFocus } from "winui-svelte/input";
|
|
3306
|
+
import { FocusNavigationDirection } from "winui-svelte/enums";
|
|
3307
|
+
|
|
3308
|
+
const active = activeElement(); // active.current: the focused FrameworkElement or null
|
|
3309
|
+
</script>
|
|
3310
|
+
|
|
3311
|
+
<StackPanel {@attach trapFocus()}>
|
|
3312
|
+
<Button onclick={sender => moveFocus({ direction: FocusNavigationDirection.Down, within: sender })}>
|
|
3313
|
+
Down
|
|
3314
|
+
</Button>
|
|
3315
|
+
</StackPanel>
|
|
3316
|
+
```
|
|
3317
|
+
|
|
3318
|
+
| API | Web | Notes |
|
|
3319
|
+
|---|---|---|
|
|
3320
|
+
| `activeElement().current` | `document.activeElement` | reactive; kept by `FocusManager`'s `GotFocus` and `LostFocus`, so it is null until focus first moves after the call; call it while a component initialises |
|
|
3321
|
+
| `moveFocus({ direction, within })` | none | `Up`, `Down`, `Left`, `Right` over XY focus navigation; `within` is any loaded element of the window; WinUI refuses `Next` and `Previous` in a desktop app, so those throw |
|
|
3322
|
+
| `trapFocus({ shouldFocusFirst })` | a focus trap | an attachment: sets `TabFocusNavigation` to `Cycle` (Tab after the last control goes to the first, Shift+Tab before the first to the last), moves focus in when the element is shown, gives it back to where it was when the element goes |
|
|
3323
|
+
| `FocusNavigationDirection` | none | in `winui-svelte/enums` |
|
|
3324
|
+
| `focusElement` | `element.focus()` | in `winui-svelte`, see Reactive readers of an element |
|
|
3325
|
+
|
|
3326
|
+
`FocusManager.GetFocusedElement()` without a window returns nothing in a desktop
|
|
3327
|
+
app, which is why `moveFocus` takes `within` and `trapFocus` reads the focus by
|
|
3328
|
+
the element's own window
|
|
3329
|
+
A trap cannot stop focus leaving through the title bar or another window
|
|
3330
|
+
|
|
2382
3331
|
## Web APIs (`winui-svelte/web-apis`)
|
|
2383
3332
|
|
|
2384
3333
|
The standard Web APIs over WinRT and Win32, installed on demand; the package
|
|
@@ -2410,6 +3359,8 @@ needs
|
|
|
2410
3359
|
| `requestAnimationFrame`, `requestIdleCallback` | `winui-svelte/web-apis/timing` | web | none | done |
|
|
2411
3360
|
| `ResizeObserver`, `IntersectionObserver`, `MutationObserver` | `winui-svelte/web-apis/observers` | web plus extras | none | done |
|
|
2412
3361
|
| `element.animate()`, `Animation`, `KeyframeEffect` | `winui-svelte/web-apis/animations` | web plus extras | none | done |
|
|
3362
|
+
| `ScrollTimeline`, `ViewTimeline`, `element.animate(keyframes, { timeline })` | `winui-svelte/scroll-timeline` | web | none | done |
|
|
3363
|
+
| `document.startViewTransition`, `ViewTransition`, `view-transition-name` | `winui-svelte/view-transitions` | web plus extras | none | done |
|
|
2413
3364
|
| `navigator.mediaDevices` (`getUserMedia`, `getDisplayMedia`, `enumerateDevices`), `MediaStream`, `MediaRecorder` | `winui-svelte/web-apis/media-devices` | web plus extras | none (a camera or microphone needs the Windows privacy switch on) | done |
|
|
2414
3365
|
| `speechSynthesis`, `SpeechSynthesisUtterance`, `SpeechRecognition` (SSML, silences, scenario, phrases) | `winui-svelte/web-apis/speech` | web plus extras | none | done |
|
|
2415
3366
|
| `navigator.mediaSession`, `MediaMetadata` | `winui-svelte/web-apis/media-session` | web plus extras | none | done |
|
|
@@ -2421,6 +3372,7 @@ needs
|
|
|
2421
3372
|
| `IdleDetector` (user and screen state) | `winui-svelte/web-apis/idle` | web plus extras | none | done |
|
|
2422
3373
|
| `navigator.credentials`, `PasswordCredential`, `PublicKeyCredential` (Windows Hello) | `winui-svelte/web-apis/credentials` | web plus extras | none | done |
|
|
2423
3374
|
| `EyeDropper` | `winui-svelte/web-apis/eye-dropper` | web plus extras | none | done |
|
|
3375
|
+
| `FontFace`, `document.fonts` (font files of the app) | `winui-svelte/web-apis/fonts` | web plus extras | none | done |
|
|
2424
3376
|
| `navigator.contacts` (Contact Picker) | `winui-svelte/web-apis/contacts` | web plus extras | for most apps, package identity | done |
|
|
2425
3377
|
|
|
2426
3378
|
Every row is built and tested; the timers (`setTimeout`, `setInterval`,
|
|
@@ -2501,6 +3453,23 @@ with `registerPermission({ name, provider })` and calls
|
|
|
2501
3453
|
`incomingCall`, `urgent`), `expiration`, `group`, `hero`, `audio` (`default`,
|
|
2502
3454
|
`im`, `mail`, `reminder`, `sms`, `alarm` to `alarm10`, `call` to `call10`),
|
|
2503
3455
|
`attribution`
|
|
3456
|
+
- Listing and clearing: `notificationRegistration().getNotifications({ tag })`
|
|
3457
|
+
(`NotificationRegistration`, the notification members of a `ServiceWorkerRegistration`, which has no
|
|
3458
|
+
service worker here) lists what this run showed and Windows still holds
|
|
3459
|
+
(`AppNotificationManager.GetAllAsync`), so one the user dismissed in the
|
|
3460
|
+
notification center is not listed; one an earlier run showed has no object
|
|
3461
|
+
to return and is not listed; `Notification.closeAll()` (WinUI-only) closes
|
|
3462
|
+
the ones this run holds and calls `RemoveAllAsync`, which clears the earlier
|
|
3463
|
+
run's as well
|
|
3464
|
+
- Scheduling: `showTrigger: new TimestampTrigger(Date.now() + 60_000)` shows
|
|
3465
|
+
the notification at that moment, even after the app has exited
|
|
3466
|
+
(`Windows.UI.Notifications`' `ScheduledToastNotification`, built from the
|
|
3467
|
+
same toast XML; the App SDK manager has no schedule); only a process with
|
|
3468
|
+
package identity can schedule, and without it the constructor throws
|
|
3469
|
+
`NotSupportedError`; a scheduled notification fires no `show`, and
|
|
3470
|
+
`close()` before the moment takes it out of the schedule; not exercised for
|
|
3471
|
+
real here (`node.exe` has no identity), so the tests cover it with a fake
|
|
3472
|
+
backend
|
|
2504
3473
|
- Package identity: not needed to show; an unpackaged app registers with
|
|
2505
3474
|
`identity` (name and icon file) and `appUserModelId`; the `urgent` scenario
|
|
2506
3475
|
and tooltips need a recent Windows build; a click after the process has gone
|
|
@@ -2534,8 +3503,11 @@ silent failure
|
|
|
2534
3503
|
count is a `TypeError`
|
|
2535
3504
|
WinUI-only: `navigator.setAppBadgeGlyph(glyph)` with a `BadgeGlyph`
|
|
2536
3505
|
(`alert`, `available`, `away`, `busy`, `newMessage` and so on)
|
|
2537
|
-
|
|
2538
|
-
|
|
3506
|
+
Without identity Windows refuses and the call rejects, unless
|
|
3507
|
+
`installBadging({ fallback: taskbarBadgeBackend(handle.taskbar) })` is given:
|
|
3508
|
+
the badge is then drawn as an overlay icon on that window's taskbar button
|
|
3509
|
+
(a red disc with the count, 99+ above 99, or the glyph's colour and mark),
|
|
3510
|
+
see "Taskbar button"
|
|
2539
3511
|
- `installLaunch({ initialArguments })` defines `launchQueue` (a `LaunchQueue`) with `setConsumer`
|
|
2540
3512
|
The start's command line is the first launch; each later copy's is handed
|
|
2541
3513
|
over with `launchQueue.enqueueActivation(activation)` (WinUI-only), which
|
|
@@ -2543,7 +3515,7 @@ silent failure
|
|
|
2543
3515
|
`LaunchParams.targetURL` is the first `scheme:` argument, `files` are the
|
|
2544
3516
|
existing paths, as the file-system API's own `FileSystemFileHandle` (`name`, `getFile()`, the WinUI-only `path`)
|
|
2545
3517
|
Launches wait for the consumer; registering the protocol or file type with
|
|
2546
|
-
Windows is
|
|
3518
|
+
Windows is `winui-svelte/app/activation`'s job (see Activation)
|
|
2547
3519
|
|
|
2548
3520
|
### Location and device state
|
|
2549
3521
|
|
|
@@ -2752,8 +3724,16 @@ called (`runWindow({ webApis: [installPage, installTiming] })`)
|
|
|
2752
3724
|
that `usePageWindow(handle)` is given (`bind:handle` on `<Window>`)
|
|
2753
3725
|
|
|
2754
3726
|
- `document.visibilityState`, `hidden`, `hasFocus()` and `visibilitychange`:
|
|
2755
|
-
hidden means minimized
|
|
2756
|
-
focus
|
|
3727
|
+
hidden means minimized, hidden (to the tray) or the display turned off; the
|
|
3728
|
+
window being active is focus
|
|
3729
|
+
- `document` `freeze` and `resume` (Page Lifecycle, with `onfreeze` and
|
|
3730
|
+
`onresume`): once per wake of the machine from sleep, `freeze` then
|
|
3731
|
+
`resume` together, because a sleeping process cannot see itself go to sleep;
|
|
3732
|
+
the wake is found by a gap of over ten seconds between two ticks of a
|
|
3733
|
+
one-second timer, so it is also counted after a long stall of the process;
|
|
3734
|
+
never exercised with a real sleep here (the tests use a stand-in clock)
|
|
3735
|
+
- The display and the wake come from `windowsSystemPowerSource` (see Devices,
|
|
3736
|
+
power); a machine where it cannot be read counts as awake with the display on
|
|
2757
3737
|
- `window` `focus`, `blur`, `beforeunload` (call `preventDefault()` to keep the
|
|
2758
3738
|
window open; there is no prompt), `pagehide` and `unload`, with `onfocus` and
|
|
2759
3739
|
the other handler properties; `window.close()`, `window.closed` and
|
|
@@ -2823,13 +3803,107 @@ tree's elements `animate()` and `getAnimations()`, and the global scope
|
|
|
2823
3803
|
rotation, size, margin, padding, border, shape dashes); the keyframes are
|
|
2824
3804
|
evenly spaced, so a keyframe `offset` or `easing` is ignored, and anything
|
|
2825
3805
|
else warns once
|
|
2826
|
-
- Not covered: `document.getAnimations()`, composite modes
|
|
2827
|
-
scroll timelines
|
|
3806
|
+
- Not covered: `document.getAnimations()`, composite modes and
|
|
3807
|
+
pseudo-elements; scroll timelines are `winui-svelte/scroll-timeline`, below
|
|
2828
3808
|
- Extras (WinUI only): `element.prepareConnectedAnimation(key)` and
|
|
2829
3809
|
`element.startConnectedAnimation(key)` over `ConnectedAnimationService`;
|
|
2830
3810
|
implicit animations are the CSS `transition:` the translator already maps to
|
|
2831
3811
|
`OpacityTransition` and its siblings
|
|
2832
3812
|
|
|
3813
|
+
#### Scroll timelines (`winui-svelte/scroll-timeline`)
|
|
3814
|
+
|
|
3815
|
+
`installScrollTimeline()` defines `ScrollTimeline` and `ViewTimeline` on the
|
|
3816
|
+
global scope and lets `element.animate(keyframes, { timeline })` follow a scroll
|
|
3817
|
+
position instead of the clock; install `installAnimations()` first for the rest
|
|
3818
|
+
of the Web Animations API (a call without a timeline goes on to it)
|
|
3819
|
+
It is not part of `installWebApis`; `"ScrollTimeline" in globalThis` tells
|
|
3820
|
+
whether it was installed
|
|
3821
|
+
|
|
3822
|
+
- `new ScrollTimeline({ source, axis })`: `source` is a `<scroll-viewer>`
|
|
3823
|
+
element, `axis` is `block` (the default), `inline`, `x` or `y`;
|
|
3824
|
+
`currentTime` is `{ value, unit: "percent" }` of the scrollable range, or
|
|
3825
|
+
`null` while the source is no scroll viewer in a window, and `duration` is 100
|
|
3826
|
+
percent
|
|
3827
|
+
- `new ViewTimeline({ subject, axis, inset })`: `currentTime` is how far the
|
|
3828
|
+
subject has crossed the nearest scroll viewer, from entering (0) to leaving
|
|
3829
|
+
(100); `inset` is `"10px"` or `["10px", "20%"]`
|
|
3830
|
+
- `element.animate(keyframes, { timeline, rangeStart, rangeEnd, direction })`
|
|
3831
|
+
returns a `ScrollLinkedAnimation` with `timeline`, `playState`
|
|
3832
|
+
(`running` or `idle`) and `cancel()`; `rangeStart` and `rangeEnd` are the
|
|
3833
|
+
CSS `animation-range` words (`"entry 10%"`, `"25%"`)
|
|
3834
|
+
- The same rules as the CSS: the keyframes go through the CSS build's reader,
|
|
3835
|
+
so opacity, translate, scale, rotate and a transform of them work, and a
|
|
3836
|
+
width, a color, a keyword or a skew is a `NotSupportedError`, as is an easing
|
|
3837
|
+
other than `linear` and an iteration count other than 1; a keyframe `offset`
|
|
3838
|
+
is honoured, the rest are evenly spaced
|
|
3839
|
+
- Under reduced motion (Windows' animation effects off, or the
|
|
3840
|
+
`isMotionReduced` option) the animation does not start and `playState` is
|
|
3841
|
+
`idle`; an element with the class `winui-motion-always` keeps it
|
|
3842
|
+
- The compositor runs the animation, so the UI thread cannot read its value
|
|
3843
|
+
back: `Visual.Opacity` stays at its resting value (the pixels are what shows)
|
|
3844
|
+
- Not covered: `getAnimations()` for these, `pause()`, `play()` and
|
|
3845
|
+
`currentTime` of the animation, and `timeline-scope`
|
|
3846
|
+
|
|
3847
|
+
#### View transitions (`winui-svelte/view-transitions`)
|
|
3848
|
+
|
|
3849
|
+
`installViewTransitions()` defines `document.startViewTransition` and
|
|
3850
|
+
`ViewTransition` over WinUI's connected animations
|
|
3851
|
+
An element takes part through `view-transition-name` in a sheet or a style
|
|
3852
|
+
attribute (`winui-svelte/css/view-transition`, see `src/css/API.md`): before
|
|
3853
|
+
the update runs, each named element is prepared under its name
|
|
3854
|
+
(`ConnectedAnimationService.PrepareToAnimate`); after it, the element with the
|
|
3855
|
+
same name starts that animation (`TryStart`), and WinUI flies a picture of the
|
|
3856
|
+
old element to the new one
|
|
3857
|
+
|
|
3858
|
+
```svelte
|
|
3859
|
+
<script lang="ts">
|
|
3860
|
+
import { installViewTransitions } from "winui-svelte/view-transitions";
|
|
3861
|
+
|
|
3862
|
+
installViewTransitions();
|
|
3863
|
+
let selected = $state<Photo | null>(null);
|
|
3864
|
+
|
|
3865
|
+
function open(photo: Photo) {
|
|
3866
|
+
document.startViewTransition(() => {
|
|
3867
|
+
selected = photo;
|
|
3868
|
+
});
|
|
3869
|
+
}
|
|
3870
|
+
</script>
|
|
3871
|
+
|
|
3872
|
+
{#if selected}
|
|
3873
|
+
<border class="hero" style="view-transition-name: photo-{selected.id}" />
|
|
3874
|
+
{:else}
|
|
3875
|
+
{#each photos as photo (photo.id)}
|
|
3876
|
+
<border style="view-transition-name: photo-{photo.id}" />
|
|
3877
|
+
{/each}
|
|
3878
|
+
{/if}
|
|
3879
|
+
```
|
|
3880
|
+
|
|
3881
|
+
- `startViewTransition(update)` or `startViewTransition({ update, types })`
|
|
3882
|
+
returns a `ViewTransition` with `updateCallbackDone`, `ready`, `finished`,
|
|
3883
|
+
`types` and `skipTransition()`; the update may return a promise, and runs in
|
|
3884
|
+
a microtask after the old elements are prepared
|
|
3885
|
+
- After the update the transition waits one turn of the event loop for Svelte
|
|
3886
|
+
to apply it, then pairs the names; `ready` resolves once the animations
|
|
3887
|
+
start, `finished` once WinUI reports each one completed
|
|
3888
|
+
- Like the web: a name two elements share skips the transition (`ready`
|
|
3889
|
+
rejects with an `InvalidStateError`), `skipTransition()` rejects `ready`
|
|
3890
|
+
with an `AbortError` and lets `finished` follow the update, an update that
|
|
3891
|
+
throws rejects all three promises with its error, and a new transition skips
|
|
3892
|
+
the one still running
|
|
3893
|
+
- Extras (WinUI only): `configuration` in the options object picks the
|
|
3894
|
+
motion, a `ConnectedAnimationKind` from `winui-svelte/enums`: `gravity`
|
|
3895
|
+
(WinUI's default, for going forward), `direct` (for going back) or `basic`
|
|
3896
|
+
- Limits: only a name both states have moves; a name only the old state has
|
|
3897
|
+
gets no exit and one only the new state has no entrance (the web would fade
|
|
3898
|
+
them), and there is no cross-fade of the whole window (the web's `root`)
|
|
3899
|
+
An element that keeps its name and stays in the tree does not move: WinUI
|
|
3900
|
+
will not animate an element to itself (`implicitLayoutAnimation` slides
|
|
3901
|
+
children the layout moves)
|
|
3902
|
+
The duration and easing are WinUI's (`ConnectedAnimationService`), not CSS;
|
|
3903
|
+
the `::view-transition-*` pseudo-elements, `view-transition-class` and
|
|
3904
|
+
`:active-view-transition-type()` have no counterpart, and `types` is carried
|
|
3905
|
+
but read by nothing
|
|
3906
|
+
|
|
2833
3907
|
### Media devices (`winui-svelte/web-apis/media-devices`)
|
|
2834
3908
|
|
|
2835
3909
|
`installMediaDevices()` defines `navigator.mediaDevices` (`enumerateDevices`,
|
|
@@ -3076,6 +4150,35 @@ needs a single-threaded apartment: the window thread has one)
|
|
|
3076
4150
|
`unlocked`) set; `change` fires when either moves
|
|
3077
4151
|
- Extra: `idleMilliseconds`, the time since the last input at the last reading
|
|
3078
4152
|
|
|
4153
|
+
#### Fonts
|
|
4154
|
+
|
|
4155
|
+
`installFontFaces()` defines `FontFace` and `document.fonts` (a `FontFaceSet`)
|
|
4156
|
+
over the font registry that a stylesheet's `@font-face` also fills, so a font
|
|
4157
|
+
file of the app is used by its family name in a `font-family` of a style and in
|
|
4158
|
+
a `fontFamily` prop
|
|
4159
|
+
|
|
4160
|
+
- `new FontFace(family, source, descriptors)`: `source` is `url("...")`, a path
|
|
4161
|
+
or a `file:` URL (a relative path is relative to the working folder), or the
|
|
4162
|
+
bytes of a font (written to a file of the temporary folder named by their
|
|
4163
|
+
hash); `load()` registers the file under the family and rejects with
|
|
4164
|
+
`NetworkError` when there is no such file; `status` and `loaded` follow
|
|
4165
|
+
- `document.fonts.add(face)` registers at once; `delete(face)`, `clear()` and
|
|
4166
|
+
`has(face)` as on the web; `check(font)` and `load(font)` look at the faces of
|
|
4167
|
+
the set that the font shorthand names; `ready` is resolved and `status` is
|
|
4168
|
+
`loaded`
|
|
4169
|
+
- `FontLoadStatus` is the closed set of `status` (`"unloaded"`, `"loading"`,
|
|
4170
|
+
`"loaded"`, `"error"`)
|
|
4171
|
+
- The family must be the name written inside the font file; weight, style,
|
|
4172
|
+
width and `unicodeRange` are kept and read back but choose nothing, because
|
|
4173
|
+
WinUI takes the face from the file
|
|
4174
|
+
- WinUI cannot unload a font: after `delete(face)` the family stops being
|
|
4175
|
+
spelled as its file, but a font already loaded stays usable by name until the
|
|
4176
|
+
process ends
|
|
4177
|
+
- It works in a plain Node process; nothing is installed on the machine (the
|
|
4178
|
+
file is handed to WinUI as `ms-appx:///` and its absolute path)
|
|
4179
|
+
- Extra: `registerFont({ family, source, base })` and `unregisterFont(family)`
|
|
4180
|
+
from `winui-svelte/css`, the registry itself
|
|
4181
|
+
|
|
3079
4182
|
#### Other exports
|
|
3080
4183
|
|
|
3081
4184
|
- Bluetooth: `BluetoothRemoteGATTServer`, `BluetoothRemoteGATTService`,
|
|
@@ -3164,6 +4267,82 @@ the five properties
|
|
|
3164
4267
|
- `ContactChooser` is the one interface the real picker (`windowsContactChooser`)
|
|
3165
4268
|
and the tests implement
|
|
3166
4269
|
|
|
4270
|
+
## Accessibility (`winui-svelte/accessibility`)
|
|
4271
|
+
|
|
4272
|
+
Tell a screen reader what happened, and check the window for what it would
|
|
4273
|
+
trip on; each is opt-in, and the audit is for development only
|
|
4274
|
+
|
|
4275
|
+
```svelte
|
|
4276
|
+
<script lang="ts">
|
|
4277
|
+
import { announce, LivePriority, liveRegion } from "winui-svelte/accessibility";
|
|
4278
|
+
import { elementRef } from "winui-svelte";
|
|
4279
|
+
import { TextBlock } from "winui-svelte/components";
|
|
4280
|
+
|
|
4281
|
+
const status = elementRef<TextBlock>();
|
|
4282
|
+
</script>
|
|
4283
|
+
|
|
4284
|
+
<!-- a live region: a change of its text is spoken -->
|
|
4285
|
+
<TextBlock {@attach liveRegion({ priority: LivePriority.POLITE })} {@attach status.attach}>{saved}</TextBlock>
|
|
4286
|
+
```
|
|
4287
|
+
|
|
4288
|
+
```ts
|
|
4289
|
+
announce({ message: "Saved", element: status.current, priority: LivePriority.POLITE });
|
|
4290
|
+
```
|
|
4291
|
+
|
|
4292
|
+
| Web API | Here |
|
|
4293
|
+
|---|---|
|
|
4294
|
+
| `aria-live="polite"` and `role="status"` | `LivePriority.POLITE`: waits for the user, a newer message replaces an older one |
|
|
4295
|
+
| `aria-live="assertive"` and `role="alert"` | `LivePriority.ASSERTIVE`: interrupts |
|
|
4296
|
+
| `aria-live="off"` | `LivePriority.OFF`: says nothing |
|
|
4297
|
+
| writing text into a live region | `announce({ message, element, priority })`: `AutomationPeer.RaiseNotificationEvent` (kind Other; polite is `MostRecent`, assertive is `ImportantMostRecent`) |
|
|
4298
|
+
| the `aria-live` attribute | `liveRegion({ priority })`: `AutomationProperties.LiveSetting` of the element |
|
|
4299
|
+
|
|
4300
|
+
- `FormField` marks its error text with the same `liveRegion`, so a form error
|
|
4301
|
+
is spoken when it appears
|
|
4302
|
+
- `announce` raises the notification from `element`, or from the nearest
|
|
4303
|
+
element above it that has an automation peer (a layout panel has none; a
|
|
4304
|
+
`TextBlock` does), so keep a small status element for it
|
|
4305
|
+
- `LivePriority` is also in `winui-svelte/enums`
|
|
4306
|
+
|
|
4307
|
+
### Audit (`winui-svelte/accessibility/audit`)
|
|
4308
|
+
|
|
4309
|
+
`auditAccessibility(root)` walks the visual tree of a laid-out window and returns
|
|
4310
|
+
typed findings; call it from `onloaded` or a button in development, and never
|
|
4311
|
+
import the entry in a production build
|
|
4312
|
+
|
|
4313
|
+
```ts
|
|
4314
|
+
import { auditAccessibility } from "winui-svelte/accessibility/audit";
|
|
4315
|
+
|
|
4316
|
+
for (const finding of auditAccessibility(content)) {
|
|
4317
|
+
console.warn(`${finding.path}: ${finding.message} - ${finding.suggestion}`);
|
|
4318
|
+
}
|
|
4319
|
+
```
|
|
4320
|
+
|
|
4321
|
+
| Rule id | Applies to | Finds |
|
|
4322
|
+
|---|---|---|
|
|
4323
|
+
| `unnamed-button` | buttons | no accessible name (an icon-only button with no `automationName`) |
|
|
4324
|
+
| `unlabeled-input` | text boxes, combo boxes, sliders, check boxes | no name, header or `automationLabeledBy` |
|
|
4325
|
+
| `duplicate-access-key` | interactive controls | the same `accessKey` on two elements |
|
|
4326
|
+
| `zero-size-focusable` | interactive controls | takes focus but has no width or height |
|
|
4327
|
+
| `unreachable-by-keyboard` | interactive controls | not a tab stop and no access key or keyboard accelerator |
|
|
4328
|
+
| `low-contrast-text` | text, buttons, inputs | below WCAG AA (4.5 to 1, 3 to 1 for large text) on a solid background the tree can resolve |
|
|
4329
|
+
|
|
4330
|
+
- The name is what UI Automation computes (`AutomationPeer.GetName`), so it
|
|
4331
|
+
counts `automationName`, a button's text, a header and a label alike
|
|
4332
|
+
- Contrast is measured only where the foreground is a solid brush and a solid
|
|
4333
|
+
background lies behind the text (a translucent one is mixed with it);
|
|
4334
|
+
gradients, acrylic and images are left alone
|
|
4335
|
+
- The rules are one table, `accessibilityRules`; `ruleDescriptions()` is the
|
|
4336
|
+
table without its predicates, and `winui-svelte/accessibility/rules.json`
|
|
4337
|
+
is the same as JSON for an editor (`pnpm gen:accessibility-rules`, checked by
|
|
4338
|
+
`pnpm gen:accessibility-rules:check` in the lint gate)
|
|
4339
|
+
- `auditTree({ root, host })` runs the rules over any tree a host describes,
|
|
4340
|
+
which is how the unit tests run them without WinUI
|
|
4341
|
+
- `examples/accessibility` holds a failing and a fixed form;
|
|
4342
|
+
`test/accessibility.test.ts` audits it in a real window and hears
|
|
4343
|
+
`announce` through a UI Automation event handler, and the gallery page
|
|
4344
|
+
"Live regions and the audit" shows both
|
|
4345
|
+
|
|
3167
4346
|
## Forms (`winui-svelte/forms`)
|
|
3168
4347
|
|
|
3169
4348
|
Opt-in: nothing in the core imports it, so an app that does not use it does
|
|
@@ -3638,7 +4817,7 @@ Each area is an opt-in subpath, so an app that imports none of them bundles none
|
|
|
3638
4817
|
| `winui-svelte/devices/input` | `inputDevices`, `readInputCapabilities` |
|
|
3639
4818
|
| `winui-svelte/devices/bluetooth` | adapter, devices, `bluetoothScanner`, `scanBluetoothAdvertisements`, GATT, UUIDs, radios |
|
|
3640
4819
|
| `winui-svelte/devices/printers` | `printers`, `listPrinters`, `printFile` |
|
|
3641
|
-
| `winui-svelte/devices/power` | `battery` |
|
|
4820
|
+
| `winui-svelte/devices/power` | `battery`, `systemPower` |
|
|
3642
4821
|
| `winui-svelte/devices/network` | `networkInformation` |
|
|
3643
4822
|
| `winui-svelte/devices/audio` | `audioDevices` |
|
|
3644
4823
|
| `winui-svelte/devices/display` | `displays`, `getDisplayMonitors` |
|
|
@@ -3659,7 +4838,7 @@ Everything here was checked to work from `node.exe` with no package identity;
|
|
|
3659
4838
|
- A list is a keyed reactive collection (`KeyedCollection`): `{#each collection.items as device (device.id)}`, with `get(key)`, `has(key)`, `keys` and `size`
|
|
3660
4839
|
- A change makes a new snapshot object, so a keyed block redraws the row
|
|
3661
4840
|
- Every rune reads through a `source` (or `defaults`, `list`, `createSource`) option whose default is the Windows end: `windowsInputSource`, `windowsPowerSource`, `windowsNetworkSource`, `windowsAudioDefaults`, `windowsDisplaySource`, `windowsGamepadSource` and `windowsPrinterSource` are those defaults, exported so a test or a wrapper can use or replace them
|
|
3662
|
-
- The WinRT enums the results are made of are re-exported under their own names: `AudioDeviceRole`, `BatteryStatus`, `BluetoothCacheMode`, `BluetoothLEScanningMode`, `DisplayMonitorConnectionKind`, `EnergySaverStatus`, `GamepadButtons`, `NetworkConnectivityLevel`, `NetworkCostType`, `PointerDeviceType`, `PowerSupplyStatus`, `RadioAccessStatus`, `RadioKind`, `RadioState`
|
|
4841
|
+
- The WinRT enums the results are made of are re-exported under their own names: `AudioDeviceRole`, `BatteryStatus`, `BluetoothCacheMode`, `BluetoothLEScanningMode`, `DisplayMonitorConnectionKind`, `DisplayStatus`, `EffectivePowerMode`, `EnergySaverStatus`, `GamepadButtons`, `NetworkConnectivityLevel`, `NetworkCostType`, `PointerDeviceType`, `PowerSupplyStatus`, `RadioAccessStatus`, `RadioKind`, `RadioState`, `UserPresenceStatus`
|
|
3663
4842
|
|
|
3664
4843
|
### Device enumeration
|
|
3665
4844
|
|
|
@@ -3802,6 +4981,7 @@ build; print the document to a file and use `printFile`, or draw it with Win2D
|
|
|
3802
4981
|
| Rune | Reads | Fields |
|
|
3803
4982
|
|---|---|---|
|
|
3804
4983
|
| `battery()` | `Battery.AggregateBattery`, `PowerManager` | `hasBattery`, `percent`, `isCharging`, `isDischarging`, `isOnAcPower`, `isEnergySaverOn`, `remainingDischargeMilliseconds`, `healthPercent`, `reading` |
|
|
4984
|
+
| `systemPower()` | `Microsoft.Windows.System.Power.PowerManager` (Windows App SDK) | `displayStatus`, `isDisplayOn`, `effectivePowerMode`, `isUserPresent`, `resumeCount`, `reading` |
|
|
3805
4985
|
| `networkInformation()` | `NetworkInformation` | `isOnline`, `connectivity`, `profileName`, `isMetered`, `isRoaming`, `isWifi`, `isMobile`, `signalBars`, `reading` (with every profile name) |
|
|
3806
4986
|
| `displays()` | `DisplayArea` and its watcher | `areas` (bounds and work area), `primary`, `count`; needs the Windows App SDK, which a window has |
|
|
3807
4987
|
| `getDisplayMonitors()` | `DisplayMonitor` | name, native resolution, physical size, DPI, luminance; needs no window |
|
|
@@ -3815,6 +4995,14 @@ build; print the document to a file and use `printFile`, or draw it with Win2D
|
|
|
3815
4995
|
- A GATT call that does not succeed throws `BluetoothLowEnergyError` with the `GattCommunicationStatus` (`Unreachable`, `ProtocolError`, `AccessDenied`)
|
|
3816
4996
|
- `getBluetoothAdapter()` resolves to `null` and `radios` is empty when the machine has no adapter
|
|
3817
4997
|
- An event Windows refuses to an app without a package identity is left unsubscribed: the value is still read live, it only does not update by itself
|
|
4998
|
+
- `systemPower` polls once a second and does not subscribe to `PowerManager`'s
|
|
4999
|
+
events: any subscription (even one removed again) keeps the Node process from
|
|
5000
|
+
exiting, and Windows raises them on a thread of its own, which dynwinrt does
|
|
5001
|
+
not deliver; `SystemSuspendStatus` cannot be read before its event has fired,
|
|
5002
|
+
so `resumeCount` counts a wake as a gap of over ten seconds between two
|
|
5003
|
+
ticks; `userPresenceStatus` reads 2 until Windows has said (a value the
|
|
5004
|
+
bindings do not name); `EnergySaverStatus` is the one `battery` already
|
|
5005
|
+
reads (`isEnergySaverOn`); the properties need the Windows App SDK
|
|
3818
5006
|
- A machine without a sensor, gamepad, battery or printer reports it (`isAvailable` false, an empty list, `hasBattery` false), never an error
|
|
3819
5007
|
- The radio state, pairing prompts, Bluetooth consent and the microphone are the user's: reading a list needs no consent, using a device can
|
|
3820
5008
|
|
|
@@ -3837,6 +5025,58 @@ Does not work or is not offered:
|
|
|
3837
5025
|
- Gamepad input while the window is in the background: Windows delivers it to the focused window
|
|
3838
5026
|
- Sensors on a desktop: there are none, so `isAvailable` is false
|
|
3839
5027
|
|
|
5028
|
+
## Store and package (`winui-svelte/store`)
|
|
5029
|
+
|
|
5030
|
+
The Microsoft Store and package APIs (`Windows.Services.Store.StoreContext`,
|
|
5031
|
+
`Windows.ApplicationModel.Package`, `PackageCatalog`, `StartupTask`) as typed
|
|
5032
|
+
async calls and events, opt-in
|
|
5033
|
+
Every call that needs a package identity answers `{ hasPackage: false }` outside
|
|
5034
|
+
a package (plain Node.js, Electron, `pnpm dev`) and never throws for the missing
|
|
5035
|
+
identity; inside one it answers `{ hasPackage: true, value }`
|
|
5036
|
+
The check is `GetCurrentPackageFullName`, not the exception `Package.Current`
|
|
5037
|
+
throws
|
|
5038
|
+
|
|
5039
|
+
| Export | What |
|
|
5040
|
+
|---|---|
|
|
5041
|
+
| `hasPackage()`, `getPackageInfo()` | whether the process has an identity; the package's name, full name, family name, publisher, version and install path, or null |
|
|
5042
|
+
| `getAppLicense({ window })` | `isActive`, `isTrial`, `skuStoreId`, `expirationDate` (null when it never ends) |
|
|
5043
|
+
| `watchLicense({ window, pollMilliseconds })` | a `LicenseWatcher` that raises `offlinelicenseschanged` (`onofflinelicenseschanged`); `close()` stops it |
|
|
5044
|
+
| `checkForUpdates({ window })` | `{ updates, hasMandatory, install({ onprogress }) }`: nothing is downloaded until `install` is called, and it installs exactly the updates found |
|
|
5045
|
+
| `watchPackages()` | a `PackageWatcher` that raises `packagestaging`, `packageinstalling` and `packageupdating` (`PackageProgressEvent`, with `progress`, `isComplete`, `errorCode`) |
|
|
5046
|
+
| `getStartupTask({ taskId })` | the task's `state`, `enable()` (a request: read the state it returns) and `disable()` |
|
|
5047
|
+
| `UpdateState`, `StartupState`, `PackageStage` | the closed sets, each a value plus a type |
|
|
5048
|
+
| `windowsStoreBackend` | the real backend over the WinRT classes; `StoreBackend` is the interface the calls take, so a test swaps it |
|
|
5049
|
+
|
|
5050
|
+
`window` is the owner of any Store dialog: a `WindowHandle` or the native
|
|
5051
|
+
`Window`; it is given to `IInitializeWithWindow` on the `StoreContext`, as a
|
|
5052
|
+
desktop app must
|
|
5053
|
+
Without it a call that shows UI is refused by Windows
|
|
5054
|
+
|
|
5055
|
+
Events and threads: dynwinrt delivers a callback only when Windows raises it on
|
|
5056
|
+
the UI thread
|
|
5057
|
+
`OfflineLicensesChanged` and the `PackageCatalog` events come from a thread of
|
|
5058
|
+
their own, so they may never arrive
|
|
5059
|
+
`watchLicense` takes `pollMilliseconds` to read the licence on a UI-thread timer
|
|
5060
|
+
and raise the same event when it changed (as `winui-svelte/media` polls the
|
|
5061
|
+
player); `install`'s `onprogress` is an async progress callback and does arrive
|
|
5062
|
+
Treat `watchPackages` as a hint, not a guarantee
|
|
5063
|
+
|
|
5064
|
+
What was checked from `node.exe` with no package identity: `hasPackage()` is
|
|
5065
|
+
false, `getPackageInfo()` is null, and every other call answers
|
|
5066
|
+
`hasPackage: false` (`src/store/store.test.ts`; it installs and downloads
|
|
5067
|
+
nothing)
|
|
5068
|
+
What cannot work without an identity: the licence, the Store update check and
|
|
5069
|
+
install, the package events and startup tasks all, because Windows ties them to
|
|
5070
|
+
the package
|
|
5071
|
+
Under MSIX they are expected to work as documented, but nothing here has run
|
|
5072
|
+
under a real package yet
|
|
5073
|
+
|
|
5074
|
+
Replaces in the any-stt panel: with `getAppLicense`, `watchLicense`,
|
|
5075
|
+
`checkForUpdates`, `watchPackages` and `getStartupTask` running in the packaged
|
|
5076
|
+
`node.exe`, the Rust launcher no longer needs `licence.rs`, `updates.rs`,
|
|
5077
|
+
`store.rs` or its `--startup-task` mode
|
|
5078
|
+
Delete them once the calls are confirmed under the package
|
|
5079
|
+
|
|
3840
5080
|
## Reference: the remaining exports
|
|
3841
5081
|
|
|
3842
5082
|
Exports that other sections do not need to name; each has JSDoc in its source
|
|
@@ -3855,7 +5095,7 @@ entry point is named nowhere in the docs
|
|
|
3855
5095
|
| `releaseFragment`, `rootControl`, `watchRoot`, `unwatchRoot`, `swapControl` | `winui-svelte/host` | the renderer's mount-target plumbing: release what nodes hold, find the root, watch and unwatch it, replace a control in place |
|
|
3856
5096
|
| `classNameOf` | `winui-svelte/host` | the class name (`ListView`) of a control, from the tag it was registered under, so it holds when a minifier renames classes |
|
|
3857
5097
|
| `createCssNative`, `installCssRuntime`, `unregisterStyleSheet`, `textTransforms` | `winui-svelte/css` | the CSS runtime's WinUI boundary, its installer, removal of a stylesheet, and the text each element's `text-transform` shows (the renderer reads it) |
|
|
3858
|
-
| `animationGroups`, `effectGroups`, `visualEffectGroups`, `clipGroups`, `cursorGroups`, `environmentGroups`, `gradientGroups`, `containerGroups`, `compatGroups`, `focusGroups`, `positionGroups`, `queryGroups`, `resourceGroups`, `surfaceGroups`, `transformGroups` | `winui-svelte/css/*` | the property groups each opt-in subpath adds |
|
|
5098
|
+
| `animationGroups`, `effectGroups`, `visualEffectGroups`, `clipGroups`, `cursorGroups`, `environmentGroups`, `gradientGroups`, `containerGroups`, `compatGroups`, `focusGroups`, `positionGroups`, `queryGroups`, `resourceGroups`, `scrollTimelineGroups`, `surfaceGroups`, `transformGroups`, `viewTransitionGroups`, `visualStateGroups` | `winui-svelte/css/*` | the property groups each opt-in subpath adds |
|
|
3859
5099
|
| `SHEET_SUFFIX`, `SheetError` | `winui-svelte/css/sheet-module` | the module-name suffix of a compiled stylesheet; a stylesheet WinUI cannot say |
|
|
3860
5100
|
| `translateComponent` | `winui-svelte/css/sheet-module` | the build's translation of a component's `<style>`, which the validator and the Vite plugin share |
|
|
3861
5101
|
| `unusedSelectorMessages` | `winui-svelte/css/sheet-module` | the messages of Svelte's unused-selector warnings for a component read with its instances as elements, which `winuiWarningFilter` keeps |
|
|
@@ -3889,6 +5129,12 @@ event announces, such as an unreferenced timer) and uses next to no CPU
|
|
|
3889
5129
|
The one thing nobody can ask libuv from outside is when its next timer fires:
|
|
3890
5130
|
while Node itself holds a timer (a socket timeout) the pump wakes every 16 ms
|
|
3891
5131
|
The timers an app makes go through the scheduler, which the dispatcher drives
|
|
5132
|
+
Measured idle cost, over 20 seconds after a minute of settling, on Windows 11
|
|
5133
|
+
(build 26300) with a 32-thread CPU and the Windows App SDK 2.2 build of this
|
|
5134
|
+
repository: `examples/hello` used 0.15 percent of one core and `examples/tray`
|
|
5135
|
+
(a tray icon and no window) used 0.23 percent, so nothing in the idle path needs
|
|
5136
|
+
fixing; the first seconds after start cost more (about 2 percent of a core) while
|
|
5137
|
+
the window loads
|
|
3892
5138
|
A host that calls `process.exit` while the window runs would end the process
|
|
3893
5139
|
under WinUI's thread (a delegate then finds the Node environment closing, and
|
|
3894
5140
|
the process can end with 0xC000027B); `initWindowsAppSdk` therefore installs
|