bpmn-js-rails 0.1.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.
Files changed (63) hide show
  1. checksums.yaml +7 -0
  2. data/Rakefile +6 -0
  3. data/app/assets/javascripts/bpmn-js/bpmn-modeler.production.min.js +199 -0
  4. data/app/assets/javascripts/bpmn-js/bpmn-viewer.production.min.js +22 -0
  5. data/app/assets/javascripts/dmn-js/dmn-modeler.production.min.js +194 -0
  6. data/app/assets/javascripts/dmn-js/dmn-viewer.production.min.js +16 -0
  7. data/app/assets/javascripts/form-js/form-editor.umd.js +78936 -0
  8. data/app/assets/javascripts/form-js/form-viewer.umd.js +54147 -0
  9. data/app/assets/stylesheets/bpmn-js/bpmn-font/css/bpmn-codes.css +108 -0
  10. data/app/assets/stylesheets/bpmn-js/bpmn-font/css/bpmn-embedded.css +166 -0
  11. data/app/assets/stylesheets/bpmn-js/bpmn-font/css/bpmn.css +164 -0
  12. data/app/assets/stylesheets/bpmn-js/bpmn-font/font/bpmn.eot +0 -0
  13. data/app/assets/stylesheets/bpmn-js/bpmn-font/font/bpmn.svg +224 -0
  14. data/app/assets/stylesheets/bpmn-js/bpmn-font/font/bpmn.ttf +0 -0
  15. data/app/assets/stylesheets/bpmn-js/bpmn-font/font/bpmn.woff +0 -0
  16. data/app/assets/stylesheets/bpmn-js/bpmn-font/font/bpmn.woff2 +0 -0
  17. data/app/assets/stylesheets/bpmn-js/bpmn-js.css +145 -0
  18. data/app/assets/stylesheets/bpmn-js/diagram-js.css +1011 -0
  19. data/app/assets/stylesheets/dmn-js/diagram-js.css +1011 -0
  20. data/app/assets/stylesheets/dmn-js/dmn-font/css/dmn-codes.css +41 -0
  21. data/app/assets/stylesheets/dmn-js/dmn-font/css/dmn-embedded.css +98 -0
  22. data/app/assets/stylesheets/dmn-js/dmn-font/css/dmn.css +97 -0
  23. data/app/assets/stylesheets/dmn-js/dmn-font/font/dmn.eot +0 -0
  24. data/app/assets/stylesheets/dmn-js/dmn-font/font/dmn.svg +90 -0
  25. data/app/assets/stylesheets/dmn-js/dmn-font/font/dmn.ttf +0 -0
  26. data/app/assets/stylesheets/dmn-js/dmn-font/font/dmn.woff +0 -0
  27. data/app/assets/stylesheets/dmn-js/dmn-font/font/dmn.woff2 +0 -0
  28. data/app/assets/stylesheets/dmn-js/dmn-js-boxed-expression-controls.css +130 -0
  29. data/app/assets/stylesheets/dmn-js/dmn-js-boxed-expression.css +186 -0
  30. data/app/assets/stylesheets/dmn-js/dmn-js-decision-table-controls.css +301 -0
  31. data/app/assets/stylesheets/dmn-js/dmn-js-decision-table.css +580 -0
  32. data/app/assets/stylesheets/dmn-js/dmn-js-drd.css +95 -0
  33. data/app/assets/stylesheets/dmn-js/dmn-js-literal-expression.css +165 -0
  34. data/app/assets/stylesheets/dmn-js/dmn-js-shared.css +221 -0
  35. data/app/assets/stylesheets/form-js/form-js-editor.css +2342 -0
  36. data/app/assets/stylesheets/form-js/form-js.css +3694 -0
  37. data/app/helpers/bpmn_js_rails/view_helper.rb +291 -0
  38. data/app/javascript/bpmn_js_rails/controllers/bpmn_js_modeler_controller.js +85 -0
  39. data/app/javascript/bpmn_js_rails/controllers/bpmn_js_viewer_controller.js +46 -0
  40. data/app/javascript/bpmn_js_rails/controllers/dmn_js_modeler_controller.js +102 -0
  41. data/app/javascript/bpmn_js_rails/controllers/dmn_js_viewer_controller.js +45 -0
  42. data/app/javascript/bpmn_js_rails/controllers/form_js_editor_controller.js +80 -0
  43. data/app/javascript/bpmn_js_rails/controllers/form_js_viewer_controller.js +52 -0
  44. data/app/javascript/bpmn_js_rails/index.js +34 -0
  45. data/app/models/bpmn_js_rails/decision.rb +60 -0
  46. data/app/models/bpmn_js_rails/diagram.rb +51 -0
  47. data/app/models/bpmn_js_rails/form.rb +32 -0
  48. data/config/importmap.rb +7 -0
  49. data/config/routes.rb +2 -0
  50. data/db/migrate/20260319000001_create_bpmn_js_rails_diagrams.rb +15 -0
  51. data/db/migrate/20260319000002_create_bpmn_js_rails_forms.rb +15 -0
  52. data/db/migrate/20260319000003_create_bpmn_js_rails_decisions.rb +15 -0
  53. data/lib/bpmn-js-rails.rb +1 -0
  54. data/lib/bpmn_js_rails/engine.rb +30 -0
  55. data/lib/bpmn_js_rails/version.rb +3 -0
  56. data/lib/bpmn_js_rails/version.rb.erb +3 -0
  57. data/lib/bpmn_js_rails.rb +5 -0
  58. data/lib/generators/bpmn_js_rails/install/install_generator.rb +58 -0
  59. data/lib/generators/bpmn_js_rails/install/templates/create_bpmn_js_rails_decisions.rb.erb +15 -0
  60. data/lib/generators/bpmn_js_rails/install/templates/create_bpmn_js_rails_diagrams.rb.erb +15 -0
  61. data/lib/generators/bpmn_js_rails/install/templates/create_bpmn_js_rails_forms.rb.erb +15 -0
  62. data/lib/tasks/form_js_rails_tasks.rake +4 -0
  63. metadata +116 -0
@@ -0,0 +1,1011 @@
1
+ /**
2
+ * color definitions
3
+ */
4
+ .djs-parent {
5
+ --color-grey-225-10-15: hsl(225, 10%, 15%);
6
+ --color-grey-225-10-35: hsl(225, 10%, 35%);
7
+ --color-grey-225-10-55: hsl(225, 10%, 55%);
8
+ --color-grey-225-10-75: hsl(225, 10%, 75%);
9
+ --color-grey-225-10-80: hsl(225, 10%, 80%);
10
+ --color-grey-225-10-85: hsl(225, 10%, 85%);
11
+ --color-grey-225-10-90: hsl(225, 10%, 90%);
12
+ --color-grey-225-10-95: hsl(225, 10%, 95%);
13
+ --color-grey-225-10-97: hsl(225, 10%, 97%);
14
+
15
+ --color-blue-205-100-45: hsl(205, 100%, 45%);
16
+ --color-blue-205-100-45-opacity-30: hsla(205, 100%, 45%, 30%);
17
+ --color-blue-205-100-50: hsl(205, 100%, 50%);
18
+ --color-blue-205-100-50-opacity-15: hsla(205, 100%, 50%, 15%);
19
+ --color-blue-205-100-70: hsl(205, 100%, 75%);
20
+ --color-blue-205-100-95: hsl(205, 100%, 95%);
21
+
22
+ --color-green-150-86-44: hsl(150, 86%, 44%);
23
+
24
+ --color-red-360-100-40: hsl(360, 100%, 40%);
25
+ --color-red-360-100-45: hsl(360, 100%, 45%);
26
+ --color-red-360-100-92: hsl(360, 100%, 92%);
27
+ --color-red-360-100-97: hsl(360, 100%, 97%);
28
+
29
+ --color-white: hsl(0, 0%, 100%);
30
+ --color-black: hsl(0, 0%, 0%);
31
+ --color-black-opacity-10: hsla(0, 0%, 0%, 10%);
32
+ --color-black-opacity-30: hsla(0, 0%, 0%, 30%);
33
+
34
+ --canvas-fill-color: var(--color-white);
35
+
36
+ --bendpoint-fill-color: var(--color-blue-205-100-45);
37
+ --bendpoint-stroke-color: var(--canvas-fill-color);
38
+
39
+ --context-pad-entry-background-color: var(--color-white);
40
+ --context-pad-entry-hover-background-color: var(--color-grey-225-10-95);
41
+
42
+ --element-dragger-color: var(--color-blue-205-100-50);
43
+ --element-hover-outline-fill-color: var(--color-blue-205-100-45);
44
+ --element-selected-outline-stroke-color: var(--color-blue-205-100-50);
45
+ --element-selected-outline-secondary-stroke-color: var(--color-blue-205-100-70);
46
+
47
+ --lasso-fill-color: var(--color-blue-205-100-50-opacity-15);
48
+ --lasso-stroke-color: var(--element-selected-outline-stroke-color);
49
+
50
+ --palette-entry-color: var(--color-grey-225-10-15);
51
+ --palette-entry-hover-color: var(--color-blue-205-100-45);
52
+ --palette-entry-selected-color: var(--color-blue-205-100-50);
53
+ --palette-separator-color: var(--color-grey-225-10-75);
54
+ --palette-toggle-hover-background-color: var(--color-grey-225-10-55);
55
+ --palette-background-color: var(--color-grey-225-10-97);
56
+ --palette-border-color: var(--color-grey-225-10-75);
57
+
58
+ --popup-font-family: "IBM Plex Sans", sans-serif;
59
+ --popup-font-size: 14px;
60
+ --popup-header-entry-selected-color: var(--color-blue-205-100-50);
61
+ --popup-header-font-weight: bolder;
62
+ --popup-header-group-divider-color: var(--color-grey-225-10-75);
63
+ --popup-background-color: var(--color-white);
64
+ --popup-border-color: transparent;
65
+ --popup-shadow-color: var(--color-black-opacity-30);
66
+ --popup-disabled-color: var(--color-grey-225-10-35);
67
+ --popup-description-color: var(--color-grey-225-10-55);
68
+ --popup-no-results-color: var(--color-grey-225-10-55);
69
+ --popup-entry-title-color: var(--color-grey-225-10-55);
70
+ --popup-entry-hover-color: var(--color-grey-225-10-95);
71
+ --popup-search-border-color: var(--color-grey-225-10-75);
72
+ --popup-search-focus-border-color: var(--color-blue-205-100-50);
73
+ --popup-search-focus-background-color: var(--color-blue-205-100-95);
74
+
75
+ --resizer-fill-color: var(--color-blue-205-100-45);
76
+ --resizer-stroke-color: var(--canvas-fill-color);
77
+
78
+ --search-font-family: "IBM Plex Sans", sans-serif;
79
+ --search-font-size: 14px;
80
+ --search-container-background-color: var(--color-white);
81
+ --search-shadow-color: var(--color-black-opacity-30);
82
+ --search-input-border-color: var(--color-grey-225-10-75);
83
+ --search-input-focus-border-color: var(--color-blue-205-100-50);
84
+ --search-input-focus-background-color: var(--color-blue-205-100-95);
85
+ --search-result-hover-background-color: var(--color-grey-225-10-95);
86
+ --search-result-secondary-color: var(--color-grey-225-10-55);
87
+ --search-preselected-background-color: var(--color-blue-205-100-50-opacity-15);
88
+
89
+ --shape-attach-allowed-stroke-color: var(--color-blue-205-100-50);
90
+ --shape-connect-allowed-fill-color: var(--color-grey-225-10-97);
91
+ --shape-drop-allowed-fill-color: var(--color-grey-225-10-97);
92
+ --shape-drop-not-allowed-fill-color: var(--color-red-360-100-97);
93
+ --shape-resize-preview-stroke-color: var(--color-blue-205-100-50);
94
+
95
+ --snap-line-stroke-color: var(--color-blue-205-100-45-opacity-30);
96
+
97
+ --space-tool-crosshair-stroke-color: var(--color-black);
98
+
99
+ --tooltip-error-background-color: var(--color-red-360-100-97);
100
+ --tooltip-error-border-color: var(--color-red-360-100-45);
101
+ --tooltip-error-color: var(--color-red-360-100-45);
102
+ }
103
+
104
+ /**
105
+ * SVG styles
106
+ */
107
+
108
+ .djs-container svg.drop-not-ok {
109
+ background: var(--shape-drop-not-allowed-fill-color) !important;
110
+ }
111
+
112
+ .djs-container svg.new-parent {
113
+ background: var(--shape-drop-allowed-fill-color) !important;
114
+ }
115
+
116
+ /**
117
+ * outline styles
118
+ */
119
+
120
+ .djs-outline,
121
+ .djs-selection-outline {
122
+ fill: none;
123
+ shape-rendering: geometricPrecision;
124
+ stroke-width: 2px;
125
+ }
126
+
127
+ .djs-outline {
128
+ visibility: hidden;
129
+ }
130
+
131
+ .djs-selection-outline {
132
+ stroke: var(--element-selected-outline-stroke-color);
133
+ }
134
+
135
+ .djs-element.selected .djs-outline {
136
+ visibility: visible;
137
+
138
+ stroke: var(--element-selected-outline-stroke-color);
139
+ }
140
+
141
+ .djs-connection.selected .djs-outline {
142
+ display: none;
143
+ }
144
+
145
+ .djs-multi-select .djs-element.selected .djs-outline {
146
+ stroke: var(--element-selected-outline-secondary-stroke-color);
147
+ display: block;
148
+ }
149
+
150
+ .djs-shape.connect-ok .djs-visual > :nth-child(1) {
151
+ fill: var(--shape-connect-allowed-fill-color) !important;
152
+ }
153
+
154
+ .djs-shape.connect-not-ok .djs-visual > :nth-child(1),
155
+ .djs-shape.drop-not-ok .djs-visual > :nth-child(1) {
156
+ fill: var(--shape-drop-not-allowed-fill-color) !important;
157
+ }
158
+
159
+ .djs-shape.new-parent .djs-visual > :nth-child(1) {
160
+ fill: var(--shape-drop-allowed-fill-color) !important;
161
+ }
162
+
163
+
164
+ /* Override move cursor during drop and connect */
165
+ .drop-not-ok,
166
+ .connect-not-ok,
167
+ .drop-not-ok *,
168
+ .connect-not-ok * {
169
+ cursor: not-allowed !important;
170
+ }
171
+
172
+ .drop-ok,
173
+ .connect-ok,
174
+ .drop-ok *,
175
+ .connect-ok * {
176
+ cursor: default !important;
177
+ }
178
+
179
+ .djs-element.attach-ok .djs-visual > :nth-child(1) {
180
+ stroke-width: 5px !important;
181
+ stroke: var(--shape-attach-allowed-stroke-color) !important;
182
+ }
183
+
184
+ .djs-frame.connect-not-ok .djs-visual > :nth-child(1),
185
+ .djs-frame.drop-not-ok .djs-visual > :nth-child(1) {
186
+ stroke-width: 3px !important;
187
+ stroke: var(--shape-drop-not-allowed-fill-color) !important;
188
+ fill: none !important;
189
+ }
190
+
191
+ /**
192
+ * Selection box style
193
+ *
194
+ */
195
+ .djs-lasso-overlay {
196
+ fill: var(--lasso-fill-color);
197
+ stroke: var(--lasso-stroke-color);
198
+ stroke-width: 2px;
199
+ shape-rendering: geometricPrecision;
200
+ pointer-events: none;
201
+ }
202
+
203
+ /**
204
+ * Resize styles
205
+ */
206
+ .djs-resize-overlay {
207
+ fill: none;
208
+
209
+ stroke-dasharray: 5 1 3 1;
210
+ stroke: var(--shape-resize-preview-stroke-color);
211
+
212
+ pointer-events: none;
213
+ }
214
+
215
+ .djs-resizer-hit {
216
+ fill: none;
217
+ pointer-events: all;
218
+ }
219
+
220
+ .djs-resizer-visual {
221
+ fill: var(--resizer-fill-color);
222
+ stroke-width: 1px;
223
+ stroke: var(--resizer-stroke-color);
224
+ shape-rendering: geometricPrecision;
225
+ }
226
+
227
+ .djs-resizer:hover .djs-resizer-visual {
228
+ stroke: var(--resizer-stroke-color);
229
+ stroke-opacity: 1;
230
+ }
231
+
232
+ .djs-cursor-resize-ns,
233
+ .djs-resizer-n,
234
+ .djs-resizer-s {
235
+ cursor: ns-resize;
236
+ }
237
+
238
+ .djs-cursor-resize-ew,
239
+ .djs-resizer-e,
240
+ .djs-resizer-w {
241
+ cursor: ew-resize;
242
+ }
243
+
244
+ .djs-cursor-resize-nwse,
245
+ .djs-resizer-nw,
246
+ .djs-resizer-se {
247
+ cursor: nwse-resize;
248
+ }
249
+
250
+ .djs-cursor-resize-nesw,
251
+ .djs-resizer-ne,
252
+ .djs-resizer-sw {
253
+ cursor: nesw-resize;
254
+ }
255
+
256
+ .djs-shape.djs-resizing > .djs-outline {
257
+ visibility: hidden !important;
258
+ }
259
+
260
+ .djs-shape.djs-resizing > .djs-resizer {
261
+ visibility: hidden;
262
+ }
263
+
264
+ .djs-dragger > .djs-resizer {
265
+ visibility: hidden;
266
+ }
267
+
268
+ /**
269
+ * drag styles
270
+ */
271
+ .djs-dragger * {
272
+ fill: none !important;
273
+ stroke: var(--element-dragger-color) !important;
274
+ }
275
+
276
+ .djs-dragger tspan,
277
+ .djs-dragger text {
278
+ fill: var(--element-dragger-color) !important;
279
+ stroke: none !important;
280
+ }
281
+
282
+ .djs-dragger marker circle,
283
+ .djs-dragger marker path,
284
+ .djs-dragger marker polygon,
285
+ .djs-dragger marker polyline,
286
+ .djs-dragger marker rect {
287
+ fill: var(--element-dragger-color) !important;
288
+ stroke: none !important;
289
+ }
290
+
291
+ .djs-dragger marker text,
292
+ .djs-dragger marker tspan {
293
+ fill: none !important;
294
+ stroke: var(--element-dragger-color) !important;
295
+ }
296
+
297
+ .djs-dragging,
298
+ .djs-dragging > * {
299
+ opacity: 0.3 !important;
300
+ pointer-events: none !important;
301
+ }
302
+
303
+ /**
304
+ * no pointer events for visual
305
+ */
306
+ .djs-visual,
307
+ .djs-outline {
308
+ pointer-events: none;
309
+ }
310
+
311
+ .djs-element.attach-ok .djs-hit {
312
+ stroke-width: 60px !important;
313
+ }
314
+
315
+ /**
316
+ * all pointer events for hit shape
317
+ */
318
+ .djs-element > .djs-hit-all,
319
+ .djs-element > .djs-hit-no-move {
320
+ pointer-events: all;
321
+ }
322
+
323
+ .djs-element > .djs-hit-stroke,
324
+ .djs-element > .djs-hit-click-stroke {
325
+ pointer-events: stroke;
326
+ }
327
+
328
+ /**
329
+ * shape / connection basic styles
330
+ */
331
+ .djs-connection .djs-visual {
332
+ stroke-width: 2px;
333
+ fill: none;
334
+ }
335
+
336
+ .djs-cursor-grab {
337
+ cursor: -webkit-grab;
338
+ cursor: -moz-grab;
339
+ cursor: grab;
340
+ }
341
+
342
+ .djs-cursor-grabbing {
343
+ cursor: -webkit-grabbing;
344
+ cursor: -moz-grabbing;
345
+ cursor: grabbing;
346
+ }
347
+
348
+ .djs-cursor-crosshair {
349
+ cursor: crosshair;
350
+ }
351
+
352
+ .djs-cursor-move {
353
+ cursor: move;
354
+ }
355
+
356
+ .djs-cursor-resize-ns {
357
+ cursor: ns-resize;
358
+ }
359
+
360
+ .djs-cursor-resize-ew {
361
+ cursor: ew-resize;
362
+ }
363
+
364
+
365
+ /**
366
+ * snapping
367
+ */
368
+ .djs-snap-line {
369
+ stroke: var(--snap-line-stroke-color);
370
+ stroke-linecap: round;
371
+ stroke-width: 2px;
372
+ pointer-events: none;
373
+ }
374
+
375
+ /**
376
+ * snapping
377
+ */
378
+ .djs-crosshair {
379
+ stroke: var(--space-tool-crosshair-stroke-color);
380
+ stroke-linecap: round;
381
+ stroke-width: 1px;
382
+ pointer-events: none;
383
+ shape-rendering: geometricPrecision;
384
+ stroke-dasharray: 5, 5;
385
+ }
386
+
387
+ /**
388
+ * palette
389
+ */
390
+
391
+ .djs-palette {
392
+ position: absolute;
393
+ left: 20px;
394
+ top: 20px;
395
+
396
+ box-sizing: border-box;
397
+ width: 48px;
398
+ }
399
+
400
+ .djs-palette .separator {
401
+ margin: 5px;
402
+ padding-top: 5px;
403
+
404
+ border: none;
405
+ border-bottom: solid 1px var(--palette-separator-color);
406
+
407
+ clear: both;
408
+ }
409
+
410
+ .djs-palette .entry:before {
411
+ vertical-align: initial;
412
+ }
413
+
414
+ .djs-palette .djs-palette-toggle {
415
+ cursor: pointer;
416
+ }
417
+
418
+ .djs-palette .entry,
419
+ .djs-palette .djs-palette-toggle {
420
+ color: var(--palette-entry-color);
421
+ font-size: 30px;
422
+
423
+ text-align: center;
424
+ }
425
+
426
+ .djs-palette .entry {
427
+ float: left;
428
+ }
429
+
430
+ .djs-palette .entry img {
431
+ max-width: 100%;
432
+ }
433
+
434
+ .djs-palette .djs-palette-entries:after {
435
+ content: '';
436
+ display: table;
437
+ clear: both;
438
+ }
439
+
440
+ .djs-palette .djs-palette-toggle:hover {
441
+ background: var(--palette-toggle-hover-background-color);
442
+ }
443
+
444
+ .djs-palette .entry:hover {
445
+ color: var(--palette-entry-hover-color);
446
+ }
447
+
448
+ .djs-palette .highlighted-entry {
449
+ color: var(--palette-entry-selected-color) !important;
450
+ }
451
+
452
+ .djs-palette .entry,
453
+ .djs-palette .djs-palette-toggle {
454
+ width: 46px;
455
+ height: 46px;
456
+ line-height: 46px;
457
+ cursor: default;
458
+ }
459
+
460
+ /**
461
+ * Palette open / two-column layout is controlled via
462
+ * classes on the palette. Events to hook into palette
463
+ * changed life-cycle are available in addition.
464
+ */
465
+ .djs-palette.two-column.open {
466
+ width: 94px;
467
+ }
468
+
469
+ .djs-palette:not(.open) .djs-palette-entries {
470
+ display: none;
471
+ }
472
+
473
+ .djs-palette:not(.open) {
474
+ overflow: hidden;
475
+ }
476
+
477
+ .djs-palette.open .djs-palette-toggle {
478
+ display: none;
479
+ }
480
+
481
+ /**
482
+ * context-pad
483
+ */
484
+ .djs-context-pad {
485
+ position: absolute;
486
+ display: none;
487
+ pointer-events: none;
488
+ line-height: 1;
489
+ width: 72px;
490
+ z-index: 100;
491
+ }
492
+
493
+ .djs-context-pad .entry {
494
+ width: 22px;
495
+ height: 22px;
496
+ text-align: center;
497
+ display: inline-block;
498
+ font-size: 22px;
499
+ margin: 0 2px 2px 0;
500
+
501
+ border-radius: 3px;
502
+
503
+ cursor: default;
504
+
505
+ background-color: var(--context-pad-entry-background-color);
506
+ box-shadow: 0 0 2px 1px var(--context-pad-entry-background-color);
507
+ pointer-events: all;
508
+ vertical-align: middle;
509
+ }
510
+
511
+ .djs-context-pad .entry:hover {
512
+ background: var(--context-pad-entry-hover-background-color);
513
+ }
514
+
515
+ .djs-context-pad.open {
516
+ display: block;
517
+ }
518
+
519
+ /**
520
+ * popup styles
521
+ */
522
+ .djs-popup {
523
+ line-height: 1;
524
+ box-sizing: border-box;
525
+ width: min-content;
526
+ background: var(--popup-background-color);
527
+ overflow: hidden;
528
+ position: fixed;
529
+ z-index: 200;
530
+ box-shadow: 0px 2px 6px var(--popup-shadow-color);
531
+ border: solid 1px var(--popup-border-color);
532
+ min-width: 120px;
533
+ outline: none;
534
+ font-size: var(--popup-font-size);
535
+ font-family: var(--popup-font-family);
536
+ }
537
+
538
+ .djs-popup-search input {
539
+ width: 100%;
540
+ box-sizing: border-box;
541
+ font-size: var(--popup-font-size);
542
+ padding: 3px 6px 3px 28px;
543
+ border-radius: 2px;
544
+ border: solid 1px var(--popup-search-border-color);
545
+ line-height: 21px;
546
+ }
547
+
548
+ .djs-popup-search input:focus {
549
+ background-color: var(--popup-search-focus-background-color);
550
+ border: solid 1px var(--popup-search-focus-border-color);
551
+ outline: none;
552
+ }
553
+
554
+ .djs-popup-header {
555
+ display: flex;
556
+ align-items: stretch;
557
+ line-height: 20px;
558
+ margin: 10px 12px 10px 12px;
559
+ }
560
+
561
+ .djs-popup-header .entry {
562
+ border-radius: 2px;
563
+ }
564
+
565
+ .djs-popup button.entry {
566
+ padding: 0;
567
+ background: transparent;
568
+ border: 0;
569
+ }
570
+
571
+ .djs-popup-header .entry.active {
572
+ color: var(--popup-header-entry-selected-color);
573
+ }
574
+
575
+ .djs-popup-header .entry.disabled {
576
+ color: inherit;
577
+ }
578
+
579
+ .djs-popup-header-group {
580
+ display: flex;
581
+ flex-direction: row;
582
+ align-items: center;
583
+ list-style: none;
584
+ margin: 0;
585
+ padding: 0;
586
+ }
587
+
588
+ .djs-popup-header-group .entry {
589
+ display: flex;
590
+ flex-direction: row;
591
+ align-items: center;
592
+ }
593
+
594
+ .djs-popup-header-group + .djs-popup-header-group:before {
595
+ content: '';
596
+ width: 1px;
597
+ height: 20px;
598
+ background: var(--popup-header-group-divider-color);
599
+ margin: 0 5px;
600
+ }
601
+
602
+ .djs-popup-search {
603
+ position: relative;
604
+ width: auto;
605
+ margin: 10px 12px;
606
+ }
607
+
608
+ .djs-popup-title {
609
+ font-size: var(--popup-font-size);
610
+ font-weight: var(--popup-header-font-weight);
611
+ flex: 1;
612
+ margin: 0;
613
+ }
614
+
615
+ .djs-popup-search-icon {
616
+ position: absolute;
617
+ left: 8px;
618
+ top: 7px;
619
+ }
620
+
621
+ .djs-popup-results {
622
+ margin: 7px 3px 7px 12px;
623
+ list-style: none;
624
+ max-height: 280px;
625
+ overflow: auto;
626
+ padding-right: 9px;
627
+ }
628
+
629
+ .djs-popup-group {
630
+ margin: 0;
631
+ padding: 0;
632
+ width: 100%;
633
+ }
634
+
635
+ .djs-popup-body .entry,
636
+ .djs-popup-body .entry-header {
637
+ padding: 5px 7px;
638
+ cursor: default;
639
+ border-radius: 4px;
640
+ }
641
+
642
+ .djs-popup-body .entry-header {
643
+ font-weight: var(--popup-header-font-weight);
644
+ color: var(--popup-entry-title-color);
645
+ padding-left: 0;
646
+ }
647
+
648
+ .djs-popup [class*="icon"] .djs-popup-label,
649
+ .djs-popup-label:not(:first-child) {
650
+ margin-left: .5em;
651
+ }
652
+
653
+ .djs-popup [class*="icon"]:before,
654
+ .djs-popup-entry-icon {
655
+ width: 1em;
656
+ height: 1em;
657
+ display: inline-block;
658
+ font-size: 1.4em;
659
+ vertical-align: middle;
660
+ }
661
+
662
+ .djs-popup-body .entry-header:not(:first-child) {
663
+ margin-top: 8px;
664
+ margin-bottom: 2px;
665
+ }
666
+
667
+ .djs-popup-body .entry {
668
+ display: flex;
669
+ flex-direction: row;
670
+ align-items: stretch;
671
+ height: min-content;
672
+ }
673
+
674
+ .djs-popup .entry.selected {
675
+ background-color: var(--popup-entry-hover-color);
676
+ }
677
+
678
+ .djs-popup .entry.disabled {
679
+ color: var(--popup-disabled-color);
680
+ cursor: not-allowed;
681
+ }
682
+
683
+ .djs-popup-body .entry:not(:first-child) {
684
+ margin-top: 2px;
685
+ }
686
+
687
+ .djs-popup-entry-content {
688
+ display: flex;
689
+ flex-direction: column;
690
+ flex: 1;
691
+ overflow: hidden;
692
+ }
693
+
694
+ .djs-popup-entry-description {
695
+ color: var(--popup-description-color);
696
+ }
697
+
698
+ .djs-popup-label,
699
+ .djs-popup-entry-description {
700
+ line-height: 1.4em;
701
+ }
702
+
703
+ .djs-popup .entry,
704
+ .djs-popup .entry-header {
705
+ margin: 1px;
706
+ }
707
+
708
+ .djs-popup-title,
709
+ .djs-popup-label,
710
+ .djs-popup-entry-description,
711
+ .djs-popup .entry-header {
712
+ overflow: hidden;
713
+ text-overflow: ellipsis;
714
+ white-space: nowrap;
715
+ }
716
+
717
+ .djs-popup-entry-name {
718
+ display: flex;
719
+ }
720
+
721
+ .djs-popup-body {
722
+ flex-direction: column;
723
+ width: auto;
724
+ }
725
+
726
+ .djs-popup *::-webkit-scrollbar {
727
+ width: 6px;
728
+ }
729
+
730
+ .djs-popup *::-webkit-scrollbar-thumb {
731
+ border-radius: 3px;
732
+ background-color: rgba(0, 0, 0, 0.2);
733
+ }
734
+
735
+ .djs-popup *::-webkit-scrollbar-track {
736
+ box-shadow: none;
737
+ background: transparent;
738
+ margin: 0;
739
+ padding: 5px;
740
+ }
741
+
742
+ .djs-popup-no-results {
743
+ padding: 0 12px 12px 12px;
744
+ color: var(--popup-no-results-color);
745
+ }
746
+
747
+ .djs-popup-entry-docs {
748
+ flex: 0;
749
+ flex-direction: row;
750
+ align-items: center;
751
+ padding-left: 5px;
752
+ display: none;
753
+ }
754
+
755
+ .djs-popup-body .entry:hover .djs-popup-entry-docs {
756
+ display: flex;
757
+ }
758
+
759
+ .djs-popup-entry-docs svg {
760
+ vertical-align: middle;
761
+ margin: auto 2px auto 5px;
762
+ }
763
+
764
+ /**
765
+ * palette styles
766
+ */
767
+ .djs-palette {
768
+ background: var(--palette-background-color);
769
+ border: solid 1px var(--palette-border-color);
770
+ border-radius: 2px;
771
+ }
772
+
773
+ /**
774
+ * bendpoints
775
+ */
776
+ .djs-segment-dragger,
777
+ .djs-bendpoint {
778
+ display: none;
779
+ }
780
+
781
+ .djs-segment-dragger .djs-visual {
782
+ display: none;
783
+
784
+ fill: var(--bendpoint-fill-color);
785
+ stroke: var(--bendpoint-stroke-color);
786
+ stroke-width: 1px;
787
+ stroke-opacity: 1;
788
+ }
789
+
790
+ .djs-segment-dragger:hover .djs-visual {
791
+ display: block;
792
+ }
793
+
794
+ .djs-bendpoint .djs-visual {
795
+ fill: var(--bendpoint-fill-color);
796
+ stroke: var(--bendpoint-stroke-color);
797
+ stroke-width: 1px;
798
+ }
799
+
800
+ .djs-segment-dragger:hover,
801
+ .djs-bendpoints.hover .djs-segment-dragger,
802
+ .djs-bendpoints.selected .djs-segment-dragger,
803
+ .djs-bendpoint:hover,
804
+ .djs-bendpoints.hover .djs-bendpoint,
805
+ .djs-bendpoints.selected .djs-bendpoint {
806
+ display: block;
807
+ }
808
+
809
+ .djs-drag-active .djs-bendpoints * {
810
+ display: none;
811
+ }
812
+
813
+ .djs-bendpoints:not(.hover) .floating {
814
+ display: none;
815
+ }
816
+
817
+ .djs-segment-dragger:hover .djs-visual,
818
+ .djs-segment-dragger.djs-dragging .djs-visual,
819
+ .djs-bendpoint:hover .djs-visual,
820
+ .djs-bendpoint.floating .djs-visual {
821
+ fill: var(--bendpoint-fill-color);
822
+ stroke: var(--bendpoint-stroke-color);
823
+ stroke-opacity: 1;
824
+ }
825
+
826
+ .djs-bendpoint.floating .djs-hit {
827
+ pointer-events: none;
828
+ }
829
+
830
+ .djs-segment-dragger .djs-hit,
831
+ .djs-bendpoint .djs-hit {
832
+ fill: none;
833
+ pointer-events: all;
834
+ }
835
+
836
+ .djs-segment-dragger.horizontal .djs-hit {
837
+ cursor: ns-resize;
838
+ }
839
+
840
+ .djs-segment-dragger.vertical .djs-hit {
841
+ cursor: ew-resize;
842
+ }
843
+
844
+ .djs-segment-dragger.djs-dragging .djs-hit {
845
+ pointer-events: none;
846
+ }
847
+
848
+ .djs-updating,
849
+ .djs-updating > * {
850
+ pointer-events: none !important;
851
+ }
852
+
853
+ .djs-updating .djs-context-pad,
854
+ .djs-updating .djs-outline,
855
+ .djs-updating .djs-bendpoint,
856
+ .djs-multi-select .djs-bendpoint,
857
+ .djs-multi-select .djs-segment-dragger,
858
+ .connect-ok .djs-bendpoint,
859
+ .connect-not-ok .djs-bendpoint,
860
+ .drop-ok .djs-bendpoint,
861
+ .drop-not-ok .djs-bendpoint {
862
+ display: none !important;
863
+ }
864
+
865
+ .djs-segment-dragger.djs-dragging,
866
+ .djs-bendpoint.djs-dragging {
867
+ display: block;
868
+ opacity: 1.0;
869
+ }
870
+
871
+
872
+ /**
873
+ * tooltips
874
+ */
875
+ .djs-tooltip-error {
876
+ width: 160px;
877
+ padding: 6px;
878
+
879
+ background: var(--tooltip-error-background-color);
880
+ border: solid 1px var(--tooltip-error-border-color);
881
+ border-radius: 2px;
882
+ color: var(--tooltip-error-color);
883
+ font-size: 12px;
884
+ line-height: 16px;
885
+
886
+ opacity: 0.75;
887
+ }
888
+
889
+ .djs-tooltip-error:hover {
890
+ opacity: 1;
891
+ }
892
+
893
+
894
+ /**
895
+ * search pad
896
+ */
897
+ .djs-search-open .djs-context-pad {
898
+ display: none;
899
+ }
900
+
901
+ .djs-search-open .djs-connection.selected .djs-outline {
902
+ display: block;
903
+ }
904
+
905
+ .djs-search-container {
906
+ position: absolute;
907
+ top: 20px;
908
+ left: 0;
909
+ right: 0;
910
+ margin-left: auto;
911
+ margin-right: auto;
912
+
913
+ width: 25%;
914
+ min-width: 300px;
915
+ max-width: 400px;
916
+ z-index: 10;
917
+
918
+ font-family: var(--search-font-family);
919
+ font-size: var(--search-font-size);
920
+ border-radius: 2px;
921
+ box-shadow: 0px 2px 6px var(--search-shadow-color);
922
+ }
923
+
924
+ .djs-search-container:not(.open) {
925
+ display: none;
926
+ }
927
+
928
+ .djs-search-input {
929
+ position: relative;
930
+ }
931
+
932
+ .djs-search-input svg {
933
+ position: absolute;
934
+ left: 8px;
935
+ top: 7px;
936
+ }
937
+
938
+ .djs-search-input input {
939
+ font-size: var(--search-font-size);
940
+ width: 100%;
941
+ padding: 3px 6px 3px 28px;
942
+ border: 1px solid var(--search-input-border-color);
943
+ border-radius: 2px;
944
+ box-sizing: border-box;
945
+ line-height: 21px;
946
+ }
947
+
948
+ .djs-search-input input:focus {
949
+ background-color: var(--search-input-focus-background-color);
950
+ border: solid 1px var(--search-input-focus-border-color);
951
+ outline: none;
952
+ }
953
+
954
+ .djs-search-results {
955
+ position: relative;
956
+ overflow-y: auto;
957
+ max-height: 200px;
958
+ background: var(--search-container-background-color);
959
+ }
960
+
961
+ .djs-search-result {
962
+ padding: 6px 8px;
963
+ }
964
+
965
+ .djs-search-result-primary {
966
+ margin: 0 0 3px;
967
+ text-overflow: ellipsis;
968
+ overflow: hidden;
969
+ white-space: nowrap;
970
+ }
971
+
972
+ .djs-search-result-secondary {
973
+ font-family: monospace;
974
+ margin: 0;
975
+ text-overflow: ellipsis;
976
+ overflow: hidden;
977
+ white-space: nowrap;
978
+ color: var(--search-result-secondary-color);
979
+ }
980
+
981
+ .djs-search-result:hover {
982
+ background: var(--search-result-hover-background-color);
983
+ }
984
+
985
+ .djs-search-result-selected {
986
+ background: var(--search-result-hover-background-color);
987
+ }
988
+
989
+ .djs-search-result-selected:hover {
990
+ background: var(--search-result-hover-background-color);
991
+ }
992
+
993
+ .djs-search-open .djs-element .djs-outline {
994
+ fill: var(--search-preselected-background-color) !important;
995
+ }
996
+
997
+ /**
998
+ * hidden styles
999
+ */
1000
+ .djs-element-hidden,
1001
+ .djs-element-hidden .djs-hit,
1002
+ .djs-element-hidden .djs-outline,
1003
+ .djs-label-hidden .djs-label {
1004
+ display: none !important;
1005
+ }
1006
+
1007
+ .djs-element .djs-hit-stroke,
1008
+ .djs-element .djs-hit-click-stroke,
1009
+ .djs-element .djs-hit-all {
1010
+ cursor: move;
1011
+ }