@yuuvis/app-drive 0.7.3

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 (107) hide show
  1. package/README.md +47 -0
  2. package/esm2022/extensions/index.mjs +2 -0
  3. package/esm2022/extensions/lib/extensions.module.mjs +35 -0
  4. package/esm2022/extensions/lib/extensions.service.mjs +44 -0
  5. package/esm2022/extensions/lib/object-config.defaults.mjs +19 -0
  6. package/esm2022/extensions/yuuvis-app-drive-extensions.mjs +5 -0
  7. package/esm2022/index.mjs +5 -0
  8. package/esm2022/lib/actions/copy-link/copy-link.action.mjs +40 -0
  9. package/esm2022/lib/actions/index.mjs +7 -0
  10. package/esm2022/lib/actions/manage-versions/manage-versions.action.mjs +33 -0
  11. package/esm2022/lib/actions/manage-versions/manage-versions.component.mjs +105 -0
  12. package/esm2022/lib/actions/paste/paste.action.mjs +41 -0
  13. package/esm2022/lib/actions/rename/rename.action.mjs +31 -0
  14. package/esm2022/lib/actions/rename/rename.component.mjs +42 -0
  15. package/esm2022/lib/actions/rename/rename.validator.mjs +23 -0
  16. package/esm2022/lib/actions/updateContent/update.content.action.mjs +52 -0
  17. package/esm2022/lib/components/add-button/add-button-overlay/add-button-overlay.component.mjs +109 -0
  18. package/esm2022/lib/components/add-button/add-button.component.mjs +39 -0
  19. package/esm2022/lib/components/breadcrumb/breadcrumb.component.mjs +74 -0
  20. package/esm2022/lib/components/folder-tree/folder-tree.component.mjs +89 -0
  21. package/esm2022/lib/components/index.mjs +10 -0
  22. package/esm2022/lib/components/object-name/object-name.component.mjs +60 -0
  23. package/esm2022/lib/components/overlay/create-folder/create-folder.component.mjs +48 -0
  24. package/esm2022/lib/components/paste-from-clipboard/paste-from-clipboard.component.mjs +28 -0
  25. package/esm2022/lib/components/ribbon/ribbon.component.mjs +102 -0
  26. package/esm2022/lib/components/search-filter/date-range-picker/date-range-picker.component.mjs +38 -0
  27. package/esm2022/lib/components/search-filter/search-filter.component.mjs +429 -0
  28. package/esm2022/lib/components/sort/sort.component.mjs +156 -0
  29. package/esm2022/lib/components/versions-list/tile/tile.component.mjs +60 -0
  30. package/esm2022/lib/components/versions-list/versions-list.component.mjs +94 -0
  31. package/esm2022/lib/container/drive/drive.component.mjs +116 -0
  32. package/esm2022/lib/drive.icons.mjs +16 -0
  33. package/esm2022/lib/drive.schema.mjs +49 -0
  34. package/esm2022/lib/lib.routes.mjs +17 -0
  35. package/esm2022/lib/pages/files/files.component.mjs +377 -0
  36. package/esm2022/lib/pages/object/object.component.mjs +200 -0
  37. package/esm2022/lib/services/drive/drive.interface.mjs +14 -0
  38. package/esm2022/lib/services/drive/drive.service.mjs +437 -0
  39. package/esm2022/lib/services/drive/resolve-name-conflicts/resolve-name-conflicts.component.mjs +158 -0
  40. package/esm2022/lib/services/drive/resolve-name-conflicts/resolve-name-conflicts.interface.mjs +2 -0
  41. package/esm2022/lib/services/drive/versions/versions.mapping.mjs +42 -0
  42. package/esm2022/lib/services/index.mjs +5 -0
  43. package/esm2022/lib/services/providers/drive.providers.mjs +10 -0
  44. package/esm2022/lib/services/resolver/files.resolver.mjs +12 -0
  45. package/esm2022/lib/services/resolver/index.mjs +3 -0
  46. package/esm2022/lib/services/resolver/versions.route.resolver.mjs +10 -0
  47. package/esm2022/lib/services/stored-query/stored-query.data.mjs +25 -0
  48. package/esm2022/lib/services/stored-query/stored-query.interface.mjs +2 -0
  49. package/esm2022/lib/services/stored-query/stored-query.service.mjs +41 -0
  50. package/esm2022/lib/services/tokens/breadcrumb-max-depth.token.mjs +3 -0
  51. package/esm2022/lib/services/tokens/index.mjs +2 -0
  52. package/esm2022/yuuvis-app-drive.mjs +5 -0
  53. package/extensions/README.md +3 -0
  54. package/extensions/index.d.ts +1 -0
  55. package/extensions/lib/extensions.module.d.ts +6 -0
  56. package/extensions/lib/extensions.service.d.ts +7 -0
  57. package/extensions/lib/object-config.defaults.d.ts +2 -0
  58. package/fesm2022/yuuvis-app-drive-extensions.mjs +99 -0
  59. package/fesm2022/yuuvis-app-drive-extensions.mjs.map +1 -0
  60. package/fesm2022/yuuvis-app-drive.mjs +2945 -0
  61. package/fesm2022/yuuvis-app-drive.mjs.map +1 -0
  62. package/index.d.ts +4 -0
  63. package/lib/actions/copy-link/copy-link.action.d.ts +18 -0
  64. package/lib/actions/index.d.ts +6 -0
  65. package/lib/actions/manage-versions/manage-versions.action.d.ts +17 -0
  66. package/lib/actions/manage-versions/manage-versions.component.d.ts +32 -0
  67. package/lib/actions/paste/paste.action.d.ts +17 -0
  68. package/lib/actions/rename/rename.action.d.ts +17 -0
  69. package/lib/actions/rename/rename.component.d.ts +12 -0
  70. package/lib/actions/rename/rename.validator.d.ts +5 -0
  71. package/lib/actions/updateContent/update.content.action.d.ts +18 -0
  72. package/lib/components/add-button/add-button-overlay/add-button-overlay.component.d.ts +26 -0
  73. package/lib/components/add-button/add-button.component.d.ts +12 -0
  74. package/lib/components/breadcrumb/breadcrumb.component.d.ts +25 -0
  75. package/lib/components/folder-tree/folder-tree.component.d.ts +13 -0
  76. package/lib/components/index.d.ts +8 -0
  77. package/lib/components/object-name/object-name.component.d.ts +21 -0
  78. package/lib/components/overlay/create-folder/create-folder.component.d.ts +12 -0
  79. package/lib/components/paste-from-clipboard/paste-from-clipboard.component.d.ts +13 -0
  80. package/lib/components/ribbon/ribbon.component.d.ts +24 -0
  81. package/lib/components/search-filter/date-range-picker/date-range-picker.component.d.ts +13 -0
  82. package/lib/components/search-filter/search-filter.component.d.ts +23 -0
  83. package/lib/components/sort/sort.component.d.ts +31 -0
  84. package/lib/components/versions-list/tile/tile.component.d.ts +14 -0
  85. package/lib/components/versions-list/versions-list.component.d.ts +17 -0
  86. package/lib/container/drive/drive.component.d.ts +36 -0
  87. package/lib/drive.icons.d.ts +15 -0
  88. package/lib/drive.schema.d.ts +23 -0
  89. package/lib/lib.routes.d.ts +2 -0
  90. package/lib/pages/files/files.component.d.ts +101 -0
  91. package/lib/pages/object/object.component.d.ts +35 -0
  92. package/lib/services/drive/drive.interface.d.ts +62 -0
  93. package/lib/services/drive/drive.service.d.ts +64 -0
  94. package/lib/services/drive/resolve-name-conflicts/resolve-name-conflicts.component.d.ts +31 -0
  95. package/lib/services/drive/resolve-name-conflicts/resolve-name-conflicts.interface.d.ts +8 -0
  96. package/lib/services/drive/versions/versions.mapping.d.ts +2 -0
  97. package/lib/services/index.d.ts +4 -0
  98. package/lib/services/providers/drive.providers.d.ts +7 -0
  99. package/lib/services/resolver/files.resolver.d.ts +2 -0
  100. package/lib/services/resolver/index.d.ts +2 -0
  101. package/lib/services/resolver/versions.route.resolver.d.ts +2 -0
  102. package/lib/services/stored-query/stored-query.data.d.ts +5 -0
  103. package/lib/services/stored-query/stored-query.interface.d.ts +5 -0
  104. package/lib/services/stored-query/stored-query.service.d.ts +10 -0
  105. package/lib/services/tokens/breadcrumb-max-depth.token.d.ts +2 -0
  106. package/lib/services/tokens/index.d.ts +1 -0
  107. package/package.json +41 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yuuvis-app-drive.mjs","sources":["../../../../../libs/apps/drive/src/lib/drive.icons.ts","../../../../../libs/apps/drive/src/lib/drive.schema.ts","../../../../../libs/apps/drive/src/lib/services/tokens/breadcrumb-max-depth.token.ts","../../../../../libs/apps/drive/src/lib/services/drive/drive.interface.ts","../../../../../libs/apps/drive/src/lib/services/drive/resolve-name-conflicts/resolve-name-conflicts.component.ts","../../../../../libs/apps/drive/src/lib/services/drive/resolve-name-conflicts/resolve-name-conflicts.component.html","../../../../../libs/apps/drive/src/lib/services/drive/versions/versions.mapping.ts","../../../../../libs/apps/drive/src/lib/services/drive/drive.service.ts","../../../../../libs/apps/drive/src/lib/actions/rename/rename.validator.ts","../../../../../libs/apps/drive/src/lib/services/providers/drive.providers.ts","../../../../../libs/apps/drive/src/lib/components/object-name/object-name.component.ts","../../../../../libs/apps/drive/src/lib/components/object-name/object-name.component.html","../../../../../libs/apps/drive/src/lib/actions/rename/rename.component.ts","../../../../../libs/apps/drive/src/lib/actions/rename/rename.component.html","../../../../../libs/apps/drive/src/lib/actions/rename/rename.action.ts","../../../../../libs/apps/drive/src/lib/actions/paste/paste.action.ts","../../../../../libs/apps/drive/src/lib/actions/updateContent/update.content.action.ts","../../../../../libs/apps/drive/src/lib/actions/copy-link/copy-link.action.ts","../../../../../libs/apps/drive/src/lib/components/overlay/create-folder/create-folder.component.ts","../../../../../libs/apps/drive/src/lib/components/overlay/create-folder/create-folder.component.html","../../../../../libs/apps/drive/src/lib/components/add-button/add-button-overlay/add-button-overlay.component.ts","../../../../../libs/apps/drive/src/lib/components/add-button/add-button-overlay/add-button-overlay.component.html","../../../../../libs/apps/drive/src/lib/components/add-button/add-button.component.ts","../../../../../libs/apps/drive/src/lib/components/add-button/add-button.component.html","../../../../../libs/apps/drive/src/lib/components/sort/sort.component.ts","../../../../../libs/apps/drive/src/lib/components/breadcrumb/breadcrumb.component.ts","../../../../../libs/apps/drive/src/lib/components/breadcrumb/breadcrumb.component.html","../../../../../libs/apps/drive/src/lib/services/stored-query/stored-query.data.ts","../../../../../libs/apps/drive/src/lib/components/folder-tree/folder-tree.component.ts","../../../../../libs/apps/drive/src/lib/components/folder-tree/folder-tree.component.html","../../../../../libs/apps/drive/src/lib/components/paste-from-clipboard/paste-from-clipboard.component.ts","../../../../../libs/apps/drive/src/lib/components/paste-from-clipboard/paste-from-clipboard.component.html","../../../../../libs/apps/drive/src/lib/components/versions-list/tile/tile.component.ts","../../../../../libs/apps/drive/src/lib/components/versions-list/versions-list.component.ts","../../../../../libs/apps/drive/src/lib/actions/manage-versions/manage-versions.component.ts","../../../../../libs/apps/drive/src/lib/actions/manage-versions/manage-versions.component.html","../../../../../libs/apps/drive/src/lib/actions/manage-versions/manage-versions.action.ts","../../../../../libs/apps/drive/src/lib/container/drive/drive.component.ts","../../../../../libs/apps/drive/src/lib/container/drive/drive.component.html","../../../../../libs/apps/drive/src/lib/components/ribbon/ribbon.component.ts","../../../../../libs/apps/drive/src/lib/components/ribbon/ribbon.component.html","../../../../../libs/apps/drive/src/lib/services/stored-query/stored-query.service.ts","../../../../../libs/apps/drive/src/lib/components/search-filter/date-range-picker/date-range-picker.component.ts","../../../../../libs/apps/drive/src/lib/components/search-filter/date-range-picker/date-range-picker.component.html","../../../../../libs/apps/drive/src/lib/components/search-filter/search-filter.component.ts","../../../../../libs/apps/drive/src/lib/components/search-filter/search-filter.component.html","../../../../../libs/apps/drive/src/lib/pages/files/files.component.ts","../../../../../libs/apps/drive/src/lib/pages/files/files.component.html","../../../../../libs/apps/drive/src/lib/pages/object/object.component.ts","../../../../../libs/apps/drive/src/lib/pages/object/object.component.html","../../../../../libs/apps/drive/src/lib/services/resolver/files.resolver.ts","../../../../../libs/apps/drive/src/lib/services/resolver/versions.route.resolver.ts","../../../../../libs/apps/drive/src/lib/lib.routes.ts","../../../../../libs/apps/drive/src/yuuvis-app-drive.ts"],"sourcesContent":["export const APP_DRIVE_ICONS = {\n file: '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#e8eaed\"><path d=\"M240-80q-33 0-56.5-23.5T160-160v-640q0-33 23.5-56.5T240-880h320l240 240v480q0 33-23.5 56.5T720-80H240Zm280-520v-200H240v640h480v-440H520ZM240-800v200-200 640-640Z\"/></svg>',\n folder:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#e8eaed\"><path d=\"M160-160q-33 0-56.5-23.5T80-240v-480q0-33 23.5-56.5T160-800h240l80 80h320q33 0 56.5 23.5T880-640H447l-80-80H160v480l96-320h684L837-217q-8 26-29.5 41.5T760-160H160Zm84-80h516l72-240H316l-72 240Zm0 0 72-240-72 240Zm-84-400v-80 80Z\"/></svg>',\n folderx:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#e8eaed\"><path d=\"M160-160q-33 0-56.5-23.5T80-240v-480q0-33 23.5-56.5T160-800h240l80 80h320q33 0 56.5 23.5T880-640v400q0 33-23.5 56.5T800-160H160Zm0-80h640v-400H447l-80-80H160v480Zm0 0v-480 480Z\"/></svg>',\n favorite:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#e8eaed\"><path d=\"m354-287 126-76 126 77-33-144 111-96-146-13-58-136-58 135-146 13 111 97-33 143ZM233-120l65-281L80-590l288-25 112-265 112 265 288 25-218 189 65 281-247-149-247 149Zm247-350Z\"/></svg>',\n settings:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20px\" viewBox=\"0 -960 960 960\" width=\"20px\" fill=\"#e8eaed\"><path d=\"M447-288h64l14-56.31q14-4.69 26.5-11.19Q564-362 575-372l55 16 32-55-41-38.52q2-13.48 3-29.98t-2-29.5l40-38-32-55-54 15q-11-10-24-17t-27-12l-13-56h-65l-12 56q-14 5-27 12t-24 17l-54-16-32 56 41 38q-3 14-3 29.5t3 29.5l-41 39 32 56 55-17q11 9 23.5 16t26.5 12l12 56Zm32.79-120Q450-408 429-429.21t-21-51Q408-510 429.21-531t51-21Q510-552 531-530.79t21 51Q552-450 530.79-429t-51 21ZM216-144q-29.7 0-50.85-21.15Q144-186.3 144-216v-528q0-29.7 21.15-50.85Q186.3-816 216-816h528q29.7 0 50.85 21.15Q816-773.7 816-744v528q0 29.7-21.15 50.85Q773.7-144 744-144H216Zm0-72h528v-528H216v528Zm0-528v528-528Z\"/></svg>',\n sort: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"#5f6368\" viewBox=\"0 -960 960 960\"><path d=\"M320-440v-287L217-624l-57-56 200-200 200 200-57 56-103-103v287h-80ZM600-80 400-280l57-56 103 103v-287h80v287l103-103 57 56L600-80Z\"/></svg>',\n home: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"#e8eaed\" viewBox=\"0 -960 960 960\"><path d=\"M240-200h120v-240h240v240h120v-360L480-740 240-560v360Zm-80 80v-480l320-240 320 240v480H520v-240h-80v240H160Zm320-350Z\"/></svg>',\n toggleLeft:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20px\" viewBox=\"0 -960 960 960\" width=\"20px\" fill=\"#e8eaed\"><path d=\"M211-144q-27.64 0-47.32-19.68T144-211v-538q0-27.64 19.68-47.32T211-816h538q27.64 0 47.32 19.68T816-749v538q0 27.64-19.68 47.32T749-144H211Zm125-72v-528H216v528h120Zm72 0h336v-528H408v528Zm-72 0H216h120Z\"/></svg>',\n toggleRight:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20px\" viewBox=\"0 -960 960 960\" width=\"20px\" fill=\"#e8eaed\"><path d=\"M211-144q-27.64 0-47.32-19.68T144-211v-538q0-27.64 19.68-47.32T211-816h538q27.64 0 47.32 19.68T816-749v538q0 27.64-19.68 47.32T749-144H211Zm413-72h120v-528H624v528Zm-72 0v-528H216v528h336Zm72 0h120-120Z\"/></svg>',\n\n clipboard:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#e8eaed\"><path d=\"M620-163 450-333l56-56 114 114 226-226 56 56-282 282Zm220-397h-80v-200h-80v120H280v-120h-80v560h240v80H200q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h167q11-35 43-57.5t70-22.5q40 0 71.5 22.5T594-840h166q33 0 56.5 23.5T840-760v200ZM480-760q17 0 28.5-11.5T520-800q0-17-11.5-28.5T480-840q-17 0-28.5 11.5T440-800q0 17 11.5 28.5T480-760Z\"/></svg>',\n addCircle:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20px\" viewBox=\"0 -960 960 960\" width=\"20px\" fill=\"#e8eaed\"><path d=\"M444-288h72v-156h156v-72H516v-156h-72v156H288v72h156v156Zm36.28 192Q401-96 331-126t-122.5-82.5Q156-261 126-330.96t-30-149.5Q96-560 126-629.5q30-69.5 82.5-122T330.96-834q69.96-30 149.5-30t149.04 30q69.5 30 122 82.5T834-629.28q30 69.73 30 149Q864-401 834-331t-82.5 122.5Q699-156 629.28-126q-69.73 30-149 30Zm-.28-72q130 0 221-91t91-221q0-130-91-221t-221-91q-130 0-221 91t-91 221q0 130 91 221t221 91Zm0-312Z\"/></svg>',\n createFolder:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20px\" viewBox=\"0 -960 960 960\" width=\"20px\" fill=\"#e8eaed\"><path d=\"M576-324h72v-72h72v-72h-72v-72h-72v72h-72v72h72v72ZM168-192q-29 0-50.5-21.5T96-264v-432q0-29.7 21.5-50.85Q139-768 168-768h216l96 96h312q29.7 0 50.85 21.15Q864-629.7 864-600v336q0 29-21.15 50.5T792-192H168Zm0-72h624v-336H450l-96-96H168v432Zm0 0v-432 432Z\"/></svg>',\n createFile:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20px\" viewBox=\"0 -960 960 960\" width=\"20px\" fill=\"#e8eaed\"><path d=\"M444-240h72v-108h108v-72H516v-108h-72v108H336v72h108v108ZM263.72-96Q234-96 213-117.15T192-168v-624q0-29.7 21.15-50.85Q234.3-864 264-864h312l192 192v504q0 29.7-21.16 50.85Q725.68-96 695.96-96H263.72ZM528-624v-168H264v624h432v-456H528ZM264-792v189-189 624-624Z\"/></svg>'\n};\n","// Mapping schema for this apps backend schema\n\nimport { SystemType, VirtualObjectType } from '@yuuvis/client-core';\nimport { AppSchema } from '@yuuvis/client-shell-core';\n// eslint-disable-next-line @nx/enforce-module-boundaries\nimport { marker } from '@colsen1991/ngx-translate-extract-marker';\nimport { APP_DRIVE_ICONS } from './drive.icons';\nimport { ActionContext } from '@yuuvis/client-framework/actions';\n\n// use marker to extract the labels for the app schema types\n// make sure to provide a marker for each type/flavor ID\nmarker('io.yuuvis.app.drive.folder');\nmarker('io.yuuvis.app.drive.file');\n\nexport const FS_PROPERTIES = {\n name: 'appOsdrive:fileName'\n};\nexport const FS_SOTS = {\n object: 'appOsdrive:file'\n};\n\nexport const APP_PREFIX = 'appDrive:';\nexport const APP_ID = 'io.yuuvis.app.drive';\n\nexport const APP_SCHEMA: AppSchema<{ folder: VirtualObjectType; file: VirtualObjectType }> = {\n id: APP_ID,\n name: 'OS Drive',\n icon: '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24\" viewBox=\"0 -960 960 960\" width=\"24\"><path d=\"M340-320h300q50 0 85-35t35-85q0-50-35-85t-85-35q-8-58-53-99t-101-41q-51 0-92.5 26T332-600q-57 5-94.5 43.5T200-460q0 58 41 99t99 41Zm0-80q-25 0-42.5-17.5T280-460q0-25 17.5-42.5T340-520h60v-20q0-33 23.5-56.5T480-620q33 0 56.5 23.5T560-540v60h80q17 0 28.5 11.5T680-440q0 17-11.5 28.5T640-400H340ZM480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z\"/></svg>',\n types: {\n folder: {\n id: `${APP_ID}.folder`,\n icon: APP_DRIVE_ICONS.folder,\n objectType: SystemType.FOLDER,\n sots: [FS_SOTS.object]\n },\n file: {\n id: `${APP_ID}.file`,\n icon: APP_DRIVE_ICONS.file,\n objectType: SystemType.DOCUMENT,\n sots: [FS_SOTS.object]\n }\n },\n flavors: []\n};\n\nexport const APP_ACTIONS = {\n rename: 'app.drive.action.rename',\n paste: 'app.drive.action.paste',\n copyLink: 'app.drive.action.copy.link',\n contentUpdate: 'app.drive.action.content.update',\n manageVersions: 'app.drive.action.manage-versions'\n};\n\nexport const ACTION_CONTEXT: ActionContext = {\n subjectProperty: FS_PROPERTIES.name,\n appId: APP_ID\n};\n","import { InjectionToken } from '@angular/core';\n\nexport const DRIVE_APP_BREADCRUMB_MAX_DEPTH = new InjectionToken<number>('Max depth of the folder strukture in the Breadcrumb', { factory: () => 3 });\n","import { DmsObject, SearchQuery } from '@yuuvis/client-core';\nimport { Action } from '@yuuvis/client-framework/actions';\nimport { TileData } from '@yuuvis/client-framework/tile-list';\n\nexport interface BreadCrumb {\n name: string;\n id: string;\n}\nexport interface DriveState {\n currentFolder: string | null;\n query: SearchQuery | null;\n queryTitle: string | null;\n selection: DmsObject[];\n actions: Action[];\n busy: boolean;\n sort: {\n property: string;\n order: 'asc' | 'desc';\n } | null;\n breadcrumb: {\n loading: boolean;\n partial: boolean;\n items: BreadCrumb[];\n folder: { folderId: string | null; entry: BreadCrumb[]; loading: boolean } | null;\n };\n versions: {\n versionsList: TileData[];\n selectedVersion: DmsObject[] | null;\n };\n selectedDmsObject: DmsObject | null;\n}\n\nexport interface DriveValidatePayload {\n app: string;\n fileNames: string[];\n targetFolderId?: string;\n}\nexport interface DriveValidateResponse {\n errors: [{ message: string[] }];\n existingFileNames: string[];\n invalidFileNames: string[];\n valid: boolean;\n}\n\n// ID representing the root folder\nexport const DRIVE_ROOT_FOLDER_ID = 'root';\n// ID representing a custom view like 'recently edited documents'\nexport const DRIVE_QUERY_FOLDER_ID = 'query';\n\nexport type DriveFolderId = typeof DRIVE_ROOT_FOLDER_ID | typeof DRIVE_QUERY_FOLDER_ID;\n\nexport enum DRIVE_EVENT {\n refresh = 'refresh'\n}\n\nexport enum DRIVE_ACTION_MODE {\n CUT = 'cut',\n COPY = 'copy'\n}\n\nexport interface CreateResult {\n id?: string;\n error?: CreateError;\n}\nexport type CreateError = 'default' | 'nameExists';\n","import { CommonModule } from '@angular/common';\nimport { Component, inject, OnInit } from '@angular/core';\nimport { YvcOverlayRef } from '@yuuvis/components/overlay';\nimport { DriveService } from '../drive.service';\nimport { ResolveNameConflictsPayload } from './resolve-name-conflicts.interface';\nimport { ClipboardService, DmsObject, TranslateModule, TranslateService } from '@yuuvis/client-core';\nimport { FS_PROPERTIES } from '../../../drive.schema';\nimport { pipe, tap } from 'rxjs';\nimport { DRIVE_EVENT } from '../drive.interface';\n\n/**\n * Component to resolve name conflicts. Based on its mode, it\n * will handle files or objects that are about to be uploaded,\n * copied or moved.\n */\n@Component({\n selector: 'ymd-resolve-name-conflicts',\n standalone: true,\n imports: [CommonModule, TranslateModule],\n templateUrl: './resolve-name-conflicts.component.html',\n styleUrl: './resolve-name-conflicts.component.scss'\n})\nexport class ResolveNameConflictsComponent implements OnInit {\n #oRef = inject(YvcOverlayRef);\n #drive = inject(DriveService);\n #clipboard = inject(ClipboardService);\n translate = inject(TranslateService);\n\n payload?: ResolveNameConflictsPayload;\n validItems: { name: string; item: DmsObject | File }[] = [];\n existingFileNames: string[] = [];\n invalidFileNames: string[] = [];\n\n content = {\n headline: '',\n message: '',\n messageValid: '',\n proceed: ''\n };\n\n proceed() {\n if (!this.payload) return;\n\n switch (this.payload.mode) {\n case 'upload': {\n this.#upload(this.validItems.map((i) => i.item) as File[]);\n break;\n }\n case 'copy': {\n this.#copy(this.validItems.map((i) => i.item) as DmsObject[]);\n break;\n }\n case 'move': {\n this.#move(this.validItems.map((i) => i.item) as DmsObject[]);\n break;\n }\n }\n }\n\n #upload(files: File[]) {\n this.#drive.upload(files, this.payload?.data).subscribe();\n // upload errors and progress are handled by the upload progress component\n this.#oRef.close();\n }\n\n #copy(objects: DmsObject[]) {\n this.#drive.setBusy(true);\n this.#oRef.close();\n this.#drive\n .copyToCurrentFolder(objects, false)\n .pipe(\n tap((res) => {\n res && this.#drive.emitEvent(DRIVE_EVENT.refresh);\n this.#clipboard.clear();\n })\n )\n .subscribe({\n complete: () => {\n this.#drive.setBusy(false);\n }\n });\n }\n\n #move(objects: DmsObject[]) {\n this.#drive.setBusy(true);\n this.#oRef.close();\n this.#drive\n .moveToCurrentFolder(objects)\n .pipe(\n tap((res) => {\n res && this.#drive.emitEvent(DRIVE_EVENT.refresh);\n this.#clipboard.clear();\n })\n )\n .subscribe({\n complete: () => {\n this.#drive.setBusy(false);\n }\n });\n }\n\n cancel() {\n this.#oRef.close();\n }\n\n #setupValidItems() {\n if (!this.payload) return;\n if (this.payload?.mode === 'upload') {\n this.validItems = (this.payload.items as File[])\n .filter((f) => !this.existingFileNames.includes(f.name))\n .map((item) => ({\n name: item.name,\n item\n }));\n } else {\n this.validItems = (this.payload.items as DmsObject[])\n .filter((o) => !this.existingFileNames.includes(o.data[FS_PROPERTIES.name] as string))\n .map((item) => ({\n name: item.data[FS_PROPERTIES.name] as string,\n item\n }));\n }\n }\n\n #setupContent() {\n if (!this.payload) return;\n\n switch (this.payload.mode) {\n case 'upload': {\n this.content = {\n headline: this.translate.instant('yuv.app.drive.name.conflict.upload.headline'),\n message: this.translate.instant('yuv.app.drive.name.conflict.upload.message'),\n messageValid: this.translate.instant('yuv.app.drive.name.conflict.upload.messageValid'),\n proceed: this.translate.instant('yuv.app.drive.name.conflict.upload.proceed')\n };\n break;\n }\n case 'copy': {\n this.content = {\n headline: this.translate.instant('yuv.app.drive.name.conflict.copy.headline'),\n message: this.translate.instant('yuv.app.drive.name.conflict.copy.message'),\n messageValid: this.translate.instant('yuv.app.drive.name.conflict.copy.messageValid'),\n proceed: this.translate.instant('yuv.app.drive.name.conflict.copy.proceed')\n };\n break;\n }\n case 'move': {\n this.content = {\n headline: this.translate.instant('yuv.app.drive.name.conflict.move.headline'),\n message: this.translate.instant('yuv.app.drive.name.conflict.move.message'),\n messageValid: this.translate.instant('yuv.app.drive.name.conflict.move.messageValid'),\n proceed: this.translate.instant('yuv.app.drive.name.conflict.move.proceed')\n };\n break;\n }\n }\n }\n\n ngOnInit(): void {\n this.payload = this.#oRef.data as ResolveNameConflictsPayload;\n this.existingFileNames = this.payload.existingFileNames;\n this.invalidFileNames = this.payload.invalidFileNames;\n this.#setupValidItems();\n this.#setupContent();\n }\n}\n","<h2>{{ content.headline }}</h2>\n<p>{{ content.message }}</p>\n\n<ul>\n @for (ef of existingFileNames; track $index) {\n <li>{{ ef }}</li>\n }\n</ul>\n\n@if (validItems.length) {\n <p>{{ content.messageValid }}</p>\n <ul>\n @for (f of validItems; track $index) {\n <li>{{ f.name }}</li>\n }\n </ul>\n}\n\n<footer>\n @if (validItems.length) {\n <button class=\"primary\" (click)=\"proceed()\">{{ content.proceed }}</button>\n }\n <button class=\"secondary\" (click)=\"cancel()\">{{ 'yuv.app.drive.name.conflict.cancel' | translate }}</button>\n</footer>\n","import { BaseObjectTypeField, DmsObject, ResolvedObjectConfigItem } from '@yuuvis/client-core';\nimport { TileData } from '@yuuvis/client-framework/tile-list';\nimport { FS_PROPERTIES } from '../../../drive.schema';\n\nconst getResolvedObjectConfigItem = (propertyName: string, instanceData: Record<string, unknown>): ResolvedObjectConfigItem => {\n const item: ResolvedObjectConfigItem = {\n propertyName: propertyName,\n value: instanceData[propertyName]\n };\n // Meta data are considered properties that start with the property name followed by an underscore.\n // Organization fields for example have an additional property 'xyz_title' that contains the resolved\n // name of a user while the value itself is the users ID.\n const metaData = Object.keys(instanceData)\n .filter((key) => key.startsWith(propertyName + '_'))\n .map((key) => ({ [key.substring(key.indexOf('_') + 1)]: instanceData[key] }));\n\n // If there are meta data properties, they'll be merged into a Record where the\n // key is the property name without the underscore and the actual properties name.\n // So { 'xyz_title': 'John Doe' } will be merged into { title: 'John Doe' }\n if (metaData.length) {\n const meta = metaData.reduce((acc, cur) => ({ ...acc, ...cur }), {});\n item.meta = meta;\n }\n\n return item;\n};\n\nconst mapToTileData = (objects: DmsObject[]): TileData[] => {\n return objects.map((dmsObject) => {\n const sots = dmsObject.sots || [];\n\n const tli: TileData = {\n objectTypeId: dmsObject.objectTypeId,\n id: dmsObject.id,\n actions: undefined,\n badges: undefined,\n instanceData: dmsObject.data,\n dmsObject,\n title: { rendererType: 'text', propertyName: BaseObjectTypeField.PARENT_OBJECT_TYPE_ID, value: dmsObject.data[FS_PROPERTIES.name] }\n };\n\n tli.icon = { rendererType: 'icon', propertyName: BaseObjectTypeField.OBJECT_TYPE_ID, value: BaseObjectTypeField.OBJECT_TYPE_ID };\n\n return tli;\n });\n};\n\nexport const mapSearchResult = (res: any): TileData[] => {\n return mapToTileData(res);\n};\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NavigationStart, Router } from '@angular/router';\nimport { patchState, signalState } from '@ngrx/signals';\nimport {\n BackendService,\n BaseObjectTypeField,\n ClipboardService,\n ContentStreamField,\n DmsObject,\n DmsService,\n EventService,\n SearchQuery,\n SearchService,\n SystemType,\n YuvEvent,\n YuvEventType\n} from '@yuuvis/client-core';\nimport { Action, ActionsService, BASE_ACTION } from '@yuuvis/client-framework/actions';\nimport { YvcOverlayService } from '@yuuvis/components/overlay';\nimport { Observable, Subject, catchError, filter, forkJoin, map, of, switchMap, tap } from 'rxjs';\nimport { ACTION_CONTEXT, APP_ID, APP_SCHEMA, FS_PROPERTIES, FS_SOTS } from '../../drive.schema';\nimport { DRIVE_APP_BREADCRUMB_MAX_DEPTH } from '../tokens';\nimport {\n BreadCrumb,\n CreateError,\n CreateResult,\n DRIVE_ACTION_MODE,\n DRIVE_EVENT,\n DRIVE_ROOT_FOLDER_ID,\n DriveState,\n DriveValidatePayload,\n DriveValidateResponse\n} from './drive.interface';\nimport { ResolveNameConflictsComponent } from './resolve-name-conflicts/resolve-name-conflicts.component';\nimport { ResolveNameConflictsPayload } from './resolve-name-conflicts/resolve-name-conflicts.interface';\nimport { mapSearchResult } from './versions/versions.mapping';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DriveService {\n readonly #actionsService = inject(ActionsService);\n readonly #eventService = inject(EventService);\n readonly #router = inject(Router);\n readonly #dmsService = inject(DmsService);\n readonly #searchService = inject(SearchService);\n readonly #overlay = inject(YvcOverlayService);\n readonly #backend = inject(BackendService);\n readonly #clipboardService = inject(ClipboardService);\n\n private readonly MAX_DEPTH: number = inject(DRIVE_APP_BREADCRUMB_MAX_DEPTH);\n private breadcrumbCache = new Map<string, { name: string; id: string; parentId: string | null }>();\n\n #eventSource = new Subject<string>();\n readonly events$: Observable<string> = this.#eventSource.asObservable();\n\n readonly #defaultSort: {\n property: string;\n order: 'asc' | 'desc';\n } = {\n property: FS_PROPERTIES.name,\n order: 'asc'\n };\n\n readonly initialState: DriveState = {\n currentFolder: null,\n query: null,\n queryTitle: null,\n selection: [],\n actions: [],\n busy: false,\n sort: this.#defaultSort,\n breadcrumb: {\n loading: false,\n partial: false,\n items: [],\n folder: null\n },\n versions: {\n versionsList: [],\n selectedVersion: null\n },\n selectedDmsObject: null\n };\n\n readonly state$ = signalState<DriveState>(this.initialState);\n readonly breadcrumbFolderPreview = this.state$.breadcrumb.folder;\n private _busyTaskCount = 0;\n private _defaultRibbonActions: Action[] = [];\n lastRouteURL?: string;\n\n constructor() {\n this.#router.events\n .pipe(\n takeUntilDestroyed(),\n filter((e) => this.state$.selection().length > 0 && e instanceof NavigationStart)\n )\n // clear selection on route chnages\n .subscribe({ next: () => this.setSelection([]) });\n\n this.#eventService.on(YuvEventType.DMS_OBJECT_UPDATED).subscribe((e: YuvEvent) => {\n // check if current selection contains the updated object\n const dmsObject = e.data as DmsObject;\n const selection = this.state$.selection();\n const matchIdx = selection.findIndex((o) => o.id === dmsObject.id);\n if (matchIdx !== -1) {\n // update the object in the selection\n selection[matchIdx] = dmsObject;\n patchState(this.state$, { selection: [...selection] });\n }\n });\n\n this.#eventService\n .on(YuvEventType.DMS_OBJECT_DELETED, YuvEventType.DMS_OBJECT_CREATED, YuvEventType.DMS_OBJECTS_MOVED)\n .subscribe(() => this.emitEvent(DRIVE_EVENT.refresh));\n }\n\n #mapedCurrentFolder() {\n return this.state$.currentFolder() === DRIVE_ROOT_FOLDER_ID ? null : this.state$.currentFolder();\n }\n\n emitEvent(evt: string) {\n this.#eventSource.next(evt);\n }\n\n setBusy(busy: boolean) {\n if (busy) this._busyTaskCount++;\n else if (this._busyTaskCount > 0) this._busyTaskCount--;\n patchState(this.state$, { busy: this._busyTaskCount !== 0 });\n }\n\n setSelection(o: DmsObject[]) {\n patchState(this.state$, { selection: o });\n this._getActions();\n }\n\n updateQuery(query: SearchQuery, queryTitle: string | null = null) {\n patchState(this.state$, {\n query: this.applyFolderListSearchConditions(query),\n queryTitle: queryTitle\n });\n }\n\n setSort(property: string, order: 'asc' | 'desc') {\n const stateQuery = this.state$.query();\n if (stateQuery) {\n const clonedQueryState = structuredClone(stateQuery);\n\n // TODO: remove if folders should stay on top\n clonedQueryState.sort = [];\n\n const sort = property ? { property, order } : { ...this.#defaultSort, order };\n\n patchState(this.state$, { query: clonedQueryState, sort });\n this.applyFolderListSearchConditions(clonedQueryState, !property);\n }\n }\n\n updateCurrentFolder(currentFolderID: string | null | undefined) {\n patchState(this.state$, { currentFolder: currentFolderID || null });\n }\n\n #copyToFolder(objects: DmsObject[], folderId: string | null, options: { waitForSearchConsistency: boolean }, validateNames = true): Observable<any> {\n return validateNames\n ? this.validateNames(\n objects.filter((o) => o.sots.includes(FS_SOTS.object)).map((f) => f.data[FS_PROPERTIES.name] as string),\n folderId\n ).pipe(\n switchMap((res: DriveValidateResponse) => {\n if (res.existingFileNames?.length || res.invalidFileNames?.length) {\n this.#resolveNameConflicts({\n existingFileNames: res.existingFileNames,\n invalidFileNames: res.invalidFileNames,\n mode: 'copy',\n items: objects\n });\n return of([]);\n } else return this.#dmsService.copyDmsObjects(folderId, objects, options);\n })\n )\n : this.#dmsService.copyDmsObjects(folderId, objects, options);\n }\n\n #moveToFolder(objects: DmsObject[], folderId: string | null, options: { waitForSearchConsistency: boolean }, validateNames = true): Observable<any> {\n return validateNames\n ? this.validateNames(\n objects.filter((o) => o.sots.includes(FS_SOTS.object)).map((f) => f.data[FS_PROPERTIES.name] as string),\n folderId\n ).pipe(\n switchMap((res: DriveValidateResponse) => {\n if (res.existingFileNames?.length || res.invalidFileNames?.length) {\n console.log('VALIDATION: ', { res });\n this.#resolveNameConflicts({\n existingFileNames: res.existingFileNames,\n invalidFileNames: res.invalidFileNames,\n mode: 'move',\n items: objects\n });\n return of([]);\n } else return this.#dmsService.moveDmsObjects(folderId, objects, options);\n })\n )\n : this.#dmsService.moveDmsObjects(folderId, objects, options);\n }\n\n copyToCurrentFolder(objects: DmsObject[], validateNames = true): Observable<any> {\n const options = { waitForSearchConsistency: true };\n return this.#copyToFolder(objects, this.#mapedCurrentFolder(), options, validateNames);\n }\n\n moveToCurrentFolder(objects: DmsObject[], validateNames = true): Observable<any> {\n const options = { waitForSearchConsistency: true };\n return this.#moveToFolder(objects, this.#mapedCurrentFolder(), options, validateNames);\n }\n\n #resolveNameConflicts(payload: ResolveNameConflictsPayload) {\n this.#overlay.open(ResolveNameConflictsComponent, payload, {\n maxWidth: '400px'\n });\n }\n\n pasteFromClipboard(destinationObject?: DmsObject): Observable<any> {\n const cd = this.#clipboardService.getClipboardData(APP_ID);\n const destination = destinationObject?.isFolder ? destinationObject.id : this.#mapedCurrentFolder();\n return (\n cd && cd.objects && cd.objects.length > 0\n ? cd?.mode === DRIVE_ACTION_MODE.CUT\n ? this.#moveToFolder(cd.objects || [], destination, { waitForSearchConsistency: true }, true)\n : cd?.mode === DRIVE_ACTION_MODE.COPY\n ? this.#copyToFolder(cd.objects || [], destination, { waitForSearchConsistency: true }, true)\n : of(null)\n : of(null)\n ).pipe(\n tap((res) => {\n res && this.emitEvent(DRIVE_EVENT.refresh);\n this.#clipboardService.clear();\n })\n );\n }\n\n checkNamesAndUpload(files: File[], data?: Record<string, unknown>): Observable<CreateResult[]> {\n return this.validateNames(\n files.map((f) => f.name),\n this.#mapedCurrentFolder()\n ).pipe(\n switchMap((res: DriveValidateResponse) => {\n if (res.existingFileNames?.length || res.invalidFileNames?.length) {\n const resPayload: ResolveNameConflictsPayload = {\n existingFileNames: res.existingFileNames,\n invalidFileNames: res.invalidFileNames,\n mode: 'upload',\n items: files,\n data\n };\n this.#overlay.open(ResolveNameConflictsComponent, resPayload);\n return of([]);\n } else return this.upload(files, data);\n })\n );\n }\n\n uploadContent(objectId: string, file: File): Observable<CreateResult[]> {\n return this.#dmsService.uploadContent(objectId, file);\n }\n\n /**\n * Uploads files to the current folder\n * @param files files to be uploaded\n * @param data additional data to be applied to the object\n */\n upload(files: File[], data?: Record<string, unknown>): Observable<CreateResult[]> {\n return forkJoin(\n files.map((file: File) => {\n const uploadData: Record<string, any> = data || {};\n // apply filesystem SOT\n const sots = uploadData[BaseObjectTypeField.SECONDARY_OBJECT_TYPE_IDS] || [];\n uploadData[BaseObjectTypeField.SECONDARY_OBJECT_TYPE_IDS] = [...sots, FS_SOTS.object];\n // setup the name to be the filename\n uploadData[FS_PROPERTIES.name] = file.name;\n const cf = this.#mapedCurrentFolder();\n if (cf && cf !== DRIVE_ROOT_FOLDER_ID) uploadData[BaseObjectTypeField.PARENT_ID] = cf;\n return this.#dmsService.createDmsObject(SystemType.DOCUMENT, uploadData, [file], file.name).pipe(\n map((res) => ({ id: res[0] })),\n catchError((e: HttpErrorResponse) => of({ error: this.#mapCreateError(e) }))\n );\n })\n );\n }\n\n createFolder(name: string): Observable<CreateResult> {\n const parentID = this.#mapedCurrentFolder();\n const data: Record<string, any> = {};\n data[FS_PROPERTIES.name] = name;\n // apply filesystem SOT\n data[BaseObjectTypeField.SECONDARY_OBJECT_TYPE_IDS] = [FS_SOTS.object];\n if (parentID && parentID !== DRIVE_ROOT_FOLDER_ID) data[BaseObjectTypeField.PARENT_ID] = parentID;\n return this.#dmsService.createDmsObject(APP_SCHEMA.types.folder.objectType || '', data, []).pipe(\n map((res) => ({ id: res[0] })),\n catchError((e: HttpErrorResponse) => of({ error: this.#mapCreateError(e) }))\n );\n }\n\n #mapCreateError(e: HttpErrorResponse): CreateError {\n let error: CreateError = 'default';\n const ec = e.error.serviceErrorCode;\n if (ec === 99999) {\n const iec = e.error.innerError?.serviceErrorCode;\n if (iec === 11000) error = 'nameExists';\n }\n return error;\n }\n\n /**\n * Checks for existing names and invalid characters\n * @param name The name to be checked\n * @param parentId The parent folder (will be 'root' if not provided)\n * @returns already existing names\n */\n validateNames(names: string[], parentId?: string | null): Observable<DriveValidateResponse> {\n console.log({ names, parentId });\n\n if (parentId === DRIVE_ROOT_FOLDER_ID) parentId = undefined;\n const dvp: DriveValidatePayload = {\n app: 'osdrive',\n fileNames: names,\n targetFolderId: parentId || undefined\n };\n return this.#backend.post('/dms/objects/validate', dvp).pipe(catchError((res: HttpErrorResponse) => of(res.error)));\n }\n\n getDefaultRibbonActions() {\n if (!this._defaultRibbonActions.length) {\n //[BASE_ACTION.download, BASE_ACTION.delete, 'app.drive.action.rename', BASE_ACTION.copy, BASE_ACTION.cut]\n Object.values({ ...BASE_ACTION, rename: 'app.drive.action.rename' }).forEach((id) => {\n const a = this.#actionsService.getActionById(id, ACTION_CONTEXT);\n if (a) this._defaultRibbonActions.push(a);\n });\n }\n return this._defaultRibbonActions;\n }\n\n private _getActions() {\n this.setBusy(true);\n this.#actionsService\n .getActions(this.state$.selection(), {\n context: ACTION_CONTEXT\n })\n .subscribe((actions: Action[]) => {\n patchState(this.state$, { actions });\n })\n .add(() => this.setBusy(false));\n }\n\n /**\n * Apply search conditions regarding folder listings\n * @param q\n */\n applyFolderListSearchConditions(q: SearchQuery, addBaseTypeId = true): SearchQuery {\n // folders first\n if (!q.sort) q.sort = [];\n addBaseTypeId &&\n q.sort.push({\n field: BaseObjectTypeField.BASE_TYPE_ID,\n order: 'desc'\n });\n q = this.applyBasicSearchConditions(q);\n\n return q;\n }\n\n applyBasicSearchConditions(q: SearchQuery): SearchQuery {\n q.fields = [\n BaseObjectTypeField.OBJECT_ID,\n BaseObjectTypeField.MODIFICATION_DATE,\n BaseObjectTypeField.MODIFIED_BY,\n ContentStreamField.FILENAME,\n ContentStreamField.MIME_TYPE,\n ContentStreamField.ID,\n ContentStreamField.LENGTH\n ];\n if (!q.types || !q.types.includes(FS_SOTS.object)) q.types = [...(q.types || []), FS_SOTS.object];\n // q.sortOptions.push(new SortOption(BaseObjectTypeField.BASE_TYPE_ID, 'desc'));\n const sort = this.state$.sort() || this.#defaultSort;\n if (!q.sort) q.sort = [];\n q.sort.push({\n field: sort.property,\n order: sort.order\n });\n q.includePermissions = true;\n // new SortOption(sort.property, sort.order));\n return q;\n }\n\n resolveFilesState(id: string) {\n return this.getFolderHierarchy(id);\n }\n\n getFolderHierarchy(folderId: string): Observable<BreadCrumb[]> {\n patchState(this.state$, {\n breadcrumb: {\n ...this.initialState.breadcrumb,\n loading: true\n }\n });\n\n return folderId === DRIVE_ROOT_FOLDER_ID\n ? of([])\n : this.#fetchFolder(folderId, 0, this.MAX_DEPTH).pipe(\n tap((res: { partial: boolean; items: BreadCrumb[] }) => {\n let items: BreadCrumb[] = [];\n if (res.items.length > 0) {\n items = [...items, ...res.items];\n }\n\n patchState(this.state$, {\n breadcrumb: {\n ...this.initialState.breadcrumb,\n partial: res.partial,\n loading: false,\n items\n }\n });\n }),\n map((res) => res.items)\n );\n }\n\n #fetchFolder(\n folderId: string,\n depth: number,\n maxDepth: number\n ): Observable<{\n partial: boolean;\n items: BreadCrumb[];\n }> {\n if (depth >= maxDepth) return of({ partial: true, items: [] });\n const cachedFolder = this.breadcrumbCache.get(folderId);\n if (cachedFolder) {\n return cachedFolder.parentId\n ? this.#fetchFolder(cachedFolder.parentId, depth + 1, maxDepth).pipe(\n map((parentFolders) => ({\n partial: parentFolders.partial,\n items: [...parentFolders.items, { name: cachedFolder.name, id: cachedFolder.id }]\n }))\n )\n : of({\n partial: false,\n items: [{ name: cachedFolder.name, id: cachedFolder.id }]\n });\n }\n return this.#dmsService.getDmsObject(folderId).pipe(\n map((folder) => {\n const currentFolder = {\n name: folder.data[FS_PROPERTIES.name] as string,\n id: folder.data[BaseObjectTypeField.OBJECT_ID] as string,\n parentId: folder.parentId\n };\n // this.breadcrumbCache.set(folder.id, currentFolder);\n return currentFolder;\n }),\n switchMap((folder) => {\n if (!folder.parentId) {\n return of({\n partial: false,\n items: [{ name: folder.name, id: folder.id }]\n });\n }\n\n return this.#fetchFolder(folder.parentId, depth + 1, maxDepth).pipe(\n map((parentFolders) => ({\n partial: parentFolders.partial,\n items: [...parentFolders.items, { name: folder.name, id: folder.id }]\n }))\n );\n })\n );\n }\n\n getVersions(id: string): Observable<DmsObject[]> {\n patchState(this.state$, { busy: true });\n return this.#dmsService.getDmsObjectVersions(id).pipe(\n tap((versions) => {\n patchState(this.state$, {\n busy: false,\n versions: {\n versionsList: mapSearchResult(versions),\n selectedVersion: this.state$.versions().selectedVersion\n }\n });\n })\n );\n }\n\n getSelectedDmsObject(id: string): Observable<DmsObject> {\n return this.#dmsService.getDmsObject(id).pipe(\n tap((dmsObject) =>\n patchState(this.state$, {\n selectedDmsObject: dmsObject,\n versions: {\n versionsList: this.state$.versions.versionsList(),\n selectedVersion: [dmsObject]\n }\n })\n )\n );\n }\n\n setSelectedVersion(version: any) {\n this.setBusy(true);\n return this.#dmsService.getDmsObjectVersion(version.dmsObject.id, version.dmsObject.version).pipe(\n tap((res) =>\n patchState(this.state$, {\n versions: {\n versionsList: this.state$.versions.versionsList(),\n selectedVersion: [res]\n }\n })\n ),\n tap(() => this.setBusy(false))\n );\n }\n\n setNewVersion(version?: number): Observable<DmsObject[] | null> {\n patchState(this.state$, { busy: true });\n const selectedVersion = this.state$.versions.selectedVersion();\n if (selectedVersion) {\n const versionNumber: number = version ?? selectedVersion[0].version;\n return this.#dmsService.restoreDmsObject(selectedVersion[0].id, versionNumber).pipe(switchMap((object: DmsObject) => this.getVersions(object.id)));\n }\n return of(null);\n }\n\n clearVersions() {\n patchState(this.state$, { versions: this.initialState.versions });\n }\n}\n","import { AbstractControl, AsyncValidatorFn, ValidationErrors } from '@angular/forms';\nimport { Observable, of, timer } from 'rxjs';\nimport { map, switchMap } from 'rxjs/operators';\nimport { DriveService } from '../../services/drive/drive.service';\nimport { DriveValidateResponse } from '../../services/drive/drive.interface';\n\nexport class RenameValidator {\n static createValidator(driveService: DriveService): AsyncValidatorFn {\n return (control: AbstractControl): Observable<ValidationErrors | null> => {\n return timer(500).pipe(\n switchMap(() => {\n return control.value['name'] !== control.value['_initialName']\n ? driveService.validateNames([control.value['name']], driveService.state$.currentFolder()).pipe(\n map((result: DriveValidateResponse) => {\n let res: any = null;\n if (result.existingFileNames.length) {\n res = { nameAlreadyExists: true };\n } else if (result.invalidFileNames?.length) {\n res = { invalidFileNames: true };\n }\n return res;\n })\n )\n : of(null);\n })\n );\n };\n }\n}\n","import { Provider } from '@angular/core';\nimport { DRIVE_APP_BREADCRUMB_MAX_DEPTH } from '../tokens';\n\n/**\n *\n * @param breadkrumbMaxDepth default 3\n * @returns\n */\nexport const provideDrive = (breadkrumbMaxDepth = 3): Provider => {\n return { provide: DRIVE_APP_BREADCRUMB_MAX_DEPTH, useValue: breadkrumbMaxDepth };\n};\n","import { CommonModule } from '@angular/common';\nimport { Component, effect, inject, input, output } from '@angular/core';\nimport { FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { DmsObject, TranslateModule } from '@yuuvis/client-core';\nimport { FormInputComponent, StringComponent } from '@yuuvis/client-framework/forms';\nimport { RenameValidator } from '../../actions/rename/rename.validator';\nimport { FS_PROPERTIES } from '../../drive.schema';\nimport { DriveService } from '../../services';\n\n@Component({\n selector: 'ymd-object-name',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, FormInputComponent, StringComponent, TranslateModule],\n templateUrl: './object-name.component.html',\n styleUrl: './object-name.component.scss'\n})\nexport class ObjectNameComponent {\n #fb = inject(FormBuilder);\n #drive = inject(DriveService);\n\n busy = false;\n error?: string;\n\n headline = input<string>();\n submitButton = input.required<string>();\n cancelButton = input<string>('');\n isFile = input<boolean>(false);\n isRename = input<boolean>(false);\n item = input<DmsObject>();\n disabled = input<boolean>(false);\n #disabledEffect = effect(() => {\n const d = this.disabled();\n d ? this.nameForm.get('name')?.disable() : this.nameForm.get('name')?.enable();\n });\n\n #itemFormEffect = effect(() => this.item() && this.#setupForm(this.item()?.data));\n\n nameChange = output<string>();\n onClose = output<void>();\n\n nameForm: FormGroup = this.#fb.group(\n {\n _initialName: [''],\n name: ['', Validators.required]\n },\n {\n asyncValidators: [RenameValidator.createValidator(this.#drive)]\n }\n );\n\n\n #setupForm(data?: any) {\n this.nameForm.patchValue(\n {\n _initialName: data ? data[FS_PROPERTIES.name] || '' : '',\n name: data ? data[FS_PROPERTIES.name] || '' : ''\n },\n {\n emitEvent: false\n }\n );\n }\n\n submitForm() {\n this.nameChange.emit(this.nameForm.value.name);\n }\n}\n","<form [formGroup]=\"nameForm\" (ngSubmit)=\"submitForm()\">\n @if (headline() && headline()?.length) {\n <header>{{ headline() }}</header>\n }\n <main>\n <yuv-form-input [label]=\"'yuv.app.drive.property.name' | translate\" [required]=\"true\"> <yuv-string formControlName=\"name\"></yuv-string></yuv-form-input>\n @if (nameForm.hasError('nameAlreadyExists')) {\n <div class=\"error\">{{ 'yuv.app.drive.create.error.name.exist' | translate }}</div>\n }\n @if (nameForm.hasError('invalidFileNames')) {\n <div class=\"error\">{{ 'yuv.app.drive.create.error.name.invalid' | translate }}</div>\n }\n </main>\n\n <footer>\n <button class=\"primary\" type=\"submit\" [disabled]=\"disabled() || nameForm.invalid || busy || error\">{{ submitButton() }}</button>\n @if (cancelButton() && cancelButton().length) {\n <button class=\"secondary\" type=\"button\" (click)=\"onClose.emit()\" [disabled]=\"busy\">{{ cancelButton() }}</button>\n }\n </footer>\n</form>\n","import { CommonModule } from '@angular/common';\nimport { Component, inject, signal } from '@angular/core';\nimport { DmsObject, DmsService, TranslateModule } from '@yuuvis/client-core';\nimport { YvcOverlayRef } from '@yuuvis/components/overlay';\nimport { ObjectNameComponent } from '../../components/object-name/object-name.component';\nimport { DRIVE_EVENT } from '../../services/drive/drive.interface';\nimport { DriveService } from '../../services/drive/drive.service';\nimport { FS_PROPERTIES } from '../../drive.schema';\n\n@Component({\n selector: 'ymd-rename',\n standalone: true,\n imports: [CommonModule, ObjectNameComponent, TranslateModule],\n templateUrl: './rename.component.html',\n styleUrl: './rename.component.scss',\n host: {\n '[class.busy]': 'busy()'\n }\n})\nexport class RenameComponent {\n public readonly overlayRef = inject(YvcOverlayRef);\n readonly #drive = inject(DriveService);\n readonly #dmsService = inject(DmsService);\n\n item: DmsObject = this.overlayRef.data;\n busy = signal<boolean>(false);\n\n rename(name: string) {\n this.busy.set(true);\n const data: Record<string, any> = {};\n data[FS_PROPERTIES.name] = name;\n this.#dmsService.updateDmsObject(this.item.id, data).subscribe({\n next: () => {\n this.overlayRef.close();\n this.#drive.emitEvent(DRIVE_EVENT.refresh);\n },\n complete: () => this.busy.set(false)\n });\n }\n}\n","<div class=\"yuv-loader-linear\"></div>\n<ymd-object-name\n [item]=\"item\"\n [isRename]=\"true\"\n [isFile]=\"!item.isFolder\"\n [headline]=\"'yuv.app.drive.action.rename.headline' | translate\"\n [submitButton]=\"'yuv.app.drive.action.rename.submit' | translate\"\n [cancelButton]=\"'yuv.app.drive.action.rename.cancel' | translate\"\n (nameChange)=\"rename($event)\"\n (onClose)=\"overlayRef.close()\"\n></ymd-object-name>\n","import { inject } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { DmsObject } from '@yuuvis/client-core';\nimport { Action, ActionSupport, SelectionRange } from '@yuuvis/client-framework/actions';\nimport { YvcOverlayService } from '@yuuvis/components/overlay';\nimport { Observable, of } from 'rxjs';\nimport { RenameComponent } from './rename.component';\n\nexport class RenameAction implements Action {\n private translate = inject(TranslateService);\n private overlay = inject(YvcOverlayService);\n\n id = 'app.drive.action.rename';\n label = this.translate.instant('yuv.app.drive.action.rename.label');\n description = this.translate.instant('yuv.app.drive.action.rename.description');\n priority = 2;\n icon =\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20px\" viewBox=\"0 -960 960 960\" width=\"20px\" fill=\"#e8eaed\"><path d=\"M480.28-96Q401-96 331-126t-122.5-82.5Q156-261 126-330.96t-30-149.5Q96-560 126-629.5q30-69.5 82.5-122T330.96-834q69.96-30 149.5-30t149.04 30q69.5 30 122 82.5T834-629.28q30 69.73 30 149Q864-401 834-331t-82.5 122.5Q699-156 629.28-126q-69.73 30-149 30Zm-.28-72q130 0 221-91t91-221q0-130-91-221t-221-91q-130 0-221 91t-91 221q0 130 91 221t221 91ZM336-336v-113l210-209q7.26-7.41 16.13-10.71Q571-672 579.76-672q9.55 0 18.31 3.5Q606.83-665 614-658l44 45q6.59 7.26 10.29 16.13Q672-588 672-579.24t-3.29 17.92q-3.3 9.15-10.71 16.32L449-336H336Zm288-243-45-45 45 45ZM384-384h45l115-115-22-23-22-22-116 115v45Zm138-138-22-22 44 45-22-23Z\"/></svg>';\n \n group = 'common';\n range = SelectionRange.SINGLE_SELECT;\n supports: ActionSupport = {};\n\n isExecutable(selection: DmsObject[]) {\n return of(selection?.length === 1 && !!selection[0].permissions?.writeIndexData);\n }\n\n run(selection: DmsObject[]): Observable<boolean> {\n this.overlay.open(RenameComponent, selection[0], {\n width: '400px',\n maxWidth: '90vw',\n });\n return of(true);\n }\n}\n","import { inject } from '@angular/core';\nimport { ClipboardService, DmsObject, TranslateService } from '@yuuvis/client-core';\nimport { AbstractContextAction, Action, ActionSupport, SelectionRange } from '@yuuvis/client-framework/actions';\nimport { finalize, Observable, of } from 'rxjs';\nimport { DriveService } from '../../services';\nimport { ActivatedRoute } from '@angular/router';\nimport { APP_ID } from '../../drive.schema';\n\nexport class PasteAction extends AbstractContextAction implements Action {\n readonly translate = inject(TranslateService);\n readonly #clipboardService = inject(ClipboardService);\n readonly #drive = inject(DriveService);\n readonly #route = inject(ActivatedRoute);\n\n id = 'app.drive.action.paste';\n label = this.translate.instant('yuv.app.drive.action.paste.label');\n description = this.translate.instant('yuv.app.drive.action.paste.description');\n priority = 2;\n icon =\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"#5f6368\" viewBox=\"0 -960 960 960\"><path d=\"M200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h167q11-35 43-57.5t70-22.5q40 0 71.5 22.5T594-840h166q33 0 56.5 23.5T840-760v560q0 33-23.5 56.5T760-120H200Zm0-80h560v-560h-80v120H280v-120h-80v560Zm280-560q17 0 28.5-11.5T520-800q0-17-11.5-28.5T480-840q-17 0-28.5 11.5T440-800q0 17 11.5 28.5T480-760Z\"/></svg>';\n\n group = 'common';\n range = SelectionRange.SINGLE_SELECT;\n supports: ActionSupport = {};\n\n isExecutable(items: DmsObject[]) {\n const canWrite = !!items[0]?.permissions?.writeIndexData;\n const cd = this.#clipboardService.getClipboardData(APP_ID);\n return of(canWrite && !!cd?.objects && cd.objects.length > 0);\n }\n\n run(items: DmsObject[]): Observable<boolean> {\n this.#drive.setBusy(true);\n this.#drive\n .pasteFromClipboard(items[0])\n .pipe(finalize(() => this.#drive.setBusy(false)))\n .subscribe();\n return of(true);\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { TranslateService } from '@ngx-translate/core';\nimport { DmsObject } from '@yuuvis/client-core';\nimport { AbstractContextAction, Action, ActionSupport, SelectionRange } from '@yuuvis/client-framework/actions';\nimport { finalize, Observable, of } from 'rxjs';\nimport { DriveService } from '../../services';\n\nexport class UpdateContentAction extends AbstractContextAction implements Action {\n readonly translate = inject(TranslateService);\n readonly #router = inject(Router);\n readonly #drive = inject(DriveService);\n readonly #document = inject(DOCUMENT);\n\n id = 'app.drive.action.new.content.version';\n label = this.translate.instant('yuv.app.drive.action.new.version');\n description = this.translate.instant('yuv.app.drive.action.new.version.description');\n priority = 2;\n icon =\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"#5f6368\" viewBox=\"0 -960 960 960\"><path d=\"M500-520h80v-80h80v-80h-80v-80h-80v80h-80v80h80v80Zm-80 160h240v-80H420v80ZM320-200q-33 0-56.5-23.5T240-280v-560q0-33 23.5-56.5T320-920h280l240 240v400q0 33-23.5 56.5T760-200H320Zm0-80h440v-360L560-840H320v560ZM160-40q-33 0-56.5-23.5T80-120v-560h80v560h440v80H160Zm160-240v-560 560Z\"/></svg>';\n\n group = 'common';\n range = SelectionRange.SINGLE_SELECT;\n supports: ActionSupport = {};\n\n isExecutable(selection: DmsObject[]): Observable<boolean> {\n const selected = selection[0];\n const canWrite = !!selected?.permissions?.writeContent;\n return of(canWrite && selection.length === 1 && !selected.isFolder);\n }\n\n run(selection: DmsObject[]): Observable<boolean> {\n if (!selection[0].isFolder) {\n const fileInput = this.#document.createElement('input');\n fileInput.type = 'file';\n fileInput.multiple = false;\n\n fileInput.onchange = (e) => {\n this.#drive.setBusy(true);\n const file = (e.target as HTMLInputElement).files?.[0];\n file &&\n this.#drive\n .uploadContent(selection[0].id, file)\n .pipe(finalize(() => this.#drive.setBusy(false)))\n .subscribe();\n };\n fileInput.click();\n fileInput.remove();\n }\n return of(true);\n }\n}\n","import { inject } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { DmsObject, NotificationService, Utils } from '@yuuvis/client-core';\nimport { AbstractContextAction, Action, ActionSupport, SelectionRange } from '@yuuvis/client-framework/actions';\nimport { ShellService } from '@yuuvis/client-shell-core';\nimport { catchError, from, map, Observable, of } from 'rxjs';\nimport { APP_ID } from '../../drive.schema';\n\nexport class CopyLinkAction extends AbstractContextAction implements Action {\n translate = inject(TranslateService);\n #notification = inject(NotificationService);\n #shell = inject(ShellService);\n\n id = 'app.drive.action.copy-link';\n label = this.translate.instant('yuv.app.drive.action.copy-link');\n description = this.translate.instant('yuv.app.drive.action.copy-link.description');\n priority = 2;\n icon =\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#e8eaed\"><path d=\"m678-134 46-46-64-64-46 46q-14 14-14 32t14 32q14 14 32 14t32-14Zm102-102 46-46q14-14 14-32t-14-32q-14-14-32-14t-32 14l-46 46 64 64ZM735-77q-37 37-89 37t-89-37q-37-37-37-89t37-89l148-148q37-37 89-37t89 37q37 37 37 89t-37 89L735-77ZM200-200v-560 560Zm0 80q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h168q13-36 43.5-58t68.5-22q38 0 68.5 22t43.5 58h168q33 0 56.5 23.5T840-760v245q-20-5-40-5t-40 3v-243H200v560h243q-3 20-3 40t5 40H200Zm280-670q13 0 21.5-8.5T510-820q0-13-8.5-21.5T480-850q-13 0-21.5 8.5T450-820q0 13 8.5 21.5T480-790ZM280-600v-80h400v80H280Zm0 160v-80h400v34q-8 5-15.5 11.5T649-460l-20 20H280Zm0 160v-80h269l-49 49q-8 8-14.5 15.5T474-280H280Z\"/></svg>';\n\n group = 'common';\n range = SelectionRange.SINGLE_SELECT;\n supports: ActionSupport = {};\n\n isExecutable(selection: DmsObject[]): Observable<boolean> {\n return from(navigator.permissions.query({ name: 'clipboard-write' } as any)).pipe(\n catchError(() => of({ state: 'denied' })),\n map((result) => (result.state === 'granted' || result.state === 'prompt') && selection.length === 1)\n );\n }\n\n run(selection: DmsObject[]): Observable<boolean> {\n const o = selection[0];\n const uri = `${window.location.origin}${Utils.getBaseHref(true)}/${this.#shell.appBaseRoutes[APP_ID]}/${o.isFolder ? 'files' : 'object'}/${selection[0].id}`;\n\n navigator.clipboard\n .writeText(uri)\n .then(() => this.#notification.info(this.translate.instant('yuv.app.drive.action.copy-link.success')))\n .catch(() => {\n //\n });\n\n return of(true);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, inject, signal } from '@angular/core';\nimport { TranslateModule, TranslateService } from '@yuuvis/client-core';\nimport { YvcOverlayRef } from '@yuuvis/components/overlay';\nimport { CreateResult } from '../../../services/drive/drive.interface';\nimport { DriveService } from '../../../services/drive/drive.service';\nimport { ObjectNameComponent } from '../../object-name/object-name.component';\n\n@Component({\n selector: 'ymd-create-folder',\n standalone: true,\n imports: [CommonModule, ObjectNameComponent, TranslateModule],\n templateUrl: './create-folder.component.html',\n styleUrl: './create-folder.component.scss',\n host: {\n '[class.busy]': 'busy()'\n }\n})\nexport class CreateFolderComponent {\n private drive = inject(DriveService);\n private translate = inject(TranslateService);\n private parentModalRef = inject(YvcOverlayRef);\n\n busy = signal(false);\n\n message?: string;\n\n createFolder(name: string) {\n this.message = undefined;\n if (name) {\n this.busy.set(true);\n this.drive.createFolder(name).subscribe((res: CreateResult) => {\n if (res.error) {\n switch (res.error) {\n case 'nameExists':\n this.message = this.translate.instant('yuv.app.drive.create.error.name.exist');\n break;\n default:\n this.message = this.translate.instant('yuv.app.drive.create.error');\n }\n } else {\n this.close();\n }\n }).add(() => this.busy.set(false));\n }\n }\n\n close() {\n this.parentModalRef.close();\n }\n}\n","<div class=\"yuv-loader-linear\"></div>\n\n<ymd-object-name [disabled]=\"busy()\"\n [headline]=\"'yuv.app.drive.folder.create.headline' | translate\"\n [submitButton]=\"'yuv.app.drive.folder.create.submit' | translate\"\n [cancelButton]=\"'yuv.app.drive.action.rename.cancel' | translate\"\n (onClose)=\"close()\"\n (nameChange)=\"createFolder($event)\"\n></ymd-object-name>\n\n@if (message) {\n <div class=\"message\">{{message}}</div>\n}","import { CommonModule } from '@angular/common';\nimport { Component, ElementRef, inject, viewChild } from '@angular/core';\nimport { BaseObjectTypeField, ObjectCreateFlavor, SystemService, TranslateModule, TranslateService } from '@yuuvis/client-core';\nimport { ListComponent, ListItemDirective } from '@yuuvis/client-framework/list';\nimport { ObjectFlavor, ShellService } from '@yuuvis/client-shell-core';\nimport { YvcIconModule } from '@yuuvis/components/icon';\nimport { YvcOverlayRef, YvcOverlayService } from '@yuuvis/components/overlay';\nimport { APP_DRIVE_ICONS } from '../../../drive.icons';\nimport { CreateResult } from '../../../services/drive/drive.interface';\nimport { DriveService } from '../../../services/drive/drive.service';\nimport { CreateFolderComponent } from '../../overlay/create-folder/create-folder.component';\n\n@Component({\n selector: 'ymd-add-button-overlay',\n standalone: true,\n imports: [CommonModule, ListComponent, ListItemDirective, TranslateModule, YvcIconModule],\n templateUrl: './add-button-overlay.component.html',\n styleUrl: './add-button-overlay.component.scss'\n})\nexport class AddButtonOverlayComponent {\n #overlay = inject(YvcOverlayService);\n #oRef = inject(YvcOverlayRef);\n #drive = inject(DriveService);\n #shell = inject(ShellService);\n #system = inject(SystemService);\n private translate = inject(TranslateService);\n\n fileInput = viewChild.required<ElementRef>('fileInput');\n\n #uploadTargetFlavor?: ObjectCreateFlavor;\n\n icons = {\n folder: APP_DRIVE_ICONS.createFolder,\n file: APP_DRIVE_ICONS.createFile\n };\n\n defaultItems = [\n { icon: this.icons.folder, label: this.translate.instant('yuv.app.drive.create.folder') },\n { icon: this.icons.file, label: this.translate.instant('yuv.app.drive.create.file') }\n ];\n\n flavorListItems: {\n label: string;\n flavor: ObjectCreateFlavor;\n }[] = this.#shell.getObjectCreateFlavors().map((flavor) => ({\n label: this.translate.instant(flavor.id),\n flavor\n }));\n\n onListItemSelect(idx: number[]) {\n if (idx.length === 0) return;\n const fi = idx[0];\n if (fi === 0) {\n this.startCreateFolder();\n } else if (fi === 1) {\n this.startCreateDocument();\n } else {\n this.startCreateDocument();\n this.#uploadTargetFlavor = this.flavorListItems[fi - this.defaultItems.length]?.flavor;\n }\n }\n\n startCreateDocument() {\n if (!this.#uploadTargetFlavor || this.#uploadTargetFlavor.withFileUpload) {\n this.fileInput().nativeElement.click();\n } else if (this.#uploadTargetFlavor?.applyComponent) {\n this.#overlay.open(this.#uploadTargetFlavor.applyComponent, {\n flavor: this.#uploadTargetFlavor,\n onCancel: () => {\n console.log('cancel'); \n }\n });\n this.#uploadTargetFlavor = undefined;\n }\n }\n\n startCreateFolder() {\n this.#oRef?.close();\n this.#overlay.open(CreateFolderComponent, null, {\n width: '400px',\n maxWidth: '90vw'\n });\n }\n\n createDocument(inputEl: HTMLInputElement) {\n this.#oRef?.close();\n const files: File[] | undefined = inputEl.files ? Array.from(inputEl.files) : undefined;\n if (files) {\n const data = this.#uploadTargetFlavor?.sot ? { [BaseObjectTypeField.SECONDARY_OBJECT_TYPE_IDS]: [this.#uploadTargetFlavor.sot] } : undefined;\n this.#drive.setBusy(true);\n this.#drive\n .checkNamesAndUpload(files, data)\n .subscribe((createResult: CreateResult[]) => {\n const uploadErrors = createResult.filter((r) => !!r.error);\n if (uploadErrors.length) {\n // TODO: Handle upload errors\n console.error(uploadErrors);\n }\n if (this.#uploadTargetFlavor?.applyComponent) {\n this.#overlay.open(this.#uploadTargetFlavor.applyComponent, {\n createdObjectIDs: createResult.filter((r) => r.id).map((r) => r.id),\n flavor: this.#uploadTargetFlavor\n });\n }\n this.#uploadTargetFlavor = undefined;\n })\n .add(() => this.#drive.setBusy(false));\n }\n }\n}\n","<yuv-list (itemSelect)=\"onListItemSelect($event)\" selectOnEnter=\"true\">\n @for (i of defaultItems; track $index) {\n <div yuvListItem>\n <yvc-icon [svg]=\"i.icon\"></yvc-icon>\n {{ i.label }}\n </div>\n }\n\n <!-- Upload file with flavor -->\n @for (f of flavorListItems; track f.flavor.id) {\n <div class=\"flavor\" yuvListItem>\n <yvc-icon [svg]=\"f.flavor.icon\"></yvc-icon>\n {{ f.label }}\n </div>\n }\n</yuv-list>\n\n<input style=\"display: none\" multiple=\"true\" #fileInput type=\"file\" (change)=\"createDocument(fileInput)\" />\n","import { CommonModule } from '@angular/common';\nimport { Component, ElementRef, HostBinding, inject, input } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { YvcIconModule } from '@yuuvis/components/icon';\nimport { YvcOverlayRef, YvcOverlayService } from '@yuuvis/components/overlay';\nimport { APP_DRIVE_ICONS } from '../../drive.icons';\nimport { AddButtonOverlayComponent } from './add-button-overlay/add-button-overlay.component';\n\n@Component({\n selector: 'ymd-add-button',\n standalone: true,\n imports: [CommonModule, YvcIconModule, TranslateModule],\n templateUrl: './add-button.component.html',\n styleUrl: './add-button.component.scss'\n})\nexport class AddButtonComponent {\n private overlay = inject(YvcOverlayService);\n private elRef = inject(ElementRef);\n\n private _oRef?: YvcOverlayRef;\n\n @HostBinding('class.popover') popoverOpen = false;\n\n icon = APP_DRIVE_ICONS.addCircle;\n\n disabled = input<boolean>(false);\n\n open() {\n this._oRef = this.overlay.open(AddButtonOverlayComponent, null, {\n overlayClass: null,\n focusHandled: true\n }, this.elRef.nativeElement);\n this.popoverOpen = true;\n this._oRef.afterClosed$.subscribe(() => {\n this.popoverOpen = false})\n }\n}\n","\n <button class=\"toggle primary\" [disabled]=\"disabled()\" (click)=\"open()\">\n <yvc-icon [svg]=\"icon\"></yvc-icon><span class=\"label\">{{ 'yuv.app.drive.create.label' | translate }}</span>\n </button>\n\n","import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, HostListener, inject, OnInit, output, signal, viewChildren } from '@angular/core';\nimport { FormBuilder, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { BaseObjectTypeField, ContentStreamField, SystemService } from '@yuuvis/client-core';\nimport { ListItemDirective } from '@yuuvis/client-framework/list';\nimport { YvcIconModule } from '@yuuvis/components/icon';\nimport { APP_DRIVE_ICONS } from '../../drive.icons';\nimport { FS_PROPERTIES } from '../../drive.schema';\nimport { DriveService } from '../../services';\n\ninterface SortOption {\n label: string;\n value: string;\n type: 'sort' | 'order';\n}\n@Component({\n selector: 'ymd-sort',\n standalone: true,\n imports: [NgClass, YvcIconModule, ListItemDirective, ReactiveFormsModule],\n template: `\n <button popovertarget=\"sort\" class=\"sort-button\">\n <yvc-icon [svg]=\"sortIcon\" />\n </button>\n\n <dialog popover id=\"sort\" class=\"sort-menu\">\n <ol class=\"sort-group\" tabindex=\"0\">\n @for (option of sortFields(); track $index) {\n @let selected = sortForm.value[option.type] === option.value;\n <li\n class=\"sort-item\"\n [class.selected]=\"selected\"\n [ngClass]=\"{ selected: selected, 'sort-group-item': option.type === 'sort', 'order-group-item': option.type === 'order' }\"\n yuvListItem\n [selected]=\"selected\"\n (click)=\"selectSort(option.type, option.value)\"\n >\n <div class=\"label\">\n {{ option.label }}\n </div>\n </li>\n @if (sortFields().length - 3 === $index) {\n <div class=\"divider\"></div>\n }\n }\n </ol>\n </dialog>\n `,\n styleUrls: [`./sort.component.scss`],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SortComponent implements OnInit {\n readonly #drive = inject(DriveService);\n readonly #systemService = inject(SystemService);\n readonly #fb = inject(FormBuilder);\n readonly #dir = inject(Directionality);\n\n @HostListener('blur')\n onBlur() {\n this.#keyManager.setActiveItem(-1);\n }\n\n @HostListener('keydown', ['$event'])\n onKeydown(event: KeyboardEvent) {\n event.code === 'Escape' && this.#keyManager.setActiveItem(-1);\n event.target instanceof HTMLButtonElement && this.#keyManager.setActiveItem(-1);\n\n if (event.code === 'Space' || event.code === 'Enter') {\n const aii: number = this.#keyManager.activeItemIndex !== null ? this.#keyManager.activeItemIndex : -1;\n aii >= 0 && this.selectSortByIndex(aii);\n } else this.#keyManager?.onKeydown(event);\n }\n\n #keyManager!: ActiveDescendantKeyManager<ListItemDirective>;\n\n sortIcon = APP_DRIVE_ICONS.sort;\n\n items = viewChildren(ListItemDirective);\n #itemsEffect = effect(() => {\n const i = this.items();\n if (this.#keyManager) this.#keyManager.destroy();\n this.#keyManager = new ActiveDescendantKeyManager(i).withWrap().withHorizontalOrientation(this.#dir.value);\n });\n\n sortOptions = signal(this.#initSortOptions());\n orderOptions = signal<SortOption[]>([\n { label: 'Ascending', value: 'asc', type: 'order' },\n { label: 'Descending', value: 'desc', type: 'order' }\n ]);\n sortFields = computed(() => [...this.sortOptions(), ...this.orderOptions()]);\n\n sortForm!: FormGroup; // Reactive Form\n\n sortChanged = output<{ sort: string; order: string }>();\n\n selectSortByIndex(idx: number) {\n this.selectSort(this.sortFields()[idx].type, this.sortFields()[idx].value);\n }\n\n selectSort(type: string, value: string) {\n this.sortForm.get('sort')?.value === value ? this.sortForm.get('sort')?.setValue(null) : this.sortForm.get(type)?.setValue(value);\n this.onSelectionChange();\n }\n\n ngOnInit(): void {\n this.sortForm = this.#fb.nonNullable.group({\n sort: [],\n order: [this.orderOptions()[0].value] // Default: Ascending\n });\n\n // TODO: Check if this is necessary. It breaks stored queries first load by resetting sort\n // this.onSelectionChange();\n }\n\n // Emit the form values when changes occur\n onSelectionChange() {\n const { sort, order } = this.sortForm.value;\n this.#drive.setSort(sort, order);\n this.sortChanged.emit({ sort, order });\n }\n\n #initSortOptions() {\n const baseData: SortOption[] = [];\n const fields = [FS_PROPERTIES.name, BaseObjectTypeField.CREATION_DATE, BaseObjectTypeField.MODIFICATION_DATE];\n const contentFields = [ContentStreamField.LENGTH, ContentStreamField.MIME_TYPE];\n\n [...fields, ...contentFields].forEach((f) => {\n baseData.push({\n label: this.#systemService.getLocalizedLabel(f) || f,\n value: f,\n type: 'sort'\n });\n });\n\n return baseData;\n }\n}\n","import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { ChangeDetectionStrategy, Component, effect, HostListener, inject, OnDestroy, viewChildren } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { TranslateModule } from '@yuuvis/client-core';\nimport { ListItemDirective } from '@yuuvis/client-framework/list';\nimport { YvcDragScrollModule } from '@yuuvis/components/drag-scroll';\nimport { YvcIconModule } from '@yuuvis/components/icon';\nimport { APP_DRIVE_ICONS } from '../../drive.icons';\nimport { DRIVE_ROOT_FOLDER_ID, DriveService } from '../../services';\n\n@Component({\n selector: 'ymd-breadcrumb',\n standalone: true,\n imports: [YvcIconModule, YvcDragScrollModule, TranslateModule, ListItemDirective],\n templateUrl: './breadcrumb.component.html',\n styleUrl: './breadcrumb.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'breadcrumb',\n tabindex: '0'\n }\n})\nexport class BreadcrumbComponent implements OnDestroy {\n readonly #drive = inject(DriveService);\n readonly #router = inject(Router);\n readonly #dir = inject(Directionality);\n private route = inject(ActivatedRoute);\n\n @HostListener('blur')\n onBlur() {\n this.#keyManager.setActiveItem(-1);\n }\n\n @HostListener('keydown', ['$event'])\n onKeydown(event: KeyboardEvent) {\n if (event.code === 'Space' || event.code === 'Enter') {\n const aii: number = this.#keyManager.activeItemIndex !== null ? this.#keyManager.activeItemIndex : -1;\n if (aii >= 0) {\n this.navigation(aii === 0 ? DRIVE_ROOT_FOLDER_ID : this.breadcrumb().items[aii - 1].id);\n }\n } else this.#keyManager?.onKeydown(event);\n }\n\n #keyManager!: ActiveDescendantKeyManager<ListItemDirective>;\n homeIcon = APP_DRIVE_ICONS.home;\n\n breadcrumb = this.#drive.state$.breadcrumb;\n items = viewChildren(ListItemDirective);\n #itemsEffect = effect(() => {\n const i = this.items();\n if (this.#keyManager) this.#keyManager.destroy();\n this.#keyManager = new ActiveDescendantKeyManager(i).withWrap().withHorizontalOrientation(this.#dir.value);\n });\n\n navigation(id: string, event?: MouseEvent | Event) {\n event && event.preventDefault();\n const nav = ['..'];\n this.#keyManager.setActiveItem(-1);\n this.#router.navigate([...nav, id], { relativeTo: this.route });\n }\n\n ngOnDestroy(): void {\n this.#keyManager?.destroy();\n }\n}\n","@let bread = breadcrumb();\n\n<nav aria-label=\"breadcrumb\">\n <ol>\n @if (bread.items.length) {\n <li>\n <a tabindex=\"-1\" yuvListItem draggable=\"false\" class=\"home\" href=\"\" (click)=\"navigation('root', $event)\">\n <yvc-icon [svg]=\"homeIcon\" title=\"{{ 'yuv.app.drive.folder-tree.mydrive' | translate }}\" />\n </a>\n </li>\n\n <div class=\"spacer\" aria-label=\"hidden\"></div>\n\n @if (bread.partial) {\n <div class=\"partial\" aria-label=\"hidden\"></div>\n <div class=\"spacer\" aria-label=\"hidden\"></div>\n }\n\n <li yvcDragScroll>\n <ol>\n @for (crumb of bread.items; track $index) {\n @if (!$last) {\n <li>\n <a tabindex=\"-1\" yuvListItem draggable=\"false\" href=\"\" (click)=\"navigation(crumb.id, $event)\">\n {{ crumb.name }}\n </a>\n </li>\n } @else {\n <li aria-current=\"location\">{{ crumb.name }}</li>\n }\n @if (!$last) {\n <div class=\"spacer\" aria-label=\"hidden\"></div>\n }\n }\n </ol>\n </li>\n } @else {\n <li aria-current=\"location\"><yvc-icon [svg]=\"homeIcon\" title=\"{{ 'yuv.app.drive.folder-tree.mydrive' | translate }}\" /></li>\n }\n </ol>\n</nav>\n","import { marker } from '@colsen1991/ngx-translate-extract-marker';\n\n// prefix for stored query ids (every stored query id should start with this prefix)\nexport const STORED_QUERY_ID_PREFIX = 'ymsq';\n\n// add a tranlation marker for the key the stored query is stored under\n// this is used to display the stored query title in the UI\nmarker('ymsq.ymd.recent.modified.by.me');\nmarker('ymsq.ymd.recent.added.by.me');\n// marker('ymsq.ymd.recent.modified');\n// marker('ymsq.ymd.recent.added');\n\n// default stored queries\nexport const STORED_QUERIES: Record<\n string,\n {\n label?: string;\n query: string;\n }\n> = {\n // 'ymsq.ymd.recent.modified': {\n // query: '{\"filters\":[{\"f\":\"system:lastModifiedBy\",\"o\":\"eq\",\"v1\":\"##me##\"}],\"sort\":[{\"field\":\"system:lastModificationDate\",\"order\":\"desc\"}]}'\n // },\n 'ymsq.ymd.recent.modified.by.me': {\n query: '{\"filters\":[{\"f\":\"system:baseTypeId\",\"o\":\"eq\",\"v1\":\"system:document\"}, { \"f\": \"system:secondaryObjectTypeIds\", \"o\": \"in\", \"v1\": [\"appOsdrive:file\"] }, {\"f\":\"system:lastModifiedBy\",\"o\":\"eq\",\"v1\":\"##me##\"}],\"sort\":[{\"field\":\"system:lastModificationDate\",\"order\":\"desc\"}]}'\n },\n // 'ymsq.ymd.recent.added': {\n // query: '{\"sort\":[{\"field\":\"system:creationDate\",\"order\":\"desc\"}]}'\n // },\n 'ymsq.ymd.recent.added.by.me': {\n query: '{\"filters\":[{\"f\":\"system:baseTypeId\",\"o\":\"eq\",\"v1\":\"system:document\"}, { \"f\": \"system:secondaryObjectTypeIds\", \"o\": \"in\", \"v1\": [\"appOsdrive:file\"] }, {\"f\":\"system:lastModifiedBy\",\"o\":\"eq\",\"v1\":\"##me##\"}],\"sort\":[{\"field\":\"system:creationDate\",\"order\":\"desc\"}]}'\n }\n};\n","import { CommonModule } from '@angular/common';\nimport { Component, inject, viewChild } from '@angular/core';\nimport { ActivatedRoute, Router, RouterModule } from '@angular/router';\nimport { TranslateModule, TranslateService } from '@yuuvis/client-core';\nimport { FocusWithinDirective } from '@yuuvis/client-framework/common';\nimport { Tree, TreeComponent, TreeNode } from '@yuuvis/client-framework/tree';\nimport { APP_SCHEMA } from '../../drive.schema';\nimport { DRIVE_QUERY_FOLDER_ID, DRIVE_ROOT_FOLDER_ID } from '../../services';\nimport { STORED_QUERY_ID_PREFIX } from '../../services/stored-query/stored-query.data';\n\n@Component({\n selector: 'ymd-folder-tree',\n standalone: true,\n imports: [CommonModule, RouterModule, FocusWithinDirective, TranslateModule, TreeComponent],\n templateUrl: './folder-tree.component.html',\n styleUrl: './folder-tree.component.scss'\n})\nexport class FolderTreeComponent {\n private translate = inject(TranslateService);\n private router = inject(Router);\n private route = inject(ActivatedRoute);\n\n treeCmp = viewChild.required(TreeComponent);\n\n folderTree: Tree = {\n nodes: [\n {\n id: 'mydrive',\n icon: APP_SCHEMA.icon,\n label: this.translate.instant('yuv.app.drive.folder-tree.mydrive'),\n selectable: true,\n children: [\n // {\n // id: 'ymsq.ymd.recent.added',\n // selectable: true,\n // label: this.translate.instant('ymsq.ymd.recent.added')\n // },\n {\n id: 'ymsq.ymd.recent.added.by.me',\n selectable: true,\n label: this.translate.instant('ymsq.ymd.recent.added.by.me')\n },\n // {\n // id: 'ymsq.ymd.recent.modified',\n // selectable: true,\n // label: this.translate.instant('ymsq.ymd.recent.modified')\n // },\n {\n id: 'ymsq.ymd.recent.modified.by.me',\n selectable: true,\n label: this.translate.instant('ymsq.ymd.recent.modified.by.me')\n }\n ]\n }\n ]\n };\n\n onFocusLeave() {\n this.treeCmp().selectedNodes = [];\n }\n\n nodeSelected(nodes: TreeNode[]) {\n if (nodes.length) {\n const node = nodes[0];\n\n if (node.id.startsWith(STORED_QUERY_ID_PREFIX)) {\n // stored query\n this.router.navigate(['..', DRIVE_QUERY_FOLDER_ID], {\n queryParams: {\n q: node.id\n },\n relativeTo: this.route\n });\n } else {\n switch (node.id) {\n case 'mydrive': {\n this.router.navigate(['..', DRIVE_ROOT_FOLDER_ID], {\n relativeTo: this.route\n });\n break;\n }\n default: {\n this.router.navigate(['..', node.id], {\n relativeTo: this.route\n });\n }\n }\n }\n }\n }\n}\n","\n <yuv-tree [tree]=\"folderTree\" yuvFocusWithin (yuvFocusWithinBlur)=\"onFocusLeave()\"\n selectable (selectionChange)=\"nodeSelected($event)\"></yuv-tree>\n","import { CommonModule } from '@angular/common';\nimport { Component, inject } from '@angular/core';\nimport { TranslateModule } from '@yuuvis/client-core';\nimport { YvcOverlayRef } from '@yuuvis/components/overlay';\nimport { CreateResult } from '../../services/drive/drive.interface';\nimport { DriveService } from '../../services/drive/drive.service';\n\n@Component({\n selector: 'ymd-paste-from-clipboard',\n standalone: true,\n imports: [CommonModule, TranslateModule],\n templateUrl: './paste-from-clipboard.component.html',\n styleUrl: './paste-from-clipboard.component.scss'\n})\nexport class PasteFromClipboardComponent {\n private overlayRef = inject(YvcOverlayRef);\n private drive = inject(DriveService);\n\n data: {\n parentId: string;\n files: File[];\n } = this.overlayRef.data;\n\n uploadFromClipboard() {\n this.drive.checkNamesAndUpload(this.data.files).subscribe()\n this.overlayRef.close();\n }\n\n cancel() {\n this.overlayRef.close();\n }\n}\n","<main>\n <p>{{ 'yuv.app.drive.paste-from-clipboard.message' | translate }}</p>\n <ol>\n @for (f of data.files; track $index) {\n <li>{{ f.name }}</li>\n }\n </ol>\n</main>\n\n<footer>\n <button class=\"primary\" (click)=\"uploadFromClipboard()\">{{ 'yuv.app.drive.paste-from-clipboard.button.paste' | translate }}</button>\n <button class=\"secondary\" (click)=\"cancel()\">{{ 'yuv.app.drive.paste-from-clipboard.button.cancel' | translate }}</button>\n</footer>\n","import { DatePipe } from '@angular/common';\nimport { Component, computed, input, output } from '@angular/core';\nimport { BaseObjectTypeField, TranslateModule } from '@yuuvis/client-core';\nimport { TileData } from '@yuuvis/client-framework/tile-list';\n\n@Component({\n selector: 'ymd-version-tile',\n standalone: true,\n imports: [DatePipe, TranslateModule],\n template: `\n <div\n class=\"slots\"\n title=\"{{\n 'yuv.app.drive.versions.desctiption.label'\n | translate: { version: rendererInputs().version, modifieer: rendererInputs().modified, date: rendererInputs().date | date: 'medium' }\n }}\"\n >\n <div data-slot=\"version\" class=\"version\">\n <span>{{ 'yuv.app.drive.versions.label' | translate }}: {{ rendererInputs().version }}</span>\n </div>\n <div data-slot=\"date\" class=\"date\" title=\"{{ rendererInputs().date | date: 'medium' }}\">\n {{ rendererInputs().date | date: 'shortDate' }}\n </div>\n <div data-slot=\"modified\" class=\"modified\" title=\"{{ rendererInputs().modified }}\">\n {{ rendererInputs().modified }}\n </div>\n </div>\n `,\n styleUrl: './tile.component.scss'\n})\nexport class VersionTileComponent {\n tile = input.required<TileData>();\n\n rendererInputs = computed(() => ({\n icon: this.tile().icon,\n version: this.tile().instanceData?.[BaseObjectTypeField.VERSION_NUMBER],\n date: this.tile().instanceData?.[BaseObjectTypeField.MODIFICATION_DATE] as Date,\n modified: this.tile().instanceData?.[BaseObjectTypeField.MODIFIED_BY + '_title']\n }));\n\n selectedVersion = output<any>();\n}\n","import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, HostListener, inject, viewChildren } from '@angular/core';\nimport { DmsObject } from '@yuuvis/client-core';\nimport { ClickDoubleDirective } from '@yuuvis/client-framework/common';\nimport { ListItemDirective } from '@yuuvis/client-framework/list';\nimport { finalize } from 'rxjs/operators';\nimport { DriveService } from '../../services';\nimport { VersionTileComponent } from './tile/tile.component';\n\n@Component({\n selector: 'ymd-versions-list',\n standalone: true,\n imports: [CommonModule, VersionTileComponent, ListItemDirective, ClickDoubleDirective],\n template: ` @let versions = versionsList();\n @if (versions) {\n @for (version of versions; track $index) {\n <ymd-version-tile\n yuvListItem\n [tile]=\"version\"\n [attr.aria-selected]=\"selection().includes(version.dmsObject.version)\"\n [selected]=\"selection().includes(version.dmsObject.version)\"\n (click.single)=\"setSelectedVersion(version)\"\n (selectedVersion)=\"selectedVersionAction($event)\"\n ></ymd-version-tile>\n }\n }`,\n styleUrl: './versions-list.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n tabindex: '0',\n role: 'listbox'\n }\n})\nexport class VersionsListComponent {\n #drive = inject(DriveService);\n\n versionsList = this.#drive.state$.versions.versionsList;\n selectedVersion = this.#drive.state$.versions.selectedVersion;\n selection = computed(() => (this.selectedVersion() || []).map((v: DmsObject) => v.version));\n\n @HostListener('blur')\n onBlur() {\n this.#keyManager.setActiveItem(-1);\n }\n\n @HostListener('keydown', ['$event'])\n onKeydown(event: KeyboardEvent) {\n event.preventDefault();\n event.code === 'Escape' && this.#keyManager.setActiveItem(-1);\n event.target instanceof HTMLButtonElement && this.#keyManager.setActiveItem(-1);\n\n if (event.code === 'Space' || event.code === 'Enter') {\n const aii: number = this.#keyManager.activeItemIndex !== null ? this.#keyManager.activeItemIndex : -1;\n aii >= 0 && this.selectedVersionByIndex(aii);\n } else this.#keyManager?.onKeydown(event);\n }\n\n #keyManager!: ActiveDescendantKeyManager<ListItemDirective>;\n\n listItems = viewChildren(ListItemDirective);\n #itemsEffect = effect(() => {\n const items = this.listItems();\n if (this.#keyManager) this.#keyManager.destroy();\n this.#keyManager = new ActiveDescendantKeyManager(items).withWrap();\n });\n\n selectedVersionAction(event: any) {\n this.#drive.setBusy(true);\n this.#drive\n .setNewVersion(event.version)\n .pipe(finalize(() => this.#drive.setBusy(false)))\n .subscribe();\n }\n\n selectedVersionByIndex(index: number) {\n this.setSelectedVersion(this.versionsList()[index]);\n }\n\n setSelectedVersion(version: any) {\n this.#drive.setSelectedVersion(version).subscribe();\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, OnDestroy, OnInit } from '@angular/core';\nimport { BaseObjectTypeField, DmsObject, DmsService, FlavoredDmsObject, TranslateModule } from '@yuuvis/client-core';\nimport { YUV_ICONS } from '@yuuvis/client-framework/icons';\nimport { ObjectPreviewComponent } from '@yuuvis/client-framework/object-preview';\nimport { ObjectSummaryDataComponent } from '@yuuvis/client-framework/object-summary';\nimport { ShellService } from '@yuuvis/client-shell-core';\nimport { YvcIconModule } from '@yuuvis/components/icon';\nimport { YvcOverlayRef } from '@yuuvis/components/overlay';\nimport { YvcSplitViewModule } from '@yuuvis/components/split-view';\nimport { YvcTabsModule } from '@yuuvis/components/tabs';\nimport { finalize, forkJoin } from 'rxjs';\nimport { VersionsListComponent } from '../../components';\nimport { APP_SCHEMA, FS_PROPERTIES, FS_SOTS } from '../../drive.schema';\nimport { DriveService } from '../../services';\n\nimport { ICONS } from '@yuuvis/components/icon';\n\nconst COMPONENTS = [VersionsListComponent, ObjectSummaryDataComponent, ObjectPreviewComponent];\nconst MODULES = [YvcIconModule, YvcTabsModule, YvcSplitViewModule, TranslateModule];\n\n@Component({\n selector: 'ymd-manage-versions',\n standalone: true,\n imports: [...MODULES, ...COMPONENTS],\n templateUrl: `./manage-versions.component.html`,\n styleUrls: [`./manage-versions.component.scss`],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ManageVersionsComponent implements OnInit, OnDestroy {\n public readonly overlayRef = inject(YvcOverlayRef);\n readonly #drive = inject(DriveService);\n #shellService = inject(ShellService);\n\n versionsList = this.#drive.state$.versions.versionsList;\n selectedVersion = this.#drive.state$.versions.selectedVersion;\n selectedDmsObject = this.#drive.state$.selectedDmsObject;\n\n isLoading = this.#drive.state$.busy;\n\n item: DmsObject = this.overlayRef.data;\n layoutSettingIdBase = 'app.drive.versions.';\n\n dmsObject = computed<{ id: string | null; name: string }>(() => {\n const dmsObject = this.selectedDmsObject();\n return dmsObject\n ? { id: dmsObject.data[BaseObjectTypeField.OBJECT_ID] as string, name: dmsObject.data[FS_PROPERTIES.name] as string }\n : { id: null, name: '' };\n });\n\n id = computed<string | null>(() => {\n const version = this.selectedVersion();\n return version ? version[0].id : null;\n });\n\n flavoredDmsObject = computed<FlavoredDmsObject | undefined>(() => {\n const o = this.selectedVersion();\n return o\n ? {\n object: o[0],\n flavors: [\n {\n id: APP_SCHEMA.types['file']['id'],\n icon: APP_SCHEMA.types['file']['icon'],\n sot: FS_SOTS.object\n },\n ...this.#shellService.getAppliedObjectFlavors(o[0]).applied\n ]\n }\n : undefined;\n });\n\n disabledRestore = computed<boolean>(() => {\n const selectedVersion = this.selectedVersion();\n const list = this.versionsList();\n return !(selectedVersion && selectedVersion[0].version !== list.length);\n });\n\n icons = {\n refresh: YUV_ICONS.refresh,\n close: ICONS.clear\n };\n\n #loadList() {\n this.#drive.setBusy(true);\n return forkJoin([\n this.#drive.getVersions(this.item.id), \n this.#drive.getSelectedDmsObject(this.item.id)]\n ).pipe(finalize(() => this.#drive.setBusy(false)));\n }\n\n close() {\n this.overlayRef.close();\n }\n\n reloadList() {\n this.#loadList().subscribe();\n }\n\n setNewVersion() {\n this.#drive.setBusy(true);\n this.#drive\n .setNewVersion()\n .pipe(finalize(() => this.#drive.setBusy(false)))\n .subscribe();\n }\n\n ngOnInit(): void {\n this.#loadList().subscribe();\n }\n\n ngOnDestroy(): void {\n this.#drive.clearVersions();\n }\n}\n","@if (isLoading()) {\n <div class=\"yuv-loader-linear loader\"></div>\n}\n<yvc-split-view [gutterSize]=\"1\" [layoutSettingsID]=\"layoutSettingIdBase + 'split'\">\n <!-- Versions -->\n <ng-template yvcSplitArea [size]=\"60\">\n <div class=\"version-details\">\n <header>\n <span>{{ dmsObject().name }}</span>\n </header>\n <div class=\"details\">\n @let selected = selectedVersion();\n @if (selected && selected.length === 1) {\n <yvc-tabs [layoutSettingsID]=\"layoutSettingIdBase + 'tabs'\" class=\"versions-details\">\n <ng-template [yvcTab]=\"{ id: 'content', label: 'yuv.app.drive.object-metadata.tabs.content.title' | translate }\">\n <yuv-object-preview [dmsObject]=\"selected[0]\" [version]=\"selected[0].version\"></yuv-object-preview>\n </ng-template>\n <ng-template [yvcTab]=\"{ id: 'indexdata', label: 'yuv.app.drive.object-metadata.tabs.indexdata.title' | translate }\">\n <yuv-object-summary-data [dmsObject]=\"selected[0]\"></yuv-object-summary-data>\n </ng-template>\n </yvc-tabs>\n }\n </div>\n </div>\n </ng-template>\n <!-- Details -->\n <ng-template yvcSplitArea [size]=\"40\">\n <div class=\"versions\">\n <header>\n <h2>{{ 'yuv.app.drive.versions.header.label' | translate }}</h2>\n <div class=\"actions\">\n <button class=\"refresh\" title=\"refresh\" (click)=\"reloadList()\"><yvc-icon [svg]=\"icons.refresh\"></yvc-icon></button>\n <button class=\"close\" title=\"close\" (click)=\"close()\"><yvc-icon [svg]=\"icons.close\"></yvc-icon></button>\n </div>\n </header>\n <ymd-versions-list\n class=\"staggered\"\n [attr.aria-label]=\"'yuv.app.drive.files.content.aria.label' | translate\"\n [attr.aria-busy]=\"isLoading()\"\n [attr.role]=\"'listbox'\"\n [id]=\"id()\"\n > \n </ymd-versions-list>\n </div>\n </ng-template>\n</yvc-split-view>\n<footer>\n <div class=\"actions\">\n <button class=\"secondary\" [disabled]=\"disabledRestore()\" (click)=\"setNewVersion()\">{{ 'yuv.app.drive.action.set.new.versions.label' | translate }}</button>\n </div>\n</footer>\n","import { inject } from '@angular/core';\nimport { DmsObject, TranslateService } from '@yuuvis/client-core';\nimport { AbstractContextAction, Action, ActionSupport, SelectionRange } from '@yuuvis/client-framework/actions';\nimport { YvcOverlayService } from '@yuuvis/components/overlay';\nimport { Observable, of } from 'rxjs';\nimport { ManageVersionsComponent } from './manage-versions.component';\n\nexport class ManageVersionsAction extends AbstractContextAction implements Action {\n readonly translate = inject(TranslateService);\n private overlay = inject(YvcOverlayService);\n\n id = 'app.drive.action.manage-versions';\n label = this.translate.instant('yuv.app.drive.action.manage-versions.label');\n description = this.translate.instant('yuv.app.drive.action.manage-versions.description');\n priority = 2;\n icon =\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"#5f6368\" viewBox=\"0 -960 960 960\"><path d=\"M120-560v-240h80v94q51-64 124.5-99T480-840q150 0 255 105t105 255h-80q0-117-81.5-198.5T480-760q-69 0-129 32t-101 88h110v80H120Zm2 120h82q12 93 76.5 157.5T435-204l48 84q-138 0-242-91.5T122-440Zm412 70-94-94v-216h80v184l56 56-42 70ZM719 0l-12-60q-12-5-22.5-10.5T663-84l-58 18-40-68 46-40q-2-13-2-26t2-26l-46-40 40-68 58 18q11-8 21.5-13.5T707-340l12-60h80l12 60q12 5 23 11.5t21 14.5l58-20 40 70-46 40q2 13 2 25t-2 25l46 40-40 68-58-18q-11 8-21.5 13.5T811-60L799 0h-80Zm40-120q33 0 56.5-23.5T839-200q0-33-23.5-56.5T759-280q-33 0-56.5 23.5T679-200q0 33 23.5 56.5T759-120Z\"/></svg>';\n\n group = 'common';\n range = SelectionRange.SINGLE_SELECT;\n supports: ActionSupport = {};\n\n isExecutable(selection: DmsObject[]) {\n return of(selection && selection[0] && selection[0].version > 1 && !selection[0].isFolder);\n }\n\n run(selection: DmsObject[]): Observable<boolean> {\n this.overlay.open(ManageVersionsComponent, selection[0], {\n width: '60vw',\n maxWidth: '80vw',\n height: '80vh'\n });\n return of(true);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, DestroyRef, OnDestroy, OnInit, Signal, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { ActivatedRoute, NavigationEnd, Router, RouterModule } from '@angular/router';\nimport { SearchQuery, TranslateModule, UploadResult } from '@yuuvis/client-core';\nimport { ActionsService } from '@yuuvis/client-framework/actions';\nimport { YUV_ICONS } from '@yuuvis/client-framework/icons';\nimport { UploadProgressComponent } from '@yuuvis/client-framework/upload-progress';\nimport { AppLogoComponent } from '@yuuvis/client-shell';\nimport { ICONS, YvcIconModule } from '@yuuvis/components/icon';\nimport { MenuItem, YvcOverflowMenuComponent } from '@yuuvis/components/overflow-menu';\nimport { YvcOverlayModule } from '@yuuvis/components/overlay';\n\nimport { filter } from 'rxjs/operators';\nimport { APP_DRIVE_ICONS } from '../../drive.icons';\nimport { APP_ACTIONS, APP_SCHEMA } from '../../drive.schema';\nimport { DriveService } from '../../services/drive/drive.service';\nimport { RenameAction } from '../../actions/rename/rename.action';\nimport { PasteAction } from '../../actions/paste/paste.action';\nimport { UpdateContentAction } from '../../actions/updateContent/update.content.action';\nimport { CopyLinkAction } from '../../actions/copy-link/copy-link.action';\nimport { ManageVersionsAction } from '../../actions';\n\n@Component({\n selector: 'ymd-drive',\n standalone: true,\n imports: [\n CommonModule,\n RouterModule,\n YvcOverflowMenuComponent,\n ReactiveFormsModule,\n TranslateModule,\n YvcOverlayModule,\n YvcIconModule,\n AppLogoComponent,\n UploadProgressComponent\n ],\n templateUrl: './drive.component.html',\n styleUrl: './drive.component.scss'\n})\nexport class DriveFrameComponent implements OnInit, OnDestroy {\n #router = inject(Router);\n #route = inject(ActivatedRoute);\n #drive = inject(DriveService);\n #actionsService = inject(ActionsService);\n #destroyRef = inject(DestroyRef);\n\n query: Signal<SearchQuery | null> = this.#drive.state$.query;\n currentFolder: Signal<string | null> = this.#drive.state$.currentFolder;\n busy = this.#drive.state$.busy;\n\n appName = APP_SCHEMA.name;\n appIcon = APP_SCHEMA.icon;\n icons = {\n ...APP_DRIVE_ICONS,\n search: ICONS.search,\n add: YUV_ICONS.add\n };\n headerNavItems: MenuItem[] = [\n // TODO: enable again once favorite feature is implemented\n // {\n // id: 'favorites',\n // disabled: true,\n // label: this.translate.instant('yuv.app.drive.nav.favorites'),\n // icon: this.icons.favorite,\n // callback: () => {\n // this.router.navigate(['favorites'], {relativeTo: this.route})\n // }\n // }\n ];\n\n #actions = [\n { id: APP_ACTIONS.rename, action: RenameAction },\n { id: APP_ACTIONS.paste, action: PasteAction },\n { id: APP_ACTIONS.contentUpdate, action: UpdateContentAction },\n { id: APP_ACTIONS.copyLink, action: CopyLinkAction },\n { id: APP_ACTIONS.manageVersions, action: ManageVersionsAction }\n ];\n\n constructor() {\n this.#registerActions();\n // TODO: make use of global shortcuts\n // this.shellService.globalShortcuts$.pipe(takeUntilDestroyed()).subscribe((s: GlobalShortcut) => {\n // if (s === GlobalShortcut.search) this.router.navigate([{ outlets: { modal: ['find'] } }], { relativeTo: this.route });\n // });\n }\n\n #trackRouteChanges() {\n // listen to navigation/route changes in order to restore it later on\n this.#router.events\n .pipe(\n takeUntilDestroyed(this.#destroyRef),\n filter((e) => e instanceof NavigationEnd)\n )\n .subscribe((e) => {\n this.#drive.lastRouteURL = (e as NavigationEnd).urlAfterRedirects;\n });\n }\n\n onUploadProgressResultItemClick(uploadRes: UploadResult) {\n if (uploadRes && uploadRes.objectId) {\n this.#router.navigate(['object', uploadRes.objectId], { relativeTo: this.#route });\n }\n }\n\n #registerActions() {\n this.#actionsService.registerActions(this.#actions);\n }\n\n ngOnInit(): void {\n if (this.#drive.lastRouteURL) this.#router.navigateByUrl(this.#drive.lastRouteURL).then(() => this.#trackRouteChanges());\n else this.#trackRouteChanges();\n }\n\n ngOnDestroy(): void {\n this.#actions.forEach((a) => this.#actionsService.concealActions([a.id]));\n }\n}\n","<yuv-upload-progress (resultItemClick)=\"onUploadProgressResultItemClick($event)\"></yuv-upload-progress>\n\n<header>\n <yuv-app-logo [label]=\"appName\" routerLink=\"files\"></yuv-app-logo>\n\n <nav [attr.aria-label]=\"'yuv.app.drive.navigation.aria.label' | translate\">\n <yvc-overflow-menu [menuItems]=\"headerNavItems\"></yvc-overflow-menu>\n </nav>\n</header>\n\n<section class=\"drive-main__content\" [attr.aria-label]=\"'yuv.app.drive.content.aria.label' | translate\">\n <router-outlet></router-outlet>\n</section>\n\n<router-outlet name=\"modal\"></router-outlet>\n","import { CommonModule } from '@angular/common';\nimport { Component, contentChild, effect, inject, input, TemplateRef, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ClipboardService, DmsObject } from '@yuuvis/client-core';\nimport { Action, ActionsService } from '@yuuvis/client-framework/actions';\nimport { ClipboardComponent } from '@yuuvis/client-framework/clipboard';\nimport { MenuItem, YvcOverflowMenuComponent } from '@yuuvis/components/overflow-menu';\nimport { ACTION_CONTEXT, APP_ID } from '../../drive.schema';\nimport { DriveService } from '../../services';\nimport { finalize } from 'rxjs';\n\n@Component({\n selector: 'ymd-ribbon',\n standalone: true,\n imports: [CommonModule, ClipboardComponent, YvcOverflowMenuComponent],\n templateUrl: './ribbon.component.html',\n styleUrl: './ribbon.component.scss',\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'ymd-ribbon'\n }\n})\nexport class RibbonComponent {\n primarySlot = contentChild<TemplateRef<any>>('primaryActions');\n secondarySlot = contentChild<TemplateRef<any>>('secondaryActions');\n\n #drive = inject(DriveService);\n #clipboard = inject(ClipboardService);\n #actionsService = inject(ActionsService);\n\n private _defaultMenuItems: MenuItem[] = this.#drive.getDefaultRibbonActions().map((a) => ({\n id: a.id,\n icon: a.icon,\n label: a.label,\n disabled: true,\n group: 'default',\n callback: () => this.executeAction(a)\n }));\n clipboardBucket = APP_ID;\n busy = input<boolean>(false);\n enableClipboard = input<boolean>(false);\n menuItems: MenuItem[] = this._defaultMenuItems;\n\n objects = input<DmsObject[]>();\n #objectsEffect = effect(() => {\n this.menuItems = this._defaultMenuItems;\n this.#getActionsAndSetupItems(this.objects() || []);\n });\n\n excludeActions = input<string[]>();\n\n constructor() {\n this.#clipboard\n .clipboard$(this.clipboardBucket)\n .pipe(takeUntilDestroyed())\n .subscribe({\n next: () => this.#getActionsAndSetupItems(this.objects() || [])\n });\n }\n\n #getActionsAndSetupItems(objects: DmsObject[]) {\n this.#actionsService\n .getActions(objects, {\n context: ACTION_CONTEXT,\n exclude: this.excludeActions()\n })\n .subscribe({ next: (res) => this._setupMenuItems(res) });\n }\n\n executeAction(a: Action) {\n const o = this.objects();\n if (o && this._isAction(a)) (a as Action).run(o);\n }\n\n onClipboardPaste() {\n this.#drive.setBusy(true);\n this.#drive\n .pasteFromClipboard()\n .pipe(finalize(() => this.#drive.setBusy(false)))\n .subscribe({\n next: () => this.#clipboard.clear(this.clipboardBucket)\n });\n }\n\n private _isAction(a: any) {\n return !!a['run'];\n }\n\n private _setupMenuItems(actions: Action[]) {\n // en-/disable default actions\n this._defaultMenuItems.forEach((mi) => {\n mi.disabled = !actions.find((a) => a.id === mi.id);\n });\n\n const defaultActionIds = this._defaultMenuItems.map((mi) => mi.id);\n this.menuItems = [\n ...this._defaultMenuItems,\n ...actions\n .filter((a) => !defaultActionIds.includes(a.id))\n .map((a) => ({\n id: a.id,\n icon: a.icon,\n label: a.label,\n group: 'aside',\n callback: () => this.executeAction(a)\n }))\n ];\n }\n}\n","@let primary = primarySlot();\n@let secondary = secondarySlot();\n\n@if (primary) {\n <div class=\"primary-actions\">\n <ng-container [ngTemplateOutlet]=\"primary\"></ng-container>\n </div>\n}\n\n<div class=\"object-actions\">\n @if (enableClipboard()) {\n <yuv-clipboard class=\"dark\" [bucket]=\"clipboardBucket\" [enablePaste]=\"true\" (paste)=\"onClipboardPaste()\"></yuv-clipboard>\n }\n <yvc-overflow-menu [hideLabels]=\"true\" [menuItems]=\"menuItems\"></yvc-overflow-menu>\n</div>\n\n@if (secondary) {\n <div class=\"secondary-actions\">\n <ng-container [ngTemplateOutlet]=\"secondary\"></ng-container>\n </div>\n}\n\n@if (busy()) {\n <div class=\"yuv-loader-linear\"></div>\n}\n","import { Injectable, inject } from '@angular/core';\nimport { TranslateService, UserService } from '@yuuvis/client-core';\nimport { STORED_QUERIES } from './stored-query.data';\nimport { StoredQuery } from './stored-query.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class StoredQueryService {\n private userService = inject(UserService);\n private translate = inject(TranslateService);\n\n \n\n getStoredQuery(id: string): StoredQuery | undefined {\n const q = STORED_QUERIES[id];\n\n if (!q) return undefined;\n\n try {\n // if query has no label try to resolve from language resources\n return {\n label: q.label || this.translate.instant(id),\n query: JSON.parse(this._replaceVars(q.query))\n };\n } catch (e) {\n return undefined;\n }\n }\n\n private _replaceVars(str: string): string {\n const vars = [{ placeholder: '##me##', replace: this.userService.getCurrentUser().id }];\n vars.forEach((v) => {\n str = str.replaceAll(v.placeholder, v.replace);\n });\n return str;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, effect, inject, input, output } from '@angular/core';\nimport { FormBuilder, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { RangeValue, TranslateModule } from '@yuuvis/client-core';\nimport { DatetimeRangeComponent } from '@yuuvis/client-framework/forms';\nimport { YvcOverlayRef } from '@yuuvis/components/overlay';\n\n@Component({\n selector: 'ymd-date-range-picker',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, TranslateModule, DatetimeRangeComponent],\n templateUrl: './date-range-picker.component.html',\n styleUrl: './date-range-picker.component.scss'\n})\nexport class DateRangePickerComponent {\n #oRef = inject(YvcOverlayRef);\n #fb = inject(FormBuilder);\n\n form = this.#fb.group({\n range: this.#fb.control<RangeValue | undefined>(undefined, Validators.required)\n });\n \n range = input<RangeValue | undefined>(this.#oRef.data.range);\n rangeChange = output<RangeValue | undefined>();\n #rangeEffect = effect(() => {\n const range = this.range();\n this.form.patchValue({ range });\n });\n\n apply() {\n this.rangeChange.emit(this.form.value.range || undefined);\n this.#oRef?.close(this.form.value.range);\n }\n}\n","<form [formGroup]=\"form\" (ngSubmit)=\"apply()\">\n <h2>{{ 'yuv.app.drive.search.filter.option.date.custom.overlay.title' | translate }}</h2>\n <yuv-datetime-range [withTime]=\"false\" formControlName=\"range\"></yuv-datetime-range>\n <button class=\"primary\" [disabled]=\"form.invalid\">{{ 'yuv.app.drive.search.filter.option.date.custom.overlay.button.apply' | translate }}</button>\n</form>\n","import { CommonModule } from '@angular/common';\nimport { Component, inject, input, output, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormBuilder, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { BaseObjectTypeField, ContentStreamField, LocaleDatePipe, Operator, OperatorLabel, RangeValue, SearchFilter, SearchQuery } from '@yuuvis/client-core';\nimport { ObjectFlavor, ShellService } from '@yuuvis/client-shell-core';\nimport { YvcDragScrollModule } from '@yuuvis/components/drag-scroll';\nimport { DropdownOption, YvcDropdownModule } from '@yuuvis/components/dropdown';\nimport { OverlayCloseEvent, YvcOverlayService } from '@yuuvis/components/overlay';\nimport { DateRangePickerComponent } from './date-range-picker/date-range-picker.component';\n\n@Component({\n selector: 'ymd-search-filter',\n standalone: true,\n imports: [CommonModule, YvcDropdownModule, TranslateModule, ReactiveFormsModule, YvcDragScrollModule],\n templateUrl: './search-filter.component.html',\n styleUrl: './search-filter.component.scss'\n})\nexport class SearchFilterComponent {\n #shell = inject(ShellService);\n #fb = inject(FormBuilder);\n #overlay = inject(YvcOverlayService);\n\n #CREATED_CUSTOM = 'custom';\n\n private translate = inject(TranslateService);\n\n ANY_OPTION = 'any';\n #flavors = this.#shell.getObjectFlavors();\n\n typeOptions = signal<DropdownOption[]>([]);\n dateOptions = signal<DropdownOption[]>([]);\n sizeOptions = signal<DropdownOption[]>([]);\n\n query = input<SearchQuery | null>(null);\n queryChange = output<SearchQuery>();\n filtersActive = signal<boolean>(false);\n\n filterForm = this.#fb.nonNullable.group({\n type: [this.ANY_OPTION],\n size: [this.ANY_OPTION],\n created: [this.ANY_OPTION]\n });\n\n #customDateRange?: RangeValue;\n\n constructor() {\n this.translate.onLangChange.pipe(takeUntilDestroyed()).subscribe((_) => this.#setupOptions());\n this.#setupOptions();\n\n this.filterForm.valueChanges.pipe(takeUntilDestroyed()).subscribe((v) => this.#onFormValueChange(v));\n\n // listen to created filter changes to catch custom date range\n this.filterForm\n .get('created')\n ?.valueChanges.pipe(takeUntilDestroyed())\n .subscribe((v) => {\n if (v === this.#CREATED_CUSTOM) {\n // open date range picker\n console.log(this.#customDateRange);\n \n const o = this.#overlay.open(DateRangePickerComponent, {\n range: this.#customDateRange\n });\n o.afterClosed$.subscribe((res: OverlayCloseEvent<RangeValue>) => {\n this.#customDateRange = res.data;\n if (!res.data) {\n this.filterForm.get('created')?.patchValue(this.ANY_OPTION);\n this.#setupDateOptions();\n } else {\n this.#onFormValueChange(this.filterForm.value);\n this.#setupDateOptions(this.#customDateRangeToString());\n setTimeout(() => {\n this.filterForm.patchValue(\n {\n created: this.#CREATED_CUSTOM\n },\n {\n emitEvent: false\n }\n );\n });\n }\n });\n }\n });\n }\n\n #customDateRangeToString(): string | undefined {\n if (!this.#customDateRange) return undefined;\n const dp = new LocaleDatePipe(this.translate);\n switch (this.#customDateRange.operator) {\n case Operator.EQUAL: {\n return dp.transform(this.#customDateRange.firstValue as Date, 'shortDate');\n }\n case Operator.GREATER_OR_EQUAL: {\n return `${OperatorLabel.GREATER_OR_EQUAL} ${dp.transform(this.#customDateRange.firstValue as Date, 'shortDate')}`;\n }\n case Operator.LESS_OR_EQUAL: {\n return `${OperatorLabel.LESS_OR_EQUAL} ${dp.transform(this.#customDateRange.firstValue as Date, 'shortDate')}`;\n }\n case Operator.INTERVAL_INCLUDE_BOTH: {\n return `${dp.transform(this.#customDateRange.firstValue as Date, 'shortDate')} ${OperatorLabel.INTERVAL_INCLUDE_BOTH} ${dp.transform(this.#customDateRange.secondValue as Date, 'shortDate')}`;\n }\n }\n return undefined;\n }\n\n reset() {\n const q = this.query();\n if (q) {\n this.queryChange.emit(q);\n this.filterForm.reset();\n }\n }\n\n #onFormValueChange(v: any) {\n // do not create a new query if custom date range is selected but not set\n if (v.created === this.#CREATED_CUSTOM && !this.#customDateRange) return;\n\n if(v.created !== this.#CREATED_CUSTOM) {\n this.#customDateRange = undefined;\n this.#setupDateOptions();\n }\n\n const updatedQuery: SearchQuery = this.#applyFilters(v);\n this.queryChange.emit(updatedQuery);\n this.filtersActive.set(!!updatedQuery.filters && updatedQuery.filters.length > 0);\n }\n\n #applyFilters(v: any): SearchQuery {\n const updatedQuery: SearchQuery = {\n ...(this.query() || {}),\n filters: []\n };\n updatedQuery.filters = [];\n\n // file size filter\n const typeFilter = this.#toTypeFilter(v.type);\n if (typeFilter) updatedQuery.filters.push(typeFilter);\n\n // file size filter\n const sizeFilter = this.#toSizeFilter(v.size);\n if (sizeFilter) updatedQuery.filters.push(sizeFilter);\n\n // creation date filter\n const dateFilter = this.#toDateFilter(v.created);\n if (dateFilter) updatedQuery.filters.push(dateFilter);\n\n return updatedQuery;\n }\n\n #setupOptions() {\n this.#setupTypeOptions();\n this.#setupDateOptions();\n this.#setupSizeOptions();\n }\n\n #setupTypeOptions() {\n this.typeOptions.set([\n {\n label: this.translate.instant('yuv.app.drive.search.filter.option.any'),\n value: this.ANY_OPTION\n },\n ...this.#flavors.map((f: ObjectFlavor) => ({\n label: this.translate.instant(f.id),\n value: f.sot\n }))\n ]);\n }\n\n #setupDateOptions(custom?: string) {\n this.dateOptions.set([\n ...[\n {\n label: this.translate.instant('yuv.app.drive.search.filter.option.date.any'),\n value: this.ANY_OPTION\n },\n {\n label: this.translate.instant('yuv.app.drive.search.filter.option.date.today'),\n value: 'today'\n },\n {\n label: this.translate.instant('yuv.app.drive.search.filter.option.date.yesterday'),\n value: 'yesterday'\n },\n {\n label: this.translate.instant('yuv.app.drive.search.filter.option.date.thisweek'),\n value: 'thisweek'\n },\n // {\n // label: this.translate.instant('yuv.app.drive.search.filter.option.date.lastweek'),\n // value: 'lastweek'\n // },\n {\n label: this.translate.instant('yuv.app.drive.search.filter.option.date.thismonth'),\n value: 'thismonth'\n },\n // {\n // label: this.translate.instant('yuv.app.drive.search.filter.option.date.lastmonth'),\n // value: 'lastmonth'\n // },\n {\n label: this.translate.instant('yuv.app.drive.search.filter.option.date.thisyear'),\n value: 'thisyear'\n },\n // {\n // label: this.translate.instant('yuv.app.drive.search.filter.option.date.lastyear'),\n // value: 'lastyear'\n // },\n {\n label: custom || this.translate.instant('yuv.app.drive.search.filter.option.date.custom'),\n value: this.#CREATED_CUSTOM\n }\n ]\n ]);\n }\n\n #setupSizeOptions() {\n this.sizeOptions.set([\n {\n label: this.translate.instant('yuv.app.drive.search.filter.option.size.any'),\n value: this.ANY_OPTION\n },\n {\n label: this.translate.instant('yuv.app.drive.search.filter.option.size.small'),\n value: 's'\n },\n {\n label: this.translate.instant('yuv.app.drive.search.filter.option.size.medium'),\n value: 'm'\n },\n {\n label: this.translate.instant('yuv.app.drive.search.filter.option.size.large'),\n value: 'l'\n },\n {\n label: this.translate.instant('yuv.app.drive.search.filter.option.size.verylarge'),\n value: 'xl'\n }\n ]);\n }\n\n #toDateFilter(value: string): SearchFilter | undefined {\n let dateFilter: SearchFilter | undefined = undefined;\n switch (value) {\n case 'today': {\n dateFilter = {\n f: BaseObjectTypeField.CREATION_DATE,\n o: Operator.INTERVAL_INCLUDE_BOTH,\n v1: new Date().toISOString().split('T')[0] + 'T00:00:00.000',\n v2: new Date().toISOString().split('T')[0] + 'T23:59:59.000'\n };\n break;\n }\n case 'yesterday': {\n const yesterday = new Date();\n yesterday.setDate(yesterday.getDate() - 1);\n dateFilter = {\n f: BaseObjectTypeField.CREATION_DATE,\n o: Operator.INTERVAL_INCLUDE_BOTH,\n v1: yesterday.toISOString().split('T')[0] + 'T00:00:00.000',\n v2: yesterday.toISOString().split('T')[0] + 'T23:59:59.000'\n };\n break;\n }\n case 'thisweek': {\n const firstDay = new Date();\n firstDay.setDate(firstDay.getDate() - firstDay.getDay());\n dateFilter = {\n f: BaseObjectTypeField.CREATION_DATE,\n o: Operator.INTERVAL_INCLUDE_BOTH,\n v1: firstDay.toISOString().split('T')[0] + 'T00:00:00.000',\n v2: new Date().toISOString().split('T')[0] + 'T23:59:59.000'\n };\n break;\n }\n // case 'lastweek': {\n // const firstDay = new Date();\n // firstDay.setDate(firstDay.getDate() - firstDay.getDay() - 7);\n // const lastDay = new Date();\n // lastDay.setDate(lastDay.getDate() - lastDay.getDay() - 1);\n // dateFilter = {\n // f: BaseObjectTypeField.CREATION_DATE,\n // o: Operator.INTERVAL_INCLUDE_BOTH,\n // v1: firstDay.toISOString().split('T')[0] + 'T00:00:00.000',\n // v2: lastDay.toISOString().split('T')[0] + 'T23:59:59.000'\n // };\n // break;\n // }\n case 'thismonth': {\n const firstDay = new Date();\n firstDay.setDate(1);\n dateFilter = {\n f: BaseObjectTypeField.CREATION_DATE,\n o: Operator.INTERVAL_INCLUDE_BOTH,\n v1: firstDay.toISOString().split('T')[0] + 'T00:00:00.000',\n v2: new Date().toISOString().split('T')[0] + 'T23:59:59.000'\n };\n break;\n }\n // case 'lastmonth': {\n // const firstDay = new Date();\n // firstDay.setDate(1);\n // firstDay.setMonth(firstDay.getMonth() - 1);\n // const lastDay = new Date();\n // lastDay.setDate(0);\n // dateFilter = {\n // f: BaseObjectTypeField.CREATION_DATE,\n // o: Operator.INTERVAL_INCLUDE_BOTH,\n // v1: firstDay.toISOString().split('T')[0] + 'T00:00:00.000',\n // v2: lastDay.toISOString().split('T')[0] + 'T23:59:59.000'\n // };\n // break;\n // }\n case 'thisyear': {\n const firstDay = new Date();\n firstDay.setMonth(0);\n firstDay.setDate(1);\n dateFilter = {\n f: BaseObjectTypeField.CREATION_DATE,\n o: Operator.INTERVAL_INCLUDE_BOTH,\n v1: firstDay.toISOString().split('T')[0] + 'T00:00:00.000',\n v2: new Date().toISOString().split('T')[0] + 'T23:59:59.000'\n };\n break;\n }\n // case 'lastyear': {\n // const firstDay = new Date();\n // firstDay.setFullYear(firstDay.getFullYear() - 1);\n // firstDay.setMonth(0);\n // firstDay.setDate(1);\n // const lastDay = new Date();\n // lastDay.setFullYear(lastDay.getFullYear() - 1);\n // lastDay.setMonth(11);\n // lastDay.setDate(31);\n // dateFilter = {\n // f: BaseObjectTypeField.CREATION_DATE,\n // o: Operator.INTERVAL_INCLUDE_BOTH,\n // v1: firstDay.toISOString().split('T')[0] + 'T00:00:00.000',\n // v2: lastDay.toISOString().split('T')[0] + 'T23:59:59.000'\n // };\n // break;\n // }\n case this.#CREATED_CUSTOM: {\n if (this.#customDateRange) dateFilter = this.#customRangeToFilter(this.#customDateRange);\n else this.filterForm.get('created')?.patchValue(this.ANY_OPTION);\n break;\n }\n }\n return dateFilter;\n }\n\n #customRangeToFilter(rv: RangeValue): SearchFilter | undefined {\n const v1 = (rv.firstValue as Date).toISOString();\n const v2 = rv.secondValue ? (rv.secondValue as Date).toISOString() : undefined;\n let filter;\n switch (rv.operator) {\n case Operator.EQUAL: {\n filter = {\n f: BaseObjectTypeField.CREATION_DATE,\n o: Operator.INTERVAL_INCLUDE_BOTH,\n v1: v1.split('T')[0] + 'T00:00:00.000',\n v2: v1.split('T')[0] + 'T23:59:59.000'\n };\n break;\n }\n case Operator.GREATER_OR_EQUAL: {\n filter = {\n f: BaseObjectTypeField.CREATION_DATE,\n o: rv.operator,\n v1: v1.split('T')[0] + 'T00:00:00.000'\n };\n break;\n }\n case Operator.LESS_OR_EQUAL: {\n filter = {\n f: BaseObjectTypeField.CREATION_DATE,\n o: rv.operator,\n v1: v1.split('T')[0] + 'T23:59:59.000'\n };\n break;\n }\n case Operator.INTERVAL_INCLUDE_BOTH: {\n filter = {\n f: BaseObjectTypeField.CREATION_DATE,\n o: rv.operator,\n v1: v1.split('T')[0] + 'T00:00:00.000',\n v2: v2!.split('T')[0] + 'T23:59:59.000'\n };\n break;\n }\n }\n return filter;\n }\n\n #toSizeFilter(value: string): SearchFilter | undefined {\n let sizeFilter: SearchFilter | undefined = undefined;\n switch (value) {\n case 's':\n sizeFilter = {\n f: ContentStreamField.LENGTH,\n o: Operator.LESS_THAN,\n v1: 1024 * 1024\n };\n break;\n case 'm':\n sizeFilter = {\n f: ContentStreamField.LENGTH,\n o: Operator.INTERVAL_INCLUDE_BOTH,\n v1: 1024 * 1024,\n v2: 1024 * 1024 * 10\n };\n break;\n case 'l':\n sizeFilter = {\n f: ContentStreamField.LENGTH,\n o: Operator.INTERVAL_INCLUDE_BOTH,\n v1: 1024 * 1024 * 10,\n v2: 1024 * 1024 * 100\n };\n break;\n case 'xl':\n sizeFilter = {\n f: ContentStreamField.LENGTH,\n o: Operator.GREATER_THAN,\n v1: 1024 * 1024 * 100\n };\n break;\n }\n return sizeFilter;\n }\n\n #toTypeFilter(value: string): SearchFilter | undefined {\n return value === this.ANY_OPTION\n ? undefined\n : {\n f: BaseObjectTypeField.SECONDARY_OBJECT_TYPE_IDS,\n o: Operator.IN,\n v1: [value]\n };\n }\n}\n","<form [formGroup]=\"filterForm\" yvcDragScroll>\n <yvc-dropdown formControlName=\"type\" [options]=\"typeOptions()\" [disableClearButton]=\"true\"></yvc-dropdown>\n <yvc-dropdown formControlName=\"size\" [options]=\"sizeOptions()\" [disableClearButton]=\"true\"></yvc-dropdown>\n <yvc-dropdown formControlName=\"created\" [options]=\"dateOptions()\" [disableClearButton]=\"true\"></yvc-dropdown>\n\n @if (filtersActive()) {\n <button class=\"secondary\" (click)=\"reset()\">{{ 'yuv.app.drive.search.filter.button.reset' | translate }}</button>\n }\n</form>\n","import { AsyncPipe, NgClass } from '@angular/common';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { AfterViewInit, Component, computed, effect, HostBinding, inject, input, OnDestroy, Signal, signal, untracked, viewChild } from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { ActivatedRoute, ParamMap, Router, RouterModule } from '@angular/router';\nimport {\n AppCacheService,\n BaseObjectTypeField,\n ClipboardService,\n ConfigTypeOption,\n DeviceScreen,\n DeviceService,\n DmsObject,\n DmsService,\n EventService,\n ObjectConfigService,\n Operator,\n ResolvedObjectConfig,\n SearchQuery,\n SystemType,\n TranslateModule,\n TranslateService,\n YuvEventType\n} from '@yuuvis/client-core';\nimport { Action, ActionsService, BASE_ACTION } from '@yuuvis/client-framework/actions';\nimport { FileDropZoneDirective } from '@yuuvis/client-framework/common';\nimport { YUV_ICONS } from '@yuuvis/client-framework/icons';\nimport { MultiObjectSummaryComponent, ObjectSummaryComponent } from '@yuuvis/client-framework/object-summary';\nimport { SimpleSearchComponent } from '@yuuvis/client-framework/simple-search';\nimport { TileConfigTriggerComponent, TileData, TileListComponent, TileListConfigOptions, TileListHighlight } from '@yuuvis/client-framework/tile-list';\nimport { ObjectFlavor, ShellService } from '@yuuvis/client-shell-core';\nimport { ICONS, YvcIconModule } from '@yuuvis/components/icon';\nimport { MenuItem } from '@yuuvis/components/overflow-menu';\nimport { SplitViewComponent, SplitViewLayoutSettings, YvcSplitViewModule } from '@yuuvis/components/split-view';\nimport { finalize, map, Observable, switchMap, tap } from 'rxjs';\nimport { BreadcrumbComponent, SortComponent } from '../../components';\nimport { AddButtonComponent } from '../../components/add-button/add-button.component';\nimport { FolderTreeComponent } from '../../components/folder-tree/folder-tree.component';\nimport { RibbonComponent } from '../../components/ribbon/ribbon.component';\nimport { APP_DRIVE_ICONS } from '../../drive.icons';\nimport { ACTION_CONTEXT, APP_ID, APP_SCHEMA } from '../../drive.schema';\nimport { DRIVE_EVENT, DRIVE_QUERY_FOLDER_ID, DRIVE_ROOT_FOLDER_ID, DriveFolderId } from '../../services/drive/drive.interface';\nimport { DriveService } from '../../services/drive/drive.service';\nimport { STORED_QUERY_ID_PREFIX } from '../../services/stored-query/stored-query.data';\nimport { StoredQuery } from '../../services/stored-query/stored-query.interface';\nimport { StoredQueryService } from '../../services/stored-query/stored-query.service';\nimport { SearchFilterComponent } from '../../components/search-filter/search-filter.component';\n\nconst components = [\n TileListComponent,\n BreadcrumbComponent,\n FolderTreeComponent,\n ObjectSummaryComponent,\n TileConfigTriggerComponent,\n RibbonComponent,\n AddButtonComponent,\n SimpleSearchComponent,\n MultiObjectSummaryComponent,\n SortComponent,\n SearchFilterComponent\n];\n\nconst module = [YvcIconModule, TranslateModule, RouterModule, YvcSplitViewModule];\n\n@Component({\n selector: 'ymd-files',\n standalone: true,\n imports: [NgClass, AsyncPipe, ...module, ...components, FileDropZoneDirective],\n templateUrl: './files.component.html',\n styleUrl: './files.component.scss',\n host: {\n '[class.smallScreen]': 'smallScreenLayout()'\n }\n})\nexport class FilesPageComponent implements AfterViewInit, OnDestroy {\n tileList = viewChild<TileListComponent>('tileList');\n\n #LAYOUT_SETTINGS_STORAGE_KEY = 'yuv.app.drive.files.layout';\n\n private shellService = inject(ShellService);\n private dmsService = inject(DmsService);\n private drive = inject(DriveService);\n private route = inject(ActivatedRoute);\n private router = inject(Router);\n private translate = inject(TranslateService);\n private storedQueryService = inject(StoredQueryService);\n private clipboard = inject(ClipboardService);\n private actionsService = inject(ActionsService);\n readonly #objectConfigService = inject(ObjectConfigService);\n readonly #device = inject(DeviceService);\n\n readonly #eventService = inject(EventService);\n\n readonly ERROR_CODE = {\n NOT_FOUND: '404',\n // pattern: {HTTP_STATUS_CODE}-{SERVICE_ERROR_CODE}\n INVALID_ID: '422-2912'\n };\n\n #appCache = inject(AppCacheService);\n\n objectConfigBucket: string = APP_SCHEMA.id;\n\n splitViewCmp = viewChild.required(SplitViewComponent);\n selected = signal<DmsObject | undefined>(undefined);\n fileDropSummaryDisabled = computed(() => !this.selected()?.permissions?.writeContent);\n disableCreate = false;\n\n actions = this.drive.state$.actions;\n selection = this.drive.state$.selection;\n\n busy = this.drive.state$.busy;\n flavorChips: ObjectFlavor[] = this.shellService.getObjectFlavors();\n appliedFlavor?: ObjectFlavor;\n\n selectionActions = computed(() => ({ selection: this.selection(), actions: this.actions() }));\n\n emptyMode = signal<DriveFolderId | null>(null);\n // error code when loading the object failed. This will be used\n // to determine a proper error message to display\n error = signal<string | undefined>(undefined);\n\n configTypeOptions: Record<string, ConfigTypeOption> = {\n folder: { bucket: APP_ID, type: APP_SCHEMA.types['folder'] },\n file: { bucket: APP_ID, type: APP_SCHEMA.types['file'] }\n };\n\n @HostBinding('class.searchFocused') searchFocused = false;\n\n currentFolderID?: string;\n currentFolder?: DmsObject;\n enableDetails = signal<boolean>(true);\n enableTree = signal<boolean>(true);\n tileConfigBucketLabel = this.translate.instant('yuv.app.drive.tile-config.bucket');\n\n smallScreenLayout = signal(false);\n sortOptionsAvailable = signal(true);\n\n id = input<string | null>(null);\n\n highlightStyles$: Observable<TileListHighlight[]> = this.clipboard.clipboard$(APP_ID).pipe(\n takeUntilDestroyed(),\n map((c) => {\n return c && c.mode && c.objects?.length\n ? [\n {\n cssStyles: this.#highlightStyles[c?.mode],\n ids: c.objects.map((o) => o.id)\n }\n ]\n : [];\n })\n );\n\n readonly #highlightStyles: Record<string, Record<string, unknown>> = {\n cut: { opacity: 0.5 }\n };\n\n #routeIdEffect = effect(() => {\n const param = this.id() || undefined;\n\n untracked(async () => {\n if (param === DRIVE_QUERY_FOLDER_ID) {\n this.emptyMode.set(DRIVE_QUERY_FOLDER_ID);\n return;\n }\n\n this.emptyMode.set(param === DRIVE_ROOT_FOLDER_ID ? DRIVE_ROOT_FOLDER_ID : null);\n this.error.set(undefined);\n this.disableCreate = false;\n this.currentFolderID = param;\n this.drive.updateCurrentFolder(this.currentFolderID);\n this.selected.set(undefined);\n this.currentFolder = undefined;\n if (this.currentFolderID === DRIVE_ROOT_FOLDER_ID) this.currentFolderID = undefined;\n\n if (this.currentFolderID) {\n this.dmsService.getDmsObject(this.currentFolderID).subscribe({\n next: (o: DmsObject) => {\n this.currentFolder = o;\n this._setFolderQuery(this.#getTitle(o));\n },\n error: (e) => {\n console.error('Error getting folder', e);\n this.#processLoadError(e);\n }\n });\n } else this._setFolderQuery(this.translate.instant('yuv.app.drive.folder-tree.mydrive'));\n });\n });\n\n tileListOptions: TileListConfigOptions = {\n actionContext: ACTION_CONTEXT,\n configTypes: Object.values(APP_SCHEMA.types),\n configFlavors: [...this.shellService.getObjectFlavors(), ...APP_SCHEMA.flavors.filter((f) => !f.applicableTo).map((f) => ({ ...f, app: APP_ID }))]\n };\n\n query = this.drive.state$.query;\n queryTitle = this.drive.state$.queryTitle;\n\n icons = {\n ...APP_DRIVE_ICONS,\n sort: APP_DRIVE_ICONS.sort,\n back: YUV_ICONS.back,\n attention: YUV_ICONS.attention,\n refresh: YUV_ICONS.refresh,\n clear: ICONS.clear\n };\n\n constructor() {\n this.drive.events$.pipe(takeUntilDestroyed()).subscribe({\n next: (e) => {\n if (e === DRIVE_EVENT.refresh) {\n this.refresh();\n }\n }\n });\n\n this.#device.screenChange$.pipe(takeUntilDestroyed()).subscribe({\n next: (s: DeviceScreen) => {\n this.smallScreenLayout.set(s.size === 's' && s.orientation === 'portrait');\n this.enableDetails.set(!this.smallScreenLayout());\n }\n });\n\n toObservable(this.drive.state$.selection)\n .pipe(takeUntilDestroyed())\n .subscribe({\n next: (sel: DmsObject[]) => {\n if (sel?.length === 0) {\n this.tileList()?.clearSelection(true);\n this.selected.set(undefined);\n }\n }\n });\n\n this.route.queryParamMap.pipe(takeUntilDestroyed()).subscribe({\n next: (p: ParamMap) => {\n this.sortOptionsAvailable.set(true);\n if (this.route.snapshot.params['id'] === DRIVE_QUERY_FOLDER_ID) {\n const q = p.get('q');\n this.disableCreate = true;\n // check if the query is a stored query\n if (q?.startsWith(STORED_QUERY_ID_PREFIX)) {\n const sq: StoredQuery | undefined = this.storedQueryService.getStoredQuery(q);\n if (sq) {\n this.drive.updateQuery(sq.query, sq.label);\n this.sortOptionsAvailable.set(false);\n return;\n }\n } else if (q) {\n this.sortOptionsAvailable.set(true);\n try {\n const sq: SearchQuery = JSON.parse(decodeURIComponent(q));\n sq.filters = (sq.filters || []).filter((f) => f.f !== BaseObjectTypeField.PARENT_ID);\n this.drive.updateQuery(sq, this.translate.instant('yuv.app.drive.files.search.result.title'));\n return;\n } catch (e) {\n console.error('Error parsing query', e);\n }\n }\n }\n }\n });\n\n this.#eventService\n .on(YuvEventType.DMS_OBJECT_UPDATED)\n .pipe(\n takeUntilDestroyed(),\n tap((e) => {\n this.tileList()?.updateTileList([e.data]);\n e.data.id === this.selected()?.id && this.selected.set(e.data);\n })\n )\n .subscribe();\n }\n\n onFilterQueryChange(q: SearchQuery) {\n this.drive.updateQuery(q, this.translate.instant('yuv.app.drive.files.search.result.title'));\n this.drive.setSelection([]);\n }\n\n #processLoadError(e: HttpErrorResponse) {\n if (`${e.status}` !== this.ERROR_CODE.NOT_FOUND) {\n this.error.set(`${e.status}-${e.error?.serviceErrorCode || ''}`);\n } else this.error.set(this.ERROR_CODE.NOT_FOUND);\n }\n\n #getTitle(o: DmsObject): string {\n const cfgType: ConfigTypeOption = o.isFolder ? this.configTypeOptions['folder'] : this.configTypeOptions['file'];\n const oc: ResolvedObjectConfig = this.#objectConfigService.getResolvedObjectConfig(o.data, cfgType.type, cfgType.bucket, true);\n return oc.title.value;\n }\n\n onDelete() {\n const deleteAction = this.actions().find((a) => a.id === BASE_ACTION.delete);\n if (deleteAction) deleteAction.run(this.drive.state$.selection());\n }\n\n private _setFolderQuery(queryTitle?: string) {\n this.drive.updateQuery(\n {\n filters: [{ f: BaseObjectTypeField.PARENT_ID, o: Operator.EQUAL, v1: this.currentFolderID || null }]\n },\n queryTitle\n );\n }\n\n onContextmenu({ event }: { event: MouseEvent | PointerEvent }) {\n event.preventDefault();\n this.actionsService.openContextMenu(this.actions, (a: Action) => a.run(this.selection()), { x: event.x, y: event.y });\n }\n\n onFileDrop(files: File[]) {\n this.drive.setBusy(true);\n this.drive.checkNamesAndUpload(files).subscribe({ complete: () => this.drive.setBusy(false) });\n }\n\n onFileUpdateDrop(file: File[]) {\n const dmsObject = this.selected();\n if (dmsObject) {\n this.drive.setBusy(true);\n this.drive\n .uploadContent(dmsObject.id, file[0])\n .pipe(finalize(() => this.drive.setBusy(false)))\n .subscribe();\n }\n }\n\n itemFocused(tile: TileData) {\n // console.log(tile);\n }\n\n itemClicked(tile: TileData) {\n if (this.smallScreenLayout()) this.itemDoubleClicked(tile);\n }\n\n onCopy(tiles: TileData[]) {\n this.clipboard.addObjects(\n tiles.map((t) => t.dmsObject),\n 'copy',\n APP_ID\n );\n }\n\n onCut(tiles: TileData[]) {\n this.clipboard.addObjects(\n tiles.map((t) => t.dmsObject),\n 'cut',\n APP_ID\n );\n }\n\n onQuerySubmit(q: SearchQuery) {\n // in order to keep the query in the url as short as\n // possible we'll get rid of the fields because they could be\n // re-applied later on\n q.fields = undefined;\n\n this.router.navigate(['..', 'query'], {\n queryParams: { q: encodeURIComponent(JSON.stringify(q)) },\n relativeTo: this.route\n });\n }\n\n selectionChanged(tiles: TileData[]) {\n if (tiles.length === 1) this.loadDetails(tiles[0].id);\n else {\n this.selected.set(undefined);\n if (tiles.length === 0) {\n this.drive.setSelection([]);\n } else {\n this.drive.setBusy(true);\n this.dmsService.getDmsObjects(tiles.map((i) => i.id)).subscribe({\n next: (o: DmsObject[]) => {\n this.drive.setBusy(false);\n this.drive.setSelection(o);\n }\n });\n }\n }\n }\n\n itemDoubleClicked(tile: TileData) {\n if (tile.instanceData) {\n this.drive.setBusy(true);\n const nav = (tile.instanceData[BaseObjectTypeField.BASE_TYPE_ID] as string) === SystemType.FOLDER ? ['..'] : ['../..', 'object'];\n this.router.navigate([...nav, tile.instanceData[BaseObjectTypeField.OBJECT_ID]], { relativeTo: this.route }).then(() => this.drive.setBusy(false));\n }\n }\n\n loadDetails(id: string) {\n this.shellService.addBusy();\n // load the dms object\n this.dmsService.getDmsObject(id).subscribe({\n next: (o: DmsObject) => {\n this.selected.set(o);\n this.shellService.removeBusy();\n this.drive.setSelection([o]);\n }\n });\n }\n\n clearSelection() {\n this.drive.setSelection([]);\n }\n\n openParent() {\n if (this.currentFolder) {\n this.drive.setBusy(true);\n this.router\n .navigate(['..', this.currentFolder.data[BaseObjectTypeField.PARENT_ID] || DRIVE_ROOT_FOLDER_ID], {\n relativeTo: this.route,\n replaceUrl: true\n })\n .then(() => this.drive.setBusy(false));\n }\n }\n\n setBusy(busy: boolean) {\n this.drive.setBusy(busy);\n }\n\n refresh() {\n this.tileList()?.refresh();\n this.drive.setSelection([]);\n }\n\n onLayoutSettingsChange(e: any) {\n this.#appCache.setItem(this.#LAYOUT_SETTINGS_STORAGE_KEY, e).subscribe();\n }\n\n #applyLayoutSettings(settings: SplitViewLayoutSettings) {\n this.splitViewCmp().applyLayoutSettings(settings);\n }\n\n ngAfterViewInit(): void {\n this.#appCache.getItem(this.#LAYOUT_SETTINGS_STORAGE_KEY).subscribe({\n next: (ls: SplitViewLayoutSettings) => {\n if (ls) {\n this.enableDetails.set(ls.areas[2]?.visible);\n this.enableTree.set(ls.areas[0]?.visible);\n this.#applyLayoutSettings(ls);\n }\n }\n });\n }\n\n ngOnDestroy(): void {\n this.clipboard.clear(APP_ID);\n }\n}\n","<header>\n <!-- navigation bar -->\n <nav [attr.aria-label]=\"'yuv.app.drive.files.naviagtion.aria.label' | translate\">\n <div class=\"nav\">\n <button class=\"back\" [disabled]=\"!currentFolder\" title=\"{{ 'yuv.app.drive.files.nav.back.tooltip' | translate }}\" (click)=\"openParent()\">\n <yvc-icon [svg]=\"icons.back\"></yvc-icon>\n </button>\n <button class=\"refresh\" title=\"{{ 'yuv.app.drive.files.nav.refresh.tooltip' | translate }}\" (click)=\"refresh()\">\n <yvc-icon [svg]=\"icons.refresh\"></yvc-icon>\n </button>\n </div>\n\n @if (!query()?.term) {\n <ymd-breadcrumb></ymd-breadcrumb>\n } @else {\n <div class=\"breadcrumb\"></div>\n }\n <div class=\"search\">\n <yuv-simple-search [query]=\"query()\" (querySubmit)=\"onQuerySubmit($event)\"></yuv-simple-search>\n <!-- TODO: enable again once drive search needs to be a little bit more sophisticated -->\n <!-- <ymd-drive-search (focused)=\"searchFocused = $event\"></ymd-drive-search> -->\n </div>\n </nav>\n\n <!-- ribbon with actions and options -->\n <ymd-ribbon [objects]=\"selection()\" [busy]=\"busy()\" [enableClipboard]=\"true\">\n <ng-template #primaryActions>\n <ymd-add-button [disabled]=\"disableCreate\"></ymd-add-button>\n </ng-template>\n\n <ng-template #secondaryActions>\n <div class=\"options\">\n @if (!smallScreenLayout()) {\n <button\n class=\"toggle-tree toggle\"\n [ngClass]=\"{ enabled: enableTree() }\"\n title=\"{{ 'yuv.app.drive.files.toggletree.tooltip' | translate }}\"\n (click)=\"enableTree.set(!enableTree())\"\n >\n <yvc-icon [svg]=\"icons.toggleLeft\"></yvc-icon>\n </button>\n <button\n class=\"toggle-details toggle\"\n [ngClass]=\"{ enabled: enableDetails() }\"\n title=\"{{ 'yuv.app.drive.files.toggledetails.tooltip' | translate }}\"\n (click)=\"enableDetails.set(!enableDetails())\"\n >\n <yvc-icon [svg]=\"icons.toggleRight\"></yvc-icon>\n </button>\n }\n <yuv-tile-config-trigger\n [icon]=\"icons.settings\"\n [bucket]=\"objectConfigBucket\"\n [bucketLabel]=\"tileConfigBucketLabel\"\n [options]=\"tileListOptions\"\n ></yuv-tile-config-trigger>\n </div>\n </ng-template>\n </ymd-ribbon>\n</header>\n\n<yvc-split-view [gutterSize]=\"1\" (layoutSettingsChange)=\"onLayoutSettingsChange($event)\">\n <!-- folder tree -->\n <ng-template yvcSplitArea [size]=\"20\" [visible]=\"enableTree() && !smallScreenLayout()\">\n <ymd-folder-tree yuvFocusable=\"Tree\"></ymd-folder-tree>\n </ng-template>\n\n <!-- files -->\n <ng-template yvcSplitArea [size]=\"60\">\n @let err = error();\n @if (err) {\n <div class=\"error\">\n <p>\n <yvc-icon [svg]=\"icons.attention\"></yvc-icon>\n @switch (err) {\n @case (ERROR_CODE.NOT_FOUND) {\n {{ 'yuv.app.drive.files.error.load.not-found' | translate }}\n }\n @case (ERROR_CODE.INVALID_ID) {\n {{ 'yuv.app.drive.files.error.load.invalid-id' | translate }}\n }\n @default {\n {{ 'yuv.app.drive.files.error.load' | translate }}\n }\n }\n </p>\n </div>\n } @else {\n <div class=\"files\" [yuvFileDropZone]=\"{ label: 'yuv.app.drive.files.dropzone.label' | translate }\" (fileDrop)=\"onFileDrop($event)\">\n <header class=\"files-header\">\n <h1>{{ queryTitle() }}</h1>\n @if (query()?.term) {\n <ymd-search-filter [query]=\"query()\" (queryChange)=\"onFilterQueryChange($event)\"></ymd-search-filter>\n }\n @if (sortOptionsAvailable()) {\n <ymd-sort />\n }\n <div class=\"flavors\">\n <!-- TODO: enable again once flavors/aspects are supported -->\n <!-- @for (f of flavorChips; track f.id) {\n <yuv-flavor-chip [ngClass]=\"{ active: f.id === appliedFlavor?.id }\" [flavor]=\"f\" (click)=\"appliedFlavor = f\"></yuv-flavor-chip>\n }-->\n </div>\n </header>\n\n <yuv-tile-list\n #tileList\n class=\"staggered\"\n [attr.aria-label]=\"'yuv.app.drive.files.content.aria.label' | translate\"\n [attr.aria-busy]=\"busy()\"\n [attr.role]=\"'listbox'\"\n (keydown.delete)=\"onDelete()\"\n [bucket]=\"objectConfigBucket\"\n [multiselect]=\"true\"\n [query]=\"query()\"\n [flavor]=\"appliedFlavor\"\n [options]=\"tileListOptions\"\n (itemDblClick)=\"itemDoubleClicked($event)\"\n (itemSelect)=\"itemClicked($event)\"\n (selectionChange)=\"selectionChanged($event)\"\n (copy)=\"onCopy($event)\"\n (cut)=\"onCut($event)\"\n (busy)=\"setBusy($event)\"\n (ctxMenu)=\"onContextmenu($event)\"\n [highlights]=\"highlightStyles$ | async\"\n >\n <div #empty>\n @if (emptyMode() === 'root') {\n <p class=\"empty\">{{ 'yuv.app.drive.files.content.empty.root.list' | translate }}</p>\n } @else if (emptyMode() === 'query') {\n <p class=\"empty\">{{ 'yuv.app.drive.files.content.empty.query.list' | translate }}</p>\n } @else {\n <p class=\"empty\">{{ 'yuv.app.drive.files.content.empty.list' | translate }}</p>\n }\n </div>\n </yuv-tile-list>\n </div>\n }\n </ng-template>\n\n <!-- details -->\n <ng-template yvcSplitArea [size]=\"20\" [visible]=\"enableDetails()\">\n @let selectedItem = selected();\n @if (enableDetails() && selectedItem) {\n @if (selectedItem?.isFolder) {\n <yuv-object-summary [configType]=\"configTypeOptions['folder']\" [dmsObject]=\"selectedItem\"></yuv-object-summary>\n } @else {\n <yuv-object-summary\n [configType]=\"configTypeOptions['file']\"\n [dmsObject]=\"selectedItem\"\n [yuvFileDropZone]=\"{ label: 'yuv.app.drive.files.dropzone.content.replace.label' | translate }\"\n [fileDropDisabled]=\"fileDropSummaryDisabled()\"\n (fileDrop)=\"onFileUpdateDrop($event)\"\n ></yuv-object-summary>\n }\n } @else {\n @let sel = selection();\n @if (sel && sel.length > 0) {\n <yuv-multi-object-summary [headline]=\"'yuv.app.drive.multiselected.details' | translate: { count: selection().length }\"></yuv-multi-object-summary>\n } @else if (tileList()?.items?.length === 0) {\n <!-- TODO: CHOULD HAVE A DIFFERENT MESSAGE FOR EMPTY RESULTS EMPTY FOR NOW -->\n <div class=\"message\">{{ 'yuv.app.drive.empty.results.details.message' | translate }}</div>\n } @else {\n <div class=\"message\">{{ 'yuv.app.drive.unselected.details' | translate }}</div>\n }\n }\n </ng-template>\n</yvc-split-view>\n","import { CommonModule } from '@angular/common';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { Component, computed, effect, inject, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ActivatedRoute, ParamMap, Router } from '@angular/router';\nimport {\n DeviceScreen,\n DeviceService,\n DmsObject,\n DmsService,\n EventService,\n FlavoredDmsObject,\n ObjectConfigService,\n TranslateModule,\n TranslateService,\n YuvEventType\n} from '@yuuvis/client-core';\nimport { BASE_ACTION } from '@yuuvis/client-framework/actions';\nimport { ContainerSizeDirective, FileDropZoneDirective } from '@yuuvis/client-framework/common';\nimport { YUV_ICONS } from '@yuuvis/client-framework/icons';\nimport { ObjectAuditComponent, ObjectMetadataComponent } from '@yuuvis/client-framework/object-details';\nimport { ObjectFlavorComponent } from '@yuuvis/client-framework/object-flavor';\nimport { ObjectPreviewComponent } from '@yuuvis/client-framework/object-preview';\nimport { RendererDirective, RendererDirectiveInput } from '@yuuvis/client-framework/renderer';\nimport { ShellService } from '@yuuvis/client-shell-core';\nimport { YvcIconModule } from '@yuuvis/components/icon';\nimport { YvcSplitViewModule } from '@yuuvis/components/split-view';\nimport { YvcTabsModule } from '@yuuvis/components/tabs';\nimport { finalize } from 'rxjs';\nimport { RibbonComponent } from '../../components/ribbon/ribbon.component';\nimport { APP_ACTIONS, APP_ID, APP_SCHEMA } from '../../drive.schema';\nimport { DRIVE_ROOT_FOLDER_ID, DriveService } from '../../services';\n\n@Component({\n selector: 'ymd-object',\n standalone: true,\n imports: [\n CommonModule,\n ObjectMetadataComponent,\n ObjectAuditComponent,\n ObjectFlavorComponent,\n YvcIconModule,\n YvcSplitViewModule,\n RendererDirective,\n ContainerSizeDirective,\n TranslateModule,\n RibbonComponent,\n YvcTabsModule,\n ObjectPreviewComponent,\n FileDropZoneDirective\n ],\n templateUrl: './object.component.html',\n styleUrl: './object.component.scss',\n host: {\n ['class.smallScreenLayout']: 'smallScreenLayout()'\n }\n})\nexport class ObjectPageComponent {\n #dmsService = inject(DmsService);\n #eventService = inject(EventService);\n #shellService = inject(ShellService);\n #route = inject(ActivatedRoute);\n #router = inject(Router);\n #objectConfig = inject(ObjectConfigService);\n translate = inject(TranslateService);\n #drive = inject(DriveService);\n #device = inject(DeviceService);\n\n busy = this.#drive.state$.busy;\n smallScreenLayout = signal(false);\n errorMessage?: string;\n\n dmsObject = signal<DmsObject | undefined>(undefined);\n #dmsObjectEffect = effect(() => this.#setHeaderData());\n fileDropReplaceDisabled = computed(() => !this.dmsObject()?.permissions?.writeContent);\n flavoredDmsObject = computed<FlavoredDmsObject | undefined>(() => {\n const o = this.dmsObject();\n return o\n ? {\n object: o,\n flavors: [\n // {\n // id: APP_SCHEMA.types['file']['id'],\n // icon: APP_SCHEMA.types['file']['icon'],\n // sot: FS_SOTS.object\n // },\n ...this.#shellService.getAppliedObjectFlavors(o).applied\n ]\n }\n : undefined;\n });\n\n versionsLink = computed(() => {\n const o = this.dmsObject();\n return o ? `../../versions/${o.id}` : '';\n });\n\n icons = {\n back: YUV_ICONS.back,\n error: YUV_ICONS.attention,\n refresh: YUV_ICONS.refresh\n };\n\n layoutSettingIdBase = 'app.drive.object.';\n\n headerData?: {\n title: RendererDirectiveInput;\n description?: RendererDirectiveInput;\n icon: string;\n };\n\n excludeActions = [APP_ACTIONS.paste, APP_ACTIONS.contentUpdate, BASE_ACTION.copy, BASE_ACTION.cut];\n\n constructor() {\n this.#route.paramMap.pipe(takeUntilDestroyed()).subscribe((p: ParamMap) => {\n this._loadDetails(p.get('id'));\n });\n\n this.#device.screenChange$.pipe(takeUntilDestroyed()).subscribe({\n next: (s: DeviceScreen) => {\n const ssl = s.size === 's' && s.orientation === 'portrait';\n this.smallScreenLayout.set(ssl);\n }\n });\n\n this.#eventService\n .on(YuvEventType.DMS_OBJECT_UPDATED)\n .pipe(takeUntilDestroyed())\n .subscribe((e) => {\n if (e.data.id === this.dmsObject()?.id) this.dmsObject.set(e.data);\n });\n\n this.#eventService\n .on(YuvEventType.DMS_OBJECT_DELETED)\n .pipe(takeUntilDestroyed())\n .subscribe((e) => {\n if (e.data.id === this.dmsObject()?.id)\n if (e.data.id === this.dmsObject()?.id)\n // navigate to parent folder\n this.openParent();\n });\n }\n\n refresh() {\n const o = this.dmsObject();\n if (o)\n this.#dmsService.getDmsObject(o.id).subscribe((o) => {\n this.dmsObject.set(o);\n });\n if (o)\n this.#dmsService.getDmsObject(o.id).subscribe((o) => {\n this.dmsObject.set(o);\n });\n }\n\n openParent() {\n const pid = this.dmsObject()?.parentId || DRIVE_ROOT_FOLDER_ID;\n this.#router.navigate(['../..', 'files', pid], {\n relativeTo: this.#route\n });\n }\n\n onIndexdataSaved(updatedObject: DmsObject) {\n this.dmsObject.set(updatedObject);\n }\n\n #setHeaderData() {\n const o = this.dmsObject();\n if (!o) {\n this.headerData = undefined;\n } else {\n const roc = this.#objectConfig.getResolvedObjectConfig(o.data, APP_SCHEMA.types['file'], APP_ID);\n this.headerData = {\n title: roc.title,\n description: roc.description,\n icon: roc.icon?.value\n };\n }\n }\n\n onFileDrop(file: File[]) {\n this.#drive.setBusy(true);\n const dmsObject = this.dmsObject();\n\n dmsObject &&\n this.#drive\n .uploadContent(dmsObject.id, file[0])\n .pipe(finalize(() => this.#drive.setBusy(false)))\n .subscribe();\n }\n\n versionSelected(version: number) {\n const dmsObject = this.dmsObject();\n dmsObject && this.#router.navigate(['../..', 'versions', dmsObject.id], { queryParams: { version }, relativeTo: this.#route });\n }\n\n private _loadDetails(id: string | null) {\n if (!id) {\n this.dmsObject.set(undefined);\n this.headerData = undefined;\n } else {\n this.#shellService.addBusy();\n // load the dms object\n this.#dmsService.getDmsObject(id).subscribe({\n next: (o: DmsObject) => {\n this.dmsObject.set(o);\n },\n error: (e: HttpErrorResponse) => {\n this.dmsObject.set(undefined);\n switch (e.status) {\n case 404:\n this.errorMessage = this.translate.instant('yuv.app.drive.page.object.error.404');\n break;\n default:\n this.errorMessage = this.translate.instant('yuv.app.drive.page.object.error.default');\n }\n },\n complete: () => this.#shellService.removeBusy()\n });\n }\n }\n}\n","@let object = dmsObject();\n@if (object) {\n <div\n class=\"object\"\n yuvContainerSize\n [yuvFileDropZone]=\"{ label: 'yuv.app.drive.files.dropzone.content.replace.label' | translate }\"\n [fileDropDisabled]=\"fileDropReplaceDisabled()\"\n (fileDrop)=\"onFileDrop($event)\"\n >\n <ymd-ribbon [objects]=\"[object]\" [excludeActions]=\"excludeActions\">\n <ng-template #primaryActions>\n <div class=\"nav\">\n <button class=\"back\" (click)=\"openParent()\">\n <yvc-icon [svg]=\"icons.back\"></yvc-icon>\n </button>\n <button class=\"refresh\" title=\"{{ 'yuv.app.drive.page.object.refresh.tooltip' | translate }}\" (click)=\"refresh()\">\n <yvc-icon [svg]=\"icons.refresh\"></yvc-icon>\n </button>\n </div>\n </ng-template>\n <!-- <ng-template #secondaryActions></ng-template> -->\n </ymd-ribbon>\n\n @let ssl = smallScreenLayout();\n @if (ssl) {\n <yvc-tabs [layoutSettingsID]=\"layoutSettingIdBase + 'tabs.small'\" [cacheViews]=\"false\">\n <ng-template [yvcTab]=\"{ id: 'content_s', label: 'yuv.app.drive.object-metadata.tabs.content.title' | translate }\">\n @if (object && object?.content) {\n <yuv-object-preview [dmsObject]=\"object\"></yuv-object-preview>\n }\n </ng-template>\n <ng-template [yvcTab]=\"{ id: 'indexdata_s', label: 'yuv.app.drive.object-metadata.tabs.indexdata.title' | translate }\">\n <yuv-object-metadata [flavoredDmsObject]=\"flavoredDmsObject()\" (indexDataSaved)=\"onIndexdataSaved($event)\"> </yuv-object-metadata>\n </ng-template>\n <ng-template [yvcTab]=\"{ id: 'history_s', label: 'yuv.app.drive.object-metadata.tabs.history.title' | translate }\">\n <yuv-object-audit [dmsObject]=\"object\"></yuv-object-audit>\n </ng-template>\n </yvc-tabs>\n } @else {\n <yvc-split-view [layoutSettingsID]=\"layoutSettingIdBase + 'splitview'\" [gutterSize]=\"1\">\n <ng-template yvcSplitArea [size]=\"40\">\n <section class=\"meta\">\n <header>\n <yuv-object-flavor disableSelection=\"true\" [dmsObject]=\"object\"></yuv-object-flavor>\n\n @if (headerData) {\n <yvc-icon class=\"object-icon\" [svg]=\"headerData.icon\"></yvc-icon>\n <h1><ng-container *yuvRenderer=\"headerData.title\"></ng-container></h1>\n <div class=\"description\"><ng-container *yuvRenderer=\"headerData.description\"></ng-container></div>\n }\n </header>\n\n <yvc-tabs [layoutSettingsID]=\"layoutSettingIdBase + 'tabs'\">\n <ng-template [yvcTab]=\"{ id: 'indexdata', label: 'yuv.app.drive.object-metadata.tabs.indexdata.title' | translate }\">\n <yuv-object-metadata [flavoredDmsObject]=\"flavoredDmsObject()\" (indexDataSaved)=\"onIndexdataSaved($event)\"> </yuv-object-metadata>\n </ng-template>\n <ng-template [yvcTab]=\"{ id: 'history', label: 'yuv.app.drive.object-metadata.tabs.history.title' | translate }\">\n <yuv-object-audit [dmsObject]=\"object\" [versionsLink]=\"versionsLink()\"></yuv-object-audit>\n </ng-template>\n </yvc-tabs>\n </section>\n </ng-template>\n <ng-template yvcSplitArea [size]=\"60\">\n @if (object && object?.content) {\n <yuv-object-preview [dmsObject]=\"object\"></yuv-object-preview>\n }\n </ng-template>\n </yvc-split-view>\n }\n </div>\n} @else if (errorMessage) {\n <!-- object could not be loaded -->\n <div class=\"error state\">\n <yvc-icon [svg]=\"icons.error\"></yvc-icon>\n <p>{{ errorMessage }}</p>\n </div>\n} @else {\n <!-- object is loading -->\n <div class=\"loading state\">\n <div class=\"yuv-loader\"></div>\n </div>\n}\n","import { inject } from '@angular/core';\nimport { ActivatedRouteSnapshot, ResolveFn } from '@angular/router';\nimport { of } from 'rxjs';\nimport { DriveService } from '../drive/drive.service';\nimport { DRIVE_QUERY_FOLDER_ID } from '../drive/drive.interface';\n\nexport const filesResolver: ResolveFn<boolean> = (route: ActivatedRouteSnapshot) => {\n const id = route.params['id'];\n const driveStore = inject(DriveService);\n if (id !== DRIVE_QUERY_FOLDER_ID) driveStore.resolveFilesState(id).subscribe(console.log);\n\n return of(true);\n};\n","import { inject } from '@angular/core';\nimport { ActivatedRouteSnapshot, ResolveFn } from '@angular/router';\nimport { of, forkJoin } from 'rxjs';\nimport { DriveService } from '../drive/drive.service';\n\nexport const versionsResolver: ResolveFn<boolean> = (route: ActivatedRouteSnapshot) => {\n const id = route.params['id'];\n const driveStore = inject(DriveService);\n\n forkJoin([driveStore.getVersions(id), driveStore.getSelectedDmsObject(id)]).subscribe();\n\n return of(true);\n};\n","import { Route } from '@angular/router';\nimport { DriveFrameComponent } from './container/drive/drive.component';\nimport { FilesPageComponent } from './pages/files/files.component';\nimport { ObjectPageComponent } from './pages/object/object.component';\nimport { filesResolver } from './services/resolver';\n\nexport const YuuvisDriveRoutes: Route[] = [\n {\n path: '',\n component: DriveFrameComponent,\n children: [\n { path: 'files', redirectTo: 'files/root' },\n { path: 'files/:id', component: FilesPageComponent, resolve: { filesResolver } },\n { path: 'object/:id', component: ObjectPageComponent },\n { path: '', redirectTo: 'files/root', pathMatch: 'full' }\n ]\n }\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","switchMap","map","TranslateService","TranslateModule","i2","i3","finalize","i4","filter"],"mappings":"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"}