winui-svelte 0.0.6 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (737) hide show
  1. package/API.md +955 -22
  2. package/README.md +25 -5
  3. package/dist/app/activate.d.ts.map +1 -1
  4. package/dist/app/activate.js +3 -0
  5. package/dist/app/activate.js.map +1 -1
  6. package/dist/app/activation/index.d.ts +3 -0
  7. package/dist/app/activation/index.d.ts.map +1 -1
  8. package/dist/app/activation/index.js +2 -0
  9. package/dist/app/activation/index.js.map +1 -1
  10. package/dist/app/activation/login.d.ts +2 -1
  11. package/dist/app/activation/login.d.ts.map +1 -1
  12. package/dist/app/activation/login.js +2 -1
  13. package/dist/app/activation/login.js.map +1 -1
  14. package/dist/app/activation/native.js +1 -2
  15. package/dist/app/activation/native.js.map +1 -1
  16. package/dist/app/activation/packaged.d.ts +49 -0
  17. package/dist/app/activation/packaged.d.ts.map +1 -0
  18. package/dist/app/activation/packaged.js +90 -0
  19. package/dist/app/activation/packaged.js.map +1 -0
  20. package/dist/app/activation/receive.d.ts +11 -2
  21. package/dist/app/activation/receive.d.ts.map +1 -1
  22. package/dist/app/activation/receive.js +11 -4
  23. package/dist/app/activation/receive.js.map +1 -1
  24. package/dist/app/activation/registration.d.ts +3 -3
  25. package/dist/app/activation/registration.js +7 -7
  26. package/dist/app/activation/registration.js.map +1 -1
  27. package/dist/app/activation/scheme.d.ts +10 -0
  28. package/dist/app/activation/scheme.d.ts.map +1 -1
  29. package/dist/app/activation/scheme.js +17 -0
  30. package/dist/app/activation/scheme.js.map +1 -1
  31. package/dist/app/index.d.ts +4 -2
  32. package/dist/app/index.d.ts.map +1 -1
  33. package/dist/app/index.js +3 -1
  34. package/dist/app/index.js.map +1 -1
  35. package/dist/app/instance-running.d.ts +15 -0
  36. package/dist/app/instance-running.d.ts.map +1 -0
  37. package/dist/app/instance-running.js +20 -0
  38. package/dist/app/instance-running.js.map +1 -0
  39. package/dist/app/jump-list/native.d.ts.map +1 -1
  40. package/dist/app/jump-list/native.js +1 -2
  41. package/dist/app/jump-list/native.js.map +1 -1
  42. package/dist/app/launch-command.d.ts +11 -6
  43. package/dist/app/launch-command.d.ts.map +1 -1
  44. package/dist/app/launch-command.js +16 -5
  45. package/dist/app/launch-command.js.map +1 -1
  46. package/dist/app/native-messaging/browsers.d.ts +19 -0
  47. package/dist/app/native-messaging/browsers.d.ts.map +1 -0
  48. package/dist/app/native-messaging/browsers.js +17 -0
  49. package/dist/app/native-messaging/browsers.js.map +1 -0
  50. package/dist/app/native-messaging/index.d.ts +41 -0
  51. package/dist/app/native-messaging/index.d.ts.map +1 -0
  52. package/dist/app/native-messaging/index.js +84 -0
  53. package/dist/app/native-messaging/index.js.map +1 -0
  54. package/dist/app/native.d.ts +0 -6
  55. package/dist/app/native.d.ts.map +1 -1
  56. package/dist/app/native.js +1 -24
  57. package/dist/app/native.js.map +1 -1
  58. package/dist/app/notification-source.d.ts.map +1 -1
  59. package/dist/app/notification-source.js +1 -2
  60. package/dist/app/notification-source.js.map +1 -1
  61. package/dist/app/shell/native.js +1 -2
  62. package/dist/app/shell/native.js.map +1 -1
  63. package/dist/app/single-instance.d.ts +27 -1
  64. package/dist/app/single-instance.d.ts.map +1 -1
  65. package/dist/app/single-instance.js +32 -10
  66. package/dist/app/single-instance.js.map +1 -1
  67. package/dist/app/tray-instance.d.ts +4 -3
  68. package/dist/app/tray-instance.d.ts.map +1 -1
  69. package/dist/app/tray-instance.js +7 -5
  70. package/dist/app/tray-instance.js.map +1 -1
  71. package/dist/automation/backend.d.ts +51 -0
  72. package/dist/automation/backend.d.ts.map +1 -0
  73. package/dist/automation/backend.js +5 -0
  74. package/dist/automation/backend.js.map +1 -0
  75. package/dist/automation/client.d.ts +97 -0
  76. package/dist/automation/client.d.ts.map +1 -0
  77. package/dist/automation/client.js +203 -0
  78. package/dist/automation/client.js.map +1 -0
  79. package/dist/automation/ids.d.ts +90 -0
  80. package/dist/automation/ids.d.ts.map +1 -0
  81. package/dist/automation/ids.js +84 -0
  82. package/dist/automation/ids.js.map +1 -0
  83. package/dist/automation/index.d.ts +13 -0
  84. package/dist/automation/index.d.ts.map +1 -0
  85. package/dist/automation/index.js +8 -0
  86. package/dist/automation/index.js.map +1 -0
  87. package/dist/automation/native.d.ts +11 -0
  88. package/dist/automation/native.d.ts.map +1 -0
  89. package/dist/automation/native.js +594 -0
  90. package/dist/automation/native.js.map +1 -0
  91. package/dist/automation/text.d.ts +50 -0
  92. package/dist/automation/text.d.ts.map +1 -0
  93. package/dist/automation/text.js +110 -0
  94. package/dist/automation/text.js.map +1 -0
  95. package/dist/automation/with-client.d.ts +13 -0
  96. package/dist/automation/with-client.d.ts.map +1 -0
  97. package/dist/automation/with-client.js +19 -0
  98. package/dist/automation/with-client.js.map +1 -0
  99. package/dist/automation/worker-job.d.ts +32 -0
  100. package/dist/automation/worker-job.d.ts.map +1 -0
  101. package/dist/automation/worker-job.js +69 -0
  102. package/dist/automation/worker-job.js.map +1 -0
  103. package/dist/automation/worker.d.ts +44 -0
  104. package/dist/automation/worker.d.ts.map +1 -0
  105. package/dist/automation/worker.js +70 -0
  106. package/dist/automation/worker.js.map +1 -0
  107. package/dist/bindings/.dynwinrt-js-types +198 -0
  108. package/dist/bindings/.dynwinrt-managed +1 -1
  109. package/dist/bindings/index.d.ts +15 -0
  110. package/dist/bindings/index.js +20 -0
  111. package/dist/bindings/index.mjs +2902 -2882
  112. package/dist/bindings/index.proxy.js +10 -0
  113. package/dist/bindings/windows/application-model/activation/ActivationKind.d.ts +49 -0
  114. package/dist/bindings/windows/application-model/activation/ActivationKind.js +50 -0
  115. package/dist/bindings/windows/application-model/activation/ApplicationExecutionState.d.ts +9 -0
  116. package/dist/bindings/windows/application-model/activation/ApplicationExecutionState.js +10 -0
  117. package/dist/bindings/windows/application-model/activation/IActivatedEventArgs.d.ts +36 -0
  118. package/dist/bindings/windows/application-model/activation/IActivatedEventArgs.js +149 -0
  119. package/dist/bindings/windows/application-model/activation/IActivatedEventArgsWithUser.d.ts +28 -0
  120. package/dist/bindings/windows/application-model/activation/IActivatedEventArgsWithUser.js +119 -0
  121. package/dist/bindings/windows/application-model/activation/IApplicationViewActivatedEventArgs.d.ts +27 -0
  122. package/dist/bindings/windows/application-model/activation/IApplicationViewActivatedEventArgs.js +116 -0
  123. package/dist/bindings/windows/application-model/activation/IProtocolActivatedEventArgsWithCallerPackageFamilyNameAndData.d.ts +31 -0
  124. package/dist/bindings/windows/application-model/activation/IProtocolActivatedEventArgsWithCallerPackageFamilyNameAndData.js +131 -0
  125. package/dist/bindings/windows/application-model/activation/IViewSwitcherProvider.d.ts +28 -0
  126. package/dist/bindings/windows/application-model/activation/IViewSwitcherProvider.js +119 -0
  127. package/dist/bindings/windows/application-model/activation/ProtocolActivatedEventArgs.d.ts +25 -0
  128. package/dist/bindings/windows/application-model/activation/ProtocolActivatedEventArgs.js +166 -0
  129. package/dist/bindings/windows/application-model/activation/SplashScreen.d.ts +35 -0
  130. package/dist/bindings/windows/application-model/activation/SplashScreen.js +105 -0
  131. package/dist/bindings/windows/foundation/TypedEventHandler_WindowsApplicationModelActivationSplashScreen_Object_g7a7dbfa699cd28ff.d.ts +7 -0
  132. package/dist/bindings/windows/foundation/TypedEventHandler_WindowsApplicationModelActivationSplashScreen_Object_g7a7dbfa699cd28ff.js +7 -0
  133. package/dist/bindings/windows/ui/view-management/ActivationViewSwitcher.d.ts +12 -0
  134. package/dist/bindings/windows/ui/view-management/ActivationViewSwitcher.js +96 -0
  135. package/dist/chrome/context-menus/context-menu-schema.d.ts +4 -4
  136. package/dist/chrome/context-menus/context-menu-schema.d.ts.map +1 -1
  137. package/dist/chrome/context-menus/context-menu-schema.js +1 -7
  138. package/dist/chrome/context-menus/context-menu-schema.js.map +1 -1
  139. package/dist/chrome/notifications/notification-schema.d.ts +2 -2
  140. package/dist/chrome/parse-or-throw.d.ts +7 -0
  141. package/dist/chrome/parse-or-throw.d.ts.map +1 -0
  142. package/dist/chrome/parse-or-throw.js +9 -0
  143. package/dist/chrome/parse-or-throw.js.map +1 -0
  144. package/dist/chrome/permissions/permission-schema.d.ts.map +1 -1
  145. package/dist/chrome/permissions/permission-schema.js +1 -7
  146. package/dist/chrome/permissions/permission-schema.js.map +1 -1
  147. package/dist/chrome/windows/chrome-windows.d.ts.map +1 -1
  148. package/dist/chrome/windows/chrome-windows.js +1 -7
  149. package/dist/chrome/windows/chrome-windows.js.map +1 -1
  150. package/dist/components/hand-written/Window.svelte +2 -0
  151. package/dist/components/hand-written/items/keyed-rows.svelte.d.ts.map +1 -1
  152. package/dist/components/hand-written/items/keyed-rows.svelte.js +6 -0
  153. package/dist/components/hand-written/items/keyed-rows.svelte.js.map +1 -1
  154. package/dist/components/index.d.ts +1 -0
  155. package/dist/components/index.d.ts.map +1 -1
  156. package/dist/components/runtime.svelte.d.ts.map +1 -1
  157. package/dist/components/runtime.svelte.js +7 -0
  158. package/dist/components/runtime.svelte.js.map +1 -1
  159. package/dist/components/window-context.d.ts +14 -0
  160. package/dist/components/window-context.d.ts.map +1 -0
  161. package/dist/components/window-context.js +20 -0
  162. package/dist/components/window-context.js.map +1 -0
  163. package/dist/composition/expression.d.ts +1 -1
  164. package/dist/css/runtime/containers.d.ts.map +1 -1
  165. package/dist/css/runtime/containers.js +1 -17
  166. package/dist/css/runtime/containers.js.map +1 -1
  167. package/dist/css/runtime/native.d.ts.map +1 -1
  168. package/dist/css/runtime/native.js +40 -20
  169. package/dist/css/runtime/native.js.map +1 -1
  170. package/dist/css/translate/property-kit.d.ts +9 -0
  171. package/dist/css/translate/property-kit.d.ts.map +1 -1
  172. package/dist/css/translate/property-kit.js.map +1 -1
  173. package/dist/css/translate/transition-properties.d.ts +1 -1
  174. package/dist/css/translate/transition-properties.d.ts.map +1 -1
  175. package/dist/css/translate/transition-properties.js +32 -5
  176. package/dist/css/translate/transition-properties.js.map +1 -1
  177. package/dist/data-transfer/data-transfer.d.ts +3 -3
  178. package/dist/data-transfer/data-transfer.d.ts.map +1 -1
  179. package/dist/data-transfer/data-transfer.js.map +1 -1
  180. package/dist/data-transfer/drag-effects.d.ts +25 -2
  181. package/dist/data-transfer/drag-effects.d.ts.map +1 -1
  182. package/dist/data-transfer/drag-effects.js +27 -2
  183. package/dist/data-transfer/drag-effects.js.map +1 -1
  184. package/dist/data-transfer/drag-helper.d.ts +50 -0
  185. package/dist/data-transfer/drag-helper.d.ts.map +1 -0
  186. package/dist/data-transfer/drag-helper.js +156 -0
  187. package/dist/data-transfer/drag-helper.js.map +1 -0
  188. package/dist/data-transfer/drop-target.d.ts +6 -5
  189. package/dist/data-transfer/drop-target.d.ts.map +1 -1
  190. package/dist/data-transfer/drop-target.js +68 -20
  191. package/dist/data-transfer/drop-target.js.map +1 -1
  192. package/dist/data-transfer/index.d.ts +1 -0
  193. package/dist/data-transfer/index.d.ts.map +1 -1
  194. package/dist/data-transfer/index.js.map +1 -1
  195. package/dist/data-transfer/launcher.d.ts +4 -3
  196. package/dist/data-transfer/launcher.d.ts.map +1 -1
  197. package/dist/data-transfer/launcher.js +58 -9
  198. package/dist/data-transfer/launcher.js.map +1 -1
  199. package/dist/data-transfer/native.d.ts +66 -0
  200. package/dist/data-transfer/native.d.ts.map +1 -0
  201. package/dist/data-transfer/native.js +148 -0
  202. package/dist/data-transfer/native.js.map +1 -0
  203. package/dist/data-transfer/ole-data-object.d.ts +62 -0
  204. package/dist/data-transfer/ole-data-object.d.ts.map +1 -0
  205. package/dist/data-transfer/ole-data-object.js +162 -0
  206. package/dist/data-transfer/ole-data-object.js.map +1 -0
  207. package/dist/data-transfer/ole-drop-target.d.ts +54 -0
  208. package/dist/data-transfer/ole-drop-target.d.ts.map +1 -0
  209. package/dist/data-transfer/ole-drop-target.js +192 -0
  210. package/dist/data-transfer/ole-drop-target.js.map +1 -0
  211. package/dist/data-transfer/share-interop.d.ts.map +1 -1
  212. package/dist/data-transfer/share-interop.js +1 -1
  213. package/dist/data-transfer/share-interop.js.map +1 -1
  214. package/dist/data-transfer/shell-items.d.ts +10 -0
  215. package/dist/data-transfer/shell-items.d.ts.map +1 -0
  216. package/dist/data-transfer/shell-items.js +67 -0
  217. package/dist/data-transfer/shell-items.js.map +1 -0
  218. package/dist/data-transfer/window-drop.d.ts +35 -0
  219. package/dist/data-transfer/window-drop.d.ts.map +1 -0
  220. package/dist/data-transfer/window-drop.js +311 -0
  221. package/dist/data-transfer/window-drop.js.map +1 -0
  222. package/dist/devices/native.js +1 -2
  223. package/dist/devices/native.js.map +1 -1
  224. package/dist/downloads/chrome-downloads.d.ts +8 -0
  225. package/dist/downloads/chrome-downloads.d.ts.map +1 -1
  226. package/dist/downloads/chrome-downloads.js +35 -6
  227. package/dist/downloads/chrome-downloads.js.map +1 -1
  228. package/dist/downloads/download-record.d.ts +3 -2
  229. package/dist/downloads/download-record.d.ts.map +1 -1
  230. package/dist/downloads/download-record.js.map +1 -1
  231. package/dist/downloads/download-transfer.d.ts.map +1 -1
  232. package/dist/downloads/download-transfer.js +3 -3
  233. package/dist/downloads/download-transfer.js.map +1 -1
  234. package/dist/downloads/download-types.d.ts +3 -1
  235. package/dist/downloads/download-types.d.ts.map +1 -1
  236. package/dist/downloads/download-types.js.map +1 -1
  237. package/dist/downloads/fetch-to-file.d.ts +11 -6
  238. package/dist/downloads/fetch-to-file.d.ts.map +1 -1
  239. package/dist/downloads/fetch-to-file.js +45 -16
  240. package/dist/downloads/fetch-to-file.js.map +1 -1
  241. package/dist/downloads/taskbar-progress.d.ts +3 -18
  242. package/dist/downloads/taskbar-progress.d.ts.map +1 -1
  243. package/dist/downloads/taskbar-progress.js +1 -38
  244. package/dist/downloads/taskbar-progress.js.map +1 -1
  245. package/dist/enums.d.ts +4 -0
  246. package/dist/enums.d.ts.map +1 -1
  247. package/dist/enums.js +4 -0
  248. package/dist/enums.js.map +1 -1
  249. package/dist/forms/form-field-props.d.ts +2 -2
  250. package/dist/input/index.d.ts +2 -0
  251. package/dist/input/index.d.ts.map +1 -1
  252. package/dist/input/index.js +1 -0
  253. package/dist/input/index.js.map +1 -1
  254. package/dist/input/modifier-keys.d.ts +24 -0
  255. package/dist/input/modifier-keys.d.ts.map +1 -0
  256. package/dist/input/modifier-keys.js +20 -0
  257. package/dist/input/modifier-keys.js.map +1 -0
  258. package/dist/media/pixel-buffer.d.ts.map +1 -1
  259. package/dist/media/pixel-buffer.js +1 -1
  260. package/dist/media/pixel-buffer.js.map +1 -1
  261. package/dist/messaging/web-view2/core.d.ts +56 -0
  262. package/dist/messaging/web-view2/core.d.ts.map +1 -1
  263. package/dist/messaging/web-view2/core.js +6 -0
  264. package/dist/messaging/web-view2/core.js.map +1 -1
  265. package/dist/messaging/web-view2/environment.d.ts +41 -0
  266. package/dist/messaging/web-view2/environment.d.ts.map +1 -0
  267. package/dist/messaging/web-view2/environment.js +91 -0
  268. package/dist/messaging/web-view2/environment.js.map +1 -0
  269. package/dist/messaging/web-view2/index.d.ts +9 -1
  270. package/dist/messaging/web-view2/index.d.ts.map +1 -1
  271. package/dist/messaging/web-view2/index.js +5 -0
  272. package/dist/messaging/web-view2/index.js.map +1 -1
  273. package/dist/messaging/web-view2/input.d.ts +68 -0
  274. package/dist/messaging/web-view2/input.d.ts.map +1 -0
  275. package/dist/messaging/web-view2/input.js +108 -0
  276. package/dist/messaging/web-view2/input.js.map +1 -0
  277. package/dist/messaging/web-view2/protocol.d.ts +24 -0
  278. package/dist/messaging/web-view2/protocol.d.ts.map +1 -0
  279. package/dist/messaging/web-view2/protocol.js +31 -0
  280. package/dist/messaging/web-view2/protocol.js.map +1 -0
  281. package/dist/messaging/web-view2/recovery.d.ts +65 -0
  282. package/dist/messaging/web-view2/recovery.d.ts.map +1 -0
  283. package/dist/messaging/web-view2/recovery.js +138 -0
  284. package/dist/messaging/web-view2/recovery.js.map +1 -0
  285. package/dist/messaging/web-view2/requests.d.ts +88 -0
  286. package/dist/messaging/web-view2/requests.d.ts.map +1 -0
  287. package/dist/messaging/web-view2/requests.js +169 -0
  288. package/dist/messaging/web-view2/requests.js.map +1 -0
  289. package/dist/messaging/web-view2/transport.d.ts.map +1 -1
  290. package/dist/messaging/web-view2/transport.js +1 -4
  291. package/dist/messaging/web-view2/transport.js.map +1 -1
  292. package/dist/native-identity.d.ts +10 -0
  293. package/dist/native-identity.d.ts.map +1 -0
  294. package/dist/native-identity.js +20 -0
  295. package/dist/native-identity.js.map +1 -0
  296. package/dist/progress/TaskbarProgress.d.svelte.ts +6 -0
  297. package/dist/progress/TaskbarProgress.svelte +32 -0
  298. package/dist/progress/aggregate.d.ts +23 -0
  299. package/dist/progress/aggregate.d.ts.map +1 -0
  300. package/dist/progress/aggregate.js +59 -0
  301. package/dist/progress/aggregate.js.map +1 -0
  302. package/dist/progress/core.d.ts +14 -0
  303. package/dist/progress/core.d.ts.map +1 -0
  304. package/dist/progress/core.js +8 -0
  305. package/dist/progress/core.js.map +1 -0
  306. package/dist/progress/index.d.ts +5 -0
  307. package/dist/progress/index.d.ts.map +1 -0
  308. package/dist/progress/index.js +4 -0
  309. package/dist/progress/index.js.map +1 -0
  310. package/dist/progress/progress-event.d.ts +18 -0
  311. package/dist/progress/progress-event.d.ts.map +1 -0
  312. package/dist/progress/progress-event.js +19 -0
  313. package/dist/progress/progress-event.js.map +1 -0
  314. package/dist/progress/progress-operation.d.ts +163 -0
  315. package/dist/progress/progress-operation.d.ts.map +1 -0
  316. package/dist/progress/progress-operation.js +356 -0
  317. package/dist/progress/progress-operation.js.map +1 -0
  318. package/dist/progress/progress-registry.d.ts +89 -0
  319. package/dist/progress/progress-registry.d.ts.map +1 -0
  320. package/dist/progress/progress-registry.js +187 -0
  321. package/dist/progress/progress-registry.js.map +1 -0
  322. package/dist/progress/progress-source.d.ts +46 -0
  323. package/dist/progress/progress-source.d.ts.map +1 -0
  324. package/dist/progress/progress-source.js +31 -0
  325. package/dist/progress/progress-source.js.map +1 -0
  326. package/dist/progress/progress-state.d.ts +54 -0
  327. package/dist/progress/progress-state.d.ts.map +1 -0
  328. package/dist/progress/progress-state.js +35 -0
  329. package/dist/progress/progress-state.js.map +1 -0
  330. package/dist/progress/progress-text.d.ts +10 -0
  331. package/dist/progress/progress-text.d.ts.map +1 -0
  332. package/dist/progress/progress-text.js +23 -0
  333. package/dist/progress/progress-text.js.map +1 -0
  334. package/dist/progress/scoped-source.d.ts +31 -0
  335. package/dist/progress/scoped-source.d.ts.map +1 -0
  336. package/dist/progress/scoped-source.js +46 -0
  337. package/dist/progress/scoped-source.js.map +1 -0
  338. package/dist/progress/taskbar-progress-props.d.ts +15 -0
  339. package/dist/progress/taskbar-progress-props.d.ts.map +1 -0
  340. package/dist/progress/taskbar-progress-props.js +2 -0
  341. package/dist/progress/taskbar-progress-props.js.map +1 -0
  342. package/dist/progress/taskbar-progress.d.ts +44 -0
  343. package/dist/progress/taskbar-progress.d.ts.map +1 -0
  344. package/dist/progress/taskbar-progress.js +62 -0
  345. package/dist/progress/taskbar-progress.js.map +1 -0
  346. package/dist/progress/track-operation.d.ts +36 -0
  347. package/dist/progress/track-operation.d.ts.map +1 -0
  348. package/dist/progress/track-operation.js +53 -0
  349. package/dist/progress/track-operation.js.map +1 -0
  350. package/dist/renderer/host/host.d.ts.map +1 -1
  351. package/dist/renderer/host/host.js +33 -16
  352. package/dist/renderer/host/host.js.map +1 -1
  353. package/dist/renderer/host/structure-sync.d.ts +9 -0
  354. package/dist/renderer/host/structure-sync.d.ts.map +1 -0
  355. package/dist/renderer/host/structure-sync.js +24 -0
  356. package/dist/renderer/host/structure-sync.js.map +1 -0
  357. package/dist/security/data-protection-error.d.ts +14 -0
  358. package/dist/security/data-protection-error.d.ts.map +1 -0
  359. package/dist/security/data-protection-error.js +15 -0
  360. package/dist/security/data-protection-error.js.map +1 -0
  361. package/dist/security/index.d.ts +48 -0
  362. package/dist/security/index.d.ts.map +1 -0
  363. package/dist/security/index.js +32 -0
  364. package/dist/security/index.js.map +1 -0
  365. package/dist/security/native.d.ts +43 -0
  366. package/dist/security/native.d.ts.map +1 -0
  367. package/dist/security/native.js +170 -0
  368. package/dist/security/native.js.map +1 -0
  369. package/dist/security/protection-scope.d.ts +13 -0
  370. package/dist/security/protection-scope.d.ts.map +1 -0
  371. package/dist/security/protection-scope.js +11 -0
  372. package/dist/security/protection-scope.js.map +1 -0
  373. package/dist/store/states.d.ts +2 -2
  374. package/dist/store/windows-identity.d.ts +2 -6
  375. package/dist/store/windows-identity.d.ts.map +1 -1
  376. package/dist/store/windows-identity.js +2 -29
  377. package/dist/store/windows-identity.js.map +1 -1
  378. package/dist/store/windows-packages.d.ts +2 -2
  379. package/dist/store/windows-store.d.ts +2 -2
  380. package/dist/tray/click-detector.d.ts.map +1 -1
  381. package/dist/tray/click-detector.js.map +1 -1
  382. package/dist/tray/flyout-model.d.ts +4 -3
  383. package/dist/tray/flyout-model.d.ts.map +1 -1
  384. package/dist/tray/flyout-model.js +12 -2
  385. package/dist/tray/flyout-model.js.map +1 -1
  386. package/dist/tray/menu/icon.d.ts +17 -0
  387. package/dist/tray/menu/icon.d.ts.map +1 -0
  388. package/dist/tray/menu/icon.js +31 -0
  389. package/dist/tray/menu/icon.js.map +1 -0
  390. package/dist/tray/menu/index.d.ts +1 -1
  391. package/dist/tray/menu/index.d.ts.map +1 -1
  392. package/dist/tray/menu/index.js.map +1 -1
  393. package/dist/tray/menu/types.d.ts +23 -6
  394. package/dist/tray/menu/types.d.ts.map +1 -1
  395. package/dist/tray/menu/types.js.map +1 -1
  396. package/dist/tray/menu-svelte/TrayMenuOperations.d.svelte.ts +6 -0
  397. package/dist/tray/menu-svelte/TrayMenuOperations.svelte +33 -0
  398. package/dist/tray/menu-svelte/TrayMenuProgress.d.svelte.ts +6 -0
  399. package/dist/tray/menu-svelte/TrayMenuProgress.svelte +28 -0
  400. package/dist/tray/menu-svelte/index.d.ts +3 -1
  401. package/dist/tray/menu-svelte/index.d.ts.map +1 -1
  402. package/dist/tray/menu-svelte/index.js +2 -0
  403. package/dist/tray/menu-svelte/index.js.map +1 -1
  404. package/dist/tray/menu-svelte/menu-node.d.ts +9 -9
  405. package/dist/tray/menu-svelte/menu-props.d.ts +16 -0
  406. package/dist/tray/menu-svelte/menu-props.d.ts.map +1 -1
  407. package/dist/tray/menu-svelte/operation-ids.d.ts +8 -0
  408. package/dist/tray/menu-svelte/operation-ids.d.ts.map +1 -0
  409. package/dist/tray/menu-svelte/operation-ids.js +20 -0
  410. package/dist/tray/menu-svelte/operation-ids.js.map +1 -0
  411. package/dist/tray/native.d.ts +15 -5
  412. package/dist/tray/native.d.ts.map +1 -1
  413. package/dist/tray/native.js +27 -45
  414. package/dist/tray/native.js.map +1 -1
  415. package/dist/tray/personalize.d.ts +18 -0
  416. package/dist/tray/personalize.d.ts.map +1 -0
  417. package/dist/tray/personalize.js +42 -0
  418. package/dist/tray/personalize.js.map +1 -0
  419. package/dist/tray/pointer-share.d.ts +27 -0
  420. package/dist/tray/pointer-share.d.ts.map +1 -0
  421. package/dist/tray/pointer-share.js +61 -0
  422. package/dist/tray/pointer-share.js.map +1 -0
  423. package/dist/tray/standalone/icon-raster.d.ts +72 -0
  424. package/dist/tray/standalone/icon-raster.d.ts.map +1 -0
  425. package/dist/tray/standalone/icon-raster.js +161 -0
  426. package/dist/tray/standalone/icon-raster.js.map +1 -0
  427. package/dist/tray/standalone/index.d.ts +4 -2
  428. package/dist/tray/standalone/index.d.ts.map +1 -1
  429. package/dist/tray/standalone/index.js +2 -0
  430. package/dist/tray/standalone/index.js.map +1 -1
  431. package/dist/tray/standalone/menu-icons.d.ts +9 -0
  432. package/dist/tray/standalone/menu-icons.d.ts.map +1 -0
  433. package/dist/tray/standalone/menu-icons.js +280 -0
  434. package/dist/tray/standalone/menu-icons.js.map +1 -0
  435. package/dist/tray/standalone/menu-theme.d.ts +38 -0
  436. package/dist/tray/standalone/menu-theme.d.ts.map +1 -0
  437. package/dist/tray/standalone/menu-theme.js +74 -0
  438. package/dist/tray/standalone/menu-theme.js.map +1 -0
  439. package/dist/tray/standalone/native.d.ts +24 -7
  440. package/dist/tray/standalone/native.d.ts.map +1 -1
  441. package/dist/tray/standalone/native.js +63 -16
  442. package/dist/tray/standalone/native.js.map +1 -1
  443. package/dist/tray/standalone/standalone-tray.d.ts +17 -2
  444. package/dist/tray/standalone/standalone-tray.d.ts.map +1 -1
  445. package/dist/tray/standalone/standalone-tray.js +34 -2
  446. package/dist/tray/standalone/standalone-tray.js.map +1 -1
  447. package/dist/tray/themed-icon.d.ts.map +1 -1
  448. package/dist/tray/themed-icon.js +4 -28
  449. package/dist/tray/themed-icon.js.map +1 -1
  450. package/dist/tray/tray-core.d.ts.map +1 -1
  451. package/dist/tray/tray-core.js +6 -1
  452. package/dist/tray/tray-core.js.map +1 -1
  453. package/dist/tray/tray-extras.d.ts +26 -2
  454. package/dist/tray/tray-extras.d.ts.map +1 -1
  455. package/dist/tray/tray-manifest.d.ts +44 -4
  456. package/dist/tray/tray-manifest.d.ts.map +1 -1
  457. package/dist/tray/tray-manifest.js +48 -4
  458. package/dist/tray/tray-manifest.js.map +1 -1
  459. package/dist/vite/entrypoints/build-tray.d.ts +3 -1
  460. package/dist/vite/entrypoints/build-tray.d.ts.map +1 -1
  461. package/dist/vite/entrypoints/build-tray.js +22 -16
  462. package/dist/vite/entrypoints/build-tray.js.map +1 -1
  463. package/dist/vite/entrypoints/extract-tray.d.ts +7 -6
  464. package/dist/vite/entrypoints/extract-tray.d.ts.map +1 -1
  465. package/dist/vite/entrypoints/extract-tray.js +35 -15
  466. package/dist/vite/entrypoints/extract-tray.js.map +1 -1
  467. package/dist/vite/entrypoints/tray-module.d.ts +2 -1
  468. package/dist/vite/entrypoints/tray-module.d.ts.map +1 -1
  469. package/dist/vite/entrypoints/tray-module.js +8 -4
  470. package/dist/vite/entrypoints/tray-module.js.map +1 -1
  471. package/dist/web-apis/eye-dropper.d.ts.map +1 -1
  472. package/dist/web-apis/eye-dropper.js +8 -5
  473. package/dist/web-apis/eye-dropper.js.map +1 -1
  474. package/dist/web-apis/file-read.d.ts +14 -0
  475. package/dist/web-apis/file-read.d.ts.map +1 -0
  476. package/dist/web-apis/file-read.js +37 -0
  477. package/dist/web-apis/file-read.js.map +1 -0
  478. package/dist/web-apis/file-system.d.ts +9 -0
  479. package/dist/web-apis/file-system.d.ts.map +1 -1
  480. package/dist/web-apis/file-system.js +24 -0
  481. package/dist/web-apis/file-system.js.map +1 -1
  482. package/dist/web-apis/media-devices-source.d.ts +1 -1
  483. package/dist/web-apis/native.d.ts +0 -7
  484. package/dist/web-apis/native.d.ts.map +1 -1
  485. package/dist/web-apis/native.js +0 -19
  486. package/dist/web-apis/native.js.map +1 -1
  487. package/dist/win2d/activation-failure.d.ts +10 -0
  488. package/dist/win2d/activation-failure.d.ts.map +1 -0
  489. package/dist/win2d/activation-failure.js +30 -0
  490. package/dist/win2d/activation-failure.js.map +1 -0
  491. package/dist/win2d/element-lifecycle.d.ts.map +1 -1
  492. package/dist/win2d/element-lifecycle.js +6 -1
  493. package/dist/win2d/element-lifecycle.js.map +1 -1
  494. package/dist/win2d/manifest.d.ts +29 -0
  495. package/dist/win2d/manifest.d.ts.map +1 -0
  496. package/dist/win2d/manifest.js +67 -0
  497. package/dist/win2d/manifest.js.map +1 -0
  498. package/dist/win32/index.d.ts +3 -0
  499. package/dist/win32/index.d.ts.map +1 -0
  500. package/dist/win32/index.js +11 -0
  501. package/dist/win32/index.js.map +1 -0
  502. package/dist/win32-calls.d.ts +6 -0
  503. package/dist/win32-calls.d.ts.map +1 -1
  504. package/dist/win32-calls.js +6 -1
  505. package/dist/win32-calls.js.map +1 -1
  506. package/dist/win32-foreground.d.ts +34 -0
  507. package/dist/win32-foreground.d.ts.map +1 -0
  508. package/dist/win32-foreground.js +91 -0
  509. package/dist/win32-foreground.js.map +1 -0
  510. package/dist/win32-icons.d.ts.map +1 -1
  511. package/dist/win32-icons.js +1 -2
  512. package/dist/win32-icons.js.map +1 -1
  513. package/dist/win32-key-state.d.ts +31 -0
  514. package/dist/win32-key-state.d.ts.map +1 -0
  515. package/dist/win32-key-state.js +41 -0
  516. package/dist/win32-key-state.js.map +1 -0
  517. package/dist/window/anchor.d.ts +15 -0
  518. package/dist/window/anchor.d.ts.map +1 -1
  519. package/dist/window/anchor.js +23 -0
  520. package/dist/window/anchor.js.map +1 -1
  521. package/dist/window/apply-frame.d.ts +4 -2
  522. package/dist/window/apply-frame.d.ts.map +1 -1
  523. package/dist/window/apply-frame.js +2 -3
  524. package/dist/window/apply-frame.js.map +1 -1
  525. package/dist/window/bootstrap-core.d.ts +69 -0
  526. package/dist/window/bootstrap-core.d.ts.map +1 -0
  527. package/dist/window/bootstrap-core.js +93 -0
  528. package/dist/window/bootstrap-core.js.map +1 -0
  529. package/dist/window/bootstrap-mode.d.ts +21 -0
  530. package/dist/window/bootstrap-mode.d.ts.map +1 -0
  531. package/dist/window/bootstrap-mode.js +17 -0
  532. package/dist/window/bootstrap-mode.js.map +1 -0
  533. package/dist/window/bootstrap.d.ts +12 -28
  534. package/dist/window/bootstrap.d.ts.map +1 -1
  535. package/dist/window/bootstrap.js +18 -66
  536. package/dist/window/bootstrap.js.map +1 -1
  537. package/dist/window/cover.d.ts +43 -0
  538. package/dist/window/cover.d.ts.map +1 -0
  539. package/dist/window/cover.js +64 -0
  540. package/dist/window/cover.js.map +1 -0
  541. package/dist/window/create-window.d.ts +1 -1
  542. package/dist/window/create-window.d.ts.map +1 -1
  543. package/dist/window/create-window.js +2 -0
  544. package/dist/window/create-window.js.map +1 -1
  545. package/dist/window/dpi-awareness.d.ts +71 -0
  546. package/dist/window/dpi-awareness.d.ts.map +1 -0
  547. package/dist/window/dpi-awareness.js +127 -0
  548. package/dist/window/dpi-awareness.js.map +1 -0
  549. package/dist/window/foreground-filter.d.ts +71 -0
  550. package/dist/window/foreground-filter.d.ts.map +1 -0
  551. package/dist/window/foreground-filter.js +108 -0
  552. package/dist/window/foreground-filter.js.map +1 -0
  553. package/dist/window/foreground-native.d.ts +25 -0
  554. package/dist/window/foreground-native.d.ts.map +1 -0
  555. package/dist/window/foreground-native.js +86 -0
  556. package/dist/window/foreground-native.js.map +1 -0
  557. package/dist/window/foreground.d.ts +49 -0
  558. package/dist/window/foreground.d.ts.map +1 -0
  559. package/dist/window/foreground.js +78 -0
  560. package/dist/window/foreground.js.map +1 -0
  561. package/dist/window/index.d.ts +2 -0
  562. package/dist/window/index.d.ts.map +1 -1
  563. package/dist/window/index.js +1 -0
  564. package/dist/window/index.js.map +1 -1
  565. package/dist/window/native.d.ts.map +1 -1
  566. package/dist/window/native.js +1 -2
  567. package/dist/window/native.js.map +1 -1
  568. package/dist/window/package-identity.d.ts +17 -0
  569. package/dist/window/package-identity.d.ts.map +1 -0
  570. package/dist/window/package-identity.js +97 -0
  571. package/dist/window/package-identity.js.map +1 -0
  572. package/dist/window/system-dispatcher-queue.d.ts.map +1 -1
  573. package/dist/window/system-dispatcher-queue.js +1 -2
  574. package/dist/window/system-dispatcher-queue.js.map +1 -1
  575. package/dist/window/taskbar-calls.d.ts +1 -1
  576. package/dist/window/taskbar-native.d.ts.map +1 -1
  577. package/dist/window/taskbar-native.js +1 -2
  578. package/dist/window/taskbar-native.js.map +1 -1
  579. package/dist/window/window-handle.d.ts +25 -1
  580. package/dist/window/window-handle.d.ts.map +1 -1
  581. package/dist/window/window-handle.js +27 -1
  582. package/dist/window/window-handle.js.map +1 -1
  583. package/dist/window/window-host.svelte.d.ts +11 -2
  584. package/dist/window/window-host.svelte.d.ts.map +1 -1
  585. package/dist/window/window-host.svelte.js +38 -4
  586. package/dist/window/window-host.svelte.js.map +1 -1
  587. package/package.json +43 -4
  588. package/src/app/activate.ts +3 -0
  589. package/src/app/activation/index.ts +3 -0
  590. package/src/app/activation/login.ts +2 -1
  591. package/src/app/activation/native.ts +1 -1
  592. package/src/app/activation/packaged.ts +118 -0
  593. package/src/app/activation/receive.ts +24 -4
  594. package/src/app/activation/registration.ts +7 -7
  595. package/src/app/activation/scheme.ts +19 -0
  596. package/src/app/index.ts +4 -2
  597. package/src/app/instance-running.ts +22 -0
  598. package/src/app/jump-list/native.ts +1 -2
  599. package/src/app/launch-command.ts +19 -5
  600. package/src/app/native-messaging/browsers.ts +21 -0
  601. package/src/app/native-messaging/index.ts +124 -0
  602. package/src/app/native.ts +1 -32
  603. package/src/app/notification-source.ts +1 -3
  604. package/src/app/shell/native.ts +1 -1
  605. package/src/app/single-instance.ts +34 -10
  606. package/src/app/tray-instance.ts +7 -5
  607. package/src/automation/backend.ts +56 -0
  608. package/src/automation/client.ts +327 -0
  609. package/src/automation/ids.ts +97 -0
  610. package/src/automation/index.ts +23 -0
  611. package/src/automation/native.ts +688 -0
  612. package/src/automation/text.ts +174 -0
  613. package/src/automation/with-client.ts +20 -0
  614. package/src/automation/worker-job.ts +97 -0
  615. package/src/automation/worker.ts +116 -0
  616. package/src/chrome/context-menus/context-menu-schema.ts +1 -12
  617. package/src/chrome/parse-or-throw.ts +14 -0
  618. package/src/chrome/permissions/permission-schema.ts +1 -12
  619. package/src/chrome/windows/chrome-windows.ts +1 -13
  620. package/src/components/hand-written/items/keyed-rows.svelte.ts +6 -0
  621. package/src/components/index.ts +1 -0
  622. package/src/components/runtime.svelte.ts +8 -0
  623. package/src/components/window-context.ts +23 -0
  624. package/src/css/runtime/containers.ts +1 -20
  625. package/src/css/runtime/native.ts +46 -21
  626. package/src/css/translate/property-kit.ts +9 -0
  627. package/src/css/translate/transition-properties.ts +44 -10
  628. package/src/data-transfer/data-transfer.ts +3 -3
  629. package/src/data-transfer/drag-effects.ts +48 -4
  630. package/src/data-transfer/drag-helper.ts +216 -0
  631. package/src/data-transfer/drop-target.ts +90 -26
  632. package/src/data-transfer/index.ts +1 -0
  633. package/src/data-transfer/launcher.ts +65 -9
  634. package/src/data-transfer/native.ts +184 -0
  635. package/src/data-transfer/ole-data-object.ts +200 -0
  636. package/src/data-transfer/ole-drop-target.ts +263 -0
  637. package/src/data-transfer/share-interop.ts +1 -1
  638. package/src/data-transfer/shell-items.ts +81 -0
  639. package/src/data-transfer/window-drop.ts +411 -0
  640. package/src/devices/native.ts +1 -1
  641. package/src/downloads/chrome-downloads.ts +46 -6
  642. package/src/downloads/download-record.ts +3 -2
  643. package/src/downloads/download-transfer.ts +3 -3
  644. package/src/downloads/download-types.ts +3 -0
  645. package/src/downloads/fetch-to-file.ts +47 -17
  646. package/src/downloads/taskbar-progress.ts +3 -49
  647. package/src/enums.ts +4 -0
  648. package/src/input/index.ts +2 -0
  649. package/src/input/modifier-keys.ts +30 -0
  650. package/src/media/pixel-buffer.ts +1 -1
  651. package/src/messaging/web-view2/core.ts +64 -0
  652. package/src/messaging/web-view2/environment.ts +131 -0
  653. package/src/messaging/web-view2/index.ts +11 -0
  654. package/src/messaging/web-view2/input.ts +154 -0
  655. package/src/messaging/web-view2/protocol.ts +41 -0
  656. package/src/messaging/web-view2/recovery.ts +177 -0
  657. package/src/messaging/web-view2/requests.ts +238 -0
  658. package/src/messaging/web-view2/transport.ts +1 -5
  659. package/src/native-identity.ts +22 -0
  660. package/src/progress/TaskbarProgress.d.svelte.ts +6 -0
  661. package/src/progress/aggregate.ts +68 -0
  662. package/src/progress/core.ts +13 -0
  663. package/src/progress/index.ts +4 -0
  664. package/src/progress/progress-event.ts +25 -0
  665. package/src/progress/progress-operation.ts +469 -0
  666. package/src/progress/progress-registry.ts +224 -0
  667. package/src/progress/progress-source.ts +66 -0
  668. package/src/progress/progress-state.ts +72 -0
  669. package/src/progress/progress-text.ts +27 -0
  670. package/src/progress/scoped-source.ts +56 -0
  671. package/src/progress/taskbar-progress-props.ts +18 -0
  672. package/src/progress/taskbar-progress.ts +80 -0
  673. package/src/progress/track-operation.ts +81 -0
  674. package/src/renderer/host/host.ts +39 -17
  675. package/src/renderer/host/structure-sync.ts +25 -0
  676. package/src/security/data-protection-error.ts +18 -0
  677. package/src/security/index.ts +57 -0
  678. package/src/security/native.ts +234 -0
  679. package/src/security/protection-scope.ts +13 -0
  680. package/src/store/windows-identity.ts +3 -35
  681. package/src/tray/click-detector.ts +6 -7
  682. package/src/tray/flyout-model.ts +14 -3
  683. package/src/tray/menu/icon.ts +40 -0
  684. package/src/tray/menu/index.ts +3 -0
  685. package/src/tray/menu/types.ts +27 -6
  686. package/src/tray/menu-svelte/TrayMenuOperations.d.svelte.ts +6 -0
  687. package/src/tray/menu-svelte/TrayMenuProgress.d.svelte.ts +6 -0
  688. package/src/tray/menu-svelte/index.ts +4 -0
  689. package/src/tray/menu-svelte/menu-props.ts +20 -0
  690. package/src/tray/menu-svelte/operation-ids.ts +21 -0
  691. package/src/tray/native.ts +44 -49
  692. package/src/tray/personalize.ts +57 -0
  693. package/src/tray/pointer-share.ts +71 -0
  694. package/src/tray/standalone/icon-raster.ts +208 -0
  695. package/src/tray/standalone/index.ts +5 -1
  696. package/src/tray/standalone/menu-icons.ts +317 -0
  697. package/src/tray/standalone/menu-theme.ts +90 -0
  698. package/src/tray/standalone/native.ts +83 -16
  699. package/src/tray/standalone/standalone-tray.ts +68 -5
  700. package/src/tray/themed-icon.ts +4 -36
  701. package/src/tray/tray-core.ts +7 -1
  702. package/src/tray/tray-extras.ts +31 -2
  703. package/src/tray/tray-manifest.ts +53 -4
  704. package/src/vite/entrypoints/build-tray.ts +23 -16
  705. package/src/vite/entrypoints/extract-tray.ts +41 -15
  706. package/src/vite/entrypoints/tray-module.ts +8 -4
  707. package/src/web-apis/eye-dropper.ts +9 -5
  708. package/src/web-apis/file-read.ts +43 -0
  709. package/src/web-apis/file-system.ts +33 -0
  710. package/src/web-apis/native.ts +0 -20
  711. package/src/win2d/activation-failure.ts +35 -0
  712. package/src/win2d/element-lifecycle.ts +6 -1
  713. package/src/win2d/manifest.ts +78 -0
  714. package/src/win32/index.ts +19 -0
  715. package/src/win32-calls.ts +8 -1
  716. package/src/win32-foreground.ts +100 -0
  717. package/src/win32-icons.ts +7 -2
  718. package/src/win32-key-state.ts +48 -0
  719. package/src/window/anchor.ts +28 -0
  720. package/src/window/apply-frame.ts +6 -4
  721. package/src/window/bootstrap-core.ts +165 -0
  722. package/src/window/bootstrap-mode.ts +23 -0
  723. package/src/window/bootstrap.ts +20 -103
  724. package/src/window/cover.ts +100 -0
  725. package/src/window/create-window.ts +4 -0
  726. package/src/window/dpi-awareness.ts +162 -0
  727. package/src/window/foreground-filter.ts +167 -0
  728. package/src/window/foreground-native.ts +91 -0
  729. package/src/window/foreground.ts +106 -0
  730. package/src/window/index.ts +2 -0
  731. package/src/window/native.ts +1 -1
  732. package/src/window/package-identity.ts +112 -0
  733. package/src/window/system-dispatcher-queue.ts +7 -2
  734. package/src/window/taskbar-native.ts +1 -2
  735. package/src/window/window-handle.ts +29 -1
  736. package/src/window/window-host.svelte.ts +59 -6
  737. package/web-types.json +11 -3
@@ -69,6 +69,7 @@ export interface CssWinui {
69
69
  // the runtime targets the element's own brush by its Color, whatever the element's type.
70
70
  const BRUSH_COLOR_PATH = /^(\w)(\w*)\.\(SolidColorBrush\.Color\)$/u;
71
71
  const BRUSH_COLOR = "Color";
72
+ const XAML_ELEMENT_NAME = /^<\w+/u;
72
73
 
73
74
  function subscribeToEvent({ control, event, handler }: {
74
75
  control: object;
@@ -87,6 +88,33 @@ function subscribeToEvent({ control, event, handler }: {
87
88
  return typeof unsubscribe === "function" ? () => unsubscribe() : null;
88
89
  }
89
90
 
91
+ // Runs `run` now on a loaded control, else when it loads; returns what stops waiting.
92
+ function whenLoaded({ control, run }: {
93
+ control: object;
94
+ run: () => void;
95
+ }) {
96
+ const isLoaded = readMember({
97
+ target: control,
98
+ key: "isLoaded"
99
+ }) === true;
100
+ if (isLoaded) {
101
+ run();
102
+ return () => undefined;
103
+ }
104
+
105
+ const unsubscribe = subscribeToEvent({
106
+ control,
107
+ event: "Loaded",
108
+ handler: run
109
+ });
110
+ return () => unsubscribe?.();
111
+ }
112
+
113
+ // A WinUI property's name as its projected member (`OpacityTransition` is `opacityTransition`).
114
+ function memberOf(property: string) {
115
+ return `${property.charAt(0).toLowerCase()}${property.slice(1)}`;
116
+ }
117
+
90
118
  function isRecord(value: NativeValue): value is Record<string, NativeValue> {
91
119
  return (typeof value === "object" || typeof value === "function") && value !== null;
92
120
  }
@@ -267,8 +295,20 @@ export function createCssNative(winui: CssWinui) {
267
295
  definitions.append(definition);
268
296
  }
269
297
  },
298
+ setTransition({ control, property, xaml }) {
299
+ const key = memberOf(property);
300
+ const transition = winui.XamlReader.load(xaml.replace(XAML_ELEMENT_NAME, `$& ${XAML_NAMESPACES}`));
301
+ const unsubscribe = whenLoaded({
302
+ control,
303
+ run: () => Object.assign(control, { [key]: transition })
304
+ });
305
+ return () => {
306
+ unsubscribe();
307
+ Object.assign(control, { [key]: null });
308
+ };
309
+ },
270
310
  setComposition({ control, property, value }) {
271
- const key = `${property.charAt(0).toLowerCase()}${property.slice(1)}`;
311
+ const key = memberOf(property);
272
312
  const [horizontal = 0, vertical = 0, depth = 0] = value.split(",").map(Number);
273
313
  const isRotation = property === "Rotation";
274
314
  const resting = property === "Scale" ? 1 : 0;
@@ -282,31 +322,16 @@ export function createCssNative(winui: CssWinui) {
282
322
  isPlaced = true;
283
323
  }
284
324
 
285
- const isLoaded = readMember({
286
- target: control,
287
- key: "isLoaded"
288
- }) === true;
289
- if (isLoaded) {
290
- place({
325
+ const unsubscribe = whenLoaded({
326
+ control,
327
+ run: () => place({
291
328
  x: horizontal,
292
329
  y: vertical,
293
330
  z: depth
294
- });
295
- }
296
-
297
- const unsubscribe = isLoaded ? null : subscribeToEvent({
298
- control,
299
- event: "Loaded",
300
- handler() {
301
- place({
302
- x: horizontal,
303
- y: vertical,
304
- z: depth
305
- });
306
- }
331
+ })
307
332
  });
308
333
  return () => {
309
- unsubscribe?.();
334
+ unsubscribe();
310
335
 
311
336
  if (isPlaced) {
312
337
  place({
@@ -61,6 +61,15 @@ export interface WriteSeam {
61
61
  property: string;
62
62
  value: string;
63
63
  }): () => void;
64
+ /**
65
+ * Gives the control an implicit transition of its own (`OpacityTransition`),
66
+ * made from its XAML, once the control has loaded; returns what takes it off.
67
+ */
68
+ setTransition(input: {
69
+ control: object;
70
+ property: string;
71
+ xaml: string;
72
+ }): () => void;
64
73
  /** Assigns properties of the control (`{ centerPoint: ... }`). */
65
74
  assign(control: object, values: Readonly<Record<string, unknown>>): void;
66
75
  /** Calls `handler` on a WinUI event (PointerEntered...); null if the control has no such event. */
@@ -511,25 +511,58 @@ function entryOutputs({ input, reader, entry }: {
511
511
 
512
512
  for (const [target, type] of targets) {
513
513
  outputs.push({
514
- kind: "content",
515
- property: target,
516
- xaml: `<${type} Duration="${duration(milliseconds)}"/>`
514
+ kind: "write",
515
+ target,
516
+ value: `<${type} Duration="${duration(milliseconds)}"/>`
517
517
  });
518
518
  }
519
519
 
520
520
  return outputs;
521
521
  }
522
522
 
523
+ // One transition per WinUI property: a later entry (`all, opacity 1s`) wins.
524
+ function lastPerTarget(outputs: Output[]) {
525
+ return outputs.filter((output, iOutput) => {
526
+ const isOverridden = output.kind === "write" && outputs
527
+ .slice(iOutput + 1)
528
+ .some(later => later.kind === "write" && later.target === output.target);
529
+ return !isOverridden;
530
+ });
531
+ }
532
+
533
+ /**
534
+ * An implicit transition is written to each element, not set by its Style: a
535
+ * Setter's value is one object that every element of the Style shares, and
536
+ * WinUI crashes when that shared transition animates (a ListView row restyled
537
+ * before it loads).
538
+ */
539
+ function setImplicitTransition(property: string) {
540
+ return (context: WriteContext) => context.native.setTransition({
541
+ control: context.control,
542
+ property,
543
+ xaml: context.value
544
+ });
545
+ }
546
+
547
+ const implicitHandlers = Object.fromEntries(
548
+ [...new Set([...TRANSITION_TARGETS.values()].flat().map(([target]) => target))].map(target => [
549
+ target,
550
+ setImplicitTransition(target)
551
+ ])
552
+ );
553
+
523
554
  /** `transition`: WinUI's implicit transition for each animatable property named, and a border color's Storyboard. */
524
555
  function transition(input: GroupInput) {
525
556
  const reader = input.reading("transition");
526
- return splitCommas(reader.declaration.value)
527
- .filter(entry => (splitWords(entry)[0] ?? "").toLowerCase() !== "none")
528
- .flatMap(entry => entryOutputs({
529
- input,
530
- reader,
531
- entry
532
- }));
557
+ return lastPerTarget(
558
+ splitCommas(reader.declaration.value)
559
+ .filter(entry => (splitWords(entry)[0] ?? "").toLowerCase() !== "none")
560
+ .flatMap(entry => entryOutputs({
561
+ input,
562
+ reader,
563
+ entry
564
+ }))
565
+ );
533
566
  }
534
567
 
535
568
  const storyboardHandlers = Object.fromEntries(
@@ -558,6 +591,7 @@ export function transitionProperty() {
558
591
  members: ["transition"],
559
592
  lower: transition,
560
593
  writes: {
594
+ ...implicitHandlers,
561
595
  ...storyboardHandlers,
562
596
  ...discreteHandlers
563
597
  }
@@ -1,4 +1,4 @@
1
- import type { DropEffect, EffectAllowed } from "./drag-effects.ts";
1
+ import type { DropEffectName, EffectAllowedName } from "./drag-effects.ts";
2
2
  import { EffectAllowed as Allowed, DropEffect as Effects } from "./drag-effects.ts";
3
3
  import type { NativeFile } from "./native-file.ts";
4
4
 
@@ -114,9 +114,9 @@ export class DataTransferItemList {
114
114
  */
115
115
  export class DataTransfer {
116
116
  /** What the source lets a target do; a source sets it in `ondragstart`. */
117
- effectAllowed: EffectAllowed = Allowed.uninitialized;
117
+ effectAllowed: EffectAllowedName = Allowed.uninitialized;
118
118
  /** What the target will do; a target sets it in `ondragenter` or `ondragover`. */
119
- dropEffect: DropEffect = Effects.none;
119
+ dropEffect: DropEffectName = Effects.none;
120
120
  /** A picture to drag (a path or an in-memory file): WinUI shows its own preview of the data. */
121
121
  bitmap: NativeFile | undefined;
122
122
  private readonly strings = new Map<string, string>();
@@ -27,6 +27,18 @@ export const EffectAllowed = {
27
27
  /** One of `EffectAllowed`'s values. */
28
28
  export type EffectAllowed = (typeof EffectAllowed)[keyof typeof EffectAllowed];
29
29
 
30
+ /**
31
+ * A drop effect as a property takes it: one of `DropEffect`'s values, which an
32
+ * editor suggests, or any other string, which counts as `none`.
33
+ */
34
+ export type DropEffectName = DropEffect | (string & Record<never, never>);
35
+
36
+ /**
37
+ * An `effectAllowed` as a property takes it: one of `EffectAllowed`'s values,
38
+ * which an editor suggests, or any other string, which counts as `uninitialized`.
39
+ */
40
+ export type EffectAllowedName = EffectAllowed | (string & Record<never, never>);
41
+
30
42
  const OPERATIONS = {
31
43
  [DropEffect.none]: DataPackageOperation.None,
32
44
  [DropEffect.copy]: DataPackageOperation.Copy,
@@ -57,8 +69,16 @@ const PREFERENCE = [DropEffect.copy, DropEffect.move, DropEffect.link] as const;
57
69
  * @param effect - The drop effect.
58
70
  * @returns The `DataPackageOperation` value.
59
71
  */
60
- export function operationOf(effect: DropEffect) {
61
- return OPERATIONS[effect];
72
+ export function operationOf(effect: DropEffectName) {
73
+ return isDropEffect(effect) ? OPERATIONS[effect] : DataPackageOperation.None;
74
+ }
75
+
76
+ function isDropEffect(value: string): value is DropEffect {
77
+ return Object.values<string>(DropEffect).includes(value);
78
+ }
79
+
80
+ function isEffectAllowed(value: string): value is EffectAllowed {
81
+ return Object.values<string>(EffectAllowed).includes(value);
62
82
  }
63
83
 
64
84
  /**
@@ -67,8 +87,8 @@ export function operationOf(effect: DropEffect) {
67
87
  * @param effectAllowed - What the source allows.
68
88
  * @returns The `DataPackageOperation` flags.
69
89
  */
70
- export function allowedOperationsOf(effectAllowed: EffectAllowed) {
71
- return ALLOWED[effectAllowed];
90
+ export function allowedOperationsOf(effectAllowed: EffectAllowedName) {
91
+ return isEffectAllowed(effectAllowed) ? ALLOWED[effectAllowed] : ALL_OPERATIONS;
72
92
  }
73
93
 
74
94
  /**
@@ -81,6 +101,30 @@ export function effectOf(operation: number) {
81
101
  return PREFERENCE.find(effect => (operation & OPERATIONS[effect]) !== 0) ?? DropEffect.none;
82
102
  }
83
103
 
104
+ /**
105
+ * The operation a drop gets: the effect the target chose, or, when the source
106
+ * does not allow it (a folder from Explorer's address bar allows fewer than a
107
+ * file does), the preferred one the source does allow. A target that chose
108
+ * `none` refuses the drag whatever the source allows.
109
+ *
110
+ * @param options - The effect the target chose and the `DataPackageOperation` flags the source allows.
111
+ * @returns The `DataPackageOperation` flags to answer with.
112
+ */
113
+ export function grantedOperationOf({ effect, allowed }: {
114
+ effect: DropEffectName;
115
+ allowed: number;
116
+ }) {
117
+ const requested = operationOf(effect);
118
+ const isRefusing = requested === DataPackageOperation.None;
119
+ const isAllowed = (requested & allowed) !== 0;
120
+ const isGranted = isRefusing || isAllowed;
121
+ if (isGranted) {
122
+ return requested;
123
+ }
124
+
125
+ return operationOf(effectOf(allowed));
126
+ }
127
+
84
128
  /**
85
129
  * The `effectAllowed` a set of WinUI operation flags is.
86
130
  *
@@ -0,0 +1,216 @@
1
+ import { createInstanceOf, DATA_OBJECT_IID } from "./native.ts";
2
+ import {
3
+ DynCom,
4
+ DynComMethodSig,
5
+ DynComUnsafe,
6
+ DynWinRtValue,
7
+ WinGuid
8
+ } from "@microsoft/dynwinrt/com/unsafe";
9
+ import type { DynWinRTValue } from "@microsoft/dynwinrt/com/unsafe";
10
+ import type { DynComRawMemory } from "@microsoft/dynwinrt/com/unsafe/raw";
11
+ import { DWORD_BYTES, NO_ADDRESS, withMemory } from "#src/win32-calls.js";
12
+
13
+ // The shell draws the picture a drag carries (the folder's thumbnail, the
14
+ // "Copy" or "Link" label) only over a window whose drop target tells the
15
+ // shell's drag helper about the drag; Explorer and every classic app do. This
16
+ // is that call, one helper per window.
17
+
18
+ const DRAG_DROP_HELPER_CLASS = "4657278a-411b-11d2-839a-00c04fd918d0";
19
+ const DROP_TARGET_HELPER_IID = "4657278b-411b-11d2-839a-00c04fd918d0";
20
+ const DRAG_ENTER_SLOT = 3;
21
+ const DRAG_LEAVE_SLOT = 4;
22
+ const DRAG_OVER_SLOT = 5;
23
+ const DROP_SLOT = 6;
24
+ const POINT_BYTES = 8;
25
+
26
+ let cachedInterface: ReturnType<typeof makeInterface> | undefined;
27
+
28
+ function makeInterface() {
29
+ const u32 = DynCom.u32Type();
30
+ const u64 = DynCom.u64Type();
31
+ const data = DynCom.interfaceType(WinGuid.parse(DATA_OBJECT_IID));
32
+ return DynCom.registerIUnknownInterface("IDropTargetHelper", WinGuid.parse(DROP_TARGET_HELPER_IID))
33
+ .addMethod("DragEnter", new DynComMethodSig().addIn(u64).addNullableIn(data).addIn(u64).addIn(u32))
34
+ .addMethod("DragLeave", new DynComMethodSig())
35
+ .addMethod("DragOver", new DynComMethodSig().addIn(u64).addIn(u32))
36
+ .addMethod("Drop", new DynComMethodSig().addNullableIn(data).addIn(u64).addIn(u32));
37
+ }
38
+
39
+ function interfaceOf() {
40
+ cachedInterface ??= makeInterface();
41
+ return cachedInterface;
42
+ }
43
+
44
+ interface Point {
45
+ readonly x: number;
46
+ readonly y: number;
47
+ }
48
+
49
+ // The helper reads the point while the call runs, so the memory only lives that long.
50
+ function withPoint({ point, use }: {
51
+ point: Point;
52
+ use: (address: bigint) => boolean;
53
+ }) {
54
+ return withMemory({
55
+ size: POINT_BYTES,
56
+ alignment: DWORD_BYTES,
57
+ use(memory: DynComRawMemory) {
58
+ memory.writeI32(0, point.x);
59
+ memory.writeI32(DWORD_BYTES, point.y);
60
+ return use(memory.pointer().address);
61
+ }
62
+ });
63
+ }
64
+
65
+ /** What tells the shell about a drag over a window, so that it draws the drag's picture there. */
66
+ export interface DragHelper {
67
+ enter(call: {
68
+ readonly data: DynWinRTValue;
69
+ readonly point: Point;
70
+ readonly effect: number;
71
+ }): void;
72
+ over(call: {
73
+ readonly point: Point;
74
+ readonly effect: number;
75
+ }): void;
76
+ leave(): void;
77
+ drop(call: {
78
+ readonly data: DynWinRTValue;
79
+ readonly point: Point;
80
+ readonly effect: number;
81
+ }): void;
82
+ release(): void;
83
+ }
84
+
85
+ /**
86
+ * Makes the shell's drag helper for a window.
87
+ *
88
+ * @param hwnd - The window the drop target is registered on.
89
+ * @returns The helper; null when the shell could not make it (the drag then works without a picture).
90
+ */
91
+ export function createDragHelper(hwnd: bigint) {
92
+ const address = createInstanceOf({
93
+ classId: DRAG_DROP_HELPER_CLASS,
94
+ interfaceId: DROP_TARGET_HELPER_IID
95
+ });
96
+ const isMissing = address === NO_ADDRESS;
97
+ if (isMissing) {
98
+ return null;
99
+ }
100
+
101
+ const helper = DynComUnsafe.adoptOwnedComPointer(address, WinGuid.parse(DROP_TARGET_HELPER_IID));
102
+ const calls = interfaceOf();
103
+
104
+ // A drag whose source gave no picture makes the helper answer with an error (DV_E_FORMATETC):
105
+ // the picture is only decoration, so the drag goes on without it.
106
+ function call({ slot, values }: {
107
+ slot: number;
108
+ values: DynWinRTValue[];
109
+ }) {
110
+ try {
111
+ calls.method(slot).invokeAll(helper, values);
112
+ return true;
113
+ } catch {
114
+ return false;
115
+ }
116
+ }
117
+
118
+ // The helper hears of a drag only after it accepted the entry: told of a drag it refused, it
119
+ // keeps the window from receiving the next one when the cursor moves on to another window.
120
+ // A drag that enters where nothing takes it (the window's border) is not told either, and is
121
+ // told once the cursor moves over something that does.
122
+ let isAccepted = false;
123
+ let waiting: DynWinRTValue | null = null;
124
+
125
+ function begin({ data, point, effect }: {
126
+ data: DynWinRTValue;
127
+ point: Point;
128
+ effect: number;
129
+ }) {
130
+ isAccepted = withPoint({
131
+ point,
132
+ use: pointAddress => call({
133
+ slot: DRAG_ENTER_SLOT,
134
+ values: [
135
+ DynWinRtValue.u64(hwnd),
136
+ data,
137
+ DynWinRtValue.u64(pointAddress),
138
+ DynWinRtValue.u32(effect)
139
+ ]
140
+ })
141
+ });
142
+ }
143
+
144
+ return {
145
+ enter({ data, point, effect }) {
146
+ waiting = data;
147
+ const isRefused = effect === 0;
148
+ if (isRefused) {
149
+ isAccepted = false;
150
+ return;
151
+ }
152
+
153
+ begin({
154
+ data,
155
+ point,
156
+ effect
157
+ });
158
+ },
159
+ over({ point, effect }) {
160
+ const pending = waiting;
161
+ const canBegin = !isAccepted && pending !== null && effect !== 0;
162
+ if (canBegin) {
163
+ begin({
164
+ data: pending,
165
+ point,
166
+ effect
167
+ });
168
+ return;
169
+ }
170
+
171
+ if (!isAccepted) {
172
+ return;
173
+ }
174
+
175
+ withPoint({
176
+ point,
177
+ use: pointAddress => call({
178
+ slot: DRAG_OVER_SLOT,
179
+ values: [DynWinRtValue.u64(pointAddress), DynWinRtValue.u32(effect)]
180
+ })
181
+ });
182
+ },
183
+ leave() {
184
+ waiting = null;
185
+
186
+ if (!isAccepted) {
187
+ return;
188
+ }
189
+
190
+ isAccepted = false;
191
+ call({
192
+ slot: DRAG_LEAVE_SLOT,
193
+ values: []
194
+ });
195
+ },
196
+ drop({ data, point, effect }) {
197
+ waiting = null;
198
+
199
+ if (!isAccepted) {
200
+ return;
201
+ }
202
+
203
+ isAccepted = false;
204
+ withPoint({
205
+ point,
206
+ use: pointAddress => call({
207
+ slot: DROP_SLOT,
208
+ values: [data, DynWinRtValue.u64(pointAddress), DynWinRtValue.u32(effect)]
209
+ })
210
+ });
211
+ },
212
+ release() {
213
+ helper.release();
214
+ }
215
+ } satisfies DragHelper;
216
+ }