@firecms/core 3.0.0-canary.9 → 3.0.0-canary.90

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 (246) hide show
  1. package/README.md +1 -1
  2. package/dist/app/AppBar.d.ts +12 -0
  3. package/dist/app/Drawer.d.ts +17 -0
  4. package/dist/app/Scaffold.d.ts +30 -0
  5. package/dist/app/index.d.ts +4 -0
  6. package/dist/app/useApp.d.ts +16 -0
  7. package/dist/components/CircularProgressCenter.d.ts +1 -1
  8. package/dist/components/ClearFilterSortButton.d.ts +5 -0
  9. package/dist/components/EntityCollectionTable/EntityCollectionRowActions.d.ts +11 -12
  10. package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +1 -1
  11. package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +5 -3
  12. package/dist/components/EntityCollectionTable/PropertyTableCell.d.ts +1 -0
  13. package/dist/components/EntityCollectionTable/column_utils.d.ts +1 -2
  14. package/dist/components/EntityCollectionTable/fields/TableReferenceField.d.ts +2 -0
  15. package/dist/components/EntityCollectionTable/internal/CollectionTableToolbar.d.ts +1 -4
  16. package/dist/components/EntityCollectionTable/internal/EntityTableCell.d.ts +2 -2
  17. package/dist/components/EntityCollectionTable/internal/popup_field/PopupFormField.d.ts +1 -1
  18. package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +12 -2
  19. package/dist/components/EntityCollectionView/EntityCollectionViewStartActions.d.ts +11 -0
  20. package/dist/components/EntityPreview.d.ts +5 -4
  21. package/dist/components/ErrorView.d.ts +1 -1
  22. package/dist/components/HomePage/DefaultHomePage.d.ts +1 -1
  23. package/dist/components/HomePage/NavigationCardBinding.d.ts +1 -1
  24. package/dist/components/ReferenceWidget.d.ts +3 -1
  25. package/dist/components/SelectableTable/SelectableTable.d.ts +1 -1
  26. package/dist/components/SelectableTable/filters/ReferenceFilterField.d.ts +2 -1
  27. package/dist/components/VirtualTable/VirtualTableProps.d.ts +15 -12
  28. package/dist/components/VirtualTable/types.d.ts +3 -3
  29. package/dist/components/{EntityCollectionTable/internal → common}/default_entity_actions.d.ts +1 -1
  30. package/dist/components/common/index.d.ts +1 -0
  31. package/dist/components/common/table_height.d.ts +5 -0
  32. package/dist/components/common/types.d.ts +4 -6
  33. package/dist/components/common/useDataSourceEntityCollectionTableController.d.ts +3 -0
  34. package/dist/components/index.d.ts +2 -1
  35. package/dist/contexts/AuthControllerContext.d.ts +1 -1
  36. package/dist/{components/FireCMSAppBar.d.ts → core/DefaultAppBar.d.ts} +6 -9
  37. package/dist/core/DefaultDrawer.d.ts +19 -0
  38. package/dist/core/DrawerNavigationItem.d.ts +9 -0
  39. package/dist/core/EntityEditView.d.ts +17 -3
  40. package/dist/core/FireCMS.d.ts +1 -1
  41. package/dist/core/NavigationRoutes.d.ts +3 -3
  42. package/dist/core/index.d.ts +3 -4
  43. package/dist/form/PropertiesForm.d.ts +8 -0
  44. package/dist/form/components/ErrorFocus.d.ts +1 -1
  45. package/dist/form/components/FieldHelperText.d.ts +3 -3
  46. package/dist/form/components/StorageItemPreview.d.ts +4 -4
  47. package/dist/form/field_bindings/MapFieldBinding.d.ts +1 -1
  48. package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +2 -4
  49. package/dist/form/index.d.ts +0 -2
  50. package/dist/hooks/data/delete.d.ts +2 -2
  51. package/dist/hooks/data/save.d.ts +2 -3
  52. package/dist/hooks/data/useDataSource.d.ts +1 -1
  53. package/dist/hooks/data/useEntityFetch.d.ts +3 -3
  54. package/dist/hooks/index.d.ts +2 -0
  55. package/dist/hooks/useBuildNavigationController.d.ts +1 -2
  56. package/dist/hooks/useProjectLog.d.ts +2 -2
  57. package/dist/hooks/useValidateAuthenticator.d.ts +21 -0
  58. package/dist/index.d.ts +1 -0
  59. package/dist/index.es.js +15552 -11933
  60. package/dist/index.es.js.map +1 -1
  61. package/dist/index.umd.js +19643 -7
  62. package/dist/index.umd.js.map +1 -1
  63. package/dist/internal/useBuildDataSource.d.ts +1 -16
  64. package/dist/internal/useRestoreScroll.d.ts +1 -1
  65. package/dist/preview/PropertyPreviewProps.d.ts +6 -4
  66. package/dist/preview/components/ReferencePreview.d.ts +2 -1
  67. package/dist/preview/components/StorageThumbnail.d.ts +2 -1
  68. package/dist/preview/components/UrlComponentPreview.d.ts +2 -1
  69. package/dist/types/auth.d.ts +26 -2
  70. package/dist/types/collections.d.ts +31 -7
  71. package/dist/types/datasource.d.ts +34 -20
  72. package/dist/types/entities.d.ts +5 -1
  73. package/dist/types/entity_actions.d.ts +14 -0
  74. package/dist/types/entity_callbacks.d.ts +2 -2
  75. package/dist/types/fields.d.ts +31 -30
  76. package/dist/types/index.d.ts +0 -1
  77. package/dist/types/navigation.d.ts +5 -5
  78. package/dist/types/plugins.d.ts +16 -6
  79. package/dist/types/properties.d.ts +17 -4
  80. package/dist/types/storage.d.ts +11 -3
  81. package/dist/util/collections.d.ts +1 -1
  82. package/dist/util/entities.d.ts +1 -1
  83. package/dist/util/icon_synonyms.d.ts +1 -97
  84. package/dist/util/icons.d.ts +2 -2
  85. package/dist/util/navigation_utils.d.ts +2 -2
  86. package/dist/util/objects.d.ts +1 -1
  87. package/dist/util/plurals.d.ts +0 -2
  88. package/dist/util/resolutions.d.ts +13 -13
  89. package/dist/util/storage.d.ts +23 -2
  90. package/dist/util/useStorageUploadController.d.ts +1 -1
  91. package/dist/util/useTraceUpdate.d.ts +1 -0
  92. package/package.json +130 -119
  93. package/src/app/AppBar.tsx +18 -0
  94. package/src/app/Drawer.tsx +25 -0
  95. package/src/app/Scaffold.tsx +249 -0
  96. package/src/app/index.ts +4 -0
  97. package/src/app/useApp.tsx +32 -0
  98. package/src/components/CircularProgressCenter.tsx +1 -1
  99. package/src/components/ClearFilterSortButton.tsx +41 -0
  100. package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +9 -18
  101. package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +21 -20
  102. package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +10 -6
  103. package/src/components/EntityCollectionTable/PropertyTableCell.tsx +38 -34
  104. package/src/components/EntityCollectionTable/column_utils.tsx +3 -3
  105. package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +11 -2
  106. package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +14 -6
  107. package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +29 -34
  108. package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +16 -12
  109. package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +4 -5
  110. package/src/components/EntityCollectionView/EntityCollectionView.tsx +69 -45
  111. package/src/components/EntityCollectionView/EntityCollectionViewStartActions.tsx +68 -0
  112. package/src/components/EntityCollectionView/useSelectionController.tsx +19 -7
  113. package/src/components/EntityPreview.tsx +15 -9
  114. package/src/components/EntityView.tsx +5 -5
  115. package/src/components/ErrorView.tsx +1 -1
  116. package/src/components/HomePage/DefaultHomePage.tsx +3 -3
  117. package/src/components/HomePage/NavigationCard.tsx +3 -3
  118. package/src/components/HomePage/NavigationCardBinding.tsx +1 -1
  119. package/src/components/HomePage/SmallNavigationCard.tsx +5 -5
  120. package/src/components/PropertyIdCopyTooltipContent.tsx +2 -3
  121. package/src/components/ReferenceTable/ReferenceSelectionTable.tsx +1 -0
  122. package/src/components/ReferenceWidget.tsx +22 -12
  123. package/src/components/SearchIconsView.tsx +5 -5
  124. package/src/components/SelectableTable/SelectableTable.tsx +7 -7
  125. package/src/components/SelectableTable/filters/BooleanFilterField.tsx +2 -3
  126. package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +22 -7
  127. package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +28 -6
  128. package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +35 -15
  129. package/src/components/VirtualTable/VirtualTable.tsx +70 -37
  130. package/src/components/VirtualTable/VirtualTableCell.tsx +1 -1
  131. package/src/components/VirtualTable/VirtualTableHeader.tsx +4 -4
  132. package/src/components/VirtualTable/VirtualTableHeaderRow.tsx +2 -2
  133. package/src/components/VirtualTable/VirtualTableProps.tsx +18 -14
  134. package/src/components/VirtualTable/VirtualTableRow.tsx +4 -5
  135. package/src/components/VirtualTable/fields/VirtualTableDateField.tsx +1 -1
  136. package/src/components/VirtualTable/types.tsx +2 -3
  137. package/src/components/{EntityCollectionTable/internal → common}/default_entity_actions.tsx +2 -2
  138. package/src/components/common/index.ts +1 -0
  139. package/src/components/{VirtualTable/common.tsx → common/table_height.tsx} +5 -2
  140. package/src/components/common/types.tsx +4 -6
  141. package/src/components/common/useColumnsIds.tsx +10 -2
  142. package/src/components/common/useDataSourceEntityCollectionTableController.tsx +11 -0
  143. package/src/components/common/useTableSearchHelper.ts +52 -12
  144. package/src/components/index.tsx +2 -1
  145. package/src/contexts/AuthControllerContext.tsx +1 -1
  146. package/src/contexts/DialogsProvider.tsx +2 -2
  147. package/src/{components/FireCMSAppBar.tsx → core/DefaultAppBar.tsx} +52 -37
  148. package/src/core/DefaultDrawer.tsx +177 -0
  149. package/src/core/DrawerNavigationItem.tsx +62 -0
  150. package/src/core/EntityEditView.tsx +676 -133
  151. package/src/core/EntitySidePanel.tsx +1 -2
  152. package/src/core/FireCMS.tsx +39 -44
  153. package/src/core/NavigationRoutes.tsx +7 -8
  154. package/src/core/field_configs.tsx +2 -3
  155. package/src/core/index.tsx +3 -4
  156. package/src/form/PropertiesForm.tsx +81 -0
  157. package/src/form/PropertyFieldBinding.tsx +29 -7
  158. package/src/form/components/FieldHelperText.tsx +3 -3
  159. package/src/form/components/StorageItemPreview.tsx +20 -11
  160. package/src/form/components/StorageUploadProgress.tsx +3 -3
  161. package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +8 -5
  162. package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +8 -5
  163. package/src/form/field_bindings/BlockFieldBinding.tsx +2 -2
  164. package/src/form/field_bindings/KeyValueFieldBinding.tsx +44 -39
  165. package/src/form/field_bindings/MapFieldBinding.tsx +11 -3
  166. package/src/form/field_bindings/MarkdownFieldBinding.tsx +2 -2
  167. package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +2 -9
  168. package/src/form/field_bindings/ReferenceFieldBinding.tsx +15 -13
  169. package/src/form/field_bindings/RepeatFieldBinding.tsx +10 -7
  170. package/src/form/field_bindings/SelectFieldBinding.tsx +3 -3
  171. package/src/form/field_bindings/StorageUploadFieldBinding.tsx +22 -43
  172. package/src/form/field_bindings/SwitchFieldBinding.tsx +1 -1
  173. package/src/form/index.tsx +4 -4
  174. package/src/form/validation.ts +1 -17
  175. package/src/hooks/data/delete.ts +3 -3
  176. package/src/hooks/data/save.ts +4 -2
  177. package/src/hooks/data/useDataSource.tsx +2 -2
  178. package/src/hooks/data/useEntityFetch.tsx +3 -3
  179. package/src/hooks/index.tsx +3 -0
  180. package/src/hooks/useBuildLocalConfigurationPersistence.tsx +8 -10
  181. package/src/hooks/useBuildModeController.tsx +11 -5
  182. package/src/hooks/useBuildNavigationController.tsx +137 -61
  183. package/src/hooks/useProjectLog.tsx +21 -8
  184. package/src/hooks/useResolvedNavigationFrom.tsx +1 -1
  185. package/src/hooks/useValidateAuthenticator.tsx +115 -0
  186. package/src/index.ts +1 -0
  187. package/src/internal/useBuildDataSource.ts +56 -49
  188. package/src/internal/useBuildSideEntityController.tsx +88 -21
  189. package/src/preview/PropertyPreview.tsx +9 -16
  190. package/src/preview/PropertyPreviewProps.tsx +4 -8
  191. package/src/preview/components/BooleanPreview.tsx +4 -2
  192. package/src/preview/components/EnumValuesChip.tsx +1 -1
  193. package/src/preview/components/ImagePreview.tsx +21 -33
  194. package/src/preview/components/ReferencePreview.tsx +23 -23
  195. package/src/preview/components/StorageThumbnail.tsx +5 -1
  196. package/src/preview/components/UrlComponentPreview.tsx +44 -11
  197. package/src/preview/property_previews/ArrayOfMapsPreview.tsx +0 -1
  198. package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +2 -1
  199. package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +0 -1
  200. package/src/preview/property_previews/ArrayOfStringsPreview.tsx +0 -1
  201. package/src/preview/property_previews/ArrayOneOfPreview.tsx +2 -3
  202. package/src/preview/property_previews/ArrayPropertyPreview.tsx +2 -3
  203. package/src/preview/property_previews/MapPropertyPreview.tsx +5 -5
  204. package/src/preview/property_previews/StringPropertyPreview.tsx +2 -2
  205. package/src/types/auth.tsx +35 -2
  206. package/src/types/collections.ts +37 -8
  207. package/src/types/customization_controller.tsx +0 -1
  208. package/src/types/datasource.ts +41 -24
  209. package/src/types/entities.ts +9 -1
  210. package/src/types/entity_actions.tsx +16 -3
  211. package/src/types/entity_callbacks.ts +2 -2
  212. package/src/types/fields.tsx +33 -33
  213. package/src/types/index.ts +0 -1
  214. package/src/types/navigation.ts +6 -7
  215. package/src/types/plugins.tsx +18 -8
  216. package/src/types/properties.ts +22 -6
  217. package/src/types/storage.ts +12 -3
  218. package/src/util/collections.ts +1 -1
  219. package/src/util/entities.ts +5 -4
  220. package/src/util/enums.ts +1 -1
  221. package/src/util/icon_list.ts +2 -2
  222. package/src/util/icon_synonyms.ts +3 -99
  223. package/src/util/navigation_utils.ts +6 -6
  224. package/src/util/objects.ts +25 -28
  225. package/src/util/permissions.ts +1 -0
  226. package/src/util/plurals.ts +0 -2
  227. package/src/util/resolutions.ts +32 -31
  228. package/src/util/storage.ts +75 -21
  229. package/src/util/strings.ts +2 -2
  230. package/src/util/useStorageUploadController.tsx +21 -3
  231. package/src/util/useTraceUpdate.tsx +2 -1
  232. package/dist/components/VirtualTable/common.d.ts +0 -2
  233. package/dist/core/Drawer.d.ts +0 -23
  234. package/dist/core/Scaffold.d.ts +0 -55
  235. package/dist/core/SideEntityView.d.ts +0 -7
  236. package/dist/form/EntityForm.d.ts +0 -77
  237. package/dist/internal/useBuildCustomizationController.d.ts +0 -2
  238. package/dist/internal/useLocaleConfig.d.ts +0 -1
  239. package/dist/types/appcheck.d.ts +0 -26
  240. package/src/core/Drawer.tsx +0 -191
  241. package/src/core/Scaffold.tsx +0 -281
  242. package/src/core/SideEntityView.tsx +0 -38
  243. package/src/form/EntityForm.tsx +0 -728
  244. package/src/internal/useBuildCustomizationController.tsx +0 -5
  245. package/src/internal/useLocaleConfig.tsx +0 -18
  246. package/src/types/appcheck.ts +0 -29
@@ -1,4 +1,4 @@
1
- export const icon_synonyms = {
1
+ export const iconSynonyms = {
2
2
  abc: "alphabet character font letter symbol text type",
3
3
  access_alarm: "clock time",
4
4
  access_alarms: "clock time",
@@ -84,7 +84,6 @@ export const icon_synonyms = {
84
84
  apartment: "accommodation architecture building city company estate flat home house office places real residence residential shelter units workplace",
85
85
  api: "developer development enterprise software",
86
86
  app_blocking: "Android applications cancel cell device hardware iOS mobile phone stopped tablet",
87
- apple: "brand logo",
88
87
  app_registration: "apps edit pencil register",
89
88
  approval: "apply approvals approve certificate certification disapproval drive file impression ink mark postage stamp",
90
89
  apps: "all applications circles collection components dots grid homescreen icons interface squares ui ux",
@@ -281,7 +280,6 @@ export const icon_synonyms = {
281
280
  cast: "Android airplay chromecast connect desktop device display hardware iOS mac monitor screencast streaming television tv web window wireless",
282
281
  cast_connected: "Android airplay chromecast desktop device display hardware iOS mac monitor screencast streaming television tv web window wireless",
283
282
  cast_for_education: "Android airplay chrome connect desktop device display hardware iOS learning lessons mac monitor screencast streaming teaching television tv web window wireless",
284
- catching_pokemon: "go pokestop travel",
285
283
  category: "categories circle collection items product sort square triangle",
286
284
  celebration: "activity birthday event fun party",
287
285
  cell_tower: "broadcast casting network signal transmitting wireless",
@@ -358,8 +356,8 @@ export const icon_synonyms = {
358
356
  contact_phone: "account avatar call communicate face human information message mobile number people person profile user",
359
357
  contacts: "account address avatar call cell face human information mobile number people person phone profile user",
360
358
  contact_support: "? alert announcement bubble chat comment communicate help information mark message punctuation speech symbol vquestion",
361
- content_copy: "cut document duplicate file multiple past",
362
- content_cut: "copy document file past scissors trim",
359
+ content_copy: "copy document duplicate file multiple past",
360
+ content_cut: "cut document file past scissors trim",
363
361
  content_paste: "clipboard copy cut document file multiple",
364
362
  content_paste_go: "clipboard disabled document enabled file slash",
365
363
  content_paste_off: "clipboard disabled document enabled file slash",
@@ -382,10 +380,6 @@ export const icon_synonyms = {
382
380
  credit_score: "approve bill card cash check coin commerce complete cost currency dollars done finance loan mark money ok online payment select symbol tick validate verified yes",
383
381
  crib: "babies baby bassinet bed children cradle infant kid newborn sleeping toddler",
384
382
  crop: "adjustments area editing frame images photos rectangle settings size square",
385
- crop_169: "adjustments area by editing frame images photos picture rectangle settings size square",
386
- crop_32: "adjustments area by editing frame images photos picture rectangle settings size square",
387
- crop_54: "adjustments area by editing frame images photos picture rectangle settings size square",
388
- crop_75: "adjustments area by editing frame images photos picture rectangle settings size square",
389
383
  crop_din: "adjustments area editing frame images photos picture rectangle settings size square",
390
384
  crop_free: "adjustments barcode editing focus frame image photos qrcode settings size square zoom",
391
385
  crop_landscape: "adjustments area editing frame images photos picture settings size square",
@@ -420,7 +414,6 @@ export const icon_synonyms = {
420
414
  delete_forever: "bin cancel exit garbage junk recycle remove trashcan",
421
415
  delete_outline: "bin can garbage remove trash",
422
416
  delete_sweep: "bin garbage junk recycle remove trashcan",
423
- delivery_dining: "food meal restaurant scooter takeout transportation vehicle vespa",
424
417
  density_large: "horizontal lines rules",
425
418
  density_medium: "horizontal lines rules",
426
419
  density_small: "horizontal lines rules",
@@ -525,11 +518,6 @@ export const icon_synonyms = {
525
518
  edit_road: "destination direction highway maps pencil street traffic",
526
519
  egg: "breakfast brunch food",
527
520
  egg_alt: "breakfast brunch food",
528
- eighteen_mp: "camera digits font image letters megapixels numbers quality resolution symbol text type",
529
- eight_k: "8000 8K alphabet character digit display font letter number pixels resolution symbol text type video",
530
- eight_k_plus: "+ 7000 8K alphabet character digit display font letter number pixels resolution symbol text type video",
531
- eight_mp: "camera digit font image letters megapixels number quality resolution symbol text type",
532
- eightteen_mp: "camera digits font image letters megapixels numbers quality resolution symbol text type",
533
521
  eject: "arrow disc drive dvd player remove triangle up usb",
534
522
  elderly: "body cane human old people person senior",
535
523
  elderly_woman: "body cane female gender girl human lady old people person senior social symbol women",
@@ -542,7 +530,6 @@ export const icon_synonyms = {
542
530
  electric_rickshaw: "automobile cars india maps transportation truck vehicle",
543
531
  electric_scooter: "automobile bike cars maps transportation vehicle vespa",
544
532
  elevator: "body down human people person up",
545
- eleven_mp: "camera digits font image letters megapixels numbers quality resolution symbol text type",
546
533
  email: "envelope letter message note post receive send write",
547
534
  e_mobiledata: "alphabet font letter text type",
548
535
  emoji_emotions: "emoticon expressions face feelings glad happiness happy like mood person pleased smiley smiling social survey",
@@ -582,7 +569,6 @@ export const icon_synonyms = {
582
569
  extension: "add-ons app extended game item jigsaw piece plugin puzzle shape",
583
570
  extension_off: "disabled enabled extended jigsaw piece puzzle shape slash",
584
571
  face: "account avatar emoji eyes human login logout people person profile recognition security social thumbnail unlock user",
585
- facebook: "brand logo social",
586
572
  face_retouching_natural: "editing effect emoji emotion faces image photography settings star tag",
587
573
  face_retouching_off: "disabled editing effect emoji emotion enabled faces image natural photography settings slash tag",
588
574
  fact_check: "approve complete done list mark ok select tick validate verified yes",
@@ -606,7 +592,6 @@ export const icon_synonyms = {
606
592
  fiber_new: "alphabet character font letter network symbol text type",
607
593
  fiber_pin: "alphabet character font letter network symbol text type",
608
594
  fiber_smart_record: "circle dot play watch",
609
- fifteen_mp: "camera digits font image letters megapixels numbers quality resolution symbol text type",
610
595
  file_copy: "bill clone content cut document duplicate invoice item multiple page past",
611
596
  file_download: "arrows downloads drive export install upload",
612
597
  file_download_done: "arrows check downloads drive installed tick upload",
@@ -643,14 +628,8 @@ export const icon_synonyms = {
643
628
  fire_extinguisher: "emergency water",
644
629
  fireplace: "chimney flame home house living pit room warm winter",
645
630
  first_page: "arrow back chevron left rewind",
646
- fitbit: "athlete athletic exercise fitness hobby",
647
631
  fitness_center: "athlete dumbbell exercise gym health hobby places sport weights workout",
648
632
  fit_screen: "enlarge format layout reduce scale size",
649
- five_g: "5g alphabet cellular character data digit font letter mobile network number phone signal speed symbol text type wifi",
650
- five_k: "5000 5K alphabet character digit display font letter number pixels resolution symbol text type video",
651
- five_k_plus: "+ 5000 5K alphabet character digit display font letter number pixels resolution symbol text type video",
652
- five_mp: "camera digit font image letters megapixels number quality resolution symbol text type",
653
- fivteen_mp: "camera digits font image letters megapixels numbers quality resolution symbol text type",
654
633
  flag: "country goal mark nation report start",
655
634
  flag_circle: "country goal mark nation report round start",
656
635
  flaky: "approve check close complete contrast done exit mark no ok options select stop tick verified yes",
@@ -719,12 +698,6 @@ export const icon_synonyms = {
719
698
  forward_5: "10 arrow circle controls digit fast music number rotate seconds speed symbol time video",
720
699
  forward_to_inbox: "arrow email envelop letter message send",
721
700
  foundation: "architecture base basis building construction estate home house real residential",
722
- four_g_mobiledata: "alphabet cellular character digit font letter network number phone signal speed symbol text type wifi",
723
- four_g_plus_mobiledata: "alphabet cellular character digit font letter network number phone signal speed symbol text type wifi",
724
- four_k: "4000 4K alphabet character digit display font letter number pixels resolution symbol text type video",
725
- four_k_plus: "+ 4000 4K alphabet character digit display font letter number pixels resolution symbol text type video",
726
- four_mp: "camera digit font image letters megapixels number quality resolution symbol text type",
727
- fourteen_mp: "camera digits font image letters megapixels numbers quality resolution symbol text type",
728
701
  free_breakfast: "beverage cafe coffee cup drink mug tea",
729
702
  fullscreen: "adjust application components interface size ui ux view website",
730
703
  fullscreen_exit: "adjust application components interface size ui ux view website",
@@ -740,10 +713,8 @@ export const icon_synonyms = {
740
713
  gif_box: "alphabet animated animation bitmap character font format graphics interchange letter symbol text type",
741
714
  girl: "body female gender human lady people person social symbol woman women",
742
715
  gite: "architecture estate home hostel house maps place real residence residential stay traveling",
743
- git_hub: "brand code",
744
716
  g_mobiledata: "alphabet character font letter network service symbol text type",
745
717
  golf_course: "athlete athletic ball club entertainment flag golfer golfing hobby hole places putt sports",
746
- google: "brand logo",
747
718
  gpp_bad: "cancel certified close error exit no privacy private protection remove security shield sim stop verified",
748
719
  gpp_good: "certified check ok pass security shield sim tick",
749
720
  gpp_maybe: "! alert attention caution certified danger error exclamation important mark notification privacy private protection security shield sim symbol verified warning",
@@ -756,8 +727,6 @@ export const icon_synonyms = {
756
727
  grain: "dots editing effect filter images photography pictures",
757
728
  graphic_eq: "audio equalizer music recording sound voice",
758
729
  grass: "backyard fodder ground home lawn plant turf",
759
- grid3x3: "layout line space",
760
- grid4x4: "by layout lines space",
761
730
  grid_goldenratio: "layout lines space",
762
731
  grid_off: "collage disabled enabled image layout on slash view",
763
732
  grid_on: "collage disabled enabled image layout off sheet slash view",
@@ -802,7 +771,6 @@ export const icon_synonyms = {
802
771
  hide_image: "disabled enabled landscape mountains off on photography picture slash",
803
772
  hide_source: "circle disabled enabled offline on shape slash",
804
773
  highlight: "color doc editing editor emphasize fill flashlight format marker paint spreadsheet style text type writing",
805
- highlight_alt: "arrow box click cursor draw focus pointer selection target",
806
774
  highlight_off: "cancel circle clear click close delete disable exit focus no quit remove stop target times",
807
775
  high_quality: "alphabet character definition display font hq letter movies resolution screen symbol text tv type",
808
776
  hiking: "backpacking bag climbing duffle mountain social sports stick trail travel walking",
@@ -862,14 +830,12 @@ export const icon_synonyms = {
862
830
  insert_page_break: "document file paper",
863
831
  insert_photo: "image landscape mountains photography picture wallpaper",
864
832
  insights: "analytics bars chart data diagram infographic measure metrics stars statistics tracking",
865
- instagram: "brand logo social",
866
833
  install_desktop: "Android chrome device display fix hardware iOS mac monitor place pwa screen web window",
867
834
  install_mobile: "Android cell device hardware iOS phone pwa tablet",
868
835
  integration_instructions: "brackets clipboard code css developer document engineering html platform",
869
836
  interests: "circle heart shapes social square triangle",
870
837
  interpreter_mode: "language microphone person speaking symbol",
871
838
  inventory: "archive box buy check clipboard document e-commerce file list organize packages product purchase shop stock store supply",
872
- inventory2: "archive box file organize packages product stock storage supply",
873
839
  invert_colors: "droplet editing hue inverted liquid palette tone water",
874
840
  invert_colors_off: "disabled droplet enabled hue inverted liquid offline opacity palette slash tone water",
875
841
  ios_share: "arrows button direction export internet link send sharing social up website",
@@ -939,7 +905,6 @@ export const icon_synonyms = {
939
905
  line_weight: "editor height size spacing style thickness",
940
906
  link: "anchor chain clip connection external hyperlink linked links multimedia unlisted url",
941
907
  linked_camera: "connection lens network photography picture signals sync wireless",
942
- linked_in: "brand logo social",
943
908
  link_off: "anchor attached chain clip connection disabled enabled linked links multimedia slash unlink url",
944
909
  liquor: "alcohol bar bottle club cocktail drink food party store wine",
945
910
  list: "editor file format index menu options playlist task todo",
@@ -1068,7 +1033,6 @@ export const icon_synonyms = {
1068
1033
  monochrome_photos: "black camera image photography picture white",
1069
1034
  mood: "emoji emoticon emotions expressions face feelings glad happiness happy like person pleased smiley smiling social survey",
1070
1035
  mood_bad: "disappointment dislike emoji emoticon emotions expressions face feelings person rating smiley social survey unhappiness unhappy unpleased unsmile unsmiling",
1071
- moped: "automobile bike cars direction maps motorized public scooter transportation vehicle vespa",
1072
1036
  more: "3 archive badge bookmark dots etc favorite indent label remember save stamp sticker tab tag three",
1073
1037
  more_horiz: "3 application components dots etc horizontal interface ios pending screen status three ui ux website",
1074
1038
  more_time: "+ add clock date new plus schedule symbol",
@@ -1116,13 +1080,8 @@ export const icon_synonyms = {
1116
1080
  nightlight_round: "dark half mode moon",
1117
1081
  night_shelter: "architecture bed building estate homeless house place real sleep",
1118
1082
  nights_stay: "cloud crescent dark mode moon phases silence silent sky time weather",
1119
- nine_k: "9000 9K alphabet character digit display font letter number pixels resolution symbol text type video",
1120
- nine_k_plus: "+ 9000 9K alphabet character digit display font letter number pixels resolution symbol text type video",
1121
- nine_mp: "camera digit font image letters megapixels number quality resolution symbol text type",
1122
- nineteen_mp: "camera digits font image letters megapixels numbers quality resolution symbol text type",
1123
1083
  no_accounts: "avatar disabled enabled face human offline people person profile slash thumbnail unavailable unidentifiable unknown user",
1124
1084
  no_backpack: "accessory bookbag knapsack travel",
1125
- no_cell: "Android device disabled enabled hardware iOS mobile off phone slash tablet",
1126
1085
  no_drinks: "alcohol beverage bottle cocktail food liquor wine",
1127
1086
  no_encryption: "disabled enabled lock off password safety security slash",
1128
1087
  no_encryption_gmailerrorred: "disabled enabled locked off slash",
@@ -1160,9 +1119,6 @@ export const icon_synonyms = {
1160
1119
  oil_barrel: "droplet gasoline nest water",
1161
1120
  ondemand_video: "Android chrome desktop device hardware iOS mac monitor play television tv web window",
1162
1121
  on_device_training: "arrow bulb call cell contact hardware idea inprogress light loading mobile model refresh renew restore reverse rotate telephone",
1163
- one_k: "1000 1K alphabet character digit display font letter number pixels resolution symbol text type video",
1164
- one_kk: "10000 10K alphabet character digit display font letter number pixels resolution symbol text type video",
1165
- one_k_plus: "+ 1000 1K alphabet character digit display font letter number pixels resolution symbol text type video",
1166
1122
  online_prediction: "bulb connection idea light network signal wireless",
1167
1123
  opacity: "color droplet hue inverted liquid palette tone water",
1168
1124
  open_in_browser: "arrow box new up website window",
@@ -1184,13 +1140,9 @@ export const icon_synonyms = {
1184
1140
  panorama: "angle image mountains photography picture view wide",
1185
1141
  panorama_fish_eye: "angle circle image photography picture wide",
1186
1142
  panorama_horizontal: "angle image photography picture wide",
1187
- panorama_horizontal_select: "angle image photography picture wide",
1188
1143
  panorama_photosphere: "angle horizontal image photography picture wide",
1189
- panorama_photosphere_select: "angle horizontal image photography picture wide",
1190
1144
  panorama_vertical: "angle image photography picture wide",
1191
- panorama_vertical_select: "angle image photography picture wide",
1192
1145
  panorama_wide_angle: "image photography picture",
1193
- panorama_wide_angle_select: "image photography picture",
1194
1146
  pan_tool: "drag fingers gesture hands human move scan stop touch wait",
1195
1147
  paragliding: "athlete athletic body entertainment exercise fly hobby human parachute people person skydiving social sports travel",
1196
1148
  park: "attraction fresh local nature outside plant tree",
@@ -1274,16 +1226,11 @@ export const icon_synonyms = {
1274
1226
  pin: "1 2 3 digit key login logout number password pattern security star symbol unlock",
1275
1227
  pinch: "arrows compress direction finger grasp hand navigation nip squeeze tweak",
1276
1228
  pin_drop: "destination direction gps location maps navigation place stop",
1277
- pinterest: "brand logo social",
1278
1229
  pivot_table_chart: "analytics arrows bars data diagram direction drive editing grid infographic measure metrics rotate sheet statistics tracking",
1279
- pix: "bill brazil card cash commerce credit currency finance money payment",
1280
1230
  place: "destination direction location maps navigation pin point stop",
1281
1231
  plagiarism: "document find glass look magnifying page paper search see",
1282
1232
  play_arrow: "controls media music player start video",
1283
1233
  play_circle: "arrow controls media music video",
1284
- play_circle_filled: "arrow controls media music start video",
1285
- play_circle_filled_white: "start",
1286
- play_circle_outline: "arrow controls media music start video",
1287
1234
  play_disabled: "controls enabled media music off slash video",
1288
1235
  play_for_work: "arrow circle down google half",
1289
1236
  play_lesson: "audio bookmark digital ebook lesson multimedia play reading ribbon",
@@ -1356,7 +1303,6 @@ export const icon_synonyms = {
1356
1303
  recommend: "approved circle confirm favorite gesture hand like reaction social support thumbs well",
1357
1304
  record_voice_over: "account face human people person profile recording sound speaking speech transcript user",
1358
1305
  rectangle: "four parallelograms polygons quadrilaterals recangle shape sides",
1359
- reddit: "brand logo social",
1360
1306
  redeem: "bill cart cash certificate coin commerce credit currency dollars giftcard money online payment present shopping",
1361
1307
  redo: "arrow backward forward next repeat rotate undo",
1362
1308
  reduce_capacity: "arrow body covid decrease down human people person social",
@@ -1499,10 +1445,6 @@ export const icon_synonyms = {
1499
1445
  settings_suggest: "change details gear options recommendation service suggestion system",
1500
1446
  settings_system_daydream: "backup cloud drive storage",
1501
1447
  settings_voice: "microphone recorder speaker",
1502
- seven_k: "7000 7K alphabet character digit display font letter number pixels resolution symbol text type video",
1503
- seven_k_plus: "+ 7000 7K alphabet character digit display font letter number pixels resolution symbol text type video",
1504
- seven_mp: "camera digit font image letters megapixels number quality resolution symbol text type",
1505
- seventeen_mp: "camera digits font image letters megapixels numbers quality resolution symbol text type",
1506
1448
  share: "android connect contect link multimedia multiple network options send shared sharing social",
1507
1449
  share_location: "destination direction gps maps pin place stop tracking",
1508
1450
  shield: "certified privacy private protection secure security verified",
@@ -1525,19 +1467,13 @@ export const icon_synonyms = {
1525
1467
  signal_cellular_4_bar: "data internet mobile network phone speed wifi wireless",
1526
1468
  signal_cellular_alt: "analytics bar chart data diagram infographic internet measure metrics mobile network phone statistics tracking wifi wireless",
1527
1469
  signal_cellular_connected_no_internet_0_bar: "! alert attention caution danger data error exclamation important mark mobile network notification phone symbol warning wifi wireless",
1528
- signal_cellular_connected_no_internet_1_bar: "network",
1529
- signal_cellular_connected_no_internet_2_bar: "network",
1530
- signal_cellular_connected_no_internet_3_bar: "network",
1531
1470
  signal_cellular_connected_no_internet_4_bar: "! alert attention caution danger data error exclamation important mark mobile network notification phone symbol warning wifi wireless",
1532
1471
  signal_cellular_nodata: "internet mobile network offline phone quit wifi wireless x",
1533
1472
  signal_cellular_no_sim: "camera card chip device disabled enabled memory network offline phone slash storage",
1534
1473
  signal_cellular_null: "data internet mobile network phone wifi wireless",
1535
1474
  signal_cellular_off: "data disabled enabled internet mobile network offline phone slash wifi wireless",
1536
1475
  signal_wifi_bad: "bar cancel cellular close data exit internet mobile network no phone quit remove stop wireless",
1537
- signal_wifi_connected_no_internet4: "cellular data mobile network offline phone wireless x",
1538
1476
  signal_wifi_off: "cellular data disabled enabled internet mobile network phone slash speed wireless",
1539
- signal_wifi_statusbar4_bar: "cellular data internet mobile network phone speed wireless",
1540
- signal_wifi_statusbar_connected_no_internet4: "! alert attention caution cellular danger data error exclamation important mark mobile network notification phone speed symbol warning wireless",
1541
1477
  signal_wifi_statusbar_null: "cellular data internet mobile network phone speed wireless",
1542
1478
  signpost: "arrow direction left maps right signal signs street traffic",
1543
1479
  sim_card: "camera chip device memory network phone storage",
@@ -1545,12 +1481,6 @@ export const icon_synonyms = {
1545
1481
  sim_card_download: "arrow camera chip device memory phone storage",
1546
1482
  single_bed: "bedroom double furniture home hotel house king night pillows queen rest sleep twin",
1547
1483
  sip: "alphabet call character dialer font initiation internet letter over phone protocol routing session symbol text type voice",
1548
- six_k: "6000 6K alphabet character digit display font letter number pixels resolution symbol text type video",
1549
- six_k_plus: "+ 6000 6K alphabet character digit display font letter number pixels resolution symbol text type video",
1550
- six_mp: "camera digit font image letters megapixels number quality resolution symbol text type",
1551
- sixteen_mp: "camera digits font image letters megapixels numbers quality resolution symbol text type",
1552
- sixty_fps: "camera digit frames number symbol video",
1553
- sixty_fps_select: "camera digits frame frequency numbers per rate seconds video",
1554
1484
  skateboarding: "athlete athletic body entertainment exercise hobby human people person skateboarder social sports",
1555
1485
  skip_next: "arrow back controls forward music play previous transport video",
1556
1486
  skip_previous: "arrow backward controls forward music next play transport video",
@@ -1621,10 +1551,8 @@ export const icon_synonyms = {
1621
1551
  stairs: "down staircase up",
1622
1552
  star: "best bookmark favorite highlight ranking rate rating save toggle",
1623
1553
  star_border: "best bookmark favorite highlight outline ranking rate rating save toggle",
1624
- star_border_purple_500: "best bookmark favorite highlight outline ranking rate rating save toggle",
1625
1554
  star_half: "0.5 1/2 achievement bookmark favorite highlight important marked ranking rate rating reward saved shape special toggle",
1626
1555
  star_outline: "bookmark favorite half highlight ranking rate rating save toggle",
1627
- star_purple_500: "best bookmark favorite highlight ranking rate rating save toggle",
1628
1556
  star_rate: "achievement bookmark favorite highlight important marked ranking rating reward saved shape special",
1629
1557
  stars: "achievement bookmark circle favorite highlight important like love marked ranking rate rating reward saved shape special",
1630
1558
  start: "arrow keyboard next right",
@@ -1712,8 +1640,6 @@ export const icon_synonyms = {
1712
1640
  task: "approve check complete data document done drive file folders mark ok page paper select sheet slide tick validate verified writing yes",
1713
1641
  task_alt: "approve check circle complete done mark ok select tick validate verified yes",
1714
1642
  taxi_alert: "! attention automobile cab cars caution danger direction error exclamation important lyft maps mark notification public symbol transportation uber vehicle warning yellow",
1715
- telegram: "brand call chat logo messaging voice",
1716
- ten_mp: "camera digits font image letters megapixels numbers quality resolution symbol text type",
1717
1643
  terminal: "application code emulator program software",
1718
1644
  terrain: "geography landscape mountain",
1719
1645
  text_decrease: "- alphabet character font letter minus remove resize subtract symbol type",
@@ -1733,16 +1659,6 @@ export const icon_synonyms = {
1733
1659
  theaters: "film media movies photography showtimes video watch",
1734
1660
  thermostat: "forecast temperature weather",
1735
1661
  thermostat_auto: "A celsius fahrenheit temperature thermometer",
1736
- thirteen_mp: "camera digits font image letters megapixels numbers quality resolution symbol text type",
1737
- thirty_fps: "alphabet camera character digit font frames letter number symbol text type video",
1738
- thirty_fps_select: "camera digits frame frequency image numbers per rate seconds video",
1739
- three_d_rotation: "3d D alphabet arrows av camera character digit font letter number symbol text type vr",
1740
- three_g_mobiledata: "alphabet cellular character digit font letter network number phone signal speed symbol text type wifi",
1741
- three_k: "3000 3K alphabet character digit display font letter number pixels resolution symbol text type video",
1742
- three_k_plus: "+ 3000 3K alphabet character digit display font letter number pixels resolution symbol text type video",
1743
- three_mp: "camera digit font image letters megapixels number quality resolution symbol text type",
1744
- three_p: "account avatar bubble chat comment communicate face human message party people person profile speech user",
1745
- three_sixty: "arrow av camera direction rotate rotation vr",
1746
1662
  thumb_down: "dislike downvote favorite fingers gesture hands ranking rate rating reject up",
1747
1663
  thumb_down_alt: "bad decline disapprove dislike feedback hand hate negative no reject social veto vote",
1748
1664
  thumb_down_off_alt: "bad decline disapprove dislike favorite feedback filled fingers gesture hands hate negative no ranking rate rating reject sad social veto vote",
@@ -1758,7 +1674,6 @@ export const icon_synonyms = {
1758
1674
  timer_3: "digits duration numbers seconds",
1759
1675
  timer_3_select: "alphabet camera character digit font letter number seconds symbol text type",
1760
1676
  timer_off: "alarm alart bell clock disabled duration enabled notification slash stopwatch",
1761
- times_one_mobiledata: "alphabet cellular character digit font letter network number phone signal speed symbol text type wifi",
1762
1677
  time_to_leave: "automobile cars destination direction drive estimate eta maps public transportation travel trip vehicle",
1763
1678
  tips_and_updates: "alert announcement electricity idea information lamp lightbulb stars",
1764
1679
  title: "T alphabet character font header letter subject symbol text type",
@@ -1802,16 +1717,6 @@ export const icon_synonyms = {
1802
1717
  turn_slight_right: "arrows directions maps navigation path route sharp sign traffic",
1803
1718
  tv: "device display linear living monitor room screencast stream television video wireless",
1804
1719
  tv_off: "Android chrome desktop device disabled enabled hardware iOS mac monitor slash television web window",
1805
- twelve_mp: "camera digits font image letters megapixels numbers quality resolution symbol text type",
1806
- twenty_four_mp: "camera digits font image letters megapixels numbers quality resolution symbol text type",
1807
- twenty_one_mp: "camera digits font image letters megapixels numbers quality resolution symbol text type",
1808
- twenty_three_mp: "camera digits font image letters megapixels numbers quality resolution symbol text type",
1809
- twenty_two_mp: "camera digits font image letters megapixels numbers quality resolution symbol text type",
1810
- twenty_zero_mp: "camera digits font image letters megapixels numbers quality resolution symbol text type",
1811
- twitter: "brand logo social",
1812
- two_k: "2000 2K alphabet character digit display font letter number pixels resolution symbol text type video",
1813
- two_k_plus: "+ alphabet character digit font letter number symbol text type",
1814
- two_mp: "camera digit font image letters megapixels number quality resolution symbol text type",
1815
1720
  two_wheeler: "automobile bicycle cars direction maps moped motorbike motorcycle public ride riding scooter transportation travel twom vehicle wheeler wheels",
1816
1721
  umbrella: "beach protection rain sunny",
1817
1722
  unarchive: "arrow inbox mail store undo up",
@@ -1941,7 +1846,6 @@ export const icon_synonyms = {
1941
1846
  wrong_location: "cancel close destination direction exit maps no pin place quit remove stop",
1942
1847
  wysiwyg: "composer mode screen software system text view visibility website window",
1943
1848
  yard: "backyard flower garden home house nature pettle plants",
1944
- you_tube: "brand logo social video",
1945
1849
  youtube_searched_for: "arrow backwards find glass history inprogress loading look magnifying refresh renew restore reverse rotate see yt",
1946
1850
  zoom_in: "bigger find glass grow look magnifier magnifying plus scale search see size",
1947
1851
  zoom_in_map: "arrows destination location maps move place stop",
@@ -60,14 +60,14 @@ export function resolveCollectionPathIds(path: string, allCollections: EntityCol
60
60
  /**
61
61
  * Find the corresponding view at any depth for a given path.
62
62
  * Note that path or segments of the paths can be collection aliases.
63
- * @param pathOrAlias
63
+ * @param pathOrId
64
64
  * @param collections
65
65
  */
66
- export function getCollectionByPathOrId(pathOrAlias: string, collections: EntityCollection[]): EntityCollection | undefined {
66
+ export function getCollectionByPathOrId(pathOrId: string, collections: EntityCollection[]): EntityCollection | undefined {
67
67
 
68
- const subpaths = removeInitialAndTrailingSlashes(pathOrAlias).split("/");
68
+ const subpaths = removeInitialAndTrailingSlashes(pathOrId).split("/");
69
69
  if (subpaths.length % 2 === 0) {
70
- throw Error(`getCollectionByPathOrAlias: Collection paths must have an odd number of segments: ${pathOrAlias}`);
70
+ throw Error(`getCollectionByPathOrId: Collection paths must have an odd number of segments: ${pathOrId}`);
71
71
  }
72
72
 
73
73
  const subpathCombinations = getCollectionPathsCombinations(subpaths);
@@ -80,10 +80,10 @@ export function getCollectionByPathOrId(pathOrAlias: string, collections: Entity
80
80
 
81
81
  if (navigationEntry) {
82
82
 
83
- if (subpathCombination === pathOrAlias) {
83
+ if (subpathCombination === pathOrId) {
84
84
  result = navigationEntry;
85
85
  } else if (navigationEntry.subcollections) {
86
- const newPath = pathOrAlias.replace(subpathCombination, "").split("/").slice(2).join("/");
86
+ const newPath = pathOrId.replace(subpathCombination, "").split("/").slice(2).join("/");
87
87
  if (newPath.length > 0)
88
88
  result = getCollectionByPathOrId(newPath, navigationEntry.subcollections);
89
89
  }
@@ -12,38 +12,25 @@ export function isObject(item: any) {
12
12
  return item && typeof item === "object" && !Array.isArray(item);
13
13
  }
14
14
 
15
- export function mergeDeep<T extends object>(target: T, source: any): T {
15
+ export function mergeDeep<T extends Record<any, any>, U extends Record<any, any>>(target: T, source: U): T & U {
16
16
  const targetIsObject = isObject(target);
17
- const output: T = targetIsObject ? { ...target } : target;
17
+ const output = targetIsObject ? { ...target } : target;
18
18
  if (targetIsObject && isObject(source)) {
19
19
  Object.keys(source).forEach(key => {
20
- if (isObject(source[key])) {
20
+ const sourceElement = source[key];
21
+ if (isObject(sourceElement)) {
21
22
  if (!(key in target))
22
- Object.assign(output, { [key]: source[key] });
23
+ Object.assign(output, { [key]: sourceElement });
23
24
  else
24
- (output as any)[key] = mergeDeep((target as any)[key], source[key]);
25
+ (output as any)[key] = mergeDeep((target as any)[key], sourceElement);
25
26
  } else {
26
- Object.assign(output, { [key]: source[key] });
27
+ Object.assign(output, { [key]: sourceElement });
27
28
  }
28
29
  });
29
30
  }
30
- return output;
31
+ return output as T;
31
32
  }
32
33
 
33
- // export function getValueInPath(o: object | undefined, path: string): any {
34
- // if (!o) return undefined;
35
- // if (typeof o === "object") {
36
- // if (path in o) {
37
- // return (o as any)[path];
38
- // }
39
- // if (path.includes(".")) {
40
- // const pathSegments = path.split(".");
41
- // return getValueInPath((o as any)[pathSegments[0]], pathSegments.slice(1).join("."))
42
- // }
43
- // }
44
- // return undefined;
45
- // }
46
-
47
34
  export function getValueInPath(o: object | undefined, path: string): any {
48
35
  if (!o) return undefined;
49
36
  if (typeof o === "object") {
@@ -154,15 +141,25 @@ export function removePropsIfExisting(source: any, comparison: any) {
154
141
 
155
142
  const res = isArray(source) ? [...source] : { ...source };
156
143
 
157
- Object.keys(comparison).forEach(key => {
158
- if (key in res) {
159
- if (isObject(res[key]) && isObject(comparison[key])) {
160
- res[key] = removePropsIfExisting(res[key], comparison[key]);
161
- } else if (res[key] === comparison[key]) {
162
- isArray(res) ? res.splice(key, 1) : delete res[key];
144
+ if (isArray(res)) {
145
+ for (let i = res.length - 1; i >= 0; i--) {
146
+ if (res[i] === comparison[i]) {
147
+ res.splice(i, 1);
148
+ } else if (isObject(res[i]) && isObject(comparison[i])) {
149
+ res[i] = removePropsIfExisting(res[i], comparison[i]);
163
150
  }
164
151
  }
165
- });
152
+ } else {
153
+ Object.keys(comparison).forEach(key => {
154
+ if (key in res) {
155
+ if (isObject(res[key]) && isObject(comparison[key])) {
156
+ res[key] = removePropsIfExisting(res[key], comparison[key]);
157
+ } else if (res[key] === comparison[key]) {
158
+ delete res[key];
159
+ }
160
+ }
161
+ });
162
+ }
166
163
 
167
164
  return res;
168
165
  }
@@ -49,6 +49,7 @@ export function canCreateEntity<M extends Record<string, any>, UserType extends
49
49
  authController: AuthController<UserType>,
50
50
  path: string,
51
51
  entity: Entity<M> | null): boolean {
52
+ if (collection.collectionGroup) return false;
52
53
  return resolvePermissions(collection, authController, path, entity)?.create ?? DEFAULT_PERMISSIONS.create;
53
54
  }
54
55
 
@@ -1,7 +1,6 @@
1
1
  /**
2
2
  * Returns the plural of an English word.
3
3
  *
4
- * @export
5
4
  * @param {string} word
6
5
  * @param {number} [amount]
7
6
  * @returns {string}
@@ -92,7 +91,6 @@ export function plural(word: string, amount?: number): string {
92
91
  /**
93
92
  * Returns the singular of an English word.
94
93
  *
95
- * @export
96
94
  * @param {string} word
97
95
  * @param {number} [amount]
98
96
  * @returns {string}