@peter.prib/renderengine 0.0.0-stage → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +203 -2
- package/REFERENCE.md +2198 -0
- package/dist/renderengine-workspace.umd.js +46905 -0
- package/dist/renderengine.umd.js +42223 -0
- package/examples/archimate.html +66 -0
- package/examples/diagram-editor.html +51 -0
- package/package.json +65 -4
- package/src/BaseRenderer.js +57 -0
- package/src/CanvasRenderer.js +194 -0
- package/src/Mat4.js +111 -0
- package/src/OrbitCamera.js +57 -0
- package/src/RendererFactory.js +50 -0
- package/src/SVGRenderer.js +439 -0
- package/src/archimate.js +723 -0
- package/src/archimateArchiFormat.js +1693 -0
- package/src/archimateArchiTypes.js +72 -0
- package/src/archimateArchive.js +140 -0
- package/src/archimateCSV.js +127 -0
- package/src/archimateDrawio.js +182 -0
- package/src/archimateExchangeFormat.js +546 -0
- package/src/archimateRelationshipTable.js +93 -0
- package/src/archimateSpecializations.js +161 -0
- package/src/chartCatalog.js +589 -0
- package/src/charting/ArchimateDiagramEditor.js +1624 -0
- package/src/charting/ArchimateSpecializationSelector.js +134 -0
- package/src/charting/Axis.js +68 -0
- package/src/charting/CameraSeeder.js +30 -0
- package/src/charting/CatalogDialog.js +92 -0
- package/src/charting/Chart.js +37 -0
- package/src/charting/Chart3D.js +99 -0
- package/src/charting/ChartBox.js +80 -0
- package/src/charting/ChartData.js +27 -0
- package/src/charting/ChartRegistry.js +76 -0
- package/src/charting/CheckboxTreeSelector.js +304 -0
- package/src/charting/ColorField.js +107 -0
- package/src/charting/ColorPalette.js +88 -0
- package/src/charting/CommandHistory.js +176 -0
- package/src/charting/DataFilter.js +52 -0
- package/src/charting/Diagram.js +36 -0
- package/src/charting/Diagram3D.js +29 -0
- package/src/charting/DiagramClipboard.js +31 -0
- package/src/charting/DiagramEditor.js +3330 -0
- package/src/charting/DiagramEditorCommand.js +110 -0
- package/src/charting/DiagramEditorCommands.js +237 -0
- package/src/charting/DiagramEditorEdgeCommands.js +142 -0
- package/src/charting/DiagramEditorState.js +98 -0
- package/src/charting/DiagramRegistry.js +86 -0
- package/src/charting/DiagramTypeRegistry.js +326 -0
- package/src/charting/DiagramViewPropertiesDialog.js +46 -0
- package/src/charting/Edge.js +113 -0
- package/src/charting/ErrorBars.js +37 -0
- package/src/charting/FilterSystem.js +285 -0
- package/src/charting/FindReplaceDialog.js +139 -0
- package/src/charting/FormDialog.js +385 -0
- package/src/charting/Gauge.js +58 -0
- package/src/charting/Hierarchy.js +175 -0
- package/src/charting/HintPanel.js +86 -0
- package/src/charting/ImageSelector.js +148 -0
- package/src/charting/InteractionManager.js +725 -0
- package/src/charting/Legend.js +58 -0
- package/src/charting/MenuBar.js +62 -0
- package/src/charting/ModelFileFormat.js +115 -0
- package/src/charting/OrbitControls.js +77 -0
- package/src/charting/Palette.js +119 -0
- package/src/charting/PopupMenu.js +117 -0
- package/src/charting/PropertiesPanel.js +155 -0
- package/src/charting/PropertyListEditor.js +96 -0
- package/src/charting/PropertyLog.js +92 -0
- package/src/charting/SettingsCascade.js +93 -0
- package/src/charting/SettingsDialog.js +53 -0
- package/src/charting/SettingsManager.js +179 -0
- package/src/charting/SettingsViewPropertiesDialog.js +58 -0
- package/src/charting/ShapePaths.js +27 -0
- package/src/charting/Statistics.js +134 -0
- package/src/charting/TemplateCatalog.js +59 -0
- package/src/charting/TemplateLibrary.js +103 -0
- package/src/charting/TextStyle.js +168 -0
- package/src/charting/ViewFit.js +55 -0
- package/src/charting/ViewMenu.js +70 -0
- package/src/charting/ViewPropertiesDialog.js +77 -0
- package/src/charting/ViewTabStrip.js +81 -0
- package/src/charting/archimate/ArchiFileFormat.js +32 -0
- package/src/charting/archimate/ArchimateCanvasEditor.js +815 -0
- package/src/charting/archimate/ArchimateCsvFileFormat.js +35 -0
- package/src/charting/archimate/ArchimateEdge.js +137 -0
- package/src/charting/archimate/ArchimateElementTemplate.js +195 -0
- package/src/charting/archimate/ArchimatePalette.js +102 -0
- package/src/charting/archimate/CsvImportDialog.js +105 -0
- package/src/charting/archimate/CustomViewpoints.js +74 -0
- package/src/charting/archimate/DerivedEdge.js +29 -0
- package/src/charting/archimate/DrawioFileFormat.js +24 -0
- package/src/charting/archimate/ElementFilterRule.js +21 -0
- package/src/charting/archimate/ExchangeFileFormat.js +28 -0
- package/src/charting/archimate/ViewGroupTemplate.js +137 -0
- package/src/charting/archimate/ViewLineEdge.js +84 -0
- package/src/charting/archimate/ViewpointRule.js +45 -0
- package/src/charting/archimate/archimateFileFormats.js +12 -0
- package/src/charting/archimate/archimateNames.js +5 -0
- package/src/charting/archimate/csvMapping.js +122 -0
- package/src/charting/archimate/elementMenuItems.js +32 -0
- package/src/charting/archimate/elementProperties.js +146 -0
- package/src/charting/archimate/elementTypeChoices.js +7 -0
- package/src/charting/archimate/elementTypeGroups.js +19 -0
- package/src/charting/archimate/index.js +17 -0
- package/src/charting/archimate/specializationCatalogDialog.js +64 -0
- package/src/charting/archimate/typeGlyph.js +29 -0
- package/src/charting/arrangement/Arrangement.js +112 -0
- package/src/charting/arrangement/ArrangementCommand.js +29 -0
- package/src/charting/arrangement/BackgroundCommand.js +41 -0
- package/src/charting/arrangement/BackgroundGroup.js +18 -0
- package/src/charting/arrangement/GroupCommand.js +46 -0
- package/src/charting/arrangement/ItemGroup.js +62 -0
- package/src/charting/arrangement/LockCommand.js +32 -0
- package/src/charting/arrangement/UngroupCommand.js +27 -0
- package/src/charting/arrangement/alignment.js +88 -0
- package/src/charting/arrangement/arrangeMenuItems.js +25 -0
- package/src/charting/arrangement/index.js +11 -0
- package/src/charting/arrangement/layouts.js +233 -0
- package/src/charting/canvas/ArchiHint.js +78 -0
- package/src/charting/canvas/CanvasBoxKind.js +39 -0
- package/src/charting/canvas/CanvasPalette.js +49 -0
- package/src/charting/canvas/CanvasTemplateLibrary.js +61 -0
- package/src/charting/canvas/CanvasTemplateMenu.js +151 -0
- package/src/charting/canvas/EditHintCommand.js +28 -0
- package/src/charting/canvas/canvasBoxKinds.js +27 -0
- package/src/charting/canvas/canvasBoxMenuItems.js +40 -0
- package/src/charting/canvas/defaultCanvasTemplates.js +186 -0
- package/src/charting/canvas/diagramBoxKinds.js +12 -0
- package/src/charting/canvas/hintMenuItems.js +49 -0
- package/src/charting/charts/ArcGauge.js +55 -0
- package/src/charting/charts/AreaChart.js +71 -0
- package/src/charting/charts/BarChart.js +80 -0
- package/src/charting/charts/BarChart3D.js +56 -0
- package/src/charting/charts/BarChart3DOrbit.js +53 -0
- package/src/charting/charts/BarChartBase.js +70 -0
- package/src/charting/charts/BarGauge.js +42 -0
- package/src/charting/charts/BoxPlotChart.js +41 -0
- package/src/charting/charts/BubbleChart.js +99 -0
- package/src/charting/charts/BubbleChart3D.js +78 -0
- package/src/charting/charts/BulletGauge.js +87 -0
- package/src/charting/charts/CalendarHeatmapChart.js +204 -0
- package/src/charting/charts/CandlestickChart.js +54 -0
- package/src/charting/charts/ChordDiagram.js +130 -0
- package/src/charting/charts/DensityChart.js +73 -0
- package/src/charting/charts/DialGauge.js +65 -0
- package/src/charting/charts/DonutChart.js +15 -0
- package/src/charting/charts/FunnelChart.js +47 -0
- package/src/charting/charts/GanttChart.js +201 -0
- package/src/charting/charts/GaugeChart.js +175 -0
- package/src/charting/charts/GeoMapChart.js +146 -0
- package/src/charting/charts/GroupedBarChart.js +88 -0
- package/src/charting/charts/GroupedDistributionChart.js +70 -0
- package/src/charting/charts/HeatmapChart.js +80 -0
- package/src/charting/charts/HierarchyChart.js +39 -0
- package/src/charting/charts/HistogramChart.js +45 -0
- package/src/charting/charts/KpiTile.js +72 -0
- package/src/charting/charts/LagPlotChart.js +41 -0
- package/src/charting/charts/LineChart.js +124 -0
- package/src/charting/charts/MultiRingGauge.js +54 -0
- package/src/charting/charts/OutlineChart.js +95 -0
- package/src/charting/charts/ParallelCoordinatesChart.js +130 -0
- package/src/charting/charts/PieChart.js +56 -0
- package/src/charting/charts/PipeChart.js +88 -0
- package/src/charting/charts/PopulationPyramidChart.js +106 -0
- package/src/charting/charts/QQPlotChart.js +64 -0
- package/src/charting/charts/RadarChart.js +76 -0
- package/src/charting/charts/RadialBarChart.js +96 -0
- package/src/charting/charts/RingGauge.js +23 -0
- package/src/charting/charts/SankeyDiagram.js +174 -0
- package/src/charting/charts/ScatterChart.js +104 -0
- package/src/charting/charts/StackedAreaChart.js +15 -0
- package/src/charting/charts/StackedBarChart.js +33 -0
- package/src/charting/charts/StackedBarChart3DOrbit.js +58 -0
- package/src/charting/charts/StreamGraphChart.js +131 -0
- package/src/charting/charts/SunburstChart.js +57 -0
- package/src/charting/charts/ThermometerGauge.js +43 -0
- package/src/charting/charts/TreemapChart.js +54 -0
- package/src/charting/charts/ViolinChart.js +37 -0
- package/src/charting/charts/WaterfallChart.js +66 -0
- package/src/charting/charts/WordCloudChart.js +104 -0
- package/src/charting/diagramModel/AddViewCommand.js +33 -0
- package/src/charting/diagramModel/DiagramModel.js +39 -0
- package/src/charting/diagramModel/DiagramModelSearch.js +22 -0
- package/src/charting/diagramModel/DiagramView.js +50 -0
- package/src/charting/diagramModel/ModelHistory.js +43 -0
- package/src/charting/diagramModel/ModelReport.js +153 -0
- package/src/charting/diagramModel/ModelSearch.js +223 -0
- package/src/charting/diagramModel/RemoveViewCommand.js +25 -0
- package/src/charting/diagramModel/RenameViewCommand.js +21 -0
- package/src/charting/diagramModel/ReplaceTextCommand.js +25 -0
- package/src/charting/diagramModel/ViewSetChecker.js +34 -0
- package/src/charting/diagramModel/ViewSetModel.js +243 -0
- package/src/charting/diagramModel/index.js +6 -0
- package/src/charting/diagramModel/nameTransforms.js +29 -0
- package/src/charting/diagrams/ArchimateCommands.js +141 -0
- package/src/charting/diagrams/ArchimateDiagram.js +263 -0
- package/src/charting/diagrams/ArchimateModel.js +1155 -0
- package/src/charting/diagrams/ArchimateModelChecker.js +125 -0
- package/src/charting/diagrams/ArchimateModelReport.js +128 -0
- package/src/charting/diagrams/ArchimateModelSearch.js +41 -0
- package/src/charting/diagrams/ArchimateValidator.js +357 -0
- package/src/charting/diagrams/CanvasView.js +112 -0
- package/src/charting/diagrams/ContextMenu.js +37 -0
- package/src/charting/diagrams/DataModelDiagram.js +86 -0
- package/src/charting/diagrams/DataModelRelationshipStrategy.js +38 -0
- package/src/charting/diagrams/DerivedRelationships.js +102 -0
- package/src/charting/diagrams/EbnfDiagram.js +39 -0
- package/src/charting/diagrams/EdgeGeometry.js +553 -0
- package/src/charting/diagrams/EditViewItemCommand.js +128 -0
- package/src/charting/diagrams/ElementInstance.js +157 -0
- package/src/charting/diagrams/GraphDiagram.js +1340 -0
- package/src/charting/diagrams/GraphDiagram3D.js +152 -0
- package/src/charting/diagrams/GraphMetrics.js +81 -0
- package/src/charting/diagrams/GridOverlay.js +137 -0
- package/src/charting/diagrams/ImportRowsCommand.js +62 -0
- package/src/charting/diagrams/LabelHelper.js +108 -0
- package/src/charting/diagrams/MergeElementsCommand.js +101 -0
- package/src/charting/diagrams/NestInstanceCommand.js +34 -0
- package/src/charting/diagrams/NodeGeometry.js +158 -0
- package/src/charting/diagrams/PlaceItemsCommand.js +77 -0
- package/src/charting/diagrams/RadialLayout.js +101 -0
- package/src/charting/diagrams/RelationshipInstance.js +93 -0
- package/src/charting/diagrams/RemoveGroupFromViewCommand.js +28 -0
- package/src/charting/diagrams/RemoveLineCommand.js +27 -0
- package/src/charting/diagrams/ShowElementCommand.js +43 -0
- package/src/charting/diagrams/SvgCoordinate.js +17 -0
- package/src/charting/diagrams/SvgZoom.js +127 -0
- package/src/charting/diagrams/Tooltip.js +62 -0
- package/src/charting/diagrams/ViewConnectionInstance.js +102 -0
- package/src/charting/diagrams/ViewObjectInstance.js +56 -0
- package/src/charting/diagrams/commands/AddEdgeCommand.js +34 -0
- package/src/charting/diagrams/commands/AddNodeCommand.js +28 -0
- package/src/charting/diagrams/commands/AddWaypointCommand.js +27 -0
- package/src/charting/diagrams/commands/CreateFolderCommand.js +27 -0
- package/src/charting/diagrams/commands/DeleteEdgeCommand.js +30 -0
- package/src/charting/diagrams/commands/DeleteFolderCommand.js +47 -0
- package/src/charting/diagrams/commands/DeleteNodeCommand.js +35 -0
- package/src/charting/diagrams/commands/DeleteWaypointCommand.js +24 -0
- package/src/charting/diagrams/commands/GraphCommand.js +65 -0
- package/src/charting/diagrams/commands/InvertEdgeCommand.js +24 -0
- package/src/charting/diagrams/commands/MoveNodeCommand.js +44 -0
- package/src/charting/diagrams/commands/MoveWaypointCommand.js +27 -0
- package/src/charting/diagrams/commands/RenameEdgeCommand.js +23 -0
- package/src/charting/diagrams/commands/RenameFolderCommand.js +31 -0
- package/src/charting/diagrams/commands/RenameNodeCommand.js +27 -0
- package/src/charting/diagrams/commands/ResizeNodeCommand.js +46 -0
- package/src/charting/diagrams/commands/UpdateEdgeSideCommand.js +40 -0
- package/src/charting/diagrams/commands/index.js +17 -0
- package/src/charting/diagrams/duplicates.js +49 -0
- package/src/charting/diagrams/nesting.js +30 -0
- package/src/charting/diagrams/roadmap.js +77 -0
- package/src/charting/edgeMarkers/ArrowMarker.js +15 -0
- package/src/charting/edgeMarkers/CircleMarker.js +13 -0
- package/src/charting/edgeMarkers/CrowsFootMarker.js +16 -0
- package/src/charting/edgeMarkers/DiamondMarker.js +15 -0
- package/src/charting/edgeMarkers/EdgeMarker.js +34 -0
- package/src/charting/edgeMarkers/HalfArrowMarker.js +8 -0
- package/src/charting/edgeMarkers/HollowDiamondMarker.js +18 -0
- package/src/charting/edgeMarkers/HollowTriangleMarker.js +18 -0
- package/src/charting/edgeMarkers/OpenArrowMarker.js +17 -0
- package/src/charting/edgeMarkers/index.js +27 -0
- package/src/charting/edgeStyle/EdgeStyleCascade.js +22 -0
- package/src/charting/edgeStyle/EdgeStyleDialog.js +51 -0
- package/src/charting/edgeStyle/EdgeStyleSchema.js +43 -0
- package/src/charting/edgeStyle/SetStyleCommand.js +12 -0
- package/src/charting/edgeStyle/index.js +4 -0
- package/src/charting/emphasis/EmphasisRule.js +42 -0
- package/src/charting/emphasis/HighlightRule.js +24 -0
- package/src/charting/gauges/ArcTrack.js +51 -0
- package/src/charting/gauges/GaugeAnimation.js +51 -0
- package/src/charting/gauges/GaugeBands.js +48 -0
- package/src/charting/gauges/GaugeScale.js +87 -0
- package/src/charting/gauges/GaugeTrack.js +44 -0
- package/src/charting/gauges/GaugeValue.js +61 -0
- package/src/charting/gauges/HorizontalTrack.js +14 -0
- package/src/charting/gauges/LinearTrack.js +29 -0
- package/src/charting/gauges/Sparkline.js +42 -0
- package/src/charting/gauges/VerticalTrack.js +17 -0
- package/src/charting/glyphs/ArrowGlyph.js +21 -0
- package/src/charting/glyphs/BatteryGlyph.js +18 -0
- package/src/charting/glyphs/ChevronGlyph.js +18 -0
- package/src/charting/glyphs/CircleGlyph.js +15 -0
- package/src/charting/glyphs/CloudGlyph.js +19 -0
- package/src/charting/glyphs/ComponentGlyph.js +18 -0
- package/src/charting/glyphs/ConstraintGlyph.js +24 -0
- package/src/charting/glyphs/ContractBoxGlyph.js +10 -0
- package/src/charting/glyphs/CubeGlyph.js +19 -0
- package/src/charting/glyphs/CylinderGlyph.js +19 -0
- package/src/charting/glyphs/DashedDoubleArrowGlyph.js +11 -0
- package/src/charting/glyphs/DeviceGlyph.js +17 -0
- package/src/charting/glyphs/DiamondGlyph.js +17 -0
- package/src/charting/glyphs/DocumentGlyph.js +17 -0
- package/src/charting/glyphs/DoubleArrowGlyph.js +23 -0
- package/src/charting/glyphs/DoubleCircleGlyph.js +24 -0
- package/src/charting/glyphs/EllipseGlyph.js +18 -0
- package/src/charting/glyphs/FactoryGlyph.js +20 -0
- package/src/charting/glyphs/FlagGlyph.js +16 -0
- package/src/charting/glyphs/GapCircleGlyph.js +17 -0
- package/src/charting/glyphs/GearGlyph.js +37 -0
- package/src/charting/glyphs/Glyph.js +98 -0
- package/src/charting/glyphs/GroupingBoxGlyph.js +13 -0
- package/src/charting/glyphs/HalfCircleGlyph.js +22 -0
- package/src/charting/glyphs/HexagonGlyph.js +28 -0
- package/src/charting/glyphs/IconGlyph.js +22 -0
- package/src/charting/glyphs/ImageGlyph.js +16 -0
- package/src/charting/glyphs/JunctionGlyph.js +17 -0
- package/src/charting/glyphs/LollipopGlyph.js +22 -0
- package/src/charting/glyphs/MagnifierGlyph.js +17 -0
- package/src/charting/glyphs/NoteGlyph.js +33 -0
- package/src/charting/glyphs/ObjectBoxGlyph.js +21 -0
- package/src/charting/glyphs/OrJunctionGlyph.js +17 -0
- package/src/charting/glyphs/ParallelogramGlyph.js +20 -0
- package/src/charting/glyphs/PersonGlyph.js +23 -0
- package/src/charting/glyphs/PillGlyph.js +23 -0
- package/src/charting/glyphs/PinGlyph.js +18 -0
- package/src/charting/glyphs/PrincipleGlyph.js +23 -0
- package/src/charting/glyphs/ProductBoxGlyph.js +16 -0
- package/src/charting/glyphs/RectGlyph.js +15 -0
- package/src/charting/glyphs/RoundedBoxGlyph.js +13 -0
- package/src/charting/glyphs/StackGlyph.js +14 -0
- package/src/charting/glyphs/StepsGlyph.js +20 -0
- package/src/charting/glyphs/StickFigureGlyph.js +32 -0
- package/src/charting/glyphs/SystemSoftwareBoxGlyph.js +16 -0
- package/src/charting/glyphs/TabbedBoxGlyph.js +37 -0
- package/src/charting/glyphs/TargetGlyph.js +23 -0
- package/src/charting/glyphs/WavyBoxGlyph.js +17 -0
- package/src/charting/glyphs/WheelGlyph.js +28 -0
- package/src/charting/glyphs/drawGlyph.js +28 -0
- package/src/charting/glyphs/glyphSvg.js +55 -0
- package/src/charting/glyphs/index.js +109 -0
- package/src/charting/modelTree/AnalysisPanel.js +159 -0
- package/src/charting/modelTree/DiagramTabs.js +217 -0
- package/src/charting/modelTree/ModelTree.js +164 -0
- package/src/charting/modelTree/ModelTreePanel.js +914 -0
- package/src/charting/modelTree/TreeBuilder.js +238 -0
- package/src/charting/modelTree/TreeModeRegistry.js +51 -0
- package/src/charting/modelTree/TreeViewMode.js +110 -0
- package/src/charting/modelTree/buildFilterTrees.js +138 -0
- package/src/charting/modelTree/modes/FlatTreeMode.js +46 -0
- package/src/charting/modelTree/modes/LayerGroupedTreeMode.js +62 -0
- package/src/charting/modelTree/modes/TypeGroupedTreeMode.js +60 -0
- package/src/charting/modelTree/treeLayers.js +11 -0
- package/src/charting/report/reportHtml.js +82 -0
- package/src/charting/report/reportViewer.js +118 -0
- package/src/charting/shapes/CircleShape.js +19 -0
- package/src/charting/shapes/PathShape.js +17 -0
- package/src/charting/shapes/RectShape.js +20 -0
- package/src/charting/shapes/Shape.js +20 -0
- package/src/charting/shapes/ShapeFactory.js +23 -0
- package/src/charting/storage/LocalJsonStore.js +43 -0
- package/src/charting/templates/ActorTemplate.js +36 -0
- package/src/charting/templates/BoxTemplate.js +27 -0
- package/src/charting/templates/CircleTemplate.js +18 -0
- package/src/charting/templates/ClassTemplate.js +20 -0
- package/src/charting/templates/CloudTemplate.js +43 -0
- package/src/charting/templates/ComponentTemplate.js +19 -0
- package/src/charting/templates/CylinderTemplate.js +30 -0
- package/src/charting/templates/DataStoreTemplate.js +16 -0
- package/src/charting/templates/DiamondTemplate.js +10 -0
- package/src/charting/templates/DocumentTemplate.js +32 -0
- package/src/charting/templates/EllipseTemplate.js +15 -0
- package/src/charting/templates/FinalStateTemplate.js +12 -0
- package/src/charting/templates/GlyphTemplate.js +47 -0
- package/src/charting/templates/HexagonTemplate.js +17 -0
- package/src/charting/templates/LifelineTemplate.js +20 -0
- package/src/charting/templates/ManualInputTemplate.js +12 -0
- package/src/charting/templates/NoteTemplate.js +23 -0
- package/src/charting/templates/OctagonTemplate.js +7 -0
- package/src/charting/templates/PackageTemplate.js +25 -0
- package/src/charting/templates/ParallelogramTemplate.js +11 -0
- package/src/charting/templates/PentagonTemplate.js +5 -0
- package/src/charting/templates/PolygonTemplate.js +18 -0
- package/src/charting/templates/PredefinedProcessTemplate.js +13 -0
- package/src/charting/templates/RectangleTemplate.js +28 -0
- package/src/charting/templates/RegularPolygonTemplate.js +21 -0
- package/src/charting/templates/RoundedRectangleTemplate.js +5 -0
- package/src/charting/templates/StadiumTemplate.js +8 -0
- package/src/charting/templates/StarTemplate.js +17 -0
- package/src/charting/templates/SwimlaneTemplate.js +18 -0
- package/src/charting/templates/Template.js +208 -0
- package/src/charting/templates/TrapezoidTemplate.js +11 -0
- package/src/charting/templates/TriangleTemplate.js +12 -0
- package/src/charting/templates/index.js +31 -0
- package/src/charting/templates/outline.js +59 -0
- package/src/charting/templates/svg.js +19 -0
- package/src/charting/textToShapes.js +61 -0
- package/src/charting/toolbar/ToolbarButton.js +38 -0
- package/src/charting/toolbar/ToolbarCheckbox.js +31 -0
- package/src/charting/toolbar/ToolbarItem.js +19 -0
- package/src/charting/toolbar/ToolbarMenu.js +36 -0
- package/src/charting/toolbar/ToolbarSelect.js +38 -0
- package/src/charting/toolbar/ToolbarSeparator.js +7 -0
- package/src/charting/toolbar/ToolbarText.js +22 -0
- package/src/charting/toolbar/index.js +8 -0
- package/src/charting/toolbar/pickFile.js +14 -0
- package/src/charting/viewDecorations.js +85 -0
- package/src/charting/zOrder.js +57 -0
- package/src/csvTable.js +61 -0
- package/src/datamodel.js +122 -0
- package/src/datawindow/BoundedWindow.js +36 -0
- package/src/datawindow/FlatDataWindow.js +34 -0
- package/src/datawindow/GraphDataWindow.js +40 -0
- package/src/datawindow/GroupedSampleDataWindow.js +16 -0
- package/src/datawindow/SeriesDataWindow.js +42 -0
- package/src/datawindow/index.js +31 -0
- package/src/diagramCatalog.js +30 -0
- package/src/ebnfDiagram.js +57 -0
- package/src/ebnfParser.js +129 -0
- package/src/exportImage.js +233 -0
- package/src/index.js +2636 -0
- package/src/itIcons.js +84 -0
- package/src/kernelExpr.js +243 -0
- package/src/propertiesDialog.js +463 -0
- package/src/railroadDiagram.js +571 -0
- package/src/treeModeCatalog.js +16 -0
- package/src/workspace/ContextBus.js +79 -0
- package/src/workspace/EditorShell.js +67 -0
- package/src/workspace/Part.js +163 -0
- package/src/workspace/PartFactory.js +49 -0
- package/src/workspace/PartRegistry.js +86 -0
- package/src/workspace/Workspace.js +321 -0
- package/src/workspace/archimateServices.js +33 -0
- package/src/workspace/dom.js +120 -0
- package/src/workspace/index.js +75 -0
- package/src/workspace/layout/GridNode.js +280 -0
- package/src/workspace/layout/LayoutNode.js +89 -0
- package/src/workspace/layout/PartNode.js +77 -0
- package/src/workspace/layout/SplitNode.js +114 -0
- package/src/workspace/layout/TabsNode.js +191 -0
- package/src/workspace/layout/index.js +24 -0
- package/src/workspace/parts/AdapterPart.js +33 -0
- package/src/workspace/parts/ArchimateCanvasPart.js +345 -0
- package/src/workspace/parts/ArchimateEditorPart.js +79 -0
- package/src/workspace/parts/ChartPart.js +115 -0
- package/src/workspace/parts/ContentPart.js +34 -0
- package/src/workspace/parts/DetailPart.js +46 -0
- package/src/workspace/parts/DiagramEditorPart.js +135 -0
- package/src/workspace/parts/EditorPart.js +388 -0
- package/src/workspace/parts/HtmlPart.js +25 -0
- package/src/workspace/parts/ListPart.js +57 -0
- package/src/workspace/parts/ModelFile.js +187 -0
- package/src/workspace/parts/ModelsPart.js +135 -0
- package/src/workspace/styles.js +258 -0
- package/src/workspace/themes.js +96 -0
- package/src/workspace/workArea.js +413 -0
- package/src/workspace/workAreaModel.js +197 -0
- package/src/workspace.js +16 -0
- package/src/zip/ZipArchive.js +160 -0
- package/src/zip/crc32.js +25 -0
- package/src/zip/inflate.js +159 -0
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* exportImage — get a diagram out of the page: onto the clipboard, or into a
|
|
3
|
+
* file.
|
|
4
|
+
*
|
|
5
|
+
* A diagram is an `<svg>` (SVGRenderer) or a `<canvas>` (CanvasRenderer). A
|
|
6
|
+
* canvas is already an image; an SVG is not, and turning one into a bitmap has
|
|
7
|
+
* three failure modes that are invisible until someone pastes the result into a
|
|
8
|
+
* document and finds it wrong:
|
|
9
|
+
*
|
|
10
|
+
* - **No intrinsic size.** An SVG sized by CSS (`width: 100%`) has no `width`
|
|
11
|
+
* attribute, and an `Image` loading that markup gets 0×0 — a blank paste.
|
|
12
|
+
* - **Transparent background.** Diagrams draw no background, so a PNG pasted
|
|
13
|
+
* into anything dark shows dark-on-dark labels. Paper is white; the default
|
|
14
|
+
* here is too.
|
|
15
|
+
* - **Namespace loss.** Markup serialized without `xmlns` will not load as an
|
|
16
|
+
* image at all, and `xlink:href` (markers, patterns) needs its own.
|
|
17
|
+
*
|
|
18
|
+
* The decisions above are made by pure functions over strings and numbers so
|
|
19
|
+
* they can be tested without a browser; everything that touches `document`,
|
|
20
|
+
* `Image` or `navigator` is a thin wrapper over them and is named `...Async`
|
|
21
|
+
* or documented as DOM-only. Nothing here runs at import time, so this module
|
|
22
|
+
* loads under node.
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
const SVG_NS = 'http://www.w3.org/2000/svg';
|
|
26
|
+
const XLINK_NS = 'http://www.w3.org/1999/xlink';
|
|
27
|
+
|
|
28
|
+
/** Anything bigger than this is a browser tab crash, not a diagram. */
|
|
29
|
+
export const MAX_IMAGE_PIXELS = 32_000_000;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Work out the bitmap size to rasterize at.
|
|
33
|
+
*
|
|
34
|
+
* `scale` is what the caller asked for (2 = retina-sharp). It is reduced, never
|
|
35
|
+
* the diagram's own dimensions, when the result would be too large: halving the
|
|
36
|
+
* scale of a huge diagram still shows all of it, whereas cropping or shrinking
|
|
37
|
+
* the diagram loses content or legibility.
|
|
38
|
+
*
|
|
39
|
+
* @returns {{width:number, height:number, scale:number, clamped:boolean}}
|
|
40
|
+
*/
|
|
41
|
+
export function imageSize({ width, height, scale = 2, maxPixels = MAX_IMAGE_PIXELS } = {}) {
|
|
42
|
+
const w = Math.max(1, Math.round(Number(width) || 0));
|
|
43
|
+
const h = Math.max(1, Math.round(Number(height) || 0));
|
|
44
|
+
let s = Number(scale);
|
|
45
|
+
if (!Number.isFinite(s) || s <= 0) s = 1;
|
|
46
|
+
|
|
47
|
+
let clamped = false;
|
|
48
|
+
if (w * h * s * s > maxPixels) {
|
|
49
|
+
s = Math.sqrt(maxPixels / (w * h));
|
|
50
|
+
clamped = true;
|
|
51
|
+
}
|
|
52
|
+
// A scale below 1:1 would be a downscale the caller never asked for, but a
|
|
53
|
+
// diagram that is itself over the budget leaves no choice.
|
|
54
|
+
if (s < 1 && w * h <= maxPixels) s = 1;
|
|
55
|
+
|
|
56
|
+
return { width: Math.max(1, Math.round(w * s)), height: Math.max(1, Math.round(h * s)), scale: s, clamped };
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Make serialized SVG markup loadable as an image.
|
|
61
|
+
*
|
|
62
|
+
* Adds the namespaces, pins explicit pixel dimensions, and paints a background
|
|
63
|
+
* behind the drawing. See the class doc for why each is needed.
|
|
64
|
+
*
|
|
65
|
+
* @param {string} markup the output of XMLSerializer on an <svg> element
|
|
66
|
+
* @param {object} [options]
|
|
67
|
+
* @param {number} [options.width] pixels; omitted leaves what is there
|
|
68
|
+
* @param {number} [options.height]
|
|
69
|
+
* @param {string|null} [options.background='#ffffff'] null for transparent
|
|
70
|
+
*/
|
|
71
|
+
export function prepareSvgMarkup(markup, { width, height, background = '#ffffff' } = {}) {
|
|
72
|
+
let out = String(markup ?? '').trim();
|
|
73
|
+
const open = out.match(/^<svg\b[^>]*>/i);
|
|
74
|
+
if (!open) return out; // not an <svg> — hand it back untouched
|
|
75
|
+
let tag = open[0];
|
|
76
|
+
|
|
77
|
+
if (!/\sxmlns\s*=/.test(tag)) tag = tag.replace(/^<svg/i, `<svg xmlns="${SVG_NS}"`);
|
|
78
|
+
// Only when something actually uses it: an unused namespace declaration is
|
|
79
|
+
// noise in a file someone may open in an editor.
|
|
80
|
+
if (/xlink:/.test(out) && !/\sxmlns:xlink\s*=/.test(tag)) {
|
|
81
|
+
tag = tag.replace(/^<svg/i, `<svg xmlns:xlink="${XLINK_NS}"`);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
const setAttr = (name, value) => {
|
|
85
|
+
const re = new RegExp(`\\s${name}\\s*=\\s*("[^"]*"|'[^']*')`, 'i');
|
|
86
|
+
tag = re.test(tag) ? tag.replace(re, ` ${name}="${value}"`) : tag.replace(/^<svg/i, `<svg ${name}="${value}"`);
|
|
87
|
+
};
|
|
88
|
+
if (Number.isFinite(width) && width > 0) setAttr('width', Math.round(width));
|
|
89
|
+
if (Number.isFinite(height) && height > 0) setAttr('height', Math.round(height));
|
|
90
|
+
|
|
91
|
+
out = tag + out.slice(open[0].length);
|
|
92
|
+
|
|
93
|
+
if (background) {
|
|
94
|
+
// First child, so it sits behind everything. Percentages rather than
|
|
95
|
+
// pixels so it still covers the drawing if a viewBox rescales it.
|
|
96
|
+
out = out.replace(tag, `${tag}<rect x="0" y="0" width="100%" height="100%" fill="${background}"/>`);
|
|
97
|
+
}
|
|
98
|
+
return out;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/** A filename-safe stem: `My Diagram (v2)` → `my-diagram-v2`. */
|
|
102
|
+
export function imageFileName(name, ext = 'png') {
|
|
103
|
+
const stem = String(name ?? 'diagram')
|
|
104
|
+
.trim().toLowerCase()
|
|
105
|
+
.replace(/[^a-z0-9]+/g, '-')
|
|
106
|
+
.replace(/^-+|-+$/g, '') || 'diagram';
|
|
107
|
+
return `${stem}.${ext}`;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/* ── DOM side ────────────────────────────────────────────────────────────── */
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* The drawable inside `host` — `host` itself if it is already one. DOM only.
|
|
114
|
+
* @returns {SVGElement|HTMLCanvasElement|null}
|
|
115
|
+
*/
|
|
116
|
+
export function findDrawable(host) {
|
|
117
|
+
if (!host) return null;
|
|
118
|
+
const tag = host.tagName?.toLowerCase?.();
|
|
119
|
+
if (tag === 'svg' || tag === 'canvas') return host;
|
|
120
|
+
return host.querySelector?.('svg, canvas') ?? null;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Serialize an `<svg>` element to standalone markup. DOM only.
|
|
125
|
+
*
|
|
126
|
+
* Size is taken from the element's laid-out box rather than its attributes,
|
|
127
|
+
* because that is what the user is actually looking at.
|
|
128
|
+
*/
|
|
129
|
+
export function serializeSvg(svgEl, { background = '#ffffff', width, height } = {}) {
|
|
130
|
+
const box = svgEl.getBoundingClientRect?.() ?? {};
|
|
131
|
+
const w = width ?? svgEl.width?.baseVal?.value ?? box.width;
|
|
132
|
+
const h = height ?? svgEl.height?.baseVal?.value ?? box.height;
|
|
133
|
+
const markup = new XMLSerializer().serializeToString(svgEl);
|
|
134
|
+
return prepareSvgMarkup(markup, { width: w, height: h, background });
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Rasterize a diagram to a PNG Blob. DOM only.
|
|
139
|
+
*
|
|
140
|
+
* @param {Element} host the diagram, or an element containing one
|
|
141
|
+
*/
|
|
142
|
+
export async function toPngBlob(host, { scale = 2, background = '#ffffff', maxPixels = MAX_IMAGE_PIXELS } = {}) {
|
|
143
|
+
const drawable = findDrawable(host);
|
|
144
|
+
if (!drawable) throw new Error('No <svg> or <canvas> to export');
|
|
145
|
+
|
|
146
|
+
if (drawable.tagName.toLowerCase() === 'canvas') {
|
|
147
|
+
return await new Promise((resolve, reject) => {
|
|
148
|
+
drawable.toBlob(b => (b ? resolve(b) : reject(new Error('Canvas produced no image'))), 'image/png');
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
const box = drawable.getBoundingClientRect();
|
|
153
|
+
const size = imageSize({ width: box.width, height: box.height, scale, maxPixels });
|
|
154
|
+
const markup = serializeSvg(drawable, { background, width: box.width, height: box.height });
|
|
155
|
+
|
|
156
|
+
// A data: URL rather than a blob: URL — a blob: URL taints nothing either,
|
|
157
|
+
// but Safari has historically refused to draw SVG from one.
|
|
158
|
+
const url = `data:image/svg+xml;charset=utf-8,${encodeURIComponent(markup)}`;
|
|
159
|
+
const img = await new Promise((resolve, reject) => {
|
|
160
|
+
const i = new Image();
|
|
161
|
+
i.onload = () => resolve(i);
|
|
162
|
+
i.onerror = () => reject(new Error('The diagram could not be rendered as an image'));
|
|
163
|
+
i.src = url;
|
|
164
|
+
});
|
|
165
|
+
|
|
166
|
+
const canvas = document.createElement('canvas');
|
|
167
|
+
canvas.width = size.width;
|
|
168
|
+
canvas.height = size.height;
|
|
169
|
+
const ctx = canvas.getContext('2d');
|
|
170
|
+
if (background) { ctx.fillStyle = background; ctx.fillRect(0, 0, canvas.width, canvas.height); }
|
|
171
|
+
ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
|
|
172
|
+
|
|
173
|
+
return await new Promise((resolve, reject) => {
|
|
174
|
+
canvas.toBlob(b => (b ? resolve(b) : reject(new Error('The image could not be encoded'))), 'image/png');
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/** Trigger a download of `blob` as `filename`. DOM only. */
|
|
179
|
+
export function downloadBlob(blob, filename) {
|
|
180
|
+
const url = URL.createObjectURL(blob);
|
|
181
|
+
const a = document.createElement('a');
|
|
182
|
+
a.href = url;
|
|
183
|
+
a.download = filename;
|
|
184
|
+
document.body.appendChild(a);
|
|
185
|
+
a.click();
|
|
186
|
+
a.remove();
|
|
187
|
+
// Revoked on a later turn: revoking synchronously can beat the download in
|
|
188
|
+
// some browsers, leaving an empty file.
|
|
189
|
+
setTimeout(() => URL.revokeObjectURL(url), 10_000);
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/**
|
|
193
|
+
* Put a diagram on the clipboard as a PNG. DOM only.
|
|
194
|
+
*
|
|
195
|
+
* Falls back to downloading the file where writing images to the clipboard is
|
|
196
|
+
* unavailable — Firefox, and any page not served over a secure context — so the
|
|
197
|
+
* action always does something rather than silently failing. The result says
|
|
198
|
+
* which happened, so a caller can tell the user the truth.
|
|
199
|
+
*
|
|
200
|
+
* @returns {Promise<{via:'clipboard'|'download', filename?:string}>}
|
|
201
|
+
*/
|
|
202
|
+
export async function copyImage(host, { scale = 2, background = '#ffffff', name = 'diagram' } = {}) {
|
|
203
|
+
const blob = await toPngBlob(host, { scale, background });
|
|
204
|
+
const canWrite = typeof ClipboardItem !== 'undefined'
|
|
205
|
+
&& typeof navigator !== 'undefined'
|
|
206
|
+
&& navigator.clipboard?.write;
|
|
207
|
+
|
|
208
|
+
if (canWrite) {
|
|
209
|
+
try {
|
|
210
|
+
await navigator.clipboard.write([new ClipboardItem({ 'image/png': blob })]);
|
|
211
|
+
return { via: 'clipboard' };
|
|
212
|
+
} catch {
|
|
213
|
+
// Denied permission, or a browser that advertises write() but
|
|
214
|
+
// refuses images — fall through rather than lose the user's click.
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
const filename = imageFileName(name, 'png');
|
|
218
|
+
downloadBlob(blob, filename);
|
|
219
|
+
return { via: 'download', filename };
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
/** Save a diagram as an SVG file. DOM only. */
|
|
223
|
+
export function downloadSvg(host, { background = '#ffffff', name = 'diagram' } = {}) {
|
|
224
|
+
const drawable = findDrawable(host);
|
|
225
|
+
if (!drawable || drawable.tagName.toLowerCase() !== 'svg') throw new Error('No <svg> to export');
|
|
226
|
+
const markup = serializeSvg(drawable, { background });
|
|
227
|
+
downloadBlob(new Blob([markup], { type: 'image/svg+xml;charset=utf-8' }), imageFileName(name, 'svg'));
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
/** Save a diagram as a PNG file. DOM only. */
|
|
231
|
+
export async function downloadPng(host, { scale = 2, background = '#ffffff', name = 'diagram' } = {}) {
|
|
232
|
+
downloadBlob(await toPngBlob(host, { scale, background }), imageFileName(name, 'png'));
|
|
233
|
+
}
|