jazz-tools 0.14.27 → 0.15.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 (871) hide show
  1. package/.svelte-kit/__package__/Provider.svelte +61 -0
  2. package/.svelte-kit/__package__/Provider.svelte.d.ts +19 -0
  3. package/.svelte-kit/__package__/Provider.svelte.d.ts.map +1 -0
  4. package/.svelte-kit/__package__/auth/PasskeyAuth.svelte.d.ts +11 -0
  5. package/.svelte-kit/__package__/auth/PasskeyAuth.svelte.d.ts.map +1 -0
  6. package/.svelte-kit/__package__/auth/PasskeyAuth.svelte.js +20 -0
  7. package/.svelte-kit/__package__/auth/PasskeyAuthBasicUI.svelte +81 -0
  8. package/.svelte-kit/__package__/auth/PasskeyAuthBasicUI.svelte.d.ts +9 -0
  9. package/.svelte-kit/__package__/auth/PasskeyAuthBasicUI.svelte.d.ts.map +1 -0
  10. package/.svelte-kit/__package__/auth/PassphraseAuth.svelte.d.ts +12 -0
  11. package/.svelte-kit/__package__/auth/PassphraseAuth.svelte.d.ts.map +1 -0
  12. package/.svelte-kit/__package__/auth/PassphraseAuth.svelte.js +30 -0
  13. package/.svelte-kit/__package__/auth/index.d.ts +4 -0
  14. package/.svelte-kit/__package__/auth/index.d.ts.map +1 -0
  15. package/.svelte-kit/__package__/auth/index.js +3 -0
  16. package/.svelte-kit/__package__/auth/useIsAuthenticated.svelte.d.ts +6 -0
  17. package/.svelte-kit/__package__/auth/useIsAuthenticated.svelte.d.ts.map +1 -0
  18. package/.svelte-kit/__package__/auth/useIsAuthenticated.svelte.js +22 -0
  19. package/.svelte-kit/__package__/index.d.ts +6 -0
  20. package/.svelte-kit/__package__/index.d.ts.map +1 -0
  21. package/.svelte-kit/__package__/index.js +5 -0
  22. package/.svelte-kit/__package__/jazz.class.svelte.d.ts +21 -0
  23. package/.svelte-kit/__package__/jazz.class.svelte.d.ts.map +1 -0
  24. package/.svelte-kit/__package__/jazz.class.svelte.js +117 -0
  25. package/.svelte-kit/__package__/jazz.svelte.d.ts +39 -0
  26. package/.svelte-kit/__package__/jazz.svelte.d.ts.map +1 -0
  27. package/.svelte-kit/__package__/jazz.svelte.js +70 -0
  28. package/.svelte-kit/__package__/testing.d.ts +10 -0
  29. package/.svelte-kit/__package__/testing.d.ts.map +1 -0
  30. package/.svelte-kit/__package__/testing.js +23 -0
  31. package/.turbo/turbo-build.log +180 -11
  32. package/CHANGELOG.md +21 -0
  33. package/README.md +2 -2
  34. package/dist/browser/BrowserContextManager.d.ts +31 -0
  35. package/dist/browser/BrowserContextManager.d.ts.map +1 -0
  36. package/dist/browser/auth/LocalStorageKVStore.d.ts +9 -0
  37. package/dist/browser/auth/LocalStorageKVStore.d.ts.map +1 -0
  38. package/dist/browser/auth/PasskeyAuth.d.ts +27 -0
  39. package/dist/browser/auth/PasskeyAuth.d.ts.map +1 -0
  40. package/dist/browser/createBrowserContext.d.ts +47 -0
  41. package/dist/browser/createBrowserContext.d.ts.map +1 -0
  42. package/dist/browser/index.d.ts +23 -0
  43. package/dist/browser/index.d.ts.map +1 -0
  44. package/dist/browser/index.js +469 -0
  45. package/dist/browser/index.js.map +1 -0
  46. package/dist/browser/storageOptions.d.ts +8 -0
  47. package/dist/browser/storageOptions.d.ts.map +1 -0
  48. package/dist/browser/tests/LocalStorageKVStore.test.d.ts +2 -0
  49. package/dist/browser/tests/LocalStorageKVStore.test.d.ts.map +1 -0
  50. package/dist/browser/tests/PasskeyAuth.test.d.ts +2 -0
  51. package/dist/browser/tests/PasskeyAuth.test.d.ts.map +1 -0
  52. package/dist/browser/tests/createInviteLink.test.d.ts +2 -0
  53. package/dist/browser/tests/createInviteLink.test.d.ts.map +1 -0
  54. package/dist/browser/tests/storageOptions.test.d.ts +2 -0
  55. package/dist/browser/tests/storageOptions.test.d.ts.map +1 -0
  56. package/dist/browser/tests/utils.d.ts +11 -0
  57. package/dist/browser/tests/utils.d.ts.map +1 -0
  58. package/dist/browser/utils/export-account-inspector.d.ts +6 -0
  59. package/dist/browser/utils/export-account-inspector.d.ts.map +1 -0
  60. package/dist/browser-media-images/index.d.ts +7 -0
  61. package/dist/browser-media-images/index.d.ts.map +1 -0
  62. package/dist/browser-media-images/index.js +70 -0
  63. package/dist/browser-media-images/index.js.map +1 -0
  64. package/dist/chunk-FSIM7N33.js +4827 -0
  65. package/dist/chunk-FSIM7N33.js.map +1 -0
  66. package/dist/expo/auth/clerk/index.d.ts +7 -0
  67. package/dist/expo/auth/clerk/index.d.ts.map +1 -0
  68. package/dist/expo/crypto.d.ts +2 -0
  69. package/dist/expo/crypto.d.ts.map +1 -0
  70. package/dist/expo/crypto.js +3 -0
  71. package/dist/expo/crypto.js.map +1 -0
  72. package/dist/expo/index.d.ts +6 -0
  73. package/dist/expo/index.d.ts.map +1 -0
  74. package/dist/expo/index.js +168 -0
  75. package/dist/expo/index.js.map +1 -0
  76. package/dist/expo/provider.d.ts +4 -0
  77. package/dist/expo/provider.d.ts.map +1 -0
  78. package/dist/expo/storage/expo-secure-store-adapter.d.ts +8 -0
  79. package/dist/expo/storage/expo-secure-store-adapter.d.ts.map +1 -0
  80. package/dist/expo/storage/expo-sqlite-adapter.d.ts +18 -0
  81. package/dist/expo/storage/expo-sqlite-adapter.d.ts.map +1 -0
  82. package/dist/expo/testing.d.ts +2 -0
  83. package/dist/expo/testing.d.ts.map +1 -0
  84. package/dist/expo/testing.js +3 -0
  85. package/dist/expo/testing.js.map +1 -0
  86. package/dist/index.d.ts +1 -2
  87. package/dist/index.d.ts.map +1 -1
  88. package/dist/index.js +172 -6
  89. package/dist/index.js.map +1 -1
  90. package/dist/inspector/custom-element-CWW72LEG.js +31971 -0
  91. package/dist/inspector/custom-element-CWW72LEG.js.map +1 -0
  92. package/dist/inspector/custom-element.d.ts +13 -0
  93. package/dist/inspector/custom-element.d.ts.map +1 -0
  94. package/dist/inspector/index.d.ts +12 -0
  95. package/dist/inspector/index.d.ts.map +1 -0
  96. package/dist/inspector/index.js +2027 -0
  97. package/dist/inspector/index.js.map +1 -0
  98. package/dist/inspector/register-custom-element.d.ts +2 -0
  99. package/dist/inspector/register-custom-element.d.ts.map +1 -0
  100. package/dist/inspector/register-custom-element.js +5 -0
  101. package/dist/inspector/register-custom-element.js.map +1 -0
  102. package/dist/inspector/ui/badge.d.ts +4 -0
  103. package/dist/inspector/ui/badge.d.ts.map +1 -0
  104. package/dist/inspector/ui/button.d.ts +9 -0
  105. package/dist/inspector/ui/button.d.ts.map +1 -0
  106. package/dist/inspector/ui/card.d.ts +10 -0
  107. package/dist/inspector/ui/card.d.ts.map +1 -0
  108. package/dist/inspector/ui/global-styles.d.ts +4 -0
  109. package/dist/inspector/ui/global-styles.d.ts.map +1 -0
  110. package/dist/inspector/ui/grid.d.ts +4 -0
  111. package/dist/inspector/ui/grid.d.ts.map +1 -0
  112. package/dist/inspector/ui/heading.d.ts +4 -0
  113. package/dist/inspector/ui/heading.d.ts.map +1 -0
  114. package/dist/inspector/ui/icon.d.ts +30 -0
  115. package/dist/inspector/ui/icon.d.ts.map +1 -0
  116. package/dist/inspector/ui/icons/chevron-down-icon.d.ts +2 -0
  117. package/dist/inspector/ui/icons/chevron-down-icon.d.ts.map +1 -0
  118. package/dist/inspector/ui/icons/delete-icon.d.ts +2 -0
  119. package/dist/inspector/ui/icons/delete-icon.d.ts.map +1 -0
  120. package/dist/inspector/ui/icons/link-icon.d.ts +2 -0
  121. package/dist/inspector/ui/icons/link-icon.d.ts.map +1 -0
  122. package/dist/inspector/ui/input.d.ts +11 -0
  123. package/dist/inspector/ui/input.d.ts.map +1 -0
  124. package/dist/inspector/ui/select.d.ts +5 -0
  125. package/dist/inspector/ui/select.d.ts.map +1 -0
  126. package/dist/inspector/ui/table.d.ts +8 -0
  127. package/dist/inspector/ui/table.d.ts.map +1 -0
  128. package/dist/inspector/ui/text.d.ts +10 -0
  129. package/dist/inspector/ui/text.d.ts.map +1 -0
  130. package/dist/inspector/viewer/account-or-group-text.d.ts +8 -0
  131. package/dist/inspector/viewer/account-or-group-text.d.ts.map +1 -0
  132. package/dist/inspector/viewer/account-view.d.ts +8 -0
  133. package/dist/inspector/viewer/account-view.d.ts.map +1 -0
  134. package/dist/inspector/viewer/breadcrumbs.d.ts +9 -0
  135. package/dist/inspector/viewer/breadcrumbs.d.ts.map +1 -0
  136. package/dist/inspector/viewer/co-stream-view.d.ts +18 -0
  137. package/dist/inspector/viewer/co-stream-view.d.ts.map +1 -0
  138. package/dist/inspector/viewer/grid-view.d.ts +9 -0
  139. package/dist/inspector/viewer/grid-view.d.ts.map +1 -0
  140. package/dist/inspector/viewer/group-view.d.ts +8 -0
  141. package/dist/inspector/viewer/group-view.d.ts.map +1 -0
  142. package/dist/inspector/viewer/inpsector-button.d.ts +6 -0
  143. package/dist/inspector/viewer/inpsector-button.d.ts.map +1 -0
  144. package/dist/inspector/viewer/new-app.d.ts +11 -0
  145. package/dist/inspector/viewer/new-app.d.ts.map +1 -0
  146. package/dist/inspector/viewer/page-stack.d.ts +15 -0
  147. package/dist/inspector/viewer/page-stack.d.ts.map +1 -0
  148. package/dist/inspector/viewer/page.d.ts +16 -0
  149. package/dist/inspector/viewer/page.d.ts.map +1 -0
  150. package/dist/inspector/viewer/raw-data-card.d.ts +5 -0
  151. package/dist/inspector/viewer/raw-data-card.d.ts.map +1 -0
  152. package/dist/inspector/viewer/role-display.d.ts +6 -0
  153. package/dist/inspector/viewer/role-display.d.ts.map +1 -0
  154. package/dist/inspector/viewer/table-viewer.d.ts +9 -0
  155. package/dist/inspector/viewer/table-viewer.d.ts.map +1 -0
  156. package/dist/inspector/viewer/type-icon.d.ts +11 -0
  157. package/dist/inspector/viewer/type-icon.d.ts.map +1 -0
  158. package/dist/inspector/viewer/types.d.ts +7 -0
  159. package/dist/inspector/viewer/types.d.ts.map +1 -0
  160. package/dist/inspector/viewer/use-page-path.d.ts +10 -0
  161. package/dist/inspector/viewer/use-page-path.d.ts.map +1 -0
  162. package/dist/inspector/viewer/use-resolve-covalue.d.ts +67 -0
  163. package/dist/inspector/viewer/use-resolve-covalue.d.ts.map +1 -0
  164. package/dist/inspector/viewer/value-renderer.d.ts +12 -0
  165. package/dist/inspector/viewer/value-renderer.d.ts.map +1 -0
  166. package/dist/prosemirror/index.d.ts +3 -0
  167. package/dist/prosemirror/index.d.ts.map +1 -0
  168. package/dist/prosemirror/index.js +2185 -0
  169. package/dist/prosemirror/index.js.map +1 -0
  170. package/dist/prosemirror/lib/converter.d.ts +33 -0
  171. package/dist/prosemirror/lib/converter.d.ts.map +1 -0
  172. package/dist/prosemirror/lib/plugin.d.ts +43 -0
  173. package/dist/prosemirror/lib/plugin.d.ts.map +1 -0
  174. package/dist/prosemirror/lib/sync.d.ts +35 -0
  175. package/dist/prosemirror/lib/sync.d.ts.map +1 -0
  176. package/dist/prosemirror/tests/plugin.test.d.ts +2 -0
  177. package/dist/prosemirror/tests/plugin.test.d.ts.map +1 -0
  178. package/dist/react/auth/Clerk.d.ts +7 -0
  179. package/dist/react/auth/Clerk.d.ts.map +1 -0
  180. package/dist/react/auth/DemoAuth.d.ts +5 -0
  181. package/dist/react/auth/DemoAuth.d.ts.map +1 -0
  182. package/dist/react/auth/PasskeyAuth.d.ts +24 -0
  183. package/dist/react/auth/PasskeyAuth.d.ts.map +1 -0
  184. package/dist/react/auth/PassphraseAuth.d.ts +6 -0
  185. package/dist/react/auth/PassphraseAuth.d.ts.map +1 -0
  186. package/dist/react/auth/auth.d.ts +6 -0
  187. package/dist/react/auth/auth.d.ts.map +1 -0
  188. package/dist/react/hooks.d.ts +9 -0
  189. package/dist/react/hooks.d.ts.map +1 -0
  190. package/dist/react/index.d.ts +8 -0
  191. package/dist/react/index.d.ts.map +1 -0
  192. package/dist/react/index.js +700 -0
  193. package/dist/react/index.js.map +1 -0
  194. package/dist/react/media.d.ts +24 -0
  195. package/dist/react/media.d.ts.map +1 -0
  196. package/dist/react/provider.d.ts +10 -0
  197. package/dist/react/provider.d.ts.map +1 -0
  198. package/dist/react/ssr.d.ts +4 -0
  199. package/dist/react/ssr.d.ts.map +1 -0
  200. package/dist/react/ssr.js +25 -0
  201. package/dist/react/ssr.js.map +1 -0
  202. package/dist/react/testing.d.ts +2 -0
  203. package/dist/react/testing.d.ts.map +1 -0
  204. package/dist/react/testing.js +5 -0
  205. package/dist/react/testing.js.map +1 -0
  206. package/dist/react/tests/testUtils.d.ts +14 -0
  207. package/dist/react/tests/testUtils.d.ts.map +1 -0
  208. package/dist/react/tests/useAcceptInvite.test.d.ts +2 -0
  209. package/dist/react/tests/useAcceptInvite.test.d.ts.map +1 -0
  210. package/dist/react-core/auth/DemoAuth.d.ts +17 -0
  211. package/dist/react-core/auth/DemoAuth.d.ts.map +1 -0
  212. package/dist/react-core/auth/PassphraseAuth.d.ts +21 -0
  213. package/dist/react-core/auth/PassphraseAuth.d.ts.map +1 -0
  214. package/dist/react-core/auth/index.d.ts +3 -0
  215. package/dist/react-core/auth/index.d.ts.map +1 -0
  216. package/dist/react-core/chunk-7DYMJ74I.js +12 -0
  217. package/dist/react-core/chunk-7DYMJ74I.js.map +1 -0
  218. package/dist/react-core/hooks.d.ts +17 -0
  219. package/dist/react-core/hooks.d.ts.map +1 -0
  220. package/dist/react-core/index.d.ts +4 -0
  221. package/dist/react-core/index.d.ts.map +1 -0
  222. package/dist/react-core/index.js +302 -0
  223. package/dist/react-core/index.js.map +1 -0
  224. package/dist/react-core/provider.d.ts +5 -0
  225. package/dist/react-core/provider.d.ts.map +1 -0
  226. package/dist/react-core/testing.d.ts +10 -0
  227. package/dist/react-core/testing.d.ts.map +1 -0
  228. package/dist/react-core/testing.js +43 -0
  229. package/dist/react-core/testing.js.map +1 -0
  230. package/dist/react-core/tests/fixtures.d.ts.map +1 -0
  231. package/dist/react-core/tests/testUtils.d.ts +15 -0
  232. package/dist/react-core/tests/testUtils.d.ts.map +1 -0
  233. package/dist/react-core/tests/useAccount.test.d.ts +2 -0
  234. package/dist/react-core/tests/useAccount.test.d.ts.map +1 -0
  235. package/dist/react-core/tests/useCoState.test.d.ts +2 -0
  236. package/dist/react-core/tests/useCoState.test.d.ts.map +1 -0
  237. package/dist/react-core/tests/useInboxSender.test.d.ts +2 -0
  238. package/dist/react-core/tests/useInboxSender.test.d.ts.map +1 -0
  239. package/dist/react-core/tests/useIsAuthenticated.test.d.ts +2 -0
  240. package/dist/react-core/tests/useIsAuthenticated.test.d.ts.map +1 -0
  241. package/dist/react-core/tests/usePassPhraseAuth.test.d.ts +2 -0
  242. package/dist/react-core/tests/usePassPhraseAuth.test.d.ts.map +1 -0
  243. package/dist/react-core/utils.d.ts +4 -0
  244. package/dist/react-core/utils.d.ts.map +1 -0
  245. package/dist/react-native/crypto.d.ts +2 -0
  246. package/dist/react-native/crypto.d.ts.map +1 -0
  247. package/dist/react-native/crypto.js +3 -0
  248. package/dist/react-native/crypto.js.map +1 -0
  249. package/dist/react-native/index.d.ts +5 -0
  250. package/dist/react-native/index.d.ts.map +1 -0
  251. package/dist/react-native/index.js +103 -0
  252. package/dist/react-native/index.js.map +1 -0
  253. package/dist/react-native/provider.d.ts +4 -0
  254. package/dist/react-native/provider.d.ts.map +1 -0
  255. package/dist/react-native/storage/mmkv-store-adapter.d.ts +8 -0
  256. package/dist/react-native/storage/mmkv-store-adapter.d.ts.map +1 -0
  257. package/dist/react-native/storage/op-sqlite-adapter.d.ts +13 -0
  258. package/dist/react-native/storage/op-sqlite-adapter.d.ts.map +1 -0
  259. package/dist/react-native/testing.d.ts +2 -0
  260. package/dist/react-native/testing.d.ts.map +1 -0
  261. package/dist/react-native/testing.js +3 -0
  262. package/dist/react-native/testing.js.map +1 -0
  263. package/dist/react-native-core/ReactNativeContextManager.d.ts +31 -0
  264. package/dist/react-native-core/ReactNativeContextManager.d.ts.map +1 -0
  265. package/dist/react-native-core/auth/DemoAuthUI.d.ts +8 -0
  266. package/dist/react-native-core/auth/DemoAuthUI.d.ts.map +1 -0
  267. package/dist/react-native-core/auth/auth.d.ts +3 -0
  268. package/dist/react-native-core/auth/auth.d.ts.map +1 -0
  269. package/dist/react-native-core/crypto/RNQuickCrypto.d.ts +15 -0
  270. package/dist/react-native-core/crypto/RNQuickCrypto.d.ts.map +1 -0
  271. package/dist/react-native-core/crypto/index.d.ts +2 -0
  272. package/dist/react-native-core/crypto/index.d.ts.map +1 -0
  273. package/dist/react-native-core/crypto.js +65 -0
  274. package/dist/react-native-core/crypto.js.map +1 -0
  275. package/dist/react-native-core/hooks.d.ts +8 -0
  276. package/dist/react-native-core/hooks.d.ts.map +1 -0
  277. package/dist/react-native-core/index.d.ts +9 -0
  278. package/dist/react-native-core/index.d.ts.map +1 -0
  279. package/dist/react-native-core/index.js +669 -0
  280. package/dist/react-native-core/index.js.map +1 -0
  281. package/dist/react-native-core/media.d.ts +24 -0
  282. package/dist/react-native-core/media.d.ts.map +1 -0
  283. package/dist/react-native-core/platform.d.ts +45 -0
  284. package/dist/react-native-core/platform.d.ts.map +1 -0
  285. package/dist/react-native-core/provider.d.ts +10 -0
  286. package/dist/react-native-core/provider.d.ts.map +1 -0
  287. package/dist/react-native-core/storage/kv-store-context.d.ts +17 -0
  288. package/dist/react-native-core/storage/kv-store-context.d.ts.map +1 -0
  289. package/dist/react-native-core/storage/sqlite-react-native.d.ts +9 -0
  290. package/dist/react-native-core/storage/sqlite-react-native.d.ts.map +1 -0
  291. package/dist/react-native-core/testing.js +3 -0
  292. package/dist/react-native-core/testing.js.map +1 -0
  293. package/dist/react-native-media-images/index.d.ts +7 -0
  294. package/dist/react-native-media-images/index.d.ts.map +1 -0
  295. package/dist/react-native-media-images/index.js +177 -0
  296. package/dist/react-native-media-images/index.js.map +1 -0
  297. package/dist/svelte/Provider.svelte +61 -0
  298. package/dist/svelte/Provider.svelte.d.ts +19 -0
  299. package/dist/svelte/Provider.svelte.d.ts.map +1 -0
  300. package/dist/svelte/auth/PasskeyAuth.svelte.d.ts +11 -0
  301. package/dist/svelte/auth/PasskeyAuth.svelte.d.ts.map +1 -0
  302. package/dist/svelte/auth/PasskeyAuth.svelte.js +20 -0
  303. package/dist/svelte/auth/PasskeyAuthBasicUI.svelte +81 -0
  304. package/dist/svelte/auth/PasskeyAuthBasicUI.svelte.d.ts +9 -0
  305. package/dist/svelte/auth/PasskeyAuthBasicUI.svelte.d.ts.map +1 -0
  306. package/dist/svelte/auth/PassphraseAuth.svelte.d.ts +12 -0
  307. package/dist/svelte/auth/PassphraseAuth.svelte.d.ts.map +1 -0
  308. package/dist/svelte/auth/PassphraseAuth.svelte.js +30 -0
  309. package/dist/svelte/auth/index.d.ts +4 -0
  310. package/dist/svelte/auth/index.d.ts.map +1 -0
  311. package/dist/svelte/auth/index.js +3 -0
  312. package/dist/svelte/auth/useIsAuthenticated.svelte.d.ts +6 -0
  313. package/dist/svelte/auth/useIsAuthenticated.svelte.d.ts.map +1 -0
  314. package/dist/svelte/auth/useIsAuthenticated.svelte.js +22 -0
  315. package/dist/svelte/index.d.ts +6 -0
  316. package/dist/svelte/index.d.ts.map +1 -0
  317. package/dist/svelte/index.js +5 -0
  318. package/dist/svelte/jazz.class.svelte.d.ts +21 -0
  319. package/dist/svelte/jazz.class.svelte.d.ts.map +1 -0
  320. package/dist/svelte/jazz.class.svelte.js +117 -0
  321. package/dist/svelte/jazz.svelte.d.ts +39 -0
  322. package/dist/svelte/jazz.svelte.d.ts.map +1 -0
  323. package/dist/svelte/jazz.svelte.js +70 -0
  324. package/dist/svelte/testing.d.ts +10 -0
  325. package/dist/svelte/testing.d.ts.map +1 -0
  326. package/dist/svelte/testing.js +23 -0
  327. package/dist/testing.d.ts +1 -42
  328. package/dist/testing.d.ts.map +1 -1
  329. package/dist/testing.js +2 -2
  330. package/dist/testing.js.map +1 -1
  331. package/dist/tiptap/index.d.ts +11 -0
  332. package/dist/tiptap/index.d.ts.map +1 -0
  333. package/dist/tiptap/index.js +22 -0
  334. package/dist/tiptap/index.js.map +1 -0
  335. package/dist/tools/auth/AuthSecretStorage.d.ts.map +1 -0
  336. package/dist/tools/auth/DemoAuth.d.ts.map +1 -0
  337. package/dist/tools/auth/InMemoryKVStore.d.ts.map +1 -0
  338. package/dist/tools/auth/KvStoreContext.d.ts.map +1 -0
  339. package/dist/tools/auth/PassphraseAuth.d.ts.map +1 -0
  340. package/dist/tools/auth/clerk/getClerkUsername.d.ts +3 -0
  341. package/dist/tools/auth/clerk/getClerkUsername.d.ts.map +1 -0
  342. package/dist/tools/auth/clerk/index.d.ts +25 -0
  343. package/dist/tools/auth/clerk/index.d.ts.map +1 -0
  344. package/dist/tools/auth/clerk/tests/JazzClerkAuth.test.d.ts +2 -0
  345. package/dist/tools/auth/clerk/tests/JazzClerkAuth.test.d.ts.map +1 -0
  346. package/dist/tools/auth/clerk/tests/getClerkUsername.test.d.ts +2 -0
  347. package/dist/tools/auth/clerk/tests/getClerkUsername.test.d.ts.map +1 -0
  348. package/dist/tools/auth/clerk/tests/types.test.d.ts +2 -0
  349. package/dist/tools/auth/clerk/tests/types.test.d.ts.map +1 -0
  350. package/dist/tools/auth/clerk/types.d.ts +32 -0
  351. package/dist/tools/auth/clerk/types.d.ts.map +1 -0
  352. package/dist/tools/coValues/CoValueBase.d.ts.map +1 -0
  353. package/dist/tools/coValues/account.d.ts.map +1 -0
  354. package/dist/tools/coValues/coFeed.d.ts +368 -0
  355. package/dist/tools/coValues/coFeed.d.ts.map +1 -0
  356. package/dist/tools/coValues/coList.d.ts.map +1 -0
  357. package/dist/tools/coValues/coMap.d.ts.map +1 -0
  358. package/dist/tools/coValues/coPlainText.d.ts.map +1 -0
  359. package/dist/tools/coValues/coRichText.d.ts.map +1 -0
  360. package/dist/tools/coValues/deepLoading.d.ts.map +1 -0
  361. package/dist/tools/coValues/extensions/imageDef.d.ts.map +1 -0
  362. package/dist/tools/coValues/group.d.ts.map +1 -0
  363. package/dist/tools/coValues/inbox.d.ts.map +1 -0
  364. package/dist/tools/coValues/interfaces.d.ts.map +1 -0
  365. package/dist/tools/coValues/profile.d.ts.map +1 -0
  366. package/dist/tools/coValues/registeredSchemas.d.ts.map +1 -0
  367. package/dist/tools/coValues/schemaUnion.d.ts.map +1 -0
  368. package/dist/tools/exports.d.ts +24 -0
  369. package/dist/tools/exports.d.ts.map +1 -0
  370. package/dist/tools/implementation/ContextManager.d.ts.map +1 -0
  371. package/dist/tools/implementation/activeAccountContext.d.ts.map +1 -0
  372. package/dist/tools/implementation/anonymousJazzAgent.d.ts.map +1 -0
  373. package/dist/tools/implementation/createContext.d.ts.map +1 -0
  374. package/dist/tools/implementation/devtoolsFormatters.d.ts.map +1 -0
  375. package/dist/tools/implementation/errors.d.ts.map +1 -0
  376. package/dist/tools/implementation/inspect.d.ts.map +1 -0
  377. package/dist/tools/implementation/invites.d.ts.map +1 -0
  378. package/dist/tools/implementation/refs.d.ts.map +1 -0
  379. package/dist/tools/implementation/schema.d.ts.map +1 -0
  380. package/dist/tools/implementation/symbols.d.ts.map +1 -0
  381. package/dist/tools/implementation/zodSchema/coExport.d.ts.map +1 -0
  382. package/dist/tools/implementation/zodSchema/runtimeConverters/zodFieldToCoFieldDef.d.ts.map +1 -0
  383. package/dist/tools/implementation/zodSchema/runtimeConverters/zodSchemaToCoSchema.d.ts.map +1 -0
  384. package/dist/tools/implementation/zodSchema/schemaTypes/AccountSchema.d.ts.map +1 -0
  385. package/dist/tools/implementation/zodSchema/schemaTypes/CoFeedSchema.d.ts.map +1 -0
  386. package/dist/tools/implementation/zodSchema/schemaTypes/CoListSchema.d.ts.map +1 -0
  387. package/dist/tools/implementation/zodSchema/schemaTypes/CoMapSchema.d.ts.map +1 -0
  388. package/dist/tools/implementation/zodSchema/schemaTypes/CoRecordSchema.d.ts.map +1 -0
  389. package/dist/tools/implementation/zodSchema/schemaTypes/FileStreamSchema.d.ts.map +1 -0
  390. package/dist/tools/implementation/zodSchema/schemaTypes/PlainTextSchema.d.ts.map +1 -0
  391. package/dist/tools/implementation/zodSchema/schemaTypes/RichTextSchema.d.ts.map +1 -0
  392. package/dist/tools/implementation/zodSchema/typeConverters/InstanceOfSchema.d.ts.map +1 -0
  393. package/dist/tools/implementation/zodSchema/typeConverters/InstanceOfSchemaCoValuesNullable.d.ts.map +1 -0
  394. package/dist/tools/implementation/zodSchema/typeConverters/InstanceOrPrimitiveOfSchema.d.ts.map +1 -0
  395. package/dist/tools/implementation/zodSchema/typeConverters/InstanceOrPrimitiveOfSchemaCoValuesNullable.d.ts.map +1 -0
  396. package/dist/tools/implementation/zodSchema/unionUtils.d.ts.map +1 -0
  397. package/dist/tools/implementation/zodSchema/zodCo.d.ts.map +1 -0
  398. package/dist/tools/implementation/zodSchema/zodReExport.d.ts.map +1 -0
  399. package/dist/tools/implementation/zodSchema/zodSchema.d.ts.map +1 -0
  400. package/dist/tools/index.d.ts +3 -0
  401. package/dist/tools/index.d.ts.map +1 -0
  402. package/dist/tools/internal.d.ts.map +1 -0
  403. package/dist/tools/lib/cache.d.ts.map +1 -0
  404. package/dist/tools/lib/cache.test.d.ts.map +1 -0
  405. package/dist/tools/lib/migration.d.ts.map +1 -0
  406. package/dist/tools/subscribe/CoValueCoreSubscription.d.ts.map +1 -0
  407. package/dist/tools/subscribe/JazzError.d.ts.map +1 -0
  408. package/dist/tools/subscribe/SubscriptionScope.d.ts.map +1 -0
  409. package/dist/tools/subscribe/index.d.ts.map +1 -0
  410. package/dist/tools/subscribe/types.d.ts.map +1 -0
  411. package/dist/tools/subscribe/utils.d.ts.map +1 -0
  412. package/dist/tools/testing.d.ts +43 -0
  413. package/dist/tools/testing.d.ts.map +1 -0
  414. package/dist/tools/tests/AuthSecretStorage.test.d.ts.map +1 -0
  415. package/dist/tools/tests/ContextManager.test.d.ts.map +1 -0
  416. package/dist/tools/tests/DemoAuth.test.d.ts.map +1 -0
  417. package/dist/tools/tests/PassphraseAuth.test.d.ts.map +1 -0
  418. package/dist/tools/tests/account.test.d.ts.map +1 -0
  419. package/dist/tools/tests/coFeed.test-d.d.ts.map +1 -0
  420. package/dist/tools/tests/coFeed.test.d.ts.map +1 -0
  421. package/dist/tools/tests/coList.test-d.d.ts.map +1 -0
  422. package/dist/tools/tests/coList.test.d.ts.map +1 -0
  423. package/dist/tools/tests/coMap.record.test-d.d.ts.map +1 -0
  424. package/dist/tools/tests/coMap.record.test.d.ts.map +1 -0
  425. package/dist/tools/tests/coMap.test-d.d.ts.map +1 -0
  426. package/dist/tools/tests/coMap.test.d.ts.map +1 -0
  427. package/dist/tools/tests/coPlainText.test.d.ts.map +1 -0
  428. package/dist/tools/tests/createContext.test.d.ts.map +1 -0
  429. package/dist/tools/tests/deepLoading.test.d.ts.map +1 -0
  430. package/dist/tools/tests/fixtures.d.ts +2 -0
  431. package/dist/tools/tests/fixtures.d.ts.map +1 -0
  432. package/dist/tools/tests/groupsAndAccounts.test.d.ts.map +1 -0
  433. package/dist/tools/tests/imageDef.test.d.ts.map +1 -0
  434. package/dist/tools/tests/inbox.test.d.ts.map +1 -0
  435. package/dist/tools/tests/interfaces.test.d.ts.map +1 -0
  436. package/dist/tools/tests/invites.test.d.ts.map +1 -0
  437. package/dist/tools/tests/load.test.d.ts.map +1 -0
  438. package/dist/tools/tests/patterns/notifications.test.d.ts.map +1 -0
  439. package/dist/tools/tests/patterns/requestToJoin.test.d.ts.map +1 -0
  440. package/dist/tools/tests/schema.test.d.ts.map +1 -0
  441. package/dist/tools/tests/schemaUnion.test.d.ts.map +1 -0
  442. package/dist/tools/tests/subscribe.test.d.ts.map +1 -0
  443. package/dist/tools/tests/testing.test.d.ts.map +1 -0
  444. package/dist/tools/tests/utils.d.ts.map +1 -0
  445. package/dist/tools/tests/zod.test.d.ts.map +1 -0
  446. package/dist/tools/types.d.ts.map +1 -0
  447. package/dist/worker/index.d.ts +25 -0
  448. package/dist/worker/index.d.ts.map +1 -0
  449. package/dist/worker/index.js +93 -0
  450. package/dist/worker/index.js.map +1 -0
  451. package/package.json +193 -11
  452. package/src/browser/BrowserContextManager.ts +85 -0
  453. package/src/browser/auth/LocalStorageKVStore.ts +21 -0
  454. package/src/browser/auth/PasskeyAuth.ts +175 -0
  455. package/src/browser/createBrowserContext.ts +326 -0
  456. package/src/browser/index.ts +72 -0
  457. package/src/browser/storageOptions.ts +17 -0
  458. package/src/browser/tests/LocalStorageKVStore.test.ts +67 -0
  459. package/src/browser/tests/PasskeyAuth.test.ts +242 -0
  460. package/src/browser/tests/createInviteLink.test.ts +18 -0
  461. package/src/browser/tests/storageOptions.test.ts +33 -0
  462. package/src/browser/tests/utils.ts +93 -0
  463. package/src/browser/utils/export-account-inspector.ts +58 -0
  464. package/src/browser-media-images/index.ts +130 -0
  465. package/src/expo/auth/clerk/README.md +44 -0
  466. package/src/expo/auth/clerk/index.tsx +80 -0
  467. package/src/expo/crypto.ts +1 -0
  468. package/src/expo/index.ts +6 -0
  469. package/src/expo/provider.tsx +29 -0
  470. package/src/expo/storage/expo-secure-store-adapter.ts +29 -0
  471. package/src/expo/storage/expo-sqlite-adapter.ts +94 -0
  472. package/src/expo/testing.ts +1 -0
  473. package/src/index.ts +1 -3
  474. package/src/inspector/custom-element.tsx +63 -0
  475. package/src/inspector/index.ts +23 -0
  476. package/src/inspector/register-custom-element.ts +3 -0
  477. package/src/inspector/ui/badge.tsx +20 -0
  478. package/src/inspector/ui/button.tsx +81 -0
  479. package/src/inspector/ui/card.tsx +23 -0
  480. package/src/inspector/ui/global-styles.tsx +74 -0
  481. package/src/inspector/ui/grid.tsx +48 -0
  482. package/src/inspector/ui/heading.tsx +15 -0
  483. package/src/inspector/ui/icon.tsx +71 -0
  484. package/src/inspector/ui/icons/chevron-down-icon.tsx +16 -0
  485. package/src/inspector/ui/icons/delete-icon.tsx +19 -0
  486. package/src/inspector/ui/icons/link-icon.tsx +18 -0
  487. package/src/inspector/ui/input.tsx +51 -0
  488. package/src/inspector/ui/select.tsx +73 -0
  489. package/src/inspector/ui/table.tsx +90 -0
  490. package/src/inspector/ui/text.tsx +62 -0
  491. package/src/inspector/viewer/account-or-group-text.tsx +52 -0
  492. package/src/inspector/viewer/account-view.tsx +34 -0
  493. package/src/inspector/viewer/breadcrumbs.tsx +52 -0
  494. package/src/inspector/viewer/co-stream-view.tsx +374 -0
  495. package/src/inspector/viewer/grid-view.tsx +90 -0
  496. package/src/inspector/viewer/group-view.tsx +67 -0
  497. package/src/inspector/viewer/inpsector-button.tsx +89 -0
  498. package/src/inspector/viewer/new-app.tsx +171 -0
  499. package/src/inspector/viewer/page-stack.tsx +56 -0
  500. package/src/inspector/viewer/page.tsx +199 -0
  501. package/src/inspector/viewer/raw-data-card.tsx +53 -0
  502. package/src/inspector/viewer/role-display.tsx +28 -0
  503. package/src/inspector/viewer/table-viewer.tsx +184 -0
  504. package/src/inspector/viewer/type-icon.tsx +63 -0
  505. package/src/inspector/viewer/types.ts +11 -0
  506. package/src/inspector/viewer/use-page-path.ts +52 -0
  507. package/src/inspector/viewer/use-resolve-covalue.ts +214 -0
  508. package/src/inspector/viewer/value-renderer.tsx +266 -0
  509. package/src/prosemirror/index.ts +2 -0
  510. package/src/prosemirror/lib/converter.ts +50 -0
  511. package/src/prosemirror/lib/plugin.ts +120 -0
  512. package/src/prosemirror/lib/sync.ts +96 -0
  513. package/src/prosemirror/tests/plugin.test.ts +127 -0
  514. package/src/react/auth/Clerk.tsx +82 -0
  515. package/src/react/auth/DemoAuth.tsx +121 -0
  516. package/src/react/auth/PasskeyAuth.tsx +168 -0
  517. package/src/react/auth/PassphraseAuth.tsx +196 -0
  518. package/src/react/auth/auth.ts +9 -0
  519. package/src/react/hooks.tsx +53 -0
  520. package/src/react/index.ts +16 -0
  521. package/src/react/media.tsx +74 -0
  522. package/src/react/provider.tsx +114 -0
  523. package/src/react/scratch.tsx +50 -0
  524. package/src/react/ssr.ts +25 -0
  525. package/src/react/testing.tsx +1 -0
  526. package/src/react/tests/testUtils.tsx +54 -0
  527. package/src/react/tests/useAcceptInvite.test.ts +55 -0
  528. package/src/react-core/auth/DemoAuth.tsx +47 -0
  529. package/src/react-core/auth/PassphraseAuth.tsx +58 -0
  530. package/src/react-core/auth/index.ts +2 -0
  531. package/src/react-core/hooks.ts +310 -0
  532. package/src/react-core/index.ts +3 -0
  533. package/src/react-core/provider.tsx +11 -0
  534. package/src/react-core/testing.tsx +42 -0
  535. package/src/react-core/tests/testUtils.tsx +65 -0
  536. package/src/react-core/tests/useAccount.test.ts +238 -0
  537. package/src/react-core/tests/useCoState.test.ts +553 -0
  538. package/src/react-core/tests/useDemoAuth.test.tsx +84 -0
  539. package/src/react-core/tests/useInboxSender.test.ts +58 -0
  540. package/src/react-core/tests/useIsAuthenticated.test.ts +34 -0
  541. package/src/react-core/tests/usePassPhraseAuth.test.ts +180 -0
  542. package/src/react-core/utils.ts +28 -0
  543. package/src/react-native/crypto.ts +1 -0
  544. package/src/react-native/index.ts +5 -0
  545. package/src/react-native/provider.tsx +30 -0
  546. package/src/react-native/storage/mmkv-store-adapter.ts +24 -0
  547. package/src/react-native/storage/op-sqlite-adapter.ts +79 -0
  548. package/src/react-native/testing.ts +1 -0
  549. package/src/react-native-core/ReactNativeContextManager.ts +84 -0
  550. package/src/react-native-core/auth/DemoAuthUI.tsx +202 -0
  551. package/src/react-native-core/auth/auth.ts +14 -0
  552. package/src/react-native-core/crypto/RNQuickCrypto.ts +92 -0
  553. package/src/react-native-core/crypto/index.ts +1 -0
  554. package/src/react-native-core/hooks.tsx +64 -0
  555. package/src/react-native-core/index.ts +9 -0
  556. package/src/react-native-core/media.tsx +99 -0
  557. package/src/react-native-core/platform.ts +250 -0
  558. package/src/react-native-core/provider.tsx +115 -0
  559. package/src/react-native-core/storage/sqlite-react-native.ts +19 -0
  560. package/src/react-native-core/testing.tsx +1 -0
  561. package/src/react-native-media-images/index.ts +238 -0
  562. package/src/svelte/Provider.svelte +61 -0
  563. package/src/svelte/auth/PasskeyAuth.svelte.ts +42 -0
  564. package/src/svelte/auth/PasskeyAuthBasicUI.svelte +81 -0
  565. package/src/svelte/auth/PassphraseAuth.svelte.ts +49 -0
  566. package/src/svelte/auth/index.ts +3 -0
  567. package/src/svelte/auth/useIsAuthenticated.svelte.ts +28 -0
  568. package/src/svelte/index.ts +5 -0
  569. package/src/svelte/jazz.class.svelte.ts +172 -0
  570. package/src/svelte/jazz.svelte.ts +109 -0
  571. package/src/svelte/testing.ts +42 -0
  572. package/src/testing.ts +1 -312
  573. package/src/tiptap/index.ts +28 -0
  574. package/src/tools/auth/KvStoreContext.ts +39 -0
  575. package/src/tools/auth/clerk/getClerkUsername.ts +36 -0
  576. package/src/tools/auth/clerk/index.ts +174 -0
  577. package/src/tools/auth/clerk/tests/JazzClerkAuth.test.ts +284 -0
  578. package/src/tools/auth/clerk/tests/getClerkUsername.test.ts +81 -0
  579. package/src/tools/auth/clerk/tests/types.test.ts +49 -0
  580. package/src/tools/auth/clerk/types.ts +56 -0
  581. package/src/tools/coValues/coFeed.ts +943 -0
  582. package/src/tools/exports.ts +117 -0
  583. package/src/tools/index.ts +8 -0
  584. package/src/tools/testing.ts +301 -0
  585. package/src/tools/tests/coFeed.test.ts +771 -0
  586. package/src/tools/tests/fixtures.ts +2050 -0
  587. package/src/worker/index.ts +127 -0
  588. package/tsconfig.json +10 -3
  589. package/tsconfig.svelte.json +6 -0
  590. package/tsup.config.ts +143 -9
  591. package/dist/auth/AuthSecretStorage.d.ts.map +0 -1
  592. package/dist/auth/DemoAuth.d.ts.map +0 -1
  593. package/dist/auth/InMemoryKVStore.d.ts.map +0 -1
  594. package/dist/auth/KvStoreContext.d.ts.map +0 -1
  595. package/dist/auth/PassphraseAuth.d.ts.map +0 -1
  596. package/dist/chunk-G3QC4FAY.js +0 -4826
  597. package/dist/chunk-G3QC4FAY.js.map +0 -1
  598. package/dist/coValues/CoValueBase.d.ts.map +0 -1
  599. package/dist/coValues/account.d.ts.map +0 -1
  600. package/dist/coValues/coFeed.d.ts +0 -367
  601. package/dist/coValues/coFeed.d.ts.map +0 -1
  602. package/dist/coValues/coList.d.ts.map +0 -1
  603. package/dist/coValues/coMap.d.ts.map +0 -1
  604. package/dist/coValues/coPlainText.d.ts.map +0 -1
  605. package/dist/coValues/coRichText.d.ts.map +0 -1
  606. package/dist/coValues/deepLoading.d.ts.map +0 -1
  607. package/dist/coValues/extensions/imageDef.d.ts.map +0 -1
  608. package/dist/coValues/group.d.ts.map +0 -1
  609. package/dist/coValues/inbox.d.ts.map +0 -1
  610. package/dist/coValues/interfaces.d.ts.map +0 -1
  611. package/dist/coValues/profile.d.ts.map +0 -1
  612. package/dist/coValues/registeredSchemas.d.ts.map +0 -1
  613. package/dist/coValues/schemaUnion.d.ts.map +0 -1
  614. package/dist/exports.d.ts +0 -23
  615. package/dist/exports.d.ts.map +0 -1
  616. package/dist/implementation/ContextManager.d.ts.map +0 -1
  617. package/dist/implementation/activeAccountContext.d.ts.map +0 -1
  618. package/dist/implementation/anonymousJazzAgent.d.ts.map +0 -1
  619. package/dist/implementation/createContext.d.ts.map +0 -1
  620. package/dist/implementation/devtoolsFormatters.d.ts.map +0 -1
  621. package/dist/implementation/errors.d.ts.map +0 -1
  622. package/dist/implementation/inspect.d.ts.map +0 -1
  623. package/dist/implementation/invites.d.ts.map +0 -1
  624. package/dist/implementation/refs.d.ts.map +0 -1
  625. package/dist/implementation/schema.d.ts.map +0 -1
  626. package/dist/implementation/symbols.d.ts.map +0 -1
  627. package/dist/implementation/zodSchema/coExport.d.ts.map +0 -1
  628. package/dist/implementation/zodSchema/runtimeConverters/zodFieldToCoFieldDef.d.ts.map +0 -1
  629. package/dist/implementation/zodSchema/runtimeConverters/zodSchemaToCoSchema.d.ts.map +0 -1
  630. package/dist/implementation/zodSchema/schemaTypes/AccountSchema.d.ts.map +0 -1
  631. package/dist/implementation/zodSchema/schemaTypes/CoFeedSchema.d.ts.map +0 -1
  632. package/dist/implementation/zodSchema/schemaTypes/CoListSchema.d.ts.map +0 -1
  633. package/dist/implementation/zodSchema/schemaTypes/CoMapSchema.d.ts.map +0 -1
  634. package/dist/implementation/zodSchema/schemaTypes/CoRecordSchema.d.ts.map +0 -1
  635. package/dist/implementation/zodSchema/schemaTypes/FileStreamSchema.d.ts.map +0 -1
  636. package/dist/implementation/zodSchema/schemaTypes/PlainTextSchema.d.ts.map +0 -1
  637. package/dist/implementation/zodSchema/schemaTypes/RichTextSchema.d.ts.map +0 -1
  638. package/dist/implementation/zodSchema/typeConverters/InstanceOfSchema.d.ts.map +0 -1
  639. package/dist/implementation/zodSchema/typeConverters/InstanceOfSchemaCoValuesNullable.d.ts.map +0 -1
  640. package/dist/implementation/zodSchema/typeConverters/InstanceOrPrimitiveOfSchema.d.ts.map +0 -1
  641. package/dist/implementation/zodSchema/typeConverters/InstanceOrPrimitiveOfSchemaCoValuesNullable.d.ts.map +0 -1
  642. package/dist/implementation/zodSchema/unionUtils.d.ts.map +0 -1
  643. package/dist/implementation/zodSchema/zodCo.d.ts.map +0 -1
  644. package/dist/implementation/zodSchema/zodReExport.d.ts.map +0 -1
  645. package/dist/implementation/zodSchema/zodSchema.d.ts.map +0 -1
  646. package/dist/internal.d.ts.map +0 -1
  647. package/dist/lib/cache.d.ts.map +0 -1
  648. package/dist/lib/cache.test.d.ts.map +0 -1
  649. package/dist/lib/migration.d.ts.map +0 -1
  650. package/dist/subscribe/CoValueCoreSubscription.d.ts.map +0 -1
  651. package/dist/subscribe/JazzError.d.ts.map +0 -1
  652. package/dist/subscribe/SubscriptionScope.d.ts.map +0 -1
  653. package/dist/subscribe/index.d.ts.map +0 -1
  654. package/dist/subscribe/types.d.ts.map +0 -1
  655. package/dist/subscribe/utils.d.ts.map +0 -1
  656. package/dist/tests/AuthSecretStorage.test.d.ts.map +0 -1
  657. package/dist/tests/ContextManager.test.d.ts.map +0 -1
  658. package/dist/tests/DemoAuth.test.d.ts.map +0 -1
  659. package/dist/tests/PassphraseAuth.test.d.ts.map +0 -1
  660. package/dist/tests/account.test.d.ts.map +0 -1
  661. package/dist/tests/coFeed.test-d.d.ts.map +0 -1
  662. package/dist/tests/coFeed.test.d.ts.map +0 -1
  663. package/dist/tests/coList.test-d.d.ts.map +0 -1
  664. package/dist/tests/coList.test.d.ts.map +0 -1
  665. package/dist/tests/coMap.record.test-d.d.ts.map +0 -1
  666. package/dist/tests/coMap.record.test.d.ts.map +0 -1
  667. package/dist/tests/coMap.test-d.d.ts.map +0 -1
  668. package/dist/tests/coMap.test.d.ts.map +0 -1
  669. package/dist/tests/coPlainText.test.d.ts.map +0 -1
  670. package/dist/tests/createContext.test.d.ts.map +0 -1
  671. package/dist/tests/deepLoading.test.d.ts.map +0 -1
  672. package/dist/tests/fixtures.d.ts.map +0 -1
  673. package/dist/tests/groupsAndAccounts.test.d.ts.map +0 -1
  674. package/dist/tests/imageDef.test.d.ts.map +0 -1
  675. package/dist/tests/inbox.test.d.ts.map +0 -1
  676. package/dist/tests/interfaces.test.d.ts.map +0 -1
  677. package/dist/tests/invites.test.d.ts.map +0 -1
  678. package/dist/tests/load.test.d.ts.map +0 -1
  679. package/dist/tests/patterns/notifications.test.d.ts.map +0 -1
  680. package/dist/tests/patterns/requestToJoin.test.d.ts.map +0 -1
  681. package/dist/tests/schema.test.d.ts.map +0 -1
  682. package/dist/tests/schemaUnion.test.d.ts.map +0 -1
  683. package/dist/tests/subscribe.test.d.ts.map +0 -1
  684. package/dist/tests/testing.test.d.ts.map +0 -1
  685. package/dist/tests/utils.d.ts.map +0 -1
  686. package/dist/tests/zod.test.d.ts.map +0 -1
  687. package/dist/types.d.ts.map +0 -1
  688. package/src/coValues/coFeed.ts +0 -938
  689. package/src/exports.ts +0 -108
  690. package/src/tests/coFeed.test.ts +0 -722
  691. /package/dist/{tests → react-core/tests}/fixtures.d.ts +0 -0
  692. /package/dist/{auth → tools/auth}/AuthSecretStorage.d.ts +0 -0
  693. /package/dist/{auth → tools/auth}/DemoAuth.d.ts +0 -0
  694. /package/dist/{auth → tools/auth}/InMemoryKVStore.d.ts +0 -0
  695. /package/dist/{auth → tools/auth}/KvStoreContext.d.ts +0 -0
  696. /package/dist/{auth → tools/auth}/PassphraseAuth.d.ts +0 -0
  697. /package/dist/{coValues → tools/coValues}/CoValueBase.d.ts +0 -0
  698. /package/dist/{coValues → tools/coValues}/account.d.ts +0 -0
  699. /package/dist/{coValues → tools/coValues}/coList.d.ts +0 -0
  700. /package/dist/{coValues → tools/coValues}/coMap.d.ts +0 -0
  701. /package/dist/{coValues → tools/coValues}/coPlainText.d.ts +0 -0
  702. /package/dist/{coValues → tools/coValues}/coRichText.d.ts +0 -0
  703. /package/dist/{coValues → tools/coValues}/deepLoading.d.ts +0 -0
  704. /package/dist/{coValues → tools/coValues}/extensions/imageDef.d.ts +0 -0
  705. /package/dist/{coValues → tools/coValues}/group.d.ts +0 -0
  706. /package/dist/{coValues → tools/coValues}/inbox.d.ts +0 -0
  707. /package/dist/{coValues → tools/coValues}/interfaces.d.ts +0 -0
  708. /package/dist/{coValues → tools/coValues}/profile.d.ts +0 -0
  709. /package/dist/{coValues → tools/coValues}/registeredSchemas.d.ts +0 -0
  710. /package/dist/{coValues → tools/coValues}/schemaUnion.d.ts +0 -0
  711. /package/dist/{implementation → tools/implementation}/ContextManager.d.ts +0 -0
  712. /package/dist/{implementation → tools/implementation}/activeAccountContext.d.ts +0 -0
  713. /package/dist/{implementation → tools/implementation}/anonymousJazzAgent.d.ts +0 -0
  714. /package/dist/{implementation → tools/implementation}/createContext.d.ts +0 -0
  715. /package/dist/{implementation → tools/implementation}/devtoolsFormatters.d.ts +0 -0
  716. /package/dist/{implementation → tools/implementation}/errors.d.ts +0 -0
  717. /package/dist/{implementation → tools/implementation}/inspect.d.ts +0 -0
  718. /package/dist/{implementation → tools/implementation}/invites.d.ts +0 -0
  719. /package/dist/{implementation → tools/implementation}/refs.d.ts +0 -0
  720. /package/dist/{implementation → tools/implementation}/schema.d.ts +0 -0
  721. /package/dist/{implementation → tools/implementation}/symbols.d.ts +0 -0
  722. /package/dist/{implementation → tools/implementation}/zodSchema/coExport.d.ts +0 -0
  723. /package/dist/{implementation → tools/implementation}/zodSchema/runtimeConverters/zodFieldToCoFieldDef.d.ts +0 -0
  724. /package/dist/{implementation → tools/implementation}/zodSchema/runtimeConverters/zodSchemaToCoSchema.d.ts +0 -0
  725. /package/dist/{implementation → tools/implementation}/zodSchema/schemaTypes/AccountSchema.d.ts +0 -0
  726. /package/dist/{implementation → tools/implementation}/zodSchema/schemaTypes/CoFeedSchema.d.ts +0 -0
  727. /package/dist/{implementation → tools/implementation}/zodSchema/schemaTypes/CoListSchema.d.ts +0 -0
  728. /package/dist/{implementation → tools/implementation}/zodSchema/schemaTypes/CoMapSchema.d.ts +0 -0
  729. /package/dist/{implementation → tools/implementation}/zodSchema/schemaTypes/CoRecordSchema.d.ts +0 -0
  730. /package/dist/{implementation → tools/implementation}/zodSchema/schemaTypes/FileStreamSchema.d.ts +0 -0
  731. /package/dist/{implementation → tools/implementation}/zodSchema/schemaTypes/PlainTextSchema.d.ts +0 -0
  732. /package/dist/{implementation → tools/implementation}/zodSchema/schemaTypes/RichTextSchema.d.ts +0 -0
  733. /package/dist/{implementation → tools/implementation}/zodSchema/typeConverters/InstanceOfSchema.d.ts +0 -0
  734. /package/dist/{implementation → tools/implementation}/zodSchema/typeConverters/InstanceOfSchemaCoValuesNullable.d.ts +0 -0
  735. /package/dist/{implementation → tools/implementation}/zodSchema/typeConverters/InstanceOrPrimitiveOfSchema.d.ts +0 -0
  736. /package/dist/{implementation → tools/implementation}/zodSchema/typeConverters/InstanceOrPrimitiveOfSchemaCoValuesNullable.d.ts +0 -0
  737. /package/dist/{implementation → tools/implementation}/zodSchema/unionUtils.d.ts +0 -0
  738. /package/dist/{implementation → tools/implementation}/zodSchema/zodCo.d.ts +0 -0
  739. /package/dist/{implementation → tools/implementation}/zodSchema/zodReExport.d.ts +0 -0
  740. /package/dist/{implementation → tools/implementation}/zodSchema/zodSchema.d.ts +0 -0
  741. /package/dist/{internal.d.ts → tools/internal.d.ts} +0 -0
  742. /package/dist/{lib → tools/lib}/cache.d.ts +0 -0
  743. /package/dist/{lib → tools/lib}/cache.test.d.ts +0 -0
  744. /package/dist/{lib → tools/lib}/migration.d.ts +0 -0
  745. /package/dist/{subscribe → tools/subscribe}/CoValueCoreSubscription.d.ts +0 -0
  746. /package/dist/{subscribe → tools/subscribe}/JazzError.d.ts +0 -0
  747. /package/dist/{subscribe → tools/subscribe}/SubscriptionScope.d.ts +0 -0
  748. /package/dist/{subscribe → tools/subscribe}/index.d.ts +0 -0
  749. /package/dist/{subscribe → tools/subscribe}/types.d.ts +0 -0
  750. /package/dist/{subscribe → tools/subscribe}/utils.d.ts +0 -0
  751. /package/dist/{tests → tools/tests}/AuthSecretStorage.test.d.ts +0 -0
  752. /package/dist/{tests → tools/tests}/ContextManager.test.d.ts +0 -0
  753. /package/dist/{tests → tools/tests}/DemoAuth.test.d.ts +0 -0
  754. /package/dist/{tests → tools/tests}/PassphraseAuth.test.d.ts +0 -0
  755. /package/dist/{tests → tools/tests}/account.test.d.ts +0 -0
  756. /package/dist/{tests → tools/tests}/coFeed.test-d.d.ts +0 -0
  757. /package/dist/{tests → tools/tests}/coFeed.test.d.ts +0 -0
  758. /package/dist/{tests → tools/tests}/coList.test-d.d.ts +0 -0
  759. /package/dist/{tests → tools/tests}/coList.test.d.ts +0 -0
  760. /package/dist/{tests → tools/tests}/coMap.record.test-d.d.ts +0 -0
  761. /package/dist/{tests → tools/tests}/coMap.record.test.d.ts +0 -0
  762. /package/dist/{tests → tools/tests}/coMap.test-d.d.ts +0 -0
  763. /package/dist/{tests → tools/tests}/coMap.test.d.ts +0 -0
  764. /package/dist/{tests → tools/tests}/coPlainText.test.d.ts +0 -0
  765. /package/dist/{tests → tools/tests}/createContext.test.d.ts +0 -0
  766. /package/dist/{tests → tools/tests}/deepLoading.test.d.ts +0 -0
  767. /package/dist/{tests → tools/tests}/groupsAndAccounts.test.d.ts +0 -0
  768. /package/dist/{tests → tools/tests}/imageDef.test.d.ts +0 -0
  769. /package/dist/{tests → tools/tests}/inbox.test.d.ts +0 -0
  770. /package/dist/{tests → tools/tests}/interfaces.test.d.ts +0 -0
  771. /package/dist/{tests → tools/tests}/invites.test.d.ts +0 -0
  772. /package/dist/{tests → tools/tests}/load.test.d.ts +0 -0
  773. /package/dist/{tests → tools/tests}/patterns/notifications.test.d.ts +0 -0
  774. /package/dist/{tests → tools/tests}/patterns/requestToJoin.test.d.ts +0 -0
  775. /package/dist/{tests → tools/tests}/schema.test.d.ts +0 -0
  776. /package/dist/{tests → tools/tests}/schemaUnion.test.d.ts +0 -0
  777. /package/dist/{tests → tools/tests}/subscribe.test.d.ts +0 -0
  778. /package/dist/{tests → tools/tests}/testing.test.d.ts +0 -0
  779. /package/dist/{tests → tools/tests}/utils.d.ts +0 -0
  780. /package/dist/{tests → tools/tests}/zod.test.d.ts +0 -0
  781. /package/dist/{types.d.ts → tools/types.d.ts} +0 -0
  782. /package/src/{tests → react-core/tests}/fixtures.ts +0 -0
  783. /package/src/{auth/KvStoreContext.ts → react-native-core/storage/kv-store-context.ts} +0 -0
  784. /package/src/{auth → tools/auth}/AuthSecretStorage.ts +0 -0
  785. /package/src/{auth → tools/auth}/DemoAuth.ts +0 -0
  786. /package/src/{auth → tools/auth}/InMemoryKVStore.ts +0 -0
  787. /package/src/{auth → tools/auth}/PassphraseAuth.ts +0 -0
  788. /package/src/{coValues → tools/coValues}/CoValueBase.ts +0 -0
  789. /package/src/{coValues → tools/coValues}/account.ts +0 -0
  790. /package/src/{coValues → tools/coValues}/coList.ts +0 -0
  791. /package/src/{coValues → tools/coValues}/coMap.ts +0 -0
  792. /package/src/{coValues → tools/coValues}/coPlainText.ts +0 -0
  793. /package/src/{coValues → tools/coValues}/coRichText.ts +0 -0
  794. /package/src/{coValues → tools/coValues}/deepLoading.ts +0 -0
  795. /package/src/{coValues → tools/coValues}/extensions/imageDef.ts +0 -0
  796. /package/src/{coValues → tools/coValues}/group.ts +0 -0
  797. /package/src/{coValues → tools/coValues}/inbox.ts +0 -0
  798. /package/src/{coValues → tools/coValues}/interfaces.ts +0 -0
  799. /package/src/{coValues → tools/coValues}/profile.ts +0 -0
  800. /package/src/{coValues → tools/coValues}/registeredSchemas.ts +0 -0
  801. /package/src/{coValues → tools/coValues}/schemaUnion.ts +0 -0
  802. /package/src/{implementation → tools/implementation}/ContextManager.ts +0 -0
  803. /package/src/{implementation → tools/implementation}/activeAccountContext.ts +0 -0
  804. /package/src/{implementation → tools/implementation}/anonymousJazzAgent.ts +0 -0
  805. /package/src/{implementation → tools/implementation}/createContext.ts +0 -0
  806. /package/src/{implementation → tools/implementation}/devtoolsFormatters.ts +0 -0
  807. /package/src/{implementation → tools/implementation}/errors.ts +0 -0
  808. /package/src/{implementation → tools/implementation}/inspect.ts +0 -0
  809. /package/src/{implementation → tools/implementation}/invites.ts +0 -0
  810. /package/src/{implementation → tools/implementation}/refs.ts +0 -0
  811. /package/src/{implementation → tools/implementation}/schema.ts +0 -0
  812. /package/src/{implementation → tools/implementation}/symbols.ts +0 -0
  813. /package/src/{implementation → tools/implementation}/zodSchema/coExport.ts +0 -0
  814. /package/src/{implementation → tools/implementation}/zodSchema/runtimeConverters/zodFieldToCoFieldDef.ts +0 -0
  815. /package/src/{implementation → tools/implementation}/zodSchema/runtimeConverters/zodSchemaToCoSchema.ts +0 -0
  816. /package/src/{implementation → tools/implementation}/zodSchema/schemaTypes/AccountSchema.ts +0 -0
  817. /package/src/{implementation → tools/implementation}/zodSchema/schemaTypes/CoFeedSchema.ts +0 -0
  818. /package/src/{implementation → tools/implementation}/zodSchema/schemaTypes/CoListSchema.ts +0 -0
  819. /package/src/{implementation → tools/implementation}/zodSchema/schemaTypes/CoMapSchema.ts +0 -0
  820. /package/src/{implementation → tools/implementation}/zodSchema/schemaTypes/CoRecordSchema.ts +0 -0
  821. /package/src/{implementation → tools/implementation}/zodSchema/schemaTypes/FileStreamSchema.ts +0 -0
  822. /package/src/{implementation → tools/implementation}/zodSchema/schemaTypes/PlainTextSchema.ts +0 -0
  823. /package/src/{implementation → tools/implementation}/zodSchema/schemaTypes/RichTextSchema.ts +0 -0
  824. /package/src/{implementation → tools/implementation}/zodSchema/typeConverters/InstanceOfSchema.ts +0 -0
  825. /package/src/{implementation → tools/implementation}/zodSchema/typeConverters/InstanceOfSchemaCoValuesNullable.ts +0 -0
  826. /package/src/{implementation → tools/implementation}/zodSchema/typeConverters/InstanceOrPrimitiveOfSchema.ts +0 -0
  827. /package/src/{implementation → tools/implementation}/zodSchema/typeConverters/InstanceOrPrimitiveOfSchemaCoValuesNullable.ts +0 -0
  828. /package/src/{implementation → tools/implementation}/zodSchema/unionUtils.ts +0 -0
  829. /package/src/{implementation → tools/implementation}/zodSchema/zodCo.ts +0 -0
  830. /package/src/{implementation → tools/implementation}/zodSchema/zodReExport.ts +0 -0
  831. /package/src/{implementation → tools/implementation}/zodSchema/zodSchema.ts +0 -0
  832. /package/src/{internal.ts → tools/internal.ts} +0 -0
  833. /package/src/{lib → tools/lib}/cache.test.ts +0 -0
  834. /package/src/{lib → tools/lib}/cache.ts +0 -0
  835. /package/src/{lib → tools/lib}/migration.ts +0 -0
  836. /package/src/{subscribe → tools/subscribe}/CoValueCoreSubscription.ts +0 -0
  837. /package/src/{subscribe → tools/subscribe}/JazzError.ts +0 -0
  838. /package/src/{subscribe → tools/subscribe}/SubscriptionScope.ts +0 -0
  839. /package/src/{subscribe → tools/subscribe}/index.ts +0 -0
  840. /package/src/{subscribe → tools/subscribe}/types.ts +0 -0
  841. /package/src/{subscribe → tools/subscribe}/utils.ts +0 -0
  842. /package/src/{tests → tools/tests}/AuthSecretStorage.test.ts +0 -0
  843. /package/src/{tests → tools/tests}/ContextManager.test.ts +0 -0
  844. /package/src/{tests → tools/tests}/DemoAuth.test.ts +0 -0
  845. /package/src/{tests → tools/tests}/PassphraseAuth.test.ts +0 -0
  846. /package/src/{tests → tools/tests}/account.test.ts +0 -0
  847. /package/src/{tests → tools/tests}/coFeed.test-d.ts +0 -0
  848. /package/src/{tests → tools/tests}/coList.test-d.ts +0 -0
  849. /package/src/{tests → tools/tests}/coList.test.ts +0 -0
  850. /package/src/{tests → tools/tests}/coMap.record.test-d.ts +0 -0
  851. /package/src/{tests → tools/tests}/coMap.record.test.ts +0 -0
  852. /package/src/{tests → tools/tests}/coMap.test-d.ts +0 -0
  853. /package/src/{tests → tools/tests}/coMap.test.ts +0 -0
  854. /package/src/{tests → tools/tests}/coPlainText.test.ts +0 -0
  855. /package/src/{tests → tools/tests}/createContext.test.ts +0 -0
  856. /package/src/{tests → tools/tests}/deepLoading.test.ts +0 -0
  857. /package/src/{tests → tools/tests}/groupsAndAccounts.test.ts +0 -0
  858. /package/src/{tests → tools/tests}/imageDef.test.ts +0 -0
  859. /package/src/{tests → tools/tests}/inbox.test.ts +0 -0
  860. /package/src/{tests → tools/tests}/interfaces.test.ts +0 -0
  861. /package/src/{tests → tools/tests}/invites.test.ts +0 -0
  862. /package/src/{tests → tools/tests}/load.test.ts +0 -0
  863. /package/src/{tests → tools/tests}/patterns/notifications.test.ts +0 -0
  864. /package/src/{tests → tools/tests}/patterns/requestToJoin.test.ts +0 -0
  865. /package/src/{tests → tools/tests}/schema.test.ts +0 -0
  866. /package/src/{tests → tools/tests}/schemaUnion.test.ts +0 -0
  867. /package/src/{tests → tools/tests}/subscribe.test.ts +0 -0
  868. /package/src/{tests → tools/tests}/testing.test.ts +0 -0
  869. /package/src/{tests → tools/tests}/utils.ts +0 -0
  870. /package/src/{tests → tools/tests}/zod.test.ts +0 -0
  871. /package/src/{types.ts → tools/types.ts} +0 -0
@@ -0,0 +1,2185 @@
1
+ // src/prosemirror/lib/plugin.ts
2
+ import { Plugin, PluginKey } from "prosemirror-state";
3
+
4
+ // ../../node_modules/prosemirror-view/dist/index.js
5
+ import { TextSelection, NodeSelection, AllSelection, Selection } from "prosemirror-state";
6
+ import { DOMSerializer, Fragment, Mark, Slice, DOMParser as DOMParser2 } from "prosemirror-model";
7
+ import { dropPoint } from "prosemirror-transform";
8
+ var domIndex = function(node) {
9
+ for (var index = 0; ; index++) {
10
+ node = node.previousSibling;
11
+ if (!node)
12
+ return index;
13
+ }
14
+ };
15
+ var isEquivalentPosition = function(node, off, targetNode, targetOff) {
16
+ return targetNode && (scanFor(node, off, targetNode, targetOff, -1) || scanFor(node, off, targetNode, targetOff, 1));
17
+ };
18
+ var atomElements = /^(img|br|input|textarea|hr)$/i;
19
+ function scanFor(node, off, targetNode, targetOff, dir) {
20
+ for (; ; ) {
21
+ if (node == targetNode && off == targetOff)
22
+ return true;
23
+ if (off == (dir < 0 ? 0 : nodeSize(node))) {
24
+ let parent = node.parentNode;
25
+ if (!parent || parent.nodeType != 1 || hasBlockDesc(node) || atomElements.test(node.nodeName) || node.contentEditable == "false")
26
+ return false;
27
+ off = domIndex(node) + (dir < 0 ? 0 : 1);
28
+ node = parent;
29
+ } else if (node.nodeType == 1) {
30
+ node = node.childNodes[off + (dir < 0 ? -1 : 0)];
31
+ if (node.contentEditable == "false")
32
+ return false;
33
+ off = dir < 0 ? nodeSize(node) : 0;
34
+ } else {
35
+ return false;
36
+ }
37
+ }
38
+ }
39
+ function nodeSize(node) {
40
+ return node.nodeType == 3 ? node.nodeValue.length : node.childNodes.length;
41
+ }
42
+ function isOnEdge(node, offset, parent) {
43
+ for (let atStart = offset == 0, atEnd = offset == nodeSize(node); atStart || atEnd; ) {
44
+ if (node == parent)
45
+ return true;
46
+ let index = domIndex(node);
47
+ node = node.parentNode;
48
+ if (!node)
49
+ return false;
50
+ atStart = atStart && index == 0;
51
+ atEnd = atEnd && index == nodeSize(node);
52
+ }
53
+ }
54
+ function hasBlockDesc(dom) {
55
+ let desc;
56
+ for (let cur = dom; cur; cur = cur.parentNode)
57
+ if (desc = cur.pmViewDesc)
58
+ break;
59
+ return desc && desc.node && desc.node.isBlock && (desc.dom == dom || desc.contentDOM == dom);
60
+ }
61
+ var selectionCollapsed = function(domSel) {
62
+ return domSel.focusNode && isEquivalentPosition(domSel.focusNode, domSel.focusOffset, domSel.anchorNode, domSel.anchorOffset);
63
+ };
64
+ function keyEvent(keyCode, key) {
65
+ let event = document.createEvent("Event");
66
+ event.initEvent("keydown", true, true);
67
+ event.keyCode = keyCode;
68
+ event.key = event.code = key;
69
+ return event;
70
+ }
71
+ var nav = typeof navigator != "undefined" ? navigator : null;
72
+ var doc = typeof document != "undefined" ? document : null;
73
+ var agent = nav && nav.userAgent || "";
74
+ var ie_edge = /Edge\/(\d+)/.exec(agent);
75
+ var ie_upto10 = /MSIE \d/.exec(agent);
76
+ var ie_11up = /Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(agent);
77
+ var ie = !!(ie_upto10 || ie_11up || ie_edge);
78
+ var ie_version = ie_upto10 ? document.documentMode : ie_11up ? +ie_11up[1] : ie_edge ? +ie_edge[1] : 0;
79
+ var gecko = !ie && /gecko\/(\d+)/i.test(agent);
80
+ gecko && +(/Firefox\/(\d+)/.exec(agent) || [0, 0])[1];
81
+ var _chrome = !ie && /Chrome\/(\d+)/.exec(agent);
82
+ var chrome = !!_chrome;
83
+ var chrome_version = _chrome ? +_chrome[1] : 0;
84
+ var safari = !ie && !!nav && /Apple Computer/.test(nav.vendor);
85
+ var ios = safari && (/Mobile\/\w+/.test(agent) || !!nav && nav.maxTouchPoints > 2);
86
+ var mac = ios || (nav ? /Mac/.test(nav.platform) : false);
87
+ var windows = nav ? /Win/.test(nav.platform) : false;
88
+ var android = /Android \d/.test(agent);
89
+ var webkit = !!doc && "webkitFontSmoothing" in doc.documentElement.style;
90
+ var webkit_version = webkit ? +(/\bAppleWebKit\/(\d+)/.exec(navigator.userAgent) || [0, 0])[1] : 0;
91
+ var OuterDecoLevel = function(nodeName) {
92
+ if (nodeName)
93
+ this.nodeName = nodeName;
94
+ };
95
+ OuterDecoLevel.prototype = /* @__PURE__ */ Object.create(null);
96
+ var noDeco = [new OuterDecoLevel()];
97
+ function selectionFromDOM(view, origin = null) {
98
+ let domSel = view.domSelectionRange(), doc2 = view.state.doc;
99
+ if (!domSel.focusNode)
100
+ return null;
101
+ let nearestDesc = view.docView.nearestDesc(domSel.focusNode), inWidget = nearestDesc && nearestDesc.size == 0;
102
+ let head = view.docView.posFromDOM(domSel.focusNode, domSel.focusOffset, 1);
103
+ if (head < 0)
104
+ return null;
105
+ let $head = doc2.resolve(head), anchor, selection;
106
+ if (selectionCollapsed(domSel)) {
107
+ anchor = head;
108
+ while (nearestDesc && !nearestDesc.node)
109
+ nearestDesc = nearestDesc.parent;
110
+ let nearestDescNode = nearestDesc.node;
111
+ if (nearestDesc && nearestDescNode.isAtom && NodeSelection.isSelectable(nearestDescNode) && nearestDesc.parent && !(nearestDescNode.isInline && isOnEdge(domSel.focusNode, domSel.focusOffset, nearestDesc.dom))) {
112
+ let pos = nearestDesc.posBefore;
113
+ selection = new NodeSelection(head == pos ? $head : doc2.resolve(pos));
114
+ }
115
+ } else {
116
+ if (domSel instanceof view.dom.ownerDocument.defaultView.Selection && domSel.rangeCount > 1) {
117
+ let min = head, max = head;
118
+ for (let i = 0; i < domSel.rangeCount; i++) {
119
+ let range = domSel.getRangeAt(i);
120
+ min = Math.min(min, view.docView.posFromDOM(range.startContainer, range.startOffset, 1));
121
+ max = Math.max(max, view.docView.posFromDOM(range.endContainer, range.endOffset, -1));
122
+ }
123
+ if (min < 0)
124
+ return null;
125
+ [anchor, head] = max == view.state.selection.anchor ? [max, min] : [min, max];
126
+ $head = doc2.resolve(head);
127
+ } else {
128
+ anchor = view.docView.posFromDOM(domSel.anchorNode, domSel.anchorOffset, 1);
129
+ }
130
+ if (anchor < 0)
131
+ return null;
132
+ }
133
+ let $anchor = doc2.resolve(anchor);
134
+ if (!selection) {
135
+ let bias = origin == "pointer" || view.state.selection.head < $head.pos && !inWidget ? 1 : -1;
136
+ selection = selectionBetween(view, $anchor, $head, bias);
137
+ }
138
+ return selection;
139
+ }
140
+ function editorOwnsSelection(view) {
141
+ return view.editable ? view.hasFocus() : hasSelection(view) && document.activeElement && document.activeElement.contains(view.dom);
142
+ }
143
+ function selectionToDOM(view, force = false) {
144
+ let sel = view.state.selection;
145
+ syncNodeSelection(view, sel);
146
+ if (!editorOwnsSelection(view))
147
+ return;
148
+ if (!force && view.input.mouseDown && view.input.mouseDown.allowDefault && chrome) {
149
+ let domSel = view.domSelectionRange(), curSel = view.domObserver.currentSelection;
150
+ if (domSel.anchorNode && curSel.anchorNode && isEquivalentPosition(domSel.anchorNode, domSel.anchorOffset, curSel.anchorNode, curSel.anchorOffset)) {
151
+ view.input.mouseDown.delayedSelectionSync = true;
152
+ view.domObserver.setCurSelection();
153
+ return;
154
+ }
155
+ }
156
+ view.domObserver.disconnectSelection();
157
+ if (view.cursorWrapper) {
158
+ selectCursorWrapper(view);
159
+ } else {
160
+ let { anchor, head } = sel, resetEditableFrom, resetEditableTo;
161
+ if (brokenSelectBetweenUneditable && !(sel instanceof TextSelection)) {
162
+ if (!sel.$from.parent.inlineContent)
163
+ resetEditableFrom = temporarilyEditableNear(view, sel.from);
164
+ if (!sel.empty && !sel.$from.parent.inlineContent)
165
+ resetEditableTo = temporarilyEditableNear(view, sel.to);
166
+ }
167
+ view.docView.setSelection(anchor, head, view, force);
168
+ if (brokenSelectBetweenUneditable) {
169
+ if (resetEditableFrom)
170
+ resetEditable(resetEditableFrom);
171
+ if (resetEditableTo)
172
+ resetEditable(resetEditableTo);
173
+ }
174
+ if (sel.visible) {
175
+ view.dom.classList.remove("ProseMirror-hideselection");
176
+ } else {
177
+ view.dom.classList.add("ProseMirror-hideselection");
178
+ if ("onselectionchange" in document)
179
+ removeClassOnSelectionChange(view);
180
+ }
181
+ }
182
+ view.domObserver.setCurSelection();
183
+ view.domObserver.connectSelection();
184
+ }
185
+ var brokenSelectBetweenUneditable = safari || chrome && chrome_version < 63;
186
+ function temporarilyEditableNear(view, pos) {
187
+ let { node, offset } = view.docView.domFromPos(pos, 0);
188
+ let after = offset < node.childNodes.length ? node.childNodes[offset] : null;
189
+ let before = offset ? node.childNodes[offset - 1] : null;
190
+ if (safari && after && after.contentEditable == "false")
191
+ return setEditable(after);
192
+ if ((!after || after.contentEditable == "false") && (!before || before.contentEditable == "false")) {
193
+ if (after)
194
+ return setEditable(after);
195
+ else if (before)
196
+ return setEditable(before);
197
+ }
198
+ }
199
+ function setEditable(element) {
200
+ element.contentEditable = "true";
201
+ if (safari && element.draggable) {
202
+ element.draggable = false;
203
+ element.wasDraggable = true;
204
+ }
205
+ return element;
206
+ }
207
+ function resetEditable(element) {
208
+ element.contentEditable = "false";
209
+ if (element.wasDraggable) {
210
+ element.draggable = true;
211
+ element.wasDraggable = null;
212
+ }
213
+ }
214
+ function removeClassOnSelectionChange(view) {
215
+ let doc2 = view.dom.ownerDocument;
216
+ doc2.removeEventListener("selectionchange", view.input.hideSelectionGuard);
217
+ let domSel = view.domSelectionRange();
218
+ let node = domSel.anchorNode, offset = domSel.anchorOffset;
219
+ doc2.addEventListener("selectionchange", view.input.hideSelectionGuard = () => {
220
+ if (domSel.anchorNode != node || domSel.anchorOffset != offset) {
221
+ doc2.removeEventListener("selectionchange", view.input.hideSelectionGuard);
222
+ setTimeout(() => {
223
+ if (!editorOwnsSelection(view) || view.state.selection.visible)
224
+ view.dom.classList.remove("ProseMirror-hideselection");
225
+ }, 20);
226
+ }
227
+ });
228
+ }
229
+ function selectCursorWrapper(view) {
230
+ let domSel = view.domSelection(), range = document.createRange();
231
+ if (!domSel)
232
+ return;
233
+ let node = view.cursorWrapper.dom, img = node.nodeName == "IMG";
234
+ if (img)
235
+ range.setStart(node.parentNode, domIndex(node) + 1);
236
+ else
237
+ range.setStart(node, 0);
238
+ range.collapse(true);
239
+ domSel.removeAllRanges();
240
+ domSel.addRange(range);
241
+ if (!img && !view.state.selection.visible && ie && ie_version <= 11) {
242
+ node.disabled = true;
243
+ node.disabled = false;
244
+ }
245
+ }
246
+ function syncNodeSelection(view, sel) {
247
+ if (sel instanceof NodeSelection) {
248
+ let desc = view.docView.descAt(sel.from);
249
+ if (desc != view.lastSelectedViewDesc) {
250
+ clearNodeSelection(view);
251
+ if (desc)
252
+ desc.selectNode();
253
+ view.lastSelectedViewDesc = desc;
254
+ }
255
+ } else {
256
+ clearNodeSelection(view);
257
+ }
258
+ }
259
+ function clearNodeSelection(view) {
260
+ if (view.lastSelectedViewDesc) {
261
+ if (view.lastSelectedViewDesc.parent)
262
+ view.lastSelectedViewDesc.deselectNode();
263
+ view.lastSelectedViewDesc = void 0;
264
+ }
265
+ }
266
+ function selectionBetween(view, $anchor, $head, bias) {
267
+ return view.someProp("createSelectionBetween", (f) => f(view, $anchor, $head)) || TextSelection.between($anchor, $head, bias);
268
+ }
269
+ function hasSelection(view) {
270
+ let sel = view.domSelectionRange();
271
+ if (!sel.anchorNode)
272
+ return false;
273
+ try {
274
+ return view.dom.contains(sel.anchorNode.nodeType == 3 ? sel.anchorNode.parentNode : sel.anchorNode) && (view.editable || view.dom.contains(sel.focusNode.nodeType == 3 ? sel.focusNode.parentNode : sel.focusNode));
275
+ } catch (_) {
276
+ return false;
277
+ }
278
+ }
279
+ function moveSelectionBlock(state, dir) {
280
+ let { $anchor, $head } = state.selection;
281
+ let $side = dir > 0 ? $anchor.max($head) : $anchor.min($head);
282
+ let $start = !$side.parent.inlineContent ? $side : $side.depth ? state.doc.resolve(dir > 0 ? $side.after() : $side.before()) : null;
283
+ return $start && Selection.findFrom($start, dir);
284
+ }
285
+ function apply(view, sel) {
286
+ view.dispatch(view.state.tr.setSelection(sel).scrollIntoView());
287
+ return true;
288
+ }
289
+ function selectHorizontally(view, dir, mods) {
290
+ let sel = view.state.selection;
291
+ if (sel instanceof TextSelection) {
292
+ if (mods.indexOf("s") > -1) {
293
+ let { $head } = sel, node = $head.textOffset ? null : dir < 0 ? $head.nodeBefore : $head.nodeAfter;
294
+ if (!node || node.isText || !node.isLeaf)
295
+ return false;
296
+ let $newHead = view.state.doc.resolve($head.pos + node.nodeSize * (dir < 0 ? -1 : 1));
297
+ return apply(view, new TextSelection(sel.$anchor, $newHead));
298
+ } else if (!sel.empty) {
299
+ return false;
300
+ } else if (view.endOfTextblock(dir > 0 ? "forward" : "backward")) {
301
+ let next = moveSelectionBlock(view.state, dir);
302
+ if (next && next instanceof NodeSelection)
303
+ return apply(view, next);
304
+ return false;
305
+ } else if (!(mac && mods.indexOf("m") > -1)) {
306
+ let $head = sel.$head, node = $head.textOffset ? null : dir < 0 ? $head.nodeBefore : $head.nodeAfter, desc;
307
+ if (!node || node.isText)
308
+ return false;
309
+ let nodePos = dir < 0 ? $head.pos - node.nodeSize : $head.pos;
310
+ if (!(node.isAtom || (desc = view.docView.descAt(nodePos)) && !desc.contentDOM))
311
+ return false;
312
+ if (NodeSelection.isSelectable(node)) {
313
+ return apply(view, new NodeSelection(dir < 0 ? view.state.doc.resolve($head.pos - node.nodeSize) : $head));
314
+ } else if (webkit) {
315
+ return apply(view, new TextSelection(view.state.doc.resolve(dir < 0 ? nodePos : nodePos + node.nodeSize)));
316
+ } else {
317
+ return false;
318
+ }
319
+ }
320
+ } else if (sel instanceof NodeSelection && sel.node.isInline) {
321
+ return apply(view, new TextSelection(dir > 0 ? sel.$to : sel.$from));
322
+ } else {
323
+ let next = moveSelectionBlock(view.state, dir);
324
+ if (next)
325
+ return apply(view, next);
326
+ return false;
327
+ }
328
+ }
329
+ function nodeLen(node) {
330
+ return node.nodeType == 3 ? node.nodeValue.length : node.childNodes.length;
331
+ }
332
+ function isIgnorable(dom, dir) {
333
+ let desc = dom.pmViewDesc;
334
+ return desc && desc.size == 0 && (dir < 0 || dom.nextSibling || dom.nodeName != "BR");
335
+ }
336
+ function skipIgnoredNodes(view, dir) {
337
+ return dir < 0 ? skipIgnoredNodesBefore(view) : skipIgnoredNodesAfter(view);
338
+ }
339
+ function skipIgnoredNodesBefore(view) {
340
+ let sel = view.domSelectionRange();
341
+ let node = sel.focusNode, offset = sel.focusOffset;
342
+ if (!node)
343
+ return;
344
+ let moveNode, moveOffset, force = false;
345
+ if (gecko && node.nodeType == 1 && offset < nodeLen(node) && isIgnorable(node.childNodes[offset], -1))
346
+ force = true;
347
+ for (; ; ) {
348
+ if (offset > 0) {
349
+ if (node.nodeType != 1) {
350
+ break;
351
+ } else {
352
+ let before = node.childNodes[offset - 1];
353
+ if (isIgnorable(before, -1)) {
354
+ moveNode = node;
355
+ moveOffset = --offset;
356
+ } else if (before.nodeType == 3) {
357
+ node = before;
358
+ offset = node.nodeValue.length;
359
+ } else
360
+ break;
361
+ }
362
+ } else if (isBlockNode(node)) {
363
+ break;
364
+ } else {
365
+ let prev = node.previousSibling;
366
+ while (prev && isIgnorable(prev, -1)) {
367
+ moveNode = node.parentNode;
368
+ moveOffset = domIndex(prev);
369
+ prev = prev.previousSibling;
370
+ }
371
+ if (!prev) {
372
+ node = node.parentNode;
373
+ if (node == view.dom)
374
+ break;
375
+ offset = 0;
376
+ } else {
377
+ node = prev;
378
+ offset = nodeLen(node);
379
+ }
380
+ }
381
+ }
382
+ if (force)
383
+ setSelFocus(view, node, offset);
384
+ else if (moveNode)
385
+ setSelFocus(view, moveNode, moveOffset);
386
+ }
387
+ function skipIgnoredNodesAfter(view) {
388
+ let sel = view.domSelectionRange();
389
+ let node = sel.focusNode, offset = sel.focusOffset;
390
+ if (!node)
391
+ return;
392
+ let len = nodeLen(node);
393
+ let moveNode, moveOffset;
394
+ for (; ; ) {
395
+ if (offset < len) {
396
+ if (node.nodeType != 1)
397
+ break;
398
+ let after = node.childNodes[offset];
399
+ if (isIgnorable(after, 1)) {
400
+ moveNode = node;
401
+ moveOffset = ++offset;
402
+ } else
403
+ break;
404
+ } else if (isBlockNode(node)) {
405
+ break;
406
+ } else {
407
+ let next = node.nextSibling;
408
+ while (next && isIgnorable(next, 1)) {
409
+ moveNode = next.parentNode;
410
+ moveOffset = domIndex(next) + 1;
411
+ next = next.nextSibling;
412
+ }
413
+ if (!next) {
414
+ node = node.parentNode;
415
+ if (node == view.dom)
416
+ break;
417
+ offset = len = 0;
418
+ } else {
419
+ node = next;
420
+ offset = 0;
421
+ len = nodeLen(node);
422
+ }
423
+ }
424
+ }
425
+ if (moveNode)
426
+ setSelFocus(view, moveNode, moveOffset);
427
+ }
428
+ function isBlockNode(dom) {
429
+ let desc = dom.pmViewDesc;
430
+ return desc && desc.node && desc.node.isBlock;
431
+ }
432
+ function textNodeAfter(node, offset) {
433
+ while (node && offset == node.childNodes.length && !hasBlockDesc(node)) {
434
+ offset = domIndex(node) + 1;
435
+ node = node.parentNode;
436
+ }
437
+ while (node && offset < node.childNodes.length) {
438
+ let next = node.childNodes[offset];
439
+ if (next.nodeType == 3)
440
+ return next;
441
+ if (next.nodeType == 1 && next.contentEditable == "false")
442
+ break;
443
+ node = next;
444
+ offset = 0;
445
+ }
446
+ }
447
+ function textNodeBefore(node, offset) {
448
+ while (node && !offset && !hasBlockDesc(node)) {
449
+ offset = domIndex(node);
450
+ node = node.parentNode;
451
+ }
452
+ while (node && offset) {
453
+ let next = node.childNodes[offset - 1];
454
+ if (next.nodeType == 3)
455
+ return next;
456
+ if (next.nodeType == 1 && next.contentEditable == "false")
457
+ break;
458
+ node = next;
459
+ offset = node.childNodes.length;
460
+ }
461
+ }
462
+ function setSelFocus(view, node, offset) {
463
+ if (node.nodeType != 3) {
464
+ let before, after;
465
+ if (after = textNodeAfter(node, offset)) {
466
+ node = after;
467
+ offset = 0;
468
+ } else if (before = textNodeBefore(node, offset)) {
469
+ node = before;
470
+ offset = before.nodeValue.length;
471
+ }
472
+ }
473
+ let sel = view.domSelection();
474
+ if (!sel)
475
+ return;
476
+ if (selectionCollapsed(sel)) {
477
+ let range = document.createRange();
478
+ range.setEnd(node, offset);
479
+ range.setStart(node, offset);
480
+ sel.removeAllRanges();
481
+ sel.addRange(range);
482
+ } else if (sel.extend) {
483
+ sel.extend(node, offset);
484
+ }
485
+ view.domObserver.setCurSelection();
486
+ let { state } = view;
487
+ setTimeout(() => {
488
+ if (view.state == state)
489
+ selectionToDOM(view);
490
+ }, 50);
491
+ }
492
+ function findDirection(view, pos) {
493
+ let $pos = view.state.doc.resolve(pos);
494
+ if (!(chrome || windows) && $pos.parent.inlineContent) {
495
+ let coords = view.coordsAtPos(pos);
496
+ if (pos > $pos.start()) {
497
+ let before = view.coordsAtPos(pos - 1);
498
+ let mid = (before.top + before.bottom) / 2;
499
+ if (mid > coords.top && mid < coords.bottom && Math.abs(before.left - coords.left) > 1)
500
+ return before.left < coords.left ? "ltr" : "rtl";
501
+ }
502
+ if (pos < $pos.end()) {
503
+ let after = view.coordsAtPos(pos + 1);
504
+ let mid = (after.top + after.bottom) / 2;
505
+ if (mid > coords.top && mid < coords.bottom && Math.abs(after.left - coords.left) > 1)
506
+ return after.left > coords.left ? "ltr" : "rtl";
507
+ }
508
+ }
509
+ let computed = getComputedStyle(view.dom).direction;
510
+ return computed == "rtl" ? "rtl" : "ltr";
511
+ }
512
+ function selectVertically(view, dir, mods) {
513
+ let sel = view.state.selection;
514
+ if (sel instanceof TextSelection && !sel.empty || mods.indexOf("s") > -1)
515
+ return false;
516
+ if (mac && mods.indexOf("m") > -1)
517
+ return false;
518
+ let { $from, $to } = sel;
519
+ if (!$from.parent.inlineContent || view.endOfTextblock(dir < 0 ? "up" : "down")) {
520
+ let next = moveSelectionBlock(view.state, dir);
521
+ if (next && next instanceof NodeSelection)
522
+ return apply(view, next);
523
+ }
524
+ if (!$from.parent.inlineContent) {
525
+ let side = dir < 0 ? $from : $to;
526
+ let beyond = sel instanceof AllSelection ? Selection.near(side, dir) : Selection.findFrom(side, dir);
527
+ return beyond ? apply(view, beyond) : false;
528
+ }
529
+ return false;
530
+ }
531
+ function stopNativeHorizontalDelete(view, dir) {
532
+ if (!(view.state.selection instanceof TextSelection))
533
+ return true;
534
+ let { $head, $anchor, empty: empty2 } = view.state.selection;
535
+ if (!$head.sameParent($anchor))
536
+ return true;
537
+ if (!empty2)
538
+ return false;
539
+ if (view.endOfTextblock(dir > 0 ? "forward" : "backward"))
540
+ return true;
541
+ let nextNode = !$head.textOffset && (dir < 0 ? $head.nodeBefore : $head.nodeAfter);
542
+ if (nextNode && !nextNode.isText) {
543
+ let tr = view.state.tr;
544
+ if (dir < 0)
545
+ tr.delete($head.pos - nextNode.nodeSize, $head.pos);
546
+ else
547
+ tr.delete($head.pos, $head.pos + nextNode.nodeSize);
548
+ view.dispatch(tr);
549
+ return true;
550
+ }
551
+ return false;
552
+ }
553
+ function switchEditable(view, node, state) {
554
+ view.domObserver.stop();
555
+ node.contentEditable = state;
556
+ view.domObserver.start();
557
+ }
558
+ function safariDownArrowBug(view) {
559
+ if (!safari || view.state.selection.$head.parentOffset > 0)
560
+ return false;
561
+ let { focusNode, focusOffset } = view.domSelectionRange();
562
+ if (focusNode && focusNode.nodeType == 1 && focusOffset == 0 && focusNode.firstChild && focusNode.firstChild.contentEditable == "false") {
563
+ let child = focusNode.firstChild;
564
+ switchEditable(view, child, "true");
565
+ setTimeout(() => switchEditable(view, child, "false"), 20);
566
+ }
567
+ return false;
568
+ }
569
+ function getMods(event) {
570
+ let result = "";
571
+ if (event.ctrlKey)
572
+ result += "c";
573
+ if (event.metaKey)
574
+ result += "m";
575
+ if (event.altKey)
576
+ result += "a";
577
+ if (event.shiftKey)
578
+ result += "s";
579
+ return result;
580
+ }
581
+ function captureKeyDown(view, event) {
582
+ let code = event.keyCode, mods = getMods(event);
583
+ if (code == 8 || mac && code == 72 && mods == "c") {
584
+ return stopNativeHorizontalDelete(view, -1) || skipIgnoredNodes(view, -1);
585
+ } else if (code == 46 && !event.shiftKey || mac && code == 68 && mods == "c") {
586
+ return stopNativeHorizontalDelete(view, 1) || skipIgnoredNodes(view, 1);
587
+ } else if (code == 13 || code == 27) {
588
+ return true;
589
+ } else if (code == 37 || mac && code == 66 && mods == "c") {
590
+ let dir = code == 37 ? findDirection(view, view.state.selection.from) == "ltr" ? -1 : 1 : -1;
591
+ return selectHorizontally(view, dir, mods) || skipIgnoredNodes(view, dir);
592
+ } else if (code == 39 || mac && code == 70 && mods == "c") {
593
+ let dir = code == 39 ? findDirection(view, view.state.selection.from) == "ltr" ? 1 : -1 : 1;
594
+ return selectHorizontally(view, dir, mods) || skipIgnoredNodes(view, dir);
595
+ } else if (code == 38 || mac && code == 80 && mods == "c") {
596
+ return selectVertically(view, -1, mods) || skipIgnoredNodes(view, -1);
597
+ } else if (code == 40 || mac && code == 78 && mods == "c") {
598
+ return safariDownArrowBug(view) || selectVertically(view, 1, mods) || skipIgnoredNodes(view, 1);
599
+ } else if (mods == (mac ? "m" : "c") && (code == 66 || code == 73 || code == 89 || code == 90)) {
600
+ return true;
601
+ }
602
+ return false;
603
+ }
604
+ function serializeForClipboard(view, slice) {
605
+ view.someProp("transformCopied", (f) => {
606
+ slice = f(slice, view);
607
+ });
608
+ let context = [], { content, openStart, openEnd } = slice;
609
+ while (openStart > 1 && openEnd > 1 && content.childCount == 1 && content.firstChild.childCount == 1) {
610
+ openStart--;
611
+ openEnd--;
612
+ let node = content.firstChild;
613
+ context.push(node.type.name, node.attrs != node.type.defaultAttrs ? node.attrs : null);
614
+ content = node.content;
615
+ }
616
+ let serializer = view.someProp("clipboardSerializer") || DOMSerializer.fromSchema(view.state.schema);
617
+ let doc2 = detachedDoc(), wrap = doc2.createElement("div");
618
+ wrap.appendChild(serializer.serializeFragment(content, { document: doc2 }));
619
+ let firstChild = wrap.firstChild, needsWrap, wrappers = 0;
620
+ while (firstChild && firstChild.nodeType == 1 && (needsWrap = wrapMap[firstChild.nodeName.toLowerCase()])) {
621
+ for (let i = needsWrap.length - 1; i >= 0; i--) {
622
+ let wrapper = doc2.createElement(needsWrap[i]);
623
+ while (wrap.firstChild)
624
+ wrapper.appendChild(wrap.firstChild);
625
+ wrap.appendChild(wrapper);
626
+ wrappers++;
627
+ }
628
+ firstChild = wrap.firstChild;
629
+ }
630
+ if (firstChild && firstChild.nodeType == 1)
631
+ firstChild.setAttribute("data-pm-slice", `${openStart} ${openEnd}${wrappers ? ` -${wrappers}` : ""} ${JSON.stringify(context)}`);
632
+ let text = view.someProp("clipboardTextSerializer", (f) => f(slice, view)) || slice.content.textBetween(0, slice.content.size, "\n\n");
633
+ return { dom: wrap, text, slice };
634
+ }
635
+ function parseFromClipboard(view, text, html, plainText, $context) {
636
+ let inCode = $context.parent.type.spec.code;
637
+ let dom, slice;
638
+ if (!html && !text)
639
+ return null;
640
+ let asText = text && (plainText || inCode || !html);
641
+ if (asText) {
642
+ view.someProp("transformPastedText", (f) => {
643
+ text = f(text, inCode || plainText, view);
644
+ });
645
+ if (inCode)
646
+ return text ? new Slice(Fragment.from(view.state.schema.text(text.replace(/\r\n?/g, "\n"))), 0, 0) : Slice.empty;
647
+ let parsed = view.someProp("clipboardTextParser", (f) => f(text, $context, plainText, view));
648
+ if (parsed) {
649
+ slice = parsed;
650
+ } else {
651
+ let marks = $context.marks();
652
+ let { schema } = view.state, serializer = DOMSerializer.fromSchema(schema);
653
+ dom = document.createElement("div");
654
+ text.split(/(?:\r\n?|\n)+/).forEach((block) => {
655
+ let p = dom.appendChild(document.createElement("p"));
656
+ if (block)
657
+ p.appendChild(serializer.serializeNode(schema.text(block, marks)));
658
+ });
659
+ }
660
+ } else {
661
+ view.someProp("transformPastedHTML", (f) => {
662
+ html = f(html, view);
663
+ });
664
+ dom = readHTML(html);
665
+ if (webkit)
666
+ restoreReplacedSpaces(dom);
667
+ }
668
+ let contextNode = dom && dom.querySelector("[data-pm-slice]");
669
+ let sliceData = contextNode && /^(\d+) (\d+)(?: -(\d+))? (.*)/.exec(contextNode.getAttribute("data-pm-slice") || "");
670
+ if (sliceData && sliceData[3])
671
+ for (let i = +sliceData[3]; i > 0; i--) {
672
+ let child = dom.firstChild;
673
+ while (child && child.nodeType != 1)
674
+ child = child.nextSibling;
675
+ if (!child)
676
+ break;
677
+ dom = child;
678
+ }
679
+ if (!slice) {
680
+ let parser = view.someProp("clipboardParser") || view.someProp("domParser") || DOMParser2.fromSchema(view.state.schema);
681
+ slice = parser.parseSlice(dom, {
682
+ preserveWhitespace: !!(asText || sliceData),
683
+ context: $context,
684
+ ruleFromNode(dom2) {
685
+ if (dom2.nodeName == "BR" && !dom2.nextSibling && dom2.parentNode && !inlineParents.test(dom2.parentNode.nodeName))
686
+ return { ignore: true };
687
+ return null;
688
+ }
689
+ });
690
+ }
691
+ if (sliceData) {
692
+ slice = addContext(closeSlice(slice, +sliceData[1], +sliceData[2]), sliceData[4]);
693
+ } else {
694
+ slice = Slice.maxOpen(normalizeSiblings(slice.content, $context), true);
695
+ if (slice.openStart || slice.openEnd) {
696
+ let openStart = 0, openEnd = 0;
697
+ for (let node = slice.content.firstChild; openStart < slice.openStart && !node.type.spec.isolating; openStart++, node = node.firstChild) {
698
+ }
699
+ for (let node = slice.content.lastChild; openEnd < slice.openEnd && !node.type.spec.isolating; openEnd++, node = node.lastChild) {
700
+ }
701
+ slice = closeSlice(slice, openStart, openEnd);
702
+ }
703
+ }
704
+ view.someProp("transformPasted", (f) => {
705
+ slice = f(slice, view);
706
+ });
707
+ return slice;
708
+ }
709
+ var inlineParents = /^(a|abbr|acronym|b|cite|code|del|em|i|ins|kbd|label|output|q|ruby|s|samp|span|strong|sub|sup|time|u|tt|var)$/i;
710
+ function normalizeSiblings(fragment, $context) {
711
+ if (fragment.childCount < 2)
712
+ return fragment;
713
+ for (let d = $context.depth; d >= 0; d--) {
714
+ let parent = $context.node(d);
715
+ let match = parent.contentMatchAt($context.index(d));
716
+ let lastWrap, result = [];
717
+ fragment.forEach((node) => {
718
+ if (!result)
719
+ return;
720
+ let wrap = match.findWrapping(node.type), inLast;
721
+ if (!wrap)
722
+ return result = null;
723
+ if (inLast = result.length && lastWrap.length && addToSibling(wrap, lastWrap, node, result[result.length - 1], 0)) {
724
+ result[result.length - 1] = inLast;
725
+ } else {
726
+ if (result.length)
727
+ result[result.length - 1] = closeRight(result[result.length - 1], lastWrap.length);
728
+ let wrapped = withWrappers(node, wrap);
729
+ result.push(wrapped);
730
+ match = match.matchType(wrapped.type);
731
+ lastWrap = wrap;
732
+ }
733
+ });
734
+ if (result)
735
+ return Fragment.from(result);
736
+ }
737
+ return fragment;
738
+ }
739
+ function withWrappers(node, wrap, from = 0) {
740
+ for (let i = wrap.length - 1; i >= from; i--)
741
+ node = wrap[i].create(null, Fragment.from(node));
742
+ return node;
743
+ }
744
+ function addToSibling(wrap, lastWrap, node, sibling, depth) {
745
+ if (depth < wrap.length && depth < lastWrap.length && wrap[depth] == lastWrap[depth]) {
746
+ let inner = addToSibling(wrap, lastWrap, node, sibling.lastChild, depth + 1);
747
+ if (inner)
748
+ return sibling.copy(sibling.content.replaceChild(sibling.childCount - 1, inner));
749
+ let match = sibling.contentMatchAt(sibling.childCount);
750
+ if (match.matchType(depth == wrap.length - 1 ? node.type : wrap[depth + 1]))
751
+ return sibling.copy(sibling.content.append(Fragment.from(withWrappers(node, wrap, depth + 1))));
752
+ }
753
+ }
754
+ function closeRight(node, depth) {
755
+ if (depth == 0)
756
+ return node;
757
+ let fragment = node.content.replaceChild(node.childCount - 1, closeRight(node.lastChild, depth - 1));
758
+ let fill = node.contentMatchAt(node.childCount).fillBefore(Fragment.empty, true);
759
+ return node.copy(fragment.append(fill));
760
+ }
761
+ function closeRange(fragment, side, from, to, depth, openEnd) {
762
+ let node = side < 0 ? fragment.firstChild : fragment.lastChild, inner = node.content;
763
+ if (fragment.childCount > 1)
764
+ openEnd = 0;
765
+ if (depth < to - 1)
766
+ inner = closeRange(inner, side, from, to, depth + 1, openEnd);
767
+ if (depth >= from)
768
+ inner = side < 0 ? node.contentMatchAt(0).fillBefore(inner, openEnd <= depth).append(inner) : inner.append(node.contentMatchAt(node.childCount).fillBefore(Fragment.empty, true));
769
+ return fragment.replaceChild(side < 0 ? 0 : fragment.childCount - 1, node.copy(inner));
770
+ }
771
+ function closeSlice(slice, openStart, openEnd) {
772
+ if (openStart < slice.openStart)
773
+ slice = new Slice(closeRange(slice.content, -1, openStart, slice.openStart, 0, slice.openEnd), openStart, slice.openEnd);
774
+ if (openEnd < slice.openEnd)
775
+ slice = new Slice(closeRange(slice.content, 1, openEnd, slice.openEnd, 0, 0), slice.openStart, openEnd);
776
+ return slice;
777
+ }
778
+ var wrapMap = {
779
+ thead: ["table"],
780
+ tbody: ["table"],
781
+ tfoot: ["table"],
782
+ caption: ["table"],
783
+ colgroup: ["table"],
784
+ col: ["table", "colgroup"],
785
+ tr: ["table", "tbody"],
786
+ td: ["table", "tbody", "tr"],
787
+ th: ["table", "tbody", "tr"]
788
+ };
789
+ var _detachedDoc = null;
790
+ function detachedDoc() {
791
+ return _detachedDoc || (_detachedDoc = document.implementation.createHTMLDocument("title"));
792
+ }
793
+ var _policy = null;
794
+ function maybeWrapTrusted(html) {
795
+ let trustedTypes = window.trustedTypes;
796
+ if (!trustedTypes)
797
+ return html;
798
+ if (!_policy)
799
+ _policy = trustedTypes.defaultPolicy || trustedTypes.createPolicy("ProseMirrorClipboard", { createHTML: (s) => s });
800
+ return _policy.createHTML(html);
801
+ }
802
+ function readHTML(html) {
803
+ let metas = /^(\s*<meta [^>]*>)*/.exec(html);
804
+ if (metas)
805
+ html = html.slice(metas[0].length);
806
+ let elt = detachedDoc().createElement("div");
807
+ let firstTag = /<([a-z][^>\s]+)/i.exec(html), wrap;
808
+ if (wrap = firstTag && wrapMap[firstTag[1].toLowerCase()])
809
+ html = wrap.map((n) => "<" + n + ">").join("") + html + wrap.map((n) => "</" + n + ">").reverse().join("");
810
+ elt.innerHTML = maybeWrapTrusted(html);
811
+ if (wrap)
812
+ for (let i = 0; i < wrap.length; i++)
813
+ elt = elt.querySelector(wrap[i]) || elt;
814
+ return elt;
815
+ }
816
+ function restoreReplacedSpaces(dom) {
817
+ let nodes = dom.querySelectorAll(chrome ? "span:not([class]):not([style])" : "span.Apple-converted-space");
818
+ for (let i = 0; i < nodes.length; i++) {
819
+ let node = nodes[i];
820
+ if (node.childNodes.length == 1 && node.textContent == "\xA0" && node.parentNode)
821
+ node.parentNode.replaceChild(dom.ownerDocument.createTextNode(" "), node);
822
+ }
823
+ }
824
+ function addContext(slice, context) {
825
+ if (!slice.size)
826
+ return slice;
827
+ let schema = slice.content.firstChild.type.schema, array;
828
+ try {
829
+ array = JSON.parse(context);
830
+ } catch (e) {
831
+ return slice;
832
+ }
833
+ let { content, openStart, openEnd } = slice;
834
+ for (let i = array.length - 2; i >= 0; i -= 2) {
835
+ let type = schema.nodes[array[i]];
836
+ if (!type || type.hasRequiredAttrs())
837
+ break;
838
+ content = Fragment.from(type.create(array[i + 1], content));
839
+ openStart++;
840
+ openEnd++;
841
+ }
842
+ return new Slice(content, openStart, openEnd);
843
+ }
844
+ var handlers = {};
845
+ var editHandlers = {};
846
+ function setSelectionOrigin(view, origin) {
847
+ view.input.lastSelectionOrigin = origin;
848
+ view.input.lastSelectionTime = Date.now();
849
+ }
850
+ editHandlers.keydown = (view, _event) => {
851
+ let event = _event;
852
+ view.input.shiftKey = event.keyCode == 16 || event.shiftKey;
853
+ if (inOrNearComposition(view, event))
854
+ return;
855
+ view.input.lastKeyCode = event.keyCode;
856
+ view.input.lastKeyCodeTime = Date.now();
857
+ if (android && chrome && event.keyCode == 13)
858
+ return;
859
+ if (event.keyCode != 229)
860
+ view.domObserver.forceFlush();
861
+ if (ios && event.keyCode == 13 && !event.ctrlKey && !event.altKey && !event.metaKey) {
862
+ let now = Date.now();
863
+ view.input.lastIOSEnter = now;
864
+ view.input.lastIOSEnterFallbackTimeout = setTimeout(() => {
865
+ if (view.input.lastIOSEnter == now) {
866
+ view.someProp("handleKeyDown", (f) => f(view, keyEvent(13, "Enter")));
867
+ view.input.lastIOSEnter = 0;
868
+ }
869
+ }, 200);
870
+ } else if (view.someProp("handleKeyDown", (f) => f(view, event)) || captureKeyDown(view, event)) {
871
+ event.preventDefault();
872
+ } else {
873
+ setSelectionOrigin(view, "key");
874
+ }
875
+ };
876
+ editHandlers.keyup = (view, event) => {
877
+ if (event.keyCode == 16)
878
+ view.input.shiftKey = false;
879
+ };
880
+ editHandlers.keypress = (view, _event) => {
881
+ let event = _event;
882
+ if (inOrNearComposition(view, event) || !event.charCode || event.ctrlKey && !event.altKey || mac && event.metaKey)
883
+ return;
884
+ if (view.someProp("handleKeyPress", (f) => f(view, event))) {
885
+ event.preventDefault();
886
+ return;
887
+ }
888
+ let sel = view.state.selection;
889
+ if (!(sel instanceof TextSelection) || !sel.$from.sameParent(sel.$to)) {
890
+ let text = String.fromCharCode(event.charCode);
891
+ if (!/[\r\n]/.test(text) && !view.someProp("handleTextInput", (f) => f(view, sel.$from.pos, sel.$to.pos, text)))
892
+ view.dispatch(view.state.tr.insertText(text).scrollIntoView());
893
+ event.preventDefault();
894
+ }
895
+ };
896
+ function eventCoords(event) {
897
+ return { left: event.clientX, top: event.clientY };
898
+ }
899
+ function isNear(event, click) {
900
+ let dx = click.x - event.clientX, dy = click.y - event.clientY;
901
+ return dx * dx + dy * dy < 100;
902
+ }
903
+ function runHandlerOnContext(view, propName, pos, inside, event) {
904
+ if (inside == -1)
905
+ return false;
906
+ let $pos = view.state.doc.resolve(inside);
907
+ for (let i = $pos.depth + 1; i > 0; i--) {
908
+ if (view.someProp(propName, (f) => i > $pos.depth ? f(view, pos, $pos.nodeAfter, $pos.before(i), event, true) : f(view, pos, $pos.node(i), $pos.before(i), event, false)))
909
+ return true;
910
+ }
911
+ return false;
912
+ }
913
+ function updateSelection(view, selection, origin) {
914
+ if (!view.focused)
915
+ view.focus();
916
+ if (view.state.selection.eq(selection))
917
+ return;
918
+ let tr = view.state.tr.setSelection(selection);
919
+ if (origin == "pointer")
920
+ tr.setMeta("pointer", true);
921
+ view.dispatch(tr);
922
+ }
923
+ function selectClickedLeaf(view, inside) {
924
+ if (inside == -1)
925
+ return false;
926
+ let $pos = view.state.doc.resolve(inside), node = $pos.nodeAfter;
927
+ if (node && node.isAtom && NodeSelection.isSelectable(node)) {
928
+ updateSelection(view, new NodeSelection($pos), "pointer");
929
+ return true;
930
+ }
931
+ return false;
932
+ }
933
+ function selectClickedNode(view, inside) {
934
+ if (inside == -1)
935
+ return false;
936
+ let sel = view.state.selection, selectedNode, selectAt;
937
+ if (sel instanceof NodeSelection)
938
+ selectedNode = sel.node;
939
+ let $pos = view.state.doc.resolve(inside);
940
+ for (let i = $pos.depth + 1; i > 0; i--) {
941
+ let node = i > $pos.depth ? $pos.nodeAfter : $pos.node(i);
942
+ if (NodeSelection.isSelectable(node)) {
943
+ if (selectedNode && sel.$from.depth > 0 && i >= sel.$from.depth && $pos.before(sel.$from.depth + 1) == sel.$from.pos)
944
+ selectAt = $pos.before(sel.$from.depth);
945
+ else
946
+ selectAt = $pos.before(i);
947
+ break;
948
+ }
949
+ }
950
+ if (selectAt != null) {
951
+ updateSelection(view, NodeSelection.create(view.state.doc, selectAt), "pointer");
952
+ return true;
953
+ } else {
954
+ return false;
955
+ }
956
+ }
957
+ function handleSingleClick(view, pos, inside, event, selectNode) {
958
+ return runHandlerOnContext(view, "handleClickOn", pos, inside, event) || view.someProp("handleClick", (f) => f(view, pos, event)) || (selectNode ? selectClickedNode(view, inside) : selectClickedLeaf(view, inside));
959
+ }
960
+ function handleDoubleClick(view, pos, inside, event) {
961
+ return runHandlerOnContext(view, "handleDoubleClickOn", pos, inside, event) || view.someProp("handleDoubleClick", (f) => f(view, pos, event));
962
+ }
963
+ function handleTripleClick(view, pos, inside, event) {
964
+ return runHandlerOnContext(view, "handleTripleClickOn", pos, inside, event) || view.someProp("handleTripleClick", (f) => f(view, pos, event)) || defaultTripleClick(view, inside, event);
965
+ }
966
+ function defaultTripleClick(view, inside, event) {
967
+ if (event.button != 0)
968
+ return false;
969
+ let doc2 = view.state.doc;
970
+ if (inside == -1) {
971
+ if (doc2.inlineContent) {
972
+ updateSelection(view, TextSelection.create(doc2, 0, doc2.content.size), "pointer");
973
+ return true;
974
+ }
975
+ return false;
976
+ }
977
+ let $pos = doc2.resolve(inside);
978
+ for (let i = $pos.depth + 1; i > 0; i--) {
979
+ let node = i > $pos.depth ? $pos.nodeAfter : $pos.node(i);
980
+ let nodePos = $pos.before(i);
981
+ if (node.inlineContent)
982
+ updateSelection(view, TextSelection.create(doc2, nodePos + 1, nodePos + 1 + node.content.size), "pointer");
983
+ else if (NodeSelection.isSelectable(node))
984
+ updateSelection(view, NodeSelection.create(doc2, nodePos), "pointer");
985
+ else
986
+ continue;
987
+ return true;
988
+ }
989
+ }
990
+ function forceDOMFlush(view) {
991
+ return endComposition(view);
992
+ }
993
+ var selectNodeModifier = mac ? "metaKey" : "ctrlKey";
994
+ handlers.mousedown = (view, _event) => {
995
+ let event = _event;
996
+ view.input.shiftKey = event.shiftKey;
997
+ let flushed = forceDOMFlush(view);
998
+ let now = Date.now(), type = "singleClick";
999
+ if (now - view.input.lastClick.time < 500 && isNear(event, view.input.lastClick) && !event[selectNodeModifier]) {
1000
+ if (view.input.lastClick.type == "singleClick")
1001
+ type = "doubleClick";
1002
+ else if (view.input.lastClick.type == "doubleClick")
1003
+ type = "tripleClick";
1004
+ }
1005
+ view.input.lastClick = { time: now, x: event.clientX, y: event.clientY, type };
1006
+ let pos = view.posAtCoords(eventCoords(event));
1007
+ if (!pos)
1008
+ return;
1009
+ if (type == "singleClick") {
1010
+ if (view.input.mouseDown)
1011
+ view.input.mouseDown.done();
1012
+ view.input.mouseDown = new MouseDown(view, pos, event, !!flushed);
1013
+ } else if ((type == "doubleClick" ? handleDoubleClick : handleTripleClick)(view, pos.pos, pos.inside, event)) {
1014
+ event.preventDefault();
1015
+ } else {
1016
+ setSelectionOrigin(view, "pointer");
1017
+ }
1018
+ };
1019
+ var MouseDown = class {
1020
+ constructor(view, pos, event, flushed) {
1021
+ this.view = view;
1022
+ this.pos = pos;
1023
+ this.event = event;
1024
+ this.flushed = flushed;
1025
+ this.delayedSelectionSync = false;
1026
+ this.mightDrag = null;
1027
+ this.startDoc = view.state.doc;
1028
+ this.selectNode = !!event[selectNodeModifier];
1029
+ this.allowDefault = event.shiftKey;
1030
+ let targetNode, targetPos;
1031
+ if (pos.inside > -1) {
1032
+ targetNode = view.state.doc.nodeAt(pos.inside);
1033
+ targetPos = pos.inside;
1034
+ } else {
1035
+ let $pos = view.state.doc.resolve(pos.pos);
1036
+ targetNode = $pos.parent;
1037
+ targetPos = $pos.depth ? $pos.before() : 0;
1038
+ }
1039
+ const target = flushed ? null : event.target;
1040
+ const targetDesc = target ? view.docView.nearestDesc(target, true) : null;
1041
+ this.target = targetDesc && targetDesc.dom.nodeType == 1 ? targetDesc.dom : null;
1042
+ let { selection } = view.state;
1043
+ if (event.button == 0 && targetNode.type.spec.draggable && targetNode.type.spec.selectable !== false || selection instanceof NodeSelection && selection.from <= targetPos && selection.to > targetPos)
1044
+ this.mightDrag = {
1045
+ node: targetNode,
1046
+ pos: targetPos,
1047
+ addAttr: !!(this.target && !this.target.draggable),
1048
+ setUneditable: !!(this.target && gecko && !this.target.hasAttribute("contentEditable"))
1049
+ };
1050
+ if (this.target && this.mightDrag && (this.mightDrag.addAttr || this.mightDrag.setUneditable)) {
1051
+ this.view.domObserver.stop();
1052
+ if (this.mightDrag.addAttr)
1053
+ this.target.draggable = true;
1054
+ if (this.mightDrag.setUneditable)
1055
+ setTimeout(() => {
1056
+ if (this.view.input.mouseDown == this)
1057
+ this.target.setAttribute("contentEditable", "false");
1058
+ }, 20);
1059
+ this.view.domObserver.start();
1060
+ }
1061
+ view.root.addEventListener("mouseup", this.up = this.up.bind(this));
1062
+ view.root.addEventListener("mousemove", this.move = this.move.bind(this));
1063
+ setSelectionOrigin(view, "pointer");
1064
+ }
1065
+ done() {
1066
+ this.view.root.removeEventListener("mouseup", this.up);
1067
+ this.view.root.removeEventListener("mousemove", this.move);
1068
+ if (this.mightDrag && this.target) {
1069
+ this.view.domObserver.stop();
1070
+ if (this.mightDrag.addAttr)
1071
+ this.target.removeAttribute("draggable");
1072
+ if (this.mightDrag.setUneditable)
1073
+ this.target.removeAttribute("contentEditable");
1074
+ this.view.domObserver.start();
1075
+ }
1076
+ if (this.delayedSelectionSync)
1077
+ setTimeout(() => selectionToDOM(this.view));
1078
+ this.view.input.mouseDown = null;
1079
+ }
1080
+ up(event) {
1081
+ this.done();
1082
+ if (!this.view.dom.contains(event.target))
1083
+ return;
1084
+ let pos = this.pos;
1085
+ if (this.view.state.doc != this.startDoc)
1086
+ pos = this.view.posAtCoords(eventCoords(event));
1087
+ this.updateAllowDefault(event);
1088
+ if (this.allowDefault || !pos) {
1089
+ setSelectionOrigin(this.view, "pointer");
1090
+ } else if (handleSingleClick(this.view, pos.pos, pos.inside, event, this.selectNode)) {
1091
+ event.preventDefault();
1092
+ } else if (event.button == 0 && (this.flushed || // Safari ignores clicks on draggable elements
1093
+ safari && this.mightDrag && !this.mightDrag.node.isAtom || // Chrome will sometimes treat a node selection as a
1094
+ // cursor, but still report that the node is selected
1095
+ // when asked through getSelection. You'll then get a
1096
+ // situation where clicking at the point where that
1097
+ // (hidden) cursor is doesn't change the selection, and
1098
+ // thus doesn't get a reaction from ProseMirror. This
1099
+ // works around that.
1100
+ chrome && !this.view.state.selection.visible && Math.min(Math.abs(pos.pos - this.view.state.selection.from), Math.abs(pos.pos - this.view.state.selection.to)) <= 2)) {
1101
+ updateSelection(this.view, Selection.near(this.view.state.doc.resolve(pos.pos)), "pointer");
1102
+ event.preventDefault();
1103
+ } else {
1104
+ setSelectionOrigin(this.view, "pointer");
1105
+ }
1106
+ }
1107
+ move(event) {
1108
+ this.updateAllowDefault(event);
1109
+ setSelectionOrigin(this.view, "pointer");
1110
+ if (event.buttons == 0)
1111
+ this.done();
1112
+ }
1113
+ updateAllowDefault(event) {
1114
+ if (!this.allowDefault && (Math.abs(this.event.x - event.clientX) > 4 || Math.abs(this.event.y - event.clientY) > 4))
1115
+ this.allowDefault = true;
1116
+ }
1117
+ };
1118
+ handlers.touchstart = (view) => {
1119
+ view.input.lastTouch = Date.now();
1120
+ forceDOMFlush(view);
1121
+ setSelectionOrigin(view, "pointer");
1122
+ };
1123
+ handlers.touchmove = (view) => {
1124
+ view.input.lastTouch = Date.now();
1125
+ setSelectionOrigin(view, "pointer");
1126
+ };
1127
+ handlers.contextmenu = (view) => forceDOMFlush(view);
1128
+ function inOrNearComposition(view, event) {
1129
+ if (view.composing)
1130
+ return true;
1131
+ if (safari && Math.abs(event.timeStamp - view.input.compositionEndedAt) < 500) {
1132
+ view.input.compositionEndedAt = -2e8;
1133
+ return true;
1134
+ }
1135
+ return false;
1136
+ }
1137
+ var timeoutComposition = android ? 5e3 : -1;
1138
+ editHandlers.compositionstart = editHandlers.compositionupdate = (view) => {
1139
+ if (!view.composing) {
1140
+ view.domObserver.flush();
1141
+ let { state } = view, $pos = state.selection.$to;
1142
+ if (state.selection instanceof TextSelection && (state.storedMarks || !$pos.textOffset && $pos.parentOffset && $pos.nodeBefore.marks.some((m) => m.type.spec.inclusive === false))) {
1143
+ view.markCursor = view.state.storedMarks || $pos.marks();
1144
+ endComposition(view, true);
1145
+ view.markCursor = null;
1146
+ } else {
1147
+ endComposition(view, !state.selection.empty);
1148
+ if (gecko && state.selection.empty && $pos.parentOffset && !$pos.textOffset && $pos.nodeBefore.marks.length) {
1149
+ let sel = view.domSelectionRange();
1150
+ for (let node = sel.focusNode, offset = sel.focusOffset; node && node.nodeType == 1 && offset != 0; ) {
1151
+ let before = offset < 0 ? node.lastChild : node.childNodes[offset - 1];
1152
+ if (!before)
1153
+ break;
1154
+ if (before.nodeType == 3) {
1155
+ let sel2 = view.domSelection();
1156
+ if (sel2)
1157
+ sel2.collapse(before, before.nodeValue.length);
1158
+ break;
1159
+ } else {
1160
+ node = before;
1161
+ offset = -1;
1162
+ }
1163
+ }
1164
+ }
1165
+ }
1166
+ view.input.composing = true;
1167
+ }
1168
+ scheduleComposeEnd(view, timeoutComposition);
1169
+ };
1170
+ editHandlers.compositionend = (view, event) => {
1171
+ if (view.composing) {
1172
+ view.input.composing = false;
1173
+ view.input.compositionEndedAt = event.timeStamp;
1174
+ view.input.compositionPendingChanges = view.domObserver.pendingRecords().length ? view.input.compositionID : 0;
1175
+ view.input.compositionNode = null;
1176
+ if (view.input.compositionPendingChanges)
1177
+ Promise.resolve().then(() => view.domObserver.flush());
1178
+ view.input.compositionID++;
1179
+ scheduleComposeEnd(view, 20);
1180
+ }
1181
+ };
1182
+ function scheduleComposeEnd(view, delay) {
1183
+ clearTimeout(view.input.composingTimeout);
1184
+ if (delay > -1)
1185
+ view.input.composingTimeout = setTimeout(() => endComposition(view), delay);
1186
+ }
1187
+ function clearComposition(view) {
1188
+ if (view.composing) {
1189
+ view.input.composing = false;
1190
+ view.input.compositionEndedAt = timestampFromCustomEvent();
1191
+ }
1192
+ while (view.input.compositionNodes.length > 0)
1193
+ view.input.compositionNodes.pop().markParentsDirty();
1194
+ }
1195
+ function timestampFromCustomEvent() {
1196
+ let event = document.createEvent("Event");
1197
+ event.initEvent("event", true, true);
1198
+ return event.timeStamp;
1199
+ }
1200
+ function endComposition(view, restarting = false) {
1201
+ if (android && view.domObserver.flushingSoon >= 0)
1202
+ return;
1203
+ view.domObserver.forceFlush();
1204
+ clearComposition(view);
1205
+ if (restarting || view.docView && view.docView.dirty) {
1206
+ let sel = selectionFromDOM(view);
1207
+ if (sel && !sel.eq(view.state.selection))
1208
+ view.dispatch(view.state.tr.setSelection(sel));
1209
+ else if ((view.markCursor || restarting) && !view.state.selection.empty)
1210
+ view.dispatch(view.state.tr.deleteSelection());
1211
+ else
1212
+ view.updateState(view.state);
1213
+ return true;
1214
+ }
1215
+ return false;
1216
+ }
1217
+ function captureCopy(view, dom) {
1218
+ if (!view.dom.parentNode)
1219
+ return;
1220
+ let wrap = view.dom.parentNode.appendChild(document.createElement("div"));
1221
+ wrap.appendChild(dom);
1222
+ wrap.style.cssText = "position: fixed; left: -10000px; top: 10px";
1223
+ let sel = getSelection(), range = document.createRange();
1224
+ range.selectNodeContents(dom);
1225
+ view.dom.blur();
1226
+ sel.removeAllRanges();
1227
+ sel.addRange(range);
1228
+ setTimeout(() => {
1229
+ if (wrap.parentNode)
1230
+ wrap.parentNode.removeChild(wrap);
1231
+ view.focus();
1232
+ }, 50);
1233
+ }
1234
+ var brokenClipboardAPI = ie && ie_version < 15 || ios && webkit_version < 604;
1235
+ handlers.copy = editHandlers.cut = (view, _event) => {
1236
+ let event = _event;
1237
+ let sel = view.state.selection, cut = event.type == "cut";
1238
+ if (sel.empty)
1239
+ return;
1240
+ let data = brokenClipboardAPI ? null : event.clipboardData;
1241
+ let slice = sel.content(), { dom, text } = serializeForClipboard(view, slice);
1242
+ if (data) {
1243
+ event.preventDefault();
1244
+ data.clearData();
1245
+ data.setData("text/html", dom.innerHTML);
1246
+ data.setData("text/plain", text);
1247
+ } else {
1248
+ captureCopy(view, dom);
1249
+ }
1250
+ if (cut)
1251
+ view.dispatch(view.state.tr.deleteSelection().scrollIntoView().setMeta("uiEvent", "cut"));
1252
+ };
1253
+ function sliceSingleNode(slice) {
1254
+ return slice.openStart == 0 && slice.openEnd == 0 && slice.content.childCount == 1 ? slice.content.firstChild : null;
1255
+ }
1256
+ function capturePaste(view, event) {
1257
+ if (!view.dom.parentNode)
1258
+ return;
1259
+ let plainText = view.input.shiftKey || view.state.selection.$from.parent.type.spec.code;
1260
+ let target = view.dom.parentNode.appendChild(document.createElement(plainText ? "textarea" : "div"));
1261
+ if (!plainText)
1262
+ target.contentEditable = "true";
1263
+ target.style.cssText = "position: fixed; left: -10000px; top: 10px";
1264
+ target.focus();
1265
+ let plain = view.input.shiftKey && view.input.lastKeyCode != 45;
1266
+ setTimeout(() => {
1267
+ view.focus();
1268
+ if (target.parentNode)
1269
+ target.parentNode.removeChild(target);
1270
+ if (plainText)
1271
+ doPaste(view, target.value, null, plain, event);
1272
+ else
1273
+ doPaste(view, target.textContent, target.innerHTML, plain, event);
1274
+ }, 50);
1275
+ }
1276
+ function doPaste(view, text, html, preferPlain, event) {
1277
+ let slice = parseFromClipboard(view, text, html, preferPlain, view.state.selection.$from);
1278
+ if (view.someProp("handlePaste", (f) => f(view, event, slice || Slice.empty)))
1279
+ return true;
1280
+ if (!slice)
1281
+ return false;
1282
+ let singleNode = sliceSingleNode(slice);
1283
+ let tr = singleNode ? view.state.tr.replaceSelectionWith(singleNode, preferPlain) : view.state.tr.replaceSelection(slice);
1284
+ view.dispatch(tr.scrollIntoView().setMeta("paste", true).setMeta("uiEvent", "paste"));
1285
+ return true;
1286
+ }
1287
+ function getText(clipboardData) {
1288
+ let text = clipboardData.getData("text/plain") || clipboardData.getData("Text");
1289
+ if (text)
1290
+ return text;
1291
+ let uris = clipboardData.getData("text/uri-list");
1292
+ return uris ? uris.replace(/\r?\n/g, " ") : "";
1293
+ }
1294
+ editHandlers.paste = (view, _event) => {
1295
+ let event = _event;
1296
+ if (view.composing && !android)
1297
+ return;
1298
+ let data = brokenClipboardAPI ? null : event.clipboardData;
1299
+ let plain = view.input.shiftKey && view.input.lastKeyCode != 45;
1300
+ if (data && doPaste(view, getText(data), data.getData("text/html"), plain, event))
1301
+ event.preventDefault();
1302
+ else
1303
+ capturePaste(view, event);
1304
+ };
1305
+ var Dragging = class {
1306
+ constructor(slice, move, node) {
1307
+ this.slice = slice;
1308
+ this.move = move;
1309
+ this.node = node;
1310
+ }
1311
+ };
1312
+ var dragCopyModifier = mac ? "altKey" : "ctrlKey";
1313
+ function dragMoves(view, event) {
1314
+ let moves = view.someProp("dragCopies", (test) => !test(event));
1315
+ return moves != null ? moves : !event[dragCopyModifier];
1316
+ }
1317
+ handlers.dragstart = (view, _event) => {
1318
+ let event = _event;
1319
+ let mouseDown = view.input.mouseDown;
1320
+ if (mouseDown)
1321
+ mouseDown.done();
1322
+ if (!event.dataTransfer)
1323
+ return;
1324
+ let sel = view.state.selection;
1325
+ let pos = sel.empty ? null : view.posAtCoords(eventCoords(event));
1326
+ let node;
1327
+ if (pos && pos.pos >= sel.from && pos.pos <= (sel instanceof NodeSelection ? sel.to - 1 : sel.to)) ;
1328
+ else if (mouseDown && mouseDown.mightDrag) {
1329
+ node = NodeSelection.create(view.state.doc, mouseDown.mightDrag.pos);
1330
+ } else if (event.target && event.target.nodeType == 1) {
1331
+ let desc = view.docView.nearestDesc(event.target, true);
1332
+ if (desc && desc.node.type.spec.draggable && desc != view.docView)
1333
+ node = NodeSelection.create(view.state.doc, desc.posBefore);
1334
+ }
1335
+ let draggedSlice = (node || view.state.selection).content();
1336
+ let { dom, text, slice } = serializeForClipboard(view, draggedSlice);
1337
+ if (!event.dataTransfer.files.length || !chrome || chrome_version > 120)
1338
+ event.dataTransfer.clearData();
1339
+ event.dataTransfer.setData(brokenClipboardAPI ? "Text" : "text/html", dom.innerHTML);
1340
+ event.dataTransfer.effectAllowed = "copyMove";
1341
+ if (!brokenClipboardAPI)
1342
+ event.dataTransfer.setData("text/plain", text);
1343
+ view.dragging = new Dragging(slice, dragMoves(view, event), node);
1344
+ };
1345
+ handlers.dragend = (view) => {
1346
+ let dragging = view.dragging;
1347
+ window.setTimeout(() => {
1348
+ if (view.dragging == dragging)
1349
+ view.dragging = null;
1350
+ }, 50);
1351
+ };
1352
+ editHandlers.dragover = editHandlers.dragenter = (_, e) => e.preventDefault();
1353
+ editHandlers.drop = (view, _event) => {
1354
+ let event = _event;
1355
+ let dragging = view.dragging;
1356
+ view.dragging = null;
1357
+ if (!event.dataTransfer)
1358
+ return;
1359
+ let eventPos = view.posAtCoords(eventCoords(event));
1360
+ if (!eventPos)
1361
+ return;
1362
+ let $mouse = view.state.doc.resolve(eventPos.pos);
1363
+ let slice = dragging && dragging.slice;
1364
+ if (slice) {
1365
+ view.someProp("transformPasted", (f) => {
1366
+ slice = f(slice, view);
1367
+ });
1368
+ } else {
1369
+ slice = parseFromClipboard(view, getText(event.dataTransfer), brokenClipboardAPI ? null : event.dataTransfer.getData("text/html"), false, $mouse);
1370
+ }
1371
+ let move = !!(dragging && dragMoves(view, event));
1372
+ if (view.someProp("handleDrop", (f) => f(view, event, slice || Slice.empty, move))) {
1373
+ event.preventDefault();
1374
+ return;
1375
+ }
1376
+ if (!slice)
1377
+ return;
1378
+ event.preventDefault();
1379
+ let insertPos = slice ? dropPoint(view.state.doc, $mouse.pos, slice) : $mouse.pos;
1380
+ if (insertPos == null)
1381
+ insertPos = $mouse.pos;
1382
+ let tr = view.state.tr;
1383
+ if (move) {
1384
+ let { node } = dragging;
1385
+ if (node)
1386
+ node.replace(tr);
1387
+ else
1388
+ tr.deleteSelection();
1389
+ }
1390
+ let pos = tr.mapping.map(insertPos);
1391
+ let isNode = slice.openStart == 0 && slice.openEnd == 0 && slice.content.childCount == 1;
1392
+ let beforeInsert = tr.doc;
1393
+ if (isNode)
1394
+ tr.replaceRangeWith(pos, pos, slice.content.firstChild);
1395
+ else
1396
+ tr.replaceRange(pos, pos, slice);
1397
+ if (tr.doc.eq(beforeInsert))
1398
+ return;
1399
+ let $pos = tr.doc.resolve(pos);
1400
+ if (isNode && NodeSelection.isSelectable(slice.content.firstChild) && $pos.nodeAfter && $pos.nodeAfter.sameMarkup(slice.content.firstChild)) {
1401
+ tr.setSelection(new NodeSelection($pos));
1402
+ } else {
1403
+ let end = tr.mapping.map(insertPos);
1404
+ tr.mapping.maps[tr.mapping.maps.length - 1].forEach((_from, _to, _newFrom, newTo) => end = newTo);
1405
+ tr.setSelection(selectionBetween(view, $pos, tr.doc.resolve(end)));
1406
+ }
1407
+ view.focus();
1408
+ view.dispatch(tr.setMeta("uiEvent", "drop"));
1409
+ };
1410
+ handlers.focus = (view) => {
1411
+ view.input.lastFocus = Date.now();
1412
+ if (!view.focused) {
1413
+ view.domObserver.stop();
1414
+ view.dom.classList.add("ProseMirror-focused");
1415
+ view.domObserver.start();
1416
+ view.focused = true;
1417
+ setTimeout(() => {
1418
+ if (view.docView && view.hasFocus() && !view.domObserver.currentSelection.eq(view.domSelectionRange()))
1419
+ selectionToDOM(view);
1420
+ }, 20);
1421
+ }
1422
+ };
1423
+ handlers.blur = (view, _event) => {
1424
+ let event = _event;
1425
+ if (view.focused) {
1426
+ view.domObserver.stop();
1427
+ view.dom.classList.remove("ProseMirror-focused");
1428
+ view.domObserver.start();
1429
+ if (event.relatedTarget && view.dom.contains(event.relatedTarget))
1430
+ view.domObserver.currentSelection.clear();
1431
+ view.focused = false;
1432
+ }
1433
+ };
1434
+ handlers.beforeinput = (view, _event) => {
1435
+ let event = _event;
1436
+ if (chrome && android && event.inputType == "deleteContentBackward") {
1437
+ view.domObserver.flushSoon();
1438
+ let { domChangeCount } = view.input;
1439
+ setTimeout(() => {
1440
+ if (view.input.domChangeCount != domChangeCount)
1441
+ return;
1442
+ view.dom.blur();
1443
+ view.focus();
1444
+ if (view.someProp("handleKeyDown", (f) => f(view, keyEvent(8, "Backspace"))))
1445
+ return;
1446
+ let { $cursor } = view.state.selection;
1447
+ if ($cursor && $cursor.pos > 0)
1448
+ view.dispatch(view.state.tr.delete($cursor.pos - 1, $cursor.pos).scrollIntoView());
1449
+ }, 50);
1450
+ }
1451
+ };
1452
+ for (let prop in editHandlers)
1453
+ handlers[prop] = editHandlers[prop];
1454
+ function compareObjs(a, b) {
1455
+ if (a == b)
1456
+ return true;
1457
+ for (let p in a)
1458
+ if (a[p] !== b[p])
1459
+ return false;
1460
+ for (let p in b)
1461
+ if (!(p in a))
1462
+ return false;
1463
+ return true;
1464
+ }
1465
+ var WidgetType = class _WidgetType {
1466
+ constructor(toDOM, spec) {
1467
+ this.toDOM = toDOM;
1468
+ this.spec = spec || noSpec;
1469
+ this.side = this.spec.side || 0;
1470
+ }
1471
+ map(mapping, span, offset, oldOffset) {
1472
+ let { pos, deleted } = mapping.mapResult(span.from + oldOffset, this.side < 0 ? -1 : 1);
1473
+ return deleted ? null : new Decoration(pos - offset, pos - offset, this);
1474
+ }
1475
+ valid() {
1476
+ return true;
1477
+ }
1478
+ eq(other) {
1479
+ return this == other || other instanceof _WidgetType && (this.spec.key && this.spec.key == other.spec.key || this.toDOM == other.toDOM && compareObjs(this.spec, other.spec));
1480
+ }
1481
+ destroy(node) {
1482
+ if (this.spec.destroy)
1483
+ this.spec.destroy(node);
1484
+ }
1485
+ };
1486
+ var InlineType = class _InlineType {
1487
+ constructor(attrs, spec) {
1488
+ this.attrs = attrs;
1489
+ this.spec = spec || noSpec;
1490
+ }
1491
+ map(mapping, span, offset, oldOffset) {
1492
+ let from = mapping.map(span.from + oldOffset, this.spec.inclusiveStart ? -1 : 1) - offset;
1493
+ let to = mapping.map(span.to + oldOffset, this.spec.inclusiveEnd ? 1 : -1) - offset;
1494
+ return from >= to ? null : new Decoration(from, to, this);
1495
+ }
1496
+ valid(_, span) {
1497
+ return span.from < span.to;
1498
+ }
1499
+ eq(other) {
1500
+ return this == other || other instanceof _InlineType && compareObjs(this.attrs, other.attrs) && compareObjs(this.spec, other.spec);
1501
+ }
1502
+ static is(span) {
1503
+ return span.type instanceof _InlineType;
1504
+ }
1505
+ destroy() {
1506
+ }
1507
+ };
1508
+ var NodeType = class _NodeType {
1509
+ constructor(attrs, spec) {
1510
+ this.attrs = attrs;
1511
+ this.spec = spec || noSpec;
1512
+ }
1513
+ map(mapping, span, offset, oldOffset) {
1514
+ let from = mapping.mapResult(span.from + oldOffset, 1);
1515
+ if (from.deleted)
1516
+ return null;
1517
+ let to = mapping.mapResult(span.to + oldOffset, -1);
1518
+ if (to.deleted || to.pos <= from.pos)
1519
+ return null;
1520
+ return new Decoration(from.pos - offset, to.pos - offset, this);
1521
+ }
1522
+ valid(node, span) {
1523
+ let { index, offset } = node.content.findIndex(span.from), child;
1524
+ return offset == span.from && !(child = node.child(index)).isText && offset + child.nodeSize == span.to;
1525
+ }
1526
+ eq(other) {
1527
+ return this == other || other instanceof _NodeType && compareObjs(this.attrs, other.attrs) && compareObjs(this.spec, other.spec);
1528
+ }
1529
+ destroy() {
1530
+ }
1531
+ };
1532
+ var Decoration = class _Decoration {
1533
+ /**
1534
+ @internal
1535
+ */
1536
+ constructor(from, to, type) {
1537
+ this.from = from;
1538
+ this.to = to;
1539
+ this.type = type;
1540
+ }
1541
+ /**
1542
+ @internal
1543
+ */
1544
+ copy(from, to) {
1545
+ return new _Decoration(from, to, this.type);
1546
+ }
1547
+ /**
1548
+ @internal
1549
+ */
1550
+ eq(other, offset = 0) {
1551
+ return this.type.eq(other.type) && this.from + offset == other.from && this.to + offset == other.to;
1552
+ }
1553
+ /**
1554
+ @internal
1555
+ */
1556
+ map(mapping, offset, oldOffset) {
1557
+ return this.type.map(mapping, this, offset, oldOffset);
1558
+ }
1559
+ /**
1560
+ Creates a widget decoration, which is a DOM node that's shown in
1561
+ the document at the given position. It is recommended that you
1562
+ delay rendering the widget by passing a function that will be
1563
+ called when the widget is actually drawn in a view, but you can
1564
+ also directly pass a DOM node. `getPos` can be used to find the
1565
+ widget's current document position.
1566
+ */
1567
+ static widget(pos, toDOM, spec) {
1568
+ return new _Decoration(pos, pos, new WidgetType(toDOM, spec));
1569
+ }
1570
+ /**
1571
+ Creates an inline decoration, which adds the given attributes to
1572
+ each inline node between `from` and `to`.
1573
+ */
1574
+ static inline(from, to, attrs, spec) {
1575
+ return new _Decoration(from, to, new InlineType(attrs, spec));
1576
+ }
1577
+ /**
1578
+ Creates a node decoration. `from` and `to` should point precisely
1579
+ before and after a node in the document. That node, and only that
1580
+ node, will receive the given attributes.
1581
+ */
1582
+ static node(from, to, attrs, spec) {
1583
+ return new _Decoration(from, to, new NodeType(attrs, spec));
1584
+ }
1585
+ /**
1586
+ The spec provided when creating this decoration. Can be useful
1587
+ if you've stored extra information in that object.
1588
+ */
1589
+ get spec() {
1590
+ return this.type.spec;
1591
+ }
1592
+ /**
1593
+ @internal
1594
+ */
1595
+ get inline() {
1596
+ return this.type instanceof InlineType;
1597
+ }
1598
+ /**
1599
+ @internal
1600
+ */
1601
+ get widget() {
1602
+ return this.type instanceof WidgetType;
1603
+ }
1604
+ };
1605
+ var none = [];
1606
+ var noSpec = {};
1607
+ var DecorationSet = class _DecorationSet {
1608
+ /**
1609
+ @internal
1610
+ */
1611
+ constructor(local, children) {
1612
+ this.local = local.length ? local : none;
1613
+ this.children = children.length ? children : none;
1614
+ }
1615
+ /**
1616
+ Create a set of decorations, using the structure of the given
1617
+ document. This will consume (modify) the `decorations` array, so
1618
+ you must make a copy if you want need to preserve that.
1619
+ */
1620
+ static create(doc2, decorations) {
1621
+ return decorations.length ? buildTree(decorations, doc2, 0, noSpec) : empty;
1622
+ }
1623
+ /**
1624
+ Find all decorations in this set which touch the given range
1625
+ (including decorations that start or end directly at the
1626
+ boundaries) and match the given predicate on their spec. When
1627
+ `start` and `end` are omitted, all decorations in the set are
1628
+ considered. When `predicate` isn't given, all decorations are
1629
+ assumed to match.
1630
+ */
1631
+ find(start, end, predicate) {
1632
+ let result = [];
1633
+ this.findInner(start == null ? 0 : start, end == null ? 1e9 : end, result, 0, predicate);
1634
+ return result;
1635
+ }
1636
+ findInner(start, end, result, offset, predicate) {
1637
+ for (let i = 0; i < this.local.length; i++) {
1638
+ let span = this.local[i];
1639
+ if (span.from <= end && span.to >= start && (!predicate || predicate(span.spec)))
1640
+ result.push(span.copy(span.from + offset, span.to + offset));
1641
+ }
1642
+ for (let i = 0; i < this.children.length; i += 3) {
1643
+ if (this.children[i] < end && this.children[i + 1] > start) {
1644
+ let childOff = this.children[i] + 1;
1645
+ this.children[i + 2].findInner(start - childOff, end - childOff, result, offset + childOff, predicate);
1646
+ }
1647
+ }
1648
+ }
1649
+ /**
1650
+ Map the set of decorations in response to a change in the
1651
+ document.
1652
+ */
1653
+ map(mapping, doc2, options) {
1654
+ if (this == empty || mapping.maps.length == 0)
1655
+ return this;
1656
+ return this.mapInner(mapping, doc2, 0, 0, options || noSpec);
1657
+ }
1658
+ /**
1659
+ @internal
1660
+ */
1661
+ mapInner(mapping, node, offset, oldOffset, options) {
1662
+ let newLocal;
1663
+ for (let i = 0; i < this.local.length; i++) {
1664
+ let mapped = this.local[i].map(mapping, offset, oldOffset);
1665
+ if (mapped && mapped.type.valid(node, mapped))
1666
+ (newLocal || (newLocal = [])).push(mapped);
1667
+ else if (options.onRemove)
1668
+ options.onRemove(this.local[i].spec);
1669
+ }
1670
+ if (this.children.length)
1671
+ return mapChildren(this.children, newLocal || [], mapping, node, offset, oldOffset, options);
1672
+ else
1673
+ return newLocal ? new _DecorationSet(newLocal.sort(byPos), none) : empty;
1674
+ }
1675
+ /**
1676
+ Add the given array of decorations to the ones in the set,
1677
+ producing a new set. Consumes the `decorations` array. Needs
1678
+ access to the current document to create the appropriate tree
1679
+ structure.
1680
+ */
1681
+ add(doc2, decorations) {
1682
+ if (!decorations.length)
1683
+ return this;
1684
+ if (this == empty)
1685
+ return _DecorationSet.create(doc2, decorations);
1686
+ return this.addInner(doc2, decorations, 0);
1687
+ }
1688
+ addInner(doc2, decorations, offset) {
1689
+ let children, childIndex = 0;
1690
+ doc2.forEach((childNode, childOffset) => {
1691
+ let baseOffset = childOffset + offset, found;
1692
+ if (!(found = takeSpansForNode(decorations, childNode, baseOffset)))
1693
+ return;
1694
+ if (!children)
1695
+ children = this.children.slice();
1696
+ while (childIndex < children.length && children[childIndex] < childOffset)
1697
+ childIndex += 3;
1698
+ if (children[childIndex] == childOffset)
1699
+ children[childIndex + 2] = children[childIndex + 2].addInner(childNode, found, baseOffset + 1);
1700
+ else
1701
+ children.splice(childIndex, 0, childOffset, childOffset + childNode.nodeSize, buildTree(found, childNode, baseOffset + 1, noSpec));
1702
+ childIndex += 3;
1703
+ });
1704
+ let local = moveSpans(childIndex ? withoutNulls(decorations) : decorations, -offset);
1705
+ for (let i = 0; i < local.length; i++)
1706
+ if (!local[i].type.valid(doc2, local[i]))
1707
+ local.splice(i--, 1);
1708
+ return new _DecorationSet(local.length ? this.local.concat(local).sort(byPos) : this.local, children || this.children);
1709
+ }
1710
+ /**
1711
+ Create a new set that contains the decorations in this set, minus
1712
+ the ones in the given array.
1713
+ */
1714
+ remove(decorations) {
1715
+ if (decorations.length == 0 || this == empty)
1716
+ return this;
1717
+ return this.removeInner(decorations, 0);
1718
+ }
1719
+ removeInner(decorations, offset) {
1720
+ let children = this.children, local = this.local;
1721
+ for (let i = 0; i < children.length; i += 3) {
1722
+ let found;
1723
+ let from = children[i] + offset, to = children[i + 1] + offset;
1724
+ for (let j = 0, span; j < decorations.length; j++)
1725
+ if (span = decorations[j]) {
1726
+ if (span.from > from && span.to < to) {
1727
+ decorations[j] = null;
1728
+ (found || (found = [])).push(span);
1729
+ }
1730
+ }
1731
+ if (!found)
1732
+ continue;
1733
+ if (children == this.children)
1734
+ children = this.children.slice();
1735
+ let removed = children[i + 2].removeInner(found, from + 1);
1736
+ if (removed != empty) {
1737
+ children[i + 2] = removed;
1738
+ } else {
1739
+ children.splice(i, 3);
1740
+ i -= 3;
1741
+ }
1742
+ }
1743
+ if (local.length) {
1744
+ for (let i = 0, span; i < decorations.length; i++)
1745
+ if (span = decorations[i]) {
1746
+ for (let j = 0; j < local.length; j++)
1747
+ if (local[j].eq(span, offset)) {
1748
+ if (local == this.local)
1749
+ local = this.local.slice();
1750
+ local.splice(j--, 1);
1751
+ }
1752
+ }
1753
+ }
1754
+ if (children == this.children && local == this.local)
1755
+ return this;
1756
+ return local.length || children.length ? new _DecorationSet(local, children) : empty;
1757
+ }
1758
+ forChild(offset, node) {
1759
+ if (this == empty)
1760
+ return this;
1761
+ if (node.isLeaf)
1762
+ return _DecorationSet.empty;
1763
+ let child, local;
1764
+ for (let i = 0; i < this.children.length; i += 3)
1765
+ if (this.children[i] >= offset) {
1766
+ if (this.children[i] == offset)
1767
+ child = this.children[i + 2];
1768
+ break;
1769
+ }
1770
+ let start = offset + 1, end = start + node.content.size;
1771
+ for (let i = 0; i < this.local.length; i++) {
1772
+ let dec = this.local[i];
1773
+ if (dec.from < end && dec.to > start && dec.type instanceof InlineType) {
1774
+ let from = Math.max(start, dec.from) - start, to = Math.min(end, dec.to) - start;
1775
+ if (from < to)
1776
+ (local || (local = [])).push(dec.copy(from, to));
1777
+ }
1778
+ }
1779
+ if (local) {
1780
+ let localSet = new _DecorationSet(local.sort(byPos), none);
1781
+ return child ? new DecorationGroup([localSet, child]) : localSet;
1782
+ }
1783
+ return child || empty;
1784
+ }
1785
+ /**
1786
+ @internal
1787
+ */
1788
+ eq(other) {
1789
+ if (this == other)
1790
+ return true;
1791
+ if (!(other instanceof _DecorationSet) || this.local.length != other.local.length || this.children.length != other.children.length)
1792
+ return false;
1793
+ for (let i = 0; i < this.local.length; i++)
1794
+ if (!this.local[i].eq(other.local[i]))
1795
+ return false;
1796
+ for (let i = 0; i < this.children.length; i += 3)
1797
+ if (this.children[i] != other.children[i] || this.children[i + 1] != other.children[i + 1] || !this.children[i + 2].eq(other.children[i + 2]))
1798
+ return false;
1799
+ return true;
1800
+ }
1801
+ /**
1802
+ @internal
1803
+ */
1804
+ locals(node) {
1805
+ return removeOverlap(this.localsInner(node));
1806
+ }
1807
+ /**
1808
+ @internal
1809
+ */
1810
+ localsInner(node) {
1811
+ if (this == empty)
1812
+ return none;
1813
+ if (node.inlineContent || !this.local.some(InlineType.is))
1814
+ return this.local;
1815
+ let result = [];
1816
+ for (let i = 0; i < this.local.length; i++) {
1817
+ if (!(this.local[i].type instanceof InlineType))
1818
+ result.push(this.local[i]);
1819
+ }
1820
+ return result;
1821
+ }
1822
+ forEachSet(f) {
1823
+ f(this);
1824
+ }
1825
+ };
1826
+ DecorationSet.empty = new DecorationSet([], []);
1827
+ DecorationSet.removeOverlap = removeOverlap;
1828
+ var empty = DecorationSet.empty;
1829
+ var DecorationGroup = class _DecorationGroup {
1830
+ constructor(members) {
1831
+ this.members = members;
1832
+ }
1833
+ map(mapping, doc2) {
1834
+ const mappedDecos = this.members.map((member) => member.map(mapping, doc2, noSpec));
1835
+ return _DecorationGroup.from(mappedDecos);
1836
+ }
1837
+ forChild(offset, child) {
1838
+ if (child.isLeaf)
1839
+ return DecorationSet.empty;
1840
+ let found = [];
1841
+ for (let i = 0; i < this.members.length; i++) {
1842
+ let result = this.members[i].forChild(offset, child);
1843
+ if (result == empty)
1844
+ continue;
1845
+ if (result instanceof _DecorationGroup)
1846
+ found = found.concat(result.members);
1847
+ else
1848
+ found.push(result);
1849
+ }
1850
+ return _DecorationGroup.from(found);
1851
+ }
1852
+ eq(other) {
1853
+ if (!(other instanceof _DecorationGroup) || other.members.length != this.members.length)
1854
+ return false;
1855
+ for (let i = 0; i < this.members.length; i++)
1856
+ if (!this.members[i].eq(other.members[i]))
1857
+ return false;
1858
+ return true;
1859
+ }
1860
+ locals(node) {
1861
+ let result, sorted = true;
1862
+ for (let i = 0; i < this.members.length; i++) {
1863
+ let locals = this.members[i].localsInner(node);
1864
+ if (!locals.length)
1865
+ continue;
1866
+ if (!result) {
1867
+ result = locals;
1868
+ } else {
1869
+ if (sorted) {
1870
+ result = result.slice();
1871
+ sorted = false;
1872
+ }
1873
+ for (let j = 0; j < locals.length; j++)
1874
+ result.push(locals[j]);
1875
+ }
1876
+ }
1877
+ return result ? removeOverlap(sorted ? result : result.sort(byPos)) : none;
1878
+ }
1879
+ // Create a group for the given array of decoration sets, or return
1880
+ // a single set when possible.
1881
+ static from(members) {
1882
+ switch (members.length) {
1883
+ case 0:
1884
+ return empty;
1885
+ case 1:
1886
+ return members[0];
1887
+ default:
1888
+ return new _DecorationGroup(members.every((m) => m instanceof DecorationSet) ? members : members.reduce((r, m) => r.concat(m instanceof DecorationSet ? m : m.members), []));
1889
+ }
1890
+ }
1891
+ forEachSet(f) {
1892
+ for (let i = 0; i < this.members.length; i++)
1893
+ this.members[i].forEachSet(f);
1894
+ }
1895
+ };
1896
+ function mapChildren(oldChildren, newLocal, mapping, node, offset, oldOffset, options) {
1897
+ let children = oldChildren.slice();
1898
+ for (let i = 0, baseOffset = oldOffset; i < mapping.maps.length; i++) {
1899
+ let moved = 0;
1900
+ mapping.maps[i].forEach((oldStart, oldEnd, newStart, newEnd) => {
1901
+ let dSize = newEnd - newStart - (oldEnd - oldStart);
1902
+ for (let i2 = 0; i2 < children.length; i2 += 3) {
1903
+ let end = children[i2 + 1];
1904
+ if (end < 0 || oldStart > end + baseOffset - moved)
1905
+ continue;
1906
+ let start = children[i2] + baseOffset - moved;
1907
+ if (oldEnd >= start) {
1908
+ children[i2 + 1] = oldStart <= start ? -2 : -1;
1909
+ } else if (oldStart >= baseOffset && dSize) {
1910
+ children[i2] += dSize;
1911
+ children[i2 + 1] += dSize;
1912
+ }
1913
+ }
1914
+ moved += dSize;
1915
+ });
1916
+ baseOffset = mapping.maps[i].map(baseOffset, -1);
1917
+ }
1918
+ let mustRebuild = false;
1919
+ for (let i = 0; i < children.length; i += 3)
1920
+ if (children[i + 1] < 0) {
1921
+ if (children[i + 1] == -2) {
1922
+ mustRebuild = true;
1923
+ children[i + 1] = -1;
1924
+ continue;
1925
+ }
1926
+ let from = mapping.map(oldChildren[i] + oldOffset), fromLocal = from - offset;
1927
+ if (fromLocal < 0 || fromLocal >= node.content.size) {
1928
+ mustRebuild = true;
1929
+ continue;
1930
+ }
1931
+ let to = mapping.map(oldChildren[i + 1] + oldOffset, -1), toLocal = to - offset;
1932
+ let { index, offset: childOffset } = node.content.findIndex(fromLocal);
1933
+ let childNode = node.maybeChild(index);
1934
+ if (childNode && childOffset == fromLocal && childOffset + childNode.nodeSize == toLocal) {
1935
+ let mapped = children[i + 2].mapInner(mapping, childNode, from + 1, oldChildren[i] + oldOffset + 1, options);
1936
+ if (mapped != empty) {
1937
+ children[i] = fromLocal;
1938
+ children[i + 1] = toLocal;
1939
+ children[i + 2] = mapped;
1940
+ } else {
1941
+ children[i + 1] = -2;
1942
+ mustRebuild = true;
1943
+ }
1944
+ } else {
1945
+ mustRebuild = true;
1946
+ }
1947
+ }
1948
+ if (mustRebuild) {
1949
+ let decorations = mapAndGatherRemainingDecorations(children, oldChildren, newLocal, mapping, offset, oldOffset, options);
1950
+ let built = buildTree(decorations, node, 0, options);
1951
+ newLocal = built.local;
1952
+ for (let i = 0; i < children.length; i += 3)
1953
+ if (children[i + 1] < 0) {
1954
+ children.splice(i, 3);
1955
+ i -= 3;
1956
+ }
1957
+ for (let i = 0, j = 0; i < built.children.length; i += 3) {
1958
+ let from = built.children[i];
1959
+ while (j < children.length && children[j] < from)
1960
+ j += 3;
1961
+ children.splice(j, 0, built.children[i], built.children[i + 1], built.children[i + 2]);
1962
+ }
1963
+ }
1964
+ return new DecorationSet(newLocal.sort(byPos), children);
1965
+ }
1966
+ function moveSpans(spans, offset) {
1967
+ if (!offset || !spans.length)
1968
+ return spans;
1969
+ let result = [];
1970
+ for (let i = 0; i < spans.length; i++) {
1971
+ let span = spans[i];
1972
+ result.push(new Decoration(span.from + offset, span.to + offset, span.type));
1973
+ }
1974
+ return result;
1975
+ }
1976
+ function mapAndGatherRemainingDecorations(children, oldChildren, decorations, mapping, offset, oldOffset, options) {
1977
+ function gather(set, oldOffset2) {
1978
+ for (let i = 0; i < set.local.length; i++) {
1979
+ let mapped = set.local[i].map(mapping, offset, oldOffset2);
1980
+ if (mapped)
1981
+ decorations.push(mapped);
1982
+ else if (options.onRemove)
1983
+ options.onRemove(set.local[i].spec);
1984
+ }
1985
+ for (let i = 0; i < set.children.length; i += 3)
1986
+ gather(set.children[i + 2], set.children[i] + oldOffset2 + 1);
1987
+ }
1988
+ for (let i = 0; i < children.length; i += 3)
1989
+ if (children[i + 1] == -1)
1990
+ gather(children[i + 2], oldChildren[i] + oldOffset + 1);
1991
+ return decorations;
1992
+ }
1993
+ function takeSpansForNode(spans, node, offset) {
1994
+ if (node.isLeaf)
1995
+ return null;
1996
+ let end = offset + node.nodeSize, found = null;
1997
+ for (let i = 0, span; i < spans.length; i++) {
1998
+ if ((span = spans[i]) && span.from > offset && span.to < end) {
1999
+ (found || (found = [])).push(span);
2000
+ spans[i] = null;
2001
+ }
2002
+ }
2003
+ return found;
2004
+ }
2005
+ function withoutNulls(array) {
2006
+ let result = [];
2007
+ for (let i = 0; i < array.length; i++)
2008
+ if (array[i] != null)
2009
+ result.push(array[i]);
2010
+ return result;
2011
+ }
2012
+ function buildTree(spans, node, offset, options) {
2013
+ let children = [], hasNulls = false;
2014
+ node.forEach((childNode, localStart) => {
2015
+ let found = takeSpansForNode(spans, childNode, localStart + offset);
2016
+ if (found) {
2017
+ hasNulls = true;
2018
+ let subtree = buildTree(found, childNode, offset + localStart + 1, options);
2019
+ if (subtree != empty)
2020
+ children.push(localStart, localStart + childNode.nodeSize, subtree);
2021
+ }
2022
+ });
2023
+ let locals = moveSpans(hasNulls ? withoutNulls(spans) : spans, -offset).sort(byPos);
2024
+ for (let i = 0; i < locals.length; i++)
2025
+ if (!locals[i].type.valid(node, locals[i])) {
2026
+ if (options.onRemove)
2027
+ options.onRemove(locals[i].spec);
2028
+ locals.splice(i--, 1);
2029
+ }
2030
+ return locals.length || children.length ? new DecorationSet(locals, children) : empty;
2031
+ }
2032
+ function byPos(a, b) {
2033
+ return a.from - b.from || a.to - b.to;
2034
+ }
2035
+ function removeOverlap(spans) {
2036
+ let working = spans;
2037
+ for (let i = 0; i < working.length - 1; i++) {
2038
+ let span = working[i];
2039
+ if (span.from != span.to)
2040
+ for (let j = i + 1; j < working.length; j++) {
2041
+ let next = working[j];
2042
+ if (next.from == span.from) {
2043
+ if (next.to != span.to) {
2044
+ if (working == spans)
2045
+ working = spans.slice();
2046
+ working[j] = next.copy(next.from, span.to);
2047
+ insertAhead(working, j + 1, next.copy(span.to, next.to));
2048
+ }
2049
+ continue;
2050
+ } else {
2051
+ if (next.from < span.to) {
2052
+ if (working == spans)
2053
+ working = spans.slice();
2054
+ working[i] = span.copy(span.from, next.from);
2055
+ insertAhead(working, j, span.copy(next.from, span.to));
2056
+ }
2057
+ break;
2058
+ }
2059
+ }
2060
+ }
2061
+ return working;
2062
+ }
2063
+ function insertAhead(array, i, deco) {
2064
+ while (i < array.length && byPos(deco, array[i]) > 0)
2065
+ i++;
2066
+ array.splice(i, 0, deco);
2067
+ }
2068
+ var useCharData = ie && ie_version <= 11;
2069
+
2070
+ // src/prosemirror/lib/converter.ts
2071
+ import {
2072
+ DOMParser as PMDOMParser,
2073
+ DOMSerializer as PMDOMSerializer
2074
+ } from "prosemirror-model";
2075
+ function htmlToProseMirror(content, schema) {
2076
+ const doc2 = new DOMParser().parseFromString(content, "text/html");
2077
+ return PMDOMParser.fromSchema(schema).parse(doc2);
2078
+ }
2079
+ function proseMirrorToHtml(doc2) {
2080
+ return new XMLSerializer().serializeToString(
2081
+ PMDOMSerializer.fromSchema(doc2.type.schema).serializeFragment(
2082
+ doc2.content
2083
+ )
2084
+ ).replace(/\sxmlns="[^"]+"/g, "");
2085
+ }
2086
+
2087
+ // src/prosemirror/lib/sync.ts
2088
+ import { recreateTransform } from "@manuscripts/prosemirror-recreate-steps";
2089
+ var META_KEY = "fromJazz";
2090
+ function createSyncHandlers(coRichText) {
2091
+ let view;
2092
+ function handleCoRichTextChange(newText) {
2093
+ if (!view || !newText) return;
2094
+ const pmDoc = htmlToProseMirror(
2095
+ newText.toString(),
2096
+ view.state.doc.type.schema
2097
+ );
2098
+ const transform = recreateTransform(view.state.doc, pmDoc);
2099
+ const tr = view.state.tr;
2100
+ transform.steps.forEach((step) => {
2101
+ tr.step(step);
2102
+ });
2103
+ tr.setMeta(META_KEY, true);
2104
+ view.dispatch(tr);
2105
+ }
2106
+ function handleProseMirrorChange(tr) {
2107
+ if (!coRichText || tr.getMeta(META_KEY)) return;
2108
+ if (tr.docChanged) {
2109
+ const str = proseMirrorToHtml(tr.doc);
2110
+ coRichText.applyDiff(str);
2111
+ }
2112
+ }
2113
+ return {
2114
+ setView: (newView) => {
2115
+ view = newView;
2116
+ },
2117
+ handleCoRichTextChange,
2118
+ handleProseMirrorChange
2119
+ };
2120
+ }
2121
+
2122
+ // src/prosemirror/lib/plugin.ts
2123
+ var jazzPluginKey = new PluginKey("jazz");
2124
+ function createJazzPlugin(coRichText, config = {}) {
2125
+ const { setView, handleCoRichTextChange, handleProseMirrorChange } = createSyncHandlers(coRichText);
2126
+ return new Plugin({
2127
+ key: jazzPluginKey,
2128
+ view(editorView) {
2129
+ setView(editorView);
2130
+ if (coRichText) {
2131
+ coRichText.subscribe(handleCoRichTextChange);
2132
+ }
2133
+ return {
2134
+ destroy() {
2135
+ setView(void 0);
2136
+ }
2137
+ };
2138
+ },
2139
+ state: {
2140
+ init(_config, state) {
2141
+ if (coRichText) {
2142
+ const pmDoc = htmlToProseMirror(coRichText.toString(), state.schema);
2143
+ state.doc = pmDoc;
2144
+ }
2145
+ return { coRichText };
2146
+ },
2147
+ apply(tr, value) {
2148
+ handleProseMirrorChange(tr);
2149
+ return value;
2150
+ }
2151
+ },
2152
+ props: {
2153
+ decorations(state) {
2154
+ if (!config.showDecorations) {
2155
+ return null;
2156
+ }
2157
+ const selection = state.selection;
2158
+ if (selection.empty) {
2159
+ const caret = Decoration.widget(selection.from, () => {
2160
+ const div = document.createElement("span");
2161
+ div.className = "jazz-caret";
2162
+ div.style.borderLeft = "2px solid red";
2163
+ div.style.marginLeft = "-2px";
2164
+ div.style.backgroundColor = "rgba(255,0,0,0.1)";
2165
+ return div;
2166
+ });
2167
+ return DecorationSet.create(state.doc, [caret]);
2168
+ }
2169
+ const selectionDecoration = Decoration.inline(
2170
+ selection.from,
2171
+ selection.to,
2172
+ {
2173
+ class: "jazz-caret-selection",
2174
+ style: "border-left: 2px solid red; margin-left: -2px; background: rgba(255,0,0,0.1);"
2175
+ }
2176
+ );
2177
+ return DecorationSet.create(state.doc, [selectionDecoration]);
2178
+ }
2179
+ }
2180
+ });
2181
+ }
2182
+ export {
2183
+ createJazzPlugin
2184
+ };
2185
+ //# sourceMappingURL=index.js.map