@tak-ps/cloudtak 12.54.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (483) hide show
  1. package/README.md +34 -0
  2. package/dist/types/plugin.d.ts +99 -0
  3. package/dist/types/src/App.vue.d.ts +5 -0
  4. package/dist/types/src/base/chatroom-chats.d.ts +17 -0
  5. package/dist/types/src/base/chatroom.d.ts +47 -0
  6. package/dist/types/src/base/cot.d.ts +94 -0
  7. package/dist/types/src/base/database.d.ts +115 -0
  8. package/dist/types/src/base/events.d.ts +30 -0
  9. package/dist/types/src/base/filter.d.ts +41 -0
  10. package/dist/types/src/base/handler.d.ts +11 -0
  11. package/dist/types/src/base/icon.d.ts +4 -0
  12. package/dist/types/src/base/notification.d.ts +37 -0
  13. package/dist/types/src/base/overlay.d.ts +94 -0
  14. package/dist/types/src/base/subscription-feature.d.ts +49 -0
  15. package/dist/types/src/base/subscription-log.d.ts +32 -0
  16. package/dist/types/src/base/subscription.d.ts +115 -0
  17. package/dist/types/src/base/utils/styles.d.ts +11 -0
  18. package/dist/types/src/base/validators.d.ts +9 -0
  19. package/dist/types/src/components/Admin/AdminImports.vue.d.ts +3 -0
  20. package/dist/types/src/components/Admin/AdminLayers.vue.d.ts +3 -0
  21. package/dist/types/src/components/Admin/AdminMissionTemplate.vue.d.ts +3 -0
  22. package/dist/types/src/components/Admin/AdminMissionTemplateLog.vue.d.ts +3 -0
  23. package/dist/types/src/components/Admin/AdminMissionTemplates.vue.d.ts +3 -0
  24. package/dist/types/src/components/Admin/AdminOverlays.vue.d.ts +3 -0
  25. package/dist/types/src/components/Admin/AdminPalette.vue.d.ts +3 -0
  26. package/dist/types/src/components/Admin/AdminPaletteFeature.vue.d.ts +3 -0
  27. package/dist/types/src/components/Admin/AdminPalettes.vue.d.ts +3 -0
  28. package/dist/types/src/components/Admin/AdminServer.vue.d.ts +3 -0
  29. package/dist/types/src/components/Admin/AdminTasks.vue.d.ts +3 -0
  30. package/dist/types/src/components/Admin/AdminUser.vue.d.ts +3 -0
  31. package/dist/types/src/components/Admin/AdminUsers.vue.d.ts +3 -0
  32. package/dist/types/src/components/Admin/AdminVideos.vue.d.ts +3 -0
  33. package/dist/types/src/components/Admin/Server/ServerConnection.vue.d.ts +3 -0
  34. package/dist/types/src/components/Admin/Server/ServerInjectorModal.vue.d.ts +11 -0
  35. package/dist/types/src/components/Admin/Server/ServerInjectors.vue.d.ts +3 -0
  36. package/dist/types/src/components/Admin/Server/ServerPackages.vue.d.ts +3 -0
  37. package/dist/types/src/components/Admin/Server/ServerRepeaters.vue.d.ts +3 -0
  38. package/dist/types/src/components/Admin/Server/ServerVideos.vue.d.ts +3 -0
  39. package/dist/types/src/components/Admin/Tasks/AdminRawTasks.vue.d.ts +3 -0
  40. package/dist/types/src/components/Admin/Videos/AdminVideoLeases.vue.d.ts +3 -0
  41. package/dist/types/src/components/Admin/Videos/AdminVideoService.vue.d.ts +3 -0
  42. package/dist/types/src/components/Admin/Videos/VideoConfig.vue.d.ts +7 -0
  43. package/dist/types/src/components/Admin/Videos/VideoConfigPort.vue.d.ts +8 -0
  44. package/dist/types/src/components/CloudTAK/CoTView.vue.d.ts +3 -0
  45. package/dist/types/src/components/CloudTAK/CoordInput.vue.d.ts +7 -0
  46. package/dist/types/src/components/CloudTAK/DrawTools.vue.d.ts +3 -0
  47. package/dist/types/src/components/CloudTAK/FeatView.vue.d.ts +8 -0
  48. package/dist/types/src/components/CloudTAK/GeoJSONInput.vue.d.ts +24 -0
  49. package/dist/types/src/components/CloudTAK/MainMenu.vue.d.ts +9 -0
  50. package/dist/types/src/components/CloudTAK/MainMenuContents.vue.d.ts +16 -0
  51. package/dist/types/src/components/CloudTAK/Map.vue.d.ts +8 -0
  52. package/dist/types/src/components/CloudTAK/MapLoading.vue.d.ts +3 -0
  53. package/dist/types/src/components/CloudTAK/Menu/Debugger.vue.d.ts +3 -0
  54. package/dist/types/src/components/CloudTAK/Menu/MenuBasemaps.vue.d.ts +3 -0
  55. package/dist/types/src/components/CloudTAK/Menu/MenuChannels.vue.d.ts +3 -0
  56. package/dist/types/src/components/CloudTAK/Menu/MenuChats.vue.d.ts +3 -0
  57. package/dist/types/src/components/CloudTAK/Menu/MenuConnections.vue.d.ts +3 -0
  58. package/dist/types/src/components/CloudTAK/Menu/MenuContacts.vue.d.ts +3 -0
  59. package/dist/types/src/components/CloudTAK/Menu/MenuFeatures.vue.d.ts +3 -0
  60. package/dist/types/src/components/CloudTAK/Menu/MenuFeaturesDeleted.vue.d.ts +3 -0
  61. package/dist/types/src/components/CloudTAK/Menu/MenuFiles.vue.d.ts +3 -0
  62. package/dist/types/src/components/CloudTAK/Menu/MenuImport.vue.d.ts +3 -0
  63. package/dist/types/src/components/CloudTAK/Menu/MenuImports.vue.d.ts +3 -0
  64. package/dist/types/src/components/CloudTAK/Menu/MenuItemCard.vue.d.ts +101 -0
  65. package/dist/types/src/components/CloudTAK/Menu/MenuMission.vue.d.ts +3 -0
  66. package/dist/types/src/components/CloudTAK/Menu/MenuMissions.vue.d.ts +3 -0
  67. package/dist/types/src/components/CloudTAK/Menu/MenuOverlayExplorer.vue.d.ts +3 -0
  68. package/dist/types/src/components/CloudTAK/Menu/MenuOverlays.vue.d.ts +3 -0
  69. package/dist/types/src/components/CloudTAK/Menu/MenuPackage.vue.d.ts +3 -0
  70. package/dist/types/src/components/CloudTAK/Menu/MenuPackages.vue.d.ts +3 -0
  71. package/dist/types/src/components/CloudTAK/Menu/MenuRoutes.vue.d.ts +3 -0
  72. package/dist/types/src/components/CloudTAK/Menu/MenuRoutesNew.vue.d.ts +3 -0
  73. package/dist/types/src/components/CloudTAK/Menu/MenuSettings.vue.d.ts +3 -0
  74. package/dist/types/src/components/CloudTAK/Menu/MenuSettingsCallsign.vue.d.ts +3 -0
  75. package/dist/types/src/components/CloudTAK/Menu/MenuSettingsDisplay.vue.d.ts +3 -0
  76. package/dist/types/src/components/CloudTAK/Menu/MenuVideos.vue.d.ts +3 -0
  77. package/dist/types/src/components/CloudTAK/Menu/MenuVideosRemote.vue.d.ts +3 -0
  78. package/dist/types/src/components/CloudTAK/Menu/Mission/MissionContents.vue.d.ts +11 -0
  79. package/dist/types/src/components/CloudTAK/Menu/Mission/MissionCreate.vue.d.ts +7 -0
  80. package/dist/types/src/components/CloudTAK/Menu/Mission/MissionInfo.vue.d.ts +11 -0
  81. package/dist/types/src/components/CloudTAK/Menu/Mission/MissionInviteModal.vue.d.ts +17 -0
  82. package/dist/types/src/components/CloudTAK/Menu/Mission/MissionLayerCreate.vue.d.ts +13 -0
  83. package/dist/types/src/components/CloudTAK/Menu/Mission/MissionLayerEdit.vue.d.ts +15 -0
  84. package/dist/types/src/components/CloudTAK/Menu/Mission/MissionLayerTree.vue.d.ts +15 -0
  85. package/dist/types/src/components/CloudTAK/Menu/Mission/MissionLayers.vue.d.ts +8 -0
  86. package/dist/types/src/components/CloudTAK/Menu/Mission/MissionLog.vue.d.ts +9 -0
  87. package/dist/types/src/components/CloudTAK/Menu/Mission/MissionLogs.vue.d.ts +7 -0
  88. package/dist/types/src/components/CloudTAK/Menu/Mission/MissionTimeline.vue.d.ts +7 -0
  89. package/dist/types/src/components/CloudTAK/Menu/Mission/MissionUsers.vue.d.ts +7 -0
  90. package/dist/types/src/components/CloudTAK/Menu/Mission/PendingInvites.vue.d.ts +11 -0
  91. package/dist/types/src/components/CloudTAK/Menu/Overlays/TreeMission.vue.d.ts +7 -0
  92. package/dist/types/src/components/CloudTAK/Menu/Overlays/TreeVector.vue.d.ts +13 -0
  93. package/dist/types/src/components/CloudTAK/Menu/Videos/VideoLeaseModal.vue.d.ts +16 -0
  94. package/dist/types/src/components/CloudTAK/Menu/Videos/VideosRemoteFeed.vue.d.ts +13 -0
  95. package/dist/types/src/components/CloudTAK/Notifications.vue.d.ts +3 -0
  96. package/dist/types/src/components/CloudTAK/Query/Magnetic.vue.d.ts +7 -0
  97. package/dist/types/src/components/CloudTAK/Query/Reverse.vue.d.ts +8 -0
  98. package/dist/types/src/components/CloudTAK/Query/Sun.vue.d.ts +7 -0
  99. package/dist/types/src/components/CloudTAK/Query/Weather.vue.d.ts +7 -0
  100. package/dist/types/src/components/CloudTAK/QueryView.vue.d.ts +3 -0
  101. package/dist/types/src/components/CloudTAK/RangeInput.vue.d.ts +7 -0
  102. package/dist/types/src/components/CloudTAK/RangeRingsInput.vue.d.ts +7 -0
  103. package/dist/types/src/components/CloudTAK/util/Breadcrumb.vue.d.ts +6 -0
  104. package/dist/types/src/components/CloudTAK/util/ChannelInfo.vue.d.ts +15 -0
  105. package/dist/types/src/components/CloudTAK/util/ContactPuck.vue.d.ts +7 -0
  106. package/dist/types/src/components/CloudTAK/util/Coordinate.vue.d.ts +67 -0
  107. package/dist/types/src/components/CloudTAK/util/CoordinateType.vue.d.ts +27 -0
  108. package/dist/types/src/components/CloudTAK/util/CopyButton.vue.d.ts +32 -0
  109. package/dist/types/src/components/CloudTAK/util/CopyField.vue.d.ts +122 -0
  110. package/dist/types/src/components/CloudTAK/util/DrawOverlay.vue.d.ts +3 -0
  111. package/dist/types/src/components/CloudTAK/util/EmptyInfo.vue.d.ts +24 -0
  112. package/dist/types/src/components/CloudTAK/util/FeatureIcon.vue.d.ts +23 -0
  113. package/dist/types/src/components/CloudTAK/util/FeatureRow.vue.d.ts +81 -0
  114. package/dist/types/src/components/CloudTAK/util/FloatingAttachment.vue.d.ts +17 -0
  115. package/dist/types/src/components/CloudTAK/util/FloatingVideo.vue.d.ts +27 -0
  116. package/dist/types/src/components/CloudTAK/util/GroupSelect.vue.d.ts +14 -0
  117. package/dist/types/src/components/CloudTAK/util/JSONModal.vue.d.ts +27 -0
  118. package/dist/types/src/components/CloudTAK/util/Keywords.vue.d.ts +6 -0
  119. package/dist/types/src/components/CloudTAK/util/LineLength.vue.d.ts +24 -0
  120. package/dist/types/src/components/CloudTAK/util/MenuTemplate.vue.d.ts +71 -0
  121. package/dist/types/src/components/CloudTAK/util/MultipleSelect.vue.d.ts +7 -0
  122. package/dist/types/src/components/CloudTAK/util/NotificationIcon.vue.d.ts +10 -0
  123. package/dist/types/src/components/CloudTAK/util/NotificationToast.vue.d.ts +13 -0
  124. package/dist/types/src/components/CloudTAK/util/PolygonArea.vue.d.ts +24 -0
  125. package/dist/types/src/components/CloudTAK/util/PropertyBattery.vue.d.ts +13 -0
  126. package/dist/types/src/components/CloudTAK/util/PropertyBearing.vue.d.ts +58 -0
  127. package/dist/types/src/components/CloudTAK/util/PropertyCreator.vue.d.ts +7 -0
  128. package/dist/types/src/components/CloudTAK/util/PropertyDistance.vue.d.ts +54 -0
  129. package/dist/types/src/components/CloudTAK/util/PropertyElevation.vue.d.ts +32 -0
  130. package/dist/types/src/components/CloudTAK/util/PropertyEmail.vue.d.ts +13 -0
  131. package/dist/types/src/components/CloudTAK/util/PropertyLinks.vue.d.ts +14 -0
  132. package/dist/types/src/components/CloudTAK/util/PropertyMetadata.vue.d.ts +7 -0
  133. package/dist/types/src/components/CloudTAK/util/PropertyMilSym.vue.d.ts +25 -0
  134. package/dist/types/src/components/CloudTAK/util/PropertyPhone.vue.d.ts +13 -0
  135. package/dist/types/src/components/CloudTAK/util/PropertySpeed.vue.d.ts +23 -0
  136. package/dist/types/src/components/CloudTAK/util/PropertyStyle.vue.d.ts +7 -0
  137. package/dist/types/src/components/CloudTAK/util/PropertyTimes.vue.d.ts +7 -0
  138. package/dist/types/src/components/CloudTAK/util/PropertyType.vue.d.ts +27 -0
  139. package/dist/types/src/components/CloudTAK/util/SearchBox.vue.d.ts +37 -0
  140. package/dist/types/src/components/CloudTAK/util/SelectFeats.vue.d.ts +7 -0
  141. package/dist/types/src/components/CloudTAK/util/SettingsCallsign.vue.d.ts +28 -0
  142. package/dist/types/src/components/CloudTAK/util/Share.vue.d.ts +14 -0
  143. package/dist/types/src/components/CloudTAK/util/ShareToMission.vue.d.ts +53 -0
  144. package/dist/types/src/components/CloudTAK/util/ShareToPackage.vue.d.ts +62 -0
  145. package/dist/types/src/components/CloudTAK/util/SlideDownHeader.vue.d.ts +41 -0
  146. package/dist/types/src/components/CloudTAK/util/StandardItem.vue.d.ts +18 -0
  147. package/dist/types/src/components/CloudTAK/util/Subscriptions.vue.d.ts +7 -0
  148. package/dist/types/src/components/CloudTAK/util/VideoLeaseSourceType.vue.d.ts +6 -0
  149. package/dist/types/src/components/CloudTAK/util/WarnChannels.vue.d.ts +7 -0
  150. package/dist/types/src/components/CloudTAK/util/WarnConfiguration.vue.d.ts +7 -0
  151. package/dist/types/src/components/Configure.vue.d.ts +3 -0
  152. package/dist/types/src/components/ETL/Connection/AgencyBadge.vue.d.ts +8 -0
  153. package/dist/types/src/components/ETL/Connection/ConnectionFiles.vue.d.ts +3 -0
  154. package/dist/types/src/components/ETL/Connection/ConnectionTokens.vue.d.ts +3 -0
  155. package/dist/types/src/components/ETL/Connection/ConnectionVideos.vue.d.ts +3 -0
  156. package/dist/types/src/components/ETL/Connection/StatusDot.vue.d.ts +13 -0
  157. package/dist/types/src/components/ETL/Connection/TokenModal.vue.d.ts +16 -0
  158. package/dist/types/src/components/ETL/Connection.vue.d.ts +3 -0
  159. package/dist/types/src/components/ETL/ConnectionCard.vue.d.ts +16 -0
  160. package/dist/types/src/components/ETL/Connections.vue.d.ts +3 -0
  161. package/dist/types/src/components/ETL/Data.vue.d.ts +3 -0
  162. package/dist/types/src/components/ETL/Layer/LayerIncomingConfig.vue.d.ts +27 -0
  163. package/dist/types/src/components/ETL/Layer/LayerOutgoingConfig.vue.d.ts +27 -0
  164. package/dist/types/src/components/ETL/Layer/utils/QueryInput.vue.d.ts +56 -0
  165. package/dist/types/src/components/ETL/Layer/utils/StatusDot.vue.d.ts +7 -0
  166. package/dist/types/src/components/ETL/Layer.vue.d.ts +3 -0
  167. package/dist/types/src/components/Home.vue.d.ts +13 -0
  168. package/dist/types/src/components/Loading.vue.d.ts +3 -0
  169. package/dist/types/src/components/Login.vue.d.ts +7 -0
  170. package/dist/types/src/components/LostUser.vue.d.ts +3 -0
  171. package/dist/types/src/components/PageFooter.vue.d.ts +3 -0
  172. package/dist/types/src/components/ServerAdmin.vue.d.ts +3 -0
  173. package/dist/types/src/components/VideoWall/Main.vue.d.ts +3 -0
  174. package/dist/types/src/components/VideoWall.vue.d.ts +13 -0
  175. package/dist/types/src/components/util/GroupSelect.vue.d.ts +14 -0
  176. package/dist/types/src/components/util/InitialAuthor.vue.d.ts +6 -0
  177. package/dist/types/src/components/util/StatusDot.vue.d.ts +8 -0
  178. package/dist/types/src/components/util/Upload.vue.d.ts +46 -0
  179. package/dist/types/src/components/util/UploadLogo.vue.d.ts +14 -0
  180. package/dist/types/src/main.d.ts +1 -0
  181. package/dist/types/src/pages/admin/main.d.ts +1 -0
  182. package/dist/types/src/pages/connection/main.d.ts +1 -0
  183. package/dist/types/src/pages/docs/App.vue.d.ts +4 -0
  184. package/dist/types/src/pages/docs/main.d.ts +1 -0
  185. package/dist/types/src/pages/video/main.d.ts +1 -0
  186. package/dist/types/src/std.d.ts +19 -0
  187. package/dist/types/src/stores/brand.d.ts +7 -0
  188. package/dist/types/src/stores/float.d.ts +42 -0
  189. package/dist/types/src/stores/map.d.ts +115 -0
  190. package/dist/types/src/stores/modules/draw.d.ts +35 -0
  191. package/dist/types/src/stores/modules/icons.d.ts +38 -0
  192. package/dist/types/src/stores/modules/menu.d.ts +34 -0
  193. package/dist/types/src/test/setup.d.ts +1 -0
  194. package/dist/types/src/timediff.d.ts +1 -0
  195. package/dist/types/src/types.d.ts +158 -0
  196. package/dist/types/src/video.d.ts +1 -0
  197. package/dist/types/src/workers/atlas-connection.d.ts +12 -0
  198. package/dist/types/src/workers/atlas-database.d.ts +134 -0
  199. package/dist/types/src/workers/atlas-profile.d.ts +39 -0
  200. package/dist/types/src/workers/atlas-team.d.ts +13 -0
  201. package/dist/types/src/workers/atlas.d.ts +19 -0
  202. package/package.json +97 -0
  203. package/src/App.vue +341 -0
  204. package/src/base/chatroom-chats.ts +124 -0
  205. package/src/base/chatroom.ts +202 -0
  206. package/src/base/cot.ts +625 -0
  207. package/src/base/database.ts +150 -0
  208. package/src/base/events.ts +43 -0
  209. package/src/base/filter.ts +163 -0
  210. package/src/base/handler.ts +67 -0
  211. package/src/base/icon.ts +16 -0
  212. package/src/base/notification.ts +163 -0
  213. package/src/base/overlay.ts +558 -0
  214. package/src/base/subscription-feature.ts +224 -0
  215. package/src/base/subscription-log.ts +174 -0
  216. package/src/base/subscription.ts +489 -0
  217. package/src/base/utils/styles.ts +430 -0
  218. package/src/base/validators.ts +66 -0
  219. package/src/components/Admin/AdminConfig.vue +487 -0
  220. package/src/components/Admin/AdminConnections.vue +195 -0
  221. package/src/components/Admin/AdminDatas.vue +165 -0
  222. package/src/components/Admin/AdminExport.vue +121 -0
  223. package/src/components/Admin/AdminImports.vue +222 -0
  224. package/src/components/Admin/AdminLayerTemplate.vue +91 -0
  225. package/src/components/Admin/AdminLayers.vue +301 -0
  226. package/src/components/Admin/AdminMissionTemplate.vue +259 -0
  227. package/src/components/Admin/AdminMissionTemplateLog.vue +273 -0
  228. package/src/components/Admin/AdminMissionTemplates.vue +189 -0
  229. package/src/components/Admin/AdminOverlays.vue +232 -0
  230. package/src/components/Admin/AdminOverlaysEdit.vue +355 -0
  231. package/src/components/Admin/AdminPalette.vue +214 -0
  232. package/src/components/Admin/AdminPaletteFeature.vue +208 -0
  233. package/src/components/Admin/AdminPalettes.vue +189 -0
  234. package/src/components/Admin/AdminServer.vue +143 -0
  235. package/src/components/Admin/AdminTasks.vue +60 -0
  236. package/src/components/Admin/AdminUser.vue +263 -0
  237. package/src/components/Admin/AdminUsers.vue +183 -0
  238. package/src/components/Admin/AdminVideos.vue +60 -0
  239. package/src/components/Admin/Server/ServerConnection.vue +322 -0
  240. package/src/components/Admin/Server/ServerInjectorModal.vue +125 -0
  241. package/src/components/Admin/Server/ServerInjectors.vue +104 -0
  242. package/src/components/Admin/Server/ServerPackages.vue +159 -0
  243. package/src/components/Admin/Server/ServerRepeaters.vue +105 -0
  244. package/src/components/Admin/Server/ServerVideos.vue +83 -0
  245. package/src/components/Admin/Tasks/AdminRawTasks.vue +148 -0
  246. package/src/components/Admin/Tasks/AdminTasks.vue +286 -0
  247. package/src/components/Admin/Videos/AdminVideoLeases.vue +198 -0
  248. package/src/components/Admin/Videos/AdminVideoService.vue +67 -0
  249. package/src/components/Admin/Videos/VideoConfig.vue +132 -0
  250. package/src/components/Admin/Videos/VideoConfigPath.vue +58 -0
  251. package/src/components/Admin/Videos/VideoConfigPort.vue +40 -0
  252. package/src/components/CloudTAK/CoTView.vue +915 -0
  253. package/src/components/CloudTAK/CoordInput.vue +110 -0
  254. package/src/components/CloudTAK/DrawTools.vue +200 -0
  255. package/src/components/CloudTAK/FeatView.vue +242 -0
  256. package/src/components/CloudTAK/GeoJSONInput.vue +226 -0
  257. package/src/components/CloudTAK/MainMenu.vue +190 -0
  258. package/src/components/CloudTAK/MainMenuContents.vue +360 -0
  259. package/src/components/CloudTAK/Map.vue +972 -0
  260. package/src/components/CloudTAK/MapLoading.vue +31 -0
  261. package/src/components/CloudTAK/Menu/Basemaps/EditModal.vue +427 -0
  262. package/src/components/CloudTAK/Menu/Debugger.vue +118 -0
  263. package/src/components/CloudTAK/Menu/Iconset/EditModal.vue +118 -0
  264. package/src/components/CloudTAK/Menu/MenuBasemaps.vue +410 -0
  265. package/src/components/CloudTAK/Menu/MenuChannels.vue +206 -0
  266. package/src/components/CloudTAK/Menu/MenuChat.vue +222 -0
  267. package/src/components/CloudTAK/Menu/MenuChats.vue +167 -0
  268. package/src/components/CloudTAK/Menu/MenuConnections.vue +166 -0
  269. package/src/components/CloudTAK/Menu/MenuContacts.vue +245 -0
  270. package/src/components/CloudTAK/Menu/MenuFeatures.vue +718 -0
  271. package/src/components/CloudTAK/Menu/MenuFeaturesDeleted.vue +217 -0
  272. package/src/components/CloudTAK/Menu/MenuFiles.vue +433 -0
  273. package/src/components/CloudTAK/Menu/MenuIcon.vue +236 -0
  274. package/src/components/CloudTAK/Menu/MenuIconset.vue +128 -0
  275. package/src/components/CloudTAK/Menu/MenuIconsets.vue +266 -0
  276. package/src/components/CloudTAK/Menu/MenuImport.vue +198 -0
  277. package/src/components/CloudTAK/Menu/MenuImports.vue +199 -0
  278. package/src/components/CloudTAK/Menu/MenuItemCard.vue +240 -0
  279. package/src/components/CloudTAK/Menu/MenuMission.vue +324 -0
  280. package/src/components/CloudTAK/Menu/MenuMissions.vue +334 -0
  281. package/src/components/CloudTAK/Menu/MenuOverlayExplorer.vue +434 -0
  282. package/src/components/CloudTAK/Menu/MenuOverlays.vue +560 -0
  283. package/src/components/CloudTAK/Menu/MenuPackage.vue +340 -0
  284. package/src/components/CloudTAK/Menu/MenuPackages.vue +193 -0
  285. package/src/components/CloudTAK/Menu/MenuRoutes.vue +186 -0
  286. package/src/components/CloudTAK/Menu/MenuRoutesNew.vue +193 -0
  287. package/src/components/CloudTAK/Menu/MenuSettings.vue +95 -0
  288. package/src/components/CloudTAK/Menu/MenuSettingsCallsign.vue +12 -0
  289. package/src/components/CloudTAK/Menu/MenuSettingsDisplay.vue +144 -0
  290. package/src/components/CloudTAK/Menu/MenuSettingsTokens.vue +83 -0
  291. package/src/components/CloudTAK/Menu/MenuVideos.vue +436 -0
  292. package/src/components/CloudTAK/Menu/MenuVideosRemote.vue +203 -0
  293. package/src/components/CloudTAK/Menu/Mission/MissionContents.vue +211 -0
  294. package/src/components/CloudTAK/Menu/Mission/MissionCreate.vue +372 -0
  295. package/src/components/CloudTAK/Menu/Mission/MissionInfo.vue +331 -0
  296. package/src/components/CloudTAK/Menu/Mission/MissionInviteModal.vue +107 -0
  297. package/src/components/CloudTAK/Menu/Mission/MissionLayerCreate.vue +77 -0
  298. package/src/components/CloudTAK/Menu/Mission/MissionLayerEdit.vue +77 -0
  299. package/src/components/CloudTAK/Menu/Mission/MissionLayerTree.vue +194 -0
  300. package/src/components/CloudTAK/Menu/Mission/MissionLayers.vue +157 -0
  301. package/src/components/CloudTAK/Menu/Mission/MissionLog.vue +170 -0
  302. package/src/components/CloudTAK/Menu/Mission/MissionLogs.vue +194 -0
  303. package/src/components/CloudTAK/Menu/Mission/MissionTimeline.vue +142 -0
  304. package/src/components/CloudTAK/Menu/Mission/MissionUsers.vue +74 -0
  305. package/src/components/CloudTAK/Menu/Mission/PendingInvites.vue +130 -0
  306. package/src/components/CloudTAK/Menu/Overlays/DeleteModal.vue +57 -0
  307. package/src/components/CloudTAK/Menu/Overlays/TreeCots.vue +497 -0
  308. package/src/components/CloudTAK/Menu/Overlays/TreeMission.vue +32 -0
  309. package/src/components/CloudTAK/Menu/Overlays/TreeVector.vue +113 -0
  310. package/src/components/CloudTAK/Menu/Settings/TokenModal.vue +110 -0
  311. package/src/components/CloudTAK/Menu/Videos/VideoLeaseModal.vue +753 -0
  312. package/src/components/CloudTAK/Menu/Videos/VideosRemoteFeed.vue +75 -0
  313. package/src/components/CloudTAK/Notifications.vue +195 -0
  314. package/src/components/CloudTAK/Query/Magnetic.vue +80 -0
  315. package/src/components/CloudTAK/Query/Reverse.vue +65 -0
  316. package/src/components/CloudTAK/Query/Sun.vue +178 -0
  317. package/src/components/CloudTAK/Query/Weather.vue +195 -0
  318. package/src/components/CloudTAK/QueryView.vue +134 -0
  319. package/src/components/CloudTAK/RadialMenu/LICENSE +21 -0
  320. package/src/components/CloudTAK/RadialMenu/README.md +63 -0
  321. package/src/components/CloudTAK/RadialMenu/RadialMenu.css +85 -0
  322. package/src/components/CloudTAK/RadialMenu/RadialMenu.js +534 -0
  323. package/src/components/CloudTAK/RadialMenu/RadialMenu.vue +257 -0
  324. package/src/components/CloudTAK/RangeInput.vue +155 -0
  325. package/src/components/CloudTAK/RangeRingsInput.vue +269 -0
  326. package/src/components/CloudTAK/util/Breadcrumb.vue +85 -0
  327. package/src/components/CloudTAK/util/ChannelInfo.vue +25 -0
  328. package/src/components/CloudTAK/util/Contact.vue +131 -0
  329. package/src/components/CloudTAK/util/ContactPuck.vue +40 -0
  330. package/src/components/CloudTAK/util/Coordinate.vue +313 -0
  331. package/src/components/CloudTAK/util/CoordinateType.vue +134 -0
  332. package/src/components/CloudTAK/util/CopyButton.vue +67 -0
  333. package/src/components/CloudTAK/util/CopyField.vue +286 -0
  334. package/src/components/CloudTAK/util/DrawOverlay.vue +254 -0
  335. package/src/components/CloudTAK/util/EmptyInfo.vue +71 -0
  336. package/src/components/CloudTAK/util/FeatureIcon.vue +134 -0
  337. package/src/components/CloudTAK/util/FeatureRow.vue +206 -0
  338. package/src/components/CloudTAK/util/FloatingAttachment.vue +191 -0
  339. package/src/components/CloudTAK/util/FloatingVideo.vue +654 -0
  340. package/src/components/CloudTAK/util/GenericSelect.vue +125 -0
  341. package/src/components/CloudTAK/util/GroupSelect.vue +129 -0
  342. package/src/components/CloudTAK/util/Icons.vue +146 -0
  343. package/src/components/CloudTAK/util/JSONModal.vue +57 -0
  344. package/src/components/CloudTAK/util/Keywords.vue +31 -0
  345. package/src/components/CloudTAK/util/LineLength.vue +121 -0
  346. package/src/components/CloudTAK/util/MenuItem.vue +21 -0
  347. package/src/components/CloudTAK/util/MenuTemplate.vue +137 -0
  348. package/src/components/CloudTAK/util/MultipleSelect.vue +103 -0
  349. package/src/components/CloudTAK/util/NotificationIcon.vue +50 -0
  350. package/src/components/CloudTAK/util/NotificationToast.vue +125 -0
  351. package/src/components/CloudTAK/util/PolygonArea.vue +109 -0
  352. package/src/components/CloudTAK/util/PropertyAttachments.vue +224 -0
  353. package/src/components/CloudTAK/util/PropertyBattery.vue +44 -0
  354. package/src/components/CloudTAK/util/PropertyBearing.vue +148 -0
  355. package/src/components/CloudTAK/util/PropertyCreator.vue +61 -0
  356. package/src/components/CloudTAK/util/PropertyDistance.vue +182 -0
  357. package/src/components/CloudTAK/util/PropertyElevation.vue +84 -0
  358. package/src/components/CloudTAK/util/PropertyEmail.vue +44 -0
  359. package/src/components/CloudTAK/util/PropertyLinks.vue +148 -0
  360. package/src/components/CloudTAK/util/PropertyMetadata.vue +53 -0
  361. package/src/components/CloudTAK/util/PropertyMilSym.vue +62 -0
  362. package/src/components/CloudTAK/util/PropertyPhone.vue +61 -0
  363. package/src/components/CloudTAK/util/PropertySensor.vue +129 -0
  364. package/src/components/CloudTAK/util/PropertySpeed.vue +91 -0
  365. package/src/components/CloudTAK/util/PropertyStyle.vue +202 -0
  366. package/src/components/CloudTAK/util/PropertyTimes.vue +95 -0
  367. package/src/components/CloudTAK/util/PropertyType.vue +274 -0
  368. package/src/components/CloudTAK/util/SearchBox.vue +314 -0
  369. package/src/components/CloudTAK/util/SelectFeats.vue +190 -0
  370. package/src/components/CloudTAK/util/SettingsCallsign.vue +151 -0
  371. package/src/components/CloudTAK/util/Share.vue +496 -0
  372. package/src/components/CloudTAK/util/ShareToMission.vue +223 -0
  373. package/src/components/CloudTAK/util/ShareToPackage.vue +250 -0
  374. package/src/components/CloudTAK/util/SlideDownHeader.vue +92 -0
  375. package/src/components/CloudTAK/util/StandardItem.vue +42 -0
  376. package/src/components/CloudTAK/util/Subscriptions.vue +151 -0
  377. package/src/components/CloudTAK/util/TagEntry.vue +301 -0
  378. package/src/components/CloudTAK/util/UploadImport.vue +195 -0
  379. package/src/components/CloudTAK/util/VideoLeaseSourceType.vue +66 -0
  380. package/src/components/CloudTAK/util/WarnChannels.vue +56 -0
  381. package/src/components/CloudTAK/util/WarnConfiguration.vue +34 -0
  382. package/src/components/Configure.vue +259 -0
  383. package/src/components/ETL/Connection/AgencyBadge.vue +102 -0
  384. package/src/components/ETL/Connection/AgencySelect.vue +185 -0
  385. package/src/components/ETL/Connection/CertificateLogin.vue +75 -0
  386. package/src/components/ETL/Connection/CertificateMachineUser.vue +228 -0
  387. package/src/components/ETL/Connection/CertificateP12.vue +104 -0
  388. package/src/components/ETL/Connection/CertificateRaw.vue +50 -0
  389. package/src/components/ETL/Connection/ConnectionData.vue +174 -0
  390. package/src/components/ETL/Connection/ConnectionFiles.vue +182 -0
  391. package/src/components/ETL/Connection/ConnectionGroups.vue +181 -0
  392. package/src/components/ETL/Connection/ConnectionLayer.vue +180 -0
  393. package/src/components/ETL/Connection/ConnectionTokens.vue +147 -0
  394. package/src/components/ETL/Connection/ConnectionVideos.vue +151 -0
  395. package/src/components/ETL/Connection/Events.vue +88 -0
  396. package/src/components/ETL/Connection/StatusDot.vue +48 -0
  397. package/src/components/ETL/Connection/TokenModal.vue +136 -0
  398. package/src/components/ETL/Connection.vue +194 -0
  399. package/src/components/ETL/ConnectionCard.vue +265 -0
  400. package/src/components/ETL/ConnectionEdit.vue +448 -0
  401. package/src/components/ETL/Connections.vue +148 -0
  402. package/src/components/ETL/Data/DataFiles.vue +245 -0
  403. package/src/components/ETL/Data/DataGroups.vue +45 -0
  404. package/src/components/ETL/Data/DataLayer.vue +144 -0
  405. package/src/components/ETL/Data/Location.vue +238 -0
  406. package/src/components/ETL/Data.vue +259 -0
  407. package/src/components/ETL/DataEdit.vue +212 -0
  408. package/src/components/ETL/Layer/LayerAlarm.vue +307 -0
  409. package/src/components/ETL/Layer/LayerDeployment.vue +388 -0
  410. package/src/components/ETL/Layer/LayerEnvironment.vue +259 -0
  411. package/src/components/ETL/Layer/LayerIncomingConfig.vue +401 -0
  412. package/src/components/ETL/Layer/LayerIncomingEnvironmentArcGIS.vue +354 -0
  413. package/src/components/ETL/Layer/LayerIncomingSchema.vue +138 -0
  414. package/src/components/ETL/Layer/LayerIncomingStyles.vue +349 -0
  415. package/src/components/ETL/Layer/LayerOutgoingConfig.vue +204 -0
  416. package/src/components/ETL/Layer/LayerOutgoingEnvironmentArcGIS.vue +279 -0
  417. package/src/components/ETL/Layer/utils/QueryInput.vue +52 -0
  418. package/src/components/ETL/Layer/utils/Schema.vue +322 -0
  419. package/src/components/ETL/Layer/utils/SchemaModal.vue +77 -0
  420. package/src/components/ETL/Layer/utils/StatusDot.vue +38 -0
  421. package/src/components/ETL/Layer/utils/StyleLinkModal.vue +83 -0
  422. package/src/components/ETL/Layer/utils/StyleLinks.vue +139 -0
  423. package/src/components/ETL/Layer/utils/StyleSingle.vue +885 -0
  424. package/src/components/ETL/Layer/utils/StyleTemplate.vue +97 -0
  425. package/src/components/ETL/Layer/utils/TaskModal.vue +217 -0
  426. package/src/components/ETL/Layer.vue +560 -0
  427. package/src/components/ETL/LayerEdit.vue +276 -0
  428. package/src/components/ETL/Styling/Layer.vue +311 -0
  429. package/src/components/ETL/Styling/ObjectInput.vue +46 -0
  430. package/src/components/ETL/Styling/Style.vue +233 -0
  431. package/src/components/Home.vue +17 -0
  432. package/src/components/Loading.vue +42 -0
  433. package/src/components/Login.vue +198 -0
  434. package/src/components/LostUser.vue +31 -0
  435. package/src/components/PageFooter.vue +41 -0
  436. package/src/components/ServerAdmin.vue +408 -0
  437. package/src/components/VideoWall/Main.vue +79 -0
  438. package/src/components/VideoWall.vue +17 -0
  439. package/src/components/util/DataSelect.vue +148 -0
  440. package/src/components/util/EsriFilter.vue +140 -0
  441. package/src/components/util/EsriPortal.vue +422 -0
  442. package/src/components/util/EsriPortalCreate.vue +72 -0
  443. package/src/components/util/EsriServer.vue +368 -0
  444. package/src/components/util/GroupSelect.vue +166 -0
  445. package/src/components/util/IconSelect.vue +302 -0
  446. package/src/components/util/InitialAuthor.vue +28 -0
  447. package/src/components/util/LayerSelect.vue +162 -0
  448. package/src/components/util/LayerTaskSelect.vue +311 -0
  449. package/src/components/util/LayerTemplateSelect.vue +173 -0
  450. package/src/components/util/LoginModal.vue +110 -0
  451. package/src/components/util/PublicTilesSelect.vue +171 -0
  452. package/src/components/util/StatusDot.vue +31 -0
  453. package/src/components/util/TableFooter.vue +64 -0
  454. package/src/components/util/TableHeader.vue +127 -0
  455. package/src/components/util/Upload.vue +220 -0
  456. package/src/components/util/UploadCSV.vue +46 -0
  457. package/src/components/util/UploadLogo.vue +83 -0
  458. package/src/components/util/UploadP12.vue +93 -0
  459. package/src/components/util/UserSelect.vue +151 -0
  460. package/src/derived-types.d.ts +35243 -0
  461. package/src/main.ts +264 -0
  462. package/src/pages/admin/main.ts +208 -0
  463. package/src/pages/connection/main.ts +158 -0
  464. package/src/pages/docs/App.vue +19 -0
  465. package/src/pages/docs/main.ts +6 -0
  466. package/src/pages/video/main.ts +27 -0
  467. package/src/std.ts +152 -0
  468. package/src/stores/brand.ts +28 -0
  469. package/src/stores/float.ts +113 -0
  470. package/src/stores/map.ts +931 -0
  471. package/src/stores/modules/draw.ts +413 -0
  472. package/src/stores/modules/icons.ts +185 -0
  473. package/src/stores/modules/menu.ts +281 -0
  474. package/src/test/setup.ts +43 -0
  475. package/src/timediff.ts +33 -0
  476. package/src/types.ts +226 -0
  477. package/src/video.ts +27 -0
  478. package/src/vite-env.d.ts +9 -0
  479. package/src/workers/atlas-connection.ts +236 -0
  480. package/src/workers/atlas-database.ts +764 -0
  481. package/src/workers/atlas-profile.ts +374 -0
  482. package/src/workers/atlas-team.ts +90 -0
  483. package/src/workers/atlas.ts +81 -0
@@ -0,0 +1,534 @@
1
+ 'use strict';
2
+
3
+ const DEFAULT_SIZE = 100;
4
+ const MIN_SECTORS = 3;
5
+
6
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
7
+ export default function RadialMenu(params) {
8
+ this.parent = params.parent || [];
9
+
10
+ this.size = params.size || DEFAULT_SIZE;
11
+ this.onClick = params.onClick || null;
12
+ this.onClose = params.onClose || null;
13
+ this.menuItems = params.menuItems ? params.menuItems : [{id: 'one', title: 'One'}, {id: 'two', title: 'Two'}];
14
+
15
+ this.radius = 50;
16
+ this.innerRadius = this.radius * 0.4;
17
+ this.sectorSpace = this.radius * 0.06;
18
+ this.sectorCount = Math.max(this.menuItems.length, MIN_SECTORS);
19
+ this.closeOnClick = params.closeOnClick !== undefined ? !!params.closeOnClick : false;
20
+
21
+ this.scale = 1;
22
+ this.holder = null;
23
+ this.parentMenu = [];
24
+ this.parentItems = [];
25
+ this.levelItems = null;
26
+
27
+ this.createHolder();
28
+ this.addIconSymbols();
29
+
30
+ this.currentMenu = null;
31
+
32
+ this.onMouseWheelHandler = (event) => {
33
+ this.onMouseWheel(event);
34
+ }
35
+ this.onKeyDownHandler = (event) => {
36
+ this.onMouseWheel(event);
37
+ }
38
+
39
+ document.addEventListener('wheel', this.onMouseWheelHandler);
40
+ document.addEventListener('keydown', this.onKeyDownHandler);
41
+ }
42
+
43
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
44
+ RadialMenu.prototype.open = function () {
45
+ if (!this.currentMenu) {
46
+ this.currentMenu = this.createMenu('menu inner', this.menuItems);
47
+ this.holder.appendChild(this.currentMenu);
48
+
49
+ // wait DOM commands to apply and then set class to allow transition to take effect
50
+ RadialMenu.nextTick(() => {
51
+ this.currentMenu.setAttribute('class', 'menu');
52
+ });
53
+ }
54
+ };
55
+
56
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
57
+ RadialMenu.prototype.close = function () {
58
+ document.removeEventListener('wheel', this.onMouseWheelHandler);
59
+ document.removeEventListener('keydown', this.onKeyDownHandler);
60
+
61
+ if (this.currentMenu) {
62
+ var parentMenu;
63
+ // eslint-disable-next-line no-cond-assign
64
+ while (parentMenu = this.parentMenu.pop()) {
65
+ parentMenu.remove();
66
+ }
67
+ this.parentItems = [];
68
+
69
+ RadialMenu.setClassAndWaitForTransition(this.currentMenu, 'menu inner').then(() => {
70
+ this.currentMenu.remove();
71
+ this.currentMenu = null;
72
+ });
73
+
74
+ if (this.onClose) {
75
+ this.onClose();
76
+ }
77
+ }
78
+ };
79
+
80
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
81
+ RadialMenu.prototype.getParentMenu = function () {
82
+ if (this.parentMenu.length > 0) {
83
+ return this.parentMenu[this.parentMenu.length - 1];
84
+ } else {
85
+ return null;
86
+ }
87
+ };
88
+
89
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
90
+ RadialMenu.prototype.createHolder = function () {
91
+ this.holder = document.createElement('div');
92
+ this.holder.className = 'menuHolder';
93
+ this.holder.style.width = this.size + 'px';
94
+ this.holder.style.height = this.size + 'px';
95
+
96
+ this.parent.appendChild(this.holder);
97
+ };
98
+
99
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
100
+ RadialMenu.prototype.showNestedMenu = function (item) {
101
+ this.parentMenu.push(this.currentMenu);
102
+ this.parentItems.push(this.levelItems);
103
+ this.currentMenu = this.createMenu('menu inner', item.items, true);
104
+ this.holder.appendChild(this.currentMenu);
105
+
106
+ // wait DOM commands to apply and then set class to allow transition to take effect
107
+ RadialMenu.nextTick(() => {
108
+ this.getParentMenu().setAttribute('class', 'menu outer');
109
+ this.currentMenu.setAttribute('class', 'menu');
110
+ });
111
+ };
112
+
113
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
114
+ RadialMenu.prototype.returnToParentMenu = function () {
115
+ this.getParentMenu().setAttribute('class', 'menu');
116
+ RadialMenu.setClassAndWaitForTransition(this.currentMenu, 'menu inner').then(() => {
117
+ this.currentMenu.remove();
118
+ this.currentMenu = this.parentMenu.pop();
119
+ this.levelItems = this.parentItems.pop();
120
+ });
121
+ };
122
+
123
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
124
+ RadialMenu.prototype.handleClick = function () {
125
+ var selectedIndex = this.getSelectedIndex();
126
+ if (selectedIndex >= 0) {
127
+ var item = this.levelItems[selectedIndex];
128
+ if (item.items) {
129
+ this.showNestedMenu(item);
130
+ } else {
131
+ if (this.onClick) {
132
+ this.onClick(item);
133
+ if (this.closeOnClick) {
134
+ this.close(false);
135
+ }
136
+ }
137
+ }
138
+ }
139
+ };
140
+
141
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
142
+ RadialMenu.prototype.handleCenterClick = function () {
143
+ if (this.parentItems.length > 0) {
144
+ this.returnToParentMenu();
145
+ } else {
146
+ this.close();
147
+ }
148
+ };
149
+
150
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
151
+ RadialMenu.prototype.getIndexOffset = function () {
152
+ if (this.levelItems.length < this.sectorCount) {
153
+ switch (this.levelItems.length) {
154
+ case 1:
155
+ return -2;
156
+ case 2:
157
+ return -2;
158
+ case 3:
159
+ return -2;
160
+ default:
161
+ return -1;
162
+ }
163
+ } else {
164
+ return -1;
165
+ }
166
+
167
+ };
168
+
169
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
170
+ RadialMenu.prototype.createMenu = function (classValue, levelItems) {
171
+ this.levelItems = levelItems;
172
+
173
+ this.sectorCount = Math.max(this.levelItems.length, MIN_SECTORS);
174
+ this.scale = this.calcScale();
175
+
176
+ var svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
177
+ svg.setAttribute('class', classValue);
178
+ svg.setAttribute('viewBox', '-50 -50 100 100');
179
+ svg.setAttribute('width', this.size);
180
+ svg.setAttribute('height', this.size);
181
+
182
+ var angleStep = 360 / this.sectorCount;
183
+ var angleShift = angleStep / 2 + 270;
184
+
185
+ var indexOffset = this.getIndexOffset();
186
+
187
+ for (var i = 0; i < this.sectorCount; ++i) {
188
+ var startAngle = angleShift + angleStep * i;
189
+ var endAngle = angleShift + angleStep * (i + 1);
190
+
191
+ var itemIndex = RadialMenu.resolveLoopIndex(this.sectorCount - i + indexOffset, this.sectorCount);
192
+ var item;
193
+ if (itemIndex >= 0 && itemIndex < this.levelItems.length) {
194
+ item = this.levelItems[itemIndex];
195
+ } else {
196
+ item = null;
197
+ }
198
+
199
+ this.appendSectorPath(startAngle, endAngle, svg, item, itemIndex);
200
+ }
201
+
202
+ svg.addEventListener('mousedown', (event) => {
203
+ var className = event.target.parentNode.getAttribute('class').split(' ')[0];
204
+ switch (className) {
205
+ case 'sector':
206
+ var index = parseInt(event.target.parentNode.getAttribute('data-index'));
207
+ if (!isNaN(index)) {
208
+ this.setSelectedIndex(index);
209
+ }
210
+ break;
211
+ default:
212
+ }
213
+ });
214
+
215
+ svg.addEventListener('click', () => {
216
+ var className = event.target.parentNode.getAttribute('class').split(' ')[0];
217
+ switch (className) {
218
+ case 'sector':
219
+ this.handleClick();
220
+ break;
221
+ case 'center':
222
+ this.handleCenterClick();
223
+ break;
224
+ default:
225
+ }
226
+ });
227
+ return svg;
228
+ };
229
+
230
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
231
+ RadialMenu.prototype.selectDelta = function (indexDelta) {
232
+ var selectedIndex = this.getSelectedIndex();
233
+ if (selectedIndex < 0) {
234
+ selectedIndex = 0;
235
+ }
236
+ selectedIndex += indexDelta;
237
+
238
+ if (selectedIndex < 0) {
239
+ selectedIndex = this.levelItems.length + selectedIndex;
240
+ } else if (selectedIndex >= this.levelItems.length) {
241
+ selectedIndex -= this.levelItems.length;
242
+ }
243
+ this.setSelectedIndex(selectedIndex);
244
+ };
245
+
246
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
247
+ RadialMenu.prototype.onKeyDown = function (event) {
248
+ if (this.currentMenu) {
249
+ switch (event.key) {
250
+ case 'Escape':
251
+ case 'Backspace':
252
+ this.handleCenterClick();
253
+ event.preventDefault();
254
+ break;
255
+ case 'Enter':
256
+ this.handleClick();
257
+ event.preventDefault();
258
+ break;
259
+ case 'ArrowRight':
260
+ case 'ArrowUp':
261
+ this.selectDelta(1);
262
+ event.preventDefault();
263
+ break;
264
+ case 'ArrowLeft':
265
+ case 'ArrowDown':
266
+ this.selectDelta(-1);
267
+ event.preventDefault();
268
+ break;
269
+ }
270
+ }
271
+ };
272
+
273
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
274
+ RadialMenu.prototype.onMouseWheel = function (event) {
275
+ if (this.currentMenu) {
276
+ var delta = -event.deltaY;
277
+
278
+ if (delta > 0) {
279
+ this.selectDelta(1)
280
+ } else {
281
+ this.selectDelta(-1)
282
+ }
283
+ }
284
+ };
285
+
286
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
287
+ RadialMenu.prototype.getSelectedNode = function () {
288
+ var items = this.currentMenu.getElementsByClassName('selected');
289
+ if (items.length > 0) {
290
+ return items[0];
291
+ } else {
292
+ return null;
293
+ }
294
+ };
295
+
296
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
297
+ RadialMenu.prototype.getSelectedIndex = function () {
298
+ var selectedNode = this.getSelectedNode();
299
+ if (selectedNode) {
300
+ return parseInt(selectedNode.getAttribute('data-index'));
301
+ } else {
302
+ return -1;
303
+ }
304
+ };
305
+
306
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
307
+ RadialMenu.prototype.setSelectedIndex = function (index) {
308
+ if (index >=0 && index < this.levelItems.length) {
309
+ var items = this.currentMenu.querySelectorAll('g[data-index="' + index + '"]');
310
+ if (items.length > 0) {
311
+ var itemToSelect = items[0];
312
+ var selectedNode = this.getSelectedNode();
313
+ if (selectedNode) {
314
+ selectedNode.setAttribute('class', 'sector');
315
+ }
316
+ itemToSelect.setAttribute('class', 'sector selected');
317
+ }
318
+ }
319
+ };
320
+
321
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
322
+ RadialMenu.prototype.createUseTag = function (x, y, link) {
323
+ var use = document.createElementNS('http://www.w3.org/2000/svg', 'use');
324
+ use.setAttribute('x', RadialMenu.numberToString(x));
325
+ use.setAttribute('y', RadialMenu.numberToString(y));
326
+ use.setAttribute('width', '10');
327
+ use.setAttribute('height', '10');
328
+ use.setAttribute('fill', 'white');
329
+ use.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', link);
330
+ use.setAttribute('href', link);
331
+ return use;
332
+ };
333
+
334
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
335
+ RadialMenu.prototype.appendSectorPath = function (startAngleDeg, endAngleDeg, svg, item, index) {
336
+ var centerPoint = this.getSectorCenter(startAngleDeg, endAngleDeg);
337
+ var translate = {
338
+ x: RadialMenu.numberToString((1 - this.scale) * centerPoint.x),
339
+ y: RadialMenu.numberToString((1 - this.scale) * centerPoint.y)
340
+ };
341
+
342
+ var g = document.createElementNS('http://www.w3.org/2000/svg', 'g');
343
+ g.setAttribute('transform','translate(' +translate.x + ' ,' + translate.y + ') scale(' + this.scale + ')');
344
+
345
+ var path = document.createElementNS('http://www.w3.org/2000/svg', 'path');
346
+ path.setAttribute('d', this.createSectorCmds(startAngleDeg, endAngleDeg));
347
+ g.appendChild(path);
348
+
349
+ if (item) {
350
+ g.setAttribute('class', 'sector');
351
+ if (index == 0) {
352
+ g.setAttribute('class', 'sector selected');
353
+ }
354
+ g.setAttribute('data-id', item.id);
355
+ g.setAttribute('data-index', index);
356
+
357
+ if (item.title) {
358
+ var text = this.createText(centerPoint.x, centerPoint.y, item.title);
359
+ if (item.icon) {
360
+ text.setAttribute('transform', 'translate(0,8)');
361
+ } else {
362
+ text.setAttribute('transform', 'translate(0,2)');
363
+ }
364
+
365
+ g.appendChild(text);
366
+ }
367
+
368
+ if (item.icon) {
369
+ var use = this.createUseTag(centerPoint.x, centerPoint.y, item.icon);
370
+ if (item.title) {
371
+ use.setAttribute('transform', 'translate(-5,-8)');
372
+ } else {
373
+ use.setAttribute('transform', 'translate(-5,-5)');
374
+ }
375
+
376
+ g.appendChild(use);
377
+ }
378
+
379
+ } else {
380
+ g.setAttribute('class', 'dummy');
381
+ }
382
+
383
+ svg.appendChild(g);
384
+ };
385
+
386
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
387
+ RadialMenu.prototype.createSectorCmds = function (startAngleDeg, endAngleDeg) {
388
+ var initPoint = RadialMenu.getDegreePos(startAngleDeg, this.radius);
389
+ var path = 'M' + RadialMenu.pointToString(initPoint);
390
+
391
+ var radiusAfterScale = this.radius * (1 / this.scale);
392
+ path += 'A' + radiusAfterScale + ' ' + radiusAfterScale + ' 0 0 0' + RadialMenu.pointToString(RadialMenu.getDegreePos(endAngleDeg, this.radius));
393
+ path += 'L' + RadialMenu.pointToString(RadialMenu.getDegreePos(endAngleDeg, this.innerRadius));
394
+
395
+ var radiusDiff = this.radius - this.innerRadius;
396
+ var radiusDelta = (radiusDiff - (radiusDiff * this.scale)) / 2;
397
+ var innerRadius = (this.innerRadius + radiusDelta) * (1 / this.scale);
398
+ path += 'A' + innerRadius + ' ' + innerRadius + ' 0 0 1 ' + RadialMenu.pointToString(RadialMenu.getDegreePos(startAngleDeg, this.innerRadius));
399
+ path += 'Z';
400
+
401
+ return path;
402
+ };
403
+
404
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
405
+ RadialMenu.prototype.createText = function (x, y, title) {
406
+ var text = document.createElementNS('http://www.w3.org/2000/svg', 'text');
407
+ text.setAttribute('text-anchor', 'middle');
408
+ text.setAttribute('x', RadialMenu.numberToString(x));
409
+ text.setAttribute('y', RadialMenu.numberToString(y));
410
+ text.setAttribute('font-size', '38%');
411
+ text.innerHTML = title;
412
+ return text;
413
+ };
414
+
415
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
416
+ RadialMenu.prototype.createCircle = function (x, y, r) {
417
+ var circle = document.createElementNS('http://www.w3.org/2000/svg', 'circle');
418
+ circle.setAttribute('cx',RadialMenu.numberToString(x));
419
+ circle.setAttribute('cy',RadialMenu.numberToString(y));
420
+ circle.setAttribute('r',r);
421
+ return circle;
422
+ };
423
+
424
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
425
+ RadialMenu.prototype.calcScale = function () {
426
+ var totalSpace = this.sectorSpace * this.sectorCount;
427
+ var circleLength = Math.PI * 2 * this.radius;
428
+ var radiusDelta = this.radius - (circleLength - totalSpace) / (Math.PI * 2);
429
+ return (this.radius - radiusDelta) / this.radius;
430
+ };
431
+
432
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
433
+ RadialMenu.prototype.getSectorCenter = function (startAngleDeg, endAngleDeg) {
434
+ return RadialMenu.getDegreePos((startAngleDeg + endAngleDeg) / 2, this.innerRadius + (this.radius - this.innerRadius) / 2);
435
+ };
436
+
437
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
438
+ RadialMenu.prototype.addIconSymbols = function () {
439
+ var svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
440
+ svg.setAttribute('class', 'icons');
441
+
442
+ // return
443
+ var returnSymbol = document.createElementNS('http://www.w3.org/2000/svg', 'symbol');
444
+ returnSymbol.setAttribute('id', 'return');
445
+ returnSymbol.setAttribute('viewBox', '0 0 489.394 489.394');
446
+ var returnPath = document.createElementNS('http://www.w3.org/2000/svg', 'path');
447
+ returnPath.setAttribute('d', "M375.789,92.867H166.864l17.507-42.795c3.724-9.132,1-19.574-6.691-25.744c-7.701-6.166-18.538-6.508-26.639-0.879" +
448
+ "L9.574,121.71c-6.197,4.304-9.795,11.457-9.563,18.995c0.231,7.533,4.261,14.446,10.71,18.359l147.925,89.823" +
449
+ "c8.417,5.108,19.18,4.093,26.481-2.499c7.312-6.591,9.427-17.312,5.219-26.202l-19.443-41.132h204.886" +
450
+ "c15.119,0,27.418,12.536,27.418,27.654v149.852c0,15.118-12.299,27.19-27.418,27.19h-226.74c-20.226,0-36.623,16.396-36.623,36.622" +
451
+ "v12.942c0,20.228,16.397,36.624,36.623,36.624h226.74c62.642,0,113.604-50.732,113.604-113.379V206.709" +
452
+ "C489.395,144.062,438.431,92.867,375.789,92.867z");
453
+ returnSymbol.appendChild(returnPath);
454
+ svg.appendChild(returnSymbol);
455
+
456
+ var closeSymbol = document.createElementNS('http://www.w3.org/2000/svg', 'symbol');
457
+ closeSymbol.setAttribute('id', 'close');
458
+ closeSymbol.setAttribute('viewBox', '0 0 41.756 41.756');
459
+
460
+ var closePath = document.createElementNS('http://www.w3.org/2000/svg', 'path');
461
+ closePath.setAttribute('d', "M27.948,20.878L40.291,8.536c1.953-1.953,1.953-5.119,0-7.071c-1.951-1.952-5.119-1.952-7.07,0L20.878,13.809L8.535,1.465" +
462
+ "c-1.951-1.952-5.119-1.952-7.07,0c-1.953,1.953-1.953,5.119,0,7.071l12.342,12.342L1.465,33.22c-1.953,1.953-1.953,5.119,0,7.071" +
463
+ "C2.44,41.268,3.721,41.755,5,41.755c1.278,0,2.56-0.487,3.535-1.464l12.343-12.342l12.343,12.343" +
464
+ "c0.976,0.977,2.256,1.464,3.535,1.464s2.56-0.487,3.535-1.464c1.953-1.953,1.953-5.119,0-7.071L27.948,20.878z");
465
+ closeSymbol.appendChild(closePath);
466
+ svg.appendChild(closeSymbol);
467
+
468
+ this.holder.appendChild(svg);
469
+ };
470
+
471
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
472
+ RadialMenu.getDegreePos = function (angleDeg, length) {
473
+ return {
474
+ x: Math.sin(RadialMenu.degToRad(angleDeg)) * length,
475
+ y: Math.cos(RadialMenu.degToRad(angleDeg)) * length
476
+ };
477
+ };
478
+
479
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
480
+ RadialMenu.pointToString = function (point) {
481
+ return RadialMenu.numberToString(point.x) + ' ' + RadialMenu.numberToString(point.y);
482
+ };
483
+
484
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
485
+ RadialMenu.numberToString = function (n) {
486
+ if (Number.isInteger(n)) {
487
+ return n.toString();
488
+ } else if (n) {
489
+ var r = (+n).toFixed(5);
490
+ if (r.match(/\./)) {
491
+ r = r.replace(/\.?0+$/, '');
492
+ }
493
+ return r;
494
+ }
495
+ };
496
+
497
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
498
+ RadialMenu.resolveLoopIndex = function (index, length) {
499
+ if (index < 0) {
500
+ index = length + index;
501
+ }
502
+ if (index >= length) {
503
+ index = index - length;
504
+ }
505
+ if (index < length) {
506
+ return index;
507
+ } else {
508
+ return null;
509
+ }
510
+ };
511
+
512
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
513
+ RadialMenu.degToRad = function (deg) {
514
+ return deg * (Math.PI / 180);
515
+ };
516
+
517
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
518
+ RadialMenu.setClassAndWaitForTransition = function (node, newClass) {
519
+ return new Promise(function (resolve) {
520
+ function handler(event) {
521
+ if (event.target == node && event.propertyName == 'visibility') {
522
+ node.removeEventListener('transitionend', handler);
523
+ resolve();
524
+ }
525
+ }
526
+ node.addEventListener('transitionend', handler);
527
+ node.setAttribute('class', newClass);
528
+ });
529
+ };
530
+
531
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
532
+ RadialMenu.nextTick = function (fn) {
533
+ setTimeout(fn, 10);
534
+ };