zcw-shared 2.25.0 → 2.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (227) hide show
  1. package/README.md +73 -13
  2. package/dist/functions/ai/buildResolvedLlmToolsList.d.ts +0 -1
  3. package/dist/functions/ai/buildResolvedLlmToolsList.js +0 -1
  4. package/dist/functions/ai/buildResolvedLlmToolsList.js.map +1 -1
  5. package/dist/functions/array/filterListExcludingIds.d.ts +0 -1
  6. package/dist/functions/array/filterListExcludingIds.js +0 -1
  7. package/dist/functions/array/filterListExcludingIds.js.map +1 -1
  8. package/dist/functions/browser/readBrowserAppendToBodyDeps.d.ts +3 -0
  9. package/dist/functions/browser/readBrowserAppendToBodyDeps.js +8 -0
  10. package/dist/functions/browser/readBrowserAppendToBodyDeps.js.map +1 -0
  11. package/dist/functions/browser/readBrowserDetectDeps.d.ts +2 -0
  12. package/dist/functions/browser/readBrowserDetectDeps.js +8 -5
  13. package/dist/functions/browser/readBrowserDetectDeps.js.map +1 -1
  14. package/dist/functions/browser/readBrowserHost.d.ts +57 -0
  15. package/dist/functions/browser/readBrowserHost.js +61 -0
  16. package/dist/functions/browser/readBrowserHost.js.map +1 -0
  17. package/dist/functions/browser/readBrowserImageCompressDeps.d.ts +2 -0
  18. package/dist/functions/browser/readBrowserImageCompressDeps.js +13 -10
  19. package/dist/functions/browser/readBrowserImageCompressDeps.js.map +1 -1
  20. package/dist/functions/browser/readBrowserLassoSelectionEnvironment.d.ts +4 -0
  21. package/dist/functions/browser/readBrowserLassoSelectionEnvironment.js +23 -0
  22. package/dist/functions/browser/readBrowserLassoSelectionEnvironment.js.map +1 -0
  23. package/dist/functions/browser/readBrowserVueHookDeps.d.ts +14 -0
  24. package/dist/functions/browser/readBrowserVueHookDeps.js +85 -0
  25. package/dist/functions/browser/readBrowserVueHookDeps.js.map +1 -0
  26. package/dist/functions/browser/requireBrowserLocalStorage.d.ts +2 -1
  27. package/dist/functions/browser/requireBrowserLocalStorage.js +3 -6
  28. package/dist/functions/browser/requireBrowserLocalStorage.js.map +1 -1
  29. package/dist/functions/chat/chatAppearancePrefs.d.ts +6 -1
  30. package/dist/functions/chat/chatAppearancePrefs.js +6 -4
  31. package/dist/functions/chat/chatAppearancePrefs.js.map +1 -1
  32. package/dist/functions/chat/createBrowserChatAppearanceModeAccess.d.ts +2 -1
  33. package/dist/functions/chat/createBrowserChatAppearanceModeAccess.js +8 -11
  34. package/dist/functions/chat/createBrowserChatAppearanceModeAccess.js.map +1 -1
  35. package/dist/functions/chat/createBrowserChatDownloadDirectoryPrefAccess.d.ts +2 -1
  36. package/dist/functions/chat/createBrowserChatDownloadDirectoryPrefAccess.js +12 -12
  37. package/dist/functions/chat/createBrowserChatDownloadDirectoryPrefAccess.js.map +1 -1
  38. package/dist/functions/chat/createBrowserChatFileMessageLocalPathAccess.d.ts +2 -1
  39. package/dist/functions/chat/createBrowserChatFileMessageLocalPathAccess.js +7 -14
  40. package/dist/functions/chat/createBrowserChatFileMessageLocalPathAccess.js.map +1 -1
  41. package/dist/functions/chat/createBrowserChatRootFontSizeAccess.d.ts +2 -1
  42. package/dist/functions/chat/createBrowserChatRootFontSizeAccess.js +14 -13
  43. package/dist/functions/chat/createBrowserChatRootFontSizeAccess.js.map +1 -1
  44. package/dist/functions/cloudDisk/collectElementIdsInContentLassoBox.d.ts +1 -19
  45. package/dist/functions/cloudDisk/collectElementIdsInContentLassoBox.js +1 -34
  46. package/dist/functions/cloudDisk/collectElementIdsInContentLassoBox.js.map +1 -1
  47. package/dist/functions/cloudDisk/createBrowserCloudDiskPrivacyStorageAccess.d.ts +2 -1
  48. package/dist/functions/cloudDisk/createBrowserCloudDiskPrivacyStorageAccess.js +11 -19
  49. package/dist/functions/cloudDisk/createBrowserCloudDiskPrivacyStorageAccess.js.map +1 -1
  50. package/dist/functions/cloudDisk/createBrowserCloudDiskQuickAccessStorageAccess.d.ts +2 -1
  51. package/dist/functions/cloudDisk/createBrowserCloudDiskQuickAccessStorageAccess.js +7 -11
  52. package/dist/functions/cloudDisk/createBrowserCloudDiskQuickAccessStorageAccess.js.map +1 -1
  53. package/dist/functions/dom/appTheme.d.ts +10 -0
  54. package/dist/functions/dom/appTheme.js +11 -0
  55. package/dist/functions/dom/appTheme.js.map +1 -0
  56. package/dist/functions/dom/copyHtmlAndPlainToClipboard.d.ts +3 -1
  57. package/dist/functions/dom/copyHtmlAndPlainToClipboard.js +14 -10
  58. package/dist/functions/dom/copyHtmlAndPlainToClipboard.js.map +1 -1
  59. package/dist/functions/dom/copyTextToClipboard.d.ts +3 -1
  60. package/dist/functions/dom/copyTextToClipboard.js +5 -4
  61. package/dist/functions/dom/copyTextToClipboard.js.map +1 -1
  62. package/dist/functions/dom/createTooltipLongPressHandlers.d.ts +24 -0
  63. package/dist/functions/dom/createTooltipLongPressHandlers.js +84 -0
  64. package/dist/functions/dom/createTooltipLongPressHandlers.js.map +1 -0
  65. package/dist/functions/dom/domDocumentSelection.d.ts +4 -0
  66. package/dist/functions/dom/domDocumentSelection.js +39 -0
  67. package/dist/functions/dom/domDocumentSelection.js.map +1 -0
  68. package/dist/functions/dom/domSelectionInElement.d.ts +4 -3
  69. package/dist/functions/dom/domSelectionInElement.js +10 -10
  70. package/dist/functions/dom/domSelectionInElement.js.map +1 -1
  71. package/dist/functions/dom/fetchBlobFromUrl.d.ts +7 -1
  72. package/dist/functions/dom/fetchBlobFromUrl.js +7 -5
  73. package/dist/functions/dom/fetchBlobFromUrl.js.map +1 -1
  74. package/dist/functions/dom/fileDrag.d.ts +11 -0
  75. package/dist/functions/dom/fileDrag.js +14 -0
  76. package/dist/functions/dom/fileDrag.js.map +1 -0
  77. package/dist/functions/dom/imageBlobToPng.d.ts +5 -4
  78. package/dist/functions/dom/imageBlobToPng.js +23 -16
  79. package/dist/functions/dom/imageBlobToPng.js.map +1 -1
  80. package/dist/functions/dom/lassoSelection.d.ts +84 -0
  81. package/dist/functions/dom/lassoSelection.js +199 -0
  82. package/dist/functions/dom/lassoSelection.js.map +1 -0
  83. package/dist/functions/dom/readBrowserDomDeps.d.ts +41 -0
  84. package/dist/functions/dom/readBrowserDomDeps.js +63 -0
  85. package/dist/functions/dom/readBrowserDomDeps.js.map +1 -0
  86. package/dist/functions/dom/resolveOverlayTeleportParent.d.ts +7 -0
  87. package/dist/functions/dom/resolveOverlayTeleportParent.js +11 -0
  88. package/dist/functions/dom/resolveOverlayTeleportParent.js.map +1 -0
  89. package/dist/functions/dom/safeBrowserDom.d.ts +17 -0
  90. package/dist/functions/dom/safeBrowserDom.js +42 -0
  91. package/dist/functions/dom/safeBrowserDom.js.map +1 -0
  92. package/dist/functions/dom/writeImageBlobToClipboard.d.ts +5 -1
  93. package/dist/functions/dom/writeImageBlobToClipboard.js +8 -5
  94. package/dist/functions/dom/writeImageBlobToClipboard.js.map +1 -1
  95. package/dist/functions/download/createBrowserDownloadDepsFromGlobalThis.d.ts +2 -0
  96. package/dist/functions/download/createBrowserDownloadDepsFromGlobalThis.js +9 -10
  97. package/dist/functions/download/createBrowserDownloadDepsFromGlobalThis.js.map +1 -1
  98. package/dist/functions/file/isJpegImageFile.d.ts +0 -1
  99. package/dist/functions/file/isJpegImageFile.js +0 -1
  100. package/dist/functions/file/isJpegImageFile.js.map +1 -1
  101. package/dist/functions/im/assignChatConversationToWindowLocation.d.ts +5 -1
  102. package/dist/functions/im/assignChatConversationToWindowLocation.js +5 -4
  103. package/dist/functions/im/assignChatConversationToWindowLocation.js.map +1 -1
  104. package/dist/functions/im/copyUsingClonedRangesOrMessagePlainText.d.ts +5 -1
  105. package/dist/functions/im/copyUsingClonedRangesOrMessagePlainText.js +11 -8
  106. package/dist/functions/im/copyUsingClonedRangesOrMessagePlainText.js.map +1 -1
  107. package/dist/functions/im/executeCopyChatMessageContent.d.ts +4 -1
  108. package/dist/functions/im/executeCopyChatMessageContent.js +6 -3
  109. package/dist/functions/im/executeCopyChatMessageContent.js.map +1 -1
  110. package/dist/functions/im/imBubbleSelectionClipboard.d.ts +2 -1
  111. package/dist/functions/im/imBubbleSelectionClipboard.js +10 -11
  112. package/dist/functions/im/imBubbleSelectionClipboard.js.map +1 -1
  113. package/dist/functions/im/imChatMessagePagination.d.ts +0 -1
  114. package/dist/functions/im/imChatMessagePagination.js +0 -1
  115. package/dist/functions/im/imChatMessagePagination.js.map +1 -1
  116. package/dist/functions/im/imImagePixelExtra.d.ts +0 -1
  117. package/dist/functions/im/imImagePixelExtra.js +0 -1
  118. package/dist/functions/im/imImagePixelExtra.js.map +1 -1
  119. package/dist/functions/im/imOrchestrationTypes.d.ts +5 -0
  120. package/dist/functions/im/imOrchestrationTypes.js +2 -0
  121. package/dist/functions/im/imOrchestrationTypes.js.map +1 -0
  122. package/dist/functions/im/imOutboundMediaHelpers.d.ts +7 -1
  123. package/dist/functions/im/imOutboundMediaHelpers.js +15 -7
  124. package/dist/functions/im/imOutboundMediaHelpers.js.map +1 -1
  125. package/dist/functions/im/index.d.ts +2 -2
  126. package/dist/functions/im/index.js +2 -2
  127. package/dist/functions/im/index.js.map +1 -1
  128. package/dist/functions/im/newImClientMessageIdFromBrowser.d.ts +4 -3
  129. package/dist/functions/im/newImClientMessageIdFromBrowser.js +7 -15
  130. package/dist/functions/im/newImClientMessageIdFromBrowser.js.map +1 -1
  131. package/dist/functions/number/clampIndex.d.ts +1 -0
  132. package/dist/functions/number/clampIndex.js +6 -0
  133. package/dist/functions/number/clampIndex.js.map +1 -0
  134. package/dist/functions/release/capacitorOtaReleaseManifestFetch.d.ts +2 -1
  135. package/dist/functions/release/capacitorOtaReleaseManifestFetch.js +3 -2
  136. package/dist/functions/release/capacitorOtaReleaseManifestFetch.js.map +1 -1
  137. package/dist/functions/release/capacitorReleaseManifestFetch.d.ts +2 -1
  138. package/dist/functions/release/capacitorReleaseManifestFetch.js +3 -2
  139. package/dist/functions/release/capacitorReleaseManifestFetch.js.map +1 -1
  140. package/dist/functions/release/capacitorUpdateDefaults.d.ts +4 -0
  141. package/dist/functions/release/capacitorUpdateDefaults.js +10 -10
  142. package/dist/functions/release/capacitorUpdateDefaults.js.map +1 -1
  143. package/dist/functions/release/createCapacitorUpdateFetchDeps.js +13 -7
  144. package/dist/functions/release/createCapacitorUpdateFetchDeps.js.map +1 -1
  145. package/dist/functions/release/createReleaseManifestFetchDeps.d.ts +1 -2
  146. package/dist/functions/release/createReleaseManifestFetchDeps.js +5 -10
  147. package/dist/functions/release/createReleaseManifestFetchDeps.js.map +1 -1
  148. package/dist/functions/release/electronReleaseManifestFetch.d.ts +4 -1
  149. package/dist/functions/release/electronReleaseManifestFetch.js +12 -7
  150. package/dist/functions/release/electronReleaseManifestFetch.js.map +1 -1
  151. package/dist/functions/release/isCapacitorWebViewOnViteDevServer.js +4 -4
  152. package/dist/functions/release/isCapacitorWebViewOnViteDevServer.js.map +1 -1
  153. package/dist/functions/release/readBrowserReleaseDeps.d.ts +14 -0
  154. package/dist/functions/release/readBrowserReleaseDeps.js +19 -0
  155. package/dist/functions/release/readBrowserReleaseDeps.js.map +1 -0
  156. package/dist/functions/release/releaseUpdateDismissSession.d.ts +3 -2
  157. package/dist/functions/release/releaseUpdateDismissSession.js +10 -7
  158. package/dist/functions/release/releaseUpdateDismissSession.js.map +1 -1
  159. package/dist/functions/release/verifyHttpContentLength.d.ts +2 -0
  160. package/dist/functions/release/verifyHttpContentLength.js +4 -1
  161. package/dist/functions/release/verifyHttpContentLength.js.map +1 -1
  162. package/dist/functions/storage/createBrowserSessionStorageKit.d.ts +12 -0
  163. package/dist/functions/storage/createBrowserSessionStorageKit.js +16 -0
  164. package/dist/functions/storage/createBrowserSessionStorageKit.js.map +1 -0
  165. package/dist/functions/storage/createBrowserStringStorageKit.d.ts +12 -0
  166. package/dist/functions/storage/createBrowserStringStorageKit.js +14 -0
  167. package/dist/functions/storage/createBrowserStringStorageKit.js.map +1 -0
  168. package/dist/functions/wallet/createBrowserWalletPayPasswordSessionAccess.d.ts +2 -1
  169. package/dist/functions/wallet/createBrowserWalletPayPasswordSessionAccess.js +5 -9
  170. package/dist/functions/wallet/createBrowserWalletPayPasswordSessionAccess.js.map +1 -1
  171. package/dist/permissions/catalog.d.ts +4 -0
  172. package/dist/permissions/catalog.js +22 -0
  173. package/dist/permissions/catalog.js.map +1 -1
  174. package/dist/vue-hooks/browser/useBrowserFileObjectUrlMap.d.ts +7 -0
  175. package/dist/vue-hooks/browser/useBrowserFileObjectUrlMap.js +7 -0
  176. package/dist/vue-hooks/browser/useBrowserFileObjectUrlMap.js.map +1 -0
  177. package/dist/vue-hooks/browser/useFileObjectUrlMap.d.ts +19 -0
  178. package/dist/vue-hooks/browser/useFileObjectUrlMap.js +46 -0
  179. package/dist/vue-hooks/browser/useFileObjectUrlMap.js.map +1 -0
  180. package/dist/vue-hooks/dom/useBrowserFocusVisible.d.ts +9 -0
  181. package/dist/vue-hooks/dom/useBrowserFocusVisible.js +8 -0
  182. package/dist/vue-hooks/dom/useBrowserFocusVisible.js.map +1 -0
  183. package/dist/vue-hooks/dom/useBrowserLassoSelection.d.ts +16 -0
  184. package/dist/vue-hooks/dom/useBrowserLassoSelection.js +7 -0
  185. package/dist/vue-hooks/dom/useBrowserLassoSelection.js.map +1 -0
  186. package/dist/vue-hooks/dom/useFocusVisible.d.ts +17 -0
  187. package/dist/vue-hooks/dom/useFocusVisible.js +53 -0
  188. package/dist/vue-hooks/dom/useFocusVisible.js.map +1 -0
  189. package/dist/vue-hooks/dom/useLassoSelection.d.ts +53 -0
  190. package/dist/vue-hooks/dom/useLassoSelection.js +244 -0
  191. package/dist/vue-hooks/dom/useLassoSelection.js.map +1 -0
  192. package/dist/vue-hooks/time/useBrowserDelayedTrue.d.ts +2 -0
  193. package/dist/vue-hooks/time/useBrowserDelayedTrue.js +7 -0
  194. package/dist/vue-hooks/time/useBrowserDelayedTrue.js.map +1 -0
  195. package/dist/vue-hooks/time/useDelayedTrue.d.ts +11 -0
  196. package/dist/vue-hooks/time/useDelayedTrue.js +29 -0
  197. package/dist/vue-hooks/time/useDelayedTrue.js.map +1 -0
  198. package/package.json +29 -2
  199. package/types/component-material.d.ts +40 -0
  200. package/types/lowcode.d.ts +63 -0
  201. package/types/rbac.d.ts +0 -3
  202. package/types/vue.d.ts +9 -1
  203. package/dist/functions/file/extractVideoCover.d.ts +0 -6
  204. package/dist/functions/file/extractVideoCover.js +0 -57
  205. package/dist/functions/file/extractVideoCover.js.map +0 -1
  206. package/dist/functions/im/imInlineContentTokens.d.ts +0 -49
  207. package/dist/functions/im/imInlineContentTokens.js +0 -185
  208. package/dist/functions/im/imInlineContentTokens.js.map +0 -1
  209. package/dist/functions/im/materializeUploadFileFromMediaBlobRecord.d.ts +0 -7
  210. package/dist/functions/im/materializeUploadFileFromMediaBlobRecord.js +0 -10
  211. package/dist/functions/im/materializeUploadFileFromMediaBlobRecord.js.map +0 -1
  212. package/dist/functions/im/parseImMentionSegments.d.ts +0 -19
  213. package/dist/functions/im/parseImMentionSegments.js +0 -92
  214. package/dist/functions/im/parseImMentionSegments.js.map +0 -1
  215. package/dist/functions/image/compressImageToWidth.d.ts +0 -12
  216. package/dist/functions/image/compressImageToWidth.js +0 -44
  217. package/dist/functions/image/compressImageToWidth.js.map +0 -1
  218. package/dist/functions/image/compressJpgToTargetSize.d.ts +0 -13
  219. package/dist/functions/image/compressJpgToTargetSize.js +0 -132
  220. package/dist/functions/image/compressJpgToTargetSize.js.map +0 -1
  221. package/dist/functions/image/compressToTargetSize.d.ts +0 -13
  222. package/dist/functions/image/compressToTargetSizeJpg.d.ts +0 -13
  223. package/dist/functions/image/compressToTargetSizeJpg.js +0 -132
  224. package/dist/functions/image/compressToTargetSizeJpg.js.map +0 -1
  225. package/dist/permissions/allPermissionCode.js.map +0 -1
  226. package/dist/permissions/definePermissionGroup.js.map +0 -1
  227. package/dist/permissions/groups.js.map +0 -1
@@ -0,0 +1,84 @@
1
+ import { readBrowserDomTimerDeps, } from './readBrowserDomDeps.js';
2
+ export const TOOLTIP_LONG_PRESS_MS = 450;
3
+ const MOVE_CANCEL_PX = 10;
4
+ export function createTooltipLongPressHandlers(options, deps) {
5
+ const resolved = deps ?? readBrowserDomTimerDeps();
6
+ const scheduleTimeout = resolved.setTimeout;
7
+ const cancelScheduledTimeout = resolved.clearTimeout;
8
+ let timer = null;
9
+ let touchStartX = 0;
10
+ let touchStartY = 0;
11
+ let suppressNextClick = false;
12
+ let deferredLongPressPending = false;
13
+ const clearTimer = () => {
14
+ if (timer) {
15
+ cancelScheduledTimeout(timer);
16
+ timer = null;
17
+ }
18
+ };
19
+ const onTouchStart = (e) => {
20
+ if (!options.enabled())
21
+ return;
22
+ const t = e.touches[0];
23
+ if (t) {
24
+ touchStartX = t.clientX;
25
+ touchStartY = t.clientY;
26
+ }
27
+ clearTimer();
28
+ deferredLongPressPending = false;
29
+ timer = scheduleTimeout(() => {
30
+ timer = null;
31
+ suppressNextClick = true;
32
+ if (options.deferCallbackUntilTouchEnd) {
33
+ deferredLongPressPending = true;
34
+ }
35
+ else {
36
+ options.onLongPress();
37
+ }
38
+ }, TOOLTIP_LONG_PRESS_MS);
39
+ };
40
+ const onTouchMove = (e) => {
41
+ const t = e.touches[0];
42
+ if (!t)
43
+ return;
44
+ const movedTooFar = Math.abs(t.clientX - touchStartX) > MOVE_CANCEL_PX ||
45
+ Math.abs(t.clientY - touchStartY) > MOVE_CANCEL_PX;
46
+ if (!movedTooFar)
47
+ return;
48
+ if (timer)
49
+ clearTimer();
50
+ if (deferredLongPressPending) {
51
+ deferredLongPressPending = false;
52
+ suppressNextClick = false;
53
+ }
54
+ };
55
+ const flushDeferredLongPress = () => {
56
+ if (!deferredLongPressPending)
57
+ return;
58
+ deferredLongPressPending = false;
59
+ options.onLongPress();
60
+ };
61
+ const onTouchEnd = () => {
62
+ clearTimer();
63
+ flushDeferredLongPress();
64
+ };
65
+ const onTouchEndCancel = () => {
66
+ clearTimer();
67
+ deferredLongPressPending = false;
68
+ };
69
+ const consumeSuppressClick = () => {
70
+ if (!suppressNextClick)
71
+ return false;
72
+ suppressNextClick = false;
73
+ return true;
74
+ };
75
+ return {
76
+ onTouchStart,
77
+ onTouchMove,
78
+ onTouchEnd,
79
+ onTouchCancel: onTouchEndCancel,
80
+ consumeSuppressClick,
81
+ clearTimer,
82
+ };
83
+ }
84
+ //# sourceMappingURL=createTooltipLongPressHandlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createTooltipLongPressHandlers.js","sourceRoot":"","sources":["../../../src/functions/dom/createTooltipLongPressHandlers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { HTMLElement } from '../../../references/dom.d';
2
+ import { type DomSelectionDeps } from './readBrowserDomDeps';
3
+ export declare function clearDocumentSelection(deps?: DomSelectionDeps): void;
4
+ export declare function selectElementTextContent(root: HTMLElement, deps?: DomSelectionDeps): boolean;
@@ -0,0 +1,39 @@
1
+ import { readBrowserDomSelectionDeps, } from './readBrowserDomDeps.js';
2
+ function getWindowSelection(deps) {
3
+ return deps.getSelection?.() ?? null;
4
+ }
5
+ export function clearDocumentSelection(deps) {
6
+ getWindowSelection(deps ?? readBrowserDomSelectionDeps())?.removeAllRanges();
7
+ }
8
+ export function selectElementTextContent(root, deps) {
9
+ const resolved = deps ?? readBrowserDomSelectionDeps();
10
+ const sel = getWindowSelection(resolved);
11
+ if (!sel)
12
+ return false;
13
+ sel.removeAllRanges();
14
+ const doc = resolved.document;
15
+ if (!doc?.createRange || !doc.createTreeWalker)
16
+ return false;
17
+ const range = doc.createRange();
18
+ const walker = doc.createTreeWalker(root, 4);
19
+ let first = null;
20
+ let last = null;
21
+ while (walker.nextNode()) {
22
+ const node = walker.currentNode;
23
+ if (!node.textContent?.trim())
24
+ continue;
25
+ if (!first)
26
+ first = node;
27
+ last = node;
28
+ }
29
+ if (first && last) {
30
+ range.setStart(first, 0);
31
+ range.setEnd(last, last.textContent?.length ?? 0);
32
+ }
33
+ else {
34
+ range.selectNodeContents(root);
35
+ }
36
+ sel.addRange(range);
37
+ return true;
38
+ }
39
+ //# sourceMappingURL=domDocumentSelection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domDocumentSelection.js","sourceRoot":"","sources":["../../../src/functions/dom/domDocumentSelection.ts"],"names":[],"mappings":"AACA,OAAO,EACL,2BAA2B,GAG5B,MAAM,sBAAsB,CAAA;AAQ7B,SAAS,kBAAkB,CAAC,IAAsB;IAChD,OAAO,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,IAAI,CAAA;AACtC,CAAC;AAGD,MAAM,UAAU,sBAAsB,CAAC,IAAuB;IAC5D,kBAAkB,CAAC,IAAI,IAAI,2BAA2B,EAAE,CAAC,EAAE,eAAe,EAAE,CAAA;AAC9E,CAAC;AAGD,MAAM,UAAU,wBAAwB,CACtC,IAAiB,EACjB,IAAuB;IAEvB,MAAM,QAAQ,GAAG,IAAI,IAAI,2BAA2B,EAAE,CAAA;IACtD,MAAM,GAAG,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAA;IACxC,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAA;IACtB,GAAG,CAAC,eAAe,EAAE,CAAA;IAErB,MAAM,GAAG,GAAG,QAAQ,CAAC,QAIR,CAAA;IACb,IAAI,CAAC,GAAG,EAAE,WAAW,IAAI,CAAC,GAAG,CAAC,gBAAgB;QAAE,OAAO,KAAK,CAAA;IAE5D,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,EAAqB,CAAA;IAClD,MAAM,MAAM,GAAG,GAAG,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IAC5C,IAAI,KAAK,GAAoB,IAAI,CAAA;IACjC,IAAI,IAAI,GAAoB,IAAI,CAAA;IAChC,OAAO,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,MAAM,CAAC,WAAuB,CAAA;QAC3C,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE;YAAE,SAAQ;QACvC,IAAI,CAAC,KAAK;YAAE,KAAK,GAAG,IAAI,CAAA;QACxB,IAAI,GAAG,IAAI,CAAA;IACb,CAAC;IACD,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAClB,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;QACxB,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC,CAAC,CAAA;IACnD,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAA;IAChC,CAAC;IACD,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IACnB,OAAO,IAAI,CAAA;AACb,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import type { HTMLElement, Range } from '../../../references/dom.d';
2
- export declare function cloneDomSelectionRangesInElement(el: HTMLElement): Range[];
3
- export declare function snapshotDomBubbleCopyRanges(el: HTMLElement): Range[];
4
- export declare function readDomSelectionTextInElement(el: HTMLElement): string;
2
+ import { type DomSelectionDeps } from './readBrowserDomDeps';
3
+ export declare function cloneDomSelectionRangesInElement(el: HTMLElement, deps?: DomSelectionDeps): Range[];
4
+ export declare function snapshotDomBubbleCopyRanges(el: HTMLElement, deps?: DomSelectionDeps): Range[];
5
+ export declare function readDomSelectionTextInElement(el: HTMLElement, deps?: DomSelectionDeps): string;
@@ -1,9 +1,9 @@
1
- function getWindowSelection() {
2
- const w = globalThis;
3
- return w.getSelection?.() ?? null;
1
+ import { readBrowserDomSelectionDeps, } from './readBrowserDomDeps.js';
2
+ function getWindowSelection(deps) {
3
+ return deps.getSelection?.() ?? null;
4
4
  }
5
- export function cloneDomSelectionRangesInElement(el) {
6
- const sel = getWindowSelection();
5
+ export function cloneDomSelectionRangesInElement(el, deps) {
6
+ const sel = getWindowSelection(deps ?? readBrowserDomSelectionDeps());
7
7
  if (!sel || sel.rangeCount === 0 || sel.isCollapsed)
8
8
  return [];
9
9
  const out = [];
@@ -15,11 +15,11 @@ export function cloneDomSelectionRangesInElement(el) {
15
15
  }
16
16
  return out;
17
17
  }
18
- export function snapshotDomBubbleCopyRanges(el) {
19
- const fromSelection = cloneDomSelectionRangesInElement(el);
18
+ export function snapshotDomBubbleCopyRanges(el, deps) {
19
+ const fromSelection = cloneDomSelectionRangesInElement(el, deps);
20
20
  if (fromSelection.length > 0)
21
21
  return fromSelection;
22
- const doc = globalThis.document;
22
+ const doc = (deps ?? readBrowserDomSelectionDeps()).document;
23
23
  if (!doc?.createRange)
24
24
  return [];
25
25
  try {
@@ -31,8 +31,8 @@ export function snapshotDomBubbleCopyRanges(el) {
31
31
  return [];
32
32
  }
33
33
  }
34
- export function readDomSelectionTextInElement(el) {
35
- const ranges = cloneDomSelectionRangesInElement(el);
34
+ export function readDomSelectionTextInElement(el, deps) {
35
+ const ranges = cloneDomSelectionRangesInElement(el, deps);
36
36
  const raw = ranges.map((r) => r.toString()).join('');
37
37
  return raw.trim() ? raw : '';
38
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"domSelectionInElement.js","sourceRoot":"","sources":["../../../src/functions/dom/domSelectionInElement.ts"],"names":[],"mappings":"AAGA,SAAS,kBAAkB;IACzB,MAAM,CAAC,GAAG,UAET,CAAA;IACD,OAAO,CAAC,CAAC,YAAY,EAAE,EAAE,IAAI,IAAI,CAAA;AACnC,CAAC;AAMD,MAAM,UAAU,gCAAgC,CAAC,EAAe;IAC9D,MAAM,GAAG,GAAG,kBAAkB,EAAE,CAAA;IAChC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,KAAK,CAAC,IAAI,GAAG,CAAC,WAAW;QAAE,OAAO,EAAE,CAAA;IAC9D,MAAM,GAAG,GAAY,EAAE,CAAA;IACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;QAC3B,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC;YAAE,OAAO,EAAE,CAAA;QAC7E,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAA;IAC1B,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAGD,MAAM,UAAU,2BAA2B,CAAC,EAAe;IACzD,MAAM,aAAa,GAAG,gCAAgC,CAAC,EAAE,CAAC,CAAA;IAC1D,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,aAAa,CAAA;IAClD,MAAM,GAAG,GAAI,UAA2D,CAAC,QAAQ,CAAA;IACjF,IAAI,CAAC,GAAG,EAAE,WAAW;QAAE,OAAO,EAAE,CAAA;IAChC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,EAAE,CAAA;QAC/B,KAAK,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAA;QAC5B,OAAO,CAAC,KAAK,CAAC,CAAA;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC;AAGD,MAAM,UAAU,6BAA6B,CAAC,EAAe;IAC3D,MAAM,MAAM,GAAG,gCAAgC,CAAC,EAAE,CAAC,CAAA;IACnD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACpD,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;AAC9B,CAAC"}
1
+ {"version":3,"file":"domSelectionInElement.js","sourceRoot":"","sources":["../../../src/functions/dom/domSelectionInElement.ts"],"names":[],"mappings":"AACA,OAAO,EACL,2BAA2B,GAG5B,MAAM,sBAAsB,CAAA;AAE7B,SAAS,kBAAkB,CAAC,IAAsB;IAChD,OAAO,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,IAAI,CAAA;AACtC,CAAC;AAMD,MAAM,UAAU,gCAAgC,CAC9C,EAAe,EACf,IAAuB;IAEvB,MAAM,GAAG,GAAG,kBAAkB,CAAC,IAAI,IAAI,2BAA2B,EAAE,CAAC,CAAA;IACrE,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,KAAK,CAAC,IAAI,GAAG,CAAC,WAAW;QAAE,OAAO,EAAE,CAAA;IAC9D,MAAM,GAAG,GAAY,EAAE,CAAA;IACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;QAC3B,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC;YAAE,OAAO,EAAE,CAAA;QAC7E,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAA;IAC1B,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAGD,MAAM,UAAU,2BAA2B,CACzC,EAAe,EACf,IAAuB;IAEvB,MAAM,aAAa,GAAG,gCAAgC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;IAChE,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,aAAa,CAAA;IAClD,MAAM,GAAG,GAAG,CAAC,IAAI,IAAI,2BAA2B,EAAE,CAAC,CAAC,QAAQ,CAAA;IAC5D,IAAI,CAAC,GAAG,EAAE,WAAW;QAAE,OAAO,EAAE,CAAA;IAChC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,EAAE,CAAA;QAC/B,KAAK,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAA;QAC5B,OAAO,CAAC,KAAK,CAAC,CAAA;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC;AAGD,MAAM,UAAU,6BAA6B,CAC3C,EAAe,EACf,IAAuB;IAEvB,MAAM,MAAM,GAAG,gCAAgC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;IACzD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACpD,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;AAC9B,CAAC"}
@@ -1,6 +1,12 @@
1
1
  import type { FetchFunction } from '../../../references/fetch.d';
2
2
  import type { Blob } from '../../../references/blob.d';
3
+ import type { URL as URLConstructor } from '../../../references/url.d';
4
+ export interface FetchBlobFromUrlDeps {
5
+ fetch: FetchFunction;
6
+ URLConstructor?: typeof URLConstructor;
7
+ }
3
8
  export declare function fetchBlobFromUrl(url: string, options?: {
4
9
  pageHref?: string;
5
10
  fetchFn?: FetchFunction;
6
- }): Promise<Blob | null>;
11
+ URLConstructor?: typeof URLConstructor;
12
+ }, deps?: FetchBlobFromUrlDeps): Promise<Blob | null>;
@@ -1,14 +1,16 @@
1
- export async function fetchBlobFromUrl(url, options) {
2
- const fetchFn = options?.fetchFn ?? globalThis.fetch;
1
+ import { readBrowserDomFetchBlobDeps, } from './readBrowserDomDeps.js';
2
+ export async function fetchBlobFromUrl(url, options, deps) {
3
+ const resolved = deps ?? readBrowserDomFetchBlobDeps();
4
+ const fetchFn = options?.fetchFn ?? resolved?.fetch;
3
5
  if (!fetchFn)
4
6
  return null;
5
7
  try {
6
8
  let credentials;
7
9
  const pageHref = options?.pageHref;
8
- if (pageHref) {
10
+ const URLCtor = options?.URLConstructor ?? resolved?.URLConstructor;
11
+ if (pageHref && URLCtor) {
9
12
  try {
10
- const URLCtor = globalThis.URL;
11
- if (URLCtor && new URLCtor(url, pageHref).origin === new URLCtor(pageHref).origin) {
13
+ if (new URLCtor(url, pageHref).origin === new URLCtor(pageHref).origin) {
12
14
  credentials = 'include';
13
15
  }
14
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"fetchBlobFromUrl.js","sourceRoot":"","sources":["../../../src/functions/dom/fetchBlobFromUrl.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,GAAW,EACX,OAGC;IAED,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,IAAK,UAAmD,CAAC,KAAK,CAAA;IAC9F,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAA;IACzB,IAAI,CAAC;QACH,IAAI,WAAkC,CAAA;QACtC,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,CAAA;QAClC,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC;gBACH,MAAM,OAAO,GAAI,UAA4F,CAAC,GAAG,CAAA;gBACjH,IAAI,OAAO,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,MAAM,KAAK,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;oBAClF,WAAW,GAAG,SAAS,CAAA;gBACzB,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;YAET,CAAC;QACH,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,OAAO,CACvB,GAAG,EACH,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CACrD,CAAA;QACD,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,IAAI,CAAA;QACxB,OAAO,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"fetchBlobFromUrl.js","sourceRoot":"","sources":["../../../src/functions/dom/fetchBlobFromUrl.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,2BAA2B,GAE5B,MAAM,sBAAsB,CAAA;AAO7B,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,GAAW,EACX,OAIC,EACD,IAA2B;IAE3B,MAAM,QAAQ,GAAG,IAAI,IAAI,2BAA2B,EAAE,CAAA;IACtD,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,KAAK,CAAA;IACnD,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAA;IACzB,IAAI,CAAC;QACH,IAAI,WAAkC,CAAA;QACtC,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,CAAA;QAClC,MAAM,OAAO,GAAG,OAAO,EAAE,cAAc,IAAI,QAAQ,EAAE,cAAc,CAAA;QACnE,IAAI,QAAQ,IAAI,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC;gBACH,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,MAAM,KAAK,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;oBACvE,WAAW,GAAG,SAAS,CAAA;gBACzB,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;YAET,CAAC;QACH,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,OAAO,CACvB,GAAG,EACH,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CACrD,CAAA;QACD,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,IAAI,CAAA;QACxB,OAAO,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC"}
@@ -0,0 +1,11 @@
1
+ type ExternalFileDragTransfer = {
2
+ types: readonly string[];
3
+ items?: {
4
+ length: number;
5
+ [index: number]: {
6
+ kind: string;
7
+ };
8
+ };
9
+ };
10
+ export declare function hasExternalFileDrag(dt: ExternalFileDragTransfer | null | undefined): boolean;
11
+ export {};
@@ -0,0 +1,14 @@
1
+ export function hasExternalFileDrag(dt) {
2
+ if (!dt)
3
+ return false;
4
+ if (Array.from(dt.types).includes('Files'))
5
+ return true;
6
+ if (dt.items?.length) {
7
+ for (const item of Array.from(dt.items)) {
8
+ if (item.kind === 'file')
9
+ return true;
10
+ }
11
+ }
12
+ return false;
13
+ }
14
+ //# sourceMappingURL=fileDrag.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fileDrag.js","sourceRoot":"","sources":["../../../src/functions/dom/fileDrag.ts"],"names":[],"mappings":"AAMA,MAAM,UAAU,mBAAmB,CAAC,EAA+C;IACjF,IAAI,CAAC,EAAE;QAAE,OAAO,KAAK,CAAA;IACrB,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAA;IACvD,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QACrB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;YACxC,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;gBAAE,OAAO,IAAI,CAAA;QACvC,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import type { Blob } from '../../../references/blob.d';
2
2
  import type { HTMLImageElement } from '../../../references/dom.d';
3
- export declare function imageElementToPngBlob(img: HTMLImageElement): Promise<Blob>;
4
- export declare function imageUrlToPngBlob(url: string, crossOrigin?: boolean): Promise<Blob>;
5
- export declare function blobToPngBlob(blob: Blob): Promise<Blob>;
6
- export declare function normalizeImageBlobForClipboard(blob: Blob): Promise<Blob>;
3
+ import { type DomImageCanvasDeps } from './readBrowserDomDeps';
4
+ export declare function imageElementToPngBlob(img: HTMLImageElement, deps?: DomImageCanvasDeps): Promise<Blob>;
5
+ export declare function imageUrlToPngBlob(url: string, crossOrigin?: boolean, deps?: DomImageCanvasDeps): Promise<Blob>;
6
+ export declare function blobToPngBlob(blob: Blob, deps?: DomImageCanvasDeps): Promise<Blob>;
7
+ export declare function normalizeImageBlobForClipboard(blob: Blob, deps?: DomImageCanvasDeps): Promise<Blob>;
@@ -1,14 +1,14 @@
1
+ import { readBrowserDomImageCanvasDeps, } from './readBrowserDomDeps.js';
1
2
  function canvasToPngBlob(canvas) {
2
3
  return new Promise((resolve, reject) => {
3
4
  canvas.toBlob((blob) => (blob ? resolve(blob) : reject(new Error('toBlob failed'))), 'image/png');
4
5
  });
5
6
  }
6
- function drawImageToCanvas(img) {
7
+ function drawImageToCanvas(img, deps) {
7
8
  if (!img.complete || img.naturalWidth <= 0) {
8
9
  throw new Error('image not ready');
9
10
  }
10
- const doc = globalThis.document;
11
- const canvas = doc.createElement('canvas');
11
+ const canvas = deps.document.createElement('canvas');
12
12
  canvas.width = img.naturalWidth;
13
13
  canvas.height = img.naturalHeight;
14
14
  const ctx = canvas.getContext('2d');
@@ -22,18 +22,23 @@ function drawImageToCanvas(img) {
22
22
  }
23
23
  return canvas;
24
24
  }
25
- export function imageElementToPngBlob(img) {
26
- return canvasToPngBlob(drawImageToCanvas(img));
25
+ export function imageElementToPngBlob(img, deps) {
26
+ const resolved = deps ?? readBrowserDomImageCanvasDeps();
27
+ if (!resolved)
28
+ return Promise.reject(new Error('browser image deps unavailable'));
29
+ return canvasToPngBlob(drawImageToCanvas(img, resolved));
27
30
  }
28
- export function imageUrlToPngBlob(url, crossOrigin = true) {
29
- const ImageCtor = globalThis.Image;
31
+ export function imageUrlToPngBlob(url, crossOrigin = true, deps) {
32
+ const resolved = deps ?? readBrowserDomImageCanvasDeps();
33
+ if (!resolved)
34
+ return Promise.reject(new Error('browser image deps unavailable'));
30
35
  return new Promise((resolve, reject) => {
31
- const img = new ImageCtor();
36
+ const img = new resolved.Image();
32
37
  if (crossOrigin)
33
38
  img.crossOrigin = 'anonymous';
34
39
  img.onload = () => {
35
40
  try {
36
- void canvasToPngBlob(drawImageToCanvas(img)).then(resolve, reject);
41
+ void canvasToPngBlob(drawImageToCanvas(img, resolved)).then(resolve, reject);
37
42
  }
38
43
  catch (e) {
39
44
  reject(e);
@@ -43,23 +48,25 @@ export function imageUrlToPngBlob(url, crossOrigin = true) {
43
48
  img.src = url;
44
49
  });
45
50
  }
46
- export async function blobToPngBlob(blob) {
51
+ export async function blobToPngBlob(blob, deps) {
47
52
  if (blob.type === 'image/png')
48
53
  return blob;
49
- const urlApi = globalThis.URL;
50
- const objectUrl = urlApi.createObjectURL(blob);
54
+ const resolved = deps ?? readBrowserDomImageCanvasDeps();
55
+ if (!resolved)
56
+ throw new Error('browser image deps unavailable');
57
+ const objectUrl = resolved.URL.createObjectURL(blob);
51
58
  try {
52
- return await imageUrlToPngBlob(objectUrl, false);
59
+ return await imageUrlToPngBlob(objectUrl, false, resolved);
53
60
  }
54
61
  finally {
55
- urlApi.revokeObjectURL(objectUrl);
62
+ resolved.URL.revokeObjectURL(objectUrl);
56
63
  }
57
64
  }
58
- export async function normalizeImageBlobForClipboard(blob) {
65
+ export async function normalizeImageBlobForClipboard(blob, deps) {
59
66
  if (blob.type === 'image/png')
60
67
  return blob;
61
68
  try {
62
- return await blobToPngBlob(blob);
69
+ return await blobToPngBlob(blob, deps);
63
70
  }
64
71
  catch {
65
72
  return blob;
@@ -1 +1 @@
1
- {"version":3,"file":"imageBlobToPng.js","sourceRoot":"","sources":["../../../src/functions/dom/imageBlobToPng.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"imageBlobToPng.js","sourceRoot":"","sources":["../../../src/functions/dom/imageBlobToPng.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ export type LassoBoxRect = {
2
+ left: number;
3
+ top: number;
4
+ width: number;
5
+ height: number;
6
+ };
7
+ type ClientRectLike = {
8
+ left: number;
9
+ top: number;
10
+ width: number;
11
+ height: number;
12
+ right: number;
13
+ bottom: number;
14
+ };
15
+ type LassoScrollViewport = {
16
+ scrollLeft: number;
17
+ scrollTop: number;
18
+ scrollWidth: number;
19
+ scrollHeight: number;
20
+ clientHeight: number;
21
+ getBoundingClientRect(): {
22
+ top: number;
23
+ left: number;
24
+ height: number;
25
+ };
26
+ };
27
+ type LassoRowElement = {
28
+ getAttribute(name: string): string | null;
29
+ getBoundingClientRect(): ClientRectLike;
30
+ };
31
+ type LassoContentRoot = {
32
+ querySelectorAll(selectors: string): Iterable<LassoRowElement>;
33
+ };
34
+ export declare const DEFAULT_DRAG_ENTER_MIN_PX = 32;
35
+ export declare const LASSO_STROKE_PAD_PX = 4;
36
+ export declare const EDGE_SCROLL_ZONE_PX = 56;
37
+ export declare const EDGE_SCROLL_MAX_PX_PER_FRAME = 18;
38
+ export declare const LASSO_INTERACTIVE_SELECTOR = "a[href],button,input,textarea,select,[contenteditable=\"true\"],[role=\"checkbox\"]";
39
+ export declare const defaultLassoBoxClass = "pointer-events-none absolute z-[var(--z-index-float)] box-border border border-[var(--brand-color-6)] bg-[color-mix(in_srgb,var(--brand-color-6)_20%,transparent)]";
40
+ type AxisRect = {
41
+ left: number;
42
+ top: number;
43
+ width: number;
44
+ height: number;
45
+ right: number;
46
+ bottom: number;
47
+ };
48
+ export declare function rectsOverlap(a: LassoBoxRect | ClientRectLike | AxisRect, b: LassoBoxRect | ClientRectLike | AxisRect): boolean;
49
+ export declare function isPrimaryPointer(e: {
50
+ button: number;
51
+ isPrimary: boolean;
52
+ }): boolean;
53
+ export declare function meetsDragEnterThreshold(dx: number, dy: number, minPx: number): boolean;
54
+ export declare function strokeBounds(x1: number, y1: number, x2: number, y2: number, strokePadPx?: number): ClientRectLike;
55
+ export declare function clientPointToContent(clientX: number, clientY: number, viewport: LassoScrollViewport): {
56
+ x: number;
57
+ y: number;
58
+ };
59
+ export declare function startContentPoint(startClientX: number, startClientY: number, startScrollLeft: number, startScrollTop: number, viewport: LassoScrollViewport): {
60
+ x: number;
61
+ y: number;
62
+ };
63
+ export declare function clipContentRectToScrollable(rect: ClientRectLike, viewport: LassoScrollViewport): ClientRectLike;
64
+ export declare function lassoBoxInScrollContent(contentRect: ClientRectLike, viewport: LassoScrollViewport): LassoBoxRect | null;
65
+ export declare function collectRowElByItemId(root: LassoContentRoot, rowIdAttribute: string): Map<string, LassoRowElement>;
66
+ export declare function nearestItemByPoint<T extends {
67
+ id: string;
68
+ }>(items: readonly T[], rowElByItemId: Map<string, LassoRowElement>, clientX: number, clientY: number): T | null;
69
+ export declare function pointerHitsInteractive(target: unknown, selector?: string): boolean;
70
+ export declare function resolveLassoSeed<T extends {
71
+ id: string;
72
+ }>(items: readonly T[], rowElByItemId: Map<string, LassoRowElement>, rowIdAttribute: string, target: unknown, clientX: number, clientY: number): {
73
+ item: T;
74
+ rowEl: LassoRowElement;
75
+ } | null;
76
+ export declare function computeViewportEdgeScrollDelta(clientY: number, viewport: LassoScrollViewport, edgeScrollZonePx?: number, edgeScrollMaxPxPerFrame?: number): number;
77
+ export declare function collectElementIdsInContentLassoBox(box: LassoBoxRect, viewport: LassoScrollViewport, contentRoot: LassoContentRoot, idAttribute: string): string[];
78
+ export declare function mapItemsByRowIds<T extends {
79
+ id: string | number;
80
+ }>(items: readonly T[], rowIds: readonly string[]): T[];
81
+ export declare function idsInClientLasso<T extends {
82
+ id: string;
83
+ }>(items: readonly T[], rowElByItemId: Map<string, LassoRowElement>, startClientX: number, startClientY: number, endClientX: number, endClientY: number, itemSelectable?: (item: T) => boolean): string[];
84
+ export {};