@nice2dev/ui-graphics 1.3.15 → 1.3.16

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 +9 -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,40 +1,22 @@
1
- 'use strict';
2
-
3
- var broadcastchannel = require('../../lib0/broadcastchannel.js');
4
- var time = require('../../lib0/time.js');
5
- var encoding = require('../../lib0/encoding.js');
6
- var decoding = require('../../lib0/decoding.js');
7
- var sync = require('../../y-protocols/sync.js');
8
- var auth = require('../../y-protocols/auth.js');
9
- var awareness = require('../../y-protocols/awareness.js');
10
- var observable = require('../../lib0/observable.js');
11
- var math = require('../../lib0/math.js');
12
- var url = require('../../lib0/url.js');
13
- var environment = require('../../lib0/environment.js');
14
-
15
- /**
16
- * @module provider/websocket
17
- */
18
-
19
-
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const broadcastchannel = require("../../lib0/broadcastchannel.js");
4
+ const time = require("../../lib0/time.js");
5
+ const encoding = require("../../lib0/encoding.js");
6
+ const decoding = require("../../lib0/decoding.js");
7
+ const sync = require("../../y-protocols/sync.js");
8
+ const auth = require("../../y-protocols/auth.js");
9
+ const awareness = require("../../y-protocols/awareness.js");
10
+ const observable = require("../../lib0/observable.js");
11
+ const math = require("../../lib0/math.js");
12
+ const url = require("../../lib0/url.js");
13
+ const environment = require("../../lib0/environment.js");
20
14
  const messageSync = 0;
21
15
  const messageQueryAwareness = 3;
22
16
  const messageAwareness = 1;
23
17
  const messageAuth = 2;
24
-
25
- /**
26
- * encoder, decoder, provider, emitSynced, messageType
27
- * @type {Array<function(encoding.Encoder, decoding.Decoder, WebsocketProvider, boolean, number):void>}
28
- */
29
18
  const messageHandlers = [];
30
-
31
- messageHandlers[messageSync] = (
32
- encoder,
33
- decoder,
34
- provider,
35
- emitSynced,
36
- _messageType
37
- ) => {
19
+ messageHandlers[messageSync] = (encoder, decoder, provider, emitSynced, _messageType) => {
38
20
  encoding.writeVarUint(encoder, messageSync);
39
21
  const syncMessageType = sync.readSyncMessage(
40
22
  decoder,
@@ -42,21 +24,11 @@ messageHandlers[messageSync] = (
42
24
  provider.doc,
43
25
  provider
44
26
  );
45
- if (
46
- emitSynced && syncMessageType === sync.messageYjsSyncStep2 &&
47
- !provider.synced
48
- ) {
27
+ if (emitSynced && syncMessageType === sync.messageYjsSyncStep2 && !provider.synced) {
49
28
  provider.synced = true;
50
29
  }
51
30
  };
52
-
53
- messageHandlers[messageQueryAwareness] = (
54
- encoder,
55
- _decoder,
56
- provider,
57
- _emitSynced,
58
- _messageType
59
- ) => {
31
+ messageHandlers[messageQueryAwareness] = (encoder, _decoder, provider, _emitSynced, _messageType) => {
60
32
  encoding.writeVarUint(encoder, messageAwareness);
61
33
  encoding.writeVarUint8Array(
62
34
  encoder,
@@ -66,97 +38,60 @@ messageHandlers[messageQueryAwareness] = (
66
38
  )
67
39
  );
68
40
  };
69
-
70
- messageHandlers[messageAwareness] = (
71
- _encoder,
72
- decoder,
73
- provider,
74
- _emitSynced,
75
- _messageType
76
- ) => {
41
+ messageHandlers[messageAwareness] = (_encoder, decoder, provider, _emitSynced, _messageType) => {
77
42
  awareness.applyAwarenessUpdate(
78
43
  provider.awareness,
79
44
  decoding.readVarUint8Array(decoder),
80
45
  provider
81
46
  );
82
47
  };
83
-
84
- messageHandlers[messageAuth] = (
85
- _encoder,
86
- decoder,
87
- provider,
88
- _emitSynced,
89
- _messageType
90
- ) => {
48
+ messageHandlers[messageAuth] = (_encoder, decoder, provider, _emitSynced, _messageType) => {
91
49
  auth.readAuthMessage(
92
50
  decoder,
93
51
  provider.doc,
94
52
  (_ydoc, reason) => permissionDeniedHandler(provider, reason)
95
53
  );
96
54
  };
97
-
98
- // @todo - this should depend on awareness.outdatedTime
99
- const messageReconnectTimeout = 30000;
100
-
101
- /**
102
- * @param {WebsocketProvider} provider
103
- * @param {string} reason
104
- */
105
- const permissionDeniedHandler = (provider, reason) =>
106
- console.warn(`Permission denied to access ${provider.url}.\n${reason}`);
107
-
108
- /**
109
- * @param {WebsocketProvider} provider
110
- * @param {Uint8Array} buf
111
- * @param {boolean} emitSynced
112
- * @return {encoding.Encoder}
113
- */
55
+ const messageReconnectTimeout = 3e4;
56
+ const permissionDeniedHandler = (provider, reason) => console.warn(`Permission denied to access ${provider.url}.
57
+ ${reason}`);
114
58
  const readMessage = (provider, buf, emitSynced) => {
115
59
  const decoder = decoding.createDecoder(buf);
116
60
  const encoder = encoding.createEncoder();
117
61
  const messageType = decoding.readVarUint(decoder);
118
62
  const messageHandler = provider.messageHandlers[messageType];
119
- if (/** @type {any} */ (messageHandler)) {
63
+ if (
64
+ /** @type {any} */
65
+ messageHandler
66
+ ) {
120
67
  messageHandler(encoder, decoder, provider, emitSynced, messageType);
121
68
  } else {
122
- console.error('Unable to compute message');
69
+ console.error("Unable to compute message");
123
70
  }
124
- return encoder
71
+ return encoder;
125
72
  };
126
-
127
- /**
128
- * Outsource this function so that a new websocket connection is created immediately.
129
- * I suspect that the `ws.onclose` event is not always fired if there are network issues.
130
- *
131
- * @param {WebsocketProvider} provider
132
- * @param {WebSocket} ws
133
- * @param {CloseEvent | null} event
134
- */
135
73
  const closeWebsocketConnection = (provider, ws, event) => {
136
74
  if (ws === provider.ws) {
137
- provider.emit('connection-close', [event, provider]);
75
+ provider.emit("connection-close", [event, provider]);
138
76
  provider.ws = null;
139
77
  ws.close();
140
78
  provider.wsconnecting = false;
141
79
  if (provider.wsconnected) {
142
80
  provider.wsconnected = false;
143
81
  provider.synced = false;
144
- // update awareness (all users except local left)
145
82
  awareness.removeAwarenessStates(
146
83
  provider.awareness,
147
- Array.from(provider.awareness.getStates().keys()).filter((client) =>
148
- client !== provider.doc.clientID
84
+ Array.from(provider.awareness.getStates().keys()).filter(
85
+ (client) => client !== provider.doc.clientID
149
86
  ),
150
87
  provider
151
88
  );
152
- provider.emit('status', [{
153
- status: 'disconnected'
89
+ provider.emit("status", [{
90
+ status: "disconnected"
154
91
  }]);
155
92
  } else {
156
93
  provider.wsUnsuccessfulReconnects++;
157
94
  }
158
- // Start with no reconnect timeout and increase timeout by
159
- // using exponential backoff starting with 100ms
160
95
  setTimeout(
161
96
  setupWS,
162
97
  math.min(
@@ -167,19 +102,14 @@ const closeWebsocketConnection = (provider, ws, event) => {
167
102
  );
168
103
  }
169
104
  };
170
-
171
- /**
172
- * @param {WebsocketProvider} provider
173
- */
174
105
  const setupWS = (provider) => {
175
106
  if (provider.shouldConnect && provider.ws === null) {
176
107
  const websocket = new provider._WS(provider.url, provider.protocols);
177
- websocket.binaryType = 'arraybuffer';
108
+ websocket.binaryType = "arraybuffer";
178
109
  provider.ws = websocket;
179
110
  provider.wsconnecting = true;
180
111
  provider.wsconnected = false;
181
112
  provider.synced = false;
182
-
183
113
  websocket.onmessage = (event) => {
184
114
  provider.wsLastMessageReceived = time.getUnixTime();
185
115
  const encoder = readMessage(provider, new Uint8Array(event.data), true);
@@ -188,7 +118,7 @@ const setupWS = (provider) => {
188
118
  }
189
119
  };
190
120
  websocket.onerror = (event) => {
191
- provider.emit('connection-error', [event, provider]);
121
+ provider.emit("connection-error", [event, provider]);
192
122
  };
193
123
  websocket.onclose = (event) => {
194
124
  closeWebsocketConnection(provider, websocket, event);
@@ -198,15 +128,13 @@ const setupWS = (provider) => {
198
128
  provider.wsconnecting = false;
199
129
  provider.wsconnected = true;
200
130
  provider.wsUnsuccessfulReconnects = 0;
201
- provider.emit('status', [{
202
- status: 'connected'
131
+ provider.emit("status", [{
132
+ status: "connected"
203
133
  }]);
204
- // always send sync step 1 when connected
205
134
  const encoder = encoding.createEncoder();
206
135
  encoding.writeVarUint(encoder, messageSync);
207
136
  sync.writeSyncStep1(encoder, provider.doc);
208
137
  websocket.send(encoding.toUint8Array(encoder));
209
- // broadcast local awareness state
210
138
  if (provider.awareness.getLocalState() !== null) {
211
139
  const encoderAwarenessState = encoding.createEncoder();
212
140
  encoding.writeVarUint(encoderAwarenessState, messageAwareness);
@@ -219,16 +147,11 @@ const setupWS = (provider) => {
219
147
  websocket.send(encoding.toUint8Array(encoderAwarenessState));
220
148
  }
221
149
  };
222
- provider.emit('status', [{
223
- status: 'connecting'
150
+ provider.emit("status", [{
151
+ status: "connecting"
224
152
  }]);
225
153
  }
226
154
  };
227
-
228
- /**
229
- * @param {WebsocketProvider} provider
230
- * @param {ArrayBuffer} buf
231
- */
232
155
  const broadcastMessage = (provider, buf) => {
233
156
  const ws = provider.ws;
234
157
  if (provider.wsconnected && ws && ws.readyState === ws.OPEN) {
@@ -238,20 +161,6 @@ const broadcastMessage = (provider, buf) => {
238
161
  broadcastchannel.publish(provider.bcChannel, buf, provider);
239
162
  }
240
163
  };
241
-
242
- /**
243
- * Websocket Provider for Yjs. Creates a websocket connection to sync the shared document.
244
- * The document name is attached to the provided url. I.e. the following example
245
- * creates a websocket connection to http://localhost:1234/my-document-name
246
- *
247
- * @example
248
- * import * as Y from 'yjs'
249
- * import { WebsocketProvider } from 'y-websocket'
250
- * const doc = new Y.Doc()
251
- * const provider = new WebsocketProvider('http://localhost:1234', 'my-document-name', doc)
252
- *
253
- * @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 }>}
254
- */
255
164
  class WebsocketProvider extends observable.ObservableV2 {
256
165
  /**
257
166
  * @param {string} serverUrl
@@ -267,7 +176,7 @@ class WebsocketProvider extends observable.ObservableV2 {
267
176
  * @param {number} [opts.maxBackoffTime] Maximum amount of time to wait before trying to reconnect (we try to reconnect using exponential backoff)
268
177
  * @param {boolean} [opts.disableBc] Disable cross-tab BroadcastChannel communication
269
178
  */
270
- constructor (serverUrl, roomname, doc, {
179
+ constructor(serverUrl, roomname, doc, {
271
180
  connect = true,
272
181
  awareness: awareness$1 = new awareness.Awareness(doc),
273
182
  params = {},
@@ -278,18 +187,12 @@ class WebsocketProvider extends observable.ObservableV2 {
278
187
  disableBc = false
279
188
  } = {}) {
280
189
  super();
281
- // ensure that url is always ends with /
282
- while (serverUrl[serverUrl.length - 1] === '/') {
190
+ while (serverUrl[serverUrl.length - 1] === "/") {
283
191
  serverUrl = serverUrl.slice(0, serverUrl.length - 1);
284
192
  }
285
193
  this.serverUrl = serverUrl;
286
- this.bcChannel = serverUrl + '/' + roomname;
194
+ this.bcChannel = serverUrl + "/" + roomname;
287
195
  this.maxBackoffTime = maxBackoffTime;
288
- /**
289
- * The specified url parameters. This can be safely updated. The changed parameters will be used
290
- * when a new connection is established.
291
- * @type {Object<string,string>}
292
- */
293
196
  this.params = params;
294
197
  this.protocols = protocols;
295
198
  this.roomname = roomname;
@@ -302,41 +205,22 @@ class WebsocketProvider extends observable.ObservableV2 {
302
205
  this.disableBc = disableBc;
303
206
  this.wsUnsuccessfulReconnects = 0;
304
207
  this.messageHandlers = messageHandlers.slice();
305
- /**
306
- * @type {boolean}
307
- */
308
208
  this._synced = false;
309
- /**
310
- * @type {WebSocket?}
311
- */
312
209
  this.ws = null;
313
210
  this.wsLastMessageReceived = 0;
314
- /**
315
- * Whether to connect to other peers or not
316
- * @type {boolean}
317
- */
318
211
  this.shouldConnect = connect;
319
-
320
- /**
321
- * @type {number}
322
- */
323
212
  this._resyncInterval = 0;
324
213
  if (resyncInterval > 0) {
325
- this._resyncInterval = /** @type {any} */ (setInterval(() => {
214
+ this._resyncInterval = /** @type {any} */
215
+ setInterval(() => {
326
216
  if (this.ws && this.ws.readyState === WebSocket.OPEN) {
327
- // resend sync step 1
328
217
  const encoder = encoding.createEncoder();
329
218
  encoding.writeVarUint(encoder, messageSync);
330
219
  sync.writeSyncStep1(encoder, doc);
331
220
  this.ws.send(encoding.toUint8Array(encoder));
332
221
  }
333
- }, resyncInterval));
222
+ }, resyncInterval);
334
223
  }
335
-
336
- /**
337
- * @param {ArrayBuffer} data
338
- * @param {any} origin
339
- */
340
224
  this._bcSubscriber = (data, origin) => {
341
225
  if (origin !== this) {
342
226
  const encoder = readMessage(this, new Uint8Array(data), false);
@@ -345,11 +229,6 @@ class WebsocketProvider extends observable.ObservableV2 {
345
229
  }
346
230
  }
347
231
  };
348
- /**
349
- * Listens to Yjs updates and sends them to remote peers (ws and broadcastchannel)
350
- * @param {Uint8Array} update
351
- * @param {any} origin
352
- */
353
232
  this._updateHandler = (update, origin) => {
354
233
  if (origin !== this) {
355
234
  const encoder = encoding.createEncoder();
@@ -358,11 +237,7 @@ class WebsocketProvider extends observable.ObservableV2 {
358
237
  broadcastMessage(this, encoding.toUint8Array(encoder));
359
238
  }
360
239
  };
361
- this.doc.on('update', this._updateHandler);
362
- /**
363
- * @param {any} changed
364
- * @param {any} _origin
365
- */
240
+ this.doc.on("update", this._updateHandler);
366
241
  this._awarenessUpdateHandler = ({ added, updated, removed }, _origin) => {
367
242
  const changedClients = added.concat(updated).concat(removed);
368
243
  const encoder = encoding.createEncoder();
@@ -377,85 +252,74 @@ class WebsocketProvider extends observable.ObservableV2 {
377
252
  awareness.removeAwarenessStates(
378
253
  this.awareness,
379
254
  [doc.clientID],
380
- 'app closed'
255
+ "app closed"
381
256
  );
382
257
  };
383
- if (environment.isNode && typeof process !== 'undefined') {
384
- process.on('exit', this._exitHandler);
258
+ if (environment.isNode && typeof process !== "undefined") {
259
+ process.on("exit", this._exitHandler);
385
260
  }
386
- awareness$1.on('update', this._awarenessUpdateHandler);
387
- this._checkInterval = /** @type {any} */ (setInterval(() => {
388
- if (
389
- this.wsconnected &&
390
- messageReconnectTimeout <
391
- time.getUnixTime() - this.wsLastMessageReceived
392
- ) {
393
- // no message received in a long time - not even your own awareness
394
- // updates (which are updated every 15 seconds)
395
- closeWebsocketConnection(this, /** @type {WebSocket} */ (this.ws), null);
261
+ awareness$1.on("update", this._awarenessUpdateHandler);
262
+ this._checkInterval = /** @type {any} */
263
+ setInterval(() => {
264
+ if (this.wsconnected && messageReconnectTimeout < time.getUnixTime() - this.wsLastMessageReceived) {
265
+ closeWebsocketConnection(
266
+ this,
267
+ /** @type {WebSocket} */
268
+ this.ws,
269
+ null
270
+ );
396
271
  }
397
- }, messageReconnectTimeout / 10));
272
+ }, messageReconnectTimeout / 10);
398
273
  if (connect) {
399
274
  this.connect();
400
275
  }
401
276
  }
402
-
403
- get url () {
277
+ get url() {
404
278
  const encodedParams = url.encodeQueryParams(this.params);
405
- return this.serverUrl + '/' + this.roomname +
406
- (encodedParams.length === 0 ? '' : '?' + encodedParams)
279
+ return this.serverUrl + "/" + this.roomname + (encodedParams.length === 0 ? "" : "?" + encodedParams);
407
280
  }
408
-
409
281
  /**
410
282
  * @type {boolean}
411
283
  */
412
- get synced () {
413
- return this._synced
284
+ get synced() {
285
+ return this._synced;
414
286
  }
415
-
416
- set synced (state) {
287
+ set synced(state) {
417
288
  if (this._synced !== state) {
418
289
  this._synced = state;
419
- // @ts-ignore
420
- this.emit('synced', [state]);
421
- this.emit('sync', [state]);
290
+ this.emit("synced", [state]);
291
+ this.emit("sync", [state]);
422
292
  }
423
293
  }
424
-
425
- destroy () {
294
+ destroy() {
426
295
  if (this._resyncInterval !== 0) {
427
296
  clearInterval(this._resyncInterval);
428
297
  }
429
298
  clearInterval(this._checkInterval);
430
299
  this.disconnect();
431
- if (environment.isNode && typeof process !== 'undefined') {
432
- process.off('exit', this._exitHandler);
300
+ if (environment.isNode && typeof process !== "undefined") {
301
+ process.off("exit", this._exitHandler);
433
302
  }
434
- this.awareness.off('update', this._awarenessUpdateHandler);
435
- this.doc.off('update', this._updateHandler);
303
+ this.awareness.off("update", this._awarenessUpdateHandler);
304
+ this.doc.off("update", this._updateHandler);
436
305
  super.destroy();
437
306
  }
438
-
439
- connectBc () {
307
+ connectBc() {
440
308
  if (this.disableBc) {
441
- return
309
+ return;
442
310
  }
443
311
  if (!this.bcconnected) {
444
312
  broadcastchannel.subscribe(this.bcChannel, this._bcSubscriber);
445
313
  this.bcconnected = true;
446
314
  }
447
- // send sync step1 to bc
448
- // write sync step 1
449
315
  const encoderSync = encoding.createEncoder();
450
316
  encoding.writeVarUint(encoderSync, messageSync);
451
317
  sync.writeSyncStep1(encoderSync, this.doc);
452
318
  broadcastchannel.publish(this.bcChannel, encoding.toUint8Array(encoderSync), this);
453
- // broadcast local state
454
319
  const encoderState = encoding.createEncoder();
455
320
  encoding.writeVarUint(encoderState, messageSync);
456
321
  sync.writeSyncStep2(encoderState, this.doc);
457
322
  broadcastchannel.publish(this.bcChannel, encoding.toUint8Array(encoderState), this);
458
- // write queryAwareness
459
323
  const encoderAwarenessQuery = encoding.createEncoder();
460
324
  encoding.writeVarUint(encoderAwarenessQuery, messageQueryAwareness);
461
325
  broadcastchannel.publish(
@@ -463,7 +327,6 @@ class WebsocketProvider extends observable.ObservableV2 {
463
327
  encoding.toUint8Array(encoderAwarenessQuery),
464
328
  this
465
329
  );
466
- // broadcast local awareness state
467
330
  const encoderAwarenessState = encoding.createEncoder();
468
331
  encoding.writeVarUint(encoderAwarenessState, messageAwareness);
469
332
  encoding.writeVarUint8Array(
@@ -478,16 +341,14 @@ class WebsocketProvider extends observable.ObservableV2 {
478
341
  this
479
342
  );
480
343
  }
481
-
482
- disconnectBc () {
483
- // broadcast message with local awareness state set to null (indicating disconnect)
344
+ disconnectBc() {
484
345
  const encoder = encoding.createEncoder();
485
346
  encoding.writeVarUint(encoder, messageAwareness);
486
347
  encoding.writeVarUint8Array(
487
348
  encoder,
488
349
  awareness.encodeAwarenessUpdate(this.awareness, [
489
350
  this.doc.clientID
490
- ], new Map())
351
+ ], /* @__PURE__ */ new Map())
491
352
  );
492
353
  broadcastMessage(this, encoding.toUint8Array(encoder));
493
354
  if (this.bcconnected) {
@@ -495,16 +356,14 @@ class WebsocketProvider extends observable.ObservableV2 {
495
356
  this.bcconnected = false;
496
357
  }
497
358
  }
498
-
499
- disconnect () {
359
+ disconnect() {
500
360
  this.shouldConnect = false;
501
361
  this.disconnectBc();
502
362
  if (this.ws !== null) {
503
363
  closeWebsocketConnection(this, this.ws, null);
504
364
  }
505
365
  }
506
-
507
- connect () {
366
+ connect() {
508
367
  this.shouldConnect = true;
509
368
  if (!this.wsconnected && this.ws === null) {
510
369
  setupWS(this);
@@ -512,7 +371,6 @@ class WebsocketProvider extends observable.ObservableV2 {
512
371
  }
513
372
  }
514
373
  }
515
-
516
374
  exports.WebsocketProvider = WebsocketProvider;
517
375
  exports.messageAuth = messageAuth;
518
376
  exports.messageAwareness = messageAwareness;