@map-colonies/react-components 3.8.0 → 3.10.1

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 (389) 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.d.ts +0 -1
  97. package/dist/date-picker/date-picker.js +24 -11
  98. package/dist/date-picker/index.d.ts +0 -1
  99. package/dist/date-picker/index.js +11 -5
  100. package/dist/date-range-picker/date-range-picker.d.ts +0 -1
  101. package/dist/date-range-picker/date-range-picker.form-control.d.ts +0 -1
  102. package/dist/date-range-picker/date-range-picker.form-control.js +31 -18
  103. package/dist/date-range-picker/date-range-picker.js +26 -13
  104. package/dist/date-range-picker/index.d.ts +0 -1
  105. package/dist/date-range-picker/index.js +12 -6
  106. package/dist/file-picker/file-picker.css +56 -0
  107. package/dist/file-picker/file-picker.d.ts +275 -0
  108. package/dist/file-picker/file-picker.js +151 -0
  109. package/dist/file-picker/fs-map.json +1557 -0
  110. package/dist/file-picker/index.d.ts +1 -0
  111. package/dist/file-picker/index.js +13 -0
  112. package/dist/file-picker/localization.d.ts +6 -0
  113. package/dist/file-picker/localization.js +119 -0
  114. package/dist/index.d.ts +1 -1
  115. package/dist/index.js +23 -16
  116. package/dist/map-filter-container/container-map.d.ts +0 -1
  117. package/dist/map-filter-container/container-map.js +3 -2
  118. package/dist/map-filter-container/index.d.ts +0 -1
  119. package/dist/map-filter-container/index.js +11 -5
  120. package/dist/map-filter-container/map-filter-container.d.ts +0 -1
  121. package/dist/map-filter-container/map-filter-container.js +17 -4
  122. package/dist/map-filter-container/polygon-selection-ui.d.ts +0 -1
  123. package/dist/map-filter-container/polygon-selection-ui.js +3 -2
  124. package/dist/models/defaults.d.ts +0 -1
  125. package/dist/models/defaults.js +0 -1
  126. package/dist/models/enums.d.ts +2 -2
  127. package/dist/models/enums.js +2 -1
  128. package/dist/models/index.d.ts +0 -1
  129. package/dist/models/index.js +11 -5
  130. package/dist/ol-map/feature.d.ts +0 -1
  131. package/dist/ol-map/feature.js +3 -2
  132. package/dist/ol-map/index.d.ts +0 -1
  133. package/dist/ol-map/index.js +16 -10
  134. package/dist/ol-map/interactions/draw.d.ts +0 -1
  135. package/dist/ol-map/interactions/draw.js +4 -4
  136. package/dist/ol-map/interactions/index.d.ts +0 -1
  137. package/dist/ol-map/interactions/index.js +11 -5
  138. package/dist/ol-map/layers/index.d.ts +0 -1
  139. package/dist/ol-map/layers/index.js +13 -7
  140. package/dist/ol-map/layers/tile-layer.d.ts +0 -1
  141. package/dist/ol-map/layers/tile-layer.js +19 -5
  142. package/dist/ol-map/layers/vector-layer.d.ts +0 -1
  143. package/dist/ol-map/layers/vector-layer.js +19 -5
  144. package/dist/ol-map/layers/vector-tile-layer.d.ts +0 -1
  145. package/dist/ol-map/layers/vector-tile-layer.js +19 -5
  146. package/dist/ol-map/map.d.ts +0 -1
  147. package/dist/ol-map/map.js +24 -10
  148. package/dist/ol-map/source/index.d.ts +0 -1
  149. package/dist/ol-map/source/index.js +16 -10
  150. package/dist/ol-map/source/mvt.d.ts +0 -1
  151. package/dist/ol-map/source/mvt.js +7 -4
  152. package/dist/ol-map/source/osm.d.ts +0 -1
  153. package/dist/ol-map/source/osm.js +3 -2
  154. package/dist/ol-map/source/vector-source.d.ts +1 -2
  155. package/dist/ol-map/source/vector-source.js +19 -5
  156. package/dist/ol-map/source/wms.d.ts +0 -1
  157. package/dist/ol-map/source/wms.js +5 -3
  158. package/dist/ol-map/source/wmts.d.ts +0 -1
  159. package/dist/ol-map/source/wmts.js +5 -3
  160. package/dist/ol-map/source/xyz.d.ts +0 -1
  161. package/dist/ol-map/source/xyz.js +5 -3
  162. package/dist/ol-map/style.d.ts +0 -1
  163. package/dist/ol-map/style.js +1 -1
  164. package/dist/popover/index.d.ts +0 -1
  165. package/dist/popover/index.js +2 -2
  166. package/dist/popover/popover.d.ts +0 -1
  167. package/dist/popover/popover.js +3 -2
  168. package/dist/smart-table/__mock-data__/smartTableMocks.d.ts +0 -1
  169. package/dist/smart-table/__mock-data__/smartTableMocks.js +1 -1
  170. package/dist/smart-table/index.d.ts +0 -1
  171. package/dist/smart-table/index.js +12 -6
  172. package/dist/smart-table/smart-table-head.d.ts +0 -1
  173. package/dist/smart-table/smart-table-head.js +1 -1
  174. package/dist/smart-table/smart-table-row.d.ts +0 -2
  175. package/dist/smart-table/smart-table-row.js +18 -8
  176. package/dist/smart-table/smart-table-types.d.ts +0 -2
  177. package/dist/smart-table/smart-table-types.js +0 -1
  178. package/dist/smart-table/smart-table.d.ts +0 -1
  179. package/dist/smart-table/smart-table.js +15 -3
  180. package/dist/theme/index.d.ts +0 -1
  181. package/dist/theme/index.js +11 -5
  182. package/dist/theme/theme.d.ts +0 -1
  183. package/dist/theme/theme.js +1 -1
  184. package/dist/utils/map.d.ts +0 -1
  185. package/dist/utils/map.js +7 -4
  186. package/dist/utils/projections.d.ts +0 -1
  187. package/dist/utils/projections.js +1 -1
  188. package/dist/utils/story.d.ts +0 -1
  189. package/dist/utils/story.js +0 -1
  190. package/package.json +8 -4
  191. package/public/assets/img/map-marker.gif +0 -0
  192. package/src/lib/cesium-map/context-menu.stories.tsx +1 -2
  193. package/src/lib/cesium-map/layers/3d.tileset.stories.tsx +1 -2
  194. package/src/lib/cesium-map/layers/3d.tileset.update.ts +72 -0
  195. package/src/lib/cesium-map/layers/layers.rect.stories.tsx +171 -0
  196. package/src/lib/cesium-map/layers-manager.stories.tsx +2 -3
  197. package/src/lib/cesium-map/layers-manager.ts +3 -1
  198. package/src/lib/cesium-map/map.stories.tsx +3 -3
  199. package/src/lib/cesium-map/map.tsx +22 -11
  200. package/src/lib/cesium-map/terrain-providers/custom/dummy-quantized-mesh-tile.ts +243 -0
  201. package/src/lib/cesium-map/terrain-providers/custom/quantized-mesh-decoder.ts +321 -0
  202. package/src/lib/cesium-map/terrain-providers/custom/quantized-mesh-terrain-provider.ts +237 -0
  203. package/src/lib/cesium-map/terrain-providers/terrain-provider-heights-tool.stories.tsx +155 -0
  204. package/src/lib/cesium-map/terrain-providers/terrain-provider.stories.tsx +185 -0
  205. package/src/lib/cesium-map/tools/inspector.tool.tsx +15 -0
  206. package/src/lib/cesium-map/tools/terranian-height.tool.tsx +167 -0
  207. package/src/lib/date-range-picker/{stories/DateRangePicker.stories.tsx → date-range-picker.stories.tsx} +5 -5
  208. package/src/lib/file-picker/file-picker.css +56 -0
  209. package/src/lib/file-picker/file-picker.stories.tsx +444 -0
  210. package/src/lib/file-picker/file-picker.tsx +177 -0
  211. package/src/lib/file-picker/fs-map.json +1557 -0
  212. package/src/lib/file-picker/index.ts +1 -0
  213. package/src/lib/file-picker/localization.ts +137 -0
  214. package/src/lib/index.ts +1 -0
  215. package/src/lib/models/enums.ts +1 -0
  216. package/src/types/quantized-mesh-decoder.d.ts +1 -0
  217. package/storybook-static/mock/{tileset → tileset_1}/ll.b3dm +0 -0
  218. package/storybook-static/mock/{tileset → tileset_1}/lr.b3dm +0 -0
  219. package/storybook-static/mock/{tileset → tileset_1}/parent.b3dm +0 -0
  220. package/storybook-static/mock/{tileset → tileset_1}/tileset.json +0 -0
  221. package/storybook-static/mock/{tileset → tileset_1}/ul.b3dm +0 -0
  222. package/storybook-static/mock/{tileset → tileset_1}/ur.b3dm +0 -0
  223. package/tsbuildconfig.json +2 -2
  224. package/dist/autocomplete/autocomplete.d.ts.map +0 -1
  225. package/dist/autocomplete/autocomplete.js.map +0 -1
  226. package/dist/autocomplete/index.d.ts.map +0 -1
  227. package/dist/autocomplete/index.js.map +0 -1
  228. package/dist/box/box.d.ts.map +0 -1
  229. package/dist/box/box.js.map +0 -1
  230. package/dist/box/index.d.ts.map +0 -1
  231. package/dist/box/index.js.map +0 -1
  232. package/dist/cesium-map/data-sources/custom.data-source.d.ts.map +0 -1
  233. package/dist/cesium-map/data-sources/custom.data-source.js.map +0 -1
  234. package/dist/cesium-map/data-sources/drawings.data-source.d.ts.map +0 -1
  235. package/dist/cesium-map/data-sources/drawings.data-source.js.map +0 -1
  236. package/dist/cesium-map/data-sources/index.d.ts.map +0 -1
  237. package/dist/cesium-map/data-sources/index.js.map +0 -1
  238. package/dist/cesium-map/entities/entity.d.ts.map +0 -1
  239. package/dist/cesium-map/entities/entity.description.d.ts.map +0 -1
  240. package/dist/cesium-map/entities/entity.description.js.map +0 -1
  241. package/dist/cesium-map/entities/entity.js.map +0 -1
  242. package/dist/cesium-map/entities/graphics/polygon.graphics.d.ts.map +0 -1
  243. package/dist/cesium-map/entities/graphics/polygon.graphics.js.map +0 -1
  244. package/dist/cesium-map/entities/graphics/polyline.graphics.d.ts.map +0 -1
  245. package/dist/cesium-map/entities/graphics/polyline.graphics.js.map +0 -1
  246. package/dist/cesium-map/entities/graphics/rectangle.graphics.d.ts.map +0 -1
  247. package/dist/cesium-map/entities/graphics/rectangle.graphics.js.map +0 -1
  248. package/dist/cesium-map/entities/index.d.ts.map +0 -1
  249. package/dist/cesium-map/entities/index.js.map +0 -1
  250. package/dist/cesium-map/index.d.ts.map +0 -1
  251. package/dist/cesium-map/index.js.map +0 -1
  252. package/dist/cesium-map/layers/3d.tileset.d.ts.map +0 -1
  253. package/dist/cesium-map/layers/3d.tileset.js.map +0 -1
  254. package/dist/cesium-map/layers/geojson.layer.d.ts.map +0 -1
  255. package/dist/cesium-map/layers/geojson.layer.js.map +0 -1
  256. package/dist/cesium-map/layers/imagery.layer.d.ts.map +0 -1
  257. package/dist/cesium-map/layers/imagery.layer.js.map +0 -1
  258. package/dist/cesium-map/layers/index.d.ts.map +0 -1
  259. package/dist/cesium-map/layers/index.js.map +0 -1
  260. package/dist/cesium-map/layers/osm.layer.d.ts.map +0 -1
  261. package/dist/cesium-map/layers/osm.layer.js.map +0 -1
  262. package/dist/cesium-map/layers/wms.layer.d.ts.map +0 -1
  263. package/dist/cesium-map/layers/wms.layer.js.map +0 -1
  264. package/dist/cesium-map/layers/wmts.layer.d.ts.map +0 -1
  265. package/dist/cesium-map/layers/wmts.layer.js.map +0 -1
  266. package/dist/cesium-map/layers/xyz.layer.d.ts.map +0 -1
  267. package/dist/cesium-map/layers/xyz.layer.js.map +0 -1
  268. package/dist/cesium-map/layers-manager.d.ts.map +0 -1
  269. package/dist/cesium-map/layers-manager.js.map +0 -1
  270. package/dist/cesium-map/map.d.ts.map +0 -1
  271. package/dist/cesium-map/map.js.map +0 -1
  272. package/dist/cesium-map/map.types.d.ts.map +0 -1
  273. package/dist/cesium-map/map.types.js.map +0 -1
  274. package/dist/cesium-map/proxied.types.d.ts.map +0 -1
  275. package/dist/cesium-map/proxied.types.js.map +0 -1
  276. package/dist/cesium-map/settings/base-maps.d.ts.map +0 -1
  277. package/dist/cesium-map/settings/base-maps.js.map +0 -1
  278. package/dist/cesium-map/settings/scene-modes.d.ts.map +0 -1
  279. package/dist/cesium-map/settings/scene-modes.js.map +0 -1
  280. package/dist/cesium-map/settings/settings.d.ts.map +0 -1
  281. package/dist/cesium-map/settings/settings.js.map +0 -1
  282. package/dist/cesium-map/tools/cesium/primitives-conversions.cesium.d.ts.map +0 -1
  283. package/dist/cesium-map/tools/cesium/primitives-conversions.cesium.js.map +0 -1
  284. package/dist/cesium-map/tools/coordinates-tracker.tool.d.ts.map +0 -1
  285. package/dist/cesium-map/tools/coordinates-tracker.tool.js.map +0 -1
  286. package/dist/cesium-map/tools/draw/drawHelper.d.ts.map +0 -1
  287. package/dist/cesium-map/tools/draw/drawHelper.js.map +0 -1
  288. package/dist/cesium-map/tools/geojson/geojson-to-primitive.d.ts.map +0 -1
  289. package/dist/cesium-map/tools/geojson/geojson-to-primitive.js.map +0 -1
  290. package/dist/cesium-map/tools/geojson/index.d.ts.map +0 -1
  291. package/dist/cesium-map/tools/geojson/index.js.map +0 -1
  292. package/dist/cesium-map/tools/geojson/point.geojson.d.ts.map +0 -1
  293. package/dist/cesium-map/tools/geojson/point.geojson.js.map +0 -1
  294. package/dist/cesium-map/tools/geojson/polygon.geojson.d.ts.map +0 -1
  295. package/dist/cesium-map/tools/geojson/polygon.geojson.js.map +0 -1
  296. package/dist/cesium-map/tools/geojson/rectangle.geojson.d.ts.map +0 -1
  297. package/dist/cesium-map/tools/geojson/rectangle.geojson.js.map +0 -1
  298. package/dist/cesium-map/tools/scale-tracker.tool.d.ts.map +0 -1
  299. package/dist/cesium-map/tools/scale-tracker.tool.js.map +0 -1
  300. package/dist/cssbaseline/cssbaseline.d.ts.map +0 -1
  301. package/dist/cssbaseline/cssbaseline.js.map +0 -1
  302. package/dist/cssbaseline/index.d.ts.map +0 -1
  303. package/dist/cssbaseline/index.js.map +0 -1
  304. package/dist/date-picker/date-picker.d.ts.map +0 -1
  305. package/dist/date-picker/date-picker.js.map +0 -1
  306. package/dist/date-picker/index.d.ts.map +0 -1
  307. package/dist/date-picker/index.js.map +0 -1
  308. package/dist/date-range-picker/date-range-picker.d.ts.map +0 -1
  309. package/dist/date-range-picker/date-range-picker.form-control.d.ts.map +0 -1
  310. package/dist/date-range-picker/date-range-picker.form-control.js.map +0 -1
  311. package/dist/date-range-picker/date-range-picker.js.map +0 -1
  312. package/dist/date-range-picker/index.d.ts.map +0 -1
  313. package/dist/date-range-picker/index.js.map +0 -1
  314. package/dist/index.d.ts.map +0 -1
  315. package/dist/index.js.map +0 -1
  316. package/dist/map-filter-container/container-map.d.ts.map +0 -1
  317. package/dist/map-filter-container/container-map.js.map +0 -1
  318. package/dist/map-filter-container/index.d.ts.map +0 -1
  319. package/dist/map-filter-container/index.js.map +0 -1
  320. package/dist/map-filter-container/map-filter-container.d.ts.map +0 -1
  321. package/dist/map-filter-container/map-filter-container.js.map +0 -1
  322. package/dist/map-filter-container/polygon-selection-ui.d.ts.map +0 -1
  323. package/dist/map-filter-container/polygon-selection-ui.js.map +0 -1
  324. package/dist/models/defaults.d.ts.map +0 -1
  325. package/dist/models/defaults.js.map +0 -1
  326. package/dist/models/enums.d.ts.map +0 -1
  327. package/dist/models/enums.js.map +0 -1
  328. package/dist/models/index.d.ts.map +0 -1
  329. package/dist/models/index.js.map +0 -1
  330. package/dist/ol-map/feature.d.ts.map +0 -1
  331. package/dist/ol-map/feature.js.map +0 -1
  332. package/dist/ol-map/index.d.ts.map +0 -1
  333. package/dist/ol-map/index.js.map +0 -1
  334. package/dist/ol-map/interactions/draw.d.ts.map +0 -1
  335. package/dist/ol-map/interactions/draw.js.map +0 -1
  336. package/dist/ol-map/interactions/index.d.ts.map +0 -1
  337. package/dist/ol-map/interactions/index.js.map +0 -1
  338. package/dist/ol-map/layers/index.d.ts.map +0 -1
  339. package/dist/ol-map/layers/index.js.map +0 -1
  340. package/dist/ol-map/layers/tile-layer.d.ts.map +0 -1
  341. package/dist/ol-map/layers/tile-layer.js.map +0 -1
  342. package/dist/ol-map/layers/vector-layer.d.ts.map +0 -1
  343. package/dist/ol-map/layers/vector-layer.js.map +0 -1
  344. package/dist/ol-map/layers/vector-tile-layer.d.ts.map +0 -1
  345. package/dist/ol-map/layers/vector-tile-layer.js.map +0 -1
  346. package/dist/ol-map/map.d.ts.map +0 -1
  347. package/dist/ol-map/map.js.map +0 -1
  348. package/dist/ol-map/source/index.d.ts.map +0 -1
  349. package/dist/ol-map/source/index.js.map +0 -1
  350. package/dist/ol-map/source/mvt.d.ts.map +0 -1
  351. package/dist/ol-map/source/mvt.js.map +0 -1
  352. package/dist/ol-map/source/osm.d.ts.map +0 -1
  353. package/dist/ol-map/source/osm.js.map +0 -1
  354. package/dist/ol-map/source/vector-source.d.ts.map +0 -1
  355. package/dist/ol-map/source/vector-source.js.map +0 -1
  356. package/dist/ol-map/source/wms.d.ts.map +0 -1
  357. package/dist/ol-map/source/wms.js.map +0 -1
  358. package/dist/ol-map/source/wmts.d.ts.map +0 -1
  359. package/dist/ol-map/source/wmts.js.map +0 -1
  360. package/dist/ol-map/source/xyz.d.ts.map +0 -1
  361. package/dist/ol-map/source/xyz.js.map +0 -1
  362. package/dist/ol-map/style.d.ts.map +0 -1
  363. package/dist/ol-map/style.js.map +0 -1
  364. package/dist/popover/index.d.ts.map +0 -1
  365. package/dist/popover/index.js.map +0 -1
  366. package/dist/popover/popover.d.ts.map +0 -1
  367. package/dist/popover/popover.js.map +0 -1
  368. package/dist/smart-table/__mock-data__/smartTableMocks.d.ts.map +0 -1
  369. package/dist/smart-table/__mock-data__/smartTableMocks.js.map +0 -1
  370. package/dist/smart-table/index.d.ts.map +0 -1
  371. package/dist/smart-table/index.js.map +0 -1
  372. package/dist/smart-table/smart-table-head.d.ts.map +0 -1
  373. package/dist/smart-table/smart-table-head.js.map +0 -1
  374. package/dist/smart-table/smart-table-row.d.ts.map +0 -1
  375. package/dist/smart-table/smart-table-row.js.map +0 -1
  376. package/dist/smart-table/smart-table-types.d.ts.map +0 -1
  377. package/dist/smart-table/smart-table-types.js.map +0 -1
  378. package/dist/smart-table/smart-table.d.ts.map +0 -1
  379. package/dist/smart-table/smart-table.js.map +0 -1
  380. package/dist/theme/index.d.ts.map +0 -1
  381. package/dist/theme/index.js.map +0 -1
  382. package/dist/theme/theme.d.ts.map +0 -1
  383. package/dist/theme/theme.js.map +0 -1
  384. package/dist/utils/map.d.ts.map +0 -1
  385. package/dist/utils/map.js.map +0 -1
  386. package/dist/utils/projections.d.ts.map +0 -1
  387. package/dist/utils/projections.js.map +0 -1
  388. package/dist/utils/story.d.ts.map +0 -1
  389. package/dist/utils/story.js.map +0 -1
@@ -0,0 +1,167 @@
1
+ import React, { ChangeEvent } from 'react';
2
+ import {
3
+ Cartesian2,
4
+ Ellipsoid,
5
+ Color as CesiumColor,
6
+ LabelStyle as CesiumLabelStyle,
7
+ VerticalOrigin as CesiumVerticalOrigin,
8
+ Cartographic,
9
+ sampleTerrainMostDetailed,
10
+ } from 'cesium';
11
+ import { CesiumViewer, useCesiumMap } from '../map';
12
+
13
+ interface IParsedData {
14
+ cartographic: Cartographic;
15
+ cartesian: Cartesian2;
16
+ }
17
+
18
+ const LABEL_PIXEL_OFFSET = -25;
19
+ const FIRST_DATA_ROW_IDX = 2;
20
+
21
+ export interface TerrainianHeightProps {}
22
+
23
+ export const TerrainianHeightTool: React.FC<TerrainianHeightProps> = (
24
+ props
25
+ ) => {
26
+ const mapViewer: CesiumViewer = useCesiumMap();
27
+
28
+ const csvToArray = (str: string, delimiter = ','): IParsedData[] => {
29
+ // const headers = str.slice(0, str.indexOf('\n')).split(delimiter);
30
+ const rows = str.slice(str.indexOf('\n') + 1).split('\n');
31
+
32
+ const arr = rows.map((row) => {
33
+ const values = row.split(delimiter);
34
+ const el = Cartographic.fromDegrees(
35
+ parseFloat(values[0]),
36
+ parseFloat(values[1])
37
+ );
38
+ // const el = headers.reduce((object: Record<string, number>, header, index) => {
39
+ // const trimmedHeader = header.trim();
40
+ // object[trimmedHeader] = parseFloat(values[index]);
41
+ // return object;
42
+ // }, {});
43
+
44
+ //return el;
45
+ return {
46
+ cartographic: el,
47
+ cartesian: new Cartesian2(parseFloat(values[0]), parseFloat(values[1])),
48
+ };
49
+ });
50
+
51
+ return arr;
52
+ };
53
+
54
+ const loadCSV = (evt: ChangeEvent<HTMLInputElement>): void => {
55
+ evt.preventDefault();
56
+ evt.persist();
57
+ const reader = new FileReader();
58
+
59
+ reader.onload = (e: ProgressEvent<FileReader>): any => {
60
+ const text = e.target?.result;
61
+ const parsed = csvToArray(text as string);
62
+ const ellipsoid = Ellipsoid.WGS84;
63
+
64
+ console.log('Loaded CSV content:\n', text);
65
+
66
+ void sampleTerrainMostDetailed(
67
+ mapViewer.terrainProvider,
68
+ parsed.map((item) => item.cartographic)
69
+ ).then(
70
+ (updatedPositions) => {
71
+ console.log(updatedPositions);
72
+
73
+ mapViewer.scene.globe.depthTestAgainstTerrain = true;
74
+ mapViewer.entities.suspendEvents();
75
+ mapViewer.entities.removeAll();
76
+
77
+ updatedPositions.forEach((position, idx) => {
78
+ mapViewer.entities.add({
79
+ name: (idx + FIRST_DATA_ROW_IDX).toString(),
80
+ position: ellipsoid.cartographicToCartesian(position),
81
+ billboard: {
82
+ verticalOrigin: CesiumVerticalOrigin.BOTTOM,
83
+ scale: 0.7,
84
+ image: 'assets/img/map-marker.gif',
85
+ },
86
+ label: {
87
+ text: (idx + FIRST_DATA_ROW_IDX).toString(),
88
+ font: '14pt monospace',
89
+ fillColor: CesiumColor.BLACK,
90
+ style: CesiumLabelStyle.FILL_AND_OUTLINE,
91
+ outlineWidth: 4,
92
+ outlineColor: CesiumColor.BLACK,
93
+ verticalOrigin: CesiumVerticalOrigin.BOTTOM,
94
+ pixelOffset: new Cartesian2(0, LABEL_PIXEL_OFFSET),
95
+ },
96
+ description: `
97
+ Long: ${parsed[idx].cartesian.x} </br>
98
+ Lat: ${parsed[idx].cartesian.y} </br>
99
+ Height(m): <span style="font-weight: 500">${position.height}</span>
100
+ `,
101
+ });
102
+ });
103
+
104
+ mapViewer.entities.resumeEvents();
105
+
106
+ if (evt.target.files !== null) {
107
+ exportToCsv(
108
+ `terranian_heights_${evt.target.files[0].name}`,
109
+ parsed
110
+ );
111
+ evt.target.value = '';
112
+ }
113
+
114
+ console.log(
115
+ 'Pinned point count is ',
116
+ mapViewer.entities.values.length
117
+ );
118
+ },
119
+ (err) => {
120
+ console.error('ERROR while sampleTerrainMostDetailed:', err);
121
+ }
122
+ );
123
+ };
124
+
125
+ if (evt.target.files?.[0]) {
126
+ reader.readAsText(evt.target.files[0]);
127
+ }
128
+ };
129
+
130
+ const exportToCsv = (filename: string, rows: IParsedData[]): void => {
131
+ const processRow = (row: IParsedData): string => {
132
+ let finalVal = '';
133
+ finalVal += row.cartesian.x.toString() + ',';
134
+ finalVal += row.cartesian.y.toString() + ',';
135
+ finalVal += row.cartographic.height.toString();
136
+ return finalVal + '\n';
137
+ };
138
+
139
+ let csvFile = 'long,lat,height\n';
140
+ rows.forEach((row) => {
141
+ csvFile += processRow(row);
142
+ });
143
+
144
+ const blob = new Blob([csvFile], { type: 'text/csv;charset=utf-8;' });
145
+ const link = document.createElement('a');
146
+ const url = URL.createObjectURL(blob);
147
+ link.setAttribute('href', url);
148
+ link.setAttribute('download', filename);
149
+ link.style.visibility = 'hidden';
150
+ document.body.appendChild(link);
151
+ link.click();
152
+ document.body.removeChild(link);
153
+ };
154
+
155
+ return (
156
+ <>
157
+ <input
158
+ type="file"
159
+ id="csvFile"
160
+ accept=".csv"
161
+ onChange={(e: ChangeEvent<HTMLInputElement>): void => {
162
+ loadCSV(e);
163
+ }}
164
+ />
165
+ </>
166
+ );
167
+ };
@@ -1,13 +1,13 @@
1
1
  import React from 'react';
2
2
  import { action } from '@storybook/addon-actions';
3
3
  import { Story } from '@storybook/react/types-6-0';
4
- import { CSFStory } from '../../utils/story';
5
- import { SupportedLocales } from '../../models/enums';
6
- import { DateTimeRangePicker } from '../date-range-picker';
7
- import { DateTimeRangePickerFormControl } from '../date-range-picker.form-control';
4
+ import { CSFStory } from '../utils/story';
5
+ import { SupportedLocales } from '../models/enums';
6
+ import { DateTimeRangePicker } from './date-range-picker';
7
+ import { DateTimeRangePickerFormControl } from './date-range-picker.form-control';
8
8
 
9
9
  export default {
10
- title: 'Picker',
10
+ title: 'Date Range Picker',
11
11
  component: DateTimeRangePicker,
12
12
  };
13
13
 
@@ -0,0 +1,56 @@
1
+ body[dir='rtl'] .chonky-fileListWrapper [class^='listContainer-'] {
2
+ direction: rtl !important;
3
+ }
4
+
5
+ body[dir='rtl'] .chonky-chonkyRoot {
6
+ text-align: right;
7
+ }
8
+
9
+ body[dir='rtl'] .chonky-infoText {
10
+ margin-left: unset;
11
+ margin-right: 12px;
12
+ }
13
+
14
+ body[dir='rtl'] .chonky-contextMenuList .MuiListItemText-root,
15
+ body[dir='rtl'] .chonky-dropdownList .MuiListItemText-root {
16
+ text-align: right;
17
+ }
18
+
19
+ body[dir='rtl'] .chonky-icon {
20
+ margin-right: unset;
21
+ margin-left: 8px;
22
+ }
23
+
24
+ .chonky-chonkyRoot div[class^='folderBackSide'] {
25
+ box-shadow: unset;
26
+ }
27
+
28
+ .chonky-chonkyRoot div[class^='folderBackSide']::after {
29
+ border-color: var(--fp-theme-background, #fff)
30
+ var(--fp-theme-background, #fff) transparent transparent;
31
+ }
32
+
33
+ .chonky-chonkyRoot div[class^='listFileEntryIcon-'] {
34
+ color: #d5d5d5;
35
+ }
36
+
37
+ .chonky-chonkyRoot div[class*='previewFile-d'] {
38
+ background-color: #d5d5d5;
39
+ }
40
+
41
+ .chonky-chonkyRoot div[class^='selectionIndicator-'] {
42
+ background: var(--fp-theme-selection-background, #455570);
43
+ }
44
+
45
+ .chonky-chonkyRoot {
46
+ background-color: var(--fp-theme-background, #fff) !important;
47
+ }
48
+
49
+ .chonky-contextMenuList {
50
+ background-color: var(--fp-theme-surface, #fff) !important;
51
+ }
52
+
53
+ button[class*='chonky-activeButton'],
54
+ .chonky-selectionSizeText {
55
+ color: var(--fp-theme-primary, #24aee9) !important;
56
+ }
@@ -0,0 +1,444 @@
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
+ FilePickerHandle,
27
+ } from './file-picker';
28
+ import FsMap from './fs-map.json';
29
+
30
+ export default {
31
+ title: 'File Picker',
32
+ component: FilePicker,
33
+ };
34
+
35
+ interface CustomFileData extends FileData {
36
+ parentId?: string;
37
+ childrenIds?: string[];
38
+ }
39
+ interface CustomFileMap {
40
+ [fileId: string]: CustomFileData;
41
+ }
42
+
43
+ const prepareCustomFileMap = (): Record<string, unknown> => {
44
+ const baseFileMap = (FsMap.fileMap as unknown) as CustomFileMap;
45
+ const rootFolderId = FsMap.rootFolderId;
46
+ return { baseFileMap, rootFolderId };
47
+ };
48
+
49
+ // Sets up files map and actions
50
+ // eslint-disable-next-line
51
+ const useCustomFileMap = () => {
52
+ const { baseFileMap, rootFolderId } = useMemo(prepareCustomFileMap, []);
53
+
54
+ const [fileMap, setFileMap] = useState<CustomFileMap>(
55
+ baseFileMap as CustomFileMap
56
+ );
57
+ const [currentFolderId, setCurrentFolderId] = useState(rootFolderId);
58
+
59
+ const resetFileMap = useCallback(() => {
60
+ setFileMap(baseFileMap as CustomFileMap);
61
+ setCurrentFolderId(rootFolderId);
62
+ }, [baseFileMap, rootFolderId]);
63
+
64
+ const currentFolderIdRef = useRef(currentFolderId);
65
+
66
+ useEffect(() => {
67
+ currentFolderIdRef.current = currentFolderId;
68
+ }, [currentFolderId]);
69
+
70
+ const deleteFiles = useCallback((files: CustomFileData[]) => {
71
+ setFileMap((currentFileMap) => {
72
+ const newFileMap = { ...currentFileMap };
73
+
74
+ files.forEach((file) => {
75
+ delete newFileMap[file.id];
76
+
77
+ if (file.parentId) {
78
+ const parent = newFileMap[file.parentId];
79
+ const newChildrenIds = parent.childrenIds?.filter(
80
+ (id) => id !== file.id
81
+ );
82
+ newFileMap[file.parentId] = {
83
+ ...parent,
84
+ childrenIds: newChildrenIds,
85
+ childrenCount: newChildrenIds?.length,
86
+ };
87
+ }
88
+ });
89
+
90
+ return newFileMap;
91
+ });
92
+ }, []);
93
+
94
+ const moveFiles = useCallback(
95
+ (
96
+ files: CustomFileData[],
97
+ source: CustomFileData,
98
+ destination: CustomFileData
99
+ ) => {
100
+ setFileMap((currentFileMap) => {
101
+ const newFileMap = { ...currentFileMap };
102
+ const moveFileIds = new Set(files.map((f) => f.id));
103
+
104
+ // Delete files from their source folder.
105
+ const newSourceChildrenIds = source.childrenIds?.filter(
106
+ (id) => !moveFileIds.has(id)
107
+ );
108
+ newFileMap[source.id] = {
109
+ ...source,
110
+ childrenIds: newSourceChildrenIds,
111
+ childrenCount: newSourceChildrenIds?.length,
112
+ };
113
+
114
+ // Add the files to their destination folder.
115
+ const newDestinationChildrenIds = [
116
+ ...(destination.childrenIds as string[]),
117
+ ...files.map((f) => f.id),
118
+ ];
119
+ newFileMap[destination.id] = {
120
+ ...destination,
121
+ childrenIds: newDestinationChildrenIds,
122
+ childrenCount: newDestinationChildrenIds.length,
123
+ };
124
+
125
+ // Finally, update the parent folder ID on the files - from source folder
126
+ // ID to the destination folder ID.
127
+ files.forEach((file) => {
128
+ newFileMap[file.id] = {
129
+ ...file,
130
+ parentId: destination.id,
131
+ };
132
+ });
133
+
134
+ return newFileMap;
135
+ });
136
+ },
137
+ []
138
+ );
139
+
140
+ // TODO: in production we should use UUIDs or MD5 hashes for file paths
141
+ const idCounter = useRef(0);
142
+ const createFolder = useCallback((folderName: string) => {
143
+ setFileMap((currentFileMap) => {
144
+ const newFileMap = { ...currentFileMap };
145
+
146
+ const parentId = currentFolderIdRef.current as string;
147
+ // Create the new folder.
148
+ const newFolderId = `new-folder-${idCounter.current++}`;
149
+ newFileMap[newFolderId] = {
150
+ id: newFolderId,
151
+ name: folderName,
152
+ isDir: true,
153
+ modDate: new Date(),
154
+ parentId: parentId,
155
+ childrenIds: [],
156
+ childrenCount: 0,
157
+ };
158
+
159
+ // Update parent folder to reference the new folder.
160
+ const parent = newFileMap[parentId];
161
+ newFileMap[parentId] = {
162
+ ...parent,
163
+ childrenIds: [...(parent.childrenIds as string[]), newFolderId],
164
+ };
165
+
166
+ return newFileMap;
167
+ });
168
+ }, []);
169
+
170
+ return {
171
+ fileMap,
172
+ currentFolderId,
173
+ setCurrentFolderId,
174
+ resetFileMap,
175
+ deleteFiles,
176
+ moveFiles,
177
+ createFolder,
178
+ };
179
+ };
180
+
181
+ const useFiles = (
182
+ fileMap: CustomFileMap,
183
+ currentFolderId: string
184
+ ): FileArray => {
185
+ return useMemo(() => {
186
+ const currentFolder = fileMap[currentFolderId];
187
+ const files = currentFolder.childrenIds
188
+ ? currentFolder.childrenIds.map((fileId: string) => fileMap[fileId])
189
+ : [];
190
+ return files;
191
+ }, [currentFolderId, fileMap]);
192
+ };
193
+
194
+ const useFolderChain = (
195
+ fileMap: CustomFileMap,
196
+ currentFolderId: string
197
+ ): FileArray => {
198
+ return useMemo(() => {
199
+ const currentFolder = fileMap[currentFolderId];
200
+ const folderChain = [currentFolder];
201
+ let parentId = currentFolder.parentId;
202
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
203
+ while (parentId) {
204
+ const parentFile = fileMap[parentId];
205
+ // eslint-disable-next-line
206
+ if (parentFile) {
207
+ folderChain.unshift(parentFile);
208
+ parentId = parentFile.parentId;
209
+ } else {
210
+ break;
211
+ }
212
+ }
213
+ return folderChain;
214
+ }, [currentFolderId, fileMap]);
215
+ };
216
+
217
+ const useFileActionHandler = (
218
+ setCurrentFolderId: (folderId: string) => void,
219
+ deleteFiles: (files: CustomFileData[]) => void,
220
+ moveFiles: (
221
+ files: FileData[],
222
+ source: FileData,
223
+ destination: FileData
224
+ ) => void,
225
+ createFolder: (folderName: string) => void
226
+ ): ((data: FileActionData) => void) => {
227
+ return useCallback(
228
+ (data: FileActionData) => {
229
+ if (data.id === FilePickerActions.OpenFiles.id) {
230
+ const { targetFile, files } = data.payload;
231
+ const fileToOpen = targetFile ?? files[0];
232
+ // eslint-disable-next-line
233
+ if (fileToOpen && FileHelper.isDirectory(fileToOpen)) {
234
+ setCurrentFolderId(fileToOpen.id);
235
+ return;
236
+ }
237
+ } else if (data.id === FilePickerActions.DeleteFiles.id) {
238
+ deleteFiles(data.state.selectedFilesForAction);
239
+ } else if (data.id === FilePickerActions.MoveFiles.id) {
240
+ moveFiles(
241
+ data.payload.files,
242
+ data.payload.source as FileData,
243
+ data.payload.destination
244
+ );
245
+ } else if (data.id === FilePickerActions.CreateFolder.id) {
246
+ const folderName = prompt('Provide the name for your new folder:');
247
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
248
+ if (folderName) createFolder(folderName);
249
+ }
250
+ },
251
+ [createFolder, deleteFiles, moveFiles, setCurrentFolderId]
252
+ );
253
+ };
254
+
255
+ export const ReadOnlyMode: Story = () => {
256
+ const {
257
+ fileMap,
258
+ currentFolderId,
259
+ setCurrentFolderId,
260
+ // resetFileMap,
261
+ deleteFiles,
262
+ moveFiles,
263
+ createFolder,
264
+ } = useCustomFileMap();
265
+ const files = useFiles(fileMap, currentFolderId as string);
266
+ const folderChain = useFolderChain(fileMap, currentFolderId as string);
267
+ const handleFileAction = useFileActionHandler(
268
+ setCurrentFolderId,
269
+ deleteFiles,
270
+ moveFiles,
271
+ createFolder
272
+ );
273
+ return (
274
+ <Box style={{ height: '600px' }}>
275
+ <FilePicker
276
+ files={files}
277
+ folderChain={folderChain}
278
+ onFileAction={handleFileAction}
279
+ readOnlyMode={true}
280
+ />
281
+ </Box>
282
+ );
283
+ };
284
+
285
+ export const DarkTheme: Story = () => {
286
+ const {
287
+ fileMap,
288
+ currentFolderId,
289
+ setCurrentFolderId,
290
+ // resetFileMap,
291
+ deleteFiles,
292
+ moveFiles,
293
+ createFolder,
294
+ } = useCustomFileMap();
295
+ const files = useFiles(fileMap, currentFolderId as string);
296
+ const folderChain = useFolderChain(fileMap, currentFolderId as string);
297
+ const handleFileAction = useFileActionHandler(
298
+ setCurrentFolderId,
299
+ deleteFiles,
300
+ moveFiles,
301
+ createFolder
302
+ );
303
+ return (
304
+ <Box style={{ height: '600px' }}>
305
+ <FilePicker
306
+ files={files}
307
+ folderChain={folderChain}
308
+ onFileAction={handleFileAction}
309
+ theme={{
310
+ primary: 'blue',
311
+ background: 'black',
312
+ surface: 'gray',
313
+ textOnBackground: 'white',
314
+ selectionBackground: '#455570',
315
+ }}
316
+ />
317
+ </Box>
318
+ );
319
+ };
320
+
321
+ export const Localized: Story = () => {
322
+ const {
323
+ fileMap,
324
+ currentFolderId,
325
+ setCurrentFolderId,
326
+ // resetFileMap,
327
+ deleteFiles,
328
+ moveFiles,
329
+ createFolder,
330
+ } = useCustomFileMap();
331
+ const files = useFiles(fileMap, currentFolderId as string);
332
+ const folderChain = useFolderChain(fileMap, currentFolderId as string);
333
+ const handleFileAction = useFileActionHandler(
334
+ setCurrentFolderId,
335
+ deleteFiles,
336
+ moveFiles,
337
+ createFolder
338
+ );
339
+ const [locale, setLocale] = useState<SupportedLocales>(SupportedLocales.HE);
340
+ const handleLocaleChange = useCallback(
341
+ (event) => setLocale(event.target.value),
342
+ []
343
+ );
344
+ return (
345
+ <>
346
+ <FormControl component="fieldset" style={{ marginBottom: 15 }}>
347
+ <FormLabel component="legend">Pick a language:</FormLabel>
348
+ <RadioGroup
349
+ aria-label="locale"
350
+ name="locale"
351
+ value={locale}
352
+ onChange={handleLocaleChange}
353
+ >
354
+ <FormControlLabel
355
+ value={SupportedLocales.HE}
356
+ control={<Radio />}
357
+ label="עברית"
358
+ />
359
+ <FormControlLabel
360
+ value={SupportedLocales.RU}
361
+ control={<Radio />}
362
+ label="Русский"
363
+ />
364
+ <FormControlLabel
365
+ value={SupportedLocales.EN}
366
+ control={<Radio />}
367
+ label="English"
368
+ />
369
+ </RadioGroup>
370
+ </FormControl>
371
+ <br />
372
+ <Box style={{ height: '600px' }}>
373
+ <FilePicker
374
+ files={files}
375
+ folderChain={folderChain}
376
+ onFileAction={handleFileAction}
377
+ locale={locale}
378
+ />
379
+ </Box>
380
+ </>
381
+ );
382
+ };
383
+
384
+ export const FilesSelection: Story = () => {
385
+ const {
386
+ fileMap,
387
+ currentFolderId,
388
+ setCurrentFolderId,
389
+ // resetFileMap,
390
+ deleteFiles,
391
+ moveFiles,
392
+ createFolder,
393
+ } = useCustomFileMap();
394
+ const files = useFiles(fileMap, currentFolderId as string);
395
+ const folderChain = useFolderChain(fileMap, currentFolderId as string);
396
+ const handleFileAction = useFileActionHandler(
397
+ setCurrentFolderId,
398
+ deleteFiles,
399
+ moveFiles,
400
+ createFolder
401
+ );
402
+ const fileBrowserRef = useRef<FilePickerHandle>(null);
403
+
404
+ const getSelection = React.useCallback(
405
+ (event: React.MouseEvent) => {
406
+ event.preventDefault();
407
+ event.stopPropagation();
408
+ if (!fileBrowserRef.current) return;
409
+ console.log(fileBrowserRef.current.getFileSelection());
410
+ },
411
+ [files, fileBrowserRef]
412
+ );
413
+
414
+ const randomizeSelection = React.useCallback(
415
+ (event: React.MouseEvent) => {
416
+ event.preventDefault();
417
+ event.stopPropagation();
418
+ if (!fileBrowserRef.current) return;
419
+ const randomFileIds = new Set<string>();
420
+ for (const file of files) {
421
+ if (file && Math.random() > 0.5) randomFileIds.add(file.id);
422
+ }
423
+ fileBrowserRef.current.setFileSelection(randomFileIds);
424
+ },
425
+ [files, fileBrowserRef]
426
+ );
427
+
428
+ return (
429
+ <Box style={{ height: '600px' }}>
430
+ <button type="button" onClick={randomizeSelection}>
431
+ Select files
432
+ </button>
433
+ <button type="button" onClick={getSelection}>
434
+ Get selected files
435
+ </button>
436
+ <FilePicker
437
+ ref={fileBrowserRef}
438
+ files={files}
439
+ folderChain={folderChain}
440
+ onFileAction={handleFileAction}
441
+ />
442
+ </Box>
443
+ );
444
+ };