mirror of
https://github.com/VueFileManager/vuefilemanager.git
synced 2026-04-18 08:12:15 +00:00
Add Gallery
This commit is contained in:
71
.env.example
71
.env.example
@@ -1,71 +0,0 @@
|
|||||||
APP_NAME=VueFileManager
|
|
||||||
APP_ENV=production
|
|
||||||
APP_KEY=base64:sB1YuKsbWv7MdWugb9ZsYBqv2QZJ+QOuHZHEddOsUuo=
|
|
||||||
APP_DEBUG=true
|
|
||||||
APP_URL=http://localhost
|
|
||||||
APP_DEMO=false
|
|
||||||
|
|
||||||
LOG_CHANNEL=stack
|
|
||||||
SCOUT_DRIVER=tntsearch
|
|
||||||
FILESYSTEM_DRIVER=
|
|
||||||
|
|
||||||
DB_CONNECTION=mysql
|
|
||||||
DB_HOST=127.0.0.1
|
|
||||||
DB_PORT=3306
|
|
||||||
DB_DATABASE=laravel
|
|
||||||
DB_USERNAME=root
|
|
||||||
DB_PASSWORD=
|
|
||||||
|
|
||||||
BROADCAST_DRIVER=log
|
|
||||||
CACHE_DRIVER=file
|
|
||||||
QUEUE_CONNECTION=sync
|
|
||||||
SESSION_DRIVER=file
|
|
||||||
SESSION_LIFETIME=120
|
|
||||||
|
|
||||||
REDIS_HOST=127.0.0.1
|
|
||||||
REDIS_PASSWORD=null
|
|
||||||
REDIS_PORT=6379
|
|
||||||
|
|
||||||
MAIL_DRIVER=
|
|
||||||
MAIL_HOST=
|
|
||||||
MAIL_PORT=
|
|
||||||
MAIL_USERNAME=
|
|
||||||
MAIL_PASSWORD=
|
|
||||||
MAIL_ENCRYPTION=
|
|
||||||
MAIL_FROM_ADDRESS="${MAIL_USERNAME}"
|
|
||||||
MAIL_FROM_NAME="${MAIL_USERNAME}"
|
|
||||||
|
|
||||||
AWS_ACCESS_KEY_ID=
|
|
||||||
AWS_SECRET_ACCESS_KEY=
|
|
||||||
AWS_DEFAULT_REGION=
|
|
||||||
AWS_BUCKET=
|
|
||||||
|
|
||||||
DO_SPACES_KEY=
|
|
||||||
DO_SPACES_SECRET=
|
|
||||||
DO_SPACES_ENDPOINT=
|
|
||||||
DO_SPACES_REGION=
|
|
||||||
DO_SPACES_BUCKET=
|
|
||||||
|
|
||||||
WASABI_KEY=
|
|
||||||
WASABI_SECRET=
|
|
||||||
WASABI_ENDPOINT=
|
|
||||||
WASABI_REGION=
|
|
||||||
WASABI_BUCKET=
|
|
||||||
|
|
||||||
BACKBLAZE_KEY=
|
|
||||||
BACKBLAZE_SECRET=
|
|
||||||
BACKBLAZE_ENDPOINT=
|
|
||||||
BACKBLAZE_REGION=
|
|
||||||
BACKBLAZE_BUCKET=
|
|
||||||
|
|
||||||
PASSPORT_CLIENT_ID=
|
|
||||||
PASSPORT_CLIENT_SECRET=
|
|
||||||
|
|
||||||
APP_DEPLOY_SECRET=
|
|
||||||
|
|
||||||
CASHIER_LOGGER=stack
|
|
||||||
CASHIER_CURRENCY=
|
|
||||||
STRIPE_KEY=
|
|
||||||
STRIPE_SECRET=
|
|
||||||
STRIPE_WEBHOOK_SECRET=
|
|
||||||
CASHIER_PAYMENT_NOTIFICATION=App\Notifications\ConfirmPayment
|
|
||||||
323
package-lock.json
generated
323
package-lock.json
generated
@@ -993,19 +993,12 @@
|
|||||||
"integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==",
|
"integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"@types/events": {
|
|
||||||
"version": "3.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz",
|
|
||||||
"integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"@types/glob": {
|
"@types/glob": {
|
||||||
"version": "7.1.1",
|
"version": "7.1.3",
|
||||||
"resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz",
|
||||||
"integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==",
|
"integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@types/events": "*",
|
|
||||||
"@types/minimatch": "*",
|
"@types/minimatch": "*",
|
||||||
"@types/node": "*"
|
"@types/node": "*"
|
||||||
}
|
}
|
||||||
@@ -1017,9 +1010,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"@types/node": {
|
"@types/node": {
|
||||||
"version": "13.11.0",
|
"version": "14.0.27",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-13.11.0.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.27.tgz",
|
||||||
"integrity": "sha512-uM4mnmsIIPK/yeO+42F2RQhGUIs39K2RFmugcJANppXe6J1nvH87PvzPZYpza7Xhhs8Yn9yIAVdLZ84z61+0xQ==",
|
"integrity": "sha512-kVrqXhbclHNHGu9ztnAwSncIgJv/FaxmzXJvGXNdcCpV1b8u1/Mi6z6m0vwy0LzKeXFTPLH0NzwmoJ3fNCIq0g==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"@types/q": {
|
"@types/q": {
|
||||||
@@ -1353,8 +1346,7 @@
|
|||||||
"ajv-keywords": {
|
"ajv-keywords": {
|
||||||
"version": "3.4.1",
|
"version": "3.4.1",
|
||||||
"resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz",
|
"resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz",
|
||||||
"integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==",
|
"integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ=="
|
||||||
"dev": true
|
|
||||||
},
|
},
|
||||||
"alphanum-sort": {
|
"alphanum-sort": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
@@ -1725,6 +1717,11 @@
|
|||||||
"object.assign": "^4.1.0"
|
"object.assign": "^4.1.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"babel-plugin-syntax-dynamic-import": {
|
||||||
|
"version": "6.18.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz",
|
||||||
|
"integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo="
|
||||||
|
},
|
||||||
"balanced-match": {
|
"balanced-match": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
|
||||||
@@ -1808,8 +1805,7 @@
|
|||||||
"big.js": {
|
"big.js": {
|
||||||
"version": "5.2.2",
|
"version": "5.2.2",
|
||||||
"resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
|
||||||
"integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
|
"integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ=="
|
||||||
"dev": true
|
|
||||||
},
|
},
|
||||||
"binary-extensions": {
|
"binary-extensions": {
|
||||||
"version": "1.13.1",
|
"version": "1.13.1",
|
||||||
@@ -3323,9 +3319,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"elliptic": {
|
"elliptic": {
|
||||||
"version": "6.5.2",
|
"version": "6.5.3",
|
||||||
"resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz",
|
"resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz",
|
||||||
"integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==",
|
"integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"bn.js": "^4.4.0",
|
"bn.js": "^4.4.0",
|
||||||
@@ -3345,8 +3341,7 @@
|
|||||||
"emojis-list": {
|
"emojis-list": {
|
||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
|
||||||
"integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
|
"integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q=="
|
||||||
"dev": true
|
|
||||||
},
|
},
|
||||||
"encodeurl": {
|
"encodeurl": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
@@ -3513,9 +3508,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"eventemitter3": {
|
"eventemitter3": {
|
||||||
"version": "4.0.0",
|
"version": "4.0.4",
|
||||||
"resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz",
|
||||||
"integrity": "sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg==",
|
"integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"events": {
|
"events": {
|
||||||
@@ -5065,9 +5060,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"html-entities": {
|
"html-entities": {
|
||||||
"version": "1.2.1",
|
"version": "1.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz",
|
"resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.3.1.tgz",
|
||||||
"integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=",
|
"integrity": "sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"html-loader": {
|
"html-loader": {
|
||||||
@@ -5125,16 +5120,10 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"http-parser-js": {
|
|
||||||
"version": "0.4.10",
|
|
||||||
"resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz",
|
|
||||||
"integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"http-proxy": {
|
"http-proxy": {
|
||||||
"version": "1.18.0",
|
"version": "1.18.1",
|
||||||
"resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.0.tgz",
|
"resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz",
|
||||||
"integrity": "sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ==",
|
"integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"eventemitter3": "^4.0.0",
|
"eventemitter3": "^4.0.0",
|
||||||
@@ -5805,7 +5794,6 @@
|
|||||||
"version": "2.1.2",
|
"version": "2.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/json5/-/json5-2.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/json5/-/json5-2.1.2.tgz",
|
||||||
"integrity": "sha512-MoUOQ4WdiN3yxhm7NEVJSJrieAo5hNSLQ5sj05OTRHPL9HOBy8u4Bu88jsC1jvqAdN+E1bJmsUcZH+1HQxliqQ==",
|
"integrity": "sha512-MoUOQ4WdiN3yxhm7NEVJSJrieAo5hNSLQ5sj05OTRHPL9HOBy8u4Bu88jsC1jvqAdN+E1bJmsUcZH+1HQxliqQ==",
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"minimist": "^1.2.5"
|
"minimist": "^1.2.5"
|
||||||
},
|
},
|
||||||
@@ -5813,8 +5801,7 @@
|
|||||||
"minimist": {
|
"minimist": {
|
||||||
"version": "1.2.5",
|
"version": "1.2.5",
|
||||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
|
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
|
||||||
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
|
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
|
||||||
"dev": true
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -5967,7 +5954,6 @@
|
|||||||
"version": "1.4.0",
|
"version": "1.4.0",
|
||||||
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz",
|
||||||
"integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
|
"integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"big.js": "^5.2.2",
|
"big.js": "^5.2.2",
|
||||||
"emojis-list": "^3.0.0",
|
"emojis-list": "^3.0.0",
|
||||||
@@ -5978,7 +5964,6 @@
|
|||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
|
||||||
"integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
|
"integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"minimist": "^1.2.0"
|
"minimist": "^1.2.0"
|
||||||
}
|
}
|
||||||
@@ -6099,9 +6084,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"loglevel": {
|
"loglevel": {
|
||||||
"version": "1.6.7",
|
"version": "1.6.8",
|
||||||
"resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.7.tgz",
|
"resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.8.tgz",
|
||||||
"integrity": "sha512-cY2eLFrQSAfVPhCgH1s7JI73tMbg9YC3v3+ZHVW67sBS7UxWzNEk/ZBbSfLykBWHp33dqqtOv82gjhKEi81T/A==",
|
"integrity": "sha512-bsU7+gc9AJ2SqpzxwU3+1fedl8zAntbtC5XYlt3s2j1hJcn2PsXSmgN8TaLG/J1/2mod4+cE/3vNL70/c1RNCA==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"loose-envify": {
|
"loose-envify": {
|
||||||
@@ -6374,9 +6359,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"minimist": {
|
"minimist": {
|
||||||
"version": "1.2.0",
|
"version": "1.2.5",
|
||||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
|
||||||
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
|
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
|
||||||
},
|
},
|
||||||
"minipass": {
|
"minipass": {
|
||||||
"version": "3.1.1",
|
"version": "3.1.1",
|
||||||
@@ -6443,18 +6428,11 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"mkdirp": {
|
"mkdirp": {
|
||||||
"version": "0.5.1",
|
"version": "0.5.5",
|
||||||
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
|
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
|
||||||
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
|
"integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"minimist": "0.0.8"
|
"minimist": "^1.2.5"
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"minimist": {
|
|
||||||
"version": "0.0.8",
|
|
||||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
|
|
||||||
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"move-concurrently": {
|
"move-concurrently": {
|
||||||
@@ -6830,10 +6808,14 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"object-is": {
|
"object-is": {
|
||||||
"version": "1.0.2",
|
"version": "1.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.2.tgz",
|
||||||
"integrity": "sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ==",
|
"integrity": "sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ==",
|
||||||
"dev": true
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"define-properties": "^1.1.3",
|
||||||
|
"es-abstract": "^1.17.5"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"object-keys": {
|
"object-keys": {
|
||||||
"version": "1.1.1",
|
"version": "1.1.1",
|
||||||
@@ -7210,6 +7192,11 @@
|
|||||||
"sha.js": "^2.4.8"
|
"sha.js": "^2.4.8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"pdfjs-dist": {
|
||||||
|
"version": "2.5.207",
|
||||||
|
"resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-2.5.207.tgz",
|
||||||
|
"integrity": "sha512-xGDUhnCYPfHy+unMXCLCJtlpZaaZ17Ew3WIL0tnSgKFUZXHAPD49GO9xScyszSsQMoutNDgRb+rfBXIaX/lJbw=="
|
||||||
|
},
|
||||||
"performance-now": {
|
"performance-now": {
|
||||||
"version": "2.1.0",
|
"version": "2.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
|
||||||
@@ -7298,14 +7285,14 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"portfinder": {
|
"portfinder": {
|
||||||
"version": "1.0.25",
|
"version": "1.0.28",
|
||||||
"resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.25.tgz",
|
"resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz",
|
||||||
"integrity": "sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg==",
|
"integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"async": "^2.6.2",
|
"async": "^2.6.2",
|
||||||
"debug": "^3.1.1",
|
"debug": "^3.1.1",
|
||||||
"mkdirp": "^0.5.1"
|
"mkdirp": "^0.5.5"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"debug": {
|
"debug": {
|
||||||
@@ -8171,6 +8158,27 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"raw-loader": {
|
||||||
|
"version": "4.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.1.tgz",
|
||||||
|
"integrity": "sha512-baolhQBSi3iNh1cglJjA0mYzga+wePk7vdEX//1dTFd+v4TsQlQE0jitJSNF1OIP82rdYulH7otaVmdlDaJ64A==",
|
||||||
|
"requires": {
|
||||||
|
"loader-utils": "^2.0.0",
|
||||||
|
"schema-utils": "^2.6.5"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"loader-utils": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz",
|
||||||
|
"integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==",
|
||||||
|
"requires": {
|
||||||
|
"big.js": "^5.2.2",
|
||||||
|
"emojis-list": "^3.0.0",
|
||||||
|
"json5": "^2.1.2"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"read-pkg": {
|
"read-pkg": {
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
|
||||||
@@ -8767,7 +8775,6 @@
|
|||||||
"version": "2.6.5",
|
"version": "2.6.5",
|
||||||
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz",
|
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz",
|
||||||
"integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==",
|
"integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==",
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"ajv": "^6.12.0",
|
"ajv": "^6.12.0",
|
||||||
"ajv-keywords": "^3.4.1"
|
"ajv-keywords": "^3.4.1"
|
||||||
@@ -9163,13 +9170,14 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"sockjs": {
|
"sockjs": {
|
||||||
"version": "0.3.19",
|
"version": "0.3.20",
|
||||||
"resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz",
|
"resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.20.tgz",
|
||||||
"integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==",
|
"integrity": "sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"faye-websocket": "^0.10.0",
|
"faye-websocket": "^0.10.0",
|
||||||
"uuid": "^3.0.1"
|
"uuid": "^3.4.0",
|
||||||
|
"websocket-driver": "0.6.5"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"sockjs-client": {
|
"sockjs-client": {
|
||||||
@@ -9290,9 +9298,9 @@
|
|||||||
"integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q=="
|
"integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q=="
|
||||||
},
|
},
|
||||||
"spdy": {
|
"spdy": {
|
||||||
"version": "4.0.1",
|
"version": "4.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz",
|
||||||
"integrity": "sha512-HeZS3PBdMA+sZSu0qwpCxl3DeALD5ASx8pAX0jZdKXSpPWbQ6SYGnlg3BBmYLx5LtiZrmkAZfErCm2oECBcioA==",
|
"integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"debug": "^4.1.0",
|
"debug": "^4.1.0",
|
||||||
@@ -10346,6 +10354,24 @@
|
|||||||
"vue-style-loader": "^4.1.0"
|
"vue-style-loader": "^4.1.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"vue-pdf": {
|
||||||
|
"version": "4.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/vue-pdf/-/vue-pdf-4.1.0.tgz",
|
||||||
|
"integrity": "sha512-kjDmCJplCtf5+qQv6uMuUoh01AsoyKNsawHtfi9x739f1sTxdIwrLu25g+EhfRdtjh6JBqW46Mff1wijKa79wA==",
|
||||||
|
"requires": {
|
||||||
|
"babel-plugin-syntax-dynamic-import": "^6.18.0",
|
||||||
|
"loader-utils": "^1.4.0",
|
||||||
|
"pdfjs-dist": "^2.5.207",
|
||||||
|
"raw-loader": "^4.0.1",
|
||||||
|
"vue-resize-sensor": "^2.0.0",
|
||||||
|
"worker-loader": "^2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"vue-resize-sensor": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/vue-resize-sensor/-/vue-resize-sensor-2.0.0.tgz",
|
||||||
|
"integrity": "sha512-W+y2EAI/BxS4Vlcca9scQv8ifeBFck56DRtSwWJ2H4Cw1GLNUYxiZxUHHkuzuI5JPW/cYtL1bPO5xPyEXx4LmQ=="
|
||||||
|
},
|
||||||
"vue-router": {
|
"vue-router": {
|
||||||
"version": "3.3.4",
|
"version": "3.3.4",
|
||||||
"resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.3.4.tgz",
|
"resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.3.4.tgz",
|
||||||
@@ -10702,17 +10728,17 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"mime": {
|
"mime": {
|
||||||
"version": "2.4.4",
|
"version": "2.4.6",
|
||||||
"resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz",
|
"resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz",
|
||||||
"integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==",
|
"integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==",
|
||||||
"dev": true
|
"dev": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"webpack-dev-server": {
|
"webpack-dev-server": {
|
||||||
"version": "3.10.3",
|
"version": "3.11.0",
|
||||||
"resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.10.3.tgz",
|
"resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz",
|
||||||
"integrity": "sha512-e4nWev8YzEVNdOMcNzNeCN947sWJNd43E5XvsJzbAL08kGc2frm1tQ32hTJslRS+H65LCb/AaUCYU7fjHCpDeQ==",
|
"integrity": "sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"ansi-html": "0.0.7",
|
"ansi-html": "0.0.7",
|
||||||
@@ -10723,33 +10749,39 @@
|
|||||||
"debug": "^4.1.1",
|
"debug": "^4.1.1",
|
||||||
"del": "^4.1.1",
|
"del": "^4.1.1",
|
||||||
"express": "^4.17.1",
|
"express": "^4.17.1",
|
||||||
"html-entities": "^1.2.1",
|
"html-entities": "^1.3.1",
|
||||||
"http-proxy-middleware": "0.19.1",
|
"http-proxy-middleware": "0.19.1",
|
||||||
"import-local": "^2.0.0",
|
"import-local": "^2.0.0",
|
||||||
"internal-ip": "^4.3.0",
|
"internal-ip": "^4.3.0",
|
||||||
"ip": "^1.1.5",
|
"ip": "^1.1.5",
|
||||||
"is-absolute-url": "^3.0.3",
|
"is-absolute-url": "^3.0.3",
|
||||||
"killable": "^1.0.1",
|
"killable": "^1.0.1",
|
||||||
"loglevel": "^1.6.6",
|
"loglevel": "^1.6.8",
|
||||||
"opn": "^5.5.0",
|
"opn": "^5.5.0",
|
||||||
"p-retry": "^3.0.1",
|
"p-retry": "^3.0.1",
|
||||||
"portfinder": "^1.0.25",
|
"portfinder": "^1.0.26",
|
||||||
"schema-utils": "^1.0.0",
|
"schema-utils": "^1.0.0",
|
||||||
"selfsigned": "^1.10.7",
|
"selfsigned": "^1.10.7",
|
||||||
"semver": "^6.3.0",
|
"semver": "^6.3.0",
|
||||||
"serve-index": "^1.9.1",
|
"serve-index": "^1.9.1",
|
||||||
"sockjs": "0.3.19",
|
"sockjs": "0.3.20",
|
||||||
"sockjs-client": "1.4.0",
|
"sockjs-client": "1.4.0",
|
||||||
"spdy": "^4.0.1",
|
"spdy": "^4.0.2",
|
||||||
"strip-ansi": "^3.0.1",
|
"strip-ansi": "^3.0.1",
|
||||||
"supports-color": "^6.1.0",
|
"supports-color": "^6.1.0",
|
||||||
"url": "^0.11.0",
|
"url": "^0.11.0",
|
||||||
"webpack-dev-middleware": "^3.7.2",
|
"webpack-dev-middleware": "^3.7.2",
|
||||||
"webpack-log": "^2.0.0",
|
"webpack-log": "^2.0.0",
|
||||||
"ws": "^6.2.1",
|
"ws": "^6.2.1",
|
||||||
"yargs": "12.0.5"
|
"yargs": "^13.3.2"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"ansi-regex": {
|
||||||
|
"version": "4.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
|
||||||
|
"integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"debug": {
|
"debug": {
|
||||||
"version": "4.1.1",
|
"version": "4.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
|
||||||
@@ -10759,18 +10791,61 @@
|
|||||||
"ms": "^2.1.1"
|
"ms": "^2.1.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"find-up": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
|
||||||
|
"integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"locate-path": "^3.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"is-absolute-url": {
|
"is-absolute-url": {
|
||||||
"version": "3.0.3",
|
"version": "3.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz",
|
||||||
"integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==",
|
"integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"locate-path": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
|
||||||
|
"integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"p-locate": "^3.0.0",
|
||||||
|
"path-exists": "^3.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"ms": {
|
"ms": {
|
||||||
"version": "2.1.2",
|
"version": "2.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
|
||||||
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
|
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"p-limit": {
|
||||||
|
"version": "2.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
|
||||||
|
"integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"p-try": "^2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"p-locate": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
|
||||||
|
"integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"p-limit": "^2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"p-try": {
|
||||||
|
"version": "2.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
|
||||||
|
"integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"schema-utils": {
|
"schema-utils": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
|
||||||
@@ -10788,6 +10863,28 @@
|
|||||||
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
|
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"string-width": {
|
||||||
|
"version": "3.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
|
||||||
|
"integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"emoji-regex": "^7.0.1",
|
||||||
|
"is-fullwidth-code-point": "^2.0.0",
|
||||||
|
"strip-ansi": "^5.1.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"strip-ansi": {
|
||||||
|
"version": "5.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
|
||||||
|
"integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"ansi-regex": "^4.1.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"supports-color": {
|
"supports-color": {
|
||||||
"version": "6.1.0",
|
"version": "6.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
|
||||||
@@ -10796,6 +10893,24 @@
|
|||||||
"requires": {
|
"requires": {
|
||||||
"has-flag": "^3.0.0"
|
"has-flag": "^3.0.0"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"yargs": {
|
||||||
|
"version": "13.3.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
|
||||||
|
"integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"cliui": "^5.0.0",
|
||||||
|
"find-up": "^3.0.0",
|
||||||
|
"get-caller-file": "^2.0.1",
|
||||||
|
"require-directory": "^2.1.1",
|
||||||
|
"require-main-filename": "^2.0.0",
|
||||||
|
"set-blocking": "^2.0.0",
|
||||||
|
"string-width": "^3.0.0",
|
||||||
|
"which-module": "^2.0.0",
|
||||||
|
"y18n": "^4.0.0",
|
||||||
|
"yargs-parser": "^13.1.2"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -10848,20 +10963,18 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"websocket-driver": {
|
"websocket-driver": {
|
||||||
"version": "0.7.3",
|
"version": "0.6.5",
|
||||||
"resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.3.tgz",
|
"resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz",
|
||||||
"integrity": "sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg==",
|
"integrity": "sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY=",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"http-parser-js": ">=0.4.0 <0.4.11",
|
|
||||||
"safe-buffer": ">=5.1.0",
|
|
||||||
"websocket-extensions": ">=0.1.1"
|
"websocket-extensions": ">=0.1.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"websocket-extensions": {
|
"websocket-extensions": {
|
||||||
"version": "0.1.3",
|
"version": "0.1.4",
|
||||||
"resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz",
|
"resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz",
|
||||||
"integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==",
|
"integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"which": {
|
"which": {
|
||||||
@@ -10894,6 +11007,26 @@
|
|||||||
"errno": "~0.1.7"
|
"errno": "~0.1.7"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"worker-loader": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/worker-loader/-/worker-loader-2.0.0.tgz",
|
||||||
|
"integrity": "sha512-tnvNp4K3KQOpfRnD20m8xltE3eWh89Ye+5oj7wXEEHKac1P4oZ6p9oTj8/8ExqoSBnk9nu5Pr4nKfQ1hn2APJw==",
|
||||||
|
"requires": {
|
||||||
|
"loader-utils": "^1.0.0",
|
||||||
|
"schema-utils": "^0.4.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"schema-utils": {
|
||||||
|
"version": "0.4.7",
|
||||||
|
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz",
|
||||||
|
"integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==",
|
||||||
|
"requires": {
|
||||||
|
"ajv": "^6.1.0",
|
||||||
|
"ajv-keywords": "^3.1.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"wrap-ansi": {
|
"wrap-ansi": {
|
||||||
"version": "5.1.0",
|
"version": "5.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
|
||||||
|
|||||||
@@ -27,6 +27,7 @@
|
|||||||
"vue": "^2.6.10",
|
"vue": "^2.6.10",
|
||||||
"vue-feather-icons": "^5.0.0",
|
"vue-feather-icons": "^5.0.0",
|
||||||
"vue-i18n": "^8.18.2",
|
"vue-i18n": "^8.18.2",
|
||||||
|
"vue-pdf": "^4.1.0",
|
||||||
"vue-router": "^3.3.4",
|
"vue-router": "^3.3.4",
|
||||||
"vuex": "^3.5.1"
|
"vuex": "^3.5.1"
|
||||||
}
|
}
|
||||||
|
|||||||
420
public/css/app.css
vendored
420
public/css/app.css
vendored
File diff suppressed because one or more lines are too long
140193
public/js/main.js
vendored
140193
public/js/main.js
vendored
File diff suppressed because one or more lines are too long
@@ -1,4 +1,34 @@
|
|||||||
{
|
{
|
||||||
"/js/main.js": "/js/main.js",
|
"/js/main.js": "/js/main.js",
|
||||||
"/css/app.css": "/css/app.css"
|
"/css/app.css": "/css/app.css",
|
||||||
|
"/js/main.e2bb1fd747fa15021705.hot-update.js": "/js/main.e2bb1fd747fa15021705.hot-update.js",
|
||||||
|
"/js/main.9c20ee6a60faeb34bc30.hot-update.js": "/js/main.9c20ee6a60faeb34bc30.hot-update.js",
|
||||||
|
"/js/main.83f43d6f0ad85db8835f.hot-update.js": "/js/main.83f43d6f0ad85db8835f.hot-update.js",
|
||||||
|
"/js/main.f87a7ee7d93fc1c7b5de.hot-update.js": "/js/main.f87a7ee7d93fc1c7b5de.hot-update.js",
|
||||||
|
"/js/main.77f22ac085cba98620f1.hot-update.js": "/js/main.77f22ac085cba98620f1.hot-update.js",
|
||||||
|
"/js/main.fcf0a9a192751c92a149.hot-update.js": "/js/main.fcf0a9a192751c92a149.hot-update.js",
|
||||||
|
"/js/main.a554eb36a5c74f647c71.hot-update.js": "/js/main.a554eb36a5c74f647c71.hot-update.js",
|
||||||
|
"/js/main.35658cce779a3f465bec.hot-update.js": "/js/main.35658cce779a3f465bec.hot-update.js",
|
||||||
|
"/js/main.d5d36b8ab06c646ec418.hot-update.js": "/js/main.d5d36b8ab06c646ec418.hot-update.js",
|
||||||
|
"/js/main.fdc1d3ffdd9903f395f7.hot-update.js": "/js/main.fdc1d3ffdd9903f395f7.hot-update.js",
|
||||||
|
"/js/main.0ae540f4c05df5ccebb0.hot-update.js": "/js/main.0ae540f4c05df5ccebb0.hot-update.js",
|
||||||
|
"/js/main.49391b7e1762ea0c5b10.hot-update.js": "/js/main.49391b7e1762ea0c5b10.hot-update.js",
|
||||||
|
"/js/main.beae3c9aef47942197b0.hot-update.js": "/js/main.beae3c9aef47942197b0.hot-update.js",
|
||||||
|
"/js/main.51c52c383348b005243c.hot-update.js": "/js/main.51c52c383348b005243c.hot-update.js",
|
||||||
|
"/js/main.964dc232d2c393dacc65.hot-update.js": "/js/main.964dc232d2c393dacc65.hot-update.js",
|
||||||
|
"/js/main.b98b9f46629be99210d2.hot-update.js": "/js/main.b98b9f46629be99210d2.hot-update.js",
|
||||||
|
"/js/main.aab577d0ec8e8a204961.hot-update.js": "/js/main.aab577d0ec8e8a204961.hot-update.js",
|
||||||
|
"/js/main.0217718f0db88a657b2f.hot-update.js": "/js/main.0217718f0db88a657b2f.hot-update.js",
|
||||||
|
"/js/main.5391ccc6f3c903bf0b23.hot-update.js": "/js/main.5391ccc6f3c903bf0b23.hot-update.js",
|
||||||
|
"/js/main.0954e76b99db04ffbe6c.hot-update.js": "/js/main.0954e76b99db04ffbe6c.hot-update.js",
|
||||||
|
"/js/main.df14fcfae8664b0f2904.hot-update.js": "/js/main.df14fcfae8664b0f2904.hot-update.js",
|
||||||
|
"/js/main.75a01658c34a6e530b1a.hot-update.js": "/js/main.75a01658c34a6e530b1a.hot-update.js",
|
||||||
|
"/js/main.62b26161fb5207445a1c.hot-update.js": "/js/main.62b26161fb5207445a1c.hot-update.js",
|
||||||
|
"/js/main.88d224990b79bf089c9a.hot-update.js": "/js/main.88d224990b79bf089c9a.hot-update.js",
|
||||||
|
"/js/main.81dd5da55c0dd05b096b.hot-update.js": "/js/main.81dd5da55c0dd05b096b.hot-update.js",
|
||||||
|
"/js/main.604934fc10ca0ad73e89.hot-update.js": "/js/main.604934fc10ca0ad73e89.hot-update.js",
|
||||||
|
"/js/main.c85e590457277f990184.hot-update.js": "/js/main.c85e590457277f990184.hot-update.js",
|
||||||
|
"/js/main.7617058999e77f4960b6.hot-update.js": "/js/main.7617058999e77f4960b6.hot-update.js",
|
||||||
|
"/js/main.e41e72be1336cbf4b175.hot-update.js": "/js/main.e41e72be1336cbf4b175.hot-update.js",
|
||||||
|
"/js/main.6acdea49771ee695139c.hot-update.js": "/js/main.6acdea49771ee695139c.hot-update.js"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,213 +1,216 @@
|
|||||||
<template>
|
<template>
|
||||||
<div id="vue-file-manager" v-cloak>
|
<div id="vue-file-manager" v-cloak>
|
||||||
|
<!--System alerts-->
|
||||||
|
<Alert />
|
||||||
|
|
||||||
<!--System alerts-->
|
<div id="application-wrapper" v-if="layout === 'authorized'">
|
||||||
<Alert/>
|
<!-- Full File Preview -->
|
||||||
|
<FileFullPreview />
|
||||||
|
|
||||||
<div id="application-wrapper" v-if="layout === 'authorized'">
|
<!--Mobile Navigation-->
|
||||||
|
<MobileNavigation />
|
||||||
|
|
||||||
<!--Mobile Navigation-->
|
<!--Confirm Popup-->
|
||||||
<MobileNavigation />
|
<Confirm />
|
||||||
|
|
||||||
<!--Confirm Popup-->
|
<!--Share Item setup-->
|
||||||
<Confirm />
|
<ShareCreate />
|
||||||
|
<ShareEdit />
|
||||||
|
|
||||||
<!--Share Item setup-->
|
<!--Move item setup-->
|
||||||
<ShareCreate/>
|
<MoveItem />
|
||||||
<ShareEdit/>
|
|
||||||
|
|
||||||
<!--Move item setup-->
|
<!--Mobile Menu-->
|
||||||
<MoveItem/>
|
<MobileMenu />
|
||||||
|
|
||||||
<!--Mobile Menu-->
|
<!--Navigation Sidebar-->
|
||||||
<MobileMenu/>
|
<MenuBar />
|
||||||
|
|
||||||
<!--Navigation Sidebar-->
|
<!--Toastr-->
|
||||||
<MenuBar/>
|
<ToastrWrapper />
|
||||||
|
|
||||||
<!--Toastr-->
|
<!--File page-->
|
||||||
<ToastrWrapper/>
|
<keep-alive :include="['Admin', 'Users']">
|
||||||
|
<router-view :class="{ 'is-scaled-down': isScaledDown }" />
|
||||||
<!--File page-->
|
</keep-alive>
|
||||||
<keep-alive :include="['Admin', 'Users']">
|
|
||||||
<router-view :class="{'is-scaled-down': isScaledDown}"/>
|
|
||||||
</keep-alive>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<router-view v-if="layout === 'unauthorized'"/>
|
|
||||||
|
|
||||||
<CookieDisclaimer />
|
|
||||||
|
|
||||||
<!--Background vignette-->
|
|
||||||
<Vignette/>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<router-view v-if="layout === 'unauthorized'" />
|
||||||
|
|
||||||
|
<CookieDisclaimer />
|
||||||
|
|
||||||
|
<!--Background vignette-->
|
||||||
|
<Vignette />
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import ToastrWrapper from '@/components/Others/Notifications/ToastrWrapper'
|
import ToastrWrapper from "@/components/Others/Notifications/ToastrWrapper";
|
||||||
import MobileNavigation from '@/components/Others/MobileNavigation'
|
import MobileNavigation from "@/components/Others/MobileNavigation";
|
||||||
import CookieDisclaimer from '@/components/Others/CookieDisclaimer'
|
import CookieDisclaimer from "@/components/Others/CookieDisclaimer";
|
||||||
import MobileMenu from '@/components/FilesView/MobileMenu'
|
import FileFullPreview from "@/components/FilesView/FileFullPreview";
|
||||||
import ShareCreate from '@/components/Others/ShareCreate'
|
import MobileMenu from "@/components/FilesView/MobileMenu";
|
||||||
import Confirm from '@/components/Others/Popup/Confirm'
|
import ShareCreate from "@/components/Others/ShareCreate";
|
||||||
import ShareEdit from '@/components/Others/ShareEdit'
|
import Confirm from "@/components/Others/Popup/Confirm";
|
||||||
import MoveItem from '@/components/Others/MoveItem'
|
import ShareEdit from "@/components/Others/ShareEdit";
|
||||||
import Vignette from '@/components/Others/Vignette'
|
import MoveItem from "@/components/Others/MoveItem";
|
||||||
import MenuBar from '@/components/Sidebar/MenuBar'
|
import Vignette from "@/components/Others/Vignette";
|
||||||
import Alert from '@/components/FilesView/Alert'
|
import MenuBar from "@/components/Sidebar/MenuBar";
|
||||||
import {includes} from 'lodash'
|
import Alert from "@/components/FilesView/Alert";
|
||||||
import {mapGetters} from 'vuex'
|
import { includes } from "lodash";
|
||||||
import {events} from "./bus"
|
import { mapGetters } from "vuex";
|
||||||
|
import { events } from "./bus";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'app',
|
name: "app",
|
||||||
components: {
|
components: {
|
||||||
MobileNavigation,
|
MobileNavigation,
|
||||||
CookieDisclaimer,
|
CookieDisclaimer,
|
||||||
ToastrWrapper,
|
ToastrWrapper,
|
||||||
ShareCreate,
|
ShareCreate,
|
||||||
MobileMenu,
|
FileFullPreview,
|
||||||
ShareEdit,
|
MobileMenu,
|
||||||
MoveItem,
|
ShareEdit,
|
||||||
Vignette,
|
MoveItem,
|
||||||
Confirm,
|
Vignette,
|
||||||
MenuBar,
|
Confirm,
|
||||||
Alert,
|
MenuBar,
|
||||||
},
|
Alert,
|
||||||
computed: {
|
},
|
||||||
...mapGetters([
|
computed: {
|
||||||
'isLogged', 'isGuest', 'config'
|
...mapGetters(["isLogged", "isGuest", "config"]),
|
||||||
]),
|
layout() {
|
||||||
layout() {
|
if (
|
||||||
if (includes([
|
includes(
|
||||||
'InstallationDisclaimer',
|
[
|
||||||
'SubscriptionService',
|
"InstallationDisclaimer",
|
||||||
'StripeCredentials',
|
"SubscriptionService",
|
||||||
'SubscriptionPlans',
|
"StripeCredentials",
|
||||||
'ForgottenPassword',
|
"SubscriptionPlans",
|
||||||
'CreateNewPassword',
|
"ForgottenPassword",
|
||||||
'EnvironmentSetup',
|
"CreateNewPassword",
|
||||||
'VerifyByPassword',
|
"EnvironmentSetup",
|
||||||
'SaaSLandingPage',
|
"VerifyByPassword",
|
||||||
'BillingsDetail',
|
"SaaSLandingPage",
|
||||||
'NotFoundShared',
|
"BillingsDetail",
|
||||||
'AdminAccount',
|
"NotFoundShared",
|
||||||
'PurchaseCode',
|
"AdminAccount",
|
||||||
'DynamicPage',
|
"PurchaseCode",
|
||||||
'SharedPage',
|
"DynamicPage",
|
||||||
'ContactUs',
|
"SharedPage",
|
||||||
'AppSetup',
|
"ContactUs",
|
||||||
'Database',
|
"AppSetup",
|
||||||
'Upgrade',
|
"Database",
|
||||||
'SignIn',
|
"Upgrade",
|
||||||
'SignUp',
|
"SignIn",
|
||||||
], this.$route.name)
|
"SignUp",
|
||||||
) {
|
],
|
||||||
return 'unauthorized'
|
this.$route.name
|
||||||
}
|
)
|
||||||
|
) {
|
||||||
|
return "unauthorized";
|
||||||
|
}
|
||||||
|
|
||||||
return 'authorized'
|
return "authorized";
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
isScaledDown: false,
|
isScaledDown: false,
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
beforeMount() {
|
beforeMount() {
|
||||||
|
// Store config to vuex
|
||||||
|
this.$store.commit("INIT", {
|
||||||
|
authCookie: this.$root.$data.config.hasAuthCookie,
|
||||||
|
config: this.$root.$data.config,
|
||||||
|
rootDirectory: {
|
||||||
|
name: this.$t("locations.home"),
|
||||||
|
location: "base",
|
||||||
|
unique_id: 0,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
// Store config to vuex
|
// Get installation state
|
||||||
this.$store.commit('INIT', {
|
let installation = this.$root.$data.config.installation;
|
||||||
authCookie: this.$root.$data.config.hasAuthCookie,
|
|
||||||
config: this.$root.$data.config,
|
|
||||||
rootDirectory: {
|
|
||||||
name: this.$t('locations.home'),
|
|
||||||
location: 'base',
|
|
||||||
unique_id: 0,
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
// Get installation state
|
// Redirect to database verify code
|
||||||
let installation = this.$root.$data.config.installation
|
if (installation === "setup-database") {
|
||||||
|
this.$router.push({ name: "PurchaseCode" });
|
||||||
// Redirect to database verify code
|
|
||||||
if ( installation === 'setup-database') {
|
|
||||||
this.$router.push({name: 'PurchaseCode'})
|
|
||||||
}
|
|
||||||
|
|
||||||
// Redirect to starting installation process
|
|
||||||
if ( installation === 'setup-disclaimer' ) {
|
|
||||||
this.$router.push({name: 'InstallationDisclaimer'})
|
|
||||||
}
|
|
||||||
},
|
|
||||||
mounted() {
|
|
||||||
// Handle mobile navigation scale animation
|
|
||||||
events.$on('show:mobile-navigation', () => this.isScaledDown = true)
|
|
||||||
events.$on('hide:mobile-navigation', () => this.isScaledDown = false)
|
|
||||||
events.$on('mobileMenu:show', () => this.isScaledDown = true)
|
|
||||||
events.$on('fileItem:deselect', () => this.isScaledDown = false)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Redirect to starting installation process
|
||||||
|
if (installation === "setup-disclaimer") {
|
||||||
|
this.$router.push({ name: "InstallationDisclaimer" });
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
// Handle mobile navigation scale animation
|
||||||
|
events.$on("show:mobile-navigation", () => (this.isScaledDown = true));
|
||||||
|
events.$on("hide:mobile-navigation", () => (this.isScaledDown = false));
|
||||||
|
events.$on("mobileMenu:show", () => (this.isScaledDown = true));
|
||||||
|
events.$on("fileItem:deselect", () => (this.isScaledDown = false));
|
||||||
|
},
|
||||||
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
@import url('https://fonts.googleapis.com/css2?family=Nunito:wght@200;300;400;600;700;800;900&display=swap');
|
@import url("https://fonts.googleapis.com/css2?family=Nunito:wght@200;300;400;600;700;800;900&display=swap");
|
||||||
@import '@assets/vue-file-manager/_variables';
|
@import "@assets/vue-file-manager/_variables";
|
||||||
@import '@assets/vue-file-manager/_mixins';
|
@import "@assets/vue-file-manager/_mixins";
|
||||||
|
|
||||||
[v-cloak],
|
[v-cloak],
|
||||||
[v-cloak] > * {
|
[v-cloak] > * {
|
||||||
display: none
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
* {
|
* {
|
||||||
outline: 0;
|
outline: 0;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
font-family: 'Nunito', sans-serif;
|
font-family: "Nunito", sans-serif;
|
||||||
-webkit-font-smoothing: antialiased;
|
-webkit-font-smoothing: antialiased;
|
||||||
-moz-osx-font-smoothing: grayscale;
|
-moz-osx-font-smoothing: grayscale;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
|
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
color: $text;
|
color: $text;
|
||||||
}
|
}
|
||||||
|
|
||||||
#auth {
|
#auth {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
#vue-file-manager {
|
#vue-file-manager {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
scroll-behavior:smooth;
|
scroll-behavior: smooth;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (max-width: 690px) {
|
@media only screen and (max-width: 690px) {
|
||||||
|
.is-scaled-down {
|
||||||
.is-scaled-down {
|
@include transform(scale(0.95));
|
||||||
@include transform(scale(0.95));
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
// Dark mode support
|
||||||
// Dark mode support
|
@media (prefers-color-scheme: dark) {
|
||||||
@media (prefers-color-scheme: dark) {
|
* {
|
||||||
|
color: $dark_mode_text_primary;
|
||||||
* {
|
}
|
||||||
color: $dark_mode_text_primary;
|
|
||||||
}
|
body,
|
||||||
|
html {
|
||||||
body, html {
|
background: $dark_mode_background;
|
||||||
background: $dark_mode_background;
|
color: $dark_mode_text_primary;
|
||||||
color: $dark_mode_text_primary;
|
|
||||||
|
img {
|
||||||
img {
|
opacity: 0.95;
|
||||||
opacity: .95;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,473 +1,514 @@
|
|||||||
<template>
|
<template>
|
||||||
|
<div
|
||||||
|
class="file-wrapper"
|
||||||
|
@click.stop="clickedItem"
|
||||||
|
@dblclick="goToItem"
|
||||||
|
spellcheck="false"
|
||||||
|
>
|
||||||
|
<!--List preview-->
|
||||||
<div
|
<div
|
||||||
class="file-wrapper"
|
:draggable="canDrag"
|
||||||
@click.stop="clickedItem"
|
@dragstart="$emit('dragstart')"
|
||||||
@dblclick="goToItem"
|
@drop="
|
||||||
spellcheck="false"
|
$emit('drop');
|
||||||
|
area = false;
|
||||||
|
"
|
||||||
|
@dragleave="dragLeave"
|
||||||
|
@dragover.prevent="dragEnter"
|
||||||
|
class="file-item"
|
||||||
|
:class="{ 'is-clicked': isClicked, 'is-dragenter': area }"
|
||||||
>
|
>
|
||||||
<!--List preview-->
|
<!--Thumbnail for item-->
|
||||||
<div
|
<div class="icon-item">
|
||||||
:draggable="canDrag"
|
<!--If is file or image, then link item-->
|
||||||
@dragstart="$emit('dragstart')"
|
<span v-if="isFile" class="file-icon-text">
|
||||||
@drop="
|
{{ data.mimetype | limitCharacters }}
|
||||||
$emit('drop')
|
</span>
|
||||||
area = false
|
|
||||||
"
|
<!--Folder thumbnail-->
|
||||||
@dragleave="dragLeave"
|
<FontAwesomeIcon v-if="isFile" class="file-icon" icon="file" />
|
||||||
@dragover.prevent="dragEnter"
|
|
||||||
class="file-item"
|
<!--Image thumbnail-->
|
||||||
:class="{ 'is-clicked': isClicked, 'is-dragenter': area }"
|
<img
|
||||||
|
v-if="isImage"
|
||||||
|
class="image"
|
||||||
|
:src="data.thumbnail"
|
||||||
|
:alt="data.name"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<!--Else show only folder icon-->
|
||||||
|
<FontAwesomeIcon
|
||||||
|
v-if="isFolder"
|
||||||
|
:class="{ 'is-deleted': isDeleted }"
|
||||||
|
class="folder-icon"
|
||||||
|
icon="folder"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!--Name-->
|
||||||
|
<div class="item-name">
|
||||||
|
<!--Name-->
|
||||||
|
<b
|
||||||
|
ref="name"
|
||||||
|
@input="renameItem"
|
||||||
|
:contenteditable="canEditName"
|
||||||
|
class="name"
|
||||||
>
|
>
|
||||||
<!--Thumbnail for item-->
|
{{ itemName }}
|
||||||
<div class="icon-item">
|
</b>
|
||||||
<!--If is file or image, then link item-->
|
|
||||||
<span v-if="isFile" class="file-icon-text">
|
|
||||||
{{ data.mimetype | limitCharacters }}
|
|
||||||
</span>
|
|
||||||
|
|
||||||
<!--Folder thumbnail-->
|
<div class="item-info">
|
||||||
<FontAwesomeIcon v-if="isFile" class="file-icon" icon="file"/>
|
<!--Shared Icon-->
|
||||||
|
<div
|
||||||
|
v-if="$checkPermission('master') && data.shared"
|
||||||
|
class="item-shared"
|
||||||
|
>
|
||||||
|
<link-icon size="12" class="shared-icon"></link-icon>
|
||||||
|
</div>
|
||||||
|
|
||||||
<!--Image thumbnail-->
|
<!--Participant owner Icon-->
|
||||||
<img v-if="isImage" class="image" :src="data.thumbnail" :alt="data.name"/>
|
<div
|
||||||
|
v-if="$checkPermission('master') && data.user_scope !== 'master'"
|
||||||
|
class="item-shared"
|
||||||
|
>
|
||||||
|
<user-plus-icon size="12" class="shared-icon"></user-plus-icon>
|
||||||
|
</div>
|
||||||
|
|
||||||
<!--Else show only folder icon-->
|
<!--Filesize and timestamp-->
|
||||||
<FontAwesomeIcon v-if="isFolder" :class="{'is-deleted': isDeleted}" class="folder-icon" icon="folder"/>
|
<span v-if="!isFolder" class="item-size"
|
||||||
</div>
|
>{{ data.filesize }}, {{ timeStamp }}</span
|
||||||
|
>
|
||||||
|
|
||||||
<!--Name-->
|
<!--Folder item counts-->
|
||||||
<div class="item-name">
|
<span v-if="isFolder" class="item-length">
|
||||||
<!--Name-->
|
{{
|
||||||
<b
|
folderItems == 0
|
||||||
ref="name"
|
? $t("folder.empty")
|
||||||
@input="renameItem"
|
: $tc("folder.item_counts", folderItems)
|
||||||
:contenteditable="canEditName"
|
}}, {{ timeStamp }}
|
||||||
class="name"
|
</span>
|
||||||
>
|
|
||||||
{{ itemName }}
|
|
||||||
</b>
|
|
||||||
|
|
||||||
<div class="item-info">
|
|
||||||
|
|
||||||
<!--Shared Icon-->
|
|
||||||
<div v-if="$checkPermission('master') && data.shared" class="item-shared">
|
|
||||||
<link-icon size="12" class="shared-icon"></link-icon>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!--Participant owner Icon-->
|
|
||||||
<div v-if="$checkPermission('master') && data.user_scope !== 'master'" class="item-shared">
|
|
||||||
<user-plus-icon size="12" class="shared-icon"></user-plus-icon>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!--Filesize and timestamp-->
|
|
||||||
<span v-if="! isFolder" class="item-size">{{ data.filesize }}, {{ timeStamp }}</span>
|
|
||||||
|
|
||||||
<!--Folder item counts-->
|
|
||||||
<span v-if="isFolder" class="item-length">
|
|
||||||
{{ folderItems == 0 ? $t('folder.empty') : $tc('folder.item_counts', folderItems) }}, {{ timeStamp }}
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!--Go Next icon-->
|
|
||||||
<div class="actions" v-if="$isMobile() && ! ( $checkPermission('visitor') && isFolder )">
|
|
||||||
<span @click.stop="showItemActions" class="show-actions">
|
|
||||||
<FontAwesomeIcon icon="ellipsis-v" class="icon-action"></FontAwesomeIcon>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!--Go Next icon-->
|
||||||
|
<div
|
||||||
|
class="actions"
|
||||||
|
v-if="$isMobile() && !($checkPermission('visitor') && isFolder)"
|
||||||
|
>
|
||||||
|
<span @click.stop="showItemActions" class="show-actions">
|
||||||
|
<FontAwesomeIcon
|
||||||
|
icon="ellipsis-v"
|
||||||
|
class="icon-action"
|
||||||
|
></FontAwesomeIcon>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { LinkIcon, UserPlusIcon } from 'vue-feather-icons'
|
import { LinkIcon, UserPlusIcon } from "vue-feather-icons";
|
||||||
import {debounce} from 'lodash'
|
import { debounce } from "lodash";
|
||||||
import {mapGetters} from 'vuex'
|
import { mapGetters } from "vuex";
|
||||||
import {events} from '@/bus'
|
import { events } from "@/bus";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'FileItemList',
|
name: "FileItemList",
|
||||||
props: ['data'],
|
props: ["data"],
|
||||||
components: {
|
components: {
|
||||||
UserPlusIcon,
|
UserPlusIcon,
|
||||||
LinkIcon,
|
LinkIcon,
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
...mapGetters(['FilePreviewType']),
|
...mapGetters(["FilePreviewType"]),
|
||||||
isFolder() {
|
isFolder() {
|
||||||
return this.data.type === 'folder'
|
return this.data.type === "folder";
|
||||||
},
|
},
|
||||||
isFile() {
|
isFile() {
|
||||||
return this.data.type !== 'folder' && this.data.type !== 'image'
|
return this.data.type !== "folder" && this.data.type !== "image";
|
||||||
},
|
},
|
||||||
isImage() {
|
isImage() {
|
||||||
return this.data.type === 'image'
|
return this.data.type === "image";
|
||||||
},
|
},
|
||||||
canEditName() {
|
isPdf() {
|
||||||
return !this.$isMobile()
|
return this.data.mimetype === "pdf";
|
||||||
&& !this.$isThisLocation(['trash', 'trash-root'])
|
},
|
||||||
&& !this.$checkPermission('visitor')
|
isVideo() {
|
||||||
&& !(this.sharedDetail && this.sharedDetail.type === 'file')
|
return this.data.type === "video";
|
||||||
},
|
},
|
||||||
canDrag() {
|
canEditName() {
|
||||||
return !this.isDeleted && this.$checkPermission(['master', 'editor'])
|
return (
|
||||||
},
|
!this.$isMobile() &&
|
||||||
timeStamp() {
|
!this.$isThisLocation(["trash", "trash-root"]) &&
|
||||||
return this.data.deleted_at ? this.$t('item_thumbnail.deleted_at', {time: this.data.deleted_at}) : this.data.created_at
|
!this.$checkPermission("visitor") &&
|
||||||
},
|
!(this.sharedDetail && this.sharedDetail.type === "file")
|
||||||
folderItems() {
|
);
|
||||||
return this.data.deleted_at ? this.data.trashed_items : this.data.items
|
},
|
||||||
},
|
canDrag() {
|
||||||
isDeleted() {
|
return !this.isDeleted && this.$checkPermission(["master", "editor"]);
|
||||||
return this.data.deleted_at ? true : false
|
},
|
||||||
}
|
timeStamp() {
|
||||||
},
|
return this.data.deleted_at
|
||||||
filters: {
|
? this.$t("item_thumbnail.deleted_at", { time: this.data.deleted_at })
|
||||||
limitCharacters(str) {
|
: this.data.created_at;
|
||||||
|
},
|
||||||
|
folderItems() {
|
||||||
|
return this.data.deleted_at ? this.data.trashed_items : this.data.items;
|
||||||
|
},
|
||||||
|
isDeleted() {
|
||||||
|
return this.data.deleted_at ? true : false;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
filters: {
|
||||||
|
limitCharacters(str) {
|
||||||
|
if (str.length > 3) {
|
||||||
|
return str.substring(0, 3) + "...";
|
||||||
|
} else {
|
||||||
|
return str.substring(0, 3);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
isClicked: false,
|
||||||
|
area: false,
|
||||||
|
itemName: undefined,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
showItemActions() {
|
||||||
|
// Load file info detail
|
||||||
|
this.$store.commit("GET_FILEINFO_DETAIL", this.data);
|
||||||
|
|
||||||
if (str.length > 3) {
|
//this.isClicked = true
|
||||||
return str.substring(0, 3) + '...';
|
|
||||||
} else {
|
|
||||||
return str.substring(0, 3);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
events.$emit("mobileMenu:show");
|
||||||
},
|
},
|
||||||
data() {
|
dragEnter() {
|
||||||
return {
|
if (this.data.type !== "folder") return;
|
||||||
isClicked: false,
|
|
||||||
area: false,
|
|
||||||
itemName: undefined,
|
|
||||||
}
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
showItemActions() {
|
|
||||||
// Load file info detail
|
|
||||||
this.$store.commit('GET_FILEINFO_DETAIL', this.data)
|
|
||||||
|
|
||||||
//this.isClicked = true
|
this.area = true;
|
||||||
|
},
|
||||||
|
dragLeave() {
|
||||||
|
this.area = false;
|
||||||
|
},
|
||||||
|
clickedItem(e) {
|
||||||
|
events.$emit("contextMenu:hide");
|
||||||
|
events.$emit("fileItem:deselect");
|
||||||
|
|
||||||
events.$emit('mobileMenu:show')
|
// Set clicked item
|
||||||
},
|
this.isClicked = true;
|
||||||
dragEnter() {
|
|
||||||
if (this.data.type !== 'folder') return
|
|
||||||
|
|
||||||
this.area = true
|
// Open in mobile version on first click
|
||||||
},
|
if (this.$isMobile() && this.isFolder) {
|
||||||
dragLeave() {
|
// Go to folder
|
||||||
this.area = false
|
if (this.$isThisLocation("public")) {
|
||||||
},
|
this.$store.dispatch("browseShared", [
|
||||||
clickedItem(e) {
|
{ folder: this.data, back: false, init: false },
|
||||||
events.$emit('contextMenu:hide')
|
]);
|
||||||
events.$emit('fileItem:deselect')
|
} else {
|
||||||
|
this.$store.dispatch("getFolder", [
|
||||||
|
{ folder: this.data, back: false, init: false },
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Set clicked item
|
if (this.$isMobile()) {
|
||||||
this.isClicked = true
|
if (this.isImage || this.isVideo) {
|
||||||
|
events.$emit("fileFullPreview:show");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Open in mobile version on first click
|
// Load file info detail
|
||||||
if (this.$isMobile() && this.isFolder) {
|
this.$store.commit("GET_FILEINFO_DETAIL", this.data);
|
||||||
|
|
||||||
// Go to folder
|
// Get target classname
|
||||||
if (this.$isThisLocation('public')) {
|
let itemClass = e.target.className;
|
||||||
this.$store.dispatch('browseShared', [{folder: this.data, back: false, init: false}])
|
|
||||||
} else {
|
|
||||||
this.$store.dispatch('getFolder', [{folder: this.data, back: false, init: false}])
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Load file info detail
|
if (["name", "icon", "file-link", "file-icon-text"].includes(itemClass))
|
||||||
this.$store.commit('GET_FILEINFO_DETAIL', this.data)
|
return;
|
||||||
|
},
|
||||||
|
goToItem() {
|
||||||
|
if (this.isImage || this.isVideo) {
|
||||||
|
// this.$openImageOnNewTab(this.data.file_url)
|
||||||
|
events.$emit("fileFullPreview:show");
|
||||||
|
}
|
||||||
|
|
||||||
// Get target classname
|
if (this.isFile && !this.isPdf && !this.isVideo) {
|
||||||
let itemClass = e.target.className
|
this.$downloadFile(
|
||||||
|
this.data.file_url,
|
||||||
|
this.data.name + "." + this.data.mimetype
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
if (['name', 'icon', 'file-link', 'file-icon-text'].includes(itemClass))
|
if (this.isFolder) {
|
||||||
return
|
if (this.$isThisLocation("public")) {
|
||||||
},
|
this.$store.dispatch("browseShared", [
|
||||||
goToItem() {
|
{ folder: this.data, back: false, init: false },
|
||||||
if (this.isImage) {
|
]);
|
||||||
this.$openImageOnNewTab(this.data.file_url)
|
} else {
|
||||||
}
|
this.$store.dispatch("getFolder", [
|
||||||
|
{ folder: this.data, back: false, init: false },
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
renameItem: debounce(function (e) {
|
||||||
|
// Prevent submit empty string
|
||||||
|
if (e.target.innerText.trim() === "") return;
|
||||||
|
|
||||||
if (this.isFile) {
|
this.$store.dispatch("renameItem", {
|
||||||
this.$downloadFile(
|
unique_id: this.data.unique_id,
|
||||||
this.data.file_url,
|
type: this.data.type,
|
||||||
this.data.name + '.' + this.data.mimetype
|
name: e.target.innerText,
|
||||||
)
|
});
|
||||||
}
|
}, 300),
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.itemName = this.data.name;
|
||||||
|
|
||||||
if (this.isFolder) {
|
events.$on("fileItem:deselect", () => {
|
||||||
|
// Deselect file
|
||||||
|
this.isClicked = false;
|
||||||
|
});
|
||||||
|
|
||||||
if (this.$isThisLocation('public')) {
|
// Change item name
|
||||||
this.$store.dispatch('browseShared', [{folder: this.data, back: false, init: false}])
|
events.$on("change:name", (item) => {
|
||||||
} else {
|
if (this.data.unique_id == item.unique_id) this.itemName = item.name;
|
||||||
this.$store.dispatch('getFolder', [{folder: this.data, back: false, init: false}])
|
});
|
||||||
}
|
},
|
||||||
}
|
};
|
||||||
},
|
|
||||||
renameItem: debounce(function (e) {
|
|
||||||
|
|
||||||
// Prevent submit empty string
|
|
||||||
if (e.target.innerText.trim() === '') return
|
|
||||||
|
|
||||||
this.$store.dispatch('renameItem', {
|
|
||||||
unique_id: this.data.unique_id,
|
|
||||||
type: this.data.type,
|
|
||||||
name: e.target.innerText
|
|
||||||
})
|
|
||||||
}, 300)
|
|
||||||
},
|
|
||||||
created() {
|
|
||||||
this.itemName = this.data.name
|
|
||||||
|
|
||||||
events.$on('fileItem:deselect', () => {
|
|
||||||
// Deselect file
|
|
||||||
this.isClicked = false
|
|
||||||
})
|
|
||||||
|
|
||||||
// Change item name
|
|
||||||
events.$on('change:name', (item) => {
|
|
||||||
if (this.data.unique_id == item.unique_id) this.itemName = item.name
|
|
||||||
})
|
|
||||||
},
|
|
||||||
}
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
@import '@assets/vue-file-manager/_variables';
|
@import "@assets/vue-file-manager/_variables";
|
||||||
@import '@assets/vue-file-manager/_mixins';
|
@import "@assets/vue-file-manager/_mixins";
|
||||||
|
|
||||||
.file-wrapper {
|
.file-wrapper {
|
||||||
user-select: none;
|
user-select: none;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
border-color: transparent;
|
border-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.actions {
|
||||||
|
text-align: right;
|
||||||
|
width: 50px;
|
||||||
|
|
||||||
|
.show-actions {
|
||||||
|
cursor: pointer;
|
||||||
|
padding: 12px 6px 12px;
|
||||||
|
|
||||||
|
.icon-action {
|
||||||
|
@include font-size(14);
|
||||||
|
|
||||||
|
path {
|
||||||
|
fill: $theme;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.actions {
|
.item-name {
|
||||||
text-align: right;
|
display: block;
|
||||||
width: 50px;
|
width: 100%;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
|
||||||
.show-actions {
|
.item-info {
|
||||||
cursor: pointer;
|
display: block;
|
||||||
padding: 12px 6px 12px;
|
line-height: 1;
|
||||||
|
|
||||||
.icon-action {
|
|
||||||
@include font-size(14);
|
|
||||||
|
|
||||||
path {
|
|
||||||
fill: $theme;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.item-name {
|
|
||||||
display: block;
|
|
||||||
width: 100%;
|
|
||||||
overflow: hidden;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
white-space: nowrap;
|
|
||||||
|
|
||||||
.item-info {
|
|
||||||
display: block;
|
|
||||||
line-height: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.item-shared {
|
|
||||||
display: inline-block;
|
|
||||||
|
|
||||||
.label {
|
|
||||||
@include font-size(12);
|
|
||||||
font-weight: 400;
|
|
||||||
color: $theme;
|
|
||||||
}
|
|
||||||
|
|
||||||
.shared-icon {
|
|
||||||
vertical-align: middle;
|
|
||||||
|
|
||||||
path, circle, line {
|
|
||||||
stroke: $theme;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.item-size,
|
|
||||||
.item-length {
|
|
||||||
@include font-size(11);
|
|
||||||
font-weight: 400;
|
|
||||||
color: rgba($text, 0.7);
|
|
||||||
}
|
|
||||||
|
|
||||||
.name {
|
|
||||||
white-space: nowrap;
|
|
||||||
|
|
||||||
&[contenteditable] {
|
|
||||||
-webkit-user-select: text;
|
|
||||||
user-select: text;
|
|
||||||
}
|
|
||||||
|
|
||||||
&[contenteditable='true']:hover {
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.name {
|
|
||||||
color: $text;
|
|
||||||
@include font-size(14);
|
|
||||||
font-weight: 700;
|
|
||||||
max-height: 40px;
|
|
||||||
overflow: hidden;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
|
|
||||||
&.actived {
|
|
||||||
max-height: initial;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&.selected {
|
|
||||||
.file-item {
|
|
||||||
background: $light_background;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-item {
|
|
||||||
text-align: center;
|
|
||||||
position: relative;
|
|
||||||
flex: 0 0 50px;
|
|
||||||
line-height: 0;
|
|
||||||
margin-right: 20px;
|
|
||||||
|
|
||||||
.folder-icon {
|
|
||||||
@include font-size(52);
|
|
||||||
|
|
||||||
path {
|
|
||||||
fill: $theme;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.is-deleted {
|
|
||||||
path {
|
|
||||||
fill: $dark_background;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.file-icon {
|
|
||||||
@include font-size(45);
|
|
||||||
|
|
||||||
path {
|
|
||||||
fill: #fafafc;
|
|
||||||
stroke: #dfe0e8;
|
|
||||||
stroke-width: 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.file-icon-text {
|
|
||||||
line-height: 1;
|
|
||||||
top: 40%;
|
|
||||||
@include font-size(11);
|
|
||||||
margin: 0 auto;
|
|
||||||
position: absolute;
|
|
||||||
text-align: center;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
color: $theme;
|
|
||||||
font-weight: 600;
|
|
||||||
user-select: none;
|
|
||||||
max-width: 50px;
|
|
||||||
max-height: 20px;
|
|
||||||
overflow: hidden;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
white-space: nowrap;
|
|
||||||
}
|
|
||||||
|
|
||||||
.image {
|
|
||||||
object-fit: cover;
|
|
||||||
user-select: none;
|
|
||||||
max-width: 100%;
|
|
||||||
border-radius: 5px;
|
|
||||||
width: 50px;
|
|
||||||
height: 50px;
|
|
||||||
pointer-events: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.file-item {
|
|
||||||
border: 2px dashed transparent;
|
|
||||||
width: 100%;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
padding: 7px;
|
|
||||||
|
|
||||||
&.is-dragenter {
|
|
||||||
border: 2px dashed $theme;
|
|
||||||
border-radius: 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:hover,
|
|
||||||
&.is-clicked {
|
|
||||||
border-radius: 8px;
|
|
||||||
background: $light_background;
|
|
||||||
|
|
||||||
.item-name .name {
|
|
||||||
color: $theme;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (prefers-color-scheme: dark) {
|
.item-shared {
|
||||||
|
display: inline-block;
|
||||||
|
|
||||||
.file-wrapper {
|
.label {
|
||||||
|
@include font-size(12);
|
||||||
|
font-weight: 400;
|
||||||
|
color: $theme;
|
||||||
|
}
|
||||||
|
|
||||||
.icon-item {
|
.shared-icon {
|
||||||
.file-icon {
|
vertical-align: middle;
|
||||||
|
|
||||||
path {
|
path,
|
||||||
fill: $dark_mode_foreground;
|
circle,
|
||||||
stroke: #2F3C54;
|
line {
|
||||||
}
|
stroke: $theme;
|
||||||
}
|
|
||||||
|
|
||||||
.folder-icon {
|
|
||||||
|
|
||||||
&.is-deleted {
|
|
||||||
path {
|
|
||||||
fill: lighten($dark_mode_foreground, 5%);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.file-item {
|
|
||||||
|
|
||||||
&:hover,
|
|
||||||
&.is-clicked {
|
|
||||||
background: $dark_mode_foreground;
|
|
||||||
|
|
||||||
.file-icon {
|
|
||||||
|
|
||||||
path {
|
|
||||||
fill: $dark_mode_background;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.item-name {
|
|
||||||
|
|
||||||
.name {
|
|
||||||
color: $dark_mode_text_primary;
|
|
||||||
}
|
|
||||||
|
|
||||||
.item-size,
|
|
||||||
.item-length {
|
|
||||||
color: $dark_mode_text_secondary;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.item-size,
|
||||||
|
.item-length {
|
||||||
|
@include font-size(11);
|
||||||
|
font-weight: 400;
|
||||||
|
color: rgba($text, 0.7);
|
||||||
|
}
|
||||||
|
|
||||||
|
.name {
|
||||||
|
white-space: nowrap;
|
||||||
|
|
||||||
|
&[contenteditable] {
|
||||||
|
-webkit-user-select: text;
|
||||||
|
user-select: text;
|
||||||
|
}
|
||||||
|
|
||||||
|
&[contenteditable="true"]:hover {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.name {
|
||||||
|
color: $text;
|
||||||
|
@include font-size(14);
|
||||||
|
font-weight: 700;
|
||||||
|
max-height: 40px;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
|
||||||
|
&.actived {
|
||||||
|
max-height: initial;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.selected {
|
||||||
|
.file-item {
|
||||||
|
background: $light_background;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-item {
|
||||||
|
text-align: center;
|
||||||
|
position: relative;
|
||||||
|
flex: 0 0 50px;
|
||||||
|
line-height: 0;
|
||||||
|
margin-right: 20px;
|
||||||
|
|
||||||
|
.folder-icon {
|
||||||
|
@include font-size(52);
|
||||||
|
|
||||||
|
path {
|
||||||
|
fill: $theme;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.is-deleted {
|
||||||
|
path {
|
||||||
|
fill: $dark_background;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.file-icon {
|
||||||
|
@include font-size(45);
|
||||||
|
|
||||||
|
path {
|
||||||
|
fill: #fafafc;
|
||||||
|
stroke: #dfe0e8;
|
||||||
|
stroke-width: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.file-icon-text {
|
||||||
|
line-height: 1;
|
||||||
|
top: 40%;
|
||||||
|
@include font-size(11);
|
||||||
|
margin: 0 auto;
|
||||||
|
position: absolute;
|
||||||
|
text-align: center;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
color: $theme;
|
||||||
|
font-weight: 600;
|
||||||
|
user-select: none;
|
||||||
|
max-width: 50px;
|
||||||
|
max-height: 20px;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.image {
|
||||||
|
object-fit: cover;
|
||||||
|
user-select: none;
|
||||||
|
max-width: 100%;
|
||||||
|
border-radius: 5px;
|
||||||
|
width: 50px;
|
||||||
|
height: 50px;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.file-item {
|
||||||
|
border: 2px dashed transparent;
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
padding: 7px;
|
||||||
|
|
||||||
|
&.is-dragenter {
|
||||||
|
border: 2px dashed $theme;
|
||||||
|
border-radius: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover,
|
||||||
|
&.is-clicked {
|
||||||
|
border-radius: 8px;
|
||||||
|
background: $light_background;
|
||||||
|
|
||||||
|
.item-name .name {
|
||||||
|
color: $theme;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (prefers-color-scheme: dark) {
|
||||||
|
.file-wrapper {
|
||||||
|
.icon-item {
|
||||||
|
.file-icon {
|
||||||
|
path {
|
||||||
|
fill: $dark_mode_foreground;
|
||||||
|
stroke: #2f3c54;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.folder-icon {
|
||||||
|
&.is-deleted {
|
||||||
|
path {
|
||||||
|
fill: lighten($dark_mode_foreground, 5%);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.file-item {
|
||||||
|
&:hover,
|
||||||
|
&.is-clicked {
|
||||||
|
background: $dark_mode_foreground;
|
||||||
|
|
||||||
|
.file-icon {
|
||||||
|
path {
|
||||||
|
fill: $dark_mode_background;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.item-name {
|
||||||
|
.name {
|
||||||
|
color: $dark_mode_text_primary;
|
||||||
|
}
|
||||||
|
|
||||||
|
.item-size,
|
||||||
|
.item-length {
|
||||||
|
color: $dark_mode_text_secondary;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,75 +1,108 @@
|
|||||||
<template>
|
<template>
|
||||||
<button class="button" :title="action">
|
<button class="button" :title="action">
|
||||||
<corner-down-right-icon v-if="source === 'move'" size="19"></corner-down-right-icon>
|
<corner-down-right-icon
|
||||||
<folder-plus-icon v-if="source === 'folder-plus'" size="19"></folder-plus-icon>
|
v-if="source === 'move'"
|
||||||
<trash-2-icon v-if="source === 'trash'" size="19"></trash-2-icon>
|
size="19"
|
||||||
<list-icon v-if="source === 'th-list'" size="19"></list-icon>
|
></corner-down-right-icon>
|
||||||
<info-icon v-if="source === 'info'" size="19"></info-icon>
|
<download-cloud-icon
|
||||||
<grid-icon v-if="source === 'th'" size="19"></grid-icon>
|
v-if="source === 'download'"
|
||||||
<link-icon v-if="source === 'share'" size="19"></link-icon>
|
size="19"
|
||||||
</button>
|
></download-cloud-icon>
|
||||||
|
<folder-plus-icon
|
||||||
|
v-if="source === 'folder-plus'"
|
||||||
|
size="19"
|
||||||
|
></folder-plus-icon>
|
||||||
|
<edit-2-icon v-if="source === 'rename'" size="19"></edit-2-icon>
|
||||||
|
<printer-icon v-if="source === 'print'" size="19"></printer-icon>
|
||||||
|
<trash-2-icon v-if="source === 'trash'" size="19"></trash-2-icon>
|
||||||
|
<list-icon v-if="source === 'th-list'" size="19"></list-icon>
|
||||||
|
<info-icon v-if="source === 'info'" size="19"></info-icon>
|
||||||
|
<grid-icon v-if="source === 'th'" size="19"></grid-icon>
|
||||||
|
<link-icon v-if="source === 'share'" size="19"></link-icon>
|
||||||
|
</button>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import {FolderPlusIcon, Trash2Icon, GridIcon, ListIcon, InfoIcon, CornerDownRightIcon, LinkIcon} from 'vue-feather-icons'
|
import {
|
||||||
|
FolderPlusIcon,
|
||||||
|
Trash2Icon,
|
||||||
|
GridIcon,
|
||||||
|
ListIcon,
|
||||||
|
Edit2Icon,
|
||||||
|
InfoIcon,
|
||||||
|
CornerDownRightIcon,
|
||||||
|
LinkIcon,
|
||||||
|
DownloadCloudIcon,
|
||||||
|
PrinterIcon,
|
||||||
|
} from "vue-feather-icons";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'ToolbarButton',
|
name: "ToolbarButton",
|
||||||
props: ['source', 'action'],
|
props: ["source", "action"],
|
||||||
components: {
|
components: {
|
||||||
CornerDownRightIcon,
|
CornerDownRightIcon,
|
||||||
FolderPlusIcon,
|
DownloadCloudIcon,
|
||||||
Trash2Icon,
|
FolderPlusIcon,
|
||||||
ListIcon,
|
PrinterIcon,
|
||||||
GridIcon,
|
Trash2Icon,
|
||||||
InfoIcon,
|
Edit2Icon,
|
||||||
LinkIcon,
|
ListIcon,
|
||||||
},
|
GridIcon,
|
||||||
}
|
InfoIcon,
|
||||||
|
LinkIcon,
|
||||||
|
},
|
||||||
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
@import '@assets/vue-file-manager/_variables';
|
@import "@assets/vue-file-manager/_variables";
|
||||||
@import '@assets/vue-file-manager/_mixins';
|
@import "@assets/vue-file-manager/_mixins";
|
||||||
|
|
||||||
.button {
|
.button {
|
||||||
height: 42px;
|
height: 42px;
|
||||||
width: 42px;
|
width: 42px;
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
outline: none;
|
outline: none;
|
||||||
border: none;
|
border: none;
|
||||||
@include transition(150ms);
|
@include transition(150ms);
|
||||||
background: transparent;
|
background: transparent;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
background: $light_background;
|
background: $light_background;
|
||||||
|
|
||||||
path, line, polyline, rect, circle {
|
path,
|
||||||
@include transition(150ms);
|
line,
|
||||||
stroke: $theme;
|
polyline,
|
||||||
}
|
rect,
|
||||||
}
|
circle {
|
||||||
|
@include transition(150ms);
|
||||||
|
stroke: $theme;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (prefers-color-scheme: dark) {
|
||||||
|
.button {
|
||||||
|
background: transparent;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: $dark_mode_foreground;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (prefers-color-scheme: dark) {
|
path,
|
||||||
|
line,
|
||||||
.button {
|
polyline,
|
||||||
background: transparent;
|
rect,
|
||||||
|
circle {
|
||||||
&:hover {
|
stroke: $dark_mode_text_primary;
|
||||||
background: $dark_mode_foreground;
|
|
||||||
}
|
|
||||||
|
|
||||||
path, line, polyline, rect, circle {
|
|
||||||
stroke: $dark_mode_text_primary;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
472
resources/js/helpers.js
vendored
472
resources/js/helpers.js
vendored
@@ -1,276 +1,284 @@
|
|||||||
import store from './store/index'
|
import store from "./store/index";
|
||||||
import {debounce, includes} from "lodash";
|
import { debounce, includes, truncate } from "lodash";
|
||||||
import {events} from './bus'
|
import { events } from "./bus";
|
||||||
import axios from 'axios'
|
import axios from "axios";
|
||||||
import router from '@/router'
|
import router from "@/router";
|
||||||
|
|
||||||
const Helpers = {
|
const Helpers = {
|
||||||
install(Vue) {
|
install(Vue) {
|
||||||
|
Vue.prototype.$updateText = debounce(function(route, name, value) {
|
||||||
|
if (value === "") return;
|
||||||
|
|
||||||
Vue.prototype.$updateText = debounce(function (route, name, value) {
|
axios
|
||||||
|
.patch(this.$store.getters.api + route, { name, value })
|
||||||
|
.catch((error) => {
|
||||||
|
events.$emit("alert:open", {
|
||||||
|
title: this.$t("popup_error.title"),
|
||||||
|
message: this.$t("popup_error.message"),
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}, 150);
|
||||||
|
|
||||||
if (value === '') return
|
Vue.prototype.$updateImage = function(route, name, image) {
|
||||||
|
// Create form
|
||||||
|
let formData = new FormData();
|
||||||
|
|
||||||
axios.patch(this.$store.getters.api + route, {name, value})
|
// Add image to form
|
||||||
.catch(error => {
|
formData.append("name", name);
|
||||||
events.$emit('alert:open', {
|
formData.append(name, image);
|
||||||
title: this.$t('popup_error.title'),
|
formData.append("_method", "PATCH");
|
||||||
message: this.$t('popup_error.message'),
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}, 150)
|
|
||||||
|
|
||||||
Vue.prototype.$updateImage = function (route, name, image) {
|
axios
|
||||||
|
.post(this.$store.getters.api + route, formData, {
|
||||||
|
headers: {
|
||||||
|
"Content-Type": "multipart/form-data",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
.catch((error) => {
|
||||||
|
events.$emit("alert:open", {
|
||||||
|
title: this.$t("popup_error.title"),
|
||||||
|
message: this.$t("popup_error.message"),
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
// Create form
|
Vue.prototype.$scrollTop = function() {
|
||||||
let formData = new FormData()
|
var container = document.getElementById("vue-file-manager");
|
||||||
|
|
||||||
// Add image to form
|
if (container) {
|
||||||
formData.append('name', name)
|
container.scrollTop = 0;
|
||||||
formData.append(name, image)
|
}
|
||||||
formData.append('_method', 'PATCH')
|
};
|
||||||
|
|
||||||
axios.post(this.$store.getters.api + route, formData, {
|
Vue.prototype.$getImage = function(source) {
|
||||||
headers: {
|
return source ? "/" + source : "";
|
||||||
'Content-Type': 'multipart/form-data',
|
};
|
||||||
}
|
|
||||||
})
|
Vue.prototype.$getCreditCardBrand = function(brand) {
|
||||||
.catch(error => {
|
return `/assets/icons/${brand}.svg`;
|
||||||
events.$emit('alert:open', {
|
};
|
||||||
title: this.$t('popup_error.title'),
|
|
||||||
message: this.$t('popup_error.message'),
|
Vue.prototype.$getInvoiceLink = function(customer, id) {
|
||||||
})
|
return "/invoice/" + customer + "/" + id;
|
||||||
})
|
};
|
||||||
|
|
||||||
|
Vue.prototype.$openImageOnNewTab = function(source) {
|
||||||
|
let win = window.open(source, "_blank");
|
||||||
|
|
||||||
|
win.focus();
|
||||||
|
};
|
||||||
|
|
||||||
|
Vue.prototype.$createFolder = function(folderName) {
|
||||||
|
this.$store.dispatch("createFolder", folderName);
|
||||||
|
};
|
||||||
|
|
||||||
|
Vue.prototype.$handleUploading = async function(files, parent_id) {
|
||||||
|
let fileBuffer = [];
|
||||||
|
|
||||||
|
// Append the file list to fileBuffer array
|
||||||
|
Array.prototype.push.apply(fileBuffer, files);
|
||||||
|
|
||||||
|
let fileSucceed = 0;
|
||||||
|
|
||||||
|
// Update files count in progressbar
|
||||||
|
store.commit("UPDATE_FILE_COUNT_PROGRESS", {
|
||||||
|
current: fileSucceed,
|
||||||
|
total: files.length,
|
||||||
|
});
|
||||||
|
|
||||||
|
// Reset upload progress to 0
|
||||||
|
store.commit("UPLOADING_FILE_PROGRESS", 0);
|
||||||
|
|
||||||
|
// Get parent id
|
||||||
|
let parentFolder = this.$store.getters.currentFolder
|
||||||
|
? this.$store.getters.currentFolder.unique_id
|
||||||
|
: 0;
|
||||||
|
let rootFolder = parent_id ? parent_id : parentFolder;
|
||||||
|
|
||||||
|
// Upload files
|
||||||
|
do {
|
||||||
|
let file = fileBuffer.shift(),
|
||||||
|
chunks = [];
|
||||||
|
|
||||||
|
// Calculate ceils
|
||||||
|
let size = this.$store.getters.config.chunkSize,
|
||||||
|
chunksCeil = Math.ceil(file.size / size);
|
||||||
|
|
||||||
|
// Create chunks
|
||||||
|
for (let i = 0; i < chunksCeil; i++) {
|
||||||
|
chunks.push(
|
||||||
|
file.slice(
|
||||||
|
i * size,
|
||||||
|
Math.min(i * size + size, file.size),
|
||||||
|
file.type
|
||||||
|
)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Vue.prototype.$scrollTop = function () {
|
// Set Data
|
||||||
var container = document.getElementById('vue-file-manager')
|
let formData = new FormData(),
|
||||||
|
uploadedSize = 0,
|
||||||
|
isNotGeneralError = true,
|
||||||
|
filename =
|
||||||
|
Array(16)
|
||||||
|
.fill(0)
|
||||||
|
.map((x) =>
|
||||||
|
Math.random()
|
||||||
|
.toString(36)
|
||||||
|
.charAt(2)
|
||||||
|
)
|
||||||
|
.join("") +
|
||||||
|
"-" +
|
||||||
|
file.name +
|
||||||
|
".part";
|
||||||
|
|
||||||
if (container) {
|
do {
|
||||||
container.scrollTop = 0
|
let isLast = chunks.length === 1,
|
||||||
}
|
chunk = chunks.shift(),
|
||||||
}
|
attempts = 0;
|
||||||
|
|
||||||
Vue.prototype.$getImage = function (source) {
|
// Set form data
|
||||||
return source ? '/' + source : ''
|
formData.set("file", chunk, filename);
|
||||||
}
|
formData.set("parent_id", rootFolder);
|
||||||
|
formData.set("is_last", isLast);
|
||||||
|
|
||||||
Vue.prototype.$getCreditCardBrand = function (brand) {
|
// Upload chunks
|
||||||
return `/assets/icons/${brand}.svg`
|
do {
|
||||||
}
|
await store
|
||||||
|
.dispatch("uploadFiles", {
|
||||||
|
form: formData,
|
||||||
|
fileSize: file.size,
|
||||||
|
totalUploadedSize: uploadedSize,
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
uploadedSize = uploadedSize + chunk.size;
|
||||||
|
})
|
||||||
|
.catch((error) => {
|
||||||
|
// Count attempts
|
||||||
|
attempts++;
|
||||||
|
|
||||||
Vue.prototype.$getInvoiceLink = function (customer, id) {
|
// Break uploading proccess
|
||||||
return '/invoice/' + customer + '/' + id
|
if (error.response.status === 500) isNotGeneralError = false;
|
||||||
}
|
|
||||||
|
|
||||||
Vue.prototype.$openImageOnNewTab = function (source) {
|
// Show Error
|
||||||
let win = window.open(source, '_blank')
|
if (attempts === 3) this.$isSomethingWrong();
|
||||||
|
});
|
||||||
|
} while (isNotGeneralError && attempts !== 0 && attempts !== 3);
|
||||||
|
} while (isNotGeneralError && chunks.length !== 0);
|
||||||
|
|
||||||
win.focus()
|
fileSucceed++;
|
||||||
}
|
|
||||||
|
|
||||||
Vue.prototype.$createFolder = function (folderName) {
|
// Progress file log
|
||||||
this.$store.dispatch('createFolder', folderName)
|
store.commit("UPDATE_FILE_COUNT_PROGRESS", {
|
||||||
}
|
current: fileSucceed,
|
||||||
|
total: files.length,
|
||||||
|
});
|
||||||
|
} while (fileBuffer.length !== 0);
|
||||||
|
|
||||||
Vue.prototype.$handleUploading = async function (files, parent_id) {
|
store.commit("UPDATE_FILE_COUNT_PROGRESS", undefined);
|
||||||
|
};
|
||||||
|
|
||||||
let fileBuffer = []
|
Vue.prototype.$uploadFiles = async function(files) {
|
||||||
|
this.$handleUploading(files, undefined);
|
||||||
|
};
|
||||||
|
|
||||||
// Append the file list to fileBuffer array
|
Vue.prototype.$uploadExternalFiles = async function(event, parent_id) {
|
||||||
Array.prototype.push.apply(fileBuffer, files);
|
// Prevent submit empty files
|
||||||
|
if (event.dataTransfer.items.length == 0) return;
|
||||||
|
|
||||||
let fileSucceed = 0
|
// Get files
|
||||||
|
let files = [...event.dataTransfer.items].map((item) => item.getAsFile());
|
||||||
|
|
||||||
// Update files count in progressbar
|
this.$handleUploading(files, parent_id);
|
||||||
store.commit('UPDATE_FILE_COUNT_PROGRESS', {
|
};
|
||||||
current: fileSucceed,
|
|
||||||
total: files.length
|
|
||||||
})
|
|
||||||
|
|
||||||
// Reset upload progress to 0
|
Vue.prototype.$downloadFile = function(url, filename) {
|
||||||
store.commit('UPLOADING_FILE_PROGRESS', 0)
|
var anchor = document.createElement("a");
|
||||||
|
|
||||||
// Get parent id
|
anchor.href = url;
|
||||||
let parentFolder = this.$store.getters.currentFolder ? this.$store.getters.currentFolder.unique_id : 0
|
|
||||||
let rootFolder = parent_id ? parent_id : parentFolder
|
|
||||||
|
|
||||||
// Upload files
|
anchor.download = filename;
|
||||||
do {
|
|
||||||
let file = fileBuffer.shift(),
|
|
||||||
chunks = []
|
|
||||||
|
|
||||||
// Calculate ceils
|
document.body.appendChild(anchor);
|
||||||
let size = this.$store.getters.config.chunkSize,
|
|
||||||
chunksCeil = Math.ceil(file.size / size);
|
|
||||||
|
|
||||||
// Create chunks
|
anchor.click();
|
||||||
for (let i = 0; i < chunksCeil; i++) {
|
};
|
||||||
chunks.push(file.slice(
|
|
||||||
i * size, Math.min(i * size + size, file.size), file.type
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Set Data
|
Vue.prototype.$closePopup = function() {
|
||||||
let formData = new FormData(),
|
events.$emit("popup:close");
|
||||||
uploadedSize = 0,
|
};
|
||||||
isNotGeneralError = true,
|
|
||||||
filename = Array(16).fill(0).map(x => Math.random().toString(36).charAt(2)).join('') + '-' + file.name + '.part'
|
|
||||||
|
|
||||||
do {
|
Vue.prototype.$isThisRoute = function(route, locations) {
|
||||||
let isLast = chunks.length === 1,
|
return includes(locations, route.name);
|
||||||
chunk = chunks.shift(),
|
};
|
||||||
attempts = 0
|
|
||||||
|
|
||||||
// Set form data
|
Vue.prototype.$isThisLocation = function(location) {
|
||||||
formData.set('file', chunk, filename);
|
// Get current location
|
||||||
formData.set('parent_id', rootFolder)
|
let currentLocation =
|
||||||
formData.set('is_last', isLast);
|
store.getters.currentFolder && store.getters.currentFolder.location
|
||||||
|
? store.getters.currentFolder.location
|
||||||
|
: undefined;
|
||||||
|
|
||||||
// Upload chunks
|
// Check if type is object
|
||||||
do {
|
if (typeof location === "Object" || location instanceof Object) {
|
||||||
await store.dispatch('uploadFiles', {
|
return includes(location, currentLocation);
|
||||||
form: formData,
|
} else {
|
||||||
fileSize: file.size,
|
return currentLocation === location;
|
||||||
totalUploadedSize: uploadedSize
|
}
|
||||||
}).then(() => {
|
};
|
||||||
uploadedSize = uploadedSize + chunk.size
|
|
||||||
}).catch((error) => {
|
|
||||||
|
|
||||||
// Count attempts
|
Vue.prototype.$checkPermission = function(type) {
|
||||||
attempts++
|
let currentPermission = store.getters.permission;
|
||||||
|
|
||||||
// Break uploading proccess
|
// Check if type is object
|
||||||
if (error.response.status === 500)
|
if (typeof type === "Object" || type instanceof Object) {
|
||||||
isNotGeneralError = false
|
return includes(type, currentPermission);
|
||||||
|
} else {
|
||||||
|
return currentPermission === type;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
// Show Error
|
Vue.prototype.$isMobile = function() {
|
||||||
if (attempts === 3)
|
const toMatch = [
|
||||||
this.$isSomethingWrong()
|
/Android/i,
|
||||||
})
|
/webOS/i,
|
||||||
} while (isNotGeneralError && attempts !== 0 && attempts !== 3)
|
/iPhone/i,
|
||||||
|
/iPad/i,
|
||||||
|
/iPod/i,
|
||||||
|
/BlackBerry/i,
|
||||||
|
/Windows Phone/i,
|
||||||
|
];
|
||||||
|
|
||||||
} while (isNotGeneralError && chunks.length !== 0)
|
return toMatch.some((toMatchItem) => {
|
||||||
|
return navigator.userAgent.match(toMatchItem);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
fileSucceed++
|
Vue.prototype.$isMinimalScale = function() {
|
||||||
|
let sizeType = store.getters.filesViewWidth;
|
||||||
|
|
||||||
// Progress file log
|
return sizeType === "minimal-scale";
|
||||||
store.commit('UPDATE_FILE_COUNT_PROGRESS', {
|
};
|
||||||
current: fileSucceed,
|
|
||||||
total: files.length
|
|
||||||
})
|
|
||||||
|
|
||||||
} while (fileBuffer.length !== 0)
|
Vue.prototype.$isCompactScale = function() {
|
||||||
|
let sizeType = store.getters.filesViewWidth;
|
||||||
|
|
||||||
store.commit('UPDATE_FILE_COUNT_PROGRESS', undefined)
|
return sizeType === "compact-scale";
|
||||||
}
|
};
|
||||||
|
|
||||||
Vue.prototype.$uploadFiles = async function (files) {
|
Vue.prototype.$isFullScale = function() {
|
||||||
|
let sizeType = store.getters.filesViewWidth;
|
||||||
|
|
||||||
this.$handleUploading(files, undefined)
|
return sizeType === "full-scale";
|
||||||
}
|
};
|
||||||
|
|
||||||
Vue.prototype.$uploadExternalFiles = async function (event, parent_id) {
|
Vue.prototype.$isSomethingWrong = function() {
|
||||||
|
events.$emit("alert:open", {
|
||||||
|
title: this.$t("popup_error.title"),
|
||||||
|
message: this.$t("popup_error.message"),
|
||||||
|
});
|
||||||
|
};
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
// Prevent submit empty files
|
export default Helpers;
|
||||||
if (event.dataTransfer.items.length == 0) return
|
|
||||||
|
|
||||||
// Get files
|
|
||||||
let files = [...event.dataTransfer.items].map(item => item.getAsFile());
|
|
||||||
|
|
||||||
this.$handleUploading(files, parent_id)
|
|
||||||
}
|
|
||||||
|
|
||||||
Vue.prototype.$downloadFile = function (url, filename) {
|
|
||||||
var anchor = document.createElement('a')
|
|
||||||
|
|
||||||
anchor.href = url
|
|
||||||
|
|
||||||
anchor.download = filename
|
|
||||||
|
|
||||||
document.body.appendChild(anchor)
|
|
||||||
|
|
||||||
anchor.click()
|
|
||||||
}
|
|
||||||
|
|
||||||
Vue.prototype.$closePopup = function () {
|
|
||||||
events.$emit('popup:close')
|
|
||||||
}
|
|
||||||
|
|
||||||
Vue.prototype.$isThisRoute = function (route, locations) {
|
|
||||||
|
|
||||||
return includes(locations, route.name)
|
|
||||||
}
|
|
||||||
|
|
||||||
Vue.prototype.$isThisLocation = function (location) {
|
|
||||||
|
|
||||||
// Get current location
|
|
||||||
let currentLocation = store.getters.currentFolder && store.getters.currentFolder.location ? store.getters.currentFolder.location : undefined
|
|
||||||
|
|
||||||
// Check if type is object
|
|
||||||
if (typeof location === 'Object' || location instanceof Object) {
|
|
||||||
return includes(location, currentLocation)
|
|
||||||
|
|
||||||
} else {
|
|
||||||
return currentLocation === location
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Vue.prototype.$checkPermission = function (type) {
|
|
||||||
|
|
||||||
let currentPermission = store.getters.permission
|
|
||||||
|
|
||||||
// Check if type is object
|
|
||||||
if (typeof type === 'Object' || type instanceof Object) {
|
|
||||||
return includes(type, currentPermission)
|
|
||||||
|
|
||||||
} else {
|
|
||||||
return currentPermission === type
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Vue.prototype.$isMobile = function () {
|
|
||||||
const toMatch = [
|
|
||||||
/Android/i,
|
|
||||||
/webOS/i,
|
|
||||||
/iPhone/i,
|
|
||||||
/iPad/i,
|
|
||||||
/iPod/i,
|
|
||||||
/BlackBerry/i,
|
|
||||||
/Windows Phone/i
|
|
||||||
]
|
|
||||||
|
|
||||||
return toMatch.some(toMatchItem => {
|
|
||||||
return navigator.userAgent.match(toMatchItem)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
Vue.prototype.$isMinimalScale = function () {
|
|
||||||
let sizeType = store.getters.filesViewWidth
|
|
||||||
|
|
||||||
return sizeType === 'minimal-scale'
|
|
||||||
}
|
|
||||||
|
|
||||||
Vue.prototype.$isCompactScale = function () {
|
|
||||||
let sizeType = store.getters.filesViewWidth
|
|
||||||
|
|
||||||
return sizeType === 'compact-scale'
|
|
||||||
}
|
|
||||||
|
|
||||||
Vue.prototype.$isFullScale = function () {
|
|
||||||
let sizeType = store.getters.filesViewWidth
|
|
||||||
|
|
||||||
return sizeType === 'full-scale'
|
|
||||||
}
|
|
||||||
|
|
||||||
Vue.prototype.$isSomethingWrong = function () {
|
|
||||||
|
|
||||||
events.$emit('alert:open', {
|
|
||||||
title: this.$t('popup_error.title'),
|
|
||||||
message: this.$t('popup_error.message'),
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export default Helpers
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
185
resources/js/main.js
vendored
185
resources/js/main.js
vendored
@@ -1,100 +1,99 @@
|
|||||||
require('./bootstrap');
|
require("./bootstrap");
|
||||||
import Vue from 'vue'
|
import Vue from "vue";
|
||||||
import VueRouter from 'vue-router'
|
import VueRouter from "vue-router";
|
||||||
import router from './router'
|
import router from "./router";
|
||||||
import i18n from './i18n/index.js'
|
import i18n from "./i18n/index.js";
|
||||||
import App from './App.vue'
|
import App from "./App.vue";
|
||||||
import store from './store'
|
import store from "./store";
|
||||||
import Helpers from './helpers'
|
import Helpers from "./helpers";
|
||||||
import { library } from '@fortawesome/fontawesome-svg-core'
|
import { library } from "@fortawesome/fontawesome-svg-core";
|
||||||
import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome'
|
import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome";
|
||||||
import {
|
import {
|
||||||
faLock,
|
faLock,
|
||||||
faLockOpen,
|
faLockOpen,
|
||||||
faDownload,
|
faDownload,
|
||||||
faUserFriends,
|
faUserFriends,
|
||||||
faCheck,
|
faCheck,
|
||||||
faLink,
|
faLink,
|
||||||
faUserEdit,
|
faUserEdit,
|
||||||
faUser,
|
faUser,
|
||||||
faFileAudio,
|
faFileAudio,
|
||||||
faFileVideo,
|
faFileVideo,
|
||||||
faSyncAlt,
|
faSyncAlt,
|
||||||
faShare,
|
faShare,
|
||||||
faHome,
|
faHome,
|
||||||
faEyeSlash,
|
faEyeSlash,
|
||||||
faBars,
|
faBars,
|
||||||
faSearch,
|
faSearch,
|
||||||
faEllipsisV,
|
faEllipsisV,
|
||||||
faChevronLeft,
|
faChevronLeft,
|
||||||
faChevronRight,
|
faChevronRight,
|
||||||
faChevronDown,
|
faChevronDown,
|
||||||
faUpload,
|
faUpload,
|
||||||
faFolderPlus,
|
faFolderPlus,
|
||||||
faTh,
|
faTh,
|
||||||
faThList,
|
faThList,
|
||||||
faInfo,
|
faInfo,
|
||||||
faFolder,
|
faFolder,
|
||||||
faFile,
|
faFile,
|
||||||
faFileImage,
|
faFileImage,
|
||||||
faTimes,
|
faTimes,
|
||||||
faSort,
|
faSort,
|
||||||
faTrashAlt,
|
faTrashAlt,
|
||||||
faHdd,
|
faHdd,
|
||||||
faEllipsisH,
|
faEllipsisH,
|
||||||
faPencilAlt,
|
faPencilAlt,
|
||||||
} from '@fortawesome/free-solid-svg-icons'
|
} from "@fortawesome/free-solid-svg-icons";
|
||||||
|
|
||||||
library.add(
|
library.add(
|
||||||
faLock,
|
faLock,
|
||||||
faLockOpen,
|
faLockOpen,
|
||||||
faDownload,
|
faDownload,
|
||||||
faUserFriends,
|
faUserFriends,
|
||||||
faCheck,
|
faCheck,
|
||||||
faLink,
|
faLink,
|
||||||
faUserEdit,
|
faUserEdit,
|
||||||
faUser,
|
faUser,
|
||||||
faFileAudio,
|
faFileAudio,
|
||||||
faFileVideo,
|
faFileVideo,
|
||||||
faHdd,
|
faHdd,
|
||||||
faSyncAlt,
|
faSyncAlt,
|
||||||
faShare,
|
faShare,
|
||||||
faHome,
|
faHome,
|
||||||
faEyeSlash,
|
faEyeSlash,
|
||||||
faBars,
|
faBars,
|
||||||
faSearch,
|
faSearch,
|
||||||
faEllipsisV,
|
faEllipsisV,
|
||||||
faChevronLeft,
|
faChevronLeft,
|
||||||
faChevronRight,
|
faChevronRight,
|
||||||
faChevronDown,
|
faChevronDown,
|
||||||
faUpload,
|
faUpload,
|
||||||
faTrashAlt,
|
faTrashAlt,
|
||||||
faFolderPlus,
|
faFolderPlus,
|
||||||
faTh,
|
faTh,
|
||||||
faThList,
|
faThList,
|
||||||
faInfo,
|
faInfo,
|
||||||
faFolder,
|
faFolder,
|
||||||
faFile,
|
faFile,
|
||||||
faFileImage,
|
faFileImage,
|
||||||
faTimes,
|
faTimes,
|
||||||
faSort,
|
faSort,
|
||||||
faEllipsisH,
|
faEllipsisH,
|
||||||
faPencilAlt,
|
faPencilAlt
|
||||||
)
|
);
|
||||||
Vue.component('FontAwesomeIcon', FontAwesomeIcon)
|
Vue.component("FontAwesomeIcon", FontAwesomeIcon);
|
||||||
|
|
||||||
Vue.use(VueRouter)
|
Vue.use(VueRouter);
|
||||||
Vue.use(Helpers)
|
Vue.use(Helpers);
|
||||||
|
|
||||||
Vue.config.productionTip = false
|
Vue.config.productionTip = false;
|
||||||
|
|
||||||
var vueFileManager = new Vue({
|
var vueFileManager = new Vue({
|
||||||
i18n,
|
i18n,
|
||||||
store,
|
store,
|
||||||
router,
|
router,
|
||||||
data: {
|
data: {
|
||||||
config,
|
config,
|
||||||
},
|
},
|
||||||
render: h => h(App)
|
render: (h) => h(App),
|
||||||
}).$mount('#app')
|
}).$mount("#app");
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user