drawio_dsl 0.8.4 → 0.8.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.builders/.data/shapes.json +9 -0
- data/.builders/.templates/basic/drawio_extensions.rb +2 -1
- data/.builders/.templates/basic/drawio_shapes.rb +1 -1
- data/.builders/blueprint/shapes.rb +1 -0
- data/.builders/generators/20-drawio-extensions.rb +1 -1
- data/.builders/generators/domain_diagram.rb +448 -15
- data/.builders/generators/parking-map.png +0 -0
- data/.builders/generators/parking_app.rb +110 -0
- data/.builders/generators/printspeak-architecture-generator.rb +15 -10
- data/.builders/generators/project-plan.rb +4 -2
- data/CHANGELOG.md +7 -0
- data/README.md +5 -3
- data/docs/domain-modal/domain_model.drawio +265 -0
- data/docs/domain-modal/domain_model.svg +3 -0
- data/docs/domain-modal/domain_model_custom.drawio +408 -0
- data/docs/domain-modal/domain_model_custom.png +0 -0
- data/docs/domain-modal.md +9 -0
- data/docs/parking_app.drawio +25 -0
- data/docs/parking_app.svg +3 -0
- data/docs/printspeak-architecture-generator.drawio +31 -0
- data/docs/printspeak-architecture-generator.svg +3 -0
- data/docs/project-plan/project.drawio +60 -54
- data/docs/project-plan/project_in_progress.svg +1 -1
- data/docs/project-plan/project_todo.svg +1 -1
- data/lib/drawio_dsl/configuration_shapes.rb +3 -1
- data/lib/drawio_dsl/dom_builder.rb +1 -1
- data/lib/drawio_dsl/dom_builder_shapes.rb +7 -1
- data/lib/drawio_dsl/drawio.rb +0 -19
- data/lib/drawio_dsl/drawio_extensions.rb +3 -2
- data/lib/drawio_dsl/drawio_extensions_active.rb +1 -1
- data/lib/drawio_dsl/drawio_page.rb +22 -0
- data/lib/drawio_dsl/drawio_shapes.rb +26 -20
- data/lib/drawio_dsl/formatters/base_formatter.rb +1 -1
- data/lib/drawio_dsl/formatters/html_builder.rb +1 -1
- data/lib/drawio_dsl/formatters/interface_formatter.rb +1 -1
- data/lib/drawio_dsl/formatters/klass_formatter.rb +1 -1
- data/lib/drawio_dsl/formatters/style_builder.rb +1 -1
- data/lib/drawio_dsl/schema/_.rb +1 -0
- data/lib/drawio_dsl/schema/shapes/db_json.rb +9 -0
- data/lib/drawio_dsl/schema/shapes/shape.rb +2 -2
- data/lib/drawio_dsl/version.rb +1 -1
- data/lib/drawio_dsl/xml_builder.rb +1 -1
- data/lib/drawio_dsl.rb +1 -0
- data/package-lock.json +2 -2
- data/package.json +1 -1
- metadata +15 -4
- data/docs/domain.drawio +0 -31
- data/docs/domain_model.svg +0 -3
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
# :nocov:
|
4
4
|
module DrawioDsl
|
5
|
-
#
|
5
|
+
# Builder methods for each shape, line and text element to attach to DomBuilder.
|
6
6
|
module DomBuilderShapes
|
7
7
|
def add_line(id = nil, **opts, &block)
|
8
8
|
opts = { id: id }.merge(opts) if id
|
@@ -142,6 +142,12 @@ module DrawioDsl
|
|
142
142
|
add_shape(database)
|
143
143
|
end
|
144
144
|
|
145
|
+
def add_db_json(id = nil, **opts, &block)
|
146
|
+
opts = { id: id }.merge(opts) if id
|
147
|
+
db_json = DrawioDsl::Schema::DbJson.new(current_page, **opts, &block)
|
148
|
+
add_shape(db_json)
|
149
|
+
end
|
150
|
+
|
145
151
|
def add_diamond(id = nil, **opts, &block)
|
146
152
|
opts = { id: id }.merge(opts) if id
|
147
153
|
diamond = DrawioDsl::Schema::Diamond.new(current_page, **opts, &block)
|
data/lib/drawio_dsl/drawio.rb
CHANGED
@@ -67,23 +67,4 @@ module DrawioDsl
|
|
67
67
|
self
|
68
68
|
end
|
69
69
|
end
|
70
|
-
|
71
|
-
# DrawioDsl::DrawioPage is created when you call .page on the draw-io DSL.
|
72
|
-
class DrawioPage < KDirector::Directors::ChildDirector
|
73
|
-
include DrawioDsl::DrawioShapes
|
74
|
-
|
75
|
-
def initialize(parent, **opts)
|
76
|
-
super(parent, **opts)
|
77
|
-
|
78
|
-
builder.add_page(**opts)
|
79
|
-
end
|
80
|
-
|
81
|
-
def grid_layout(**opts)
|
82
|
-
builder.add_grid_layout(**opts)
|
83
|
-
end
|
84
|
-
|
85
|
-
def flex_layout(**opts)
|
86
|
-
builder.add_flex_layout(**opts)
|
87
|
-
end
|
88
|
-
end
|
89
70
|
end
|
@@ -2,8 +2,9 @@
|
|
2
2
|
|
3
3
|
module DrawioDsl
|
4
4
|
# :nocov:
|
5
|
-
|
6
|
-
|
5
|
+
# 1000's of extension shapes derived from Extensions.js that can be used via the add_shape method
|
6
|
+
class DrawioExtensions
|
7
|
+
include DrawioDsl::DrawioExtensionsActive
|
7
8
|
|
8
9
|
attr_reader :sections
|
9
10
|
attr_reader :current_section
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module DrawioDsl
|
4
|
+
# DrawioDsl::DrawioPage is created when you call .page on the draw-io DSL.
|
5
|
+
class DrawioPage < KDirector::Directors::ChildDirector
|
6
|
+
include DrawioDsl::DrawioShapes
|
7
|
+
|
8
|
+
def initialize(parent, **opts)
|
9
|
+
super(parent, **opts)
|
10
|
+
|
11
|
+
builder.add_page(**opts)
|
12
|
+
end
|
13
|
+
|
14
|
+
def grid_layout(**opts)
|
15
|
+
builder.add_grid_layout(**opts)
|
16
|
+
end
|
17
|
+
|
18
|
+
def flex_layout(**opts)
|
19
|
+
builder.add_flex_layout(**opts)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -1,11 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module DrawioDsl
|
4
|
-
#
|
4
|
+
# List of DSL methods for each common shape
|
5
5
|
# :nocov:
|
6
6
|
module DrawioShapes
|
7
7
|
def random(**opts)
|
8
|
-
case rand(
|
8
|
+
case rand(43)
|
9
9
|
when 0
|
10
10
|
line(**opts)
|
11
11
|
when 1
|
@@ -53,42 +53,44 @@ module DrawioDsl
|
|
53
53
|
when 22
|
54
54
|
database(**opts)
|
55
55
|
when 23
|
56
|
-
|
56
|
+
db_json(**opts)
|
57
57
|
when 24
|
58
|
-
|
58
|
+
diamond(**opts)
|
59
59
|
when 25
|
60
|
-
|
60
|
+
document(**opts)
|
61
61
|
when 26
|
62
|
-
|
62
|
+
ellipse(**opts)
|
63
63
|
when 27
|
64
|
-
|
64
|
+
hexagon(**opts)
|
65
65
|
when 28
|
66
|
-
|
66
|
+
interface(**opts)
|
67
67
|
when 29
|
68
|
-
|
68
|
+
klass(**opts)
|
69
69
|
when 30
|
70
|
-
|
70
|
+
note(**opts)
|
71
71
|
when 31
|
72
|
-
|
72
|
+
process(**opts)
|
73
73
|
when 32
|
74
|
-
|
74
|
+
rectangle(**opts)
|
75
75
|
when 33
|
76
|
-
|
76
|
+
rectangle2(**opts)
|
77
77
|
when 34
|
78
|
-
|
78
|
+
square(**opts)
|
79
79
|
when 35
|
80
|
-
|
80
|
+
step(**opts)
|
81
81
|
when 36
|
82
|
-
|
82
|
+
tick(**opts)
|
83
83
|
when 37
|
84
|
-
|
84
|
+
todo(**opts)
|
85
85
|
when 38
|
86
|
-
|
86
|
+
face(**opts)
|
87
87
|
when 39
|
88
|
-
|
88
|
+
triangle(**opts)
|
89
89
|
when 40
|
90
|
-
|
90
|
+
embed_row(**opts)
|
91
91
|
when 41
|
92
|
+
embed_col50(**opts)
|
93
|
+
when 42
|
92
94
|
embed_col200(**opts)
|
93
95
|
end
|
94
96
|
end
|
@@ -185,6 +187,10 @@ module DrawioDsl
|
|
185
187
|
builder.add_database(id, **opts, &block)
|
186
188
|
end
|
187
189
|
|
190
|
+
def db_json(id = nil, **opts, &block)
|
191
|
+
builder.add_db_json(id, **opts, &block)
|
192
|
+
end
|
193
|
+
|
188
194
|
def diamond(id = nil, **opts, &block)
|
189
195
|
builder.add_diamond(id, **opts, &block)
|
190
196
|
end
|
@@ -4,7 +4,7 @@
|
|
4
4
|
module DrawioDsl
|
5
5
|
# HTML formatters can be used on shapes to render HTML using a DSL
|
6
6
|
module Formatters
|
7
|
-
#
|
7
|
+
# HTML builder has methods for common HTML elements that get written sequentially
|
8
8
|
class HtmlBuilder
|
9
9
|
attr_reader :element_style_defaults
|
10
10
|
|
@@ -4,7 +4,7 @@
|
|
4
4
|
module DrawioDsl
|
5
5
|
# HTML formatters can be used on shapes to render HTML using a DSL
|
6
6
|
module Formatters
|
7
|
-
#
|
7
|
+
# Format the HTML to display an interface on a class diagram
|
8
8
|
class InterfaceFormatter < BaseFormatter
|
9
9
|
def initialize
|
10
10
|
super({ p: { margin: '0px', margin_left: '4px', margin_top: '4px' } })
|
@@ -4,7 +4,7 @@
|
|
4
4
|
module DrawioDsl
|
5
5
|
# HTML formatters can be used on shapes to render HTML using a DSL
|
6
6
|
module Formatters
|
7
|
-
#
|
7
|
+
# Format the HTML to display an class on a class diagram
|
8
8
|
class KlassFormatter < BaseFormatter
|
9
9
|
def initialize
|
10
10
|
super({ p: { margin: '0px', margin_left: '4px', margin_top: '4px' } })
|
@@ -4,7 +4,7 @@
|
|
4
4
|
module DrawioDsl
|
5
5
|
# HTML formatters can be used on shapes to render HTML using a DSL
|
6
6
|
module Formatters
|
7
|
-
#
|
7
|
+
# Build the style attribute for a HTML element
|
8
8
|
class StyleBuilder
|
9
9
|
MAPPINGS = {
|
10
10
|
margin: 'margin',
|
data/lib/drawio_dsl/schema/_.rb
CHANGED
@@ -35,6 +35,7 @@ require_relative 'shapes/container4'
|
|
35
35
|
require_relative 'shapes/cross'
|
36
36
|
require_relative 'shapes/envelop'
|
37
37
|
require_relative 'shapes/database'
|
38
|
+
require_relative 'shapes/db_json'
|
38
39
|
require_relative 'shapes/diamond'
|
39
40
|
require_relative 'shapes/document'
|
40
41
|
require_relative 'shapes/ellipse'
|
@@ -119,8 +119,8 @@ module DrawioDsl
|
|
119
119
|
# rubocop:enable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
|
120
120
|
|
121
121
|
def as_xml(xml)
|
122
|
-
log.error category
|
123
|
-
log.error type
|
122
|
+
# log.error category
|
123
|
+
# log.error type
|
124
124
|
draw_element(xml) if category == :element
|
125
125
|
draw_line(xml) if category == :line
|
126
126
|
end
|
data/lib/drawio_dsl/version.rb
CHANGED
data/lib/drawio_dsl.rb
CHANGED
@@ -21,6 +21,7 @@ require_relative 'drawio_dsl/layout_engine'
|
|
21
21
|
require_relative 'drawio_dsl/drawio_shapes'
|
22
22
|
require_relative 'drawio_dsl/drawio_extensions_active'
|
23
23
|
require_relative 'drawio_dsl/drawio_extensions'
|
24
|
+
require_relative 'drawio_dsl/drawio_page'
|
24
25
|
require_relative 'drawio_dsl/drawio'
|
25
26
|
|
26
27
|
module DrawioDsl
|
data/package-lock.json
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
{
|
2
2
|
"name": "drawio_dsl",
|
3
|
-
"version": "0.8.
|
3
|
+
"version": "0.8.5",
|
4
4
|
"lockfileVersion": 2,
|
5
5
|
"requires": true,
|
6
6
|
"packages": {
|
7
7
|
"": {
|
8
8
|
"name": "drawio_dsl",
|
9
|
-
"version": "0.8.
|
9
|
+
"version": "0.8.5",
|
10
10
|
"devDependencies": {
|
11
11
|
"@klueless-js/semantic-release-rubygem": "github:klueless-js/semantic-release-rubygem",
|
12
12
|
"@semantic-release/changelog": "^6.0.1",
|
data/package.json
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: drawio_dsl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Cruwys
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-03-
|
11
|
+
date: 2022-03-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: k_config
|
@@ -89,6 +89,8 @@ files:
|
|
89
89
|
- ".builders/generators/10-transform-drawio-js.rb"
|
90
90
|
- ".builders/generators/20-drawio-extensions.rb"
|
91
91
|
- ".builders/generators/domain_diagram.rb"
|
92
|
+
- ".builders/generators/parking-map.png"
|
93
|
+
- ".builders/generators/parking_app.rb"
|
92
94
|
- ".builders/generators/printspeak-architecture-generator.rb"
|
93
95
|
- ".builders/generators/project-plan.rb"
|
94
96
|
- ".builders/generators/sample_diagrams/05-samples.rb"
|
@@ -113,8 +115,11 @@ files:
|
|
113
115
|
- Rakefile
|
114
116
|
- bin/console
|
115
117
|
- bin/setup
|
116
|
-
- docs/domain.
|
117
|
-
- docs/domain_model.
|
118
|
+
- docs/domain-modal.md
|
119
|
+
- docs/domain-modal/domain_model.drawio
|
120
|
+
- docs/domain-modal/domain_model.svg
|
121
|
+
- docs/domain-modal/domain_model_custom.drawio
|
122
|
+
- docs/domain-modal/domain_model_custom.png
|
118
123
|
- docs/extensions.md
|
119
124
|
- docs/extensions/analyti_cs.svg
|
120
125
|
- docs/extensions/android_inputs.svg
|
@@ -269,6 +274,10 @@ files:
|
|
269
274
|
- docs/extensions/venn_gradient.svg
|
270
275
|
- docs/extensions/venn_plain.svg
|
271
276
|
- docs/extensions/vessels.svg
|
277
|
+
- docs/parking_app.drawio
|
278
|
+
- docs/parking_app.svg
|
279
|
+
- docs/printspeak-architecture-generator.drawio
|
280
|
+
- docs/printspeak-architecture-generator.svg
|
272
281
|
- docs/project-plan.md
|
273
282
|
- docs/project-plan/project.drawio
|
274
283
|
- docs/project-plan/project_done.svg
|
@@ -301,6 +310,7 @@ files:
|
|
301
310
|
- lib/drawio_dsl/drawio_extensions.json
|
302
311
|
- lib/drawio_dsl/drawio_extensions.rb
|
303
312
|
- lib/drawio_dsl/drawio_extensions_active.rb
|
313
|
+
- lib/drawio_dsl/drawio_page.rb
|
304
314
|
- lib/drawio_dsl/drawio_shapes.rb
|
305
315
|
- lib/drawio_dsl/formatters/_.rb
|
306
316
|
- lib/drawio_dsl/formatters/base_formatter.rb
|
@@ -334,6 +344,7 @@ files:
|
|
334
344
|
- lib/drawio_dsl/schema/shapes/container4.rb
|
335
345
|
- lib/drawio_dsl/schema/shapes/cross.rb
|
336
346
|
- lib/drawio_dsl/schema/shapes/database.rb
|
347
|
+
- lib/drawio_dsl/schema/shapes/db_json.rb
|
337
348
|
- lib/drawio_dsl/schema/shapes/diamond.rb
|
338
349
|
- lib/drawio_dsl/schema/shapes/document.rb
|
339
350
|
- lib/drawio_dsl/schema/shapes/ellipse.rb
|
data/docs/domain.drawio
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
<mxfile host="65bd71144e">
|
2
|
-
<diagram id="X2d" name="Style-Plain">
|
3
|
-
<mxGraphModel dx="862" dy="583" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" background="#fafafa" math="0" shadow="0">
|
4
|
-
<root>
|
5
|
-
<mxCell id="page_root_X2d"/>
|
6
|
-
<mxCell id="node_root_X2d" parent="page_root_X2d"/>
|
7
|
-
<mxCell id="X2d-2" value="<p style="margin:0px;margin-left:4px;margin-top:4px;text-align:center"><b>Container</b></p><hr size="1"/>" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" parent="node_root_X2d" vertex="1">
|
8
|
-
<mxGeometry x="30" y="30" width="160" height="160" as="geometry"/>
|
9
|
-
</mxCell>
|
10
|
-
<mxCell id="X2d-3" value="<p style="margin:0px;margin-left:4px;margin-top:4px;text-align:center"><i>&lt;&lt; MixIn &gt;&gt;</i></p><p style="margin:0px;margin-left:4px;margin-top:4px;text-align:center"><b>Block Processor</b></p><hr size="1"/>" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" parent="node_root_X2d" vertex="1">
|
11
|
-
<mxGeometry x="250" y="30" width="160" height="160" as="geometry"/>
|
12
|
-
</mxCell>
|
13
|
-
<mxCell id="X2d-4" value="Documents" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333" parent="node_root_X2d" vertex="1">
|
14
|
-
<mxGeometry x="470" y="30" width="160" height="160" as="geometry"/>
|
15
|
-
</mxCell>
|
16
|
-
<mxCell id="X2d-5" value="<p style="margin:0px;margin-left:4px;margin-top:4px;text-align:center"><i>&lt;&lt; MixIn &gt;&gt;</i></p><p style="margin:0px;margin-left:4px;margin-top:4px;text-align:center"><b>Block Processor</b></p><hr size="1"/><p style="margin:0px;margin-left:4px;margin-top:4px">block: proc</p><p style="margin:0px;margin-left:4px;margin-top:4px">block_state: symbol</p><hr size="1"/><p style="margin:0px;margin-left:4px;margin-top:4px">depend_on()</p>" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" parent="node_root_X2d" vertex="1">
|
17
|
-
<mxGeometry x="690" y="30" width="160" height="160" as="geometry"/>
|
18
|
-
</mxCell>
|
19
|
-
<mxCell id="4tbYCbTjaN7O87TdMOiT-0" value="<div style="color: rgb(212 , 212 , 212) ; background-color: rgb(30 , 30 , 30) ; font-family: &#34;menlo&#34; , &#34;monaco&#34; , &#34;courier new&#34; , monospace ; line-height: 18px"><span style="color: #ce9178">db_schema.json</span></div>" style="shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=15;" vertex="1" parent="node_root_X2d">
|
20
|
-
<mxGeometry x="50" y="199" width="60" height="80" as="geometry"/>
|
21
|
-
</mxCell>
|
22
|
-
<mxCell id="4tbYCbTjaN7O87TdMOiT-1" value="11111111" style="shape=datastore;whiteSpace=wrap;html=1;" vertex="1" parent="node_root_X2d">
|
23
|
-
<mxGeometry x="182" y="112" width="60" height="60" as="geometry"/>
|
24
|
-
</mxCell>
|
25
|
-
<mxCell id="4tbYCbTjaN7O87TdMOiT-2" value="db_schema.json" style="strokeWidth=1;html=1;shape=mxgraph.flowchart.database;whiteSpace=wrap;" vertex="1" parent="node_root_X2d">
|
26
|
-
<mxGeometry x="193" y="249" width="138" height="60" as="geometry"/>
|
27
|
-
</mxCell>
|
28
|
-
</root>
|
29
|
-
</mxGraphModel>
|
30
|
-
</diagram>
|
31
|
-
</mxfile>
|
data/docs/domain_model.svg
DELETED
@@ -1,3 +0,0 @@
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
-
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
3
|
-
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="822px" height="162px" viewBox="-0.5 -0.5 822 162"><defs/><g><rect x="0" y="0" width="160" height="160" fill="#ffe6cc" stroke="#d79b00" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 162px; height: 160px; padding-top: 0px; margin-left: 0px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 160px; height: 160px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; overflow-wrap: normal;"><p style="margin: 0px ; margin-left: 4px ; margin-top: 4px ; text-align: center"><b>Container</b></p><hr size="1" /></div></div></div></foreignObject><text x="0" y="84" fill="#333333" font-family="Helvetica" font-size="12px">Container</text></switch></g><rect x="220" y="0" width="160" height="160" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 162px; height: 160px; padding-top: 0px; margin-left: 220px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 160px; height: 160px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; overflow-wrap: normal;"><p style="margin: 0px ; margin-left: 4px ; margin-top: 4px ; text-align: center"><i><< MixIn >></i></p><p style="margin: 0px ; margin-left: 4px ; margin-top: 4px ; text-align: center"><b>Block Processor</b></p><hr size="1" /></div></div></div></foreignObject><text x="220" y="84" fill="#333333" font-family="Helvetica" font-size="12px"><< MixIn >>...</text></switch></g><rect x="440" y="0" width="160" height="160" fill="#f5f5f5" stroke="#666666" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 158px; height: 1px; padding-top: 80px; margin-left: 441px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Documents</div></div></div></foreignObject><text x="520" y="84" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">Documents</text></switch></g><rect x="660" y="0" width="160" height="160" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 162px; height: 160px; padding-top: 0px; margin-left: 660px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 160px; height: 160px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; overflow-wrap: normal;"><p style="margin: 0px ; margin-left: 4px ; margin-top: 4px ; text-align: center"><i><< MixIn >></i></p><p style="margin: 0px ; margin-left: 4px ; margin-top: 4px ; text-align: center"><b>Block Processor</b></p><hr size="1" /><p style="margin: 0px ; margin-left: 4px ; margin-top: 4px">block: proc</p><p style="margin: 0px ; margin-left: 4px ; margin-top: 4px">block_state: symbol</p><hr size="1" /><p style="margin: 0px ; margin-left: 4px ; margin-top: 4px">depend_on()</p></div></div></div></foreignObject><text x="660" y="84" fill="#333333" font-family="Helvetica" font-size="12px"><< MixIn >>...</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg>
|