mirror of
https://github.com/Dadechin/XRoomDashboardFront.git
synced 2025-07-02 00:04:35 +00:00
fix files page
This commit is contained in:
parent
0b8b868a08
commit
f851bd5794
634
xroom-dashboard/package-lock.json
generated
634
xroom-dashboard/package-lock.json
generated
|
@ -12,15 +12,18 @@
|
|||
"@heroicons/vue": "^2.2.0",
|
||||
"@videojs-player/vue": "^1.0.0",
|
||||
"@videojs/themes": "^1.0.1",
|
||||
"aframe": "^1.7.1",
|
||||
"axios": "^1.8.4",
|
||||
"core-js": "^3.8.3",
|
||||
"date-fns": "^4.1.0",
|
||||
"moment-jalaali": "^0.10.4",
|
||||
"plyr": "^3.7.8",
|
||||
"swiper": "^11.2.8",
|
||||
"video.js": "^7.21.7",
|
||||
"vue": "^3.2.13",
|
||||
"vue-pdf-embed": "^2.1.2",
|
||||
"vue-persian-datetime-picker": "^2.10.4",
|
||||
"vue-plyr": "^7.0.0",
|
||||
"vue-router": "^4.5.0",
|
||||
"vue-video-player": "^6.0.0",
|
||||
"vue3-persian-datetime-picker": "^1.2.2",
|
||||
|
@ -3732,6 +3735,15 @@
|
|||
"dev": true,
|
||||
"license": "BSD-3-Clause"
|
||||
},
|
||||
"node_modules/@sindresorhus/is": {
|
||||
"version": "0.14.0",
|
||||
"resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz",
|
||||
"integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/@soda/friendly-errors-webpack-plugin": {
|
||||
"version": "1.8.1",
|
||||
"resolved": "https://registry.npmmirror.com/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.8.1.tgz",
|
||||
|
@ -3758,6 +3770,18 @@
|
|||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@szmarczak/http-timer": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz",
|
||||
"integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"defer-to-connect": "^1.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/@trysound/sax": {
|
||||
"version": "0.2.0",
|
||||
"resolved": "https://registry.npmmirror.com/@trysound/sax/-/sax-0.2.0.tgz",
|
||||
|
@ -5129,6 +5153,56 @@
|
|||
"pkcs7": "^1.0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/aframe": {
|
||||
"version": "1.7.1",
|
||||
"resolved": "https://registry.npmjs.org/aframe/-/aframe-1.7.1.tgz",
|
||||
"integrity": "sha512-dcc7PWI5z8pyJ0s2W0mUd8d83339frgMXhUvWr1yxkdgg6zSExkuQwsSJjiNn7XWKMUUqKYDvV/WzQQRA+OBXA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"buffer": "^6.0.3",
|
||||
"debug": "^4.3.4",
|
||||
"deep-assign": "^2.0.0",
|
||||
"load-bmfont": "^1.2.3",
|
||||
"super-animejs": "^3.1.0",
|
||||
"three": "npm:super-three@0.173.5",
|
||||
"three-bmfont-text": "github:dmarcos/three-bmfont-text#eed4878795be9b3e38cf6aec6b903f56acd1f695"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 4.6.0",
|
||||
"npm": ">= 2.15.9"
|
||||
}
|
||||
},
|
||||
"node_modules/aframe/node_modules/buffer": {
|
||||
"version": "6.0.3",
|
||||
"resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
|
||||
"integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/feross"
|
||||
},
|
||||
{
|
||||
"type": "patreon",
|
||||
"url": "https://www.patreon.com/feross"
|
||||
},
|
||||
{
|
||||
"type": "consulting",
|
||||
"url": "https://feross.org/support"
|
||||
}
|
||||
],
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"base64-js": "^1.3.1",
|
||||
"ieee754": "^1.2.1"
|
||||
}
|
||||
},
|
||||
"node_modules/aframe/node_modules/three": {
|
||||
"name": "super-three",
|
||||
"version": "0.173.5",
|
||||
"resolved": "https://registry.npmjs.org/super-three/-/super-three-0.173.5.tgz",
|
||||
"integrity": "sha512-ecjojbhUg/5QrixwqF4s6gvtJap9XQz7TcnFUX/J8Yosgb2eE2ZUqsyqr/JczFG//6hwIaZPeAa9M5DNaM1dmQ==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/ajv": {
|
||||
"version": "6.12.6",
|
||||
"resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz",
|
||||
|
@ -5198,6 +5272,12 @@
|
|||
"ajv": "^6.9.1"
|
||||
}
|
||||
},
|
||||
"node_modules/an-array": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/an-array/-/an-array-1.0.0.tgz",
|
||||
"integrity": "sha512-M175GYI7RmsYu24Ok383yZQa3eveDfNnmhTe3OQ3bm70bEovz2gWenH+ST/n32M8lrwLWk74hcPds5CDRPe2wg==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/ansi-colors": {
|
||||
"version": "4.1.3",
|
||||
"resolved": "https://registry.npmmirror.com/ansi-colors/-/ansi-colors-4.1.3.tgz",
|
||||
|
@ -5316,6 +5396,15 @@
|
|||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/array-shuffle": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/array-shuffle/-/array-shuffle-1.0.1.tgz",
|
||||
"integrity": "sha512-PBqgo1Y2XWSksBzq3GFPEb798ZrW2snAcmr4drbVeF/6MT/5aBlkGJEvu5A/CzXHf4EjbHOj/ZowatjlIiVidA==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/array-union": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz",
|
||||
|
@ -5326,6 +5415,12 @@
|
|||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/as-number": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/as-number/-/as-number-1.0.0.tgz",
|
||||
"integrity": "sha512-HkI/zLo2AbSRO4fqVkmyf3hms0bJDs3iboHqTrNuwTiCRvdYXM7HFhfhB6Dk51anV2LM/IMB83mtK9mHw4FlAg==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/astral-regex": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/astral-regex/-/astral-regex-2.0.0.tgz",
|
||||
|
@ -5505,7 +5600,6 @@
|
|||
"version": "1.5.1",
|
||||
"resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz",
|
||||
"integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
|
||||
"dev": true,
|
||||
"funding": [
|
||||
{
|
||||
"type": "github",
|
||||
|
@ -5711,6 +5805,15 @@
|
|||
"ieee754": "^1.1.13"
|
||||
}
|
||||
},
|
||||
"node_modules/buffer-equal": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz",
|
||||
"integrity": "sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=0.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/buffer-from": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz",
|
||||
|
@ -5728,6 +5831,72 @@
|
|||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/cacheable-request": {
|
||||
"version": "6.1.0",
|
||||
"resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz",
|
||||
"integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"clone-response": "^1.0.2",
|
||||
"get-stream": "^5.1.0",
|
||||
"http-cache-semantics": "^4.0.0",
|
||||
"keyv": "^3.0.0",
|
||||
"lowercase-keys": "^2.0.0",
|
||||
"normalize-url": "^4.1.0",
|
||||
"responselike": "^1.0.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/cacheable-request/node_modules/get-stream": {
|
||||
"version": "5.2.0",
|
||||
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
|
||||
"integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"pump": "^3.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/cacheable-request/node_modules/json-buffer": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz",
|
||||
"integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/cacheable-request/node_modules/keyv": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz",
|
||||
"integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"json-buffer": "3.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/cacheable-request/node_modules/lowercase-keys": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
|
||||
"integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/cacheable-request/node_modules/normalize-url": {
|
||||
"version": "4.5.1",
|
||||
"resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz",
|
||||
"integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/call-bind": {
|
||||
"version": "1.0.8",
|
||||
"resolved": "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.8.tgz",
|
||||
|
@ -5852,6 +6021,15 @@
|
|||
"node": ">=4"
|
||||
}
|
||||
},
|
||||
"node_modules/centra": {
|
||||
"version": "2.7.0",
|
||||
"resolved": "https://registry.npmjs.org/centra/-/centra-2.7.0.tgz",
|
||||
"integrity": "sha512-PbFMgMSrmgx6uxCdm57RUos9Tc3fclMvhLSATYN39XsDV29B89zZ3KA89jmY0vwSGazyU+uerqwa6t+KaodPcg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"follow-redirects": "^1.15.6"
|
||||
}
|
||||
},
|
||||
"node_modules/chalk": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/chalk/-/chalk-3.0.0.tgz",
|
||||
|
@ -6051,6 +6229,18 @@
|
|||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/clone-response": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz",
|
||||
"integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"mimic-response": "^1.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/color-convert": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
|
||||
|
@ -6848,6 +7038,12 @@
|
|||
"integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/custom-event-polyfill": {
|
||||
"version": "1.0.7",
|
||||
"resolved": "https://registry.npmjs.org/custom-event-polyfill/-/custom-event-polyfill-1.0.7.tgz",
|
||||
"integrity": "sha512-TDDkd5DkaZxZFM8p+1I3yAlvM3rSr1wbrOliG4yJiwinMZN8z/iGL7BTlDkrJcYTmgUSb4ywVCc3ZaUtOtC76w==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/date-fns": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz",
|
||||
|
@ -6869,7 +7065,6 @@
|
|||
"version": "4.4.0",
|
||||
"resolved": "https://registry.npmmirror.com/debug/-/debug-4.4.0.tgz",
|
||||
"integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"ms": "^2.1.3"
|
||||
|
@ -6883,6 +7078,30 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"node_modules/decompress-response": {
|
||||
"version": "3.3.0",
|
||||
"resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
|
||||
"integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"mimic-response": "^1.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=4"
|
||||
}
|
||||
},
|
||||
"node_modules/deep-assign": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/deep-assign/-/deep-assign-2.0.0.tgz",
|
||||
"integrity": "sha512-2QhG3Kxulu4XIF3WL5C5x0sc/S17JLgm1SfvDfIRsR/5m7ZGmcejII7fZ2RyWhN0UWIJm0TNM/eKow6LAn3evQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"is-obj": "^1.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/deep-is": {
|
||||
"version": "0.1.4",
|
||||
"resolved": "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz",
|
||||
|
@ -7053,6 +7272,12 @@
|
|||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/defer-to-connect": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz",
|
||||
"integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/define-data-property": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmmirror.com/define-data-property/-/define-data-property-1.1.4.tgz",
|
||||
|
@ -7301,6 +7526,15 @@
|
|||
"dev": true,
|
||||
"license": "BSD-2-Clause"
|
||||
},
|
||||
"node_modules/dtype": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/dtype/-/dtype-2.0.0.tgz",
|
||||
"integrity": "sha512-s2YVcLKdFGS0hpFqJaTwscsyt0E8nNFdmo73Ocd81xNPj4URI4rj6D60A+vFMIw7BXWlb4yRkEwfBqcZzPGiZg==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">= 0.8.0"
|
||||
}
|
||||
},
|
||||
"node_modules/dunder-proto": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmmirror.com/dunder-proto/-/dunder-proto-1.0.1.tgz",
|
||||
|
@ -7322,6 +7556,12 @@
|
|||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/duplexer3": {
|
||||
"version": "0.1.5",
|
||||
"resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz",
|
||||
"integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==",
|
||||
"license": "BSD-3-Clause"
|
||||
},
|
||||
"node_modules/easy-stack": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmmirror.com/easy-stack/-/easy-stack-1.0.1.tgz",
|
||||
|
@ -7377,7 +7617,6 @@
|
|||
"version": "1.4.4",
|
||||
"resolved": "https://registry.npmmirror.com/end-of-stream/-/end-of-stream-1.4.4.tgz",
|
||||
"integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"once": "^1.4.0"
|
||||
|
@ -8640,7 +8879,6 @@
|
|||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-4.1.0.tgz",
|
||||
"integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"pump": "^3.0.0"
|
||||
|
@ -8743,6 +8981,28 @@
|
|||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/got": {
|
||||
"version": "9.6.0",
|
||||
"resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz",
|
||||
"integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@sindresorhus/is": "^0.14.0",
|
||||
"@szmarczak/http-timer": "^1.1.2",
|
||||
"cacheable-request": "^6.0.0",
|
||||
"decompress-response": "^3.3.0",
|
||||
"duplexer3": "^0.1.4",
|
||||
"get-stream": "^4.1.0",
|
||||
"lowercase-keys": "^1.0.1",
|
||||
"mimic-response": "^1.0.1",
|
||||
"p-cancelable": "^1.0.0",
|
||||
"to-readable-stream": "^1.0.0",
|
||||
"url-parse-lax": "^3.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8.6"
|
||||
}
|
||||
},
|
||||
"node_modules/graceful-fs": {
|
||||
"version": "4.2.11",
|
||||
"resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz",
|
||||
|
@ -9034,6 +9294,12 @@
|
|||
"url": "https://github.com/fb55/entities?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/http-cache-semantics": {
|
||||
"version": "4.2.0",
|
||||
"resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz",
|
||||
"integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==",
|
||||
"license": "BSD-2-Clause"
|
||||
},
|
||||
"node_modules/http-deceiver": {
|
||||
"version": "1.2.7",
|
||||
"resolved": "https://registry.npmmirror.com/http-deceiver/-/http-deceiver-1.2.7.tgz",
|
||||
|
@ -9145,7 +9411,6 @@
|
|||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz",
|
||||
"integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
|
||||
"dev": true,
|
||||
"funding": [
|
||||
{
|
||||
"type": "github",
|
||||
|
@ -9264,6 +9529,12 @@
|
|||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/is-buffer": {
|
||||
"version": "1.1.6",
|
||||
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
|
||||
"integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/is-ci": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmmirror.com/is-ci/-/is-ci-1.2.1.tgz",
|
||||
|
@ -9378,6 +9649,15 @@
|
|||
"node": ">=0.12.0"
|
||||
}
|
||||
},
|
||||
"node_modules/is-obj": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
|
||||
"integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/is-plain-obj": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz",
|
||||
|
@ -9700,6 +9980,17 @@
|
|||
"launch-editor": "^2.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/layout-bmfont-text": {
|
||||
"version": "1.3.4",
|
||||
"resolved": "https://registry.npmjs.org/layout-bmfont-text/-/layout-bmfont-text-1.3.4.tgz",
|
||||
"integrity": "sha512-mceomHZ8W7pSKQhTdLvOe1Im4n37u8xa5Gr0J3KPCHRMO/9o7+goWIOzZcUUd+Xgzy3+22bvoIQ0OaN3LRtgaw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"as-number": "^1.0.0",
|
||||
"word-wrapper": "^1.0.7",
|
||||
"xtend": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/levn": {
|
||||
"version": "0.4.1",
|
||||
"resolved": "https://registry.npmmirror.com/levn/-/levn-0.4.1.tgz",
|
||||
|
@ -9771,6 +10062,22 @@
|
|||
"@types/trusted-types": "^2.0.2"
|
||||
}
|
||||
},
|
||||
"node_modules/load-bmfont": {
|
||||
"version": "1.4.2",
|
||||
"resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.2.tgz",
|
||||
"integrity": "sha512-qElWkmjW9Oq1F9EI5Gt7aD9zcdHb9spJCW1L/dmPf7KzCCEJxq8nhHz5eCgI9aMf7vrG/wyaCqdsI+Iy9ZTlog==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"buffer-equal": "0.0.1",
|
||||
"mime": "^1.3.4",
|
||||
"parse-bmfont-ascii": "^1.0.3",
|
||||
"parse-bmfont-binary": "^1.0.5",
|
||||
"parse-bmfont-xml": "^1.1.4",
|
||||
"phin": "^3.7.1",
|
||||
"xhr": "^2.0.1",
|
||||
"xtend": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/loader-runner": {
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmmirror.com/loader-runner/-/loader-runner-4.3.0.tgz",
|
||||
|
@ -9809,6 +10116,12 @@
|
|||
"json5": "lib/cli.js"
|
||||
}
|
||||
},
|
||||
"node_modules/loadjs": {
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/loadjs/-/loadjs-4.3.0.tgz",
|
||||
"integrity": "sha512-vNX4ZZLJBeDEOBvdr2v/F+0aN5oMuPu7JTqrMwp+DtgK+AryOlpy6Xtm2/HpNr+azEa828oQjOtWsB6iDtSfSQ==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/locate-path": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz",
|
||||
|
@ -10055,6 +10368,15 @@
|
|||
"tslib": "^2.0.3"
|
||||
}
|
||||
},
|
||||
"node_modules/lowercase-keys": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
|
||||
"integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/lru-cache": {
|
||||
"version": "5.1.1",
|
||||
"resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz",
|
||||
|
@ -10101,6 +10423,24 @@
|
|||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/map-limit": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/map-limit/-/map-limit-0.0.1.tgz",
|
||||
"integrity": "sha512-pJpcfLPnIF/Sk3taPW21G/RQsEEirGaFpCW3oXRwH9dnFHPHNGjNyvh++rdmC2fNqEaTw2MhYJraoJWAHx8kEg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"once": "~1.3.0"
|
||||
}
|
||||
},
|
||||
"node_modules/map-limit/node_modules/once": {
|
||||
"version": "1.3.3",
|
||||
"resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz",
|
||||
"integrity": "sha512-6vaNInhu+CHxtONf3zw3vq4SP2DOQhjBvIa3rNcG0+P7eKWlYH6Peu7rHizSloRU2EwMz6GraLieis9Ac9+p1w==",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"wrappy": "1"
|
||||
}
|
||||
},
|
||||
"node_modules/math-intrinsics": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmmirror.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
|
||||
|
@ -10205,7 +10545,6 @@
|
|||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz",
|
||||
"integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"bin": {
|
||||
"mime": "cli.js"
|
||||
|
@ -10245,6 +10584,15 @@
|
|||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/mimic-response": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
|
||||
"integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=4"
|
||||
}
|
||||
},
|
||||
"node_modules/min-document": {
|
||||
"version": "2.19.0",
|
||||
"resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz",
|
||||
|
@ -10354,7 +10702,6 @@
|
|||
"version": "1.2.8",
|
||||
"resolved": "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz",
|
||||
"integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
|
@ -10448,7 +10795,6 @@
|
|||
"version": "2.1.3",
|
||||
"resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz",
|
||||
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/multicast-dns": {
|
||||
|
@ -10536,6 +10882,27 @@
|
|||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/new-array": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/new-array/-/new-array-1.0.0.tgz",
|
||||
"integrity": "sha512-K5AyFYbuHZ4e/ti52y7k18q8UHsS78FlRd85w2Fmsd6AkuLipDihPflKC0p3PN5i8II7+uHxo+CtkLiJDfmS5A==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/nice-color-palettes": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/nice-color-palettes/-/nice-color-palettes-3.0.0.tgz",
|
||||
"integrity": "sha512-lL4AjabAAFi313tjrtmgm/bxCRzp4l3vCshojfV/ij3IPdtnRqv6Chcw+SqJUhbe7g3o3BecaqCJYUNLswGBhQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"got": "^9.2.2",
|
||||
"map-limit": "0.0.1",
|
||||
"minimist": "^1.2.0",
|
||||
"new-array": "^1.0.0"
|
||||
},
|
||||
"bin": {
|
||||
"nice-color-palettes": "bin/index.js"
|
||||
}
|
||||
},
|
||||
"node_modules/nice-try": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmmirror.com/nice-try/-/nice-try-1.0.5.tgz",
|
||||
|
@ -10878,6 +11245,15 @@
|
|||
"url": "https://github.com/chalk/chalk?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/p-cancelable": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz",
|
||||
"integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/p-finally": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/p-finally/-/p-finally-1.0.0.tgz",
|
||||
|
@ -10965,6 +11341,34 @@
|
|||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/parse-bmfont-ascii": {
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz",
|
||||
"integrity": "sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/parse-bmfont-binary": {
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz",
|
||||
"integrity": "sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/parse-bmfont-xml": {
|
||||
"version": "1.1.6",
|
||||
"resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.6.tgz",
|
||||
"integrity": "sha512-0cEliVMZEhrFDwMh4SxIyVJpqYoOWDJ9P895tFuS+XuNzI5UBmBk5U5O4KuJdTnZpSBI4LFA2+ZiJaiwfSwlMA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"xml-parse-from-string": "^1.0.0",
|
||||
"xml2js": "^0.5.0"
|
||||
}
|
||||
},
|
||||
"node_modules/parse-headers": {
|
||||
"version": "2.0.6",
|
||||
"resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.6.tgz",
|
||||
"integrity": "sha512-Tz11t3uKztEW5FEVZnj1ox8GKblWn+PvHY9TmJV5Mll2uHEwRdR/5Li1OlXoECjLYkApdhWy44ocONwXLiKO5A==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/parse-json": {
|
||||
"version": "5.2.0",
|
||||
"resolved": "https://registry.npmmirror.com/parse-json/-/parse-json-5.2.0.tgz",
|
||||
|
@ -11094,6 +11498,18 @@
|
|||
"@napi-rs/canvas": "^0.1.65"
|
||||
}
|
||||
},
|
||||
"node_modules/phin": {
|
||||
"version": "3.7.1",
|
||||
"resolved": "https://registry.npmjs.org/phin/-/phin-3.7.1.tgz",
|
||||
"integrity": "sha512-GEazpTWwTZaEQ9RhL7Nyz0WwqilbqgLahDM3D0hxWwmVDI52nXEybHqiN6/elwpkJBhcuj+WbBu+QfT0uhPGfQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"centra": "^2.7.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 8"
|
||||
}
|
||||
},
|
||||
"node_modules/picocolors": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz",
|
||||
|
@ -11138,6 +11554,19 @@
|
|||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/plyr": {
|
||||
"version": "3.7.8",
|
||||
"resolved": "https://registry.npmjs.org/plyr/-/plyr-3.7.8.tgz",
|
||||
"integrity": "sha512-yG/EHDobwbB/uP+4Bm6eUpJ93f8xxHjjk2dYcD1Oqpe1EcuQl5tzzw9Oq+uVAzd2lkM11qZfydSiyIpiB8pgdA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"core-js": "^3.26.1",
|
||||
"custom-event-polyfill": "^1.0.7",
|
||||
"loadjs": "^4.2.0",
|
||||
"rangetouch": "^2.0.1",
|
||||
"url-polyfill": "^1.1.12"
|
||||
}
|
||||
},
|
||||
"node_modules/portfinder": {
|
||||
"version": "1.0.35",
|
||||
"resolved": "https://registry.npmmirror.com/portfinder/-/portfinder-1.0.35.tgz",
|
||||
|
@ -12759,11 +13188,19 @@
|
|||
"node": ">= 0.8.0"
|
||||
}
|
||||
},
|
||||
"node_modules/prepend-http": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz",
|
||||
"integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=4"
|
||||
}
|
||||
},
|
||||
"node_modules/prettier": {
|
||||
"version": "2.8.8",
|
||||
"resolved": "https://registry.npmmirror.com/prettier/-/prettier-2.8.8.tgz",
|
||||
"integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"bin": {
|
||||
|
@ -12950,7 +13387,6 @@
|
|||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmmirror.com/pump/-/pump-3.0.2.tgz",
|
||||
"integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"end-of-stream": "^1.1.0",
|
||||
|
@ -12983,6 +13419,17 @@
|
|||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/quad-indices": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/quad-indices/-/quad-indices-2.0.1.tgz",
|
||||
"integrity": "sha512-6jtmCsEbGAh5npThXrBaubbTjPcF0rMbn57XCJVI7LkW8PUT56V+uIrRCCWCn85PSgJC9v8Pm5tnJDwmOBewvA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"an-array": "^1.0.0",
|
||||
"dtype": "^2.0.0",
|
||||
"is-buffer": "^1.0.2"
|
||||
}
|
||||
},
|
||||
"node_modules/queue-microtask": {
|
||||
"version": "1.2.3",
|
||||
"resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz",
|
||||
|
@ -13024,6 +13471,12 @@
|
|||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/rangetouch": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/rangetouch/-/rangetouch-2.0.1.tgz",
|
||||
"integrity": "sha512-sln+pNSc8NGaHoLzwNBssFSf/rSYkqeBXzX1AtJlkJiUaVSJSbRAWJk+4omsXkN+EJalzkZhWQ3th1m0FpR5xA==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/raw-body": {
|
||||
"version": "2.5.2",
|
||||
"resolved": "https://registry.npmmirror.com/raw-body/-/raw-body-2.5.2.tgz",
|
||||
|
@ -13293,6 +13746,15 @@
|
|||
"node": ">=4"
|
||||
}
|
||||
},
|
||||
"node_modules/responselike": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz",
|
||||
"integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"lowercase-keys": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/restore-cursor": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-3.1.0.tgz",
|
||||
|
@ -13504,6 +13966,12 @@
|
|||
"url": "https://paulmillr.com/funding/"
|
||||
}
|
||||
},
|
||||
"node_modules/sax": {
|
||||
"version": "1.4.1",
|
||||
"resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz",
|
||||
"integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==",
|
||||
"license": "ISC"
|
||||
},
|
||||
"node_modules/schema-utils": {
|
||||
"version": "2.7.1",
|
||||
"resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-2.7.1.tgz",
|
||||
|
@ -14169,6 +14637,12 @@
|
|||
"postcss": "^8.2.15"
|
||||
}
|
||||
},
|
||||
"node_modules/super-animejs": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/super-animejs/-/super-animejs-3.1.0.tgz",
|
||||
"integrity": "sha512-6MFAFJDRuvwkovxQZPruuyHinTa4rgj4hNLOndjcYYhZLckoXtVRY9rJPuq8p6c/tgZJrFYEAYAfJ2/hhNtUCA==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/supports-color": {
|
||||
"version": "7.2.0",
|
||||
"resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
|
||||
|
@ -14523,6 +14997,18 @@
|
|||
"license": "MIT",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/three-bmfont-text": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "git+ssh://git@github.com/dmarcos/three-bmfont-text.git#eed4878795be9b3e38cf6aec6b903f56acd1f695",
|
||||
"integrity": "sha512-1tv41kf1bo31dFvQeWyiAcurNg926wslmUQztsjbpIwEIJ7WqAQUOownrbHcAQVYlIdtcP4M+tXYaHzbUEF2GA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"array-shuffle": "^1.0.1",
|
||||
"layout-bmfont-text": "^1.2.0",
|
||||
"nice-color-palettes": "^3.0.0",
|
||||
"quad-indices": "^2.0.1"
|
||||
}
|
||||
},
|
||||
"node_modules/thunky": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmmirror.com/thunky/-/thunky-1.1.0.tgz",
|
||||
|
@ -14530,6 +15016,15 @@
|
|||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/to-readable-stream": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz",
|
||||
"integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/to-regex-range": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz",
|
||||
|
@ -14726,6 +15221,24 @@
|
|||
"punycode": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/url-parse-lax": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz",
|
||||
"integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"prepend-http": "^2.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=4"
|
||||
}
|
||||
},
|
||||
"node_modules/url-polyfill": {
|
||||
"version": "1.1.13",
|
||||
"resolved": "https://registry.npmjs.org/url-polyfill/-/url-polyfill-1.1.13.tgz",
|
||||
"integrity": "sha512-tXzkojrv2SujumYthZ/WjF7jaSfNhSXlYMpE5AYdL2I3D7DCeo+mch8KtW2rUuKjDg+3VXODXHVgipt8yGY/eQ==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/url-toolkit": {
|
||||
"version": "2.2.5",
|
||||
"resolved": "https://registry.npmjs.org/url-toolkit/-/url-toolkit-2.2.5.tgz",
|
||||
|
@ -15026,6 +15539,52 @@
|
|||
"rimraf": "^3.0.2"
|
||||
}
|
||||
},
|
||||
"node_modules/vue-plyr": {
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/vue-plyr/-/vue-plyr-7.0.0.tgz",
|
||||
"integrity": "sha512-NvbO/ZzV1IxlBQQbQlon5Sk8hKuGAj3k4k0XVdi7gM4oSqu8mZMhJ3WM3FfAtNfV790jbLnb8P3dHYqaBqIv6g==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"plyr": "github:sampotts/plyr#develop",
|
||||
"vue": "^2.6.12"
|
||||
}
|
||||
},
|
||||
"node_modules/vue-plyr/node_modules/@vue/compiler-sfc": {
|
||||
"version": "2.7.16",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.16.tgz",
|
||||
"integrity": "sha512-KWhJ9k5nXuNtygPU7+t1rX6baZeqOYLEforUPjgNDBnLicfHCoi48H87Q8XyLZOrNNsmhuwKqtpDQWjEFe6Ekg==",
|
||||
"dependencies": {
|
||||
"@babel/parser": "^7.23.5",
|
||||
"postcss": "^8.4.14",
|
||||
"source-map": "^0.6.1"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"prettier": "^1.18.2 || ^2.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/vue-plyr/node_modules/plyr": {
|
||||
"version": "3.7.0",
|
||||
"resolved": "git+ssh://git@github.com/sampotts/plyr.git#d434c9af16e641400aaee93188594208d88f2658",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"core-js": "^3.22.0",
|
||||
"custom-event-polyfill": "^1.0.7",
|
||||
"loadjs": "^4.2.0",
|
||||
"rangetouch": "^2.0.1",
|
||||
"url-polyfill": "^1.1.12"
|
||||
}
|
||||
},
|
||||
"node_modules/vue-plyr/node_modules/vue": {
|
||||
"version": "2.7.16",
|
||||
"resolved": "https://registry.npmjs.org/vue/-/vue-2.7.16.tgz",
|
||||
"integrity": "sha512-4gCtFXaAA3zYZdTp5s4Hl2sozuySsgz4jy1EnpBHNfpMa9dK1ZCG7viqBPCwXtmgc8nHqUsAu3G4gtmXkkY3Sw==",
|
||||
"deprecated": "Vue 2 has reached EOL and is no longer actively maintained. See https://v2.vuejs.org/eol/ for more details.",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@vue/compiler-sfc": "2.7.16",
|
||||
"csstype": "^3.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/vue-router": {
|
||||
"version": "4.5.0",
|
||||
"resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.5.0.tgz",
|
||||
|
@ -15642,6 +16201,12 @@
|
|||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/word-wrapper": {
|
||||
"version": "1.0.7",
|
||||
"resolved": "https://registry.npmjs.org/word-wrapper/-/word-wrapper-1.0.7.tgz",
|
||||
"integrity": "sha512-VOPBFCm9b6FyYKQYfn9AVn2dQvdR/YOVFV6IBRA1TBMJWKffvhEX1af6FMGrttILs2Q9ikCRhLqkbY2weW6dOQ==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/wrap-ansi": {
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
|
||||
|
@ -15688,6 +16253,55 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"node_modules/xhr": {
|
||||
"version": "2.6.0",
|
||||
"resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz",
|
||||
"integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"global": "~4.4.0",
|
||||
"is-function": "^1.0.1",
|
||||
"parse-headers": "^2.0.0",
|
||||
"xtend": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/xml-parse-from-string": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz",
|
||||
"integrity": "sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/xml2js": {
|
||||
"version": "0.5.0",
|
||||
"resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz",
|
||||
"integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"sax": ">=0.6.0",
|
||||
"xmlbuilder": "~11.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=4.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/xmlbuilder": {
|
||||
"version": "11.0.1",
|
||||
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
|
||||
"integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/xtend": {
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
|
||||
"integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/y18n": {
|
||||
"version": "5.0.8",
|
||||
"resolved": "https://registry.npmmirror.com/y18n/-/y18n-5.0.8.tgz",
|
||||
|
|
|
@ -12,15 +12,18 @@
|
|||
"@heroicons/vue": "^2.2.0",
|
||||
"@videojs-player/vue": "^1.0.0",
|
||||
"@videojs/themes": "^1.0.1",
|
||||
"aframe": "^1.7.1",
|
||||
"axios": "^1.8.4",
|
||||
"core-js": "^3.8.3",
|
||||
"date-fns": "^4.1.0",
|
||||
"moment-jalaali": "^0.10.4",
|
||||
"plyr": "^3.7.8",
|
||||
"swiper": "^11.2.8",
|
||||
"video.js": "^7.21.7",
|
||||
"vue": "^3.2.13",
|
||||
"vue-pdf-embed": "^2.1.2",
|
||||
"vue-persian-datetime-picker": "^2.10.4",
|
||||
"vue-plyr": "^7.0.0",
|
||||
"vue-router": "^4.5.0",
|
||||
"vue-video-player": "^6.0.0",
|
||||
"vue3-persian-datetime-picker": "^1.2.2",
|
||||
|
|
|
@ -45,7 +45,11 @@
|
|||
|
||||
<!-- Video Player -->
|
||||
<div v-if="previewType === 'video'" class="video-preview-container">
|
||||
<VideoPlayer :options="videoOptions" class="video-player" />
|
||||
<vue-plyr :options="plyrOptions">
|
||||
<video controls>
|
||||
<source :src="previewUrl" type="video/mp4" />
|
||||
</video>
|
||||
</vue-plyr>
|
||||
</div>
|
||||
|
||||
<!-- 3D Model Preview -->
|
||||
|
@ -66,17 +70,15 @@
|
|||
<button class="close-btn" @click="closePreviewDialog">بستن</button>
|
||||
<button class="delete-btn" @click="deleteFile" v-if="previewIndex !== null">حذف</button>
|
||||
<button class="download-btn" @click="downloadFile">دانلود</button>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import VuePdfEmbed from 'vue-pdf-embed';
|
||||
import { VideoPlayer } from '@videojs-player/vue';
|
||||
import 'video.js/dist/video-js.css';
|
||||
import '@videojs/themes/dist/sea/index.css';
|
||||
import VuePlyr from 'vue-plyr';
|
||||
import 'vue-plyr/dist/vue-plyr.css';
|
||||
import '@google/model-viewer';
|
||||
import axios from 'axios';
|
||||
|
||||
|
@ -84,7 +86,7 @@ export default {
|
|||
name: 'FilePreviewDialog',
|
||||
components: {
|
||||
VuePdfEmbed,
|
||||
VideoPlayer,
|
||||
VuePlyr,
|
||||
},
|
||||
props: {
|
||||
isOpen: {
|
||||
|
@ -107,12 +109,12 @@ export default {
|
|||
type: String,
|
||||
required: true,
|
||||
},
|
||||
videoOptions: {
|
||||
plyrOptions: {
|
||||
type: Object,
|
||||
default: () => ({
|
||||
controls: ['play-large', 'play', 'progress', 'current-time', 'mute', 'volume', 'settings', 'fullscreen'],
|
||||
settings: ['quality', 'speed', 'loop'],
|
||||
autoplay: false,
|
||||
controls: true,
|
||||
sources: [{ type: 'video/mp4', src: '' }],
|
||||
}),
|
||||
},
|
||||
},
|
||||
|
@ -176,7 +178,20 @@ export default {
|
|||
};
|
||||
</script>
|
||||
|
||||
|
||||
<style scoped>
|
||||
|
||||
:deep(.plyr) {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
--plyr-color-main: #3a57e8; /* رنگ اصلی کنترلها */
|
||||
--plyr-video-background: #000; /* پسزمینه ویدیو */
|
||||
}
|
||||
|
||||
.video-preview-container {
|
||||
border-radius: 12px;
|
||||
}
|
||||
|
||||
.modal-overlay {
|
||||
position: fixed;
|
||||
inset: 0;
|
||||
|
@ -278,10 +293,13 @@ export default {
|
|||
}
|
||||
|
||||
.pdf-preview,
|
||||
.video-player,
|
||||
.model-preview {
|
||||
width: 580px;
|
||||
height: 300px;
|
||||
}
|
||||
|
||||
.video-player {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.modal-actions {
|
||||
|
|
|
@ -36,19 +36,6 @@
|
|||
</div>
|
||||
<div class="form-content">
|
||||
<form @submit.prevent="uploadFile" autocomplete="off">
|
||||
<div class="file-type-selector" style="text-align: start; margin: 1rem 0 3rem 0; display: flex; align-items: center; justify-content: space-between;">
|
||||
<label for="fileType" style="margin-left: 10px;">نوع فایل :</label>
|
||||
<select
|
||||
id="fileType"
|
||||
:value="currentUploadType"
|
||||
@change="updateFileAccept($event)"
|
||||
required
|
||||
>
|
||||
<option v-for="type in fileTypes" :key="type.value" :value="type.value">
|
||||
{{ type.label }}
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="input-group">
|
||||
<label for="fileName">نام فایل</label>
|
||||
<input
|
||||
|
@ -58,24 +45,23 @@
|
|||
placeholder="نام فایل را وارد کنید"
|
||||
/>
|
||||
</div>
|
||||
<div class="input-group">
|
||||
<p>انتخاب فایل</p>
|
||||
<div style="width: 67%;">
|
||||
<label for="fileUpload" class="file-input-label">
|
||||
<span v-if="selectedFile" class="file-name">{{ selectedFile.name }}</span>
|
||||
<span v-else>برای انتخاب فایل کلیک کنید</span>
|
||||
</label>
|
||||
<input
|
||||
id="fileUpload"
|
||||
ref="fileInput"
|
||||
type="file"
|
||||
@change="handleFileChange"
|
||||
:accept="fileAccept"
|
||||
required
|
||||
class="file-input"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="input-group">
|
||||
<p>انتخاب فایل</p>
|
||||
<div style="width: 67%;">
|
||||
<label for="fileUpload" class="file-input-label">
|
||||
<span v-if="selectedFile" class="file-name">{{ selectedFile.name }}</span>
|
||||
<span v-else>برای انتخاب فایل کلیک کنید</span>
|
||||
</label>
|
||||
<input
|
||||
id="fileUpload"
|
||||
ref="fileInput"
|
||||
type="file"
|
||||
@change="handleFileChange"
|
||||
required
|
||||
class="file-input"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="modal-actions">
|
||||
|
@ -113,65 +99,32 @@ export default {
|
|||
selectedFile: null,
|
||||
uploading: false,
|
||||
currentUploadType: this.initialUploadType,
|
||||
dialogTitle: 'آپلود تصویر جدید',
|
||||
fileAccept: 'image/*',
|
||||
fileTypes: [
|
||||
{ value: 'image', label: 'تصویر' },
|
||||
{ value: 'pdf', label: 'PDF' },
|
||||
{ value: 'video', label: 'ویدیو' },
|
||||
{ value: 'glb', label: 'مدل 3D' },
|
||||
],
|
||||
dialogTitle: 'آپلود فایل جدید',
|
||||
};
|
||||
},
|
||||
watch: {
|
||||
isOpen(newVal) {
|
||||
if (newVal) {
|
||||
this.resetForm();
|
||||
// غیرفعال کردن اسکرول صفحه پسزمینه
|
||||
document.body.style.overflow = 'hidden';
|
||||
} else {
|
||||
// فعال کردن مجدد اسکرول هنگام بسته شدن
|
||||
document.body.style.overflow = '';
|
||||
this.resetForm();
|
||||
}
|
||||
},
|
||||
initialUploadType(newType) {
|
||||
this.currentUploadType = newType;
|
||||
this.updateFileAccept();
|
||||
this.resetForm();
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
beforeDestroy() {
|
||||
// اطمینان از فعال شدن اسکرول هنگام حذف کامپوننت
|
||||
document.body.style.overflow = '';
|
||||
},
|
||||
updateFileAccept(event) {
|
||||
this.currentUploadType = event ? event.target.value : this.currentUploadType;
|
||||
switch (this.currentUploadType) {
|
||||
case 'image':
|
||||
this.fileAccept = 'image/*';
|
||||
this.dialogTitle = 'آپلود تصویر جدید';
|
||||
break;
|
||||
case 'pdf':
|
||||
this.fileAccept = '.pdf';
|
||||
this.dialogTitle = 'آپلود فایل PDF';
|
||||
break;
|
||||
case 'video':
|
||||
this.fileAccept = 'video/*';
|
||||
this.dialogTitle = 'آپلود ویدیو';
|
||||
break;
|
||||
case 'glb':
|
||||
this.fileAccept = '.glb';
|
||||
this.dialogTitle = 'آپلود مدل 3D';
|
||||
break;
|
||||
}
|
||||
},
|
||||
resetForm() {
|
||||
this.newFileName = '';
|
||||
this.selectedFile = null;
|
||||
this.currentUploadType = this.initialUploadType;
|
||||
this.updateFileAccept();
|
||||
if (this.$refs.fileInput) {
|
||||
this.$refs.fileInput.value = '';
|
||||
}
|
||||
|
@ -182,6 +135,25 @@ export default {
|
|||
},
|
||||
handleFileChange(event) {
|
||||
this.selectedFile = event.target.files[0];
|
||||
if (this.selectedFile) {
|
||||
const fileName = this.selectedFile.name.toLowerCase();
|
||||
if (/\.(jpg|jpeg|png|gif|webp|psd|raw|heic|heif|ico)$/i.test(fileName)) {
|
||||
this.currentUploadType = 'image';
|
||||
this.dialogTitle = 'آپلود تصویر جدید';
|
||||
} else if (/\.(pdf|fdf)$/i.test(fileName)) {
|
||||
this.currentUploadType = 'pdf';
|
||||
this.dialogTitle = 'آپلود فایل PDF';
|
||||
} else if (/\.(mp4|mov|mkv|wmv|m4v|mpg|webm|ogg)$/i.test(fileName)) {
|
||||
this.currentUploadType = 'video';
|
||||
this.dialogTitle = 'آپلود ویدیو';
|
||||
} else if (/\.(glb|obj|fbx|stl|ply|gltf)|$/i.test(fileName)) {
|
||||
this.currentUploadType = 'glb';
|
||||
this.dialogTitle = 'آپلود مدل 3D';
|
||||
} else {
|
||||
this.currentUploadType = 'other';
|
||||
this.dialogTitle = 'آپلود فایل سایر';
|
||||
}
|
||||
}
|
||||
},
|
||||
async uploadFile() {
|
||||
if (!this.selectedFile) {
|
||||
|
@ -192,11 +164,21 @@ export default {
|
|||
this.uploading = true;
|
||||
const formData = new FormData();
|
||||
formData.append('name', this.newFileName || this.selectedFile.name);
|
||||
formData.append(this.currentUploadType, this.selectedFile);
|
||||
formData.append(this.currentUploadType === 'other' ? 'file' : this.currentUploadType, this.selectedFile);
|
||||
|
||||
try {
|
||||
const token = localStorage.getItem('token');
|
||||
const uploadUrl = `${this.baseUrl}/upload${this.currentUploadType.charAt(0).toUpperCase() + this.currentUploadType.slice(1)}/`;
|
||||
let uploadUrl = `${this.baseUrl}/upload${this.currentUploadType.charAt(0).toUpperCase() + this.currentUploadType.slice(1)}/`;
|
||||
|
||||
if (this.currentUploadType === 'other') {
|
||||
|
||||
console.log('فایل به دسته "سایر" ارسال میشود:', this.selectedFile.name);
|
||||
alert('فایل به دسته "سایر" ارسال شد (تستی).');
|
||||
this.resetForm();
|
||||
this.$emit('upload-success');
|
||||
this.$emit('close');
|
||||
return;
|
||||
}
|
||||
|
||||
await axios.post(uploadUrl, formData, {
|
||||
headers: {
|
||||
|
@ -210,7 +192,6 @@ export default {
|
|||
this.$emit('close');
|
||||
alert('فایل با موفقیت آپلود شد');
|
||||
|
||||
// بررسی مسیر فعلی و هدایت به /dashboard/files در صورت نیاز
|
||||
if (this.$route.path !== '/dashboard/files') {
|
||||
this.$router.push('/dashboard/files');
|
||||
}
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
<template>
|
||||
<div class="file-manager">
|
||||
<div>
|
||||
<!-- Top Header -->
|
||||
<!-- Description -->
|
||||
<div class="section-description">
|
||||
<h2 class="section-title">مدیریت فایلها</h2>
|
||||
<div class="section-title">مدیریت فایلها</div>
|
||||
<p>
|
||||
فایلهای خود مانند مدلهای سهبعدی، تصاویر و اسناد PDF را برای استفاده در VR آماده کنید. یا یادداشتها و تصاویر ایجاد شده در برنامه XRoom را دانلود کنید.
|
||||
</p>
|
||||
|
@ -10,223 +11,129 @@
|
|||
|
||||
<!-- File Manager Layout -->
|
||||
<div class="file-manager-layout">
|
||||
<aside class="file-sidebar">
|
||||
<div class="file-sidebar">
|
||||
<div class="filter-buttons">
|
||||
<button
|
||||
class="new-file"
|
||||
@click="openDialog('image')"
|
||||
role="button"
|
||||
aria-label="آپلود فایل جدید"
|
||||
>
|
||||
<button class="new-file" @click="openDialog('image')">
|
||||
فایل جدید
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="22"
|
||||
height="22"
|
||||
viewBox="0 0 16 16"
|
||||
fill="none"
|
||||
>
|
||||
<g clip-path="url(#clip0_312_7133)">
|
||||
<path
|
||||
d="M2.66602 11.3333V12.6666C2.66602 13.0202 2.80649 13.3593 3.05654 13.6094C3.30659 13.8594 3.64573 13.9999 3.99935 13.9999H11.9993C12.353 13.9999 12.6921 13.8594 12.9422 13.6094C13.1922 13.3593 13.3327 13.0202 13.3327 12.6666V11.3333"
|
||||
stroke="white"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
/>
|
||||
<path
|
||||
d="M4.66602 6.00008L7.99935 2.66675L11.3327 6.00008"
|
||||
stroke="white"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
/>
|
||||
<path
|
||||
d="M8 2.66675V10.6667"
|
||||
stroke="white"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_312_7133">
|
||||
<rect width="16" height="16" fill="white" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
<span>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 16 16" fill="none">
|
||||
<g clip-path="url(#clip0_312_7133)">
|
||||
<path d="M2.66602 11.3333V12.6666C2.66602 13.0202 2.80649 13.3593 3.05654 13.6094C3.30659 13.8594 3.64573 13.9999 3.99935 13.9999H11.9993C12.353 13.9999 12.6921 13.8594 12.9422 13.6094C13.1922 13.3593 13.3327 13.0202 13.3327 12.6666V11.3333" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<path d="M4.66602 6.00008L7.99935 2.66675L11.3327 6.00008" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<path d="M8 2.66675V10.6667" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_312_7133">
|
||||
<rect width="16" height="16" fill="white"></rect>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
</span>
|
||||
</button>
|
||||
|
||||
<!-- Filters -->
|
||||
<button
|
||||
v-for="filter in filters"
|
||||
:key="filter.id"
|
||||
v-for="(filter, index) in filters"
|
||||
:key="'filter-' + index"
|
||||
:class="[
|
||||
'filter-btn',
|
||||
{ 'active-btn': activeFilter === filter.id },
|
||||
{ 'disable-btn': activeFilter !== filter.id },
|
||||
{ 'recent-filter-border': filter.id === 'recent-files' },
|
||||
{ 'recent-filter-border': filter.id === 'recent-files' }
|
||||
]"
|
||||
@click="setActiveFilter(filter.id)"
|
||||
role="button"
|
||||
:aria-label="`فیلتر ${filter.label}`"
|
||||
>
|
||||
<span :class="['filter-icon', { 'active-icon': activeFilter === filter.id, 'disable-icon': activeFilter !== filter.id }]">
|
||||
<component :is="filter.iconComponent" />
|
||||
<span v-html="filter.icon" :class="['filter-icon', { 'active-icon': activeFilter === filter.id, 'disable-icon': activeFilter !== filter.id }]">
|
||||
</span>
|
||||
{{ filter.label }}
|
||||
</button>
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
|
||||
<!-- File Grid -->
|
||||
<!-- Cards Grid -->
|
||||
<div class="file-grid">
|
||||
<section v-for="section in filteredFileSections" :key="section.type" class="file-section">
|
||||
<h3 class="section-title">{{ section.title }}</h3>
|
||||
<div
|
||||
v-if="filteredFiles(section.type).length > 0"
|
||||
class="file-grid-content"
|
||||
>
|
||||
<div v-for="section in filteredFileSections" :key="section.type" class="file-section">
|
||||
<div class="section-title">{{ section.title }}</div>
|
||||
<div v-if="filteredFiles(section.type).length > 0" style="display: flex; align-items: center; gap: 1.5rem 0.9rem; flex-wrap: wrap;">
|
||||
<div
|
||||
class="file-card"
|
||||
v-for="file in filteredFiles(section.type)"
|
||||
:key="file.id"
|
||||
@click="openPreviewDialog(section.type, file.id, getFullFileUrl(file.file_path))"
|
||||
role="button"
|
||||
:aria-label="`نمایش پیشنمایش فایل ${file.name}`"
|
||||
v-for="(file, index) in filteredFiles(section.type)"
|
||||
:key="`${section.type}-${index}`"
|
||||
@click="openPreviewDialog(section.type, index, getFullFileUrl(file[section.type]), file.id)"
|
||||
>
|
||||
<img
|
||||
:src="getFilePreviewImage(section.type, file)"
|
||||
:class="['file-image', { 'file-pdf': section.type === 'pdf', 'file-video': section.type === 'video', 'file-glb': section.type === 'glb' ,'file-other': section.type === 'other' }]"
|
||||
:alt="file.name"
|
||||
:class="[
|
||||
{
|
||||
'file-image': section.type === 'image',
|
||||
'file-image file-pdf': section.type === 'pdf',
|
||||
'file-image file-video': section.type === 'video',
|
||||
'file-image file-glb': section.type === 'glb',
|
||||
'file-image file-other': section.type === 'other'
|
||||
}
|
||||
]"
|
||||
/>
|
||||
<div class="file-card-info">
|
||||
<h4 class="file-title">{{ file.name }}</h4>
|
||||
<div class="file-title">{{ file.name }}</div>
|
||||
<div class="file-meta">
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="22"
|
||||
height="22"
|
||||
viewBox="0 0 20 20"
|
||||
fill="none"
|
||||
>
|
||||
<path
|
||||
d="M2.5 10C2.5 11.4834 2.93987 12.9334 3.76398 14.1668C4.58809 15.4001 5.75943 16.3614 7.12987 16.9291C8.50032 17.4968 10.0083 17.6453 11.4632 17.3559C12.918 17.0665 14.2544 16.3522 15.3033 15.3033C16.3522 14.2544 17.0665 12.918 17.3559 11.4632C17.6453 10.0083 17.4968 8.50032 16.9291 7.12987C16.3614 5.75943 15.4001 4.58809 14.1668 3.76398C12.9334 2.93987 11.4834 2.5 10 2.5C7.90329 2.50789 5.89081 3.32602 4.38333 4.78333L2.5 6.66667"
|
||||
stroke="#101010"
|
||||
stroke-width="1.25"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
/>
|
||||
<path
|
||||
d="M2.5 2.5V6.66667H6.66667"
|
||||
stroke="#101010"
|
||||
stroke-width="1.25"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
/>
|
||||
<path
|
||||
d="M10 5.83325V9.99992L13.3333 11.6666"
|
||||
stroke="#101010"
|
||||
stroke-width="1.25"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
/>
|
||||
</svg>
|
||||
<span>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 20 20" fill="none">
|
||||
<path d="M2.5 10C2.5 11.4834 2.93987 12.9334 3.76398 14.1668C4.58809 15.4001 5.75943 16.3614 7.12987 16.9291C8.50032 17.4968 10.0083 17.6453 11.4632 17.3559C12.918 17.0665 14.2544 16.3522 15.3033 15.3033C16.3522 14.2544 17.0665 12.918 17.3559 11.4632C17.6453 10.0083 17.4968 8.50032 16.9291 7.12987C16.3614 5.75943 15.4001 4.58809 14.1668 3.76398C12.9334 2.93987 11.4834 2.5 10 2.5C7.90329 2.50789 5.89081 3.32602 4.38333 4.78333L2.5 6.66667" stroke="#101010" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M2.5 2.5V6.66667H6.66667" stroke="#101010" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M10 5.83325V9.99992L13.3333 11.6666" stroke="#101010" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
</span>
|
||||
<span class="file-date">{{ formatDate(file.created_at) }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else class="no-files-message">
|
||||
فایلی وجود ندارد
|
||||
<button
|
||||
class="upload-btn"
|
||||
v-if="activeFilter !== 'recent-files' && activeFilter !== 'others'"
|
||||
@click="openDialog(section.type)"
|
||||
role="button"
|
||||
:aria-label="`آپلود فایل`"
|
||||
>
|
||||
آپلود فایل
|
||||
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="22"
|
||||
height="22"
|
||||
viewBox="0 0 16 16"
|
||||
fill="none"
|
||||
>
|
||||
<g clip-path="url(#clip0_312_7133)">
|
||||
<path
|
||||
d="M2.66602 11.3333V12.6666C2.66602 13.0202 2.80649 13.3593 3.05654 13.6094C3.30659 13.8594 3.64573 13.9999 3.99935 13.9999H11.9993C12.353 13.9999 12.6921 13.8594 12.9422 13.6094C13.1922 13.3593 13.3327 13.0202 13.3327 12.6666V11.3333"
|
||||
stroke="white"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
/>
|
||||
<path
|
||||
d="M4.66602 6.00008L7.99935 2.66675L11.3327 6.00008"
|
||||
stroke="white"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
/>
|
||||
<path
|
||||
d="M8 2.66675V10.6667"
|
||||
stroke="white"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_312_7133">
|
||||
<rect width="16" height="16" fill="white" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
||||
<button class="new-file" @click="openDialog(section.type)">
|
||||
فایلی وجود ندارد , برای آپلود فایل جدید کلیک کنید
|
||||
<span>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 16 16" fill="none">
|
||||
<g clip-path="url(#clip0_312_7133)">
|
||||
<path d="M2.66602 11.3333V12.6666C2.66602 13.0202 2.80649 13.3593 3.05654 13.6094C3.30659 13.8594 3.64573 13.9999 3.99935 13.9999H11.9993C12.353 13.9999 12.6921 13.8594 12.9422 13.6094C13.1922 13.3593 13.3327 13.0202 13.3327 12.6666V11.3333" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<path d="M4.66602 6.00008L7.99935 2.66675L11.3327 6.00008" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<path d="M8 2.66675V10.6667" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_312_7133">
|
||||
<rect width="16" height="16" fill="white"></rect>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
</span>
|
||||
</button>
|
||||
</div>
|
||||
</section>
|
||||
<div
|
||||
v-if="filteredFileSections.length === 0 || (activeFilter === 'recent-files' && !hasRecentFiles)"
|
||||
class="no-files-message"
|
||||
>
|
||||
</div>
|
||||
<div v-if="filteredFileSections.length === 0" class="no-files-message">
|
||||
فایلی وجود ندارد
|
||||
<button
|
||||
v-if="activeFilter !== 'recent-files' && getFilterType(activeFilter) !== 'other'"
|
||||
class="upload-btn"
|
||||
@click="openDialog(getFilterType(activeFilter))"
|
||||
role="button"
|
||||
aria-label="آپلود فایل"
|
||||
>
|
||||
آپلود فایل
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- New File Dialog Component -->
|
||||
<NewFileDialog
|
||||
:is-open="isNewFileDialogOpen"
|
||||
:initial-upload-type="currentUploadType"
|
||||
:base-url="baseUrl"
|
||||
@close="closeDialog"
|
||||
@upload-success="fetchUserData"
|
||||
/>
|
||||
|
||||
<!-- File Preview Dialog Component -->
|
||||
<FilePreviewDialog
|
||||
:is-open="isPreviewDialogOpen"
|
||||
:preview-url="previewUrl"
|
||||
:preview-type="currentPreviewType"
|
||||
:preview-index="currentPreviewIndex"
|
||||
:base-url="baseUrl"
|
||||
:video-options="videoOptions"
|
||||
@close="closePreviewDialog"
|
||||
@delete-success="fetchUserData"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<!-- New File Dialog Component -->
|
||||
<NewFileDialog
|
||||
:is-open="isNewFileDialogOpen"
|
||||
:initial-upload-type="currentUploadType"
|
||||
:base-url="baseUrl"
|
||||
@close="closeDialog"
|
||||
@upload-success="fetchUserData"
|
||||
/>
|
||||
|
||||
<!-- File Preview Dialog Component -->
|
||||
<FilePreviewDialog
|
||||
:is-open="isPreviewDialogOpen"
|
||||
:preview-url="previewUrl"
|
||||
:preview-type="currentPreviewType"
|
||||
:preview-index="currentPreviewIndex"
|
||||
:base-url="baseUrl"
|
||||
:video-options="videoOptions"
|
||||
@close="closePreviewDialog"
|
||||
@delete-success="fetchUserData"
|
||||
/>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
@ -235,93 +142,27 @@ import axios from 'axios';
|
|||
import NewFileDialog from '@/components/NewFileDialog.vue';
|
||||
import FilePreviewDialog from '@/components/FilePreviewDialog.vue';
|
||||
|
||||
// تعریف آیکونها بهصورت کامپوننتهای SVG
|
||||
const RecentFilesIcon = {
|
||||
template: `
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="none">
|
||||
<path d="M2.5 10C2.5 11.4834 2.93987 12.9334 3.76398 14.1668C4.58809 15.4001 5.75943 16.3614 7.12987 16.9291C8.50032 17.4968 10.0083 17.6453 11.4632 17.3559C12.918 17.0665 14.2544 16.3522 15.3033 15.3033C16.3522 14.2544 17.0665 12.918 17.3559 11.4632C17.6453 10.0083 17.4968 8.50032 16.9291 7.12987C16.3614 5.75943 15.4001 4.58809 14.1668 3.76398C12.9334 2.93987 11.4834 2.5 10 2.5C7.90329 2.50789 5.89081 3.32602 4.38333 4.78333L2.5 6.66667" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M2.5 2.5V6.66667H6.66667" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M10 5.83325V9.99992L13.3333 11.6666" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
`,
|
||||
};
|
||||
|
||||
const AllFilesIcon = {
|
||||
template: `
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="none">
|
||||
<path d="M2.5 3.33333V16.6667C2.5 17.1087 2.67559 17.5326 2.98816 17.8452C3.30072 18.1577 3.72464 18.3333 4.16667 18.3333H15.8333C16.2754 18.3333 16.6993 18.1577 17.0118 17.8452C17.3244 17.5326 17.5 16.6667V3.33333C17.5 2.8913 17.3244 2.46738 17.0118 2.15482C16.6993 1.84226 16.2754 1.66667 15.8333 1.66667H4.16667C3.72464 1.66667 3.30072 1.84226 2.98816 2.15482C2.67559 2.46738 2.5 2.8913 2.5 3.33333Z" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M12.5 2.5V6.66667C12.5 7.1087 12.6756 7.53262 12.9882 7.84518C13.3007 8.15774 13.7246 8.33333 14.1667 8.33333H17.5" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
`,
|
||||
};
|
||||
|
||||
const ImagesIcon = {
|
||||
template: `
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="none">
|
||||
<path d="M2.5 3.33333V16.6667C2.5 17.1087 2.67559 17.5326 2.98816 17.8452C3.30072 18.1577 3.72464 18.3333 4.16667 18.3333H15.8333C16.2754 18.3333 16.6993 18.1577 17.0118 17.8452C17.3244 17.5326 17.5 16.6667V3.33333C17.5 2.8913 17.3244 2.46738 17.0118 2.15482C16.6993 1.84226 16.2754 1.66667 15.8333 1.66667H4.16667C3.72464 1.66667 3.30072 1.84226 2.98816 2.15482C2.67559 2.46738 2.5 2.8913 2.5 3.33333Z" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M6.66667 8.33333C7.58714 8.33333 8.33333 7.58714 8.33333 6.66667C8.33333 5.74619 7.58714 5 6.66667 5C5.74619 5 5 5.74619 5 6.66667C5 7.58714 5.74619 8.33333 6.66667 8.33333Z" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M17.5 12.5L13.3333 8.33333L5 16.6667" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
`,
|
||||
};
|
||||
|
||||
const PDFsIcon = {
|
||||
template: `
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="none">
|
||||
<path d="M12.5 2.5H4.16667C3.72464 2.5 3.30072 2.67559 2.98816 2.98816C2.67559 3.30072 2.5 3.72464 2.5 4.16667V16.6667C2.5 17.1087 2.67559 17.5326 2.98816 17.8452C3.30072 18.1577 3.72464 18.3333 4.16667 18.3333H15.8333C16.2754 18.3333 16.6993 18.1577 17.0118 17.8452C17.3244 17.5326 17.5 17.1087 17.5 16.6667V6.66667L12.5 2.5Z" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M12.5 2.5V6.66667C12.5 7.1087 12.6756 7.53262 12.9882 7.84518C13.3007 8.15774 13.7246 8.33333 14.1667 8.33333H17.5" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
`,
|
||||
};
|
||||
|
||||
const VideosIcon = {
|
||||
template: `
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="none">
|
||||
<path d="M2.5 3.33333V16.6667C2.5 17.1087 2.67559 17.5326 2.98816 17.8452C3.30072 18.1577 3.72464 18.3333 4.16667 18.3333H15.8333C16.2754 18.3333 16.6993 18.1577 17.0118 17.8452C17.3244 17.5326 17.5 17.1087 17.5 16.6667V3.33333C17.5 2.8913 17.3244 2.46738 17.0118 2.15482C16.6993 1.84226 16.2754 1.66667 15.8333 1.66667H4.16667C3.72464 1.66667 3.30072 1.84226 2.98816 2.15482C2.67559 2.46738 2.5 2.8913 2.5 3.33333Z" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M7.5 5.83333L13.3333 10L7.5 14.1667V5.83333Z" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
`,
|
||||
};
|
||||
|
||||
const Models3DIcon = {
|
||||
template: `
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="none">
|
||||
<path d="M10 2.5C7.23858 2.5 4.58333 3.31667 2.5 4.78333V16.6667C4.58333 15.3167 7.23858 14.5 10 14.5C12.7614 14.5 15.4167 15.3167 17.5 16.6667V4.78333C15.4167 3.31667 12.7614 2.5 10 2.5Z" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M10 2.5V14.5" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
`,
|
||||
};
|
||||
|
||||
const OthersIcon = {
|
||||
template: `
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="none">
|
||||
<path d="M2.5 3.33333V16.6667C2.5 17.1087 2.67559 17.5326 2.98816 17.8452C3.30072 18.1577 3.72464 18.3333 4.16667 18.3333H15.8333C16.2754 18.3333 16.6993 18.1577 17.0118 17.8452C17.3244 17.5326 17.5 17.1087 17.5 16.6667V3.33333C17.5 2.8913 17.3244 2.46738 17.0118 2.15482C16.6993 1.84226 16.2754 1.66667 15.8333 1.66667H4.16667C3.72464 1.66667 3.30072 1.84226 2.98816 2.15482C2.67559 2.46738 2.5 2.8913 2.5 3.33333Z" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M7.5 5.83333H12.5" stroke-width="2" stroke-linecap="round"/>
|
||||
<path d="M7.5 8.33333H12.5" stroke-width="2" stroke-linecap="round"/>
|
||||
<path d="M7.5 10.8333H10" stroke-width="2" stroke-linecap="round"/>
|
||||
</svg>
|
||||
`,
|
||||
};
|
||||
|
||||
export default {
|
||||
name: 'DashboardPage',
|
||||
components: {
|
||||
NewFileDialog,
|
||||
FilePreviewDialog,
|
||||
RecentFilesIcon,
|
||||
AllFilesIcon,
|
||||
ImagesIcon,
|
||||
PDFsIcon,
|
||||
VideosIcon,
|
||||
Models3DIcon,
|
||||
OthersIcon,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
userData: {
|
||||
files: [],
|
||||
customer: {},
|
||||
user: {
|
||||
first_name: '',
|
||||
last_name: '',
|
||||
},
|
||||
images: [],
|
||||
pdfs: [],
|
||||
videos: [],
|
||||
glbs: [],
|
||||
others: [],
|
||||
},
|
||||
baseUrl: 'http://194.62.43.230:8000',
|
||||
baseUrl: 'http://194.62.43.230:8000/',
|
||||
isNewFileDialogOpen: false,
|
||||
currentUploadType: 'image',
|
||||
isPreviewDialogOpen: false,
|
||||
|
@ -335,67 +176,117 @@ export default {
|
|||
},
|
||||
activeFilter: 'all-files',
|
||||
filters: [
|
||||
{ id: 'recent-files', label: 'فایلهای اخیر', iconComponent: 'RecentFilesIcon' },
|
||||
{ id: 'all-files', label: 'همه فایلها', iconComponent: 'AllFilesIcon' },
|
||||
{ id: 'images', label: 'تصاویر', iconComponent: 'ImagesIcon' },
|
||||
{ id: 'pdfs', label: 'PDFها', iconComponent: 'PDFsIcon' },
|
||||
{ id: 'videos', label: 'ویدیوها', iconComponent: 'VideosIcon' },
|
||||
{ id: 'glbs', label: 'مدلهای 3D', iconComponent: 'Models3DIcon' },
|
||||
{ id: 'others', label: 'سایر', iconComponent: 'OthersIcon' },
|
||||
{
|
||||
id: 'recent-files',
|
||||
label: 'فایلهای اخیر',
|
||||
icon: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="none">
|
||||
<path d="M2.5 10C2.5 11.4834 2.93987 12.9334 3.76398 14.1668C4.58809 15.4001 5.75943 16.3614 7.12987 16.9291C8.50032 17.4968 10.0083 17.6453 11.4632 17.3559C12.918 17.0665 14.2544 16.3522 15.3033 15.3033C16.3522 14.2544 17.0665 12.918 17.3559 11.4632C17.6453 10.0083 17.4968 8.50032 16.9291 7.12987C16.3614 5.75943 15.4001 4.58809 14.1668 3.76398C12.9334 2.93987 11.4834 2.5 10 2.5C7.90329 2.50789 5.89081 3.32602 4.38333 4.78333L2.5 6.66667" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M2.5 2.5V6.66667H6.66667" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M10 5.83325V9.99992L13.3333 11.6666" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>`,
|
||||
},
|
||||
{
|
||||
id: 'all-files',
|
||||
label: 'همه فایلها',
|
||||
icon: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="none">
|
||||
<path d="M2.5 3.33333V16.6667C2.5 17.1087 2.67559 17.5326 2.98816 17.8452C3.30072 18.1577 3.72464 18.3333 4.16667 18.3333H15.8333C16.2754 18.3333 16.6993 18.1577 17.0118 17.8452C17.3244 17.5326 17.5 16.6667V3.33333C17.5 2.8913 17.3244 2.46738 17.0118 2.15482C16.6993 1.84226 16.2754 1.66667 15.8333 1.66667H4.16667C3.72464 1.66667 3.30072 1.84226 2.98816 2.15482C2.67559 2.46738 2.5 2.8913 2.5 3.33333Z" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M12.5 2.5V6.66667C12.5 7.1087 12.6756 7.53262 12.9882 7.84518C13.3007 8.15774 13.7246 8.33333 14.1667 8.33333H17.5" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>`,
|
||||
},
|
||||
{
|
||||
id: 'images',
|
||||
label: 'تصاویر',
|
||||
icon: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="none">
|
||||
<path d="M2.5 3.33333V16.6667C2.5 17.1087 2.67559 17.5326 2.98816 17.8452C3.30072 18.1577 3.72464 18.3333 4.16667 18.3333H15.8333C16.2754 18.3333 16.6993 18.1577 17.0118 17.8452C17.3244 17.5326 17.5 16.6667V3.33333C17.5 2.8913 17.3244 2.46738 17.0118 2.15482C16.6993 1.84226 16.2754 1.66667 15.8333 1.66667H4.16667C3.72464 1.66667 3.30072 1.84226 2.98816 2.15482C2.67559 2.46738 2.5 2.8913 2.5 3.33333Z" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M6.66667 8.33333C7.58714 8.33333 8.33333 7.58714 8.33333 6.66667C8.33333 5.74619 7.58714 5 6.66667 5C5.74619 5 5 5.74619 5 6.66667C5 7.58714 5.74619 8.33333 6.66667 8.33333Z" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M17.5 12.5L13.3333 8.33333L5 16.6667" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>`,
|
||||
},
|
||||
{
|
||||
id: 'pdfs',
|
||||
label: 'PDFها',
|
||||
icon: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="none">
|
||||
<path d="M12.5 2.5H4.16667C3.72464 2.5 3.30072 2.67559 2.98816 2.98816C2.67559 3.30072 2.5 3.72464 2.5 4.16667V16.6667C2.5 17.1087 2.67559 17.5326 2.98816 17.8452C3.30072 18.1577 3.72464 18.3333 4.16667 18.3333H15.8333C16.2754 18.3333 16.6993 18.1577 17.0118 17.8452C17.3244 17.5326 17.5 16.6667V6.66667L12.5 2.5Z" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M12.5 2.5V6.66667C12.5 7.1087 12.6756 7.53262 12.9882 7.84518C13.3007 8.15774 13.7246 8.33333 14.1667 8.33333H17.5" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>`,
|
||||
},
|
||||
{
|
||||
id: 'videos',
|
||||
label: 'ویدیوها',
|
||||
icon: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="none">
|
||||
<path d="M2.5 3.33333V16.6667C2.5 17.1087 2.67559 17.5326 2.98816 17.8452C3.30072 18.1577 3.72464 18.3333 4.16667 18.3333H15.8333C16.2754 18.3333 16.6993 18.1577 17.0118 17.8452C17.3244 17.5326 17.5 16.6667V3.33333C17.5 2.8913 17.3244 2.46738 17.0118 2.15482C16.6993 1.84226 16.2754 1.66667 15.8333 1.66667H4.16667C3.72464 1.66667 3.30072 1.84226 2.98816 2.15482C2.67559 2.46738 2.5 2.8913 2.5 3.33333Z" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M7.5 5.83333L13.3333 10L7.5 14.1667V5.83333Z" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>`,
|
||||
},
|
||||
{
|
||||
id: 'glbs',
|
||||
label: 'مدلهای 3D',
|
||||
icon: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="none">
|
||||
<path d="M10 2.5C7.23858 2.5 4.58333 3.31667 2.5 4.78333V16.6667C4.58333 15.3167 7.23858 14.5 10 14.5C12.7614 14.5 15.4167 15.3167 17.5 16.6667V4.78333C15.4167 3.31667 12.7614 2.5 10 2.5Z" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M10 2.5V14.5" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>`,
|
||||
},
|
||||
{
|
||||
id: 'others',
|
||||
label: 'سایر',
|
||||
icon: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="none">
|
||||
<path d="M12.5 2.5H4.16667C3.72464 2.5 3.30072 2.67559 2.98816 2.98816C2.67559 3.30072 2.5 3.72464 2.5 4.16667V16.6667C2.5 17.1087 2.67559 17.5326 2.98816 17.8452C3.30072 18.1577 3.72464 18.3333 4.16667 18.3333H15.8333C16.2754 18.3333 16.6993 18.1577 17.0118 17.8452C17.3244 17.5326 17.5 16.6667V6.66667L12.5 2.5Z" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M12.5 2.5V6.66667C12.5 7.1087 12.6756 7.53262 12.9882 7.84518C13.3007 8.15774 13.7246 8.33333 14.1667 8.33333H17.5" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M10 10H10.01" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M10 13H10.01" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M10 16H10.01" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>`,
|
||||
},
|
||||
],
|
||||
fileSections: [
|
||||
{ type: 'image', title: 'مدیریت تصاویر', extensions: ['.jpg', '.jpeg', '.png', '.gif'] },
|
||||
{ type: 'pdf', title: 'مدیریت PDFها', extensions: ['.pdf'] },
|
||||
{ type: 'video', title: 'مدیریت ویدیوها', extensions: ['.mp4', '.mov', '.avi'] },
|
||||
{ type: 'glb', title: 'مدیریت مدلهای 3D', extensions: ['.glb'] },
|
||||
{ type: 'other', title: 'سایر فایلها', extensions: [] },
|
||||
{ type: 'image', title: 'مدیریت تصاویر' },
|
||||
{ type: 'pdf', title: 'مدیریت PDFها' },
|
||||
{ type: 'video', title: 'مدیریت ویدیوها' },
|
||||
{ type: 'glb', title: 'مدیریت مدلهای 3D' },
|
||||
{ type: 'other', title: 'مدیریت سایر فایلها' },
|
||||
],
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
filteredFileSections() {
|
||||
const filterTypeMap = {
|
||||
images: 'image',
|
||||
pdfs: 'pdf',
|
||||
videos: 'video',
|
||||
glbs: 'glb',
|
||||
others: 'other',
|
||||
};
|
||||
const filterType = filterTypeMap[this.activeFilter];
|
||||
return this.fileSections.filter(section => {
|
||||
if (this.activeFilter === 'all-files' || this.activeFilter === 'recent-files') {
|
||||
return this.filteredFiles(section.type).length > 0;
|
||||
}
|
||||
return filterType === section.type;
|
||||
});
|
||||
let sections = this.fileSections;
|
||||
|
||||
if (this.activeFilter === 'all-files' || this.activeFilter === 'recent-files') {
|
||||
sections = this.fileSections.filter(section => {
|
||||
const files = this.filteredFiles(section.type);
|
||||
return files.length > 0;
|
||||
});
|
||||
} else {
|
||||
const filterTypeMap = {
|
||||
images: 'image',
|
||||
pdfs: 'pdf',
|
||||
videos: 'video',
|
||||
glbs: 'glb',
|
||||
others: 'other',
|
||||
};
|
||||
const filterType = filterTypeMap[this.activeFilter];
|
||||
sections = filterType
|
||||
? this.fileSections.filter(section => {
|
||||
const files = this.filteredFiles(section.type);
|
||||
return section.type === filterType && files.length > 0;
|
||||
})
|
||||
: [];
|
||||
}
|
||||
|
||||
return sections;
|
||||
},
|
||||
hasRecentFiles() {
|
||||
const twentyFourHoursAgo = new Date(Date.now() - 24 * 60 * 60 * 1000);
|
||||
return this.userData.files.some(file => {
|
||||
const fileDate = this.parseDate(file.created_at);
|
||||
return fileDate && fileDate >= twentyFourHoursAgo;
|
||||
});
|
||||
const sevenDaysAgo = new Date();
|
||||
sevenDaysAgo.setDate(sevenDaysAgo.getDate() - 7);
|
||||
return ['images', 'pdfs', 'videos', 'glbs', 'others'].some(type =>
|
||||
this.userData[type].some(file => new Date(file.created_at) >= sevenDaysAgo)
|
||||
);
|
||||
},
|
||||
},
|
||||
created() {
|
||||
this.fetchUserData();
|
||||
},
|
||||
methods: {
|
||||
parseDate(dateString) {
|
||||
if (!dateString) return null;
|
||||
const date = new Date(dateString);
|
||||
if (!isNaN(date.getTime())) return date;
|
||||
const formats = [
|
||||
dateString.replace(/(\d{4})\/(\d{2})\/(\d{2}) (\d{2}:\d{2}:\d{2})/, '$1-$2-$3T$4Z'),
|
||||
dateString.replace(/(\d{4})-(\d{2})-(\d{2}) (\d{2}:\d{2}:\d{2})/, '$1-$2-$3T$4Z'),
|
||||
dateString.replace(/(\d{4})\/(\d{2})\/(\d{2})/, '$1-$2-$3'),
|
||||
];
|
||||
for (const formatted of formats) {
|
||||
const parsed = new Date(formatted);
|
||||
if (!isNaN(parsed.getTime())) return parsed;
|
||||
}
|
||||
return null;
|
||||
},
|
||||
setActiveFilter(filterId) {
|
||||
this.activeFilter = filterId;
|
||||
},
|
||||
|
@ -409,44 +300,25 @@ export default {
|
|||
};
|
||||
return filterTypeMap[filterId] || 'image';
|
||||
},
|
||||
getFileExtension(file) {
|
||||
const filePath = file.file_path || '';
|
||||
const extension = filePath.match(/\.([0-9a-z]+)$/i);
|
||||
return extension ? extension[0].toLowerCase() : '.unknown';
|
||||
},
|
||||
getFileType(file) {
|
||||
const extension = this.getFileExtension(file);
|
||||
for (const section of this.fileSections) {
|
||||
if (section.extensions.includes(extension)) {
|
||||
return section.type;
|
||||
}
|
||||
}
|
||||
return 'other';
|
||||
},
|
||||
filteredFiles(type) {
|
||||
let files = this.userData.files.filter(file => {
|
||||
const fileType = this.getFileType(file);
|
||||
return file.file_path && file.file_path.trim() !== '' && fileType === type;
|
||||
});
|
||||
const files = this.userData[`${type}s`];
|
||||
if (!files) return [];
|
||||
|
||||
if (this.activeFilter === 'recent-files') {
|
||||
const twentyFourHoursAgo = new Date(Date.now() - 24 * 60 * 60 * 1000);
|
||||
files = files.filter(file => {
|
||||
const fileDate = this.parseDate(file.created_at);
|
||||
return fileDate && fileDate >= twentyFourHoursAgo;
|
||||
});
|
||||
const sevenDaysAgo = new Date();
|
||||
sevenDaysAgo.setDate(sevenDaysAgo.getDate() - 7);
|
||||
return files.filter(file => new Date(file.created_at) >= sevenDaysAgo);
|
||||
}
|
||||
|
||||
const filterTypeMap = {
|
||||
images: 'image',
|
||||
images: 'image',
|
||||
pdfs: 'pdf',
|
||||
videos: 'video',
|
||||
glbs: 'glb',
|
||||
others: 'other',
|
||||
};
|
||||
|
||||
if (this.activeFilter !== 'all-files' && this.activeFilter !== 'recent-files' && filterTypeMap[this.activeFilter] !== type) {
|
||||
files = [];
|
||||
if (this.activeFilter !== 'all-files' && filterTypeMap[this.activeFilter] !== type) {
|
||||
return [];
|
||||
}
|
||||
|
||||
return files;
|
||||
|
@ -454,7 +326,7 @@ export default {
|
|||
getFilePreviewImage(type, file) {
|
||||
switch (type) {
|
||||
case 'image':
|
||||
return this.getFullFileUrl(file.file_path);
|
||||
return this.getFullFileUrl(file.image);
|
||||
case 'pdf':
|
||||
return 'https://cdn-icons-png.flaticon.com/512/337/337946.png';
|
||||
case 'video':
|
||||
|
@ -462,18 +334,19 @@ export default {
|
|||
case 'glb':
|
||||
return require('@/assets/img/3d icon.jpg');
|
||||
case 'other':
|
||||
return 'https://cdn-icons-png.flaticon.com/512/148/148839.png';
|
||||
return 'https://cdn-icons-png.flaticon.com/512/186/186159.png';
|
||||
default:
|
||||
return '';
|
||||
}
|
||||
},
|
||||
getFullFileUrl(relativePath) {
|
||||
return relativePath ? `${this.baseUrl}${relativePath}` : '';
|
||||
if (!relativePath) return '';
|
||||
return `${this.baseUrl}${relativePath}`;
|
||||
},
|
||||
formatDate(dateString) {
|
||||
if (!dateString) return 'نامعتبر';
|
||||
const date = this.parseDate(dateString);
|
||||
return date ? date.toLocaleDateString('fa-IR', { year: 'numeric', month: 'long', day: 'numeric' }) : 'نامعتبر';
|
||||
if (!dateString) return '';
|
||||
const date = new Date(dateString);
|
||||
return date.toLocaleDateString('fa-IR');
|
||||
},
|
||||
openDialog(type = 'image') {
|
||||
this.currentUploadType = type;
|
||||
|
@ -482,13 +355,15 @@ export default {
|
|||
closeDialog() {
|
||||
this.isNewFileDialogOpen = false;
|
||||
},
|
||||
openPreviewDialog(type, id, url) {
|
||||
openPreviewDialog(type, index, url, id) {
|
||||
this.currentPreviewType = type;
|
||||
this.currentPreviewIndex = id;
|
||||
this.previewUrl = url;
|
||||
|
||||
if (type === 'video') {
|
||||
this.videoOptions.sources[0].src = url;
|
||||
}
|
||||
|
||||
this.isPreviewDialogOpen = true;
|
||||
},
|
||||
closePreviewDialog() {
|
||||
|
@ -500,50 +375,20 @@ export default {
|
|||
async fetchUserData() {
|
||||
try {
|
||||
const token = localStorage.getItem('token');
|
||||
if (!token) {
|
||||
this.$router.push('/login');
|
||||
return;
|
||||
}
|
||||
|
||||
const response = await axios.get(`${this.baseUrl}/getInfo`, {
|
||||
headers: {
|
||||
Authorization: `Token ${token}`,
|
||||
'Authorization': `Token ${token}`,
|
||||
},
|
||||
});
|
||||
|
||||
const data = response.data.data || {};
|
||||
this.userData.files = [
|
||||
...(data.images || []).map(file => ({
|
||||
id: file.id,
|
||||
name: file.name,
|
||||
file_path: file.image,
|
||||
created_at: file.created_at,
|
||||
})),
|
||||
...(data.pdfs || []).map(file => ({
|
||||
id: file.id,
|
||||
name: file.name,
|
||||
file_path: file.pdf,
|
||||
created_at: file.created_at,
|
||||
})),
|
||||
...(data.videos || []).map(file => ({
|
||||
id: file.id,
|
||||
name: file.name,
|
||||
file_path: file.video,
|
||||
created_at: file.created_at,
|
||||
})),
|
||||
...(data.glbs || []).map(file => ({
|
||||
id: file.id,
|
||||
name: file.name,
|
||||
file_path: file.glb,
|
||||
created_at: file.created_at,
|
||||
})),
|
||||
];
|
||||
this.userData = {
|
||||
...response.data.data,
|
||||
others: response.data.data.others || [],
|
||||
};
|
||||
} catch (error) {
|
||||
if (error.response?.status === 401) {
|
||||
this.$router.push('/login');
|
||||
} else {
|
||||
alert('خطا در بارگذاری فایلها: ' + (error.response?.data?.message || error.message));
|
||||
}
|
||||
console.error('Error fetching user data:', error);
|
||||
this.userData.others = [
|
||||
];
|
||||
}
|
||||
},
|
||||
},
|
||||
|
|
Loading…
Reference in New Issue
Block a user