@linkiez/dxf-renew 7.1.0 → 7.2.3
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/.eslintrc.json +1 -16
- package/.yarn/install-state.gz +0 -0
- package/ARCHITECTURE.md +163 -0
- package/CHANGELOG.md +34 -0
- package/README.md +72 -10
- package/{PLAN.md → ROADMAP.md} +227 -35
- package/build.mjs +28 -0
- package/dist/dxf.js +1090 -344
- package/docs/FIXTURE_VALIDATION_EZDXF.md +1 -1
- package/lib/Helper.cjs +4 -0
- package/lib/Helper.cjs.map +3 -3
- package/lib/Helper.d.ts +19 -0
- package/lib/Helper.d.ts.map +1 -0
- package/lib/Helper.js +4 -0
- package/lib/Helper.js.map +2 -2
- package/lib/applyTransforms.d.ts +12 -0
- package/lib/applyTransforms.d.ts.map +1 -0
- package/lib/cli.cjs +1 -2
- package/lib/cli.cjs.map +1 -1
- package/lib/cli.d.ts +3 -0
- package/lib/cli.d.ts.map +1 -0
- package/lib/config.d.ts +4 -0
- package/lib/config.d.ts.map +1 -0
- package/lib/constants.d.ts +3 -0
- package/lib/constants.d.ts.map +1 -0
- package/lib/denormalise.d.ts +3 -0
- package/lib/denormalise.d.ts.map +1 -0
- package/lib/dimensionToSVG.d.ts +18 -0
- package/lib/dimensionToSVG.d.ts.map +1 -0
- package/lib/entityToPolyline.cjs +95 -0
- package/lib/entityToPolyline.cjs.map +3 -3
- package/lib/entityToPolyline.d.ts +48 -0
- package/lib/entityToPolyline.d.ts.map +1 -0
- package/lib/entityToPolyline.js +95 -0
- package/lib/entityToPolyline.js.map +2 -2
- package/lib/getRGBForEntity.d.ts +5 -0
- package/lib/getRGBForEntity.d.ts.map +1 -0
- package/lib/groupEntitiesByLayer.d.ts +3 -0
- package/lib/groupEntitiesByLayer.d.ts.map +1 -0
- package/lib/handlers/blocks.d.ts +3 -0
- package/lib/handlers/blocks.d.ts.map +1 -0
- package/lib/handlers/entities.cjs +22 -2
- package/lib/handlers/entities.cjs.map +3 -3
- package/lib/handlers/entities.d.ts +4 -0
- package/lib/handlers/entities.d.ts.map +1 -0
- package/lib/handlers/entities.js +22 -2
- package/lib/handlers/entities.js.map +2 -2
- package/lib/handlers/entity/arc.d.ts +20 -0
- package/lib/handlers/entity/arc.d.ts.map +1 -0
- package/lib/handlers/entity/attdef.d.ts +11 -0
- package/lib/handlers/entity/attdef.d.ts.map +1 -0
- package/lib/handlers/entity/attrib.d.ts +9 -0
- package/lib/handlers/entity/attrib.d.ts.map +1 -0
- package/lib/handlers/entity/circle.d.ts +17 -0
- package/lib/handlers/entity/circle.d.ts.map +1 -0
- package/lib/handlers/entity/common.d.ts +3 -0
- package/lib/handlers/entity/common.d.ts.map +1 -0
- package/lib/handlers/entity/dgnUnderlay.d.ts +33 -0
- package/lib/handlers/entity/dgnUnderlay.d.ts.map +1 -0
- package/lib/handlers/entity/dimension.d.ts +35 -0
- package/lib/handlers/entity/dimension.d.ts.map +1 -0
- package/lib/handlers/entity/dwfUnderlay.d.ts +33 -0
- package/lib/handlers/entity/dwfUnderlay.d.ts.map +1 -0
- package/lib/handlers/entity/ellipse.d.ts +10 -0
- package/lib/handlers/entity/ellipse.d.ts.map +1 -0
- package/lib/handlers/entity/hatch.d.ts +9 -0
- package/lib/handlers/entity/hatch.d.ts.map +1 -0
- package/lib/handlers/entity/image.d.ts +26 -0
- package/lib/handlers/entity/image.d.ts.map +1 -0
- package/lib/handlers/entity/insert.d.ts +10 -0
- package/lib/handlers/entity/insert.d.ts.map +1 -0
- package/lib/handlers/entity/leader.d.ts +48 -0
- package/lib/handlers/entity/leader.d.ts.map +1 -0
- package/lib/handlers/entity/line.d.ts +16 -0
- package/lib/handlers/entity/line.d.ts.map +1 -0
- package/lib/handlers/entity/lwpolyline.d.ts +10 -0
- package/lib/handlers/entity/lwpolyline.d.ts.map +1 -0
- package/lib/handlers/entity/mleader.cjs +69 -0
- package/lib/handlers/entity/mleader.cjs.map +7 -0
- package/lib/handlers/entity/mleader.d.ts +15 -0
- package/lib/handlers/entity/mleader.d.ts.map +1 -0
- package/lib/handlers/entity/mleader.js +34 -0
- package/lib/handlers/entity/mleader.js.map +7 -0
- package/lib/handlers/entity/mline.cjs +91 -0
- package/lib/handlers/entity/mline.cjs.map +7 -0
- package/lib/handlers/entity/mline.d.ts +17 -0
- package/lib/handlers/entity/mline.d.ts.map +1 -0
- package/lib/handlers/entity/mline.js +56 -0
- package/lib/handlers/entity/mline.js.map +7 -0
- package/lib/handlers/entity/mtext.d.ts +62 -0
- package/lib/handlers/entity/mtext.d.ts.map +1 -0
- package/lib/handlers/entity/ole2Frame.d.ts +9 -0
- package/lib/handlers/entity/ole2Frame.d.ts.map +1 -0
- package/lib/handlers/entity/oleframe.cjs +98 -0
- package/lib/handlers/entity/oleframe.cjs.map +7 -0
- package/lib/handlers/entity/oleframe.d.ts +9 -0
- package/lib/handlers/entity/oleframe.d.ts.map +1 -0
- package/lib/handlers/entity/oleframe.js +63 -0
- package/lib/handlers/entity/oleframe.js.map +7 -0
- package/lib/handlers/entity/pdfUnderlay.d.ts +33 -0
- package/lib/handlers/entity/pdfUnderlay.d.ts.map +1 -0
- package/lib/handlers/entity/point.d.ts +17 -0
- package/lib/handlers/entity/point.d.ts.map +1 -0
- package/lib/handlers/entity/polyline.d.ts +21 -0
- package/lib/handlers/entity/polyline.d.ts.map +1 -0
- package/lib/handlers/entity/ray.cjs +81 -0
- package/lib/handlers/entity/ray.cjs.map +7 -0
- package/lib/handlers/entity/ray.d.ts +15 -0
- package/lib/handlers/entity/ray.d.ts.map +1 -0
- package/lib/handlers/entity/ray.js +46 -0
- package/lib/handlers/entity/ray.js.map +7 -0
- package/lib/handlers/entity/region.cjs +67 -0
- package/lib/handlers/entity/region.cjs.map +7 -0
- package/lib/handlers/entity/region.d.ts +14 -0
- package/lib/handlers/entity/region.d.ts.map +1 -0
- package/lib/handlers/entity/region.js +32 -0
- package/lib/handlers/entity/region.js.map +7 -0
- package/lib/handlers/entity/shape.cjs +95 -0
- package/lib/handlers/entity/shape.cjs.map +7 -0
- package/lib/handlers/entity/shape.d.ts +22 -0
- package/lib/handlers/entity/shape.d.ts.map +1 -0
- package/lib/handlers/entity/shape.js +60 -0
- package/lib/handlers/entity/shape.js.map +7 -0
- package/lib/handlers/entity/solid.d.ts +15 -0
- package/lib/handlers/entity/solid.d.ts.map +1 -0
- package/lib/handlers/entity/spline.d.ts +30 -0
- package/lib/handlers/entity/spline.d.ts.map +1 -0
- package/lib/handlers/entity/table.cjs +71 -0
- package/lib/handlers/entity/table.cjs.map +7 -0
- package/lib/handlers/entity/table.d.ts +16 -0
- package/lib/handlers/entity/table.d.ts.map +1 -0
- package/lib/handlers/entity/table.js +36 -0
- package/lib/handlers/entity/table.js.map +7 -0
- package/lib/handlers/entity/text.d.ts +31 -0
- package/lib/handlers/entity/text.d.ts.map +1 -0
- package/lib/handlers/entity/threeDFace.d.ts +14 -0
- package/lib/handlers/entity/threeDFace.d.ts.map +1 -0
- package/lib/handlers/entity/tolerance.d.ts +25 -0
- package/lib/handlers/entity/tolerance.d.ts.map +1 -0
- package/lib/handlers/entity/trace.cjs +101 -0
- package/lib/handlers/entity/trace.cjs.map +7 -0
- package/lib/handlers/entity/trace.d.ts +15 -0
- package/lib/handlers/entity/trace.d.ts.map +1 -0
- package/lib/handlers/entity/trace.js +66 -0
- package/lib/handlers/entity/trace.js.map +7 -0
- package/lib/handlers/entity/vertex.d.ts +10 -0
- package/lib/handlers/entity/vertex.d.ts.map +1 -0
- package/lib/handlers/entity/viewport.d.ts +9 -0
- package/lib/handlers/entity/viewport.d.ts.map +1 -0
- package/lib/handlers/entity/wipeout.cjs +122 -0
- package/lib/handlers/entity/wipeout.cjs.map +7 -0
- package/lib/handlers/entity/wipeout.d.ts +28 -0
- package/lib/handlers/entity/wipeout.d.ts.map +1 -0
- package/lib/handlers/entity/wipeout.js +87 -0
- package/lib/handlers/entity/wipeout.js.map +7 -0
- package/lib/handlers/entity/xline.cjs +81 -0
- package/lib/handlers/entity/xline.cjs.map +7 -0
- package/lib/handlers/entity/xline.d.ts +15 -0
- package/lib/handlers/entity/xline.d.ts.map +1 -0
- package/lib/handlers/entity/xline.js +46 -0
- package/lib/handlers/entity/xline.js.map +7 -0
- package/lib/handlers/header.d.ts +3 -0
- package/lib/handlers/header.d.ts.map +1 -0
- package/lib/handlers/objects.cjs +43 -1
- package/lib/handlers/objects.cjs.map +2 -2
- package/lib/handlers/objects.d.ts +3 -0
- package/lib/handlers/objects.d.ts.map +1 -0
- package/lib/handlers/objects.js +43 -1
- package/lib/handlers/objects.js.map +2 -2
- package/lib/handlers/tables.cjs +96 -17
- package/lib/handlers/tables.cjs.map +2 -2
- package/lib/handlers/tables.d.ts +13 -0
- package/lib/handlers/tables.d.ts.map +1 -0
- package/lib/handlers/tables.js +96 -17
- package/lib/handlers/tables.js.map +2 -2
- package/lib/index.cjs +5 -2
- package/lib/index.cjs.map +3 -3
- package/lib/index.d.ts +10 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +18 -16
- package/lib/index.js.map +3 -3
- package/lib/parseString.d.ts +3 -0
- package/lib/parseString.d.ts.map +1 -0
- package/lib/toJson.cjs +29 -0
- package/lib/toJson.cjs.map +7 -0
- package/lib/toJson.d.ts +3 -0
- package/lib/toJson.d.ts.map +1 -0
- package/lib/toJson.js +9 -0
- package/lib/toJson.js.map +7 -0
- package/lib/toPolylines.d.ts +4 -0
- package/lib/toPolylines.d.ts.map +1 -0
- package/lib/toSVG.cjs +34 -3
- package/lib/toSVG.cjs.map +2 -2
- package/lib/toSVG.d.ts +7 -0
- package/lib/toSVG.d.ts.map +1 -0
- package/lib/toSVG.js +34 -3
- package/lib/toSVG.js.map +2 -2
- package/lib/types/arc-entity.d.ts +8 -0
- package/lib/types/arc-entity.d.ts.map +1 -0
- package/lib/types/base-entity.d.ts +22 -0
- package/lib/types/base-entity.d.ts.map +1 -0
- package/lib/types/circle-entity.d.ts +6 -0
- package/lib/types/circle-entity.d.ts.map +1 -0
- package/lib/types/common.d.ts +30 -0
- package/lib/types/common.d.ts.map +1 -0
- package/lib/types/dimension-entity.d.ts +31 -0
- package/lib/types/dimension-entity.d.ts.map +1 -0
- package/lib/types/dxf.d.ts +55 -0
- package/lib/types/dxf.d.ts.map +1 -0
- package/lib/types/ellipse-entity.d.ts +11 -0
- package/lib/types/ellipse-entity.d.ts.map +1 -0
- package/lib/types/entity.cjs.map +1 -1
- package/lib/types/entity.d.ts +30 -0
- package/lib/types/entity.d.ts.map +1 -0
- package/lib/types/handler-internal.d.ts +44 -0
- package/lib/types/handler-internal.d.ts.map +1 -0
- package/lib/types/handler.d.ts +8 -0
- package/lib/types/handler.d.ts.map +1 -0
- package/lib/types/hatch-entity.d.ts +116 -0
- package/lib/types/hatch-entity.d.ts.map +1 -0
- package/lib/types/helper.cjs.map +1 -1
- package/lib/types/helper.d.ts +11 -0
- package/lib/types/helper.d.ts.map +1 -0
- package/lib/types/image-entity.d.ts +25 -0
- package/lib/types/image-entity.d.ts.map +1 -0
- package/lib/types/index.cjs +20 -0
- package/lib/types/index.cjs.map +2 -2
- package/lib/types/index.d.ts +43 -0
- package/lib/types/index.d.ts.map +1 -0
- package/lib/types/index.js +10 -0
- package/lib/types/index.js.map +2 -2
- package/lib/types/insert-entity.d.ts +16 -0
- package/lib/types/insert-entity.d.ts.map +1 -0
- package/lib/types/layer-groups.d.ts +6 -0
- package/lib/types/layer-groups.d.ts.map +1 -0
- package/lib/types/leader-entity.d.ts +28 -0
- package/lib/types/leader-entity.d.ts.map +1 -0
- package/lib/types/line-entity.d.ts +8 -0
- package/lib/types/line-entity.d.ts.map +1 -0
- package/lib/types/mleader-entity.cjs +17 -0
- package/lib/types/mleader-entity.cjs.map +7 -0
- package/lib/types/mleader-entity.d.ts +7 -0
- package/lib/types/mleader-entity.d.ts.map +1 -0
- package/lib/types/mleader-entity.js +1 -0
- package/lib/types/mleader-entity.js.map +7 -0
- package/lib/types/mline-entity.cjs +17 -0
- package/lib/types/mline-entity.cjs.map +7 -0
- package/lib/types/mline-entity.d.ts +10 -0
- package/lib/types/mline-entity.d.ts.map +1 -0
- package/lib/types/mline-entity.js +1 -0
- package/lib/types/mline-entity.js.map +7 -0
- package/lib/types/mtext-entity.d.ts +33 -0
- package/lib/types/mtext-entity.d.ts.map +1 -0
- package/lib/types/ole2frame-entity.d.ts +33 -0
- package/lib/types/ole2frame-entity.d.ts.map +1 -0
- package/lib/types/oleframe-entity.cjs +17 -0
- package/lib/types/oleframe-entity.cjs.map +7 -0
- package/lib/types/oleframe-entity.d.ts +33 -0
- package/lib/types/oleframe-entity.d.ts.map +1 -0
- package/lib/types/oleframe-entity.js +1 -0
- package/lib/types/oleframe-entity.js.map +7 -0
- package/lib/types/options.cjs.map +1 -1
- package/lib/types/options.d.ts +57 -0
- package/lib/types/options.d.ts.map +1 -0
- package/lib/types/point-entity.d.ts +5 -0
- package/lib/types/point-entity.d.ts.map +1 -0
- package/lib/types/polyline-entity.d.ts +17 -0
- package/lib/types/polyline-entity.d.ts.map +1 -0
- package/lib/types/polylines.d.ts +18 -0
- package/lib/types/polylines.d.ts.map +1 -0
- package/lib/types/ray-entity.cjs +17 -0
- package/lib/types/ray-entity.cjs.map +7 -0
- package/lib/types/ray-entity.d.ts +10 -0
- package/lib/types/ray-entity.d.ts.map +1 -0
- package/lib/types/ray-entity.js +1 -0
- package/lib/types/ray-entity.js.map +7 -0
- package/lib/types/region-entity.cjs +17 -0
- package/lib/types/region-entity.cjs.map +7 -0
- package/lib/types/region-entity.d.ts +10 -0
- package/lib/types/region-entity.d.ts.map +1 -0
- package/lib/types/region-entity.js +1 -0
- package/lib/types/region-entity.js.map +7 -0
- package/lib/types/shape-entity.cjs +17 -0
- package/lib/types/shape-entity.cjs.map +7 -0
- package/lib/types/shape-entity.d.ts +17 -0
- package/lib/types/shape-entity.d.ts.map +1 -0
- package/lib/types/shape-entity.js +1 -0
- package/lib/types/shape-entity.js.map +7 -0
- package/lib/types/solid-entity.d.ts +7 -0
- package/lib/types/solid-entity.d.ts.map +1 -0
- package/lib/types/spline-entity.d.ts +10 -0
- package/lib/types/spline-entity.d.ts.map +1 -0
- package/lib/types/svg.d.ts +27 -0
- package/lib/types/svg.d.ts.map +1 -0
- package/lib/types/table-entity.cjs +17 -0
- package/lib/types/table-entity.cjs.map +7 -0
- package/lib/types/table-entity.d.ts +12 -0
- package/lib/types/table-entity.d.ts.map +1 -0
- package/lib/types/table-entity.js +1 -0
- package/lib/types/table-entity.js.map +7 -0
- package/lib/types/tables.cjs.map +1 -1
- package/lib/types/tables.d.ts +549 -0
- package/lib/types/tables.d.ts.map +1 -0
- package/lib/types/text-entity.d.ts +21 -0
- package/lib/types/text-entity.d.ts.map +1 -0
- package/lib/types/tolerance-entity.d.ts +14 -0
- package/lib/types/tolerance-entity.d.ts.map +1 -0
- package/lib/types/trace-entity.cjs +17 -0
- package/lib/types/trace-entity.cjs.map +7 -0
- package/lib/types/trace-entity.d.ts +10 -0
- package/lib/types/trace-entity.d.ts.map +1 -0
- package/lib/types/trace-entity.js +1 -0
- package/lib/types/trace-entity.js.map +7 -0
- package/lib/types/underlay-entity.d.ts +26 -0
- package/lib/types/underlay-entity.d.ts.map +1 -0
- package/lib/types/util-types.d.ts +22 -0
- package/lib/types/util-types.d.ts.map +1 -0
- package/lib/types/viewport-entity.d.ts +79 -0
- package/lib/types/viewport-entity.d.ts.map +1 -0
- package/lib/types/wipeout-entity.cjs +17 -0
- package/lib/types/wipeout-entity.cjs.map +7 -0
- package/lib/types/wipeout-entity.d.ts +18 -0
- package/lib/types/wipeout-entity.d.ts.map +1 -0
- package/lib/types/wipeout-entity.js +1 -0
- package/lib/types/wipeout-entity.js.map +7 -0
- package/lib/types/xline-entity.cjs +17 -0
- package/lib/types/xline-entity.cjs.map +7 -0
- package/lib/types/xline-entity.d.ts +10 -0
- package/lib/types/xline-entity.d.ts.map +1 -0
- package/lib/types/xline-entity.js +1 -0
- package/lib/types/xline-entity.js.map +7 -0
- package/lib/types.d.ts +2 -0
- package/lib/types.d.ts.map +1 -0
- package/lib/util/bSpline.d.ts +8 -0
- package/lib/util/bSpline.d.ts.map +1 -0
- package/lib/util/colors.d.ts +5 -0
- package/lib/util/colors.d.ts.map +1 -0
- package/lib/util/createArcForLWPolyline.d.ts +9 -0
- package/lib/util/createArcForLWPolyline.d.ts.map +1 -0
- package/lib/util/dxfColorToRGB.d.ts +22 -0
- package/lib/util/dxfColorToRGB.d.ts.map +1 -0
- package/lib/util/escapeXmlText.d.ts +2 -0
- package/lib/util/escapeXmlText.d.ts.map +1 -0
- package/lib/util/insertKnot.d.ts +9 -0
- package/lib/util/insertKnot.d.ts.map +1 -0
- package/lib/util/logger.d.ts +10 -0
- package/lib/util/logger.d.ts.map +1 -0
- package/lib/util/rgbToColorAttribute.d.ts +7 -0
- package/lib/util/rgbToColorAttribute.d.ts.map +1 -0
- package/lib/util/rotate.d.ts +9 -0
- package/lib/util/rotate.d.ts.map +1 -0
- package/lib/util/round10.d.ts +2 -0
- package/lib/util/round10.d.ts.map +1 -0
- package/lib/util/toPiecewiseBezier.d.ts +18 -0
- package/lib/util/toPiecewiseBezier.d.ts.map +1 -0
- package/lib/util/transformBoundingBoxAndElement.d.ts +9 -0
- package/lib/util/transformBoundingBoxAndElement.d.ts.map +1 -0
- package/package.json +5 -19
- package/src/Helper.ts +6 -1
- package/src/entityToPolyline.ts +124 -2
- package/src/handlers/entities.ts +21 -1
- package/src/handlers/entity/mleader.ts +46 -0
- package/src/handlers/entity/mline.ts +74 -0
- package/src/handlers/entity/oleframe.ts +62 -0
- package/src/handlers/entity/ray.ts +52 -0
- package/src/handlers/entity/region.ts +42 -0
- package/src/handlers/entity/shape.ts +73 -0
- package/src/handlers/entity/table.ts +49 -0
- package/src/handlers/entity/trace.ts +72 -0
- package/src/handlers/entity/wipeout.ts +114 -0
- package/src/handlers/entity/xline.ts +52 -0
- package/src/handlers/objects.ts +64 -8
- package/src/handlers/tables.ts +134 -21
- package/src/index.ts +9 -18
- package/src/toJson.ts +8 -0
- package/src/toSVG.ts +45 -3
- package/src/types/entity.ts +20 -0
- package/src/types/helper.ts +2 -1
- package/src/types/index.ts +10 -0
- package/src/types/mleader-entity.ts +8 -0
- package/src/types/mline-entity.ts +12 -0
- package/src/types/oleframe-entity.ts +40 -0
- package/src/types/options.ts +7 -0
- package/src/types/ray-entity.ts +12 -0
- package/src/types/region-entity.ts +11 -0
- package/src/types/shape-entity.ts +19 -0
- package/src/types/table-entity.ts +14 -0
- package/src/types/tables.ts +76 -0
- package/src/types/trace-entity.ts +14 -0
- package/src/types/wipeout-entity.ts +20 -0
- package/src/types/xline-entity.ts +12 -0
- package/docs/DIMENSION_SUMMARY.md +0 -254
- package/docs/DXF_VERSION_SUPPORT.md +0 -45
- package/docs/ENTITY_SVG_ROADMAP.md +0 -96
- package/docs/IMPLEMENTED-2D-ENTITIES.md +0 -54
- package/docs/README.md +0 -22
- package/docs/SVG_RENDERING_INTEGRATION_TESTS.md +0 -119
- package/docs/TEXT-MTEXT-DIMENSION-SUPPORT.md +0 -241
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/handlers/tables.ts"],
|
|
4
|
-
"sourcesContent": ["import type { DXFTuple, DimStyleInternal, LTypeElement, LTypeInternal, LayerInternal, StyleInternal, VPortInternal } from '../types'\n\nimport logger from '../util/logger'\n\nconst ltypeHandler = (tuples: DXFTuple[]): LTypeInternal => {\n let element: LTypeElement | undefined\n let offset: { x: string | number; y: string | number } | undefined\n return tuples.reduce(\n (layer, tuple) => {\n const type = tuple[0]\n const value = tuple[1]\n // https://documentation.help/AutoCAD-DXF/WS1a9193826455f5ff18cb41610ec0a2e719-7a4f.htm\n switch (type) {\n case 2:\n layer.name = value\n break\n case 3:\n layer.description = value\n break\n case 70:\n // Standard flag values (bit-coded values):\n // 16 = If set, table entry is externally dependent on an xref\n // 32 = If both this bit and bit 16 are set, the externally dependent xref has been successfully resolved\n // 64 = If set, the table entry was referenced by at least one entity in the drawing the last time the drawing was edited. (This flag is for the benefit of AutoCAD commands. It can be ignored by most programs that read DXF files and need not be set by programs that write DXF files)\n layer.flag = value\n break\n case 72:\n // Alignment code (value is always 65, the ASCII code for A):\n layer.alignment = value\n break\n case 73:\n layer.elementCount = Number.parseInt(String(value))\n break\n case 40:\n layer.patternLength = value\n break\n case 49:\n element = { length: value }\n layer.pattern.push(element)\n break\n case 74:\n // Complex linetype element type (one per element). Default is 0 (no embedded shape/text) (bit-coded values)\n // 1 = If set, code 50 specifies an absolute rotation; if not set, code 50 specifies a relative rotation\n // 2 = Embedded element is a text string\n // 4 = Embedded element is a shape\n if (element) {\n element.shape = value\n }\n break\n case 75:\n if (element) {\n element.shapeNumber = value\n }\n break\n case 340:\n if (element) {\n element.styleHandle = value\n }\n break\n case 46:\n if (element) {\n element.scales ??= []\n element.scales.push(value)\n }\n break\n case 50:\n if (element) {\n element.rotation = value\n }\n break\n case 44:\n offset = { x: value, y: 0 }\n if (element) {\n element.offset ??= []\n element.offset.push(offset)\n }\n break\n case 45:\n if (offset) {\n offset.y = value\n }\n break\n case 9:\n if (element) {\n element.text = value\n }\n break\n default:\n }\n return layer\n },\n { type: 'LTYPE', pattern: [] } as LTypeInternal,\n )\n}\n\nconst layerHandler = (tuples: DXFTuple[]): LayerInternal => {\n return tuples.reduce(\n (layer, tuple) => {\n const type = tuple[0]\n const value = tuple[1]\n // https://www.autodesk.com/techpubs/autocad/acad2000/dxf/layer_dxf_04.htm\n switch (type) {\n case 2:\n layer.name = value\n break\n case 6:\n layer.lineTypeName = value\n break\n case 62:\n layer.colorNumber = value\n break\n case 70:\n layer.flags = value\n break\n case 290:\n layer.plot = Number.parseInt(String(value)) !== 0\n break\n case 370:\n layer.lineWeightEnum = value\n break\n default:\n }\n return layer\n },\n { type: 'LAYER' } as LayerInternal,\n )\n}\n\nconst styleHandler = (tuples: DXFTuple[]): StyleInternal => {\n return tuples.reduce(\n (style, tuple) => {\n const type = tuple[0]\n const value = tuple[1]\n switch (type) {\n case 2:\n style.name = value\n break\n case 6:\n style.lineTypeName = value\n break\n case 40:\n style.fixedTextHeight = value\n break\n case 41:\n style.widthFactor = value\n break\n case 50:\n style.obliqueAngle = value\n break\n case 71:\n style.flags = value\n break\n case 42:\n style.lastHeightUsed = value\n break\n case 3:\n style.primaryFontFileName = value\n break\n case 4:\n style.bigFontFileName = value\n break\n default:\n }\n return style\n },\n { type: 'STYLE' } as StyleInternal,\n )\n}\n\nconst vPortHandler = (tuples: DXFTuple[]): VPortInternal => {\n return tuples.reduce(\n (vport, tuple) => {\n const type = tuple[0]\n const value = tuple[1]\n switch (type) {\n case 2:\n vport.name = value\n break\n case 5:\n vport.handle = value\n break\n case 70:\n vport.flags = value\n break\n case 10:\n vport.lowerLeft.x = Number.parseFloat(String(value))\n break\n case 20:\n vport.lowerLeft.y = Number.parseFloat(String(value))\n break\n case 11:\n vport.upperRight.x = Number.parseFloat(String(value))\n break\n case 21:\n vport.upperRight.y = Number.parseFloat(String(value))\n break\n case 12:\n vport.center.x = Number.parseFloat(String(value))\n break\n case 22:\n vport.center.y = Number.parseFloat(String(value))\n break\n case 14:\n vport.snapSpacing.x = Number.parseFloat(String(value))\n break\n case 24:\n vport.snapSpacing.y = Number.parseFloat(String(value))\n break\n case 15:\n vport.gridSpacing.x = Number.parseFloat(String(value))\n break\n case 25:\n vport.gridSpacing.y = Number.parseFloat(String(value))\n break\n case 16:\n vport.direction.x = Number.parseFloat(String(value))\n break\n case 26:\n vport.direction.y = Number.parseFloat(String(value))\n break\n case 36:\n vport.direction.z = Number.parseFloat(String(value))\n break\n case 17:\n vport.target.x = Number.parseFloat(String(value))\n break\n case 27:\n vport.target.y = Number.parseFloat(String(value))\n break\n case 37:\n vport.target.z = Number.parseFloat(String(value))\n break\n case 45:\n vport.height = Number.parseFloat(String(value))\n break\n case 50:\n vport.snapAngle = Number.parseFloat(String(value))\n break\n case 51:\n vport.angle = Number.parseFloat(String(value))\n break\n case 110:\n vport.x = Number.parseFloat(String(value))\n break\n case 120:\n vport.y = Number.parseFloat(String(value))\n break\n case 130:\n vport.z = Number.parseFloat(String(value))\n break\n case 111:\n vport.xAxisX = Number.parseFloat(String(value))\n break\n case 121:\n vport.xAxisY = Number.parseFloat(String(value))\n break\n case 131:\n vport.xAxisZ = Number.parseFloat(String(value))\n break\n case 112:\n vport.xAxisX = Number.parseFloat(String(value))\n break\n case 122:\n vport.xAxisY = Number.parseFloat(String(value))\n break\n case 132:\n vport.xAxisZ = Number.parseFloat(String(value))\n break\n case 146:\n vport.elevation = Number.parseFloat(String(value))\n break\n default:\n }\n return vport\n },\n {\n type: 'VPORT',\n center: {},\n lowerLeft: {},\n upperRight: {},\n snap: {},\n snapSpacing: {},\n gridSpacing: {},\n direction: {},\n target: {},\n } as VPortInternal,\n )\n}\n\nconst dimStyleHandler = (tuples: DXFTuple[]): DimStyleInternal => {\n return tuples.reduce(\n (dimStyle, tuple) => {\n const type = tuple[0]\n const value = tuple[1]\n switch (type) {\n case 2:\n dimStyle.name = value\n break\n case 70:\n dimStyle.flags = value\n break\n case 3:\n dimStyle.dimPost = value\n break\n case 4:\n dimStyle.dimAPost = value\n break\n case 40:\n dimStyle.dimScale = Number.parseFloat(String(value))\n break\n case 41:\n dimStyle.dimAsz = Number.parseFloat(String(value))\n break\n case 42:\n dimStyle.dimExo = Number.parseFloat(String(value))\n break\n case 43:\n dimStyle.dimDli = Number.parseFloat(String(value))\n break\n case 44:\n dimStyle.dimExe = Number.parseFloat(String(value))\n break\n case 45:\n dimStyle.dimRnd = Number.parseFloat(String(value))\n break\n case 46:\n dimStyle.dimDle = Number.parseFloat(String(value))\n break\n case 47:\n dimStyle.dimTp = Number.parseFloat(String(value))\n break\n case 48:\n dimStyle.dimTm = Number.parseFloat(String(value))\n break\n case 140:\n dimStyle.dimTxt = Number.parseFloat(String(value))\n break\n case 141:\n dimStyle.dimCen = Number.parseFloat(String(value))\n break\n case 142:\n dimStyle.dimTsz = Number.parseFloat(String(value))\n break\n case 143:\n dimStyle.dimAltf = Number.parseFloat(String(value))\n break\n case 144:\n dimStyle.dimLfac = Number.parseFloat(String(value))\n break\n case 145:\n dimStyle.dimTvp = Number.parseFloat(String(value))\n break\n case 146:\n dimStyle.dimTfac = Number.parseFloat(String(value))\n break\n case 147:\n dimStyle.dimGap = Number.parseFloat(String(value))\n break\n case 148:\n dimStyle.dimAltRnd = Number.parseFloat(String(value))\n break\n case 71:\n dimStyle.dimTol = Number.parseInt(String(value))\n break\n case 72:\n dimStyle.dimLim = Number.parseInt(String(value))\n break\n case 73:\n dimStyle.dimTih = Number.parseInt(String(value))\n break\n case 74:\n dimStyle.dimToh = Number.parseInt(String(value))\n break\n case 75:\n dimStyle.dimSe1 = Number.parseInt(String(value))\n break\n case 76:\n dimStyle.dimSe2 = Number.parseInt(String(value))\n break\n case 77:\n dimStyle.dimTad = Number.parseInt(String(value))\n break\n case 78:\n dimStyle.dimZin = Number.parseInt(String(value))\n break\n case 79:\n dimStyle.dimAzin = Number.parseInt(String(value))\n break\n case 170:\n dimStyle.dimAlt = Number.parseInt(String(value))\n break\n case 171:\n dimStyle.dimAltd = Number.parseInt(String(value))\n break\n case 172:\n dimStyle.dimTofl = Number.parseInt(String(value))\n break\n case 173:\n dimStyle.dimSah = Number.parseInt(String(value))\n break\n case 174:\n dimStyle.dimTix = Number.parseInt(String(value))\n break\n case 175:\n dimStyle.dimSoxd = Number.parseInt(String(value))\n break\n case 176:\n dimStyle.dimClrd = Number.parseInt(String(value))\n break\n case 177:\n dimStyle.dimClre = Number.parseInt(String(value))\n break\n case 178:\n dimStyle.dimClrt = Number.parseInt(String(value))\n break\n case 179:\n dimStyle.dimAdec = Number.parseInt(String(value))\n break\n case 270:\n dimStyle.dimUnit = Number.parseInt(String(value))\n break\n case 271:\n dimStyle.dimDec = Number.parseInt(String(value))\n break\n case 272:\n dimStyle.dimTdec = Number.parseInt(String(value))\n break\n case 273:\n dimStyle.dimAltu = Number.parseInt(String(value))\n break\n case 274:\n dimStyle.dimAlttd = Number.parseInt(String(value))\n break\n case 275:\n dimStyle.dimAunit = Number.parseInt(String(value))\n break\n case 276:\n dimStyle.dimFrac = Number.parseInt(String(value))\n break\n case 277:\n dimStyle.dimLunit = Number.parseInt(String(value))\n break\n case 278:\n dimStyle.dimDsep = Number.parseInt(String(value))\n break\n case 279:\n dimStyle.dimTmove = Number.parseInt(String(value))\n break\n case 280:\n dimStyle.dimJust = Number.parseInt(String(value))\n break\n case 281:\n dimStyle.dimSd1 = Number.parseInt(String(value))\n break\n case 282:\n dimStyle.dimSd2 = Number.parseInt(String(value))\n break\n case 283:\n dimStyle.dimTolj = Number.parseInt(String(value))\n break\n case 284:\n dimStyle.dimTzin = Number.parseInt(String(value))\n break\n case 285:\n dimStyle.dimAltz = Number.parseInt(String(value))\n break\n case 286:\n dimStyle.dimAlttz = Number.parseInt(String(value))\n break\n case 287:\n dimStyle.dimFit = Number.parseInt(String(value))\n break\n case 288:\n dimStyle.dimUpt = Number.parseInt(String(value))\n break\n case 289:\n dimStyle.dimAtfit = Number.parseInt(String(value))\n break\n case 340:\n dimStyle.dimTxsty = value\n break\n case 341:\n dimStyle.dimLdrblk = value\n break\n case 342:\n dimStyle.dimBlk = value\n break\n case 343:\n dimStyle.dimBlk1 = value\n break\n case 344:\n dimStyle.dimBlk2 = value\n break\n case 371:\n dimStyle.dimLwd = Number.parseInt(String(value))\n break\n case 372:\n dimStyle.dimLwe = Number.parseInt(String(value))\n break\n default:\n }\n return dimStyle\n },\n { type: 'DIMSTYLE' } as DimStyleInternal,\n )\n}\n\nconst tableHandler = (\n tuples: DXFTuple[],\n tableType: string,\n handler: (tuples: DXFTuple[]) => LTypeInternal | LayerInternal | StyleInternal | VPortInternal | DimStyleInternal,\n): Record<string, any> => {\n const tableRowsTuples: DXFTuple[][] = []\n\n let tableRowTuples: DXFTuple[] | undefined\n for (const tuple of tuples) {\n const type = tuple[0]\n const value = tuple[1]\n if ((type === 0 || type === 2) && value === tableType) {\n tableRowTuples = []\n tableRowsTuples.push(tableRowTuples)\n } else if (tableRowTuples) {\n tableRowTuples.push(tuple)\n }\n }\n\n return tableRowsTuples.reduce((acc, rowTuples) => {\n const tableRow = handler(rowTuples)\n if (tableRow.name) {\n acc[String(tableRow.name)] = tableRow\n } else {\n logger.warn('table row without name:', tableRow)\n }\n return acc\n }, {} as Record<string, any>)\n}\n\nexport default function parseTables(tuples: DXFTuple[]) {\n const tableGroups: DXFTuple[][] = []\n let tableTuples: DXFTuple[] | undefined\n for (const tuple of tuples) {\n const value = tuple[1]\n if (value === 'TABLE') {\n tableTuples = []\n tableGroups.push(tableTuples)\n } else if (value === 'ENDTAB') {\n if (tableTuples) {\n tableGroups.push(tableTuples)\n }\n } else if (tableTuples) {\n tableTuples.push(tuple)\n }\n }\n\n let stylesTuples: DXFTuple[] = []\n let layersTuples: DXFTuple[] = []\n let vPortTuples: DXFTuple[] = []\n let ltypeTuples: DXFTuple[] = []\n let dimStyleTuples: DXFTuple[] = []\n for (const group of tableGroups) {\n if (group[0]?.[1] === 'STYLE') {\n stylesTuples = group\n } else if (group[0]?.[1] === 'LTYPE') {\n ltypeTuples = group\n } else if (group[0]?.[1] === 'LAYER') {\n layersTuples = group\n } else if (group[0]?.[1] === 'VPORT') {\n vPortTuples = group\n } else if (group[0]?.[1] === 'DIMSTYLE') {\n dimStyleTuples = group\n }\n }\n\n return {\n layers: tableHandler(layersTuples, 'LAYER', layerHandler),\n styles: tableHandler(stylesTuples, 'STYLE', styleHandler),\n vports: tableHandler(vPortTuples, 'VPORT', vPortHandler),\n ltypes: tableHandler(ltypeTuples, 'LTYPE', ltypeHandler),\n dimStyles: tableHandler(dimStyleTuples, 'DIMSTYLE', dimStyleHandler),\n }\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["import type {\n AppIdInternal,\n BlockRecordInternal,\n DXFTuple,\n DimStyleInternal,\n LTypeElement,\n LTypeInternal,\n LayerInternal,\n StyleInternal,\n UcsInternal,\n VPortInternal,\n ViewInternal,\n} from '../types'\n\nimport logger from '../util/logger'\n\nconst ltypeHandler = (tuples: DXFTuple[]): LTypeInternal => {\n let element: LTypeElement | undefined\n let offset: { x: string | number; y: string | number } | undefined\n return tuples.reduce(\n (layer, tuple) => { // NOSONAR\n const type = tuple[0]\n const value = tuple[1]\n // https://documentation.help/AutoCAD-DXF/WS1a9193826455f5ff18cb41610ec0a2e719-7a4f.htm\n switch (type) {\n case 2:\n layer.name = value\n break\n case 3:\n layer.description = value\n break\n case 70:\n // Standard flag values (bit-coded values):\n // 16 = If set, table entry is externally dependent on an xref\n // 32 = If both this bit and bit 16 are set, the externally dependent xref has been successfully resolved\n // 64 = If set, the table entry was referenced by at least one entity in the drawing the last time the drawing was edited. (This flag is for the benefit of AutoCAD commands. It can be ignored by most programs that read DXF files and need not be set by programs that write DXF files)\n layer.flag = value\n break\n case 72:\n // Alignment code (value is always 65, the ASCII code for A):\n layer.alignment = value\n break\n case 73:\n layer.elementCount = Number.parseInt(String(value))\n break\n case 40:\n layer.patternLength = value\n break\n case 49:\n element = { length: value }\n layer.pattern.push(element)\n break\n case 74:\n // Complex linetype element type (one per element). Default is 0 (no embedded shape/text) (bit-coded values)\n // 1 = If set, code 50 specifies an absolute rotation; if not set, code 50 specifies a relative rotation\n // 2 = Embedded element is a text string\n // 4 = Embedded element is a shape\n if (element) {\n element.shape = value\n }\n break\n case 75:\n if (element) {\n element.shapeNumber = value\n }\n break\n case 340:\n if (element) {\n element.styleHandle = value\n }\n break\n case 46:\n if (element) {\n element.scales ??= []\n element.scales.push(value)\n }\n break\n case 50:\n if (element) {\n element.rotation = value\n }\n break\n case 44:\n offset = { x: value, y: 0 }\n if (element) {\n element.offset ??= []\n element.offset.push(offset)\n }\n break\n case 45:\n if (offset) {\n offset.y = value\n }\n break\n case 9:\n if (element) {\n element.text = value\n }\n break\n default:\n }\n return layer\n },\n { type: 'LTYPE', pattern: [] } as LTypeInternal,\n )\n}\n\nconst layerHandler = (tuples: DXFTuple[]): LayerInternal => {\n return tuples.reduce(\n (layer, tuple) => {\n const type = tuple[0]\n const value = tuple[1]\n // https://www.autodesk.com/techpubs/autocad/acad2000/dxf/layer_dxf_04.htm\n switch (type) {\n case 2:\n layer.name = value\n break\n case 6:\n layer.lineTypeName = value\n break\n case 62:\n layer.colorNumber = value\n break\n case 70:\n layer.flags = value\n break\n case 290:\n layer.plot = Number.parseInt(String(value)) !== 0\n break\n case 370:\n layer.lineWeightEnum = value\n break\n default:\n }\n return layer\n },\n { type: 'LAYER' } as LayerInternal,\n )\n}\n\nconst styleHandler = (tuples: DXFTuple[]): StyleInternal => {\n return tuples.reduce(\n (style, tuple) => {\n const type = tuple[0]\n const value = tuple[1]\n switch (type) {\n case 2:\n style.name = value\n break\n case 6:\n style.lineTypeName = value\n break\n case 40:\n style.fixedTextHeight = value\n break\n case 41:\n style.widthFactor = value\n break\n case 50:\n style.obliqueAngle = value\n break\n case 71:\n style.flags = value\n break\n case 42:\n style.lastHeightUsed = value\n break\n case 3:\n style.primaryFontFileName = value\n break\n case 4:\n style.bigFontFileName = value\n break\n default:\n }\n return style\n },\n { type: 'STYLE' } as StyleInternal,\n )\n}\n\nconst vPortHandler = (tuples: DXFTuple[]): VPortInternal => {\n return tuples.reduce(\n (vport, tuple) => {\n const type = tuple[0]\n const value = tuple[1]\n switch (type) { // NOSONAR\n case 2:\n vport.name = value\n break\n case 5:\n vport.handle = value\n break\n case 70:\n vport.flags = value\n break\n case 10:\n vport.lowerLeft.x = Number.parseFloat(String(value))\n break\n case 20:\n vport.lowerLeft.y = Number.parseFloat(String(value))\n break\n case 11:\n vport.upperRight.x = Number.parseFloat(String(value))\n break\n case 21:\n vport.upperRight.y = Number.parseFloat(String(value))\n break\n case 12:\n vport.center.x = Number.parseFloat(String(value))\n break\n case 22:\n vport.center.y = Number.parseFloat(String(value))\n break\n case 14:\n vport.snapSpacing.x = Number.parseFloat(String(value))\n break\n case 24:\n vport.snapSpacing.y = Number.parseFloat(String(value))\n break\n case 15:\n vport.gridSpacing.x = Number.parseFloat(String(value))\n break\n case 25:\n vport.gridSpacing.y = Number.parseFloat(String(value))\n break\n case 16:\n vport.direction.x = Number.parseFloat(String(value))\n break\n case 26:\n vport.direction.y = Number.parseFloat(String(value))\n break\n case 36:\n vport.direction.z = Number.parseFloat(String(value))\n break\n case 17:\n vport.target.x = Number.parseFloat(String(value))\n break\n case 27:\n vport.target.y = Number.parseFloat(String(value))\n break\n case 37:\n vport.target.z = Number.parseFloat(String(value))\n break\n case 45:\n vport.height = Number.parseFloat(String(value))\n break\n case 50:\n vport.snapAngle = Number.parseFloat(String(value))\n break\n case 51:\n vport.angle = Number.parseFloat(String(value))\n break\n case 110:\n vport.x = Number.parseFloat(String(value))\n break\n case 120:\n vport.y = Number.parseFloat(String(value))\n break\n case 130:\n vport.z = Number.parseFloat(String(value))\n break\n case 111:\n vport.xAxisX = Number.parseFloat(String(value))\n break\n case 121:\n vport.xAxisY = Number.parseFloat(String(value))\n break\n case 131:\n vport.xAxisZ = Number.parseFloat(String(value))\n break\n case 112:\n vport.xAxisX = Number.parseFloat(String(value))\n break\n case 122:\n vport.xAxisY = Number.parseFloat(String(value))\n break\n case 132:\n vport.xAxisZ = Number.parseFloat(String(value))\n break\n case 146:\n vport.elevation = Number.parseFloat(String(value))\n break\n default:\n }\n return vport\n },\n {\n type: 'VPORT',\n center: {},\n lowerLeft: {},\n upperRight: {},\n snap: {},\n snapSpacing: {},\n gridSpacing: {},\n direction: {},\n target: {},\n } as VPortInternal,\n )\n}\n\nconst appIdHandler = (tuples: DXFTuple[]): AppIdInternal => {\n return tuples.reduce(\n (appId, tuple) => {\n const type = tuple[0]\n const value = tuple[1]\n\n switch (type) {\n case 2:\n appId.name = value\n break\n case 70:\n appId.flags = value\n break\n default:\n }\n\n return appId\n },\n { type: 'APPID' } as AppIdInternal,\n )\n}\n\nconst blockRecordHandler = (tuples: DXFTuple[]): BlockRecordInternal => {\n return tuples.reduce(\n (blockRecord, tuple) => {\n const type = tuple[0]\n const value = tuple[1]\n\n switch (type) {\n case 2:\n blockRecord.name = value\n break\n case 70:\n blockRecord.flags = value\n break\n default:\n }\n\n return blockRecord\n },\n { type: 'BLOCK_RECORD' } as BlockRecordInternal,\n )\n}\n\nconst ucsHandler = (tuples: DXFTuple[]): UcsInternal => {\n return tuples.reduce(\n (ucs, tuple) => {\n const type = tuple[0]\n const value = tuple[1]\n\n switch (type) {\n case 2:\n ucs.name = value\n break\n case 70:\n ucs.flags = value\n break\n default:\n }\n\n return ucs\n },\n { type: 'UCS' } as UcsInternal,\n )\n}\n\nconst viewHandler = (tuples: DXFTuple[]): ViewInternal => {\n return tuples.reduce(\n (view, tuple) => {\n const type = tuple[0]\n const value = tuple[1]\n\n switch (type) {\n case 2:\n view.name = value\n break\n case 70:\n view.flags = value\n break\n default:\n }\n\n return view\n },\n { type: 'VIEW' } as ViewInternal,\n )\n}\n\nconst dimStyleHandler = (tuples: DXFTuple[]): DimStyleInternal => {\n return tuples.reduce(\n (dimStyle, tuple) => {\n const type = tuple[0]\n const value = tuple[1]\n switch (type) { // NOSONAR\n case 2:\n dimStyle.name = value\n break\n case 70:\n dimStyle.flags = value\n break\n case 3:\n dimStyle.dimPost = value\n break\n case 4:\n dimStyle.dimAPost = value\n break\n case 40:\n dimStyle.dimScale = Number.parseFloat(String(value))\n break\n case 41:\n dimStyle.dimAsz = Number.parseFloat(String(value))\n break\n case 42:\n dimStyle.dimExo = Number.parseFloat(String(value))\n break\n case 43:\n dimStyle.dimDli = Number.parseFloat(String(value))\n break\n case 44:\n dimStyle.dimExe = Number.parseFloat(String(value))\n break\n case 45:\n dimStyle.dimRnd = Number.parseFloat(String(value))\n break\n case 46:\n dimStyle.dimDle = Number.parseFloat(String(value))\n break\n case 47:\n dimStyle.dimTp = Number.parseFloat(String(value))\n break\n case 48:\n dimStyle.dimTm = Number.parseFloat(String(value))\n break\n case 140:\n dimStyle.dimTxt = Number.parseFloat(String(value))\n break\n case 141:\n dimStyle.dimCen = Number.parseFloat(String(value))\n break\n case 142:\n dimStyle.dimTsz = Number.parseFloat(String(value))\n break\n case 143:\n dimStyle.dimAltf = Number.parseFloat(String(value))\n break\n case 144:\n dimStyle.dimLfac = Number.parseFloat(String(value))\n break\n case 145:\n dimStyle.dimTvp = Number.parseFloat(String(value))\n break\n case 146:\n dimStyle.dimTfac = Number.parseFloat(String(value))\n break\n case 147:\n dimStyle.dimGap = Number.parseFloat(String(value))\n break\n case 148:\n dimStyle.dimAltRnd = Number.parseFloat(String(value))\n break\n case 71:\n dimStyle.dimTol = Number.parseInt(String(value))\n break\n case 72:\n dimStyle.dimLim = Number.parseInt(String(value))\n break\n case 73:\n dimStyle.dimTih = Number.parseInt(String(value))\n break\n case 74:\n dimStyle.dimToh = Number.parseInt(String(value))\n break\n case 75:\n dimStyle.dimSe1 = Number.parseInt(String(value))\n break\n case 76:\n dimStyle.dimSe2 = Number.parseInt(String(value))\n break\n case 77:\n dimStyle.dimTad = Number.parseInt(String(value))\n break\n case 78:\n dimStyle.dimZin = Number.parseInt(String(value))\n break\n case 79:\n dimStyle.dimAzin = Number.parseInt(String(value))\n break\n case 170:\n dimStyle.dimAlt = Number.parseInt(String(value))\n break\n case 171:\n dimStyle.dimAltd = Number.parseInt(String(value))\n break\n case 172:\n dimStyle.dimTofl = Number.parseInt(String(value))\n break\n case 173:\n dimStyle.dimSah = Number.parseInt(String(value))\n break\n case 174:\n dimStyle.dimTix = Number.parseInt(String(value))\n break\n case 175:\n dimStyle.dimSoxd = Number.parseInt(String(value))\n break\n case 176:\n dimStyle.dimClrd = Number.parseInt(String(value))\n break\n case 177:\n dimStyle.dimClre = Number.parseInt(String(value))\n break\n case 178:\n dimStyle.dimClrt = Number.parseInt(String(value))\n break\n case 179:\n dimStyle.dimAdec = Number.parseInt(String(value))\n break\n case 270:\n dimStyle.dimUnit = Number.parseInt(String(value))\n break\n case 271:\n dimStyle.dimDec = Number.parseInt(String(value))\n break\n case 272:\n dimStyle.dimTdec = Number.parseInt(String(value))\n break\n case 273:\n dimStyle.dimAltu = Number.parseInt(String(value))\n break\n case 274:\n dimStyle.dimAlttd = Number.parseInt(String(value))\n break\n case 275:\n dimStyle.dimAunit = Number.parseInt(String(value))\n break\n case 276:\n dimStyle.dimFrac = Number.parseInt(String(value))\n break\n case 277:\n dimStyle.dimLunit = Number.parseInt(String(value))\n break\n case 278:\n dimStyle.dimDsep = Number.parseInt(String(value))\n break\n case 279:\n dimStyle.dimTmove = Number.parseInt(String(value))\n break\n case 280:\n dimStyle.dimJust = Number.parseInt(String(value))\n break\n case 281:\n dimStyle.dimSd1 = Number.parseInt(String(value))\n break\n case 282:\n dimStyle.dimSd2 = Number.parseInt(String(value))\n break\n case 283:\n dimStyle.dimTolj = Number.parseInt(String(value))\n break\n case 284:\n dimStyle.dimTzin = Number.parseInt(String(value))\n break\n case 285:\n dimStyle.dimAltz = Number.parseInt(String(value))\n break\n case 286:\n dimStyle.dimAlttz = Number.parseInt(String(value))\n break\n case 287:\n dimStyle.dimFit = Number.parseInt(String(value))\n break\n case 288:\n dimStyle.dimUpt = Number.parseInt(String(value))\n break\n case 289:\n dimStyle.dimAtfit = Number.parseInt(String(value))\n break\n case 340:\n dimStyle.dimTxsty = value\n break\n case 341:\n dimStyle.dimLdrblk = value\n break\n case 342:\n dimStyle.dimBlk = value\n break\n case 343:\n dimStyle.dimBlk1 = value\n break\n case 344:\n dimStyle.dimBlk2 = value\n break\n case 371:\n dimStyle.dimLwd = Number.parseInt(String(value))\n break\n case 372:\n dimStyle.dimLwe = Number.parseInt(String(value))\n break\n default:\n }\n return dimStyle\n },\n { type: 'DIMSTYLE' } as DimStyleInternal,\n )\n}\n\nconst tableHandler = (\n tuples: DXFTuple[],\n tableType: string,\n handler: (\n tuples: DXFTuple[],\n ) =>\n | LTypeInternal\n | LayerInternal\n | StyleInternal\n | VPortInternal\n | DimStyleInternal\n | AppIdInternal\n | BlockRecordInternal\n | UcsInternal\n | ViewInternal,\n): Record<string, any> => {\n const tableRowsTuples: DXFTuple[][] = []\n\n let tableRowTuples: DXFTuple[] | undefined\n for (const tuple of tuples) {\n const type = tuple[0]\n const value = tuple[1]\n if ((type === 0 || type === 2) && value === tableType) {\n tableRowTuples = []\n tableRowsTuples.push(tableRowTuples)\n } else if (tableRowTuples) {\n tableRowTuples.push(tuple)\n }\n }\n\n return tableRowsTuples.reduce((acc, rowTuples) => {\n const tableRow = handler(rowTuples)\n if (tableRow.name) {\n acc[String(tableRow.name)] = tableRow\n } else {\n logger.warn('table row without name:', tableRow)\n }\n return acc\n }, {} as Record<string, any>)\n}\n\nexport default function parseTables(tuples: DXFTuple[]) {\n const tableGroups: DXFTuple[][] = []\n let tableTuples: DXFTuple[] | undefined\n for (const tuple of tuples) {\n const value = tuple[1]\n if (value === 'TABLE') {\n tableTuples = []\n tableGroups.push(tableTuples)\n } else if (value === 'ENDTAB') {\n if (tableTuples) {\n tableGroups.push(tableTuples)\n }\n } else if (tableTuples) {\n tableTuples.push(tuple)\n }\n }\n\n const groupsByName: Record<string, DXFTuple[]> = {}\n for (const group of tableGroups) {\n const name = String(group[0]?.[1] ?? '')\n if (!name) continue\n groupsByName[name] = group\n }\n\n const stylesTuples = groupsByName.STYLE ?? []\n const layersTuples = groupsByName.LAYER ?? []\n const vPortTuples = groupsByName.VPORT ?? []\n const ltypeTuples = groupsByName.LTYPE ?? []\n const dimStyleTuples = groupsByName.DIMSTYLE ?? []\n const appIdTuples = groupsByName.APPID ?? []\n const blockRecordTuples = groupsByName.BLOCK_RECORD ?? []\n const ucsTuples = groupsByName.UCS ?? []\n const viewTuples = groupsByName.VIEW ?? []\n\n return {\n layers: tableHandler(layersTuples, 'LAYER', layerHandler),\n styles: tableHandler(stylesTuples, 'STYLE', styleHandler),\n vports: tableHandler(vPortTuples, 'VPORT', vPortHandler),\n ltypes: tableHandler(ltypeTuples, 'LTYPE', ltypeHandler),\n dimStyles: tableHandler(dimStyleTuples, 'DIMSTYLE', dimStyleHandler),\n appids: tableHandler(appIdTuples, 'APPID', appIdHandler),\n blockRecords: tableHandler(blockRecordTuples, 'BLOCK_RECORD', blockRecordHandler),\n ucs: tableHandler(ucsTuples, 'UCS', ucsHandler),\n views: tableHandler(viewTuples, 'VIEW', viewHandler),\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/lib/index.cjs
CHANGED
|
@@ -34,18 +34,20 @@ __export(index_exports, {
|
|
|
34
34
|
denormalise: () => import_denormalise.default,
|
|
35
35
|
groupEntitiesByLayer: () => import_groupEntitiesByLayer.default,
|
|
36
36
|
parseString: () => import_parseString.default,
|
|
37
|
+
toJson: () => import_toJson.default,
|
|
37
38
|
toPolylines: () => import_toPolylines.default,
|
|
38
39
|
toSVG: () => import_toSVG.default
|
|
39
40
|
});
|
|
40
41
|
module.exports = __toCommonJS(index_exports);
|
|
41
42
|
var import_config = __toESM(require("./config"), 1);
|
|
42
|
-
var import_parseString = __toESM(require("./parseString"), 1);
|
|
43
43
|
var import_denormalise = __toESM(require("./denormalise"), 1);
|
|
44
44
|
var import_groupEntitiesByLayer = __toESM(require("./groupEntitiesByLayer"), 1);
|
|
45
|
+
var import_Helper = __toESM(require("./Helper"), 1);
|
|
46
|
+
var import_parseString = __toESM(require("./parseString"), 1);
|
|
47
|
+
var import_toJson = __toESM(require("./toJson"), 1);
|
|
45
48
|
var import_toPolylines = __toESM(require("./toPolylines"), 1);
|
|
46
49
|
var import_toSVG = __toESM(require("./toSVG"), 1);
|
|
47
50
|
var import_colors = __toESM(require("./util/colors"), 1);
|
|
48
|
-
var import_Helper = __toESM(require("./Helper"), 1);
|
|
49
51
|
// Annotate the CommonJS export names for ESM import in node:
|
|
50
52
|
0 && (module.exports = {
|
|
51
53
|
Helper,
|
|
@@ -54,6 +56,7 @@ var import_Helper = __toESM(require("./Helper"), 1);
|
|
|
54
56
|
denormalise,
|
|
55
57
|
groupEntitiesByLayer,
|
|
56
58
|
parseString,
|
|
59
|
+
toJson,
|
|
57
60
|
toPolylines,
|
|
58
61
|
toSVG
|
|
59
62
|
});
|
package/lib/index.cjs.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/index.ts"],
|
|
4
|
-
"sourcesContent": ["
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA
|
|
6
|
-
"names": [
|
|
4
|
+
"sourcesContent": ["export { default as config } from './config'\nexport { default as denormalise } from './denormalise'\nexport { default as groupEntitiesByLayer } from './groupEntitiesByLayer'\nexport { default as Helper } from './Helper'\nexport { default as parseString } from './parseString'\nexport { default as toJson } from './toJson'\nexport { default as toPolylines } from './toPolylines'\nexport { default as toSVG } from './toSVG'\nexport { default as colors } from './util/colors'\n\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAkC;AAClC,yBAAuC;AACvC,kCAAgD;AAChD,oBAAkC;AAClC,yBAAuC;AACvC,oBAAkC;AAClC,yBAAuC;AACvC,mBAAiC;AACjC,oBAAkC;",
|
|
6
|
+
"names": []
|
|
7
7
|
}
|
package/lib/index.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { default as config } from './config';
|
|
2
|
+
export { default as denormalise } from './denormalise';
|
|
3
|
+
export { default as groupEntitiesByLayer } from './groupEntitiesByLayer';
|
|
4
|
+
export { default as Helper } from './Helper';
|
|
5
|
+
export { default as parseString } from './parseString';
|
|
6
|
+
export { default as toJson } from './toJson';
|
|
7
|
+
export { default as toPolylines } from './toPolylines';
|
|
8
|
+
export { default as toSVG } from './toSVG';
|
|
9
|
+
export { default as colors } from './util/colors';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAA;AAC5C,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAA;AACtD,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AACxE,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAA;AAC5C,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAA;AACtD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAA;AAC5C,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAA;AACtD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAA;AAC1C,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,eAAe,CAAA"}
|
package/lib/index.js
CHANGED
|
@@ -1,19 +1,21 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
1
|
+
import { default as default2 } from "./config";
|
|
2
|
+
import { default as default3 } from "./denormalise";
|
|
3
|
+
import { default as default4 } from "./groupEntitiesByLayer";
|
|
4
|
+
import { default as default5 } from "./Helper";
|
|
5
|
+
import { default as default6 } from "./parseString";
|
|
6
|
+
import { default as default7 } from "./toJson";
|
|
7
|
+
import { default as default8 } from "./toPolylines";
|
|
8
|
+
import { default as default9 } from "./toSVG";
|
|
9
|
+
import { default as default10 } from "./util/colors";
|
|
9
10
|
export {
|
|
10
|
-
Helper,
|
|
11
|
-
colors,
|
|
12
|
-
config,
|
|
13
|
-
denormalise,
|
|
14
|
-
groupEntitiesByLayer,
|
|
15
|
-
parseString,
|
|
16
|
-
|
|
17
|
-
|
|
11
|
+
default5 as Helper,
|
|
12
|
+
default10 as colors,
|
|
13
|
+
default2 as config,
|
|
14
|
+
default3 as denormalise,
|
|
15
|
+
default4 as groupEntitiesByLayer,
|
|
16
|
+
default6 as parseString,
|
|
17
|
+
default7 as toJson,
|
|
18
|
+
default8 as toPolylines,
|
|
19
|
+
default9 as toSVG
|
|
18
20
|
};
|
|
19
21
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/index.ts"],
|
|
4
|
-
"sourcesContent": ["
|
|
5
|
-
"mappings": "AAAA,
|
|
6
|
-
"names": []
|
|
4
|
+
"sourcesContent": ["export { default as config } from './config'\nexport { default as denormalise } from './denormalise'\nexport { default as groupEntitiesByLayer } from './groupEntitiesByLayer'\nexport { default as Helper } from './Helper'\nexport { default as parseString } from './parseString'\nexport { default as toJson } from './toJson'\nexport { default as toPolylines } from './toPolylines'\nexport { default as toSVG } from './toSVG'\nexport { default as colors } from './util/colors'\n\n"],
|
|
5
|
+
"mappings": "AAAA,SAAoB,WAAXA,gBAAyB;AAClC,SAAoB,WAAXA,gBAA8B;AACvC,SAAoB,WAAXA,gBAAuC;AAChD,SAAoB,WAAXA,gBAAyB;AAClC,SAAoB,WAAXA,gBAA8B;AACvC,SAAoB,WAAXA,gBAAyB;AAClC,SAAoB,WAAXA,gBAA8B;AACvC,SAAoB,WAAXA,gBAAwB;AACjC,SAAoB,WAAXA,iBAAyB;",
|
|
6
|
+
"names": ["default"]
|
|
7
7
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseString.d.ts","sourceRoot":"","sources":["../src/parseString.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAY,SAAS,EAAE,MAAM,SAAS,CAAA;AA4ElD,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAa7D"}
|
package/lib/toJson.cjs
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var toJson_exports = {};
|
|
20
|
+
__export(toJson_exports, {
|
|
21
|
+
default: () => toJson
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(toJson_exports);
|
|
24
|
+
function toJson(parsed, options = {}) {
|
|
25
|
+
const shouldPrettyPrint = options.pretty === true;
|
|
26
|
+
const indentation = shouldPrettyPrint ? options.space ?? 2 : void 0;
|
|
27
|
+
return JSON.stringify(parsed, null, indentation);
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=toJson.cjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/toJson.ts"],
|
|
4
|
+
"sourcesContent": ["import type { ParsedDXF, ToJsonOptions } from './types'\n\nexport default function toJson(parsed: ParsedDXF, options: ToJsonOptions = {}): string {\n const shouldPrettyPrint = options.pretty === true\n const indentation = shouldPrettyPrint ? (options.space ?? 2) : undefined\n\n return JSON.stringify(parsed, null, indentation)\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEe,SAAR,OAAwB,QAAmB,UAAyB,CAAC,GAAW;AACrF,QAAM,oBAAoB,QAAQ,WAAW;AAC7C,QAAM,cAAc,oBAAqB,QAAQ,SAAS,IAAK;AAE/D,SAAO,KAAK,UAAU,QAAQ,MAAM,WAAW;AACjD;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/lib/toJson.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toJson.d.ts","sourceRoot":"","sources":["../src/toJson.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAEvD,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,GAAE,aAAkB,GAAG,MAAM,CAKrF"}
|
package/lib/toJson.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
function toJson(parsed, options = {}) {
|
|
2
|
+
const shouldPrettyPrint = options.pretty === true;
|
|
3
|
+
const indentation = shouldPrettyPrint ? options.space ?? 2 : void 0;
|
|
4
|
+
return JSON.stringify(parsed, null, indentation);
|
|
5
|
+
}
|
|
6
|
+
export {
|
|
7
|
+
toJson as default
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=toJson.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/toJson.ts"],
|
|
4
|
+
"sourcesContent": ["import type { ParsedDXF, ToJsonOptions } from './types'\n\nexport default function toJson(parsed: ParsedDXF, options: ToJsonOptions = {}): string {\n const shouldPrettyPrint = options.pretty === true\n const indentation = shouldPrettyPrint ? (options.space ?? 2) : undefined\n\n return JSON.stringify(parsed, null, indentation)\n}\n"],
|
|
5
|
+
"mappings": "AAEe,SAAR,OAAwB,QAAmB,UAAyB,CAAC,GAAW;AACrF,QAAM,oBAAoB,QAAQ,WAAW;AAC7C,QAAM,cAAc,oBAAqB,QAAQ,SAAS,IAAK;AAE/D,SAAO,KAAK,UAAU,QAAQ,MAAM,WAAW;AACjD;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toPolylines.d.ts","sourceRoot":"","sources":["../src/toPolylines.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAU,SAAS,EAAE,MAAM,SAAS,CAAA;AAChD,OAAO,KAAK,EAAY,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAEjE,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,MAAM,EAAE,SAAS,GAAG,cAAc,CAmCrE"}
|
package/lib/toSVG.cjs
CHANGED
|
@@ -289,6 +289,22 @@ const tolerance = (entity) => {
|
|
|
289
289
|
});
|
|
290
290
|
return (0, import_transformBoundingBoxAndElement.default)(bbox, element, entity.transforms ?? []);
|
|
291
291
|
};
|
|
292
|
+
const shape = (entity) => {
|
|
293
|
+
const x = entity.insertionPoint?.x ?? 0;
|
|
294
|
+
const y = entity.insertionPoint?.y ?? 0;
|
|
295
|
+
const height = entity.size ?? 1;
|
|
296
|
+
const rotation = entity.rotation ?? 0;
|
|
297
|
+
const content = entity.name ?? "";
|
|
298
|
+
const textWidth = content.length * height * 0.6;
|
|
299
|
+
const bbox0 = new import_vecks.Box2().expandByPoint({ x, y }).expandByPoint({ x: x + textWidth, y: y + height });
|
|
300
|
+
const rotationDegrees = rotation * 180 / Math.PI;
|
|
301
|
+
const element0 = `<text x="${x}" y="${y}" font-size="${height}" transform="rotate(${-rotationDegrees} ${x} ${y}) scale(1,-1) translate(0 ${-2 * y})">${(0, import_escapeXmlText.default)(content)}</text>`;
|
|
302
|
+
const { bbox, element } = addFlipXIfApplicable(entity, {
|
|
303
|
+
bbox: bbox0,
|
|
304
|
+
element: element0
|
|
305
|
+
});
|
|
306
|
+
return (0, import_transformBoundingBoxAndElement.default)(bbox, element, entity.transforms ?? []);
|
|
307
|
+
};
|
|
292
308
|
const dimension = (entity, dimStyle, options, viewport) => {
|
|
293
309
|
const result = (0, import_dimensionToSVG.default)(entity, dimStyle, options, viewport);
|
|
294
310
|
return (0, import_transformBoundingBoxAndElement.default)(
|
|
@@ -363,18 +379,30 @@ const entityToBoundsAndElement = (entity, dimStyles, options, viewport) => {
|
|
|
363
379
|
}
|
|
364
380
|
}
|
|
365
381
|
case "LINE":
|
|
382
|
+
case "RAY":
|
|
383
|
+
case "XLINE":
|
|
366
384
|
case "POLYLINE": {
|
|
367
385
|
return polyline(entity);
|
|
368
386
|
}
|
|
387
|
+
case "SOLID":
|
|
388
|
+
case "TRACE": {
|
|
389
|
+
return polyline(entity);
|
|
390
|
+
}
|
|
369
391
|
case "LWPOLYLINE": {
|
|
370
392
|
return lwpolyline(entity);
|
|
371
393
|
}
|
|
394
|
+
case "WIPEOUT": {
|
|
395
|
+
return polyline(entity);
|
|
396
|
+
}
|
|
372
397
|
case "LEADER": {
|
|
373
398
|
return leader(entity);
|
|
374
399
|
}
|
|
375
400
|
case "TOLERANCE": {
|
|
376
401
|
return tolerance(entity);
|
|
377
402
|
}
|
|
403
|
+
case "SHAPE": {
|
|
404
|
+
return shape(entity);
|
|
405
|
+
}
|
|
378
406
|
default:
|
|
379
407
|
import_logger.default.warn("entity type not supported in SVG rendering:", entity.type);
|
|
380
408
|
return null;
|
|
@@ -416,9 +444,12 @@ function toSVG(parsed, options = {}) {
|
|
|
416
444
|
acc.bbox.expandByPoint(bbox2.min);
|
|
417
445
|
acc.bbox.expandByPoint(bbox2.max);
|
|
418
446
|
}
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
447
|
+
const color = (0, import_rgbToColorAttribute.default)(rgb);
|
|
448
|
+
if (entity.type === "SOLID" || entity.type === "TRACE") {
|
|
449
|
+
acc.elements.push(`<g fill="${color}" stroke="none">${element}</g>`);
|
|
450
|
+
} else {
|
|
451
|
+
acc.elements.push(`<g stroke="${color}">${element}</g>`);
|
|
452
|
+
}
|
|
422
453
|
}
|
|
423
454
|
return acc;
|
|
424
455
|
},
|
package/lib/toSVG.cjs.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/toSVG.ts"],
|
|
4
|
-
"sourcesContent": ["import { Box2 } from 'vecks'\n\nimport denormalise from './denormalise'\nimport dimensionToSVG, { getDimensionGeometryBBox } from './dimensionToSVG'\nimport entityToPolyline from './entityToPolyline'\nimport getRGBForEntity from './getRGBForEntity'\nimport escapeXmlText from './util/escapeXmlText'\nimport logger from './util/logger'\nimport rgbToColorAttribute from './util/rgbToColorAttribute'\nimport rotate from './util/rotate'\nimport toPiecewiseBezier, { multiplicity } from './util/toPiecewiseBezier'\nimport transformBoundingBoxAndElement from './util/transformBoundingBoxAndElement'\n\nimport type {\n ArcEntity,\n CircleEntity,\n DimensionEntity,\n EllipseEntity,\n Entity,\n LeaderEntity,\n MTextEntity,\n ParsedDXF,\n SplineEntity,\n TextEntity,\n ToleranceEntity,\n ToSVGOptions,\n} from './types'\nimport type { BoundsAndElement } from './types/svg'\n\nconst addFlipXIfApplicable = (\n entity: Entity,\n { bbox, element }: BoundsAndElement,\n): BoundsAndElement => {\n if (entity.extrusionZ === -1) {\n return {\n bbox: new Box2()\n .expandByPoint({ x: -bbox.min.x, y: bbox.min.y })\n .expandByPoint({ x: -bbox.max.x, y: bbox.max.y }),\n element: `<g transform=\"matrix(-1 0 0 1 0 0)\">\n ${element}\n </g>`,\n }\n } else {\n return { bbox, element }\n }\n}\n\n/**\n * Create a <path /> element. Interpolates curved entities.\n */\nconst polyline = (entity: Entity): BoundsAndElement => {\n const vertices = entityToPolyline(entity as any)\n const bbox = vertices.reduce(\n (acc, [x, y]) => acc.expandByPoint({ x, y }),\n new Box2(),\n )\n const d = vertices.reduce((acc, point, i) => {\n acc += i === 0 ? 'M' : 'L'\n acc += point[0] + ',' + point[1]\n return acc\n }, '')\n // Empirically it appears that flipping horizontally does not apply to polyline\n return transformBoundingBoxAndElement(\n bbox,\n `<path d=\"${d}\" />`,\n entity.transforms ?? [],\n )\n}\n\n/**\n * Create a <path /> element. Interpolates curved entities.\n * lwpolyline is the same as polyline but addFlipXIfApplicable does apply\n */\nconst lwpolyline = (entity: Entity): BoundsAndElement => {\n const vertices = entityToPolyline(entity as any)\n const bbox0 = vertices.reduce(\n (acc, [x, y]) => acc.expandByPoint({ x, y }),\n new Box2(),\n )\n const d = vertices.reduce((acc, point, i) => {\n acc += i === 0 ? 'M' : 'L'\n acc += point[0] + ',' + point[1]\n return acc\n }, '')\n const element0 = `<path d=\"${d}\" />`\n const { bbox, element } = addFlipXIfApplicable(entity, {\n bbox: bbox0,\n element: element0,\n })\n return transformBoundingBoxAndElement(\n bbox,\n element,\n entity.transforms ?? [],\n )\n}\n\nconst leader = (entity: LeaderEntity): BoundsAndElement | null => {\n if (!entity.vertices || entity.vertices.length < 2) return null\n\n const bbox0 = entity.vertices.reduce(\n (acc, p) => acc.expandByPoint({ x: p.x, y: p.y }),\n new Box2(),\n )\n const d = entity.vertices.reduce((acc, p, i) => {\n acc += i === 0 ? 'M' : 'L'\n acc += p.x + ',' + p.y\n return acc\n }, '')\n\n return transformBoundingBoxAndElement(\n bbox0,\n `<path d=\"${d}\" />`,\n entity.transforms ?? [],\n )\n}\n\n\n/**\n * Create a <circle /> element for the CIRCLE entity.\n */\nconst circle = (entity: CircleEntity): BoundsAndElement => {\n const bbox0 = new Box2()\n .expandByPoint({\n x: entity.x + entity.r,\n y: entity.y + entity.r,\n })\n .expandByPoint({\n x: entity.x - entity.r,\n y: entity.y - entity.r,\n })\n const element0 = `<circle cx=\"${entity.x}\" cy=\"${entity.y}\" r=\"${entity.r}\" />`\n const { bbox, element } = addFlipXIfApplicable(entity, {\n bbox: bbox0,\n element: element0,\n })\n return transformBoundingBoxAndElement(bbox, element, entity.transforms ?? [])\n}\n\ninterface EllipticArcParams {\n cx: number\n cy: number\n majorX: number\n majorY: number\n axisRatio: number\n startAngle: number\n endAngle: number\n flipX?: boolean\n}\n\n/**\n * Create a a <path d=\"A...\" /> or <ellipse /> element for the ARC or ELLIPSE\n * DXF entity (<ellipse /> if start and end point are the same).\n */\nconst ellipseOrArc = (params: EllipticArcParams): BoundsAndElement => {\n const { cx, cy, majorX, majorY, axisRatio, startAngle, endAngle } = params\n const rx = Math.hypot(majorX, majorY)\n const ry = axisRatio * rx\n const rotationAngle = -Math.atan2(-majorY, majorX)\n\n const bbox = bboxEllipseOrArc(params)\n\n if (\n Math.abs(startAngle - endAngle) < 1e-9 ||\n Math.abs(startAngle - endAngle + Math.PI * 2) < 1e-9\n ) {\n // Use a native <ellipse> when start and end angles are the same, and\n // arc paths with same start and end points don't render (at least on Safari)\n const element = `<g transform=\"rotate(${\n (rotationAngle / Math.PI) * 180\n } ${cx}, ${cy})\">\n <ellipse cx=\"${cx}\" cy=\"${cy}\" rx=\"${rx}\" ry=\"${ry}\" />\n </g>`\n return { bbox, element }\n } else {\n const startOffset = rotate(\n {\n x: Math.cos(startAngle) * rx,\n y: Math.sin(startAngle) * ry,\n },\n rotationAngle,\n )\n const startPoint = {\n x: cx + startOffset.x,\n y: cy + startOffset.y,\n }\n const endOffset = rotate(\n {\n x: Math.cos(endAngle) * rx,\n y: Math.sin(endAngle) * ry,\n },\n rotationAngle,\n )\n const endPoint = {\n x: cx + endOffset.x,\n y: cy + endOffset.y,\n }\n const adjustedEndAngle =\n endAngle < startAngle ? endAngle + Math.PI * 2 : endAngle\n const largeArcFlag = adjustedEndAngle - startAngle < Math.PI ? 0 : 1\n const d = `M ${startPoint.x} ${startPoint.y} A ${rx} ${ry} ${\n (rotationAngle / Math.PI) * 180\n } ${largeArcFlag} 1 ${endPoint.x} ${endPoint.y}`\n const element = `<path d=\"${d}\" />`\n return { bbox, element }\n }\n}\n\n/**\n * Compute the bounding box of an elliptical arc, given the DXF entity parameters\n */\n\nconst bboxEllipseOrArc = (params: EllipticArcParams): Box2 => {\n const { cx, cy, majorX, majorY, axisRatio } = params\n let { startAngle, endAngle } = params\n\n // The bounding box will be defined by the starting point of the ellipse, and ending point,\n // and any extrema on the ellipse that are between startAngle and endAngle.\n // The extrema are found by setting either the x or y component of the ellipse's\n // tangent vector to zero and solving for the angle.\n\n // Ensure start and end angles are > 0 and well-ordered\n while (startAngle < 0) startAngle += Math.PI * 2\n while (endAngle <= startAngle) endAngle += Math.PI * 2\n\n // When rotated, the extrema of the ellipse will be found at these angles\n const angles = []\n\n if (Math.abs(majorX) < 1e-12 || Math.abs(majorY) < 1e-12) {\n // Special case for majorX or majorY = 0\n for (let i = 0; i < 4; i++) {\n angles.push((i / 2) * Math.PI)\n }\n } else {\n // reference https://github.com/bjnortier/dxf/issues/47#issuecomment-545915042\n angles[0] = Math.atan((-majorY * axisRatio) / majorX) - Math.PI // Ensure angles < 0\n angles[1] = Math.atan((majorX * axisRatio) / majorY) - Math.PI\n angles[2] = angles[0] - Math.PI\n angles[3] = angles[1] - Math.PI\n }\n\n // Remove angles not falling between start and end\n for (let i = 4; i >= 0; i--) {\n while (angles[i] < startAngle) angles[i] += Math.PI * 2\n if (angles[i] > endAngle) {\n angles.splice(i, 1)\n }\n }\n\n // Also to consider are the starting and ending points:\n angles.push(startAngle, endAngle)\n\n // Compute points lying on the unit circle at these angles\n const pts = angles.map((a) => ({\n x: Math.cos(a),\n y: Math.sin(a),\n }))\n\n // Transformation matrix, formed by the major and minor axes\n const M = [\n [majorX, -majorY * axisRatio],\n [majorY, majorX * axisRatio],\n ]\n\n // Rotate, scale, and translate points\n const rotatedPts = pts.map((p) => ({\n x: p.x * M[0][0] + p.y * M[0][1] + cx,\n y: p.x * M[1][0] + p.y * M[1][1] + cy,\n }))\n\n // Compute extents of bounding box\n const bbox = rotatedPts.reduce((acc, p) => {\n acc.expandByPoint(p)\n return acc\n }, new Box2())\n\n return bbox\n}\n\n/**\n * An ELLIPSE is defined by the major axis, convert to X and Y radius with\n * a rotation angle\n */\nconst ellipse = (entity: EllipseEntity): BoundsAndElement => {\n const { bbox: bbox0, element: element0 } = ellipseOrArc({\n cx: entity.x,\n cy: entity.y,\n majorX: entity.majorX,\n majorY: entity.majorY,\n axisRatio: entity.axisRatio,\n startAngle: entity.startAngle,\n endAngle: entity.endAngle,\n })\n const { bbox, element } = addFlipXIfApplicable(entity, {\n bbox: bbox0,\n element: element0,\n })\n return transformBoundingBoxAndElement(bbox, element, entity.transforms ?? [])\n}\n\n/**\n * An ARC is an ellipse with equal radii\n */\nconst arc = (entity: ArcEntity): BoundsAndElement => {\n const { bbox: bbox0, element: element0 } = ellipseOrArc({\n cx: entity.x,\n cy: entity.y,\n majorX: entity.r,\n majorY: 0,\n axisRatio: 1,\n startAngle: entity.startAngle,\n endAngle: entity.endAngle,\n flipX: entity.extrusionZ === -1,\n })\n const { bbox, element } = addFlipXIfApplicable(entity, {\n bbox: bbox0,\n element: element0,\n })\n return transformBoundingBoxAndElement(bbox, element, entity.transforms ?? [])\n}\n\n/**\n * Create a <text /> element for TEXT entity\n */\nconst text = (entity: TextEntity): BoundsAndElement => {\n const x = entity.x ?? 0\n const y = entity.y ?? 0\n const height = entity.textHeight ?? 1\n const rotation = entity.rotation ?? 0\n const content = entity.string ?? ''\n\n // Estimate text bounding box (approximate)\n const textWidth = content.length * height * 0.6\n const bbox0 = new Box2()\n .expandByPoint({ x, y })\n .expandByPoint({ x: x + textWidth, y: y + height })\n\n const rotationDegrees = (rotation * 180) / Math.PI\n const element0 = `<text x=\"${x}\" y=\"${y}\" font-size=\"${height}\" transform=\"rotate(${-rotationDegrees} ${x} ${y}) scale(1,-1) translate(0 ${-2 * y})\">${escapeXmlText(content)}</text>`\n\n const { bbox, element } = addFlipXIfApplicable(entity, {\n bbox: bbox0,\n element: element0,\n })\n return transformBoundingBoxAndElement(bbox, element, entity.transforms ?? [])\n}\n\n/**\n * Create a <text /> element for MTEXT entity\n */\nconst mtext = (entity: MTextEntity): BoundsAndElement => {\n const x = entity.x ?? 0\n const y = entity.y ?? 0\n const height = entity.nominalTextHeight ?? entity.textHeight ?? 1\n const content = entity.string ?? ''\n\n // Estimate text bounding box (approximate)\n const textWidth = (entity.refRectangleWidth ?? content.length * height * 0.6)\n const bbox0 = new Box2()\n .expandByPoint({ x, y })\n .expandByPoint({ x: x + textWidth, y: y + height })\n\n // Calculate rotation from x-axis direction\n const rotation = entity.xAxisX !== undefined && entity.xAxisY !== undefined\n ? Math.atan2(entity.xAxisY, entity.xAxisX)\n : 0\n const rotationDegrees = (rotation * 180) / Math.PI\n const element0 = `<text x=\"${x}\" y=\"${y}\" font-size=\"${height}\" transform=\"rotate(${-rotationDegrees} ${x} ${y}) scale(1,-1) translate(0 ${-2 * y})\">${escapeXmlText(content)}</text>`\n\n const { bbox, element } = addFlipXIfApplicable(entity, {\n bbox: bbox0,\n element: element0,\n })\n return transformBoundingBoxAndElement(bbox, element, entity.transforms ?? [])\n}\n\n/**\n * Minimal <text /> fallback for TOLERANCE entities.\n * DXF uses special control codes; we preserve the raw string.\n */\nconst tolerance = (entity: ToleranceEntity): BoundsAndElement => {\n const x = entity.insertionPoint?.x ?? 0\n const y = entity.insertionPoint?.y ?? 0\n const height = 1\n const content = entity.text ?? ''\n\n const rotation = entity.xAxisDirection\n ? Math.atan2(entity.xAxisDirection.y, entity.xAxisDirection.x)\n : 0\n const rotationDegrees = (rotation * 180) / Math.PI\n\n const textWidth = content.length * height * 0.6\n const bbox0 = new Box2()\n .expandByPoint({ x, y })\n .expandByPoint({ x: x + textWidth, y: y + height })\n\n const element0 = `<text x=\"${x}\" y=\"${y}\" font-size=\"${height}\" transform=\"rotate(${-rotationDegrees} ${x} ${y}) scale(1,-1) translate(0 ${-2 * y})\">${escapeXmlText(content)}</text>`\n\n const { bbox, element } = addFlipXIfApplicable(entity, {\n bbox: bbox0,\n element: element0,\n })\n return transformBoundingBoxAndElement(bbox, element, entity.transforms ?? [])\n}\n\n/**\n * Create dimension visualization with DIMSTYLE support\n */\nconst dimension = (\n entity: DimensionEntity,\n dimStyle?: any,\n options?: ToSVGOptions,\n viewport?: { width: number; height: number },\n): BoundsAndElement => {\n const result = dimensionToSVG(entity, dimStyle, options, viewport)\n return transformBoundingBoxAndElement(\n result.bbox,\n result.element,\n entity.transforms ?? [],\n )\n}\n\nexport const piecewiseToPaths = (\n k: number,\n knots: number[],\n controlPoints: Array<{ x: number; y: number }>,\n): string[] => {\n const paths: string[] = []\n let controlPointIndex = 0\n let knotIndex = k\n while (knotIndex < knots.length - k + 1) {\n const m = multiplicity(knots, knotIndex)\n const cp = controlPoints.slice(controlPointIndex, controlPointIndex + k)\n if (k === 4) {\n paths.push(\n `<path d=\"M ${cp[0].x} ${cp[0].y} C ${cp[1].x} ${cp[1].y} ${cp[2].x} ${cp[2].y} ${cp[3].x} ${cp[3].y}\" />`,\n )\n } else if (k === 3) {\n paths.push(\n `<path d=\"M ${cp[0].x} ${cp[0].y} Q ${cp[1].x} ${cp[1].y} ${cp[2].x} ${cp[2].y}\" />`,\n )\n }\n controlPointIndex += m\n knotIndex += m\n }\n return paths\n}\n\nconst bezier = (entity: SplineEntity): BoundsAndElement => {\n let bbox = new Box2()\n for (const p of entity.controlPoints) {\n bbox = bbox.expandByPoint(p)\n }\n const k = entity.degree + 1\n const piecewise = toPiecewiseBezier(k, entity.controlPoints, entity.knots)\n const paths = piecewiseToPaths(k, piecewise.knots, piecewise.controlPoints)\n const element = `<g>${paths.join('')}</g>`\n return transformBoundingBoxAndElement(bbox, element, entity.transforms ?? [])\n}\n\n/**\n * Switch the appropriate function on entity type. CIRCLE, ARC and ELLIPSE\n * produce native SVG elements, the rest produce interpolated polylines.\n */\nconst entityToBoundsAndElement = (\n entity: Entity,\n dimStyles?: { [name: string]: any },\n options?: ToSVGOptions,\n viewport?: { width: number; height: number },\n): BoundsAndElement | null => {\n switch (entity.type) {\n case 'CIRCLE':\n return circle(entity as CircleEntity)\n case 'ELLIPSE':\n return ellipse(entity as EllipseEntity)\n case 'ARC':\n return arc(entity as ArcEntity)\n case 'TEXT':\n return text(entity as TextEntity)\n case 'MTEXT':\n return mtext(entity as MTextEntity)\n case 'DIMENSION': {\n const dimEntity = entity as DimensionEntity\n const styleName = typeof dimEntity.styleName === 'string'\n ? dimEntity.styleName\n : undefined\n const dimStyle = styleName && dimStyles\n ? dimStyles[styleName]\n : undefined\n return dimension(dimEntity, dimStyle, options, viewport)\n }\n case 'SPLINE': {\n const splineEntity = entity as SplineEntity\n const hasWeights = splineEntity.weights?.some((w: number) => w !== 1)\n if ((splineEntity.degree === 2 || splineEntity.degree === 3) && !hasWeights) {\n try {\n return bezier(splineEntity)\n } catch (err) {\n const error = err as Error\n logger.warn('bezier conversion failed, using polyline:', error.message)\n return polyline(entity)\n }\n } else {\n return polyline(entity)\n }\n }\n case 'LINE':\n case 'POLYLINE': {\n return polyline(entity)\n }\n case 'LWPOLYLINE': {\n return lwpolyline(entity)\n }\n case 'LEADER': {\n return leader(entity as LeaderEntity)\n }\n case 'TOLERANCE': {\n return tolerance(entity as ToleranceEntity)\n }\n default:\n logger.warn('entity type not supported in SVG rendering:', entity.type)\n return null\n }\n}\n\nexport default function toSVG(parsed: ParsedDXF, options: ToSVGOptions = {}): string {\n const entities = denormalise(parsed)\n const dimStyles = parsed.tables.dimStyles\n\n const geometryBBox = entities.reduce((acc: Box2, entity: Entity): Box2 => {\n if (entity.type === 'DIMENSION') {\n const bbox = getDimensionGeometryBBox(entity as DimensionEntity)\n if (bbox.valid) {\n acc.expandByPoint(bbox.min)\n acc.expandByPoint(bbox.max)\n }\n return acc\n }\n\n const boundsAndElement = entityToBoundsAndElement(entity, dimStyles, options)\n if (boundsAndElement?.bbox.valid) {\n acc.expandByPoint(boundsAndElement.bbox.min)\n acc.expandByPoint(boundsAndElement.bbox.max)\n }\n return acc\n }, new Box2())\n\n const viewport = geometryBBox.valid\n ? {\n width: geometryBBox.max.x - geometryBBox.min.x,\n height: geometryBBox.max.y - geometryBBox.min.y,\n }\n : {\n width: 0,\n height: 0,\n }\n\n const { bbox, elements } = entities.reduce(\n (\n acc: { bbox: Box2; elements: string[] },\n entity: Entity,\n ): { bbox: Box2; elements: string[] } => {\n const rgb = getRGBForEntity(parsed.tables.layers, entity)\n const boundsAndElement = entityToBoundsAndElement(entity, dimStyles, options, viewport)\n // Ignore entities that don't produce SVG elements or have unsupported types\n if (boundsAndElement) {\n const { bbox, element } = boundsAndElement\n // Ignore invalid bounding boxes\n if (bbox.valid) {\n acc.bbox.expandByPoint(bbox.min)\n acc.bbox.expandByPoint(bbox.max)\n }\n acc.elements.push(\n `<g stroke=\"${rgbToColorAttribute(rgb)}\">${element}</g>`,\n )\n }\n return acc\n },\n {\n bbox: new Box2(),\n elements: [],\n },\n )\n\n const viewBox = bbox.valid\n ? {\n x: bbox.min.x,\n y: -bbox.max.y,\n width: bbox.max.x - bbox.min.x,\n height: bbox.max.y - bbox.min.y,\n }\n : {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n }\n return `<?xml version=\"1.0\"?>\n<svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\"\n preserveAspectRatio=\"xMinYMin meet\"\n viewBox=\"${viewBox.x} ${viewBox.y} ${viewBox.width} ${viewBox.height}\"\n width=\"100%\" height=\"100%\"\n>\n <g stroke=\"#000000\" stroke-width=\"0.1%\" fill=\"none\" transform=\"matrix(1,0,0,-1,0,0)\">\n ${elements.join('\\n')}\n </g>\n</svg>`\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAqB;AAErB,yBAAwB;AACxB,4BAAyD;AACzD,8BAA6B;AAC7B,6BAA4B;AAC5B,2BAA0B;AAC1B,oBAAmB;AACnB,iCAAgC;AAChC,oBAAmB;AACnB,+BAAgD;AAChD,4CAA2C;AAkB3C,MAAM,uBAAuB,CAC3B,QACA,EAAE,MAAM,QAAQ,MACK;AACrB,MAAI,OAAO,eAAe,IAAI;AAC5B,WAAO;AAAA,MACL,MAAM,IAAI,kBAAK,EACZ,cAAc,EAAE,GAAG,CAAC,KAAK,IAAI,GAAG,GAAG,KAAK,IAAI,EAAE,CAAC,EAC/C,cAAc,EAAE,GAAG,CAAC,KAAK,IAAI,GAAG,GAAG,KAAK,IAAI,EAAE,CAAC;AAAA,MAClD,SAAS;AAAA,UACL,OAAO;AAAA;AAAA,IAEb;AAAA,EACF,OAAO;AACL,WAAO,EAAE,MAAM,QAAQ;AAAA,EACzB;AACF;AAKA,MAAM,WAAW,CAAC,WAAqC;AACrD,QAAM,eAAW,wBAAAA,SAAiB,MAAa;AAC/C,QAAM,OAAO,SAAS;AAAA,IACpB,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,IAAI,cAAc,EAAE,GAAG,EAAE,CAAC;AAAA,IAC3C,IAAI,kBAAK;AAAA,EACX;AACA,QAAM,IAAI,SAAS,OAAO,CAAC,KAAK,OAAO,MAAM;AAC3C,WAAO,MAAM,IAAI,MAAM;AACvB,WAAO,MAAM,CAAC,IAAI,MAAM,MAAM,CAAC;AAC/B,WAAO;AAAA,EACT,GAAG,EAAE;AAEL,aAAO,sCAAAC;AAAA,IACL;AAAA,IACA,YAAY,CAAC;AAAA,IACb,OAAO,cAAc,CAAC;AAAA,EACxB;AACF;AAMA,MAAM,aAAa,CAAC,WAAqC;AACvD,QAAM,eAAW,wBAAAD,SAAiB,MAAa;AAC/C,QAAM,QAAQ,SAAS;AAAA,IACrB,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,IAAI,cAAc,EAAE,GAAG,EAAE,CAAC;AAAA,IAC3C,IAAI,kBAAK;AAAA,EACX;AACA,QAAM,IAAI,SAAS,OAAO,CAAC,KAAK,OAAO,MAAM;AAC3C,WAAO,MAAM,IAAI,MAAM;AACvB,WAAO,MAAM,CAAC,IAAI,MAAM,MAAM,CAAC;AAC/B,WAAO;AAAA,EACT,GAAG,EAAE;AACL,QAAM,WAAW,YAAY,CAAC;AAC9B,QAAM,EAAE,MAAM,QAAQ,IAAI,qBAAqB,QAAQ;AAAA,IACrD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,CAAC;AACD,aAAO,sCAAAC;AAAA,IACL;AAAA,IACA;AAAA,IACA,OAAO,cAAc,CAAC;AAAA,EACxB;AACF;AAEA,MAAM,SAAS,CAAC,WAAkD;AAChE,MAAI,CAAC,OAAO,YAAY,OAAO,SAAS,SAAS,EAAG,QAAO;AAE3D,QAAM,QAAQ,OAAO,SAAS;AAAA,IAC5B,CAAC,KAAK,MAAM,IAAI,cAAc,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC;AAAA,IAChD,IAAI,kBAAK;AAAA,EACX;AACA,QAAM,IAAI,OAAO,SAAS,OAAO,CAAC,KAAK,GAAG,MAAM;AAC9C,WAAO,MAAM,IAAI,MAAM;AACvB,WAAO,EAAE,IAAI,MAAM,EAAE;AACrB,WAAO;AAAA,EACT,GAAG,EAAE;AAEL,aAAO,sCAAAA;AAAA,IACL;AAAA,IACA,YAAY,CAAC;AAAA,IACb,OAAO,cAAc,CAAC;AAAA,EACxB;AACF;AAMA,MAAM,SAAS,CAAC,WAA2C;AACzD,QAAM,QAAQ,IAAI,kBAAK,EACpB,cAAc;AAAA,IACb,GAAG,OAAO,IAAI,OAAO;AAAA,IACrB,GAAG,OAAO,IAAI,OAAO;AAAA,EACvB,CAAC,EACA,cAAc;AAAA,IACb,GAAG,OAAO,IAAI,OAAO;AAAA,IACrB,GAAG,OAAO,IAAI,OAAO;AAAA,EACvB,CAAC;AACH,QAAM,WAAW,eAAe,OAAO,CAAC,SAAS,OAAO,CAAC,QAAQ,OAAO,CAAC;AACzE,QAAM,EAAE,MAAM,QAAQ,IAAI,qBAAqB,QAAQ;AAAA,IACrD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,CAAC;AACD,aAAO,sCAAAA,SAA+B,MAAM,SAAS,OAAO,cAAc,CAAC,CAAC;AAC9E;AAiBA,MAAM,eAAe,CAAC,WAAgD;AACpE,QAAM,EAAE,IAAI,IAAI,QAAQ,QAAQ,WAAW,YAAY,SAAS,IAAI;AACpE,QAAM,KAAK,KAAK,MAAM,QAAQ,MAAM;AACpC,QAAM,KAAK,YAAY;AACvB,QAAM,gBAAgB,CAAC,KAAK,MAAM,CAAC,QAAQ,MAAM;AAEjD,QAAM,OAAO,iBAAiB,MAAM;AAEpC,MACE,KAAK,IAAI,aAAa,QAAQ,IAAI,QAClC,KAAK,IAAI,aAAa,WAAW,KAAK,KAAK,CAAC,IAAI,MAChD;AAGA,UAAM,UAAU,wBACb,gBAAgB,KAAK,KAAM,GAC9B,IAAI,EAAE,KAAK,EAAE;AAAA,qBACI,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE;AAAA;AAEpD,WAAO,EAAE,MAAM,QAAQ;AAAA,EACzB,OAAO;AACL,UAAM,kBAAc,cAAAC;AAAA,MAClB;AAAA,QACE,GAAG,KAAK,IAAI,UAAU,IAAI;AAAA,QAC1B,GAAG,KAAK,IAAI,UAAU,IAAI;AAAA,MAC5B;AAAA,MACA;AAAA,IACF;AACA,UAAM,aAAa;AAAA,MACjB,GAAG,KAAK,YAAY;AAAA,MACpB,GAAG,KAAK,YAAY;AAAA,IACtB;AACA,UAAM,gBAAY,cAAAA;AAAA,MAChB;AAAA,QACE,GAAG,KAAK,IAAI,QAAQ,IAAI;AAAA,QACxB,GAAG,KAAK,IAAI,QAAQ,IAAI;AAAA,MAC1B;AAAA,MACA;AAAA,IACF;AACA,UAAM,WAAW;AAAA,MACf,GAAG,KAAK,UAAU;AAAA,MAClB,GAAG,KAAK,UAAU;AAAA,IACpB;AACA,UAAM,mBACJ,WAAW,aAAa,WAAW,KAAK,KAAK,IAAI;AACnD,UAAM,eAAe,mBAAmB,aAAa,KAAK,KAAK,IAAI;AACnE,UAAM,IAAI,KAAK,WAAW,CAAC,IAAI,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,IACtD,gBAAgB,KAAK,KAAM,GAC9B,IAAI,YAAY,MAAM,SAAS,CAAC,IAAI,SAAS,CAAC;AAC9C,UAAM,UAAU,YAAY,CAAC;AAC7B,WAAO,EAAE,MAAM,QAAQ;AAAA,EACzB;AACF;AAMA,MAAM,mBAAmB,CAAC,WAAoC;AAC5D,QAAM,EAAE,IAAI,IAAI,QAAQ,QAAQ,UAAU,IAAI;AAC9C,MAAI,EAAE,YAAY,SAAS,IAAI;AAQ/B,SAAO,aAAa,EAAG,eAAc,KAAK,KAAK;AAC/C,SAAO,YAAY,WAAY,aAAY,KAAK,KAAK;AAGrD,QAAM,SAAS,CAAC;AAEhB,MAAI,KAAK,IAAI,MAAM,IAAI,SAAS,KAAK,IAAI,MAAM,IAAI,OAAO;AAExD,aAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,aAAO,KAAM,IAAI,IAAK,KAAK,EAAE;AAAA,IAC/B;AAAA,EACF,OAAO;AAEL,WAAO,CAAC,IAAI,KAAK,KAAM,CAAC,SAAS,YAAa,MAAM,IAAI,KAAK;AAC7D,WAAO,CAAC,IAAI,KAAK,KAAM,SAAS,YAAa,MAAM,IAAI,KAAK;AAC5D,WAAO,CAAC,IAAI,OAAO,CAAC,IAAI,KAAK;AAC7B,WAAO,CAAC,IAAI,OAAO,CAAC,IAAI,KAAK;AAAA,EAC/B;AAGA,WAAS,IAAI,GAAG,KAAK,GAAG,KAAK;AAC3B,WAAO,OAAO,CAAC,IAAI,WAAY,QAAO,CAAC,KAAK,KAAK,KAAK;AACtD,QAAI,OAAO,CAAC,IAAI,UAAU;AACxB,aAAO,OAAO,GAAG,CAAC;AAAA,IACpB;AAAA,EACF;AAGA,SAAO,KAAK,YAAY,QAAQ;AAGhC,QAAM,MAAM,OAAO,IAAI,CAAC,OAAO;AAAA,IAC7B,GAAG,KAAK,IAAI,CAAC;AAAA,IACb,GAAG,KAAK,IAAI,CAAC;AAAA,EACf,EAAE;AAGF,QAAM,IAAI;AAAA,IACR,CAAC,QAAQ,CAAC,SAAS,SAAS;AAAA,IAC5B,CAAC,QAAQ,SAAS,SAAS;AAAA,EAC7B;AAGA,QAAM,aAAa,IAAI,IAAI,CAAC,OAAO;AAAA,IACjC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,IAAI;AAAA,IACnC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,IAAI;AAAA,EACrC,EAAE;AAGF,QAAM,OAAO,WAAW,OAAO,CAAC,KAAK,MAAM;AACzC,QAAI,cAAc,CAAC;AACnB,WAAO;AAAA,EACT,GAAG,IAAI,kBAAK,CAAC;AAEb,SAAO;AACT;AAMA,MAAM,UAAU,CAAC,WAA4C;AAC3D,QAAM,EAAE,MAAM,OAAO,SAAS,SAAS,IAAI,aAAa;AAAA,IACtD,IAAI,OAAO;AAAA,IACX,IAAI,OAAO;AAAA,IACX,QAAQ,OAAO;AAAA,IACf,QAAQ,OAAO;AAAA,IACf,WAAW,OAAO;AAAA,IAClB,YAAY,OAAO;AAAA,IACnB,UAAU,OAAO;AAAA,EACnB,CAAC;AACD,QAAM,EAAE,MAAM,QAAQ,IAAI,qBAAqB,QAAQ;AAAA,IACrD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,CAAC;AACD,aAAO,sCAAAD,SAA+B,MAAM,SAAS,OAAO,cAAc,CAAC,CAAC;AAC9E;AAKA,MAAM,MAAM,CAAC,WAAwC;AACnD,QAAM,EAAE,MAAM,OAAO,SAAS,SAAS,IAAI,aAAa;AAAA,IACtD,IAAI,OAAO;AAAA,IACX,IAAI,OAAO;AAAA,IACX,QAAQ,OAAO;AAAA,IACf,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,YAAY,OAAO;AAAA,IACnB,UAAU,OAAO;AAAA,IACjB,OAAO,OAAO,eAAe;AAAA,EAC/B,CAAC;AACD,QAAM,EAAE,MAAM,QAAQ,IAAI,qBAAqB,QAAQ;AAAA,IACrD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,CAAC;AACD,aAAO,sCAAAA,SAA+B,MAAM,SAAS,OAAO,cAAc,CAAC,CAAC;AAC9E;AAKA,MAAM,OAAO,CAAC,WAAyC;AACrD,QAAM,IAAI,OAAO,KAAK;AACtB,QAAM,IAAI,OAAO,KAAK;AACtB,QAAM,SAAS,OAAO,cAAc;AACpC,QAAM,WAAW,OAAO,YAAY;AACpC,QAAM,UAAU,OAAO,UAAU;AAGjC,QAAM,YAAY,QAAQ,SAAS,SAAS;AAC5C,QAAM,QAAQ,IAAI,kBAAK,EACpB,cAAc,EAAE,GAAG,EAAE,CAAC,EACtB,cAAc,EAAE,GAAG,IAAI,WAAW,GAAG,IAAI,OAAO,CAAC;AAEpD,QAAM,kBAAmB,WAAW,MAAO,KAAK;AAChD,QAAM,WAAW,YAAY,CAAC,QAAQ,CAAC,gBAAgB,MAAM,uBAAuB,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,6BAA6B,KAAK,CAAC,UAAM,qBAAAE,SAAc,OAAO,CAAC;AAE7K,QAAM,EAAE,MAAM,QAAQ,IAAI,qBAAqB,QAAQ;AAAA,IACrD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,CAAC;AACD,aAAO,sCAAAF,SAA+B,MAAM,SAAS,OAAO,cAAc,CAAC,CAAC;AAC9E;AAKA,MAAM,QAAQ,CAAC,WAA0C;AACvD,QAAM,IAAI,OAAO,KAAK;AACtB,QAAM,IAAI,OAAO,KAAK;AACtB,QAAM,SAAS,OAAO,qBAAqB,OAAO,cAAc;AAChE,QAAM,UAAU,OAAO,UAAU;AAGjC,QAAM,YAAa,OAAO,qBAAqB,QAAQ,SAAS,SAAS;AACzE,QAAM,QAAQ,IAAI,kBAAK,EACpB,cAAc,EAAE,GAAG,EAAE,CAAC,EACtB,cAAc,EAAE,GAAG,IAAI,WAAW,GAAG,IAAI,OAAO,CAAC;AAGpD,QAAM,WAAW,OAAO,WAAW,UAAa,OAAO,WAAW,SAC9D,KAAK,MAAM,OAAO,QAAQ,OAAO,MAAM,IACvC;AACJ,QAAM,kBAAmB,WAAW,MAAO,KAAK;AAChD,QAAM,WAAW,YAAY,CAAC,QAAQ,CAAC,gBAAgB,MAAM,uBAAuB,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,6BAA6B,KAAK,CAAC,UAAM,qBAAAE,SAAc,OAAO,CAAC;AAE7K,QAAM,EAAE,MAAM,QAAQ,IAAI,qBAAqB,QAAQ;AAAA,IACrD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,CAAC;AACD,aAAO,sCAAAF,SAA+B,MAAM,SAAS,OAAO,cAAc,CAAC,CAAC;AAC9E;AAMA,MAAM,YAAY,CAAC,WAA8C;AAC/D,QAAM,IAAI,OAAO,gBAAgB,KAAK;AACtC,QAAM,IAAI,OAAO,gBAAgB,KAAK;AACtC,QAAM,SAAS;AACf,QAAM,UAAU,OAAO,QAAQ;AAE/B,QAAM,WAAW,OAAO,iBACpB,KAAK,MAAM,OAAO,eAAe,GAAG,OAAO,eAAe,CAAC,IAC3D;AACJ,QAAM,kBAAmB,WAAW,MAAO,KAAK;AAEhD,QAAM,YAAY,QAAQ,SAAS,SAAS;AAC5C,QAAM,QAAQ,IAAI,kBAAK,EACpB,cAAc,EAAE,GAAG,EAAE,CAAC,EACtB,cAAc,EAAE,GAAG,IAAI,WAAW,GAAG,IAAI,OAAO,CAAC;AAEpD,QAAM,WAAW,YAAY,CAAC,QAAQ,CAAC,gBAAgB,MAAM,uBAAuB,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,6BAA6B,KAAK,CAAC,UAAM,qBAAAE,SAAc,OAAO,CAAC;AAE7K,QAAM,EAAE,MAAM,QAAQ,IAAI,qBAAqB,QAAQ;AAAA,IACrD,MAAM;AAAA,IACN,SAAS;AAAA,EACX,CAAC;AACD,aAAO,sCAAAF,SAA+B,MAAM,SAAS,OAAO,cAAc,CAAC,CAAC;AAC9E;AAKA,MAAM,YAAY,CAChB,QACA,UACA,SACA,aACqB;AACrB,QAAM,aAAS,sBAAAG,SAAe,QAAQ,UAAU,SAAS,QAAQ;AACjE,aAAO,sCAAAH;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO,cAAc,CAAC;AAAA,EACxB;AACF;AAEO,MAAM,mBAAmB,CAC9B,GACA,OACA,kBACa;AACb,QAAM,QAAkB,CAAC;AACzB,MAAI,oBAAoB;AACxB,MAAI,YAAY;AAChB,SAAO,YAAY,MAAM,SAAS,IAAI,GAAG;AACvC,UAAM,QAAI,uCAAa,OAAO,SAAS;AACvC,UAAM,KAAK,cAAc,MAAM,mBAAmB,oBAAoB,CAAC;AACvE,QAAI,MAAM,GAAG;AACX,YAAM;AAAA,QACJ,cAAc,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;AAAA,MACtG;AAAA,IACF,WAAW,MAAM,GAAG;AAClB,YAAM;AAAA,QACJ,cAAc,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;AAAA,MAChF;AAAA,IACF;AACA,yBAAqB;AACrB,iBAAa;AAAA,EACf;AACA,SAAO;AACT;AAEA,MAAM,SAAS,CAAC,WAA2C;AACzD,MAAI,OAAO,IAAI,kBAAK;AACpB,aAAW,KAAK,OAAO,eAAe;AACpC,WAAO,KAAK,cAAc,CAAC;AAAA,EAC7B;AACA,QAAM,IAAI,OAAO,SAAS;AAC1B,QAAM,gBAAY,yBAAAI,SAAkB,GAAG,OAAO,eAAe,OAAO,KAAK;AACzE,QAAM,QAAQ,iBAAiB,GAAG,UAAU,OAAO,UAAU,aAAa;AAC1E,QAAM,UAAU,MAAM,MAAM,KAAK,EAAE,CAAC;AACpC,aAAO,sCAAAJ,SAA+B,MAAM,SAAS,OAAO,cAAc,CAAC,CAAC;AAC9E;AAMA,MAAM,2BAA2B,CAC/B,QACA,WACA,SACA,aAC4B;AAC5B,UAAQ,OAAO,MAAM;AAAA,IACnB,KAAK;AACH,aAAO,OAAO,MAAsB;AAAA,IACtC,KAAK;AACH,aAAO,QAAQ,MAAuB;AAAA,IACxC,KAAK;AACH,aAAO,IAAI,MAAmB;AAAA,IAChC,KAAK;AACH,aAAO,KAAK,MAAoB;AAAA,IAClC,KAAK;AACH,aAAO,MAAM,MAAqB;AAAA,IACpC,KAAK,aAAa;AAChB,YAAM,YAAY;AAClB,YAAM,YAAY,OAAO,UAAU,cAAc,WAC7C,UAAU,YACV;AACJ,YAAM,WAAW,aAAa,YAC1B,UAAU,SAAS,IACnB;AACJ,aAAO,UAAU,WAAW,UAAU,SAAS,QAAQ;AAAA,IACzD;AAAA,IACA,KAAK,UAAU;AACb,YAAM,eAAe;AACrB,YAAM,aAAa,aAAa,SAAS,KAAK,CAAC,MAAc,MAAM,CAAC;AACpE,WAAK,aAAa,WAAW,KAAK,aAAa,WAAW,MAAM,CAAC,YAAY;AAC3E,YAAI;AACF,iBAAO,OAAO,YAAY;AAAA,QAC5B,SAAS,KAAK;AACZ,gBAAM,QAAQ;AACd,wBAAAK,QAAO,KAAK,6CAA6C,MAAM,OAAO;AACtE,iBAAO,SAAS,MAAM;AAAA,QACxB;AAAA,MACF,OAAO;AACL,eAAO,SAAS,MAAM;AAAA,MACxB;AAAA,IACF;AAAA,IACA,KAAK;AAAA,IACL,KAAK,YAAY;AACf,aAAO,SAAS,MAAM;AAAA,IACxB;AAAA,IACA,KAAK,cAAc;AACjB,aAAO,WAAW,MAAM;AAAA,IAC1B;AAAA,IACA,KAAK,UAAU;AACb,aAAO,OAAO,MAAsB;AAAA,IACtC;AAAA,IACA,KAAK,aAAa;AAChB,aAAO,UAAU,MAAyB;AAAA,IAC5C;AAAA,IACA;AACE,oBAAAA,QAAO,KAAK,+CAA+C,OAAO,IAAI;AACtE,aAAO;AAAA,EACX;AACF;AAEe,SAAR,MAAuB,QAAmB,UAAwB,CAAC,GAAW;AACnF,QAAM,eAAW,mBAAAC,SAAY,MAAM;AACnC,QAAM,YAAY,OAAO,OAAO;AAEhC,QAAM,eAAe,SAAS,OAAO,CAAC,KAAW,WAAyB;AACxE,QAAI,OAAO,SAAS,aAAa;AAC/B,YAAMC,YAAO,gDAAyB,MAAyB;AAC/D,UAAIA,MAAK,OAAO;AACd,YAAI,cAAcA,MAAK,GAAG;AAC1B,YAAI,cAAcA,MAAK,GAAG;AAAA,MAC5B;AACA,aAAO;AAAA,IACT;AAEA,UAAM,mBAAmB,yBAAyB,QAAQ,WAAW,OAAO;AAC5E,QAAI,kBAAkB,KAAK,OAAO;AAChC,UAAI,cAAc,iBAAiB,KAAK,GAAG;AAC3C,UAAI,cAAc,iBAAiB,KAAK,GAAG;AAAA,IAC7C;AACA,WAAO;AAAA,EACT,GAAG,IAAI,kBAAK,CAAC;AAEb,QAAM,WAAW,aAAa,QAC1B;AAAA,IACE,OAAO,aAAa,IAAI,IAAI,aAAa,IAAI;AAAA,IAC7C,QAAQ,aAAa,IAAI,IAAI,aAAa,IAAI;AAAA,EAChD,IACA;AAAA,IACE,OAAO;AAAA,IACP,QAAQ;AAAA,EACV;AAEJ,QAAM,EAAE,MAAM,SAAS,IAAI,SAAS;AAAA,IAClC,CACE,KACA,WACuC;AACvC,YAAM,UAAM,uBAAAC,SAAgB,OAAO,OAAO,QAAQ,MAAM;AACxD,YAAM,mBAAmB,yBAAyB,QAAQ,WAAW,SAAS,QAAQ;AAEtF,UAAI,kBAAkB;AACpB,cAAM,EAAE,MAAAD,OAAM,QAAQ,IAAI;AAE1B,YAAIA,MAAK,OAAO;AACd,cAAI,KAAK,cAAcA,MAAK,GAAG;AAC/B,cAAI,KAAK,cAAcA,MAAK,GAAG;AAAA,QACjC;AACA,YAAI,SAAS;AAAA,UACX,kBAAc,2BAAAE,SAAoB,GAAG,CAAC,KAAK,OAAO;AAAA,QACpD;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAM,IAAI,kBAAK;AAAA,MACf,UAAU,CAAC;AAAA,IACb;AAAA,EACF;AAEA,QAAM,UAAU,KAAK,QACjB;AAAA,IACE,GAAG,KAAK,IAAI;AAAA,IACZ,GAAG,CAAC,KAAK,IAAI;AAAA,IACb,OAAO,KAAK,IAAI,IAAI,KAAK,IAAI;AAAA,IAC7B,QAAQ,KAAK,IAAI,IAAI,KAAK,IAAI;AAAA,EAChC,IACA;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,OAAO;AAAA,IACP,QAAQ;AAAA,EACV;AACJ,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA,aAKI,QAAQ,CAAC,IAAI,QAAQ,CAAC,IAAI,QAAQ,KAAK,IAAI,QAAQ,MAAM;AAAA;AAAA;AAAA;AAAA,MAIhE,SAAS,KAAK,IAAI,CAAC;AAAA;AAAA;AAGzB;",
|
|
4
|
+
"sourcesContent": ["import { Box2 } from 'vecks'\n\nimport denormalise from './denormalise'\nimport dimensionToSVG, { getDimensionGeometryBBox } from './dimensionToSVG'\nimport entityToPolyline from './entityToPolyline'\nimport getRGBForEntity from './getRGBForEntity'\nimport escapeXmlText from './util/escapeXmlText'\nimport logger from './util/logger'\nimport rgbToColorAttribute from './util/rgbToColorAttribute'\nimport rotate from './util/rotate'\nimport toPiecewiseBezier, { multiplicity } from './util/toPiecewiseBezier'\nimport transformBoundingBoxAndElement from './util/transformBoundingBoxAndElement'\n\nimport type {\n ArcEntity,\n CircleEntity,\n DimensionEntity,\n EllipseEntity,\n Entity,\n LeaderEntity,\n MTextEntity,\n ParsedDXF,\n ShapeEntity,\n SplineEntity,\n TextEntity,\n ToleranceEntity,\n ToSVGOptions,\n} from './types'\nimport type { BoundsAndElement } from './types/svg'\n\nconst addFlipXIfApplicable = (\n entity: Entity,\n { bbox, element }: BoundsAndElement,\n): BoundsAndElement => {\n if (entity.extrusionZ === -1) {\n return {\n bbox: new Box2()\n .expandByPoint({ x: -bbox.min.x, y: bbox.min.y })\n .expandByPoint({ x: -bbox.max.x, y: bbox.max.y }),\n element: `<g transform=\"matrix(-1 0 0 1 0 0)\">\n ${element}\n </g>`,\n }\n } else {\n return { bbox, element }\n }\n}\n\n/**\n * Create a <path /> element. Interpolates curved entities.\n */\nconst polyline = (entity: Entity): BoundsAndElement => {\n const vertices = entityToPolyline(entity as any)\n const bbox = vertices.reduce(\n (acc, [x, y]) => acc.expandByPoint({ x, y }),\n new Box2(),\n )\n const d = vertices.reduce((acc, point, i) => {\n acc += i === 0 ? 'M' : 'L'\n acc += point[0] + ',' + point[1]\n return acc\n }, '')\n // Empirically it appears that flipping horizontally does not apply to polyline\n return transformBoundingBoxAndElement(\n bbox,\n `<path d=\"${d}\" />`,\n entity.transforms ?? [],\n )\n}\n\n/**\n * Create a <path /> element. Interpolates curved entities.\n * lwpolyline is the same as polyline but addFlipXIfApplicable does apply\n */\nconst lwpolyline = (entity: Entity): BoundsAndElement => {\n const vertices = entityToPolyline(entity as any)\n const bbox0 = vertices.reduce(\n (acc, [x, y]) => acc.expandByPoint({ x, y }),\n new Box2(),\n )\n const d = vertices.reduce((acc, point, i) => {\n acc += i === 0 ? 'M' : 'L'\n acc += point[0] + ',' + point[1]\n return acc\n }, '')\n const element0 = `<path d=\"${d}\" />`\n const { bbox, element } = addFlipXIfApplicable(entity, {\n bbox: bbox0,\n element: element0,\n })\n return transformBoundingBoxAndElement(\n bbox,\n element,\n entity.transforms ?? [],\n )\n}\n\nconst leader = (entity: LeaderEntity): BoundsAndElement | null => {\n if (!entity.vertices || entity.vertices.length < 2) return null\n\n const bbox0 = entity.vertices.reduce(\n (acc, p) => acc.expandByPoint({ x: p.x, y: p.y }),\n new Box2(),\n )\n const d = entity.vertices.reduce((acc, p, i) => {\n acc += i === 0 ? 'M' : 'L'\n acc += p.x + ',' + p.y\n return acc\n }, '')\n\n return transformBoundingBoxAndElement(\n bbox0,\n `<path d=\"${d}\" />`,\n entity.transforms ?? [],\n )\n}\n\n\n/**\n * Create a <circle /> element for the CIRCLE entity.\n */\nconst circle = (entity: CircleEntity): BoundsAndElement => {\n const bbox0 = new Box2()\n .expandByPoint({\n x: entity.x + entity.r,\n y: entity.y + entity.r,\n })\n .expandByPoint({\n x: entity.x - entity.r,\n y: entity.y - entity.r,\n })\n const element0 = `<circle cx=\"${entity.x}\" cy=\"${entity.y}\" r=\"${entity.r}\" />`\n const { bbox, element } = addFlipXIfApplicable(entity, {\n bbox: bbox0,\n element: element0,\n })\n return transformBoundingBoxAndElement(bbox, element, entity.transforms ?? [])\n}\n\ninterface EllipticArcParams {\n cx: number\n cy: number\n majorX: number\n majorY: number\n axisRatio: number\n startAngle: number\n endAngle: number\n flipX?: boolean\n}\n\n/**\n * Create a a <path d=\"A...\" /> or <ellipse /> element for the ARC or ELLIPSE\n * DXF entity (<ellipse /> if start and end point are the same).\n */\nconst ellipseOrArc = (params: EllipticArcParams): BoundsAndElement => {\n const { cx, cy, majorX, majorY, axisRatio, startAngle, endAngle } = params\n const rx = Math.hypot(majorX, majorY)\n const ry = axisRatio * rx\n const rotationAngle = -Math.atan2(-majorY, majorX)\n\n const bbox = bboxEllipseOrArc(params)\n\n if (\n Math.abs(startAngle - endAngle) < 1e-9 ||\n Math.abs(startAngle - endAngle + Math.PI * 2) < 1e-9\n ) {\n // Use a native <ellipse> when start and end angles are the same, and\n // arc paths with same start and end points don't render (at least on Safari)\n const element = `<g transform=\"rotate(${\n (rotationAngle / Math.PI) * 180\n } ${cx}, ${cy})\">\n <ellipse cx=\"${cx}\" cy=\"${cy}\" rx=\"${rx}\" ry=\"${ry}\" />\n </g>`\n return { bbox, element }\n } else {\n const startOffset = rotate(\n {\n x: Math.cos(startAngle) * rx,\n y: Math.sin(startAngle) * ry,\n },\n rotationAngle,\n )\n const startPoint = {\n x: cx + startOffset.x,\n y: cy + startOffset.y,\n }\n const endOffset = rotate(\n {\n x: Math.cos(endAngle) * rx,\n y: Math.sin(endAngle) * ry,\n },\n rotationAngle,\n )\n const endPoint = {\n x: cx + endOffset.x,\n y: cy + endOffset.y,\n }\n const adjustedEndAngle =\n endAngle < startAngle ? endAngle + Math.PI * 2 : endAngle\n const largeArcFlag = adjustedEndAngle - startAngle < Math.PI ? 0 : 1\n const d = `M ${startPoint.x} ${startPoint.y} A ${rx} ${ry} ${\n (rotationAngle / Math.PI) * 180\n } ${largeArcFlag} 1 ${endPoint.x} ${endPoint.y}`\n const element = `<path d=\"${d}\" />`\n return { bbox, element }\n }\n}\n\n/**\n * Compute the bounding box of an elliptical arc, given the DXF entity parameters\n */\n\nconst bboxEllipseOrArc = (params: EllipticArcParams): Box2 => {\n const { cx, cy, majorX, majorY, axisRatio } = params\n let { startAngle, endAngle } = params\n\n // The bounding box will be defined by the starting point of the ellipse, and ending point,\n // and any extrema on the ellipse that are between startAngle and endAngle.\n // The extrema are found by setting either the x or y component of the ellipse's\n // tangent vector to zero and solving for the angle.\n\n // Ensure start and end angles are > 0 and well-ordered\n while (startAngle < 0) startAngle += Math.PI * 2\n while (endAngle <= startAngle) endAngle += Math.PI * 2\n\n // When rotated, the extrema of the ellipse will be found at these angles\n const angles = []\n\n if (Math.abs(majorX) < 1e-12 || Math.abs(majorY) < 1e-12) {\n // Special case for majorX or majorY = 0\n for (let i = 0; i < 4; i++) {\n angles.push((i / 2) * Math.PI)\n }\n } else {\n // reference https://github.com/bjnortier/dxf/issues/47#issuecomment-545915042\n angles[0] = Math.atan((-majorY * axisRatio) / majorX) - Math.PI // Ensure angles < 0\n angles[1] = Math.atan((majorX * axisRatio) / majorY) - Math.PI\n angles[2] = angles[0] - Math.PI\n angles[3] = angles[1] - Math.PI\n }\n\n // Remove angles not falling between start and end\n for (let i = 4; i >= 0; i--) {\n while (angles[i] < startAngle) angles[i] += Math.PI * 2\n if (angles[i] > endAngle) {\n angles.splice(i, 1)\n }\n }\n\n // Also to consider are the starting and ending points:\n angles.push(startAngle, endAngle)\n\n // Compute points lying on the unit circle at these angles\n const pts = angles.map((a) => ({\n x: Math.cos(a),\n y: Math.sin(a),\n }))\n\n // Transformation matrix, formed by the major and minor axes\n const M = [\n [majorX, -majorY * axisRatio],\n [majorY, majorX * axisRatio],\n ]\n\n // Rotate, scale, and translate points\n const rotatedPts = pts.map((p) => ({\n x: p.x * M[0][0] + p.y * M[0][1] + cx,\n y: p.x * M[1][0] + p.y * M[1][1] + cy,\n }))\n\n // Compute extents of bounding box\n const bbox = rotatedPts.reduce((acc, p) => {\n acc.expandByPoint(p)\n return acc\n }, new Box2())\n\n return bbox\n}\n\n/**\n * An ELLIPSE is defined by the major axis, convert to X and Y radius with\n * a rotation angle\n */\nconst ellipse = (entity: EllipseEntity): BoundsAndElement => {\n const { bbox: bbox0, element: element0 } = ellipseOrArc({\n cx: entity.x,\n cy: entity.y,\n majorX: entity.majorX,\n majorY: entity.majorY,\n axisRatio: entity.axisRatio,\n startAngle: entity.startAngle,\n endAngle: entity.endAngle,\n })\n const { bbox, element } = addFlipXIfApplicable(entity, {\n bbox: bbox0,\n element: element0,\n })\n return transformBoundingBoxAndElement(bbox, element, entity.transforms ?? [])\n}\n\n/**\n * An ARC is an ellipse with equal radii\n */\nconst arc = (entity: ArcEntity): BoundsAndElement => {\n const { bbox: bbox0, element: element0 } = ellipseOrArc({\n cx: entity.x,\n cy: entity.y,\n majorX: entity.r,\n majorY: 0,\n axisRatio: 1,\n startAngle: entity.startAngle,\n endAngle: entity.endAngle,\n flipX: entity.extrusionZ === -1,\n })\n const { bbox, element } = addFlipXIfApplicable(entity, {\n bbox: bbox0,\n element: element0,\n })\n return transformBoundingBoxAndElement(bbox, element, entity.transforms ?? [])\n}\n\n/**\n * Create a <text /> element for TEXT entity\n */\nconst text = (entity: TextEntity): BoundsAndElement => {\n const x = entity.x ?? 0\n const y = entity.y ?? 0\n const height = entity.textHeight ?? 1\n const rotation = entity.rotation ?? 0\n const content = entity.string ?? ''\n\n // Estimate text bounding box (approximate)\n const textWidth = content.length * height * 0.6\n const bbox0 = new Box2()\n .expandByPoint({ x, y })\n .expandByPoint({ x: x + textWidth, y: y + height })\n\n const rotationDegrees = (rotation * 180) / Math.PI\n const element0 = `<text x=\"${x}\" y=\"${y}\" font-size=\"${height}\" transform=\"rotate(${-rotationDegrees} ${x} ${y}) scale(1,-1) translate(0 ${-2 * y})\">${escapeXmlText(content)}</text>`\n\n const { bbox, element } = addFlipXIfApplicable(entity, {\n bbox: bbox0,\n element: element0,\n })\n return transformBoundingBoxAndElement(bbox, element, entity.transforms ?? [])\n}\n\n/**\n * Create a <text /> element for MTEXT entity\n */\nconst mtext = (entity: MTextEntity): BoundsAndElement => {\n const x = entity.x ?? 0\n const y = entity.y ?? 0\n const height = entity.nominalTextHeight ?? entity.textHeight ?? 1\n const content = entity.string ?? ''\n\n // Estimate text bounding box (approximate)\n const textWidth = (entity.refRectangleWidth ?? content.length * height * 0.6)\n const bbox0 = new Box2()\n .expandByPoint({ x, y })\n .expandByPoint({ x: x + textWidth, y: y + height })\n\n // Calculate rotation from x-axis direction\n const rotation = entity.xAxisX !== undefined && entity.xAxisY !== undefined\n ? Math.atan2(entity.xAxisY, entity.xAxisX)\n : 0\n const rotationDegrees = (rotation * 180) / Math.PI\n const element0 = `<text x=\"${x}\" y=\"${y}\" font-size=\"${height}\" transform=\"rotate(${-rotationDegrees} ${x} ${y}) scale(1,-1) translate(0 ${-2 * y})\">${escapeXmlText(content)}</text>`\n\n const { bbox, element } = addFlipXIfApplicable(entity, {\n bbox: bbox0,\n element: element0,\n })\n return transformBoundingBoxAndElement(bbox, element, entity.transforms ?? [])\n}\n\n/**\n * Minimal <text /> fallback for TOLERANCE entities.\n * DXF uses special control codes; we preserve the raw string.\n */\nconst tolerance = (entity: ToleranceEntity): BoundsAndElement => {\n const x = entity.insertionPoint?.x ?? 0\n const y = entity.insertionPoint?.y ?? 0\n const height = 1\n const content = entity.text ?? ''\n\n const rotation = entity.xAxisDirection\n ? Math.atan2(entity.xAxisDirection.y, entity.xAxisDirection.x)\n : 0\n const rotationDegrees = (rotation * 180) / Math.PI\n\n const textWidth = content.length * height * 0.6\n const bbox0 = new Box2()\n .expandByPoint({ x, y })\n .expandByPoint({ x: x + textWidth, y: y + height })\n\n const element0 = `<text x=\"${x}\" y=\"${y}\" font-size=\"${height}\" transform=\"rotate(${-rotationDegrees} ${x} ${y}) scale(1,-1) translate(0 ${-2 * y})\">${escapeXmlText(content)}</text>`\n\n const { bbox, element } = addFlipXIfApplicable(entity, {\n bbox: bbox0,\n element: element0,\n })\n return transformBoundingBoxAndElement(bbox, element, entity.transforms ?? [])\n}\n\n/**\n * Minimal <text /> fallback for SHAPE entities.\n * Rendering SHX-based shapes is out of scope; we render the name as text.\n */\nconst shape = (entity: ShapeEntity): BoundsAndElement => {\n const x = entity.insertionPoint?.x ?? 0\n const y = entity.insertionPoint?.y ?? 0\n const height = entity.size ?? 1\n const rotation = entity.rotation ?? 0\n const content = entity.name ?? ''\n\n const textWidth = content.length * height * 0.6\n const bbox0 = new Box2()\n .expandByPoint({ x, y })\n .expandByPoint({ x: x + textWidth, y: y + height })\n\n const rotationDegrees = (rotation * 180) / Math.PI\n const element0 = `<text x=\"${x}\" y=\"${y}\" font-size=\"${height}\" transform=\"rotate(${-rotationDegrees} ${x} ${y}) scale(1,-1) translate(0 ${-2 * y})\">${escapeXmlText(content)}</text>`\n\n const { bbox, element } = addFlipXIfApplicable(entity, {\n bbox: bbox0,\n element: element0,\n })\n return transformBoundingBoxAndElement(bbox, element, entity.transforms ?? [])\n}\n\n/**\n * Create dimension visualization with DIMSTYLE support\n */\nconst dimension = (\n entity: DimensionEntity,\n dimStyle?: any,\n options?: ToSVGOptions,\n viewport?: { width: number; height: number },\n): BoundsAndElement => {\n const result = dimensionToSVG(entity, dimStyle, options, viewport)\n return transformBoundingBoxAndElement(\n result.bbox,\n result.element,\n entity.transforms ?? [],\n )\n}\n\nexport const piecewiseToPaths = (\n k: number,\n knots: number[],\n controlPoints: Array<{ x: number; y: number }>,\n): string[] => {\n const paths: string[] = []\n let controlPointIndex = 0\n let knotIndex = k\n while (knotIndex < knots.length - k + 1) {\n const m = multiplicity(knots, knotIndex)\n const cp = controlPoints.slice(controlPointIndex, controlPointIndex + k)\n if (k === 4) {\n paths.push(\n `<path d=\"M ${cp[0].x} ${cp[0].y} C ${cp[1].x} ${cp[1].y} ${cp[2].x} ${cp[2].y} ${cp[3].x} ${cp[3].y}\" />`,\n )\n } else if (k === 3) {\n paths.push(\n `<path d=\"M ${cp[0].x} ${cp[0].y} Q ${cp[1].x} ${cp[1].y} ${cp[2].x} ${cp[2].y}\" />`,\n )\n }\n controlPointIndex += m\n knotIndex += m\n }\n return paths\n}\n\nconst bezier = (entity: SplineEntity): BoundsAndElement => {\n let bbox = new Box2()\n for (const p of entity.controlPoints) {\n bbox = bbox.expandByPoint(p)\n }\n const k = entity.degree + 1\n const piecewise = toPiecewiseBezier(k, entity.controlPoints, entity.knots)\n const paths = piecewiseToPaths(k, piecewise.knots, piecewise.controlPoints)\n const element = `<g>${paths.join('')}</g>`\n return transformBoundingBoxAndElement(bbox, element, entity.transforms ?? [])\n}\n\n/**\n * Switch the appropriate function on entity type. CIRCLE, ARC and ELLIPSE\n * produce native SVG elements, the rest produce interpolated polylines.\n */\nconst entityToBoundsAndElement = (\n entity: Entity,\n dimStyles?: { [name: string]: any },\n options?: ToSVGOptions,\n viewport?: { width: number; height: number },\n): BoundsAndElement | null => {\n switch (entity.type) {\n case 'CIRCLE':\n return circle(entity as CircleEntity)\n case 'ELLIPSE':\n return ellipse(entity as EllipseEntity)\n case 'ARC':\n return arc(entity as ArcEntity)\n case 'TEXT':\n return text(entity as TextEntity)\n case 'MTEXT':\n return mtext(entity as MTextEntity)\n case 'DIMENSION': {\n const dimEntity = entity as DimensionEntity\n const styleName = typeof dimEntity.styleName === 'string'\n ? dimEntity.styleName\n : undefined\n const dimStyle = styleName && dimStyles\n ? dimStyles[styleName]\n : undefined\n return dimension(dimEntity, dimStyle, options, viewport)\n }\n case 'SPLINE': {\n const splineEntity = entity as SplineEntity\n const hasWeights = splineEntity.weights?.some((w: number) => w !== 1)\n if ((splineEntity.degree === 2 || splineEntity.degree === 3) && !hasWeights) {\n try {\n return bezier(splineEntity)\n } catch (err) {\n const error = err as Error\n logger.warn('bezier conversion failed, using polyline:', error.message)\n return polyline(entity)\n }\n } else {\n return polyline(entity)\n }\n }\n case 'LINE':\n case 'RAY':\n case 'XLINE':\n case 'POLYLINE': {\n return polyline(entity)\n }\n case 'SOLID':\n case 'TRACE': {\n return polyline(entity)\n }\n case 'LWPOLYLINE': {\n return lwpolyline(entity)\n }\n case 'WIPEOUT': {\n return polyline(entity)\n }\n case 'LEADER': {\n return leader(entity as LeaderEntity)\n }\n case 'TOLERANCE': {\n return tolerance(entity as ToleranceEntity)\n }\n case 'SHAPE': {\n return shape(entity as ShapeEntity)\n }\n default:\n logger.warn('entity type not supported in SVG rendering:', entity.type)\n return null\n }\n}\n\nexport default function toSVG(parsed: ParsedDXF, options: ToSVGOptions = {}): string {\n const entities = denormalise(parsed)\n const dimStyles = parsed.tables.dimStyles\n\n const geometryBBox = entities.reduce((acc: Box2, entity: Entity): Box2 => {\n if (entity.type === 'DIMENSION') {\n const bbox = getDimensionGeometryBBox(entity as DimensionEntity)\n if (bbox.valid) {\n acc.expandByPoint(bbox.min)\n acc.expandByPoint(bbox.max)\n }\n return acc\n }\n\n const boundsAndElement = entityToBoundsAndElement(entity, dimStyles, options)\n if (boundsAndElement?.bbox.valid) {\n acc.expandByPoint(boundsAndElement.bbox.min)\n acc.expandByPoint(boundsAndElement.bbox.max)\n }\n return acc\n }, new Box2())\n\n const viewport = geometryBBox.valid\n ? {\n width: geometryBBox.max.x - geometryBBox.min.x,\n height: geometryBBox.max.y - geometryBBox.min.y,\n }\n : {\n width: 0,\n height: 0,\n }\n\n const { bbox, elements } = entities.reduce(\n (\n acc: { bbox: Box2; elements: string[] },\n entity: Entity,\n ): { bbox: Box2; elements: string[] } => {\n const rgb = getRGBForEntity(parsed.tables.layers, entity)\n const boundsAndElement = entityToBoundsAndElement(entity, dimStyles, options, viewport)\n // Ignore entities that don't produce SVG elements or have unsupported types\n if (boundsAndElement) {\n const { bbox, element } = boundsAndElement\n // Ignore invalid bounding boxes\n if (bbox.valid) {\n acc.bbox.expandByPoint(bbox.min)\n acc.bbox.expandByPoint(bbox.max)\n }\n const color = rgbToColorAttribute(rgb)\n if (entity.type === 'SOLID' || entity.type === 'TRACE') {\n acc.elements.push(`<g fill=\"${color}\" stroke=\"none\">${element}</g>`)\n } else {\n acc.elements.push(`<g stroke=\"${color}\">${element}</g>`)\n }\n }\n return acc\n },\n {\n bbox: new Box2(),\n elements: [],\n },\n )\n\n const viewBox = bbox.valid\n ? {\n x: bbox.min.x,\n y: -bbox.max.y,\n width: bbox.max.x - bbox.min.x,\n height: bbox.max.y - bbox.min.y,\n }\n : {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n }\n return `<?xml version=\"1.0\"?>\n<svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\"\n preserveAspectRatio=\"xMinYMin meet\"\n viewBox=\"${viewBox.x} ${viewBox.y} ${viewBox.width} ${viewBox.height}\"\n width=\"100%\" height=\"100%\"\n>\n <g stroke=\"#000000\" stroke-width=\"0.1%\" fill=\"none\" transform=\"matrix(1,0,0,-1,0,0)\">\n ${elements.join('\\n')}\n </g>\n</svg>`\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["entityToPolyline", "transformBoundingBoxAndElement", "rotate", "escapeXmlText", "dimensionToSVG", "toPiecewiseBezier", "logger", "denormalise", "bbox", "getRGBForEntity", "rgbToColorAttribute"]
|
|
7
7
|
}
|
package/lib/toSVG.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ParsedDXF, ToSVGOptions } from './types';
|
|
2
|
+
export declare const piecewiseToPaths: (k: number, knots: number[], controlPoints: Array<{
|
|
3
|
+
x: number;
|
|
4
|
+
y: number;
|
|
5
|
+
}>) => string[];
|
|
6
|
+
export default function toSVG(parsed: ParsedDXF, options?: ToSVGOptions): string;
|
|
7
|
+
//# sourceMappingURL=toSVG.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toSVG.d.ts","sourceRoot":"","sources":["../src/toSVG.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAQV,SAAS,EAKT,YAAY,EACb,MAAM,SAAS,CAAA;AAqahB,eAAO,MAAM,gBAAgB,GAC3B,GAAG,MAAM,EACT,OAAO,MAAM,EAAE,EACf,eAAe,KAAK,CAAC;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,KAC7C,MAAM,EAoBR,CAAA;AA2FD,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,GAAE,YAAiB,GAAG,MAAM,CAuFnF"}
|