@vcmap/ui 6.0.0-rc.2 → 6.0.0-rc.5

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 (278) hide show
  1. package/build/build.js +40 -60
  2. package/build/buildHelpers.js +62 -19
  3. package/build/bundle.js +1 -1
  4. package/build/info/conf.json +1 -1
  5. package/build/info/publish.js +25 -31
  6. package/build/lintTypes.js +5 -0
  7. package/config/base.config.json +2 -1
  8. package/config/dev.config.json +7 -1
  9. package/config/projects.config.json +2 -1
  10. package/config/splashscreen.config.json +45 -0
  11. package/config/www.config.json +25 -22
  12. package/dist/.htaccess +7 -0
  13. package/dist/assets/@mdi/font/README.md +25 -0
  14. package/dist/assets/@mdi/font/css/materialdesignicons.min-680621ca.css +3 -0
  15. package/dist/assets/@mdi/font/css/materialdesignicons.min.css.map +16 -0
  16. package/dist/assets/@mdi/font/fonts/materialdesignicons-webfont.woff2 +0 -0
  17. package/dist/assets/{cesium.0b750d.js → cesium-126f111a.js} +272 -385
  18. package/dist/assets/cesium.js +1 -1
  19. package/dist/assets/{core.cbf44a.js → core-1c8b8674.js} +2015 -2019
  20. package/dist/assets/core.js +1 -1
  21. package/dist/assets/{ol.86e93c.js → ol-27f9b3f3.js} +42521 -44394
  22. package/dist/assets/ol.js +1 -1
  23. package/dist/assets/ui-7214428e.css +1 -0
  24. package/dist/assets/{ui.7c276c.js → ui-7214428e.js} +13968 -13907
  25. package/dist/assets/ui.js +1 -1
  26. package/dist/assets/vue-c78a5f76.js +6083 -0
  27. package/dist/assets/vue.js +1 -1
  28. package/dist/assets/{vuetify.4d18fe.css → vuetify-88a2fabe.css} +2 -2
  29. package/dist/assets/{vuetify.4d18fe.js → vuetify-88a2fabe.js} +7793 -7940
  30. package/dist/assets/vuetify.js +1 -1
  31. package/dist/index.html +11 -10
  32. package/index.d.ts +11 -11
  33. package/index.html +5 -5
  34. package/index.js +9 -7
  35. package/lib/olLib.js +84 -23
  36. package/package.json +19 -19
  37. package/plugins/@vcmap-show-case/flight-component-example/src/FlightExample.vue +41 -1
  38. package/plugins/@vcmap-show-case/form-inputs-example/src/FormInputsExample.vue +71 -32
  39. package/plugins/@vcmap-show-case/form-inputs-example/src/exampleActions.js +7 -11
  40. package/plugins/@vcmap-show-case/form-inputs-example/src/index.js +2 -2
  41. package/plugins/@vcmap-show-case/list-example/src/ListExample.vue +21 -8
  42. package/plugins/@vcmap-show-case/project-selector/src/ModulesListComponent.vue +18 -11
  43. package/plugins/@vcmap-show-case/search-example/src/index.js +1 -0
  44. package/plugins/@vcmap-show-case/search-example/src/searchImpl.js +35 -5
  45. package/plugins/@vcmap-show-case/style-input-example/src/StyleExample.vue +29 -90
  46. package/plugins/@vcmap-show-case/toolbox-example/src/index.js +2 -1
  47. package/plugins/package.json +3 -23
  48. package/public/assets/@mdi/font/README.md +25 -0
  49. package/public/assets/@mdi/font/css/materialdesignicons.min.css +2 -2
  50. package/public/assets/@mdi/font/css/materialdesignicons.min.css.map +16 -0
  51. package/public/assets/@mdi/font/fonts/materialdesignicons-webfont.woff2 +0 -0
  52. package/src/actions/StyleSelector.vue +1 -1
  53. package/src/actions/actionHelper.js +33 -22
  54. package/src/actions/flightActions.js +5 -5
  55. package/src/actions/listActions.d.ts +4 -11
  56. package/src/actions/listActions.js +6 -22
  57. package/src/actions/stateRefAction.js +2 -2
  58. package/src/application/VcsApp.vue +147 -57
  59. package/src/application/VcsApp.vue.d.ts +298 -4
  60. package/src/application/VcsAttributions.vue +2 -13
  61. package/src/application/VcsAttributionsFooter.vue +10 -11
  62. package/src/application/VcsContainer.vue +26 -9
  63. package/src/application/VcsContainer.vue.d.ts +237 -0
  64. package/src/application/VcsMainMap.vue +7 -7
  65. package/src/application/VcsMainMap.vue.d.ts +2 -2
  66. package/src/application/VcsNavbar.vue +5 -1
  67. package/src/application/VcsPositionDisplay.vue +8 -23
  68. package/src/application/VcsPositionDisplay.vue.d.ts +0 -1
  69. package/src/application/VcsSettings.vue +10 -17
  70. package/src/application/VcsSplashScreen.vue +21 -40
  71. package/src/application/VcsSplashScreen.vue.d.ts +0 -2
  72. package/src/application/VcsTextPage.vue +12 -43
  73. package/src/application/VcsTextPage.vue.d.ts +4 -8
  74. package/src/application/VcsTextPageFooter.vue +23 -40
  75. package/src/components/buttons/VcsActionButtonList.vue +59 -3
  76. package/src/components/buttons/VcsActionButtonList.vue.d.ts +28 -0
  77. package/src/components/extent/VcsExtentEditor.vue +1 -1
  78. package/src/components/flight/VcsFlightAnchorsComponent.vue +63 -36
  79. package/src/components/flight/VcsFlightComponent.vue +16 -21
  80. package/src/components/flight/VcsFlightPlayer.vue +27 -5
  81. package/src/components/form-inputs-controls/VcsCheckbox.vue +9 -5
  82. package/src/components/form-inputs-controls/VcsChipArrayInput.vue +15 -13
  83. package/src/components/form-inputs-controls/VcsChipArrayInput.vue.d.ts +3 -4
  84. package/src/components/form-inputs-controls/VcsCoordinate.vue +17 -4
  85. package/src/components/form-inputs-controls/VcsCoordinate.vue.d.ts +5 -2
  86. package/src/components/form-inputs-controls/VcsDatePicker.vue +34 -60
  87. package/src/components/form-inputs-controls/VcsDatePicker.vue.d.ts +1 -63
  88. package/src/components/form-inputs-controls/VcsFileInput.vue +17 -18
  89. package/src/components/form-inputs-controls/VcsFileInput.vue.d.ts +1 -0
  90. package/src/components/form-inputs-controls/VcsLabel.vue +1 -1
  91. package/src/components/form-inputs-controls/VcsRadio.vue +17 -3
  92. package/src/components/form-inputs-controls/VcsRadio.vue.d.ts +1 -0
  93. package/src/components/form-inputs-controls/VcsSelect.vue +40 -31
  94. package/src/components/form-inputs-controls/VcsSelect.vue.d.ts +5 -2
  95. package/src/components/form-inputs-controls/VcsSlider.vue +13 -1
  96. package/src/components/form-inputs-controls/VcsSlider.vue.d.ts +1 -0
  97. package/src/components/form-inputs-controls/VcsTextArea.vue +27 -26
  98. package/src/components/form-inputs-controls/VcsTextArea.vue.d.ts +1 -0
  99. package/src/components/form-inputs-controls/VcsTextField.vue +20 -4
  100. package/src/components/form-inputs-controls/VcsTextField.vue.d.ts +9 -0
  101. package/src/components/form-inputs-controls/VcsWizardStep.vue +3 -6
  102. package/src/components/form-inputs-controls/vcsTextField.scss +9 -12
  103. package/src/components/form-output/VcsFormattedNumber.vue +21 -5
  104. package/src/components/form-output/VcsFormattedNumber.vue.d.ts +9 -0
  105. package/src/components/form-output/VcsMarkdown.vue +15 -12
  106. package/src/components/form-output/VcsMarkdown.vue.d.ts +1 -0
  107. package/src/components/form-output/markdownHelper.d.ts +30 -0
  108. package/src/components/form-output/markdownHelper.js +398 -0
  109. package/src/components/import/VcsFileDrop.vue +8 -5
  110. package/src/components/import/VcsImportComponent.vue +4 -3
  111. package/src/components/import/VcsImportComponent.vue.d.ts +1 -2
  112. package/src/components/lists/VcsActionList.vue +11 -7
  113. package/src/components/lists/VcsList.vue +30 -52
  114. package/src/components/lists/VcsList.vue.d.ts +14 -59
  115. package/src/components/lists/{VcsListItem.vue → VcsListItemComponent.vue} +68 -22
  116. package/src/components/lists/VcsListItemComponent.vue.d.ts +69 -0
  117. package/src/components/lists/VcsTreeview.vue +43 -16
  118. package/src/components/lists/VcsTreeview.vue.d.ts +14 -3
  119. package/src/components/lists/VcsTreeviewLeaf.vue +15 -6
  120. package/src/components/lists/VcsTreeviewSearchbar.vue +2 -2
  121. package/src/components/notification/VcsHelp.vue +1 -1
  122. package/src/components/notification/VcsHelp.vue.d.ts +3 -2
  123. package/src/components/section/VcsExpansionPanel.vue +101 -0
  124. package/src/components/section/VcsExpansionPanel.vue.d.ts +19 -0
  125. package/src/components/{form-inputs-controls → section}/VcsFormSection.vue +10 -4
  126. package/src/components/{form-inputs-controls → section}/VcsFormSection.vue.d.ts +1 -2
  127. package/src/components/style/MenuWrapper.vue +24 -26
  128. package/src/components/style/MenuWrapper.vue.d.ts +4 -4
  129. package/src/components/style/VcsFillMenu.vue +9 -16
  130. package/src/components/style/VcsFillMenu.vue.d.ts +0 -18
  131. package/src/components/style/VcsFillSelector.vue +13 -16
  132. package/src/components/style/VcsImageMenu.vue +8 -25
  133. package/src/components/style/VcsImageMenu.vue.d.ts +0 -27
  134. package/src/components/style/VcsImageSelector.vue +102 -167
  135. package/src/components/style/VcsImageSelector.vue.d.ts +15 -15
  136. package/src/components/style/VcsStrokeMenu.vue +8 -15
  137. package/src/components/style/VcsStrokeMenu.vue.d.ts +0 -18
  138. package/src/components/style/VcsStrokeSelector.vue +11 -18
  139. package/src/components/style/VcsTextMenu.vue +9 -12
  140. package/src/components/style/VcsTextMenu.vue.d.ts +0 -9
  141. package/src/components/style/VcsTextSelector.vue +79 -95
  142. package/src/components/style/VcsTextSelector.vue.d.ts +20 -22
  143. package/src/components/style/VcsVectorStyleComponent.vue +8 -19
  144. package/src/components/style/VcsVectorStyleComponent.vue.d.ts +1 -1
  145. package/src/components/style/composables.d.ts +0 -14
  146. package/src/components/style/composables.js +0 -49
  147. package/src/components/tables/VcsDataTable.vue +28 -22
  148. package/src/components/tables/VcsTable.vue +45 -62
  149. package/src/components/tables/VcsTable.vue.d.ts +30 -17
  150. package/src/components/tables/VcsTableCell.vue +72 -0
  151. package/src/components/tables/VcsTableCell.vue.d.ts +13 -0
  152. package/src/components/vector-properties/VcsFeatureEditingWindow.vue +43 -9
  153. package/src/components/vector-properties/VcsFeatureTransforms.vue +5 -0
  154. package/src/components/vector-properties/VcsVectorPropertiesComponent.vue +1 -1
  155. package/src/components/viewpoint/VcsViewpointComponent.vue +23 -10
  156. package/src/components/viewpoint/VcsViewpointEditor.vue +2 -1
  157. package/src/contentTree/LayerTree.vue +9 -27
  158. package/src/contentTree/LayerTree.vue.d.ts +1 -1
  159. package/src/contentTree/contentTreeCollection.d.ts +1 -0
  160. package/src/contentTree/contentTreeCollection.js +45 -11
  161. package/src/contentTree/contentTreeItem.d.ts +2 -2
  162. package/src/contentTree/contentTreeItem.js +7 -7
  163. package/src/featureInfo/BalloonComponent.vue +14 -15
  164. package/src/featureInfo/MarkdownBalloonComponent.vue +4 -2
  165. package/src/featureInfo/MarkdownBalloonComponent.vue.d.ts +2 -2
  166. package/src/featureInfo/abstractFeatureInfoView.d.ts +6 -0
  167. package/src/featureInfo/abstractFeatureInfoView.js +15 -7
  168. package/src/featureInfo/featureInfo.d.ts +5 -5
  169. package/src/featureInfo/featureInfo.js +59 -41
  170. package/src/featureInfo/iframeFeatureInfoView.d.ts +8 -2
  171. package/src/featureInfo/iframeFeatureInfoView.js +15 -5
  172. package/src/featureInfo/markdownBalloonFeatureInfoView.d.ts +1 -1
  173. package/src/featureInfo/markdownBalloonFeatureInfoView.js +5 -5
  174. package/src/featureInfo/markdownFeatureInfoView.d.ts +1 -1
  175. package/src/featureInfo/markdownFeatureInfoView.js +9 -11
  176. package/src/featureInfo/tableFeatureInfoView.js +13 -4
  177. package/src/init.d.ts +5 -38
  178. package/src/init.js +19 -18
  179. package/src/legend/StyleLegendItem.vue +4 -9
  180. package/src/legend/VcsLegend.vue +28 -54
  181. package/src/manager/buttonManager.js +4 -4
  182. package/src/manager/collectionManager/CollectionComponent.vue +17 -42
  183. package/src/manager/collectionManager/CollectionComponent.vue.d.ts +4 -2
  184. package/src/manager/collectionManager/CollectionComponentContent.vue +7 -6
  185. package/src/manager/collectionManager/CollectionComponentContent.vue.d.ts +3 -1
  186. package/src/manager/collectionManager/CollectionComponentList.vue +11 -9
  187. package/src/manager/collectionManager/CollectionComponentList.vue.d.ts +6 -4
  188. package/src/manager/collectionManager/CollectionComponentProvider.vue +1 -1
  189. package/src/manager/collectionManager/CollectionComponentStandalone.vue +3 -2
  190. package/src/manager/collectionManager/CollectionManager.vue +1 -1
  191. package/src/manager/collectionManager/collectionComponentClass.d.ts +1 -1
  192. package/src/manager/collectionManager/collectionComponentClass.js +7 -10
  193. package/src/manager/collectionManager/collectionManager.js +10 -10
  194. package/src/manager/collectionManager/editorCollectionComponentClass.js +6 -5
  195. package/src/manager/contextMenu/contextMenuManager.js +2 -2
  196. package/src/manager/navbarManager.js +2 -2
  197. package/src/manager/panel/PanelComponent.vue +2 -9
  198. package/src/manager/panel/PanelManagerComponent.vue +7 -3
  199. package/src/manager/panel/panelHelper.js +3 -3
  200. package/src/manager/panel/panelManager.d.ts +9 -1
  201. package/src/manager/panel/panelManager.js +18 -6
  202. package/src/manager/toolbox/GroupToolboxComponent.vue +8 -4
  203. package/src/manager/toolbox/GroupToolboxComponent.vue.d.ts +1 -0
  204. package/src/manager/toolbox/SelectToolboxComponent.vue +7 -4
  205. package/src/manager/toolbox/SelectToolboxComponent.vue.d.ts +1 -0
  206. package/src/manager/toolbox/ToolboxManager.vue +9 -6
  207. package/src/manager/toolbox/ToolboxManager.vue.d.ts +1 -0
  208. package/src/manager/toolbox/toolboxManager.js +10 -10
  209. package/src/manager/window/WindowComponent.vue +12 -8
  210. package/src/manager/window/WindowComponentHeader.vue +29 -8
  211. package/src/manager/window/WindowComponentHeader.vue.d.ts +2 -0
  212. package/src/manager/window/WindowManager.vue +2 -2
  213. package/src/manager/window/windowManager.d.ts +2 -2
  214. package/src/manager/window/windowManager.js +4 -4
  215. package/src/navigation/MapNavigation.vue +20 -0
  216. package/src/navigation/locatorHelper.js +1 -1
  217. package/src/navigation/overviewMap.js +1 -1
  218. package/src/notifier/NotifierComponent.vue +18 -15
  219. package/src/search/ResultItem.vue +18 -6
  220. package/src/search/ResultsComponent.vue +31 -20
  221. package/src/search/ResultsComponent.vue.d.ts +2 -1
  222. package/src/search/SearchComponent.vue +8 -14
  223. package/src/search/SearchComponent.vue.d.ts +1 -0
  224. package/src/search/search.js +2 -2
  225. package/src/siteConfig.js +9 -9
  226. package/src/state.js +4 -4
  227. package/src/styles/_typography.scss +0 -2
  228. package/src/styles/main.scss +0 -4
  229. package/src/uiConfig.d.ts +300 -5
  230. package/src/uiConfig.js +28 -16
  231. package/src/vcsUiApp.d.ts +21 -17
  232. package/src/vcsUiApp.js +11 -10
  233. package/src/vuePlugins/vuetify.d.ts +2 -0
  234. package/src/vuePlugins/vuetify.js +14 -0
  235. package/dist/assets/@mdi/font/css/materialdesignicons.css.map +0 -16
  236. package/dist/assets/@mdi/font/css/materialdesignicons.min.e3f476.css +0 -3
  237. package/dist/assets/index-8eGauqjA.js +0 -1
  238. package/dist/assets/ui.7c276c.css +0 -1
  239. package/dist/assets/vue.a3cd64.js +0 -6096
  240. package/public/assets/@mdi/font/css/materialdesignicons.css.map +0 -16
  241. package/src/application/VcsCustomScreen.vue +0 -45
  242. package/src/application/VcsCustomScreen.vue.d.ts +0 -15
  243. package/src/application/markdownHelper.d.ts +0 -12
  244. package/src/application/markdownHelper.js +0 -70
  245. package/src/components/lists/VcsListItem.vue.d.ts +0 -21
  246. package/src/components/notification/VcsTooltip.vue +0 -156
  247. package/src/components/notification/VcsTooltip.vue.d.ts +0 -27
  248. package/src/featureInfo/MarkdownComponent.vue +0 -16
  249. package/src/featureInfo/MarkdownComponent.vue.d.ts +0 -7
  250. package/src/styles/_theming.scss +0 -73
  251. package/src/styles/settings.scss +0 -6
  252. package/src/styles/shades.scss +0 -4
  253. package/src/styles/variables.scss +0 -140
  254. package/src/styles/vcsFont.scss +0 -2
  255. package/src/styles/vcsGrid.scss +0 -3
  256. /package/dist/assets/{favicon-128.4c4ce5.png → favicon-128-4c4ce5df.png} +0 -0
  257. /package/dist/assets/{favicon-180.5b99c0.png → favicon-180-4c4ce5df.png} +0 -0
  258. /package/dist/assets/{favicon-192.0e205e.png → favicon-192-4c4ce5df.png} +0 -0
  259. /package/dist/assets/{favicon-32.6b9add.png → favicon-32-4c4ce5df.png} +0 -0
  260. /package/dist/assets/{favicon.d5ec97.svg → favicon-4c4ce5df.svg} +0 -0
  261. /package/dist/assets/font/{TitilliumWeb-Regular.9ca076.woff2 → TitilliumWeb-Regular-9ca076be.woff2} +0 -0
  262. /package/dist/assets/style/{icon-marker.70960f.png → icon-marker-70960f05.png} +0 -0
  263. /package/dist/assets/style/{icon-marker-blue.534e37.png → icon-marker-blue-534e374b.png} +0 -0
  264. /package/dist/assets/style/{icon-marker-green.0b6a92.png → icon-marker-green-0b6a92bc.png} +0 -0
  265. /package/dist/assets/style/{icon-marker-o.036477.png → icon-marker-o-036477fa.png} +0 -0
  266. /package/dist/assets/style/{icon-marker-o-blue.7b6d62.png → icon-marker-o-blue-7b6d6279.png} +0 -0
  267. /package/dist/assets/style/{icon-marker-o-green.c863c0.png → icon-marker-o-green-c863c0fa.png} +0 -0
  268. /package/dist/assets/style/{icon-marker-o-red.93ff58.png → icon-marker-o-red-93ff58df.png} +0 -0
  269. /package/dist/assets/style/{icon-marker-red.313d03.png → icon-marker-red-313d03e8.png} +0 -0
  270. /package/dist/assets/style/{icon-pin.b7ce77.png → icon-pin-b7ce771e.png} +0 -0
  271. /package/dist/assets/style/{icon-pin-blue.7be369.png → icon-pin-blue-7be369a3.png} +0 -0
  272. /package/dist/assets/style/{icon-pin-green.cbb935.png → icon-pin-green-cbb935fe.png} +0 -0
  273. /package/dist/assets/style/{icon-pin-red.3f25b2.png → icon-pin-red-3f25b245.png} +0 -0
  274. /package/public/assets/{favicon-128.png → favicon-128-4c4ce5df.png} +0 -0
  275. /package/public/assets/{favicon-180.png → favicon-180-4c4ce5df.png} +0 -0
  276. /package/public/assets/{favicon-192.png → favicon-192-4c4ce5df.png} +0 -0
  277. /package/public/assets/{favicon-32.png → favicon-32-4c4ce5df.png} +0 -0
  278. /package/public/assets/{favicon.svg → favicon-4c4ce5df.svg} +0 -0
package/build/build.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import path from 'path';
2
2
  import fs from 'fs';
3
+ import { readFile, writeFile } from 'node:fs/promises';
3
4
  import { build } from 'vite';
4
5
  import { v4 as uuid } from 'uuid';
5
6
 
@@ -13,7 +14,6 @@ import {
13
14
  getFileMd5,
14
15
  getFilesInDirectory,
15
16
  libraries,
16
- writeRewrittenFile,
17
17
  } from './buildHelpers.js';
18
18
 
19
19
  /**
@@ -97,8 +97,8 @@ function hashLibraries() {
97
97
  throw new Error(`Trying to build unexported library ${key}`);
98
98
  }
99
99
  value.lib = libraries[key];
100
- value.hash = `${uuid().substring(0, 6)}`;
101
- libraryPaths[key] = `./${value.lib}.${value.hash}.js`;
100
+ value.hash = `${uuid().substring(0, 8)}`;
101
+ libraryPaths[key] = `./${value.lib}-${value.hash}.js`;
102
102
  value.rollupOptions = value.rollupOptions ? value.rollupOptions : {};
103
103
  });
104
104
 
@@ -121,11 +121,13 @@ const { libraryBuildOptions, libraryPaths } = hashLibraries();
121
121
  console.log('Building ol dump file');
122
122
  await generateOLLib();
123
123
 
124
+ const distFolder = path.join(process.cwd(), 'dist');
125
+ const assetsFolder = path.join(distFolder, 'assets');
126
+
124
127
  /** Cleaning/recreating Dist Folder */
125
- if (await fs.existsSync(path.join(process.cwd(), 'dist'))) {
126
- await fs.promises.rm(path.join(process.cwd(), 'dist'), { recursive: true });
128
+ if (await fs.existsSync(distFolder)) {
129
+ await fs.promises.rm(distFolder, { recursive: true });
127
130
  }
128
- const assetsFolder = path.join(process.cwd(), 'dist', 'assets');
129
131
  await fs.promises.mkdir(assetsFolder, { recursive: true });
130
132
 
131
133
  /**
@@ -141,6 +143,8 @@ const fileTypesToHash = ['.png', '.css', '.svg', '.woff2'];
141
143
  * we exclude the materialDesignIcons font because we do not want to also rewrite the materialDesignIcons.css file.
142
144
  * The .woff2 is loaded with the materialDesignIcons Version number as a query parameter. So this also makes sure,
143
145
  * that the browser can cache the file.
146
+ *
147
+ * we also exclude favicons from hashing, to just use the index.html as is.
144
148
  */
145
149
  const filesToExclude = [
146
150
  path.join(
@@ -150,6 +154,11 @@ const filesToExclude = [
150
154
  'fonts',
151
155
  'materialdesignicons-webfont.woff2',
152
156
  ),
157
+ path.join('assets', 'favicon-4c4ce5df.svg'),
158
+ path.join('assets', 'favicon-32-4c4ce5df.png'),
159
+ path.join('assets', 'favicon-128-4c4ce5df.png'),
160
+ path.join('assets', 'favicon-180-4c4ce5df.png'),
161
+ path.join('assets', 'favicon-192-4c4ce5df.png'),
153
162
  ];
154
163
  const hashedPublicFiles = new Map();
155
164
  const filesToCopy = new Map();
@@ -165,7 +174,7 @@ for await (const filePath of getFilesInDirectory(publicAssetsFolder)) {
165
174
  const fileHash = await getFileMd5(filePath);
166
175
  const hashedFileUrl = path.posix.join(
167
176
  ...path.dirname(relativePathInDist).split(path.sep),
168
- `${path.basename(filePath, fileType)}.${fileHash.slice(0, 6)}${fileType}`,
177
+ `${path.basename(filePath, fileType)}-${fileHash.slice(0, 8)}${fileType}`,
169
178
  );
170
179
  hashedPublicFiles.set(
171
180
  path.posix.join(...relativePath.split(path.sep)),
@@ -174,9 +183,9 @@ for await (const filePath of getFilesInDirectory(publicAssetsFolder)) {
174
183
  const newFilePath = path.join(
175
184
  assetsFolder,
176
185
  path.dirname(relativePathInDist),
177
- `${path.basename(relativePath, fileType)}.${fileHash.slice(
186
+ `${path.basename(relativePath, fileType)}-${fileHash.slice(
178
187
  0,
179
- 6,
188
+ 8,
180
189
  )}${fileType}`,
181
190
  );
182
191
  filesToCopy.set(filePath, newFilePath);
@@ -191,57 +200,28 @@ for await (const [originalFilePath, newFilePath] of filesToCopy) {
191
200
  }
192
201
 
193
202
  console.log('Building app');
194
- const buildoutput = await build({
195
- configFile: './build/commonViteConfig.js',
196
- base: './',
197
- define: {
198
- 'process.env.NODE_ENV': '"production"',
199
- },
200
- build: {
201
- write: false,
202
- modulePreload: false,
203
- emptyOutDir: true,
204
- rollupOptions: {
205
- external: Object.keys(libraries),
206
- output: {
207
- paths: libraryPaths,
208
- },
209
- },
210
- },
211
- });
212
-
213
- /**
214
- * Building the Main entrypoint (index.html + index.js)
215
- * This will ensure that all references to public assets will be rewritten to the hashed filename
216
- */
217
- await Promise.all(
218
- buildoutput.output?.map((output) => {
219
- if (output.type === 'asset') {
220
- const { source, fileName } = output;
221
- // remove loading of materialdesignicons from index.html, we will later inject this in the ui.js
222
- const fileContent = source.replace(
223
- /<link[^>]*href=".*materialdesignicons\.min\.css"[^>]*(>[^<]*<\/link>|\/>)/,
224
- '',
225
- );
226
- return writeRewrittenFile(
227
- path.join(process.cwd(), 'dist', fileName),
228
- fileContent,
229
- hashedPublicFiles,
230
- 'assets',
231
- );
232
- }
233
- if (output.type === 'chunk') {
234
- const { code, fileName } = output;
235
- return writeRewrittenFile(
236
- path.join(process.cwd(), 'dist', fileName),
237
- code,
238
- hashedPublicFiles,
239
- 'assets',
240
- );
241
- }
242
- return undefined;
243
- }),
203
+ let indexHTMLContent = await readFile('./index.html', { encoding: 'utf8' });
204
+ // remove mdi icons link, will be later loaded from the ui.js
205
+ indexHTMLContent = indexHTMLContent.replace(
206
+ /<link[^>]*href=".*materialdesignicons\.min\.css"[^>]*>/,
207
+ '',
244
208
  );
209
+ // replace @vcmap/ui with './assets/ui.js'
210
+ indexHTMLContent = indexHTMLContent.replace(/@vcmap\/ui/, './assets/ui.js');
211
+ await writeFile(path.join(distFolder, 'index.html'), indexHTMLContent, {
212
+ encoding: 'utf8',
213
+ });
214
+ const htaccessContent = `
215
+ <FilesMatch "-[\\w\\d]{8}\\.(js|css)$">
216
+ Header set Cache-Control "public, max-age=31540000, immutable"
217
+ </FilesMatch>
218
+ <FilesMatch "(index\\.html|config\\.json|ui\\.js|vue\\.js|vuetify\\.js|ol\\.js|cesium\\.js|core\\.js)$">
219
+ Header set Cache-Control "no-store, max-age=0"
220
+ </FilesMatch>
221
+ `;
222
+ await writeFile(path.join(distFolder, '.htaccess'), htaccessContent, {
223
+ encoding: 'utf8',
224
+ });
245
225
 
246
226
  /**
247
227
  * Building the Libraries, (vue, vuetify, openlayers, cesium, core, and ui). This will build one hashed library.hash.js
@@ -271,7 +251,7 @@ await Promise.all(
271
251
  lib: {
272
252
  entry: path.resolve(process.cwd(), value.entry),
273
253
  formats: ['es'],
274
- fileName: `${value.lib}.${value.hash}`,
254
+ fileName: `${value.lib}-${value.hash}`,
275
255
  },
276
256
  rollupOptions: {
277
257
  ...value.rollupOptions,
@@ -1,4 +1,3 @@
1
- /* eslint import/no-extraneous-dependencies: ["error", { "devDependencies": false }] */
2
1
  // eslint-disable-next-line import/no-extraneous-dependencies
3
2
  import { build } from 'vite'; // vite is also a plugin-cli dep
4
3
  import fs from 'fs';
@@ -159,18 +158,12 @@ export async function buildLibrary(
159
158
  base64Css = false,
160
159
  rewrittenPublicAssets = undefined,
161
160
  ) {
162
- // Base64 contains the characters '+', '/', and '=', which have a reserved meaning in URLs.
163
- // Base64url solves this by replacing '+' with '-' and '/' with '_'.
164
- // See https://stackoverflow.com/a/55389212
165
161
  const cssInjectorCode = `
166
162
  function loadCss(href) {
167
- const base64url = href
168
- .replace(/-/g, '+')
169
- .replace(/_/g, '/');
170
163
  return new Promise((resolve, reject) => {
171
164
  const elem = document.createElement('link');
172
165
  elem.rel = 'stylesheet';
173
- elem.href = base64url;
166
+ elem.href = href;
174
167
  elem.defer = false;
175
168
  elem.async = false;
176
169
  elem.onload = resolve;
@@ -180,7 +173,7 @@ function loadCss(href) {
180
173
  }`;
181
174
 
182
175
  const write = async (output) => {
183
- const addedHash = hash ? `.${hash}` : '';
176
+ const addedHash = hash ? `-${hash}` : '';
184
177
  let css = false;
185
178
  if (output[1] && output[1].type === 'asset') {
186
179
  if (base64Css) {
@@ -285,7 +278,12 @@ const toCopy = [
285
278
  'README.md',
286
279
  ];
287
280
 
288
- async function buildInlinePlugin(plugin, baseConfig, minify) {
281
+ async function buildInlinePlugin(
282
+ plugin,
283
+ baseConfig,
284
+ minify,
285
+ isDependend = false,
286
+ ) {
289
287
  // the relative path between plugins and libraries, is not known beforehand, so we calculate the distance.
290
288
  // posixRelativePath is the relative path between the index.js of the plugin and the specific library.
291
289
  const relativePluginPaths = {};
@@ -298,7 +296,15 @@ async function buildInlinePlugin(plugin, baseConfig, minify) {
298
296
  .join(path.posix.sep);
299
297
  });
300
298
 
301
- const pluginDir = getProjectPath('plugins', plugin);
299
+ const pluginDir = isDependend
300
+ ? getProjectPath('plugins', 'node_modules', plugin)
301
+ : getProjectPath('plugins', plugin);
302
+
303
+ const isTs = fs.existsSync(path.join(pluginDir, 'src', 'index.ts'));
304
+ const entry = isTs
305
+ ? path.join(pluginDir, 'src', 'index.ts')
306
+ : path.join(pluginDir, 'src', 'index.js');
307
+
302
308
  const pluginConfig = {
303
309
  ...baseConfig,
304
310
  esbuild: {
@@ -309,13 +315,14 @@ async function buildInlinePlugin(plugin, baseConfig, minify) {
309
315
  emptyOutDir: false,
310
316
  outDir: `dist/plugins/${plugin}/`,
311
317
  lib: {
312
- entry: path.join(pluginDir, 'src', 'index.js'),
318
+ entry,
313
319
  formats: ['es'],
314
320
  fileName: 'index',
315
321
  },
316
322
  rollupOptions: {
317
323
  external: Object.keys(libraries),
318
324
  output: {
325
+ manualChunks: () => 'index.js',
319
326
  paths: relativePluginPaths,
320
327
  },
321
328
  },
@@ -327,11 +334,11 @@ async function buildInlinePlugin(plugin, baseConfig, minify) {
327
334
  }
328
335
  await buildLibrary(pluginConfig, `plugins/${plugin}`, 'index', '', true);
329
336
  await Promise.all(
330
- toCopy.map(async (entry) => {
331
- if (fs.existsSync(path.join(pluginDir, entry))) {
337
+ toCopy.map(async (fileEntry) => {
338
+ if (fs.existsSync(path.join(pluginDir, fileEntry))) {
332
339
  await fs.promises.cp(
333
- path.join(pluginDir, entry),
334
- path.join(distPath, entry),
340
+ path.join(pluginDir, fileEntry),
341
+ path.join(distPath, fileEntry),
335
342
  { recursive: true, force: true },
336
343
  );
337
344
  }
@@ -339,6 +346,10 @@ async function buildInlinePlugin(plugin, baseConfig, minify) {
339
346
  );
340
347
  }
341
348
 
349
+ /**
350
+ * Dependent Plugins which are installed from npm are already build and we just copy the relevant files
351
+ * @param {string} pluginName
352
+ */
342
353
  async function buildDependentPlugin(pluginName) {
343
354
  const pluginsDirectory = getPluginDirectory();
344
355
  let scope = '';
@@ -371,6 +382,19 @@ async function buildDependentPlugin(pluginName) {
371
382
  );
372
383
  }
373
384
 
385
+ function filterDependentPlugins(dependentPlugins, pluginIsBuild = true) {
386
+ const pluginsDir = getPluginDirectory();
387
+ return dependentPlugins.filter((pluginName) => {
388
+ const pluginExists = fs.existsSync(
389
+ path.join(pluginsDir, 'node_modules', ...pluginName.split('/'), 'dist'),
390
+ );
391
+ if (pluginIsBuild) {
392
+ return pluginExists;
393
+ }
394
+ return !pluginExists;
395
+ });
396
+ }
397
+
374
398
  /**
375
399
  * Will build a preview of all the current plugins & inline plugins
376
400
  * @param {import("vite").InlineConfig} [baseConfig={}] - the base config to use. build & esbuild will be completely overwritten
@@ -380,14 +404,25 @@ async function buildDependentPlugin(pluginName) {
380
404
  export async function buildPluginsForPreview(baseConfig = {}, minify = true) {
381
405
  const inlinePlugins = await getInlinePlugins();
382
406
  const dependentPlugins = await getPluginNames();
407
+ // only take already build plugins into account.
408
+ // Plugins loaded from a git repository do not have a dist folder.
409
+ // These plugins need to be build, same as the inline plugins
410
+ const buildDependentPlugins = filterDependentPlugins(dependentPlugins, true);
411
+ const notBuildDependentPlugins = filterDependentPlugins(
412
+ dependentPlugins,
413
+ false,
414
+ );
383
415
 
384
416
  const promises = inlinePlugins.map((plugin) =>
385
417
  buildInlinePlugin(plugin, baseConfig, minify),
386
418
  );
387
419
 
388
420
  promises.push(
389
- ...dependentPlugins.map(async (pluginName) =>
390
- buildDependentPlugin(pluginName, baseConfig, minify),
421
+ ...buildDependentPlugins.map(async (pluginName) =>
422
+ buildDependentPlugin(pluginName),
423
+ ),
424
+ ...notBuildDependentPlugins.map(async (pluginName) =>
425
+ buildInlinePlugin(pluginName, baseConfig, minify, true),
391
426
  ),
392
427
  );
393
428
  await Promise.all(promises);
@@ -396,14 +431,22 @@ export async function buildPluginsForPreview(baseConfig = {}, minify = true) {
396
431
  export async function buildPluginsForBundle(baseConfig = {}) {
397
432
  const inlinePlugins = await getInlinePlugins();
398
433
  const dependentPlugins = await getPluginNames(false);
434
+ const buildDependentPlugins = filterDependentPlugins(dependentPlugins, true);
435
+ const notBuildDependentPlugins = filterDependentPlugins(
436
+ dependentPlugins,
437
+ false,
438
+ );
399
439
  const promises = inlinePlugins
400
440
  .filter((plugin) => plugin.startsWith('@vcmap/'))
401
441
  .map((plugin) => buildInlinePlugin(plugin, baseConfig, true));
402
442
 
403
443
  promises.push(
404
- ...dependentPlugins.map(async (pluginName) =>
444
+ ...buildDependentPlugins.map(async (pluginName) =>
405
445
  buildDependentPlugin(pluginName),
406
446
  ),
447
+ ...notBuildDependentPlugins.map(async (pluginName) =>
448
+ buildInlinePlugin(pluginName, baseConfig, true, true),
449
+ ),
407
450
  );
408
451
  await Promise.all(promises);
409
452
  }
package/build/bundle.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import vcsOl from '@vcmap/rollup-plugin-vcs-ol';
2
2
  import { join as joinPath } from 'path';
3
- import tar from 'tar';
3
+ import * as tar from 'tar';
4
4
  import { cp, rm } from 'fs/promises';
5
5
  import { createGzip } from 'zlib';
6
6
  import { pipeline } from 'stream';
@@ -8,7 +8,7 @@
8
8
  },
9
9
  "source": {
10
10
  "includePattern": "\\.js$",
11
- "exclude": ["dist"]
11
+ "exclude": ["dist", "node_modules/ol/node_modules"]
12
12
  },
13
13
  "plugins": [
14
14
  "jsdoc-plugin-intersection",
@@ -20,37 +20,31 @@ exports.publish = function publish(data) {
20
20
 
21
21
  // get all doclets that have exports
22
22
  const classes = {};
23
- const docs = data(
24
- [
25
- { define: { isObject: true } },
26
- function someKindOfExportsTransformer() {
27
- if (this?.meta?.code?.name) {
28
- if (this.meta.code.name === 'module.exports') {
29
- this.exports = 'default';
30
- } else if (String(this.meta.code.name).startsWith('exports.')) {
31
- this.exports = this.meta.code.name.replace(/exports./, '');
32
- }
33
- }
34
- if (this.kind === 'class') {
35
- if (
36
- !('extends' in this) ||
37
- typeof this.api === 'boolean' ||
38
- this.exports
39
- ) {
40
- classes[this.longname] = this;
41
- return true;
42
- }
43
- }
44
- return (
45
- typeof this.api === 'boolean' ||
46
- this.exports ||
47
- (this.meta && /[\\/]externs$/.test(this.meta.path))
48
- );
49
- },
50
- ],
51
- { kind: { '!is': 'file' } },
52
- { kind: { '!is': 'event' } },
53
- ).get();
23
+ const docs = data(function someKindOfExportsTransformer() {
24
+ if (this?.meta?.code?.name) {
25
+ if (this.meta.code.name === 'module.exports') {
26
+ this.exports = 'default';
27
+ } else if (String(this.meta.code.name).startsWith('exports.')) {
28
+ this.exports = this.meta.code.name.replace(/exports./, '');
29
+ }
30
+ }
31
+ if (this.kind === 'class') {
32
+ if (
33
+ !('extends' in this) ||
34
+ typeof this.api === 'boolean' ||
35
+ this.exports
36
+ ) {
37
+ classes[this.longname] = this;
38
+ return true;
39
+ }
40
+ }
41
+ return (
42
+ !['file', 'event', 'module'].includes(this.kind) &&
43
+ (typeof this.api === 'boolean' ||
44
+ this.exports ||
45
+ (this.meta && /[\\/]externs$/.test(this.meta.path)))
46
+ );
47
+ }).get();
54
48
 
55
49
  // get symbols data, filter out those that are members of private classes
56
50
  const symbols = [];
@@ -15,6 +15,11 @@ async function lintTypes() {
15
15
  // eslint-disable-next-line no-continue
16
16
  continue;
17
17
  }
18
+ if (path.endsWith('uiConfig.d.ts')) {
19
+ // we do not check the vcsUiApp.d.ts, because import("vue").DeepReadonly creates an any type
20
+ // eslint-disable-next-line no-continue
21
+ continue;
22
+ }
18
23
  // eslint-disable-next-line no-loop-func
19
24
  content.split(EOL).forEach((line, index) => {
20
25
  const matches = line.match(anyRegex);
@@ -571,7 +571,8 @@
571
571
  "name": "tableAllWithTemplateHeader",
572
572
  "keyMapping": {
573
573
  "roofType": "codeLists.keys.roofType",
574
- "function": "codeLists.keys.function"
574
+ "function": "codeLists.keys.function",
575
+ "featureId": "Feature ID"
575
576
  },
576
577
  "valueMapping": {
577
578
  "roofType": "codeLists.values.roofType.${value}",
@@ -512,7 +512,8 @@
512
512
  "name": "flight",
513
513
  "flightName": "FlightExampleBerlin",
514
514
  "type": "FlightContentTreeItem",
515
- "title": "this flight has a very long name. You can find the rest in the tooltip"
515
+ "title": "this flight has a very long name. You can find the rest in the tooltip",
516
+ "icon": "mdi-airplane"
516
517
  },
517
518
  {
518
519
  "name": "flight2",
@@ -549,6 +550,7 @@
549
550
  "name": "building.myTest",
550
551
  "type": "ContentTreeItem",
551
552
  "title": "test SwitchMapCallback Test",
553
+ "icon": "mdi-toggle-switch",
552
554
  "onClick": [
553
555
  {
554
556
  "type": "ActivateLayersCallback",
@@ -656,6 +658,10 @@
656
658
  "name": "@vcmap-show-case/hello-world",
657
659
  "entry": "plugins/@vcmap-show-case/hello-world/index.js",
658
660
  "showComponent": false
661
+ },
662
+ {
663
+ "name": "@vcmap-show-case/search-example",
664
+ "entry": "plugins/@vcmap-show-case/search-example/index.js"
659
665
  }
660
666
  ],
661
667
  "plugins2": [
@@ -22,7 +22,8 @@
22
22
  "modules": [
23
23
  "config/dev.config.json",
24
24
  "config/codes.config.json",
25
- "config/graphFeatureInfo.config.json"
25
+ "config/graphFeatureInfo.config.json",
26
+ "config/splashscreen.config.json"
26
27
  ]
27
28
  }
28
29
  ]
@@ -0,0 +1,45 @@
1
+ {
2
+ "name": "SplashScreen Examples",
3
+ "uiConfig": [
4
+ {
5
+ "name": "splashScreen",
6
+ "value": {
7
+ "name": "MyCustomScreen.name",
8
+ "title": "MyCustomScreen.tooltip",
9
+ "icon": "mdi-information-slab-circle-outline",
10
+ "content": "![image](https://vc.systems/wp-content/uploads/2020/07/vcs_logo.png)\nSplash Screen Template\n-------------------\nErste Schritte\n-------------------\n\nDies ist ein <em> Beispieltext</em>, der Ihnen den Einstieg erleichtern soll. **Marked** wird verwendet, um Ihren Text <u>von Markdown nach HTML</u> zu konvertieren. Um mehr über die <u><em>korrekte Syntax</em></u>zu erfahren, besuchen Sie bitte diesen [Link](https://marked.js.org/demo/) für eine Demo. \n\nWie man Listen hinzufügt\n\n1. Punkt 1 einer Aufzählung\n2. Punkt 2 einer Aufzählung.\n\nWenn Sie Aufzählungen nicht mögen, wie wäre es mit Aufzählungspunkten? \n- Punkt 1: einer Liste mit Aufzählungspunkten. \n- Punkt 2: einer Aufzählungsliste.",
11
+ "acceptInput": true,
12
+ "menuEntry": false,
13
+ "checkBoxText": "components.splashScreen.checkBoxText",
14
+ "buttonTitle": "components.splashScreen.buttonTitle",
15
+ "position": {
16
+ "width": "800px",
17
+ "height": "500px",
18
+ "maxWidth": "800px",
19
+ "maxHeight": "500px"
20
+ }
21
+ },
22
+ "properties": {
23
+ "title": "appConfigurator.editors.uiConfig.splashScreen"
24
+ }
25
+ },
26
+ {
27
+ "name": "customScreen",
28
+ "value": {
29
+ "content": "![image](https://vc.systems/wp-content/uploads/2020/07/vcs_logo.png)\n\n<br/>Projekt: \n--------\n\nErste Schritte\n\nZusammenfassung:\n--------\nDies ist ein <em> Beispieltext</em>, der Ihnen den Einstieg erleichtern soll. **Marked** wird verwendet, um Ihren Text <u>von Markdown nach HTML</u> zu konvertieren. Um mehr über die <u><em>korrekte Syntax</em></u>zu erfahren, besuchen Sie bitte diesen [Link](https://marked.js.org/demo/) für eine Demo. \n \nInhalt:\n-------\nLorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.\n \nDuis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.\n \nHow to add lists:\n-----------------\n\n<br/>1. Enumeration, lorem ipsum dolor sit amet.\n2. Enumeration, lorem ipsum dolor sit amet.\n\n\n- Punkt 1: einer Liste mit Aufzählungspunkten.\n- Punkt 2: einer Liste mit Aufzählungspunkten.\n\n<br/>Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis.",
30
+ "icon": "mdi-information",
31
+ "name": "MyCustomScreen.name",
32
+ "title": "MyCustomScreen.tooltip",
33
+ "windowPosition": {
34
+ "left": "30%",
35
+ "right": "30%",
36
+ "top": "10%",
37
+ "bottom": "20%"
38
+ }
39
+ },
40
+ "properties": {
41
+ "title": "appConfigurator.editors.uiConfig.customScreen"
42
+ }
43
+ }
44
+ ]
45
+ }
@@ -1827,6 +1827,30 @@
1827
1827
  "layerName": "festgesetzte Überschwemmungsgebiete"
1828
1828
  }
1829
1829
  ],
1830
+ "plugins": [
1831
+ {
1832
+ "name": "@vcmap/print",
1833
+ "entry": "plugins/@vcmap/print/index.js",
1834
+ "contactDetails": {
1835
+ "department": "Entwicklung",
1836
+ "name": "Virtual City Systems",
1837
+ "streetAddress": "Tauentzienstr. 7 b/c",
1838
+ "zipAndCity": "10789 Berlin",
1839
+ "country": "Germany",
1840
+ "mail": "info@vc.systems",
1841
+ "phone": "+49 (0) 30 . 8904 . 871 . 0",
1842
+ "fax": "+49 (0) 30 . 8904 . 871 . 0"
1843
+ }
1844
+ },
1845
+ {
1846
+ "name": "@vcmap/multi-view",
1847
+ "entry": "plugins/@vcmap/multi-view/index.js"
1848
+ },
1849
+ {
1850
+ "name": "@vcmap/transparent-terrain",
1851
+ "entry": "plugins/@vcmap/transparent-terrain/index.js"
1852
+ }
1853
+ ],
1830
1854
  "plugins2": [
1831
1855
  {
1832
1856
  "name": "@vcmap/link-button",
@@ -1854,20 +1878,6 @@
1854
1878
  "name": "@vcmap/create-link",
1855
1879
  "entry": "plugins/@vcmap/create-link/index.js"
1856
1880
  },
1857
- {
1858
- "name": "@vcmap/print",
1859
- "entry": "plugins/@vcmap/print/index.js",
1860
- "contactDetails": {
1861
- "department": "Entwicklung",
1862
- "name": "Virtual City Systems",
1863
- "streetAddress": "Tauentzienstr. 7 b/c",
1864
- "zipAndCity": "10789 Berlin",
1865
- "country": "Germany",
1866
- "mail": "info@vc.systems",
1867
- "phone": "+49 (0) 30 . 8904 . 871 . 0",
1868
- "fax": "+49 (0) 30 . 8904 . 871 . 0"
1869
- }
1870
- },
1871
1881
  {
1872
1882
  "name": "@vcmap/swipe-tool",
1873
1883
  "entry": "plugins/@vcmap/swipe-tool/index.js"
@@ -1884,10 +1894,6 @@
1884
1894
  "name": "@vcmap/search-nominatim",
1885
1895
  "entry": "plugins/@vcmap/search-nominatim/index.js"
1886
1896
  },
1887
- {
1888
- "name": "@vcmap/multi-view",
1889
- "entry": "plugins/@vcmap/multi-view/index.js"
1890
- },
1891
1897
  {
1892
1898
  "name": "@vcmap/cesium-filters",
1893
1899
  "entry": "plugins/@vcmap/cesium-filters/index.js"
@@ -1936,10 +1942,7 @@
1936
1942
  "projectId": "rBW58EJz5RwCz75Q3",
1937
1943
  "mapId": "csunCGqmQE8Py4KCe"
1938
1944
  },
1939
- {
1940
- "name": "@vcmap/transparent-terrain",
1941
- "entry": "plugins/@vcmap/transparent-terrain/index.js"
1942
- },
1945
+
1943
1946
  {
1944
1947
  "name": "@vcmap/search-coordinate",
1945
1948
  "entry": "plugins/@vcmap/search-coordinate/index.js"
package/dist/.htaccess ADDED
@@ -0,0 +1,7 @@
1
+
2
+ <FilesMatch "-[\w\d]{8}\.(js|css)$">
3
+ Header set Cache-Control "public, max-age=31540000, immutable"
4
+ </FilesMatch>
5
+ <FilesMatch "(index\.html|config\.json|ui\.js|vue\.js|vuetify\.js|ol\.js|cesium\.js|core\.js)$">
6
+ Header set Cache-Control "no-store, max-age=0"
7
+ </FilesMatch>
@@ -0,0 +1,25 @@
1
+ > *Note:* Please use the main [MaterialDesign](https://github.com/Templarian/MaterialDesign/issues) repo to report issues. This repo is for distribution of the Webfont files only.
2
+
3
+ # Webfont - Material Design Icons
4
+
5
+ Webfont distribution for the [Material Design Icons](https://materialdesignicons.com).
6
+
7
+ ```
8
+ npm install @mdi/font
9
+ ```
10
+
11
+ > Package built with [@mdi/font-build](https://github.com/Templarian/MaterialDesign-Font-Build).
12
+
13
+ ## Related Packages
14
+
15
+ [NPM @MDI Organization](https://npmjs.com/org/mdi)
16
+
17
+ - JavaScript/Typescript: [MaterialDesign-JS](https://github.com/Templarian/MaterialDesign-JS)
18
+ - SVG: [MaterialDesign-SVG](https://github.com/Templarian/MaterialDesign-SVG)
19
+ - Font-Build [MaterialDesign-Font-Build](https://github.com/Templarian/MaterialDesign-Font-Build)
20
+ - Desktop Font: [MaterialDesign-Font](https://github.com/Templarian/MaterialDesign-Font)
21
+
22
+ ## Learn More
23
+
24
+ - [MaterialDesignIcons.com](https://materialdesignicons.com)
25
+ - https://github.com/Templarian/MaterialDesign