@vcmap/ui 5.0.0-rc.8 → 5.0.0-rc.9

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 (178) hide show
  1. package/README.md +69 -22
  2. package/build/build.js +0 -3
  3. package/build/buildHelpers.js +0 -1
  4. package/build/commonViteConfig.js +1 -1
  5. package/config/dev.config.json +4 -4
  6. package/dist/assets/{cesium.6b5bb6.js → cesium.4e40f4.js} +0 -0
  7. package/dist/assets/cesium.js +1 -1
  8. package/dist/assets/core.edcf5e.js +4 -0
  9. package/dist/assets/core.js +1 -1
  10. package/dist/assets/{index.0be2842f.js → index.889d0f3a.js} +1 -1
  11. package/dist/assets/{ol.0561aa.js → ol.246fd4.js} +0 -0
  12. package/dist/assets/ol.js +1 -1
  13. package/dist/assets/ui.df4f6d.css +1 -0
  14. package/dist/assets/ui.df4f6d.js +43 -0
  15. package/dist/assets/ui.js +1 -1
  16. package/dist/assets/{vue-composition-api.f926fa.js → vue-composition-api.a520f3.js} +1 -1
  17. package/dist/assets/vue-composition-api.js +2 -2
  18. package/dist/assets/{vue.ddcb6b.js → vue.2cee44.js} +0 -0
  19. package/dist/assets/vue.js +1 -1
  20. package/dist/assets/{vuetify.d21163.css → vuetify.cc817b.css} +0 -0
  21. package/dist/assets/{vuetify.d21163.js → vuetify.cc817b.js} +1 -1
  22. package/dist/assets/vuetify.js +2 -2
  23. package/dist/index.html +1 -1
  24. package/index.js +39 -1
  25. package/package.json +2 -3
  26. package/plugins/@vcmap/pluginExample/index.js +5 -5
  27. package/plugins/@vcmap/pluginExample/pluginExampleComponent.vue +1 -1
  28. package/plugins/@vcmap/project-selector/ContextsListComponent.vue +1 -1
  29. package/plugins/@vcmap/project-selector/index.js +5 -5
  30. package/plugins/@vcmap/project-selector/package.json +1 -2
  31. package/plugins/@vcmap/theme-changer/index.js +6 -6
  32. package/plugins/buttonExamples/ButtonExamples.vue +1 -1
  33. package/plugins/buttonExamples/index.js +5 -4
  34. package/plugins/categoryTest/Categories.vue +1 -1
  35. package/plugins/categoryTest/Category.vue +1 -1
  36. package/plugins/categoryTest/index.js +5 -5
  37. package/plugins/example/index.js +33 -14
  38. package/plugins/test/allIconsComponent.vue +34 -0
  39. package/plugins/test/editor.vue +1 -1
  40. package/plugins/test/index.js +40 -17
  41. package/plugins/test/toolbox-data.js +106 -26
  42. package/plugins/test/windowManagerExample.vue +1 -2
  43. package/src/actions/actionHelper.js +2 -1
  44. package/src/actions/styleSelector.vue +1 -1
  45. package/src/application/Navbar.vue +18 -6
  46. package/src/application/VcsApp.vue +34 -28
  47. package/src/assets/logo-mobile.svg +9 -0
  48. package/src/assets/logo.svg +23 -23
  49. package/src/components/buttons/VcsActionButtonList.vue +99 -0
  50. package/src/components/buttons/VcsButton.vue +201 -0
  51. package/src/components/form-inputs-controls/VcsCheckbox.vue +73 -0
  52. package/src/components/form-inputs-controls/VcsColorPicker.vue +81 -0
  53. package/src/components/form-inputs-controls/VcsFormSection.vue +46 -0
  54. package/src/components/form-inputs-controls/VcsLabel.vue +38 -0
  55. package/src/components/form-inputs-controls/VcsSelect.vue +97 -0
  56. package/src/components/form-inputs-controls/VcsTextArea.vue +130 -0
  57. package/src/components/form-inputs-controls/VcsTextField.vue +129 -0
  58. package/src/components/form-output/VcsFormattedNumber.vue +103 -0
  59. package/src/components/lists/VcsActionList.vue +100 -0
  60. package/src/components/lists/VcsTreeview.vue +109 -0
  61. package/src/components/lists/VcsTreeviewLeaf.vue +105 -0
  62. package/src/components/lists/VcsTreeviewSearchbar.vue +156 -0
  63. package/src/components/notification/VcsBadge.vue +27 -0
  64. package/src/components/notification/VcsTooltip.vue +154 -0
  65. package/src/components/notification/validation.js +19 -0
  66. package/src/contentTree/LayerTree.vue +1 -1
  67. package/src/contentTree/contentTreeCollection.js +6 -2
  68. package/src/icons/+all.js +359 -0
  69. package/src/icons/2DAreaIcon.vue +21 -0
  70. package/src/icons/2DDistanceIcon.vue +18 -0
  71. package/src/icons/3DAreaIcon.vue +21 -0
  72. package/src/icons/3DDistanceIcon.vue +18 -0
  73. package/src/icons/3DHeightIcon.vue +18 -0
  74. package/src/icons/AngleIcon.vue +8 -0
  75. package/src/icons/AssociationsIcon.vue +34 -0
  76. package/src/icons/AxisIcon.vue +10 -0
  77. package/src/icons/BoundingBoxIcon.vue +15 -0
  78. package/src/icons/CheckboxCheckedIcon.vue +16 -0
  79. package/src/icons/CheckboxIcon.vue +23 -0
  80. package/src/icons/CheckboxIndeterminateIcon.vue +24 -0
  81. package/src/icons/CircleIcon.vue +10 -0
  82. package/src/icons/ColorSwatchIcon.vue +17 -0
  83. package/src/icons/CommentIcon.vue +19 -0
  84. package/src/icons/CompassIcon.vue +8 -0
  85. package/src/icons/ComponentsIcon.vue +7 -0
  86. package/src/icons/ConeIcon.vue +11 -0
  87. package/src/icons/DimensionsHouseIcon.vue +14 -0
  88. package/src/icons/ElevationProfileIcon.vue +111 -0
  89. package/src/icons/ExportAreaIcon.vue +7 -0
  90. package/src/icons/ExportFlightIcon.vue +7 -0
  91. package/src/icons/ExportIcon.vue +8 -0
  92. package/src/icons/ExternalLinkIcon.vue +10 -0
  93. package/src/icons/EyeIcon.vue +7 -0
  94. package/src/icons/FastForwardIcon.vue +7 -0
  95. package/src/icons/FilterIcon.vue +8 -0
  96. package/src/icons/GlobeNatureIcon.vue +14 -0
  97. package/src/icons/HealthCareIndustriesIcon.vue +118 -0
  98. package/src/icons/HelpIcon.vue +7 -0
  99. package/src/icons/HomePointIcon.vue +8 -0
  100. package/src/icons/HospitalsIcon.vue +237 -0
  101. package/src/icons/HouseIcon.vue +25 -0
  102. package/src/icons/ImportIcon.vue +8 -0
  103. package/src/icons/InfoIcon.vue +10 -0
  104. package/src/icons/KebabIcon.vue +36 -0
  105. package/src/icons/LabelIcon.vue +7 -0
  106. package/src/icons/LayersIcon.vue +26 -0
  107. package/src/icons/LegendIcon.vue +65 -0
  108. package/src/icons/LineIcon.vue +7 -0
  109. package/src/icons/LinkIcon.vue +7 -0
  110. package/src/icons/MapIcon.vue +8 -0
  111. package/src/icons/MenuIcon.vue +34 -0
  112. package/src/icons/MinusIcon.vue +8 -0
  113. package/src/icons/ObjectAttributeIcon.vue +18 -0
  114. package/src/icons/ObjectSelectIcon.vue +8 -0
  115. package/src/icons/ObliqueViewIcon.vue +13 -0
  116. package/src/icons/PdfIcon.vue +10 -0
  117. package/src/icons/PedestrianIcon.vue +8 -0
  118. package/src/icons/PenIcon.vue +14 -0
  119. package/src/icons/PlayCircleIcon.vue +10 -0
  120. package/src/icons/PlusIcon.vue +9 -0
  121. package/src/icons/PoiIcon.vue +7 -0
  122. package/src/icons/PointSelectIcon.vue +7 -0
  123. package/src/icons/PolygonIcon.vue +38 -0
  124. package/src/icons/PresentationModeIcon.vue +7 -0
  125. package/src/icons/ProgressIcon.vue +24 -0
  126. package/src/icons/QueryIcon.vue +15 -0
  127. package/src/icons/RectangleIcon.vue +9 -0
  128. package/src/icons/ReturnIcon.vue +7 -0
  129. package/src/icons/RewindIcon.vue +6 -0
  130. package/src/icons/SearchIcon.vue +8 -0
  131. package/src/icons/ShadowIcon.vue +9 -0
  132. package/src/icons/ShapesIcon.vue +28 -0
  133. package/src/icons/ShareIcon.vue +22 -0
  134. package/src/icons/SimpleCircleFilledIcon.vue +15 -0
  135. package/src/icons/SimpleCircleHalfFilledIcon.vue +12 -0
  136. package/src/icons/SimpleCircleOutlinedIcon.vue +15 -0
  137. package/src/icons/SkipNextIcon.vue +7 -0
  138. package/src/icons/SkipPreviousIcon.vue +9 -0
  139. package/src/icons/SplitViewIcon.vue +19 -0
  140. package/src/icons/TextStyleIcon.vue +14 -0
  141. package/src/icons/ThreeDimensionsIcon.vue +7 -0
  142. package/src/icons/ToolsIcon.vue +35 -0
  143. package/src/icons/TouchIcon.vue +8 -0
  144. package/src/icons/TrashCanIcon.vue +7 -0
  145. package/src/icons/TriangleIcon.vue +15 -0
  146. package/src/icons/TwoDimensionsIcon.vue +8 -0
  147. package/src/icons/UploadIcon.vue +14 -0
  148. package/src/icons/VideoRecorderIcon.vue +14 -0
  149. package/src/icons/WalkingIcon.vue +7 -0
  150. package/src/icons/WallIcon.vue +14 -0
  151. package/src/manager/buttonManager.js +5 -53
  152. package/src/manager/navbarManager.js +81 -0
  153. package/src/manager/toolbox/ToolboxGroupComponent.vue +128 -0
  154. package/src/manager/toolbox/ToolboxManager.vue +119 -76
  155. package/src/manager/toolbox/toolboxManager.js +204 -0
  156. package/src/manager/window/WindowComponentHeader.vue +1 -1
  157. package/src/manager/window/WindowManager.vue +18 -1
  158. package/src/manager/window/windowManager.js +3 -5
  159. package/src/navigation/mapNavigation.vue +9 -5
  160. package/src/navigation/orientationToolsButton.vue +1 -1
  161. package/src/navigation/tiltSlider.vue +1 -1
  162. package/src/styles/_theming.scss +10 -0
  163. package/src/styles/main.scss +3 -0
  164. package/src/styles/variables.scss +70 -0
  165. package/src/styles/vcsFont.scss +5 -0
  166. package/src/styles/vcsGrid.scss +4 -0
  167. package/src/vcsUiApp.js +4 -3
  168. package/src/vuePlugins/vuetify.js +1 -1
  169. package/dist/assets/core.98f9bb.js +0 -4
  170. package/dist/assets/ui.b7c1e3.css +0 -1
  171. package/dist/assets/ui.b7c1e3.js +0 -39
  172. package/dist/assets/uicomponents.682c5f.css +0 -1
  173. package/dist/assets/uicomponents.682c5f.js +0 -32
  174. package/dist/assets/uicomponents.js +0 -1
  175. package/lib/uicomponents.js +0 -1
  176. package/src/manager/toolbox/ToolboxMultiSelectButton.vue +0 -96
  177. package/src/manager/toolbox/ToolboxSingleSelectButton.vue +0 -98
  178. package/src/manager/toolbox/toolbox-manager.js +0 -203
@@ -0,0 +1,27 @@
1
+ <template>
2
+ <span class="badge rounded-circle h-3 w-3" :class="[color]" />
3
+ </template>
4
+
5
+ <style lang="scss" scoped>
6
+ .v-application .badge {
7
+ border: 1px solid var(--v-basic-base) !important;
8
+ }
9
+ </style>
10
+
11
+
12
+ <script>
13
+
14
+ /**
15
+ * @description UI component representing a circular indicator.
16
+ * @vue-prop {string} color - any of the theme colors.
17
+ */
18
+ export default {
19
+ name: 'VcsBadge',
20
+ props: {
21
+ color: {
22
+ type: String,
23
+ default: 'warning',
24
+ },
25
+ },
26
+ };
27
+ </script>
@@ -0,0 +1,154 @@
1
+ <template>
2
+ <v-tooltip
3
+ :disabled="!tooltip"
4
+ :content-class="`tooltip ${arrowClass}`"
5
+ :bottom="tooltipPosition === 'bottom'"
6
+ :top="tooltipPosition === 'top'"
7
+ :left="tooltipPosition === 'left'"
8
+ :right="tooltipPosition === 'right'"
9
+ :open-delay="$attrs.openDelay || 200"
10
+ v-bind="{...$props, ...$attrs}"
11
+ >
12
+ <template #activator="{ on, attrs }">
13
+ <slot name="activator" :on="on" :attrs="attrs" />
14
+ </template>
15
+ <span>{{ tooltip }}</span>
16
+ </v-tooltip>
17
+ </template>
18
+ <style lang="scss" scoped>
19
+ //.v-tooltip__content.tooltip {
20
+ // border: 1px solid black;
21
+ // border-radius: 0;
22
+ // background-color: #222222;
23
+ //
24
+ //&.arrow-top {
25
+ // transform: translateY(-6px);
26
+ //
27
+ //&::after, &::before {
28
+ // bottom: 100%;
29
+ // left: 50%;
30
+ // border: solid transparent;
31
+ // content: "";
32
+ // height: 0;
33
+ // width: 0;
34
+ // position: absolute;
35
+ // pointer-events: none;
36
+ // }
37
+ //
38
+ //&::before {
39
+ // border-color: rgba(194, 225, 245, 0);
40
+ // border-bottom-color: black;
41
+ // border-width: 5px;
42
+ // margin-left: -5px;
43
+ // }
44
+ //}
45
+ //
46
+ //&.arrow-bottom {
47
+ // transform: translateY(6px);
48
+ //
49
+ //&::after, &::before {
50
+ // top: 100%;
51
+ // left: 50%;
52
+ // border: solid transparent;
53
+ // content: "";
54
+ // height: 0;
55
+ // width: 0;
56
+ // position: absolute;
57
+ // pointer-events: none;
58
+ // }
59
+ //
60
+ //&::before {
61
+ // border-color: rgba(194, 225, 245, 0);
62
+ // border-top-color: black;
63
+ // border-width: 5px;
64
+ // margin-left: -5px;
65
+ // }
66
+ //}
67
+ //
68
+ //&.arrow-right {
69
+ //&::after, &::before {
70
+ // top: 50%;
71
+ // right: -11px;
72
+ // transform: translateY(-50%);
73
+ // border: solid transparent;
74
+ // content: "";
75
+ // height: 0;
76
+ // width: 0;
77
+ // position: absolute;
78
+ // pointer-events: none;
79
+ // }
80
+ //
81
+ //&::before {
82
+ // border-color: rgba(255, 0, 0, 0);
83
+ // border-left-color: black;
84
+ // border-width: 5px;
85
+ // margin-left: -5px;
86
+ // }
87
+ //}
88
+ //
89
+ //&.arrow-left {
90
+ //
91
+ //&::after, &::before {
92
+ // top: 50%;
93
+ // left: -11px;
94
+ // transform: translateY(-50%);
95
+ // border: solid transparent;
96
+ // content: "";
97
+ // height: 0;
98
+ // width: 0;
99
+ // position: absolute;
100
+ // pointer-events: none;
101
+ // }
102
+ //
103
+ //&::before {
104
+ // border-color: rgba(194, 225, 245, 0);
105
+ // border-right-color: black;
106
+ // border-width: 5px;
107
+ // }
108
+ //}
109
+ //}
110
+ </style>
111
+ <script>
112
+
113
+ /**
114
+ * @enum {string} TooltipPositions
115
+ * @property {string} bottom
116
+ * @property {string} left
117
+ * @property {string} top
118
+ * @property {string} right
119
+ * @readonly
120
+ * @module VcsTooltip
121
+ */
122
+ const TooltipPositions = {
123
+ bottom: 'arrow-top',
124
+ top: 'arrow-bottom',
125
+ left: 'arrow-right',
126
+ right: 'arrow-left',
127
+ };
128
+
129
+ /**
130
+ * @description tooltip extending {@link https://vuetifyjs.com/en/api/v-tooltip/|vuetify v-tooltip}.
131
+ * @vue-prop {string} tooltip - Text content of a tooltip which appears on hover with default delay.
132
+ * @vue-prop {string} [tooltipPosition='bottom'] - Position of the tooltip (allowed values: 'bottom'|'left'|'top'|'right').
133
+ * @vue-computed {string} arrowClass - direction of tooltip arrow
134
+ */
135
+ export default {
136
+ name: 'VcsTooltip',
137
+ props: {
138
+ tooltip: {
139
+ type: String,
140
+ default: undefined,
141
+ },
142
+ tooltipPosition: {
143
+ type: String,
144
+ default: 'bottom',
145
+ validator(value) { return Object.keys(TooltipPositions).includes(value); },
146
+ },
147
+ },
148
+ computed: {
149
+ arrowClass() {
150
+ return TooltipPositions[this.tooltipPosition];
151
+ },
152
+ },
153
+ };
154
+ </script>
@@ -0,0 +1,19 @@
1
+ /**
2
+ * validates rules and returns error messages
3
+ * @param {Array} rules - validation functions or string messages
4
+ * @param {*} value
5
+ * @returns {string[]}
6
+ */
7
+ export default function validate(rules, value) {
8
+ if (Array.isArray(rules)) {
9
+ return rules
10
+ .map((rule) => {
11
+ if (typeof rule === 'function') {
12
+ return rule(value);
13
+ }
14
+ return rule;
15
+ })
16
+ .filter(val => val !== true);
17
+ }
18
+ return [];
19
+ }
@@ -12,7 +12,7 @@
12
12
 
13
13
  <script>
14
14
  import { inject } from '@vue/composition-api';
15
- import { VcsTreeview } from '@vcsuite/ui-components';
15
+ import VcsTreeview from '../components/lists/VcsTreeview.vue';
16
16
 
17
17
  /**
18
18
  * @description
@@ -8,7 +8,7 @@ import SubContentTreeItem, { subTreeSymbol } from './subContentTreeItem.js';
8
8
  import LayerTree from './LayerTree.vue';
9
9
  import { WindowSlot } from '../manager/window/windowManager.js';
10
10
  import { createToggleAction } from '../actions/actionHelper.js';
11
- import { ButtonLocation } from '../manager/buttonManager.js';
11
+ import { ButtonLocation } from '../manager/navbarManager.js';
12
12
 
13
13
  /**
14
14
  * @type {symbol}
@@ -127,7 +127,11 @@ class ContentTreeCollection extends IndexedCollection {
127
127
  vcsAppSymbol,
128
128
  );
129
129
 
130
- this._app.navbarManager.add({ id, action, location: ButtonLocation.CONTENT }, vcsAppSymbol);
130
+ this._app.navbarManager.add(
131
+ { id, action },
132
+ vcsAppSymbol,
133
+ ButtonLocation.CONTENT,
134
+ );
131
135
  this._subTreeViewItems.value.set(id, subTreeViewItem);
132
136
  return () => {
133
137
  app.windowManager.remove(id);
@@ -0,0 +1,359 @@
1
+ import TwoDAreaIcon from './2DAreaIcon.vue';
2
+ import TwoDDistanceIcon from './2DDistanceIcon.vue';
3
+ import ThreeDAreaIcon from './3DAreaIcon.vue';
4
+ import ThreeDDistanceIcon from './3DDistanceIcon.vue';
5
+ import ThreeDHeightIcon from './3DHeightIcon.vue';
6
+ import AngleIcon from './AngleIcon.vue';
7
+ import AssociationsIcon from './AssociationsIcon.vue';
8
+ import AxisIcon from './AxisIcon.vue';
9
+ import BoundingBoxIcon from './BoundingBoxIcon.vue';
10
+ import CheckboxCheckedIcon from './CheckboxCheckedIcon.vue';
11
+ import CheckboxIcon from './CheckboxIcon.vue';
12
+ import CheckboxIndeterminateIcon from './CheckboxIndeterminateIcon.vue';
13
+ import CircleIcon from './CircleIcon.vue';
14
+ import ColorSwatchIcon from './ColorSwatchIcon.vue';
15
+ import CommentIcon from './CommentIcon.vue';
16
+ import CompassIcon from './CompassIcon.vue';
17
+ import ComponentsIcon from './ComponentsIcon.vue';
18
+ import ConeIcon from './ConeIcon.vue';
19
+ import DimensionsHouseIcon from './DimensionsHouseIcon.vue';
20
+ import ElevationProfileIcon from './ElevationProfileIcon.vue';
21
+ import ExportAreaIcon from './ExportAreaIcon.vue';
22
+ import ExportFlightIcon from './ExportFlightIcon.vue';
23
+ import ExportIcon from './ExportIcon.vue';
24
+ import ExternalLinkIcon from './ExternalLinkIcon.vue';
25
+ import EyeIcon from './EyeIcon.vue';
26
+ import FastForwardIcon from './FastForwardIcon.vue';
27
+ import FilterIcon from './FilterIcon.vue';
28
+ import GlobeNatureIcon from './GlobeNatureIcon.vue';
29
+ import HealthCareIndustriesIcon from './HealthCareIndustriesIcon.vue';
30
+ import HelpIcon from './HelpIcon.vue';
31
+ import HomePointIcon from './HomePointIcon.vue';
32
+ import HospitalsIcon from './HospitalsIcon.vue';
33
+ import HouseIcon from './HouseIcon.vue';
34
+ import ImportIcon from './ImportIcon.vue';
35
+ import InfoIcon from './InfoIcon.vue';
36
+ import KebabIcon from './KebabIcon.vue';
37
+ import LabelIcon from './LabelIcon.vue';
38
+ import LayersIcon from './LayersIcon.vue';
39
+ import LegendIcon from './LegendIcon.vue';
40
+ import LineIcon from './LineIcon.vue';
41
+ import LinkIcon from './LinkIcon.vue';
42
+ import ProgressIcon from './ProgressIcon.vue';
43
+ import MapIcon from './MapIcon.vue';
44
+ import MenuIcon from './MenuIcon.vue';
45
+ import MinusIcon from './MinusIcon.vue';
46
+ import ObjectAttributeIcon from './ObjectAttributeIcon.vue';
47
+ import ObjectSelectIcon from './ObjectSelectIcon.vue';
48
+ import ObliqueViewIcon from './ObliqueViewIcon.vue';
49
+ import PdfIcon from './PdfIcon.vue';
50
+ import PedestrianIcon from './PedestrianIcon.vue';
51
+ import PenIcon from './PenIcon.vue';
52
+ import PlayCircleIcon from './PlayCircleIcon.vue';
53
+ import PlusIcon from './PlusIcon.vue';
54
+ import PoiIcon from './PoiIcon.vue';
55
+ import PointSelectIcon from './PointSelectIcon.vue';
56
+ import PresentationModeIcon from './PresentationModeIcon.vue';
57
+ import RectangleIcon from './RectangleIcon.vue';
58
+ import ReturnIcon from './ReturnIcon.vue';
59
+ import RewindIcon from './RewindIcon.vue';
60
+ import SearchIcon from './SearchIcon.vue';
61
+ import ShadowIcon from './ShadowIcon.vue';
62
+ import ShapesIcon from './ShapesIcon.vue';
63
+ import ShareIcon from './ShareIcon.vue';
64
+ import SimpleCircleFilledIcon from './SimpleCircleFilledIcon.vue';
65
+ import SimpleCircleHalfFilledIcon from './SimpleCircleHalfFilledIcon.vue';
66
+ import SimpleCircleOutlinedIcon from './SimpleCircleOutlinedIcon.vue';
67
+ import SkipNextIcon from './SkipNextIcon.vue';
68
+ import SkipPreviousIcon from './SkipPreviousIcon.vue';
69
+ import SplitViewIcon from './SplitViewIcon.vue';
70
+ import TextStyleIcon from './TextStyleIcon.vue';
71
+ import ThreeDimensionsIcon from './ThreeDimensionsIcon.vue';
72
+ import ToolsIcon from './ToolsIcon.vue';
73
+ import TouchIcon from './TouchIcon.vue';
74
+ import TrashCanIcon from './TrashCanIcon.vue';
75
+ import TriangleIcon from './TriangleIcon.vue';
76
+ import TwoDimensionsIcon from './TwoDimensionsIcon.vue';
77
+ import UploadIcon from './UploadIcon.vue';
78
+ import VideoRecorderIcon from './VideoRecorderIcon.vue';
79
+ import WalkingIcon from './WalkingIcon.vue';
80
+ import WallIcon from './WallIcon.vue';
81
+
82
+ // * // IconMap.boundingBox
83
+ // * <v-icon size="16" v-text="'$vcsBoundingBox'" />
84
+ // * // Material Design Icons
85
+ // * <v-icon size="16" v-text="'mdi-fast-forward'" />
86
+ // *
87
+ // * Enum for Icon values.
88
+ // * Final values must be camel-cased and prefixed with '$vcs'.
89
+ // * Additional icons can be found at https://materialdesignicons.com/
90
+ // * They must be kebab-cased and prefixed with 'mdi-'
91
+
92
+ /**
93
+ * @module Icon
94
+ */
95
+ /**
96
+ * @typedef Icon
97
+ * @type {Object}
98
+ * @property {Object.<string, Object>} Map
99
+ */
100
+
101
+ /**
102
+ * @readonly
103
+ * @enum {Icon}
104
+ */
105
+ const IconMap = {
106
+ '2d': {
107
+ component: TwoDimensionsIcon,
108
+ },
109
+ '2dArea': {
110
+ component: TwoDAreaIcon,
111
+ },
112
+ '2dDistance': {
113
+ component: TwoDDistanceIcon,
114
+ },
115
+ '3d': {
116
+ component: ThreeDimensionsIcon,
117
+ },
118
+ '3dArea': {
119
+ component: ThreeDAreaIcon,
120
+ },
121
+ '3dDistance': {
122
+ component: ThreeDDistanceIcon,
123
+ },
124
+ '3dHeight': {
125
+ component: ThreeDHeightIcon,
126
+ },
127
+ angle: {
128
+ component: AngleIcon,
129
+ },
130
+ associations: {
131
+ component: AssociationsIcon,
132
+ },
133
+ axis: {
134
+ component: AxisIcon,
135
+ },
136
+ boundingBox: {
137
+ component: BoundingBoxIcon,
138
+ },
139
+ checkbox: {
140
+ component: CheckboxIcon,
141
+ },
142
+ checkboxChecked: {
143
+ component: CheckboxCheckedIcon,
144
+ },
145
+ checkboxIndeterminate: {
146
+ component: CheckboxIndeterminateIcon,
147
+ },
148
+ circle: {
149
+ component: CircleIcon,
150
+ },
151
+ colorSwatch: {
152
+ component: ColorSwatchIcon,
153
+ },
154
+ comment: {
155
+ component: CommentIcon,
156
+ },
157
+ components: {
158
+ component: ComponentsIcon,
159
+ },
160
+ compass: {
161
+ component: CompassIcon,
162
+ },
163
+ cone: {
164
+ component: ConeIcon,
165
+ },
166
+ dimensionsHouse: {
167
+ component: DimensionsHouseIcon,
168
+ },
169
+ elevationProfile: {
170
+ component: ElevationProfileIcon,
171
+ },
172
+ export: {
173
+ component: ExportIcon,
174
+ },
175
+ exportArea: {
176
+ component: ExportAreaIcon,
177
+ },
178
+ exportFlight: {
179
+ component: ExportFlightIcon,
180
+ },
181
+ externalLink: {
182
+ component: ExternalLinkIcon,
183
+ },
184
+ eye: {
185
+ component: EyeIcon,
186
+ },
187
+ fastForward: {
188
+ component: FastForwardIcon,
189
+ },
190
+ filter: {
191
+ component: FilterIcon,
192
+ },
193
+ globeNature: {
194
+ component: GlobeNatureIcon,
195
+ },
196
+ healthCareIndustries: {
197
+ component: HealthCareIndustriesIcon,
198
+ },
199
+ help: {
200
+ component: HelpIcon,
201
+ },
202
+ homePoint: {
203
+ component: HomePointIcon,
204
+ },
205
+ house: {
206
+ component: HouseIcon,
207
+ },
208
+ hospitals: {
209
+ component: HospitalsIcon,
210
+ },
211
+ import: {
212
+ component: ImportIcon,
213
+ },
214
+ info: {
215
+ component: InfoIcon,
216
+ },
217
+ kebab: {
218
+ component: KebabIcon,
219
+ },
220
+ label: {
221
+ component: LabelIcon,
222
+ },
223
+ layers: {
224
+ component: LayersIcon,
225
+ },
226
+ legend: {
227
+ component: LegendIcon,
228
+ },
229
+ line: {
230
+ component: LineIcon,
231
+ },
232
+ link: {
233
+ component: LinkIcon,
234
+ },
235
+ progress: {
236
+ component: ProgressIcon,
237
+ },
238
+ map: {
239
+ component: MapIcon,
240
+ },
241
+ menu: {
242
+ component: MenuIcon,
243
+ },
244
+ minus: {
245
+ component: MinusIcon,
246
+ },
247
+ objectAttribute: {
248
+ component: ObjectAttributeIcon,
249
+ },
250
+ objectSelect: {
251
+ component: ObjectSelectIcon,
252
+ },
253
+ obliqueView: {
254
+ component: ObliqueViewIcon,
255
+ },
256
+ pdf: {
257
+ component: PdfIcon,
258
+ },
259
+ pedestrian: {
260
+ component: PedestrianIcon,
261
+ },
262
+ pen: {
263
+ component: PenIcon,
264
+ },
265
+ playCircle: {
266
+ component: PlayCircleIcon,
267
+ },
268
+ plus: {
269
+ component: PlusIcon,
270
+ },
271
+ poi: {
272
+ component: PoiIcon,
273
+ },
274
+ pointSelect: {
275
+ component: PointSelectIcon,
276
+ },
277
+ presentationMode: {
278
+ component: PresentationModeIcon,
279
+ },
280
+ rectangle: {
281
+ component: RectangleIcon,
282
+ },
283
+ return: {
284
+ component: ReturnIcon,
285
+ },
286
+ rewind: {
287
+ component: RewindIcon,
288
+ },
289
+ search: {
290
+ component: SearchIcon,
291
+ },
292
+ shadow: {
293
+ component: ShadowIcon,
294
+ },
295
+ shapes: {
296
+ component: ShapesIcon,
297
+ },
298
+ share: {
299
+ component: ShareIcon,
300
+ },
301
+ simpleCircleFilled: {
302
+ component: SimpleCircleFilledIcon,
303
+ },
304
+ simpleCircleHalfFilled: {
305
+ component: SimpleCircleHalfFilledIcon,
306
+ },
307
+ simpleCircleOutlined: {
308
+ component: SimpleCircleOutlinedIcon,
309
+ },
310
+ skipNext: {
311
+ component: SkipNextIcon,
312
+ },
313
+ skipPrevious: {
314
+ component: SkipPreviousIcon,
315
+ },
316
+ splitView: {
317
+ component: SplitViewIcon,
318
+ },
319
+ textStyle: {
320
+ component: TextStyleIcon,
321
+ },
322
+ tools: {
323
+ component: ToolsIcon,
324
+ },
325
+ touch: {
326
+ component: TouchIcon,
327
+ },
328
+ trashCan: {
329
+ component: TrashCanIcon,
330
+ },
331
+ triangle: {
332
+ component: TriangleIcon,
333
+ },
334
+ upload: {
335
+ component: UploadIcon,
336
+ },
337
+ videoRecorder: {
338
+ component: VideoRecorderIcon,
339
+ },
340
+ wall: {
341
+ component: WallIcon,
342
+ },
343
+ walking: {
344
+ component: WalkingIcon,
345
+ },
346
+ };
347
+
348
+ const nameCapitalized = (name) => { return name.charAt(0).toUpperCase() + name.slice(1); };
349
+
350
+ const prefixed = (iconMap) => {
351
+ return Object
352
+ .entries(iconMap)
353
+ .reduce((previousValue, [key, value]) => ({ ...previousValue, [`vcs${nameCapitalized(key)}`]: value }), {});
354
+ };
355
+
356
+ const Icons = prefixed(IconMap);
357
+ export const IconIds = Object.keys(IconMap);
358
+ export const IconNames = Object.keys(Icons).map((name) => { return `$${name}`; });
359
+ export default Icons;
@@ -0,0 +1,21 @@
1
+ <!-- eslint-disable max-len -->
2
+
3
+ <template>
4
+ <svg id="icon_24_2D_area" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
5
+ <rect id="size" width="24" height="24" fill="none" />
6
+ <path id="Path_681" data-name="Path 681" d="M-10.08-3.448h1.088A2.381,2.381,0,0,1-8.948-3.9,1.4,1.4,0,0,1-8.8-4.316a.866.866,0,0,1,.276-.3.734.734,0,0,1,.42-.116.833.833,0,0,1,.6.228.843.843,0,0,1,.236.636.892.892,0,0,1-.116.456,1.555,1.555,0,0,1-.288.36,2.607,2.607,0,0,1-.38.292q-.208.132-.392.26-.36.248-.684.488a3.324,3.324,0,0,0-.564.524,2.256,2.256,0,0,0-.38.644,2.335,2.335,0,0,0-.14.848H-6.1V-.976H-8.744a2.535,2.535,0,0,1,.48-.5q.272-.216.56-.4t.572-.38a3.06,3.06,0,0,0,.508-.428,1.912,1.912,0,0,0,.36-.54,1.774,1.774,0,0,0,.136-.728A1.692,1.692,0,0,0-6.284-4.7a1.634,1.634,0,0,0-.42-.552,1.886,1.886,0,0,0-.612-.344,2.23,2.23,0,0,0-.732-.12,2.182,2.182,0,0,0-.892.172,1.74,1.74,0,0,0-.644.48,2.076,2.076,0,0,0-.384.72A2.687,2.687,0,0,0-10.08-3.448Zm5.96,2.392v-3.6h.9a2.028,2.028,0,0,1,.78.132,1.224,1.224,0,0,1,.508.38,1.556,1.556,0,0,1,.276.6,3.33,3.33,0,0,1,.084.78,2.34,2.34,0,0,1-.12.8,1.467,1.467,0,0,1-.32.532,1.162,1.162,0,0,1-.456.292A1.613,1.613,0,0,1-3-1.056ZM-5.376-5.712V0h2.464a2.734,2.734,0,0,0,1.14-.22,2.268,2.268,0,0,0,.808-.6A2.535,2.535,0,0,0-.48-1.736,3.957,3.957,0,0,0-.32-2.888a3.56,3.56,0,0,0-.2-1.24,2.438,2.438,0,0,0-.544-.88,2.231,2.231,0,0,0-.824-.528,2.941,2.941,0,0,0-1.028-.176Z" transform="translate(24 24)" fill="currentColor" />
7
+ <g id="Group_1752" data-name="Group 1752" transform="translate(-1319.907 -496.728)">
8
+ <g id="Path_673" data-name="Path 673" transform="translate(1321.907 497.728)">
9
+ <path id="Path_675" data-name="Path 675" d="M1323.231,513.759a1.333,1.333,0,0,1-1.323-1.271v-6.134a1.31,1.31,0,0,1,1.382-1.3h5.273v-6.032a1.351,1.351,0,0,1,1.4-1.3h10.5a1.334,1.334,0,0,1,1.368,1.27V512.46a1.344,1.344,0,0,1-1.4,1.3h-17.2Zm.026-1.5h0Zm.183-5.7v5.7H1340.3v-13.03h-10.2v6.032a1.339,1.339,0,0,1-1.4,1.3Zm17.017,5.7h0Zm-11.741-7.2h0Zm1.225-5.83h0Zm10.534,0h0Z" transform="translate(-1321.907 -497.728)" fill="currentColor" />
10
+ </g>
11
+ <g id="M2" transform="translate(1332.344 504.879)" style="isolation: isolate;">
12
+ <g id="Group_1752-2" data-name="Group 1752" transform="translate(0 0.215)" style="isolation: isolate;">
13
+ <path id="Path_676" data-name="Path 676" d="M1333.238,505.094l1,2.946h.012l.948-2.946h1.326v4.284h-.881v-3.036h-.013l-1.05,3.036h-.726l-1.049-3.006h-.013v3.006h-.882v-4.284Z" transform="translate(-1331.912 -505.094)" fill="currentColor" />
14
+ </g>
15
+ <g id="Group_1753" data-name="Group 1753" transform="translate(5.102)" style="isolation: isolate;">
16
+ <path id="Path_677" data-name="Path 677" d="M1337.119,505.479a.9.9,0,0,1,.168-.315.75.75,0,0,1,.281-.21.963.963,0,0,1,.391-.075.951.951,0,0,1,.32.053.827.827,0,0,1,.268.15.706.706,0,0,1,.183.241.736.736,0,0,1,.069.323.767.767,0,0,1-.06.318.834.834,0,0,1-.157.236,1.371,1.371,0,0,1-.223.188l-.25.166a2.967,2.967,0,0,0-.245.176,1.129,1.129,0,0,0-.21.221h1.159v.427h-1.8a1.018,1.018,0,0,1,.061-.371.977.977,0,0,1,.166-.281,1.514,1.514,0,0,1,.247-.23c.094-.07.195-.142.3-.214.054-.037.111-.075.172-.113a1.124,1.124,0,0,0,.166-.128.721.721,0,0,0,.126-.157.391.391,0,0,0,.051-.2.368.368,0,0,0-.1-.279.364.364,0,0,0-.263-.1.332.332,0,0,0-.185.05.393.393,0,0,0-.12.133.675.675,0,0,0-.066.183,1.105,1.105,0,0,0-.018.2h-.477A1.177,1.177,0,0,1,1337.119,505.479Z" transform="translate(-1337.014 -504.879)" fill="currentColor" />
17
+ </g>
18
+ </g>
19
+ </g>
20
+ </svg>
21
+ </template>
@@ -0,0 +1,18 @@
1
+ <!-- eslint-disable max-len -->
2
+
3
+ <template>
4
+ <svg id="icon_24_2D_distance" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
5
+ <rect id="size" width="24" height="24" fill="none" />
6
+ <path id="Path_682" data-name="Path 682" d="M-10.08-3.448h1.088A2.381,2.381,0,0,1-8.948-3.9,1.4,1.4,0,0,1-8.8-4.316a.866.866,0,0,1,.276-.3.734.734,0,0,1,.42-.116.833.833,0,0,1,.6.228.843.843,0,0,1,.236.636.892.892,0,0,1-.116.456,1.555,1.555,0,0,1-.288.36,2.607,2.607,0,0,1-.38.292q-.208.132-.392.26-.36.248-.684.488a3.324,3.324,0,0,0-.564.524,2.256,2.256,0,0,0-.38.644,2.335,2.335,0,0,0-.14.848H-6.1V-.976H-8.744a2.535,2.535,0,0,1,.48-.5q.272-.216.56-.4t.572-.38a3.06,3.06,0,0,0,.508-.428,1.912,1.912,0,0,0,.36-.54,1.774,1.774,0,0,0,.136-.728A1.692,1.692,0,0,0-6.284-4.7a1.634,1.634,0,0,0-.42-.552,1.886,1.886,0,0,0-.612-.344,2.23,2.23,0,0,0-.732-.12,2.182,2.182,0,0,0-.892.172,1.74,1.74,0,0,0-.644.48,2.076,2.076,0,0,0-.384.72A2.687,2.687,0,0,0-10.08-3.448Zm5.96,2.392v-3.6h.9a2.028,2.028,0,0,1,.78.132,1.224,1.224,0,0,1,.508.38,1.556,1.556,0,0,1,.276.6,3.33,3.33,0,0,1,.084.78,2.34,2.34,0,0,1-.12.8,1.467,1.467,0,0,1-.32.532,1.162,1.162,0,0,1-.456.292A1.613,1.613,0,0,1-3-1.056ZM-5.376-5.712V0h2.464a2.734,2.734,0,0,0,1.14-.22,2.268,2.268,0,0,0,.808-.6A2.535,2.535,0,0,0-.48-1.736,3.957,3.957,0,0,0-.32-2.888a3.56,3.56,0,0,0-.2-1.24,2.438,2.438,0,0,0-.544-.88,2.231,2.231,0,0,0-.824-.528,2.941,2.941,0,0,0-1.028-.176Z" transform="translate(24 24)" fill="currentColor" />
7
+ <path
8
+ id="Union_52"
9
+ data-name="Union 52"
10
+ d="M10956.373,13156.8h-11.986a1.387,1.387,0,0,1-1.387-1.39v-3.467a1.386,1.386,0,0,1,1.387-1.387h19.1a1.387,1.387,0,0,1,1.388,1.387v3.467a1.387,1.387,0,0,1-1.388,1.39Zm-11.986-4.51v2.773a.349.349,0,0,0,.347.347h18.411a.346.346,0,0,0,.347-.347v-2.773a.346.346,0,0,0-.347-.347h-2.255a.347.347,0,0,0-.347.347v.693a.52.52,0,0,1-1.04,0v-.693a.347.347,0,0,0-.347-.347h-.693a.35.35,0,0,0-.351.347v.693a.52.52,0,0,1-1.04,0v-.693a.346.346,0,0,0-.347-.347h-.71a.347.347,0,0,0-.347.347v.693a.52.52,0,0,1-1.04,0v-.693a.347.347,0,0,0-.347-.347h-.693a.347.347,0,0,0-.347.347v.693a.52.52,0,0,1-1.04,0v-.693a.347.347,0,0,0-.347-.347h-.7a.347.347,0,0,0-.347.347v.693a.52.52,0,0,1-1.04,0v-.693a.347.347,0,0,0-.347-.347h-.7a.343.343,0,0,0-.343.347v.693a.522.522,0,0,1-1.044,0v-.693a.347.347,0,0,0-.347-.347h-2.255A.349.349,0,0,0,10944.387,13152.286Zm.7,1.387a.694.694,0,1,1,.693.693A.693.693,0,0,1,10945.083,13153.673Zm17.382-5.376v-.35a.347.347,0,0,0-.347-.347h-16.342a.347.347,0,0,0-.347.347v.35a.522.522,0,0,1-.891.366l-1.388-1.387a.525.525,0,0,1,0-.736l1.388-1.387a.52.52,0,0,1,.891.367v.347a.347.347,0,0,0,.347.347h16.342a.347.347,0,0,0,.347-.347v-.347a.52.52,0,0,1,.888-.367l1.388,1.387a.519.519,0,0,1,0,.736l-1.388,1.387a.52.52,0,0,1-.888-.366Z"
11
+ transform="translate(-10942 -13142.48)"
12
+ fill="currentColor"
13
+ stroke="rgba(0,0,0,0)"
14
+ stroke-miterlimit="10"
15
+ stroke-width="1"
16
+ />
17
+ </svg>
18
+ </template>
@@ -0,0 +1,21 @@
1
+ <!-- eslint-disable max-len -->
2
+
3
+ <template>
4
+ <svg id="icon_24_3D_area" xmlns="http://www.w3.org/2000/svg" width="24" height="24.104" viewBox="0 0 24 24.104">
5
+ <rect id="size" width="24" height="24" fill="none" />
6
+ <path id="Path_679" data-name="Path 679" d="M-8.552-3.336v.8q.208,0,.436.012a1.323,1.323,0,0,1,.42.088.711.711,0,0,1,.316.244.814.814,0,0,1,.124.488.82.82,0,0,1-.264.644.937.937,0,0,1-.648.236A.965.965,0,0,1-8.6-.912a.875.875,0,0,1-.3-.236A1.052,1.052,0,0,1-9.08-1.5a1.616,1.616,0,0,1-.072-.428h-1.08a2.244,2.244,0,0,0,.14.864,1.755,1.755,0,0,0,.42.636,1.8,1.8,0,0,0,.66.4A2.586,2.586,0,0,0-8.152.1a2.563,2.563,0,0,0,.784-.12A2.032,2.032,0,0,0-6.7-.368a1.712,1.712,0,0,0,.46-.576,1.73,1.73,0,0,0,.172-.784,1.314,1.314,0,0,0-.264-.824A1.219,1.219,0,0,0-7.064-3v-.016a.983.983,0,0,0,.588-.424,1.325,1.325,0,0,0,.2-.72,1.293,1.293,0,0,0-.168-.664,1.624,1.624,0,0,0-.436-.488,1.913,1.913,0,0,0-.6-.3,2.345,2.345,0,0,0-.672-.1,2.1,2.1,0,0,0-.784.14,1.736,1.736,0,0,0-.6.4,1.8,1.8,0,0,0-.392.612,2.38,2.38,0,0,0-.156.788h1.08A1.1,1.1,0,0,1-8.8-4.492a.774.774,0,0,1,.652-.284.859.859,0,0,1,.552.192.666.666,0,0,1,.24.552.594.594,0,0,1-.116.384.745.745,0,0,1-.3.22,1.234,1.234,0,0,1-.388.092A2.4,2.4,0,0,1-8.552-3.336Zm4.432,2.28v-3.6h.9a2.028,2.028,0,0,1,.78.132,1.224,1.224,0,0,1,.508.38,1.556,1.556,0,0,1,.276.6,3.33,3.33,0,0,1,.084.78,2.34,2.34,0,0,1-.12.8,1.467,1.467,0,0,1-.32.532,1.162,1.162,0,0,1-.456.292A1.613,1.613,0,0,1-3-1.056ZM-5.376-5.712V0h2.464a2.734,2.734,0,0,0,1.14-.22,2.268,2.268,0,0,0,.808-.6A2.535,2.535,0,0,0-.48-1.736,3.957,3.957,0,0,0-.32-2.888a3.56,3.56,0,0,0-.2-1.24,2.438,2.438,0,0,0-.544-.88,2.231,2.231,0,0,0-.824-.528,2.941,2.941,0,0,0-1.028-.176Z" transform="translate(24 24)" fill="currentColor" />
7
+ <g id="Group_1754" data-name="Group 1754" transform="translate(-1319.907 -496.728)">
8
+ <g id="Path_673" data-name="Path 673" transform="translate(1321.907 497.728)">
9
+ <path id="Path_675" data-name="Path 675" d="M1323.231,513.759a1.333,1.333,0,0,1-1.323-1.271v-6.134a1.31,1.31,0,0,1,1.382-1.3h5.273v-6.032a1.351,1.351,0,0,1,1.4-1.3h10.5a1.334,1.334,0,0,1,1.368,1.27V512.46a1.344,1.344,0,0,1-1.4,1.3h-17.2Zm.026-1.5h0Zm.183-5.7v5.7H1340.3v-13.03h-10.2v6.032a1.339,1.339,0,0,1-1.4,1.3Zm17.017,5.7h0Zm-11.741-7.2h0Zm1.225-5.83h0Zm10.534,0h0Z" transform="translate(-1321.907 -497.728)" fill="currentColor" />
10
+ </g>
11
+ <g id="M2" transform="translate(1332.344 504.879)" style="isolation: isolate;">
12
+ <g id="Group_1752" data-name="Group 1752" transform="translate(0 0.215)" style="isolation: isolate;">
13
+ <path id="Path_676" data-name="Path 676" d="M1333.238,505.094l1,2.946h.012l.948-2.946h1.326v4.284h-.881v-3.036h-.013l-1.05,3.036h-.726l-1.049-3.006h-.013v3.006h-.882v-4.284Z" transform="translate(-1331.912 -505.094)" fill="currentColor" />
14
+ </g>
15
+ <g id="Group_1753" data-name="Group 1753" transform="translate(5.102)" style="isolation: isolate;">
16
+ <path id="Path_677" data-name="Path 677" d="M1337.119,505.479a.9.9,0,0,1,.168-.315.75.75,0,0,1,.281-.21.963.963,0,0,1,.391-.075.951.951,0,0,1,.32.053.827.827,0,0,1,.268.15.706.706,0,0,1,.183.241.736.736,0,0,1,.069.323.767.767,0,0,1-.06.318.834.834,0,0,1-.157.236,1.371,1.371,0,0,1-.223.188l-.25.166a2.967,2.967,0,0,0-.245.176,1.129,1.129,0,0,0-.21.221h1.159v.427h-1.8a1.018,1.018,0,0,1,.061-.371.977.977,0,0,1,.166-.281,1.514,1.514,0,0,1,.247-.23c.094-.07.195-.142.3-.214.054-.037.111-.075.172-.113a1.124,1.124,0,0,0,.166-.128.721.721,0,0,0,.126-.157.391.391,0,0,0,.051-.2.368.368,0,0,0-.1-.279.364.364,0,0,0-.263-.1.332.332,0,0,0-.185.05.393.393,0,0,0-.12.133.675.675,0,0,0-.066.183,1.105,1.105,0,0,0-.018.2h-.477A1.177,1.177,0,0,1,1337.119,505.479Z" transform="translate(-1337.014 -504.879)" fill="currentColor" />
17
+ </g>
18
+ </g>
19
+ </g>
20
+ </svg>
21
+ </template>