@nice2dev/ui-graphics 1.3.15 → 1.3.17

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 (294) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/cjs/animation/AnimatedPerson.js +470 -143
  3. package/dist/cjs/animation/AnimationEditor.js +289 -101
  4. package/dist/cjs/animation/Audience.js +83 -61
  5. package/dist/cjs/animation/BodyRenderer.js +69 -28
  6. package/dist/cjs/animation/animationHelper.js +281 -288
  7. package/dist/cjs/animation/characterTypes.js +200 -203
  8. package/dist/cjs/animation/choreoDSL.js +205 -219
  9. package/dist/cjs/animation/choreography.js +4 -32
  10. package/dist/cjs/animation/karaokeIntegration.js +68 -77
  11. package/dist/cjs/animation/lottieExport.js +108 -114
  12. package/dist/cjs/animation/motionPath.js +225 -248
  13. package/dist/cjs/animation/physics.js +227 -254
  14. package/dist/cjs/animation/rig/RigPlayer.js +53 -56
  15. package/dist/cjs/animation/rig/RiggedBody.js +71 -26
  16. package/dist/cjs/animation/rig/choreoRigBridge.js +72 -77
  17. package/dist/cjs/animation/rig/ik.js +13 -18
  18. package/dist/cjs/animation/rig/poseOps.js +34 -41
  19. package/dist/cjs/animation/rig/presets.js +64 -72
  20. package/dist/cjs/animation/rig/rigMath.js +25 -32
  21. package/dist/cjs/animation/rig/rigTypes.js +59 -63
  22. package/dist/cjs/animation/shapes/arms.js +31 -13
  23. package/dist/cjs/animation/shapes/eyes.js +129 -47
  24. package/dist/cjs/animation/shapes/hair.js +72 -45
  25. package/dist/cjs/animation/shapes/heads.js +131 -57
  26. package/dist/cjs/animation/shapes/headwear.js +47 -38
  27. package/dist/cjs/animation/shapes/legs.js +31 -13
  28. package/dist/cjs/animation/shapes/mouths.js +120 -44
  29. package/dist/cjs/animation/shapes/noses.js +80 -25
  30. package/dist/cjs/animation/shapes/outfits.js +101 -39
  31. package/dist/cjs/animation/shapes/torsos.js +15 -11
  32. package/dist/cjs/animation/spineExport.js +103 -121
  33. package/dist/cjs/core/LocalUI.js +108 -43
  34. package/dist/cjs/core/NiceBrushEngine.js +758 -552
  35. package/dist/cjs/core/collaboration.js +249 -251
  36. package/dist/cjs/core/colorBlindness.js +100 -115
  37. package/dist/cjs/core/dragDrop.js +155 -158
  38. package/dist/cjs/core/editorAsk.js +51 -41
  39. package/dist/cjs/core/fixes.js +140 -171
  40. package/dist/cjs/core/gridGuides.js +166 -201
  41. package/dist/cjs/core/historyVisual.js +156 -135
  42. package/dist/cjs/core/i18n.js +13 -14
  43. package/dist/cjs/core/integrations.js +238 -249
  44. package/dist/cjs/core/minimap.js +149 -151
  45. package/dist/cjs/core/plugins.js +98 -113
  46. package/dist/cjs/core/rtl.js +71 -83
  47. package/dist/cjs/core/shortcuts.js +196 -225
  48. package/dist/cjs/core/theme.js +142 -149
  49. package/dist/cjs/core/yjsCollaboration.js +232 -293
  50. package/dist/cjs/design/design-tools.js +12 -22
  51. package/dist/cjs/font/NiceFontEditor.js +877 -316
  52. package/dist/cjs/font/fontFormatUtils.js +388 -448
  53. package/dist/cjs/game/GameAsset2dEditor.js +1201 -392
  54. package/dist/cjs/game/GameAsset2dEditor.module.css.js +146 -5
  55. package/dist/cjs/game/gameAssetTypes.js +7 -16
  56. package/dist/cjs/game/gameAssetUtils.js +390 -413
  57. package/dist/cjs/game/useGameAssetEditor.js +820 -763
  58. package/dist/cjs/index.js +81 -84
  59. package/dist/cjs/nice2dev-ui-graphics.css +1 -1
  60. package/dist/cjs/node_modules/lib0/array.js +8 -70
  61. package/dist/cjs/node_modules/lib0/binary.js +3 -20
  62. package/dist/cjs/node_modules/lib0/broadcastchannel.js +24 -86
  63. package/dist/cjs/node_modules/lib0/buffer.js +15 -82
  64. package/dist/cjs/node_modules/lib0/conditions.js +3 -16
  65. package/dist/cjs/node_modules/lib0/decoding.js +108 -287
  66. package/dist/cjs/node_modules/lib0/dom.js +14 -44
  67. package/dist/cjs/node_modules/lib0/encoding.js +68 -418
  68. package/dist/cjs/node_modules/lib0/environment.js +26 -92
  69. package/dist/cjs/node_modules/lib0/error.js +5 -29
  70. package/dist/cjs/node_modules/lib0/function.js +27 -66
  71. package/dist/cjs/node_modules/lib0/iterator.js +8 -33
  72. package/dist/cjs/node_modules/lib0/logging.common.js +12 -22
  73. package/dist/cjs/node_modules/lib0/logging.js +32 -71
  74. package/dist/cjs/node_modules/lib0/map.js +16 -86
  75. package/dist/cjs/node_modules/lib0/math.js +3 -32
  76. package/dist/cjs/node_modules/lib0/number.js +4 -15
  77. package/dist/cjs/node_modules/lib0/object.js +14 -88
  78. package/dist/cjs/node_modules/lib0/observable.js +38 -78
  79. package/dist/cjs/node_modules/lib0/pair.js +3 -20
  80. package/dist/cjs/node_modules/lib0/prng.js +8 -77
  81. package/dist/cjs/node_modules/lib0/promise.js +6 -30
  82. package/dist/cjs/node_modules/lib0/random.js +8 -23
  83. package/dist/cjs/node_modules/lib0/schema.js +313 -687
  84. package/dist/cjs/node_modules/lib0/set.js +3 -10
  85. package/dist/cjs/node_modules/lib0/storage.js +20 -55
  86. package/dist/cjs/node_modules/lib0/string.js +17 -72
  87. package/dist/cjs/node_modules/lib0/symbol.js +2 -12
  88. package/dist/cjs/node_modules/lib0/time.js +2 -15
  89. package/dist/cjs/node_modules/lib0/trait/equality.js +3 -28
  90. package/dist/cjs/node_modules/lib0/url.js +4 -18
  91. package/dist/cjs/node_modules/lib0/webcrypto.js +2 -5
  92. package/dist/cjs/node_modules/y-protocols/auth.js +5 -19
  93. package/dist/cjs/node_modules/y-protocols/awareness.js +53 -116
  94. package/dist/cjs/node_modules/y-protocols/sync.js +16 -103
  95. package/dist/cjs/node_modules/y-websocket/src/y-websocket.js +77 -219
  96. package/dist/cjs/node_modules/yjs/dist/yjs.js +2128 -4868
  97. package/dist/cjs/photo/FilterThumb.js +37 -25
  98. package/dist/cjs/photo/NiceAITools.js +679 -467
  99. package/dist/cjs/photo/PhotoEditor.js +34 -20
  100. package/dist/cjs/photo/PhotoEditor.module.css.js +296 -5
  101. package/dist/cjs/photo/PhotoEditorCanvas.js +250 -91
  102. package/dist/cjs/photo/PhotoEditorLeftPanel.js +1086 -224
  103. package/dist/cjs/photo/PhotoEditorToolbar.js +135 -19
  104. package/dist/cjs/photo/photoEditorActions.js +89 -72
  105. package/dist/cjs/photo/photoEditorTypes.js +29 -32
  106. package/dist/cjs/photo/photoFilters.js +959 -985
  107. package/dist/cjs/photo/photoOverlays.js +899 -945
  108. package/dist/cjs/photo/photoSelection.js +427 -499
  109. package/dist/cjs/photo/usePhotoEditor.js +739 -741
  110. package/dist/cjs/pixel/HSVPicker.js +191 -175
  111. package/dist/cjs/pixel/PixelEditor.js +159 -48
  112. package/dist/cjs/pixel/PixelEditor.module.css.js +209 -5
  113. package/dist/cjs/pixel/PixelEditorCanvas.js +29 -16
  114. package/dist/cjs/pixel/PixelEditorMenuBar.js +160 -162
  115. package/dist/cjs/pixel/PixelEditorRightPanel.js +377 -45
  116. package/dist/cjs/pixel/PixelEditorStatusBar.js +47 -20
  117. package/dist/cjs/pixel/PixelEditorTimeline.js +106 -23
  118. package/dist/cjs/pixel/PixelEditorToolbar.js +99 -21
  119. package/dist/cjs/pixel/SpriteGeneratorPanel.js +483 -303
  120. package/dist/cjs/pixel/animalGeneratorPresets.js +776 -601
  121. package/dist/cjs/pixel/asepriteFormat.js +511 -560
  122. package/dist/cjs/pixel/buildingGeneratorPresets.js +693 -520
  123. package/dist/cjs/pixel/characterGeneratorPresets.js +644 -544
  124. package/dist/cjs/pixel/pixel-pro.js +52 -63
  125. package/dist/cjs/pixel/pixelEditorExports.js +388 -428
  126. package/dist/cjs/pixel/pixelEditorTypes.js +91 -108
  127. package/dist/cjs/pixel/pixelEditorUtils.js +519 -561
  128. package/dist/cjs/pixel/spriteGeneratorCore.js +206 -257
  129. package/dist/cjs/pixel/usePixelEditor.js +1321 -1343
  130. package/dist/cjs/texture/Nice3DTexturePainter.js +707 -440
  131. package/dist/cjs/ui/NiceUIDesigner.js +954 -527
  132. package/dist/cjs/vector/NiceSvgToCode.js +586 -446
  133. package/dist/cjs/vector/VectorEditor.js +290 -117
  134. package/dist/cjs/vector/VectorEditor.module.css.js +86 -5
  135. package/dist/cjs/vector/VectorEditorMenuBar.js +333 -275
  136. package/dist/cjs/vector/VectorEditorRightPanel.js +1094 -371
  137. package/dist/cjs/vector/VectorEditorShapeRenderer.js +198 -60
  138. package/dist/cjs/vector/VectorEditorStatusBar.js +39 -13
  139. package/dist/cjs/vector/useVectorEditor.js +848 -889
  140. package/dist/cjs/vector/vectorAnimation.js +110 -137
  141. package/dist/cjs/vector/vectorBooleanOps.js +398 -485
  142. package/dist/cjs/vector/vectorEditorExport.js +201 -203
  143. package/dist/cjs/vector/vectorEditorImport.js +173 -189
  144. package/dist/cjs/vector/vectorEditorTypes.js +42 -49
  145. package/dist/cjs/vector/vectorGradients.js +151 -174
  146. package/dist/cjs/vector/vectorIconExport.js +52 -59
  147. package/dist/cjs/vector/vectorIconImport.js +169 -219
  148. package/dist/esm/animation/AnimatedPerson.js +470 -141
  149. package/dist/esm/animation/AnimationEditor.js +290 -100
  150. package/dist/esm/animation/Audience.js +83 -59
  151. package/dist/esm/animation/BodyRenderer.js +71 -25
  152. package/dist/esm/animation/animationHelper.js +284 -287
  153. package/dist/esm/animation/characterTypes.js +204 -202
  154. package/dist/esm/animation/choreoDSL.js +212 -218
  155. package/dist/esm/animation/choreography.js +8 -31
  156. package/dist/esm/animation/karaokeIntegration.js +74 -76
  157. package/dist/esm/animation/lottieExport.js +112 -113
  158. package/dist/esm/animation/motionPath.js +235 -247
  159. package/dist/esm/animation/physics.js +235 -253
  160. package/dist/esm/animation/rig/RigPlayer.js +53 -54
  161. package/dist/esm/animation/rig/RiggedBody.js +71 -24
  162. package/dist/esm/animation/rig/choreoRigBridge.js +74 -76
  163. package/dist/esm/animation/rig/ik.js +14 -17
  164. package/dist/esm/animation/rig/poseOps.js +37 -40
  165. package/dist/esm/animation/rig/presets.js +70 -71
  166. package/dist/esm/animation/rig/rigMath.js +28 -31
  167. package/dist/esm/animation/rig/rigTypes.js +62 -62
  168. package/dist/esm/animation/shapes/arms.js +32 -12
  169. package/dist/esm/animation/shapes/eyes.js +135 -46
  170. package/dist/esm/animation/shapes/hair.js +80 -44
  171. package/dist/esm/animation/shapes/heads.js +140 -56
  172. package/dist/esm/animation/shapes/headwear.js +54 -37
  173. package/dist/esm/animation/shapes/legs.js +32 -12
  174. package/dist/esm/animation/shapes/mouths.js +127 -43
  175. package/dist/esm/animation/shapes/noses.js +87 -24
  176. package/dist/esm/animation/shapes/outfits.js +106 -38
  177. package/dist/esm/animation/shapes/torsos.js +16 -10
  178. package/dist/esm/animation/spineExport.js +106 -120
  179. package/dist/esm/core/LocalUI.js +111 -42
  180. package/dist/esm/core/NiceBrushEngine.js +761 -551
  181. package/dist/esm/core/collaboration.js +255 -250
  182. package/dist/esm/core/colorBlindness.js +106 -114
  183. package/dist/esm/core/dragDrop.js +157 -157
  184. package/dist/esm/core/editorAsk.js +53 -40
  185. package/dist/esm/core/fixes.js +145 -170
  186. package/dist/esm/core/gridGuides.js +178 -200
  187. package/dist/esm/core/historyVisual.js +158 -134
  188. package/dist/esm/core/i18n.js +15 -13
  189. package/dist/esm/core/integrations.js +244 -248
  190. package/dist/esm/core/minimap.js +151 -150
  191. package/dist/esm/core/plugins.js +102 -112
  192. package/dist/esm/core/rtl.js +77 -82
  193. package/dist/esm/core/shortcuts.js +200 -224
  194. package/dist/esm/core/theme.js +150 -148
  195. package/dist/esm/core/yjsCollaboration.js +240 -292
  196. package/dist/esm/design/design-tools.js +13 -21
  197. package/dist/esm/font/NiceFontEditor.js +880 -315
  198. package/dist/esm/font/fontFormatUtils.js +394 -447
  199. package/dist/esm/game/GameAsset2dEditor.js +1202 -391
  200. package/dist/esm/game/GameAsset2dEditor.module.css.js +146 -3
  201. package/dist/esm/game/gameAssetTypes.js +8 -15
  202. package/dist/esm/game/gameAssetUtils.js +408 -412
  203. package/dist/esm/game/useGameAssetEditor.js +821 -762
  204. package/dist/esm/index.js +332 -69
  205. package/dist/esm/nice2dev-ui-graphics.css +1 -1
  206. package/dist/esm/node_modules/lib0/array.js +15 -69
  207. package/dist/esm/node_modules/lib0/binary.js +14 -19
  208. package/dist/esm/node_modules/lib0/broadcastchannel.js +27 -85
  209. package/dist/esm/node_modules/lib0/buffer.js +20 -80
  210. package/dist/esm/node_modules/lib0/conditions.js +4 -15
  211. package/dist/esm/node_modules/lib0/decoding.js +128 -286
  212. package/dist/esm/node_modules/lib0/dom.js +20 -43
  213. package/dist/esm/node_modules/lib0/encoding.js +90 -415
  214. package/dist/esm/node_modules/lib0/environment.js +33 -91
  215. package/dist/esm/node_modules/lib0/error.js +8 -28
  216. package/dist/esm/node_modules/lib0/function.js +31 -65
  217. package/dist/esm/node_modules/lib0/iterator.js +11 -32
  218. package/dist/esm/node_modules/lib0/logging.common.js +22 -21
  219. package/dist/esm/node_modules/lib0/logging.js +44 -70
  220. package/dist/esm/node_modules/lib0/map.js +21 -85
  221. package/dist/esm/node_modules/lib0/math.js +9 -31
  222. package/dist/esm/node_modules/lib0/number.js +7 -14
  223. package/dist/esm/node_modules/lib0/object.js +26 -87
  224. package/dist/esm/node_modules/lib0/observable.js +40 -77
  225. package/dist/esm/node_modules/lib0/pair.js +5 -19
  226. package/dist/esm/node_modules/lib0/prng.js +15 -76
  227. package/dist/esm/node_modules/lib0/promise.js +7 -29
  228. package/dist/esm/node_modules/lib0/random.js +10 -22
  229. package/dist/esm/node_modules/lib0/schema.js +367 -686
  230. package/dist/esm/node_modules/lib0/set.js +4 -9
  231. package/dist/esm/node_modules/lib0/storage.js +23 -54
  232. package/dist/esm/node_modules/lib0/string.js +26 -71
  233. package/dist/esm/node_modules/lib0/symbol.js +3 -11
  234. package/dist/esm/node_modules/lib0/time.js +3 -14
  235. package/dist/esm/node_modules/lib0/trait/equality.js +5 -27
  236. package/dist/esm/node_modules/lib0/url.js +5 -17
  237. package/dist/esm/node_modules/lib0/webcrypto.js +3 -4
  238. package/dist/esm/node_modules/y-protocols/auth.js +7 -18
  239. package/dist/esm/node_modules/y-protocols/awareness.js +58 -115
  240. package/dist/esm/node_modules/y-protocols/sync.js +26 -102
  241. package/dist/esm/node_modules/y-websocket/src/y-websocket.js +82 -218
  242. package/dist/esm/node_modules/yjs/dist/yjs.js +2263 -4899
  243. package/dist/esm/photo/FilterThumb.js +37 -23
  244. package/dist/esm/photo/NiceAITools.js +685 -466
  245. package/dist/esm/photo/PhotoEditor.js +34 -18
  246. package/dist/esm/photo/PhotoEditor.module.css.js +296 -3
  247. package/dist/esm/photo/PhotoEditorCanvas.js +250 -89
  248. package/dist/esm/photo/PhotoEditorLeftPanel.js +1086 -222
  249. package/dist/esm/photo/PhotoEditorToolbar.js +135 -17
  250. package/dist/esm/photo/photoEditorActions.js +93 -71
  251. package/dist/esm/photo/photoEditorTypes.js +32 -31
  252. package/dist/esm/photo/photoFilters.js +967 -984
  253. package/dist/esm/photo/photoOverlays.js +913 -944
  254. package/dist/esm/photo/photoSelection.js +438 -498
  255. package/dist/esm/photo/usePhotoEditor.js +740 -740
  256. package/dist/esm/pixel/HSVPicker.js +192 -174
  257. package/dist/esm/pixel/PixelEditor.js +160 -47
  258. package/dist/esm/pixel/PixelEditor.module.css.js +209 -3
  259. package/dist/esm/pixel/PixelEditorCanvas.js +29 -14
  260. package/dist/esm/pixel/PixelEditorMenuBar.js +160 -160
  261. package/dist/esm/pixel/PixelEditorRightPanel.js +377 -43
  262. package/dist/esm/pixel/PixelEditorStatusBar.js +47 -18
  263. package/dist/esm/pixel/PixelEditorTimeline.js +106 -21
  264. package/dist/esm/pixel/PixelEditorToolbar.js +99 -19
  265. package/dist/esm/pixel/SpriteGeneratorPanel.js +483 -301
  266. package/dist/esm/pixel/animalGeneratorPresets.js +782 -600
  267. package/dist/esm/pixel/asepriteFormat.js +517 -559
  268. package/dist/esm/pixel/buildingGeneratorPresets.js +699 -519
  269. package/dist/esm/pixel/characterGeneratorPresets.js +650 -543
  270. package/dist/esm/pixel/pixel-pro.js +53 -62
  271. package/dist/esm/pixel/pixelEditorExports.js +397 -427
  272. package/dist/esm/pixel/pixelEditorTypes.js +103 -107
  273. package/dist/esm/pixel/pixelEditorUtils.js +551 -560
  274. package/dist/esm/pixel/spriteGeneratorCore.js +223 -256
  275. package/dist/esm/pixel/usePixelEditor.js +1322 -1342
  276. package/dist/esm/texture/Nice3DTexturePainter.js +709 -439
  277. package/dist/esm/ui/NiceUIDesigner.js +957 -526
  278. package/dist/esm/vector/NiceSvgToCode.js +589 -445
  279. package/dist/esm/vector/VectorEditor.js +291 -116
  280. package/dist/esm/vector/VectorEditor.module.css.js +86 -3
  281. package/dist/esm/vector/VectorEditorMenuBar.js +333 -273
  282. package/dist/esm/vector/VectorEditorRightPanel.js +1094 -369
  283. package/dist/esm/vector/VectorEditorShapeRenderer.js +199 -59
  284. package/dist/esm/vector/VectorEditorStatusBar.js +39 -11
  285. package/dist/esm/vector/useVectorEditor.js +849 -888
  286. package/dist/esm/vector/vectorAnimation.js +115 -136
  287. package/dist/esm/vector/vectorBooleanOps.js +401 -484
  288. package/dist/esm/vector/vectorEditorExport.js +207 -202
  289. package/dist/esm/vector/vectorEditorImport.js +174 -188
  290. package/dist/esm/vector/vectorEditorTypes.js +50 -48
  291. package/dist/esm/vector/vectorGradients.js +158 -173
  292. package/dist/esm/vector/vectorIconExport.js +53 -58
  293. package/dist/esm/vector/vectorIconImport.js +171 -218
  294. package/package.json +9 -15
@@ -1,38 +1,20 @@
1
- import { publish, subscribe, unsubscribe } from '../../lib0/broadcastchannel.js';
2
- import { getUnixTime } from '../../lib0/time.js';
3
- import { writeVarUint, toUint8Array, length, writeVarUint8Array, createEncoder } from '../../lib0/encoding.js';
4
- import { readVarUint, createDecoder, readVarUint8Array } from '../../lib0/decoding.js';
5
- import { writeSyncStep1, writeUpdate, writeSyncStep2, readSyncMessage, messageYjsSyncStep2 } from '../../y-protocols/sync.js';
6
- import { readAuthMessage } from '../../y-protocols/auth.js';
7
- import { Awareness, encodeAwarenessUpdate, removeAwarenessStates, applyAwarenessUpdate } from '../../y-protocols/awareness.js';
8
- import { ObservableV2 } from '../../lib0/observable.js';
9
- import { min, pow } from '../../lib0/math.js';
10
- import { encodeQueryParams } from '../../lib0/url.js';
11
- import { isNode } from '../../lib0/environment.js';
12
-
13
- /**
14
- * @module provider/websocket
15
- */
16
-
17
-
1
+ import { publish, subscribe, unsubscribe } from "../../lib0/broadcastchannel.js";
2
+ import { getUnixTime } from "../../lib0/time.js";
3
+ import { writeVarUint, toUint8Array, length, writeVarUint8Array, createEncoder } from "../../lib0/encoding.js";
4
+ import { readVarUint, createDecoder, readVarUint8Array } from "../../lib0/decoding.js";
5
+ import { writeSyncStep1, writeUpdate, writeSyncStep2, readSyncMessage, messageYjsSyncStep2 } from "../../y-protocols/sync.js";
6
+ import { readAuthMessage } from "../../y-protocols/auth.js";
7
+ import { Awareness, encodeAwarenessUpdate, removeAwarenessStates, applyAwarenessUpdate } from "../../y-protocols/awareness.js";
8
+ import { ObservableV2 } from "../../lib0/observable.js";
9
+ import { min, pow } from "../../lib0/math.js";
10
+ import { encodeQueryParams } from "../../lib0/url.js";
11
+ import { isNode } from "../../lib0/environment.js";
18
12
  const messageSync = 0;
19
13
  const messageQueryAwareness = 3;
20
14
  const messageAwareness = 1;
21
15
  const messageAuth = 2;
22
-
23
- /**
24
- * encoder, decoder, provider, emitSynced, messageType
25
- * @type {Array<function(encoding.Encoder, decoding.Decoder, WebsocketProvider, boolean, number):void>}
26
- */
27
16
  const messageHandlers = [];
28
-
29
- messageHandlers[messageSync] = (
30
- encoder,
31
- decoder,
32
- provider,
33
- emitSynced,
34
- _messageType
35
- ) => {
17
+ messageHandlers[messageSync] = (encoder, decoder, provider, emitSynced, _messageType) => {
36
18
  writeVarUint(encoder, messageSync);
37
19
  const syncMessageType = readSyncMessage(
38
20
  decoder,
@@ -40,21 +22,11 @@ messageHandlers[messageSync] = (
40
22
  provider.doc,
41
23
  provider
42
24
  );
43
- if (
44
- emitSynced && syncMessageType === messageYjsSyncStep2 &&
45
- !provider.synced
46
- ) {
25
+ if (emitSynced && syncMessageType === messageYjsSyncStep2 && !provider.synced) {
47
26
  provider.synced = true;
48
27
  }
49
28
  };
50
-
51
- messageHandlers[messageQueryAwareness] = (
52
- encoder,
53
- _decoder,
54
- provider,
55
- _emitSynced,
56
- _messageType
57
- ) => {
29
+ messageHandlers[messageQueryAwareness] = (encoder, _decoder, provider, _emitSynced, _messageType) => {
58
30
  writeVarUint(encoder, messageAwareness);
59
31
  writeVarUint8Array(
60
32
  encoder,
@@ -64,97 +36,60 @@ messageHandlers[messageQueryAwareness] = (
64
36
  )
65
37
  );
66
38
  };
67
-
68
- messageHandlers[messageAwareness] = (
69
- _encoder,
70
- decoder,
71
- provider,
72
- _emitSynced,
73
- _messageType
74
- ) => {
39
+ messageHandlers[messageAwareness] = (_encoder, decoder, provider, _emitSynced, _messageType) => {
75
40
  applyAwarenessUpdate(
76
41
  provider.awareness,
77
42
  readVarUint8Array(decoder),
78
43
  provider
79
44
  );
80
45
  };
81
-
82
- messageHandlers[messageAuth] = (
83
- _encoder,
84
- decoder,
85
- provider,
86
- _emitSynced,
87
- _messageType
88
- ) => {
46
+ messageHandlers[messageAuth] = (_encoder, decoder, provider, _emitSynced, _messageType) => {
89
47
  readAuthMessage(
90
48
  decoder,
91
49
  provider.doc,
92
50
  (_ydoc, reason) => permissionDeniedHandler(provider, reason)
93
51
  );
94
52
  };
95
-
96
- // @todo - this should depend on awareness.outdatedTime
97
- const messageReconnectTimeout = 30000;
98
-
99
- /**
100
- * @param {WebsocketProvider} provider
101
- * @param {string} reason
102
- */
103
- const permissionDeniedHandler = (provider, reason) =>
104
- console.warn(`Permission denied to access ${provider.url}.\n${reason}`);
105
-
106
- /**
107
- * @param {WebsocketProvider} provider
108
- * @param {Uint8Array} buf
109
- * @param {boolean} emitSynced
110
- * @return {encoding.Encoder}
111
- */
53
+ const messageReconnectTimeout = 3e4;
54
+ const permissionDeniedHandler = (provider, reason) => console.warn(`Permission denied to access ${provider.url}.
55
+ ${reason}`);
112
56
  const readMessage = (provider, buf, emitSynced) => {
113
57
  const decoder = createDecoder(buf);
114
58
  const encoder = createEncoder();
115
59
  const messageType = readVarUint(decoder);
116
60
  const messageHandler = provider.messageHandlers[messageType];
117
- if (/** @type {any} */ (messageHandler)) {
61
+ if (
62
+ /** @type {any} */
63
+ messageHandler
64
+ ) {
118
65
  messageHandler(encoder, decoder, provider, emitSynced, messageType);
119
66
  } else {
120
- console.error('Unable to compute message');
67
+ console.error("Unable to compute message");
121
68
  }
122
- return encoder
69
+ return encoder;
123
70
  };
124
-
125
- /**
126
- * Outsource this function so that a new websocket connection is created immediately.
127
- * I suspect that the `ws.onclose` event is not always fired if there are network issues.
128
- *
129
- * @param {WebsocketProvider} provider
130
- * @param {WebSocket} ws
131
- * @param {CloseEvent | null} event
132
- */
133
71
  const closeWebsocketConnection = (provider, ws, event) => {
134
72
  if (ws === provider.ws) {
135
- provider.emit('connection-close', [event, provider]);
73
+ provider.emit("connection-close", [event, provider]);
136
74
  provider.ws = null;
137
75
  ws.close();
138
76
  provider.wsconnecting = false;
139
77
  if (provider.wsconnected) {
140
78
  provider.wsconnected = false;
141
79
  provider.synced = false;
142
- // update awareness (all users except local left)
143
80
  removeAwarenessStates(
144
81
  provider.awareness,
145
- Array.from(provider.awareness.getStates().keys()).filter((client) =>
146
- client !== provider.doc.clientID
82
+ Array.from(provider.awareness.getStates().keys()).filter(
83
+ (client) => client !== provider.doc.clientID
147
84
  ),
148
85
  provider
149
86
  );
150
- provider.emit('status', [{
151
- status: 'disconnected'
87
+ provider.emit("status", [{
88
+ status: "disconnected"
152
89
  }]);
153
90
  } else {
154
91
  provider.wsUnsuccessfulReconnects++;
155
92
  }
156
- // Start with no reconnect timeout and increase timeout by
157
- // using exponential backoff starting with 100ms
158
93
  setTimeout(
159
94
  setupWS,
160
95
  min(
@@ -165,19 +100,14 @@ const closeWebsocketConnection = (provider, ws, event) => {
165
100
  );
166
101
  }
167
102
  };
168
-
169
- /**
170
- * @param {WebsocketProvider} provider
171
- */
172
103
  const setupWS = (provider) => {
173
104
  if (provider.shouldConnect && provider.ws === null) {
174
105
  const websocket = new provider._WS(provider.url, provider.protocols);
175
- websocket.binaryType = 'arraybuffer';
106
+ websocket.binaryType = "arraybuffer";
176
107
  provider.ws = websocket;
177
108
  provider.wsconnecting = true;
178
109
  provider.wsconnected = false;
179
110
  provider.synced = false;
180
-
181
111
  websocket.onmessage = (event) => {
182
112
  provider.wsLastMessageReceived = getUnixTime();
183
113
  const encoder = readMessage(provider, new Uint8Array(event.data), true);
@@ -186,7 +116,7 @@ const setupWS = (provider) => {
186
116
  }
187
117
  };
188
118
  websocket.onerror = (event) => {
189
- provider.emit('connection-error', [event, provider]);
119
+ provider.emit("connection-error", [event, provider]);
190
120
  };
191
121
  websocket.onclose = (event) => {
192
122
  closeWebsocketConnection(provider, websocket, event);
@@ -196,15 +126,13 @@ const setupWS = (provider) => {
196
126
  provider.wsconnecting = false;
197
127
  provider.wsconnected = true;
198
128
  provider.wsUnsuccessfulReconnects = 0;
199
- provider.emit('status', [{
200
- status: 'connected'
129
+ provider.emit("status", [{
130
+ status: "connected"
201
131
  }]);
202
- // always send sync step 1 when connected
203
132
  const encoder = createEncoder();
204
133
  writeVarUint(encoder, messageSync);
205
134
  writeSyncStep1(encoder, provider.doc);
206
135
  websocket.send(toUint8Array(encoder));
207
- // broadcast local awareness state
208
136
  if (provider.awareness.getLocalState() !== null) {
209
137
  const encoderAwarenessState = createEncoder();
210
138
  writeVarUint(encoderAwarenessState, messageAwareness);
@@ -217,16 +145,11 @@ const setupWS = (provider) => {
217
145
  websocket.send(toUint8Array(encoderAwarenessState));
218
146
  }
219
147
  };
220
- provider.emit('status', [{
221
- status: 'connecting'
148
+ provider.emit("status", [{
149
+ status: "connecting"
222
150
  }]);
223
151
  }
224
152
  };
225
-
226
- /**
227
- * @param {WebsocketProvider} provider
228
- * @param {ArrayBuffer} buf
229
- */
230
153
  const broadcastMessage = (provider, buf) => {
231
154
  const ws = provider.ws;
232
155
  if (provider.wsconnected && ws && ws.readyState === ws.OPEN) {
@@ -236,20 +159,6 @@ const broadcastMessage = (provider, buf) => {
236
159
  publish(provider.bcChannel, buf, provider);
237
160
  }
238
161
  };
239
-
240
- /**
241
- * Websocket Provider for Yjs. Creates a websocket connection to sync the shared document.
242
- * The document name is attached to the provided url. I.e. the following example
243
- * creates a websocket connection to http://localhost:1234/my-document-name
244
- *
245
- * @example
246
- * import * as Y from 'yjs'
247
- * import { WebsocketProvider } from 'y-websocket'
248
- * const doc = new Y.Doc()
249
- * const provider = new WebsocketProvider('http://localhost:1234', 'my-document-name', doc)
250
- *
251
- * @extends {ObservableV2<{ 'connection-close': (event: CloseEvent | null, provider: WebsocketProvider) => any, 'status': (event: { status: 'connected' | 'disconnected' | 'connecting' }) => any, 'connection-error': (event: Event, provider: WebsocketProvider) => any, 'sync': (state: boolean) => any }>}
252
- */
253
162
  class WebsocketProvider extends ObservableV2 {
254
163
  /**
255
164
  * @param {string} serverUrl
@@ -265,7 +174,7 @@ class WebsocketProvider extends ObservableV2 {
265
174
  * @param {number} [opts.maxBackoffTime] Maximum amount of time to wait before trying to reconnect (we try to reconnect using exponential backoff)
266
175
  * @param {boolean} [opts.disableBc] Disable cross-tab BroadcastChannel communication
267
176
  */
268
- constructor (serverUrl, roomname, doc, {
177
+ constructor(serverUrl, roomname, doc, {
269
178
  connect = true,
270
179
  awareness = new Awareness(doc),
271
180
  params = {},
@@ -276,18 +185,12 @@ class WebsocketProvider extends ObservableV2 {
276
185
  disableBc = false
277
186
  } = {}) {
278
187
  super();
279
- // ensure that url is always ends with /
280
- while (serverUrl[serverUrl.length - 1] === '/') {
188
+ while (serverUrl[serverUrl.length - 1] === "/") {
281
189
  serverUrl = serverUrl.slice(0, serverUrl.length - 1);
282
190
  }
283
191
  this.serverUrl = serverUrl;
284
- this.bcChannel = serverUrl + '/' + roomname;
192
+ this.bcChannel = serverUrl + "/" + roomname;
285
193
  this.maxBackoffTime = maxBackoffTime;
286
- /**
287
- * The specified url parameters. This can be safely updated. The changed parameters will be used
288
- * when a new connection is established.
289
- * @type {Object<string,string>}
290
- */
291
194
  this.params = params;
292
195
  this.protocols = protocols;
293
196
  this.roomname = roomname;
@@ -300,41 +203,22 @@ class WebsocketProvider extends ObservableV2 {
300
203
  this.disableBc = disableBc;
301
204
  this.wsUnsuccessfulReconnects = 0;
302
205
  this.messageHandlers = messageHandlers.slice();
303
- /**
304
- * @type {boolean}
305
- */
306
206
  this._synced = false;
307
- /**
308
- * @type {WebSocket?}
309
- */
310
207
  this.ws = null;
311
208
  this.wsLastMessageReceived = 0;
312
- /**
313
- * Whether to connect to other peers or not
314
- * @type {boolean}
315
- */
316
209
  this.shouldConnect = connect;
317
-
318
- /**
319
- * @type {number}
320
- */
321
210
  this._resyncInterval = 0;
322
211
  if (resyncInterval > 0) {
323
- this._resyncInterval = /** @type {any} */ (setInterval(() => {
212
+ this._resyncInterval = /** @type {any} */
213
+ setInterval(() => {
324
214
  if (this.ws && this.ws.readyState === WebSocket.OPEN) {
325
- // resend sync step 1
326
215
  const encoder = createEncoder();
327
216
  writeVarUint(encoder, messageSync);
328
217
  writeSyncStep1(encoder, doc);
329
218
  this.ws.send(toUint8Array(encoder));
330
219
  }
331
- }, resyncInterval));
220
+ }, resyncInterval);
332
221
  }
333
-
334
- /**
335
- * @param {ArrayBuffer} data
336
- * @param {any} origin
337
- */
338
222
  this._bcSubscriber = (data, origin) => {
339
223
  if (origin !== this) {
340
224
  const encoder = readMessage(this, new Uint8Array(data), false);
@@ -343,11 +227,6 @@ class WebsocketProvider extends ObservableV2 {
343
227
  }
344
228
  }
345
229
  };
346
- /**
347
- * Listens to Yjs updates and sends them to remote peers (ws and broadcastchannel)
348
- * @param {Uint8Array} update
349
- * @param {any} origin
350
- */
351
230
  this._updateHandler = (update, origin) => {
352
231
  if (origin !== this) {
353
232
  const encoder = createEncoder();
@@ -356,11 +235,7 @@ class WebsocketProvider extends ObservableV2 {
356
235
  broadcastMessage(this, toUint8Array(encoder));
357
236
  }
358
237
  };
359
- this.doc.on('update', this._updateHandler);
360
- /**
361
- * @param {any} changed
362
- * @param {any} _origin
363
- */
238
+ this.doc.on("update", this._updateHandler);
364
239
  this._awarenessUpdateHandler = ({ added, updated, removed }, _origin) => {
365
240
  const changedClients = added.concat(updated).concat(removed);
366
241
  const encoder = createEncoder();
@@ -375,85 +250,74 @@ class WebsocketProvider extends ObservableV2 {
375
250
  removeAwarenessStates(
376
251
  this.awareness,
377
252
  [doc.clientID],
378
- 'app closed'
253
+ "app closed"
379
254
  );
380
255
  };
381
- if (isNode && typeof process !== 'undefined') {
382
- process.on('exit', this._exitHandler);
256
+ if (isNode && typeof process !== "undefined") {
257
+ process.on("exit", this._exitHandler);
383
258
  }
384
- awareness.on('update', this._awarenessUpdateHandler);
385
- this._checkInterval = /** @type {any} */ (setInterval(() => {
386
- if (
387
- this.wsconnected &&
388
- messageReconnectTimeout <
389
- getUnixTime() - this.wsLastMessageReceived
390
- ) {
391
- // no message received in a long time - not even your own awareness
392
- // updates (which are updated every 15 seconds)
393
- closeWebsocketConnection(this, /** @type {WebSocket} */ (this.ws), null);
259
+ awareness.on("update", this._awarenessUpdateHandler);
260
+ this._checkInterval = /** @type {any} */
261
+ setInterval(() => {
262
+ if (this.wsconnected && messageReconnectTimeout < getUnixTime() - this.wsLastMessageReceived) {
263
+ closeWebsocketConnection(
264
+ this,
265
+ /** @type {WebSocket} */
266
+ this.ws,
267
+ null
268
+ );
394
269
  }
395
- }, messageReconnectTimeout / 10));
270
+ }, messageReconnectTimeout / 10);
396
271
  if (connect) {
397
272
  this.connect();
398
273
  }
399
274
  }
400
-
401
- get url () {
275
+ get url() {
402
276
  const encodedParams = encodeQueryParams(this.params);
403
- return this.serverUrl + '/' + this.roomname +
404
- (encodedParams.length === 0 ? '' : '?' + encodedParams)
277
+ return this.serverUrl + "/" + this.roomname + (encodedParams.length === 0 ? "" : "?" + encodedParams);
405
278
  }
406
-
407
279
  /**
408
280
  * @type {boolean}
409
281
  */
410
- get synced () {
411
- return this._synced
282
+ get synced() {
283
+ return this._synced;
412
284
  }
413
-
414
- set synced (state) {
285
+ set synced(state) {
415
286
  if (this._synced !== state) {
416
287
  this._synced = state;
417
- // @ts-ignore
418
- this.emit('synced', [state]);
419
- this.emit('sync', [state]);
288
+ this.emit("synced", [state]);
289
+ this.emit("sync", [state]);
420
290
  }
421
291
  }
422
-
423
- destroy () {
292
+ destroy() {
424
293
  if (this._resyncInterval !== 0) {
425
294
  clearInterval(this._resyncInterval);
426
295
  }
427
296
  clearInterval(this._checkInterval);
428
297
  this.disconnect();
429
- if (isNode && typeof process !== 'undefined') {
430
- process.off('exit', this._exitHandler);
298
+ if (isNode && typeof process !== "undefined") {
299
+ process.off("exit", this._exitHandler);
431
300
  }
432
- this.awareness.off('update', this._awarenessUpdateHandler);
433
- this.doc.off('update', this._updateHandler);
301
+ this.awareness.off("update", this._awarenessUpdateHandler);
302
+ this.doc.off("update", this._updateHandler);
434
303
  super.destroy();
435
304
  }
436
-
437
- connectBc () {
305
+ connectBc() {
438
306
  if (this.disableBc) {
439
- return
307
+ return;
440
308
  }
441
309
  if (!this.bcconnected) {
442
310
  subscribe(this.bcChannel, this._bcSubscriber);
443
311
  this.bcconnected = true;
444
312
  }
445
- // send sync step1 to bc
446
- // write sync step 1
447
313
  const encoderSync = createEncoder();
448
314
  writeVarUint(encoderSync, messageSync);
449
315
  writeSyncStep1(encoderSync, this.doc);
450
316
  publish(this.bcChannel, toUint8Array(encoderSync), this);
451
- // broadcast local state
452
317
  const encoderState = createEncoder();
453
318
  writeVarUint(encoderState, messageSync);
454
319
  writeSyncStep2(encoderState, this.doc);
455
320
  publish(this.bcChannel, toUint8Array(encoderState), this);
456
- // write queryAwareness
457
321
  const encoderAwarenessQuery = createEncoder();
458
322
  writeVarUint(encoderAwarenessQuery, messageQueryAwareness);
459
323
  publish(
@@ -461,7 +325,6 @@ class WebsocketProvider extends ObservableV2 {
461
325
  toUint8Array(encoderAwarenessQuery),
462
326
  this
463
327
  );
464
- // broadcast local awareness state
465
328
  const encoderAwarenessState = createEncoder();
466
329
  writeVarUint(encoderAwarenessState, messageAwareness);
467
330
  writeVarUint8Array(
@@ -476,16 +339,14 @@ class WebsocketProvider extends ObservableV2 {
476
339
  this
477
340
  );
478
341
  }
479
-
480
- disconnectBc () {
481
- // broadcast message with local awareness state set to null (indicating disconnect)
342
+ disconnectBc() {
482
343
  const encoder = createEncoder();
483
344
  writeVarUint(encoder, messageAwareness);
484
345
  writeVarUint8Array(
485
346
  encoder,
486
347
  encodeAwarenessUpdate(this.awareness, [
487
348
  this.doc.clientID
488
- ], new Map())
349
+ ], /* @__PURE__ */ new Map())
489
350
  );
490
351
  broadcastMessage(this, toUint8Array(encoder));
491
352
  if (this.bcconnected) {
@@ -493,16 +354,14 @@ class WebsocketProvider extends ObservableV2 {
493
354
  this.bcconnected = false;
494
355
  }
495
356
  }
496
-
497
- disconnect () {
357
+ disconnect() {
498
358
  this.shouldConnect = false;
499
359
  this.disconnectBc();
500
360
  if (this.ws !== null) {
501
361
  closeWebsocketConnection(this, this.ws, null);
502
362
  }
503
363
  }
504
-
505
- connect () {
364
+ connect() {
506
365
  this.shouldConnect = true;
507
366
  if (!this.wsconnected && this.ws === null) {
508
367
  setupWS(this);
@@ -510,5 +369,10 @@ class WebsocketProvider extends ObservableV2 {
510
369
  }
511
370
  }
512
371
  }
513
-
514
- export { WebsocketProvider, messageAuth, messageAwareness, messageQueryAwareness, messageSync };
372
+ export {
373
+ WebsocketProvider,
374
+ messageAuth,
375
+ messageAwareness,
376
+ messageQueryAwareness,
377
+ messageSync
378
+ };