irisa-minio 20.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"irisa-minio.mjs","sources":["../../../../../libs/components/minio/src/lib/helpers/file-helpers.ts","../../../../../libs/components/minio/src/lib/services/minio.service.ts","../../../../../libs/components/minio/src/lib/file-upload/file-upload.component.ts","../../../../../libs/components/minio/src/lib/file-upload/file-upload.component.html","../../../../../libs/components/minio/src/lib/image/image.component.ts","../../../../../libs/components/minio/src/lib/image/image.component.html","../../../../../libs/components/minio/src/lib/minio.module.ts","../../../../../libs/components/minio/src/public-api.ts","../../../../../libs/components/minio/src/irisa-minio.ts"],"sourcesContent":["\r\nexport function getFileIcon(extension: string): string {\r\n if (extension)\r\n return `data:image/svg+xml;charset=utf-8,${encodeURIComponent(getFileIconContent(extension.toLowerCase()))}`;\r\n return '';\r\n}\r\n\r\nexport function getFileSize(bytes: number, decimals: number = 2) {\r\n if (bytes === 0) {\r\n return '0 Bytes';\r\n }\r\n const k = 1024;\r\n const dm = decimals <= 0 ? 0 : decimals || 2;\r\n const sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\r\n const i = Math.floor(Math.log(bytes) / Math.log(k));\r\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];\r\n}\r\n\r\nconst svgs = {\r\n doc: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><path d=\"M18.536 2.323v2.545c3.4.019 7.12-.035 10.521.019a.783.783 0 01.912.861c.054 6.266-.013 12.89.032 19.157-.02.4.009 1.118-.053 1.517-.079.509-.306.607-.817.676-.286.039-.764.034-1.045.047-2.792-.014-5.582-.011-8.374-.01h-1.175v2.547L2 27.133V4.873l16.536-2.551\" fill=\"#283c82\"/><path d=\"M18.536 5.822h10.5V26.18h-10.5v-2.545h8.27v-1.272h-8.27v-1.59h8.27V19.5h-8.27v-1.59h8.27v-1.273h-8.27v-1.59h8.27v-1.273h-8.27v-1.59h8.27v-1.273h-8.27v-1.59h8.27V8.048h-8.27V5.822M8.573 11.443c.6-.035 1.209-.06 1.813-.092.423 2.147.856 4.291 1.314 6.429.359-2.208.757-4.409 1.142-6.613a57.415 57.415 0 001.905-.1c-.719 3.082-1.349 6.19-2.134 9.254-.531.277-1.326-.013-1.956.032-.423-2.106-.916-4.2-1.295-6.314-.372 2.061-.856 4.094-1.282 6.136q-.916-.048-1.839-.111c-.528-2.8-1.148-5.579-1.641-8.385.544-.025 1.091-.048 1.635-.067.328 2.026.7 4.043.986 6.072.448-2.08.907-4.161 1.352-6.241\" fill=\"#fff\"/></svg>',\r\n xls: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><path d=\"M28.781 4.405h-10.13V2.018L2 4.588v22.527l16.651 2.868v-3.538h10.13A1.162 1.162 0 0030 25.349V5.5a1.162 1.162 0 00-1.219-1.095zm.16 21.126H18.617l-.017-1.889h2.487v-2.2h-2.506l-.012-1.3h2.518v-2.2H18.55l-.012-1.3h2.549v-2.2H18.53v-1.3h2.557v-2.2H18.53v-1.3h2.557v-2.2H18.53v-2h10.411z\" fill=\"#20744a\" fill-rule=\"evenodd\"/><path fill=\"#20744a\" d=\"M22.487 7.439h4.323v2.2h-4.323zM22.487 10.94h4.323v2.2h-4.323zM22.487 14.441h4.323v2.2h-4.323zM22.487 17.942h4.323v2.2h-4.323zM22.487 21.443h4.323v2.2h-4.323z\"/><path fill=\"#fff\" fill-rule=\"evenodd\" d=\"M6.347 10.673l2.146-.123 1.349 3.709 1.594-3.862 2.146-.123-2.606 5.266 2.606 5.279-2.269-.153-1.532-4.024-1.533 3.871-2.085-.184 2.422-4.663-2.238-4.993z\"/></svg>',\r\n ppt: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><path d=\"M18.536 2.321v2.863c3.4.019 7.357-.035 10.754.016.642 0 .67.568.678 1.064.054 5.942-.013 12.055.032 18-.012.234-.006 1.1-.013 1.346-.022.823-.434.859-1.257.884-.132 0-.52.006-.648.012-3.181-.016-6.362-.009-9.546-.009v3.182L2 27.134V4.873l16.536-2.551\" fill=\"#d33922\"/><path d=\"M18.536 6.138h10.5v19.4h-10.5V23h7.634v-1.275h-7.634v-1.59h7.634v-1.272h-7.631c0-.624 0-1.247-.006-1.87a4.467 4.467 0 003.82-.375 4.352 4.352 0 001.959-3.474c-1.4-.01-2.793-.006-4.186-.006 0-1.384.016-2.767-.029-4.148-.522.1-1.043.21-1.562.321V6.139\" fill=\"#fff\"/><path d=\"M20.766 8.324a4.476 4.476 0 014.186 4.167c-1.4.016-2.793.01-4.189.01V8.324\" fill=\"#d33922\"/><path d=\"M7.1 10.726c1.727.083 3.82-.684 5.252.611 1.371 1.664 1.008 4.724-1.024 5.719A4.7 4.7 0 019 17.348c0 1.244-.006 2.488 0 3.731-.63-.054-1.263-.108-1.893-.159-.029-3.4-.035-6.8 0-10.2\" fill=\"#fff\"/><path d=\"M8.993 12.446c.627-.029 1.4-.143 1.826.445a2.308 2.308 0 01.041 2.087c-.363.655-1.183.592-1.816.668-.067-1.066-.06-2.131-.051-3.2\" fill=\"#d33922\"/></svg>',\r\n png: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><path d=\"M30 5.851v20.298H2V5.851h28\" fill=\"#2dcc9f\"/><path d=\"M24.232 8.541a2.2 2.2 0 101.127.623 2.212 2.212 0 00-1.127-.623M18.111 20.1q-2.724-3.788-5.45-7.575L4.579 23.766h10.9q1.316-1.832 2.634-3.663M22.057 16q-2.793 3.882-5.584 7.765h11.169Q24.851 19.882 22.057 16z\" fill=\"#fff\"/></svg>',\r\n zip: '<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 32 32\"><defs><linearGradient id=\"a\" x1=\"-414.07\" y1=\"-323.688\" x2=\"-413.475\" y2=\"-323.688\" gradientTransform=\"rotate(-2.754 55095.274 -73583.23) scale(8.352)\" gradientUnits=\"userSpaceOnUse\"><stop offset=\"0\" stop-color=\"#3dc2f3\"/><stop offset=\"1\" stop-color=\"#fff\"/></linearGradient><linearGradient id=\"d\" x1=\"-466.763\" y1=\"-351.799\" x2=\"-466.168\" y2=\"-351.799\" gradientTransform=\"rotate(176.688 -1581.368 -1116.272) scale(6.683)\" xlink:href=\"#a\"/><linearGradient id=\"e\" x1=\"-515.182\" y1=\"-375.873\" x2=\"-514.587\" y2=\"-375.873\" gradientTransform=\"rotate(180 -662.65 -481.324) scale(2.607)\" xlink:href=\"#a\"/><linearGradient id=\"b\" x1=\"-413.465\" y1=\"-322.372\" x2=\"-412.869\" y2=\"-322.372\" gradientTransform=\"rotate(-1.63 93678.305 -123744.426) scale(8.403)\" gradientUnits=\"userSpaceOnUse\"><stop offset=\"0\" stop-color=\"#0995dd\"/><stop offset=\"1\" stop-color=\"#fff\"/></linearGradient><linearGradient id=\"f\" x1=\"-515.182\" y1=\"-373.034\" x2=\"-514.587\" y2=\"-373.034\" gradientTransform=\"rotate(180 -662.625 -472.184) scale(2.607)\" xlink:href=\"#a\"/><linearGradient id=\"g\" x1=\"-415.664\" y1=\"-321.968\" x2=\"-415.069\" y2=\"-321.968\" gradientTransform=\"rotate(-7.749 19166.393 -28309.74) scale(8.752)\" xlink:href=\"#b\"/><linearGradient id=\"i\" x1=\"-397.199\" y1=\"-317.443\" x2=\"-396.604\" y2=\"-317.443\" gradientTransform=\"rotate(.719 -126538.107 155625.572) scale(4.876)\" xlink:href=\"#a\"/><radialGradient id=\"c\" cx=\"-428.363\" cy=\"-337.616\" r=\".076\" gradientTransform=\"matrix(22.426 -.918 .944 23.053 9940.275 7417.533)\" gradientUnits=\"userSpaceOnUse\"><stop offset=\"0\" stop-color=\"#fff\"/><stop offset=\"1\" stop-color=\"#41c3f3\"/></radialGradient><radialGradient id=\"h\" cx=\"-435.908\" cy=\"-337.858\" r=\".076\" gradientTransform=\"matrix(22.426 -.918 .944 23.053 10123.552 7416.068)\" xlink:href=\"#c\"/></defs><path d=\"M9.832 2l7.415.053a2 2 0 012.054.936l.67.819h5.672c.5.032.8.175.949.446a2.8 2.8 0 01.092 1.046l.019.913c.008 1.534-.388 1.533-1.009 1.523l-1.31.017v11.741a8.05 8.05 0 01.846.019c.621.011 1.19.005 1.191 1.366-.009.224-.017.45-.01.621a2.2 2.2 0 000 .569c-.032.5-.07.83-.3 1.047-.18.231-.487.312-.988.28-.277-.024-.516.021-.741.012l-.016 2.207c.105.031.225.007.33.039.156.045.329.04.419.121a1.43 1.43 0 011.124 1.4l1.952.113a.587.587 0 01.227-.388.754.754 0 01.524-.245l.053.015a.9.9 0 01.79.8l-.015.053.012.741a.942.942 0 01-.286.6 1.194 1.194 0 01-.577.229.753.753 0 01-.546-.271.425.425 0 01-.148-.271l-2.082.134a1.6 1.6 0 01-.452.777 2.156 2.156 0 01-1.513.525l-2.9.011a2.421 2.421 0 01-1.585-.4 1.483 1.483 0 01-.482-.877l-3.2-.133a.518.518 0 01-.211.335.866.866 0 01-.577.23.745.745 0 01-.56-.219.868.868 0 01-.23-.577v-.794a.754.754 0 01.271-.545.6.6 0 01.577-.23.745.745 0 01.56.219.428.428 0 01.149.27l3.2-.264a1.928 1.928 0 01.6-.9 2.406 2.406 0 011.274-.48l.016-2.208c-.292.028-.568 0-.913.019l-1.247 1.169a2.482 2.482 0 01-2.158.793c-1.19-.005-2.5.012-3.809.029-1.243-.02-2.484-.04-3.847-.038a2.971 2.971 0 01-1.144-.162 3.342 3.342 0 01-1.052-.872 5.746 5.746 0 01-.469-.533c-.127-.15-.253-.3-.469-.533a.763.763 0 01-.164-.218.467.467 0 01.106-.367c.067-.037.15-.126.218-.163.172-.007.359-.066.532-.073 1.415.013 3.053.035 4.639.041s3.173.013 4.812.035a2.273 2.273 0 001-.333 5.376 5.376 0 00.833-.722c.88-.88 2.044-1.96 2.837-1.957a.5.5 0 01.277.023l.033-11.848h-.4a1.545 1.545 0 01-1.4-.634l-1.377-1.7c-.633-.75-.633-.75-1.546-.732L7.55 4.572c-.517.02-1.429.04-.805-.744l.827-.9a3.127 3.127 0 011.088-.813A5.06 5.06 0 019.828 2\" fill=\"#2e2a2b\"/><path d=\"M15.366 27.055l-.005.018-.041.007-.041.007-.018-.007-.082.015-.018-.007-.128.04-.028.03-.041.007-.016.054-.046.025-.018-.007-.016.054-.016.054-.016.054-.016.054-.016.054-.016.054-.016.054.022.123-.005.018-.01.035.022.123-.016.054.012.158-.016.054-.016.054.031.028.008.041-.016.054-.016.054.048.033-.01.035.038.069.043.051-.005.018.054.015.038.069.054.015c.028.051.092.068.173.07h.077l.082-.015a.45.45 0 00.164-.03l.051-.044.018.007.016-.054.085-.092.016-.054.016-.054.016-.054.016-.054.016-.054.01-.035-.038-.069.031-.107-.017-.141.026-.089-.022-.123.016-.054.016-.054-.038-.069.016-.054.01-.035-.031-.028-.008-.041-.013-.023-.025-.046-.038-.069-.02-.064-.054-.015-.145-.1-.089-.026z\" fill=\"url(#c)\"/><path fill=\"url(#a)\" d=\"M19.234 27.352l-.123.023-.053-.015-.123.022-.159.012-.053-.015-.123.023-.123.022-.122.023-.108-.032-.117.004-.105.028-.053-.015-.123.022-.177.008-.053-.016-.123.023-.123.022-.053-.015-.159.012-.122.023-.054-.016-.123.023-.122.022-.108-.031-.122.022-.105.028-.006.018-.063.02-.054-.015-.176.007-.021.672.069-.039.09.026.122-.022.054.015.053.015.177-.007.053.015.054.016.123-.023.053.016.089.026.123-.023.054.015.176-.007.054.016.053.015.123-.023.054.016.107.031.105-.028.053.016.123-.023.107.031.054.016.122-.023.054.016.053.015.159-.012.054.015.053.015.117-.004.108.031.122-.022.054.015.054.015.122-.022.007-1.024-.054-.016.001.002z\"/><path d=\"M24.59 26.043a.777.777 0 01-.176.007c-.1-.03-.162-.047-.23-.007l-.054-.015-.054-.015-.335.019-.176.007-.176.007-.158.012-.337-.039-.353.014-.158.012-.176.007-.176.007-.367-.068-.354.009-.123.022-.054-.015-.064.02h-.059a1.327 1.327 0 00-.3.088 1.161 1.161 0 00-.174.066l-.087.033a.406.406 0 00-.156.071l-.074.056-.11.045-.016.054c-.053-.015-.071.038-.138.076l-.044.084-.033.048-.09.11-.01.035a.967.967 0 00-.124.429l-.018 1.2A1.128 1.128 0 0019.8 29l.007.041c.037.067.06.134.165.164l.079.061.084.044a.551.551 0 00.15.082l.031.028.071.021.089.026c.1.03.215.006.319.034s.234.007.391.055l.005-.018.018.007.1-.009.054.015.158-.012.176-.007.176-.007.337.039.158-.012.176-.007.176-.007.171.011.158-.012.176-.007.337.039.335-.019.036.011h.194c.067-.037 0 0 .054.015l.1-.028c.106-.012.209 0 .317-.024a.942.942 0 00.174-.066.936.936 0 00.325-.119l.005-.018a.588.588 0 00.143-.094l.005-.018.05-.009.023-.012.074-.056a1.072 1.072 0 00.162-.224.881.881 0 00.227-.515.344.344 0 00.009-.23v-1.006l-.01-.1a.681.681 0 00-.108-.361.562.562 0 00-.229-.279 1.075 1.075 0 00-.183-.169L25 26.166l-.107-.031-.25-.073-.054-.015z\" fill=\"url(#d)\"/><path d=\"M23.876 7.715l-.335.019-.337-.04-.335.019-.176.007-.176.007-.278-.042-.281.035-.176.007-.23-.009-.028 2.432.006 5.85.009.235v2.654l-.01.636h.077l.1-.009a.531.531 0 00.235-.01 1.656 1.656 0 01.26.037l.1-.009h.077a.811.811 0 01.176-.007c.12-.023.215 0 .335-.019.052.015.055.016.123-.022l.089.026a.824.824 0 00.276-.017l.041-.007a2.009 2.009 0 01.266.019 1.4 1.4 0 01.141-.018l.036.011c.052.015.054.015.069-.038l.019-2.2-.014-2.889.007-2.961-.007-.176-.007-2.713v-.794h-.059l.005-.018z\" fill=\"url(#e)\"/><path d=\"M25.9 4.263a2.521 2.521 0 01-.283-.024l-.276.017-.572-.03h-.736l-.741.017-.687.033H21.48l-.78-.049-.759.012-.051.043-.2-.116-.076-.138-.674-.815a2.164 2.164 0 00-.313-.323 1.118 1.118 0 00-.471-.311 2.133 2.133 0 00-.763-.105l-.123.022-.266-.019-.353.014-.779-.052h-.736l-.741.017h-.406l-.741.017h-.388l-.72-.054h-.253l-.153-.006-.734.026h-.388l-.353.014-.442-.012c-.119.022-.226-.025-.294.012h-.388a1.279 1.279 0 00-.315.083l-.069.038a1.308 1.308 0 00-.2.078 1.45 1.45 0 00-.19.119l-.028.031a1.919 1.919 0 00-.385.392l-.848.942a2.047 2.047 0 01.4.02l1.179-.006.353-.014h1.142l.741-.017.779.052.335-.019h1.936l.335-.019h.406l.725.036h.194l.207.021.565-.011c.07 0 .115-.007.176-.007a3.12 3.12 0 01.388 0 1.219 1.219 0 01.686.238 3.355 3.355 0 01.381.42 1.089 1.089 0 01.209.215l.485.664.712.884.183.169a1.878 1.878 0 00.209.215l.018.005a1.451 1.451 0 00.326.211 1.558 1.558 0 00.391.055.173.173 0 00.158-.012l.225.026h.406l.725.036.335-.019.353-.014H24.293l.353-.014h.794l.266.019.054.016.1-.01a.319.319 0 00.325-.254 3.266 3.266 0 00.052-.779l.045-.955c0-.068-.005-.114-.007-.176-.013-.345 0-.562-.084-.644-.022-.12-.133-.155-.29-.2zM23.874 7.7l.055.81v-.794l-.055-.016z\" fill=\"url(#b)\"/><path d=\"M23.876 23.365l-.005.018h-.117l-.054-.015h-.117l-.054-.015-.069.038-.161-.047-.005.018-.064.02-.089-.026-.069.038-.161-.047-.051.044-.018-.007-.107-.031-.069.038-.107-.031-.123.022-.036-.011-.123.022-.071-.021-.158.012-.054-.015c-.068.037-.071.038-.123.022h-.077a.258.258 0 01-.153 0l-.036-.011-.005.02-.041.007-.023.012-.023.613.021 1.129v.406l.054.015.054.015.158-.012.054.015.123-.022.054.015.176-.007.054.015.123-.022.054.015.158-.012.054.015.123-.022.054.015.173-.003.054.015h.117l.054.015.158-.012.054.015.123-.022.054.015.176-.007.054.015.005-.018.064-.02v-.929l.021-1.272-.054-.015z\" fill=\"url(#f)\"/><path d=\"M25.542 19.973a1.57 1.57 0 00-.237-.049l-.069.038a.5.5 0 00-.171-.011 2.583 2.583 0 00-.623.013c-.142 0-.276.008-.388 0a3.98 3.98 0 01-.46-.02 3.534 3.534 0 01-.388 0l-.1.009h-.194c-.1.009-.219.011-.353.014a3.682 3.682 0 00-.618 0 3.69 3.69 0 01-.388 0c-.113 0-.233-.007-.347 0l-.112-.014c-.068.037-.16.012-.228.05a.2.2 0 00-.176.007l-.146.035-.082.015-.151.053-.005.018a8.1 8.1 0 00-.763.5c-.117.108-.223.219-.346.326l-.046.025-.056.061c-.093.077-.192.15-.3.224-.083.089-.168.2-.259.293l-.08.074a1.176 1.176 0 01-.223.168c-.083.089-.1.127-.164.165l-.005.018a2.265 2.265 0 01-.672.58l-.016.054a5.191 5.191 0 01-.765.3 1.5 1.5 0 01-.2.037l-.041.007a.84.84 0 01-.171-.011l-.046.025-.023.012c-.1-.031-.216-.007-.373-.05a4.353 4.353 0 01-.593.041 4.292 4.292 0 00-.524 0c-.106 0-.215-.019-.324-.016-.219-.007-.439 0-.654-.014-.277-.024-.517.025-.794 0l-.041.007h-.059c-.12 0-.241-.017-.36-.027-.293.029-.572.011-.863.04a.406.406 0 00-.23-.007c-.052-.015-.086-.043-.153 0-.14 0-.281-.008-.406 0a4.247 4.247 0 01-.442-.013c-.136 0-.273.01-.406 0a4.249 4.249 0 01-.442-.013c-.059.011-.131 0-.194 0H9.06c-.292.028-.566-.007-.858.022a4.549 4.549 0 00-.848-.014c-.167 0-.333 0-.5-.009-.057 0-.114-.009-.171-.011l-.123.022c-.078.014-.15.036-.228.05l-.016.054a1.663 1.663 0 01.387.4l.081.12a1.712 1.712 0 01.188.152l.148.159.013.023a.3.3 0 00.183.169 1.572 1.572 0 00.29.336l.013.023.048.033a1.675 1.675 0 00.407.331l.107.031.357.1h.618l.094.009h.135c.277.024.566.008.843.032l.141-.017c.088.009.178.011.266.019.278-.027.546-.01.822-.033l.041-.007a4.606 4.606 0 00.848.014c.224.007.442.03.666.038.172-.006.34-.019.565-.01.146-.015.294-.008.429-.011.269-.022.53 0 .8-.02.057 0 .114.011.171.011a3.859 3.859 0 00.7.008c.136 0 .273-.01.406 0s.253 0 .388 0c.12-.022.233.007.353-.014l.107.031c.292-.029.532-.081.772-.125l.023-.012.018.007c.084-.021.141-.033.21-.055a1.435 1.435 0 00.156-.071l.046-.025a2.2 2.2 0 00.241-.162l.1-.069.005-.018c.052-.047.108-.092.159-.148l.169-.183.182-.16.192-.2.387-.333.4-.387.174-.066.094.009.082-.015c.133.011.27 0 .406 0 .277.024.571-.01.848.014.239-.024.466 0 .7-.01l.158-.012a.17.17 0 00.158-.012l.112.014h.523c.277.024.571-.009.848.014.292-.029.572-.011.863-.04.07 0 .137.019.207.022a1.918 1.918 0 00.6-.059l.085-.092a1.285 1.285 0 00.151-.741 2.921 2.921 0 01-.011-.565 2.092 2.092 0 01.01-.636c-.008-.107-.02-.2-.035-.281a1.147 1.147 0 00-.063-.251l-.058-.133-.025-.046-.079-.061-.008-.041-.071-.021-.12-.054z\" fill=\"url(#g)\"/><path d=\"M28.993 27h-.176l-.028.03-.041.007-.01.035h-.059l-.016.054-.051.043-.01.035-.016.054-.016.054-.016.054-.016.054-.016.054-.016.054v.118l-.005.018-.005.018.004.018.008.041.015.082-.031.107.028.1-.016.054-.016.054.038.069-.016.054-.016.054.031.028.008.041.013.023.01.1.054.015.038.069.054.015.038.069.107.031.143.041c.058-.031.151-.063.22-.091l.041-.007.051-.043.033-.048.069-.038.005-.018.01-.035.016-.054.016-.054.016-.054.016-.054.01-.035-.038-.069.016-.054.016-.054-.007-.176.016-.054-.007-.176-.022-.123.016-.054.01-.035-.013-.023-.013-.023-.013-.023.016-.054-.018-.007-.02-.064-.018-.007-.056-.074a.055.055 0 01-.038-.069l-.107-.031-.054-.015a1.383 1.383 0 00-.161-.047z\" fill=\"url(#h)\"/><path d=\"M4.416 5.513h12.705a.2.2 0 01.142.1l.074.135.012 13.449-.061.209-1 .9-1 .9-.068.037-.067.037-12.69-.053c-.1-.031-.247-.129-.216-.234L2.219 7.6l.015-.053a.168.168 0 01.082-.089L4.225 5.57a.29.29 0 01.188-.059\" fill=\"#b3272c\"/><path fill=\"#f46d22\" d=\"M16.556 5.989L4.488 5.947 2.992 7.386l12.003.078 1.562-1.475M16.854 6.287l-1.511 1.491.012 8.17-.027 4.588.632-.612.916-.812-.022-12.824\"/><path fill=\"#f6e216\" d=\"M14.89 20.807l.008-12.932-12.24-.035-.009 12.932 12.241.035\"/><path d=\"M12.807 15.689l.662-.716-.018 4.363-9.242-.016.646-.664 7.944-.019v-2.948zM6.973 11.16l3.57.014.027.689L7 11.849l-.027-.689zm5.819-1.091l.032 3.015-7.932-.032-.7.649 9.3.031V9.421l-.7.649zm-5.8 6.713l-.026.674 3.569.015.025-.674-3.569-.015\" fill=\"#2e2a2b\"/><path d=\"M12.807 10.036L4.875 10l.032 3.016-.7.649V9.354l9.3.031-.7.649zm.014 5.62l.662-.716-9.3-.031.034 4.377.646-.664.02-3 7.932.033\" fill=\"#ec771d\"/><path fill=\"url(#i)\" d=\"M27.982 27.59l-.006.018-.064.02-.053-.015-.107-.031-.105.027-.054-.015-.053-.015-.123.022-.054-.015-.107-.031-.005.017-.064.02-.054-.015-.107-.031-.117.004-.054-.015-.089-.026-.005.018-.064.02-.054-.016-.107-.031-.069.038-.054-.015-.053-.015-.054-.015-.005.017-.064.02-.021.672.01.1-.002.076.053.016.123-.023.054.016.123-.023.035.011.123-.023.118-.004.053.015.123-.022.053.015.123-.022.054.015.122-.022.054.015.051-.043.054.015.123-.022.053.015.123-.022.053.015.006-.018.064-.02.053.016.054.015.005-.018.064-.02.053.015.005-.618-.053-.015-.054-.016-.107-.031z\"/><path d=\"M12.807 10.036L4.875 10l.032 3.016-.7.649V9.354l9.3.031-.7.649zm.014 5.62l.662-.716-9.3-.031.034 4.377.646-.664.02-3 7.932.033\" fill=\"#ec771d\"/><path d=\"M20.9 9.083l3.385-.719.1.03a.746.746 0 01.591.115.975.975 0 01.317.491l-.015.052a.329.329 0 01-.009.224c-.015.052.022.12-.046.157a.855.855 0 01-.683.6l-3.438.7-.052-.015a.773.773 0 01-.591-.115.965.965 0 01-.313-.488l-.038-.067a.329.329 0 00.009-.224l.046-.157a.9.9 0 01.736-.58zm-.177 8.23l3.475-.637.068-.038a1.1 1.1 0 01.575.167.529.529 0 01.312.488l.037.067.007.173-.061.209a.984.984 0 01-.736.58l-3.422.652c-.067.037-.067.037-.12.021a.633.633 0 01-.523-.152.791.791 0 01-.38-.45l.03-.1a.2.2 0 01-.007-.172l.046-.157a1.013 1.013 0 01.7-.648zm.128-5.522a1.013 1.013 0 00-.7.649l-.046.157a.411.411 0 00-.008.225l-.015.052a.864.864 0 00.365.5.666.666 0 00.538.1l.052.015 3.438-.705a.983.983 0 00.736-.581l.046-.157c.03-.1-.007-.172.009-.224l-.037-.067a.624.624 0 00-.312-.488.787.787 0 00-.59-.114l-.053-.015-3.422.652zm-.063 2.761a1.07 1.07 0 00-.751.633l-.046.157a.2.2 0 01.006.172l-.015.052.038.068a1.473 1.473 0 00.313.487.773.773 0 00.591.114l.052.015 3.49-.689a.921.921 0 00.683-.6l.061-.209a.2.2 0 00-.007-.172l.015-.052a.727.727 0 00-.312-.488 1.122 1.122 0 00-.576-.167c-.067.037-.067.037-.119.022l-3.422.652\" fill=\"#2e2a2b\"/></svg>',\r\n mp3: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><path d=\"M17.229 4a.9.9 0 00-.569.232l-7.6 6.32a1.158 1.158 0 01-.955.328H3.208A1.2 1.2 0 002 12.088v7.826a1.2 1.2 0 001.208 1.206H8.1a1.158 1.158 0 01.955.328l7.6 6.32c.521.433 1.081.224 1.081-.289V4.522A.494.494 0 0017.229 4zM27 6.3l-1.791 1.793a14.708 14.708 0 010 15.844l1.785 1.776A17.19 17.19 0 0027 6.3zm-4.333 4.323L20.905 12.4a6.035 6.035 0 010 7.237l1.756 1.756a8.554 8.554 0 00.01-10.769z\" fill=\"#00007f\"/></svg>',\r\n mp4: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><path d=\"M4.5 2.375A2.562 2.562 0 015.861 2h20.366a2.545 2.545 0 012.423 1.951 3.37 3.37 0 01.072.862v11.176h-1.573a1.814 1.814 0 00-.22.022 5.236 5.236 0 00-.581-.011c-.3.007-.61-.014-.914.014a2.275 2.275 0 00-.4-.02h-4.739c-.2 0-.392.008-.587-.01l.1-.065-6.353-3.813v3.889c-2.213-.005-4.427 0-6.64 0a2.274 2.274 0 00-.251.021c-.212-.032-.427-.016-.642-.016-.284.006-.57-.015-.853.015a2.052 2.052 0 00-.253-.022H3.275c.006-3.635 0-7.27 0-10.9a4.786 4.786 0 01.071-1.131A2.541 2.541 0 014.5 2.375zm.54 2.188a.639.639 0 00-.489.606v1.316a.639.639 0 00.627.6h1.309a.638.638 0 00.6-.608c.005-.426 0-.853 0-1.279a.644.644 0 00-.329-.575.708.708 0 00-.358-.078H5.264a1.081 1.081 0 00-.224.018zm20.341 0a.639.639 0 00-.474.607v1.306a.638.638 0 00.6.608c.436.005.872 0 1.308 0a.639.639 0 00.627-.606c.006-.438 0-.876 0-1.314a.638.638 0 00-.594-.621c-.348-.009-.7 0-1.045 0a1.98 1.98 0 00-.422.024zM5.042 8.38a.637.637 0 00-.452.4 1.078 1.078 0 00-.041.386v1.135a.637.637 0 00.6.6c.4.008.795 0 1.192 0a.826.826 0 00.395-.065.641.641 0 00.36-.574V8.983a.638.638 0 00-.6-.624c-.338-.008-.677 0-1.016 0a2.385 2.385 0 00-.438.021zm20.338 0a.637.637 0 00-.433.4 1.072 1.072 0 00-.041.387v1.131a.638.638 0 00.608.607c.406.006.812 0 1.218 0a.739.739 0 00.38-.078.64.64 0 00.335-.558V8.985a.637.637 0 00-.593-.622c-.349-.009-.7 0-1.047 0a1.928 1.928 0 00-.428.022zM5.041 12.2a.639.639 0 00-.491.608c0 .438-.005.877 0 1.315a.638.638 0 00.627.6h1.3a.638.638 0 00.608-.607v-1.307a.638.638 0 00-.605-.626c-.348-.007-.7 0-1.045 0a2.12 2.12 0 00-.394.017zm20.335.006a.635.635 0 00-.43.394 1.06 1.06 0 00-.041.386v1.131a.638.638 0 00.607.608c.435.005.87 0 1.306 0a.639.639 0 00.628-.605c.006-.438 0-.876 0-1.313a.637.637 0 00-.592-.622c-.349-.01-.7 0-1.046 0a1.908 1.908 0 00-.431.015z\" fill=\"#e75749\"/><path d=\"M13.458 12.1q3.176 1.908 6.353 3.813l-.1.065q-3.127 1.872-6.251 3.748V15.99c-.001-1.295-.004-2.59-.002-3.89z\" fill=\"#fff\"/><path d=\"M3.275 15.988h1.541a2.052 2.052 0 01.253.022.645.645 0 00-.409.273.883.883 0 00-.111.518v1.045a.686.686 0 00.685.689h1.192a.68.68 0 00.657-.569c.008-.447 0-.9 0-1.343a.632.632 0 00-.521-.613 2.274 2.274 0 01.251-.021h6.64v3.736q3.127-1.871 6.251-3.748c.2.018.391.007.587.01h4.741a2.275 2.275 0 01.4.02.637.637 0 00-.475.385.983.983 0 00-.045.407v1.014a.677.677 0 00.691.719h1.16a.684.684 0 00.686-.658v-.984a1.074 1.074 0 00-.1-.589.642.642 0 00-.42-.292 1.814 1.814 0 01.22-.022h1.573c.011 1.721 0 3.443 0 5.165v6.293a2.567 2.567 0 01-.612 1.651 2.539 2.539 0 01-1.563.868 7.534 7.534 0 01-.981.033H6.724a9.27 9.27 0 01-1.368-.048 2.557 2.557 0 01-2-1.846 2.825 2.825 0 01-.09-.746V16.891c.007-.3-.002-.602.009-.903zm1.795 3.843a.613.613 0 00-.386.234.761.761 0 00-.134.464v1.162a.685.685 0 00.686.658h1.283a.687.687 0 00.568-.716v-1.191a.617.617 0 00-.2-.458.712.712 0 00-.487-.17H5.264a1.039 1.039 0 00-.194.017zm20.366 0a.62.62 0 00-.522.58v1.222a.676.676 0 00.69.718c.428 0 .857.005 1.285 0a.7.7 0 00.562-.684v-1.013a.9.9 0 00-.123-.568.661.661 0 00-.532-.267h-.954a2.246 2.246 0 00-.406.011zM5.071 23.648a.609.609 0 00-.4.249.766.766 0 00-.124.448v1.132a.7.7 0 00.6.688h1.376a.687.687 0 00.567-.717v-1.189a.617.617 0 00-.2-.459.71.71 0 00-.484-.17H5.265a1.028 1.028 0 00-.194.018zm20.362 0a.616.616 0 00-.492.427.99.99 0 00-.029.33V25.6a.681.681 0 00.656.567h1.193a.689.689 0 00.686-.719v-1.164a.657.657 0 00-.286-.545 1.461 1.461 0 00-.787-.11c-.312.01-.629-.02-.94.018z\" fill=\"#c0392b\"/></svg>',\r\n exe: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><path d=\"M20.929 2h-16.4v28h23.3V9zm5.114 26.35H6.409V3.65h13.406l6.333 6.333V28.35zM11.477 15.393c1.584 0 2.563-1.463 2.563-3.663 0-2.145-.8-3.443-2.4-3.443S9.068 9.75 9.068 11.95c0 2.15.803 3.443 2.409 3.443zm-1.243-3.663c0-1.562.429-2.453 1.32-2.453.649 0 1.045.55 1.221 1.474l-2.53 1.309a3.2 3.2 0 01-.011-.33zm1.331 2.67c-.638 0-1.045-.528-1.221-1.43l2.53-1.309v.286c0 1.565-.418 2.453-1.309 2.453zm10.27.847l.1-1.023h-1.65V8.21l-1.177.1v.8l-1.694.176.022.891 1.672-.044v4.092h-1.849v1.025zm-7.85 9.5l.1-1.023h-1.65V17.71l-1.177.1v.8l-1.694.176.022.891 1.672-.044v4.092H9.409v1.025zm5.442.143c1.584 0 2.563-1.463 2.563-3.663 0-2.145-.8-3.443-2.4-3.443s-2.574 1.463-2.574 3.663c.002 2.148.805 3.446 2.411 3.446zm-1.243-3.66c0-1.562.429-2.453 1.32-2.453.649 0 1.045.55 1.221 1.474l-2.53 1.309a3.2 3.2 0 01-.011-.33zm1.331 2.67c-.638 0-1.045-.528-1.221-1.43l2.53-1.309v.286c0 1.565-.418 2.453-1.309 2.453z\" fill=\"#9f4246\"/></svg>',\r\n txt: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><path d=\"M22.038 2H6.375a1.755 1.755 0 00-1.75 1.75v24.5A1.755 1.755 0 006.375 30h19.25a1.755 1.755 0 001.75-1.75V6.856zm.525 2.844l1.663 1.531h-1.663zM6.375 28.25V3.75h14.438v4.375h4.813V28.25z\" fill=\"#c2c2c2\"/><path fill=\"#829ec2\" d=\"M8.125 15.097h13.076v1.75H8.125zM8.125 24.439h9.762v1.75H8.125zM8.125 19.763h15.75v1.75H8.125zM8.125 10.23h15.75v1.75H8.125z\"/></svg>',\r\n svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><path d=\"M7.674 14.488a2.218 2.218 0 100 3.137h16.652a2.218 2.218 0 100-3.137z\" fill=\"#ffb13b\" stroke=\"#000\" stroke-width=\"3.73\"/><path d=\"M11.222 9.06A2.218 2.218 0 109 11.278l11.778 11.774A2.218 2.218 0 1023 20.834z\" fill=\"#ffb13b\" stroke=\"#000\" stroke-width=\"3.73\"/><path d=\"M17.568 7.73a2.218 2.218 0 10-3.137 0v16.652a2.218 2.218 0 103.137 0z\" fill=\"#ffb13b\" stroke=\"#000\" stroke-width=\"3.73\"/><path d=\"M23 11.278a2.218 2.218 0 10-2.222-2.218L9 20.834a2.218 2.218 0 102.218 2.218z\" fill=\"#ffb13b\" stroke=\"#000\" stroke-width=\"3.73\"/><path d=\"M7.674 14.488a2.218 2.218 0 100 3.137h16.652a2.218 2.218 0 100-3.137z\" fill=\"#ffb13b\"/><path d=\"M11.222 9.06A2.218 2.218 0 109 11.278l11.778 11.774A2.218 2.218 0 1023 20.834z\" fill=\"#ffb13b\"/><path d=\"M17.568 7.73a2.218 2.218 0 10-3.137 0v16.652a2.218 2.218 0 103.137 0z\" fill=\"#ffb13b\"/><path d=\"M23 11.278a2.218 2.218 0 10-2.222-2.218L9 20.834a2.218 2.218 0 102.218 2.218z\" fill=\"#ffb13b\"/><path d=\"M2 16.056h28v9.894a4.035 4.035 0 01-4.106 4.106H6.106A4.035 4.035 0 012 25.95z\"/><path d=\"M6.2 23.045a3.628 3.628 0 116.2-2.565h-2.13a1.5 1.5 0 10-2.57 1.061 1.6 1.6 0 001.062.441 4.118 4.118 0 012.566 1.063 3.628 3.628 0 11-6.194 2.565h2.13a1.5 1.5 0 102.566-1.06 1.948 1.948 0 00-1.063-.44A4.465 4.465 0 016.2 23.045zM19.651 16.852L17.085 29.24H14.96L12.4 16.852h2.12l1.5 7.255 1.5-7.255zM23.28 21.983h3.628v3.628a3.628 3.628 0 11-7.257 0V20.48a3.628 3.628 0 017.257 0h-2.125a1.5 1.5 0 10-3.005 0v5.13a1.5 1.5 0 003.005 0v-1.5h-1.5v-2.127z\" fill=\"#fff\"/></svg>',\r\n ai: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><path d=\"M24.037 2.072l5.564 5.8v22.056H8.814V30H29.67V7.945l-5.633-5.873\" fill=\"#909090\"/><path d=\"M23.965 2H8.742v27.928H29.6V7.873L23.965 2\" fill=\"#231612\"/><path d=\"M23.893 2.072v5.874h5.633l-5.633-5.874\" fill=\"#4c4442\"/><path d=\"M23.965 2v5.873H29.6L23.965 2z\" fill=\"#f36617\"/><path d=\"M2.384 10.264h6.359V3.432H2.384v6.832z\" fill=\"#909090\"/><path d=\"M8.743 10.264h13.718V3.432H8.743v6.832z\" fill=\"#4c4442\"/><path d=\"M22.407 10.211H2.33V3.379h20.077v6.832\" fill=\"#f36617\"/><path d=\"M18.1 20.619c-.275-1.07-.948-3.226-1.223-4.344h-.014c-.206 1.054-.769 2.859-1.181 4.344H18.1zm-2.775 1.566l-.838 2.779c-.014.1-.055.128-.137.128h-1.4c-.1 0-.124-.048-.1-.16a858.912 858.912 0 012.871-9.279 3.686 3.686 0 00.11-.878.086.086 0 01.082-.1h1.9c.069 0 .082.016.11.08 1.016 3.274 2.129 6.884 3.173 10.19q.041.144-.082.144h-1.542c-.069 0-.1-.032-.124-.1l-.879-2.811h-3.146M22.29 17.547c0-.1.027-.128.094-.128h1.431c.081 0 .108.016.108.128v7.506c0 .08-.027.128-.108.128h-1.4c-.081 0-.121-.032-.121-.144v-7.49zm-.09-2.173a.918.918 0 01.918-.99.884.884 0 01.891.99.908.908 0 11-1.809 0\" fill=\"#f46c25\"/><path d=\"M11.238 5.279h-.013L10.9 7.352h.652zM9.5 9.3l1.06-4.86h1.355l1.033 4.86H11.81l-.15-1.133h-.882L10.634 9.3H9.5M13.438 9.3V4.44h1.086V9.3h-1.086\" fill=\"#231612\"/></svg>',\r\n eps: '<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 32 32\"><defs><linearGradient id=\"b\" x1=\"-403.546\" y1=\"-337.031\" x2=\"-403.376\" y2=\"-337.031\" gradientTransform=\"scale(180.004 -180.004) rotate(57.433 -509.183 199.746)\" gradientUnits=\"userSpaceOnUse\"><stop offset=\"0\" stop-color=\"#fff\"/><stop offset=\"1\" stop-color=\"#e6e6e6\"/></linearGradient><linearGradient id=\"a\" x1=\"-403.546\" y1=\"-337.033\" x2=\"-403.376\" y2=\"-337.033\" gradientTransform=\"scale(180.004 -180.004) rotate(57.433 -509.183 199.746)\" gradientUnits=\"userSpaceOnUse\"><stop offset=\"0\" stop-color=\"#949494\"/><stop offset=\"1\" stop-color=\"#8c8c8c\"/></linearGradient><linearGradient id=\"c\" x1=\"-403.546\" y1=\"-336.987\" x2=\"-403.376\" y2=\"-336.987\" xlink:href=\"#a\"/><linearGradient id=\"d\" x1=\"-405.673\" y1=\"-336.64\" x2=\"-405.503\" y2=\"-336.64\" gradientTransform=\"scale(-78.102 78.102) rotate(-45.304 200.718 -653.812)\" gradientUnits=\"userSpaceOnUse\"><stop offset=\"0\" stop-color=\"#b3b3b3\"/><stop offset=\"1\" stop-color=\"#f2f2f2\"/></linearGradient></defs><path fill=\"#949494\" d=\"M24.037 2.072h-.003l5.564 5.801v22.055H8.814V30H29.67V7.945l-5.633-5.873\"/><path d=\"M23.893 7.945V2.072l5.633 5.873h-5.633M23.965 2H8.742v1.432h13.719v6.832H8.742v19.664H29.6V7.873l-5.564-5.8L23.965 2\" fill=\"url(#b)\"/><path fill=\"url(#a)\" d=\"M23.893 2.072v5.873h5.633l-5.633-5.873\"/><path fill=\"#fff\" d=\"M23.965 2v5.873h5.633L23.965 2z\"/><path fill=\"#949494\" d=\"M8.742 3.432H2.384v6.832h6.358V3.432\"/><path fill=\"url(#c)\" d=\"M22.461 3.432H8.742v6.832h13.719V3.432\"/><path fill=\"#030100\" d=\"M2.33 3.378h20.077v6.832H2.33z\"/><path fill=\"#fe7814\" d=\"M10.003 7.309H8.779v.834h1.371v.995H7.863V4.605h2.216v.989h-1.3v.733h1.224v.982zM11.163 4.666a5.451 5.451 0 011.129-.094 1.432 1.432 0 011.078.356 1.557 1.557 0 01.39 1.1 1.767 1.767 0 01-.329 1.116 1.422 1.422 0 01-1.139.471 1.893 1.893 0 01-.223-.014v1.54h-.906zm.906 2a1.463 1.463 0 00.207.014.564.564 0 00.582-.632.5.5 0 00-.516-.565 1.06 1.06 0 00-.273.027zM14.777 7.928a1.676 1.676 0 00.886.283c.314 0 .466-.141.466-.37s-.152-.35-.536-.525a1.448 1.448 0 01-.957-1.365A1.321 1.321 0 0116 4.531a1.748 1.748 0 01.926.235l-.192.968a1.431 1.431 0 00-.744-.215c-.278 0-.43.135-.43.336 0 .229.182.323.612.538a1.4 1.4 0 01.891 1.365 1.357 1.357 0 01-1.458 1.453 1.924 1.924 0 01-1-.283z\"/><path d=\"M12.608 17.582s5.392-4.282 9.559-.15.18 9.739.18 9.739z\" fill=\"url(#d)\"/><path d=\"M22.42 27.223l-.147-.1c.039-.055 3.892-5.59-.17-9.623s-9.387.114-9.44.156l-.112-.141c.055-.043 5.5-4.287 9.678-.143s.231 9.795.191 9.851z\" fill=\"#666\"/><path fill=\"#999\" d=\"M17.863 13.255l.127-.127 8.406 8.375-.127.127z\"/><path fill=\"#fff\" d=\"M21.792 17.058h.749v.749h-.749z\"/><path d=\"M22.692 17.958h-1.051v-1.051h1.051zm-.749-.3h.447v-.447h-.447z\" fill=\"gray\"/><path fill=\"#fff\" d=\"M12.233 17.208h.749v.749h-.749z\"/><path d=\"M13.133 18.108h-1.051v-1.051h1.051zm-.749-.3h.447v-.447h-.447z\" fill=\"gray\"/><path fill=\"#fff\" d=\"M21.972 26.797h.749v.749h-.749z\"/><path d=\"M22.872 27.7h-1.051v-1.054h1.051zm-.749-.3h.447v-.447h-.447z\" fill=\"gray\"/><path fill=\"#999\" d=\"M17.552 12.818h.749v.749h-.749zM25.958 21.193h.749v.749h-.749z\"/></svg>',\r\n webp: '<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 32 32\"><defs><linearGradient id=\"a\" x1=\"596.629\" y1=\"-820.523\" x2=\"599.481\" y2=\"-826.534\" gradientTransform=\"matrix(.366 0 0 -.366 -210.44 -292.295)\" gradientUnits=\"userSpaceOnUse\"><stop offset=\"0\" stop-color=\"#8ae234\"/><stop offset=\"1\" stop-color=\"#4e9a06\"/></linearGradient><linearGradient id=\"c\" x1=\"599.996\" y1=\"-815.078\" x2=\"631.107\" y2=\"-868.963\" xlink:href=\"#a\"/><linearGradient id=\"d\" x1=\"648.158\" y1=\"-1013.946\" x2=\"677.021\" y2=\"-1071.027\" gradientTransform=\"matrix(.347 0 0 -.339 -214.765 -336.913)\" gradientUnits=\"userSpaceOnUse\"><stop offset=\"0\" stop-color=\"#fff\" stop-opacity=\".549\"/><stop offset=\"1\" stop-color=\"#fff\" stop-opacity=\"0\"/></linearGradient><radialGradient id=\"e\" cx=\"572.646\" cy=\"-769.85\" r=\"14.375\" gradientTransform=\"matrix(.358 0 0 -.358 -181.98 -268.597)\" gradientUnits=\"userSpaceOnUse\"><stop offset=\"0\" stop-color=\"#fff\"/><stop offset=\".5\" stop-color=\"#fff520\" stop-opacity=\".891\"/><stop offset=\"1\" stop-color=\"#fff300\" stop-opacity=\"0\"/></radialGradient><filter id=\"b\"><feGaussianBlur stdDeviation=\"1.275\"/></filter></defs><g filter=\"url(#b)\"><path d=\"M4.646 8h22.707a1.976 1.976 0 011.981 1.971V25.96a1.977 1.977 0 01-1.972 1.981H4.646a1.976 1.976 0 01-1.98-1.972V9.978A1.976 1.976 0 014.637 8z\" fill-rule=\"evenodd\"/><path d=\"M4.646 8h22.707a1.976 1.976 0 011.981 1.971V25.96a1.977 1.977 0 01-1.972 1.981H4.646a1.976 1.976 0 01-1.98-1.972V9.978A1.976 1.976 0 014.637 8z\" fill=\"none\" stroke=\"#000\" stroke-width=\"2.051\"/></g><path d=\"M6.2 6.374h3.281v3.3H6.2z\" stroke=\"#366a04\" stroke-width=\"2.902\" fill-rule=\"evenodd\" fill=\"url(#a)\"/><path d=\"M4.646 8h22.707a1.977 1.977 0 011.981 1.972v15.989a1.977 1.977 0 01-1.972 1.98H4.646a1.976 1.976 0 01-1.98-1.972V9.978A1.976 1.976 0 014.638 8h.008z\" stroke=\"#366a04\" stroke-width=\"3.605\" fill-rule=\"evenodd\" fill=\"url(#c)\"/><path d=\"M20.877 17.969A4.878 4.878 0 1116 13.092a4.877 4.877 0 014.877 4.877z\" fill=\"#fff\" stroke=\"#366a04\" stroke-width=\"3.605\"/><path d=\"M5.185 8.7h21.54c1.406 0 1.879.59 1.879 1.835V25.34c0 1.245-.518 1.834-1.879 1.834H5.185c-1.407 0-1.879-.544-1.879-1.834V10.534c0-1.382.609-1.834 1.879-1.834z\" fill=\"none\" stroke-linejoin=\"round\" stroke-width=\"3.38\" stroke=\"url(#d)\"/><circle cx=\"23.184\" cy=\"7.22\" r=\"5.15\" fill=\"url(#e)\"/></svg>',\r\n pdf: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><path d=\"M24.1 2.072l5.564 5.8v22.056H8.879V30h20.856V7.945L24.1 2.072\" fill=\"#909090\"/><path d=\"M24.031 2H8.808v27.928h20.856V7.873L24.03 2\" fill=\"#f4f4f4\"/><path d=\"M8.655 3.5h-6.39v6.827h20.1V3.5H8.655\" fill=\"#7a7b7c\"/><path d=\"M22.472 10.211H2.395V3.379h20.077v6.832\" fill=\"#dd2025\"/><path d=\"M9.052 4.534H7.745v4.8h1.028V7.715L9 7.728a2.042 2.042 0 00.647-.117 1.427 1.427 0 00.493-.291 1.224 1.224 0 00.335-.454 2.13 2.13 0 00.105-.908 2.237 2.237 0 00-.114-.644 1.173 1.173 0 00-.687-.65 2.149 2.149 0 00-.409-.104 2.232 2.232 0 00-.319-.026m-.189 2.294h-.089v-1.48h.193a.57.57 0 01.459.181.92.92 0 01.183.558c0 .246 0 .469-.222.626a.942.942 0 01-.524.114M12.533 4.521c-.111 0-.219.008-.295.011L12 4.538h-.78v4.8h.918a2.677 2.677 0 001.028-.175 1.71 1.71 0 00.68-.491 1.939 1.939 0 00.373-.749 3.728 3.728 0 00.114-.949 4.416 4.416 0 00-.087-1.127 1.777 1.777 0 00-.4-.733 1.63 1.63 0 00-.535-.4 2.413 2.413 0 00-.549-.178 1.282 1.282 0 00-.228-.017m-.182 3.937h-.1V5.392h.013a1.062 1.062 0 01.6.107 1.2 1.2 0 01.324.4 1.3 1.3 0 01.142.526c.009.22 0 .4 0 .549a2.926 2.926 0 01-.033.513 1.756 1.756 0 01-.169.5 1.13 1.13 0 01-.363.36.673.673 0 01-.416.106M17.43 4.538H15v4.8h1.028V7.434h1.3v-.892h-1.3V5.43h1.4v-.892\" fill=\"#464648\"/><path d=\"M21.781 20.255s3.188-.578 3.188.511-1.975.646-3.188-.511zm-2.357.083a7.543 7.543 0 00-1.473.489l.4-.9c.4-.9.815-2.127.815-2.127a14.216 14.216 0 001.658 2.252 13.033 13.033 0 00-1.4.288zm-1.262-6.5c0-.949.307-1.208.546-1.208s.508.115.517.939a10.787 10.787 0 01-.517 2.434 4.426 4.426 0 01-.547-2.162zm-4.649 10.516c-.978-.585 2.051-2.386 2.6-2.444-.003.001-1.576 3.056-2.6 2.444zM25.9 20.895c-.01-.1-.1-1.207-2.07-1.16a14.228 14.228 0 00-2.453.173 12.542 12.542 0 01-2.012-2.655 11.76 11.76 0 00.623-3.1c-.029-1.2-.316-1.888-1.236-1.878s-1.054.815-.933 2.013a9.309 9.309 0 00.665 2.338s-.425 1.323-.987 2.639-.946 2.006-.946 2.006a9.622 9.622 0 00-2.725 1.4c-.824.767-1.159 1.356-.725 1.945.374.508 1.683.623 2.853-.91a22.549 22.549 0 001.7-2.492s1.784-.489 2.339-.623 1.226-.24 1.226-.24 1.629 1.639 3.2 1.581 1.495-.939 1.485-1.035\" fill=\"#dd2025\"/><path d=\"M23.954 2.077V7.95h5.633l-5.633-5.873z\" fill=\"#909090\"/><path d=\"M24.031 2v5.873h5.633L24.031 2z\" fill=\"#f4f4f4\"/><path d=\"M8.975 4.457H7.668v4.8H8.7V7.639l.228.013a2.042 2.042 0 00.647-.117 1.428 1.428 0 00.493-.291 1.224 1.224 0 00.332-.454 2.13 2.13 0 00.105-.908 2.237 2.237 0 00-.114-.644 1.173 1.173 0 00-.687-.65 2.149 2.149 0 00-.411-.105 2.232 2.232 0 00-.319-.026m-.189 2.294h-.089v-1.48h.194a.57.57 0 01.459.181.92.92 0 01.183.558c0 .246 0 .469-.222.626a.942.942 0 01-.524.114M12.456 4.444c-.111 0-.219.008-.295.011l-.235.006h-.78v4.8h.918a2.677 2.677 0 001.028-.175 1.71 1.71 0 00.68-.491 1.939 1.939 0 00.373-.749 3.728 3.728 0 00.114-.949 4.416 4.416 0 00-.087-1.127 1.777 1.777 0 00-.4-.733 1.63 1.63 0 00-.535-.4 2.413 2.413 0 00-.549-.178 1.282 1.282 0 00-.228-.017m-.182 3.937h-.1V5.315h.013a1.062 1.062 0 01.6.107 1.2 1.2 0 01.324.4 1.3 1.3 0 01.142.526c.009.22 0 .4 0 .549a2.926 2.926 0 01-.033.513 1.756 1.756 0 01-.169.5 1.13 1.13 0 01-.363.36.673.673 0 01-.416.106M17.353 4.461h-2.43v4.8h1.028V7.357h1.3v-.892h-1.3V5.353h1.4v-.892\" fill=\"#fff\"/></svg>',\r\n psd: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><path fill=\"#070444\" d=\"M24.099 2H8.837v28h20.91V7.888l-5.579-5.816L24.099 2\"/><path fill=\"#5bc3f6\" d=\"M2.253 3.493H22.56v7.844H2.253zM24.099 2v5.888h5.648L24.099 2z\"/><path d=\"M7.1 4.987a6 6 0 011.242-.1 1.576 1.576 0 011.187.392 1.714 1.714 0 01.429 1.207A1.946 1.946 0 019.6 7.712a1.565 1.565 0 01-1.254.518 2.084 2.084 0 01-.246-.015v1.7h-1zm1 2.206a1.61 1.61 0 00.228.015.621.621 0 00.641-.7.546.546 0 00-.569-.618 1.166 1.166 0 00-.3.03zM11.083 8.578a1.845 1.845 0 00.975.311c.345 0 .513-.156.513-.407S12.4 8.1 11.98 7.9a1.594 1.594 0 01-1.053-1.5 1.454 1.454 0 011.5-1.562 1.925 1.925 0 011.02.259l-.207 1.067a1.576 1.576 0 00-.819-.237c-.306 0-.474.148-.474.37 0 .252.2.355.674.592a1.543 1.543 0 01.981 1.5 1.494 1.494 0 01-1.6 1.6 2.117 2.117 0 01-1.1-.311zM15.62 8.98h-.1V5.755h.014a1.117 1.117 0 01.629.113 1.262 1.262 0 01.341.422 1.369 1.369 0 01.149.553c.01.231 0 .417 0 .578a3.079 3.079 0 01-.035.539 1.846 1.846 0 01-.178.529 1.187 1.187 0 01-.382.379.707.707 0 01-.437.111m.192-4.141c-.117 0-.23.009-.31.012l-.247.007h-.82v5.054h.964a2.815 2.815 0 001.082-.184 1.8 1.8 0 00.718-.517 2.04 2.04 0 00.392-.788 3.921 3.921 0 00.12-1 4.644 4.644 0 00-.092-1.186 1.868 1.868 0 00-.425-.771 1.712 1.712 0 00-.563-.422 2.537 2.537 0 00-.577-.188 1.349 1.349 0 00-.24-.018\" fill=\"#070444\"/><path d=\"M16 19.651a7.218 7.218 0 01-.9-.031v-3.49c.111-.016.5-.031 1.04-.031 1.3 0 1.873.546 1.873 1.791 0 1.556-.916 1.761-2.012 1.761m.139-5.031c-1.054 0-2.095.016-2.622.031-.069 0-.083.031-.083.109v9.93c0 .078.028.109.1.109H15c.069 0 .1-.031.1-.125V21.13h.86c2.039 0 3.718-.658 3.718-3.132-.014-1.805-.818-3.378-3.538-3.378M23.075 17.218a2.266 2.266 0 00-2.539 2.257c0 1.136.5 1.743 1.928 2.4 1 .451 1.249.685 1.249 1.089 0 .342-.222.7-.86.7a4.067 4.067 0 01-2.247-.841.056.056 0 00-.034-.012c-.033 0-.063.032-.063.09v1.432a.159.159 0 00.083.156 3.942 3.942 0 002.15.607 2.317 2.317 0 002.594-2.4c0-1.121-.61-1.7-2.039-2.35-1.04-.467-1.221-.669-1.221-1.043 0-.3.18-.654.86-.654a3.8 3.8 0 011.928.591.094.094 0 00.052.018c.043 0 .073-.043.073-.112v-1.274a.224.224 0 00-.083-.2 3.365 3.365 0 00-1.831-.451\" fill=\"#5bc3f6\"/></svg>',\r\n html: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><path fill=\"#e44f26\" d=\"M5.902 27.201L3.655 2h24.69l-2.25 25.197L15.985 30 5.902 27.201z\"/><path fill=\"#f1662a\" d=\"M16 27.858l8.17-2.265 1.922-21.532H16v23.797z\"/><path fill=\"#ebebeb\" d=\"M16 13.407h-4.09l-.282-3.165H16V7.151H8.25l.074.83.759 8.517H16v-3.091zM16 21.434l-.014.004-3.442-.929-.22-2.465H9.221l.433 4.852 6.332 1.758.014-.004v-3.216z\"/><path fill=\"#fff\" d=\"M15.989 13.407v3.091h3.806l-.358 4.009-3.448.93v3.216l6.337-1.757.046-.522.726-8.137.076-.83H15.989zM15.989 7.151V10.242h7.466l.062-.694.141-1.567.074-.83h-7.743z\"/></svg>',\r\n css: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><path fill=\"#1572b6\" d=\"M5.902 27.201L3.656 2h24.688l-2.249 25.197L15.985 30 5.902 27.201z\"/><path fill=\"#33a9dc\" d=\"M16 27.858l8.17-2.265 1.922-21.532H16v23.797z\"/><path fill=\"#fff\" d=\"M16 13.191h4.09l.282-3.165H16V6.935h7.75l-.074.829-.759 8.518H16v-3.091z\"/><path fill=\"#ebebeb\" d=\"M16.019 21.218l-.014.004-3.442-.93-.22-2.465H9.24l.433 4.853 6.331 1.758.015-.004v-3.216z\"/><path fill=\"#fff\" d=\"M19.827 16.151l-.372 4.139-3.447.93v3.216l6.336-1.756.047-.522.537-6.007h-3.101z\"/><path fill=\"#ebebeb\" d=\"M16.011 6.935v3.091H8.545l-.062-.695-.141-1.567-.074-.829h7.743zM16 13.191v3.091H12.601l-.062-.695-.14-1.567-.074-.829H16z\"/></svg>',\r\n json: '<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 32 32\"><defs><linearGradient id=\"a\" x1=\"-679.793\" y1=\"-637.805\" x2=\"-668.005\" y2=\"-649.595\" gradientTransform=\"matrix(.999 0 0 -.999 688.969 -626.71)\" gradientUnits=\"userSpaceOnUse\"><stop offset=\"0\"/><stop offset=\"1\" stop-color=\"#fff\"/></linearGradient><linearGradient id=\"b\" x1=\"-667.471\" y1=\"-649.062\" x2=\"-679.26\" y2=\"-637.272\" xlink:href=\"#a\"/></defs><path d=\"M3.015 14.891a2.72 2.72 0 001.7-.561 2.575 2.575 0 00.873-1.468 16.533 16.533 0 00.23-3.193q.01-2.259.082-2.976a5.672 5.672 0 01.453-1.826 3.277 3.277 0 01.818-1.1 3.3 3.3 0 011.245-.629A7.325 7.325 0 0110.09 3h.758v2.124h-.419a2.532 2.532 0 00-1.867.507A3.689 3.689 0 008.1 7.9a39.059 39.059 0 01-.149 4.478 5.129 5.129 0 01-.832 2.232A4.948 4.948 0 015.274 16a4.126 4.126 0 012.158 1.9 9.6 9.6 0 01.67 4.187q0 2.638.054 3.138a1.9 1.9 0 00.544 1.286 2.859 2.859 0 001.725.365h.419V29h-.754a6.126 6.126 0 01-1.921-.216 3.217 3.217 0 01-1.434-1.008A3.632 3.632 0 016 26.01a26.19 26.19 0 01-.183-3.5 17.842 17.842 0 00-.23-3.368 2.608 2.608 0 00-.873-1.475 2.7 2.7 0 00-1.7-.568zM28.985 17.1a2.7 2.7 0 00-1.7.568 2.608 2.608 0 00-.873 1.475 17.842 17.842 0 00-.23 3.368A26.19 26.19 0 0126 26.01a3.632 3.632 0 01-.737 1.765 3.217 3.217 0 01-1.434 1.008A6.126 6.126 0 0121.91 29h-.758v-2.124h.419a2.859 2.859 0 001.725-.365 1.9 1.9 0 00.548-1.285q.054-.5.054-3.138a9.6 9.6 0 01.67-4.187A4.126 4.126 0 0126.726 16a4.948 4.948 0 01-1.847-1.393 5.129 5.129 0 01-.832-2.232A39.059 39.059 0 0123.9 7.9a3.689 3.689 0 00-.46-2.266 2.532 2.532 0 00-1.867-.507h-.419V3h.758a7.325 7.325 0 011.677.135 3.3 3.3 0 011.245.629 3.277 3.277 0 01.818 1.1 5.672 5.672 0 01.448 1.829q.068.717.081 2.976a16.533 16.533 0 00.23 3.193 2.575 2.575 0 00.873 1.468 2.72 2.72 0 001.7.561z\" fill=\"#f5de19\"/><path d=\"M15.986 20.085c3.7 5.041 7.317-1.407 7.311-5.285-.006-4.585-4.653-7.147-7.314-7.147a8.352 8.352 0 000 16.7c-.832-.12-3.6-.714-3.642-7.1-.025-4.319 1.409-6.045 3.636-5.286a4.242 4.242 0 012.456 4.069 4.257 4.257 0 01-2.447 4.049z\" fill=\"url(#a)\"/><path d=\"M15.982 11.968c-2.443-.842-5.437 1.172-5.437 5.205 0 6.586 4.881 7.184 5.472 7.184a8.352 8.352 0 000-16.7c1.018-.141 5.489 1.1 5.489 7.212 0 3.984-3.338 6.153-5.509 5.227a4.242 4.242 0 01-2.456-4.069 4.28 4.28 0 012.441-4.059z\" fill=\"url(#b)\"/></svg>',\r\n js: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><path fill=\"#f5de19\" d=\"M2 2h28v28H2z\"/><path d=\"M20.809 23.875a2.866 2.866 0 002.6 1.6c1.09 0 1.787-.545 1.787-1.3 0-.9-.716-1.222-1.916-1.747l-.658-.282c-1.9-.809-3.16-1.822-3.16-3.964 0-1.973 1.5-3.476 3.853-3.476a3.889 3.889 0 013.742 2.107L25 18.128A1.789 1.789 0 0023.311 17a1.145 1.145 0 00-1.259 1.128c0 .789.489 1.109 1.618 1.6l.658.282c2.236.959 3.5 1.936 3.5 4.133 0 2.369-1.861 3.667-4.36 3.667a5.055 5.055 0 01-4.795-2.691zm-9.295.228c.413.733.789 1.353 1.693 1.353.864 0 1.41-.338 1.41-1.653v-8.947h2.631v8.982c0 2.724-1.6 3.964-3.929 3.964a4.085 4.085 0 01-3.947-2.4z\"/></svg>',\r\n md: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><path fill=\"none\" stroke=\"#755838\" d=\"M2.5 7.955h27v16.091h-27z\"/><path fill=\"#755838\" d=\"M5.909 20.636v-9.272h2.727l2.728 3.409 2.727-3.409h2.727v9.272h-2.727v-5.318l-2.727 3.409-2.728-3.409v5.318H5.909zM22.955 20.636l-4.091-4.5h2.727v-4.772h2.727v4.772h2.727l-4.09 4.5z\"/></svg>',\r\n tex: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><path d=\"M11.333 13.122c-.128-1.562-.241-2.756-2.287-2.756H7.91v8.4h2.145v.611l-3.083-.029-3.082.029v-.611h2.144v-8.4h-1.15c-2.046 0-2.159 1.208-2.287 2.756H2l.284-3.367h9.362l.284 3.367h-.6z\" fill=\"#cfcfcf\"/><path d=\"M19.289 22.53H10.41v-.61h1.506v-8.453H10.41v-.611h8.637l.412 3.367h-.6c-.213-1.833-.682-2.756-2.855-2.756h-2.213V17.2h.838c1.364 0 1.505-.6 1.505-1.662h.6v3.935h-.6c0-1.08-.142-1.662-1.505-1.662h-.838v4.106h2.216c2.472 0 3-1.108 3.3-3.225h.6z\" fill=\"#cfcfcf\"/><path d=\"M27.727 19.186c-.54 0-1.96 0-2.415.029V18.6h1.179l-2.557-3.552-2.529 3.381a4.1 4.1 0 001.295.171v.611c-.355-.029-1.576-.029-2.017-.029-.4 0-1.548 0-1.875.029V18.6h.383a7.459 7.459 0 00.824-.043c.5-.043.54-.085.667-.256l2.854-3.801-3.153-4.418H19V9.47c.384.028 1.79.028 2.273.028.582 0 1.918 0 2.429-.028v.611h-1.174l2.117 2.955 2.074-2.784a4.1 4.1 0 00-1.293-.17V9.47c.356.028 1.591.028 2.032.028.4 0 1.534 0 1.861-.028v.611h-.369a5.264 5.264 0 00-.838.043c-.469.043-.526.071-.667.256l-2.4 3.21 3.591 5.01H30v.611c-.355-.025-1.818-.025-2.273-.025z\" fill=\"#cfcfcf\"/></svg>',\r\n xml: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><path d=\"M20.42 21.157l2.211 2.211L30 16l-7.369-7.369-2.211 2.212L25.58 16zM11.58 10.843L9.369 8.631 2 16l7.369 7.369 2.211-2.211L6.42 16zM17.411 7.677l1.6.437-4.42 16.209-1.6-.437 4.42-16.209z\" fill=\"#f1662a\"/></svg>',\r\n default: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><path d=\"M20.414 2H5v28h22V8.586zM7 28V4h12v6h6v18z\" fill=\"#c5c5c5\"/></svg>'\r\n};\r\n\r\nfunction getFileIconContent(extension: string) {\r\n\r\n switch (extension) {\r\n case 'doc':\r\n case 'docx':\r\n return svgs.doc;\r\n case 'xls':\r\n case 'xlsx':\r\n case 'ods':\r\n return svgs.xls;\r\n case 'ppt':\r\n case 'pptx':\r\n return svgs.ppt;\r\n case 'png':\r\n case 'jpg':\r\n case 'jpeg':\r\n case 'bmp':\r\n case 'gif':\r\n case 'ico':\r\n return svgs.png;\r\n case 'zip':\r\n case 'rar':\r\n case '7z':\r\n case 'tar':\r\n case 'gz':\r\n case 'bz2':\r\n case 'xz':\r\n case 'tgz':\r\n case 'zipx':\r\n return svgs.zip;\r\n case 'mp3':\r\n case 'raw':\r\n case 'wav':\r\n case 'flac':\r\n case 'aac':\r\n case 'ogg':\r\n case 'wma':\r\n case 'm4a':\r\n case 'opus':\r\n return svgs.mp3;\r\n case 'mp4':\r\n case 'avi':\r\n case 'mkv':\r\n case 'mov':\r\n case 'wmv':\r\n case 'flv':\r\n case 'webm':\r\n case '3gp':\r\n case 'm4v':\r\n case 'vob':\r\n case 'ogv':\r\n return svgs.mp4;\r\n case 'exe':\r\n case 'dll':\r\n return svgs.exe;\r\n case 'txt':\r\n case 'csv':\r\n return svgs.txt;\r\n case 'svg':\r\n return svgs.svg;\r\n case 'ai':\r\n return svgs.ai;\r\n case 'eps':\r\n return svgs.eps;\r\n case 'webp':\r\n return svgs.webp;\r\n case 'pdf':\r\n return svgs.pdf;\r\n case 'psd':\r\n return svgs.psd;\r\n case 'html':\r\n return svgs.html;\r\n case 'css':\r\n return svgs.css;\r\n case 'json':\r\n return svgs.json;\r\n case 'js':\r\n return svgs.js;\r\n case 'md':\r\n return svgs.md;\r\n case 'tex':\r\n return svgs.tex;\r\n case 'xml':\r\n return svgs.xml;\r\n default:\r\n return svgs.default;\r\n }\r\n}\r\n\r\nexport function getFileExtension(fileName: string): string {\r\n if (!fileName) {\r\n return '';\r\n }\r\n const lastDotIndex = fileName.lastIndexOf('.');\r\n if (lastDotIndex === -1 || lastDotIndex === fileName.length - 1) {\r\n return '';\r\n }\r\n return fileName.substring(lastDotIndex + 1).toLowerCase();\r\n}\r\n\r\nexport function getContentTypeFromExtension(extension: string): string {\r\n const ext = extension.toLowerCase().replace('.', '');\r\n const contentTypeMap: { [key: string]: string } = {\r\n 'jpg': 'image/jpeg',\r\n 'jpeg': 'image/jpeg',\r\n 'png': 'image/png',\r\n 'gif': 'image/gif',\r\n 'bmp': 'image/bmp',\r\n 'webp': 'image/webp',\r\n 'svg': 'image/svg+xml',\r\n 'pdf': 'application/pdf',\r\n 'doc': 'application/msword',\r\n 'docx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\r\n 'xls': 'application/vnd.ms-excel',\r\n 'xlsx': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\r\n 'ppt': 'application/vnd.ms-powerpoint',\r\n 'pptx': 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\r\n 'txt': 'text/plain',\r\n 'csv': 'text/csv',\r\n 'zip': 'application/zip',\r\n 'rar': 'application/x-rar-compressed',\r\n '7z': 'application/x-7z-compressed',\r\n 'mp4': 'video/mp4',\r\n 'webm': 'video/webm',\r\n 'mov': 'video/quicktime',\r\n 'mp3': 'audio/mpeg',\r\n 'wav': 'audio/wav',\r\n 'ogg': 'audio/ogg'\r\n };\r\n return contentTypeMap[ext] || 'application/octet-stream';\r\n}\r\n\r\nexport function getExtensionFromContentType(contentType: string): string {\r\n const type = contentType.toLowerCase().split(';')[0].trim(); // Handle content types with charset/parameters\r\n\r\n const extensionMap: { [key: string]: string } = {\r\n 'image/jpeg': 'jpg',\r\n 'image/png': 'png',\r\n 'image/gif': 'gif',\r\n 'image/bmp': 'bmp',\r\n 'image/webp': 'webp',\r\n 'image/svg+xml': 'svg',\r\n 'application/pdf': 'pdf',\r\n 'application/msword': 'doc',\r\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document': 'docx',\r\n 'application/vnd.ms-excel': 'xls',\r\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': 'xlsx',\r\n 'application/vnd.ms-powerpoint': 'ppt',\r\n 'application/vnd.openxmlformats-officedocument.presentationml.presentation': 'pptx',\r\n 'text/plain': 'txt',\r\n 'text/csv': 'csv',\r\n 'application/zip': 'zip',\r\n 'application/x-rar-compressed': 'rar',\r\n 'application/x-7z-compressed': '7z',\r\n 'video/mp4': 'mp4',\r\n 'video/webm': 'webm',\r\n 'video/quicktime': 'mov',\r\n 'audio/mpeg': 'mp3',\r\n 'audio/wav': 'wav',\r\n 'audio/ogg': 'ogg',\r\n 'application/octet-stream': 'bin'\r\n };\r\n\r\n return extensionMap[type] || 'bin';\r\n}\r\n\r\nexport type SizeUnit = 'B' | 'KB' | 'MB' | 'GB';\r\n\r\nexport function convertToBytes(value: number, unit: SizeUnit): number {\r\n switch (unit) {\r\n case 'KB':\r\n return value * 1024;\r\n case 'MB':\r\n return value * 1024 * 1024;\r\n case 'GB':\r\n return value * 1024 * 1024 * 1024;\r\n default:\r\n return value;\r\n }\r\n}\r\n\r\nexport function base64ToFile(base64: string, filename: string): File {\r\n const arr = base64.split(',');\r\n const mime = arr[0].match(/:(.*?);/)?.[1] || 'image/png';\r\n const bstr = atob(arr[1]); // decode base64\r\n let n = bstr.length;\r\n const u8arr = new Uint8Array(n);\r\n\r\n while (n--) {\r\n u8arr[n] = bstr.charCodeAt(n);\r\n }\r\n\r\n return new File([u8arr as BlobPart], filename, { type: mime });\r\n}","import { Injectable, Inject } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable, of } from 'rxjs';\r\nimport { map, switchMap } from 'rxjs/operators';\r\nimport { getFileExtension } from '../helpers/file-helpers';\r\nimport {\r\n DownloadUrlResponse,\r\n MinioFileModel,\r\n UploadProgress,\r\n UploadUrlResponse\r\n} from '../models';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MinIOService {\r\n\r\n constructor(private http: HttpClient, @Inject('BASE_URL') private baseUrl: string) { }\r\n\r\n uploadFileWithSignedUrl(\r\n file: File,\r\n onProgress?: (progress: UploadProgress) => void\r\n ): Observable<MinioFileModel> {\r\n return this.computeFileChecksum(file).pipe(\r\n switchMap(checksum => {\r\n return this.getUploadUrl(file.name, file.type, getFileExtension(file.name), file.size, checksum);\r\n }),\r\n switchMap(response => {\r\n\r\n if (response.isDuplicate) {\r\n return of({\r\n fileName: response.fileName,\r\n fileKey: response.fileKey,\r\n fileSize: response.fileSizeBytes,\r\n fileExtension: response.fileExtension,\r\n fileContentType: response.fileContentType,\r\n reservationId: response.reservationId\r\n });\r\n }\r\n\r\n return this.uploadToSignedUrl(file, response.uploadUrl, onProgress).pipe(\r\n switchMap(() => {\r\n return this.confirmUpload(response.fileKey, response.reservationId).pipe(\r\n map(() => ({\r\n fileName: response.fileName,\r\n fileKey: response.fileKey,\r\n fileSize: response.fileSizeBytes,\r\n fileExtension: response.fileExtension,\r\n fileContentType: response.fileContentType\r\n }))\r\n );\r\n })\r\n );\r\n })\r\n );\r\n }\r\n\r\n private getUploadUrl(fileName: string, contentType: string, extension: string, fileSizeBytes: number, checksumSha256?: string): Observable<UploadUrlResponse> {\r\n return this.http.get<UploadUrlResponse>(this.baseUrl + 'api/Files/GetUploadUrl', {\r\n params: {\r\n fileName,\r\n contentType,\r\n extension,\r\n fileSizeBytes: fileSizeBytes.toString(),\r\n ...(checksumSha256 ? { checksumSha256 } : {})\r\n }\r\n });\r\n }\r\n\r\n private computeFileChecksum(file: File): Observable<string> {\r\n return new Observable(observer => {\r\n const reader = new FileReader();\r\n reader.onload = () => {\r\n const arrayBuffer = reader.result as ArrayBuffer;\r\n crypto.subtle.digest('SHA-256', arrayBuffer).then(hashBuffer => {\r\n const hashArray = Array.from(new Uint8Array(hashBuffer));\r\n const hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join('');\r\n observer.next(hashHex);\r\n observer.complete();\r\n }).catch(error => {\r\n observer.error(error);\r\n });\r\n };\r\n reader.onerror = () => {\r\n observer.error(new Error('Failed to read file for checksum computation'));\r\n };\r\n reader.readAsArrayBuffer(file);\r\n });\r\n }\r\n\r\n private uploadToSignedUrl(\r\n file: File,\r\n signedUrl: string,\r\n onProgress?: (progress: UploadProgress) => void\r\n ): Observable<void> {\r\n return new Observable(observer => {\r\n const xhr = new XMLHttpRequest();\r\n\r\n xhr.upload.addEventListener('progress', (event) => {\r\n if (event.lengthComputable && onProgress) {\r\n onProgress({\r\n loaded: event.loaded,\r\n total: event.total,\r\n percentage: Math.round((event.loaded / event.total) * 100)\r\n });\r\n }\r\n });\r\n\r\n xhr.addEventListener('load', () => {\r\n if (xhr.status >= 200 && xhr.status < 300) {\r\n observer.next();\r\n observer.complete();\r\n } else {\r\n console.error('MinIO PUT error:', xhr.status, xhr.responseText);\r\n observer.error(new Error(`Upload failed with status ${xhr.status}`));\r\n }\r\n });\r\n\r\n xhr.addEventListener('error', () => {\r\n observer.error(new Error('Upload failed'));\r\n });\r\n\r\n xhr.open('PUT', signedUrl);\r\n\r\n xhr.send(file);\r\n });\r\n }\r\n\r\n private confirmUpload(fileKey: string, reservationId: string): Observable<void> {\r\n return this.http.post<any>(this.baseUrl + 'api/Files/ConfirmUpload', { fileKey, reservationId });\r\n }\r\n\r\n download(fileKey: string): Observable<any> {\r\n return this.http.get<DownloadUrlResponse>(this.baseUrl + 'api/Files/GetDownloadUrl', { params: { fileKey } })\r\n .pipe(\r\n switchMap(response => {\r\n return this.http.get(response.downloadUrl, {\r\n observe: 'response',\r\n responseType: 'blob'\r\n });\r\n }))\r\n }\r\n\r\n}\r\n","import { booleanAttribute, Component, ElementRef, forwardRef, Input, OnInit, ViewChild } from '@angular/core';\r\nimport { AbstractControl, ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validator } from '@angular/forms';\r\nimport {\r\n convertToBytes,\r\n getExtensionFromContentType,\r\n getFileExtension, getFileIcon,\r\n getFileSize,\r\n SizeUnit\r\n} from '../helpers';\r\nimport { ToastsService } from 'irisa-toasts';\r\nimport { ObservableState, recordState } from 'irisa-helpers';\r\nimport { saveAs } from 'file-saver';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { MinioFileModel, TempFileModel } from '../models';\r\nimport { MinIOService } from '../services';\r\n\r\n@Component({\r\n selector: 'minio-file-upload',\r\n templateUrl: './file-upload.component.html',\r\n styleUrls: ['./file-upload.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => MinioFileUploadComponent),\r\n multi: true,\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => MinioFileUploadComponent),\r\n multi: true,\r\n }\r\n ],\r\n standalone: false\r\n})\r\nexport class MinioFileUploadComponent implements ControlValueAccessor, Validator, OnInit {\r\n\r\n @Input() maxSize: number = 10;\r\n @Input() sizeUnit: SizeUnit = 'MB';\r\n @Input() accept: string[] = ['image/jpeg', 'image/jpg', 'image/png', 'application/pdf'];\r\n @Input() multiple: boolean = false;\r\n @Input() limit: number;\r\n @Input() buttonOnly: boolean = false;\r\n @Input({ transform: booleanAttribute }) required = false;\r\n @Input({ transform: booleanAttribute }) readOnly = false;\r\n @Input({ transform: booleanAttribute }) disabled = false;\r\n acceptExtension: string = '';\r\n maxBytes: number = 0;\r\n files: MinioFileModel[] = [];\r\n tempFiles: TempFileModel[] = [];\r\n @ViewChild('fileInput') fileInput: ElementRef<HTMLInputElement>;\r\n\r\n private onChange = (_: any) => { };\r\n private onTouched = () => { };\r\n private onValidatorChange: () => void = () => { };\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n registerOnValidatorChange?(fn: () => void): void {\r\n this.onValidatorChange = fn;\r\n }\r\n\r\n constructor(\r\n private service: MinIOService,\r\n private toastsService: ToastsService,\r\n private translateService: TranslateService\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.maxBytes = convertToBytes(this.maxSize, this.sizeUnit);\r\n this.acceptExtension = this.accept.map(x => getExtensionFromContentType(x).toUpperCase()).join(', ');\r\n\r\n if (!this.multiple) {\r\n this.limit = 1;\r\n }\r\n }\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n return null;\r\n }\r\n\r\n writeValue(value: MinioFileModel[]): void {\r\n if (value && value.length) {\r\n value.forEach(file => file.downloadState = new ObservableState());\r\n this.files = value;\r\n }\r\n else\r\n this.files = [];\r\n }\r\n\r\n onUploadClick() {\r\n if (this.disabled)\r\n return;\r\n\r\n this.fileInput.nativeElement.click();\r\n this.onTouched();\r\n }\r\n\r\n onFileDropped(event: DragEvent) {\r\n if (this.disabled)\r\n return;\r\n\r\n this.onTouched();\r\n event.preventDefault();\r\n const files = event.dataTransfer?.files;\r\n if (files && files.length) {\r\n this.handleFile(files);\r\n }\r\n }\r\n\r\n allowDrop(event: DragEvent) {\r\n event.preventDefault();\r\n }\r\n\r\n onFileSelected(event: any) {\r\n if (this.disabled)\r\n return;\r\n\r\n const files = this.fileInput.nativeElement.files;\r\n if (files && files.length) {\r\n this.handleFile(files);\r\n }\r\n this.fileInput.nativeElement.value = '';\r\n }\r\n\r\n private handleFile(selectedFiles: FileList) {\r\n\r\n if (this.multiple) {\r\n if ((this.tempFiles.length + this.files.length + selectedFiles.length) > this.limit) {\r\n this.toastsService.showErrorToast(this.translateService.instant('MinioLabels.MaxFilesAllowedError', { limit: this.limit }));\r\n return;\r\n }\r\n }\r\n else {\r\n if ((this.tempFiles.length + this.files.length + selectedFiles.length) > 1) {\r\n this.toastsService.showErrorToast(this.translateService.instant('MinioLabels.MaxFilesAllowedError', { limit: this.limit }));\r\n return;\r\n }\r\n }\r\n\r\n for (let selectedFile of selectedFiles) {\r\n\r\n if (!this.accept.includes(selectedFile.type)) {\r\n this.toastsService.showErrorToast(this.translateService.instant('MinioLabels.ExtensionError', { fileName: selectedFile.name, allowed: this.acceptExtension }));\r\n continue;\r\n }\r\n\r\n if (selectedFile.size > this.maxBytes) {\r\n this.toastsService.showErrorToast(this.translateService.instant('MinioLabels.MaxSizeError', { fileName: selectedFile.name, max: `${this.maxSize}${this.sizeUnit}` }));\r\n continue;\r\n }\r\n\r\n if (\r\n this.tempFiles.some(tempFile => tempFile.file.size === selectedFile.size && tempFile.file.name === selectedFile.name) ||\r\n this.files.some(file => file.fileSize === selectedFile.size && file.fileName === selectedFile.name)\r\n ) {\r\n this.toastsService.showErrorToast(this.translateService.instant('MinioLabels.DuplicateFile', { fileName: selectedFile.name }));\r\n continue;\r\n }\r\n\r\n this.tempFiles.push({\r\n file: selectedFile,\r\n progress: 0,\r\n isUploading: false\r\n });\r\n\r\n }\r\n\r\n this.tempFiles\r\n .filter(tempFile => !tempFile.isUploading)\r\n .forEach(tempFile => this.uploadToMinIO(tempFile));\r\n\r\n }\r\n\r\n private uploadToMinIO(tempFile: TempFileModel): void {\r\n tempFile.isUploading = true;\r\n\r\n this.service.uploadFileWithSignedUrl(\r\n tempFile.file,\r\n progress => tempFile.progress = progress.percentage\r\n )\r\n .subscribe({\r\n next: result => {\r\n result.downloadState = new ObservableState();\r\n this.files.push(result);\r\n this.removeFromTempFiles(tempFile);\r\n this.onChange(this.files);\r\n this.onValidatorChange();\r\n },\r\n error: () => {\r\n this.removeFromTempFiles(tempFile);\r\n }\r\n });\r\n }\r\n\r\n removeFromTempFiles(file: TempFileModel) {\r\n const index = this.tempFiles.findIndex(tempFile => tempFile === file);\r\n if (index > -1) {\r\n this.tempFiles.splice(index, 1);\r\n }\r\n }\r\n\r\n onRemoveFileClick(index: number): void {\r\n this.files.splice(index, 1);\r\n this.onChange(this.files);\r\n this.onValidatorChange();\r\n }\r\n\r\n getTempFileIcon(tempFile: TempFileModel): string {\r\n return getFileIcon(getFileExtension(tempFile.file?.name));\r\n }\r\n\r\n getFileIcon(extension: string): string {\r\n return getFileIcon(extension);\r\n }\r\n\r\n getSize(size: number): string {\r\n return getFileSize(size);\r\n }\r\n\r\n onDownloadFile(file: MinioFileModel) {\r\n if (!file.fileKey)\r\n return;\r\n\r\n file.downloadState.Wait();\r\n this.service.download(file.fileKey)\r\n .pipe(recordState(file.downloadState))\r\n .subscribe({\r\n next: response => {\r\n saveAs(response.body, `${file.fileName}`);\r\n }\r\n });\r\n }\r\n\r\n}","<input type=\"file\"\r\n hidden\r\n [multiple]=\"multiple\"\r\n (change)=\"onFileSelected($event)\"\r\n [accept]=\"accept.join(',')\"\r\n #fileInput />\r\n\r\n@if(buttonOnly){\r\n<button class=\"btn btn-text p-0 text-primary\"\r\n [disabled]=\"tempFiles.length || disabled || readOnly\"\r\n (click)=\"onUploadClick()\">\r\n @if(tempFiles.length){\r\n <span class=\"spinner-grow spinner-grow-sm\"></span>\r\n }\r\n @else {\r\n <span [innerText]=\"'MinioLabels.UploadFile' | translate\"></span>\r\n }\r\n</button>\r\n}\r\n@else{\r\n\r\n@if(!readOnly){\r\n<div class=\"border radius-8 px-6px py-12px\"\r\n [ngClass]=\"disabled ? 'opacity-50 cursor-default' : 'cursor-pointer'\"\r\n (drop)=\"onFileDropped($event)\"\r\n (dragover)=\"allowDrop($event)\"\r\n (click)=\"onUploadClick()\">\r\n <div class=\"flex-center\">\r\n <div class=\"flex-center\">\r\n <div class=\"flex-center bg-gray-100 border radius-8 wh-40 me-8px\">\r\n <i class=\"fs-20 text-gray-400 ri-file-line\"></i>\r\n </div>\r\n <div class=\"flex-center flex-column\">\r\n <div>\r\n <span class=\"font-regular text-primary me-1\"\r\n [innerText]=\"'MinioLabels.Click' | translate\"></span>\r\n <span class=\"font-regular text-gray-500\"\r\n [innerText]=\"'MinioLabels.Drag' | translate\"></span>\r\n </div>\r\n <span class=\"font-regular text-gray-500\"\r\n [innerText]=\"'MinioLabels.FileRules' | translate: {acceptExtension: acceptExtension, maxSize: maxSize, sizeUnit: sizeUnit}\"></span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n}\r\n\r\n@for (tempFile of tempFiles; track $index) {\r\n<div class=\"d-flex flex-column justify-content-start align-items-start border radius-8 bg-white p-8px mt-8px\">\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"flex-center border border-gray-100 radius-8 wh-40\">\r\n <div class=\"flex-center border border-gray-200 radius-8 wh-34\">\r\n <div class=\"flex-center border border-gray-300 radius-8 wh-28\">\r\n <img [src]=\"getTempFileIcon(tempFile)\"\r\n height=\"20\">\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-column ms-8px\">\r\n <span class=\"text-gray-800\"\r\n [innerText]=\"tempFile.file?.name\"></span>\r\n <span class=\"font-regular text-gray-500\"\r\n [innerText]=\"getSize(tempFile.file.size)\"></span>\r\n </div>\r\n </div>\r\n <div class=\"d-flex align-items-center ps-48px pe-16px w-100\">\r\n <div class=\"loading-wrapper bg-gray-200 radius-16 w-100\">\r\n <div class=\"loading bg-primary radius-16 h-100\"\r\n [style.width.%]=\"tempFile.progress\"></div>\r\n </div>\r\n <span class=\"ms-32px\"\r\n [innerText]=\"tempFile.progress + '%'\"></span>\r\n </div>\r\n</div>\r\n}\r\n\r\n@for (file of files; track $index; let index = $index) {\r\n<div class=\"d-flex justify-content-between align-items-start border radius-8 bg-white p-8px mt-8px\">\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"flex-center border border-gray-100 radius-8 wh-40\">\r\n <div class=\"flex-center border border-gray-200 radius-8 wh-34\">\r\n <div class=\"flex-center border border-gray-300 radius-8 wh-28\">\r\n <img [src]=\"getFileIcon(file.fileExtension)\"\r\n height=\"20\">\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-column ms-8px\">\r\n <span class=\"text-gray-800\"\r\n [innerText]=\"file.fileName\"></span>\r\n <span class=\"font-regular text-gray-500\"\r\n [innerText]=\"getSize(file.fileSize)\"></span>\r\n </div>\r\n </div>\r\n <div class=\"d-flex align-items-center\">\r\n <button class=\"btn btn-text text-gray-500 py-0 px-2\"\r\n [disabled]=\"file.downloadState.IsWait\"\r\n (click)=\"onDownloadFile(file)\">\r\n @if(file.downloadState.IsWait)\r\n {\r\n <span class=\"spinner-grow spinner-grow-sm\"></span>\r\n }\r\n @else {\r\n <i class=\"fs-18 ri-download-2-line\"></i>\r\n }\r\n </button>\r\n <button class=\"btn btn-text text-gray-500 py-0 px-2\"\r\n (click)=\"onRemoveFileClick(index)\">\r\n <i class=\"fs-18 ri-delete-bin-7-line\"></i>\r\n </button>\r\n </div>\r\n</div>\r\n}\r\n\r\n@if(!buttonOnly && readOnly && !files.length && !tempFiles.length){\r\n<div class=\"d-flex justify-content-center align-items-center border radius-8 bg-white mt-8px p-3\">\r\n <i class=\"fs-20 text-gray-400 ri-attachment-line me-3\"></i>\r\n <span class=\"font-semibold text-gray-400\"\r\n [innerText]=\"'MinioLabels.NoAttachment' | translate\"></span>\r\n</div>\r\n}\r\n}","import { booleanAttribute, Component, ContentChild, ElementRef, forwardRef, Input, OnInit, TemplateRef, ViewChild } from '@angular/core';\r\nimport { AbstractControl, ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validator } from '@angular/forms';\r\nimport {\r\n convertToBytes,\r\n getExtensionFromContentType,\r\n getFileSize,\r\n SizeUnit\r\n} from '../helpers';\r\nimport { ToastsService } from 'irisa-toasts';\r\nimport { ObservableState, recordState } from 'irisa-helpers';\r\nimport { MinioFileModel, TempFileModel } from '../models';\r\nimport { MinIOService } from '../services';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'minio-image',\r\n templateUrl: './image.component.html',\r\n styleUrls: ['./image.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => MinioImageComponent),\r\n multi: true,\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => MinioImageComponent),\r\n multi: true,\r\n }\r\n ],\r\n standalone: false\r\n})\r\nexport class MinioImageComponent implements ControlValueAccessor, Validator, OnInit {\r\n\r\n @Input() maxHeight: number = 400;\r\n @Input() maxWidth: number = 700;\r\n @Input() maxSize: number = 10;\r\n @Input() sizeUnit: SizeUnit = 'MB';\r\n @Input() accept: string[] = ['image/jpeg', 'image/jpg', 'image/png'];\r\n @Input({ transform: booleanAttribute }) required = false;\r\n @Input({ transform: booleanAttribute }) readOnly = false;\r\n @Input({ transform: booleanAttribute }) disabled = false;\r\n @Input() hasDefaultLoading = true;\r\n @Input() previewLoadingClass = '';\r\n @ContentChild('preview', { static: true }) previewTemplate: TemplateRef<any>;\r\n @ContentChild('upload', { static: true }) uploadTemplate: TemplateRef<any>;\r\n tempPreview: string | null = null;\r\n preview: string | null = null;\r\n acceptExtension: string = '';\r\n maxBytes: number = 0;\r\n file: MinioFileModel = { downloadState: new ObservableState() };\r\n tempFile: TempFileModel = {};\r\n\r\n @ViewChild('fileInput') fileInput: ElementRef<HTMLInputElement>;\r\n\r\n private onChange = (_: any) => { };\r\n private onTouched = () => { };\r\n private onValidatorChange: () => void = () => { };\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n registerOnValidatorChange?(fn: () => void): void {\r\n this.onValidatorChange = fn;\r\n }\r\n\r\n constructor(\r\n private service: MinIOService,\r\n private toastsService: ToastsService,\r\n private translateService: TranslateService\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.maxBytes = convertToBytes(this.maxSize, this.sizeUnit);\r\n this.acceptExtension = this.accept.map(x => getExtensionFromContentType(x).toUpperCase()).join(', ');\r\n }\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n return null;\r\n }\r\n\r\n writeValue(value: MinioFileModel): void {\r\n if (value) {\r\n value.downloadState = new ObservableState();\r\n this.file = value;\r\n this.onDownloadFile(this.file);\r\n }\r\n else {\r\n this.file = { downloadState: new ObservableState() };\r\n }\r\n }\r\n\r\n onUploadClick() {\r\n if (this.disabled || this.readOnly)\r\n return;\r\n\r\n this.fileInput.nativeElement.click();\r\n this.onTouched();\r\n }\r\n\r\n onFileDropped(event: DragEvent) {\r\n if (this.disabled || this.readOnly)\r\n return;\r\n\r\n this.onTouched();\r\n event.preventDefault();\r\n const file = event.dataTransfer?.files[0];\r\n if (file) {\r\n this.handleFile(file);\r\n }\r\n }\r\n\r\n allowDrop(event: DragEvent) {\r\n event.preventDefault();\r\n }\r\n\r\n onFileSelected(event: any) {\r\n if (this.disabled || this.tempFile.isUploading)\r\n return;\r\n\r\n const file = this.fileInput.nativeElement.files[0];\r\n if (file) {\r\n this.handleFile(file);\r\n }\r\n this.fileInput.nativeElement.value = '';\r\n }\r\n\r\n private handleFile(selectedFile: File) {\r\n\r\n if (!this.accept.includes(selectedFile.type)) {\r\n this.toastsService.showErrorToast(this.translateService.instant('MinioLabels.ExtensionError', { fileName: selectedFile.name, allowed: this.acceptExtension }));\r\n return;\r\n }\r\n\r\n if (selectedFile.size > this.maxBytes) {\r\n this.toastsService.showErrorToast(this.translateService.instant('MinioLabels.MaxSizeError', { fileName: selectedFile.name, max: `${this.maxSize}${this.sizeUnit}` }));\r\n return;\r\n }\r\n\r\n this.tempFile = {\r\n file: selectedFile,\r\n progress: 0,\r\n isUploading: false\r\n };\r\n this.getTempFilePreview();\r\n\r\n this.uploadToMinIO(this.tempFile);\r\n\r\n }\r\n\r\n private uploadToMinIO(tempFile: TempFileModel): void {\r\n tempFile.isUploading = true;\r\n\r\n this.service.uploadFileWithSignedUrl(\r\n tempFile.file,\r\n progress => tempFile.progress = progress.percentage\r\n )\r\n .subscribe({\r\n next: result => {\r\n result.downloadState = new ObservableState();\r\n this.file = result;\r\n this.preview = this.tempPreview;\r\n this.tempFile = {};\r\n this.tempPreview = null;\r\n this.onChange(this.file);\r\n this.onValidatorChange();\r\n },\r\n error: () => {\r\n this.tempFile = {};\r\n this.tempPreview = null;\r\n }\r\n });\r\n }\r\n\r\n onRemoveFileClick(): void {\r\n this.file = { downloadState: new ObservableState() };\r\n this.preview = null;\r\n this.onChange({});\r\n this.onValidatorChange();\r\n }\r\n\r\n getTempFilePreview() {\r\n const reader = new FileReader();\r\n reader.onload = (e: any) => {\r\n this.tempPreview = e.target.result;\r\n };\r\n reader.readAsDataURL(this.tempFile.file);\r\n }\r\n\r\n generatePreview(file: File) {\r\n const reader = new FileReader();\r\n reader.onload = (e: any) => {\r\n this.preview = e.target.result;\r\n };\r\n reader.readAsDataURL(file);\r\n }\r\n\r\n getSize(size: number): string {\r\n return getFileSize(size);\r\n }\r\n\r\n onDownloadFile(file: MinioFileModel) {\r\n if (!file.fileKey)\r\n return;\r\n\r\n file.downloadState.Wait();\r\n this.service.download(file.fileKey)\r\n .pipe(recordState(file.downloadState))\r\n .subscribe({\r\n next: response => {\r\n this.generatePreview(response.body)\r\n }\r\n });\r\n }\r\n\r\n}","@if(!!previewTemplate){\r\n@if(hasDefaultLoading && file.downloadState.IsWait){\r\n<span [ngClass]=\"previewLoadingClass\"\r\n class=\"spinner-grow spinner-grow-sm\"></span>\r\n}\r\n@else {\r\n<ng-container *ngTemplateOutlet=\"previewTemplate; context: { preview: preview, downloadStateIsWait: file.downloadState.IsWait }\"></ng-container>\r\n}\r\n}\r\n@else {\r\n<input type=\"file\"\r\n hidden\r\n (change)=\"onFileSelected($event)\"\r\n [accept]=\"accept.join(',')\"\r\n #fileInput />\r\n@if(!!uploadTemplate){\r\n<ng-container *ngTemplateOutlet=\"\r\n uploadTemplate; \r\n context: { \r\n preview: preview, \r\n uploadStateIsWait: tempFile.isUploading, \r\n downloadStateIsWait: file.downloadState.IsWait,\r\n upload: onUploadClick.bind(this)\r\n }\">\r\n</ng-container>\r\n}\r\n@else{\r\n@if(!readOnly && !file.fileKey && !tempPreview && !preview){\r\n<div class=\"border radius-8 px-6px py-12px\"\r\n [ngClass]=\"disabled ? 'opacity-50 cursor-default' : 'cursor-pointer'\"\r\n (drop)=\"onFileDropped($event)\"\r\n (dragover)=\"allowDrop($event)\"\r\n (click)=\"onUploadClick()\">\r\n <div class=\"flex-center\">\r\n <div class=\"flex-center\">\r\n <div class=\"flex-center bg-gray-100 border radius-8 wh-40 me-8px\">\r\n <i class=\"fs-20 text-gray-400 ri-image-line\"></i>\r\n </div>\r\n <div class=\"flex-center flex-column\">\r\n <div>\r\n <span class=\"font-regular text-primary me-1\"\r\n [innerText]=\"'MinioLabels.Click' | translate\"></span>\r\n <span class=\"font-regular text-gray-500\"\r\n [innerText]=\"'MinioLabels.Drag' | translate\"></span>\r\n </div>\r\n <span class=\"font-regular text-gray-500\"\r\n [innerText]=\"'MinioLabels.ImageRules' | translate: {acceptExtension: acceptExtension, maxSize: maxSize, sizeUnit: sizeUnit, maxWidth: maxWidth, maxHeight: maxHeight}\"></span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n}\r\n\r\n@if (tempFile.file) {\r\n<div class=\"d-flex flex-column justify-content-start align-items-start border radius-8 bg-white p-8px mt-8px\">\r\n <div class=\"d-flex align-items-center w-100\">\r\n <img [src]=\"tempPreview\"\r\n height=\"60\"\r\n class=\"border radius-8\">\r\n <div class=\"d-flex flex-column justify-content-end ms-12px w-100\">\r\n <span class=\"text-gray-800\"\r\n [innerText]=\"tempFile.file.name\"></span>\r\n <span class=\"font-regular text-gray-500\"\r\n [innerText]=\"getSize(tempFile.file.size)\"></span>\r\n <div class=\"d-flex align-items-center pe-16px\">\r\n <div class=\"loading-wrapper bg-gray-200 radius-16 w-100\">\r\n <div class=\"loading bg-primary radius-16 h-100\"\r\n [style.width.%]=\"tempFile.progress\"></div>\r\n </div>\r\n <span class=\"ms-32px\"\r\n [innerText]=\"tempFile.progress + '%'\"></span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n}\r\n\r\n@if(file.fileKey && !tempFile.file){\r\n<div class=\"d-flex justify-content-center align-items-center position-relative min-h-80px\"\r\n [style.max-height.px]=\"maxHeight\"\r\n [ngClass]=\"(disabled || readOnly) ? 'cursor-default' : 'cursor-pointer'\"\r\n (click)=\"onUploadClick()\">\r\n @if(file.downloadState.IsWait){\r\n <span class=\"spinner-grow spinner-grow-sm\"></span>\r\n }\r\n @else{\r\n <img [src]=\"preview\"\r\n class=\"border radius-8 w-100\"\r\n [style.max-height.px]=\"maxHeight\">\r\n @if(!required && !readOnly){\r\n <button class=\"btn btn-danger remove-image\"\r\n (click)=\"onRemoveFileClick()\">\r\n <i class=\"ri-delete-bin-7-line\"></i>\r\n </button>\r\n }\r\n }\r\n</div>\r\n}\r\n\r\n}\r\n}","import { NgModule } from '@angular/core';\r\nimport { MinioFileUploadComponent } from './file-upload/file-upload.component';\r\nimport { MinioImageComponent } from './image/image.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgbPopoverModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n@NgModule({\r\n declarations: [\r\n MinioFileUploadComponent,\r\n MinioImageComponent\r\n ],\r\n imports: [\r\n FormsModule,\r\n CommonModule,\r\n NgbPopoverModule,\r\n TranslateModule\r\n ],\r\n exports: [\r\n MinioFileUploadComponent,\r\n MinioImageComponent\r\n ],\r\n providers: []\r\n})\r\nexport class MinioModule { }\r\n","/*\n * Public API Surface of minio-file-upload\n */\n\nexport * from './lib/models';\nexport * from './lib/services';\nexport * from './lib/file-upload/file-upload.component';\nexport * from './lib/image/image.component';\nexport * from './lib/minio.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.MinIOService"],"mappings":"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"}
package/index.d.ts ADDED
@@ -0,0 +1,171 @@
1
+ import { ObservableState } from 'irisa-helpers';
2
+ import { HttpClient } from '@angular/common/http';
3
+ import { Observable } from 'rxjs';
4
+ import * as i0 from '@angular/core';
5
+ import { OnInit, ElementRef, TemplateRef } from '@angular/core';
6
+ import * as i3 from '@angular/forms';
7
+ import { ControlValueAccessor, Validator, AbstractControl, ValidationErrors } from '@angular/forms';
8
+ import { ToastsService } from 'irisa-toasts';
9
+ import * as i6 from '@ngx-translate/core';
10
+ import { TranslateService } from '@ngx-translate/core';
11
+ import * as i4 from '@angular/common';
12
+ import * as i5 from '@ng-bootstrap/ng-bootstrap';
13
+
14
+ interface DownloadUrlResponse {
15
+ downloadUrl: string;
16
+ }
17
+
18
+ interface UploadProgress {
19
+ loaded: number;
20
+ total: number;
21
+ percentage: number;
22
+ }
23
+
24
+ interface UploadUrlResponse {
25
+ uploadUrl: string;
26
+ fileKey: string;
27
+ reservationId: string;
28
+ fileName: string;
29
+ fileExtension: string;
30
+ fileContentType: string;
31
+ fileSizeBytes: number;
32
+ isDuplicate?: boolean;
33
+ }
34
+
35
+ interface TempFileModel {
36
+ file?: File;
37
+ isUploading?: boolean;
38
+ progress?: number;
39
+ }
40
+
41
+ interface MinioFileModel {
42
+ fileName?: string;
43
+ fileKey?: string;
44
+ fileSize?: number;
45
+ fileExtension?: string;
46
+ fileContentType?: string;
47
+ downloadState?: ObservableState;
48
+ }
49
+
50
+ declare class MinIOService {
51
+ private http;
52
+ private baseUrl;
53
+ constructor(http: HttpClient, baseUrl: string);
54
+ uploadFileWithSignedUrl(file: File, onProgress?: (progress: UploadProgress) => void): Observable<MinioFileModel>;
55
+ private getUploadUrl;
56
+ private computeFileChecksum;
57
+ private uploadToSignedUrl;
58
+ private confirmUpload;
59
+ download(fileKey: string): Observable<any>;
60
+ static ɵfac: i0.ɵɵFactoryDeclaration<MinIOService, never>;
61
+ static ɵprov: i0.ɵɵInjectableDeclaration<MinIOService>;
62
+ }
63
+
64
+ type SizeUnit = 'B' | 'KB' | 'MB' | 'GB';
65
+
66
+ declare class MinioFileUploadComponent implements ControlValueAccessor, Validator, OnInit {
67
+ private service;
68
+ private toastsService;
69
+ private translateService;
70
+ maxSize: number;
71
+ sizeUnit: SizeUnit;
72
+ accept: string[];
73
+ multiple: boolean;
74
+ limit: number;
75
+ buttonOnly: boolean;
76
+ required: boolean;
77
+ readOnly: boolean;
78
+ disabled: boolean;
79
+ acceptExtension: string;
80
+ maxBytes: number;
81
+ files: MinioFileModel[];
82
+ tempFiles: TempFileModel[];
83
+ fileInput: ElementRef<HTMLInputElement>;
84
+ private onChange;
85
+ private onTouched;
86
+ private onValidatorChange;
87
+ registerOnChange(fn: any): void;
88
+ registerOnTouched(fn: any): void;
89
+ registerOnValidatorChange?(fn: () => void): void;
90
+ constructor(service: MinIOService, toastsService: ToastsService, translateService: TranslateService);
91
+ ngOnInit(): void;
92
+ validate(control: AbstractControl): ValidationErrors | null;
93
+ writeValue(value: MinioFileModel[]): void;
94
+ onUploadClick(): void;
95
+ onFileDropped(event: DragEvent): void;
96
+ allowDrop(event: DragEvent): void;
97
+ onFileSelected(event: any): void;
98
+ private handleFile;
99
+ private uploadToMinIO;
100
+ removeFromTempFiles(file: TempFileModel): void;
101
+ onRemoveFileClick(index: number): void;
102
+ getTempFileIcon(tempFile: TempFileModel): string;
103
+ getFileIcon(extension: string): string;
104
+ getSize(size: number): string;
105
+ onDownloadFile(file: MinioFileModel): void;
106
+ static ɵfac: i0.ɵɵFactoryDeclaration<MinioFileUploadComponent, never>;
107
+ static ɵcmp: i0.ɵɵComponentDeclaration<MinioFileUploadComponent, "minio-file-upload", never, { "maxSize": { "alias": "maxSize"; "required": false; }; "sizeUnit": { "alias": "sizeUnit"; "required": false; }; "accept": { "alias": "accept"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "limit": { "alias": "limit"; "required": false; }; "buttonOnly": { "alias": "buttonOnly"; "required": false; }; "required": { "alias": "required"; "required": false; }; "readOnly": { "alias": "readOnly"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, {}, never, never, false, never>;
108
+ static ngAcceptInputType_required: unknown;
109
+ static ngAcceptInputType_readOnly: unknown;
110
+ static ngAcceptInputType_disabled: unknown;
111
+ }
112
+
113
+ declare class MinioImageComponent implements ControlValueAccessor, Validator, OnInit {
114
+ private service;
115
+ private toastsService;
116
+ private translateService;
117
+ maxHeight: number;
118
+ maxWidth: number;
119
+ maxSize: number;
120
+ sizeUnit: SizeUnit;
121
+ accept: string[];
122
+ required: boolean;
123
+ readOnly: boolean;
124
+ disabled: boolean;
125
+ hasDefaultLoading: boolean;
126
+ previewLoadingClass: string;
127
+ previewTemplate: TemplateRef<any>;
128
+ uploadTemplate: TemplateRef<any>;
129
+ tempPreview: string | null;
130
+ preview: string | null;
131
+ acceptExtension: string;
132
+ maxBytes: number;
133
+ file: MinioFileModel;
134
+ tempFile: TempFileModel;
135
+ fileInput: ElementRef<HTMLInputElement>;
136
+ private onChange;
137
+ private onTouched;
138
+ private onValidatorChange;
139
+ registerOnChange(fn: any): void;
140
+ registerOnTouched(fn: any): void;
141
+ registerOnValidatorChange?(fn: () => void): void;
142
+ constructor(service: MinIOService, toastsService: ToastsService, translateService: TranslateService);
143
+ ngOnInit(): void;
144
+ validate(control: AbstractControl): ValidationErrors | null;
145
+ writeValue(value: MinioFileModel): void;
146
+ onUploadClick(): void;
147
+ onFileDropped(event: DragEvent): void;
148
+ allowDrop(event: DragEvent): void;
149
+ onFileSelected(event: any): void;
150
+ private handleFile;
151
+ private uploadToMinIO;
152
+ onRemoveFileClick(): void;
153
+ getTempFilePreview(): void;
154
+ generatePreview(file: File): void;
155
+ getSize(size: number): string;
156
+ onDownloadFile(file: MinioFileModel): void;
157
+ static ɵfac: i0.ɵɵFactoryDeclaration<MinioImageComponent, never>;
158
+ static ɵcmp: i0.ɵɵComponentDeclaration<MinioImageComponent, "minio-image", never, { "maxHeight": { "alias": "maxHeight"; "required": false; }; "maxWidth": { "alias": "maxWidth"; "required": false; }; "maxSize": { "alias": "maxSize"; "required": false; }; "sizeUnit": { "alias": "sizeUnit"; "required": false; }; "accept": { "alias": "accept"; "required": false; }; "required": { "alias": "required"; "required": false; }; "readOnly": { "alias": "readOnly"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "hasDefaultLoading": { "alias": "hasDefaultLoading"; "required": false; }; "previewLoadingClass": { "alias": "previewLoadingClass"; "required": false; }; }, {}, ["previewTemplate", "uploadTemplate"], never, false, never>;
159
+ static ngAcceptInputType_required: unknown;
160
+ static ngAcceptInputType_readOnly: unknown;
161
+ static ngAcceptInputType_disabled: unknown;
162
+ }
163
+
164
+ declare class MinioModule {
165
+ static ɵfac: i0.ɵɵFactoryDeclaration<MinioModule, never>;
166
+ static ɵmod: i0.ɵɵNgModuleDeclaration<MinioModule, [typeof MinioFileUploadComponent, typeof MinioImageComponent], [typeof i3.FormsModule, typeof i4.CommonModule, typeof i5.NgbPopoverModule, typeof i6.TranslateModule], [typeof MinioFileUploadComponent, typeof MinioImageComponent]>;
167
+ static ɵinj: i0.ɵɵInjectorDeclaration<MinioModule>;
168
+ }
169
+
170
+ export { MinIOService, MinioFileUploadComponent, MinioImageComponent, MinioModule };
171
+ export type { DownloadUrlResponse, MinioFileModel, TempFileModel, UploadProgress, UploadUrlResponse };
package/package.json ADDED
@@ -0,0 +1,24 @@
1
+ {
2
+ "name": "irisa-minio",
3
+ "version": "20.0.0",
4
+ "peerDependencies": {
5
+ "@angular/common": "^20.0.2",
6
+ "@angular/core": "^20.0.2",
7
+ "@ng-bootstrap/ng-bootstrap": "^19.0.1"
8
+ },
9
+ "dependencies": {
10
+ "tslib": "2.8.1"
11
+ },
12
+ "sideEffects": false,
13
+ "module": "fesm2022/irisa-minio.mjs",
14
+ "typings": "index.d.ts",
15
+ "exports": {
16
+ "./package.json": {
17
+ "default": "./package.json"
18
+ },
19
+ ".": {
20
+ "types": "./index.d.ts",
21
+ "default": "./fesm2022/irisa-minio.mjs"
22
+ }
23
+ }
24
+ }