@map-colonies/react-components 3.7.4 → 3.10.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 (393) hide show
  1. package/.storybook/main.js +1 -4
  2. package/CHANGELOG.md +36 -0
  3. package/dist/assets/img/map-marker.gif +0 -0
  4. package/dist/autocomplete/autocomplete.d.ts +0 -1
  5. package/dist/autocomplete/autocomplete.js +22 -9
  6. package/dist/autocomplete/index.d.ts +0 -1
  7. package/dist/autocomplete/index.js +2 -2
  8. package/dist/box/box.d.ts +0 -1
  9. package/dist/box/box.js +3 -2
  10. package/dist/box/index.d.ts +0 -1
  11. package/dist/box/index.js +2 -2
  12. package/dist/cesium-map/data-sources/custom.data-source.d.ts +0 -1
  13. package/dist/cesium-map/data-sources/custom.data-source.js +3 -2
  14. package/dist/cesium-map/data-sources/drawings.data-source.d.ts +0 -1
  15. package/dist/cesium-map/data-sources/drawings.data-source.js +29 -16
  16. package/dist/cesium-map/data-sources/index.d.ts +0 -1
  17. package/dist/cesium-map/data-sources/index.js +12 -6
  18. package/dist/cesium-map/entities/entity.d.ts +0 -1
  19. package/dist/cesium-map/entities/entity.description.d.ts +0 -1
  20. package/dist/cesium-map/entities/entity.description.js +5 -3
  21. package/dist/cesium-map/entities/entity.js +3 -2
  22. package/dist/cesium-map/entities/graphics/polygon.graphics.d.ts +0 -1
  23. package/dist/cesium-map/entities/graphics/polygon.graphics.js +3 -2
  24. package/dist/cesium-map/entities/graphics/polyline.graphics.d.ts +0 -1
  25. package/dist/cesium-map/entities/graphics/polyline.graphics.js +3 -2
  26. package/dist/cesium-map/entities/graphics/rectangle.graphics.d.ts +0 -1
  27. package/dist/cesium-map/entities/graphics/rectangle.graphics.js +3 -2
  28. package/dist/cesium-map/entities/index.d.ts +0 -1
  29. package/dist/cesium-map/entities/index.js +14 -8
  30. package/dist/cesium-map/index.d.ts +0 -1
  31. package/dist/cesium-map/index.js +17 -11
  32. package/dist/cesium-map/layers/3d.tileset.d.ts +0 -1
  33. package/dist/cesium-map/layers/3d.tileset.js +5 -4
  34. package/dist/cesium-map/layers/3d.tileset.update.d.ts +1 -0
  35. package/dist/cesium-map/layers/3d.tileset.update.js +5 -0
  36. package/dist/cesium-map/layers/geojson.layer.d.ts +0 -1
  37. package/dist/cesium-map/layers/geojson.layer.js +3 -2
  38. package/dist/cesium-map/layers/imagery.layer.d.ts +0 -1
  39. package/dist/cesium-map/layers/imagery.layer.js +22 -9
  40. package/dist/cesium-map/layers/index.d.ts +0 -1
  41. package/dist/cesium-map/layers/index.js +17 -11
  42. package/dist/cesium-map/layers/osm.layer.d.ts +0 -1
  43. package/dist/cesium-map/layers/osm.layer.js +3 -2
  44. package/dist/cesium-map/layers/wms.layer.d.ts +0 -1
  45. package/dist/cesium-map/layers/wms.layer.js +3 -2
  46. package/dist/cesium-map/layers/wmts.layer.d.ts +0 -1
  47. package/dist/cesium-map/layers/wmts.layer.js +3 -2
  48. package/dist/cesium-map/layers/xyz.layer.d.ts +0 -1
  49. package/dist/cesium-map/layers/xyz.layer.js +3 -2
  50. package/dist/cesium-map/layers-manager.d.ts +2 -2
  51. package/dist/cesium-map/layers-manager.js +3 -7
  52. package/dist/cesium-map/map.d.ts +2 -2
  53. package/dist/cesium-map/map.js +59 -37
  54. package/dist/cesium-map/map.types.d.ts +0 -1
  55. package/dist/cesium-map/map.types.js +1 -1
  56. package/dist/cesium-map/proxied.types.d.ts +0 -1
  57. package/dist/cesium-map/proxied.types.js +4 -2
  58. package/dist/cesium-map/settings/base-maps.d.ts +0 -1
  59. package/dist/cesium-map/settings/base-maps.js +22 -12
  60. package/dist/cesium-map/settings/scene-modes.d.ts +0 -1
  61. package/dist/cesium-map/settings/scene-modes.js +17 -4
  62. package/dist/cesium-map/settings/settings.d.ts +0 -1
  63. package/dist/cesium-map/settings/settings.js +20 -7
  64. package/dist/cesium-map/terrain-providers/custom/dummy-quantized-mesh-tile.d.ts +3 -0
  65. package/dist/cesium-map/terrain-providers/custom/dummy-quantized-mesh-tile.js +245 -0
  66. package/dist/cesium-map/terrain-providers/custom/quantized-mesh-decoder.d.ts +9 -0
  67. package/dist/cesium-map/terrain-providers/custom/quantized-mesh-decoder.js +202 -0
  68. package/dist/cesium-map/terrain-providers/custom/quantized-mesh-terrain-provider.d.ts +50 -0
  69. package/dist/cesium-map/terrain-providers/custom/quantized-mesh-terrain-provider.js +136 -0
  70. package/dist/cesium-map/tools/cesium/primitives-conversions.cesium.d.ts +0 -1
  71. package/dist/cesium-map/tools/cesium/primitives-conversions.cesium.js +17 -4
  72. package/dist/cesium-map/tools/coordinates-tracker.tool.d.ts +0 -1
  73. package/dist/cesium-map/tools/coordinates-tracker.tool.js +17 -4
  74. package/dist/cesium-map/tools/draw/drawHelper.d.ts +0 -1
  75. package/dist/cesium-map/tools/draw/drawHelper.js +16 -3
  76. package/dist/cesium-map/tools/geojson/geojson-to-primitive.d.ts +1 -2
  77. package/dist/cesium-map/tools/geojson/geojson-to-primitive.js +3 -2
  78. package/dist/cesium-map/tools/geojson/index.d.ts +0 -1
  79. package/dist/cesium-map/tools/geojson/index.js +12 -6
  80. package/dist/cesium-map/tools/geojson/point.geojson.d.ts +0 -1
  81. package/dist/cesium-map/tools/geojson/point.geojson.js +3 -2
  82. package/dist/cesium-map/tools/geojson/polygon.geojson.d.ts +0 -1
  83. package/dist/cesium-map/tools/geojson/polygon.geojson.js +3 -2
  84. package/dist/cesium-map/tools/geojson/rectangle.geojson.d.ts +0 -1
  85. package/dist/cesium-map/tools/geojson/rectangle.geojson.js +17 -4
  86. package/dist/cesium-map/tools/inspector.tool.d.ts +4 -0
  87. package/dist/cesium-map/tools/inspector.tool.js +33 -0
  88. package/dist/cesium-map/tools/scale-tracker.tool.d.ts +0 -1
  89. package/dist/cesium-map/tools/scale-tracker.tool.js +19 -6
  90. package/dist/cesium-map/tools/terranian-height.tool.d.ts +4 -0
  91. package/dist/cesium-map/tools/terranian-height.tool.js +113 -0
  92. package/dist/cssbaseline/cssbaseline.d.ts +0 -1
  93. package/dist/cssbaseline/cssbaseline.js +5 -3
  94. package/dist/cssbaseline/index.d.ts +0 -1
  95. package/dist/cssbaseline/index.js +3 -3
  96. package/dist/date-picker/date-picker.css +9 -0
  97. package/dist/date-picker/date-picker.d.ts +14 -0
  98. package/dist/date-picker/date-picker.js +78 -0
  99. package/dist/date-picker/index.d.ts +1 -0
  100. package/dist/date-picker/index.js +13 -0
  101. package/dist/date-range-picker/date-range-picker.d.ts +0 -1
  102. package/dist/date-range-picker/date-range-picker.form-control.d.ts +0 -1
  103. package/dist/date-range-picker/date-range-picker.form-control.js +36 -21
  104. package/dist/date-range-picker/date-range-picker.js +29 -16
  105. package/dist/date-range-picker/index.d.ts +0 -1
  106. package/dist/date-range-picker/index.js +12 -6
  107. package/dist/file-picker/file-picker.css +56 -0
  108. package/dist/file-picker/file-picker.d.ts +275 -0
  109. package/dist/file-picker/file-picker.js +146 -0
  110. package/dist/file-picker/fs-map.json +1557 -0
  111. package/dist/file-picker/index.d.ts +1 -0
  112. package/dist/file-picker/index.js +13 -0
  113. package/dist/file-picker/localization.d.ts +6 -0
  114. package/dist/file-picker/localization.js +100 -0
  115. package/dist/index.d.ts +2 -1
  116. package/dist/index.js +23 -15
  117. package/dist/map-filter-container/container-map.d.ts +0 -1
  118. package/dist/map-filter-container/container-map.js +3 -2
  119. package/dist/map-filter-container/index.d.ts +0 -1
  120. package/dist/map-filter-container/index.js +11 -5
  121. package/dist/map-filter-container/map-filter-container.d.ts +0 -1
  122. package/dist/map-filter-container/map-filter-container.js +17 -4
  123. package/dist/map-filter-container/polygon-selection-ui.d.ts +0 -1
  124. package/dist/map-filter-container/polygon-selection-ui.js +3 -2
  125. package/dist/models/defaults.d.ts +11 -1
  126. package/dist/models/defaults.js +12 -1
  127. package/dist/models/enums.d.ts +2 -2
  128. package/dist/models/enums.js +2 -1
  129. package/dist/models/index.d.ts +0 -1
  130. package/dist/models/index.js +11 -5
  131. package/dist/ol-map/feature.d.ts +0 -1
  132. package/dist/ol-map/feature.js +3 -2
  133. package/dist/ol-map/index.d.ts +0 -1
  134. package/dist/ol-map/index.js +16 -10
  135. package/dist/ol-map/interactions/draw.d.ts +0 -1
  136. package/dist/ol-map/interactions/draw.js +4 -4
  137. package/dist/ol-map/interactions/index.d.ts +0 -1
  138. package/dist/ol-map/interactions/index.js +11 -5
  139. package/dist/ol-map/layers/index.d.ts +0 -1
  140. package/dist/ol-map/layers/index.js +13 -7
  141. package/dist/ol-map/layers/tile-layer.d.ts +0 -1
  142. package/dist/ol-map/layers/tile-layer.js +19 -5
  143. package/dist/ol-map/layers/vector-layer.d.ts +0 -1
  144. package/dist/ol-map/layers/vector-layer.js +19 -5
  145. package/dist/ol-map/layers/vector-tile-layer.d.ts +0 -1
  146. package/dist/ol-map/layers/vector-tile-layer.js +19 -5
  147. package/dist/ol-map/map.d.ts +0 -1
  148. package/dist/ol-map/map.js +24 -10
  149. package/dist/ol-map/source/index.d.ts +0 -1
  150. package/dist/ol-map/source/index.js +16 -10
  151. package/dist/ol-map/source/mvt.d.ts +0 -1
  152. package/dist/ol-map/source/mvt.js +7 -4
  153. package/dist/ol-map/source/osm.d.ts +0 -1
  154. package/dist/ol-map/source/osm.js +3 -2
  155. package/dist/ol-map/source/vector-source.d.ts +1 -2
  156. package/dist/ol-map/source/vector-source.js +19 -5
  157. package/dist/ol-map/source/wms.d.ts +0 -1
  158. package/dist/ol-map/source/wms.js +5 -3
  159. package/dist/ol-map/source/wmts.d.ts +0 -1
  160. package/dist/ol-map/source/wmts.js +5 -3
  161. package/dist/ol-map/source/xyz.d.ts +0 -1
  162. package/dist/ol-map/source/xyz.js +5 -3
  163. package/dist/ol-map/style.d.ts +0 -1
  164. package/dist/ol-map/style.js +1 -1
  165. package/dist/popover/index.d.ts +0 -1
  166. package/dist/popover/index.js +2 -2
  167. package/dist/popover/popover.d.ts +0 -1
  168. package/dist/popover/popover.js +3 -2
  169. package/dist/smart-table/__mock-data__/smartTableMocks.d.ts +0 -1
  170. package/dist/smart-table/__mock-data__/smartTableMocks.js +1 -1
  171. package/dist/smart-table/index.d.ts +0 -1
  172. package/dist/smart-table/index.js +12 -6
  173. package/dist/smart-table/smart-table-head.d.ts +0 -1
  174. package/dist/smart-table/smart-table-head.js +1 -1
  175. package/dist/smart-table/smart-table-row.d.ts +0 -2
  176. package/dist/smart-table/smart-table-row.js +18 -8
  177. package/dist/smart-table/smart-table-types.d.ts +0 -2
  178. package/dist/smart-table/smart-table-types.js +0 -1
  179. package/dist/smart-table/smart-table.d.ts +0 -1
  180. package/dist/smart-table/smart-table.js +15 -3
  181. package/dist/theme/index.d.ts +0 -1
  182. package/dist/theme/index.js +11 -5
  183. package/dist/theme/theme.d.ts +0 -1
  184. package/dist/theme/theme.js +1 -1
  185. package/dist/utils/map.d.ts +0 -1
  186. package/dist/utils/map.js +7 -4
  187. package/dist/utils/projections.d.ts +0 -1
  188. package/dist/utils/projections.js +1 -1
  189. package/dist/utils/story.d.ts +0 -1
  190. package/dist/utils/story.js +0 -1
  191. package/package.json +8 -4
  192. package/public/assets/img/map-marker.gif +0 -0
  193. package/src/lib/cesium-map/context-menu.stories.tsx +1 -2
  194. package/src/lib/cesium-map/layers/3d.tileset.stories.tsx +1 -2
  195. package/src/lib/cesium-map/layers/3d.tileset.update.ts +72 -0
  196. package/src/lib/cesium-map/layers/layers.rect.stories.tsx +171 -0
  197. package/src/lib/cesium-map/layers-manager.stories.tsx +2 -3
  198. package/src/lib/cesium-map/layers-manager.ts +3 -1
  199. package/src/lib/cesium-map/map.stories.tsx +3 -3
  200. package/src/lib/cesium-map/map.tsx +22 -11
  201. package/src/lib/cesium-map/terrain-providers/custom/dummy-quantized-mesh-tile.ts +243 -0
  202. package/src/lib/cesium-map/terrain-providers/custom/quantized-mesh-decoder.ts +321 -0
  203. package/src/lib/cesium-map/terrain-providers/custom/quantized-mesh-terrain-provider.ts +237 -0
  204. package/src/lib/cesium-map/terrain-providers/terrain-provider-heights-tool.stories.tsx +155 -0
  205. package/src/lib/cesium-map/terrain-providers/terrain-provider.stories.tsx +185 -0
  206. package/src/lib/cesium-map/tools/inspector.tool.tsx +15 -0
  207. package/src/lib/cesium-map/tools/terranian-height.tool.tsx +167 -0
  208. package/src/lib/date-picker/date-picker.css +9 -0
  209. package/src/lib/date-picker/date-picker.stories.tsx +130 -0
  210. package/src/lib/date-picker/date-picker.tsx +90 -0
  211. package/src/lib/date-picker/index.ts +1 -0
  212. package/src/lib/date-range-picker/date-range-picker.form-control.tsx +9 -7
  213. package/src/lib/date-range-picker/{stories/DateRangePicker.stories.tsx → date-range-picker.stories.tsx} +5 -5
  214. package/src/lib/date-range-picker/date-range-picker.tsx +12 -10
  215. package/src/lib/file-picker/file-picker.css +56 -0
  216. package/src/lib/file-picker/file-picker.stories.tsx +381 -0
  217. package/src/lib/file-picker/file-picker.tsx +163 -0
  218. package/src/lib/file-picker/fs-map.json +1557 -0
  219. package/src/lib/file-picker/index.ts +1 -0
  220. package/src/lib/file-picker/localization.ts +135 -0
  221. package/src/lib/index.ts +2 -0
  222. package/src/lib/models/defaults.ts +12 -0
  223. package/src/lib/models/enums.ts +1 -0
  224. package/src/types/quantized-mesh-decoder.d.ts +1 -0
  225. package/storybook-static/mock/{tileset → tileset_1}/ll.b3dm +0 -0
  226. package/storybook-static/mock/{tileset → tileset_1}/lr.b3dm +0 -0
  227. package/storybook-static/mock/{tileset → tileset_1}/parent.b3dm +0 -0
  228. package/storybook-static/mock/{tileset → tileset_1}/tileset.json +0 -0
  229. package/storybook-static/mock/{tileset → tileset_1}/ul.b3dm +0 -0
  230. package/storybook-static/mock/{tileset → tileset_1}/ur.b3dm +0 -0
  231. package/tsbuildconfig.json +2 -2
  232. package/dist/autocomplete/autocomplete.d.ts.map +0 -1
  233. package/dist/autocomplete/autocomplete.js.map +0 -1
  234. package/dist/autocomplete/index.d.ts.map +0 -1
  235. package/dist/autocomplete/index.js.map +0 -1
  236. package/dist/box/box.d.ts.map +0 -1
  237. package/dist/box/box.js.map +0 -1
  238. package/dist/box/index.d.ts.map +0 -1
  239. package/dist/box/index.js.map +0 -1
  240. package/dist/cesium-map/data-sources/custom.data-source.d.ts.map +0 -1
  241. package/dist/cesium-map/data-sources/custom.data-source.js.map +0 -1
  242. package/dist/cesium-map/data-sources/drawings.data-source.d.ts.map +0 -1
  243. package/dist/cesium-map/data-sources/drawings.data-source.js.map +0 -1
  244. package/dist/cesium-map/data-sources/index.d.ts.map +0 -1
  245. package/dist/cesium-map/data-sources/index.js.map +0 -1
  246. package/dist/cesium-map/entities/entity.d.ts.map +0 -1
  247. package/dist/cesium-map/entities/entity.description.d.ts.map +0 -1
  248. package/dist/cesium-map/entities/entity.description.js.map +0 -1
  249. package/dist/cesium-map/entities/entity.js.map +0 -1
  250. package/dist/cesium-map/entities/graphics/polygon.graphics.d.ts.map +0 -1
  251. package/dist/cesium-map/entities/graphics/polygon.graphics.js.map +0 -1
  252. package/dist/cesium-map/entities/graphics/polyline.graphics.d.ts.map +0 -1
  253. package/dist/cesium-map/entities/graphics/polyline.graphics.js.map +0 -1
  254. package/dist/cesium-map/entities/graphics/rectangle.graphics.d.ts.map +0 -1
  255. package/dist/cesium-map/entities/graphics/rectangle.graphics.js.map +0 -1
  256. package/dist/cesium-map/entities/index.d.ts.map +0 -1
  257. package/dist/cesium-map/entities/index.js.map +0 -1
  258. package/dist/cesium-map/index.d.ts.map +0 -1
  259. package/dist/cesium-map/index.js.map +0 -1
  260. package/dist/cesium-map/layers/3d.tileset.d.ts.map +0 -1
  261. package/dist/cesium-map/layers/3d.tileset.js.map +0 -1
  262. package/dist/cesium-map/layers/geojson.layer.d.ts.map +0 -1
  263. package/dist/cesium-map/layers/geojson.layer.js.map +0 -1
  264. package/dist/cesium-map/layers/imagery.layer.d.ts.map +0 -1
  265. package/dist/cesium-map/layers/imagery.layer.js.map +0 -1
  266. package/dist/cesium-map/layers/index.d.ts.map +0 -1
  267. package/dist/cesium-map/layers/index.js.map +0 -1
  268. package/dist/cesium-map/layers/osm.layer.d.ts.map +0 -1
  269. package/dist/cesium-map/layers/osm.layer.js.map +0 -1
  270. package/dist/cesium-map/layers/wms.layer.d.ts.map +0 -1
  271. package/dist/cesium-map/layers/wms.layer.js.map +0 -1
  272. package/dist/cesium-map/layers/wmts.layer.d.ts.map +0 -1
  273. package/dist/cesium-map/layers/wmts.layer.js.map +0 -1
  274. package/dist/cesium-map/layers/xyz.layer.d.ts.map +0 -1
  275. package/dist/cesium-map/layers/xyz.layer.js.map +0 -1
  276. package/dist/cesium-map/layers-manager.d.ts.map +0 -1
  277. package/dist/cesium-map/layers-manager.js.map +0 -1
  278. package/dist/cesium-map/map.d.ts.map +0 -1
  279. package/dist/cesium-map/map.js.map +0 -1
  280. package/dist/cesium-map/map.types.d.ts.map +0 -1
  281. package/dist/cesium-map/map.types.js.map +0 -1
  282. package/dist/cesium-map/proxied.types.d.ts.map +0 -1
  283. package/dist/cesium-map/proxied.types.js.map +0 -1
  284. package/dist/cesium-map/settings/base-maps.d.ts.map +0 -1
  285. package/dist/cesium-map/settings/base-maps.js.map +0 -1
  286. package/dist/cesium-map/settings/scene-modes.d.ts.map +0 -1
  287. package/dist/cesium-map/settings/scene-modes.js.map +0 -1
  288. package/dist/cesium-map/settings/settings.d.ts.map +0 -1
  289. package/dist/cesium-map/settings/settings.js.map +0 -1
  290. package/dist/cesium-map/tools/cesium/primitives-conversions.cesium.d.ts.map +0 -1
  291. package/dist/cesium-map/tools/cesium/primitives-conversions.cesium.js.map +0 -1
  292. package/dist/cesium-map/tools/coordinates-tracker.tool.d.ts.map +0 -1
  293. package/dist/cesium-map/tools/coordinates-tracker.tool.js.map +0 -1
  294. package/dist/cesium-map/tools/draw/drawHelper.d.ts.map +0 -1
  295. package/dist/cesium-map/tools/draw/drawHelper.js.map +0 -1
  296. package/dist/cesium-map/tools/geojson/geojson-to-primitive.d.ts.map +0 -1
  297. package/dist/cesium-map/tools/geojson/geojson-to-primitive.js.map +0 -1
  298. package/dist/cesium-map/tools/geojson/index.d.ts.map +0 -1
  299. package/dist/cesium-map/tools/geojson/index.js.map +0 -1
  300. package/dist/cesium-map/tools/geojson/point.geojson.d.ts.map +0 -1
  301. package/dist/cesium-map/tools/geojson/point.geojson.js.map +0 -1
  302. package/dist/cesium-map/tools/geojson/polygon.geojson.d.ts.map +0 -1
  303. package/dist/cesium-map/tools/geojson/polygon.geojson.js.map +0 -1
  304. package/dist/cesium-map/tools/geojson/rectangle.geojson.d.ts.map +0 -1
  305. package/dist/cesium-map/tools/geojson/rectangle.geojson.js.map +0 -1
  306. package/dist/cesium-map/tools/scale-tracker.tool.d.ts.map +0 -1
  307. package/dist/cesium-map/tools/scale-tracker.tool.js.map +0 -1
  308. package/dist/cssbaseline/cssbaseline.d.ts.map +0 -1
  309. package/dist/cssbaseline/cssbaseline.js.map +0 -1
  310. package/dist/cssbaseline/index.d.ts.map +0 -1
  311. package/dist/cssbaseline/index.js.map +0 -1
  312. package/dist/date-range-picker/date-range-picker.d.ts.map +0 -1
  313. package/dist/date-range-picker/date-range-picker.form-control.d.ts.map +0 -1
  314. package/dist/date-range-picker/date-range-picker.form-control.js.map +0 -1
  315. package/dist/date-range-picker/date-range-picker.js.map +0 -1
  316. package/dist/date-range-picker/index.d.ts.map +0 -1
  317. package/dist/date-range-picker/index.js.map +0 -1
  318. package/dist/index.d.ts.map +0 -1
  319. package/dist/index.js.map +0 -1
  320. package/dist/map-filter-container/container-map.d.ts.map +0 -1
  321. package/dist/map-filter-container/container-map.js.map +0 -1
  322. package/dist/map-filter-container/index.d.ts.map +0 -1
  323. package/dist/map-filter-container/index.js.map +0 -1
  324. package/dist/map-filter-container/map-filter-container.d.ts.map +0 -1
  325. package/dist/map-filter-container/map-filter-container.js.map +0 -1
  326. package/dist/map-filter-container/polygon-selection-ui.d.ts.map +0 -1
  327. package/dist/map-filter-container/polygon-selection-ui.js.map +0 -1
  328. package/dist/models/defaults.d.ts.map +0 -1
  329. package/dist/models/defaults.js.map +0 -1
  330. package/dist/models/enums.d.ts.map +0 -1
  331. package/dist/models/enums.js.map +0 -1
  332. package/dist/models/index.d.ts.map +0 -1
  333. package/dist/models/index.js.map +0 -1
  334. package/dist/ol-map/feature.d.ts.map +0 -1
  335. package/dist/ol-map/feature.js.map +0 -1
  336. package/dist/ol-map/index.d.ts.map +0 -1
  337. package/dist/ol-map/index.js.map +0 -1
  338. package/dist/ol-map/interactions/draw.d.ts.map +0 -1
  339. package/dist/ol-map/interactions/draw.js.map +0 -1
  340. package/dist/ol-map/interactions/index.d.ts.map +0 -1
  341. package/dist/ol-map/interactions/index.js.map +0 -1
  342. package/dist/ol-map/layers/index.d.ts.map +0 -1
  343. package/dist/ol-map/layers/index.js.map +0 -1
  344. package/dist/ol-map/layers/tile-layer.d.ts.map +0 -1
  345. package/dist/ol-map/layers/tile-layer.js.map +0 -1
  346. package/dist/ol-map/layers/vector-layer.d.ts.map +0 -1
  347. package/dist/ol-map/layers/vector-layer.js.map +0 -1
  348. package/dist/ol-map/layers/vector-tile-layer.d.ts.map +0 -1
  349. package/dist/ol-map/layers/vector-tile-layer.js.map +0 -1
  350. package/dist/ol-map/map.d.ts.map +0 -1
  351. package/dist/ol-map/map.js.map +0 -1
  352. package/dist/ol-map/source/index.d.ts.map +0 -1
  353. package/dist/ol-map/source/index.js.map +0 -1
  354. package/dist/ol-map/source/mvt.d.ts.map +0 -1
  355. package/dist/ol-map/source/mvt.js.map +0 -1
  356. package/dist/ol-map/source/osm.d.ts.map +0 -1
  357. package/dist/ol-map/source/osm.js.map +0 -1
  358. package/dist/ol-map/source/vector-source.d.ts.map +0 -1
  359. package/dist/ol-map/source/vector-source.js.map +0 -1
  360. package/dist/ol-map/source/wms.d.ts.map +0 -1
  361. package/dist/ol-map/source/wms.js.map +0 -1
  362. package/dist/ol-map/source/wmts.d.ts.map +0 -1
  363. package/dist/ol-map/source/wmts.js.map +0 -1
  364. package/dist/ol-map/source/xyz.d.ts.map +0 -1
  365. package/dist/ol-map/source/xyz.js.map +0 -1
  366. package/dist/ol-map/style.d.ts.map +0 -1
  367. package/dist/ol-map/style.js.map +0 -1
  368. package/dist/popover/index.d.ts.map +0 -1
  369. package/dist/popover/index.js.map +0 -1
  370. package/dist/popover/popover.d.ts.map +0 -1
  371. package/dist/popover/popover.js.map +0 -1
  372. package/dist/smart-table/__mock-data__/smartTableMocks.d.ts.map +0 -1
  373. package/dist/smart-table/__mock-data__/smartTableMocks.js.map +0 -1
  374. package/dist/smart-table/index.d.ts.map +0 -1
  375. package/dist/smart-table/index.js.map +0 -1
  376. package/dist/smart-table/smart-table-head.d.ts.map +0 -1
  377. package/dist/smart-table/smart-table-head.js.map +0 -1
  378. package/dist/smart-table/smart-table-row.d.ts.map +0 -1
  379. package/dist/smart-table/smart-table-row.js.map +0 -1
  380. package/dist/smart-table/smart-table-types.d.ts.map +0 -1
  381. package/dist/smart-table/smart-table-types.js.map +0 -1
  382. package/dist/smart-table/smart-table.d.ts.map +0 -1
  383. package/dist/smart-table/smart-table.js.map +0 -1
  384. package/dist/theme/index.d.ts.map +0 -1
  385. package/dist/theme/index.js.map +0 -1
  386. package/dist/theme/theme.d.ts.map +0 -1
  387. package/dist/theme/theme.js.map +0 -1
  388. package/dist/utils/map.d.ts.map +0 -1
  389. package/dist/utils/map.js.map +0 -1
  390. package/dist/utils/projections.d.ts.map +0 -1
  391. package/dist/utils/projections.js.map +0 -1
  392. package/dist/utils/story.d.ts.map +0 -1
  393. package/dist/utils/story.js.map +0 -1
@@ -0,0 +1,381 @@
1
+ /* eslint-disable @typescript-eslint/no-unsafe-member-access */
2
+ import React, {
3
+ useCallback,
4
+ useState,
5
+ useMemo,
6
+ useRef,
7
+ useEffect,
8
+ } from 'react';
9
+ import { Story } from '@storybook/react/types-6-0';
10
+ import {
11
+ FormControl,
12
+ FormControlLabel,
13
+ FormLabel,
14
+ Radio,
15
+ RadioGroup,
16
+ } from '@material-ui/core';
17
+ import { Box } from '../box';
18
+ import { SupportedLocales } from '../models';
19
+ import {
20
+ FileActionData,
21
+ FilePicker,
22
+ FileArray,
23
+ FileData,
24
+ FileHelper,
25
+ FilePickerActions,
26
+ } from './file-picker';
27
+ import FsMap from './fs-map.json';
28
+
29
+ export default {
30
+ title: 'File Picker',
31
+ component: FilePicker,
32
+ };
33
+
34
+ interface CustomFileData extends FileData {
35
+ parentId?: string;
36
+ childrenIds?: string[];
37
+ }
38
+ interface CustomFileMap {
39
+ [fileId: string]: CustomFileData;
40
+ }
41
+
42
+ const prepareCustomFileMap = (): Record<string, unknown> => {
43
+ const baseFileMap = (FsMap.fileMap as unknown) as CustomFileMap;
44
+ const rootFolderId = FsMap.rootFolderId;
45
+ return { baseFileMap, rootFolderId };
46
+ };
47
+
48
+ // Sets up files map and actions
49
+ // eslint-disable-next-line
50
+ const useCustomFileMap = () => {
51
+ const { baseFileMap, rootFolderId } = useMemo(prepareCustomFileMap, []);
52
+
53
+ const [fileMap, setFileMap] = useState<CustomFileMap>(
54
+ baseFileMap as CustomFileMap
55
+ );
56
+ const [currentFolderId, setCurrentFolderId] = useState(rootFolderId);
57
+
58
+ const resetFileMap = useCallback(() => {
59
+ setFileMap(baseFileMap as CustomFileMap);
60
+ setCurrentFolderId(rootFolderId);
61
+ }, [baseFileMap, rootFolderId]);
62
+
63
+ const currentFolderIdRef = useRef(currentFolderId);
64
+
65
+ useEffect(() => {
66
+ currentFolderIdRef.current = currentFolderId;
67
+ }, [currentFolderId]);
68
+
69
+ const deleteFiles = useCallback((files: CustomFileData[]) => {
70
+ setFileMap((currentFileMap) => {
71
+ const newFileMap = { ...currentFileMap };
72
+
73
+ files.forEach((file) => {
74
+ delete newFileMap[file.id];
75
+
76
+ if (file.parentId) {
77
+ const parent = newFileMap[file.parentId];
78
+ const newChildrenIds = parent.childrenIds?.filter(
79
+ (id) => id !== file.id
80
+ );
81
+ newFileMap[file.parentId] = {
82
+ ...parent,
83
+ childrenIds: newChildrenIds,
84
+ childrenCount: newChildrenIds?.length,
85
+ };
86
+ }
87
+ });
88
+
89
+ return newFileMap;
90
+ });
91
+ }, []);
92
+
93
+ const moveFiles = useCallback(
94
+ (
95
+ files: CustomFileData[],
96
+ source: CustomFileData,
97
+ destination: CustomFileData
98
+ ) => {
99
+ setFileMap((currentFileMap) => {
100
+ const newFileMap = { ...currentFileMap };
101
+ const moveFileIds = new Set(files.map((f) => f.id));
102
+
103
+ // Delete files from their source folder.
104
+ const newSourceChildrenIds = source.childrenIds?.filter(
105
+ (id) => !moveFileIds.has(id)
106
+ );
107
+ newFileMap[source.id] = {
108
+ ...source,
109
+ childrenIds: newSourceChildrenIds,
110
+ childrenCount: newSourceChildrenIds?.length,
111
+ };
112
+
113
+ // Add the files to their destination folder.
114
+ const newDestinationChildrenIds = [
115
+ ...(destination.childrenIds as string[]),
116
+ ...files.map((f) => f.id),
117
+ ];
118
+ newFileMap[destination.id] = {
119
+ ...destination,
120
+ childrenIds: newDestinationChildrenIds,
121
+ childrenCount: newDestinationChildrenIds.length,
122
+ };
123
+
124
+ // Finally, update the parent folder ID on the files - from source folder
125
+ // ID to the destination folder ID.
126
+ files.forEach((file) => {
127
+ newFileMap[file.id] = {
128
+ ...file,
129
+ parentId: destination.id,
130
+ };
131
+ });
132
+
133
+ return newFileMap;
134
+ });
135
+ },
136
+ []
137
+ );
138
+
139
+ // TODO: in production we should use UUIDs or MD5 hashes for file paths
140
+ const idCounter = useRef(0);
141
+ const createFolder = useCallback((folderName: string) => {
142
+ setFileMap((currentFileMap) => {
143
+ const newFileMap = { ...currentFileMap };
144
+
145
+ const parentId = currentFolderIdRef.current as string;
146
+ // Create the new folder.
147
+ const newFolderId = `new-folder-${idCounter.current++}`;
148
+ newFileMap[newFolderId] = {
149
+ id: newFolderId,
150
+ name: folderName,
151
+ isDir: true,
152
+ modDate: new Date(),
153
+ parentId: parentId,
154
+ childrenIds: [],
155
+ childrenCount: 0,
156
+ };
157
+
158
+ // Update parent folder to reference the new folder.
159
+ const parent = newFileMap[parentId];
160
+ newFileMap[parentId] = {
161
+ ...parent,
162
+ childrenIds: [...(parent.childrenIds as string[]), newFolderId],
163
+ };
164
+
165
+ return newFileMap;
166
+ });
167
+ }, []);
168
+
169
+ return {
170
+ fileMap,
171
+ currentFolderId,
172
+ setCurrentFolderId,
173
+ resetFileMap,
174
+ deleteFiles,
175
+ moveFiles,
176
+ createFolder,
177
+ };
178
+ };
179
+
180
+ const useFiles = (
181
+ fileMap: CustomFileMap,
182
+ currentFolderId: string
183
+ ): FileArray => {
184
+ return useMemo(() => {
185
+ const currentFolder = fileMap[currentFolderId];
186
+ const files = currentFolder.childrenIds
187
+ ? currentFolder.childrenIds.map((fileId: string) => fileMap[fileId])
188
+ : [];
189
+ return files;
190
+ }, [currentFolderId, fileMap]);
191
+ };
192
+
193
+ const useFolderChain = (
194
+ fileMap: CustomFileMap,
195
+ currentFolderId: string
196
+ ): FileArray => {
197
+ return useMemo(() => {
198
+ const currentFolder = fileMap[currentFolderId];
199
+ const folderChain = [currentFolder];
200
+ let parentId = currentFolder.parentId;
201
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
202
+ while (parentId) {
203
+ const parentFile = fileMap[parentId];
204
+ // eslint-disable-next-line
205
+ if (parentFile) {
206
+ folderChain.unshift(parentFile);
207
+ parentId = parentFile.parentId;
208
+ } else {
209
+ break;
210
+ }
211
+ }
212
+ return folderChain;
213
+ }, [currentFolderId, fileMap]);
214
+ };
215
+
216
+ const useFileActionHandler = (
217
+ setCurrentFolderId: (folderId: string) => void,
218
+ deleteFiles: (files: CustomFileData[]) => void,
219
+ moveFiles: (
220
+ files: FileData[],
221
+ source: FileData,
222
+ destination: FileData
223
+ ) => void,
224
+ createFolder: (folderName: string) => void
225
+ ): ((data: FileActionData) => void) => {
226
+ return useCallback(
227
+ (data: FileActionData) => {
228
+ if (data.id === FilePickerActions.OpenFiles.id) {
229
+ const { targetFile, files } = data.payload;
230
+ const fileToOpen = targetFile ?? files[0];
231
+ // eslint-disable-next-line
232
+ if (fileToOpen && FileHelper.isDirectory(fileToOpen)) {
233
+ setCurrentFolderId(fileToOpen.id);
234
+ return;
235
+ }
236
+ } else if (data.id === FilePickerActions.DeleteFiles.id) {
237
+ deleteFiles(data.state.selectedFilesForAction);
238
+ } else if (data.id === FilePickerActions.MoveFiles.id) {
239
+ moveFiles(
240
+ data.payload.files,
241
+ data.payload.source as FileData,
242
+ data.payload.destination
243
+ );
244
+ } else if (data.id === FilePickerActions.CreateFolder.id) {
245
+ const folderName = prompt('Provide the name for your new folder:');
246
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
247
+ if (folderName) createFolder(folderName);
248
+ }
249
+ },
250
+ [createFolder, deleteFiles, moveFiles, setCurrentFolderId]
251
+ );
252
+ };
253
+
254
+ export const ReadOnlyMode: Story = () => {
255
+ const {
256
+ fileMap,
257
+ currentFolderId,
258
+ setCurrentFolderId,
259
+ // resetFileMap,
260
+ deleteFiles,
261
+ moveFiles,
262
+ createFolder,
263
+ } = useCustomFileMap();
264
+ const files = useFiles(fileMap, currentFolderId as string);
265
+ const folderChain = useFolderChain(fileMap, currentFolderId as string);
266
+ const handleFileAction = useFileActionHandler(
267
+ setCurrentFolderId,
268
+ deleteFiles,
269
+ moveFiles,
270
+ createFolder
271
+ );
272
+ return (
273
+ <Box style={{ height: '600px' }}>
274
+ <FilePicker
275
+ files={files}
276
+ folderChain={folderChain}
277
+ onFileAction={handleFileAction}
278
+ readOnlyMode={true}
279
+ />
280
+ </Box>
281
+ );
282
+ };
283
+
284
+ export const DarkTheme: Story = () => {
285
+ const {
286
+ fileMap,
287
+ currentFolderId,
288
+ setCurrentFolderId,
289
+ // resetFileMap,
290
+ deleteFiles,
291
+ moveFiles,
292
+ createFolder,
293
+ } = useCustomFileMap();
294
+ const files = useFiles(fileMap, currentFolderId as string);
295
+ const folderChain = useFolderChain(fileMap, currentFolderId as string);
296
+ const handleFileAction = useFileActionHandler(
297
+ setCurrentFolderId,
298
+ deleteFiles,
299
+ moveFiles,
300
+ createFolder
301
+ );
302
+ return (
303
+ <Box style={{ height: '600px' }}>
304
+ <FilePicker
305
+ files={files}
306
+ folderChain={folderChain}
307
+ onFileAction={handleFileAction}
308
+ theme={{
309
+ primary: 'blue',
310
+ background: 'black',
311
+ surface: 'gray',
312
+ textOnBackground: 'white',
313
+ selectionBackground: '#455570',
314
+ }}
315
+ />
316
+ </Box>
317
+ );
318
+ };
319
+
320
+ export const Localized: Story = () => {
321
+ const {
322
+ fileMap,
323
+ currentFolderId,
324
+ setCurrentFolderId,
325
+ // resetFileMap,
326
+ deleteFiles,
327
+ moveFiles,
328
+ createFolder,
329
+ } = useCustomFileMap();
330
+ const files = useFiles(fileMap, currentFolderId as string);
331
+ const folderChain = useFolderChain(fileMap, currentFolderId as string);
332
+ const handleFileAction = useFileActionHandler(
333
+ setCurrentFolderId,
334
+ deleteFiles,
335
+ moveFiles,
336
+ createFolder
337
+ );
338
+ const [locale, setLocale] = useState<SupportedLocales>(SupportedLocales.HE);
339
+ const handleLocaleChange = useCallback(
340
+ (event) => setLocale(event.target.value),
341
+ []
342
+ );
343
+ return (
344
+ <>
345
+ <FormControl component="fieldset" style={{ marginBottom: 15 }}>
346
+ <FormLabel component="legend">Pick a language:</FormLabel>
347
+ <RadioGroup
348
+ aria-label="locale"
349
+ name="locale"
350
+ value={locale}
351
+ onChange={handleLocaleChange}
352
+ >
353
+ <FormControlLabel
354
+ value={SupportedLocales.HE}
355
+ control={<Radio />}
356
+ label="עברית"
357
+ />
358
+ <FormControlLabel
359
+ value={SupportedLocales.RU}
360
+ control={<Radio />}
361
+ label="Русский"
362
+ />
363
+ <FormControlLabel
364
+ value={SupportedLocales.EN}
365
+ control={<Radio />}
366
+ label="English"
367
+ />
368
+ </RadioGroup>
369
+ </FormControl>
370
+ <br />
371
+ <Box style={{ height: '600px' }}>
372
+ <FilePicker
373
+ files={files}
374
+ folderChain={folderChain}
375
+ onFileAction={handleFileAction}
376
+ locale={locale}
377
+ />
378
+ </Box>
379
+ </>
380
+ );
381
+ };
@@ -0,0 +1,163 @@
1
+ import React, { useCallback, useEffect, useMemo, useState } from 'react';
2
+ import {
3
+ ChonkyActions,
4
+ ChonkyFileActionData,
5
+ FileAction,
6
+ FileArray as ChonkyFileArray,
7
+ FileBrowserProps,
8
+ FileData as ChonkyFileData,
9
+ FileHelper as ChonkyFileHelper,
10
+ FullFileBrowser,
11
+ I18nConfig,
12
+ setChonkyDefaults,
13
+ } from 'chonky';
14
+ import { ChonkyIconFA } from 'chonky-icon-fontawesome';
15
+ import { makeStyles } from '@material-ui/core/styles';
16
+ import { Box } from '../box';
17
+ import { SupportedLocales } from '../models';
18
+ import localization from './localization';
19
+
20
+ import './file-picker.css';
21
+
22
+ export type FileActionData = ChonkyFileActionData;
23
+
24
+ export type FileArray = ChonkyFileArray;
25
+
26
+ export type FileData = ChonkyFileData;
27
+
28
+ export class FileHelper extends ChonkyFileHelper {}
29
+
30
+ // eslint-disable-next-line @typescript-eslint/naming-convention
31
+ export const FilePickerActions = ChonkyActions;
32
+
33
+ export type FilePickerView = typeof FilePickerView[keyof typeof FilePickerView];
34
+ // eslint-disable-next-line @typescript-eslint/naming-convention
35
+ export const FilePickerView = {
36
+ listView: ChonkyActions.EnableListView.id,
37
+ gridView: ChonkyActions.EnableGridView.id,
38
+ } as const;
39
+
40
+ export interface FilePickerTheme {
41
+ primary: string;
42
+ background: string;
43
+ surface: string;
44
+ textOnBackground: string;
45
+ selectionBackground: string;
46
+ }
47
+
48
+ // IMPLEMENTATION NOTES: Currently FilePicker component works with his own icon set.
49
+ // In future might be tweaked.
50
+ setChonkyDefaults({ iconComponent: ChonkyIconFA });
51
+ interface FilePickerProps extends Partial<FileBrowserProps> {
52
+ theme?: FilePickerTheme;
53
+ styles?: Record<string, string>;
54
+ defaultView?: FilePickerView;
55
+ readOnlyMode?: boolean;
56
+ locale?: SupportedLocales;
57
+ }
58
+
59
+ export const FilePicker: React.FC<FilePickerProps> = React.memo(
60
+ ({
61
+ theme,
62
+ styles = { height: '100%', minWidth: '600px' },
63
+ defaultView = FilePickerView.listView,
64
+ readOnlyMode = false,
65
+ locale,
66
+ files,
67
+ folderChain,
68
+ onFileAction,
69
+ ...props
70
+ }) => {
71
+ // IMPLEMENTATION NOTES: Currently FilePicker component discards the ability to show file thumbnail.
72
+ // In future might be tweaked.
73
+ const thumbnailGenerator = useCallback(
74
+ (file: FileData) => null,
75
+ // file.thumbnailUrl ? `https://chonky.io${file.thumbnailUrl}` : null,
76
+ []
77
+ );
78
+
79
+ makeStyles({
80
+ '@global': {
81
+ '.chonky-dropdownList': {
82
+ backgroundColor: `${theme?.surface as string} !important`,
83
+ },
84
+ 'li[class*="chonky-activeButton"]': {
85
+ color: `${theme?.primary as string} !important`,
86
+ },
87
+ },
88
+ })();
89
+
90
+ const toDashCase = (str: string): string => {
91
+ return str.replace(/([A-Z])/g, ($1) => '-' + $1.toLowerCase());
92
+ };
93
+
94
+ const themeObject = useMemo((): Record<string, string> => {
95
+ if (theme !== undefined) {
96
+ const processedColors = Object.keys(theme).reduce(
97
+ (acc: Record<string, string>, key) => {
98
+ const val = ((theme as unknown) as Record<string, string>)[key];
99
+ key = key.startsWith('--') ? key : `--fp-theme-${toDashCase(key)}`;
100
+ acc[key] = val;
101
+ return acc;
102
+ },
103
+ {}
104
+ );
105
+ return processedColors;
106
+ }
107
+ return {};
108
+ }, [theme]);
109
+
110
+ const [darkMode, setDarkMode] = useState<boolean>(false);
111
+ const [defaultFileViewActionId, setDefaultFileViewActionId] = useState<
112
+ FilePickerView
113
+ >();
114
+ const [disableDragAndDrop, setDisableDragAndDrop] = useState<boolean>(
115
+ false
116
+ );
117
+ const [fileActions, setFileActions] = useState<FileAction[]>();
118
+ const [i18n, setI18n] = useState<I18nConfig>();
119
+ useEffect(() => {
120
+ if (theme) {
121
+ setDarkMode(true);
122
+ }
123
+
124
+ setDefaultFileViewActionId(defaultView);
125
+
126
+ if (readOnlyMode) {
127
+ setDisableDragAndDrop(true);
128
+ } else {
129
+ setFileActions([ChonkyActions.CreateFolder, ChonkyActions.DeleteFiles]);
130
+ }
131
+
132
+ if (locale !== undefined) {
133
+ setI18n(localization[locale]);
134
+ }
135
+ }, [theme, defaultView, readOnlyMode, locale]);
136
+
137
+ return (
138
+ <Box
139
+ style={{
140
+ ...styles,
141
+ ...themeObject,
142
+ }}
143
+ >
144
+ <FullFileBrowser
145
+ files={files ?? []}
146
+ folderChain={folderChain}
147
+ onFileAction={(data: ChonkyFileActionData): void => {
148
+ if (typeof onFileAction === 'function') {
149
+ void onFileAction(data);
150
+ }
151
+ }}
152
+ thumbnailGenerator={thumbnailGenerator}
153
+ defaultFileViewActionId={defaultFileViewActionId}
154
+ disableDragAndDrop={disableDragAndDrop}
155
+ fileActions={fileActions}
156
+ darkMode={darkMode}
157
+ i18n={i18n}
158
+ {...props}
159
+ />
160
+ </Box>
161
+ );
162
+ }
163
+ );