p5 2.2.1-rc.0 → 2.2.1

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 (117) hide show
  1. package/dist/accessibility/color_namer.js +5 -6
  2. package/dist/accessibility/describe.js +4 -26
  3. package/dist/accessibility/index.js +5 -6
  4. package/dist/accessibility/outputs.js +6 -38
  5. package/dist/app.js +5 -6
  6. package/dist/color/color_conversion.js +5 -6
  7. package/dist/color/creating_reading.js +1 -1
  8. package/dist/color/index.js +2 -2
  9. package/dist/color/p5.Color.js +1 -1
  10. package/dist/color/setting.js +59 -357
  11. package/dist/{constants-DEJVKr9Z.js → constants-DQyACdzq.js} +11 -61
  12. package/dist/core/constants.js +1 -1
  13. package/dist/core/environment.js +26 -158
  14. package/dist/core/filterShaders.js +1 -1
  15. package/dist/core/friendly_errors/fes_core.js +1 -1
  16. package/dist/core/friendly_errors/file_errors.js +1 -1
  17. package/dist/core/friendly_errors/index.js +1 -1
  18. package/dist/core/friendly_errors/param_validator.js +1 -1
  19. package/dist/core/friendly_errors/sketch_verifier.js +1 -1
  20. package/dist/core/helpers.js +1 -1
  21. package/dist/core/init.js +5 -6
  22. package/dist/core/internationalization.js +1 -1
  23. package/dist/core/legacy.js +5 -6
  24. package/dist/core/main.js +5 -6
  25. package/dist/core/p5.Graphics.js +4 -5
  26. package/dist/core/p5.Renderer.js +3 -4
  27. package/dist/core/p5.Renderer2D.js +5 -6
  28. package/dist/core/p5.Renderer3D.js +4 -5
  29. package/dist/core/rendering.js +4 -5
  30. package/dist/core/structure.js +13 -52
  31. package/dist/core/transform.js +32 -176
  32. package/dist/{creating_reading-CgHCHxqN.js → creating_reading-ZXzcZEsb.js} +3 -196
  33. package/dist/data/local_storage.js +4 -30
  34. package/dist/dom/dom.js +24 -159
  35. package/dist/dom/index.js +2 -2
  36. package/dist/dom/p5.Element.js +31 -208
  37. package/dist/dom/p5.File.js +1 -32
  38. package/dist/dom/p5.MediaElement.js +10 -113
  39. package/dist/events/acceleration.js +11 -64
  40. package/dist/events/keyboard.js +13 -81
  41. package/dist/events/pointer.js +18 -160
  42. package/dist/image/const.js +1 -1
  43. package/dist/image/filterRenderer2D.js +4 -5
  44. package/dist/image/image.js +4 -5
  45. package/dist/image/index.js +4 -5
  46. package/dist/image/loading_displaying.js +4 -5
  47. package/dist/image/p5.Image.js +3 -4
  48. package/dist/image/pixels.js +17 -100
  49. package/dist/io/files.js +4 -5
  50. package/dist/io/index.js +4 -5
  51. package/dist/io/p5.Table.js +66 -158
  52. package/dist/io/p5.TableRow.js +48 -71
  53. package/dist/io/p5.XML.js +6 -99
  54. package/dist/io/utilities.js +8 -3
  55. package/dist/{main-_RXV5Lx8.js → main-DvN69W3f.js} +13 -42
  56. package/dist/math/Matrices/Matrix.js +87 -126
  57. package/dist/math/Matrices/MatrixNumjs.js +1 -5
  58. package/dist/math/calculation.js +10 -112
  59. package/dist/math/index.js +1 -1
  60. package/dist/math/math.js +2 -12
  61. package/dist/math/noise.js +5 -32
  62. package/dist/math/p5.Matrix.js +3 -3
  63. package/dist/math/p5.Vector.js +104 -345
  64. package/dist/math/random.js +5 -32
  65. package/dist/math/trigonometry.js +15 -105
  66. package/dist/{p5.Renderer-QoFcvj3f.js → p5.Renderer-D-5LdCRz.js} +25 -178
  67. package/dist/{rendering-CsICjEXA.js → rendering-h9unX5K0.js} +254 -1156
  68. package/dist/shape/2d_primitives.js +33 -194
  69. package/dist/shape/attributes.js +12 -73
  70. package/dist/shape/curves.js +30 -95
  71. package/dist/shape/custom_shapes.js +63 -144
  72. package/dist/shape/index.js +2 -2
  73. package/dist/shape/vertex.js +21 -106
  74. package/dist/strands/p5.strands.js +248 -46
  75. package/dist/type/index.js +3 -4
  76. package/dist/type/p5.Font.js +4 -49
  77. package/dist/type/textCore.js +5 -158
  78. package/dist/utilities/conversion.js +17 -104
  79. package/dist/utilities/time_date.js +3 -40
  80. package/dist/utilities/utility_functions.js +6 -48
  81. package/dist/webgl/3d_primitives.js +4 -5
  82. package/dist/webgl/GeometryBuilder.js +1 -2
  83. package/dist/webgl/ShapeBuilder.js +22 -2
  84. package/dist/webgl/enums.js +1 -1
  85. package/dist/webgl/index.js +4 -5
  86. package/dist/webgl/interaction.js +6 -33
  87. package/dist/webgl/light.js +4 -5
  88. package/dist/webgl/loading.js +12 -46
  89. package/dist/webgl/material.js +4 -5
  90. package/dist/webgl/p5.Camera.js +4 -5
  91. package/dist/webgl/p5.DataArray.js +0 -4
  92. package/dist/webgl/p5.Framebuffer.js +4 -5
  93. package/dist/webgl/p5.Geometry.js +12 -106
  94. package/dist/webgl/p5.Quat.js +1 -1
  95. package/dist/webgl/p5.RendererGL.js +7 -18
  96. package/dist/webgl/p5.Shader.js +12 -36
  97. package/dist/webgl/p5.Texture.js +4 -5
  98. package/dist/webgl/text.js +4 -5
  99. package/dist/webgl/utils.js +4 -5
  100. package/dist/webgpu/index.js +1 -1
  101. package/dist/webgpu/p5.RendererWebGPU.js +529 -208
  102. package/dist/webgpu/shaders/color.js +32 -17
  103. package/dist/webgpu/shaders/filters/base.js +18 -7
  104. package/dist/webgpu/shaders/font.js +52 -40
  105. package/dist/webgpu/shaders/line.js +50 -36
  106. package/dist/webgpu/shaders/material.js +90 -83
  107. package/dist/webgpu/strands_wgslBackend.js +5 -2
  108. package/lib/p5.esm.js +5576 -7811
  109. package/lib/p5.esm.min.js +1 -1
  110. package/lib/p5.js +5576 -7811
  111. package/lib/p5.min.js +1 -1
  112. package/lib/p5.webgpu.esm.js +786 -453
  113. package/lib/p5.webgpu.js +786 -453
  114. package/lib/p5.webgpu.min.js +1 -1
  115. package/package.json +13 -13
  116. package/types/global.d.ts +16905 -16783
  117. package/types/p5.d.ts +11142 -11081
@@ -14,17 +14,15 @@ class TableRow {
14
14
  }
15
15
 
16
16
  /**
17
- * Stores a value in the TableRow's specified column.
18
- * The column may be specified by either its ID or title.
17
+ * Stores a value in the TableRow's specified column.
18
+ * The column may be specified by either its ID or title.
19
19
  *
20
- * @deprecated p5.Table will be removed in a future version of p5.js to make way for a new, friendlier version :)
21
- * @param {String|Integer} column Column ID (Number)
22
- * or Title (String)
23
- * @param {String|Number} value The value to be stored
20
+ * @deprecated p5.Table will be removed in a future version of p5.js to make way for a new, friendlier version :)
21
+ * @param {String|Integer} column Column ID (Number)
22
+ * or Title (String)
23
+ * @param {String|Number} value The value to be stored
24
24
  *
25
25
  * @example
26
- * <div>
27
- * <code>
28
26
  * let table;
29
27
  *
30
28
  * async function setup() {
@@ -58,8 +56,6 @@ class TableRow {
58
56
  *
59
57
  * describe('no image displayed');
60
58
  * }
61
- * </code>
62
- * </div>
63
59
  */
64
60
  set(column, value) {
65
61
  // if typeof column is string, use .obj
@@ -84,17 +80,15 @@ class TableRow {
84
80
  }
85
81
 
86
82
  /**
87
- * Stores a Float value in the TableRow's specified column.
88
- * The column may be specified by either its ID or title.
83
+ * Stores a Float value in the TableRow's specified column.
84
+ * The column may be specified by either its ID or title.
89
85
  *
90
- * @deprecated p5.Table will be removed in a future version of p5.js to make way for a new, friendlier version :)
91
- * @param {String|Integer} column Column ID (Number)
92
- * or Title (String)
93
- * @param {Number|String} value The value to be stored
86
+ * @deprecated p5.Table will be removed in a future version of p5.js to make way for a new, friendlier version :)
87
+ * @param {String|Integer} column Column ID (Number)
88
+ * or Title (String)
89
+ * @param {Number|String} value The value to be stored
94
90
  * as a Float
95
91
  * @example
96
- * <div>
97
- * <code>
98
92
  * let table;
99
93
  *
100
94
  * async function setup() {
@@ -129,8 +123,6 @@ class TableRow {
129
123
  *
130
124
  * describe('no image displayed');
131
125
  * }
132
- * </code>
133
- * </div>
134
126
  */
135
127
  setNum(column, value) {
136
128
  const floatVal = parseFloat(value);
@@ -138,17 +130,15 @@ class TableRow {
138
130
  }
139
131
 
140
132
  /**
141
- * Stores a String value in the TableRow's specified column.
142
- * The column may be specified by either its ID or title.
133
+ * Stores a String value in the TableRow's specified column.
134
+ * The column may be specified by either its ID or title.
143
135
  *
144
- * @deprecated p5.Table will be removed in a future version of p5.js to make way for a new, friendlier version :)
145
- * @param {String|Integer} column Column ID (Number)
146
- * or Title (String)
147
- * @param {String|Number|Boolean|Object} value The value to be stored
136
+ * @deprecated p5.Table will be removed in a future version of p5.js to make way for a new, friendlier version :)
137
+ * @param {String|Integer} column Column ID (Number)
138
+ * or Title (String)
139
+ * @param {String|Number|Boolean|Object} value The value to be stored
148
140
  * as a String
149
141
  * @example
150
- * <div>
151
- * <code>
152
142
  * let table;
153
143
  *
154
144
  * async function setup() {
@@ -183,7 +173,6 @@ class TableRow {
183
173
  *
184
174
  * // describe('no image displayed');
185
175
  * }
186
- * </code>
187
176
  */
188
177
  setString(column, value) {
189
178
  const stringVal = value.toString();
@@ -191,17 +180,15 @@ class TableRow {
191
180
  }
192
181
 
193
182
  /**
194
- * Retrieves a value from the TableRow's specified column.
195
- * The column may be specified by either its ID or title.
183
+ * Retrieves a value from the TableRow's specified column.
184
+ * The column may be specified by either its ID or title.
196
185
  *
197
- * @deprecated p5.Table will be removed in a future version of p5.js to make way for a new, friendlier version :)
198
- * @param {String|Integer} column columnName (string) or
199
- * ID (number)
200
- * @return {String|Number}
186
+ * @deprecated p5.Table will be removed in a future version of p5.js to make way for a new, friendlier version :)
187
+ * @param {String|Integer} column columnName (string) or
188
+ * ID (number)
189
+ * @return {String|Number}
201
190
  *
202
191
  * @example
203
- * <div>
204
- * <code>
205
192
  * let table;
206
193
  *
207
194
  * async function setup() {
@@ -229,8 +216,6 @@ class TableRow {
229
216
  *
230
217
  * describe('no image displayed');
231
218
  * }
232
- * </code>
233
- * </div>
234
219
  */
235
220
  get(column) {
236
221
  if (typeof column === 'string') {
@@ -241,17 +226,15 @@ class TableRow {
241
226
  }
242
227
 
243
228
  /**
244
- * Retrieves a Float value from the TableRow's specified
245
- * column. The column may be specified by either its ID or
246
- * title.
247
- *
248
- * @deprecated p5.Table will be removed in a future version of p5.js to make way for a new, friendlier version :)
249
- * @param {String|Integer} column columnName (string) or
250
- * ID (number)
251
- * @return {Number} Float Floating point number
229
+ * Retrieves a Float value from the TableRow's specified
230
+ * column. The column may be specified by either its ID or
231
+ * title.
232
+ *
233
+ * @deprecated p5.Table will be removed in a future version of p5.js to make way for a new, friendlier version :)
234
+ * @param {String|Integer} column columnName (string) or
235
+ * ID (number)
236
+ * @return {Number} Float Floating point number
252
237
  * @example
253
- * <div>
254
- * <code>
255
238
  * let table;
256
239
  *
257
240
  * async function setup() {
@@ -281,8 +264,6 @@ class TableRow {
281
264
  *
282
265
  * describe('no image displayed');
283
266
  * }
284
- * </code>
285
- * </div>
286
267
  */
287
268
  getNum(column) {
288
269
  let ret;
@@ -299,18 +280,16 @@ class TableRow {
299
280
  }
300
281
 
301
282
  /**
302
- * Retrieves an String value from the TableRow's specified
303
- * column. The column may be specified by either its ID or
304
- * title.
283
+ * Retrieves an String value from the TableRow's specified
284
+ * column. The column may be specified by either its ID or
285
+ * title.
305
286
  *
306
- * @deprecated p5.Table will be removed in a future version of p5.js to make way for a new, friendlier version :)
287
+ * @deprecated p5.Table will be removed in a future version of p5.js to make way for a new, friendlier version :)
307
288
  *
308
- * @param {String|Integer} column columnName (string) or
309
- * ID (number)
310
- * @return {String} String
289
+ * @param {String|Integer} column columnName (string) or
290
+ * ID (number)
291
+ * @return {String} String
311
292
  * @example
312
- * <div>
313
- * <code>
314
293
  * let table;
315
294
  *
316
295
  * async function setup() {
@@ -339,8 +318,6 @@ class TableRow {
339
318
  *
340
319
  * describe('no image displayed');
341
320
  * }
342
- * </code>
343
- * </div>
344
321
  */
345
322
  getString(column) {
346
323
  if (typeof column === 'string') {
@@ -352,17 +329,17 @@ class TableRow {
352
329
  }
353
330
  function tableRow(p5, fn){
354
331
  /**
355
- * A TableRow object represents a single row of data values,
356
- * stored in columns, from a table.
332
+ * A TableRow object represents a single row of data values,
333
+ * stored in columns, from a table.
357
334
  *
358
- * A Table Row contains both an ordered array, and an unordered
359
- * JSON object.
335
+ * A Table Row contains both an ordered array, and an unordered
336
+ * JSON object.
360
337
  *
361
- * @class p5.TableRow
362
- * @deprecated p5.Table will be removed in a future version of p5.js to make way for a new, friendlier version :)
363
- * @constructor
364
- * @param {any[]} row optional: populate the row with an
365
- * array of values
338
+ * @class p5.TableRow
339
+ * @deprecated p5.Table will be removed in a future version of p5.js to make way for a new, friendlier version :)
340
+ * @constructor
341
+ * @param {any[]} row optional: populate the row with an
342
+ * array of values
366
343
  */
367
344
  p5.TableRow = TableRow;
368
345
  }
package/dist/io/p5.XML.js CHANGED
@@ -21,8 +21,6 @@ class XML {
21
21
  * @return {p5.XML} parent element.
22
22
  *
23
23
  * @example
24
- * <div>
25
- * <code>
26
24
  * let myXML;
27
25
  *
28
26
  * async function setup() {
@@ -55,8 +53,6 @@ class XML {
55
53
  *
56
54
  * describe('The word "animals" written in black on a gray background.');
57
55
  * }
58
- * </code>
59
- * </div>
60
56
  */
61
57
  getParent() {
62
58
  return new XML(this.DOM.parentElement);
@@ -71,8 +67,6 @@ class XML {
71
67
  * @return {String} name of the element.
72
68
  *
73
69
  * @example
74
- * <div>
75
- * <code>
76
70
  * let myXML;
77
71
  *
78
72
  * async function setup() {
@@ -102,8 +96,6 @@ class XML {
102
96
  *
103
97
  * describe('The word "mammal" written in black on a gray background.');
104
98
  * }
105
- * </code>
106
- * </div>
107
99
  */
108
100
  getName() {
109
101
  return this.DOM.tagName;
@@ -122,8 +114,6 @@ class XML {
122
114
  * @param {String} name new tag name of the element.
123
115
  *
124
116
  * @example
125
- * <div>
126
- * <code>
127
117
  * let myXML;
128
118
  *
129
119
  * async function setup() {
@@ -156,7 +146,6 @@ class XML {
156
146
  * 'The words "animals" and "monsters" written on separate lines. The text is black on a gray background.'
157
147
  * );
158
148
  * }
159
- * </code></div>
160
149
  */
161
150
  setName(name) {
162
151
  const content = this.DOM.innerHTML;
@@ -176,8 +165,6 @@ class XML {
176
165
  * @return {boolean} whether the element has children.
177
166
  *
178
167
  * @example
179
- * <div>
180
- * <code>
181
168
  * let myXML;
182
169
  *
183
170
  * async function setup() {
@@ -205,8 +192,6 @@ class XML {
205
192
  *
206
193
  * describe('The word "Parent" written in black on a gray background.');
207
194
  * }
208
- * </code>
209
- * </div>
210
195
  */
211
196
  hasChildren() {
212
197
  return this.DOM.children.length > 0;
@@ -219,8 +204,6 @@ class XML {
219
204
  * @return {String[]} names of the child elements.
220
205
  *
221
206
  * @example
222
- * <div>
223
- * <code>
224
207
  * let myXML;
225
208
  *
226
209
  * async function setup() {
@@ -253,8 +236,6 @@ class XML {
253
236
  * 'The words "mammal", "mammal", "mammal", and "reptile" written on separate lines. The text is black on a gray background.'
254
237
  * );
255
238
  * }
256
- * </code>
257
- * </div>
258
239
  */
259
240
  listChildren() {
260
241
  const arr = [];
@@ -276,8 +257,6 @@ class XML {
276
257
  * @return {p5.XML[]} child elements.
277
258
  *
278
259
  * @example
279
- * <div>
280
- * <code>
281
260
  * let myXML;
282
261
  *
283
262
  * async function setup() {
@@ -313,11 +292,8 @@ class XML {
313
292
  * 'The words "Goat", "Leopard", "Zebra", and "Turtle" written on separate lines. The text is black on a gray background.'
314
293
  * );
315
294
  * }
316
- * </code>
317
- * </div>
318
295
  *
319
- * <div>
320
- * <code>
296
+ * @example
321
297
  * let myXML;
322
298
  *
323
299
  * async function setup() {
@@ -354,8 +330,6 @@ class XML {
354
330
  * 'The words "Goat", "Leopard", and "Zebra" written on separate lines. The text is black on a gray background.'
355
331
  * );
356
332
  * }
357
- * </code>
358
- * </div>
359
333
  */
360
334
  getChildren(param) {
361
335
  if (param) {
@@ -378,8 +352,6 @@ class XML {
378
352
  * @return {p5.XML} child element.
379
353
  *
380
354
  * @example
381
- * <div>
382
- * <code>
383
355
  * let myXML;
384
356
  *
385
357
  * async function setup() {
@@ -406,11 +378,8 @@ class XML {
406
378
  *
407
379
  * describe('The word "Goat" written in black on a gray background.');
408
380
  * }
409
- * </code>
410
- * </div>
411
381
  *
412
- * <div>
413
- * <code>
382
+ * @example
414
383
  * let myXML;
415
384
  *
416
385
  * async function setup() {
@@ -437,8 +406,6 @@ class XML {
437
406
  *
438
407
  * describe('The word "Leopard" written in black on a gray background.');
439
408
  * }
440
- * </code>
441
- * </div>
442
409
  */
443
410
  getChild(param) {
444
411
  if (typeof param === 'string') {
@@ -461,8 +428,6 @@ class XML {
461
428
  * @return {p5.XML} added child element.
462
429
  *
463
430
  * @example
464
- * <div>
465
- * <code>
466
431
  * let myXML;
467
432
  *
468
433
  * async function setup() {
@@ -501,8 +466,6 @@ class XML {
501
466
  *
502
467
  * describe('The word "Bluebottle" written in black on a gray background.');
503
468
  * }
504
- * </code>
505
- * </div>
506
469
  */
507
470
  addChild(node) {
508
471
  if (node instanceof XML) {
@@ -522,8 +485,6 @@ class XML {
522
485
  * @param {String|Integer} name name or index of the child element to remove.
523
486
  *
524
487
  * @example
525
- * <div>
526
- * <code>
527
488
  * let myXML;
528
489
  *
529
490
  * async function setup() {
@@ -562,11 +523,8 @@ class XML {
562
523
  * 'The words "Leopard", "Zebra", and "Turtle" written on separate lines. The text is black on a gray background.'
563
524
  * );
564
525
  * }
565
- * </code>
566
- * </div>
567
526
  *
568
- * <div>
569
- * <code>
527
+ * @example
570
528
  * let myXML;
571
529
  *
572
530
  * async function setup() {
@@ -605,8 +563,6 @@ class XML {
605
563
  * 'The words "Goat", "Leopard", and "Turtle" written on separate lines. The text is black on a gray background.'
606
564
  * );
607
565
  * }
608
- * </code>
609
- * </div>
610
566
  */
611
567
  removeChild(param) {
612
568
  let ind = -1;
@@ -631,8 +587,6 @@ class XML {
631
587
  * @return {Integer} number of attributes.
632
588
  *
633
589
  * @example
634
- * <div>
635
- * <code>
636
590
  * let myXML;
637
591
  *
638
592
  * async function setup() {
@@ -659,8 +613,6 @@ class XML {
659
613
  *
660
614
  * describe('The number "2" written in black on a gray background.');
661
615
  * }
662
- * </code>
663
- * </div>
664
616
  */
665
617
  getAttributeCount() {
666
618
  return this.DOM.attributes.length;
@@ -676,8 +628,6 @@ class XML {
676
628
  * @return {String[]} attribute names.
677
629
  *
678
630
  * @example
679
- * <div>
680
- * <code>
681
631
  * let myXML;
682
632
  *
683
633
  * async function setup() {
@@ -704,8 +654,6 @@ class XML {
704
654
  *
705
655
  * describe('The text "id,species" written in black on a gray background.');
706
656
  * }
707
- * </code>
708
- * </div>
709
657
  */
710
658
  listAttributes() {
711
659
  const arr = [];
@@ -731,8 +679,6 @@ class XML {
731
679
  * @return {boolean} whether the element has the attribute.
732
680
  *
733
681
  * @example
734
- * <div>
735
- * <code>
736
682
  * let myXML;
737
683
  *
738
684
  * async function setup() {
@@ -764,8 +710,6 @@ class XML {
764
710
  *
765
711
  * describe('The text "Species" written in black on a gray background.');
766
712
  * }
767
- * </code>
768
- * </div>
769
713
  */
770
714
  hasAttribute(name) {
771
715
  const obj = {};
@@ -797,8 +741,6 @@ class XML {
797
741
  * @return {Number} attribute value as a number.
798
742
  *
799
743
  * @example
800
- * <div>
801
- * <code>
802
744
  * let myXML;
803
745
  *
804
746
  * async function setup() {
@@ -828,11 +770,8 @@ class XML {
828
770
  *
829
771
  * describe(`The text "${content} is ${id + 1}th" written in black on a gray background.`);
830
772
  * }
831
- * </code>
832
- * </div>
833
773
  *
834
- * <div>
835
- * <code>
774
+ * @example
836
775
  * let myXML;
837
776
  *
838
777
  * async function setup() {
@@ -864,8 +803,6 @@ class XML {
864
803
  * `The text "${content} is ${weight}kg" written in black on a gray background.`
865
804
  * );
866
805
  * }
867
- * </code>
868
- * </div>
869
806
  */
870
807
  getNum(name, defaultValue) {
871
808
  const obj = {};
@@ -897,8 +834,6 @@ class XML {
897
834
  * @return {String} attribute value as a string.
898
835
  *
899
836
  * @example
900
- * <div>
901
- * <code>
902
837
  * let myXML;
903
838
  *
904
839
  * async function setup() {
@@ -928,11 +863,8 @@ class XML {
928
863
  *
929
864
  * describe(`The text "${content}: ${species}" written in black on a gray background.`);
930
865
  * }
931
- * </code>
932
- * </div>
933
866
  *
934
- * <div>
935
- * <code>
867
+ * @example
936
868
  * let myXML;
937
869
  *
938
870
  * async function setup() {
@@ -963,8 +895,6 @@ class XML {
963
895
  *
964
896
  * describe(`The text "${content}" written in green on a gray background.`);
965
897
  * }
966
- * </code>
967
- * </div>
968
898
  */
969
899
  getString(name, defaultValue) {
970
900
  const obj = {};
@@ -990,8 +920,6 @@ class XML {
990
920
  * @param {Number|String|Boolean} value attribute's new value.
991
921
  *
992
922
  * @example
993
- * <div>
994
- * <code>
995
923
  * let myXML;
996
924
  *
997
925
  * async function setup() {
@@ -1026,8 +954,6 @@ class XML {
1026
954
  * `The text "${content} is ${attribute}" written in green on a gray background.`
1027
955
  * );
1028
956
  * }
1029
- * </code>
1030
- * </div>
1031
957
  */
1032
958
  setAttribute(name, value) {
1033
959
  this.DOM.setAttribute(name, value);
@@ -1045,8 +971,6 @@ class XML {
1045
971
  * @return {String} element's content as a string.
1046
972
  *
1047
973
  * @example
1048
- * <div>
1049
- * <code>
1050
974
  * let myXML;
1051
975
  *
1052
976
  * async function setup() {
@@ -1073,11 +997,8 @@ class XML {
1073
997
  *
1074
998
  * describe(`The text "${content}" written in green on a gray background.`);
1075
999
  * }
1076
- * </code>
1077
- * </div>
1078
1000
  *
1079
- * <div>
1080
- * <code>
1001
+ * @example
1081
1002
  * function setup() {
1082
1003
  * createCanvas(100, 100);
1083
1004
  *
@@ -1099,8 +1020,6 @@ class XML {
1099
1020
  *
1100
1021
  * describe(`The text "${content}" written in green on a gray background.`);
1101
1022
  * }
1102
- * </code>
1103
- * </div>
1104
1023
  */
1105
1024
  getContent(defaultValue) {
1106
1025
  let str;
@@ -1121,8 +1040,6 @@ class XML {
1121
1040
  * @param {String} content new content for the element.
1122
1041
  *
1123
1042
  * @example
1124
- * <div>
1125
- * <code>
1126
1043
  * let myXML;
1127
1044
  *
1128
1045
  * async function setup() {
@@ -1157,8 +1074,6 @@ class XML {
1157
1074
  * `The text "${oldContent}: ${newContent}" written in green on a gray background.`
1158
1075
  * );
1159
1076
  * }
1160
- * </code>
1161
- * </div>
1162
1077
  */
1163
1078
  setContent(content) {
1164
1079
  if (!this.DOM.children.length) {
@@ -1175,8 +1090,6 @@ class XML {
1175
1090
  * @return {String} element as a string.
1176
1091
  *
1177
1092
  * @example
1178
- * <div>
1179
- * <code>
1180
1093
  * let myXML;
1181
1094
  *
1182
1095
  * async function setup() {
@@ -1213,8 +1126,6 @@ class XML {
1213
1126
  * // Save the file and close the print stream.
1214
1127
  * myWriter.close();
1215
1128
  * }
1216
- * </code>
1217
- * </div>
1218
1129
  */
1219
1130
  serialize() {
1220
1131
  const xmlSerializer = new XMLSerializer();
@@ -1245,8 +1156,6 @@ function xml(p5, fn){
1245
1156
  *
1246
1157
  * @class p5.XML
1247
1158
  * @example
1248
- * <div>
1249
- * <code>
1250
1159
  * let myXML;
1251
1160
  *
1252
1161
  * async function setup() {
@@ -1282,8 +1191,6 @@ function xml(p5, fn){
1282
1191
  * 'The words "Goat", "Leopard", and "Zebra" written on three separate lines. The text is black on a gray background.'
1283
1192
  * );
1284
1193
  * }
1285
- * </code>
1286
- * </div>
1287
1194
  */
1288
1195
  p5.XML = XML;
1289
1196
  }
@@ -1,5 +1,3 @@
1
- import * as fileSaver from 'file-saver';
2
-
3
1
  function downloadFile(data, fName, extension) {
4
2
  const fx = _checkFileExtension(fName, extension);
5
3
  const filename = fx[0];
@@ -9,7 +7,14 @@ function downloadFile(data, fName, extension) {
9
7
  saveData = new Blob([data]);
10
8
  }
11
9
 
12
- fileSaver.saveAs(saveData, filename);
10
+ if(document){
11
+ const url = URL.createObjectURL(saveData);
12
+ const link = document.createElement('a');
13
+ link.href = url;
14
+ link.download = filename;
15
+ link.click();
16
+ URL.revokeObjectURL(url);
17
+ }
13
18
  }
14
19
 
15
20
  function _checkFileExtension(filename, extension) {