@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
package/README.md ADDED
@@ -0,0 +1,34 @@
1
+ # TAK-PS-Stats Web UI
2
+
3
+ ## Project setup
4
+ ```
5
+ npm install
6
+ ```
7
+
8
+ ### Compiles and hot-reloads for development
9
+ ```
10
+ npm run serve
11
+ ```
12
+
13
+ ### Compiles and minifies for production
14
+ ```
15
+ npm run build
16
+ ```
17
+
18
+ ### Lints and fixes files
19
+ ```
20
+ npm run lint
21
+ ```
22
+
23
+ ### Generated TypeScript Definiton File
24
+
25
+ The WebUI TypeScript definitions are built directly from the Swagger output of the server.
26
+ With the server running locally on port 5001, run the following
27
+
28
+ ```
29
+ npm run typegen
30
+ ```
31
+
32
+ ### Customize configuration
33
+
34
+ See [Configuration Reference](https://cli.vuejs.org/config/).
@@ -0,0 +1,99 @@
1
+ import type { App } from 'vue';
2
+ import type { Router, RouteRecordRaw } from 'vue-router';
3
+ import type { Pinia } from 'pinia';
4
+ import type { MenuItemConfig } from './src/stores/modules/menu.ts';
5
+ import { type DBFeature } from './src/base/database.ts';
6
+ import { type Observable } from 'rxjs';
7
+ import mapgl from 'maplibre-gl';
8
+ export type { MenuItemConfig };
9
+ export interface PluginInstance {
10
+ /**
11
+ * Called after `install` if the server has the plugin enabled by default
12
+ * or if the user has opted in to the plugin functionality
13
+ */
14
+ enable(): Promise<void>;
15
+ /**
16
+ * Called if the user disables the plugin, the plugin must
17
+ * remove all functionality from the user facing app
18
+ */
19
+ disable(): Promise<void>;
20
+ }
21
+ export interface PluginStatic {
22
+ /**
23
+ * Hook called on init, note the plugin should not make itself
24
+ * usable unless enable() is called.
25
+ */
26
+ install(app: App, api: PluginAPI): PluginInstance | Promise<PluginInstance>;
27
+ }
28
+ /**
29
+ * The Main Plugin API for managing CloudTAK UI functions
30
+ */
31
+ export declare class PluginAPI {
32
+ /**
33
+ * The Vue App instance
34
+ */
35
+ app: App;
36
+ /**
37
+ * The Vue Router instance
38
+ */
39
+ router: Router;
40
+ /**
41
+ * The Pinia Store instance
42
+ */
43
+ pinia: Pinia;
44
+ /**
45
+ * @param app The Vue App instance
46
+ * @param router The Vue Router instance
47
+ * @param pinia The Pinia Store instance
48
+ */
49
+ constructor(app: App, router: Router, pinia: Pinia);
50
+ /**
51
+ * Manage the Main Menu
52
+ */
53
+ get menu(): {
54
+ /**
55
+ * Add a new item to the main menu
56
+ * @param item The menu item configuration
57
+ */
58
+ add: (item: MenuItemConfig) => void;
59
+ /**
60
+ * Remove an item from the main menu
61
+ * @param key The key of the menu item to remove
62
+ */
63
+ remove: (key: string) => void;
64
+ };
65
+ /**
66
+ * Manage Application Routes
67
+ */
68
+ get routes(): {
69
+ /**
70
+ * Add a new route to the application
71
+ * @param route The route configuration
72
+ * @param parentName The name of the parent route to add this route to (optional)
73
+ */
74
+ add: (route: RouteRecordRaw, parentName?: string) => void;
75
+ };
76
+ /**
77
+ * Map Accessors
78
+ */
79
+ get map(): mapgl.Map;
80
+ /**
81
+ * Manage Features
82
+ */
83
+ get feature(): {
84
+ /**
85
+ * List features from the local database
86
+ * @param opts Filter options
87
+ */
88
+ list: (opts?: {
89
+ filter?: (feature: DBFeature) => boolean;
90
+ }) => Promise<DBFeature[]>;
91
+ /**
92
+ * Stream features from the local database
93
+ * @param opts Filter options
94
+ */
95
+ stream: (opts?: {
96
+ filter?: (feature: DBFeature) => boolean;
97
+ }) => Observable<DBFeature[]>;
98
+ };
99
+ }
@@ -0,0 +1,5 @@
1
+ import '@tabler/core/dist/js/tabler.min.js';
2
+ import '@tabler/core/dist/css/tabler.min.css';
3
+ declare const __VLS_export: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
4
+ declare const _default: typeof __VLS_export;
5
+ export default _default;
@@ -0,0 +1,17 @@
1
+ import type { DBChatroomChat } from './database.ts';
2
+ import type Atlas from '../workers/atlas.ts';
3
+ export default class ChatroomChats {
4
+ chatroom: string;
5
+ constructor(chatroom: string);
6
+ refresh(): Promise<void>;
7
+ list(opts?: {
8
+ refresh?: boolean;
9
+ }): Promise<Array<DBChatroomChat>>;
10
+ send(message: string, sender: {
11
+ uid: string;
12
+ callsign: string;
13
+ }, worker: Atlas, recipient?: {
14
+ uid: string;
15
+ callsign: string;
16
+ }): Promise<void>;
17
+ }
@@ -0,0 +1,47 @@
1
+ import type { DBChatroom } from './database.ts';
2
+ import ChatroomChats from './chatroom-chats.ts';
3
+ import type { ProfileChatroomList, ProfileChatList } from '../types.ts';
4
+ /**
5
+ * High Level Wrapper around the Profile Chatroom API
6
+ *
7
+ * @property {string} name - The name of the chatroom
8
+ */
9
+ export default class Chatroom {
10
+ name: string;
11
+ chats: ChatroomChats;
12
+ constructor(name: string);
13
+ /**
14
+ * Return a Chatroom instance if one already exists in the local DB,
15
+ */
16
+ static from(name: string): Promise<Chatroom | undefined>;
17
+ /**
18
+ * Loads an existing Chatroom from the local DB and refresh it,
19
+ *
20
+ * @param name - The unique identifier for the chatroom
21
+ * @param opts - Options for loading the chatroom
22
+ * @param opts.reload - Whether to reload the chatroom from the local DB
23
+ */
24
+ static load(name: string, opts?: {
25
+ reload?: boolean;
26
+ }): Promise<Chatroom>;
27
+ static delete(names: string[]): Promise<void>;
28
+ /**
29
+ * Reload the Chatroom from the local Database
30
+ */
31
+ reload(): Promise<void>;
32
+ /**
33
+ * Perform a hard refresh of the Chatroom from the Server
34
+ */
35
+ refresh(): Promise<void>;
36
+ fetch(): Promise<void>;
37
+ getChats(): Promise<ProfileChatList>;
38
+ deleteChats(ids: string[]): Promise<void>;
39
+ /**
40
+ * List all locally stored chatrooms
41
+ */
42
+ static localList(): Promise<Set<{
43
+ name: string;
44
+ }>>;
45
+ static list(filter?: string): Promise<DBChatroom[]>;
46
+ static sync(): Promise<ProfileChatroomList>;
47
+ }
@@ -0,0 +1,94 @@
1
+ import type { Remote } from 'comlink';
2
+ import type Atlas from '../workers/atlas.ts';
3
+ import type { Feature, Subscription } from '../types.ts';
4
+ import type { BBox as GeoJSONBBox, Feature as GeoJSONFeature, Geometry as GeoJSONGeometry } from 'geojson';
5
+ export interface Origin {
6
+ mode: OriginMode;
7
+ mode_id?: string;
8
+ }
9
+ export declare enum OriginMode {
10
+ CONNECTION = "Connection",
11
+ MISSION = "Mission"
12
+ }
13
+ export declare const RENDERED_PROPERTIES: string[];
14
+ export default class COT {
15
+ id: string;
16
+ instance: string;
17
+ _path: string;
18
+ _properties: Feature["properties"];
19
+ _geometry: Feature["geometry"];
20
+ _remote: BroadcastChannel | null;
21
+ _atlas: Atlas | Remote<Atlas>;
22
+ _username?: string;
23
+ origin: Origin;
24
+ static load(atlas: Atlas, feat: Feature, origin?: Origin, opts?: {
25
+ skipSave?: boolean;
26
+ remote?: boolean;
27
+ }): Promise<COT>;
28
+ constructor(atlas: Atlas | Remote<Atlas>, feat: Feature, origin?: Origin, opts?: {
29
+ skipSave?: boolean;
30
+ remote?: boolean;
31
+ });
32
+ /**
33
+ * Begin listening for remote updates
34
+ * This is a seperate function due to the issues outlined in: https://stackoverflow.com/q/70184129
35
+ */
36
+ reactivity(): void;
37
+ set path(path: string);
38
+ get path(): string;
39
+ set properties(properties: Feature["properties"]);
40
+ get properties(): Feature["properties"];
41
+ set geometry(geometry: Feature["geometry"]);
42
+ get geometry(): Feature["geometry"];
43
+ /**
44
+ * Update the COT and return a boolean as to whether the COT needs to be re-rendered
45
+ */
46
+ update(update: {
47
+ path?: string;
48
+ properties?: Feature["properties"];
49
+ geometry?: Feature["geometry"];
50
+ }, opts?: {
51
+ skipSave?: boolean;
52
+ }): Promise<boolean>;
53
+ /**
54
+ * Attempt to save the CoT to the database if necessary
55
+ */
56
+ save(): Promise<void>;
57
+ get is_skittle(): boolean;
58
+ get is_self(): boolean;
59
+ get is_archivable(): boolean;
60
+ /**
61
+ * Determines if the COT type allows editing
62
+ * But does not determine if a COT is part of a Misison Sync, if the mission allows editing
63
+ */
64
+ get is_editable(): boolean;
65
+ subscription(): Promise<Subscription>;
66
+ username(): Promise<string>;
67
+ /**
68
+ * Returns a proxy that will correctly call the internal update function if changes are made
69
+ * Warning: Cannot be used with Vue3's reactivity system
70
+ */
71
+ as_proxy(): COT;
72
+ as_feature(opts?: {
73
+ clone?: boolean;
74
+ }): Feature;
75
+ as_rendered(): GeoJSONFeature<GeoJSONGeometry, Record<string, unknown>>;
76
+ /**
77
+ * The slimmer we can get the Features, the better
78
+ * This returns the minium feature we need to actually style the COT in the vector tiles
79
+ */
80
+ static as_rendered(input: Feature): GeoJSONFeature<GeoJSONGeometry, Record<string, unknown>>;
81
+ vectorId(): number;
82
+ /**
83
+ * string hash function to convert the COT ID into a number for use as a vector tile feature ID
84
+ */
85
+ static vectorId(id: string): number;
86
+ length(): number;
87
+ bounds(): GeoJSONBBox;
88
+ flyTo(): Promise<void>;
89
+ static style(feat: Feature): Promise<Feature>;
90
+ /**
91
+ * Consistent feature manipulation between add & update
92
+ */
93
+ static styleProperties(type: string, properties: Feature["properties"]): Promise<Feature["properties"]>;
94
+ }
@@ -0,0 +1,115 @@
1
+ import Dexie, { type EntityTable } from 'dexie';
2
+ import type { Feature, Mission, MissionRole } from '../types.ts';
3
+ export interface DBIcon {
4
+ name: string;
5
+ }
6
+ export interface DBFeature {
7
+ id: string;
8
+ path: string;
9
+ properties: Feature["properties"];
10
+ geometry: Feature["geometry"];
11
+ }
12
+ export interface DBChatroom {
13
+ id: string;
14
+ name: string;
15
+ created: string;
16
+ updated: string;
17
+ last_read: string | null;
18
+ }
19
+ export interface DBChatroomChat {
20
+ id: string;
21
+ chatroom: string;
22
+ sender: string;
23
+ sender_uid: string;
24
+ message: string;
25
+ created: string;
26
+ }
27
+ export interface DBIconset {
28
+ uid: string;
29
+ created: string;
30
+ updated: string;
31
+ version: number;
32
+ name: string;
33
+ username: string | null;
34
+ default_group: string | null;
35
+ default_friendly: string | null;
36
+ default_hostile: string | null;
37
+ default_neutral: string | null;
38
+ default_unknown: string | null;
39
+ skip_resize: boolean;
40
+ }
41
+ export interface DBFilter {
42
+ id: string;
43
+ external: string;
44
+ name: string;
45
+ source: string;
46
+ internal: boolean;
47
+ query: string;
48
+ }
49
+ export declare enum NotificationType {
50
+ Contact = "Contact",
51
+ Import = "Import",
52
+ Alert = "Alert",
53
+ Medical = "Medical",
54
+ Mission = "Mission",
55
+ Chat = "Chat"
56
+ }
57
+ export interface DBNotification {
58
+ id: string;
59
+ type: NotificationType;
60
+ name: string;
61
+ body: string;
62
+ url: string;
63
+ toast: boolean;
64
+ read: boolean;
65
+ created: string;
66
+ }
67
+ export interface DBVideo {
68
+ id: string;
69
+ created: string;
70
+ updated: string;
71
+ lease: number;
72
+ username: string;
73
+ }
74
+ export interface DBSubscriptionFeature {
75
+ id: string;
76
+ path: string;
77
+ mission: string;
78
+ properties: Feature["properties"];
79
+ geometry: Feature["geometry"];
80
+ }
81
+ export interface DBSubscription {
82
+ guid: string;
83
+ name: string;
84
+ meta: Mission;
85
+ role: MissionRole;
86
+ token?: string;
87
+ dirty: boolean;
88
+ subscribed: boolean;
89
+ }
90
+ export interface DBSubscriptionLog {
91
+ id: string;
92
+ dtg?: string;
93
+ missionNames: string[];
94
+ created: string;
95
+ servertime: string;
96
+ mission: string;
97
+ content: string;
98
+ creatorUid: string;
99
+ contentHashes: unknown[];
100
+ keywords: string[];
101
+ }
102
+ export type DatabaseType = Dexie & {
103
+ icon: EntityTable<DBIcon, 'name'>;
104
+ iconset: EntityTable<DBIconset, 'uid'>;
105
+ video: EntityTable<DBVideo, 'id'>;
106
+ filter: EntityTable<DBFilter, 'id'>;
107
+ feature: EntityTable<DBFeature, 'id'>;
108
+ chatroom: EntityTable<DBChatroom, 'id'>;
109
+ chatroom_chats: EntityTable<DBChatroomChat, 'id'>;
110
+ notification: EntityTable<DBNotification, 'id'>;
111
+ subscription: EntityTable<DBSubscription, 'guid'>;
112
+ subscription_log: EntityTable<DBSubscriptionLog, 'id'>;
113
+ subscription_feature: EntityTable<DBSubscriptionFeature, 'id'>;
114
+ };
115
+ export declare const db: DatabaseType;
@@ -0,0 +1,30 @@
1
+ export declare enum WorkerMessageType {
2
+ Map_FlyTo = "cloudtak:map:flyto",
3
+ Map_FitBounds = "cloudtak:map:fitbounds",
4
+ Map_Projection = "cloudtak:map:projection",
5
+ Profile_Callsign = "cloudtak:profile:callsign",
6
+ Profile_Display_Zoom = "cloudtak:profile:display:zoom",
7
+ Profile_Icon_Rotation = "cloudtak:profile:icon:rotation",
8
+ Profile_Distance_Unit = "cloudtak:profile:distance:unit",
9
+ Profile_Location_Coordinates = "cloudtak:profile:location:coordinates",
10
+ Profile_Location_Source = "cloudtak:profile:location:source",
11
+ Feature_Archived_Added = "cloudtak:feature:archived:added",
12
+ Feature_Archived_Removed = "cloudtak:feature:archived:removed",
13
+ Channels_None = "channels:none",
14
+ Channels_List = "channels:list",
15
+ Contact_Change = "contact:change",
16
+ Connection_Open = "connection:open",
17
+ Connection_Close = "connection:close",
18
+ Mission_Change_Feature = "mission:change:feature",
19
+ Mission_Invite = "mission:invite"
20
+ }
21
+ export type WorkerMessage = {
22
+ type: WorkerMessageType;
23
+ body?: any;
24
+ };
25
+ export declare enum LocationState {
26
+ Loading = 0,
27
+ Disabled = 1,
28
+ Preset = 2,
29
+ Live = 3
30
+ }
@@ -0,0 +1,41 @@
1
+ import type { Feature } from '../types.ts';
2
+ import jsonata from 'jsonata';
3
+ /**
4
+ * High Level Wrapper around the Data Filters
5
+ *
6
+ * TODO: Once all COTs are in IndexDB, apply the filter on to a new field in the COT
7
+ * called "filtered": [ <filterid>, ... ] so we don't have to re-evaluate the filter each time
8
+ *
9
+ * @property {string} id - The unique identifier for the filter
10
+ * @property {string} external - The external ID of the filter
11
+ * @property {string} name - The name of the filter
12
+ * @property {string} source - The source of the filter
13
+ * @property {boolean} internal - Whether the filter is internal
14
+ * @property {string} query - The JSONata query string for the filter
15
+ */
16
+ export default class Filter {
17
+ id: string;
18
+ external: string;
19
+ name: string;
20
+ source: string;
21
+ internal: boolean;
22
+ query: string;
23
+ expression: jsonata.Expression;
24
+ constructor(name: string, external: string, source: string, internal: boolean, query: string);
25
+ test(feature: Feature): Promise<boolean>;
26
+ static list(): Promise<Filter[]>;
27
+ static from(id: string): Promise<Filter | null>;
28
+ update(body: {
29
+ name?: string;
30
+ external?: string;
31
+ source?: string;
32
+ internal?: boolean;
33
+ query?: string;
34
+ }): Promise<void>;
35
+ static create(name: string, external: string, source: string, internal: boolean, query: string): Promise<Filter>;
36
+ delete(): Promise<void>;
37
+ static delete(id: {
38
+ id?: string;
39
+ external?: string;
40
+ }): Promise<void>;
41
+ }
@@ -0,0 +1,11 @@
1
+ import COT from '../base/cot.ts';
2
+ import type Atlas from '../workers/atlas.ts';
3
+ import type { Remote, TransferHandler } from 'comlink';
4
+ import type { Feature } from '../types.ts';
5
+ export declare class CloudTAKTransferHandler {
6
+ atlas: Atlas | Remote<Atlas>;
7
+ remote: boolean;
8
+ constructor(atlas: Atlas | Remote<Atlas>, transferHandlers: Map<string, TransferHandler<unknown, unknown>>, remote: boolean);
9
+ cots: TransferHandler<Set<COT>, Array<Feature>>;
10
+ cot: TransferHandler<COT, Feature>;
11
+ }
@@ -0,0 +1,4 @@
1
+ export default class Icon {
2
+ static has(icon: string): Promise<boolean>;
3
+ static populate(icons: string[]): Promise<void>;
4
+ }
@@ -0,0 +1,37 @@
1
+ import { NotificationType } from './database.ts';
2
+ import type { DBNotification } from './database.ts';
3
+ export { NotificationType };
4
+ export default class TAKNotification {
5
+ id: string;
6
+ type: NotificationType;
7
+ name: string;
8
+ body: string;
9
+ url: string;
10
+ created: string;
11
+ toast: boolean;
12
+ read: boolean;
13
+ constructor(id: string, type: NotificationType, name: string, body: string, url: string, opts?: {
14
+ read?: boolean;
15
+ toast?: boolean;
16
+ created?: string;
17
+ });
18
+ /**
19
+ * Return a Notification instance if one already exists in the local DB,
20
+ */
21
+ static from(id: string): Promise<TAKNotification | null>;
22
+ static create(type: NotificationType, name: string, body: string, url: string, toast?: boolean): Promise<TAKNotification>;
23
+ static update(id: string, opts: {
24
+ read?: boolean;
25
+ toast?: boolean;
26
+ }): Promise<void>;
27
+ update(opts: {
28
+ read?: boolean;
29
+ toast?: boolean;
30
+ }): Promise<void>;
31
+ popup(): Promise<void>;
32
+ static clear(): Promise<void>;
33
+ static delete(id: string): Promise<void>;
34
+ delete(): Promise<void>;
35
+ static count(): Promise<number>;
36
+ static list(): Promise<DBNotification[]>;
37
+ }
@@ -0,0 +1,94 @@
1
+ import type { ProfileOverlay, ProfileOverlay_Create } from '../types.ts';
2
+ import type { LayerSpecification } from 'maplibre-gl';
3
+ /**
4
+ * @class
5
+ */
6
+ export default class Overlay {
7
+ _destroyed: boolean;
8
+ _internal: boolean;
9
+ _timer: ReturnType<typeof setInterval> | null;
10
+ _clickable: Array<{
11
+ id: string;
12
+ type: string;
13
+ }>;
14
+ _error?: Error;
15
+ _loaded: boolean;
16
+ id: number;
17
+ name: string;
18
+ active: boolean;
19
+ username?: string;
20
+ frequency: number | null;
21
+ iconset: string | null;
22
+ created: string;
23
+ updated: string;
24
+ pos: number;
25
+ type: string;
26
+ opacity: number;
27
+ visible: boolean;
28
+ mode: string;
29
+ mode_id: string | null;
30
+ actions: ProfileOverlay["actions"];
31
+ url?: string;
32
+ styles: Array<LayerSpecification>;
33
+ token: string | null;
34
+ static create(body: ProfileOverlay | ProfileOverlay_Create, opts?: {
35
+ internal?: boolean;
36
+ skipSave?: boolean;
37
+ clickable?: Array<{
38
+ id: string;
39
+ type: string;
40
+ }>;
41
+ before?: string;
42
+ skipLayers?: boolean;
43
+ }): Promise<Overlay>;
44
+ static internal(body: {
45
+ id: number;
46
+ type: string;
47
+ name: string;
48
+ styles?: Array<LayerSpecification>;
49
+ clickable?: Array<{
50
+ id: string;
51
+ type: string;
52
+ }>;
53
+ }): Promise<Overlay>;
54
+ static load(id: number): Promise<Overlay>;
55
+ constructor(overlay: ProfileOverlay, opts?: {
56
+ internal?: boolean;
57
+ });
58
+ healthy(): boolean;
59
+ hasBounds(): boolean;
60
+ zoomTo(): Promise<void>;
61
+ addLayers(before?: string): Promise<void>;
62
+ init(opts?: {
63
+ clickable?: Array<{
64
+ id: string;
65
+ type: string;
66
+ }>;
67
+ before?: string;
68
+ skipLayers?: boolean;
69
+ }): Promise<void>;
70
+ remove(): void;
71
+ replace(overlay: {
72
+ name?: string;
73
+ active?: boolean;
74
+ username?: string;
75
+ actions?: ProfileOverlay["actions"];
76
+ type?: string;
77
+ opacity?: number;
78
+ visible?: boolean;
79
+ mode?: string;
80
+ mode_id?: string;
81
+ url?: string;
82
+ token?: string;
83
+ styles?: Array<LayerSpecification>;
84
+ }, opts?: {
85
+ before?: string;
86
+ }): Promise<void>;
87
+ delete(): Promise<void>;
88
+ update(body: {
89
+ pos?: number;
90
+ visible?: boolean;
91
+ opacity?: number;
92
+ }): Promise<void>;
93
+ save(): Promise<void>;
94
+ }
@@ -0,0 +1,49 @@
1
+ import COT from './cot.ts';
2
+ import Subscription from './subscription.ts';
3
+ import type Atlas from '../workers/atlas.ts';
4
+ import type { BBox } from 'geojson';
5
+ import type { Feature, FeatureCollection } from '../types.ts';
6
+ /**
7
+ * High Level Wrapper around the Data/Mission Sync API
8
+ */
9
+ export default class SubscriptionFeature {
10
+ parent: Subscription;
11
+ token: string;
12
+ missiontoken?: string;
13
+ constructor(parent: Subscription, opts: {
14
+ token: string;
15
+ missiontoken?: string;
16
+ });
17
+ headers(): Record<string, string>;
18
+ refresh(): Promise<void>;
19
+ list(opts?: {
20
+ refresh: false;
21
+ }): Promise<Array<Feature>>;
22
+ collection(raw?: boolean): Promise<FeatureCollection>;
23
+ bounds(): Promise<BBox>;
24
+ from(uid: string): Promise<Feature | undefined>;
25
+ /**
26
+ * Upsert a feature into the mission.
27
+ * This will udpate the feature in the local DB, submit it to the TAK Server and
28
+ * mark the subscription as dirty for a re-render
29
+ *
30
+ * @param atlas - The Atlas instance
31
+ * @param cot - The COT object to upsert
32
+ * @param opts - Options for updating the feature
33
+ * @param opts.skipNetwork - If true, the feature will not be updated on the server - IE in response to a Mission Change event
34
+ */
35
+ update(atlas: Atlas, cot: COT, opts?: {
36
+ skipNetwork?: boolean;
37
+ }): Promise<void>;
38
+ /**
39
+ * Delete a feature from the mission.
40
+ *
41
+ * @param atlas - The Atlas instance
42
+ * @param uid - The unique ID of the feature to delete
43
+ * @param opts - Options for deleting the feature
44
+ * @param opts.skipNetwork - If true, the feature will not be deleted from the server - IE in response to a Mission Change event
45
+ */
46
+ delete(atlas: Atlas, uid: string, opts?: {
47
+ skipNetwork?: boolean;
48
+ }): Promise<void>;
49
+ }