@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,370 +1,200 @@
1
- import { BIT8, BITS7, BIT7, BITS6 } from './binary.js';
2
- import { floor, isNegativeZero } from './math.js';
3
- import { MAX_SAFE_INTEGER } from './number.js';
4
- import { utf8TextDecoder } from './string.js';
5
- import { create } from './error.js';
6
-
7
- /**
8
- * Efficient schema-less binary decoding with support for variable length encoding.
9
- *
10
- * Use [lib0/decoding] with [lib0/encoding]. Every encoding function has a corresponding decoding function.
11
- *
12
- * Encodes numbers in little-endian order (least to most significant byte order)
13
- * and is compatible with Golang's binary encoding (https://golang.org/pkg/encoding/binary/)
14
- * which is also used in Protocol Buffers.
15
- *
16
- * ```js
17
- * // encoding step
18
- * const encoder = encoding.createEncoder()
19
- * encoding.writeVarUint(encoder, 256)
20
- * encoding.writeVarString(encoder, 'Hello world!')
21
- * const buf = encoding.toUint8Array(encoder)
22
- * ```
23
- *
24
- * ```js
25
- * // decoding step
26
- * const decoder = decoding.createDecoder(buf)
27
- * decoding.readVarUint(decoder) // => 256
28
- * decoding.readVarString(decoder) // => 'Hello world!'
29
- * decoding.hasContent(decoder) // => false - all data is read
30
- * ```
31
- *
32
- * @module decoding
33
- */
34
-
35
-
36
- const errorUnexpectedEndOfArray = create('Unexpected end of array');
37
- const errorIntegerOutOfRange = create('Integer out of Range');
38
-
39
- /**
40
- * A Decoder handles the decoding of an Uint8Array.
41
- * @template {ArrayBufferLike} [Buf=ArrayBufferLike]
42
- */
1
+ import { BIT8, BITS7, BIT7, BITS6 } from "./binary.js";
2
+ import { floor, isNegativeZero } from "./math.js";
3
+ import { MAX_SAFE_INTEGER } from "./number.js";
4
+ import { utf8TextDecoder } from "./string.js";
5
+ import { create } from "./error.js";
6
+ const errorUnexpectedEndOfArray = create("Unexpected end of array");
7
+ const errorIntegerOutOfRange = create("Integer out of Range");
8
+ const subarray = (arr, begin, len) => {
9
+ if (begin < 0 || len < 0 || begin + len > arr.length) {
10
+ throw errorUnexpectedEndOfArray;
11
+ }
12
+ return new Uint8Array(arr.buffer, arr.byteOffset + begin, len);
13
+ };
14
+ const subdataview = (arr, begin, len) => {
15
+ if (begin < 0 || len < 0 || begin + len > arr.length) {
16
+ throw errorUnexpectedEndOfArray;
17
+ }
18
+ return new DataView(arr.buffer, arr.byteOffset + begin, len);
19
+ };
43
20
  class Decoder {
44
21
  /**
45
22
  * @param {Uint8Array<Buf>} uint8Array Binary data to decode
46
23
  */
47
- constructor (uint8Array) {
48
- /**
49
- * Decoding target.
50
- *
51
- * @type {Uint8Array<Buf>}
52
- */
24
+ constructor(uint8Array) {
53
25
  this.arr = uint8Array;
54
- /**
55
- * Current decoding position.
56
- *
57
- * @type {number}
58
- */
59
26
  this.pos = 0;
60
27
  }
61
28
  }
62
-
63
- /**
64
- * @function
65
- * @template {ArrayBufferLike} Buf
66
- * @param {Uint8Array<Buf>} uint8Array
67
- * @return {Decoder<Buf>}
68
- */
69
- const createDecoder = uint8Array => new Decoder(uint8Array);
70
-
71
- /**
72
- * @function
73
- * @param {Decoder} decoder
74
- * @return {boolean}
75
- */
76
- const hasContent = decoder => decoder.pos !== decoder.arr.length;
77
-
78
- /**
79
- * Create an Uint8Array view of the next `len` bytes and advance the position by `len`.
80
- *
81
- * Important: The Uint8Array still points to the underlying ArrayBuffer. Make sure to discard the result as soon as possible to prevent any memory leaks.
82
- * Use `buffer.copyUint8Array` to copy the result into a new Uint8Array.
83
- *
84
- * @function
85
- * @template {ArrayBufferLike} Buf
86
- * @param {Decoder<Buf>} decoder The decoder instance
87
- * @param {number} len The length of bytes to read
88
- * @return {Uint8Array<Buf>}
89
- */
29
+ const createDecoder = (uint8Array) => new Decoder(uint8Array);
30
+ const hasContent = (decoder) => decoder.pos !== decoder.arr.length;
90
31
  const readUint8Array = (decoder, len) => {
91
- const view = new Uint8Array(decoder.arr.buffer, decoder.pos + decoder.arr.byteOffset, len);
32
+ const view = subarray(decoder.arr, decoder.pos, len);
92
33
  decoder.pos += len;
93
- return view
34
+ return view;
94
35
  };
95
-
96
- /**
97
- * Read variable length Uint8Array.
98
- *
99
- * Important: The Uint8Array still points to the underlying ArrayBuffer. Make sure to discard the result as soon as possible to prevent any memory leaks.
100
- * Use `buffer.copyUint8Array` to copy the result into a new Uint8Array.
101
- *
102
- * @function
103
- * @template {ArrayBufferLike} Buf
104
- * @param {Decoder<Buf>} decoder
105
- * @return {Uint8Array<Buf>}
106
- */
107
- const readVarUint8Array = decoder => readUint8Array(decoder, readVarUint(decoder));
108
-
109
- /**
110
- * Read one byte as unsigned integer.
111
- * @function
112
- * @param {Decoder} decoder The decoder instance
113
- * @return {number} Unsigned 8-bit integer
114
- */
115
- const readUint8 = decoder => decoder.arr[decoder.pos++];
116
-
117
- /**
118
- * Read unsigned integer (32bit) with variable length.
119
- * 1/8th of the storage is used as encoding overhead.
120
- * * numbers < 2^7 is stored in one bytlength
121
- * * numbers < 2^14 is stored in two bylength
122
- *
123
- * @function
124
- * @param {Decoder} decoder
125
- * @return {number} An unsigned integer.length
126
- */
127
- const readVarUint = decoder => {
36
+ const readVarUint8Array = (decoder) => readUint8Array(decoder, readVarUint(decoder));
37
+ const readUint8 = (decoder) => decoder.arr[decoder.pos++];
38
+ const readVarUint = (decoder) => {
128
39
  let num = 0;
129
40
  let mult = 1;
130
41
  const len = decoder.arr.length;
131
42
  while (decoder.pos < len) {
132
43
  const r = decoder.arr[decoder.pos++];
133
- // num = num | ((r & binary.BITS7) << len)
134
- num = num + (r & BITS7) * mult; // shift $r << (7*#iterations) and add it to num
135
- mult *= 128; // next iteration, shift 7 "more" to the left
44
+ num = num + (r & BITS7) * mult;
45
+ mult *= 128;
136
46
  if (r < BIT8) {
137
- return num
47
+ return num;
138
48
  }
139
- /* c8 ignore start */
140
49
  if (num > MAX_SAFE_INTEGER) {
141
- throw errorIntegerOutOfRange
50
+ throw errorIntegerOutOfRange;
142
51
  }
143
- /* c8 ignore stop */
144
52
  }
145
- throw errorUnexpectedEndOfArray
53
+ throw errorUnexpectedEndOfArray;
146
54
  };
147
-
148
- /**
149
- * Read signed integer (32bit) with variable length.
150
- * 1/8th of the storage is used as encoding overhead.
151
- * * numbers < 2^7 is stored in one bytlength
152
- * * numbers < 2^14 is stored in two bylength
153
- * @todo This should probably create the inverse ~num if number is negative - but this would be a breaking change.
154
- *
155
- * @function
156
- * @param {Decoder} decoder
157
- * @return {number} An unsigned integer.length
158
- */
159
- const readVarInt = decoder => {
55
+ const readVarInt = (decoder) => {
160
56
  let r = decoder.arr[decoder.pos++];
161
57
  let num = r & BITS6;
162
58
  let mult = 64;
163
59
  const sign = (r & BIT7) > 0 ? -1 : 1;
164
60
  if ((r & BIT8) === 0) {
165
- // don't continue reading
166
- return sign * num
61
+ return sign * num;
167
62
  }
168
63
  const len = decoder.arr.length;
169
64
  while (decoder.pos < len) {
170
65
  r = decoder.arr[decoder.pos++];
171
- // num = num | ((r & binary.BITS7) << len)
172
66
  num = num + (r & BITS7) * mult;
173
67
  mult *= 128;
174
68
  if (r < BIT8) {
175
- return sign * num
69
+ return sign * num;
176
70
  }
177
- /* c8 ignore start */
178
71
  if (num > MAX_SAFE_INTEGER) {
179
- throw errorIntegerOutOfRange
72
+ throw errorIntegerOutOfRange;
180
73
  }
181
- /* c8 ignore stop */
182
74
  }
183
- throw errorUnexpectedEndOfArray
75
+ throw errorUnexpectedEndOfArray;
184
76
  };
185
-
186
- /**
187
- * We don't test this function anymore as we use native decoding/encoding by default now.
188
- * Better not modify this anymore..
189
- *
190
- * Transforming utf8 to a string is pretty expensive. The code performs 10x better
191
- * when String.fromCodePoint is fed with all characters as arguments.
192
- * But most environments have a maximum number of arguments per functions.
193
- * For effiency reasons we apply a maximum of 10000 characters at once.
194
- *
195
- * @function
196
- * @param {Decoder} decoder
197
- * @return {String} The read String.
198
- */
199
- /* c8 ignore start */
200
- const _readVarStringPolyfill = decoder => {
77
+ const _readVarStringPolyfill = (decoder) => {
201
78
  let remainingLen = readVarUint(decoder);
202
79
  if (remainingLen === 0) {
203
- return ''
80
+ return "";
204
81
  } else {
205
- let encodedString = String.fromCodePoint(readUint8(decoder)); // remember to decrease remainingLen
206
- if (--remainingLen < 100) { // do not create a Uint8Array for small strings
82
+ let encodedString = String.fromCodePoint(readUint8(decoder));
83
+ if (--remainingLen < 100) {
207
84
  while (remainingLen--) {
208
85
  encodedString += String.fromCodePoint(readUint8(decoder));
209
86
  }
210
87
  } else {
211
88
  while (remainingLen > 0) {
212
- const nextLen = remainingLen < 10000 ? remainingLen : 10000;
213
- // this is dangerous, we create a fresh array view from the existing buffer
89
+ const nextLen = remainingLen < 1e4 ? remainingLen : 1e4;
214
90
  const bytes = decoder.arr.subarray(decoder.pos, decoder.pos + nextLen);
215
91
  decoder.pos += nextLen;
216
- // Starting with ES5.1 we can supply a generic array-like object as arguments
217
- encodedString += String.fromCodePoint.apply(null, /** @type {any} */ (bytes));
92
+ encodedString += String.fromCodePoint.apply(
93
+ null,
94
+ /** @type {any} */
95
+ bytes
96
+ );
218
97
  remainingLen -= nextLen;
219
98
  }
220
99
  }
221
- return decodeURIComponent(escape(encodedString))
100
+ return decodeURIComponent(escape(encodedString));
222
101
  }
223
102
  };
224
- /* c8 ignore stop */
225
-
226
- /**
227
- * @function
228
- * @param {Decoder} decoder
229
- * @return {String} The read String
230
- */
231
- const _readVarStringNative = decoder =>
232
- /** @type any */ (utf8TextDecoder).decode(readVarUint8Array(decoder));
233
-
234
- /**
235
- * Read string of variable length
236
- * * varUint is used to store the length of the string
237
- *
238
- * @function
239
- * @param {Decoder} decoder
240
- * @return {String} The read String
241
- *
242
- */
243
- /* c8 ignore next */
103
+ const _readVarStringNative = (decoder) => (
104
+ /** @type any */
105
+ utf8TextDecoder.decode(readVarUint8Array(decoder))
106
+ );
244
107
  const readVarString = utf8TextDecoder ? _readVarStringNative : _readVarStringPolyfill;
245
-
246
- /**
247
- * @param {Decoder} decoder
248
- * @param {number} len
249
- * @return {DataView}
250
- */
251
108
  const readFromDataView = (decoder, len) => {
252
- const dv = new DataView(decoder.arr.buffer, decoder.arr.byteOffset + decoder.pos, len);
109
+ const dv = subdataview(decoder.arr, decoder.pos, len);
253
110
  decoder.pos += len;
254
- return dv
111
+ return dv;
255
112
  };
256
-
257
- /**
258
- * @param {Decoder} decoder
259
- */
260
- const readFloat32 = decoder => readFromDataView(decoder, 4).getFloat32(0, false);
261
-
262
- /**
263
- * @param {Decoder} decoder
264
- */
265
- const readFloat64 = decoder => readFromDataView(decoder, 8).getFloat64(0, false);
266
-
267
- /**
268
- * @param {Decoder} decoder
269
- */
270
- const readBigInt64 = decoder => /** @type {any} */ (readFromDataView(decoder, 8)).getBigInt64(0, false);
271
-
272
- /**
273
- * @type {Array<function(Decoder):any>}
274
- */
113
+ const readFloat32 = (decoder) => readFromDataView(decoder, 4).getFloat32(0, false);
114
+ const readFloat64 = (decoder) => readFromDataView(decoder, 8).getFloat64(0, false);
115
+ const readBigInt64 = (decoder) => (
116
+ /** @type {any} */
117
+ readFromDataView(decoder, 8).getBigInt64(0, false)
118
+ );
275
119
  const readAnyLookupTable = [
276
- decoder => undefined, // CASE 127: undefined
277
- decoder => null, // CASE 126: null
278
- readVarInt, // CASE 125: integer
279
- readFloat32, // CASE 124: float32
280
- readFloat64, // CASE 123: float64
281
- readBigInt64, // CASE 122: bigint
282
- decoder => false, // CASE 121: boolean (false)
283
- decoder => true, // CASE 120: boolean (true)
284
- readVarString, // CASE 119: string
285
- decoder => { // CASE 118: object<string,any>
120
+ (decoder) => void 0,
121
+ // CASE 127: undefined
122
+ (decoder) => null,
123
+ // CASE 126: null
124
+ readVarInt,
125
+ // CASE 125: integer
126
+ readFloat32,
127
+ // CASE 124: float32
128
+ readFloat64,
129
+ // CASE 123: float64
130
+ readBigInt64,
131
+ // CASE 122: bigint
132
+ (decoder) => false,
133
+ // CASE 121: boolean (false)
134
+ (decoder) => true,
135
+ // CASE 120: boolean (true)
136
+ readVarString,
137
+ // CASE 119: string
138
+ (decoder) => {
286
139
  const len = readVarUint(decoder);
287
- /**
288
- * @type {Object<string,any>}
289
- */
290
140
  const obj = {};
291
141
  for (let i = 0; i < len; i++) {
292
142
  const key = readVarString(decoder);
293
143
  obj[key] = readAny(decoder);
294
144
  }
295
- return obj
145
+ return obj;
296
146
  },
297
- decoder => { // CASE 117: array<any>
147
+ (decoder) => {
298
148
  const len = readVarUint(decoder);
299
149
  const arr = [];
300
150
  for (let i = 0; i < len; i++) {
301
151
  arr.push(readAny(decoder));
302
152
  }
303
- return arr
153
+ return arr;
304
154
  },
305
- readVarUint8Array // CASE 116: Uint8Array
155
+ readVarUint8Array
156
+ // CASE 116: Uint8Array
306
157
  ];
307
-
308
- /**
309
- * @param {Decoder} decoder
310
- */
311
- const readAny = decoder => readAnyLookupTable[127 - readUint8(decoder)](decoder);
312
-
313
- /**
314
- * T must not be null.
315
- *
316
- * @template T
317
- */
158
+ const readAny = (decoder) => readAnyLookupTable[127 - readUint8(decoder)](decoder);
318
159
  class RleDecoder extends Decoder {
319
160
  /**
320
161
  * @param {Uint8Array} uint8Array
321
162
  * @param {function(Decoder):T} reader
322
163
  */
323
- constructor (uint8Array, reader) {
164
+ constructor(uint8Array, reader) {
324
165
  super(uint8Array);
325
- /**
326
- * The reader
327
- */
328
166
  this.reader = reader;
329
- /**
330
- * Current state
331
- * @type {T|null}
332
- */
333
167
  this.s = null;
334
168
  this.count = 0;
335
169
  }
336
-
337
- read () {
170
+ read() {
338
171
  if (this.count === 0) {
339
172
  this.s = this.reader(this);
340
173
  if (hasContent(this)) {
341
- this.count = readVarUint(this) + 1; // see encoder implementation for the reason why this is incremented
174
+ this.count = readVarUint(this) + 1;
342
175
  } else {
343
- this.count = -1; // read the current value forever
176
+ this.count = -1;
344
177
  }
345
178
  }
346
179
  this.count--;
347
- return /** @type {T} */ (this.s)
180
+ return (
181
+ /** @type {T} */
182
+ this.s
183
+ );
348
184
  }
349
185
  }
350
-
351
186
  class UintOptRleDecoder extends Decoder {
352
187
  /**
353
188
  * @param {Uint8Array} uint8Array
354
189
  */
355
- constructor (uint8Array) {
190
+ constructor(uint8Array) {
356
191
  super(uint8Array);
357
- /**
358
- * @type {number}
359
- */
360
192
  this.s = 0;
361
193
  this.count = 0;
362
194
  }
363
-
364
- read () {
195
+ read() {
365
196
  if (this.count === 0) {
366
197
  this.s = readVarInt(this);
367
- // if the sign is negative, we read the count too, otherwise count is 1
368
198
  const isNegative = isNegativeZero(this.s);
369
199
  this.count = 1;
370
200
  if (isNegative) {
@@ -373,33 +203,30 @@ class UintOptRleDecoder extends Decoder {
373
203
  }
374
204
  }
375
205
  this.count--;
376
- return /** @type {number} */ (this.s)
206
+ return (
207
+ /** @type {number} */
208
+ this.s
209
+ );
377
210
  }
378
211
  }
379
-
380
212
  class IntDiffOptRleDecoder extends Decoder {
381
213
  /**
382
214
  * @param {Uint8Array} uint8Array
383
215
  */
384
- constructor (uint8Array) {
216
+ constructor(uint8Array) {
385
217
  super(uint8Array);
386
- /**
387
- * @type {number}
388
- */
389
218
  this.s = 0;
390
219
  this.count = 0;
391
220
  this.diff = 0;
392
221
  }
393
-
394
222
  /**
395
223
  * @return {number}
396
224
  */
397
- read () {
225
+ read() {
398
226
  if (this.count === 0) {
399
227
  const diff = readVarInt(this);
400
- // if the first bit is set, we read more data
401
228
  const hasCount = diff & 1;
402
- this.diff = floor(diff / 2); // shift >> 1
229
+ this.diff = floor(diff / 2);
403
230
  this.count = 1;
404
231
  if (hasCount) {
405
232
  this.count = readVarUint(this) + 2;
@@ -407,32 +234,47 @@ class IntDiffOptRleDecoder extends Decoder {
407
234
  }
408
235
  this.s += this.diff;
409
236
  this.count--;
410
- return this.s
237
+ return this.s;
411
238
  }
412
239
  }
413
-
414
240
  class StringDecoder {
415
241
  /**
416
242
  * @param {Uint8Array} uint8Array
417
243
  */
418
- constructor (uint8Array) {
244
+ constructor(uint8Array) {
419
245
  this.decoder = new UintOptRleDecoder(uint8Array);
420
246
  this.str = readVarString(this.decoder);
421
- /**
422
- * @type {number}
423
- */
424
247
  this.spos = 0;
425
248
  }
426
-
427
249
  /**
428
250
  * @return {string}
429
251
  */
430
- read () {
252
+ read() {
431
253
  const end = this.spos + this.decoder.read();
432
254
  const res = this.str.slice(this.spos, end);
433
255
  this.spos = end;
434
- return res
256
+ return res;
435
257
  }
436
258
  }
437
-
438
- export { Decoder, IntDiffOptRleDecoder, RleDecoder, StringDecoder, UintOptRleDecoder, _readVarStringNative, _readVarStringPolyfill, createDecoder, hasContent, readAny, readBigInt64, readFloat32, readFloat64, readFromDataView, readUint8, readUint8Array, readVarInt, readVarString, readVarUint, readVarUint8Array };
259
+ export {
260
+ Decoder,
261
+ IntDiffOptRleDecoder,
262
+ RleDecoder,
263
+ StringDecoder,
264
+ UintOptRleDecoder,
265
+ _readVarStringNative,
266
+ _readVarStringPolyfill,
267
+ createDecoder,
268
+ hasContent,
269
+ readAny,
270
+ readBigInt64,
271
+ readFloat32,
272
+ readFloat64,
273
+ readFromDataView,
274
+ readUint8,
275
+ readUint8Array,
276
+ readVarInt,
277
+ readVarString,
278
+ readVarUint,
279
+ readVarUint8Array
280
+ };
@@ -1,47 +1,24 @@
1
- import { map } from './map.js';
2
- import { $custom } from './schema.js';
3
-
4
- /* eslint-env browser */
5
-
6
-
7
- /* c8 ignore start */
8
- /**
9
- * @type {Document}
10
- */
11
- const doc = /** @type {Document} */ (typeof document !== 'undefined' ? document : {});
12
-
13
- /**
14
- * @type {$.Schema<DocumentFragment>}
15
- */
16
- $custom(el => el.nodeType === DOCUMENT_FRAGMENT_NODE);
17
-
18
- /** @type {DOMParser} */ (typeof DOMParser !== 'undefined' ? new DOMParser() : null);
19
-
20
- /**
21
- * @type {$.Schema<Element>}
22
- */
23
- $custom(el => el.nodeType === ELEMENT_NODE);
24
-
25
- /**
26
- * @type {$.Schema<Text>}
27
- */
28
- $custom(el => el.nodeType === TEXT_NODE);
29
-
30
- /**
31
- * @param {Map<string,string>} m
32
- * @return {string}
33
- */
34
- const mapToStyleString = m => map(m, (value, key) => `${key}:${value};`).join('');
35
-
1
+ import { map } from "./map.js";
2
+ import { $custom } from "./schema.js";
3
+ const doc = (
4
+ /** @type {Document} */
5
+ typeof document !== "undefined" ? document : {}
6
+ );
7
+ $custom((el) => el.nodeType === DOCUMENT_FRAGMENT_NODE);
8
+ typeof DOMParser !== "undefined" ? new DOMParser() : null;
9
+ $custom((el) => el.nodeType === ELEMENT_NODE);
10
+ $custom((el) => el.nodeType === TEXT_NODE);
11
+ const mapToStyleString = (m) => map(m, (value, key) => `${key}:${value};`).join("");
36
12
  const ELEMENT_NODE = doc.ELEMENT_NODE;
37
13
  const TEXT_NODE = doc.TEXT_NODE;
38
14
  const DOCUMENT_NODE = doc.DOCUMENT_NODE;
39
15
  const DOCUMENT_FRAGMENT_NODE = doc.DOCUMENT_FRAGMENT_NODE;
40
-
41
- /**
42
- * @type {$.Schema<Node>}
43
- */
44
- $custom(el => el.nodeType === DOCUMENT_NODE);
45
- /* c8 ignore stop */
46
-
47
- export { DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, ELEMENT_NODE, TEXT_NODE, doc, mapToStyleString };
16
+ $custom((el) => el.nodeType === DOCUMENT_NODE);
17
+ export {
18
+ DOCUMENT_FRAGMENT_NODE,
19
+ DOCUMENT_NODE,
20
+ ELEMENT_NODE,
21
+ TEXT_NODE,
22
+ doc,
23
+ mapToStyleString
24
+ };