@nmmty/lazycanvas 0.5.3 → 0.6.0-dev.321c2e

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 (33) hide show
  1. package/dist/index.d.ts +1 -1
  2. package/dist/index.js +2 -1
  3. package/dist/structures/components/BaseLayer.d.ts +3 -2
  4. package/dist/structures/components/BaseLayer.js +15 -10
  5. package/dist/structures/components/BezierLayer.d.ts +6 -0
  6. package/dist/structures/components/BezierLayer.js +23 -4
  7. package/dist/structures/components/ClearLayer.d.ts +1 -0
  8. package/dist/structures/components/ClearLayer.js +14 -8
  9. package/dist/structures/components/ImageLayer.d.ts +6 -0
  10. package/dist/structures/components/ImageLayer.js +21 -5
  11. package/dist/structures/components/LineLayer.d.ts +6 -0
  12. package/dist/structures/components/LineLayer.js +27 -6
  13. package/dist/structures/components/MorphLayer.d.ts +6 -0
  14. package/dist/structures/components/MorphLayer.js +25 -6
  15. package/dist/structures/components/Path2DLayer.d.ts +6 -0
  16. package/dist/structures/components/Path2DLayer.js +23 -1
  17. package/dist/structures/components/QuadraticLayer.d.ts +6 -0
  18. package/dist/structures/components/QuadraticLayer.js +23 -4
  19. package/dist/structures/components/TextLayer.d.ts +11 -5
  20. package/dist/structures/components/TextLayer.js +35 -23
  21. package/dist/structures/helpers/Gradient.d.ts +48 -11
  22. package/dist/structures/helpers/Gradient.js +133 -8
  23. package/dist/structures/helpers/index.d.ts +1 -0
  24. package/dist/structures/helpers/index.js +1 -0
  25. package/dist/structures/helpers/readers/JSONReader.js +3 -3
  26. package/dist/structures/helpers/readers/YAMLReader.d.ts +22 -0
  27. package/dist/structures/helpers/readers/YAMLReader.js +73 -0
  28. package/dist/utils/utils.d.ts +13 -3
  29. package/dist/utils/utils.js +59 -92
  30. package/package.json +5 -4
  31. package/test.png +0 -0
  32. package/test.yaml +1780 -0
  33. package/animation.gif +0 -0
package/test.yaml ADDED
@@ -0,0 +1,1780 @@
1
+ options:
2
+ width: 800
3
+ height: 800
4
+ animated: false
5
+ exportType: buffer
6
+ flag: 4
7
+ animation:
8
+ frameRate: 30
9
+ maxColors: 256
10
+ colorSpace: rgb565
11
+ loop: true
12
+ transparency: true
13
+ utils:
14
+ clear: true
15
+ buffer:
16
+ size: 0
17
+ layers:
18
+ - id: morph-2ru4gek8a
19
+ type: morph
20
+ zIndex: 1
21
+ visible: true
22
+ props:
23
+ x: 50%
24
+ 'y': 50%
25
+ centring: center
26
+ filter: ''
27
+ opacity: 1
28
+ filled: false
29
+ fillStyle: rgb(255, 255, 255)
30
+ transform: {}
31
+ globalComposite: source-over
32
+ size:
33
+ width: 800
34
+ height: 800
35
+ radius:
36
+ all: 0
37
+ stroke:
38
+ width: 1
39
+ cap: butt
40
+ join: miter
41
+ dashOffset: 0
42
+ dash: []
43
+ miterLimit: 10
44
+ - id: rotation-test
45
+ type: group
46
+ visible: true
47
+ zIndex: 1
48
+ layers:
49
+ - id: text-ww7icr1yk
50
+ type: text
51
+ zIndex: 1
52
+ visible: true
53
+ props:
54
+ x: 690
55
+ 'y': 60
56
+ centring: center
57
+ filter: ''
58
+ opacity: 1
59
+ filled: true
60
+ fillStyle: '#000'
61
+ transform: {}
62
+ globalComposite: source-over
63
+ text: rotation
64
+ font:
65
+ family: GeistMono
66
+ size: 35
67
+ weight: 900
68
+ multiline:
69
+ enabled: false
70
+ spacing: 1.1
71
+ size:
72
+ width: vw
73
+ height: 0
74
+ align: center
75
+ baseline: middle
76
+ - id: 0deg
77
+ type: morph
78
+ zIndex: 1
79
+ visible: true
80
+ props:
81
+ x: 50
82
+ 'y': 50
83
+ centring: center
84
+ filter: ''
85
+ opacity: 1
86
+ filled: false
87
+ fillStyle: rgba(0, 0, 0, 0.8)
88
+ transform:
89
+ rotate: 0
90
+ globalComposite: source-over
91
+ size:
92
+ width: 60
93
+ height: 20
94
+ radius:
95
+ all: 5
96
+ stroke:
97
+ width: 1
98
+ cap: butt
99
+ join: miter
100
+ dashOffset: 0
101
+ dash: []
102
+ miterLimit: 10
103
+ - id: text-vyj4bx319
104
+ type: text
105
+ zIndex: 1
106
+ visible: true
107
+ props:
108
+ x: link-x-0deg-0
109
+ 'y': link-y-0deg-60
110
+ centring: center
111
+ filter: ''
112
+ opacity: 1
113
+ filled: true
114
+ fillStyle: '#000'
115
+ transform: {}
116
+ globalComposite: source-over
117
+ text: 0°
118
+ font:
119
+ family: GeistMono
120
+ size: 25
121
+ weight: 400
122
+ multiline:
123
+ enabled: false
124
+ spacing: 1.1
125
+ size:
126
+ width: vw
127
+ height: 0
128
+ align: center
129
+ - id: 45deg
130
+ type: morph
131
+ zIndex: 1
132
+ visible: true
133
+ props:
134
+ x: 120
135
+ 'y': 50
136
+ centring: center
137
+ filter: ''
138
+ opacity: 1
139
+ filled: false
140
+ fillStyle: rgba(0, 0, 0, 0.8)
141
+ transform:
142
+ rotate: 45
143
+ globalComposite: source-over
144
+ size:
145
+ width: 60
146
+ height: 20
147
+ radius:
148
+ all: 5
149
+ stroke:
150
+ width: 1
151
+ cap: butt
152
+ join: miter
153
+ dashOffset: 0
154
+ dash: []
155
+ miterLimit: 10
156
+ - id: text-gac4k5zgu
157
+ type: text
158
+ zIndex: 1
159
+ visible: true
160
+ props:
161
+ x: link-x-45deg-0
162
+ 'y': link-y-45deg-60
163
+ centring: center
164
+ filter: ''
165
+ opacity: 1
166
+ filled: true
167
+ fillStyle: '#000'
168
+ transform: {}
169
+ globalComposite: source-over
170
+ text: 45°
171
+ font:
172
+ family: GeistMono
173
+ size: 25
174
+ weight: 400
175
+ multiline:
176
+ enabled: false
177
+ spacing: 1.1
178
+ size:
179
+ width: vw
180
+ height: 0
181
+ align: center
182
+ - id: 90deg
183
+ type: morph
184
+ zIndex: 1
185
+ visible: true
186
+ props:
187
+ x: 190
188
+ 'y': 50
189
+ centring: center
190
+ filter: ''
191
+ opacity: 1
192
+ filled: false
193
+ fillStyle: rgba(0, 0, 0, 0.8)
194
+ transform:
195
+ rotate: 90
196
+ globalComposite: source-over
197
+ size:
198
+ width: 60
199
+ height: 20
200
+ radius:
201
+ all: 5
202
+ stroke:
203
+ width: 1
204
+ cap: butt
205
+ join: miter
206
+ dashOffset: 0
207
+ dash: []
208
+ miterLimit: 10
209
+ - id: text-cp5qqgzq6
210
+ type: text
211
+ zIndex: 1
212
+ visible: true
213
+ props:
214
+ x: link-x-90deg-0
215
+ 'y': link-y-90deg-60
216
+ centring: center
217
+ filter: ''
218
+ opacity: 1
219
+ filled: true
220
+ fillStyle: '#000'
221
+ transform: {}
222
+ globalComposite: source-over
223
+ text: 90°
224
+ font:
225
+ family: GeistMono
226
+ size: 25
227
+ weight: 400
228
+ multiline:
229
+ enabled: false
230
+ spacing: 1.1
231
+ size:
232
+ width: vw
233
+ height: 0
234
+ align: center
235
+ - id: 135deg
236
+ type: morph
237
+ zIndex: 1
238
+ visible: true
239
+ props:
240
+ x: 260
241
+ 'y': 50
242
+ centring: center
243
+ filter: ''
244
+ opacity: 1
245
+ filled: false
246
+ fillStyle: rgba(0, 0, 0, 0.8)
247
+ transform:
248
+ rotate: 135
249
+ globalComposite: source-over
250
+ size:
251
+ width: 60
252
+ height: 20
253
+ radius:
254
+ all: 5
255
+ stroke:
256
+ width: 1
257
+ cap: butt
258
+ join: miter
259
+ dashOffset: 0
260
+ dash: []
261
+ miterLimit: 10
262
+ - id: text-sb9oqk8qx
263
+ type: text
264
+ zIndex: 1
265
+ visible: true
266
+ props:
267
+ x: link-x-135deg-0
268
+ 'y': link-y-135deg-60
269
+ centring: center
270
+ filter: ''
271
+ opacity: 1
272
+ filled: true
273
+ fillStyle: '#000'
274
+ transform: {}
275
+ globalComposite: source-over
276
+ text: 135°
277
+ font:
278
+ family: GeistMono
279
+ size: 25
280
+ weight: 400
281
+ multiline:
282
+ enabled: false
283
+ spacing: 1.1
284
+ size:
285
+ width: vw
286
+ height: 0
287
+ align: center
288
+ - id: 180deg
289
+ type: morph
290
+ zIndex: 1
291
+ visible: true
292
+ props:
293
+ x: 330
294
+ 'y': 50
295
+ centring: center
296
+ filter: ''
297
+ opacity: 1
298
+ filled: false
299
+ fillStyle: rgba(0, 0, 0, 0.8)
300
+ transform:
301
+ rotate: 180
302
+ globalComposite: source-over
303
+ size:
304
+ width: 60
305
+ height: 20
306
+ radius:
307
+ all: 5
308
+ stroke:
309
+ width: 1
310
+ cap: butt
311
+ join: miter
312
+ dashOffset: 0
313
+ dash: []
314
+ miterLimit: 10
315
+ - id: text-qp0v67pod
316
+ type: text
317
+ zIndex: 1
318
+ visible: true
319
+ props:
320
+ x: link-x-180deg-0
321
+ 'y': link-y-180deg-60
322
+ centring: center
323
+ filter: ''
324
+ opacity: 1
325
+ filled: true
326
+ fillStyle: '#000'
327
+ transform: {}
328
+ globalComposite: source-over
329
+ text: 180°
330
+ font:
331
+ family: GeistMono
332
+ size: 25
333
+ weight: 400
334
+ multiline:
335
+ enabled: false
336
+ spacing: 1.1
337
+ size:
338
+ width: vw
339
+ height: 0
340
+ align: center
341
+ - id: 225deg
342
+ type: morph
343
+ zIndex: 1
344
+ visible: true
345
+ props:
346
+ x: 400
347
+ 'y': 50
348
+ centring: center
349
+ filter: ''
350
+ opacity: 1
351
+ filled: false
352
+ fillStyle: rgba(0, 0, 0, 0.8)
353
+ transform:
354
+ rotate: 225
355
+ globalComposite: source-over
356
+ size:
357
+ width: 60
358
+ height: 20
359
+ radius:
360
+ all: 5
361
+ stroke:
362
+ width: 1
363
+ cap: butt
364
+ join: miter
365
+ dashOffset: 0
366
+ dash: []
367
+ miterLimit: 10
368
+ - id: text-fs264k0vi
369
+ type: text
370
+ zIndex: 1
371
+ visible: true
372
+ props:
373
+ x: link-x-225deg-0
374
+ 'y': link-y-225deg-60
375
+ centring: center
376
+ filter: ''
377
+ opacity: 1
378
+ filled: true
379
+ fillStyle: '#000'
380
+ transform: {}
381
+ globalComposite: source-over
382
+ text: 225°
383
+ font:
384
+ family: GeistMono
385
+ size: 25
386
+ weight: 400
387
+ multiline:
388
+ enabled: false
389
+ spacing: 1.1
390
+ size:
391
+ width: vw
392
+ height: 0
393
+ align: center
394
+ - id: 270deg
395
+ type: morph
396
+ zIndex: 1
397
+ visible: true
398
+ props:
399
+ x: 470
400
+ 'y': 50
401
+ centring: center
402
+ filter: ''
403
+ opacity: 1
404
+ filled: false
405
+ fillStyle: rgba(0, 0, 0, 0.8)
406
+ transform:
407
+ rotate: 270
408
+ globalComposite: source-over
409
+ size:
410
+ width: 60
411
+ height: 20
412
+ radius:
413
+ all: 5
414
+ stroke:
415
+ width: 1
416
+ cap: butt
417
+ join: miter
418
+ dashOffset: 0
419
+ dash: []
420
+ miterLimit: 10
421
+ - id: text-eci4phno0
422
+ type: text
423
+ zIndex: 1
424
+ visible: true
425
+ props:
426
+ x: link-x-270deg-0
427
+ 'y': link-y-270deg-60
428
+ centring: center
429
+ filter: ''
430
+ opacity: 1
431
+ filled: true
432
+ fillStyle: '#000'
433
+ transform: {}
434
+ globalComposite: source-over
435
+ text: 270°
436
+ font:
437
+ family: GeistMono
438
+ size: 25
439
+ weight: 400
440
+ multiline:
441
+ enabled: false
442
+ spacing: 1.1
443
+ size:
444
+ width: vw
445
+ height: 0
446
+ align: center
447
+ - id: 315deg
448
+ type: morph
449
+ zIndex: 1
450
+ visible: true
451
+ props:
452
+ x: 540
453
+ 'y': 50
454
+ centring: center
455
+ filter: ''
456
+ opacity: 1
457
+ filled: false
458
+ fillStyle: rgba(0, 0, 0, 0.8)
459
+ transform:
460
+ rotate: 315
461
+ globalComposite: source-over
462
+ size:
463
+ width: 60
464
+ height: 20
465
+ radius:
466
+ all: 5
467
+ stroke:
468
+ width: 1
469
+ cap: butt
470
+ join: miter
471
+ dashOffset: 0
472
+ dash: []
473
+ miterLimit: 10
474
+ - id: text-7ly1qoucn
475
+ type: text
476
+ zIndex: 1
477
+ visible: true
478
+ props:
479
+ x: link-x-315deg-0
480
+ 'y': link-y-315deg-60
481
+ centring: center
482
+ filter: ''
483
+ opacity: 1
484
+ filled: true
485
+ fillStyle: '#000'
486
+ transform: {}
487
+ globalComposite: source-over
488
+ text: 315°
489
+ font:
490
+ family: GeistMono
491
+ size: 25
492
+ weight: 400
493
+ multiline:
494
+ enabled: false
495
+ spacing: 1.1
496
+ size:
497
+ width: vw
498
+ height: 0
499
+ align: center
500
+ - id: filter-test
501
+ type: group
502
+ visible: true
503
+ zIndex: 1
504
+ layers:
505
+ - id: text-4blkp9zs7
506
+ type: text
507
+ zIndex: 1
508
+ visible: true
509
+ props:
510
+ x: 690
511
+ 'y': 175
512
+ centring: center
513
+ filter: ''
514
+ opacity: 1
515
+ filled: true
516
+ fillStyle: '#000'
517
+ transform: {}
518
+ globalComposite: source-over
519
+ text: filters
520
+ font:
521
+ family: GeistMono
522
+ size: 35
523
+ weight: 900
524
+ multiline:
525
+ enabled: false
526
+ spacing: 1.1
527
+ size:
528
+ width: vw
529
+ height: 0
530
+ align: center
531
+ baseline: middle
532
+ - id: image-7nclqucvw
533
+ type: image
534
+ zIndex: 1
535
+ visible: true
536
+ props:
537
+ x: 65
538
+ 'y': 175
539
+ centring: center
540
+ filter: ''
541
+ opacity: 1
542
+ filled: false
543
+ fillStyle: '#000000'
544
+ transform: {}
545
+ globalComposite: source-over
546
+ src: >-
547
+ https://i.pinimg.com/736x/e8/4a/62/e84a620bd3535da1cd11590057ee7678.jpg
548
+ size:
549
+ width: 90
550
+ height: 90
551
+ radius:
552
+ all: 0
553
+ - id: image-mtmqb620f
554
+ type: image
555
+ zIndex: 1
556
+ visible: true
557
+ props:
558
+ x: 165
559
+ 'y': 175
560
+ centring: center
561
+ filter: grayscale(100%)
562
+ opacity: 1
563
+ filled: false
564
+ fillStyle: '#000000'
565
+ transform: {}
566
+ globalComposite: source-over
567
+ src: >-
568
+ https://i.pinimg.com/736x/e8/4a/62/e84a620bd3535da1cd11590057ee7678.jpg
569
+ size:
570
+ width: 90
571
+ height: 90
572
+ radius:
573
+ all: 0
574
+ - id: image-h5i67kada
575
+ type: image
576
+ zIndex: 1
577
+ visible: true
578
+ props:
579
+ x: 265
580
+ 'y': 175
581
+ centring: center
582
+ filter: sepia(100%)
583
+ opacity: 1
584
+ filled: false
585
+ fillStyle: '#000000'
586
+ transform: {}
587
+ globalComposite: source-over
588
+ src: >-
589
+ https://i.pinimg.com/736x/e8/4a/62/e84a620bd3535da1cd11590057ee7678.jpg
590
+ size:
591
+ width: 90
592
+ height: 90
593
+ radius:
594
+ all: 0
595
+ - id: image-6kvmue1rn
596
+ type: image
597
+ zIndex: 1
598
+ visible: true
599
+ props:
600
+ x: 365
601
+ 'y': 175
602
+ centring: center
603
+ filter: invert(100%)
604
+ opacity: 1
605
+ filled: false
606
+ fillStyle: '#000000'
607
+ transform: {}
608
+ globalComposite: source-over
609
+ src: >-
610
+ https://i.pinimg.com/736x/e8/4a/62/e84a620bd3535da1cd11590057ee7678.jpg
611
+ size:
612
+ width: 90
613
+ height: 90
614
+ radius:
615
+ all: 0
616
+ - id: image-zl5mfo620
617
+ type: image
618
+ zIndex: 1
619
+ visible: true
620
+ props:
621
+ x: 465
622
+ 'y': 175
623
+ centring: center
624
+ filter: invert(100%)
625
+ opacity: 1
626
+ filled: false
627
+ fillStyle: '#000000'
628
+ transform: {}
629
+ globalComposite: source-over
630
+ src: >-
631
+ https://i.pinimg.com/736x/e8/4a/62/e84a620bd3535da1cd11590057ee7678.jpg
632
+ size:
633
+ width: 90
634
+ height: 90
635
+ radius:
636
+ all: 0
637
+ - id: gradient-test
638
+ type: group
639
+ visible: true
640
+ zIndex: 1
641
+ layers:
642
+ - id: text-sqzimcosk
643
+ type: text
644
+ zIndex: 1
645
+ visible: true
646
+ props:
647
+ x: 690
648
+ 'y': 330
649
+ centring: center
650
+ filter: ''
651
+ opacity: 1
652
+ filled: true
653
+ fillStyle: '#000'
654
+ transform: {}
655
+ globalComposite: source-over
656
+ text: gradient
657
+ font:
658
+ family: GeistMono
659
+ size: 35
660
+ weight: 900
661
+ multiline:
662
+ enabled: false
663
+ spacing: 1.1
664
+ size:
665
+ width: vw
666
+ height: 0
667
+ align: center
668
+ baseline: middle
669
+ - id: gradient0deg
670
+ type: morph
671
+ zIndex: 1
672
+ visible: true
673
+ props:
674
+ x: 50
675
+ 'y': 260
676
+ centring: center
677
+ filter: ''
678
+ opacity: 1
679
+ filled: false
680
+ fillStyle:
681
+ fillType: gradient
682
+ type: linear
683
+ points: []
684
+ stops:
685
+ - offset: 0
686
+ color: '#ff8a8a'
687
+ - offset: 1
688
+ color: '#8aff8a'
689
+ angle: 0
690
+ transform: {}
691
+ globalComposite: source-over
692
+ size:
693
+ width: 60
694
+ height: 60
695
+ radius:
696
+ all: 5
697
+ stroke:
698
+ width: 1
699
+ cap: butt
700
+ join: miter
701
+ dashOffset: 0
702
+ dash: []
703
+ miterLimit: 10
704
+ - id: morph-bv3ilvul3
705
+ type: morph
706
+ zIndex: 1
707
+ visible: true
708
+ props:
709
+ x: link-x-gradient0deg-0
710
+ 'y': link-y-gradient0deg-70
711
+ centring: center
712
+ filter: ''
713
+ opacity: 1
714
+ filled: false
715
+ fillStyle:
716
+ fillType: gradient
717
+ type: conic
718
+ points:
719
+ - x: link-x-gradient0deg-0
720
+ 'y': link-y-gradient0deg-70
721
+ stops:
722
+ - offset: 0
723
+ color: '#8a8aff'
724
+ - offset: 1
725
+ color: '#ff8aff'
726
+ angle: 0
727
+ transform: {}
728
+ globalComposite: source-over
729
+ size:
730
+ width: 60
731
+ height: 60
732
+ radius:
733
+ all: 5
734
+ stroke:
735
+ width: 1
736
+ cap: butt
737
+ join: miter
738
+ dashOffset: 0
739
+ dash: []
740
+ miterLimit: 10
741
+ - id: morph-0c8bc0oaq
742
+ type: morph
743
+ zIndex: 1
744
+ visible: true
745
+ props:
746
+ x: link-x-gradient0deg-0
747
+ 'y': link-y-gradient0deg-140
748
+ centring: center
749
+ filter: ''
750
+ opacity: 1
751
+ filled: false
752
+ fillStyle:
753
+ fillType: gradient
754
+ type: radial
755
+ points:
756
+ - x: link-x-gradient0deg-0
757
+ 'y': link-y-gradient0deg-140
758
+ r: 5
759
+ - x: link-x-gradient0deg-0
760
+ 'y': link-y-gradient0deg-140
761
+ r: 60
762
+ stops:
763
+ - offset: 0
764
+ color: '#8abfff'
765
+ - offset: 1
766
+ color: '#8affe0'
767
+ angle: 0
768
+ transform: {}
769
+ globalComposite: source-over
770
+ size:
771
+ width: 60
772
+ height: 60
773
+ radius:
774
+ all: 5
775
+ stroke:
776
+ width: 1
777
+ cap: butt
778
+ join: miter
779
+ dashOffset: 0
780
+ dash: []
781
+ miterLimit: 10
782
+ - id: text-m6r9xc73b
783
+ type: text
784
+ zIndex: 1
785
+ visible: true
786
+ props:
787
+ x: link-x-gradient0deg-0
788
+ 'y': link-y-gradient0deg-200
789
+ centring: center
790
+ filter: ''
791
+ opacity: 1
792
+ filled: true
793
+ fillStyle: '#000'
794
+ transform: {}
795
+ globalComposite: source-over
796
+ text: 0°
797
+ font:
798
+ family: GeistMono
799
+ size: 25
800
+ weight: 400
801
+ multiline:
802
+ enabled: false
803
+ spacing: 1.1
804
+ size:
805
+ width: vw
806
+ height: 0
807
+ align: center
808
+ - id: gradient45deg
809
+ type: morph
810
+ zIndex: 1
811
+ visible: true
812
+ props:
813
+ x: 120
814
+ 'y': 260
815
+ centring: center
816
+ filter: ''
817
+ opacity: 1
818
+ filled: false
819
+ fillStyle:
820
+ fillType: gradient
821
+ type: linear
822
+ points: []
823
+ stops:
824
+ - offset: 0
825
+ color: '#ff8a8a'
826
+ - offset: 1
827
+ color: '#8aff8a'
828
+ angle: 45
829
+ transform: {}
830
+ globalComposite: source-over
831
+ size:
832
+ width: 60
833
+ height: 60
834
+ radius:
835
+ all: 5
836
+ stroke:
837
+ width: 1
838
+ cap: butt
839
+ join: miter
840
+ dashOffset: 0
841
+ dash: []
842
+ miterLimit: 10
843
+ - id: morph-c5zi73zhf
844
+ type: morph
845
+ zIndex: 1
846
+ visible: true
847
+ props:
848
+ x: link-x-gradient45deg-0
849
+ 'y': link-y-gradient45deg-70
850
+ centring: center
851
+ filter: ''
852
+ opacity: 1
853
+ filled: false
854
+ fillStyle:
855
+ fillType: gradient
856
+ type: conic
857
+ points:
858
+ - x: link-x-gradient45deg-0
859
+ 'y': link-y-gradient45deg-70
860
+ stops:
861
+ - offset: 0
862
+ color: '#8a8aff'
863
+ - offset: 1
864
+ color: '#ff8aff'
865
+ angle: 45
866
+ transform: {}
867
+ globalComposite: source-over
868
+ size:
869
+ width: 60
870
+ height: 60
871
+ radius:
872
+ all: 5
873
+ stroke:
874
+ width: 1
875
+ cap: butt
876
+ join: miter
877
+ dashOffset: 0
878
+ dash: []
879
+ miterLimit: 10
880
+ - id: morph-1p3m06au9
881
+ type: morph
882
+ zIndex: 1
883
+ visible: true
884
+ props:
885
+ x: link-x-gradient45deg-0
886
+ 'y': link-y-gradient45deg-140
887
+ centring: center
888
+ filter: ''
889
+ opacity: 1
890
+ filled: false
891
+ fillStyle:
892
+ fillType: gradient
893
+ type: radial
894
+ points:
895
+ - x: link-x-gradient45deg-4.5
896
+ 'y': link-y-gradient45deg-140
897
+ r: 5
898
+ - x: link-x-gradient45deg-0
899
+ 'y': link-y-gradient45deg-140
900
+ r: 60
901
+ stops:
902
+ - offset: 0
903
+ color: '#8abfff'
904
+ - offset: 1
905
+ color: '#8affe0'
906
+ angle: 0
907
+ transform: {}
908
+ globalComposite: source-over
909
+ size:
910
+ width: 60
911
+ height: 60
912
+ radius:
913
+ all: 5
914
+ stroke:
915
+ width: 1
916
+ cap: butt
917
+ join: miter
918
+ dashOffset: 0
919
+ dash: []
920
+ miterLimit: 10
921
+ - id: text-6qx0rqyic
922
+ type: text
923
+ zIndex: 1
924
+ visible: true
925
+ props:
926
+ x: link-x-gradient45deg-0
927
+ 'y': link-y-gradient45deg-200
928
+ centring: center
929
+ filter: ''
930
+ opacity: 1
931
+ filled: true
932
+ fillStyle: '#000'
933
+ transform: {}
934
+ globalComposite: source-over
935
+ text: 45°
936
+ font:
937
+ family: GeistMono
938
+ size: 25
939
+ weight: 400
940
+ multiline:
941
+ enabled: false
942
+ spacing: 1.1
943
+ size:
944
+ width: vw
945
+ height: 0
946
+ align: center
947
+ - id: gradient90deg
948
+ type: morph
949
+ zIndex: 1
950
+ visible: true
951
+ props:
952
+ x: 190
953
+ 'y': 260
954
+ centring: center
955
+ filter: ''
956
+ opacity: 1
957
+ filled: false
958
+ fillStyle:
959
+ fillType: gradient
960
+ type: linear
961
+ points: []
962
+ stops:
963
+ - offset: 0
964
+ color: '#ff8a8a'
965
+ - offset: 1
966
+ color: '#8aff8a'
967
+ angle: 90
968
+ transform: {}
969
+ globalComposite: source-over
970
+ size:
971
+ width: 60
972
+ height: 60
973
+ radius:
974
+ all: 5
975
+ stroke:
976
+ width: 1
977
+ cap: butt
978
+ join: miter
979
+ dashOffset: 0
980
+ dash: []
981
+ miterLimit: 10
982
+ - id: morph-y8qahrlam
983
+ type: morph
984
+ zIndex: 1
985
+ visible: true
986
+ props:
987
+ x: link-x-gradient90deg-0
988
+ 'y': link-y-gradient90deg-70
989
+ centring: center
990
+ filter: ''
991
+ opacity: 1
992
+ filled: false
993
+ fillStyle:
994
+ fillType: gradient
995
+ type: conic
996
+ points:
997
+ - x: link-x-gradient90deg-0
998
+ 'y': link-y-gradient90deg-70
999
+ stops:
1000
+ - offset: 0
1001
+ color: '#8a8aff'
1002
+ - offset: 1
1003
+ color: '#ff8aff'
1004
+ angle: 90
1005
+ transform: {}
1006
+ globalComposite: source-over
1007
+ size:
1008
+ width: 60
1009
+ height: 60
1010
+ radius:
1011
+ all: 5
1012
+ stroke:
1013
+ width: 1
1014
+ cap: butt
1015
+ join: miter
1016
+ dashOffset: 0
1017
+ dash: []
1018
+ miterLimit: 10
1019
+ - id: morph-1nqnh8t5a
1020
+ type: morph
1021
+ zIndex: 1
1022
+ visible: true
1023
+ props:
1024
+ x: link-x-gradient90deg-0
1025
+ 'y': link-y-gradient90deg-140
1026
+ centring: center
1027
+ filter: ''
1028
+ opacity: 1
1029
+ filled: false
1030
+ fillStyle:
1031
+ fillType: gradient
1032
+ type: radial
1033
+ points:
1034
+ - x: link-x-gradient90deg-9
1035
+ 'y': link-y-gradient90deg-140
1036
+ r: 5
1037
+ - x: link-x-gradient90deg-0
1038
+ 'y': link-y-gradient90deg-140
1039
+ r: 60
1040
+ stops:
1041
+ - offset: 0
1042
+ color: '#8abfff'
1043
+ - offset: 1
1044
+ color: '#8affe0'
1045
+ angle: 0
1046
+ transform: {}
1047
+ globalComposite: source-over
1048
+ size:
1049
+ width: 60
1050
+ height: 60
1051
+ radius:
1052
+ all: 5
1053
+ stroke:
1054
+ width: 1
1055
+ cap: butt
1056
+ join: miter
1057
+ dashOffset: 0
1058
+ dash: []
1059
+ miterLimit: 10
1060
+ - id: text-xv4hfoozt
1061
+ type: text
1062
+ zIndex: 1
1063
+ visible: true
1064
+ props:
1065
+ x: link-x-gradient90deg-0
1066
+ 'y': link-y-gradient90deg-200
1067
+ centring: center
1068
+ filter: ''
1069
+ opacity: 1
1070
+ filled: true
1071
+ fillStyle: '#000'
1072
+ transform: {}
1073
+ globalComposite: source-over
1074
+ text: 90°
1075
+ font:
1076
+ family: GeistMono
1077
+ size: 25
1078
+ weight: 400
1079
+ multiline:
1080
+ enabled: false
1081
+ spacing: 1.1
1082
+ size:
1083
+ width: vw
1084
+ height: 0
1085
+ align: center
1086
+ - id: gradient135deg
1087
+ type: morph
1088
+ zIndex: 1
1089
+ visible: true
1090
+ props:
1091
+ x: 260
1092
+ 'y': 260
1093
+ centring: center
1094
+ filter: ''
1095
+ opacity: 1
1096
+ filled: false
1097
+ fillStyle:
1098
+ fillType: gradient
1099
+ type: linear
1100
+ points: []
1101
+ stops:
1102
+ - offset: 0
1103
+ color: '#ff8a8a'
1104
+ - offset: 1
1105
+ color: '#8aff8a'
1106
+ angle: 135
1107
+ transform: {}
1108
+ globalComposite: source-over
1109
+ size:
1110
+ width: 60
1111
+ height: 60
1112
+ radius:
1113
+ all: 5
1114
+ stroke:
1115
+ width: 1
1116
+ cap: butt
1117
+ join: miter
1118
+ dashOffset: 0
1119
+ dash: []
1120
+ miterLimit: 10
1121
+ - id: morph-z3qwilsg4
1122
+ type: morph
1123
+ zIndex: 1
1124
+ visible: true
1125
+ props:
1126
+ x: link-x-gradient135deg-0
1127
+ 'y': link-y-gradient135deg-70
1128
+ centring: center
1129
+ filter: ''
1130
+ opacity: 1
1131
+ filled: false
1132
+ fillStyle:
1133
+ fillType: gradient
1134
+ type: conic
1135
+ points:
1136
+ - x: link-x-gradient135deg-0
1137
+ 'y': link-y-gradient135deg-70
1138
+ stops:
1139
+ - offset: 0
1140
+ color: '#8a8aff'
1141
+ - offset: 1
1142
+ color: '#ff8aff'
1143
+ angle: 135
1144
+ transform: {}
1145
+ globalComposite: source-over
1146
+ size:
1147
+ width: 60
1148
+ height: 60
1149
+ radius:
1150
+ all: 5
1151
+ stroke:
1152
+ width: 1
1153
+ cap: butt
1154
+ join: miter
1155
+ dashOffset: 0
1156
+ dash: []
1157
+ miterLimit: 10
1158
+ - id: morph-wx3dy9dhx
1159
+ type: morph
1160
+ zIndex: 1
1161
+ visible: true
1162
+ props:
1163
+ x: link-x-gradient135deg-0
1164
+ 'y': link-y-gradient135deg-140
1165
+ centring: center
1166
+ filter: ''
1167
+ opacity: 1
1168
+ filled: false
1169
+ fillStyle:
1170
+ fillType: gradient
1171
+ type: radial
1172
+ points:
1173
+ - x: link-x-gradient135deg-13.5
1174
+ 'y': link-y-gradient135deg-140
1175
+ r: 5
1176
+ - x: link-x-gradient135deg-0
1177
+ 'y': link-y-gradient135deg-140
1178
+ r: 60
1179
+ stops:
1180
+ - offset: 0
1181
+ color: '#8abfff'
1182
+ - offset: 1
1183
+ color: '#8affe0'
1184
+ angle: 0
1185
+ transform: {}
1186
+ globalComposite: source-over
1187
+ size:
1188
+ width: 60
1189
+ height: 60
1190
+ radius:
1191
+ all: 5
1192
+ stroke:
1193
+ width: 1
1194
+ cap: butt
1195
+ join: miter
1196
+ dashOffset: 0
1197
+ dash: []
1198
+ miterLimit: 10
1199
+ - id: text-xltpfm36i
1200
+ type: text
1201
+ zIndex: 1
1202
+ visible: true
1203
+ props:
1204
+ x: link-x-gradient135deg-0
1205
+ 'y': link-y-gradient135deg-200
1206
+ centring: center
1207
+ filter: ''
1208
+ opacity: 1
1209
+ filled: true
1210
+ fillStyle: '#000'
1211
+ transform: {}
1212
+ globalComposite: source-over
1213
+ text: 135°
1214
+ font:
1215
+ family: GeistMono
1216
+ size: 25
1217
+ weight: 400
1218
+ multiline:
1219
+ enabled: false
1220
+ spacing: 1.1
1221
+ size:
1222
+ width: vw
1223
+ height: 0
1224
+ align: center
1225
+ - id: gradient180deg
1226
+ type: morph
1227
+ zIndex: 1
1228
+ visible: true
1229
+ props:
1230
+ x: 330
1231
+ 'y': 260
1232
+ centring: center
1233
+ filter: ''
1234
+ opacity: 1
1235
+ filled: false
1236
+ fillStyle:
1237
+ fillType: gradient
1238
+ type: linear
1239
+ points: []
1240
+ stops:
1241
+ - offset: 0
1242
+ color: '#ff8a8a'
1243
+ - offset: 1
1244
+ color: '#8aff8a'
1245
+ angle: 180
1246
+ transform: {}
1247
+ globalComposite: source-over
1248
+ size:
1249
+ width: 60
1250
+ height: 60
1251
+ radius:
1252
+ all: 5
1253
+ stroke:
1254
+ width: 1
1255
+ cap: butt
1256
+ join: miter
1257
+ dashOffset: 0
1258
+ dash: []
1259
+ miterLimit: 10
1260
+ - id: morph-hpsn1uc7a
1261
+ type: morph
1262
+ zIndex: 1
1263
+ visible: true
1264
+ props:
1265
+ x: link-x-gradient180deg-0
1266
+ 'y': link-y-gradient180deg-70
1267
+ centring: center
1268
+ filter: ''
1269
+ opacity: 1
1270
+ filled: false
1271
+ fillStyle:
1272
+ fillType: gradient
1273
+ type: conic
1274
+ points:
1275
+ - x: link-x-gradient180deg-0
1276
+ 'y': link-y-gradient180deg-70
1277
+ stops:
1278
+ - offset: 0
1279
+ color: '#8a8aff'
1280
+ - offset: 1
1281
+ color: '#ff8aff'
1282
+ angle: 180
1283
+ transform: {}
1284
+ globalComposite: source-over
1285
+ size:
1286
+ width: 60
1287
+ height: 60
1288
+ radius:
1289
+ all: 5
1290
+ stroke:
1291
+ width: 1
1292
+ cap: butt
1293
+ join: miter
1294
+ dashOffset: 0
1295
+ dash: []
1296
+ miterLimit: 10
1297
+ - id: morph-kb6pq7cd5
1298
+ type: morph
1299
+ zIndex: 1
1300
+ visible: true
1301
+ props:
1302
+ x: link-x-gradient180deg-0
1303
+ 'y': link-y-gradient180deg-140
1304
+ centring: center
1305
+ filter: ''
1306
+ opacity: 1
1307
+ filled: false
1308
+ fillStyle:
1309
+ fillType: gradient
1310
+ type: radial
1311
+ points:
1312
+ - x: link-x-gradient180deg-18
1313
+ 'y': link-y-gradient180deg-140
1314
+ r: 5
1315
+ - x: link-x-gradient180deg-0
1316
+ 'y': link-y-gradient180deg-140
1317
+ r: 60
1318
+ stops:
1319
+ - offset: 0
1320
+ color: '#8abfff'
1321
+ - offset: 1
1322
+ color: '#8affe0'
1323
+ angle: 0
1324
+ transform: {}
1325
+ globalComposite: source-over
1326
+ size:
1327
+ width: 60
1328
+ height: 60
1329
+ radius:
1330
+ all: 5
1331
+ stroke:
1332
+ width: 1
1333
+ cap: butt
1334
+ join: miter
1335
+ dashOffset: 0
1336
+ dash: []
1337
+ miterLimit: 10
1338
+ - id: text-2uxcg17cv
1339
+ type: text
1340
+ zIndex: 1
1341
+ visible: true
1342
+ props:
1343
+ x: link-x-gradient180deg-0
1344
+ 'y': link-y-gradient180deg-200
1345
+ centring: center
1346
+ filter: ''
1347
+ opacity: 1
1348
+ filled: true
1349
+ fillStyle: '#000'
1350
+ transform: {}
1351
+ globalComposite: source-over
1352
+ text: 180°
1353
+ font:
1354
+ family: GeistMono
1355
+ size: 25
1356
+ weight: 400
1357
+ multiline:
1358
+ enabled: false
1359
+ spacing: 1.1
1360
+ size:
1361
+ width: vw
1362
+ height: 0
1363
+ align: center
1364
+ - id: gradient225deg
1365
+ type: morph
1366
+ zIndex: 1
1367
+ visible: true
1368
+ props:
1369
+ x: 400
1370
+ 'y': 260
1371
+ centring: center
1372
+ filter: ''
1373
+ opacity: 1
1374
+ filled: false
1375
+ fillStyle:
1376
+ fillType: gradient
1377
+ type: linear
1378
+ points: []
1379
+ stops:
1380
+ - offset: 0
1381
+ color: '#ff8a8a'
1382
+ - offset: 1
1383
+ color: '#8aff8a'
1384
+ angle: 225
1385
+ transform: {}
1386
+ globalComposite: source-over
1387
+ size:
1388
+ width: 60
1389
+ height: 60
1390
+ radius:
1391
+ all: 5
1392
+ stroke:
1393
+ width: 1
1394
+ cap: butt
1395
+ join: miter
1396
+ dashOffset: 0
1397
+ dash: []
1398
+ miterLimit: 10
1399
+ - id: morph-ybgq1suj7
1400
+ type: morph
1401
+ zIndex: 1
1402
+ visible: true
1403
+ props:
1404
+ x: link-x-gradient225deg-0
1405
+ 'y': link-y-gradient225deg-70
1406
+ centring: center
1407
+ filter: ''
1408
+ opacity: 1
1409
+ filled: false
1410
+ fillStyle:
1411
+ fillType: gradient
1412
+ type: conic
1413
+ points:
1414
+ - x: link-x-gradient225deg-0
1415
+ 'y': link-y-gradient225deg-70
1416
+ stops:
1417
+ - offset: 0
1418
+ color: '#8a8aff'
1419
+ - offset: 1
1420
+ color: '#ff8aff'
1421
+ angle: 225
1422
+ transform: {}
1423
+ globalComposite: source-over
1424
+ size:
1425
+ width: 60
1426
+ height: 60
1427
+ radius:
1428
+ all: 5
1429
+ stroke:
1430
+ width: 1
1431
+ cap: butt
1432
+ join: miter
1433
+ dashOffset: 0
1434
+ dash: []
1435
+ miterLimit: 10
1436
+ - id: morph-nqs19o2wz
1437
+ type: morph
1438
+ zIndex: 1
1439
+ visible: true
1440
+ props:
1441
+ x: link-x-gradient225deg-0
1442
+ 'y': link-y-gradient225deg-140
1443
+ centring: center
1444
+ filter: ''
1445
+ opacity: 1
1446
+ filled: false
1447
+ fillStyle:
1448
+ fillType: gradient
1449
+ type: radial
1450
+ points:
1451
+ - x: link-x-gradient225deg-22.5
1452
+ 'y': link-y-gradient225deg-140
1453
+ r: 5
1454
+ - x: link-x-gradient225deg-0
1455
+ 'y': link-y-gradient225deg-140
1456
+ r: 60
1457
+ stops:
1458
+ - offset: 0
1459
+ color: '#8abfff'
1460
+ - offset: 1
1461
+ color: '#8affe0'
1462
+ angle: 0
1463
+ transform: {}
1464
+ globalComposite: source-over
1465
+ size:
1466
+ width: 60
1467
+ height: 60
1468
+ radius:
1469
+ all: 5
1470
+ stroke:
1471
+ width: 1
1472
+ cap: butt
1473
+ join: miter
1474
+ dashOffset: 0
1475
+ dash: []
1476
+ miterLimit: 10
1477
+ - id: text-j40x2spxa
1478
+ type: text
1479
+ zIndex: 1
1480
+ visible: true
1481
+ props:
1482
+ x: link-x-gradient225deg-0
1483
+ 'y': link-y-gradient225deg-200
1484
+ centring: center
1485
+ filter: ''
1486
+ opacity: 1
1487
+ filled: true
1488
+ fillStyle: '#000'
1489
+ transform: {}
1490
+ globalComposite: source-over
1491
+ text: 225°
1492
+ font:
1493
+ family: GeistMono
1494
+ size: 25
1495
+ weight: 400
1496
+ multiline:
1497
+ enabled: false
1498
+ spacing: 1.1
1499
+ size:
1500
+ width: vw
1501
+ height: 0
1502
+ align: center
1503
+ - id: gradient270deg
1504
+ type: morph
1505
+ zIndex: 1
1506
+ visible: true
1507
+ props:
1508
+ x: 470
1509
+ 'y': 260
1510
+ centring: center
1511
+ filter: ''
1512
+ opacity: 1
1513
+ filled: false
1514
+ fillStyle:
1515
+ fillType: gradient
1516
+ type: linear
1517
+ points: []
1518
+ stops:
1519
+ - offset: 0
1520
+ color: '#ff8a8a'
1521
+ - offset: 1
1522
+ color: '#8aff8a'
1523
+ angle: 270
1524
+ transform: {}
1525
+ globalComposite: source-over
1526
+ size:
1527
+ width: 60
1528
+ height: 60
1529
+ radius:
1530
+ all: 5
1531
+ stroke:
1532
+ width: 1
1533
+ cap: butt
1534
+ join: miter
1535
+ dashOffset: 0
1536
+ dash: []
1537
+ miterLimit: 10
1538
+ - id: morph-dzqzz6j8r
1539
+ type: morph
1540
+ zIndex: 1
1541
+ visible: true
1542
+ props:
1543
+ x: link-x-gradient270deg-0
1544
+ 'y': link-y-gradient270deg-70
1545
+ centring: center
1546
+ filter: ''
1547
+ opacity: 1
1548
+ filled: false
1549
+ fillStyle:
1550
+ fillType: gradient
1551
+ type: conic
1552
+ points:
1553
+ - x: link-x-gradient270deg-0
1554
+ 'y': link-y-gradient270deg-70
1555
+ stops:
1556
+ - offset: 0
1557
+ color: '#8a8aff'
1558
+ - offset: 1
1559
+ color: '#ff8aff'
1560
+ angle: 270
1561
+ transform: {}
1562
+ globalComposite: source-over
1563
+ size:
1564
+ width: 60
1565
+ height: 60
1566
+ radius:
1567
+ all: 5
1568
+ stroke:
1569
+ width: 1
1570
+ cap: butt
1571
+ join: miter
1572
+ dashOffset: 0
1573
+ dash: []
1574
+ miterLimit: 10
1575
+ - id: morph-vriws902n
1576
+ type: morph
1577
+ zIndex: 1
1578
+ visible: true
1579
+ props:
1580
+ x: link-x-gradient270deg-0
1581
+ 'y': link-y-gradient270deg-140
1582
+ centring: center
1583
+ filter: ''
1584
+ opacity: 1
1585
+ filled: false
1586
+ fillStyle:
1587
+ fillType: gradient
1588
+ type: radial
1589
+ points:
1590
+ - x: link-x-gradient270deg-27
1591
+ 'y': link-y-gradient270deg-140
1592
+ r: 5
1593
+ - x: link-x-gradient270deg-0
1594
+ 'y': link-y-gradient270deg-140
1595
+ r: 60
1596
+ stops:
1597
+ - offset: 0
1598
+ color: '#8abfff'
1599
+ - offset: 1
1600
+ color: '#8affe0'
1601
+ angle: 0
1602
+ transform: {}
1603
+ globalComposite: source-over
1604
+ size:
1605
+ width: 60
1606
+ height: 60
1607
+ radius:
1608
+ all: 5
1609
+ stroke:
1610
+ width: 1
1611
+ cap: butt
1612
+ join: miter
1613
+ dashOffset: 0
1614
+ dash: []
1615
+ miterLimit: 10
1616
+ - id: text-q401h13qo
1617
+ type: text
1618
+ zIndex: 1
1619
+ visible: true
1620
+ props:
1621
+ x: link-x-gradient270deg-0
1622
+ 'y': link-y-gradient270deg-200
1623
+ centring: center
1624
+ filter: ''
1625
+ opacity: 1
1626
+ filled: true
1627
+ fillStyle: '#000'
1628
+ transform: {}
1629
+ globalComposite: source-over
1630
+ text: 270°
1631
+ font:
1632
+ family: GeistMono
1633
+ size: 25
1634
+ weight: 400
1635
+ multiline:
1636
+ enabled: false
1637
+ spacing: 1.1
1638
+ size:
1639
+ width: vw
1640
+ height: 0
1641
+ align: center
1642
+ - id: gradient315deg
1643
+ type: morph
1644
+ zIndex: 1
1645
+ visible: true
1646
+ props:
1647
+ x: 540
1648
+ 'y': 260
1649
+ centring: center
1650
+ filter: ''
1651
+ opacity: 1
1652
+ filled: false
1653
+ fillStyle:
1654
+ fillType: gradient
1655
+ type: linear
1656
+ points: []
1657
+ stops:
1658
+ - offset: 0
1659
+ color: '#ff8a8a'
1660
+ - offset: 1
1661
+ color: '#8aff8a'
1662
+ angle: 315
1663
+ transform: {}
1664
+ globalComposite: source-over
1665
+ size:
1666
+ width: 60
1667
+ height: 60
1668
+ radius:
1669
+ all: 5
1670
+ stroke:
1671
+ width: 1
1672
+ cap: butt
1673
+ join: miter
1674
+ dashOffset: 0
1675
+ dash: []
1676
+ miterLimit: 10
1677
+ - id: morph-d5qzqlzex
1678
+ type: morph
1679
+ zIndex: 1
1680
+ visible: true
1681
+ props:
1682
+ x: link-x-gradient315deg-0
1683
+ 'y': link-y-gradient315deg-70
1684
+ centring: center
1685
+ filter: ''
1686
+ opacity: 1
1687
+ filled: false
1688
+ fillStyle:
1689
+ fillType: gradient
1690
+ type: conic
1691
+ points:
1692
+ - x: link-x-gradient315deg-0
1693
+ 'y': link-y-gradient315deg-70
1694
+ stops:
1695
+ - offset: 0
1696
+ color: '#8a8aff'
1697
+ - offset: 1
1698
+ color: '#ff8aff'
1699
+ angle: 315
1700
+ transform: {}
1701
+ globalComposite: source-over
1702
+ size:
1703
+ width: 60
1704
+ height: 60
1705
+ radius:
1706
+ all: 5
1707
+ stroke:
1708
+ width: 1
1709
+ cap: butt
1710
+ join: miter
1711
+ dashOffset: 0
1712
+ dash: []
1713
+ miterLimit: 10
1714
+ - id: morph-1yskzqic6
1715
+ type: morph
1716
+ zIndex: 1
1717
+ visible: true
1718
+ props:
1719
+ x: link-x-gradient315deg-0
1720
+ 'y': link-y-gradient315deg-140
1721
+ centring: center
1722
+ filter: ''
1723
+ opacity: 1
1724
+ filled: false
1725
+ fillStyle:
1726
+ fillType: gradient
1727
+ type: radial
1728
+ points:
1729
+ - x: link-x-gradient315deg-31.5
1730
+ 'y': link-y-gradient315deg-140
1731
+ r: 5
1732
+ - x: link-x-gradient315deg-0
1733
+ 'y': link-y-gradient315deg-140
1734
+ r: 60
1735
+ stops:
1736
+ - offset: 0
1737
+ color: '#8abfff'
1738
+ - offset: 1
1739
+ color: '#8affe0'
1740
+ angle: 0
1741
+ transform: {}
1742
+ globalComposite: source-over
1743
+ size:
1744
+ width: 60
1745
+ height: 60
1746
+ radius:
1747
+ all: 5
1748
+ stroke:
1749
+ width: 1
1750
+ cap: butt
1751
+ join: miter
1752
+ dashOffset: 0
1753
+ dash: []
1754
+ miterLimit: 10
1755
+ - id: text-nys6ckmy5
1756
+ type: text
1757
+ zIndex: 1
1758
+ visible: true
1759
+ props:
1760
+ x: link-x-gradient315deg-0
1761
+ 'y': link-y-gradient315deg-200
1762
+ centring: center
1763
+ filter: ''
1764
+ opacity: 1
1765
+ filled: true
1766
+ fillStyle: '#000'
1767
+ transform: {}
1768
+ globalComposite: source-over
1769
+ text: 315°
1770
+ font:
1771
+ family: GeistMono
1772
+ size: 25
1773
+ weight: 400
1774
+ multiline:
1775
+ enabled: false
1776
+ spacing: 1.1
1777
+ size:
1778
+ width: vw
1779
+ height: 0
1780
+ align: center