@jscad/svg-deserializer 3.0.0-alpha.0 → 3.0.1-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jscad/svg-deserializer",
3
- "version": "3.0.0-alpha.0",
3
+ "version": "3.0.1-alpha.0",
4
4
  "description": "SVG Deserializer for JSCAD",
5
5
  "homepage": "https://openjscad.xyz/",
6
6
  "repository": "https://github.com/jscad/OpenJSCAD.org",
@@ -37,8 +37,9 @@
37
37
  ],
38
38
  "license": "MIT",
39
39
  "dependencies": {
40
- "@jscad/array-utils": "3.0.0-alpha.0",
41
- "@jscad/modeling": "3.0.0-alpha.0",
40
+ "@jscad/array-utils": "3.0.1-alpha.0",
41
+ "@jscad/io-utils": "3.0.1-alpha.0",
42
+ "@jscad/modeling": "3.0.1-alpha.0",
42
43
  "saxes": "6.0.0"
43
44
  },
44
45
  "devDependencies": {
@@ -51,5 +52,5 @@
51
52
  "rollup-plugin-banner": "^0.2.1",
52
53
  "rollup-plugin-version-injector": "^1.3.3"
53
54
  },
54
- "gitHead": "3656d36ed9cd738ab884e86aae5a2ce08d52adf7"
55
+ "gitHead": "0660b5c1f1a5faf54d4cfae1cb85bb94182a8d32"
55
56
  }
package/rollup.config.js CHANGED
@@ -24,6 +24,6 @@ export default {
24
24
  nodeResolve(),
25
25
  banner('<%= pkg.description %>\n@module <%= pkg.name %>\n@version <%= pkg.version %>\n@license <%= pkg.license %>'),
26
26
  versionInjector({ injectInComments: { fileRegexp: /\.(html)$/ }, logLevel: 'warn' }),
27
- terser({ compress: { module: true }, mangle: false, format: { comments: 'some'} })
27
+ terser({ compress: { module: true }, mangle: false, format: { comments: 'some' } })
28
28
  ]
29
29
  }
package/src/index.js CHANGED
@@ -2,6 +2,7 @@ import saxes from 'saxes'
2
2
 
3
3
  import { colorize, mirrorX, mirrorY, rotateZ, translate, scale } from '@jscad/modeling'
4
4
  import { toArray } from '@jscad/array-utils'
5
+ import { ensureString } from '@jscad/io-utils'
5
6
 
6
7
  import { pxPmm } from './constants.js'
7
8
  import { cagLengthX, cagLengthY, svgColorForTarget } from './helpers.js'
@@ -47,6 +48,8 @@ const deserialize = (options, input) => {
47
48
  version
48
49
  }
49
50
  options = Object.assign({}, defaults, options)
51
+
52
+ input = ensureString(input)
50
53
  return options.output === 'script' ? translateScript(input, options) : instantiate(input, options)
51
54
  }
52
55
 
@@ -185,8 +185,9 @@ const expandPath = (obj, svgUnitsPmm, svgUnitsX, svgUnitsY, svgUnitsV, svgGroups
185
185
  pc = false
186
186
  }
187
187
  const ensurePath = () => {
188
- if (!paths[pathName]) paths[pathName] =
189
- path2.fromPoints({}, [])
188
+ if (!paths[pathName]) {
189
+ paths[pathName] = path2.fromPoints({}, [])
190
+ }
190
191
  }
191
192
  for (let j = 0; j < obj.commands.length; j++) {
192
193
  const co = obj.commands[j]
@@ -328,8 +329,8 @@ const expandPath = (obj, svgUnitsPmm, svgUnitsX, svgUnitsY, svgUnitsV, svgGroups
328
329
  qy = cy + parseFloat(pts[i++])
329
330
  cx = cx + parseFloat(pts[i++])
330
331
  cy = cy + parseFloat(pts[i++])
331
- const q1 = [p0[0] + (2/3) * (qx - p0[0]), p0[1] + (2/3) * (qy - p0[1])]
332
- const q2 = [q1[0] + (1/3) * (cx - p0[0]), q1[1] + (1/3) * (cy - p0[1])]
332
+ const q1 = [p0[0] + (2 / 3) * (qx - p0[0]), p0[1] + (2 / 3) * (qy - p0[1])]
333
+ const q2 = [q1[0] + (1 / 3) * (cx - p0[0]), q1[1] + (1 / 3) * (cy - p0[1])]
333
334
  ensurePath()
334
335
  paths[pathName] = path2.appendBezier({
335
336
  segments,
@@ -351,8 +352,8 @@ const expandPath = (obj, svgUnitsPmm, svgUnitsX, svgUnitsY, svgUnitsV, svgGroups
351
352
  qy = parseFloat(pts[i++])
352
353
  cx = parseFloat(pts[i++])
353
354
  cy = parseFloat(pts[i++])
354
- const q1 = [p0[0] + (2/3) * (qx - p0[0]), p0[1] + (2/3) * (qy - p0[1])]
355
- const q2 = [q1[0] + (1/3) * (cx - p0[0]), q1[1] + (1/3) * (cy - p0[1])]
355
+ const q1 = [p0[0] + (2 / 3) * (qx - p0[0]), p0[1] + (2 / 3) * (qy - p0[1])]
356
+ const q2 = [q1[0] + (1 / 3) * (cx - p0[0]), q1[1] + (1 / 3) * (cy - p0[1])]
356
357
  ensurePath()
357
358
  paths[pathName] = path2.appendBezier({
358
359
  segments,
@@ -372,8 +373,8 @@ const expandPath = (obj, svgUnitsPmm, svgUnitsX, svgUnitsY, svgUnitsV, svgGroups
372
373
  const p0 = [cx, cy] // previous point
373
374
  cx = cx + parseFloat(pts[i++])
374
375
  cy = cy + parseFloat(pts[i++])
375
- const q1 = [p0[0] + (2/3) * (qx - p0[0]), p0[1] + (2/3) * (qy - p0[1])]
376
- const q2 = [q1[0] + (1/3) * (cx - p0[0]), q1[1] + (1/3) * (cy - p0[1])]
376
+ const q1 = [p0[0] + (2 / 3) * (qx - p0[0]), p0[1] + (2 / 3) * (qy - p0[1])]
377
+ const q2 = [q1[0] + (1 / 3) * (cx - p0[0]), q1[1] + (1 / 3) * (cy - p0[1])]
377
378
  ensurePath()
378
379
  paths[pathName] = path2.appendBezier({
379
380
  segments,
@@ -393,8 +394,8 @@ const expandPath = (obj, svgUnitsPmm, svgUnitsX, svgUnitsY, svgUnitsV, svgGroups
393
394
  const p0 = [cx, cy] // previous point
394
395
  cx = parseFloat(pts[i++])
395
396
  cy = parseFloat(pts[i++])
396
- const q1 = [p0[0] + (2/3) * (qx - p0[0]), p0[1] + (2/3) * (qy - p0[1])]
397
- const q2 = [q1[0] + (1/3) * (cx - p0[0]), q1[1] + (1/3) * (cy - p0[1])]
397
+ const q1 = [p0[0] + (2 / 3) * (qx - p0[0]), p0[1] + (2 / 3) * (qy - p0[1])]
398
+ const q2 = [q1[0] + (1 / 3) * (cx - p0[0]), q1[1] + (1 / 3) * (cy - p0[1])]
398
399
  ensurePath()
399
400
  paths[pathName] = path2.appendBezier({
400
401
  segments,
@@ -419,7 +420,8 @@ const expandPath = (obj, svgUnitsPmm, svgUnitsX, svgUnitsY, svgUnitsV, svgGroups
419
420
  cy = cy + parseFloat(pts[i++])
420
421
  ensurePath()
421
422
  paths[pathName] = path2.appendBezier({
422
- segments, controlPoints: [
423
+ segments,
424
+ controlPoints: [
423
425
  svg2cag([x1, y1], svgUnitsPmm),
424
426
  svg2cag([bx, by], svgUnitsPmm),
425
427
  svg2cag([cx, cy], svgUnitsPmm)
@@ -258,8 +258,8 @@ const path = (obj, svgUnitsPmm, svgUnitsX, svgUnitsY, svgUnitsV, params, svgGrou
258
258
  qy = cy + parseFloat(pts.shift())
259
259
  cx = cx + parseFloat(pts.shift()) // end point
260
260
  cy = cy + parseFloat(pts.shift())
261
- const q1 = [p0[0] + (2/3) * (qx - p0[0]), p0[1] + (2/3) * (qy - p0[1])]
262
- const q2 = [q1[0] + (1/3) * (cx - p0[0]), q1[1] + (1/3) * (cy - p0[1])]
261
+ const q1 = [p0[0] + (2 / 3) * (qx - p0[0]), p0[1] + (2 / 3) * (qy - p0[1])]
262
+ const q2 = [q1[0] + (1 / 3) * (cx - p0[0]), q1[1] + (1 / 3) * (cy - p0[1])]
263
263
  tmpCode += `${indent}${pathName} = path2.appendBezier({segments: ${segments}, controlPoints: [[${svg2cag(q1, svgUnitsPmm)}], [${svg2cag(q2, svgUnitsPmm)}], [${svg2cag([cx, cy], svgUnitsPmm)}]]}, ${pathName})\n`
264
264
  const rf = reflect(qx, qy, cx, cy)
265
265
  qx = rf[0]
@@ -273,8 +273,8 @@ const path = (obj, svgUnitsPmm, svgUnitsX, svgUnitsY, svgUnitsV, params, svgGrou
273
273
  qy = parseFloat(pts.shift())
274
274
  cx = parseFloat(pts.shift()) // end point
275
275
  cy = parseFloat(pts.shift())
276
- const q1 = [p0[0] + (2/3) * (qx - p0[0]), p0[1] + (2/3) * (qy - p0[1])]
277
- const q2 = [q1[0] + (1/3) * (cx - p0[0]), q1[1] + (1/3) * (cy - p0[1])]
276
+ const q1 = [p0[0] + (2 / 3) * (qx - p0[0]), p0[1] + (2 / 3) * (qy - p0[1])]
277
+ const q2 = [q1[0] + (1 / 3) * (cx - p0[0]), q1[1] + (1 / 3) * (cy - p0[1])]
278
278
  tmpCode += `${indent}${pathName} = path2.appendBezier({segments: ${segments}, controlPoints: [[${svg2cag(q1, svgUnitsPmm)}], [${svg2cag(q2, svgUnitsPmm)}], [${svg2cag([cx, cy], svgUnitsPmm)}]]}, ${pathName})\n`
279
279
  const rf = reflect(qx, qy, cx, cy)
280
280
  qx = rf[0]
@@ -286,8 +286,8 @@ const path = (obj, svgUnitsPmm, svgUnitsX, svgUnitsY, svgUnitsV, params, svgGrou
286
286
  const p0 = [cx, cy] // previous point
287
287
  cx = cx + parseFloat(pts.shift()) // end point
288
288
  cy = cy + parseFloat(pts.shift())
289
- const q1 = [p0[0] + (2/3) * (qx - p0[0]), p0[1] + (2/3) * (qy - p0[1])]
290
- const q2 = [q1[0] + (1/3) * (cx - p0[0]), q1[1] + (1/3) * (cy - p0[1])]
289
+ const q1 = [p0[0] + (2 / 3) * (qx - p0[0]), p0[1] + (2 / 3) * (qy - p0[1])]
290
+ const q2 = [q1[0] + (1 / 3) * (cx - p0[0]), q1[1] + (1 / 3) * (cy - p0[1])]
291
291
  tmpCode += `${indent}${pathName} = path2.appendBezier({segments: ${segments}, controlPoints: [[[${svg2cag(q1, svgUnitsPmm)}], [${svg2cag(q2, svgUnitsPmm)}], [${svg2cag([cx, cy], svgUnitsPmm)}]]}, ${pathName})\n`
292
292
  const rf = reflect(qx, qy, cx, cy)
293
293
  qx = rf[0]
@@ -299,8 +299,8 @@ const path = (obj, svgUnitsPmm, svgUnitsX, svgUnitsY, svgUnitsV, params, svgGrou
299
299
  const p0 = [cx, cy] // previous point
300
300
  cx = parseFloat(pts.shift()) // end point
301
301
  cy = parseFloat(pts.shift())
302
- const q1 = [p0[0] + (2/3) * (qx - p0[0]), p0[1] + (2/3) * (qy - p0[1])]
303
- const q2 = [q1[0] + (1/3) * (cx - p0[0]), q1[1] + (1/3) * (cy - p0[1])]
302
+ const q1 = [p0[0] + (2 / 3) * (qx - p0[0]), p0[1] + (2 / 3) * (qy - p0[1])]
303
+ const q2 = [q1[0] + (1 / 3) * (cx - p0[0]), q1[1] + (1 / 3) * (cy - p0[1])]
304
304
  tmpCode += `${indent}${pathName} = path2.appendBezier({segments: ${segments}, controlPoints: [[[${svg2cag(q1, svgUnitsPmm)}], [${svg2cag(q2, svgUnitsPmm)}], [${svg2cag([cx, cy], svgUnitsPmm)}]]}, ${pathName})\n`
305
305
  const rf = reflect(qx, qy, cx, cy)
306
306
  qx = rf[0]