diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..92c1724 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,359 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [Unreleased] + +### Added + +### Changed + +### Removed + +### Security + +### Fixed + +## [0.3.1-pre] - 2022-05-13 + +### Added + +- CasaConnect and file add image thumbnail function +- Import of docker applications +- List support custom sorting function +- CasaConnect gives priority to LAN connections +- USB auto-mount switch (Raspberry Pi is off by default) +- Application custom installation supports Docker Compose configuration import in YAML format +- You will see the new version changelog from the next version +- Added live preview for icons in custom installed applications + +### Changed + +- Application data is no longer saved to the database +- Optimize app store speed issues +- Optimize the way WebUI is filled in +- Image preview has been completely upgraded and now supports switching between all images in the same folder, as well as dragging, zooming, rotating and resetting. +- Added color levels to the CPU and RAM charts +- Optimized the display of the Connect friends list right-click menu +- Change the initial display directory to /DATA + +### Removed + +- Historical Application Data + +### Security + +### Fixed + +- Fixed the problem that some Docker CLI commands failed to import +- Fix the problem that the application is not easily recognized in /DATA/AppData directory and docker command line after installation, it will be shown as application name +- Fix Pi-hole installation failure +- Fixed the issue that the app could not be updated using WatchTower +- Fixed the problem that the task status was lost after closing Files when there was an upload task + +## [0.3.0] - 2022-04-08 + +### Added + +- Add CasaConnect function, now you can share private files peer-to-peer with your friends. +- Add a widget for network traffic monitoring. +- 12 new popular apps added to App Center + +### Changed + +- Updated the sidebar of Files. +- Updated the initial directory of Files to the Root directory. +- Armbian 22.02 armhf/arm64/amd64 platform tests passed [@igorpecovnik ](https://github.com/igorpecovnik) +- Elementary OS 6.1 Jólnir amd64 platform tests passed [@alvarosamudio ](https://github.com/alvarosamudio) + +### Fixed + +- Fix an issue in Files where the backspace button would trigger a return to the previous level of the directory when creating a folder. +- Fix the display problem of application list in CPU widget. +- Fix the problem that the ipv6 of the application cannot be opened + +### Removed + +- Interfaces related to "zerotier" + +## [0.2.10] - 2022-03-10 + +### Added + +- Added CasaOS own file manager, now you can browse, upload, download files from the system, even edit code online, preview photos and videos through it. It will appear in the first position of Apps. +- Added CPU core count display and memory capacity display. + +### Changed + +- Optimized the rendering performance of the home page. +- Optimized the internationalization display of the time widget. +- Show the icon of the stopped application as gray. +- Unify the animation of the drop-down menu. +- Optimize the display of the application drop-down menu. +- Replaced the default font to optimize the display. + +### Fixed + +- Fix the problem of failed to create storage space + +## [0.2.9] - 2022-02-18 + +### Added + +- Add a simple notification function + +### Changed + +- Custom installation of new parameters(Capabilities,Hostname,Privileged) +- Update front-end translation [@SemVer](https://github.com/zarevskaya) [@koboldMaki](https://github.com/koboldMaki) [@sgastol](https://github.com/sgastol) [@delki8](https://github.com/delki8) + +- Modify the default location and name of the usb mount + +### Fixed + +- Fix the problem of being indexed by search engines +- Fix some style display issues +- Solve hard drive can't be formatted, can't finish adding storage + +## [0.2.8] - 2022-01-30 + +### Added + +- Add USB disk device display + +### Changed + +- Update translation [@baptiste313](https://github.com/baptiste313) [@thueske](https://github.com/thueske) +- Compatible with more types of drives + +### Fixed + +- Fix the language initialization bug +- Fix the problem that the login page could not be displayed +- Fix missing translated content + +## [0.2.7] - 2022.01.26 + +### Changed + +- Apply multilingual support + +### Security + +- Fix an injectable execution bug + +## [0.2.6] - 2022.01.26 + +### Added + +- Add a bug report panel. +- App Store apps start supporting multiple languages + +### Fixed + +- Fix a disk that cannot be formatted under certain circumstances + +## [0.2.5] - 2022.01.24 + +### Added + +- Storage Manager + +### Changed + +- Update Disk widget +- Update language files [@ImOstrovskiy](https://github.com/ImOstrovskiy) [@baptiste313](https://github.com/baptiste313) + +### Fixed + +- File synchronization issues +- Fix the app store classification problem + +## [0.2.4] - 2021.12.30 + +### Changed + +- Brand new App Store +- Optimize request method + +### Fixed + +- Fix Sync panel width display error. +- Fix App panel width display error. + +## [0.2.3] - 2021.12.11 + +### Added + +- Add detailed CPU and memory statistics. +- Add the multi-language function and add Chinese translation. +- Add the function to modify the search engine. +- Add the function of modifying the WebUI port + +### Changed + +- Update update script +- Preprocessing usb automounting + +### Fixed + +- Volume path problem when customizing the installation of applications +- Fix Cpu and Ram usage display error +- Fix translation errors +- Fixed an error when importing and exporting appfile. + +## [0.2.2] - 2021.12.02 + +### Changed + +- UI adjustment + +### Fixed + +- Fix the problem of data display error when manually installing apps +- Fix some spelling problems +- Fix the bug of synchronization module + +## [0.2.1] - 2021.11.25 + +### Fixed + +- Fix Sync display error +- Fix Sync Downoad url error +- Fix Smart Block display error +- Fix widgets settings dispaly error +- Fix application installation path error + +## [0.2.0] - 2021.11.25 + +### Added + +- Add sync function + + +## [0.1.11] - 2021.11.10 + +### Changed + +- Adaptation of cell phone terminals +- Optimize user experience +- Replaced the default background +- Optimized the display performance and fixed some bugs + +### Fixed + +- Resolve application installation path errors + +## [0.1.10] - 2021.11.04 + +### Added + +- Add application terminal +- Add application logs +- Add system logs +- Add App Store for installation + +## [0.1.9] - 2021.11.01 [YANKED] + +## [0.1.8] - 2021.10.27 + +### Added + +- Add system terminal +- Add the ability to modify the user name and password + +### Changed + +- Experience optimization +- Improve single user management function +- Fixed Disk widget display error +- Fixed Username display error after change +- Adaptation for mobile access + +## [0.1.7] - 2021.10.22 + +### Added + +- Add user authentication module, Login page and initialization page. + +### Fixed + +- Fix the problem that the application could not start after the system restarted. +- Home storage space data display exception +- Script override causes application loss after installation +- Fix docker network error + +## [0.1.6] - 2021.10.19 + +### Added + +- Add app icon auto-fill via docker image name. +- Add a file selector for app install. + +### Changed + +- Modify import reminder. +- Optimize the application installation process + +### Fixed + +- Fixed an issue with the app were it would disappear when the app was modified. +- Fixed device selector default dir to /dev + +## [0.1.5] - 2021.10.15 + +### Added + +- Add CPU RAM Status with widget +- Add Disk Info with widget +- Realize automatic loading of widgets + +### Changed + +- Enhance the Docker cli import experience and automatically fill in the folders that need to be mounted + +### Removed + +- Remove Weather widget. + +### Fixed + +- AppFile upload does not pass verification +- The setting menu of the app is displayed abnormally when the browser window is too narrow +- The port is occupied and the program cannot start +- Fix display bugs when windows size less than 1024px + +## [0.1.4] - 2021.09.30 + +### Added + +- Import and export of application configuration files +- Automatic parsing of docker commands + +### Changed + +- Improve the program release process +- Application installation process UX/UI optimization + +### Fixed + +- Authentication failure during the operation, resulting in the need to re-login + +## [0.1.3] - 2021.09.29 [YANKED] + +## [0.1.2] - 2021.09.28 + +### Fixed + +- Application modification and new creation failure issues + +## [0.1.1] - 2021.09.27 + +## [0.1.0] - 2021.09.26 + +### Added + +- Application Center diff --git a/UI b/UI index 4a8f157..2f6deb2 160000 --- a/UI +++ b/UI @@ -1 +1 @@ -Subproject commit 4a8f15711ee5520f6bb644107f1eb25f252689b1 +Subproject commit 2f6deb2253df1d0247d5329cb0ea1aa983053a2e diff --git a/conf/conf.ini.sample b/conf/conf.ini.sample index 612c015..7f5063b 100644 --- a/conf/conf.ini.sample +++ b/conf/conf.ini.sample @@ -16,33 +16,27 @@ RootPath = /casaOS HttpPort = 8089 UDPPort = RunMode = release -ServerApi = https://api.casaos.zimaboard.com +ServerApi = https://api.casaos.io Handshake = socket.casaos.io Token = -USBAutoMount = true - +USBAutoMount = [user] -UserName = admin -PWD = zimaboard +UserName = +PWD = Email = user@gmail.com Description = description Initialized = false Avatar = NickName = - -[redis] -Host = 127.0.0.1:6379 -Password = -MaxIdle = 30 -MaxActive = 30 -IdleTimeout = 200 +PublicKey = [system] ConfigStr = WidgetList = Analyse = + [file] ShareDir = DownloadDir = \ No newline at end of file diff --git a/github.com/IceWhaleTech/CasaOS-linux-amd64 b/github.com/IceWhaleTech/CasaOS-linux-amd64 new file mode 100755 index 0000000..e194858 Binary files /dev/null and b/github.com/IceWhaleTech/CasaOS-linux-amd64 differ diff --git a/github.com/IceWhaleTech/CasaOS-linux-arm64 b/github.com/IceWhaleTech/CasaOS-linux-arm64 new file mode 100755 index 0000000..96b5f62 Binary files /dev/null and b/github.com/IceWhaleTech/CasaOS-linux-arm64 differ diff --git a/go.mod b/go.mod index a703c0c..5f58773 100644 --- a/go.mod +++ b/go.mod @@ -3,16 +3,19 @@ module github.com/IceWhaleTech/CasaOS go 1.16 require ( + github.com/Curtis-Milo/nat-type-identifier-go v0.0.0-20220215191915-18d42168c63d github.com/Microsoft/go-winio v0.5.0 // indirect github.com/Microsoft/hcsshim v0.8.22 // indirect - github.com/PuerkitoBio/goquery v1.7.0 github.com/StackExchange/wmi v0.0.0-20210224194228-fe8f1750fd46 // indirect github.com/bits-and-blooms/bitset v1.2.1 // indirect github.com/containerd/containerd v1.5.7 github.com/containerd/continuity v0.2.0 // indirect + github.com/disintegration/imaging v1.6.2 github.com/docker/distribution v2.8.0+incompatible // indirect github.com/docker/docker v20.10.7+incompatible github.com/docker/go-connections v0.4.0 + github.com/dsoprea/go-exif/v3 v3.0.0-20210625224831-a6301f85c82b + github.com/dsoprea/go-logging v0.0.0-20200710184922-b02d349568dd // indirect github.com/forease/gotld v0.0.0-20190808124948-c50ff635576b github.com/gin-contrib/gzip v0.0.2 github.com/gin-gonic/gin v1.7.2 diff --git a/go.sum b/go.sum index cce619d..ba51340 100644 --- a/go.sum +++ b/go.sum @@ -56,6 +56,8 @@ github.com/Azure/go-autorest/logger v0.2.0/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZ github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/Curtis-Milo/nat-type-identifier-go v0.0.0-20220215191915-18d42168c63d h1:62lEBImTxZ83pgzywgDNIrPPuQ+j4ep9QjqrWBn1hrU= +github.com/Curtis-Milo/nat-type-identifier-go v0.0.0-20220215191915-18d42168c63d/go.mod h1:lW9x+yEjqKdPbE3+cf2fGPJXCw/hChX3Omi9QHTLFsQ= github.com/KyleBanks/depth v1.2.1 h1:5h8fQADFrWtarTdtDudMmGsC7GPbOAu6RVB3ffsVFHc= github.com/KyleBanks/depth v1.2.1/go.mod h1:jzSb9d0L43HxTQfT+oSA1EEp2q+ne2uh6XgeJcm8brE= github.com/Microsoft/go-winio v0.4.11/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA= @@ -82,8 +84,6 @@ github.com/Microsoft/hcsshim/test v0.0.0-20201218223536-d3e5debf77da/go.mod h1:5 github.com/Microsoft/hcsshim/test v0.0.0-20210227013316-43a75bb4edd3/go.mod h1:mw7qgWloBUl75W/gVH3cQszUg1+gUITj7D6NY7ywVnY= github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/PuerkitoBio/goquery v1.7.0 h1:O5SP3b9JWqMSVMG69zMfj577zwkSNpxrFf7ybS74eiw= -github.com/PuerkitoBio/goquery v1.7.0/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc= github.com/PuerkitoBio/purell v1.1.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI= github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= @@ -99,8 +99,6 @@ github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuy github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alexflint/go-filemutex v0.0.0-20171022225611-72bdc8eae2ae/go.mod h1:CgnQgUtFrFz9mxFNtED3jI5tLDjKlOM+oUF/sTk6ps0= -github.com/andybalholm/cascadia v1.1.0 h1:BuuO6sSfQNFRu1LppgbD25Hr2vLYW25JvxHs5zzsLTo= -github.com/andybalholm/cascadia v1.1.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y= github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= @@ -269,6 +267,8 @@ github.com/denverdino/aliyungo v0.0.0-20190125010748-a747050bb1ba/go.mod h1:dV8l github.com/dgrijalva/jwt-go v0.0.0-20170104182250-a601269ab70c/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/disintegration/imaging v1.6.2 h1:w1LecBlG2Lnp8B3jk5zSuNqd7b4DXhcjwek1ei82L+c= +github.com/disintegration/imaging v1.6.2/go.mod h1:44/5580QXChDfwIclfc/PCwrr44amcmDAg8hxG0Ewe4= github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E= github.com/docker/distribution v0.0.0-20190905152932-14b96e55d84c/go.mod h1:0+TTO4EOBfRPhZXAeF1Vu+W3hHZ8eLp8PgKVZlcvtFY= github.com/docker/distribution v2.7.1-0.20190205005809-0d3efadf0154+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= @@ -289,6 +289,18 @@ github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDD github.com/docker/libtrust v0.0.0-20150114040149-fa567046d9b1/go.mod h1:cyGadeNEkKy96OOhEzfZl+yxihPEzKnqJwvfuSUqbZE= github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= +github.com/dsoprea/go-exif/v2 v2.0.0-20200321225314-640175a69fe4/go.mod h1:Lm2lMM2zx8p4a34ZemkaUV95AnMl4ZvLbCUbwOvLC2E= +github.com/dsoprea/go-exif/v3 v3.0.0-20200717053412-08f1b6708903/go.mod h1:0nsO1ce0mh5czxGeLo4+OCZ/C6Eo6ZlMWsz7rH/Gxv8= +github.com/dsoprea/go-exif/v3 v3.0.0-20210625224831-a6301f85c82b h1:NgNuLvW/gAFKU30ULWW0gtkCt56JfB7FrZ2zyo0wT8I= +github.com/dsoprea/go-exif/v3 v3.0.0-20210625224831-a6301f85c82b/go.mod h1:cg5SNYKHMmzxsr9X6ZeLh/nfBRHHp5PngtEPcujONtk= +github.com/dsoprea/go-logging v0.0.0-20190624164917-c4f10aab7696/go.mod h1:Nm/x2ZUNRW6Fe5C3LxdY1PyZY5wmDv/s5dkPJ/VB3iA= +github.com/dsoprea/go-logging v0.0.0-20200517223158-a10564966e9d/go.mod h1:7I+3Pe2o/YSU88W0hWlm9S22W7XI1JFNJ86U0zPKMf8= +github.com/dsoprea/go-logging v0.0.0-20200710184922-b02d349568dd h1:l+vLbuxptsC6VQyQsfD7NnEC8BZuFpz45PgY+pH8YTg= +github.com/dsoprea/go-logging v0.0.0-20200710184922-b02d349568dd/go.mod h1:7I+3Pe2o/YSU88W0hWlm9S22W7XI1JFNJ86U0zPKMf8= +github.com/dsoprea/go-utility v0.0.0-20200711062821-fab8125e9bdf h1:/w4QxepU4AHh3AuO6/g8y/YIIHH5+aKP3Bj8sg5cqhU= +github.com/dsoprea/go-utility v0.0.0-20200711062821-fab8125e9bdf/go.mod h1:95+K3z2L0mqsVYd6yveIv1lmtT3tcQQ3dVakPySffW8= +github.com/dsoprea/go-utility/v2 v2.0.0-20200717064901-2fccff4aa15e h1:IxIbA7VbCNrwumIYjDoMOdf4KOSkMC6NJE4s8oRbE7E= +github.com/dsoprea/go-utility/v2 v2.0.0-20200717064901-2fccff4aa15e/go.mod h1:uAzdkPTub5Y9yQwXe8W4m2XuP0tK4a9Q/dantD0+uaU= github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= @@ -330,6 +342,9 @@ github.com/gin-gonic/gin v1.7.2 h1:Tg03T9yM2xa8j6I3Z3oqLaQRSmKvxPd6g/2HJ6zICFA= github.com/gin-gonic/gin v1.7.2/go.mod h1:jD2toBW3GZUr5UMcdrwQA10I7RuaFOl/SGeDjXkfUtY= github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= +github.com/go-errors/errors v1.0.2/go.mod h1:psDX2osz5VnTOnFWbDeWwS7yejl+uV3FEWEp4lssFEs= +github.com/go-errors/errors v1.1.1 h1:ljK/pL5ltg3qoN+OtN6yCv9HWSfMwxSx90GJCZQxYNg= +github.com/go-errors/errors v1.1.1/go.mod h1:psDX2osz5VnTOnFWbDeWwS7yejl+uV3FEWEp4lssFEs= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= @@ -400,6 +415,9 @@ github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY= github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= +github.com/golang/geo v0.0.0-20190916061304-5b978397cfec/go.mod h1:QZ0nwyI2jOfgRAoBvP+ab5aRr7c9x7lhGEJrKvBwjWI= +github.com/golang/geo v0.0.0-20200319012246-673a6f80352d h1:C/hKUcHT483btRbeGkrRjJz+Zbcj8audldIi9tRJDCc= +github.com/golang/geo v0.0.0-20200319012246-673a6f80352d/go.mod h1:QZ0nwyI2jOfgRAoBvP+ab5aRr7c9x7lhGEJrKvBwjWI= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -516,6 +534,7 @@ github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/j-keck/arping v0.0.0-20160618110441-2cf9dc699c56/go.mod h1:ymszkNOg6tORTn+6F6j+Jc8TOr5osrynvN6ivFWZ2GA= github.com/jellevandenhooff/dkim v0.0.0-20150330215556-f50fe3d243e1/go.mod h1:E0B/fFc00Y+Rasa88328GlI/XbtyysCtTHZS8h7IrBU= +github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jinzhu/copier v0.3.2 h1:QdBOCbaouLDYaIPFfi1bKv5F5tPpeTwXe4sD0jqtz5w= github.com/jinzhu/copier v0.3.2/go.mod h1:24xnZezI2Yqac9J61UC6/dG/k76ttpq0DdJI3QmUvro= github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= @@ -935,6 +954,8 @@ golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EH golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8 h1:hVwzHzIUGRjiF7EcUjqNxk3NCfkPxbDKRdnNE1Rpg0U= +golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -957,7 +978,6 @@ golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.5.0 h1:UG21uOlmZabA4fW5i7ZX6bjw1xELEGg/ZLgZq9auk/Q= golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= -golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -991,6 +1011,7 @@ golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200320220750-118fecf932d8/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= @@ -1342,6 +1363,7 @@ gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= diff --git a/main.go b/main.go index 9cf8f67..dd32fa6 100644 --- a/main.go +++ b/main.go @@ -4,7 +4,6 @@ import ( "flag" "fmt" "net/http" - "runtime" "time" "github.com/IceWhaleTech/CasaOS/pkg/cache" @@ -13,6 +12,8 @@ import ( loger2 "github.com/IceWhaleTech/CasaOS/pkg/utils/loger" "github.com/IceWhaleTech/CasaOS/route" "github.com/IceWhaleTech/CasaOS/service" + model2 "github.com/IceWhaleTech/CasaOS/service/model" + "github.com/IceWhaleTech/CasaOS/types" "github.com/robfig/cron" "gorm.io/gorm" @@ -21,7 +22,7 @@ import ( var sqliteDB *gorm.DB var configFlag = flag.String("c", "", "config address") - +var dbFlag = flag.String("db", "", "db path") var showUserInfo = flag.Bool("show-user-info", false, "show user info") func init() { @@ -29,25 +30,10 @@ func init() { config.InitSetup(*configFlag) config.UpdateSetup() loger2.LogSetup() - sysType := runtime.GOOS - if sysType == "windows" { - config.AppInfo.ProjectPath = "C:\\CasaOS\\service" - config.Cfg.Section("app").Key("ProjectPath").SetValue("C:\\CasaOS\\service") - - config.AppInfo.RootPath = "C:\\CasaOS" - config.Cfg.Section("app").Key("RootPath").SetValue("C:\\CasaOS") - config.Cfg.SaveTo(config.SystemConfigInfo.ConfigPath) + if len(*dbFlag) == 0 { + *dbFlag = config.AppInfo.ProjectPath + "/db" } - if sysType == "darwin" { - config.AppInfo.ProjectPath = "./CasaOS/service" - config.Cfg.Section("app").Key("ProjectPath").SetValue("./CasaOS/service") - - config.AppInfo.RootPath = "./CasaOS" - config.Cfg.Section("app").Key("RootPath").SetValue("./CasaOS") - config.Cfg.SaveTo(config.SystemConfigInfo.ConfigPath) - } - - sqliteDB = sqlite.GetDb(config.AppInfo.ProjectPath) + sqliteDB = sqlite.GetDb(*dbFlag) //gredis.GetRedisConn(config.RedisInfo), service.MyService = service.NewService(sqliteDB, loger2.NewOLoger()) service.Cache = cache.Init() @@ -58,10 +44,13 @@ func init() { service.UDPAddressMap = make(map[string]string) //go service.SocketConnect() service.CancelList = make(map[string]string) + service.InternalInspection = make(map[string][]string) + service.NewVersionApp = make(map[string]string) route.InitFunction() go service.SendIPToServer() - go service.LoopFriend() + // go service.LoopFriend() + // go service.MyService.App().CheckNewImage() } @@ -97,20 +86,22 @@ func main() { service.SendIPToServer() service.LoopFriend() + service.MyService.App().CheckNewImage() + }) + if err != nil { + fmt.Println(err) + } + err = cron2.AddFunc("0/1 * * * * *", func() { + notify := model2.AppNotify{} + notify.CustomId = "" + notify.Type = types.NOTIFY_TYPE_HEALTH_CHECK + + go service.MyService.Notify().SendText(notify) }) if err != nil { fmt.Println(err) } - // err = cron2.AddFunc("0/1 * * * * *", func() { - - // //service.SendIPToServer() - // //service.LoopNet() - - // }) - // if err != nil { - // fmt.Println(err) - // } cron2.Start() defer cron2.Stop() s := &http.Server{ diff --git a/model/app-analyse.go b/model/app-analyse.go index c1ad134..70ce46c 100644 --- a/model/app-analyse.go +++ b/model/app-analyse.go @@ -1,3 +1,13 @@ +/* + * @Author: LinkLeong link@icewhale.com + * @Date: 2022-03-18 11:40:55 + * @LastEditors: LinkLeong + * @LastEditTime: 2022-05-13 14:48:01 + * @FilePath: /CasaOS/model/app-analyse.go + * @Description: + * @Website: https://www.casaos.io + * Copyright (c) 2022 by icewhale, All Rights Reserved. + */ package model type AppAnalyse struct { @@ -5,6 +15,7 @@ type AppAnalyse struct { Type string `json:"type"` UUId string `json:"uuid"` Language string `json:"language"` + Version string `json:"version"` } type ConnectionStatus struct { diff --git a/model/manifest.go b/model/manifest.go index 4991485..8254205 100644 --- a/model/manifest.go +++ b/model/manifest.go @@ -104,6 +104,7 @@ func (p *PathArray) Scan(input interface{}) error { //} type CustomizationPostData struct { + CustomId string `json:"custom_id"` Origin string `json:"origin"` NetworkModel string `json:"network_model"` Index string `json:"index"` diff --git a/model/receive/app.go b/model/receive/app.go new file mode 100644 index 0000000..3ccae50 --- /dev/null +++ b/model/receive/app.go @@ -0,0 +1 @@ +package receive diff --git a/model/sys_common.go b/model/sys_common.go index 0c166ce..6fd86ea 100644 --- a/model/sys_common.go +++ b/model/sys_common.go @@ -18,6 +18,7 @@ type UserModel struct { Initialized bool Avatar string NickName string + Public string } //服务配置 diff --git a/model/version.go b/model/version.go index 9e0f2ea..66413d3 100644 --- a/model/version.go +++ b/model/version.go @@ -4,7 +4,7 @@ import "time" type Version struct { Id uint `gorm:"column:id;primary_key" json:"id"` - ChangLog string `json:"chang_log"` + ChangeLog string `json:"change_log"` Version string `json:"version"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` diff --git a/model/zerotier.go b/model/zerotier.go deleted file mode 100644 index a913e61..0000000 --- a/model/zerotier.go +++ /dev/null @@ -1,9 +0,0 @@ -package model - -type ZeroTierUpData struct { - Config ZeroTierConfig `json:"config"` -} - -type ZeroTierConfig struct { - Private bool `json:"private"` -} diff --git a/model/zima.go b/model/zima.go index 6d3afbb..217b3cc 100644 --- a/model/zima.go +++ b/model/zima.go @@ -10,4 +10,5 @@ type Path struct { Size int64 `json:"size"` //File Size Type string `json:"type,omitempty"` Label string `json:"label,omitempty"` + Write bool `json:"write"` } diff --git a/pkg/config/init.go b/pkg/config/init.go index 38680c0..5dc371a 100644 --- a/pkg/config/init.go +++ b/pkg/config/init.go @@ -22,8 +22,7 @@ var UserInfo = &model.UserModel{} //用户相关 var AppInfo = &model.APPModel{} -//redis相关配置 -var RedisInfo = &model.RedisModel{} +//var RedisInfo = &model.RedisModel{} //server相关 var ServerInfo = &model.ServerModel{} @@ -53,7 +52,7 @@ func InitSetup(config string) { mapTo("user", UserInfo) mapTo("app", AppInfo) - mapTo("redis", RedisInfo) + //mapTo("redis", RedisInfo) mapTo("server", ServerInfo) mapTo("system", SystemConfigInfo) mapTo("file", FileSettingInfo) diff --git a/pkg/sqlite/db.go b/pkg/sqlite/db.go index 0338d05..8c5701f 100644 --- a/pkg/sqlite/db.go +++ b/pkg/sqlite/db.go @@ -12,15 +12,15 @@ import ( var gdb *gorm.DB -func GetDb(projectPath string) *gorm.DB { +func GetDb(dbPath string) *gorm.DB { if gdb != nil { return gdb } // 参考 https://github.com/go-sql-driver/mysql#dsn-data-source-name 获取详情 //dsn := fmt.Sprintf("%v:%v@tcp(%v:%v)/%v?charset=utf8mb4&parseTime=True&loc=Local", m.User, m.PWD, m.IP, m.Port, m.DBName) //db, err := gorm.Open(mysql2.Open(dsn), &gorm.Config{}) - file.IsNotExistMkDir(projectPath + "/db/") - db, err := gorm.Open(sqlite.Open(projectPath+"/db/casaOS.db"), &gorm.Config{}) + file.IsNotExistMkDir(dbPath) + db, err := gorm.Open(sqlite.Open(dbPath+"/casaOS.db"), &gorm.Config{}) c, _ := db.DB() c.SetMaxIdleConns(10) c.SetMaxOpenConns(100) @@ -31,7 +31,7 @@ func GetDb(projectPath string) *gorm.DB { return nil } gdb = db - err = db.AutoMigrate(&model2.TaskDBModel{}, &model2.AppNotify{}, &model2.AppListDBModel{}, &model2.SerialDisk{}, model2.PersonDownloadDBModel{}, model2.FriendModel{}) + err = db.AutoMigrate(&model2.TaskDBModel{}, &model2.AppNotify{}, &model2.AppListDBModel{}, &model2.SerialDisk{}, model2.PersonDownloadDBModel{}, model2.FriendModel{}, model2.PersonDownRecordDBModel{}, model2.ApplicationModel{}) if err != nil { fmt.Println("检查和创建数据库出错", err) } diff --git a/pkg/utils/file/file.go b/pkg/utils/file/file.go index 069b2c0..6c8b2ac 100644 --- a/pkg/utils/file/file.go +++ b/pkg/utils/file/file.go @@ -283,7 +283,6 @@ func CopyDir(src string, dst string) error { return nil } -//文件写入临时目录 func WriteToPath(data []byte, path, name string) error { fullPath := path if strings.HasSuffix(path, "/") { diff --git a/pkg/utils/file/image.go b/pkg/utils/file/image.go new file mode 100644 index 0000000..45b60f2 --- /dev/null +++ b/pkg/utils/file/image.go @@ -0,0 +1,84 @@ +package file + +import ( + "bytes" + "fmt" + "io" + "os" + + "github.com/disintegration/imaging" + "github.com/dsoprea/go-exif/v3" + exifcommon "github.com/dsoprea/go-exif/v3/common" +) + +func GetImage(path string, width, height int) ([]byte, error) { + if thumbnail, err := GetThumbnailByOwnerPhotos(path); err == nil { + return thumbnail, nil + } else { + return GetThumbnailByWebPhoto(path, width, height) + } +} +func GetThumbnailByOwnerPhotos(path string) ([]byte, error) { + file, err := os.Open(path) + if err != nil { + return nil, err + } + buff := &bytes.Buffer{} + + defer file.Close() + offset := 0 + offsets := []int{12, 30} + + head := make([]byte, 0xffff) + + r := io.TeeReader(file, buff) + _, err = r.Read(head) + if err != nil { + return nil, err + } + + for _, offset = range offsets { + if _, err = exif.ParseExifHeader(head[offset:]); err == nil { + break + } + } + if err != nil { + return nil, err + } + im, err := exifcommon.NewIfdMappingWithStandard() + if err != nil { + return nil, err + } + + _, index, err := exif.Collect(im, exif.NewTagIndex(), head[offset:]) + if err != nil { + return nil, err + } + + ifd := index.RootIfd.NextIfd() + if ifd == nil { + return nil, exif.ErrNoThumbnail + } + thumbnail, err := ifd.Thumbnail() + if err != nil { + return nil, err + } + return thumbnail, nil +} +func GetThumbnailByWebPhoto(path string, width, height int) ([]byte, error) { + src, err := imaging.Open(path) + if err != nil { + fmt.Println(err) + return nil, err + } + + img := imaging.Resize(src, width, 0, imaging.Lanczos) + + f, err := imaging.FormatFromFilename(path) + if err != nil { + return nil, err + } + buf := bytes.Buffer{} + imaging.Encode(&buf, img, f) + return buf.Bytes(), nil +} diff --git a/pkg/utils/httper/httper.go b/pkg/utils/httper/httper.go index 651453f..da96388 100644 --- a/pkg/utils/httper/httper.go +++ b/pkg/utils/httper/httper.go @@ -2,7 +2,6 @@ package httper import ( "bytes" - "encoding/json" "fmt" "io" "io/ioutil" @@ -23,6 +22,42 @@ func Get(url string, head map[string]string) (response string) { for k, v := range head { req.Header.Add(k, v) } + if err != nil { + return "" + } + resp, err := client.Do(req) + if err != nil { + fmt.Println(err) + //需要错误日志的处理 + //loger.Error(error) + return "" + //panic(error) + } + defer resp.Body.Close() + var buffer [512]byte + result := bytes.NewBuffer(nil) + for { + n, err := resp.Body.Read(buffer[0:]) + result.Write(buffer[0:n]) + if err != nil && err == io.EOF { + break + } else if err != nil { + //loger.Error(err) + return "" + // panic(err) + } + } + response = result.String() + return +} + +//发送GET请求 +//url:请求地址 +//response:请求返回的内容 +func PersonGet(url string) (response string) { + client := &http.Client{Timeout: 5 * time.Second} + req, err := http.NewRequest("GET", url, nil) + if err != nil { return "" } @@ -78,88 +113,6 @@ func Post(url string, data []byte, contentType string, head map[string]string) ( return } -//发送POST请求 -//url:请求地址,data:POST请求提交的数据,contentType:请求体格式,如:application/json -//content:请求放回的内容 -func ZeroTierPost(url string, data map[string]string, head map[string]string, cookies []*http.Cookie) (content string, code int) { - b, _ := json.Marshal(data) - req, err := http.NewRequest("POST", url, bytes.NewReader(b)) - for _, cookie := range cookies { - req.AddCookie(cookie) - } - for k, v := range head { - req.Header.Add(k, v) - } - if err != nil { - panic(err) - } - - client := &http.Client{Timeout: 20 * time.Second} - resp, error := client.Do(req) - - if error != nil { - panic(error) - } - defer resp.Body.Close() - code = resp.StatusCode - result, _ := ioutil.ReadAll(resp.Body) - content = string(result) - return -} - -//发送POST请求 -//url:请求地址,data:POST请求提交的数据,contentType:请求体格式,如:application/json -//content:请求放回的内容 -func ZeroTierPostJson(url string, data string, head map[string]string) (content string, code int) { - var postData *bytes.Buffer - - jsonStr := []byte(data) - postData = bytes.NewBuffer(jsonStr) - - req, err := http.NewRequest("POST", url, postData) - for k, v := range head { - req.Header.Add(k, v) - } - if err != nil { - panic(err) - } - - client := &http.Client{Timeout: 20 * time.Second} - resp, error := client.Do(req) - - if error != nil { - panic(error) - } - defer resp.Body.Close() - result, _ := ioutil.ReadAll(resp.Body) - content = string(result) - code = resp.StatusCode - return -} - -func ZeroTierDelete(url string, head map[string]string) (content string, code int) { - - req, err := http.NewRequest("DELETE", url, nil) - for k, v := range head { - req.Header.Add(k, v) - } - if err != nil { - panic(err) - } - - client := &http.Client{Timeout: 20 * time.Second} - resp, error := client.Do(req) - - if error != nil { - panic(error) - } - defer resp.Body.Close() - result, _ := ioutil.ReadAll(resp.Body) - content = string(result) - code = resp.StatusCode - return -} - //发送POST请求 //url:请求地址,data:POST请求提交的数据,contentType:请求体格式,如:application/json //content:请求放回的内容 diff --git a/pkg/utils/ip_helper/ip.go b/pkg/utils/ip_helper/ip.go index 3b080ec..92577a0 100644 --- a/pkg/utils/ip_helper/ip.go +++ b/pkg/utils/ip_helper/ip.go @@ -1,9 +1,10 @@ package ip_helper import ( - httper2 "github.com/IceWhaleTech/CasaOS/pkg/utils/httper" "net" "strings" + + httper2 "github.com/IceWhaleTech/CasaOS/pkg/utils/httper" ) func IsIPv4(address string) bool { @@ -39,3 +40,35 @@ func GetLoclIp() string { } return "127.0.0.1" } +func GetDeviceAllIP(port string) []string { + var address []string + addrs, err := net.InterfaceAddrs() + if err != nil { + return address + } + for _, a := range addrs { + if ipNet, ok := a.(*net.IPNet); ok && !ipNet.IP.IsLoopback() { + if ipNet.IP.To16() != nil { + address = append(address, ipNet.IP.String()+":"+port) + } + } + } + return address +} + +func HasLocalIP(ip net.IP) bool { + if ip.IsLoopback() { + return true + } + ip.String() + + ip4 := ip.To4() + if ip4 == nil { + return false + } + + return ip4[0] == 10 || // 10.0.0.0/8 + (ip4[0] == 172 && ip4[1] >= 16 && ip4[1] <= 31) || // 172.16.0.0/12 + (ip4[0] == 169 && ip4[1] == 254) || // 169.254.0.0/16 + (ip4[0] == 192 && ip4[1] == 168) // 192.168.0.0/16 +} diff --git a/pkg/utils/ip_helper/ip_test.go b/pkg/utils/ip_helper/ip_test.go index dfbf5aa..dcf6506 100644 --- a/pkg/utils/ip_helper/ip_test.go +++ b/pkg/utils/ip_helper/ip_test.go @@ -2,6 +2,7 @@ package ip_helper import ( "fmt" + "net" "testing" ) @@ -20,3 +21,7 @@ func TestGetExternalIPV6(t *testing.T) { func TestGetLoclIp(t *testing.T) { fmt.Println(GetLoclIp()) } +func TestHasLocalIP(t *testing.T) { + fmt.Println("dddd") + fmt.Println(HasLocalIP(net.ParseIP("192.168.2.10"))) +} diff --git a/pkg/utils/network_detection.go b/pkg/utils/network_detection.go new file mode 100644 index 0000000..1f6ffe9 --- /dev/null +++ b/pkg/utils/network_detection.go @@ -0,0 +1,30 @@ +/* + * @Author: LinkLeong a624669980@163.com + * @Date: 2022-05-08 14:58:46 + * @LastEditors: LinkLeong a624669980@163.com + * @LastEditTime: 2022-05-09 13:42:26 + * @FilePath: /CasaOS/pkg/utils/network_detection.go + * @Description: + * + * Copyright (c) 2022 by LinkLeong a624669980@163.com, All Rights Reserved. + */ +package utils + +import natType "github.com/Curtis-Milo/nat-type-identifier-go" + +/** + * @description: + * @param {chanstring} data + * @param {string} url + * @return {*} + */ +func GetNetWorkTypeDetection(data chan string, url string) { + // fmt.Println("url:", url) + // httper.Get(url, nil) + // aaa <- url + result, err := natType.GetDeterminedNatType(true, 5, url) + if err == nil { + data <- result + } + +} diff --git a/pkg/utils/network_detection_test.go b/pkg/utils/network_detection_test.go new file mode 100644 index 0000000..c4cb8aa --- /dev/null +++ b/pkg/utils/network_detection_test.go @@ -0,0 +1,29 @@ +/* + * @Author: LinkLeong a624669980@163.com + * @Date: 2022-05-08 15:07:31 + * @LastEditors: LinkLeong a624669980@163.com + * @LastEditTime: 2022-05-09 11:43:30 + * @FilePath: /CasaOS/pkg/utils/network_detection_test.go + * @Description: + * + * Copyright (c) 2022 by LinkLeong a624669980@163.com, All Rights Reserved. + */ + +package utils + +import ( + "fmt" + "testing" +) + +func TestGetResultTest(t *testing.T) { + list := []string{"https://www.google.com", "https://www.bing.com", "https://www.baidu.com"} + data := make(chan string) + //data <- "init" + for _, v := range list { + go GetNetWorkTypeDetection(data, v) + } + result := <-data + close(data) + fmt.Println(result) +} diff --git a/pkg/utils/oasis_err/e.go b/pkg/utils/oasis_err/e.go index bb6fcbd..a6526ce 100644 --- a/pkg/utils/oasis_err/e.go +++ b/pkg/utils/oasis_err/e.go @@ -13,10 +13,11 @@ const ( PWD_INVALID_OLD = 10003 ACCOUNT_LOCK = 10004 //system - DIR_ALREADY_EXISTS = 20001 - FILE_ALREADY_EXISTS = 20002 - FILE_OR_DIR_EXISTS = 20003 - PORT_IS_OCCUPIED = 20004 + DIR_ALREADY_EXISTS = 20001 + FILE_ALREADY_EXISTS = 20002 + FILE_OR_DIR_EXISTS = 20003 + PORT_IS_OCCUPIED = 20004 + COMMAND_ERROR_INVALID_OPERATION = 20005 //zerotier GET_TOKEN_ERROR = 30001 @@ -29,9 +30,10 @@ const ( FORMAT_ERROR = 40005 //app - UNINSTALL_APP_ERROR = 50001 - PULL_IMAGE_ERROR = 50002 - DEVICE_NOT_EXIST = 50003 + UNINSTALL_APP_ERROR = 50001 + PULL_IMAGE_ERROR = 50002 + DEVICE_NOT_EXIST = 50003 + ERROR_APP_NAME_EXIST = 50004 //file FILE_DOES_NOT_EXIST = 60001 @@ -73,9 +75,10 @@ var MsgFlags = map[int]string{ GET_TOKEN_ERROR: "Get token error,Please log in to zerotier's official website to confirm whether the account is available", //app - UNINSTALL_APP_ERROR: "Error uninstalling app", - PULL_IMAGE_ERROR: "Error pulling image", - DEVICE_NOT_EXIST: "Device does not exist", + UNINSTALL_APP_ERROR: "Error uninstalling app", + PULL_IMAGE_ERROR: "Error pulling image", + DEVICE_NOT_EXIST: "Device does not exist", + ERROR_APP_NAME_EXIST: "App name already exists", //disk NAME_NOT_AVAILABLE: "Name not available", @@ -93,12 +96,13 @@ var MsgFlags = map[int]string{ FILE_DELETE_ERROR: "Delete error", SHORTCUTS_URL_ERROR: "URL error", - PERSON_REMOTE_ERROR: "Remote connection error", - PERSON_DOWN_NOT_EXIST: "Download record does not exist", - PERSON_EXIST_DOWNLOAD: "The same download task exists", - PERSON_EXIST_FRIEND: "Friend already exist", - PERSON_NOT_EXIST_USER: "User does not exist", - PERSON_MYSELF: "You can not add yourself", + PERSON_REMOTE_ERROR: "Remote connection error", + PERSON_DOWN_NOT_EXIST: "Download record does not exist", + PERSON_EXIST_DOWNLOAD: "The same download task exists", + PERSON_EXIST_FRIEND: "Friend already exist", + PERSON_NOT_EXIST_USER: "User does not exist", + PERSON_MYSELF: "You can not add yourself", + COMMAND_ERROR_INVALID_OPERATION: "invalid operation", } //获取错误信息 diff --git a/pkg/utils/sort/app_info_dev.go b/pkg/utils/sort/app_info_dev.go deleted file mode 100644 index 9f14a6f..0000000 --- a/pkg/utils/sort/app_info_dev.go +++ /dev/null @@ -1,73 +0,0 @@ -package sort - -import ( - "github.com/IceWhaleTech/CasaOS/model" - "sort" -) - -// 数据集类型, 与上一篇排序文章(多字段单独排序)比较, less字段的数据类型不再是 func(p1, p2 *Change) bool -// 而是 []func(p1, p2 *Change) bool 因为在第一个比较的值相等的情况下, 还要比较第二个值, 所以这里需要多个比较函数 -type devSorter struct { - dev []model.Devices - less []lessFuncDev -} - -// sort接口方法之一(Less) -type lessFuncDev func(p1, p2 *model.Devices) bool - -// Sort 函数有两个作用 -// 第一, 将参数(实际的数据集)赋值给ms对象 -// 第二, 调用内置sort函数进行排序操作 -func (ms *devSorter) Sort(dev []model.Devices) { - ms.dev = dev - sort.Sort(ms) -} - -// OrderedBy 函数的作用是返回一个multiSorter实例, 并将所有的实际排序函数赋值给实例的less字段, -// 上面已经为multiSorter结构体定义了Sort方法, 所以该函数的返回值可以直接调用Sort方法进行排序 -// 该函数中, 为multiSorter结构体中的less字段赋值, Sort方法中又将实际数据集传入, 赋值给multiSorter的ports字段 -// 一个函数, 一个方法调用过后, multiSorter实例中两个字段就已经全部被正确赋值, 可以调用系统sort函数进行排序 -// 该函数也可看作是一个工厂方法, 用来生成less字段已经被赋值的multiSorter实例 -func DevSort(less ...lessFuncDev) *devSorter { - return &devSorter{ - less: less, - } -} - -// Len 为sort接口方法之一 -func (ms *devSorter) Len() int { - return len(ms.dev) -} - -// Swap 为sort接口方法之一 -func (ms *devSorter) Swap(i, j int) { - ms.dev[i], ms.dev[j] = ms.dev[j], ms.dev[i] -} - -// Less 为sort接口方法之一 -func (ms *devSorter) Less(i, j int) bool { - temp := ms.dev - p, q := &temp[i], &temp[j] - // Try all but the last comparison. - var k int - // 由于可能有多个需要排序的字段, 也就对应了多个less函数, 当第一个字段的值相等时, - // 需要依次尝试比对后续其他字段的值得大小, 所以这里需要获取比较函数的长度, 以便遍历比较 - for k = 0; k < len(ms.less)-1; k++ { - // 提取比较函数, 将函数赋值到新的变量中以便调用 - less := ms.less[k] - switch { - case less(p, q): - // 如果 p < q, 返回值为true, 不存在两个值相等需要比较后续字段的情况, 所以这里直接返回 - // 如果 p > q, 返回值为false, 则调到下一个case中处理 - return true - case less(q, p): - // 如果 p > q, 返回值为false, 不存在两个值相等需要比较后续字段的情况, 所以这里直接返回 - return false - } - // 如果代码走到这里, 说明ms.less[k]函数比较后 p == q; 重新开始下一次循环, 更换到下一个比较函数处理 - continue - } - // 如果代码走到这里, 说明所有的比较函数执行过后, 所有比较的值都相等 - // 直接返回最后一次的比较结果数据即可 - return ms.less[k](p, q) -} diff --git a/pkg/utils/sort/app_info_evn.go b/pkg/utils/sort/app_info_evn.go deleted file mode 100644 index 40741e5..0000000 --- a/pkg/utils/sort/app_info_evn.go +++ /dev/null @@ -1,74 +0,0 @@ -package sort - -import ( - "sort" - - "github.com/IceWhaleTech/CasaOS/model" -) - -// 数据集类型, 与上一篇排序文章(多字段单独排序)比较, less字段的数据类型不再是 func(p1, p2 *Change) bool -// 而是 []func(p1, p2 *Change) bool 因为在第一个比较的值相等的情况下, 还要比较第二个值, 所以这里需要多个比较函数 -type evnSorter struct { - evn []model.Envs - less []lessFuncEnv -} - -// sort接口方法之一(Less) -type lessFuncEnv func(p1, p2 *model.Envs) bool - -// Sort 函数有两个作用 -// 第一, 将参数(实际的数据集)赋值给ms对象 -// 第二, 调用内置sort函数进行排序操作 -func (ms *evnSorter) Sort(env []model.Envs) { - ms.evn = env - sort.Sort(ms) -} - -// OrderedBy 函数的作用是返回一个multiSorter实例, 并将所有的实际排序函数赋值给实例的less字段, -// 上面已经为multiSorter结构体定义了Sort方法, 所以该函数的返回值可以直接调用Sort方法进行排序 -// 该函数中, 为multiSorter结构体中的less字段赋值, Sort方法中又将实际数据集传入, 赋值给multiSorter的ports字段 -// 一个函数, 一个方法调用过后, multiSorter实例中两个字段就已经全部被正确赋值, 可以调用系统sort函数进行排序 -// 该函数也可看作是一个工厂方法, 用来生成less字段已经被赋值的multiSorter实例 -func EnvSort(less ...lessFuncEnv) *evnSorter { - return &evnSorter{ - less: less, - } -} - -// Len 为sort接口方法之一 -func (ms *evnSorter) Len() int { - return len(ms.evn) -} - -// Swap 为sort接口方法之一 -func (ms *evnSorter) Swap(i, j int) { - ms.evn[i], ms.evn[j] = ms.evn[j], ms.evn[i] -} - -// Less 为sort接口方法之一 -func (ms *evnSorter) Less(i, j int) bool { - temp := ms.evn - p, q := &temp[i], &temp[j] - // Try all but the last comparison. - var k int - // 由于可能有多个需要排序的字段, 也就对应了多个less函数, 当第一个字段的值相等时, - // 需要依次尝试比对后续其他字段的值得大小, 所以这里需要获取比较函数的长度, 以便遍历比较 - for k = 0; k < len(ms.less)-1; k++ { - // 提取比较函数, 将函数赋值到新的变量中以便调用 - less := ms.less[k] - switch { - case less(p, q): - // 如果 p < q, 返回值为true, 不存在两个值相等需要比较后续字段的情况, 所以这里直接返回 - // 如果 p > q, 返回值为false, 则调到下一个case中处理 - return true - case less(q, p): - // 如果 p > q, 返回值为false, 不存在两个值相等需要比较后续字段的情况, 所以这里直接返回 - return false - } - // 如果代码走到这里, 说明ms.less[k]函数比较后 p == q; 重新开始下一次循环, 更换到下一个比较函数处理 - continue - } - // 如果代码走到这里, 说明所有的比较函数执行过后, 所有比较的值都相等 - // 直接返回最后一次的比较结果数据即可 - return ms.less[k](p, q) -} diff --git a/pkg/utils/sort/app_info_port.go b/pkg/utils/sort/app_info_port.go deleted file mode 100644 index 8198b4c..0000000 --- a/pkg/utils/sort/app_info_port.go +++ /dev/null @@ -1,73 +0,0 @@ -package sort - -import ( - "github.com/IceWhaleTech/CasaOS/model" - "sort" -) - -// 数据集类型, 与上一篇排序文章(多字段单独排序)比较, less字段的数据类型不再是 func(p1, p2 *Change) bool -// 而是 []func(p1, p2 *Change) bool 因为在第一个比较的值相等的情况下, 还要比较第二个值, 所以这里需要多个比较函数 -type multiSorter struct { - ports []model.Ports - less []lessFunc -} - -// sort接口方法之一(Less) -type lessFunc func(p1, p2 *model.Ports) bool - -// Sort 函数有两个作用 -// 第一, 将参数(实际的数据集)赋值给ms对象 -// 第二, 调用内置sort函数进行排序操作 -func (ms *multiSorter) Sort(ports []model.Ports) { - ms.ports = ports - sort.Sort(ms) -} - -// OrderedBy 函数的作用是返回一个multiSorter实例, 并将所有的实际排序函数赋值给实例的less字段, -// 上面已经为multiSorter结构体定义了Sort方法, 所以该函数的返回值可以直接调用Sort方法进行排序 -// 该函数中, 为multiSorter结构体中的less字段赋值, Sort方法中又将实际数据集传入, 赋值给multiSorter的ports字段 -// 一个函数, 一个方法调用过后, multiSorter实例中两个字段就已经全部被正确赋值, 可以调用系统sort函数进行排序 -// 该函数也可看作是一个工厂方法, 用来生成less字段已经被赋值的multiSorter实例 -func PortsSort(less ...lessFunc) *multiSorter { - return &multiSorter{ - less: less, - } -} - -// Len 为sort接口方法之一 -func (ms *multiSorter) Len() int { - return len(ms.ports) -} - -// Swap 为sort接口方法之一 -func (ms *multiSorter) Swap(i, j int) { - ms.ports[i], ms.ports[j] = ms.ports[j], ms.ports[i] -} - -// Less 为sort接口方法之一 -func (ms *multiSorter) Less(i, j int) bool { - port := ms.ports - p, q := &port[i], &port[j] - // Try all but the last comparison. - var k int - // 由于可能有多个需要排序的字段, 也就对应了多个less函数, 当第一个字段的值相等时, - // 需要依次尝试比对后续其他字段的值得大小, 所以这里需要获取比较函数的长度, 以便遍历比较 - for k = 0; k < len(ms.less)-1; k++ { - // 提取比较函数, 将函数赋值到新的变量中以便调用 - less := ms.less[k] - switch { - case less(p, q): - // 如果 p < q, 返回值为true, 不存在两个值相等需要比较后续字段的情况, 所以这里直接返回 - // 如果 p > q, 返回值为false, 则调到下一个case中处理 - return true - case less(q, p): - // 如果 p > q, 返回值为false, 不存在两个值相等需要比较后续字段的情况, 所以这里直接返回 - return false - } - // 如果代码走到这里, 说明ms.less[k]函数比较后 p == q; 重新开始下一次循环, 更换到下一个比较函数处理 - continue - } - // 如果代码走到这里, 说明所有的比较函数执行过后, 所有比较的值都相等 - // 直接返回最后一次的比较结果数据即可 - return ms.less[k](p, q) -} diff --git a/pkg/utils/sort/app_info_vol.go b/pkg/utils/sort/app_info_vol.go deleted file mode 100644 index 1a07fb8..0000000 --- a/pkg/utils/sort/app_info_vol.go +++ /dev/null @@ -1,73 +0,0 @@ -package sort - -import ( - "github.com/IceWhaleTech/CasaOS/model" - "sort" -) - -// 数据集类型, 与上一篇排序文章(多字段单独排序)比较, less字段的数据类型不再是 func(p1, p2 *Change) bool -// 而是 []func(p1, p2 *Change) bool 因为在第一个比较的值相等的情况下, 还要比较第二个值, 所以这里需要多个比较函数 -type volSorter struct { - vol []model.Volume - less []lessFuncVol -} - -// sort接口方法之一(Less) -type lessFuncVol func(p1, p2 *model.Volume) bool - -// Sort 函数有两个作用 -// 第一, 将参数(实际的数据集)赋值给ms对象 -// 第二, 调用内置sort函数进行排序操作 -func (ms *volSorter) Sort(vol []model.Volume) { - ms.vol = vol - sort.Sort(ms) -} - -// OrderedBy 函数的作用是返回一个multiSorter实例, 并将所有的实际排序函数赋值给实例的less字段, -// 上面已经为multiSorter结构体定义了Sort方法, 所以该函数的返回值可以直接调用Sort方法进行排序 -// 该函数中, 为multiSorter结构体中的less字段赋值, Sort方法中又将实际数据集传入, 赋值给multiSorter的ports字段 -// 一个函数, 一个方法调用过后, multiSorter实例中两个字段就已经全部被正确赋值, 可以调用系统sort函数进行排序 -// 该函数也可看作是一个工厂方法, 用来生成less字段已经被赋值的multiSorter实例 -func VolSort(less ...lessFuncVol) *volSorter { - return &volSorter{ - less: less, - } -} - -// Len 为sort接口方法之一 -func (ms *volSorter) Len() int { - return len(ms.vol) -} - -// Swap 为sort接口方法之一 -func (ms *volSorter) Swap(i, j int) { - ms.vol[i], ms.vol[j] = ms.vol[j], ms.vol[i] -} - -// Less 为sort接口方法之一 -func (ms *volSorter) Less(i, j int) bool { - temp := ms.vol - p, q := &temp[i], &temp[j] - // Try all but the last comparison. - var k int - // 由于可能有多个需要排序的字段, 也就对应了多个less函数, 当第一个字段的值相等时, - // 需要依次尝试比对后续其他字段的值得大小, 所以这里需要获取比较函数的长度, 以便遍历比较 - for k = 0; k < len(ms.less)-1; k++ { - // 提取比较函数, 将函数赋值到新的变量中以便调用 - less := ms.less[k] - switch { - case less(p, q): - // 如果 p < q, 返回值为true, 不存在两个值相等需要比较后续字段的情况, 所以这里直接返回 - // 如果 p > q, 返回值为false, 则调到下一个case中处理 - return true - case less(q, p): - // 如果 p > q, 返回值为false, 不存在两个值相等需要比较后续字段的情况, 所以这里直接返回 - return false - } - // 如果代码走到这里, 说明ms.less[k]函数比较后 p == q; 重新开始下一次循环, 更换到下一个比较函数处理 - continue - } - // 如果代码走到这里, 说明所有的比较函数执行过后, 所有比较的值都相等 - // 直接返回最后一次的比较结果数据即可 - return ms.less[k](p, q) -} diff --git a/pkg/utils/version/version.go b/pkg/utils/version/version.go index a3551e7..53f8a1f 100644 --- a/pkg/utils/version/version.go +++ b/pkg/utils/version/version.go @@ -37,6 +37,31 @@ func IsNeedUpdate() (bool, model.Version) { return false, version } +func IsClientNeedUpdate() (bool, model.Version) { + var version model.Version + v := httper.OasisGet(config.ServerInfo.ServerApi + "/v1/sys/client/version") + data := gjson.Get(v, "data") + json2.Unmarshal([]byte(data.String()), &version) + + v1 := strings.Split(version.Version, ".") + v2 := strings.Split(types.CURRENTVERSION, ".") + + for len(v1) < len(v2) { + v1 = append(v1, "0") + } + for len(v2) < len(v1) { + v2 = append(v2, "0") + } + for i := 0; i < len(v1); i++ { + a, _ := strconv.Atoi(v1[i]) + b, _ := strconv.Atoi(v2[i]) + if a > b { + return true, version + } + } + return false, version +} + //a版本大于b版本 func VersionCompared(a string, b string) bool { v1 := strings.Split(a, ".") diff --git a/route/init.go b/route/init.go index 3859361..9481ce5 100644 --- a/route/init.go +++ b/route/init.go @@ -1,17 +1,16 @@ package route import ( - "encoding/json" "encoding/xml" "fmt" "runtime" "strconv" + "strings" "time" "github.com/IceWhaleTech/CasaOS/model" "github.com/IceWhaleTech/CasaOS/model/system_app" "github.com/IceWhaleTech/CasaOS/pkg/config" - "github.com/IceWhaleTech/CasaOS/pkg/docker" "github.com/IceWhaleTech/CasaOS/pkg/utils/command" "github.com/IceWhaleTech/CasaOS/pkg/utils/env_helper" "github.com/IceWhaleTech/CasaOS/pkg/utils/file" @@ -27,6 +26,9 @@ func InitFunction() { CheckSerialDiskMount() CheckToken2_11() + ImportApplications() + ChangeAPIUrl() + InitSystemApplication() } @@ -102,8 +104,9 @@ func installSyncthing(appId string) { m.Ports = appInfo.Ports m.Restart = "always" m.Volumes = appInfo.Volumes - - containerId, err := service.MyService.Docker().DockerContainerCreate(dockerImage+":"+dockerImageVersion, id, m, appInfo.NetworkModel) + m.Label = id + m.CustomId = id + containerId, err := service.MyService.Docker().DockerContainerCreate(dockerImage+":"+dockerImageVersion, m, appInfo.NetworkModel) if err != nil { fmt.Println("container create error", err) // create container error @@ -111,83 +114,46 @@ func installSyncthing(appId string) { } //step:start container - err = service.MyService.Docker().DockerContainerStart(id) + err = service.MyService.Docker().DockerContainerStart(containerId) if err != nil { //start container error return } - portsStr, _ := json.Marshal(appInfo.Ports) - envsStr, _ := json.Marshal(appInfo.Envs) - volumesStr, _ := json.Marshal(appInfo.Volumes) - devicesStr, _ := json.Marshal(appInfo.Devices) - //step: 保存数据到数据库 - md := model2.AppListDBModel{ - CustomId: id, - Title: appInfo.Title, - //ScreenshotLink: appInfo.ScreenshotLink, - Slogan: appInfo.Tagline, - Description: appInfo.Description, - //Tags: appInfo.Tags, - Icon: appInfo.Icon, - Version: dockerImageVersion, - ContainerId: containerId, - Image: dockerImage, - Index: appInfo.Index, - PortMap: appInfo.PortMap, - Label: appInfo.Title, - EnableUPNP: false, - Ports: string(portsStr), - Envs: string(envsStr), - Volumes: string(volumesStr), - Position: true, - NetModel: appInfo.NetworkModel, - Restart: m.Restart, - CpuShares: 50, - Memory: int64(appInfo.MaxMemory), - Devices: string(devicesStr), - Origin: m.Origin, - CreatedAt: strconv.FormatInt(time.Now().Unix(), 10), - UpdatedAt: strconv.FormatInt(time.Now().Unix(), 10), - } - service.MyService.App().SaveContainer(md) - checkSystemApp() } // check if the system application is installed func checkSystemApp() { list := service.MyService.App().GetSystemAppList() - for _, v := range *list { - if v.Image == "linuxserver/syncthing" { + for _, v := range list { + info, err := service.MyService.Docker().DockerContainerInfo(v.ID) + if err != nil { + continue + } + if strings.Contains(info.Config.Image, "linuxserver/syncthing") { if v.State != "running" { //step:start container - service.MyService.Docker().DockerContainerStart(v.CustomId) + service.MyService.Docker().DockerContainerStart(v.ID) } syncIsExistence = true - if config.SystemConfigInfo.SyncPort != v.Port { - config.SystemConfigInfo.SyncPort = v.Port + if config.SystemConfigInfo.SyncPort != v.Labels["web"] { + config.SystemConfigInfo.SyncPort = v.Labels["web"] } - var paths []model.PathMap - json.Unmarshal([]byte(v.Volumes), &paths) + path := "" - for _, i := range paths { - if i.ContainerPath == "/config" { - path = docker.GetDir(v.CustomId, i.Path) + "/config.xml" - for i := 0; i < 10; i++ { - if file.CheckNotExist(path) { - time.Sleep(1 * time.Second) - } else { - break - } - } + for _, i := range info.HostConfig.Mounts { + if i.Target == "/config" { + path = i.Source + break } } - content := file.ReadFullFile(path) + content := file.ReadFullFile(path + "config.xml") syncConfig := &system_app.SyncConfig{} xml.Unmarshal(content, &syncConfig) config.SystemConfigInfo.SyncKey = syncConfig.Key + break } } if !syncIsExistence { @@ -261,7 +227,7 @@ func CheckToken2_11() { downloadPath = "C:\\CasaOS\\DATA\\Downloads" } if sysType == "darwin" { - downloadPath = "~/CasaOS/DATA/Downloads" + downloadPath = "./CasaOS/DATA/Downloads" } config.Cfg.Section("file").Key("DownloadDir").SetValue(downloadPath) config.FileSettingInfo.DownloadDir = downloadPath @@ -280,7 +246,10 @@ func CheckToken2_11() { config.Cfg.SaveTo(config.SystemConfigInfo.ConfigPath) } - service.MyService.System().ExecUSBAutoMountShell(config.ServerInfo.USBAutoMount) + if service.MyService.ZiMa().GetSysInfo().KernelArch == "aarch64" && config.ServerInfo.USBAutoMount != "True" && strings.Contains(service.MyService.ZiMa().GetDeviceTree(), "Raspberry Pi") { + service.MyService.System().UpdateUSBAutoMount("False") + service.MyService.System().ExecUSBAutoMountShell("False") + } // str := []string{} // str = append(str, "ddd") @@ -291,3 +260,39 @@ func CheckToken2_11() { // config.Cfg.SaveTo(config.SystemConfigInfo.ConfigPath) } + +func ImportApplications() { + service.MyService.App().ImportApplications(true) +} + +// 0.3.1 +func ChangeAPIUrl() { + + newAPIUrl := "https://api.casaos.io/casaos-api" + if config.ServerInfo.ServerApi == "https://api.casaos.zimaboard.com" { + config.ServerInfo.ServerApi = newAPIUrl + config.Cfg.Section("server").Key("ServerApi").SetValue(newAPIUrl) + config.Cfg.SaveTo(config.SystemConfigInfo.ConfigPath) + } + +} + +// 0.3.1 +func InitSystemApplication() { + list := service.MyService.App().GetApplicationList() + if len(list) != 2 { + application := model2.ApplicationModel{} + application.Name = "Files" + application.Icon = "/ui/img/Files.svg" + application.Type = "system" + application.Order = 0 + service.MyService.App().CreateApplication(application) + + application.Name = "CasaConnect" + application.Icon = "/ui/img/CasaConnect.svg" + application.Type = "system" + application.Order = 0 + + service.MyService.App().CreateApplication(application) + } +} diff --git a/route/route.go b/route/route.go index 80b7eee..f2b8459 100644 --- a/route/route.go +++ b/route/route.go @@ -41,7 +41,8 @@ func InitRouter() *gin.Engine { r.POST("/v1/user/setusernamepwd", v1.Set_Name_Pwd) //get user info r.GET("/v1/user/info", v1.GetUserInfo) - + //get user info + r.GET("/v1/person/shareid", v1.GetPersonShareId) v1Group := r.Group("/v1") v1Group.Use(jwt2.JWT(swagHandler)) @@ -102,7 +103,7 @@ func InitRouter() *gin.Engine { v1AppGroup.Use() { //获取我的已安装的列表 - v1AppGroup.GET("/mylist", v1.MyAppList) + v1AppGroup.GET("/my/list", v1.MyAppList) // v1AppGroup.GET("/usage", v1.AppUsageList) //app详情 @@ -117,8 +118,8 @@ func InitRouter() *gin.Engine { v1AppGroup.GET("/category", v1.CategoryList) //容器相关 v1AppGroup.GET("/terminal/:id", v1.DockerTerminal) - //准备安装 - //v1AppGroup.GET("/ready/:id", v1.ReadyInstall) + v1AppGroup.GET("/order", v1.GetAppOrder) + v1AppGroup.POST("/order", v1.PostAppOrder) //app容器详情 v1AppGroup.GET("/info/:id", v1.ContainerInfo) //app容器日志 @@ -139,17 +140,17 @@ func InitRouter() *gin.Engine { v1AppGroup.GET("/update/:id/info", v1.ContainerUpdateInfo) v1AppGroup.GET("/rely/:id/info", v1.ContainerRelyInfo) v1AppGroup.GET("/install/config", v1.GetDockerInstallConfig) - //v1AppGroup.POST("/custom/install", v1.CustomInstallApp) + v1AppGroup.PUT("/update/:id", v1.PutAppUpdate) v1AppGroup.POST("/share", v1.ShareAppFile) } v1SysGroup := v1Group.Group("/sys") v1SysGroup.Use() { - //获取检查版本是否需要升级 v1SysGroup.GET("/check", v1.CheckVersion) + v1SysGroup.GET("/hardware/info", v1.GetSystemHardwareInfo) + v1SysGroup.GET("/client/version", v1.GetClientVersion) v1SysGroup.POST("/update", v1.SystemUpdate) - v1SysGroup.GET("/sys", v1.Sys) v1SysGroup.GET("/wsssh", v1.WsSsh) v1SysGroup.GET("/config", v1.GetSystemConfig) v1SysGroup.GET("/error/logs", v1.GetCasaOSErrorLogs) @@ -161,13 +162,12 @@ func InitRouter() *gin.Engine { v1SysGroup.POST("/kill", v1.PostKillCasaOS) v1SysGroup.GET("/info", v1.Info) v1SysGroup.PUT("/usb/off", v1.PutSystemOffUSBAutoMount) - v1SysGroup.GET("/usb/on", v1.PutSystemOnUSBAutoMount) + v1SysGroup.PUT("/usb/on", v1.PutSystemOnUSBAutoMount) v1SysGroup.GET("/usb", v1.GetSystemUSBAutoMount) } v1FileGroup := v1Group.Group("/file") v1FileGroup.Use() { - //修改文件名称/目录名称 v1FileGroup.PUT("/rename", v1.RenamePath) v1FileGroup.GET("/read", v1.GetFilerContent) v1FileGroup.POST("/upload", v1.PostFileUpload) @@ -182,6 +182,7 @@ func InitRouter() *gin.Engine { v1FileGroup.POST("/operate", v1.PostOperateFileOrDir) v1FileGroup.DELETE("/delete", v1.DeleteFile) v1FileGroup.PUT("/update", v1.PutFileContent) + v1FileGroup.GET("/image", v1.GetFileImage) //v1FileGroup.GET("/download", v1.UserFileDownloadCommonService) } @@ -233,29 +234,18 @@ func InitRouter() *gin.Engine { v1TaskGroup.PUT("/completion/:id", v1.PutTaskMarkerCompletion) } - v1ShortcutsGroup := v1Group.Group("/shortcuts") - v1ShortcutsGroup.Use() - { - v1ShortcutsGroup.GET("/list", v1.GetShortcutsList) - v1ShortcutsGroup.POST("/add", v1.PostShortcutsAdd) - v1ShortcutsGroup.PUT("/edit", v1.PutShortcutsEdit) - v1ShortcutsGroup.DELETE("/del/:id", v1.DeleteShortcutsDelete) - } + v1NotifyGroup := v1Group.Group("/notify") v1NotifyGroup.Use() { v1NotifyGroup.GET("/ws", v1.NotifyWS) v1NotifyGroup.PUT("/read/:id", v1.PutNotifyRead) } - v1SearchGroup := v1Group.Group("/search") - v1SearchGroup.Use() - { - v1SearchGroup.GET("/search", v1.GetSearchList) - } + v1PersonGroup := v1Group.Group("/person") v1PersonGroup.Use() { - v1PersonGroup.GET("/test", v1.PersonTest) + v1PersonGroup.GET("/detection", v1.GetPersonDetection) v1PersonGroup.GET("/users", v1.GetPersonFriend) v1PersonGroup.POST("/user/:shareids", v1.PostAddPersonFriend) v1PersonGroup.DELETE("/user/:shareid", v1.DeletePersonFriend) @@ -267,11 +257,15 @@ func InitRouter() *gin.Engine { v1PersonGroup.DELETE("/file/:uuid", v1.DeletePersonDownloadFile) v1PersonGroup.POST("/share", v1.PostPersonShare) + v1PersonGroup.POST("/file/:shareid", v1.PostPersonFile) v1PersonGroup.GET("/share", v1.GetPersonShare) v1PersonGroup.POST("/down/dir", v1.PostPersonDownDir) v1PersonGroup.GET("/down/dir", v1.GetPersonDownDir) v1PersonGroup.PUT("/block/:shareid", v1.PutPersonBlock) v1PersonGroup.GET("/public", v1.GetPersonPublic) + v1PersonGroup.PUT("/friend/:shareid", v1.PutPersonAgreeFriend) + v1PersonGroup.PUT("/write/:shareid", v1.PutPersonWrite) + v1PersonGroup.GET("/image/thumbnail/:shareid", v1.GetPersonImageThumbnail) } v1AnalyseGroup := v1Group.Group("/analyse") diff --git a/route/v1/app.go b/route/v1/app.go index a2b326e..9616872 100644 --- a/route/v1/app.go +++ b/route/v1/app.go @@ -106,13 +106,18 @@ func PortCheck(c *gin.Context) { // @Param size query int false "size" // @Param position query bool false "是否是首页应用" // @Success 200 {string} string "ok" -// @Router /app/mylist [get] +// @Router /app/my/list [get] func MyAppList(c *gin.Context) { index, _ := strconv.Atoi(c.DefaultQuery("index", "1")) size, _ := strconv.Atoi(c.DefaultQuery("size", "0")) position, _ := strconv.ParseBool(c.DefaultQuery("position", "true")) - list := service.MyService.App().GetMyList(index, size, position) - c.JSON(http.StatusOK, &model.Result{Success: oasis_err2.SUCCESS, Message: oasis_err2.GetMsg(oasis_err2.SUCCESS), Data: list}) + list, unTranslation := service.MyService.App().GetMyList(index, size, position) + + data := make(map[string]interface{}, 2) + data["list"] = list + data["local"] = unTranslation + + c.JSON(http.StatusOK, &model.Result{Success: oasis_err2.SUCCESS, Message: oasis_err2.GetMsg(oasis_err2.SUCCESS), Data: data}) } // @Summary my app hardware usage list diff --git a/route/v1/docker.go b/route/v1/docker.go index 7906cd2..0b74300 100644 --- a/route/v1/docker.go +++ b/route/v1/docker.go @@ -4,8 +4,8 @@ import ( "bytes" "encoding/json" json2 "encoding/json" + "fmt" "net/http" - "reflect" "strconv" "strings" "time" @@ -16,6 +16,7 @@ import ( upnp2 "github.com/IceWhaleTech/CasaOS/pkg/upnp" "github.com/IceWhaleTech/CasaOS/pkg/utils/file" ip_helper2 "github.com/IceWhaleTech/CasaOS/pkg/utils/ip_helper" + "github.com/IceWhaleTech/CasaOS/pkg/utils/oasis_err" oasis_err2 "github.com/IceWhaleTech/CasaOS/pkg/utils/oasis_err" port2 "github.com/IceWhaleTech/CasaOS/pkg/utils/port" "github.com/IceWhaleTech/CasaOS/pkg/utils/random" @@ -27,7 +28,6 @@ import ( "github.com/gorilla/websocket" "github.com/jinzhu/copier" uuid "github.com/satori/go.uuid" - "github.com/tidwall/gjson" "golang.org/x/crypto/ssh" ) @@ -154,6 +154,27 @@ func InstallApp(c *gin.Context) { const CUSTOM = "custom" var dockerImage string var dockerImageVersion string + + //check app name is exist + + if m.Origin != "custom" { + oldName := m.Label + for i := 0; true; i++ { + if i != 0 { + m.Label = oldName + "-" + strconv.Itoa(i) + } + if _, err := service.MyService.Docker().DockerListByName(m.Label); err != nil { + break + } + } + } else { + if _, err := service.MyService.Docker().DockerListByName(m.Label); err == nil { + c.JSON(http.StatusOK, model.Result{Success: oasis_err2.ERROR_APP_NAME_EXIST, Message: oasis_err2.GetMsg(oasis_err2.ERROR_APP_NAME_EXIST)}) + return + } + + } + //检查端口 if len(m.PortMap) > 0 && m.PortMap != "0" { //c.JSON(http.StatusOK, model.Result{Success: oasis_err2.INVALID_PARAMS, Message: oasis_err2.GetMsg(oasis_err2.INVALID_PARAMS)}) @@ -248,12 +269,12 @@ func InstallApp(c *gin.Context) { // //} id := uuid.NewV4().String() - + m.CustomId = id var relyMap = make(map[string]string) go func() { installLog := model2.AppNotify{} installLog.State = 0 - installLog.CustomId = id + installLog.CustomId = m.Label installLog.Message = "installing rely" installLog.Class = types.NOTIFY_APP installLog.Type = types.NOTIFY_TYPE_UNIMPORTANT @@ -281,7 +302,7 @@ func InstallApp(c *gin.Context) { rely.Type = types.RELY_TYPE_MYSQL rely.ContainerId = mysqlContainerId rely.CustomId = mid - rely.ContainerCustomId = id + rely.ContainerCustomId = m.Label var mysqlConfig model2.MysqlConfigs //结构体转换 @@ -333,7 +354,7 @@ func InstallApp(c *gin.Context) { // service.MyService.Notify().UpdateLog(installLog) // return // } - containerId, err := service.MyService.Docker().DockerContainerCreate(dockerImage+":"+dockerImageVersion, id, m, appInfo.NetworkModel) + containerId, err := service.MyService.Docker().DockerContainerCreate(dockerImage+":"+dockerImageVersion, m, appInfo.NetworkModel) installLog.Name = appInfo.Title installLog.Icon = appInfo.Icon if err != nil { @@ -352,7 +373,7 @@ func InstallApp(c *gin.Context) { // echo -e "hellow\nworld" >> //step:启动容器 - err = service.MyService.Docker().DockerContainerStart(id) + err = service.MyService.Docker().DockerContainerStart(m.Label) if err != nil { //service.MyService.Redis().Set(id, "{\"id\"\""+id+"\",\"state\":false,\"message\":\""+err.Error()+"\",\"speed\":90}", 100) installLog.State = 0 @@ -418,7 +439,7 @@ func InstallApp(c *gin.Context) { } //step: 启动成功 检查容器状态确认启动成功 - container, err := service.MyService.Docker().DockerContainerInfo(id) + container, err := service.MyService.Docker().DockerContainerInfo(m.Label) if err != nil && container.ContainerJSONBase.State.Running { //service.MyService.Redis().Set(id, "{\"id\"\""+id+"\",\"state\":false,\"message\":\""+err.Error()+"\",\"speed\":100}", 100) installLog.State = 0 @@ -449,7 +470,7 @@ func InstallApp(c *gin.Context) { capAdd, _ := json.Marshal(m.CapAdd) //step: 保存数据到数据库 md := model2.AppListDBModel{ - CustomId: id, + CustomId: "", Title: appInfo.Title, //ScreenshotLink: appInfo.ScreenshotLink, Slogan: appInfo.Tagline, @@ -485,12 +506,13 @@ func InstallApp(c *gin.Context) { //if appInfo.NetworkModel == "host" { // m.PortMap = m.Port //} - service.MyService.App().SaveContainer(md) + fmt.Println(md) + //service.MyService.App().SaveContainer(md) config.CasaOSGlobalVariables.AppChange = true }() - c.JSON(http.StatusOK, model.Result{Success: oasis_err2.SUCCESS, Message: oasis_err2.GetMsg(oasis_err2.SUCCESS), Data: id}) + c.JSON(http.StatusOK, model.Result{Success: oasis_err2.SUCCESS, Message: oasis_err2.GetMsg(oasis_err2.SUCCESS), Data: m.Label}) } @@ -691,10 +713,16 @@ func UnInstallApp(c *gin.Context) { c.JSON(http.StatusOK, model.Result{Success: oasis_err2.INVALID_PARAMS, Message: oasis_err2.GetMsg(oasis_err2.INVALID_PARAMS)}) return } - info := service.MyService.App().GetUninstallInfo(appId) + //info := service.MyService.App().GetUninstallInfo(appId) + + info, err := service.MyService.Docker().DockerContainerInfo(appId) + if err != nil { + c.JSON(http.StatusOK, model.Result{Success: oasis_err2.ERROR, Message: oasis_err2.GetMsg(oasis_err2.ERROR), Data: err.Error()}) + return + } //step:停止容器 - err := service.MyService.Docker().DockerContainerStop(appId) + err = service.MyService.Docker().DockerContainerStop(appId) if err != nil { c.JSON(http.StatusOK, model.Result{Success: oasis_err2.UNINSTALL_APP_ERROR, Message: oasis_err2.GetMsg(oasis_err2.UNINSTALL_APP_ERROR), Data: err.Error()}) return @@ -709,17 +737,16 @@ func UnInstallApp(c *gin.Context) { //存在镜像正在使用的情况 // step:删除镜像 - service.MyService.Docker().DockerImageRemove(info.Image + ":" + info.Version) + service.MyService.Docker().DockerImageRemove(info.Image) //step: 删除本地数据 - service.MyService.App().RemoveContainerById(appId) - if info.Origin != "custom" { - + //service.MyService.App().RemoveContainerById(appId) + if info.Config.Labels["origin"] != "custom" { + fmt.Println(info.HostConfig.Mounts) //step: 删除文件夹 - vol := gjson.Get(info.Volumes, "#.host") - for _, v := range vol.Array() { - if strings.Contains(v.String(), appId) { - service.MyService.App().DelAppConfigDir(v.String()) + for _, v := range info.HostConfig.Mounts { + if strings.Contains(v.Source, info.Name) { + service.MyService.App().DelAppConfigDir(v.Source) } } @@ -793,7 +820,7 @@ func ChangAppState(c *gin.Context) { } else if state == "start" { err = service.MyService.Docker().DockerContainerStart(appId) } else if state == "restart" { - err = service.MyService.Docker().DockerContainerStop(appId) + service.MyService.Docker().DockerContainerStop(appId) err = service.MyService.Docker().DockerContainerStart(appId) } if err != nil { @@ -889,19 +916,23 @@ func UpdateSetting(c *gin.Context) { c.JSON(http.StatusOK, model.Result{Success: oasis_err2.INVALID_PARAMS, Message: oasis_err2.GetMsg(oasis_err2.INVALID_PARAMS)}) return } - var cpd model.CustomizationPostData + //var cpd model.CustomizationPostData - copier.Copy(&cpd, &m) + //copier.Copy(&cpd, &m) - appInfo := service.MyService.App().GetAppDBInfo(id) + //appInfo := service.MyService.App().GetAppDBInfo(id) + //info, err := service.MyService.Docker().DockerContainerInfo(id) - var containerId string - containerId = appInfo.ContainerId + // //check app name is exist + // if _, err := service.MyService.Docker().DockerListByName(m.Label); err == nil { + // c.JSON(http.StatusOK, model.Result{Success: oasis_err2.ERROR_APP_NAME_EXIST, Message: oasis_err2.GetMsg(oasis_err2.ERROR_APP_NAME_EXIST)}) + // return + // } service.MyService.Docker().DockerContainerStop(id) - portMap, _ := strconv.Atoi(m.PortMap) if !port2.IsPortAvailable(portMap, "tcp") { + service.MyService.Docker().DockerContainerStart(id) c.JSON(http.StatusOK, model.Result{Success: oasis_err2.ERROR, Message: "Duplicate port:" + m.PortMap}) return } @@ -911,77 +942,54 @@ func UpdateSetting(c *gin.Context) { if u.Protocol == "udp" { t, _ := strconv.Atoi(u.CommendPort) if !port2.IsPortAvailable(t, "udp") { + service.MyService.Docker().DockerContainerStart(id) c.JSON(http.StatusOK, model.Result{Success: oasis_err2.ERROR, Message: "Duplicate port:" + u.CommendPort}) return } } else if u.Protocol == "tcp" { te, _ := strconv.Atoi(u.CommendPort) if !port2.IsPortAvailable(te, "tcp") { + service.MyService.Docker().DockerContainerStart(id) c.JSON(http.StatusOK, model.Result{Success: oasis_err2.ERROR, Message: "Duplicate port:" + u.CommendPort}) return } } else if u.Protocol == "both" { t, _ := strconv.Atoi(u.CommendPort) if !port2.IsPortAvailable(t, "udp") { + service.MyService.Docker().DockerContainerStart(id) c.JSON(http.StatusOK, model.Result{Success: oasis_err2.ERROR, Message: "Duplicate port:" + u.CommendPort}) return } te, _ := strconv.Atoi(u.CommendPort) if !port2.IsPortAvailable(te, "tcp") { + service.MyService.Docker().DockerContainerStart(id) c.JSON(http.StatusOK, model.Result{Success: oasis_err2.ERROR, Message: "Duplicate port:" + u.CommendPort}) return } } } + service.MyService.Docker().DockerContainerUpdateName(id, id) + //service.MyService.Docker().DockerContainerRemove(id, true) - //如果容器端口均未修改,这不进行处理 - portsStr, _ := json2.Marshal(m.Ports) - - envsStr, _ := json2.Marshal(m.Envs) - volumesStr, _ := json2.Marshal(m.Volumes) - devicesStr, _ := json2.Marshal(m.Devices) - capAddStr, _ := json2.Marshal(m.CapAdd) - cmdStr, _ := json.Marshal(m.Cmd) - if !reflect.DeepEqual(string(portsStr), appInfo.Ports) || !reflect.DeepEqual(string(envsStr), appInfo.Envs) || !reflect.DeepEqual(string(volumesStr), appInfo.Volumes) || m.PortMap != appInfo.PortMap || m.NetworkModel != appInfo.NetModel || m.HostName != appInfo.HostName || !reflect.DeepEqual(string(cmdStr), appInfo.Cmd) || !reflect.DeepEqual(string(capAddStr), appInfo.CapAdd) || m.Privileged != appInfo.Privileged { - - var newUUid = uuid.NewV4().String() - var err error - - // networkName, err := service.MyService.Docker().GetNetWorkNameByNetWorkID(appInfo.NetModel) - // if err != nil { - // c.JSON(http.StatusOK, model.Result{Success: oasis_err2.ERROR, Message: oasis_err2.GetMsg(oasis_err2.ERROR)}) - // return - // } - containerId, err = service.MyService.Docker().DockerContainerCreate(appInfo.Image+":"+appInfo.Version, newUUid, cpd, m.NetworkModel) - - if err != nil { - c.JSON(http.StatusOK, model.Result{Success: oasis_err2.ERROR, Message: oasis_err2.GetMsg(oasis_err2.ERROR)}) - return - } - - err = service.MyService.Docker().DockerContainerRemove(id, true) - if err != nil { - c.JSON(http.StatusOK, model.Result{Success: oasis_err2.ERROR, Message: oasis_err2.GetMsg(oasis_err2.ERROR)}) - return - } - - service.MyService.Docker().DockerContainerUpdateName(appInfo.CustomId, newUUid) - if err != nil { - c.JSON(http.StatusOK, model.Result{Success: oasis_err2.ERROR, Message: oasis_err2.GetMsg(oasis_err2.ERROR)}) - return - } - - } else if !reflect.DeepEqual(string(devicesStr), appInfo.Devices) || m.CpuShares != appInfo.CpuShares || m.Memory != appInfo.Memory || m.Restart != appInfo.Restart { - service.MyService.Docker().DockerContainerUpdate(cpd, id) + containerId, err := service.MyService.Docker().DockerContainerCreate(m.Image, m, m.NetworkModel) + if err != nil { + service.MyService.Docker().DockerContainerUpdateName(m.Label, id) + service.MyService.Docker().DockerContainerStart(id) + c.JSON(http.StatusOK, model.Result{Success: oasis_err2.ERROR, Message: oasis_err2.GetMsg(oasis_err2.ERROR)}) + return } + // echo -e "hellow\nworld" >> + + //step:启动容器 + err = service.MyService.Docker().DockerContainerStart(containerId) - err := service.MyService.Docker().DockerContainerStart(id) if err != nil { c.JSON(http.StatusOK, model.Result{Success: oasis_err2.ERROR, Message: oasis_err2.GetMsg(oasis_err2.ERROR)}) return } + service.MyService.Docker().DockerContainerRemove(id, true) //更新upnp if m.Origin != CUSTOM { //if appInfo.EnableUPNP != appInfo.EnableUPNP { @@ -1047,31 +1055,96 @@ func UpdateSetting(c *gin.Context) { //} } - appInfo.ContainerId = containerId - appInfo.PortMap = m.PortMap - appInfo.Label = m.Label - appInfo.Index = m.Index - appInfo.Ports = string(portsStr) - appInfo.Envs = string(envsStr) - appInfo.Icon = m.Icon - appInfo.Volumes = string(volumesStr) - appInfo.Devices = string(devicesStr) - appInfo.NetModel = m.NetworkModel - appInfo.Position = m.Position - appInfo.EnableUPNP = m.EnableUPNP - appInfo.Restart = m.Restart - appInfo.Memory = m.Memory - appInfo.CpuShares = m.CpuShares - appInfo.Cmd = string(cmdStr) - appInfo.Privileged = m.Privileged - appInfo.CapAdd = string(capAddStr) - appInfo.HostName = m.HostName - appInfo.UpdatedAt = strconv.FormatInt(time.Now().Unix(), 10) - service.MyService.App().UpdateApp(appInfo) + //service.MyService.App().UpdateApp(appInfo) c.JSON(http.StatusOK, model.Result{Success: oasis_err2.SUCCESS, Message: oasis_err2.GetMsg(oasis_err2.SUCCESS)}) } +// @Summary update app version +// @Produce application/json +// @Accept multipart/form-data +// @Tags app +// @Param id path string true "容器id" +// @Security ApiKeyAuth +// @Success 200 {string} string "ok" +// @Router /app/update/{id} [put] +func PutAppUpdate(c *gin.Context) { + id := c.Param("id") + + if len(id) == 0 { + c.JSON(http.StatusOK, model.Result{Success: oasis_err2.INVALID_PARAMS, Message: oasis_err2.GetMsg(oasis_err2.INVALID_PARAMS)}) + return + } + + inspect, err := service.MyService.Docker().DockerContainerInfo(id) + if err != nil { + c.JSON(http.StatusOK, model.Result{Success: oasis_err2.ERROR, Message: oasis_err2.GetMsg(oasis_err2.ERROR), Data: err.Error()}) + return + + } + imageLatest := strings.Split(inspect.Config.Image, ":")[0] + ":latest" + err = service.MyService.Docker().DockerPullImage(imageLatest, model2.AppNotify{}) + if err != nil { + c.JSON(http.StatusOK, model.Result{Success: oasis_err2.ERROR, Message: oasis_err2.GetMsg(oasis_err2.ERROR), Data: err.Error()}) + return + + } + service.MyService.Docker().DockerContainerStop(id) + service.MyService.Docker().DockerContainerUpdateName(id, id) + //service.MyService.Docker().DockerContainerRemove(id, true) + inspect.Image = imageLatest + inspect.Config.Image = imageLatest + containerId, err := service.MyService.Docker().DockerContainerCopyCreate(inspect) + if err != nil { + service.MyService.Docker().DockerContainerUpdateName(inspect.Name, id) + service.MyService.Docker().DockerContainerStart(id) + c.JSON(http.StatusOK, model.Result{Success: oasis_err2.ERROR, Message: oasis_err2.GetMsg(oasis_err2.ERROR)}) + return + } + + //step:启动容器 + err = service.MyService.Docker().DockerContainerStart(containerId) + + if err != nil { + c.JSON(http.StatusOK, model.Result{Success: oasis_err2.ERROR, Message: oasis_err2.GetMsg(oasis_err2.ERROR)}) + return + } + service.MyService.Docker().DockerContainerRemove(id, true) + delete(service.NewVersionApp, id) + + c.JSON(http.StatusOK, model.Result{Success: oasis_err2.SUCCESS, Message: oasis_err2.GetMsg(oasis_err2.SUCCESS)}) +} + +// @Summary get app index +// @Produce application/json +// @Accept application/json +// @Tags app +// @Security ApiKeyAuth +// @Success 200 {string} string "ok" +// @Router /app/order [get] +func GetAppOrder(c *gin.Context) { + data := service.MyService.System().GetAppOrderFile() + c.JSON(http.StatusOK, model.Result{Success: oasis_err.SUCCESS, Message: oasis_err.GetMsg(oasis_err.SUCCESS), Data: json.RawMessage(data)}) +} + +// @Summary update app index +// @Produce application/json +// @Accept application/json +// @Tags app +// @Security ApiKeyAuth +// @Success 200 {string} string "ok" +// @Router /app/order [post] +func PostAppOrder(c *gin.Context) { + data := c.PostForm("data") + service.MyService.System().UpAppOrderFile(data) + c.JSON(http.StatusOK, + model.Result{ + Success: oasis_err.SUCCESS, + Message: oasis_err.GetMsg(oasis_err.SUCCESS), + Data: json.RawMessage(data), + }) +} + // @Summary 获取容器详情 // @Produce application/json // @Accept application/json @@ -1160,7 +1233,7 @@ func ContainerRelyInfo(c *gin.Context) { // @Router /app/update/{id}/info [get] func ContainerUpdateInfo(c *gin.Context) { appId := c.Param("id") - appInfo := service.MyService.App().GetAppDBInfo(appId) + //appInfo := service.MyService.App().GetAppDBInfo(appId) info, err := service.MyService.Docker().DockerContainerInfo(appId) if err != nil { //todo 需要自定义错误 @@ -1168,50 +1241,81 @@ func ContainerUpdateInfo(c *gin.Context) { return } var port model.PortArray - json2.Unmarshal([]byte(appInfo.Ports), &port) + // json2.Unmarshal([]byte(appInfo.Ports), &port) - var envs model.EnvArray - json2.Unmarshal([]byte(appInfo.Envs), &envs) + for k, v := range info.HostConfig.PortBindings { + temp := model.PortMap{ + CommendPort: v[0].HostPort, + ContainerPort: k.Port(), - var vol model.PathArray - json2.Unmarshal([]byte(appInfo.Volumes), &vol) - - for i := 0; i < len(vol); i++ { - vol[i].Path = strings.ReplaceAll(vol[i].Path, "$AppID", appId) + Protocol: k.Proto(), + } + port = append(port, temp) } - var dir model.PathArray - json2.Unmarshal([]byte(appInfo.Devices), &dir) + var envs model.EnvArray + // json2.Unmarshal([]byte(appInfo.Envs), &envs) + + for _, v := range info.Config.Env { + + temp := model.Env{ + Name: strings.Split(v, "=")[0], + Value: strings.Split(v, "=")[1], + } + envs = append(envs, temp) + } + + var vol model.PathArray + // json2.Unmarshal([]byte(appInfo.Volumes), &vol) + + for i := 0; i < len(info.HostConfig.Mounts); i++ { + temp := model.PathMap{ + Path: strings.ReplaceAll(info.HostConfig.Mounts[i].Source, "$AppID", info.Name), + ContainerPath: info.HostConfig.Mounts[i].Target, + } + vol = append(vol, temp) + } + var driver model.PathArray - var cmd []string - json2.Unmarshal([]byte(appInfo.Cmd), &cmd) - var capAdd []string - json2.Unmarshal([]byte(appInfo.CapAdd), &capAdd) //volumesStr, _ := json2.Marshal(m.Volumes) //devicesStr, _ := json2.Marshal(m.Devices) + for _, v := range info.HostConfig.Resources.Devices { + temp := model.PathMap{ + Path: v.PathOnHost, + ContainerPath: v.PathInContainer, + } + driver = append(driver, temp) + } + m := model.CustomizationPostData{} - m.Index = appInfo.Index - m.Icon = appInfo.Icon + m.Icon = info.Config.Labels["icon"] m.Ports = port - m.Image = appInfo.Image + ":" + appInfo.Version - m.Origin = appInfo.Origin - m.NetworkModel = appInfo.NetModel - m.Description = appInfo.Description - m.Label = appInfo.Label - m.PortMap = appInfo.PortMap - m.Devices = dir //appInfo.Devices + m.Image = info.Config.Image + m.Origin = info.Config.Labels["origin"] + if len(m.Origin) == 0 { + m.Origin = "local" + } + m.NetworkModel = string(info.HostConfig.NetworkMode) + m.Description = info.Config.Labels["desc"] + m.Label = strings.ReplaceAll(info.Name, "/", "") + m.PortMap = info.Config.Labels["web"] + m.Devices = driver m.Envs = envs m.Memory = info.HostConfig.Memory >> 20 m.CpuShares = info.HostConfig.CPUShares m.Volumes = vol //appInfo.Volumes m.Restart = info.HostConfig.RestartPolicy.Name - m.EnableUPNP = appInfo.EnableUPNP - m.Position = appInfo.Position - - m.CapAdd = capAdd - m.Cmd = cmd - m.HostName = appInfo.HostName - m.Privileged = appInfo.Privileged + m.EnableUPNP = false + m.Index = info.Config.Labels["index"] + m.Position = false + m.CustomId = info.Config.Labels["custom_id"] + if len(m.CustomId) == 0 { + m.CustomId = uuid.NewV4().String() + } + m.CapAdd = info.HostConfig.CapAdd + m.Cmd = info.Config.Cmd + m.HostName = info.Config.Hostname + m.Privileged = info.HostConfig.Privileged c.JSON(http.StatusOK, model.Result{Success: oasis_err2.SUCCESS, Message: oasis_err2.GetMsg(oasis_err2.SUCCESS), Data: m}) } diff --git a/route/v1/file.go b/route/v1/file.go index f85fbea..5dc7970 100644 --- a/route/v1/file.go +++ b/route/v1/file.go @@ -14,6 +14,7 @@ import ( "strings" "github.com/IceWhaleTech/CasaOS/model" + "github.com/IceWhaleTech/CasaOS/pkg/config" "github.com/IceWhaleTech/CasaOS/pkg/utils/file" oasis_err2 "github.com/IceWhaleTech/CasaOS/pkg/utils/oasis_err" "github.com/IceWhaleTech/CasaOS/service" @@ -224,10 +225,10 @@ func DirPath(c *gin.Context) { path := c.DefaultQuery("path", "") info := service.MyService.ZiMa().GetDirPath(path) if path == "/DATA/AppData" { - list := service.MyService.App().GetAllDBApps() + list := service.MyService.Docker().DockerContainerList() apps := make(map[string]string, len(list)) for _, v := range list { - apps[v.CustomId] = v.Label + apps[strings.ReplaceAll(v.Names[0], "/", "")] = strings.ReplaceAll(v.Names[0], "/", "") } for i := 0; i < len(info); i++ { if v, ok := apps[info[i].Name]; ok { @@ -342,7 +343,7 @@ func GetFileUpload(c *gin.Context) { path := c.Query("path") dirPath := "" hash := file.GetHashByContent([]byte(fileName)) - tempDir := "/casaOS/temp/" + hash + strconv.Itoa(totalChunks) + "/" + tempDir := config.AppInfo.RootPath + "/temp/" + hash + strconv.Itoa(totalChunks) + "/" if fileName != relative { dirPath = strings.TrimSuffix(relative, fileName) tempDir += dirPath @@ -381,7 +382,7 @@ func PostFileUpload(c *gin.Context) { c.JSON(oasis_err2.INVALID_PARAMS, model.Result{Success: oasis_err2.INVALID_PARAMS, Message: oasis_err2.GetMsg(oasis_err2.INVALID_PARAMS)}) return } - tempDir := "/casaOS/temp/" + hash + strconv.Itoa(totalChunks) + "/" + tempDir := config.AppInfo.RootPath + "/temp/" + hash + strconv.Itoa(totalChunks) + "/" if fileName != relative { dirPath = strings.TrimSuffix(relative, fileName) @@ -504,7 +505,7 @@ func PutFileContent(c *gin.Context) { path := c.PostForm("path") content := c.PostForm("content") if !file.Exists(path) { - c.JSON(oasis_err2.FILE_ALREADY_EXISTS, model.Result{Success: oasis_err2.FILE_ALREADY_EXISTS, Message: oasis_err2.GetMsg(oasis_err2.FILE_ALREADY_EXISTS)}) + c.JSON(http.StatusOK, model.Result{Success: oasis_err2.FILE_ALREADY_EXISTS, Message: oasis_err2.GetMsg(oasis_err2.FILE_ALREADY_EXISTS)}) return } //err := os.Remove(path) @@ -522,3 +523,42 @@ func PutFileContent(c *gin.Context) { } c.JSON(http.StatusOK, model.Result{Success: oasis_err2.SUCCESS, Message: oasis_err2.GetMsg(oasis_err2.SUCCESS)}) } + +// @Summary image thumbnail/original image +// @Produce application/json +// @Accept application/json +// @Tags file +// @Security ApiKeyAuth +// @Param path query string true "path" +// @Param type query string false "original,thumbnail" Enums(original,thumbnail) +// @Success 200 {string} string "ok" +// @Router /file/image [get] +func GetFileImage(c *gin.Context) { + t := c.Query("type") + path := c.Query("path") + if !file.Exists(path) { + c.JSON(http.StatusInternalServerError, model.Result{Success: oasis_err2.FILE_ALREADY_EXISTS, Message: oasis_err2.GetMsg(oasis_err2.FILE_ALREADY_EXISTS)}) + return + } + if t == "thumbnail" { + f, err := file.GetImage(path, 100, 0) + if err != nil { + c.JSON(http.StatusInternalServerError, model.Result{Success: oasis_err2.ERROR, Message: oasis_err2.GetMsg(oasis_err2.ERROR), Data: err.Error()}) + return + } + c.Writer.WriteString(string(f)) + return + } + f, err := os.Open(path) + if err != nil { + c.JSON(http.StatusInternalServerError, model.Result{Success: oasis_err2.ERROR, Message: oasis_err2.GetMsg(oasis_err2.ERROR), Data: err.Error()}) + return + } + defer f.Close() + data, err := ioutil.ReadAll(f) + if err != nil { + c.JSON(http.StatusInternalServerError, model.Result{Success: oasis_err2.ERROR, Message: oasis_err2.GetMsg(oasis_err2.ERROR), Data: err.Error()}) + return + } + c.Writer.WriteString(string(data)) +} diff --git a/route/v1/persion.go b/route/v1/person.go similarity index 58% rename from route/v1/persion.go rename to route/v1/person.go index 7900fc1..307e6b8 100644 --- a/route/v1/persion.go +++ b/route/v1/person.go @@ -1,18 +1,24 @@ package v1 import ( + "bytes" + "encoding/base64" + "encoding/gob" "encoding/json" - "fmt" "io/ioutil" + "net" "net/http" + "os" "reflect" "strconv" "strings" "time" + natType "github.com/Curtis-Milo/nat-type-identifier-go" "github.com/IceWhaleTech/CasaOS/model" "github.com/IceWhaleTech/CasaOS/pkg/config" "github.com/IceWhaleTech/CasaOS/pkg/utils/file" + "github.com/IceWhaleTech/CasaOS/pkg/utils/ip_helper" oasis_err2 "github.com/IceWhaleTech/CasaOS/pkg/utils/oasis_err" "github.com/IceWhaleTech/CasaOS/service" model2 "github.com/IceWhaleTech/CasaOS/service/model" @@ -21,33 +27,6 @@ import ( uuid "github.com/satori/go.uuid" ) -func PersonTest(c *gin.Context) { - token := c.Query("token") - _, err := uuid.FromString(token) - fmt.Println(err) - - //service.MyService.Person().GetPersionInfo("fb2333a1-72b2-4cb4-9e31-61ccaffa55b9") - - msg := model.MessageModel{} - msg.Type = types.PERSONHELLO - msg.Data = "" - msg.From = config.ServerInfo.Token - msg.To = token - msg.UUId = uuid.NewV4().String() - - dd, err := service.Dial(msg, true) - if err == nil { - fmt.Println(err) - } - fmt.Println(dd) - user := service.MyService.Casa().GetUserInfoByShareId(token) - if reflect.DeepEqual(user, model.UserInfo{}) { - fmt.Println("空数据") - } - fmt.Println(user) - c.JSON(http.StatusOK, model.Result{Success: oasis_err2.SUCCESS, Message: oasis_err2.GetMsg(oasis_err2.SUCCESS)}) -} - // @Summary Retry the file that failed to download // @Produce application/json // @Accept application/json @@ -135,7 +114,7 @@ func GetPersonFile(c *gin.Context) { task.Size = 0 task.State = types.DOWNLOADAWAIT task.Created = time.Now().Unix() - task.Type = 0 + task.Type = types.PERSONFILEDOWNLOAD task.LocalPath = localPath if service.MyService.Download().GetDownloadListByPath(task) > 0 { c.JSON(http.StatusOK, model.Result{Success: oasis_err2.PERSON_EXIST_DOWNLOAD, Message: oasis_err2.GetMsg(oasis_err2.PERSON_EXIST_DOWNLOAD)}) @@ -197,7 +176,7 @@ func DeletePersonDownloadFile(c *gin.Context) { // @Router /person/list [get] func GetPersonDownloadList(c *gin.Context) { state := c.DefaultQuery("state", "") - list := service.MyService.Download().GetDownloadListByState(state) + list := service.MyService.Download().GetDownloadListByState(state, types.PERSONFILEDOWNLOAD) //if it is downloading, it need to add 'already' for i := 0; i < len(list); i++ { if list[i].State == types.DOWNLOADING { @@ -235,6 +214,79 @@ func PutPersonRemarks(c *gin.Context) { c.JSON(http.StatusOK, model.Result{Success: oasis_err2.SUCCESS, Message: oasis_err2.GetMsg(oasis_err2.SUCCESS)}) } +// @Summary edit friend's +// @Produce application/json +// @Accept application/json +// @Tags person +// @Param write formData bool true "write" +// @Security ApiKeyAuth +// @Success 200 {string} string "ok" +// @Router /person/write/{shareid} [put] +func PutPersonWrite(c *gin.Context) { + token := c.Param("shareid") + _, err := uuid.FromString(token) + if err != nil { + c.JSON(http.StatusOK, model.Result{Success: oasis_err2.INVALID_PARAMS, Message: oasis_err2.GetMsg(oasis_err2.INVALID_PARAMS)}) + return + } + write, _ := strconv.ParseBool(c.PostForm("write")) + friend := model2.FriendModel{} + friend.Token = token + friend.Write = write + service.MyService.Friend().EditFriendMark(friend) + c.JSON(http.StatusOK, model.Result{Success: oasis_err2.SUCCESS, Message: oasis_err2.GetMsg(oasis_err2.SUCCESS)}) +} + +// @Summary image thumbnail +// @Produce application/json +// @Accept application/json +// @Tags person +// @Param write formData bool true "write" +// @Security ApiKeyAuth +// @Success 200 {string} string "ok" +// @Router /person/image/thumbnail/{shareid} [get] +func GetPersonImageThumbnail(c *gin.Context) { + token := c.Param("shareid") + path := c.Query("path") + _, err := uuid.FromString(token) + if err != nil || len(path) == 0 { + c.JSON(http.StatusOK, model.Result{Success: oasis_err2.INVALID_PARAMS, Message: oasis_err2.GetMsg(oasis_err2.INVALID_PARAMS)}) + return + } + uuid := uuid.NewV4().String() + m := model.MessageModel{} + m.Data = path + m.From = config.ServerInfo.Token + m.To = token + m.Type = types.PERSONIMAGETHUMBNAIL + m.UUId = uuid + + img, err := service.Dial(m, false) + if err != nil { + c.JSON(http.StatusInternalServerError, model.Result{Success: oasis_err2.ERROR, Message: oasis_err2.GetMsg(oasis_err2.ERROR), Data: err.Error()}) + return + } + + // var buf bytes.Buffer + //err = gob.NewEncoder(&buf).Encode(img.Data) + + if err != nil { + c.JSON(http.StatusInternalServerError, model.Result{Success: oasis_err2.ERROR, Message: oasis_err2.GetMsg(oasis_err2.ERROR), Data: err.Error()}) + return + } + var buf bytes.Buffer + err = gob.NewEncoder(&buf).Encode(img.Data) + if err != nil { + c.JSON(http.StatusInternalServerError, model.Result{Success: oasis_err2.ERROR, Message: oasis_err2.GetMsg(oasis_err2.ERROR), Data: err.Error()}) + return + } + + imageBuffer, _ := base64.StdEncoding.DecodeString(img.Data.(string)) + c.Writer.WriteString(string(imageBuffer)) + // c.String(http.StatusOK, "data:image/"+filesuffix+";base64,"+img.Data.(string)) + //c.JSON(http.StatusOK, model.Result{Success: oasis_err2.SUCCESS, Message: oasis_err2.GetMsg(oasis_err2.SUCCESS), Data: img.Data.(string)}) +} + // @Summary get my friend list // @Produce application/json // @Accept application/json @@ -247,11 +299,39 @@ func GetPersonFriend(c *gin.Context) { for i := 0; i < len(list); i++ { if v, ok := service.UDPAddressMap[list[i].Token]; ok && len(v) > 0 { list[i].OnLine = true + if ip_helper.HasLocalIP(net.ParseIP(strings.Split(v, ":")[0])) { + list[i].LocalIP = strings.Split(v, ":")[0] + } } } c.JSON(http.StatusOK, model.Result{Success: oasis_err2.SUCCESS, Message: oasis_err2.GetMsg(oasis_err2.SUCCESS), Data: list}) } +// @Summary network type detection +// @Produce application/json +// @Accept application/json +// @Tags person +// @Security ApiKeyAuth +// @Success 200 {string} string "ok" +// @Router /person/detection [get] +func GetPersonDetection(c *gin.Context) { + // - Blocked + // - Open Internet + // - Full Cone + // - Symmetric UDP Firewall + // - Restric NAT + // - Restric Port NAT + // - Symmetric NAT + + result, err := natType.GetDeterminedNatType(true, 5, "stun.l.google.com") + if err != nil { + c.JSON(http.StatusOK, model.Result{Success: oasis_err2.ERROR, Message: oasis_err2.GetMsg(oasis_err2.ERROR), Data: err.Error()}) + return + } + //result := service.MyService.Person().GetPersionNetWorkTypeDetection() + c.JSON(http.StatusOK, model.Result{Success: oasis_err2.SUCCESS, Message: oasis_err2.GetMsg(oasis_err2.SUCCESS), Data: result}) +} + // @Summary add friend // @Produce application/json // @Accept application/json @@ -296,10 +376,20 @@ func PostAddPersonFriend(c *gin.Context) { go service.Dial(message, true) + msg := model.MessageModel{} + msg.Type = types.PERSONGETIP + msg.Data = "" + msg.From = config.ServerInfo.Token + msg.To = v + msg.UUId = uuid.NewV4().String() + + service.Dial(msg, true) + friend := model2.FriendModel{} friend.Token = v friend.Avatar = user.Avatar friend.Block = false + friend.State = types.FRIENDSTATEWAIT friend.NickName = user.NickName friend.Profile = user.Desc friend.Version = user.Version @@ -439,6 +529,17 @@ func GetPersonShare(c *gin.Context) { c.JSON(http.StatusOK, model.Result{Success: oasis_err2.SUCCESS, Message: oasis_err2.GetMsg(oasis_err2.SUCCESS), Data: config.FileSettingInfo.ShareDir}) } +// @Summary Get the shareid +// @Produce application/json +// @Accept application/json +// @Tags person +// @Security ApiKeyAuth +// @Success 200 {string} string "ok" +// @Router /person/shareid [get] +func GetPersonShareId(c *gin.Context) { + c.JSON(http.StatusOK, model.Result{Success: oasis_err2.SUCCESS, Message: oasis_err2.GetMsg(oasis_err2.SUCCESS), Data: config.ServerInfo.Token}) +} + // @Summary Modify disabled status // @Produce application/json // @Accept application/json @@ -489,8 +590,214 @@ func DeletePersonFriend(c *gin.Context) { // @Tags person // @Security ApiKeyAuth // @Success 200 {string} string "ok" -// @Router /person/public [delete] +// @Router /person/public [get] func GetPersonPublic(c *gin.Context) { list := service.MyService.Casa().GetPersonPublic() c.JSON(http.StatusOK, model.Result{Success: oasis_err2.SUCCESS, Message: oasis_err2.GetMsg(oasis_err2.SUCCESS), Data: list}) } + +// @Summary upload file to friend +// @Produce application/json +// @Accept application/json +// @Tags person +// @Security ApiKeyAuth +// @Param path formData string true "Destination path" +// @Param local_path formData string true "Full path of the file to be uploaded" +// @Success 200 {string} string "ok" +// @Router /person/file/{shareid} [post] +func PostPersonFile(c *gin.Context) { + token := c.Param("shareid") + _, err := uuid.FromString(token) + path := c.PostForm("path") + localPath := c.PostForm("local_path") + if err != nil { + c.JSON(http.StatusOK, model.Result{Success: oasis_err2.INVALID_PARAMS, Message: oasis_err2.GetMsg(oasis_err2.INVALID_PARAMS)}) + return + } + if !file.Exists(localPath) { + c.JSON(http.StatusOK, model.Result{Success: oasis_err2.FILE_DOES_NOT_EXIST, Message: oasis_err2.GetMsg(oasis_err2.FILE_DOES_NOT_EXIST)}) + return + } + uuid := uuid.NewV4().String() + m := model.MessageModel{} + m.Data = path + m.From = config.ServerInfo.Token + m.To = token + m.Type = types.PERSONUPLOAD + m.UUId = uuid + go service.UDPSendData(m, localPath) + + f, _ := os.Stat(localPath) + + task := model2.PersonDownloadDBModel{} + task.UUID = uuid + task.Name = f.Name() + task.Length = 0 + task.From = token + task.Path = path + task.Size = f.Size() + task.State = types.DOWNLOADFINISHED + task.Created = time.Now().Unix() + task.Type = types.PERSONFILEUPLOAD + task.LocalPath = localPath + if service.MyService.Download().GetDownloadListByPath(task) > 0 { + c.JSON(http.StatusOK, model.Result{Success: oasis_err2.PERSON_EXIST_DOWNLOAD, Message: oasis_err2.GetMsg(oasis_err2.PERSON_EXIST_DOWNLOAD)}) + return + } + service.MyService.Download().AddDownloadTask(task) + + c.JSON(http.StatusOK, model.Result{Success: oasis_err2.SUCCESS, Message: oasis_err2.GetMsg(oasis_err2.SUCCESS)}) +} + +// @Summary agree add friend +// @Produce application/json +// @Accept application/json +// @Tags person +// @Security ApiKeyAuth +// @Success 200 {string} string "ok" +// @Router /person/friend/{shareid} [put] +func PutPersonAgreeFriend(c *gin.Context) { + token := c.Param("shareid") + _, err := uuid.FromString(token) + if err != nil { + c.JSON(http.StatusOK, model.Result{Success: oasis_err2.INVALID_PARAMS, Message: oasis_err2.GetMsg(oasis_err2.INVALID_PARAMS)}) + return + } + + user := service.MyService.Friend().GetFriendById(model2.FriendModel{Token: token}) + + if user.State != types.FRIENDSTATEREQUEST { + c.JSON(http.StatusOK, model.Result{Success: oasis_err2.COMMAND_ERROR_INVALID_OPERATION, Message: oasis_err2.GetMsg(oasis_err2.COMMAND_ERROR_INVALID_OPERATION)}) + return + } + service.MyService.Friend().AgreeFrined(user.Token) + + uuid := uuid.NewV4().String() + m := model.MessageModel{} + m.Data = "" + m.From = config.ServerInfo.Token + m.To = token + m.Type = types.PERSONAGREEFRIEND + m.UUId = uuid + go service.Dial(m, true) + + c.JSON(http.StatusOK, model.Result{Success: oasis_err2.SUCCESS, Message: oasis_err2.GetMsg(oasis_err2.SUCCESS)}) +} + +// // @Summary upload file +// // @Produce application/json +// // @Accept multipart/form-data +// // @Tags person +// // @Security ApiKeyAuth +// // @Param path formData string false "file path" +// // @Param file formData file true "file" +// // @Success 200 {string} string "ok" +// // @Router /person/upload/{shareid} [get] +// func GetPersonFileUpload(c *gin.Context) { + +// token := c.Param("shareid") +// _, err := uuid.FromString(token) +// path := c.Query("path") +// if err != nil { +// c.JSON(http.StatusOK, model.Result{Success: oasis_err2.INVALID_PARAMS, Message: oasis_err2.GetMsg(oasis_err2.INVALID_PARAMS)}) +// return +// } + +// relative := c.Query("relativePath") +// fileName := c.Query("filename") +// chunkNumber := c.Query("chunkNumber") +// totalChunks, _ := strconv.Atoi(c.DefaultQuery("totalChunks", "0")) +// dirPath := "" +// hash := file.GetHashByContent([]byte(fileName)) +// tempDir := "/casaOS/temp/" + hash + strconv.Itoa(totalChunks) + "/" +// if fileName != relative { +// dirPath = strings.TrimSuffix(relative, fileName) +// tempDir += dirPath +// file.MkDir(path + "/" + dirPath) +// } +// tempDir += chunkNumber +// if !file.CheckNotExist(tempDir) { +// c.JSON(200, model.Result{Success: 200, Message: oasis_err2.GetMsg(oasis_err2.FILE_ALREADY_EXISTS)}) +// return +// } + +// c.JSON(204, model.Result{Success: 204, Message: oasis_err2.GetMsg(oasis_err2.SUCCESS)}) +// } + +// // @Summary upload file +// // @Produce application/json +// // @Accept multipart/form-data +// // @Tags person +// // @Security ApiKeyAuth +// // @Param path formData string false "file path" +// // @Param file formData file true "file" +// // @Success 200 {string} string "ok" +// // @Router /person/upload [post] +// func PostPersonFileUpload(c *gin.Context) { +// token := c.Param("shareid") +// _, err := uuid.FromString(token) +// if err != nil { +// c.JSON(http.StatusOK, model.Result{Success: oasis_err2.INVALID_PARAMS, Message: oasis_err2.GetMsg(oasis_err2.INVALID_PARAMS)}) +// return +// } +// f, _, _ := c.Request.FormFile("file") +// relative := c.PostForm("relativePath") +// fileName := c.PostForm("filename") +// totalChunks, _ := strconv.Atoi(c.DefaultPostForm("totalChunks", "0")) +// chunkNumber := c.PostForm("chunkNumber") +// dirPath := "" +// path := c.PostForm("path") + +// hash := file.GetHashByContent([]byte(fileName)) + +// if len(path) == 0 { +// c.JSON(oasis_err2.INVALID_PARAMS, model.Result{Success: oasis_err2.INVALID_PARAMS, Message: oasis_err2.GetMsg(oasis_err2.INVALID_PARAMS)}) +// return +// } +// tempDir := "/casaOS/temp/" + hash + strconv.Itoa(totalChunks) + "/" + +// if fileName != relative { +// dirPath = strings.TrimSuffix(relative, fileName) +// tempDir += dirPath +// file.MkDir(path + "/" + dirPath) +// } + +// path += "/" + relative + +// if !file.CheckNotExist(tempDir + chunkNumber) { +// file.RMDir(tempDir + chunkNumber) +// } + +// if totalChunks > 1 { +// file.IsNotExistMkDir(tempDir) + +// out, _ := os.OpenFile(tempDir+chunkNumber, os.O_WRONLY|os.O_CREATE, 0644) +// defer out.Close() +// _, err := io.Copy(out, f) +// if err != nil { +// c.JSON(oasis_err2.ERROR, model.Result{Success: oasis_err2.ERROR, Message: oasis_err2.GetMsg(oasis_err2.ERROR), Data: err.Error()}) +// return +// } +// } else { +// out, _ := os.OpenFile(path, os.O_WRONLY|os.O_CREATE, 0644) +// defer out.Close() +// _, err := io.Copy(out, f) +// if err != nil { +// c.JSON(oasis_err2.ERROR, model.Result{Success: oasis_err2.ERROR, Message: oasis_err2.GetMsg(oasis_err2.ERROR), Data: err.Error()}) +// return +// } +// c.JSON(http.StatusOK, model.Result{Success: oasis_err2.SUCCESS, Message: oasis_err2.GetMsg(oasis_err2.SUCCESS)}) +// return +// } + +// fileNum, err := ioutil.ReadDir(tempDir) +// if err != nil { +// c.JSON(oasis_err2.ERROR, model.Result{Success: oasis_err2.ERROR, Message: oasis_err2.GetMsg(oasis_err2.ERROR), Data: err.Error()}) +// return +// } +// if totalChunks == len(fileNum) { +// file.RMDir(tempDir) +// } + +// c.JSON(http.StatusOK, model.Result{Success: oasis_err2.SUCCESS, Message: oasis_err2.GetMsg(oasis_err2.SUCCESS)}) +// } diff --git a/route/v1/system.go b/route/v1/system.go index d30e93a..d63afa7 100644 --- a/route/v1/system.go +++ b/route/v1/system.go @@ -23,7 +23,7 @@ import ( "github.com/gin-gonic/gin" ) -// @Summary 系统信息 +// @Summary check version // @Produce application/json // @Accept application/json // @Tags sys @@ -50,6 +50,32 @@ func CheckVersion(c *gin.Context) { return } +// @Summary check client version +// @Produce application/json +// @Accept application/json +// @Tags sys +// @Security ApiKeyAuth +// @Success 200 {string} string "ok" +// @Router /sys/client/version [get] +func GetClientVersion(c *gin.Context) { + need, version := version.IsClientNeedUpdate() + if need { + installLog := model2.AppNotify{} + installLog.State = 0 + installLog.Message = "New version " + version.Version + " is ready, ready to upgrade" + installLog.Type = types.NOTIFY_TYPE_NEED_CONFIRM + installLog.CreatedAt = strconv.FormatInt(time.Now().Unix(), 10) + installLog.UpdatedAt = strconv.FormatInt(time.Now().Unix(), 10) + installLog.Name = "CasaOS System" + service.MyService.Notify().AddLog(installLog) + } + data := make(map[string]interface{}, 1) + data["is_need"] = need + data["version"] = version + data["current_version"] = types.CURRENTVERSION + c.JSON(http.StatusOK, model.Result{Success: oasis_err.SUCCESS, Message: oasis_err.GetMsg(oasis_err.SUCCESS), Data: data}) +} + // @Summary 系统信息 // @Produce application/json // @Accept application/json @@ -115,7 +141,7 @@ func GetSystemConfigDebug(c *gin.Context) { systemAppStatus += "Sync img: " + strconv.FormatBool(images) + "\n\t" list := service.MyService.App().GetSystemAppList() - for _, v := range *list { + for _, v := range list { systemAppStatus += v.Image + ",\n\t" } @@ -136,9 +162,6 @@ func GetSystemConfigDebug(c *gin.Context) { c.JSON(http.StatusOK, model.Result{Success: oasis_err.SUCCESS, Message: oasis_err.GetMsg(oasis_err.SUCCESS), Data: bugContent}) } -func Sys(c *gin.Context) { - service.DockerPull() -} //widget配置 func GetWidgetConfig(c *gin.Context) { @@ -155,9 +178,7 @@ func GetWidgetConfig(c *gin.Context) { func PostSetWidgetConfig(c *gin.Context) { buf := make([]byte, 1024) n, _ := c.Request.Body.Read(buf) - fmt.Println("错误", strconv.Itoa(n)) service.MyService.System().UpSystemConfig("", string(buf[0:n])) - fmt.Println("错误1", string(buf[0:n])) c.JSON(http.StatusOK, model.Result{ Success: oasis_err.SUCCESS, @@ -257,7 +278,7 @@ func PostKillCasaOS(c *gin.Context) { // @Tags sys // @Security ApiKeyAuth // @Success 200 {string} string "ok" -// @Router /sys/usg/off [put] +// @Router /sys/usb/off [put] func PutSystemOffUSBAutoMount(c *gin.Context) { service.MyService.System().UpdateUSBAutoMount("False") service.MyService.System().ExecUSBAutoMountShell("False") @@ -280,6 +301,7 @@ func GetSystemUSBAutoMount(c *gin.Context) { if config.ServerInfo.USBAutoMount == "False" { state = "False" } + c.JSON(http.StatusOK, model.Result{ Success: oasis_err.SUCCESS, @@ -288,6 +310,25 @@ func GetSystemUSBAutoMount(c *gin.Context) { }) } +// @Summary get system hardware info +// @Produce application/json +// @Accept application/json +// @Tags sys +// @Security ApiKeyAuth +// @Success 200 {string} string "ok" +// @Router /sys/hardware/info [get] +func GetSystemHardwareInfo(c *gin.Context) { + + data := make(map[string]string, 1) + data["drive_model"] = service.MyService.ZiMa().GetDeviceTree() + c.JSON(http.StatusOK, + model.Result{ + Success: oasis_err.SUCCESS, + Message: oasis_err.GetMsg(oasis_err.SUCCESS), + Data: data, + }) +} + // @Summary Turn off usb auto-mount // @Produce application/json // @Accept application/json diff --git a/service/app.go b/service/app.go index 0dae664..cbcf52a 100644 --- a/service/app.go +++ b/service/app.go @@ -3,9 +3,11 @@ package service import ( "context" "encoding/json" + "fmt" "io" "io/ioutil" "runtime" + "strconv" "strings" "sync" "time" @@ -19,24 +21,32 @@ import ( "github.com/docker/docker/api/types/filters" client2 "github.com/docker/docker/client" "github.com/pkg/errors" + uuid "github.com/satori/go.uuid" "gorm.io/gorm" ) type AppService interface { - GetMyList(index, size int, position bool) *[]model2.MyAppList + CreateApplication(m model2.ApplicationModel) model2.ApplicationModel + GetApplicationList() (m []model2.ApplicationModel) + GetApplicationById(id string) (m model2.ApplicationModel) + UpdateApplicationOrderById(id string, order int) + GetMyList(index, size int, position bool) (*[]model2.MyAppList, *[]model2.MyAppList) + GetCasaOSCount() int SaveContainer(m model2.AppListDBModel) GetUninstallInfo(id string) model2.AppListDBModel - RemoveContainerById(id string) + DeleteApp(id string) GetContainerInfo(name string) (types.Container, error) GetAppDBInfo(id string) model2.AppListDBModel UpdateApp(m model2.AppListDBModel) GetSimpleContainerInfo(name string) (types.Container, error) DelAppConfigDir(path string) - GetSystemAppList() *[]model2.MyAppList + GetSystemAppList() []types.Container GetHardwareUsageSteam() GetHardwareUsage() []model.DockerStatsModel GetAppStats(id string) string GetAllDBApps() []model2.AppListDBModel + ImportApplications(casaApp bool) + CheckNewImage() } type appStruct struct { @@ -44,73 +54,253 @@ type appStruct struct { log loger2.OLog } +func (a *appStruct) GetApplicationById(id string) (m model2.ApplicationModel) { + a.db.Where("id = ?", id).First(&m) + return +} + +func (a *appStruct) UpdateApplicationOrderById(id string, order int) { + a.db.Model(&model2.ApplicationModel{}).Where("id = ?", id).Update("order", order) +} + +func (a *appStruct) CreateApplication(m model2.ApplicationModel) model2.ApplicationModel { + a.db.Create(&m) + return m +} +func (a *appStruct) GetApplicationList() (m []model2.ApplicationModel) { + a.db.Find(&m) + return +} + +func (a *appStruct) CheckNewImage() { + list := MyService.Docker().DockerContainerList() + for _, v := range list { + inspect, err := MyService.Docker().DockerImageInfo(strings.Split(v.Image, ":")[0]) + if err != nil { + NewVersionApp[v.ID] = inspect.ID + continue + } + if inspect.ID == v.ImageID { + delete(NewVersionApp, v.ID) + continue + } + NewVersionApp[v.ID] = inspect.ID + } + +} +func (a *appStruct) ImportApplications(casaApp bool) { + if casaApp { + list := MyService.App().GetAllDBApps() + for _, app := range list { + info, err := MyService.Docker().DockerContainerInfo(app.CustomId) + if err != nil { + MyService.App().DeleteApp(app.CustomId) + continue + } + //info.NetworkSettings + info.Config.Labels["casaos"] = "casaos" + info.Config.Labels["web"] = app.PortMap + info.Config.Labels["icon"] = app.Icon + info.Config.Labels["desc"] = app.Description + info.Config.Labels["index"] = app.Index + info.Config.Labels["custom_id"] = app.CustomId + info.Name = app.Title + container_id, err := MyService.Docker().DockerContainerCopyCreate(info) + if err != nil { + fmt.Println(err) + continue + } + MyService.App().DeleteApp(app.CustomId) + MyService.Docker().DockerContainerStop(app.CustomId) + MyService.Docker().DockerContainerRemove(app.CustomId, false) + MyService.Docker().DockerContainerStart(container_id) + + } + } else { + list := MyService.Docker().DockerContainerList() + for _, app := range list { + info, err := MyService.Docker().DockerContainerInfo(app.ID) + if err != nil || info.Config.Labels["casaos"] == "casaos" { + continue + } + info.Config.Labels["casaos"] = "casaos" + info.Config.Labels["web"] = "" + info.Config.Labels["icon"] = "" + info.Config.Labels["desc"] = "" + info.Config.Labels["index"] = "" + info.Config.Labels["custom_id"] = uuid.NewV4().String() + + _, err = MyService.Docker().DockerContainerCopyCreate(info) + if err != nil { + continue + } + + } + } + + // allcontainer := MyService.Docker().DockerContainerList() + // for _, app := range allcontainer { + // info, err := MyService.Docker().DockerContainerInfo(app.ID) + // if err != nil { + // continue + // } + // MyService.Docker().DockerContainerStop(app.ID) + // MyService.Docker().DockerContainerRemove(app.ID, false) + // //info.NetworkSettings + // info.Config.Labels["custom_id"] = uuid.NewV4().String() + // container_id, err := MyService.Docker().DockerContainerCopyCreate(info) + // if err != nil { + // fmt.Println(err) + // continue + // } + // MyService.Docker().DockerContainerStart(container_id) + //} + +} + +func (a *appStruct) GetCasaOSCount() int { + //获取docker应用 + cli, err := client2.NewClientWithOpts(client2.FromEnv, client2.WithTimeout(time.Second*5)) + if err != nil { + a.log.Error("初始化client失败", "app.getmylist", "line:36", err) + return 0 + } + defer cli.Close() + fts := filters.NewArgs() + fts.Add("label", "casaos=casaos") + //fts.Add("label", "casaos:casaos") + + containers, err := cli.ContainerList(context.Background(), types.ContainerListOptions{Filters: fts, Limit: 200}) + if err != nil { + a.log.Error("获取docker容器失败", "app.getmylist", "line:42", err) + return 0 + } + + systemApp := MyService.App().GetApplicationList() + return len(containers) + len(systemApp) +} + //获取我的应用列表 -func (a *appStruct) GetMyList(index, size int, position bool) *[]model2.MyAppList { +func (a *appStruct) GetMyList(index, size int, position bool) (*[]model2.MyAppList, *[]model2.MyAppList) { //获取docker应用 cli, err := client2.NewClientWithOpts(client2.FromEnv, client2.WithTimeout(time.Second*5)) if err != nil { a.log.Error("初始化client失败", "app.getmylist", "line:36", err) } defer cli.Close() - fts := filters.NewArgs() - fts.Add("label", "origin") - containers, err := cli.ContainerList(context.Background(), types.ContainerListOptions{All: true, Filters: fts}) + // fts := filters.NewArgs() + // fts.Add("label", "casaos=casaos") + //fts.Add("label", "casaos") + //fts.Add("casaos", "casaos") + containers, err := cli.ContainerList(context.Background(), types.ContainerListOptions{All: true}) if err != nil { a.log.Error("获取docker容器失败", "app.getmylist", "line:42", err) } //获取本地数据库应用 - var lm []model2.AppListDBModel - a.db.Table(model2.CONTAINERTABLENAME).Select("title,icon,port_map,`index`,container_id,position,label,slogan,image").Find(&lm) + unTranslation := []model2.MyAppList{} list := []model2.MyAppList{} - lMap := make(map[string]interface{}) - for _, dbModel := range lm { - if position { - if dbModel.Position { - lMap[dbModel.ContainerId] = dbModel - } - } else { - lMap[dbModel.ContainerId] = dbModel - } + + systemApp := MyService.App().GetApplicationList() + for _, v := range systemApp { + list = append(list, model2.MyAppList{ + Name: v.Name, + Icon: v.Icon, + State: strconv.Itoa(v.State), + Id: strconv.Itoa(v.Id), + CustomId: strconv.Itoa(v.Id), + Port: "", + //Order: strconv.Itoa(v.Order), + Index: "/", + Image: "", + Type: v.Type, + NewVersion: false, + }) } - for _, container := range containers { - if lMap[container.ID] != nil && container.Labels["origin"] != "system" { - m := lMap[container.ID].(model2.AppListDBModel) - if len(m.Label) == 0 { - m.Label = m.Title + for _, m := range containers { + if m.Labels["casaos"] == "casaos" { + if m.Labels["origin"] == "system" { + continue } - - // info, err := cli.ContainerInspect(context.Background(), container.ID) - // var tm string - // if err != nil { - // tm = time.Now().String() - // } else { - // tm = info.State.StartedAt - //} + _, newVersion := NewVersionApp[m.ID] list = append(list, model2.MyAppList{ - Name: m.Label, - Icon: m.Icon, - State: container.State, - CustomId: strings.ReplaceAll(container.Names[0], "/", ""), - Port: m.PortMap, - Index: m.Index, - //UpTime: tm, - Image: m.Image, - Slogan: m.Slogan, + Name: strings.ReplaceAll(m.Names[0], "/", ""), + Icon: m.Labels["icon"], + State: m.State, + CustomId: m.Labels["custom_id"], + Id: m.ID, + Port: m.Labels["web"], + Index: m.Labels["index"], + //Order: m.Labels["order"], + Image: m.Image, + NewVersion: newVersion, + Type: m.Labels["origin"], + //Slogan: m.Slogan, //Rely: m.Rely, }) + } else { + unTranslation = append(unTranslation, model2.MyAppList{ + Name: strings.ReplaceAll(m.Names[0], "/", ""), + Icon: "", + State: m.State, + CustomId: m.ID, + Id: m.ID, + Port: "", + NewVersion: false, + Image: m.Image, + }) } - } - return &list + //lMap := make(map[string]interface{}) + // for _, dbModel := range lm { + // if position { + // if dbModel.Position { + // lMap[dbModel.ContainerId] = dbModel + // } + // } else { + // lMap[dbModel.ContainerId] = dbModel + // } + // } + // for _, container := range containers { + + // if lMap[container.ID] != nil && container.Labels["origin"] != "system" { + // m := lMap[container.ID].(model2.AppListDBModel) + // if len(m.Label) == 0 { + // m.Label = m.Title + // } + + // // info, err := cli.ContainerInspect(context.Background(), container.ID) + // // var tm string + // // if err != nil { + // // tm = time.Now().String() + // // } else { + // // tm = info.State.StartedAt + // //} + // list = append(list, model2.MyAppList{ + // Name: m.Label, + // Icon: m.Icon, + // State: container.State, + // CustomId: strings.ReplaceAll(container.Names[0], "/", ""), + // Port: m.PortMap, + // Index: m.Index, + // //UpTime: tm, + // Image: m.Image, + // Slogan: m.Slogan, + // //Rely: m.Rely, + // }) + // } + + // } + + return &list, &unTranslation } //system application list -func (a *appStruct) GetSystemAppList() *[]model2.MyAppList { +func (a *appStruct) GetSystemAppList() []types.Container { //获取docker应用 cli, err := client2.NewClientWithOpts(client2.FromEnv) if err != nil { @@ -126,51 +316,21 @@ func (a *appStruct) GetSystemAppList() *[]model2.MyAppList { //获取本地数据库应用 - var lm []model2.AppListDBModel - a.db.Table(model2.CONTAINERTABLENAME).Select("title,icon,port_map,`index`,container_id,position,label,slogan,image,volumes").Find(&lm) + // var lm []model2.AppListDBModel + // a.db.Table(model2.CONTAINERTABLENAME).Select("title,icon,port_map,`index`,container_id,position,label,slogan,image,volumes").Find(&lm) - list := []model2.MyAppList{} - lMap := make(map[string]interface{}) - for _, dbModel := range lm { - lMap[dbModel.ContainerId] = dbModel - } - for _, container := range containers { + //list := []model2.MyAppList{} + //lMap := make(map[string]interface{}) + // for _, dbModel := range lm { + // lMap[dbModel.ContainerId] = dbModel + // } - if lMap[container.ID] != nil { - m := lMap[container.ID].(model2.AppListDBModel) - if len(m.Label) == 0 { - m.Label = m.Title - } - - info, err := cli.ContainerInspect(context.Background(), container.ID) - var tm string - if err != nil { - tm = time.Now().String() - } else { - tm = info.State.StartedAt - } - list = append(list, model2.MyAppList{ - Name: m.Label, - Icon: m.Icon, - State: container.State, - CustomId: strings.ReplaceAll(container.Names[0], "/", ""), - Port: m.PortMap, - Index: m.Index, - UpTime: tm, - Image: m.Image, - Slogan: m.Slogan, - Volumes: m.Volumes, - //Rely: m.Rely, - }) - } - } - - return &list + return containers } func (a *appStruct) GetAllDBApps() []model2.AppListDBModel { var lm []model2.AppListDBModel - a.db.Table(model2.CONTAINERTABLENAME).Select("custom_id,title,icon,container_id,label,slogan,image").Find(&lm) + a.db.Table(model2.CONTAINERTABLENAME).Select("custom_id,title,icon,container_id,label,slogan,image,port_map").Find(&lm) return lm } @@ -242,7 +402,7 @@ func (a *appStruct) DelAppConfigDir(path string) { command.OnlyExec("source " + config.AppInfo.ProjectPath + "/shell/helper.sh ;DelAppConfigDir " + path) } -func (a *appStruct) RemoveContainerById(id string) { +func (a *appStruct) DeleteApp(id string) { a.db.Table(model2.CONTAINERTABLENAME).Where("custom_id = ?", id).Delete(&model2.AppListDBModel{}) } @@ -298,31 +458,29 @@ func (a *appStruct) GetHardwareUsageSteam() { ctx := context.Background() ctx, cancel := context.WithCancel(ctx) - var lm []model2.AppListDBModel - a.db.Table(model2.CONTAINERTABLENAME).Select("label,title,icon,container_id").Where("origin != ?", "system").Find(&lm) + fts := filters.NewArgs() + fts.Add("label", "casaos=casaos") + //fts.Add("label", "casaos") + //fts.Add("casaos", "casaos") + containers, err := cli.ContainerList(context.Background(), types.ContainerListOptions{All: true, Filters: fts}) + if err != nil { + a.log.Error("获取docker容器失败", "app.getmylist", "line:42", err) + } for i := 0; i < 100; i++ { if config.CasaOSGlobalVariables.AppChange { - lm = []model2.AppListDBModel{} config.CasaOSGlobalVariables.AppChange = false - a.db.Table(model2.CONTAINERTABLENAME).Select("label,title,icon,container_id").Where("origin != ?", "system").Find(&lm) - dataApps := dataStats + dataStats.Range(func(key, value interface{}) bool { dataStats.Delete(key) return true }) - for _, v := range lm { - m, _ := dataApps.Load(v.ContainerId) - if m != nil { - dataStats.Store(v.ContainerId, m) - } - } } var wg sync.WaitGroup - for _, v := range lm { + for _, v := range containers { wg.Add(1) - go func(v model2.AppListDBModel, i int) { + go func(v types.Container, i int) { defer wg.Done() - stats, err := cli.ContainerStats(ctx, v.ContainerId, true) + stats, err := cli.ContainerStats(ctx, v.ID, true) if err != nil { return } @@ -331,19 +489,15 @@ func (a *appStruct) GetHardwareUsageSteam() { if err := decode.Decode(&data); err == io.EOF { return } - m, _ := dataStats.Load(v.ContainerId) + m, _ := dataStats.Load(v.ID) dockerStats := model.DockerStatsModel{} if m != nil { dockerStats.Pre = m.(model.DockerStatsModel).Data } dockerStats.Data = data - dockerStats.Icon = v.Icon - if len(v.Label) > 0 { - dockerStats.Title = v.Label - } else { - dockerStats.Title = v.Title - } - dataStats.Store(v.ContainerId, dockerStats) + dockerStats.Icon = v.Labels["icon"] + dockerStats.Title = strings.ReplaceAll(v.Names[0], "/", "") + dataStats.Store(v.ID, dockerStats) if i == 99 { stats.Body.Close() } diff --git a/service/app_test.go b/service/app_test.go new file mode 100644 index 0000000..e5213f4 --- /dev/null +++ b/service/app_test.go @@ -0,0 +1,9 @@ +package service + +import ( + "testing" +) + +func TestGetCasaOSCount(t *testing.T) { + +} diff --git a/service/casa.go b/service/casa.go index 1c51da9..ff7aa9d 100644 --- a/service/casa.go +++ b/service/casa.go @@ -10,6 +10,7 @@ import ( "github.com/IceWhaleTech/CasaOS/pkg/config" httper2 "github.com/IceWhaleTech/CasaOS/pkg/utils/httper" model2 "github.com/IceWhaleTech/CasaOS/service/model" + "github.com/IceWhaleTech/CasaOS/types" "github.com/tidwall/gjson" ) @@ -154,6 +155,7 @@ func (o *casaService) PushAppAnalyse(uuid, t string, name, language string) { m.Type = t m.Name = name m.Language = language + m.Version = types.CURRENTVERSION b, _ := json.Marshal(m) head := make(map[string]string) diff --git a/service/disk.go b/service/disk.go index 22f99ab..71bfa64 100644 --- a/service/disk.go +++ b/service/disk.go @@ -137,8 +137,42 @@ func (d *diskService) LSBLK(isUseCache bool) []model.LSBLKModel { return nil } var m []model.LSBLKModel + // strStr := `{ + // "blockdevices": [ + // {"name":"loop0", "kname":"loop0", "path":"/dev/loop0", "maj:min":"7:0", "fsavail":"0", "fssize":"62M", "fstype":"squashfs", "fsused":"62M", "fsuse%":"100%", "fsver":"4.0", "mountpoint":"/snap/core20/1405", "label":null, "uuid":null, "ptuuid":null, "pttype":null, "parttype":null, "parttypename":null, "partlabel":null, "partuuid":null, "partflags":null, "ra":128, "ro":true, "rm":false, "hotplug":false, "model":null, "serial":null, "size":619, "state":null, "owner":"root", "group":"disk", "mode":"brw-rw----", "alignment":0, "min-io":512, "opt-io":0, "phy-sec":512, "log-sec":512, "rota":false, "sched":"mq-deadline", "rq-size":256, "type":"loop", "disc-aln":0, "disc-gran":"4K", "disc-max":"4G", "disc-zero":false, "wsame":"0B", "wwn":null, "rand":false, "pkname":null, "hctl":null, "tran":null, "subsystems":"block", "rev":null, "vendor":null, "zoned":"none", "dax":false}, + // {"name":"loop1", "kname":"loop1", "path":"/dev/loop1", "maj:min":"7:1", "fsavail":"0", "fssize":"55.6M", "fstype":"squashfs", "fsused":"55.6M", "fsuse%":"100%", "fsver":"4.0", "mountpoint":"/snap/core18/2344", "label":null, "uuid":null, "ptuuid":null, "pttype":null, "parttype":null, "parttypename":null, "partlabel":null, "partuuid":null, "partflags":null, "ra":128, "ro":true, "rm":false, "hotplug":false, "model":null, "serial":null, "size":55, "state":null, "owner":"root", "group":"disk", "mode":"brw-rw----", "alignment":0, "min-io":512, "opt-io":0, "phy-sec":512, "log-sec":512, "rota":false, "sched":"mq-deadline", "rq-size":256, "type":"loop", "disc-aln":0, "disc-gran":"4K", "disc-max":"4G", "disc-zero":false, "wsame":"0B", "wwn":null, "rand":false, "pkname":null, "hctl":null, "tran":null, "subsystems":"block", "rev":null, "vendor":null, "zoned":"none", "dax":false}, + // {"name":"loop2", "kname":"loop2", "path":"/dev/loop2", "maj:min":"7:2", "fsavail":"0", "fssize":"44.8M", "fstype":"squashfs", "fsused":"44.8M", "fsuse%":"100%", "fsver":"4.0", "mountpoint":"/snap/snapd/15314", "label":null, "uuid":null, "ptuuid":null, "pttype":null, "parttype":null, "parttypename":null, "partlabel":null, "partuuid":null, "partflags":null, "ra":128, "ro":true, "rm":false, "hotplug":false, "model":null, "serial":null, "size":446, "state":null, "owner":"root", "group":"disk", "mode":"brw-rw----", "alignment":0, "min-io":512, "opt-io":0, "phy-sec":512, "log-sec":512, "rota":false, "sched":"mq-deadline", "rq-size":256, "type":"loop", "disc-aln":0, "disc-gran":"4K", "disc-max":"4G", "disc-zero":false, "wsame":"0B", "wwn":null, "rand":false, "pkname":null, "hctl":null, "tran":null, "subsystems":"block", "rev":null, "vendor":null, "zoned":"none", "dax":false}, + // {"name":"loop3", "kname":"loop3", "path":"/dev/loop3", "maj:min":"7:3", "fsavail":"0", "fssize":"78.9M", "fstype":"squashfs", "fsused":"78.9M", "fsuse%":"100%", "fsver":"4.0", "mountpoint":"/snap/lxd/22754", "label":null, "uuid":null, "ptuuid":null, "pttype":null, "parttype":null, "parttypename":null, "partlabel":null, "partuuid":null, "partflags":null, "ra":128, "ro":true, "rm":false, "hotplug":false, "model":null, "serial":null, "size":788, "state":null, "owner":"root", "group":"disk", "mode":"brw-rw----", "alignment":0, "min-io":512, "opt-io":0, "phy-sec":512, "log-sec":512, "rota":false, "sched":"mq-deadline", "rq-size":256, "type":"loop", "disc-aln":0, "disc-gran":"4K", "disc-max":"4G", "disc-zero":false, "wsame":"0B", "wwn":null, "rand":false, "pkname":null, "hctl":null, "tran":null, "subsystems":"block", "rev":null, "vendor":null, "zoned":"none", "dax":false}, + // {"name":"loop4", "kname":"loop4", "path":"/dev/loop4", "maj:min":"7:4", "fsavail":"0", "fssize":"43.8M", "fstype":"squashfs", "fsused":"43.8M", "fsuse%":"100%", "fsver":"4.0", "mountpoint":"/snap/snapd/15177", "label":null, "uuid":null, "ptuuid":null, "pttype":null, "parttype":null, "parttypename":null, "partlabel":null, "partuuid":null, "partflags":null, "ra":128, "ro":true, "rm":false, "hotplug":false, "model":null, "serial":null, "size":436, "state":null, "owner":"root", "group":"disk", "mode":"brw-rw----", "alignment":0, "min-io":512, "opt-io":0, "phy-sec":512, "log-sec":512, "rota":false, "sched":"mq-deadline", "rq-size":256, "type":"loop", "disc-aln":0, "disc-gran":"4K", "disc-max":"4G", "disc-zero":false, "wsame":"0B", "wwn":null, "rand":false, "pkname":null, "hctl":null, "tran":null, "subsystems":"block", "rev":null, "vendor":null, "zoned":"none", "dax":false}, + // {"name":"loop5", "kname":"loop5", "path":"/dev/loop5", "maj:min":"7:5", "fsavail":"0", "fssize":"55.5M", "fstype":"squashfs", "fsused":"55.5M", "fsuse%":"100%", "fsver":"4.0", "mountpoint":"/snap/core18/1997", "label":null, "uuid":null, "ptuuid":null, "pttype":null, "parttype":null, "parttypename":null, "partlabel":null, "partuuid":null, "partflags":null, "ra":128, "ro":true, "rm":false, "hotplug":false, "model":null, "serial":null, "size":554, "state":null, "owner":"root", "group":"disk", "mode":"brw-rw----", "alignment":0, "min-io":512, "opt-io":0, "phy-sec":512, "log-sec":512, "rota":false, "sched":"mq-deadline", "rq-size":256, "type":"loop", "disc-aln":0, "disc-gran":"4K", "disc-max":"4G", "disc-zero":false, "wsame":"0B", "wwn":null, "rand":false, "pkname":null, "hctl":null, "tran":null, "subsystems":"block", "rev":null, "vendor":null, "zoned":"none", "dax":false}, + // {"name":"loop6", "kname":"loop6", "path":"/dev/loop6", "maj:min":"7:6", "fsavail":"0", "fssize":"80M", "fstype":"squashfs", "fsused":"80M", "fsuse%":"100%", "fsver":"4.0", "mountpoint":"/snap/lxd/22826", "label":null, "uuid":null, "ptuuid":null, "pttype":null, "parttype":null, "parttypename":null, "partlabel":null, "partuuid":null, "partflags":null, "ra":128, "ro":true, "rm":false, "hotplug":false, "model":null, "serial":null, "size":799, "state":null, "owner":"root", "group":"disk", "mode":"brw-rw----", "alignment":0, "min-io":512, "opt-io":0, "phy-sec":512, "log-sec":512, "rota":false, "sched":"mq-deadline", "rq-size":256, "type":"loop", "disc-aln":0, "disc-gran":"4K", "disc-max":"4G", "disc-zero":false, "wsame":"0B", "wwn":null, "rand":false, "pkname":null, "hctl":null, "tran":null, "subsystems":"block", "rev":null, "vendor":null, "zoned":"none", "dax":false}, + // {"name":"sda", "kname":"sda", "path":"/dev/sda", "maj:min":"8:0", "fsavail":null, "fssize":null, "fstype":null, "fsused":null, "fsuse%":null, "fsver":null, "mountpoint":null, "label":null, "uuid":null, "ptuuid":"1596101a-e20d-4296-96e2-0870efce554a", "pttype":"gpt", "parttype":null, "parttypename":null, "partlabel":null, "partuuid":null, "partflags":null, "ra":128, "ro":false, "rm":false, "hotplug":false, "model":"ST1000DM003-1ER1", "serial":"Z4YCS1B6", "size":9315, "state":"running", "owner":"root", "group":"disk", "mode":"brw-rw----", "alignment":0, "min-io":4096, "opt-io":0, "phy-sec":4096, "log-sec":512, "rota":true, "sched":"mq-deadline", "rq-size":64, "type":"disk", "disc-aln":0, "disc-gran":"0B", "disc-max":"0B", "disc-zero":false, "wsame":"0B", "wwn":"0x5000c50090db103a", "rand":true, "pkname":null, "hctl":"0:0:0:0", "tran":"sata", "subsystems":"block:scsi:pci", "rev":"CC61", "vendor":"ATA ", "zoned":"none", "dax":false, + // "children": [ + // {"name":"sda1", "kname":"sda1", "path":"/dev/sda1", "maj:min":"8:1", "fsavail":null, "fssize":null, "fstype":null, "fsused":null, "fsuse%":null, "fsver":null, "mountpoint":null, "label":null, "uuid":null, "ptuuid":"1596101a-e20d-4296-96e2-0870efce554a", "pttype":"gpt", "parttype":null, "parttypename":null, "partlabel":null, "partuuid":null, "partflags":null, "ra":128, "ro":false, "rm":false, "hotplug":false, "model":null, "serial":null, "size":9315, "state":null, "owner":"root", "group":"disk", "mode":"brw-rw----", "alignment":3072, "min-io":4096, "opt-io":0, "phy-sec":4096, "log-sec":512, "rota":true, "sched":"mq-deadline", "rq-size":64, "type":"part", "disc-aln":0, "disc-gran":"0B", "disc-max":"0B", "disc-zero":false, "wsame":"0B", "wwn":"0x5000c50090db103a", "rand":true, "pkname":"sda", "hctl":null, "tran":null, "subsystems":"block:scsi:pci", "rev":null, "vendor":null, "zoned":"none", "dax":false} + // ] + // }, + // {"name":"sdb", "kname":"sdb", "path":"/dev/sdb", "maj:min":"8:16", "fsavail":null, "fssize":null, "fstype":null, "fsused":null, "fsuse%":null, "fsver":null, "mountpoint":null, "label":null, "uuid":null, "ptuuid":"baed02d0-e92d-4a00-9609-f94f31271a0e", "pttype":"gpt", "parttype":null, "parttypename":null, "partlabel":null, "partuuid":null, "partflags":null, "ra":128, "ro":false, "rm":false, "hotplug":false, "model":"ST1000DM003-1ER1", "serial":"W4Y51MFH", "size":9315, "state":"running", "owner":"root", "group":"disk", "mode":"brw-rw----", "alignment":0, "min-io":4096, "opt-io":0, "phy-sec":4096, "log-sec":512, "rota":true, "sched":"mq-deadline", "rq-size":64, "type":"disk", "disc-aln":0, "disc-gran":"0B", "disc-max":"0B", "disc-zero":false, "wsame":"0B", "wwn":"0x5000c5008acd2f00", "rand":true, "pkname":null, "hctl":"1:0:0:0", "tran":"sata", "subsystems":"block:scsi:pci", "rev":"CC46", "vendor":"ATA ", "zoned":"none", "dax":false, + // "children": [ + // {"name":"sdb1", "kname":"sdb1", "path":"/dev/sdb1", "maj:min":"8:17", "fsavail":null, "fssize":null, "fstype":"zfs_member", "fsused":null, "fsuse%":null, "fsver":"5000", "mountpoint":null, "label":null, "uuid":null, "ptuuid":"baed02d0-e92d-4a00-9609-f94f31271a0e", "pttype":"gpt", "parttype":"0fc63daf-8483-4772-8e79-3d69d8477de4", "parttypename":"Linux filesystem", "partlabel":"primary", "partuuid":"57880cc0-2695-41c3-bf14-7161693e5bff", "partflags":null, "ra":128, "ro":false, "rm":false, "hotplug":false, "model":null, "serial":null, "size":9315, "state":null, "owner":"root", "group":"disk", "mode":"brw-rw----", "alignment":3072, "min-io":4096, "opt-io":0, "phy-sec":4096, "log-sec":512, "rota":true, "sched":"mq-deadline", "rq-size":64, "type":"part", "disc-aln":0, "disc-gran":"0B", "disc-max":"0B", "disc-zero":false, "wsame":"0B", "wwn":"0x5000c5008acd2f00", "rand":true, "pkname":"sdb", "hctl":null, "tran":null, "subsystems":"block:scsi:pci", "rev":null, "vendor":null, "zoned":"none", "dax":false} + // ] + // }, + // {"name":"nvme0n1", "kname":"nvme0n1", "path":"/dev/nvme0n1", "maj:min":"259:0", "fsavail":null, "fssize":null, "fstype":null, "fsused":null, "fsuse%":null, "fsver":null, "mountpoint":null, "label":null, "uuid":null, "ptuuid":"338abc31-a3d4-4af2-9342-b53268d9e5ac", "pttype":"gpt", "parttype":null, "parttypename":null, "partlabel":null, "partuuid":null, "partflags":null, "ra":128, "ro":false, "rm":false, "hotplug":false, "model":"LITEON CL1-8D128-HP", "serial":"UJDJA01PJDH3UI", "size":1192, "state":"live", "owner":"root", "group":"disk", "mode":"brw-rw----", "alignment":0, "min-io":512, "opt-io":0, "phy-sec":512, "log-sec":512, "rota":false, "sched":"none", "rq-size":255, "type":"disk", "disc-aln":0, "disc-gran":"512B", "disc-max":"2T", "disc-zero":false, "wsame":"0B", "wwn":"eui.0023035630392fe7", "rand":false, "pkname":null, "hctl":null, "tran":"nvme", "subsystems":"block:nvme:pci", "rev":null, "vendor":null, "zoned":"none", "dax":false, + // "children": [ + // {"name":"nvme0n1p1", "kname":"nvme0n1p1", "path":"/dev/nvme0n1p1", "maj:min":"259:1", "fsavail":null, "fssize":null, "fstype":null, "fsused":null, "fsuse%":null, "fsver":null, "mountpoint":null, "label":null, "uuid":null, "ptuuid":"338abc31-a3d4-4af2-9342-b53268d9e5ac", "pttype":"gpt", "parttype":"21686148-6449-6e6f-744e-656564454649", "parttypename":"BIOS boot", "partlabel":null, "partuuid":"b2bac638-9468-449f-9669-79be44e3c80d", "partflags":null, "ra":128, "ro":false, "rm":false, "hotplug":false, "model":null, "serial":null, "size":1, "state":null, "owner":"root", "group":"disk", "mode":"brw-rw----", "alignment":0, "min-io":512, "opt-io":0, "phy-sec":512, "log-sec":512, "rota":false, "sched":"none", "rq-size":255, "type":"part", "disc-aln":0, "disc-gran":"512B", "disc-max":"2T", "disc-zero":false, "wsame":"0B", "wwn":"eui.0023035630392fe7", "rand":false, "pkname":"nvme0n1", "hctl":null, "tran":"nvme", "subsystems":"block:nvme:pci", "rev":null, "vendor":null, "zoned":"none", "dax":false}, + // {"name":"nvme0n1p2", "kname":"nvme0n1p2", "path":"/dev/nvme0n1p2", "maj:min":"259:2", "fsavail":"1.2G", "fssize":"1.4G", "fstype":"ext4", "fsused":"131.5M", "fsuse%":"9%", "fsver":"1.0", "mountpoint":"/boot", "label":null, "uuid":"cd8164e9-bf7a-4684-8a3b-1d9f209b4930", "ptuuid":"338abc31-a3d4-4af2-9342-b53268d9e5ac", "pttype":"gpt", "parttype":"0fc63daf-8483-4772-8e79-3d69d8477de4", "parttypename":"Linux filesystem", "partlabel":null, "partuuid":"42ed9ed6-1221-4bea-901a-bc2f7b7cb9e1", "partflags":null, "ra":128, "ro":false, "rm":false, "hotplug":false, "model":null, "serial":null, "size":15, "state":null, "owner":"root", "group":"disk", "mode":"brw-rw----", "alignment":0, "min-io":512, "opt-io":0, "phy-sec":512, "log-sec":512, "rota":false, "sched":"none", "rq-size":255, "type":"part", "disc-aln":0, "disc-gran":"512B", "disc-max":"2T", "disc-zero":false, "wsame":"0B", "wwn":"eui.0023035630392fe7", "rand":false, "pkname":"nvme0n1", "hctl":null, "tran":"nvme", "subsystems":"block:nvme:pci", "rev":null, "vendor":null, "zoned":"none", "dax":false}, + // {"name":"nvme0n1p3", "kname":"nvme0n1p3", "path":"/dev/nvme0n1p3", "maj:min":"259:3", "fsavail":null, "fssize":null, "fstype":"LVM2_member", "fsused":null, "fsuse%":null, "fsver":"LVM2 001", "mountpoint":null, "label":null, "uuid":"0G7ryL-p2Ks-i9HS-wvEO-lXHs-oyZX-1KIlZO", "ptuuid":"338abc31-a3d4-4af2-9342-b53268d9e5ac", "pttype":"gpt", "parttype":"0fc63daf-8483-4772-8e79-3d69d8477de4", "parttypename":"Linux filesystem", "partlabel":null, "partuuid":"f6ae2e8c-14ae-4d94-89f1-2c154e909843", "partflags":null, "ra":128, "ro":false, "rm":false, "hotplug":false, "model":null, "serial":null, "size":1177, "state":null, "owner":"root", "group":"disk", "mode":"brw-rw----", "alignment":0, "min-io":512, "opt-io":0, "phy-sec":512, "log-sec":512, "rota":false, "sched":"none", "rq-size":255, "type":"part", "disc-aln":0, "disc-gran":"512B", "disc-max":"2T", "disc-zero":false, "wsame":"0B", "wwn":"eui.0023035630392fe7", "rand":false, "pkname":"nvme0n1", "hctl":null, "tran":"nvme", "subsystems":"block:nvme:pci", "rev":null, "vendor":null, "zoned":"none", "dax":false, + // "children": [ + // {"name":"ubuntu--vg-ubuntu--lv", "kname":"dm-0", "path":"/dev/mapper/ubuntu--vg-ubuntu--lv", "maj:min":"253:0", "fsavail":"78.6G", "fssize":"115.4G", "fstype":"ext4", "fsused":"30.9G", "fsuse%":"27%", "fsver":"1.0", "mountpoint":"/", "label":null, "uuid":"e8a9082f-3643-4820-a5e5-05817d7738c6", "ptuuid":null, "pttype":null, "parttype":null, "parttypename":null, "partlabel":null, "partuuid":null, "partflags":null, "ra":128, "ro":false, "rm":false, "hotplug":false, "model":null, "serial":null, "size":1177, "state":"running", "owner":"root", "group":"disk", "mode":"brw-rw----", "alignment":0, "min-io":512, "opt-io":0, "phy-sec":512, "log-sec":512, "rota":false, "sched":null, "rq-size":128, "type":"lvm", "disc-aln":0, "disc-gran":"512B", "disc-max":"2T", "disc-zero":false, "wsame":"0B", "wwn":null, "rand":false, "pkname":"nvme0n1p3", "hctl":null, "tran":null, "subsystems":"block", "rev":null, "vendor":null, "zoned":"none", "dax":false} + // ] + // } + // ] + // } + // ] + // }` + // fmt.Println(gjson.Get(strStr, "blockdevices").String()) err := json2.Unmarshal([]byte(gjson.Get(string(str), "blockdevices").String()), &m) if err != nil { + fmt.Println(err) d.log.Error("json ummarshal error", err) } diff --git a/service/docker.go b/service/docker.go index 49beab5..2fa4f06 100644 --- a/service/docker.go +++ b/service/docker.go @@ -16,6 +16,7 @@ import ( "github.com/containerd/containerd/cio" "github.com/containerd/containerd/namespaces" "github.com/containerd/containerd/oci" + "github.com/pkg/errors" "github.com/IceWhaleTech/CasaOS/model" "github.com/IceWhaleTech/CasaOS/pkg/docker" @@ -45,7 +46,8 @@ import ( type DockerService interface { DockerPullImage(imageName string, m model2.AppNotify) error IsExistImage(imageName string) bool - DockerContainerCreate(imageName string, containerDbId string, m model.CustomizationPostData, net string) (containerId string, err error) + DockerContainerCreate(imageName string, m model.CustomizationPostData, net string) (containerId string, err error) + DockerContainerCopyCreate(info *types.ContainerJSON) (containerId string, err error) DockerContainerStart(name string) error DockerContainerStats(name string) (string, error) DockerListByName(name string) (*types.Container, error) @@ -58,8 +60,9 @@ type DockerService interface { DockerContainerUpdate(m model.CustomizationPostData, id string) (err error) DockerContainerLog(name string) (string, error) DockerContainerCommit(name string) + DockerContainerList() []types.Container DockerNetworkModelList() []types.NetworkResource - DockerImageInfo(image string) + DockerImageInfo(image string) (types.ImageInspect, error) GetNetWorkNameByNetWorkID(id string) (string, error) ContainerExecShell(container_id string) string } @@ -69,6 +72,19 @@ type dockerService struct { log loger2.OLog } +func (ds *dockerService) DockerContainerList() []types.Container { + cli, err := client2.NewClientWithOpts(client2.FromEnv, client2.WithTimeout(time.Second*5)) + if err != nil { + return nil + } + defer cli.Close() + containers, err := cli.ContainerList(context.Background(), types.ContainerListOptions{All: true}) + if err != nil { + return containers + } + return containers +} + func (ds *dockerService) ContainerExecShell(container_id string) string { cli, _ := client2.NewClientWithOpts(client2.FromEnv) exec, err := cli.ContainerExecCreate(context.Background(), container_id, types.ExecConfig{ @@ -119,10 +135,7 @@ func DockerPull() { cli, _ := client2.NewClientWithOpts(client2.FromEnv) defer cli.Close() - authConfig := types.AuthConfig{ - Username: "cn-north-4@M4OW0IULZ3U6PCQPBUZC", - Password: "7390181a1565f90927bbd98038436b57d6ebc66a3828d7a11dfda42b9c19d91d", - } + authConfig := types.AuthConfig{} encodedJSON, err := json2.Marshal(authConfig) fmt.Println(err) @@ -174,18 +187,16 @@ func DockerEx() { // //} -func (ds *dockerService) DockerImageInfo(image string) { +func (ds *dockerService) DockerImageInfo(image string) (types.ImageInspect, error) { cli, err := client2.NewClientWithOpts(client2.FromEnv) - - //but := bytes.Buffer{} - d, b, err := cli.ImageInspectWithRaw(context.Background(), image) - st, _ := json2.Marshal(d.Config) - fmt.Println(string(st)) - fmt.Println("换行") - fmt.Println(string(b)) if err != nil { - fmt.Print(err) + return types.ImageInspect{}, err } + inspect, _, err := cli.ImageInspectWithRaw(context.Background(), image) + if err != nil { + return inspect, err + } + return inspect, nil } func MsqlExec(container string) error { @@ -342,6 +353,18 @@ func (ds *dockerService) DockerPullImage(imageName string, m model2.AppNotify) e } return err } +func (ds *dockerService) DockerContainerCopyCreate(info *types.ContainerJSON) (containerId string, err error) { + cli, err := client2.NewClientWithOpts(client2.FromEnv) + if err != nil { + return "", err + } + defer cli.Close() + container, err := cli.ContainerCreate(context.Background(), info.Config, info.HostConfig, &network.NetworkingConfig{info.NetworkSettings.Networks}, nil, info.Name) + if err != nil { + return "", err + } + return container.ID, err +} //param imageName 镜像名称 //param containerDbId 数据库的id @@ -349,7 +372,7 @@ func (ds *dockerService) DockerPullImage(imageName string, m model2.AppNotify) e //param mapPort 容器主端口映射到外部的端口 //param tcp 容器其他tcp端口 //param udp 容器其他udp端口 -func (ds *dockerService) DockerContainerCreate(imageName string, containerDbId string, m model.CustomizationPostData, net string) (containerId string, err error) { +func (ds *dockerService) DockerContainerCreate(imageName string, m model.CustomizationPostData, net string) (containerId string, err error) { if len(net) == 0 { net = "bridge" } @@ -442,12 +465,12 @@ func (ds *dockerService) DockerContainerCreate(imageName string, containerDbId s for _, v := range m.Volumes { path := v.Path if len(path) == 0 { - path = docker.GetDir(containerDbId, v.Path) + path = docker.GetDir(m.Label, v.Path) if len(path) == 0 { continue } } - path = strings.ReplaceAll(path, "$AppID", containerDbId) + path = strings.ReplaceAll(path, "$AppID", m.Label) //reg1 := regexp.MustCompile(`([^<>/\\\|:""\*\?]+\.\w+$)`) //result1 := reg1.FindAllStringSubmatch(path, -1) //if len(result1) == 0 { @@ -495,12 +518,19 @@ func (ds *dockerService) DockerContainerCreate(imageName string, containerDbId s } config := &container.Config{ Image: imageName, - Labels: map[string]string{"origin": m.Origin, m.Origin: m.Origin}, + Labels: map[string]string{"origin": m.Origin, m.Origin: m.Origin, "casaos": "casaos"}, Env: envArr, // Healthcheck: health, Hostname: m.HostName, Cmd: m.Cmd, } + + config.Labels["web"] = m.PortMap + config.Labels["icon"] = m.Icon + config.Labels["desc"] = m.Description + config.Labels["index"] = m.Index + config.Labels["custom_id"] = m.CustomId + //config.Labels["order"] = strconv.Itoa(MyService.App().GetCasaOSCount() + 1) hostConfig := &container.HostConfig{Resources: res, Mounts: volumes, RestartPolicy: rp, NetworkMode: container.NetworkMode(net), Privileged: m.Privileged, CapAdd: m.CapAdd} //if net != "host" { config.ExposedPorts = ports @@ -512,7 +542,7 @@ func (ds *dockerService) DockerContainerCreate(imageName string, containerDbId s hostConfig, &network.NetworkingConfig{EndpointsConfig: map[string]*network.EndpointSettings{net: {NetworkID: "", Aliases: []string{}}}}, nil, - containerDbId) + m.Label) if err != nil { return "", err } @@ -695,6 +725,9 @@ func (ds *dockerService) DockerListByName(name string) (*types.Container, error) if err != nil { return &types.Container{}, err } + if len(containers) == 0 { + return &types.Container{}, errors.New("not found") + } return &containers[0], nil } diff --git a/service/down_record.go b/service/down_record.go new file mode 100644 index 0000000..dfeae97 --- /dev/null +++ b/service/down_record.go @@ -0,0 +1,33 @@ +package service + +import ( + model2 "github.com/IceWhaleTech/CasaOS/service/model" + "gorm.io/gorm" +) + +type DownRecordService interface { + AddDownRecord(m model2.PersonDownRecordDBModel) + GetDownloadListByFrom(id string) []model2.PersonDownRecordDBModel + GetDownloadListByPath(path string) (list []model2.PersonDownRecordDBModel) +} +type downRecordService struct { + db *gorm.DB +} + +func (d *downRecordService) AddDownRecord(m model2.PersonDownRecordDBModel) { + d.db.Create(&m) +} + +func (d *downRecordService) GetDownloadListByFrom(id string) []model2.PersonDownRecordDBModel { + var m []model2.PersonDownRecordDBModel + d.db.Model(m).Where("from = ?", id).Find(&m) + return m +} +func (d *downRecordService) GetDownloadListByPath(path string) (list []model2.PersonDownRecordDBModel) { + d.db.Where("path = ?", path).Find(&list) + return +} + +func NewDownRecordService(db *gorm.DB) DownRecordService { + return &downRecordService{db: db} +} diff --git a/service/download.go b/service/download.go index b2b2c46..8a2ef8f 100644 --- a/service/download.go +++ b/service/download.go @@ -11,7 +11,7 @@ type DownloadService interface { SaveDownload(m model2.PersonDownloadDBModel) DelDownload(uuid string) GetDownloadById(uuid string) model2.PersonDownloadDBModel - GetDownloadListByState(state string) []model2.PersonDownloadDBModel + GetDownloadListByState(state string, t int) []model2.PersonDownloadDBModel SetDownloadError(m model2.PersonDownloadDBModel) GetDownloadListByPath(m model2.PersonDownloadDBModel) int } @@ -48,11 +48,11 @@ func (d *downloadService) GetDownloadById(uuid string) model2.PersonDownloadDBMo d.db.Model(m).Where("uuid = ?", uuid).First(&m) return m } -func (d *downloadService) GetDownloadListByState(state string) (list []model2.PersonDownloadDBModel) { +func (d *downloadService) GetDownloadListByState(state string, t int) (list []model2.PersonDownloadDBModel) { if len(state) == 0 { - d.db.Find(&list) + d.db.Where("type = ?", t).Find(&list) } else { - d.db.Where("state = ?", state).Find(&list) + d.db.Where("state = ? AND type= ?", state, t).Find(&list) } return diff --git a/service/friend.go b/service/friend.go index 23e7ad9..f81cb03 100644 --- a/service/friend.go +++ b/service/friend.go @@ -1,9 +1,20 @@ package service import ( + "context" + "fmt" + "net" "reflect" + "strconv" + "time" + "github.com/IceWhaleTech/CasaOS/model" + "github.com/IceWhaleTech/CasaOS/pkg/config" + "github.com/IceWhaleTech/CasaOS/pkg/quic_helper" model2 "github.com/IceWhaleTech/CasaOS/service/model" + "github.com/IceWhaleTech/CasaOS/types" + "github.com/lucas-clemente/quic-go" + uuid "github.com/satori/go.uuid" "gorm.io/gorm" ) @@ -11,17 +22,26 @@ type FriendService interface { AddFriend(m model2.FriendModel) DeleteFriend(m model2.FriendModel) EditFriendMark(m model2.FriendModel) + EditFriendWrite(m model2.FriendModel) EditFriendBlock(m model2.FriendModel) GetFriendById(m model2.FriendModel) model2.FriendModel GetFriendList() (list []model2.FriendModel) + GetFriendListRemote() (list []model2.FriendModel) UpdateAddFriendType(m model2.FriendModel) + AgreeFrined(id string) + GetFriendByToken(token string) model2.FriendModel UpdateOrCreate(m model2.FriendModel) + InternalInspection(ips []string, token string) } type friendService struct { db *gorm.DB } +func (p *friendService) AgreeFrined(id string) { + var m model2.FriendModel + p.db.Model(&m).Where("token = ?", id).Update("state", types.FRIENDSTATEDEFAULT) +} func (p *friendService) AddFriend(m model2.FriendModel) { p.db.Create(&m) } @@ -31,6 +51,9 @@ func (p *friendService) DeleteFriend(m model2.FriendModel) { func (p *friendService) EditFriendMark(m model2.FriendModel) { p.db.Model(&m).Where("token = ?", m.Token).Update("mark", m.Mark) } +func (p *friendService) EditFriendWrite(m model2.FriendModel) { + p.db.Model(&m).Where("token = ?", m.Token).Update("write", m.Write) +} func (p *friendService) EditFriendBlock(m model2.FriendModel) { p.db.Model(&m).Where("token = ?", m.Token).Update("block", m.Block) } @@ -43,7 +66,14 @@ func (p *friendService) GetFriendList() (list []model2.FriendModel) { p.db.Select("nick_name", "avatar", "profile", "token", "state", "mark", "block", "version").Find(&list) return list } - +func (p *friendService) GetFriendListRemote() (list []model2.FriendModel) { + p.db.Select("nick_name", "avatar", "profile", "token", "state", "mark", "block", "version").Where("internal_ip == '' OR internal_ip is null").Find(&list) + return list +} +func (p *friendService) GetFriendListInternal() (list []model2.FriendModel) { + p.db.Select("nick_name", "avatar", "profile", "token", "state", "mark", "block", "version").Where("internal_ip != ''").Find(&list) + return list +} func (p *friendService) UpdateOrCreate(m model2.FriendModel) { friend := model2.FriendModel{} p.db.Where("token = ?", m.Token).First(&friend) @@ -59,6 +89,67 @@ func (p *friendService) UpdateAddFriendType(m model2.FriendModel) { p.db.Model(&m).Updates(m) } +func (p *friendService) GetFriendByToken(token string) model2.FriendModel { + var m model2.FriendModel + p.db.Model(&m).Where("token = ?", token).First(&m) + return m +} + +func (p *friendService) InternalInspection(ips []string, token string) { + for _, v := range ips { + fmt.Println("开始遍历 ip:", v) + ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) + defer cancel() + + dstAddr, err := net.ResolveUDPAddr("udp", v) + if err != nil { + fmt.Println("1", err.Error()) + continue + } + port, err := strconv.Atoi(config.ServerInfo.UDPPort) + if err != nil { + fmt.Println("2", err) + continue + } + srcAddr := &net.UDPAddr{ + IP: net.IPv4zero, Port: port} + ticket := token + session, err := quic.DialContext(ctx, UDPConn, dstAddr, srcAddr.String(), quic_helper.GetClientTlsConfig(ticket), quic_helper.GetQUICConfig()) + if err != nil { + fmt.Println("3", err, v) + continue + } + + stream, err := session.OpenStreamSync(ctx) + if err != nil { + fmt.Println("4", err) + continue + } + uuid := uuid.NewV4().String() + SayHello(stream, token) + msg := model.MessageModel{ + Type: types.PERSONPING, + Data: "", + From: config.ServerInfo.Token, + To: token, + UUId: uuid, + } + + SendData(stream, msg) + + go ReadContent(stream) + result := <-Message + fmt.Println("ping返回结果:", result, msg) + stream.Close() + if !reflect.DeepEqual(result, model.MessageModel{}) && result.Data.(string) == token && result.From == token { + fmt.Println("获取到正确的ip", v) + UDPAddressMap[result.From] = v + p.db.Model(&model2.FriendModel{}).Where("token = ?", token).Update("internal_ip", v) + return + } + } +} + func NewFriendService(db *gorm.DB) FriendService { return &friendService{db: db} } diff --git a/service/model/o_application.go b/service/model/o_application.go new file mode 100644 index 0000000..e3522fb --- /dev/null +++ b/service/model/o_application.go @@ -0,0 +1,20 @@ +package model + +import ( + "time" +) + +type ApplicationModel struct { + Id int `gorm:"column:id;primary_key" json:"id"` + Name string `json:"name"` + Icon string `json:"icon"` + State int `json:"state"` + Type string `json:"type"` + Order int `json:"order"` + CreatedAt time.Time `gorm:"<-:create" json:"created_at"` + UpdatedAt time.Time `gorm:"<-:create;<-:update" json:"updated_at"` +} + +func (p *ApplicationModel) TableName() string { + return "o_application" +} diff --git a/service/model/o_container.go b/service/model/o_container.go index 042cecf..5f868a6 100644 --- a/service/model/o_container.go +++ b/service/model/o_container.go @@ -1,11 +1,8 @@ package model -import ( - "github.com/IceWhaleTech/CasaOS/model" -) - const CONTAINERTABLENAME = "o_container" +//Soon to be removed type AppListDBModel struct { CustomId string `gorm:"column:custom_id;primary_key" json:"custom_id"` Title string `json:"title"` @@ -52,15 +49,19 @@ func (p *AppListDBModel) TableName() string { } type MyAppList struct { - Name string `json:"name"` - Icon string `json:"icon"` - State string `json:"state"` - CustomId string `gorm:"column:custom_id;primary_key" json:"custom_id"` - Index string `json:"index"` - Port string `json:"port"` - UpTime string `json:"up_time"` - Slogan string `json:"slogan"` - Rely model.MapStrings `json:"rely"` //[{"mysql":"id"},{"mysql":"id"}] - Image string `json:"image"` - Volumes string `json:"volumes"` + Id string `json:"id"` + Name string `json:"name"` + Icon string `json:"icon"` + State string `json:"state"` + CustomId string `gorm:"column:custom_id;primary_key" json:"custom_id"` + Index string `json:"index"` + //Order string `json:"order"` + Port string `json:"port"` + UpTime string `json:"up_time"` + Slogan string `json:"slogan"` + Type string `json:"type"` + //Rely model.MapStrings `json:"rely"` //[{"mysql":"id"},{"mysql":"id"}] + Image string `json:"image"` + Volumes string `json:"volumes"` + NewVersion bool `json:"new_version"` } diff --git a/service/model/o_down_record.go b/service/model/o_down_record.go new file mode 100644 index 0000000..37a5966 --- /dev/null +++ b/service/model/o_down_record.go @@ -0,0 +1,16 @@ +package model + +type PersonDownRecordDBModel struct { + UUID string `gorm:"column:uuid;primary_key" json:"uuid"` + Name string `json:"name"` //file name + Type int `json:"type"` + Size int64 `json:"size"` //file size + Downloader string `json:"downloader"` //Error message + Path string `json:"path"` + Created int64 `gorm:"autoCreateTime" json:"created"` + Updated int64 `gorm:"autoCreateTime;autoUpdateTime" json:"updated"` +} + +func (p *PersonDownRecordDBModel) TableName() string { + return "o_person_down_record" +} diff --git a/service/model/o_download.go b/service/model/o_download.go index 5c8b1a4..af0b2d3 100644 --- a/service/model/o_download.go +++ b/service/model/o_download.go @@ -3,7 +3,7 @@ package model type PersonDownloadDBModel struct { UUID string `gorm:"column:uuid;primary_key" json:"uuid"` State int `json:"state"` // - Type int `json:"type"` //defult 1 + Type int `json:"type"` //defult 0 Name string `json:"name"` //file name Size int64 `json:"size"` //file size BlockSize int `json:"block_size"` //Size of each file block diff --git a/service/model/o_friend.go b/service/model/o_friend.go index 3d59aa9..daea6a9 100644 --- a/service/model/o_friend.go +++ b/service/model/o_friend.go @@ -1,7 +1,7 @@ package model type FriendModel struct { - State int `json:"state"` //Reserved + State int `json:"state"` CreatedAt int64 `gorm:"autoCreateTime" json:"created_at"` UpdatedAt int64 `gorm:"autoCreateTime;autoUpdateTime" json:"updated_at"` NickName string `json:"nick_name"` @@ -12,6 +12,8 @@ type FriendModel struct { Profile string `json:"profile"` //Description OnLine bool `json:"on_line" gorm:"-"` Version int `json:"version"` + Write bool `json:"write"` + LocalIP string `json:"local_ip"` } func (p *FriendModel) TableName() string { diff --git a/service/person.go b/service/person.go index 25273ed..011a2c7 100644 --- a/service/person.go +++ b/service/person.go @@ -15,8 +15,10 @@ import ( "github.com/IceWhaleTech/CasaOS/model" "github.com/IceWhaleTech/CasaOS/pkg/config" "github.com/IceWhaleTech/CasaOS/pkg/quic_helper" + "github.com/IceWhaleTech/CasaOS/pkg/utils" "github.com/IceWhaleTech/CasaOS/pkg/utils/file" httper2 "github.com/IceWhaleTech/CasaOS/pkg/utils/httper" + "github.com/IceWhaleTech/CasaOS/pkg/utils/ip_helper" port2 "github.com/IceWhaleTech/CasaOS/pkg/utils/port" model2 "github.com/IceWhaleTech/CasaOS/service/model" "github.com/IceWhaleTech/CasaOS/types" @@ -26,6 +28,7 @@ import ( type PersonService interface { GetPersionInfo(token string) (m model.PersionModel, err error) + GetPersionNetWorkTypeDetection() string } type personService struct { @@ -34,11 +37,12 @@ type personService struct { var IpInfo model.PersionModel var CancelList map[string]string +var InternalInspection map[string][]string func PushIpInfo(token string) { m := model.PersionModel{} - m.Ips = GetDeviceAllIP() + m.Ips = ip_helper.GetDeviceAllIP("") m.Token = token b, _ := json.Marshal(m) @@ -54,6 +58,16 @@ func (p *personService) GetPersionInfo(token string) (m model.PersionModel, err err = json.Unmarshal([]byte(infoS), &m) return } +func (p *personService) GetPersionNetWorkTypeDetection() string { + data := make(chan string) + list := []string{"stun.l.google.com", "stun1.l.google.com", "stun2.l.google.com", "stun.sipgate.net"} + for _, v := range list { + go utils.GetNetWorkTypeDetection(data, v) + } + result := <-data + close(data) + return result +} func NewPersonService(db *gorm.DB) PersonService { return &personService{db: db} @@ -193,6 +207,11 @@ func ProcessingContent(stream quic.Stream) { } else { list = []model.Path{} } + if rFriend.Write { + for i := 0; i < len(list); i++ { + list[i].Write = true + } + } m.To = m.From m.Data = list m.From = config.ServerInfo.Token @@ -200,10 +219,9 @@ func ProcessingContent(stream quic.Stream) { break } else if m.Type == types.PERSONDOWNLOAD { - SendFileData(stream, m.Data.(string), m.From, m.UUId) + SendFileData(stream, m.Data.(string), m.From, m.UUId, types.PERSONDOWNLOAD) break } else if m.Type == types.PERSONADDFRIEND { - fmt.Println("有用户来请求加好友", m) friend := model2.FriendModel{} dataModelByte, _ := json.Marshal(m.Data) err := json.Unmarshal(dataModelByte, &friend) @@ -225,6 +243,7 @@ func ProcessingContent(stream quic.Stream) { break } else if m.Type == types.PERSONCONNECTION { if len(m.Data.(string)) > 0 { + fmt.Println("设置ip", m.Data.(string)) UDPAddressMap[m.From] = m.Data.(string) } else { delete(UDPAddressMap, m.From) @@ -236,14 +255,18 @@ func ProcessingContent(stream quic.Stream) { // mi.Token = config.ServerInfo.Token user := MyService.Casa().GetUserInfoByShareId(m.From) - + //好友申请 //不是好友 friend := model2.FriendModel{} friend.Token = m.From friend.Avatar = user.Avatar friend.Block = false friend.NickName = user.NickName friend.Profile = user.Avatar + friend.Write = false friend.Version = user.Version + if len(config.UserInfo.Public) > 0 { + friend.State = types.FRIENDSTATEREQUEST + } MyService.Friend().AddFriend(friend) msg := model.MessageModel{} @@ -254,10 +277,96 @@ func ProcessingContent(stream quic.Stream) { msg.UUId = m.UUId Dial(msg, false) + //agree user + if len(config.UserInfo.Public) == 0 { + msg.Type = types.PERSONAGREEFRIEND + msg.Data = "" + msg.To = m.From + msg.From = config.ServerInfo.Token + msg.UUId = m.UUId + Dial(msg, true) + } + break + } else if m.Type == types.PERSONAGREEFRIEND { + MyService.Friend().AgreeFrined(m.From) break } else if m.Type == types.PERSONCANCEL { CancelList[m.UUId] = "cancel" break + } else if m.Type == types.PERSONSUMMARY { + Summary(m, "upload") + continue + } else if m.Type == types.PERSONUPLOAD { + //TODO:检查是否存在如果存在直接结束 + task := model2.PersonDownloadDBModel{} + task.UUID = m.UUId + task.LocalPath = m.Data.(string) + MyService.Download().AddDownloadTask(task) + friend := MyService.Friend().GetFriendById(model2.FriendModel{Token: m.From}) + if friend.Write { + continue + } else { + break + } + } else if m.Type == types.PERSONUPLOADDATA { + r := SaveFile(m, stream) + if r { + break + } + continue + } else if m.Type == types.PERSONINTERNALINSPECTION { + fmt.Println("内网测试") + var ips []string + dataModelByte, _ := json.Marshal(m.Data) + err := json.Unmarshal(dataModelByte, &ips) + if err != nil { + fmt.Println(err) + break + } + + go MyService.Friend().InternalInspection(ips, m.From) + + } else if m.Type == types.PERSONPING { + fmt.Println("来自", m.From, "的ping", m.Data) + msg := m + m.To = m.From + m.Data = config.ServerInfo.Token + m.From = config.ServerInfo.Token + SendData(stream, m) + + var ips []string + dataModelByte, _ := json.Marshal(msg.Data) + err := json.Unmarshal(dataModelByte, &ips) + if err != nil { + fmt.Println(err) + break + } + backIP := false + if v, ok := UDPAddressMap[msg.From]; ok { + for _, ip := range ips { + if ip == v { + backIP = true + break + } + } + } + if !backIP { + fmt.Println("检测需要查询ip", msg.From) + go MyService.Friend().InternalInspection(ips, msg.From) + } + + break + } else if m.Type == types.PERSONIMAGETHUMBNAIL { + m.To = m.From + + if data, err := file.GetImage(m.Data.(string), 100, 0); err == nil { + m.Data = data + } else { + m.Data = "" + } + m.From = config.ServerInfo.Token + SendData(stream, m) + break } else { //不应有不做返回的数据 //ServiceMessage <- m @@ -269,7 +378,7 @@ func ProcessingContent(stream quic.Stream) { } //文件分片发送 -func SendFileData(stream quic.Stream, filePath, to, uuid string) error { +func SendFileData(stream quic.Stream, filePath, to, uuid, t string) error { summary := model.FileSummaryModel{} msg := model.MessageModel{} @@ -341,7 +450,7 @@ func SendFileData(stream quic.Stream, filePath, to, uuid string) error { tran.Length = length fileMsg := model.MessageModel{} - fileMsg.Type = types.PERSONDOWNLOAD + fileMsg.Type = t fileMsg.Data = tran fileMsg.From = config.ServerInfo.Token fileMsg.To = to @@ -356,5 +465,18 @@ func SendFileData(stream quic.Stream, filePath, to, uuid string) error { } stream.Write(data) } + record := model2.PersonDownRecordDBModel{} + record.UUID = uuid + record.Name = f.Name() + record.Downloader = to + record.Path = filePath + record.Size = fStat.Size() + record.Type = types.PERSONFILEDOWNLOAD + if t == types.PERSONUPLOADDATA { + record.Type = types.PERSONFILEUPLOAD + } + + MyService.DownRecord().AddDownRecord(record) + return nil } diff --git a/service/service.go b/service/service.go index 8eb681d..fdde0a9 100644 --- a/service/service.go +++ b/service/service.go @@ -12,7 +12,7 @@ var Cache *cache.Cache var MyService Repository var WebSocketConns []*websocket.Conn - +var NewVersionApp map[string]string var SocketRun bool type Repository interface { @@ -34,6 +34,7 @@ type Repository interface { Person() PersonService Friend() FriendService Download() DownloadService + DownRecord() DownRecordService } func NewService(db *gorm.DB, log loger2.OLog) Repository { @@ -57,6 +58,7 @@ func NewService(db *gorm.DB, log loger2.OLog) Repository { person: NewPersonService(db), friend: NewFriendService(db), download: NewDownloadService(db), + downrecord: NewDownRecordService(db), } } @@ -79,6 +81,11 @@ type store struct { person PersonService friend FriendService download DownloadService + downrecord DownRecordService +} + +func (c *store) DownRecord() DownRecordService { + return c.downrecord } func (c *store) Download() DownloadService { diff --git a/service/system.go b/service/system.go index bf92a43..75fd129 100644 --- a/service/system.go +++ b/service/system.go @@ -7,6 +7,7 @@ import ( "github.com/IceWhaleTech/CasaOS/pkg/config" command2 "github.com/IceWhaleTech/CasaOS/pkg/utils/command" + "github.com/IceWhaleTech/CasaOS/pkg/utils/file" "github.com/IceWhaleTech/CasaOS/pkg/utils/loger" ) @@ -20,6 +21,8 @@ type SystemService interface { GetTimeZone() string UpdateUSBAutoMount(state string) ExecUSBAutoMountShell(state string) + UpAppOrderFile(str string) + GetAppOrderFile() []byte } type systemService struct { log loger.OLog @@ -62,9 +65,15 @@ func (s *systemService) UpSystemConfig(str string, widget string) { } config.Cfg.SaveTo(config.SystemConfigInfo.ConfigPath) } +func (s *systemService) UpAppOrderFile(str string) { + file.WriteToPath([]byte(str), config.AppInfo.ProjectPath+"/conf", "app_order.json") +} +func (s *systemService) GetAppOrderFile() []byte { + return file.ReadFullFile(config.AppInfo.ProjectPath + "/conf/app_order.json") +} func (s *systemService) UpdateUSBAutoMount(state string) { config.ServerInfo.USBAutoMount = state - config.Cfg.Section("system").Key("USBAutoMount").SetValue(state) + config.Cfg.Section("server").Key("USBAutoMount").SetValue(state) config.Cfg.SaveTo(config.SystemConfigInfo.ConfigPath) } func (s *systemService) UpSystemPort(port string) { diff --git a/service/udpconn.go b/service/udpconn.go index 90e3a25..3bee999 100644 --- a/service/udpconn.go +++ b/service/udpconn.go @@ -11,13 +11,16 @@ import ( "net" "os" path2 "path" + "reflect" "strconv" + "strings" "time" "github.com/IceWhaleTech/CasaOS/model" "github.com/IceWhaleTech/CasaOS/pkg/config" "github.com/IceWhaleTech/CasaOS/pkg/quic_helper" "github.com/IceWhaleTech/CasaOS/pkg/utils/file" + "github.com/IceWhaleTech/CasaOS/pkg/utils/ip_helper" model2 "github.com/IceWhaleTech/CasaOS/service/model" "github.com/IceWhaleTech/CasaOS/types" "github.com/lucas-clemente/quic-go" @@ -29,6 +32,65 @@ var PeopleMap map[string]quic.Stream var Message chan model.MessageModel var UDPAddressMap map[string]string +func UDPSendData(msg model.MessageModel, localFilePath string) error { + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + Message = make(chan model.MessageModel) + _, port, err := net.SplitHostPort(UDPConn.LocalAddr().String()) + if config.ServerInfo.UDPPort != port { + config.ServerInfo.UDPPort = port + config.Cfg.Section("server").Key("UDPPort").SetValue(port) + config.Cfg.SaveTo(config.SystemConfigInfo.ConfigPath) + } + p, err := strconv.Atoi(port) + srcAddr := &net.UDPAddr{ + IP: net.IPv4zero, Port: p} //注意端口必须固定 + addr := UDPAddressMap[msg.To] + ticket := msg.To + dstAddr, err := net.ResolveUDPAddr("udp", addr) + + session, err := quic.DialContext(ctx, UDPConn, dstAddr, srcAddr.String(), quic_helper.GetClientTlsConfig(ticket), quic_helper.GetQUICConfig()) + if err != nil { + if msg.Type == types.PERSONDOWNLOAD { + task := MyService.Download().GetDownloadById(msg.UUId) + task.Error = err.Error() + task.State = types.DOWNLOADERROR + MyService.Download().SetDownloadError(task) + } + if config.SystemConfigInfo.Analyse != "False" { + go MyService.Casa().PushConnectionStatus(msg.UUId, err.Error(), msg.From, msg.To, msg.Type) + } + + return err + } + + stream, err := session.OpenStreamSync(ctx) + if err != nil { + if msg.Type == types.PERSONDOWNLOAD { + task := MyService.Download().GetDownloadById(msg.UUId) + task.Error = err.Error() + task.State = types.DOWNLOADERROR + MyService.Download().SetDownloadError(task) + } + if config.SystemConfigInfo.Analyse != "False" { + go MyService.Casa().PushConnectionStatus(msg.UUId, err.Error(), msg.From, msg.To, msg.Type) + } + session.CloseWithError(1, err.Error()) + return err + } + + SayHello(stream, msg.To) + //TODO:发送 + SendData(stream, msg) + SendFileData(stream, localFilePath, msg.To, msg.UUId, types.PERSONUPLOADDATA) + + stream.Close() + if config.SystemConfigInfo.Analyse != "False" { + go MyService.Casa().PushConnectionStatus(msg.UUId, "OK", msg.From, msg.To, msg.Type) + } + return nil +} + func Dial(msg model.MessageModel, server bool) (m model.MessageModel, err error) { ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) defer cancel() @@ -142,139 +204,17 @@ func ReadContent(stream quic.Stream) { } m := model.MessageModel{} err = json.Unmarshal(messageByte, &m) - fmt.Println("客户端", m) if err != nil { fmt.Println(err) break } - if m.Type == types.PERSONDOWNLOAD { - - dataModelByte, _ := json.Marshal(m.Data) - dataModel := model.TranFileModel{} - err := json.Unmarshal(dataModelByte, &dataModel) - if err != nil { - fmt.Println(err) - continue - } - - dataLengthByte := make([]byte, 8) - _, err = io.ReadFull(stream, dataLengthByte) - if err != nil { - fmt.Println(err) - continue - } - dataLength, err := strconv.Atoi(string(dataLengthByte)) - if err != nil { - fmt.Println(err) - continue - } - dataByte := make([]byte, dataLength) - _, err = io.ReadFull(stream, dataByte) - if err != nil { - fmt.Println(err) - continue - } - sum := md5.Sum(dataByte) - hash := hex.EncodeToString(sum[:]) - if dataModel.Hash != hash { - fmt.Println("hash不匹配", hash, dataModel.Hash) - continue - } - tempPath := config.AppInfo.RootPath + "/temp" + "/" + m.UUId - file.IsNotExistMkDir(tempPath) - filepath := tempPath + "/" + strconv.Itoa(dataModel.Index) - _, err = os.Stat(filepath) - - if os.IsNotExist(err) { - err = ioutil.WriteFile(filepath, dataByte, 0644) - task := model2.PersonDownloadDBModel{} - task.UUID = m.UUId - if err != nil { - task.Error = err.Error() - task.State = types.DOWNLOADERROR - MyService.Download().SetDownloadError(task) - } - - } else { - if file.GetHashByPath(filepath) != dataModel.Hash { - os.Remove(filepath) - err = ioutil.WriteFile(filepath, dataByte, 0644) - task := model2.PersonDownloadDBModel{} - task.UUID = m.UUId - if err != nil { - task.Error = err.Error() - task.State = types.DOWNLOADERROR - MyService.Download().SetDownloadError(task) - } - } - } - - files, err := ioutil.ReadDir(tempPath) - if err != nil { - fmt.Println(err) - continue - } - if len(files) >= dataModel.Length { - summary := MyService.Download().GetDownloadById(m.UUId) - summary.State = types.DOWNLOADFINISH - MyService.Download().EditDownloadState(summary) - fullPath := file.GetNoDuplicateFileName(path2.Join(summary.LocalPath, summary.Name)) - file.SpliceFiles(tempPath, fullPath, dataModel.Length, 0) - if file.GetHashByPath(fullPath) == summary.Hash { - file.RMDir(tempPath) - summary.State = types.DOWNLOADFINISHED - MyService.Download().EditDownloadState(summary) - } else { - os.Remove(config.FileSettingInfo.DownloadDir + "/" + summary.Name) - - summary.State = types.DOWNLOADERROR - summary.Error = "hash mismatch" - MyService.Download().SetDownloadError(summary) - } - + r := SaveFile(m, stream) + if r { break } } else if m.Type == types.PERSONSUMMARY { - - dataModel := model.FileSummaryModel{} - dataModelByte, _ := json.Marshal(m.Data) - err := json.Unmarshal(dataModelByte, &dataModel) - if err != nil { - fmt.Println(err) - } - - task := MyService.Download().GetDownloadById(m.UUId) - fullPath := path2.Join(task.LocalPath, task.Name) - task.State = types.DOWNLOADING - if len(dataModel.Message) > 0 { - task.State = types.DOWNLOADERROR - task.Error = dataModel.Message - } - if file.Exists(fullPath) && file.GetHashByPath(fullPath) == dataModel.Hash { - task.State = types.DOWNLOADFINISHED - go func(from, uuid string) { - m := model.MessageModel{} - m.Data = "" - m.From = config.ServerInfo.Token - m.To = from - m.Type = types.PERSONCANCEL - m.UUId = uuid - CancelList[uuid] = uuid - Dial(m, false) - }(task.From, task.UUID) - - } - task.UUID = m.UUId - task.Name = dataModel.Name - task.Length = dataModel.Length - task.Size = dataModel.Size - task.BlockSize = dataModel.BlockSize - task.Hash = dataModel.Hash - task.Type = 0 - task.From = m.From - MyService.Download().SaveDownload(task) - + Summary(m, "download") } else if m.Type == types.PERSONCONNECTION { if len(m.Data.(string)) > 0 { UDPAddressMap[m.From] = m.Data.(string) @@ -295,7 +235,7 @@ func ReadContent(stream quic.Stream) { go Dial(msg, false) Message <- m break - } else if m.Type == "get_ip" { + } else if m.Type == types.PERSONGETIP { notify := model2.AppNotify{} notify.CustomId = m.From if len(m.Data.(string)) == 0 { @@ -312,9 +252,32 @@ func ReadContent(stream quic.Stream) { go MyService.Notify().SendText(notify) } UDPAddressMap[m.From] = m.Data.(string) + if config.ServerInfo.Token != m.From && strings.Split(m.Data.(string), ":")[0] == strings.Split(UDPAddressMap[config.ServerInfo.Token], ":")[0] { + msg := model.MessageModel{} + msg.Type = types.PERSONINTERNALINSPECTION + msg.Data = ip_helper.GetDeviceAllIP(config.ServerInfo.UDPPort) + msg.To = m.From + msg.From = config.ServerInfo.Token + msg.UUId = m.UUId + go Dial(msg, true) + } + + Message <- m + break + } else if m.Type == types.PERSONINTERNALINSPECTION { + fmt.Println("接收到反验证") + var ips []string + dataModelByte, _ := json.Marshal(m.Data) + err := json.Unmarshal(dataModelByte, &ips) + if err != nil { + fmt.Println(err) + break + } + go MyService.Friend().InternalInspection(ips, m.From) Message <- m break } else { + Message <- m } } @@ -334,23 +297,55 @@ func SendIPToServer() { func LoopFriend() { list := MyService.Friend().GetFriendList() + msg := model.MessageModel{} + msg.Type = types.PERSONGETIP + msg.Data = "" + msg.From = config.ServerInfo.Token + msg.To = config.ServerInfo.Token + msg.UUId = uuid.NewV4().String() + Dial(msg, true) + for i := 0; i < len(list); i++ { - msg := model.MessageModel{} - msg.Type = "get_ip" + if _, ok := UDPAddressMap[list[i].Token]; !ok { + msg := model.MessageModel{} + msg.Type = types.PERSONGETIP + msg.Data = "" + msg.From = config.ServerInfo.Token + msg.To = list[i].Token + msg.UUId = uuid.NewV4().String() + Dial(msg, true) + } + + msg.Type = types.PERSONPING msg.Data = "" msg.From = config.ServerInfo.Token msg.To = list[i].Token msg.UUId = uuid.NewV4().String() - Dial(msg, true) + if v, ok := UDPAddressMap[list[i].Token]; ok { + if ip_helper.HasLocalIP(net.ParseIP(strings.Split(v, ":")[0])) { + msg.Data = ip_helper.GetDeviceAllIP(config.ServerInfo.UDPPort) + } + oldIP := UDPAddressMap[list[i].Token] + data, err := Dial(msg, false) + if err != nil || reflect.DeepEqual(data, model.MessageModel{}) || len(data.Data.(string)) == 0 { + if oldIP == UDPAddressMap[list[i].Token] { + notify := model2.AppNotify{} + notify.CustomId = data.From + notify.Type = types.NOTIFY_TYPE_PERSION_FIRNED_LEAVE + go MyService.Notify().SendText(notify) - msg.Type = types.PERSONHELLO - msg.Data = "" - msg.From = config.ServerInfo.Token - msg.To = list[i].Token - msg.UUId = uuid.NewV4().String() - if _, ok := UDPAddressMap[list[i].Token]; ok { - go Dial(msg, false) + delete(UDPAddressMap, list[i].Token) + + msg := model.MessageModel{} + msg.Type = types.PERSONGETIP + msg.Data = "" + msg.From = config.ServerInfo.Token + msg.To = list[i].Token + msg.UUId = uuid.NewV4().String() + Dial(msg, true) + } + } } go func(shareId string) { user := MyService.Casa().GetUserInfoByShareId(shareId) @@ -368,3 +363,140 @@ func LoopFriend() { } } + +//file summary +func Summary(m model.MessageModel, t string) { + dataModel := model.FileSummaryModel{} + dataModelByte, _ := json.Marshal(m.Data) + err := json.Unmarshal(dataModelByte, &dataModel) + if err != nil { + fmt.Println(err) + } + + task := MyService.Download().GetDownloadById(m.UUId) + + task.State = types.DOWNLOADING + fullPath := path2.Join(task.LocalPath, task.Name) + + if len(dataModel.Message) > 0 { + task.State = types.DOWNLOADERROR + task.Error = dataModel.Message + } + //The file already exists and the file is the same, no need to download + if t != "upload" && file.Exists(fullPath) && file.GetHashByPath(fullPath) == dataModel.Hash { + task.State = types.DOWNLOADFINISHED + go func(from, uuid string) { + m := model.MessageModel{} + m.Data = "" + m.From = config.ServerInfo.Token + m.To = from + m.Type = types.PERSONCANCEL + m.UUId = uuid + CancelList[uuid] = uuid + Dial(m, false) + }(task.From, task.UUID) + + } + task.UUID = m.UUId + task.Name = dataModel.Name + task.Length = dataModel.Length + task.Size = dataModel.Size + task.BlockSize = dataModel.BlockSize + task.Hash = dataModel.Hash + task.Type = types.PERSONFILEDOWNLOAD + task.From = m.From + if t == "upload" { + task.Type = types.PERSONFILERECEIVEUPLOAD + } + MyService.Download().SaveDownload(task) +} + +//Save file fragment +func SaveFile(m model.MessageModel, stream quic.Stream) bool { + dataModelByte, _ := json.Marshal(m.Data) + dataModel := model.TranFileModel{} + err := json.Unmarshal(dataModelByte, &dataModel) + if err != nil { + fmt.Println(err) + return false + } + + dataLengthByte := make([]byte, 8) + _, err = io.ReadFull(stream, dataLengthByte) + if err != nil { + fmt.Println(err) + return false + } + dataLength, err := strconv.Atoi(string(dataLengthByte)) + if err != nil { + fmt.Println(err) + return false + } + dataByte := make([]byte, dataLength) + _, err = io.ReadFull(stream, dataByte) + if err != nil { + fmt.Println(err) + return false + } + sum := md5.Sum(dataByte) + hash := hex.EncodeToString(sum[:]) + if dataModel.Hash != hash { + fmt.Println("hash不匹配", hash, dataModel.Hash) + return false + } + tempPath := config.AppInfo.RootPath + "/temp" + "/" + m.UUId + file.IsNotExistMkDir(tempPath) + filepath := tempPath + "/" + strconv.Itoa(dataModel.Index) + _, err = os.Stat(filepath) + + if os.IsNotExist(err) { + err = ioutil.WriteFile(filepath, dataByte, 0644) + task := model2.PersonDownloadDBModel{} + task.UUID = m.UUId + if err != nil { + task.Error = err.Error() + task.State = types.DOWNLOADERROR + MyService.Download().SetDownloadError(task) + } + + } else { + if file.GetHashByPath(filepath) != dataModel.Hash { + os.Remove(filepath) + err = ioutil.WriteFile(filepath, dataByte, 0644) + task := model2.PersonDownloadDBModel{} + task.UUID = m.UUId + if err != nil { + task.Error = err.Error() + task.State = types.DOWNLOADERROR + MyService.Download().SetDownloadError(task) + } + } + } + + files, err := ioutil.ReadDir(tempPath) + if err != nil { + fmt.Println(err) + return false + } + if len(files) >= dataModel.Length { + summary := MyService.Download().GetDownloadById(m.UUId) + summary.State = types.DOWNLOADFINISH + MyService.Download().EditDownloadState(summary) + fullPath := file.GetNoDuplicateFileName(path2.Join(summary.LocalPath, summary.Name)) + file.SpliceFiles(tempPath, fullPath, dataModel.Length, 0) + if file.GetHashByPath(fullPath) == summary.Hash { + file.RMDir(tempPath) + summary.State = types.DOWNLOADFINISHED + MyService.Download().EditDownloadState(summary) + } else { + os.Remove(config.FileSettingInfo.DownloadDir + "/" + summary.Name) + + summary.State = types.DOWNLOADERROR + summary.Error = "hash mismatch" + MyService.Download().SetDownloadError(summary) + } + + return true + } + return false +} diff --git a/service/zima_info.go b/service/zima_info.go index 0ff66c5..ceb2545 100644 --- a/service/zima_info.go +++ b/service/zima_info.go @@ -39,6 +39,7 @@ type ZiMaService interface { CreateFile(path string) (int, error) RenameFile(oldF, newF string) (int, error) GetCpuInfo() []cpu.InfoStat + GetDeviceTree() string } var NetArray [][]model.IOCountersStat @@ -86,6 +87,16 @@ func (c *zima) GetDiskInfo() *disk.UsageStat { //获取硬盘目录 func (c *zima) GetDirPath(path string) []model.Path { + if path == "/DATA" { + sysType := runtime.GOOS + if sysType == "windows" { + path = "C:\\CasaOS\\DATA" + } + if sysType == "darwin" { + path = "./CasaOS/DATA" + } + + } ls, _ := ioutil.ReadDir(path) dirs := []model.Path{} @@ -139,6 +150,10 @@ func (c *zima) GetNet(physics bool) []string { return command2.ExecResultStrArray("source " + config.AppInfo.ProjectPath + "/shell/helper.sh ;GetNetCard " + t) } +func (c *zima) GetDeviceTree() string { + return command2.ExecResultStr("source " + config.AppInfo.ProjectPath + "/shell/helper.sh ;GetDeviceTree") +} + //shell脚本参数 { 网卡名称 } func (c *zima) GetNetState(name string) string { return command2.ExecResultStr("source " + config.AppInfo.ProjectPath + "/shell/helper.sh ;CatNetCardState " + name) diff --git a/shell/helper.sh b/shell/helper.sh index dad3742..930dd97 100644 --- a/shell/helper.sh +++ b/shell/helper.sh @@ -32,7 +32,7 @@ GetNetCard() { GetTimeZone(){ - timedatectl | grep "Time zone" | awk '{print $3}' + timedatectl | grep "Time zone" | awk '{printf $3}' } #查看网卡状态 @@ -341,4 +341,8 @@ USB_Remove_File() { ((EUID)) && sudo_cmd="sudo" $sudo_cmd rm -fr /etc/udev/rules.d/11-usb-mount.rules $sudo_cmd rm -fr /etc/systemd/system/usb-mount@.service -} \ No newline at end of file +} + +GetDeviceTree(){ + cat /proc/device-tree/model +} diff --git a/types/block.go b/types/block.go deleted file mode 100644 index ab1254f..0000000 --- a/types/block.go +++ /dev/null @@ -1 +0,0 @@ -package types diff --git a/types/friend.go b/types/friend.go new file mode 100644 index 0000000..142fafb --- /dev/null +++ b/types/friend.go @@ -0,0 +1,7 @@ +package types + +const ( + FRIENDSTATEDEFAULT = iota + FRIENDSTATEWAIT + FRIENDSTATEREQUEST +) diff --git a/types/notify.go b/types/notify.go index 1b7f1df..45eb1d5 100644 --- a/types/notify.go +++ b/types/notify.go @@ -12,6 +12,7 @@ const ( NOTIFY_TYPE_INSTALL_LOG NOTIFY_TYPE_PERSION_FIRNED_LEAVE NOTIFY_TYPE_PERSION_FIRNED_LIVE + NOTIFY_TYPE_HEALTH_CHECK ) const ( diff --git a/types/person.go b/types/person.go index 7e6e1a8..732a4fd 100644 --- a/types/person.go +++ b/types/person.go @@ -1,9 +1,24 @@ package types const PERSONADDFRIEND = "add_user" +const PERSONAGREEFRIEND = "agree_user" const PERSONDOWNLOAD = "file_data" const PERSONSUMMARY = "summary" +const PERSONGETIP = "get_ip" const PERSONCONNECTION = "connection" const PERSONDIRECTORY = "directory" const PERSONHELLO = "hello" +const PERSONSHAREID = "share_id" +const PERSONUPLOAD = "upload" +const PERSONUPLOADDATA = "upload_data" +const PERSONINTERNALINSPECTION = "internal_inspection" +const PERSONPING = "ping" +const PERSONIMAGETHUMBNAIL = "image_thumbnail" + const PERSONCANCEL = "cancel" // Cancel Download + +const ( + PERSONFILEDOWNLOAD = iota //default state + PERSONFILEUPLOAD + PERSONFILERECEIVEUPLOAD //receive upload file +) diff --git a/types/system.go b/types/system.go index 54bf050..2ca0f19 100644 --- a/types/system.go +++ b/types/system.go @@ -1,5 +1,15 @@ +/* + * @Author: LinkLeong link@icewhale.com + * @Date: 2022-02-17 18:53:22 + * @LastEditors: LinkLeong + * @LastEditTime: 2022-05-13 18:08:25 + * @FilePath: /CasaOS/types/system.go + * @Description: + * @Website: https://www.casaos.io + * Copyright (c) 2022 by icewhale, All Rights Reserved. + */ package types -const CURRENTVERSION = "0.3.0" +const CURRENTVERSION = "0.3.1" -const BODY = "
  • Add CasaConnect function, now you can share private files peer-to-peer with your friends.
  • Add a widget for network traffic monitoring
  • Updated the initial directory of Files to the Root directory
  • Fix the application ipv6 opening problem
  • " +const BODY = "" diff --git a/web/browserconfig.xml b/web/browserconfig.xml index a02d62e..a221792 100644 --- a/web/browserconfig.xml +++ b/web/browserconfig.xml @@ -1,9 +1,9 @@ - - - - - - #da532c - - - + + + + + + #da532c + + + diff --git a/web/favicon.svg b/web/favicon.svg index 8d176f0..9760ab7 100644 --- a/web/favicon.svg +++ b/web/favicon.svg @@ -1,14 +1,14 @@ - - - - - - - - + + + + + + + + diff --git a/web/fonts/materialdesignicons-webfont.0fb040cb.woff2 b/web/fonts/materialdesignicons-webfont.0fb040cb.woff2 new file mode 100644 index 0000000..207bcdf Binary files /dev/null and b/web/fonts/materialdesignicons-webfont.0fb040cb.woff2 differ diff --git a/web/fonts/materialdesignicons-webfont.1514bb9f.ttf b/web/fonts/materialdesignicons-webfont.1514bb9f.ttf new file mode 100644 index 0000000..b813f15 Binary files /dev/null and b/web/fonts/materialdesignicons-webfont.1514bb9f.ttf differ diff --git a/web/fonts/materialdesignicons-webfont.5a409f9f.woff b/web/fonts/materialdesignicons-webfont.5a409f9f.woff new file mode 100644 index 0000000..7d3f0db Binary files /dev/null and b/web/fonts/materialdesignicons-webfont.5a409f9f.woff differ diff --git a/web/fonts/materialdesignicons-webfont.ff90567b.eot b/web/fonts/materialdesignicons-webfont.ff90567b.eot new file mode 100644 index 0000000..f1ee489 Binary files /dev/null and b/web/fonts/materialdesignicons-webfont.ff90567b.eot differ diff --git a/web/img/folder-publicshare.0219e0d4.svg b/web/img/CasaConnect.svg similarity index 100% rename from web/img/folder-publicshare.0219e0d4.svg rename to web/img/CasaConnect.svg diff --git a/web/img/Files.svg b/web/img/Files.svg new file mode 100644 index 0000000..e5924aa --- /dev/null +++ b/web/img/Files.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/web/img/add_button.76237e85.svg b/web/img/add_button.07d47199.svg similarity index 98% rename from web/img/add_button.76237e85.svg rename to web/img/add_button.07d47199.svg index be6c60a..5618a52 100644 --- a/web/img/add_button.76237e85.svg +++ b/web/img/add_button.07d47199.svg @@ -1,11 +1,11 @@ - - - - - - - - - - - + + + + + + + + + + + diff --git a/web/img/android.149f5693.svg b/web/img/android.48a6cf16.svg similarity index 98% rename from web/img/android.149f5693.svg rename to web/img/android.48a6cf16.svg index 1c71253..2ad3eb1 100644 --- a/web/img/android.149f5693.svg +++ b/web/img/android.48a6cf16.svg @@ -1,25 +1,25 @@ - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + diff --git a/web/img/application-x-apple.500bd1f9.svg b/web/img/application-x-apple.5eb295b2.svg similarity index 98% rename from web/img/application-x-apple.500bd1f9.svg rename to web/img/application-x-apple.5eb295b2.svg index 58022ef..d0b946b 100644 --- a/web/img/application-x-apple.500bd1f9.svg +++ b/web/img/application-x-apple.5eb295b2.svg @@ -1,28 +1,28 @@ - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + diff --git a/web/img/bg3_blur.f7b30d87.jpg b/web/img/bg3_blur.f7b30d87.jpg deleted file mode 100644 index 2250d0c..0000000 Binary files a/web/img/bg3_blur.f7b30d87.jpg and /dev/null differ diff --git a/web/img/casa-white.2579f069.svg b/web/img/casa-white.f250568a.svg similarity index 98% rename from web/img/casa-white.2579f069.svg rename to web/img/casa-white.f250568a.svg index 33a2f35..7cbc964 100644 --- a/web/img/casa-white.2579f069.svg +++ b/web/img/casa-white.f250568a.svg @@ -1,11 +1,11 @@ - - - - - - - - + + + + + + + + diff --git a/web/img/default-avatar.ab3b9bda.svg b/web/img/default-avatar.d92cd43a.svg similarity index 98% rename from web/img/default-avatar.ab3b9bda.svg rename to web/img/default-avatar.d92cd43a.svg index b217e0d..033868e 100644 --- a/web/img/default-avatar.ab3b9bda.svg +++ b/web/img/default-avatar.d92cd43a.svg @@ -1,39 +1,39 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/web/img/folder-hdd.adcf549a.svg b/web/img/folder-hdd.42e0a4ee.svg similarity index 98% rename from web/img/folder-hdd.adcf549a.svg rename to web/img/folder-hdd.42e0a4ee.svg index c9fce2a..c90fc32 100644 --- a/web/img/folder-hdd.adcf549a.svg +++ b/web/img/folder-hdd.42e0a4ee.svg @@ -1,121 +1,121 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/web/img/folder-usb.84d5b55d.svg b/web/img/folder-usb.1011b135.svg similarity index 98% rename from web/img/folder-usb.84d5b55d.svg rename to web/img/folder-usb.1011b135.svg index 253d168..4ef3d15 100644 --- a/web/img/folder-usb.84d5b55d.svg +++ b/web/img/folder-usb.1011b135.svg @@ -1,113 +1,113 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/web/img/gradient.6c5a7f30.png b/web/img/gradient.6c5a7f30.png new file mode 100644 index 0000000..8e5bea9 Binary files /dev/null and b/web/img/gradient.6c5a7f30.png differ diff --git a/web/img/icon/safari-pinned-tab.svg b/web/img/icon/safari-pinned-tab.svg index e750780..af12e15 100644 --- a/web/img/icon/safari-pinned-tab.svg +++ b/web/img/icon/safari-pinned-tab.svg @@ -1,25 +1,25 @@ - - - - -Created by potrace 1.14, written by Peter Selinger 2001-2017 - - - - - + + + + +Created by potrace 1.14, written by Peter Selinger 2001-2017 + + + + + diff --git a/web/img/macos.da8469ce.svg b/web/img/macos.6403eda3.svg similarity index 97% rename from web/img/macos.da8469ce.svg rename to web/img/macos.6403eda3.svg index 0d2f3ae..2645549 100644 --- a/web/img/macos.da8469ce.svg +++ b/web/img/macos.6403eda3.svg @@ -1,159 +1,159 @@ - -image/svg+xml - - - - - - - - - - - - - - - - - - - - - + +image/svg+xml + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/img/syncthing-logo.e6163faa.svg b/web/img/syncthing-logo.27d25cad.svg similarity index 98% rename from web/img/syncthing-logo.e6163faa.svg rename to web/img/syncthing-logo.27d25cad.svg index de8850f..861aa48 100644 --- a/web/img/syncthing-logo.e6163faa.svg +++ b/web/img/syncthing-logo.27d25cad.svg @@ -1,54 +1,54 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/web/index.html b/web/index.html index 5e67b80..126bd63 100644 --- a/web/index.html +++ b/web/index.html @@ -1,34 +1,34 @@ - - - - - - - - - - - - - - - - - CasaOS - - - - - -
    - - - - + + + + + + + + + + + + + + + + + CasaOS + + + + + +
    + + + + diff --git a/web/js/0.js b/web/js/0.js index e076006..53261cc 100644 --- a/web/js/0.js +++ b/web/js/0.js @@ -168,7 +168,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Users_liangjianli_go_CasaOSNew_CasaOS_UI_node_modules_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/esm/objectSpread2 */ \"./node_modules/@babel/runtime/helpers/esm/objectSpread2.js\");\n/* harmony import */ var vee_validate_dist_rules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vee-validate/dist/rules */ \"./node_modules/vee-validate/dist/rules.js\");\n/* harmony import */ var vee_validate__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vee-validate */ \"./node_modules/vee-validate/dist/vee-validate.esm.js\");\n/* harmony import */ var is_valid_hostname__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! is-valid-hostname */ \"./node_modules/is-valid-hostname/index.js\");\n/* harmony import */ var is_valid_hostname__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(is_valid_hostname__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var uuid_validate__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! uuid-validate */ \"./node_modules/uuid-validate/index.js\");\n/* harmony import */ var uuid_validate__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(uuid_validate__WEBPACK_IMPORTED_MODULE_4__);\n\n\n\n\n\nObject(vee_validate__WEBPACK_IMPORTED_MODULE_2__[\"extend\"])(\"required\", Object(_Users_liangjianli_go_CasaOSNew_CasaOS_UI_node_modules_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Object(_Users_liangjianli_go_CasaOSNew_CasaOS_UI_node_modules_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, vee_validate_dist_rules__WEBPACK_IMPORTED_MODULE_1__[\"required\"]), {}, {\n message: \"This field is required\"\n}));\nObject(vee_validate__WEBPACK_IMPORTED_MODULE_2__[\"extend\"])(\"email\", Object(_Users_liangjianli_go_CasaOSNew_CasaOS_UI_node_modules_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Object(_Users_liangjianli_go_CasaOSNew_CasaOS_UI_node_modules_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, vee_validate_dist_rules__WEBPACK_IMPORTED_MODULE_1__[\"email\"]), {}, {\n message: \"This field must be a valid email\"\n}));\nObject(vee_validate__WEBPACK_IMPORTED_MODULE_2__[\"extend\"])(\"confirmed\", Object(_Users_liangjianli_go_CasaOSNew_CasaOS_UI_node_modules_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Object(_Users_liangjianli_go_CasaOSNew_CasaOS_UI_node_modules_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, vee_validate_dist_rules__WEBPACK_IMPORTED_MODULE_1__[\"confirmed\"]), {}, {\n message: \"This field confirmation does not match\"\n}));\nObject(vee_validate__WEBPACK_IMPORTED_MODULE_2__[\"extend\"])(\"length\", Object(_Users_liangjianli_go_CasaOSNew_CasaOS_UI_node_modules_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Object(_Users_liangjianli_go_CasaOSNew_CasaOS_UI_node_modules_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, vee_validate_dist_rules__WEBPACK_IMPORTED_MODULE_1__[\"length\"]), {}, {\n message: \"This field must have 2 options\"\n}));\nObject(vee_validate__WEBPACK_IMPORTED_MODULE_2__[\"extend\"])(\"min\", Object(_Users_liangjianli_go_CasaOSNew_CasaOS_UI_node_modules_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Object(_Users_liangjianli_go_CasaOSNew_CasaOS_UI_node_modules_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, vee_validate_dist_rules__WEBPACK_IMPORTED_MODULE_1__[\"min\"]), {}, {\n message: \"This field must have more than {length} characters\"\n}));\nObject(vee_validate__WEBPACK_IMPORTED_MODULE_2__[\"extend\"])('rfc1123', {\n validate: function validate(value) {\n return is_valid_hostname__WEBPACK_IMPORTED_MODULE_3___default()(value);\n },\n message: 'You entered an invalid RFC1123 hostname'\n});\nObject(vee_validate__WEBPACK_IMPORTED_MODULE_2__[\"extend\"])('uuid', {\n validate: function validate(value) {\n return uuid_validate__WEBPACK_IMPORTED_MODULE_4___default()(value);\n },\n message: 'You entered an invalid share ID'\n});\n\n//# sourceURL=webpack:///./src/plugins/vee-validate.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var E_Company_CasaOS_UI_node_modules_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/esm/objectSpread2 */ \"./node_modules/@babel/runtime/helpers/esm/objectSpread2.js\");\n/* harmony import */ var vee_validate_dist_rules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vee-validate/dist/rules */ \"./node_modules/vee-validate/dist/rules.js\");\n/* harmony import */ var vee_validate__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vee-validate */ \"./node_modules/vee-validate/dist/vee-validate.esm.js\");\n/* harmony import */ var is_valid_hostname__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! is-valid-hostname */ \"./node_modules/is-valid-hostname/index.js\");\n/* harmony import */ var is_valid_hostname__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(is_valid_hostname__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var uuid_validate__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! uuid-validate */ \"./node_modules/uuid-validate/index.js\");\n/* harmony import */ var uuid_validate__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(uuid_validate__WEBPACK_IMPORTED_MODULE_4__);\n\n\n\n\n\nObject(vee_validate__WEBPACK_IMPORTED_MODULE_2__[\"extend\"])(\"required\", Object(E_Company_CasaOS_UI_node_modules_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Object(E_Company_CasaOS_UI_node_modules_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, vee_validate_dist_rules__WEBPACK_IMPORTED_MODULE_1__[\"required\"]), {}, {\n message: \"This field is required\"\n}));\nObject(vee_validate__WEBPACK_IMPORTED_MODULE_2__[\"extend\"])(\"email\", Object(E_Company_CasaOS_UI_node_modules_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Object(E_Company_CasaOS_UI_node_modules_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, vee_validate_dist_rules__WEBPACK_IMPORTED_MODULE_1__[\"email\"]), {}, {\n message: \"This field must be a valid email\"\n}));\nObject(vee_validate__WEBPACK_IMPORTED_MODULE_2__[\"extend\"])(\"confirmed\", Object(E_Company_CasaOS_UI_node_modules_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Object(E_Company_CasaOS_UI_node_modules_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, vee_validate_dist_rules__WEBPACK_IMPORTED_MODULE_1__[\"confirmed\"]), {}, {\n message: \"This field confirmation does not match\"\n}));\nObject(vee_validate__WEBPACK_IMPORTED_MODULE_2__[\"extend\"])(\"length\", Object(E_Company_CasaOS_UI_node_modules_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Object(E_Company_CasaOS_UI_node_modules_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, vee_validate_dist_rules__WEBPACK_IMPORTED_MODULE_1__[\"length\"]), {}, {\n message: \"This field must have 2 options\"\n}));\nObject(vee_validate__WEBPACK_IMPORTED_MODULE_2__[\"extend\"])(\"min\", Object(E_Company_CasaOS_UI_node_modules_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Object(E_Company_CasaOS_UI_node_modules_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, vee_validate_dist_rules__WEBPACK_IMPORTED_MODULE_1__[\"min\"]), {}, {\n message: \"This field must have more than {length} characters\"\n}));\nObject(vee_validate__WEBPACK_IMPORTED_MODULE_2__[\"extend\"])('rfc1123', {\n validate: function validate(value) {\n return is_valid_hostname__WEBPACK_IMPORTED_MODULE_3___default()(value);\n },\n message: 'You entered an invalid RFC1123 hostname'\n});\nObject(vee_validate__WEBPACK_IMPORTED_MODULE_2__[\"extend\"])('uuid', {\n validate: function validate(value) {\n return uuid_validate__WEBPACK_IMPORTED_MODULE_4___default()(value);\n },\n message: 'You entered an invalid share ID'\n});\n\n//# sourceURL=webpack:///./src/plugins/vee-validate.js?"); /***/ }) diff --git a/web/js/2.js b/web/js/2.js index f2bc6ec..75d3fdd 100644 --- a/web/js/2.js +++ b/web/js/2.js @@ -48,39 +48,39 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mix /***/ }), -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/fileList/CreatePanel.vue?vue&type=template&id=4de55683&": +/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"794eeab4-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/fileList/CreatePanel.vue?vue&type=template&id=4de55683&": /*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/fileList/CreatePanel.vue?vue&type=template&id=4de55683& ***! + !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"794eeab4-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/fileList/CreatePanel.vue?vue&type=template&id=4de55683& ***! \*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /*! exports provided: render, staticRenderFns */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"modal-card\" }, [\n _c(\"header\", { staticClass: \"modal-card-head\" }, [\n _c(\"div\", { staticClass: \"flex1\" }, [\n _c(\"h3\", { staticClass: \"title is-4 has-text-weight-normal\" }, [\n _vm._v(_vm._s(_vm.title))\n ])\n ])\n ]),\n _c(\n \"section\",\n { staticClass: \"modal-card-body\" },\n [\n _c(\n \"b-field\",\n {\n attrs: { label: \"Name\", type: _vm.errorType, message: _vm.message }\n },\n [\n _c(\"b-input\", {\n attrs: { maxlength: \"255\", expanded: \"\" },\n model: {\n value: _vm.name,\n callback: function($$v) {\n _vm.name = $$v\n },\n expression: \"name\"\n }\n })\n ],\n 1\n )\n ],\n 1\n ),\n _c(\n \"footer\",\n { staticClass: \"modal-card-foot is-flex is-align-items-center\" },\n [\n _c(\"div\", { staticClass: \"flex1\" }),\n _c(\n \"div\",\n [\n _c(\"b-button\", {\n attrs: { label: \"Cancel\", type: \"is-grey\", rounded: \"\" },\n on: {\n click: function($event) {\n return _vm.$emit(\"close\")\n }\n }\n }),\n _c(\"b-button\", {\n attrs: { label: \"Submit\", type: \"is-dark\", rounded: \"\" },\n on: {\n click: function($event) {\n return _vm.create()\n }\n }\n })\n ],\n 1\n )\n ]\n )\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/fileList/CreatePanel.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"modal-card\" }, [\n _c(\"header\", { staticClass: \"modal-card-head\" }, [\n _c(\"div\", { staticClass: \"flex1\" }, [\n _c(\"h3\", { staticClass: \"title is-4 has-text-weight-normal\" }, [\n _vm._v(_vm._s(_vm.title))\n ])\n ])\n ]),\n _c(\n \"section\",\n { staticClass: \"modal-card-body\" },\n [\n _c(\n \"b-field\",\n {\n attrs: { label: \"Name\", type: _vm.errorType, message: _vm.message }\n },\n [\n _c(\"b-input\", {\n attrs: { maxlength: \"255\", expanded: \"\" },\n model: {\n value: _vm.name,\n callback: function($$v) {\n _vm.name = $$v\n },\n expression: \"name\"\n }\n })\n ],\n 1\n )\n ],\n 1\n ),\n _c(\n \"footer\",\n { staticClass: \"modal-card-foot is-flex is-align-items-center\" },\n [\n _c(\"div\", { staticClass: \"flex1\" }),\n _c(\n \"div\",\n [\n _c(\"b-button\", {\n attrs: { label: \"Cancel\", type: \"is-grey\", rounded: \"\" },\n on: {\n click: function($event) {\n return _vm.$emit(\"close\")\n }\n }\n }),\n _c(\"b-button\", {\n attrs: { label: \"Submit\", type: \"is-dark\", rounded: \"\" },\n on: {\n click: function($event) {\n return _vm.create()\n }\n }\n })\n ],\n 1\n )\n ]\n )\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/fileList/CreatePanel.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22794eeab4-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); /***/ }), -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/fileList/FilePanel.vue?vue&type=template&id=609296c3&": +/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"794eeab4-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/fileList/FilePanel.vue?vue&type=template&id=609296c3&": /*!***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/fileList/FilePanel.vue?vue&type=template&id=609296c3& ***! + !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"794eeab4-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/fileList/FilePanel.vue?vue&type=template&id=609296c3& ***! \***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /*! exports provided: render, staticRenderFns */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"modal-card\" }, [\n _vm._m(0),\n _c(\"section\", { staticClass: \"modal-card-body\" }, [\n _c(\n \"nav\",\n { staticClass: \"breadcrumb \", attrs: { \"aria-label\": \"breadcrumbs\" } },\n [\n _c(\"ul\", [\n _c(\"li\", [\n _vm.showItem\n ? _c(\n \"a\",\n {\n on: {\n click: function($event) {\n return _vm.getParentList()\n }\n }\n },\n [_c(\"b-icon\", { attrs: { icon: \"arrow-up\" } })],\n 1\n )\n : _vm._e()\n ]),\n _vm.showItem\n ? _c(\"li\", [\n _c(\n \"a\",\n {\n on: {\n click: function($event) {\n return _vm.getFileList(_vm.rootPath)\n }\n }\n },\n [_vm._v(_vm._s(_vm.rootName))]\n )\n ])\n : _vm._e(),\n _vm.showItem & _vm.showDots\n ? _c(\"li\", [\n _c(\n \"a\",\n {\n on: {\n click: function($event) {\n return _vm.getParentList()\n }\n }\n },\n [_vm._v(\"...\")]\n )\n ])\n : _vm._e(),\n _c(\"li\", { staticClass: \"is-active \" }, [\n _c(\"div\", [_vm._v(_vm._s(_vm.lastFolder))])\n ])\n ])\n ]\n ),\n _c(\n \"ul\",\n { staticClass: \"filelist scrollbars-light\" },\n _vm._l(_vm.fileList, function(item) {\n return _c(\"list-item\", {\n key: item.path,\n attrs: {\n item: item,\n id: item.path,\n name: item.name,\n IsDir: item.is_dir,\n path: item.path,\n state: _vm.checkActive(item.path)\n },\n on: { active: _vm.activeFile, expand: _vm.getFileList }\n })\n }),\n 1\n )\n ]),\n _c(\n \"footer\",\n { staticClass: \"modal-card-foot is-flex is-align-items-center\" },\n [\n _c(\"div\", { staticClass: \"flex1\" }, [\n _vm.rootPath == \"/DATA\"\n ? _c(\n \"div\",\n [\n _c(\n \"b-tooltip\",\n {\n attrs: {\n label: \"Create Folder\",\n type: \"is-dark\",\n position: \"is-right\"\n }\n },\n [\n _c(\n \"a\",\n {\n staticClass: \"add-button\",\n on: {\n click: function($event) {\n return _vm.showCreatePanel(true)\n }\n }\n },\n [_c(\"b-icon\", { attrs: { icon: \"folder-plus\" } })],\n 1\n )\n ]\n ),\n _vm.rootPath != _vm.path && _vm.showFile\n ? [\n _c(\n \"b-tooltip\",\n {\n attrs: {\n label: \"Create File\",\n type: \"is-dark\",\n position: \"is-right\"\n }\n },\n [\n _c(\n \"a\",\n {\n staticClass: \"add-button\",\n on: {\n click: function($event) {\n return _vm.showCreatePanel(false)\n }\n }\n },\n [\n _c(\"b-icon\", {\n attrs: { icon: \"file-plus-outline\" }\n })\n ],\n 1\n )\n ]\n )\n ]\n : _vm._e()\n ],\n 2\n )\n : _vm._e()\n ]),\n _c(\n \"div\",\n [\n _c(\"b-button\", {\n attrs: { label: \"Cancel\", type: \"is-grey\", rounded: \"\" },\n on: {\n click: function($event) {\n return _vm.$emit(\"close\")\n }\n }\n }),\n _c(\"b-button\", {\n attrs: { label: \"Select\", type: \"is-dark\", rounded: \"\" },\n on: {\n click: function($event) {\n return _vm.selectFile()\n }\n }\n })\n ],\n 1\n )\n ]\n )\n ])\n}\nvar staticRenderFns = [\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"header\", { staticClass: \"modal-card-head\" }, [\n _c(\"div\", { staticClass: \"flex1\" }, [\n _c(\"h3\", { staticClass: \"title is-4 has-text-weight-normal\" }, [\n _vm._v(\"Select\")\n ])\n ])\n ])\n }\n]\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/fileList/FilePanel.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"modal-card\" }, [\n _vm._m(0),\n _c(\"section\", { staticClass: \"modal-card-body\" }, [\n _c(\n \"nav\",\n { staticClass: \"breadcrumb \", attrs: { \"aria-label\": \"breadcrumbs\" } },\n [\n _c(\"ul\", [\n _c(\"li\", [\n _vm.showItem\n ? _c(\n \"a\",\n {\n on: {\n click: function($event) {\n return _vm.getParentList()\n }\n }\n },\n [_c(\"b-icon\", { attrs: { icon: \"arrow-up\" } })],\n 1\n )\n : _vm._e()\n ]),\n _vm.showItem\n ? _c(\"li\", [\n _c(\n \"a\",\n {\n on: {\n click: function($event) {\n return _vm.getFileList(_vm.rootPath)\n }\n }\n },\n [_vm._v(_vm._s(_vm.rootName))]\n )\n ])\n : _vm._e(),\n _vm.showItem & _vm.showDots\n ? _c(\"li\", [\n _c(\n \"a\",\n {\n on: {\n click: function($event) {\n return _vm.getParentList()\n }\n }\n },\n [_vm._v(\"...\")]\n )\n ])\n : _vm._e(),\n _c(\"li\", { staticClass: \"is-active \" }, [\n _c(\"div\", [_vm._v(_vm._s(_vm.lastFolder))])\n ])\n ])\n ]\n ),\n _c(\n \"ul\",\n { staticClass: \"filelist scrollbars-light\" },\n _vm._l(_vm.fileList, function(item) {\n return _c(\"list-item\", {\n key: item.path,\n attrs: {\n item: item,\n id: item.path,\n name: item.name,\n IsDir: item.is_dir,\n path: item.path,\n state: _vm.checkActive(item.path)\n },\n on: { active: _vm.activeFile, expand: _vm.getFileList }\n })\n }),\n 1\n )\n ]),\n _c(\n \"footer\",\n { staticClass: \"modal-card-foot is-flex is-align-items-center\" },\n [\n _c(\"div\", { staticClass: \"flex1\" }, [\n _vm.rootPath == \"/DATA\"\n ? _c(\n \"div\",\n [\n _c(\n \"b-tooltip\",\n {\n attrs: {\n label: \"Create Folder\",\n type: \"is-dark\",\n position: \"is-right\"\n }\n },\n [\n _c(\n \"a\",\n {\n staticClass: \"add-button\",\n on: {\n click: function($event) {\n return _vm.showCreatePanel(true)\n }\n }\n },\n [_c(\"b-icon\", { attrs: { icon: \"folder-plus\" } })],\n 1\n )\n ]\n ),\n _vm.rootPath != _vm.path && _vm.showFile\n ? [\n _c(\n \"b-tooltip\",\n {\n attrs: {\n label: \"Create File\",\n type: \"is-dark\",\n position: \"is-right\"\n }\n },\n [\n _c(\n \"a\",\n {\n staticClass: \"add-button\",\n on: {\n click: function($event) {\n return _vm.showCreatePanel(false)\n }\n }\n },\n [\n _c(\"b-icon\", {\n attrs: { icon: \"file-plus-outline\" }\n })\n ],\n 1\n )\n ]\n )\n ]\n : _vm._e()\n ],\n 2\n )\n : _vm._e()\n ]),\n _c(\n \"div\",\n [\n _c(\"b-button\", {\n attrs: { label: \"Cancel\", type: \"is-grey\", rounded: \"\" },\n on: {\n click: function($event) {\n return _vm.$emit(\"close\")\n }\n }\n }),\n _c(\"b-button\", {\n attrs: { label: \"Select\", type: \"is-dark\", rounded: \"\" },\n on: {\n click: function($event) {\n return _vm.selectFile()\n }\n }\n })\n ],\n 1\n )\n ]\n )\n ])\n}\nvar staticRenderFns = [\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"header\", { staticClass: \"modal-card-head\" }, [\n _c(\"div\", { staticClass: \"flex1\" }, [\n _c(\"h3\", { staticClass: \"title is-4 has-text-weight-normal\" }, [\n _vm._v(\"Select\")\n ])\n ])\n ])\n }\n]\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/fileList/FilePanel.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22794eeab4-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); /***/ }), -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/fileList/ListItem.vue?vue&type=template&id=2e6e6f74&": +/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"794eeab4-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/fileList/ListItem.vue?vue&type=template&id=2e6e6f74&": /*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/fileList/ListItem.vue?vue&type=template&id=2e6e6f74& ***! + !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"794eeab4-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/fileList/ListItem.vue?vue&type=template&id=2e6e6f74& ***! \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /*! exports provided: render, staticRenderFns */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"li\",\n {\n staticClass: \"ficon is-flex is-align-items-center\",\n class: [{ active: _vm.state }],\n on: { click: _vm.activeSelf, dblclick: _vm.expandDir }\n },\n [\n _c(\"div\", { staticClass: \"cover\" }, [\n _c(\"div\", { class: _vm._f(\"coverType\")(_vm.item) }, [\n _c(\"img\", {\n class: _vm._f(\"iconType\")(_vm.item),\n attrs: { alt: \"folder\", src: _vm.getIconFile(_vm.item) }\n })\n ])\n ]),\n _c(\"div\", { staticClass: \"one-line\" }, [\n _vm._v(\" \" + _vm._s(_vm.name) + \" \")\n ])\n ]\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/fileList/ListItem.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"li\",\n {\n staticClass: \"ficon is-flex is-align-items-center\",\n class: [{ active: _vm.state }],\n on: { click: _vm.activeSelf, dblclick: _vm.expandDir }\n },\n [\n _c(\"div\", { staticClass: \"cover\" }, [\n _c(\"div\", { class: _vm._f(\"coverType\")(_vm.item) }, [\n _c(\"img\", {\n class: _vm._f(\"iconType\")(_vm.item),\n attrs: { alt: \"folder\", src: _vm.getIconFile(_vm.item) }\n })\n ])\n ]),\n _c(\"div\", { staticClass: \"one-line\" }, [\n _vm._v(\" \" + _vm._s(_vm.name) + \" \")\n ])\n ]\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/fileList/ListItem.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22794eeab4-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); /***/ }), @@ -1144,7 +1144,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_526b7f72_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CreatePanel_vue_vue_type_template_id_4de55683___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./CreatePanel.vue?vue&type=template&id=4de55683& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"526b7f72-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/fileList/CreatePanel.vue?vue&type=template&id=4de55683&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_526b7f72_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CreatePanel_vue_vue_type_template_id_4de55683___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_526b7f72_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CreatePanel_vue_vue_type_template_id_4de55683___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n//# sourceURL=webpack:///./src/components/fileList/CreatePanel.vue?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_794eeab4_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CreatePanel_vue_vue_type_template_id_4de55683___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"794eeab4-vue-loader-template\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./CreatePanel.vue?vue&type=template&id=4de55683& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"794eeab4-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/fileList/CreatePanel.vue?vue&type=template&id=4de55683&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_794eeab4_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CreatePanel_vue_vue_type_template_id_4de55683___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_794eeab4_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CreatePanel_vue_vue_type_template_id_4de55683___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n//# sourceURL=webpack:///./src/components/fileList/CreatePanel.vue?"); /***/ }), @@ -1180,7 +1180,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_526b7f72_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FilePanel_vue_vue_type_template_id_609296c3___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./FilePanel.vue?vue&type=template&id=609296c3& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"526b7f72-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/fileList/FilePanel.vue?vue&type=template&id=609296c3&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_526b7f72_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FilePanel_vue_vue_type_template_id_609296c3___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_526b7f72_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FilePanel_vue_vue_type_template_id_609296c3___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n//# sourceURL=webpack:///./src/components/fileList/FilePanel.vue?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_794eeab4_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FilePanel_vue_vue_type_template_id_609296c3___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"794eeab4-vue-loader-template\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./FilePanel.vue?vue&type=template&id=609296c3& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"794eeab4-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/fileList/FilePanel.vue?vue&type=template&id=609296c3&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_794eeab4_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FilePanel_vue_vue_type_template_id_609296c3___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_794eeab4_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FilePanel_vue_vue_type_template_id_609296c3___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n//# sourceURL=webpack:///./src/components/fileList/FilePanel.vue?"); /***/ }), @@ -1216,7 +1216,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_526b7f72_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ListItem_vue_vue_type_template_id_2e6e6f74___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./ListItem.vue?vue&type=template&id=2e6e6f74& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"526b7f72-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/fileList/ListItem.vue?vue&type=template&id=2e6e6f74&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_526b7f72_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ListItem_vue_vue_type_template_id_2e6e6f74___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_526b7f72_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ListItem_vue_vue_type_template_id_2e6e6f74___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n//# sourceURL=webpack:///./src/components/fileList/ListItem.vue?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_794eeab4_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ListItem_vue_vue_type_template_id_2e6e6f74___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"794eeab4-vue-loader-template\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./ListItem.vue?vue&type=template&id=2e6e6f74& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"794eeab4-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/fileList/ListItem.vue?vue&type=template&id=2e6e6f74&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_794eeab4_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ListItem_vue_vue_type_template_id_2e6e6f74___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_794eeab4_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ListItem_vue_vue_type_template_id_2e6e6f74___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n//# sourceURL=webpack:///./src/components/fileList/ListItem.vue?"); /***/ }) diff --git a/web/js/3.js b/web/js/3.js index 61fec53..6a67662 100644 --- a/web/js/3.js +++ b/web/js/3.js @@ -1,47 +1,1029 @@ (window["webpackJsonp"] = window["webpackJsonp"] || []).push([[3],{ -/***/ "./node_modules/lottie-web-vue/dist/lottie-web-vue.esm.js": -/*!****************************************************************!*\ - !*** ./node_modules/lottie-web-vue/dist/lottie-web-vue.esm.js ***! - \****************************************************************/ -/*! exports provided: default, install */ +/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/AcquaintanceShare/components/ActionButton.vue?vue&type=script&lang=js&": +/*!**************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/AcquaintanceShare/components/ActionButton.vue?vue&type=script&lang=js& ***! + \**************************************************************************************************************************************************************************************************************************************************************************************/ +/*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function(global) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"install\", function() { return install; });\n/* harmony import */ var lottie_web__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lottie-web */ \"./node_modules/lottie-web/build/player/lottie.js\");\n/* harmony import */ var lottie_web__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lottie_web__WEBPACK_IMPORTED_MODULE_0__);\n\n\n//\n\nvar script = {\n props: {\n animationData: { type: [Object, String], required: true },\n loop: { type: [Boolean, Number], default: false },\n autoPlay: { type: Boolean, default: true },\n renderer: { type: String, default: 'svg' },\n speed: { type: Number, default: 1 },\n }, \n data: function data() {\n return {\n anim: null\n }\n },\n mounted: function mounted() {\n this.init();\n },\n beforeDestroy: function beforeDestroy() {\n if (this.anim) \n { this.anim.destroy(); }\n },\n methods: {\n init: function init() {\n var this$1 = this;\n\n var settings = {\n container: this.$refs.animation,\n renderer: this.renderer,\n loop: this.loop,\n autoplay: this.autoPlay,\n animationData: this.animationData\n };\n\n this.anim = lottie_web__WEBPACK_IMPORTED_MODULE_0___default.a.loadAnimation(settings);\n\n this.anim.addEventListener('loopComplete', function () {\n this$1.$emit('loopComplete', this$1.anim);\n });\n this.anim.addEventListener('complete', function () {\n this$1.$emit('complete', this$1.anim);\n });\n this.anim.addEventListener('enterFrame', function () {\n this$1.$emit('enterFrame', this$1.anim);\n });\n },\n play: function play() {\n if(this.anim)\n { this.anim.play(); }\n },\n stop: function stop() {\n if(this.anim)\n { this.anim.stop(); }\n },\n pause: function pause() {\n if(this.anim)\n { this.anim.pause(); }\n }\n }\n};\n\nfunction normalizeComponent(template, style, script, scopeId, isFunctionalTemplate, moduleIdentifier /* server only */, shadowMode, createInjector, createInjectorSSR, createInjectorShadow) {\r\n if (typeof shadowMode !== 'boolean') {\r\n createInjectorSSR = createInjector;\r\n createInjector = shadowMode;\r\n shadowMode = false;\r\n }\r\n // Vue.extend constructor export interop.\r\n var options = typeof script === 'function' ? script.options : script;\r\n // render functions\r\n if (template && template.render) {\r\n options.render = template.render;\r\n options.staticRenderFns = template.staticRenderFns;\r\n options._compiled = true;\r\n // functional template\r\n if (isFunctionalTemplate) {\r\n options.functional = true;\r\n }\r\n }\r\n // scopedId\r\n if (scopeId) {\r\n options._scopeId = scopeId;\r\n }\r\n var hook;\r\n if (moduleIdentifier) {\r\n // server build\r\n hook = function (context) {\r\n // 2.3 injection\r\n context =\r\n context || // cached call\r\n (this.$vnode && this.$vnode.ssrContext) || // stateful\r\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext); // functional\r\n // 2.2 with runInNewContext: true\r\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\r\n context = __VUE_SSR_CONTEXT__;\r\n }\r\n // inject component styles\r\n if (style) {\r\n style.call(this, createInjectorSSR(context));\r\n }\r\n // register component module identifier for async chunk inference\r\n if (context && context._registeredComponents) {\r\n context._registeredComponents.add(moduleIdentifier);\r\n }\r\n };\r\n // used by ssr in case component is cached and beforeCreate\r\n // never gets called\r\n options._ssrRegister = hook;\r\n }\r\n else if (style) {\r\n hook = shadowMode\r\n ? function (context) {\r\n style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot));\r\n }\r\n : function (context) {\r\n style.call(this, createInjector(context));\r\n };\r\n }\r\n if (hook) {\r\n if (options.functional) {\r\n // register for functional component in vue file\r\n var originalRender = options.render;\r\n options.render = function renderWithStyleInjection(h, context) {\r\n hook.call(context);\r\n return originalRender(h, context);\r\n };\r\n }\r\n else {\r\n // inject component registration as beforeCreate hook\r\n var existing = options.beforeCreate;\r\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook];\r\n }\r\n }\r\n return script;\r\n}\n\n/* script */\nvar __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function() {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\"div\", { ref: \"animation\" })\n};\nvar __vue_staticRenderFns__ = [];\n__vue_render__._withStripped = true;\n\n /* style */\n var __vue_inject_styles__ = undefined;\n /* scoped */\n var __vue_scope_id__ = undefined;\n /* module identifier */\n var __vue_module_identifier__ = undefined;\n /* functional template */\n var __vue_is_functional_template__ = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n var __vue_component__ = /*#__PURE__*/normalizeComponent(\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n __vue_inject_styles__,\n __vue_script__,\n __vue_scope_id__,\n __vue_is_functional_template__,\n __vue_module_identifier__,\n false,\n undefined,\n undefined,\n undefined\n );\n\n// Declare install function executed by Vue.use()\nfunction install(Vue) {\n\tif (install.installed) { return; }\n\tinstall.installed = true;\n\tVue.component('LottieWebVue', __vue_component__);\n}\n\n// Create module definition for Vue.use()\nvar plugin = {\n\tinstall: install,\n};\n\n// Auto-install when vue is found (eg. in browser via \";\n window.open('javascript:window.name;', arg);\n }\n }\n },\n\n /**\n * @description: Set drop-down menu status\n * @param {Boolean} e\n * @return {*} void\n */\n setDropState: function setDropState(e) {\n this.dropState = e;\n },\n\n /**\n * @description: Restart Application\n * @return {*} void\n */\n restartApp: function restartApp() {\n var _this = this;\n\n this.isRestarting = true;\n this.$api.app.startContainer(this.item.custom_id, {\n state: \"restart\"\n }).then(function (res) {\n if (res.data.success == 200) {\n _this.updateState();\n }\n\n _this.isRestarting = false;\n });\n },\n\n /**\n * @description: Confirm before uninstall\n * @return {*} void\n */\n uninstallConfirm: function uninstallConfirm() {\n var _this2 = this;\n\n try {\n var appName = this.item.name;\n var action = \"uninstall\";\n this.$api.analyse.analyseAppAction(appName, action); // eslint-disable-next-line no-empty\n } catch (err) {}\n\n this.$refs.dro.isActive = false;\n this.$buefy.dialog.confirm({\n title: this.$t('Attention'),\n message: this.$t('Data cannot be recovered after deletion!
    Continue on to uninstall this application?'),\n type: 'is-dark',\n confirmText: this.$t('Uninstall'),\n cancelText: this.$t('Cancel'),\n onConfirm: function onConfirm() {\n _this2.isUninstalling = true;\n\n _this2.uninstallApp();\n }\n });\n },\n\n /**\n * @description: Uninstall app\n * @return {*} void\n */\n uninstallApp: function uninstallApp() {\n var _this3 = this;\n\n this.isUninstalling = true;\n this.$api.app.uninstall(this.item.custom_id).then(function (res) {\n if (res.data.success == 200) {// this.updateState()\n }\n\n _this3.isUninstalling = false;\n });\n },\n\n /**\n * @description: Emit the event that the app has been updated\n * @return {*} void\n */\n updateState: function updateState() {\n this.$refs.dro.isActive = false;\n this.$emit(\"updateState\");\n },\n\n /**\n * @description: Emit the event that the app has been updated with custom_id\n * @return {*} void\n */\n configApp: function configApp() {\n this.$refs.dro.isActive = false;\n this.$emit(\"configApp\", this.item.custom_id, this.item.state);\n },\n\n /**\n * @description: Start or Stop a App\n * @param {Object} item the app info object\n * @return {*} void\n */\n toggle: function toggle(item) {\n var _this4 = this;\n\n this.isStarting = true;\n var data = {\n state: item.state == \"running\" ? \"stop\" : \"start\"\n };\n this.$api.app.startContainer(item.custom_id, data).then(function (res) {\n _this4.isStarting = false;\n\n if (res.data.success == 200) {\n item.state = res.data.data;\n\n _this4.updateState();\n } else {\n _this4.$buefy.dialog.alert({\n title: 'Error',\n message: res.data.data,\n type: 'is-danger',\n ariaRole: 'alertdialog',\n ariaModal: true\n });\n }\n });\n }\n },\n watch: {\n hover: function hover(val) {\n if (!val && this.dropState) this.$refs.dro.toggle();\n }\n },\n filters: {\n /**\n * @description: Format Dot Class\n * @param {String} state\n * @return {String}\n */\n dotClass: function dotClass(state) {\n return state == 'running' ? 'start' : 'stop';\n }\n }\n});\n\n//# sourceURL=webpack:///./src/components/Apps/AppCard.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/Apps/AppSection.vue?vue&type=script&lang=js&": -/*!************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Apps/AppSection.vue?vue&type=script&lang=js& ***! - \************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _AppCard_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AppCard.vue */ \"./src/components/Apps/AppCard.vue\");\n/* harmony import */ var _Panel_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Panel.vue */ \"./src/components/Apps/Panel.vue\");\n/* harmony import */ var _filebrowser_FileEntryCard_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../filebrowser/FileEntryCard.vue */ \"./src/components/filebrowser/FileEntryCard.vue\");\n/* harmony import */ var _AcquaintanceShare_AcquaintanceEntryCard_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../AcquaintanceShare/AcquaintanceEntryCard.vue */ \"./src/components/AcquaintanceShare/AcquaintanceEntryCard.vue\");\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n data: function data() {\n return {\n appList: [],\n appConfig: {},\n isLoading: true,\n isShowing: false\n };\n },\n components: {\n AppCard: _AppCard_vue__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n FileEntryCard: _filebrowser_FileEntryCard_vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n AcquaintanceEntryCard: _AcquaintanceShare_AcquaintanceEntryCard_vue__WEBPACK_IMPORTED_MODULE_3__[\"default\"]\n },\n created: function created() {\n this.getList();\n },\n methods: {\n /**\n * @description: Fetch the list of installed apps\n * @return {*} void\n */\n getList: function getList() {\n var _this = this;\n\n this.$api.app.myAppList().then(function (res) {\n if (res.data.success == 200) {\n _this.appList = res.data.data;\n _this.isLoading = false;\n }\n });\n },\n\n /**\n * @description: Show Install Panel Programmatic\n * @return {*} void\n */\n showInstall: function showInstall() {\n var _this2 = this;\n\n this.isShowing = true;\n this.$api.app.appConfig().then(function (res) {\n _this2.isShowing = false;\n\n if (res.data.success == 200) {\n _this2.$buefy.modal.open({\n parent: _this2,\n component: _Panel_vue__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n hasModalCard: true,\n customClass: 'app-panel',\n trapFocus: true,\n canCancel: ['escape'],\n scroll: \"keep\",\n animation: \"zoom-in\",\n events: {\n 'updateState': function updateState() {\n _this2.getList();\n }\n },\n props: {\n id: \"0\",\n state: \"install\",\n configData: res.data.data\n }\n });\n }\n });\n },\n\n /**\n * @description: Show Settings Panel Programmatic\n * @return {*} void\n */\n showConfigPanel: function showConfigPanel(id, status) {\n var _this3 = this;\n\n this.$api.app.getContainerSettingdata(id).then(function (ret) {\n console.log(ret.data.data);\n\n _this3.$api.app.appConfig().then(function (res) {\n if (res.data.success == 200) {\n _this3.$buefy.modal.open({\n parent: _this3,\n component: _Panel_vue__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n hasModalCard: true,\n customClass: '',\n trapFocus: true,\n canCancel: [''],\n scroll: \"keep\",\n animation: \"zoom-in\",\n events: {\n 'updateState': function updateState() {\n _this3.getList();\n }\n },\n props: {\n id: id,\n state: \"update\",\n runningStatus: status,\n configData: res.data.data,\n initDatas: ret.data.data\n }\n });\n }\n });\n });\n }\n }\n});\n\n//# sourceURL=webpack:///./src/components/Apps/AppSection.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/Apps/AppSideBar.vue?vue&type=script&lang=js&": -/*!************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Apps/AppSideBar.vue?vue&type=script&lang=js& ***! - \************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.number.constructor.js */ \"./node_modules/core-js/modules/es.number.constructor.js\");\n/* harmony import */ var core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_0__);\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: \"AppSideBar\",\n model: {\n prop: 'open',\n event: 'update:open'\n },\n props: {\n open: Boolean,\n type: [String, Object],\n overlay: Boolean,\n position: {\n type: String,\n default: 'fixed',\n validator: function validator(value) {\n return ['fixed', 'absolute', 'static'].indexOf(value) >= 0;\n }\n },\n fullheight: Boolean,\n fullwidth: Boolean,\n right: Boolean,\n mobile: {\n type: String\n },\n reduce: Boolean,\n expandOnHover: Boolean,\n expandOnHoverFixed: Boolean,\n delay: {\n type: Number,\n default: function _default() {\n return 0;\n }\n },\n canCancel: {\n type: [Array, Boolean],\n default: function _default() {\n return ['escape', 'outside'];\n }\n },\n onCancel: {\n type: Function,\n default: function _default() {}\n }\n },\n data: function data() {\n return {\n isOpen: this.open,\n isDelayOver: false,\n transitionName: null,\n animating: true,\n savedScrollTop: null,\n hasLeaved: false\n };\n },\n computed: {\n rootClasses: function rootClasses() {\n return [this.type, {\n 'is-fixed': this.isFixed,\n 'is-static': this.isStatic,\n 'is-absolute': this.isAbsolute,\n 'is-fullheight': this.fullheight,\n 'is-fullwidth': this.fullwidth,\n 'is-right': this.right,\n 'is-mini': this.reduce && !this.isDelayOver,\n 'is-mini-expand': this.expandOnHover || this.isDelayOver,\n 'is-mini-expand-fixed': this.expandOnHover && this.expandOnHoverFixed || this.isDelayOver,\n 'is-mini-delayed': this.delay !== null,\n 'is-mini-mobile': this.mobile === 'reduce',\n 'is-hidden-mobile': this.mobile === 'hide',\n 'is-fullwidth-mobile': this.mobile === 'fullwidth'\n }];\n },\n cancelOptions: function cancelOptions() {\n return typeof this.canCancel === 'boolean' ? this.canCancel ? ['escape', 'outside'] : [] : this.canCancel;\n },\n isStatic: function isStatic() {\n return this.position === 'static';\n },\n isFixed: function isFixed() {\n return this.position === 'fixed';\n },\n isAbsolute: function isAbsolute() {\n return this.position === 'absolute';\n }\n },\n watch: {\n open: {\n handler: function handler(value) {\n this.isOpen = value;\n var open = this.right ? !value : value;\n this.transitionName = !open ? 'slide-prev' : 'slide-next';\n },\n immediate: true\n }\n },\n methods: {\n close: function close() {\n this.isOpen = false;\n this.$emit('close');\n this.$emit('update:open', false);\n },\n beforeEnter: function beforeEnter() {\n this.animating = true;\n },\n afterEnter: function afterEnter() {\n this.animating = false;\n },\n enter: function enter() {\n var myDiv = document.getElementById('ss-content');\n\n if (myDiv) {\n myDiv.scrollTop = 0;\n }\n },\n onHover: function onHover() {\n var _this = this;\n\n if (this.delay) {\n this.hasLeaved = false;\n this.timer = setTimeout(function () {\n if (!_this.hasLeaved) {\n _this.isDelayOver = true;\n }\n\n _this.timer = null;\n }, this.delay);\n } else {\n this.isDelayOver = false;\n }\n },\n onHoverLeave: function onHoverLeave() {\n this.hasLeaved = true;\n this.timer = null;\n this.isDelayOver = false;\n }\n },\n created: function created() {\n if (typeof window !== 'undefined') {\n document.addEventListener('keyup', this.keyPress);\n document.addEventListener('click', this.clickedOutside);\n }\n },\n mounted: function mounted() {\n if (typeof window !== 'undefined') {\n if (this.isFixed) {\n document.body.appendChild(this.$el);\n }\n }\n },\n beforeDestroy: function beforeDestroy() {\n if (typeof window !== 'undefined') {\n document.removeEventListener('keyup', this.keyPress);\n document.removeEventListener('click', this.clickedOutside);\n }\n }\n});\n\n//# sourceURL=webpack:///./src/components/Apps/AppSideBar.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/Apps/AppTerminalPanel.vue?vue&type=script&lang=js&": -/*!******************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Apps/AppTerminalPanel.vue?vue&type=script&lang=js& ***! - \******************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ \"./node_modules/core-js/modules/es.array.concat.js\");\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _components_logsAndTerminal_TerminalCard_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/components/logsAndTerminal/TerminalCard.vue */ \"./src/components/logsAndTerminal/TerminalCard.vue\");\n/* harmony import */ var _components_logsAndTerminal_LogsCard_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/components/logsAndTerminal/LogsCard.vue */ \"./src/components/logsAndTerminal/LogsCard.vue\");\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'app-terminal-panel',\n components: {\n TerminalCard: _components_logsAndTerminal_TerminalCard_vue__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n LogsCard: _components_logsAndTerminal_LogsCard_vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n },\n data: function data() {\n return {\n isLoading: false,\n wsUrl: false ? undefined : \"ws://\".concat(document.location.host, \"/v1/app/terminal/\").concat(this.appid, \"?token=\").concat(this.$store.state.token),\n logData: \"\"\n };\n },\n props: {\n appid: String,\n appName: String\n },\n mounted: function mounted() {\n this.getLogs();\n },\n methods: {\n getLogs: function getLogs() {\n var _this = this;\n\n this.$api.app.getContainerLogs(this.appid).then(function (res) {\n if (res.data.success == 200) {\n _this.logData = res.data.data;\n }\n });\n },\n onInput: function onInput(e) {\n if (e == \"terminal\") {\n this.$refs.terminal.active(true);\n this.$refs.logs.active(false);\n } else {\n this.$refs.terminal.active(false);\n this.$refs.logs.active(true);\n }\n }\n }\n});\n\n//# sourceURL=webpack:///./src/components/Apps/AppTerminalPanel.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/Apps/Panel.vue?vue&type=script&lang=js&": -/*!*******************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Apps/Panel.vue?vue&type=script&lang=js& ***! - \*******************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Users_liangjianli_go_CasaOSNew_CasaOS_UI_node_modules_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/esm/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js\");\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ \"./node_modules/regenerator-runtime/runtime.js\");\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ \"./node_modules/core-js/modules/es.array.concat.js\");\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ \"./node_modules/core-js/modules/es.array.map.js\");\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ \"./node_modules/core-js/modules/es.array.filter.js\");\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ \"./node_modules/core-js/modules/es.function.name.js\");\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ \"./node_modules/core-js/modules/es.object.to-string.js\");\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ \"./node_modules/core-js/modules/es.regexp.to-string.js\");\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ \"./node_modules/core-js/modules/es.symbol.js\");\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ \"./node_modules/core-js/modules/es.symbol.description.js\");\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ \"./node_modules/core-js/modules/web.dom-collections.for-each.js\");\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ \"./node_modules/core-js/modules/es.regexp.exec.js\");\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.string.split.js */ \"./node_modules/core-js/modules/es.string.split.js\");\n/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.array.join.js */ \"./node_modules/core-js/modules/es.array.join.js\");\n/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ \"./node_modules/core-js/modules/es.array.slice.js\");\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! core-js/modules/es.number.constructor.js */ \"./node_modules/core-js/modules/es.number.constructor.js\");\n/* harmony import */ var core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! core-js/modules/es.string.replace.js */ \"./node_modules/core-js/modules/es.string.replace.js\");\n/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! axios */ \"./node_modules/axios/index.js\");\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(axios__WEBPACK_IMPORTED_MODULE_17__);\n/* harmony import */ var _forms_InputGroup_vue__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../forms/InputGroup.vue */ \"./src/components/forms/InputGroup.vue\");\n/* harmony import */ var _forms_EnvInputGroup_vue__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../forms/EnvInputGroup.vue */ \"./src/components/forms/EnvInputGroup.vue\");\n/* harmony import */ var _forms_CommandsInput_vue__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../forms/CommandsInput.vue */ \"./src/components/forms/CommandsInput.vue\");\n/* harmony import */ var _forms_Ports_vue__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../forms/Ports.vue */ \"./src/components/forms/Ports.vue\");\n/* harmony import */ var _AppSideBar_vue__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./AppSideBar.vue */ \"./src/components/Apps/AppSideBar.vue\");\n/* harmony import */ var _forms_ImportPanel_vue__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../forms/ImportPanel.vue */ \"./src/components/forms/ImportPanel.vue\");\n/* harmony import */ var _AppTerminalPanel_vue__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./AppTerminalPanel.vue */ \"./src/components/Apps/AppTerminalPanel.vue\");\n/* harmony import */ var lottie_web_vue__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! lottie-web-vue */ \"./node_modules/lottie-web-vue/dist/lottie-web-vue.esm.js\");\n/* harmony import */ var vue_slider_component__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! vue-slider-component */ \"./node_modules/vue-slider-component/dist/vue-slider-component.umd.min.js\");\n/* harmony import */ var vue_slider_component__WEBPACK_IMPORTED_MODULE_26___default = /*#__PURE__*/__webpack_require__.n(vue_slider_component__WEBPACK_IMPORTED_MODULE_26__);\n/* harmony import */ var vue_slider_component_theme_default_css__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! vue-slider-component/theme/default.css */ \"./node_modules/vue-slider-component/theme/default.css\");\n/* harmony import */ var vue_slider_component_theme_default_css__WEBPACK_IMPORTED_MODULE_27___default = /*#__PURE__*/__webpack_require__.n(vue_slider_component_theme_default_css__WEBPACK_IMPORTED_MODULE_27__);\n/* harmony import */ var vee_validate__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! vee-validate */ \"./node_modules/vee-validate/dist/vee-validate.esm.js\");\n/* harmony import */ var _plugins_vee_validate__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! @/plugins/vee-validate */ \"./src/plugins/vee-validate.js\");\n/* harmony import */ var lodash_debounce__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! lodash/debounce */ \"./node_modules/lodash/debounce.js\");\n/* harmony import */ var lodash_debounce__WEBPACK_IMPORTED_MODULE_30___default = /*#__PURE__*/__webpack_require__.n(lodash_debounce__WEBPACK_IMPORTED_MODULE_30__);\n/* harmony import */ var lodash_find__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! lodash/find */ \"./node_modules/lodash/find.js\");\n/* harmony import */ var lodash_find__WEBPACK_IMPORTED_MODULE_31___default = /*#__PURE__*/__webpack_require__.n(lodash_find__WEBPACK_IMPORTED_MODULE_31__);\n/* harmony import */ var lodash_uniq__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! lodash/uniq */ \"./node_modules/lodash/uniq.js\");\n/* harmony import */ var lodash_uniq__WEBPACK_IMPORTED_MODULE_32___default = /*#__PURE__*/__webpack_require__.n(lodash_uniq__WEBPACK_IMPORTED_MODULE_32__);\n/* harmony import */ var lodash_isNull__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! lodash/isNull */ \"./node_modules/lodash/isNull.js\");\n/* harmony import */ var lodash_isNull__WEBPACK_IMPORTED_MODULE_33___default = /*#__PURE__*/__webpack_require__.n(lodash_isNull__WEBPACK_IMPORTED_MODULE_33__);\n/* harmony import */ var lodash_orderBy__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! lodash/orderBy */ \"./node_modules/lodash/orderBy.js\");\n/* harmony import */ var lodash_orderBy__WEBPACK_IMPORTED_MODULE_34___default = /*#__PURE__*/__webpack_require__.n(lodash_orderBy__WEBPACK_IMPORTED_MODULE_34__);\n/* harmony import */ var lodash_cloneDeep__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! lodash/cloneDeep */ \"./node_modules/lodash/cloneDeep.js\");\n/* harmony import */ var lodash_cloneDeep__WEBPACK_IMPORTED_MODULE_35___default = /*#__PURE__*/__webpack_require__.n(lodash_cloneDeep__WEBPACK_IMPORTED_MODULE_35__);\n/* harmony import */ var file_saver__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! file-saver */ \"./node_modules/file-saver/dist/FileSaver.min.js\");\n/* harmony import */ var file_saver__WEBPACK_IMPORTED_MODULE_36___default = /*#__PURE__*/__webpack_require__.n(file_saver__WEBPACK_IMPORTED_MODULE_36__);\n/* harmony import */ var vue_awesome_swiper__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! vue-awesome-swiper */ \"./node_modules/vue-awesome-swiper/dist/vue-awesome-swiper.js\");\n/* harmony import */ var vue_awesome_swiper__WEBPACK_IMPORTED_MODULE_37___default = /*#__PURE__*/__webpack_require__.n(vue_awesome_swiper__WEBPACK_IMPORTED_MODULE_37__);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n // import upperFirst from 'lodash/upperFirst'\n\n\n\n\n\n\nvar _data = [\"AUDIT_CONTROL\", \"AUDIT_READ\", \"BLOCK_SUSPEND\", \"BPF\", \"CHECKPOINT_RESTORE\", \"DAC_READ_SEARCH\", \"IPC_LOCK\", \"IPC_OWNER\", \"LEASE\", \"LINUX_IMMUTABLE\", \"MAC_ADMIN\", \"MAC_OVERRIDE\", \"NET_ADMIN\", \"NET_BROADCAST\", \"PERFMON\", \"SYS_ADMIN\", \"SYS_BOOT\", \"SYS_MODULE\", \"SYS_NICE\", \"SYS_PACCT\", \"SYS_PTRACE\", \"SYS_RAWIO\", \"SYS_RESOURCE\", \"SYS_TIME\", \"SYS_TTY_CONFIG\", \"SYSLOG\", \"WAKE_ALARM\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n components: {\n Ports: _forms_Ports_vue__WEBPACK_IMPORTED_MODULE_21__[\"default\"],\n InputGroup: _forms_InputGroup_vue__WEBPACK_IMPORTED_MODULE_18__[\"default\"],\n EnvInputGroup: _forms_EnvInputGroup_vue__WEBPACK_IMPORTED_MODULE_19__[\"default\"],\n CommandsInput: _forms_CommandsInput_vue__WEBPACK_IMPORTED_MODULE_20__[\"default\"],\n ValidationObserver: vee_validate__WEBPACK_IMPORTED_MODULE_28__[\"ValidationObserver\"],\n ValidationProvider: vee_validate__WEBPACK_IMPORTED_MODULE_28__[\"ValidationProvider\"],\n AppSideBar: _AppSideBar_vue__WEBPACK_IMPORTED_MODULE_22__[\"default\"],\n LottieAnimation: lottie_web_vue__WEBPACK_IMPORTED_MODULE_25__[\"default\"],\n VueSlider: vue_slider_component__WEBPACK_IMPORTED_MODULE_26___default.a,\n Swiper: vue_awesome_swiper__WEBPACK_IMPORTED_MODULE_37__[\"Swiper\"],\n SwiperSlide: vue_awesome_swiper__WEBPACK_IMPORTED_MODULE_37__[\"SwiperSlide\"]\n },\n data: function data() {\n return {\n timer: 0,\n data: [],\n isLoading: true,\n isFetching: false,\n isFirst: true,\n errorType: 1,\n sidebarOpen: false,\n cancelButtonText: \"Cancel\",\n webui: \"\",\n baseUrl: \"\",\n totalMemory: 0,\n networks: [],\n tempNetworks: [],\n networkModes: [],\n installPercent: 0,\n installText: \"\",\n initData: {\n port_map: \"\",\n cpu_shares: 10,\n memory: 300,\n restart: \"always\",\n label: \"\",\n position: true,\n index: \"\",\n icon: \"\",\n network_model: \"\",\n image: \"\",\n description: \"\",\n origin: \"custom\",\n ports: [],\n volumes: [],\n envs: [],\n devices: [],\n cap_add: [],\n cmd: [],\n privileged: false,\n host_name: \"\"\n },\n capArray: _data,\n pageIndex: 1,\n pageSize: 5,\n listTotal: 0,\n pageList: {},\n communityList: {},\n recommendList: {},\n currentSlide: 0,\n currentInstallId: 0,\n //Image List Swiper\n disPrev: true,\n disNext: false,\n swiperOptions: {\n loop: false,\n autoplay: true,\n spaceBetween: 24,\n breakpoints: {\n 640: {\n slidesPerView: 1\n },\n 768: {\n slidesPerView: 2\n },\n 1366: {\n slidesPerView: 3\n }\n },\n on: {\n slideChangeTransitionStart: this.handleInfoSlide\n }\n },\n // Featured Swiper\n disFeaturedPrev: true,\n disFeaturedNext: false,\n featureSwiperOptions: {\n loop: false,\n autoplay: true,\n spaceBetween: 24,\n breakpoints: {\n 640: {\n slidesPerView: 1\n },\n 768: {\n slidesPerView: 2\n },\n 1366: {\n slidesPerView: 3\n }\n },\n on: {\n slideChangeTransitionStart: this.handleFeaturedSlide\n }\n },\n searchKey: \"\",\n currentCate: {},\n currentSort: {},\n cateMenu: [],\n sortMenu: [{\n icon: \"\",\n slash: \"rank\",\n name: \"Popular\"\n }, {\n icon: \"\",\n slash: \"new\",\n name: \"New\"\n }, {\n icon: \"\",\n slash: \"name\",\n name: \"Name\"\n }],\n storeQueryData: {\n index: 1,\n category_id: \"\",\n type: \"rank\",\n key: this.searchKey\n },\n // App Detail info\n detailData: {}\n };\n },\n props: {\n id: String,\n state: String,\n runningStatus: String,\n configData: Object,\n initDatas: {\n type: Object\n }\n },\n created: function created() {\n var _this2 = this;\n\n // Set Front-end base url\n this.baseUrl = \"\".concat(window.location.protocol, \"//\").concat(document.domain, \":\"); //Get Max memory info form device\n\n this.totalMemory = Math.floor(this.configData.memory.total / 1048576);\n this.initData.memory = this.totalMemory; //Handling network types\n\n this.tempNetworks = this.configData.networks;\n this.networkModes = lodash_uniq__WEBPACK_IMPORTED_MODULE_32___default()(this.tempNetworks.map(function (item) {\n return item.driver;\n }));\n this.networks = this.networkModes.map(function (item) {\n var tempitem = {};\n tempitem.driver = item;\n tempitem.networks = _this2.tempNetworks.filter(function (net) {\n return net.driver == item;\n });\n return tempitem;\n });\n this.networks = lodash_orderBy__WEBPACK_IMPORTED_MODULE_34___default()(this.networks, ['driver'], ['asc']); //If it is edit, Init data\n\n if (this.initDatas != undefined) {\n this.isLoading = false;\n this.initData = this.initDatas;\n this.webui = this.initDatas.port_map + this.initDatas.index;\n this.currentSlide = 1;\n } else {\n var gg = lodash_find__WEBPACK_IMPORTED_MODULE_31___default()(this.tempNetworks, function (o) {\n return o.driver == \"bridge\";\n });\n this.initData.network_model = gg.length > 0 ? gg[0].name : \"bridge\"; // let appData = localStorage.getItem(\"app_data\")\n // if (!isNull(appData)) {\n // this.initData = JSON.parse(appData)\n // }\n // this.getStoreList()\n } //loading app store list data from server\n\n\n this.getCategoryList();\n },\n computed: {\n showPorts: function showPorts() {\n if (this.initData.network_model.toLowerCase().indexOf(\"macvlan\") > -1 || this.initData.network_model.indexOf(\"host\") > -1) {\n return false;\n } else {\n return true;\n }\n },\n showHostPort: function showHostPort() {\n if (this.initData.network_model.indexOf(\"host\") > -1) {\n return false;\n } else {\n return true;\n }\n },\n showImportButton: function showImportButton() {\n return this.currentSlide == 1 && this.state == 'install';\n },\n showExportButton: function showExportButton() {\n return this.currentSlide == 1 && this.state == 'update';\n },\n showTerminalButton: function showTerminalButton() {\n return this.currentSlide == 1 && this.state == 'update' && this.runningStatus == 'running';\n },\n panelTitle: function panelTitle() {\n if (this.currentSlide == 0) {\n return this.$t(\"App Store\");\n } else if (this.currentSlide == 1) {\n return this.initDatas != undefined ? this.initData.label + \" \" + this.$t(\"Setting\") : this.$t(\"Install a new App manually\");\n } else {\n return this.$t(\"Installing\") + \" \" + this.initData.image;\n }\n },\n showDetailSwiper: function showDetailSwiper() {\n return !this.detailData.screenshot_link ? false : true;\n }\n },\n watch: {\n // Watch if Section index changes\n currentSlide: function currentSlide(val) {\n if (val == 1) {\n this.isLoading = false;\n } // this.getStoreList()\n\n },\n // Watch if initData changes\n initData: {\n handler: function handler(val) {\n if (this.state == 'install') {\n localStorage.setItem(\"app_data\", JSON.stringify(val));\n }\n },\n deep: true\n },\n // Watch if the query data of app store changes\n storeQueryData: {\n handler: function handler() {\n this.getStoreList();\n },\n deep: true\n },\n // Watch if app cates changes\n currentCate: {\n handler: function handler(val) {\n if (!this.isFirst) {\n this.storeQueryData.category_id = val.id;\n }\n },\n deep: true\n },\n // Watch if app sort changes\n currentSort: {\n handler: function handler(val) {\n if (!this.isFirst) {\n this.storeQueryData.type = val.slash;\n }\n },\n deep: true\n }\n },\n methods: {\n getFilteredTags: function getFilteredTags(text) {\n this.capArray = _data.filter(function (option) {\n return option.toString().indexOf(text.toUpperCase()) >= 0;\n });\n },\n handleInfoSlide: function handleInfoSlide(swiper) {\n this.disPrev = swiper.activeIndex == 0 ? true : false;\n this.disNext = swiper.isEnd;\n },\n handleFeaturedSlide: function handleFeaturedSlide(swiper) {\n this.disFeaturedPrev = swiper.activeIndex == 0 ? true : false;\n this.disFeaturedNext = swiper.isEnd;\n },\n\n /**\n * @description: Get category list\n * @param {*} \n * @return {*} void\n */\n getCategoryList: function getCategoryList() {\n var _this3 = this;\n\n this.$api.app.storeCategoryList().then(function (res) {\n _this3.cateMenu = res.data.data.filter(function (item) {\n return item.count > 0;\n });\n _this3.currentCate = _this3.cateMenu[0];\n _this3.currentSort = _this3.sortMenu[0];\n\n if (_this3.isFirst) {\n _this3.isFirst = false;\n } //this.getStoreList();\n\n });\n },\n\n /**\n * @description: Show the details of app\n * @param {id} String\n * @return {*} void\n */\n showAppDetial: function showAppDetial(id) {\n var _this4 = this;\n\n this.isLoading = true;\n this.$api.app.storeAppInfo(id).then(function (resp) {\n _this4.isLoading = false;\n _this4.sidebarOpen = true;\n _this4.detailData = resp.data.data;\n });\n },\n\n /**\n * @description: Get App store list\n * @param {*}\n * @return {*} void\n */\n getStoreList: function getStoreList() {\n var _this5 = this;\n\n this.isLoading = true;\n this.$api.app.storeList(this.storeQueryData).then(function (res) {\n _this5.isLoading = false;\n\n if (res.data.success == 200) {\n // this.listTotal = res.data.data.count\n _this5.pageList = res.data.data.list;\n _this5.communityList = res.data.data.community;\n _this5.recommendList = res.data.data.recommend;\n }\n });\n },\n\n /**\n * @description: Quick Install App from app store\n * @param {*}\n * @return {*} void\n */\n qucikInstall: function qucikInstall(id) {\n var _this6 = this;\n\n this.currentInstallId = id;\n this.$api.app.storeAppInfo(id).then(function (resp) {\n if (resp.data.success == 200) {\n var respData = resp.data.data;\n _this6.initData.port_map = respData.port_map;\n _this6.initData.cpu_shares = 50;\n _this6.initData.memory = respData.max_memory;\n _this6.initData.restart = \"always\";\n _this6.initData.label = respData.title;\n _this6.initData.position = true;\n _this6.initData.index = respData.index;\n _this6.initData.icon = respData.icon;\n _this6.initData.network_model = respData.network_model;\n _this6.initData.image = respData.image;\n _this6.initData.description = respData.description;\n _this6.initData.origin = respData.origin;\n _this6.initData.ports = lodash_isNull__WEBPACK_IMPORTED_MODULE_33___default()(respData.ports) ? [] : respData.ports;\n _this6.initData.volumes = lodash_isNull__WEBPACK_IMPORTED_MODULE_33___default()(respData.volumes) ? [] : respData.volumes;\n _this6.initData.envs = lodash_isNull__WEBPACK_IMPORTED_MODULE_33___default()(respData.envs) ? [] : respData.envs;\n _this6.initData.devices = lodash_isNull__WEBPACK_IMPORTED_MODULE_33___default()(respData.devices) ? [] : respData.devices;\n _this6.initData.cap_add = lodash_isNull__WEBPACK_IMPORTED_MODULE_33___default()(respData.cap_add) ? [] : respData.cap_add;\n _this6.initData.privileged = respData.privileged;\n _this6.initData.host_name = respData.host_name;\n _this6.initData.cmd = lodash_isNull__WEBPACK_IMPORTED_MODULE_33___default()(respData.cmd) ? [] : respData.cmd;\n _this6.currentInstallId = 0;\n console.log(respData.tip);\n\n if (respData.tip !== \"null\" && respData.tip !== \"[]\") {\n _this6.$buefy.dialog.confirm({\n title: _this6.$t('Attention'),\n message: _this6.formatTips(respData.tip),\n type: 'is-dark',\n onConfirm: function onConfirm() {\n _this6.sidebarOpen = false;\n\n _this6.installAppData(id);\n }\n });\n } else {\n _this6.sidebarOpen = false;\n\n _this6.installAppData(id);\n }\n }\n });\n },\n\n /**\n * @description: Format AppStore tip datas\n * @param {data}\n * @return {html} Str \n */\n formatTips: function formatTips(data) {\n var html = \"\";\n\n if (data != null) {\n JSON.parse(data).forEach(function (item) {\n html += \"\" + item.content + \"\";\n\n if (item.value != '') {\n html += \"\" + item.value + \"\";\n }\n\n html += \"
    \";\n });\n }\n\n return html;\n },\n\n /**\n * @description: Process the datas before submit\n * @param {*}\n * @return {*} void\n */\n processData: function processData() {\n // GET port map and index\n if (this.webui != \"\") {\n var slashArr = this.webui.split(\"/\");\n this.initData.port_map = slashArr[0];\n this.initData.index = \"/\" + slashArr.slice(1).join(\"/\");\n }\n\n this.initData.cpu_shares = Number(this.initData.cpu_shares);\n var model = this.initData.network_model.split(\"-\");\n this.initData.network_model = model[0];\n },\n\n /**\n * @description: Back to prev Step\n * @param {*}\n * @return {*} void\n */\n prevStep: function prevStep() {\n this.currentSlide--;\n },\n\n /**\n * @description: Validate form async\n * @param {Object} ref ref of component\n * @return {Boolean} \n */\n checkStep: function checkStep(ref) {\n return Object(_Users_liangjianli_go_CasaOSNew_CasaOS_UI_node_modules_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__[\"default\"])( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n var isValid;\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return ref.validate();\n\n case 2:\n isValid = _context.sent;\n return _context.abrupt(\"return\", isValid);\n\n case 4:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }))();\n },\n\n /**\n * @description: Submit datas after valid\n * @param {*}\n * @return {*} void\n */\n installApp: function installApp() {\n var _this7 = this;\n\n this.checkStep(this.$refs.ob1).then(function (val) {\n if (val) {\n _this7.installAppData(_this7.id);\n }\n });\n },\n installAppData: function installAppData(id) {\n var _this8 = this;\n\n this.processData();\n this.isLoading = true;\n console.log(this.initData);\n this.$api.app.install(id, this.initData).then(function (res) {\n _this8.isLoading = false;\n\n if (res.data.success == 200) {\n _this8.analyse(_this8.initData);\n\n _this8.currentSlide = 2;\n _this8.cancelButtonText = _this8.$t('Continue in background');\n\n _this8.checkInstallState(res.data.data);\n } else {\n _this8.$buefy.toast.open({\n message: res.data.message,\n type: 'is-warning'\n });\n }\n });\n },\n analyse: function analyse(data) {\n try {\n var appName = data.label;\n var action = \"install\";\n this.$api.analyse.analyseAppAction(appName, action); // eslint-disable-next-line no-empty\n } catch (err) {}\n },\n\n /**\n * @description: Check the installation process every 250 milliseconds\n * @param {String} appId\n * @return {*} void\n */\n checkInstallState: function checkInstallState(appId) {\n var _this9 = this;\n\n this.timer = setInterval(function () {\n _this9.updateInstallState(appId);\n }, 250);\n },\n\n /**\n * @description: Update the installation status to the UI\n * @param {String} appId\n * @return {*} void\n */\n updateInstallState: function updateInstallState(appId) {\n var _this10 = this;\n\n this.$api.app.state(appId).then(function (res) {\n var resData = res.data.data;\n _this10.installPercent = resData.speed;\n _this10.errorType = resData.type;\n\n if (_this10.errorType == 4) {\n try {\n var info = JSON.parse(resData.message);\n var id = info.id != undefined ? info.id : \"\";\n var progress = \"\";\n\n if (info.progressDetail != undefined) {\n var progressDetail = info.progressDetail;\n\n if (!isNaN(progressDetail.current / progressDetail.total)) {\n progress = \"[ \".concat(String(Math.floor(progressDetail.current / progressDetail.total * 100)), \"% ]\");\n }\n }\n\n var status = info.status;\n _this10.installText = status + \":\" + id + \" \" + progress;\n } catch (error) {\n console.log(error);\n }\n } else {\n _this10.installText = resData.message;\n\n if (_this10.errorType == 3) {\n clearInterval(_this10.timer);\n }\n }\n\n if (resData.message == \"installed\") {\n localStorage.removeItem(\"app_data\");\n clearInterval(_this10.timer);\n var _this = _this10;\n setTimeout(function () {\n _this.$emit('updateState');\n\n _this.$emit('close');\n }, 1000);\n }\n });\n },\n\n /**\n * @description: Save edit update\n * @return {*} void\n */\n updateApp: function updateApp() {\n var _this11 = this;\n\n this.processData();\n this.isLoading = true;\n var updateData = this.uuid2var(lodash_cloneDeep__WEBPACK_IMPORTED_MODULE_35___default()(this.initData));\n this.$api.app.updateContainerSetting(this.id, updateData).then(function (res) {\n if (res.data.success == 200) {\n _this11.isLoading = false;\n\n _this11.$emit('updateState');\n } else {\n _this11.$buefy.toast.open({\n message: res.data.message,\n type: 'is-warning'\n });\n }\n\n _this11.$emit('close');\n });\n },\n\n /**\n * @description: Show import panel\n * @return {*} void\n */\n showImportPanel: function showImportPanel() {\n var _this12 = this;\n\n this.$buefy.modal.open({\n parent: this,\n component: _forms_ImportPanel_vue__WEBPACK_IMPORTED_MODULE_23__[\"default\"],\n hasModalCard: true,\n customClass: '',\n trapFocus: true,\n canCancel: ['escape'],\n scroll: \"keep\",\n animation: \"zoom-in\",\n events: {\n 'update': function update(e) {\n //localStorage.removeItem(\"app_data\")\n _this12.initData = e;\n _this12.webui = _this12.initData.port_map + _this12.initData.index;\n\n _this12.changeIcon(_this12.initData.image);\n\n _this12.$buefy.dialog.alert({\n title: '⚠️ ' + _this12.$t('Attention'),\n message: '

    ' + _this12.$t('AutoFill only helps you to complete most of the configuration.') + '

    ' + '

    ' + _this12.$t('Some configuration information such as:') + '

    ' + '' + '

    ' + _this12.$t('These include but are not limited to these cases and still need to be confirmed or modified by you.') + '

    ' + '

    ' + _this12.$t('Feel free to suggest improvements to this feature in Discord Server!') + '

    ',\n type: 'is-dark'\n });\n }\n },\n props: {\n initData: this.initData,\n netWorks: this.networks,\n oriNetWorks: this.tempNetworks,\n deviceMemory: this.totalMemory\n }\n });\n },\n\n /**\n * @description: Get remote synchronization information\n * @param {*} function\n * @return {*} void\n */\n getAsyncData: lodash_debounce__WEBPACK_IMPORTED_MODULE_30___default()(function (name) {\n var _this13 = this;\n\n if (!name.length) {\n this.data = [];\n return;\n }\n\n this.isFetching = true;\n axios__WEBPACK_IMPORTED_MODULE_17___default.a.get(\"https://hub.docker.com/api/content/v1/products/search?source=community&q=\".concat(name, \"&page=1&page_size=4\")).then(function (_ref) {\n var data = _ref.data;\n _this13.data = [];\n data.summaries.forEach(function (item) {\n return _this13.data.push(item.name);\n });\n }).catch(function (error) {\n _this13.data = [];\n throw error;\n }).finally(function () {\n _this13.isFetching = false;\n });\n }, 500),\n\n /**\n * @description: Export AppData to json file\n * @param {*} function\n * @return {*} void\n */\n exportJSON: function exportJSON() {\n // 将json转换成字符串\n var exportData = lodash_cloneDeep__WEBPACK_IMPORTED_MODULE_35___default()(this.initData);\n exportData.network_model = this.getNetworkName(this.initData.network_model);\n exportData.version = \"1.0\";\n exportData = this.uuid2var(exportData);\n delete exportData.memory;\n var data = JSON.stringify(exportData);\n var blob = new Blob([data], {\n type: ''\n });\n file_saver__WEBPACK_IMPORTED_MODULE_36___default.a.saveAs(blob, \"\".concat(exportData.label, \".json\"));\n },\n\n /**\n * @description: change uuid to var\n * @param {*} function\n * @return {data} Object\n */\n uuid2var: function uuid2var(data) {\n var _this14 = this;\n\n data.volumes.forEach(function (item) {\n item.host = item.host.replace(_this14.id, '$AppID');\n });\n data.devices.forEach(function (item) {\n item.host = item.host.replace(_this14.id, '$AppID');\n });\n return data;\n },\n\n /**\n * @description: Get Network name from network list\n * @param {*} \n * @return {*} String\n */\n getNetworkName: function getNetworkName(netId) {\n if (netId == \"\") {\n return \"bridge\";\n } else {\n var network = this.tempNetworks.filter(function (net) {\n return net.name == netId;\n });\n return network[0].name;\n }\n },\n\n /**\n * @description: Change App icon when image changed\n * @param {*} function\n * @return {*} void\n */\n changeIcon: function changeIcon(e) {\n if (e == \"\") {\n this.initData.icon = \"\";\n } else {\n var appIcon = e.split(\":\")[0].split(\"/\").pop();\n this.initData.icon = \"https://cdn.jsdelivr.net/gh/IceWhaleTech/AppIcon@main/all/\".concat(appIcon, \".png\");\n }\n },\n\n /**\n * @description: Show Terminal & Logs panel\n * @return {*} void\n */\n showTerminalPanel: function showTerminalPanel() {\n this.$buefy.modal.open({\n parent: this,\n component: _AppTerminalPanel_vue__WEBPACK_IMPORTED_MODULE_24__[\"default\"],\n hasModalCard: true,\n customClass: 'terminal-modal',\n trapFocus: true,\n canCancel: [],\n scroll: \"keep\",\n animation: \"zoom-in\",\n props: {\n appid: this.id,\n appName: this.initData.label\n }\n });\n }\n },\n destroyed: function destroyed() {\n clearInterval(this.timer);\n }\n});\n\n//# sourceURL=webpack:///./src/components/Apps/Panel.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/CoreService.vue?vue&type=script&lang=js&": -/*!********************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/CoreService.vue?vue&type=script&lang=js& ***! - \********************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _smartHome_SmartBlock_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./smartHome/SmartBlock.vue */ \"./src/components/smartHome/SmartBlock.vue\");\n/* harmony import */ var _syncthing_SyncBlock_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./syncthing/SyncBlock.vue */ \"./src/components/syncthing/SyncBlock.vue\");\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n components: {\n SyncBlock: _syncthing_SyncBlock_vue__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n SmartBlock: _smartHome_SmartBlock_vue__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n },\n name: \"core-service\",\n data: function data() {\n return {\n isLoading: false,\n isSyncConfigLoaded: false\n };\n },\n created: function created() {\n var _this = this;\n\n this.$api.sync.getConfig().then(function (res) {\n _this.$store.commit('changeSyncthingInfo', res.data.data);\n\n _this.isSyncConfigLoaded = true;\n });\n }\n});\n\n//# sourceURL=webpack:///./src/components/CoreService.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/SearchBar.vue?vue&type=script&lang=js&": -/*!******************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/SearchBar.vue?vue&type=script&lang=js& ***! - \******************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: \"search-bar\",\n data: function data() {\n return {\n isFocus: false,\n keyText: \"\" // searchEngine:this.$store.state.searchEngine\n\n };\n },\n computed: {\n searchEngine: function searchEngine() {\n return this.$store.state.searchEngine == \"\" ? \"https://duckduckgo.com/?q=\" : this.$store.state.searchEngine;\n }\n },\n methods: {\n /**\n * @description: Handle Focus event\n * @return {*} void\n */\n onFocus: function onFocus() {\n this.isFocus = true;\n },\n\n /**\n * @description: Handle Blur event\n * @return {*} void\n */\n onBlur: function onBlur() {\n if (this.keyText == \"\") this.isFocus = false;\n },\n\n /**\n * @description: Pop up a new window and jump to google search\n * @return {*} void\n */\n gotoSearch: function gotoSearch() {\n window.open(this.searchEngine + this.keyText, '_blank');\n }\n }\n});\n\n//# sourceURL=webpack:///./src/components/SearchBar.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/SideBar.vue?vue&type=script&lang=js&": -/*!****************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/SideBar.vue?vue&type=script&lang=js& ***! - \****************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ \"./node_modules/core-js/modules/es.array.map.js\");\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ \"./node_modules/core-js/modules/es.function.name.js\");\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ \"./node_modules/core-js/modules/web.dom-collections.for-each.js\");\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ \"./node_modules/core-js/modules/es.object.to-string.js\");\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ \"./node_modules/core-js/modules/web.dom-collections.iterator.js\");\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ \"./node_modules/core-js/modules/es.regexp.exec.js\");\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.string.replace.js */ \"./node_modules/core-js/modules/es.string.replace.js\");\n/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.string.split.js */ \"./node_modules/core-js/modules/es.string.split.js\");\n/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var lodash_lowerFirst__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! lodash/lowerFirst */ \"./node_modules/lodash/lowerFirst.js\");\n/* harmony import */ var lodash_lowerFirst__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(lodash_lowerFirst__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var lodash_camelCase__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! lodash/camelCase */ \"./node_modules/lodash/camelCase.js\");\n/* harmony import */ var lodash_camelCase__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(lodash_camelCase__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var lodash_find__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! lodash/find */ \"./node_modules/lodash/find.js\");\n/* harmony import */ var lodash_find__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(lodash_find__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var lodash_isEqual__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! lodash/isEqual */ \"./node_modules/lodash/isEqual.js\");\n/* harmony import */ var lodash_isEqual__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(lodash_isEqual__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _components_widgets_Settings_vue__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @/components/widgets/Settings.vue */ \"./src/components/widgets/Settings.vue\");\n/* harmony import */ var vue_custom_scrollbar__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! vue-custom-scrollbar */ \"./node_modules/vue-custom-scrollbar/dist/vueScrollbar.umd.min.js\");\n/* harmony import */ var vue_custom_scrollbar__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(vue_custom_scrollbar__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var vue_custom_scrollbar_dist_vueScrollbar_css__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! vue-custom-scrollbar/dist/vueScrollbar.css */ \"./node_modules/vue-custom-scrollbar/dist/vueScrollbar.css\");\n/* harmony import */ var vue_custom_scrollbar_dist_vueScrollbar_css__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(vue_custom_scrollbar_dist_vueScrollbar_css__WEBPACK_IMPORTED_MODULE_14__);\n\n\n\n\n\n\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n\n\nvar widgetsComponents = __webpack_require__(\"./src/widgets sync .vue$\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'side-bar',\n components: {\n Settings: _components_widgets_Settings_vue__WEBPACK_IMPORTED_MODULE_12__[\"default\"],\n vueCustomScrollbar: vue_custom_scrollbar__WEBPACK_IMPORTED_MODULE_13___default.a\n },\n data: function data() {\n return {\n isLoading: true,\n comps: [],\n apps: [],\n scrollSettings: {\n suppressScrollY: false,\n suppressScrollX: true,\n wheelPropagation: false\n },\n widgetsSettings: []\n };\n },\n computed: {\n activeApps: function activeApps() {\n var _this = this;\n\n var newArray = this.widgetsSettings.map(function (item) {\n var obj = lodash_find__WEBPACK_IMPORTED_MODULE_10___default()(_this.apps, function (o) {\n return o.app.name == item.name;\n });\n return obj;\n });\n return newArray;\n },\n sidebarOpen: function sidebarOpen() {\n return this.$store.state.sidebarOpen;\n }\n },\n created: function created() {\n var _this2 = this;\n\n widgetsComponents.keys().forEach(function (fileName) {\n var componentName = lodash_lowerFirst__WEBPACK_IMPORTED_MODULE_8___default()(lodash_camelCase__WEBPACK_IMPORTED_MODULE_9___default()(fileName.split('/').pop().replace(/\\.\\w+$/, '')));\n\n _this2.comps.push(componentName);\n\n _this2.apps.push({\n app: __webpack_require__(\"./src/widgets sync recursive ^\\\\.\\\\/.*$\")(\"./\".concat(fileName.replace(\"./\", \"\"))).default\n });\n });\n },\n mounted: function mounted() {\n this.getConfig();\n },\n methods: {\n /**\n * @description: Get Widgets Configs\n * @return {*} void\n */\n getConfig: function getConfig() {\n var _this3 = this;\n\n var initData = this.getInitData();\n this.$api.info.widgetsConfig().then(function (res) {\n if (res.status == 200) {\n if (res.data === \"\") {\n _this3.saveData(initData);\n\n _this3.widgetsSettings = initData;\n _this3.isLoading = false;\n } else {\n _this3.diffAndCombineData(initData, res.data.data);\n }\n }\n });\n },\n diffAndCombineData: function diffAndCombineData(initData, remoteData) {\n var newData = initData.map(function (item) {\n var remoteItem = lodash_find__WEBPACK_IMPORTED_MODULE_10___default()(remoteData, function (el) {\n return el.name == item.name;\n });\n\n if (remoteItem && item.name === remoteItem.name) {\n return {\n name: item.name,\n show: item.show === remoteItem.show ? item.show : remoteItem.show\n };\n } else {\n return {\n name: item.name,\n show: item.show\n };\n }\n });\n this.widgetsSettings = newData;\n\n if (!lodash_isEqual__WEBPACK_IMPORTED_MODULE_11___default()(newData, remoteData)) {\n this.saveData(newData);\n }\n\n this.isLoading = false;\n },\n\n /**\n * @description: Get Local widgets datas\n * @return {Array} array of widgets\n */\n getInitData: function getInitData() {\n return this.apps.map(function (item) {\n //console.log(item);\n return {\n name: item.app.name,\n show: item.app.initShow\n };\n });\n },\n\n /**\n * @description: Save Widgets Configs\n * @return {*} void\n */\n saveData: function saveData(data) {\n var _this4 = this;\n\n this.$api.info.saveWidgetsConfig(data).then(function (res) {\n if (res.data.success == 200) {\n _this4.widgetsSettings = res.data.data;\n }\n });\n },\n handleChange: function handleChange(data) {\n this.widgetsSettings = data;\n this.saveData(this.widgetsSettings);\n },\n checkShow: function checkShow(name) {\n var obj = lodash_find__WEBPACK_IMPORTED_MODULE_10___default()(this.widgetsSettings, function (o) {\n return name == o.name;\n });\n return obj.show;\n }\n }\n});\n\n//# sourceURL=webpack:///./src/components/SideBar.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/Storage/DriveItem.vue?vue&type=script&lang=js&": -/*!**************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Storage/DriveItem.vue?vue&type=script&lang=js& ***! - \**************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mixins_mixin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/mixins/mixin */ \"./src/mixins/mixin.js\");\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: \"drive-item\",\n mixins: [_mixins_mixin__WEBPACK_IMPORTED_MODULE_0__[\"mixin\"]],\n props: {\n item: {\n type: Object,\n default: null\n }\n }\n});\n\n//# sourceURL=webpack:///./src/components/Storage/DriveItem.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/Storage/StorageItem.vue?vue&type=script&lang=js&": -/*!****************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Storage/StorageItem.vue?vue&type=script&lang=js& ***! - \****************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mixins_mixin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/mixins/mixin */ \"./src/mixins/mixin.js\");\n/* harmony import */ var lodash_delay__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/delay */ \"./node_modules/lodash/delay.js\");\n/* harmony import */ var lodash_delay__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_delay__WEBPACK_IMPORTED_MODULE_1__);\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: \"drive-item\",\n mixins: [_mixins_mixin__WEBPACK_IMPORTED_MODULE_0__[\"mixin\"]],\n props: {\n item: {\n type: Object,\n default: null\n }\n },\n data: function data() {\n return {\n isFormating: false,\n isRemoving: false\n };\n },\n methods: {\n removeStorage: function removeStorage(path, mount_point) {\n var _this2 = this;\n\n this.isRemoving = true;\n this.$buefy.dialog.prompt({\n title: this.$t('Remove'),\n message: this.$t('Enter the password to continue:'),\n inputAttrs: {\n type: \"password\"\n },\n trapFocus: true,\n confirmText: this.$t('OK'),\n cancelText: this.$t('Cancel'),\n onCancel: function onCancel() {\n _this2.isRemoving = false;\n },\n onConfirm: function onConfirm(value) {\n var data = {\n path: path,\n volume: mount_point,\n pwd: value\n };\n\n _this2.$api.disk.removeStorage(data).then(function (res) {\n if (res.data.success != 200) {\n _this2.isRemoving = false;\n\n _this2.$buefy.toast.open({\n duration: 3000,\n message: res.data.message,\n type: 'is-danger'\n });\n } else {\n var _this = _this2;\n lodash_delay__WEBPACK_IMPORTED_MODULE_1___default()(function () {\n _this.isRemoving = false;\n\n _this.$emit('getDiskList');\n }, 1000);\n }\n });\n }\n });\n },\n formatStorage: function formatStorage(path, mount_point) {\n var _this3 = this;\n\n this.isFormating = true;\n this.$buefy.dialog.prompt({\n title: this.$t('Format'),\n message: this.$t('Enter the password to continue:'),\n inputAttrs: {\n type: \"password\"\n },\n trapFocus: true,\n confirmText: this.$t('OK'),\n cancelText: this.$t('Cancel'),\n onCancel: function onCancel() {\n _this3.isFormating = false;\n },\n onConfirm: function onConfirm(value) {\n var data = {\n path: path,\n volume: mount_point,\n pwd: value\n };\n\n _this3.$api.disk.formatStorage(data).then(function (res) {\n if (res.data.success != 200) {\n _this3.isFormating = false;\n\n _this3.$buefy.toast.open({\n duration: 3000,\n message: res.data.message,\n type: 'is-danger'\n });\n } else {\n var _this = _this3;\n lodash_delay__WEBPACK_IMPORTED_MODULE_1___default()(function () {\n _this.isFormating = false;\n\n _this.$emit('getDiskList');\n }, 1000);\n }\n });\n }\n });\n }\n }\n});\n\n//# sourceURL=webpack:///./src/components/Storage/StorageItem.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/Storage/StorageManagerPanel.vue?vue&type=script&lang=js&": -/*!************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Storage/StorageManagerPanel.vue?vue&type=script&lang=js& ***! - \************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Users_liangjianli_go_CasaOSNew_CasaOS_UI_node_modules_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/esm/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js\");\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! regenerator-runtime/runtime.js */ \"./node_modules/regenerator-runtime/runtime.js\");\n/* harmony import */ var regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ \"./node_modules/core-js/modules/es.array.map.js\");\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ \"./node_modules/core-js/modules/es.function.name.js\");\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.includes.js */ \"./node_modules/core-js/modules/es.array.includes.js\");\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.string.includes.js */ \"./node_modules/core-js/modules/es.string.includes.js\");\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ \"./node_modules/core-js/modules/es.regexp.exec.js\");\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.string.replace.js */ \"./node_modules/core-js/modules/es.string.replace.js\");\n/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.number.constructor.js */ \"./node_modules/core-js/modules/es.number.constructor.js\");\n/* harmony import */ var core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var lottie_web_vue__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! lottie-web-vue */ \"./node_modules/lottie-web-vue/dist/lottie-web-vue.esm.js\");\n/* harmony import */ var vue_smooth_reflow__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! vue-smooth-reflow */ \"./node_modules/vue-smooth-reflow/dist/vue-smooth-reflow.min.js\");\n/* harmony import */ var vue_smooth_reflow__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(vue_smooth_reflow__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var lodash_delay__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! lodash/delay */ \"./node_modules/lodash/delay.js\");\n/* harmony import */ var lodash_delay__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(lodash_delay__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var lodash_max__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! lodash/max */ \"./node_modules/lodash/max.js\");\n/* harmony import */ var lodash_max__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(lodash_max__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var lodash_orderBy__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! lodash/orderBy */ \"./node_modules/lodash/orderBy.js\");\n/* harmony import */ var lodash_orderBy__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(lodash_orderBy__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var vee_validate__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! vee-validate */ \"./node_modules/vee-validate/dist/vee-validate.esm.js\");\n/* harmony import */ var _mixins_mixin__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../mixins/mixin */ \"./src/mixins/mixin.js\");\n/* harmony import */ var _DriveItem_vue__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./DriveItem.vue */ \"./src/components/Storage/DriveItem.vue\");\n/* harmony import */ var _StorageItem_vue__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./StorageItem.vue */ \"./src/components/Storage/StorageItem.vue\");\n\n\n\n\n\n\n\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: \"storage-manager-panel\",\n components: {\n LottieAnimation: lottie_web_vue__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n ValidationObserver: vee_validate__WEBPACK_IMPORTED_MODULE_14__[\"ValidationObserver\"],\n ValidationProvider: vee_validate__WEBPACK_IMPORTED_MODULE_14__[\"ValidationProvider\"],\n DriveItem: _DriveItem_vue__WEBPACK_IMPORTED_MODULE_16__[\"default\"],\n StorageItem: _StorageItem_vue__WEBPACK_IMPORTED_MODULE_17__[\"default\"]\n },\n mixins: [vue_smooth_reflow__WEBPACK_IMPORTED_MODULE_10___default.a, _mixins_mixin__WEBPACK_IMPORTED_MODULE_15__[\"mixin\"]],\n data: function data() {\n return {\n isLoading: true,\n creatIsShow: false,\n isCreating: false,\n isValiding: false,\n activeTab: 0,\n activeDisk: \"\",\n createStorageName: \"\",\n createStoragePath: \"\",\n createStorageSeiral: \"\",\n createStorageType: \"\",\n diskData: [],\n unDiskData: [],\n storageData: []\n };\n },\n computed: {\n title: function title() {\n return this.creatIsShow ? this.$t('Create Storage') : this.$t('Storage Manager');\n }\n },\n mounted: function mounted() {\n //Smooth \n this.$smoothReflow({\n el: '.modal-card',\n property: ['height', 'width'],\n transition: 'height .25s ease, width .75s ease-out'\n }); //Get disk list\n\n var _this = this;\n\n lodash_delay__WEBPACK_IMPORTED_MODULE_11___default()(function () {\n _this.getDiskList();\n }, 150);\n },\n methods: {\n /**\n * @description: Get disk list\n * @param {} \n * @return {void} \n */\n getDiskList: function getDiskList() {\n var _this2 = this;\n\n var showDefault = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n this.$api.disk.diskList().then(function (res) {\n if (res.data.success === 200) {\n _this2.diskData = res.data.data.drive;\n _this2.unDiskData = res.data.data.avail;\n _this2.storageData = lodash_orderBy__WEBPACK_IMPORTED_MODULE_13___default()(res.data.data.storage, ['create_at'], ['asc']).map(function (disk) {\n return {\n name: disk.name,\n isSystem: disk.name == \"System\",\n fsType: disk.type,\n size: disk.size,\n availSize: disk.avail,\n usePercent: 100 - Math.floor(disk.avail * 100 / disk.size),\n diskName: disk.drive_name,\n path: disk.path,\n mount_point: disk.mountpoint\n };\n });\n\n var diskNumArray = _this2.storageData.map(function (disk) {\n if (disk.name.includes(\"Storage\")) {\n var diskNum = disk.name.replace(\"Storage\", \"\");\n return /^\\d+$/.test(diskNum) ? Number(diskNum) : 0;\n } else {\n return 0;\n }\n });\n\n var nextMaxNum = lodash_max__WEBPACK_IMPORTED_MODULE_12___default()(diskNumArray) + 1;\n\n if (_this2.unDiskData.length > 0) {\n _this2.createStoragePath = _this2.unDiskData[0].path;\n _this2.createStorageSeiral = _this2.unDiskData[0].serial;\n _this2.createStorageType = _this2.getDiskType(_this2.unDiskData[0].need_format);\n _this2.createStorageName = \"Storage\" + nextMaxNum;\n _this2.activeDisk = 0;\n }\n\n if (showDefault) {\n _this2.showDefault();\n\n _this2.isCreating = false;\n _this2.createStorageName = \"\";\n }\n\n _this2.isLoading = false;\n }\n });\n },\n\n /**\n * @description: Disk choose handle\n * @param {int} evt index of select \n * @return {void} \n */\n onDiskChoose: function onDiskChoose(index) {\n this.createStoragePath = this.unDiskData[index].path;\n this.createStorageSeiral = this.unDiskData[index].serial;\n this.createStorageType = this.getDiskType(this.unDiskData[index].need_format);\n },\n showDefault: function showDefault() {\n this.creatIsShow = false;\n },\n showCreate: function showCreate() {\n this.creatIsShow = true;\n var diskNumArray = this.storageData.map(function (disk) {\n if (disk.name.includes(\"Storage\")) {\n var diskNum = disk.name.replace(\"Storage\", \"\");\n return /^\\d+$/.test(diskNum) ? Number(diskNum) : 0;\n } else {\n return 0;\n }\n });\n var nextMaxNum = lodash_max__WEBPACK_IMPORTED_MODULE_12___default()(diskNumArray) + 1;\n this.createStorageName = \"Storage\" + nextMaxNum;\n },\n\n /**\n * @description: Validate form async\n * @param {Object} ref ref of component\n * @return {Boolean} \n */\n checkStep: function checkStep(ref) {\n return Object(_Users_liangjianli_go_CasaOSNew_CasaOS_UI_node_modules_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__[\"default\"])( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n var isValid;\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return ref.validate();\n\n case 2:\n isValid = _context.sent;\n return _context.abrupt(\"return\", isValid);\n\n case 4:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }))();\n },\n\n /**\n * @description: Create a new storage\n * @param {} \n * @return {void} \n */\n createStorge: function createStorge(needFormat) {\n var _this3 = this;\n\n this.isValiding = true;\n this.checkStep(this.$refs.ob1).then(function (val) {\n _this3.isValiding = false;\n\n if (val) {\n _this3.submitCreate(needFormat);\n }\n });\n },\n submitCreate: function submitCreate(format) {\n var _this4 = this;\n\n this.isCreating = true;\n var data = {\n path: this.createStoragePath,\n serial: this.createStorageSeiral,\n name: this.createStorageName,\n format: format\n };\n this.$api.disk.addStorage(data).then(function (res) {\n if (res.data.success != 200) {\n _this4.isCreating = false;\n\n _this4.$buefy.toast.open({\n duration: 3000,\n message: res.data.message,\n type: 'is-danger'\n });\n } else {\n _this4.getDiskList(true);\n }\n });\n },\n getDiskType: function getDiskType(need_format) {\n return need_format ? \"format\" : \"mountable\";\n }\n }\n});\n\n//# sourceURL=webpack:///./src/components/Storage/StorageManagerPanel.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/TopBar.vue?vue&type=script&lang=js&": -/*!***************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/TopBar.vue?vue&type=script&lang=js& ***! - \***************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.includes.js */ \"./node_modules/core-js/modules/es.array.includes.js\");\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.string.includes.js */ \"./node_modules/core-js/modules/es.string.includes.js\");\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _account_AccountPanel_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./account/AccountPanel.vue */ \"./src/components/account/AccountPanel.vue\");\n/* harmony import */ var _logsAndTerminal_TerminalPanel_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./logsAndTerminal/TerminalPanel.vue */ \"./src/components/logsAndTerminal/TerminalPanel.vue\");\n/* harmony import */ var _settings_PortPanel_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./settings/PortPanel.vue */ \"./src/components/settings/PortPanel.vue\");\n/* harmony import */ var _mixins_mixin__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../mixins/mixin */ \"./src/mixins/mixin.js\");\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: \"top-bar\",\n data: function data() {\n return {\n timer: 0,\n barData: {\n auto_update: false,\n background: \"\",\n background_type: \"\",\n search_engine: \"https://duckduckgo.com/?q=\",\n search_switch: false,\n shortcuts_switch: false,\n widgets_switch: false,\n lang: this.getInitLang()\n },\n updateInfo: {\n current_version: '0',\n is_need: false,\n version: Object\n },\n isUpdating: false,\n latestText: \"Currently the latest version\",\n updateText: \"A new version is available!\",\n userInfo: this.$store.state.userinfo,\n port: \"\"\n };\n },\n mixins: [_mixins_mixin__WEBPACK_IMPORTED_MODULE_5__[\"mixin\"]],\n created: function created() {\n this.getConfig();\n this.getPort();\n },\n computed: {\n sidebarIcon: function sidebarIcon() {\n return this.$store.state.sidebarOpen ? \"close\" : \"menu\";\n },\n sidebarIconLabel: function sidebarIconLabel() {\n return this.$store.state.sidebarOpen ? \"Hide Sidebar\" : \"Show SideBar\";\n }\n },\n mounted: function mounted() {\n this.checkVersion();\n this.getUserInfo();\n },\n methods: {\n // getInitLang\n getInitLang: function getInitLang() {\n var lang = localStorage.getItem('lang') ? localStorage.getItem('lang') : this.getLangFromBrowser();\n lang = lang.includes(\"_\") ? lang : \"en_us\";\n return lang;\n },\n\n /**\n * @description: Get CasaOs Configs\n * @return {*} void\n */\n getConfig: function getConfig() {\n var _this = this;\n\n this.$api.info.systemConfig().then(function (res) {\n if (res.data == undefined || res.data == '') {\n _this.barData.lang = _this.getLangFromBrowser();\n\n _this.$api.info.saveSystemConfig(_this.barData).then(function (res) {\n if (res.data.success == 200) {\n _this.getConfig();\n }\n });\n }\n\n if (res.data.success == 200) {\n _this.barData = res.data.data;\n var lang = res.data.data.lang;\n lang = lang.includes(\"_\") ? lang : \"en_us\";\n\n _this.setLang(lang);\n\n _this.updateStore();\n\n _this.$emit('changeSiteLoading');\n }\n });\n },\n\n /**\n * @description: Save CasaOs Configs\n * @return {*} void\n */\n saveData: function saveData() {\n this.$api.info.saveSystemConfig(this.barData);\n var lang = this.barData.lang;\n lang = lang.includes(\"_\") ? lang : \"en_us\";\n this.setLang(lang);\n this.updateStore();\n },\n\n /**\n * @description: Update search Engine in store\n * @return {*} void\n */\n updateStore: function updateStore() {\n this.$store.commit('changeSearchEngine', this.barData.search_engine);\n },\n\n /**\n * @description: Get CasaOs WebUI port\n * @return {*} void\n */\n getPort: function getPort() {\n var _this2 = this;\n\n this.$api.info.getSystemPort().then(function (res) {\n if (res.data.success == 200) {\n _this2.port = res.data.data;\n }\n });\n },\n\n /**\n * @description: Show Port panel\n * @return {*} void\n */\n showPortPanel: function showPortPanel() {\n this.$buefy.modal.open({\n parent: this,\n component: _settings_PortPanel_vue__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n hasModalCard: true,\n customClass: 'account-modal',\n trapFocus: true,\n canCancel: ['escape'],\n scroll: \"keep\",\n animation: \"zoom-in\",\n events: {},\n props: {\n initPort: this.port\n }\n });\n },\n\n /**\n * @description: Handle Dropmenu state\n * @param {Boolean} isOpen\n * @return {*} void\n */\n onOpen: function onOpen(isOpen) {\n if (isOpen) {\n this.checkVersion();\n }\n },\n checkVersion: function checkVersion() {\n var _this3 = this;\n\n this.$api.info.checkVersion().then(function (res) {\n if (res.data.success == 200) {\n _this3.updateInfo = res.data.data; // this.updateInfo.is_need = true\n }\n });\n },\n\n /**\n * @description: Update System Version and check update state\n * @return {*} void\n */\n updateSystem: function updateSystem() {\n this.isUpdating = true;\n this.$api.info.updateSystem().then(function (res) {\n if (res.data.success == 200) {\n console.log(res.data.data);\n }\n });\n this.checkUpdateState();\n },\n\n /**\n * @description: check update state if is_need is false then reload page\n * @return {*} void\n */\n checkUpdateState: function checkUpdateState() {\n var _this4 = this;\n\n this.timer = setInterval(function () {\n _this4.$api.info.checkVersion().then(function (res) {\n if (res.data.success == 200) {\n if (!res.data.data.is_need) {\n clearInterval(_this4.timer);\n location.reload();\n }\n }\n });\n }, 3000);\n },\n\n /**\n * @description: Logout\n * @return {*} void\n */\n logout: function logout() {\n this.$router.push(\"/logout\");\n },\n\n /**\n * @description: Get user info\n * @return {*} void\n */\n getUserInfo: function getUserInfo() {\n var _this5 = this;\n\n this.$api.user.getUserInfo().then(function (res) {\n if (res.data.success == 200) {\n _this5.$store.commit('changeUserInfo', res.data.data);\n\n _this5.userInfo = res.data.data;\n }\n });\n },\n\n /**\n * @description: Show Account panel\n * @return {*} void\n */\n showAccountPanel: function showAccountPanel() {\n this.$buefy.modal.open({\n parent: this,\n component: _account_AccountPanel_vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n hasModalCard: true,\n customClass: 'account-modal',\n trapFocus: true,\n canCancel: ['escape'],\n scroll: \"keep\",\n animation: \"zoom-in\",\n events: {},\n props: {}\n });\n },\n\n /**\n * @description: Show Terminal panel\n * @return {*} void\n */\n showTerminalPanel: function showTerminalPanel() {\n this.$buefy.modal.open({\n parent: this,\n component: _logsAndTerminal_TerminalPanel_vue__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n hasModalCard: true,\n customClass: 'terminal-modal',\n trapFocus: true,\n canCancel: [],\n scroll: \"keep\",\n animation: \"zoom-in\"\n });\n },\n\n /**\n * @description: Show SideBar\n * @return {*} void\n */\n showSideBar: function showSideBar() {\n this.$store.commit('changeSideBarState');\n }\n }\n});\n\n//# sourceURL=webpack:///./src/components/TopBar.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/account/AccountPanel.vue?vue&type=script&lang=js&": -/*!*****************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/account/AccountPanel.vue?vue&type=script&lang=js& ***! - \*****************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vee_validate__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vee-validate */ \"./node_modules/vee-validate/dist/vee-validate.esm.js\");\n/* harmony import */ var _plugins_vee_validate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/plugins/vee-validate */ \"./src/plugins/vee-validate.js\");\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: \"account-panel\",\n data: function data() {\n return {\n isLoading: false,\n state: 1,\n username: this.$store.state.userinfo.user_name,\n oriPassword: \"\",\n password: '',\n confirmation: \"\",\n message: \"\",\n notificationShow: false\n };\n },\n components: {\n ValidationObserver: vee_validate__WEBPACK_IMPORTED_MODULE_0__[\"ValidationObserver\"],\n ValidationProvider: vee_validate__WEBPACK_IMPORTED_MODULE_0__[\"ValidationProvider\"]\n },\n computed: {\n title: function title() {\n var val = \"\";\n\n switch (this.state) {\n case 1:\n val = \"\";\n break;\n\n case 2:\n val = this.$t(\"Change name\");\n break;\n\n case 3:\n val = this.$t(\"Change Password\");\n break;\n\n default:\n break;\n }\n\n return val;\n },\n userInfo: function userInfo() {\n return this.$store.state.userinfo;\n }\n },\n methods: {\n goto: function goto(val) {\n this.state = val;\n\n if (val == 1) {\n this.username = this.userInfo.user_name;\n }\n },\n updateUserInfo: function updateUserInfo() {\n var _this = this;\n\n this.$api.user.getUserInfo().then(function (res) {\n if (res.data.success == 200) {\n _this.$store.commit('changeUserInfo', res.data.data);\n\n _this.goto(1);\n }\n });\n },\n saveUser: function saveUser() {\n var _this2 = this;\n\n this.isLoading = true;\n this.$api.user.changeUserName({\n username: this.username,\n oldname: this.userInfo.user_name\n }).then(function (res) {\n _this2.isLoading = false;\n\n if (res.data.success == 200) {\n _this2.updateUserInfo();\n }\n });\n },\n savePassword: function savePassword() {\n var _this3 = this;\n\n this.isLoading = true;\n this.$api.user.changePassword({\n pwd: this.password,\n old_pwd: this.oriPassword\n }).then(function (res) {\n _this3.isLoading = false;\n\n if (res.data.success == 200) {\n _this3.updateUserInfo();\n } else {\n _this3.notificationShow = true;\n _this3.message = res.data.message;\n }\n });\n }\n }\n});\n\n//# sourceURL=webpack:///./src/components/account/AccountPanel.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/filebrowser/FileEntryCard.vue?vue&type=script&lang=js&": -/*!**********************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/filebrowser/FileEntryCard.vue?vue&type=script&lang=js& ***! - \**********************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _FilePanel_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./FilePanel.vue */ \"./src/components/filebrowser/FilePanel.vue\");\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n methods: {\n /**\n * @description: SHow FileBrowser Panel\n * @return {*} void\n */\n showFilePanel: function showFilePanel() {\n try {\n var appName = \"Files\";\n var action = \"open\";\n this.$api.analyse.analyseAppAction(appName, action); // eslint-disable-next-line no-empty\n } catch (err) {}\n\n this.$buefy.modal.open({\n parent: this,\n component: _FilePanel_vue__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n hasModalCard: true,\n customClass: 'file-panel',\n trapFocus: true,\n canCancel: [''],\n scroll: \"clip\",\n animation: \"zoom-in\",\n props: {},\n events: {\n 'afterLeave': function afterLeave() {\n console.log('enter');\n }\n }\n });\n }\n }\n});\n\n//# sourceURL=webpack:///./src/components/filebrowser/FileEntryCard.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/filebrowser/FilePanel.vue?vue&type=script&lang=js&": -/*!******************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/filebrowser/FilePanel.vue?vue&type=script&lang=js& ***! - \******************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ \"./node_modules/core-js/modules/es.regexp.exec.js\");\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.string.split.js */ \"./node_modules/core-js/modules/es.string.split.js\");\n/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.join.js */ \"./node_modules/core-js/modules/es.array.join.js\");\n/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ \"./node_modules/core-js/modules/es.array.concat.js\");\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var lodash_orderBy__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash/orderBy */ \"./node_modules/lodash/orderBy.js\");\n/* harmony import */ var lodash_orderBy__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_orderBy__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var lodash_dropRight__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lodash/dropRight */ \"./node_modules/lodash/dropRight.js\");\n/* harmony import */ var lodash_dropRight__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(lodash_dropRight__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _mixins_mixin__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/mixins/mixin */ \"./src/mixins/mixin.js\");\n/* harmony import */ var _sidebar_TreeList_vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./sidebar/TreeList.vue */ \"./src/components/filebrowser/sidebar/TreeList.vue\");\n/* harmony import */ var _components_GirdView_vue__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./components/GirdView.vue */ \"./src/components/filebrowser/components/GirdView.vue\");\n/* harmony import */ var _components_ListView_vue__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./components/ListView.vue */ \"./src/components/filebrowser/components/ListView.vue\");\n/* harmony import */ var _components_FileBreadcrumb_vue__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./components/FileBreadcrumb.vue */ \"./src/components/filebrowser/components/FileBreadcrumb.vue\");\n/* harmony import */ var _components_EmptyHolder_vue__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./components/EmptyHolder.vue */ \"./src/components/filebrowser/components/EmptyHolder.vue\");\n/* harmony import */ var _modals_DetailModal_vue__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./modals/DetailModal.vue */ \"./src/components/filebrowser/modals/DetailModal.vue\");\n/* harmony import */ var _modals_NewFolderModal_vue__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./modals/NewFolderModal.vue */ \"./src/components/filebrowser/modals/NewFolderModal.vue\");\n/* harmony import */ var _modals_NewFileModal_vue__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./modals/NewFileModal.vue */ \"./src/components/filebrowser/modals/NewFileModal.vue\");\n/* harmony import */ var _viewers_VideoPlayer_vue__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./viewers/VideoPlayer.vue */ \"./src/components/filebrowser/viewers/VideoPlayer.vue\");\n/* harmony import */ var _viewers_CodeEditor_vue__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./viewers/CodeEditor.vue */ \"./src/components/filebrowser/viewers/CodeEditor.vue\");\n/* harmony import */ var _viewers_ImageViewer_vue__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./viewers/ImageViewer.vue */ \"./src/components/filebrowser/viewers/ImageViewer.vue\");\n/* harmony import */ var _viewers_PdfViewer_vue__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./viewers/PdfViewer.vue */ \"./src/components/filebrowser/viewers/PdfViewer.vue\");\n/* harmony import */ var _uploader_components_uploader_vue__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./uploader/components/uploader.vue */ \"./src/components/filebrowser/uploader/components/uploader.vue\");\n/* harmony import */ var _uploader_components_unsupport_vue__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./uploader/components/unsupport.vue */ \"./src/components/filebrowser/uploader/components/unsupport.vue\");\n/* harmony import */ var _uploader_components_list_vue__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./uploader/components/list.vue */ \"./src/components/filebrowser/uploader/components/list.vue\");\n\n\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n mixins: [_mixins_mixin__WEBPACK_IMPORTED_MODULE_6__[\"mixin\"]],\n provide: function provide() {\n return {\n filePanel: this\n };\n },\n components: {\n ListView: _components_ListView_vue__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n GirdView: _components_GirdView_vue__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n FileBreadcrumb: _components_FileBreadcrumb_vue__WEBPACK_IMPORTED_MODULE_10__[\"default\"],\n TreeList: _sidebar_TreeList_vue__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n Uploader: _uploader_components_uploader_vue__WEBPACK_IMPORTED_MODULE_19__[\"default\"],\n UploaderUnsupport: _uploader_components_unsupport_vue__WEBPACK_IMPORTED_MODULE_20__[\"default\"],\n UploaderList: _uploader_components_list_vue__WEBPACK_IMPORTED_MODULE_21__[\"default\"],\n CodeEditor: _viewers_CodeEditor_vue__WEBPACK_IMPORTED_MODULE_16__[\"default\"],\n VideoPlayer: _viewers_VideoPlayer_vue__WEBPACK_IMPORTED_MODULE_15__[\"default\"],\n ImageViewer: _viewers_ImageViewer_vue__WEBPACK_IMPORTED_MODULE_17__[\"default\"],\n PdfViewer: _viewers_PdfViewer_vue__WEBPACK_IMPORTED_MODULE_18__[\"default\"],\n EmptyHolder: _components_EmptyHolder_vue__WEBPACK_IMPORTED_MODULE_11__[\"default\"]\n },\n data: function data() {\n return {\n isLoading: true,\n isModalOpen: false,\n isDragIn: false,\n isShowDetial: false,\n panelType: null,\n currentItem: null,\n rootPath: \"/\",\n currentPath: \"\",\n currentPathName: \"\",\n isViewGird: true,\n listData: [],\n file: null,\n timeout: null,\n uploadPercentage: 0,\n hasPasteData: this.$store.state.operateObject != null,\n uploaderInstance: {},\n options: {\n target: this.getTargetUrl(),\n testChunks: true,\n uploadMethod: \"POST\",\n successStatuses: [200, 201, 202, 2002] // chunkSize: 1024 * 1024 * 1024 * 1024\n\n },\n attrs: {\n accept: '*'\n },\n // Uploader List\n showUploadList: false,\n uploaderListHeaderText: \"Uploading\"\n };\n },\n computed: {\n viewIcon: function viewIcon() {\n return this.$store.state.isViewGird ? \"view-grid-outline\" : \"format-list-bulleted\";\n },\n listView: function listView() {\n return this.$store.state.isViewGird ? \"gird-view\" : \"list-view\";\n }\n },\n watch: {\n '$store.state.operateObject': {\n handler: function handler(val) {\n this.hasPasteData = val != null;\n },\n deep: true\n }\n },\n mounted: function mounted() {\n var _this = this;\n\n this.init();\n this.setUploaderOpts();\n document.addEventListener('contextmenu', this.hideContextMenu); // Listen to ESC button to exit preview\n\n document.onkeyup = function (e) {\n switch (e.code) {\n case 'Escape':\n if (_this.isShowDetial) {\n _this.$refs.previewPanel.close();\n } else {\n _this.$emit('close');\n }\n\n break;\n\n case 'Backspace':\n _this.backLevel();\n\n break;\n\n default:\n break;\n }\n }; // paste\n\n\n document.onpaste = function () {\n _this.paste();\n };\n },\n destroyed: function destroyed() {\n this.uploaderInstance.off('dragover');\n this.uploaderInstance.off('uploadStart');\n document.removeEventListener('contextmenu', this.hideContextMenu);\n this.$store.commit('changeOperateObject', null);\n document.onpaste = null;\n document.onkeyup = null;\n },\n methods: {\n // Init Funtion\n init: function init() {\n this.getFileList(this.rootPath);\n },\n // Get Tree List\n getFileList: function getFileList(path) {\n var _this2 = this;\n\n this.isLoading = true; // path = path.replace(\"//\", \"/\")\n\n this.$api.file.dirPath(path).then(function (res) {\n if (res.data.success == 200) {\n _this2.isLoading = false;\n _this2.currentPath = path;\n _this2.currentPathName = path.split(\"/\").pop();\n _this2.uploaderInstance.opts.query = {\n path: _this2.currentPath\n };\n\n _this2.$store.commit('changeCurrentPath', path);\n\n _this2.listData = lodash_orderBy__WEBPACK_IMPORTED_MODULE_4___default()(res.data.data, ['is_dir'], ['desc']);\n }\n });\n },\n // Reload current folder\n reload: function reload() {\n this.getFileList(this.currentPath);\n this.$refs.navBar.getDirList();\n },\n // Change View\n changeView: function changeView() {\n this.isViewGird = !this.$store.state.isViewGird;\n this.$store.commit('changeViewGird', this.isViewGird);\n },\n backLevel: function backLevel() {\n if (this.isModalOpen) return false;\n var pathArr = this.$store.state.currentPath.substr(1).split(\"/\");\n\n if (pathArr.length == 1) {\n return false;\n }\n\n var newPath = \"/\" + lodash_dropRight__WEBPACK_IMPORTED_MODULE_5___default()(pathArr).join(\"/\");\n this.getFileList(newPath);\n },\n setUploaderOpts: function setUploaderOpts() {\n var _this3 = this;\n\n this.uploaderInstance = this.$refs.uploader.uploader;\n this.assignUploadButtons(); // Drag Over\n\n this.uploaderInstance.on('dragover', function (event) {\n _this3.isDragIn = true;\n\n if (_this3.timeout !== null) {\n clearTimeout(_this3.timeout);\n }\n\n _this3.timeout = setTimeout(function () {\n _this3.isDragIn = false;\n _this3.timeout = null;\n }, 120);\n event.stopPropagation();\n event.preventDefault();\n });\n this.uploaderInstance.on('uploadStart', function () {\n _this3.isDragIn = false;\n _this3.showUploadList = true;\n _this3.uploaderListHeaderText = \"Uploading\";\n });\n this.uploaderInstance.on('complete', function () {\n _this3.getFileList(_this3.currentPath);\n\n _this3.uploaderListHeaderText = \"Completed\";\n }); // this.uploaderInstance.on('catchAll', (evt,a,b,c) => {\n // console.log(evt,a,b,c);\n // })\n },\n closeUploaderList: function closeUploaderList() {\n this.showUploadList = false;\n this.uploaderInstance.cancel();\n },\n assignUploadButtons: function assignUploadButtons() {\n this.uploaderInstance.assignDrop(document.getElementById('dropTarget'));\n this.uploaderInstance.assignBrowse(document.getElementById('upfile-btn'));\n this.uploaderInstance.assignBrowse(document.getElementById('upfolder-btn'), true);\n },\n // Show Detail Modal\n showDetailModal: function showDetailModal(item) {\n var _this4 = this;\n\n this.isModalOpen = true;\n this.panelType = this.getPanelType(item);\n\n if (this.panelType !== null) {\n this.currentItem = item;\n this.isShowDetial = true;\n } else {\n this.$buefy.modal.open({\n parent: this,\n component: _modals_DetailModal_vue__WEBPACK_IMPORTED_MODULE_12__[\"default\"],\n hasModalCard: true,\n customClass: 'detail-panel file-modal',\n trapFocus: true,\n canCancel: ['escape'],\n scroll: \"keep\",\n animation: \"zoom-in\",\n props: {\n item: item\n },\n events: {\n 'close': function close() {\n _this4.isModalOpen = false;\n }\n }\n });\n }\n },\n // Show New Folder Modal\n showNewFolderModal: function showNewFolderModal() {\n var _this5 = this;\n\n this.isModalOpen = true;\n this.$buefy.modal.open({\n parent: this,\n component: _modals_NewFolderModal_vue__WEBPACK_IMPORTED_MODULE_13__[\"default\"],\n hasModalCard: true,\n customClass: 'new-folder-panel file-modal',\n trapFocus: true,\n canCancel: [''],\n scroll: \"keep\",\n animation: \"zoom-in\",\n props: {\n currentPath: this.currentPath\n },\n events: {\n 'reload': function reload() {\n _this5.reload();\n },\n 'close': function close() {\n _this5.isModalOpen = false;\n }\n }\n });\n },\n // Show New File Modal\n showNewFileModal: function showNewFileModal() {\n var _this6 = this;\n\n this.isModalOpen = true;\n this.$buefy.modal.open({\n parent: this,\n component: _modals_NewFileModal_vue__WEBPACK_IMPORTED_MODULE_14__[\"default\"],\n hasModalCard: true,\n customClass: 'new-folder-panel file-modal',\n trapFocus: true,\n canCancel: [''],\n scroll: \"keep\",\n animation: \"zoom-in\",\n props: {\n currentPath: this.currentPath\n },\n events: {\n 'reload': function reload() {\n _this6.reload();\n },\n 'close': function close() {\n _this6.isModalOpen = false;\n }\n }\n });\n },\n paste: function paste() {\n var _this7 = this;\n\n var form = this.$store.state.operateObject.from;\n var to = this.$store.state.currentPath;\n var type = this.$store.state.operateObject.type;\n this.$api.file.operate(form, to, type).then(function (res) {\n if (res.data.success == 200) {\n _this7.$store.commit('changeOperateObject', null);\n\n _this7.getFileList(_this7.currentPath);\n } else {\n _this7.$buefy.toast.open({\n message: res.data.message,\n type: 'is-danger'\n });\n }\n });\n },\n hideContextMenu: function hideContextMenu() {\n this.$refs.moreBtn.isActive = false;\n },\n getTargetUrl: function getTargetUrl() {\n if (false) {} else {\n return \"http://\".concat(document.location.host, \"/v1/file/upload?token=\").concat(this.$store.state.token);\n }\n }\n }\n});\n\n//# sourceURL=webpack:///./src/components/filebrowser/FilePanel.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/filebrowser/components/ActionButton.vue?vue&type=script&lang=js&": -/*!********************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/filebrowser/components/ActionButton.vue?vue&type=script&lang=js& ***! - \********************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.number.constructor.js */ \"./node_modules/core-js/modules/es.number.constructor.js\");\n/* harmony import */ var core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_mixin__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/mixins/mixin */ \"./src/mixins/mixin.js\");\n/* harmony import */ var _modals_RenameModal_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../modals/RenameModal.vue */ \"./src/components/filebrowser/modals/RenameModal.vue\");\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n mixins: [_mixins_mixin__WEBPACK_IMPORTED_MODULE_1__[\"mixin\"]],\n props: {\n cols: Number,\n index: Number,\n item: Object\n },\n data: function data() {\n return {\n verticalPos: \"bottom\",\n isConfirmed: false\n };\n },\n computed: {\n horizontalPos: function horizontalPos() {\n return (this.index + 1) % this.cols == 0 ? \"left\" : \"right\";\n }\n },\n mounted: function mounted() {\n document.addEventListener('contextmenu', this.hideContextMenu);\n },\n destroyed: function destroyed() {\n document.removeEventListener('contextmenu', this.hideContextMenu);\n },\n methods: {\n dorpActiveChange: function dorpActiveChange($event, el) {\n if ($event) {\n this.isConfirmed = false;\n }\n\n var trigger = document.getElementById(el);\n var bottomOffset = window.innerHeight - trigger.getBoundingClientRect().y - 216;\n this.verticalPos = bottomOffset > 0 ? \"bottom\" : \"top\";\n },\n hideContextMenu: function hideContextMenu() {\n this.$refs.dropDown.isActive = false;\n },\n rename: function rename() {\n var _this = this;\n\n this.$refs.dropDown.toggle();\n this.$buefy.modal.open({\n parent: this,\n component: _modals_RenameModal_vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n hasModalCard: true,\n customClass: 'rename-panel file-modal',\n trapFocus: true,\n canCancel: [''],\n scroll: \"keep\",\n animation: \"zoom-in\",\n events: {\n 'reload': function reload() {\n _this.$emit(\"reload\");\n }\n },\n props: {\n item: this.item\n }\n });\n }\n }\n});\n\n//# sourceURL=webpack:///./src/components/filebrowser/components/ActionButton.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/filebrowser/components/ContextMenu.vue?vue&type=script&lang=js&": -/*!*******************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/filebrowser/components/ContextMenu.vue?vue&type=script&lang=js& ***! - \*******************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.number.constructor.js */ \"./node_modules/core-js/modules/es.number.constructor.js\");\n/* harmony import */ var core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.includes.js */ \"./node_modules/core-js/modules/es.array.includes.js\");\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.string.includes.js */ \"./node_modules/core-js/modules/es.string.includes.js\");\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _modals_RenameModal_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../modals/RenameModal.vue */ \"./src/components/filebrowser/modals/RenameModal.vue\");\n/* harmony import */ var _mixins_mixin__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/mixins/mixin */ \"./src/mixins/mixin.js\");\n\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n mixins: [_mixins_mixin__WEBPACK_IMPORTED_MODULE_4__[\"mixin\"]],\n inject: ['filePanel'],\n data: function data() {\n return {\n verticalPos: \"bottom\",\n horizontalPos: \"right\",\n isConfirmed: false,\n x: Number,\n y: Number,\n showDetial: false,\n ani: \"fade1\",\n item: {},\n hasPasteData: this.$store.state.operateObject != null\n };\n },\n computed: {\n close: function close() {\n return this.item == undefined;\n }\n },\n watch: {\n '$store.state.operateObject': {\n handler: function handler(val) {\n this.hasPasteData = val != null;\n },\n deep: true\n },\n showDetial: function showDetial(val) {\n if (!val) {\n this.assignBtn();\n }\n }\n },\n mounted: function mounted() {\n this.assignBtn();\n },\n methods: {\n open: function open(event, item) {\n var _this = this;\n\n var bounced = event.target.getAttribute('class').includes('dropdown-menu');\n\n if (!bounced) {\n this.showDetial = item != undefined;\n this.item = item;\n this.$refs.dropDown.isActive = false;\n this.$nextTick(function () {\n _this.x = event.clientX;\n _this.y = event.clientY;\n var rightOffset = window.innerWidth - event.clientX - 184;\n _this.horizontalPos = rightOffset > 0 ? \"right\" : \"left\";\n _this.$refs.dropDown.isActive = true;\n });\n }\n },\n assignBtn: function assignBtn() {\n var _this2 = this;\n\n this.$nextTick(function () {\n _this2.filePanel.uploaderInstance.assignBrowse(document.getElementById('upfileBtn'));\n\n _this2.filePanel.uploaderInstance.assignBrowse(document.getElementById('upfolderBtn'), true);\n });\n },\n dorpActiveChange: function dorpActiveChange($event, el) {\n if ($event) {\n this.isConfirmed = false;\n }\n\n var trigger = document.getElementById(el);\n var bottomOffset = window.innerHeight - trigger.getBoundingClientRect().y - 216;\n this.verticalPos = bottomOffset > 0 ? \"bottom\" : \"top\";\n },\n rename: function rename() {\n var _this3 = this;\n\n this.$refs.dropDown.toggle();\n this.$buefy.modal.open({\n parent: this,\n component: _modals_RenameModal_vue__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n hasModalCard: true,\n customClass: 'rename-panel file-modal',\n trapFocus: true,\n canCancel: [''],\n scroll: \"keep\",\n animation: \"zoom-in\",\n events: {\n 'reload': function reload() {\n _this3.filePanel.reload();\n }\n },\n props: {\n item: this.item\n }\n });\n },\n // Paste File\n paste: function paste() {\n var _this4 = this;\n\n this.$refs.dropDown.toggle();\n this.$api.file.operate(this.$store.state.operateObject.from, this.$store.state.currentPath, this.$store.state.operateObject.type).then(function (res) {\n if (res.data.success == 200) {\n _this4.$store.commit('changeOperateObject', null);\n\n _this4.filePanel.reload();\n } else {\n _this4.$buefy.toast.open({\n message: res.data.message,\n type: 'is-danger'\n });\n }\n });\n }\n }\n});\n\n//# sourceURL=webpack:///./src/components/filebrowser/components/ContextMenu.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/filebrowser/components/EmptyHolder.vue?vue&type=script&lang=js&": -/*!*******************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/filebrowser/components/EmptyHolder.vue?vue&type=script&lang=js& ***! - \*******************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mixins_mixin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/mixins/mixin */ \"./src/mixins/mixin.js\");\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n mixins: [_mixins_mixin__WEBPACK_IMPORTED_MODULE_0__[\"mixin\"]],\n inject: ['filePanel'],\n mounted: function mounted() {\n var _this = this;\n\n this.$nextTick(function () {\n _this.filePanel.uploaderInstance.assignBrowse(document.getElementById('eUpFileBtn'));\n\n _this.filePanel.uploaderInstance.assignBrowse(document.getElementById('eUpFolderBtn'), true);\n });\n }\n});\n\n//# sourceURL=webpack:///./src/components/filebrowser/components/EmptyHolder.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/filebrowser/components/FileBreadcrumb.vue?vue&type=script&lang=js&": -/*!**********************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/filebrowser/components/FileBreadcrumb.vue?vue&type=script&lang=js& ***! - \**********************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ \"./node_modules/core-js/modules/web.dom-collections.for-each.js\");\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ \"./node_modules/core-js/modules/es.regexp.exec.js\");\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.string.split.js */ \"./node_modules/core-js/modules/es.string.split.js\");\n/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ \"./node_modules/core-js/modules/es.array.map.js\");\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.join.js */ \"./node_modules/core-js/modules/es.array.join.js\");\n/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var lodash_slice__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lodash/slice */ \"./node_modules/lodash/slice.js\");\n/* harmony import */ var lodash_slice__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(lodash_slice__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var lodash_map__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lodash/map */ \"./node_modules/lodash/map.js\");\n/* harmony import */ var lodash_map__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(lodash_map__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var lodash_sum__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! lodash/sum */ \"./node_modules/lodash/sum.js\");\n/* harmony import */ var lodash_sum__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(lodash_sum__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var lodash_remove__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! lodash/remove */ \"./node_modules/lodash/remove.js\");\n/* harmony import */ var lodash_remove__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(lodash_remove__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var lodash_findLast__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! lodash/findLast */ \"./node_modules/lodash/findLast.js\");\n/* harmony import */ var lodash_findLast__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(lodash_findLast__WEBPACK_IMPORTED_MODULE_9__);\n\n\n\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n inject: ['filePanel'],\n data: function data() {\n return {\n pathCollection: [],\n hideItems: [],\n activeHide: {}\n };\n },\n watch: {\n '$store.state.currentPath': {\n handler: function handler(val) {\n this.pathCollection = this.buildPathArray(val);\n this.onResize();\n },\n deep: true\n }\n },\n computed: {\n dropMenu: function dropMenu() {\n return this.$refs.breadDrop[0];\n }\n },\n created: function created() {\n this.pathCollection = this.buildPathArray(this.$store.state.currentPath);\n },\n mounted: function mounted() {},\n methods: {\n open: function open(item) {\n if (item == this.activeHide) {\n this.$refs.breadDrop[0].isActive = !this.$refs.breadDrop[0].isActive;\n return false;\n }\n\n this.filePanel.getFileList(item.path);\n },\n subOpen: function subOpen(item) {\n this.filePanel.getFileList(item.path); // this.onResize(this.pathArray)\n },\n checkActive: function checkActive(index) {\n return index == this.pathCollection.length - 1;\n },\n onResize: function onResize() {\n var _this = this;\n\n var shadowBread = document.getElementById(\"shadowBread\");\n var containerWidth = document.getElementById(\"bread-container\").clientWidth;\n this.$nextTick(function () {\n _this.hideItems = [];\n var shadowBreadWidth = shadowBread.clientWidth;\n\n if (shadowBreadWidth > containerWidth) {\n var shadowBreadList = shadowBread.getElementsByTagName(\"li\");\n var shadowBreadListWidth = lodash_map__WEBPACK_IMPORTED_MODULE_6___default()(shadowBreadList, function (item) {\n return item.clientWidth;\n });\n\n _this.pathCollection.forEach(function (item, index) {\n if (index > 0 && lodash_sum__WEBPACK_IMPORTED_MODULE_7___default()(shadowBreadListWidth) + 50 > containerWidth && index < _this.pathCollection.length - 1) {\n lodash_remove__WEBPACK_IMPORTED_MODULE_8___default()(shadowBreadListWidth, function (item, index) {\n return index == 1;\n });\n item.show = false;\n\n _this.hideItems.push(item);\n }\n });\n\n _this.activeHide = lodash_findLast__WEBPACK_IMPORTED_MODULE_9___default()(_this.pathCollection, function (item) {\n return !item.show;\n });\n }\n });\n },\n buildPathArray: function buildPathArray(path) {\n if (path == \"/\") {\n path = path.substr(1);\n }\n\n var arr = path.split(\"/\");\n var collection = arr.map(function (item, index) {\n return {\n name: item == \"\" ? \"Root\" : item,\n show: true,\n path: item == \"\" ? \"/\" : lodash_slice__WEBPACK_IMPORTED_MODULE_5___default()(arr, 0, index + 1).join(\"/\")\n };\n });\n return collection;\n }\n }\n});\n\n//# sourceURL=webpack:///./src/components/filebrowser/components/FileBreadcrumb.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/filebrowser/components/GirdView.vue?vue&type=script&lang=js&": -/*!****************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/filebrowser/components/GirdView.vue?vue&type=script&lang=js& ***! - \****************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ \"./node_modules/core-js/modules/es.object.to-string.js\");\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ \"./node_modules/core-js/modules/es.regexp.to-string.js\");\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _mixins_mixin__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/mixins/mixin */ \"./src/mixins/mixin.js\");\n/* harmony import */ var _ActionButton_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./ActionButton.vue */ \"./src/components/filebrowser/components/ActionButton.vue\");\n/* harmony import */ var _ContextMenu_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./ContextMenu.vue */ \"./src/components/filebrowser/components/ContextMenu.vue\");\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\nvar cardWidth = 144;\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n components: {\n ActionButton: _ActionButton_vue__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n ContextMenu: _ContextMenu_vue__WEBPACK_IMPORTED_MODULE_4__[\"default\"]\n },\n mixins: [_mixins_mixin__WEBPACK_IMPORTED_MODULE_2__[\"mixin\"]],\n data: function data() {\n return {\n items: [],\n min: 0,\n cols: 1,\n contextIsShow: false,\n colStyle: {\n width: '33.3333%'\n }\n };\n },\n model: {\n prop: 'listData'\n },\n props: {\n listData: Array,\n isLoading: Boolean\n },\n mounted: function mounted() {\n window.addEventListener('resize', this.onResize);\n this.onResize();\n },\n beforeDestroy: function beforeDestroy() {\n window.removeEventListener('resize', this.onResize);\n },\n methods: {\n onResize: function onResize() {\n var ww = document.getElementById(\"card-container\").clientWidth;\n this.cols = Math.floor(ww / cardWidth);\n this.colStyle.width = (100 / this.cols).toString() + \"%\";\n }\n }\n});\n\n//# sourceURL=webpack:///./src/components/filebrowser/components/GirdView.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/filebrowser/components/ListView.vue?vue&type=script&lang=js&": -/*!****************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/filebrowser/components/ListView.vue?vue&type=script&lang=js& ***! - \****************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mixins_mixin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/mixins/mixin */ \"./src/mixins/mixin.js\");\n/* harmony import */ var _ActionButton_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ActionButton.vue */ \"./src/components/filebrowser/components/ActionButton.vue\");\n/* harmony import */ var _ContextMenu_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ContextMenu.vue */ \"./src/components/filebrowser/components/ContextMenu.vue\");\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n components: {\n ActionButton: _ActionButton_vue__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n ContextMenu: _ContextMenu_vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n },\n mixins: [_mixins_mixin__WEBPACK_IMPORTED_MODULE_0__[\"mixin\"]],\n data: function data() {\n return {\n items: [],\n min: 0,\n cols: 1000,\n colStyle: {\n width: ''\n }\n };\n },\n model: {\n prop: 'listData'\n },\n props: {\n listData: Array,\n isLoading: Boolean\n },\n mounted: function mounted() {},\n methods: {}\n});\n\n//# sourceURL=webpack:///./src/components/filebrowser/components/ListView.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/filebrowser/modals/DetailModal.vue?vue&type=script&lang=js&": -/*!***************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/filebrowser/modals/DetailModal.vue?vue&type=script&lang=js& ***! - \***************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mixins_mixin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/mixins/mixin */ \"./src/mixins/mixin.js\");\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n mixins: [_mixins_mixin__WEBPACK_IMPORTED_MODULE_0__[\"mixin\"]],\n props: {\n item: Object\n },\n data: function data() {\n return {};\n },\n methods: {\n download: function download() {\n this.downloadFile(this.item);\n this.$emit('close'); // this.$parent.fullScreen = true\n // console.log(this.$parent);\n }\n }\n});\n\n//# sourceURL=webpack:///./src/components/filebrowser/modals/DetailModal.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/filebrowser/modals/NewFileModal.vue?vue&type=script&lang=js&": -/*!****************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/filebrowser/modals/NewFileModal.vue?vue&type=script&lang=js& ***! - \****************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.join.js */ \"./node_modules/core-js/modules/es.array.join.js\");\n/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_mixin__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/mixins/mixin */ \"./src/mixins/mixin.js\");\n/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! path */ \"./node_modules/path-browserify/index.js\");\n/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_2__);\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n mixins: [_mixins_mixin__WEBPACK_IMPORTED_MODULE_1__[\"mixin\"]],\n props: {\n currentPath: String\n },\n data: function data() {\n return {\n fileName: 'New File',\n errorType: \"is-success\",\n errors: \"\"\n };\n },\n methods: {\n createFolder: function createFolder() {\n var _this = this;\n\n var newPath = path__WEBPACK_IMPORTED_MODULE_2___default.a.join(this.currentPath, this.fileName);\n this.$api.file.create(newPath).then(function (res) {\n if (res.data.success == 200) {\n _this.$emit(\"reload\");\n\n _this.$emit(\"close\");\n } else {\n _this.errorType = \"is-danger\";\n _this.errors = res.data.message;\n }\n });\n }\n }\n});\n\n//# sourceURL=webpack:///./src/components/filebrowser/modals/NewFileModal.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/filebrowser/modals/NewFolderModal.vue?vue&type=script&lang=js&": -/*!******************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/filebrowser/modals/NewFolderModal.vue?vue&type=script&lang=js& ***! - \******************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.join.js */ \"./node_modules/core-js/modules/es.array.join.js\");\n/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mixins_mixin__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/mixins/mixin */ \"./src/mixins/mixin.js\");\n/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! path */ \"./node_modules/path-browserify/index.js\");\n/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_2__);\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n mixins: [_mixins_mixin__WEBPACK_IMPORTED_MODULE_1__[\"mixin\"]],\n props: {\n currentPath: String\n },\n data: function data() {\n return {\n folderName: 'New Folder',\n errorType: \"is-success\",\n errors: \"\"\n };\n },\n methods: {\n createFolder: function createFolder() {\n var _this = this;\n\n var newPath = path__WEBPACK_IMPORTED_MODULE_2___default.a.join(this.currentPath, this.folderName);\n this.$api.file.mkdir(newPath).then(function (res) {\n if (res.data.success == 200) {\n _this.$emit(\"reload\");\n\n _this.$emit(\"close\");\n } else {\n _this.errorType = \"is-danger\";\n _this.errors = res.data.message;\n }\n });\n }\n }\n});\n\n//# sourceURL=webpack:///./src/components/filebrowser/modals/NewFolderModal.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/filebrowser/modals/RenameModal.vue?vue&type=script&lang=js&": -/*!***************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/filebrowser/modals/RenameModal.vue?vue&type=script&lang=js& ***! - \***************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ \"./node_modules/core-js/modules/es.function.name.js\");\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.join.js */ \"./node_modules/core-js/modules/es.array.join.js\");\n/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _mixins_mixin__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/mixins/mixin */ \"./src/mixins/mixin.js\");\n/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! path */ \"./node_modules/path-browserify/index.js\");\n/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_3__);\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n mixins: [_mixins_mixin__WEBPACK_IMPORTED_MODULE_2__[\"mixin\"]],\n props: {\n item: Object\n },\n data: function data() {\n return {\n fileName: this.item.name,\n errorType: \"is-success\",\n errors: \"\"\n };\n },\n mounted: function mounted() {\n this.$refs.rinput.focus();\n },\n methods: {\n saveNewName: function saveNewName() {\n var _this = this;\n\n var newPath = path__WEBPACK_IMPORTED_MODULE_3___default.a.join(this.$store.state.currentPath, this.fileName);\n\n if (this.item.name === this.fileName) {\n this.$emit(\"close\");\n return false;\n }\n\n this.$api.file.renamePath(this.item.path, newPath).then(function (res) {\n if (res.data.success == 200) {\n _this.$emit(\"reload\");\n\n _this.$emit(\"close\");\n } else {\n _this.errorType = \"is-danger\";\n _this.errors = res.data.message;\n }\n });\n }\n }\n});\n\n//# sourceURL=webpack:///./src/components/filebrowser/modals/RenameModal.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/filebrowser/sidebar/TreeList.vue?vue&type=script&lang=js&": -/*!*************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/filebrowser/sidebar/TreeList.vue?vue&type=script&lang=js& ***! - \*************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mixins_mixin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/mixins/mixin */ \"./src/mixins/mixin.js\");\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n mixins: [_mixins_mixin__WEBPACK_IMPORTED_MODULE_0__[\"mixin\"]],\n inject: ['filePanel'],\n props: {\n path: {\n type: String,\n default: \"\"\n },\n autoLoad: {\n type: Boolean,\n default: false\n }\n },\n data: function data() {\n return {\n dirListData: [],\n initFolders: [{\n name: 'Root',\n icon: 'folder-home-outline',\n path: '/'\n }, {\n name: 'DATA',\n icon: 'folder-pound-outline',\n path: '/DATA'\n }, {\n name: 'Documents',\n icon: 'folder-text-outline',\n path: '/DATA/Documents'\n }, {\n name: 'Downloads',\n icon: 'folder-download-outline',\n path: '/DATA/Downloads'\n }, {\n name: 'Gallery',\n icon: 'folder-star-outline',\n path: '/DATA/Gallery'\n }, {\n name: 'Media',\n icon: 'folder-music-outline',\n path: '/DATA/Media'\n }]\n };\n },\n mounted: function mounted() {},\n methods: {\n open: function open(path) {\n this.filePanel.getFileList(path);\n },\n checkActive: function checkActive(item) {\n if (item.path == this.$store.state.currentPath) {\n return true;\n } else if (item.path != this.$store.state.currentPath && item.path != \"/\" && item.path != \"/DATA\") {\n if (this.$store.state.currentPath.indexOf(item.path) != -1) {\n return true;\n } else {\n return false;\n }\n } else {\n return false;\n }\n }\n }\n});\n\n//# sourceURL=webpack:///./src/components/filebrowser/sidebar/TreeList.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/filebrowser/uploader/components/btn.vue?vue&type=script&lang=js&": -/*!********************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/filebrowser/uploader/components/btn.vue?vue&type=script&lang=js& ***! - \********************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common_mixins__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common/mixins */ \"./src/components/filebrowser/uploader/common/mixins.js\");\n//\n//\n//\n//\n//\n//\n\nvar COMPONENT_NAME = 'uploader-btn';\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: COMPONENT_NAME,\n mixins: [_common_mixins__WEBPACK_IMPORTED_MODULE_0__[\"uploaderMixin\"], _common_mixins__WEBPACK_IMPORTED_MODULE_0__[\"supportMixin\"]],\n props: {\n directory: {\n type: Boolean,\n default: false\n },\n single: {\n type: Boolean,\n default: false\n },\n attrs: {\n type: Object,\n default: function _default() {\n return {};\n }\n }\n },\n mounted: function mounted() {\n var _this = this;\n\n this.$nextTick(function () {\n _this.uploader.uploader.assignBrowse(_this.$refs.btn, _this.directory, _this.single, _this.attrs);\n });\n }\n});\n\n//# sourceURL=webpack:///./src/components/filebrowser/uploader/components/btn.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/filebrowser/uploader/components/drop.vue?vue&type=script&lang=js&": -/*!*********************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/filebrowser/uploader/components/drop.vue?vue&type=script&lang=js& ***! - \*********************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common_mixins__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common/mixins */ \"./src/components/filebrowser/uploader/common/mixins.js\");\n//\n//\n//\n//\n//\n//\n\nvar COMPONENT_NAME = 'uploader-drop';\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: COMPONENT_NAME,\n mixins: [_common_mixins__WEBPACK_IMPORTED_MODULE_0__[\"uploaderMixin\"], _common_mixins__WEBPACK_IMPORTED_MODULE_0__[\"supportMixin\"]],\n data: function data() {\n return {\n dropClass: ''\n };\n },\n methods: {\n onDragEnter: function onDragEnter() {\n this.dropClass = 'uploader-dragover';\n },\n onDragLeave: function onDragLeave() {\n this.dropClass = '';\n },\n onDrop: function onDrop() {\n this.dropClass = 'uploader-droped';\n }\n },\n mounted: function mounted() {\n var _this = this;\n\n this.$nextTick(function () {\n var dropEle = _this.$refs.drop;\n var uploader = _this.uploader.uploader;\n uploader.assignDrop(dropEle);\n uploader.on('dragenter', _this.onDragEnter);\n uploader.on('dragleave', _this.onDragLeave);\n uploader.on('drop', _this.onDrop);\n });\n },\n beforeDestroy: function beforeDestroy() {\n var dropEle = this.$refs.drop;\n var uploader = this.uploader.uploader;\n uploader.off('dragenter', this.onDragEnter);\n uploader.off('dragleave', this.onDragLeave);\n uploader.off('drop', this.onDrop);\n uploader.unAssignDrop(dropEle);\n }\n});\n\n//# sourceURL=webpack:///./src/components/filebrowser/uploader/components/drop.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/filebrowser/uploader/components/file.vue?vue&type=script&lang=js&": -/*!*********************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/filebrowser/uploader/components/file.vue?vue&type=script&lang=js& ***! - \*********************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ \"./node_modules/core-js/modules/web.dom-collections.for-each.js\");\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ \"./node_modules/core-js/modules/es.object.keys.js\");\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.number.constructor.js */ \"./node_modules/core-js/modules/es.number.constructor.js\");\n/* harmony import */ var core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _mixins_mixin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/mixins/mixin */ \"./src/mixins/mixin.js\");\n/* harmony import */ var simple_uploader_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! simple-uploader.js */ \"./node_modules/simple-uploader.js/src/uploader.js\");\n/* harmony import */ var simple_uploader_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(simple_uploader_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _common_file_events__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../common/file-events */ \"./src/components/filebrowser/uploader/common/file-events.js\");\n/* harmony import */ var _common_utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../common/utils */ \"./src/components/filebrowser/uploader/common/utils.js\");\n\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\nvar COMPONENT_NAME = 'uploader-file';\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: COMPONENT_NAME,\n mixins: [_mixins_mixin__WEBPACK_IMPORTED_MODULE_3__[\"mixin\"]],\n props: {\n file: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n list: {\n type: Boolean,\n default: false\n }\n },\n data: function data() {\n return {\n response: null,\n paused: false,\n error: false,\n averageSpeed: 0,\n currentSpeed: 0,\n isComplete: false,\n isUploading: false,\n size: 0,\n formatedSize: '',\n uploadedSize: 0,\n progress: 0,\n timeRemaining: 0,\n type: '',\n extension: '',\n progressingClass: ''\n };\n },\n computed: {\n fileCategory: function fileCategory() {\n var extension = this.extension;\n var isFolder = this.file.isFolder;\n var type = isFolder ? 'folder' : 'unknown';\n var categoryMap = this.file.uploader.opts.categoryMap;\n var typeMap = categoryMap || {\n image: ['gif', 'jpg', 'jpeg', 'png', 'bmp', 'webp'],\n video: ['mp4', 'm3u8', 'rmvb', 'avi', 'swf', '3gp', 'mkv', 'flv'],\n audio: ['mp3', 'wav', 'wma', 'ogg', 'aac', 'flac'],\n document: ['doc', 'txt', 'docx', 'pages', 'epub', 'pdf', 'numbers', 'csv', 'xls', 'xlsx', 'keynote', 'ppt', 'pptx']\n };\n Object.keys(typeMap).forEach(function (_type) {\n var extensions = typeMap[_type];\n\n if (extensions.indexOf(extension) > -1) {\n type = _type;\n }\n });\n return type;\n },\n progressStyle: function progressStyle() {\n var progress = Math.floor(this.progress * 100); // const style = `translateX(${Math.floor(progress - 100)}%)`\n\n return {\n progress: \"\".concat(progress, \"%\"),\n width: \"\".concat(progress, \"%\")\n };\n },\n formatedAverageSpeed: function formatedAverageSpeed() {\n return \"\".concat(simple_uploader_js__WEBPACK_IMPORTED_MODULE_4___default.a.utils.formatSize(this.averageSpeed), \"/s\");\n },\n formateCurrentSpeed: function formateCurrentSpeed() {\n return \"\".concat(simple_uploader_js__WEBPACK_IMPORTED_MODULE_4___default.a.utils.formatSize(this.currentSpeed), \" / s\");\n },\n status: function status() {\n var isUploading = this.isUploading;\n var isComplete = this.isComplete;\n var isError = this.error;\n var paused = this.paused;\n\n if (isComplete) {\n return 'success';\n } else if (isError) {\n return 'error';\n } else if (isUploading) {\n return 'uploading';\n } else if (paused) {\n return 'paused';\n } else {\n return 'waiting';\n }\n },\n statusText: function statusText() {\n var status = this.status;\n var fileStatusText = this.file.uploader.fileStatusText;\n var txt = status;\n\n if (typeof fileStatusText === 'function') {\n txt = fileStatusText(status, this.response);\n } else {\n txt = fileStatusText[status];\n }\n\n return txt || status;\n },\n formatedTimeRemaining: function formatedTimeRemaining() {\n var timeRemaining = this.timeRemaining;\n var file = this.file;\n\n if (timeRemaining === Number.POSITIVE_INFINITY || timeRemaining === 0) {\n return '';\n }\n\n var parsedTimeRemaining = Object(_common_utils__WEBPACK_IMPORTED_MODULE_6__[\"secondsToStr\"])(timeRemaining);\n var parseTimeRemaining = file.uploader.opts.parseTimeRemaining;\n\n if (parseTimeRemaining) {\n parsedTimeRemaining = parseTimeRemaining(timeRemaining, parsedTimeRemaining);\n }\n\n return parsedTimeRemaining;\n }\n },\n watch: {\n status: function status(newStatus, oldStatus) {\n var _this = this;\n\n if (oldStatus && newStatus === 'uploading' && oldStatus !== 'uploading') {\n this.tid = setTimeout(function () {\n _this.progressingClass = 'uploader-file-progressing';\n }, 200);\n } else {\n clearTimeout(this.tid);\n this.progressingClass = '';\n }\n }\n },\n methods: {\n _actionCheck: function _actionCheck() {\n this.paused = this.file.paused;\n this.error = this.file.error;\n this.isUploading = this.file.isUploading();\n },\n pause: function pause() {\n this.file.pause();\n\n this._actionCheck();\n\n this._fileProgress();\n },\n resume: function resume() {\n this.file.resume();\n\n this._actionCheck();\n },\n remove: function remove() {\n this.file.cancel();\n },\n retry: function retry() {\n this.file.retry();\n\n this._actionCheck();\n },\n processResponse: function processResponse(message) {\n var res = message;\n\n try {\n res = JSON.parse(message); // eslint-disable-next-line no-empty\n } catch (e) {}\n\n if (message == \"\") {\n res = {\n success: 200,\n message: \"ok\"\n };\n }\n\n this.response = res;\n },\n fileEventsHandler: function fileEventsHandler(event, args) {\n var rootFile = args[0];\n var file = args[1];\n var target = this.list ? rootFile : file;\n\n if (this.file === target) {\n if (this.list && event === 'fileSuccess') {\n this.processResponse(args[2]);\n return;\n }\n\n this[\"_\".concat(event)].apply(this, args);\n }\n },\n _fileProgress: function _fileProgress() {\n this.progress = this.file.progress();\n this.averageSpeed = this.file.averageSpeed;\n this.currentSpeed = this.file.currentSpeed;\n this.timeRemaining = this.file.timeRemaining();\n this.uploadedSize = this.file.sizeUploaded();\n\n this._actionCheck();\n },\n _fileSuccess: function _fileSuccess(rootFile, file, message) {\n if (rootFile) {\n this.processResponse(message);\n }\n\n this._fileProgress();\n\n this.error = false;\n this.isComplete = true;\n this.isUploading = false;\n },\n _fileComplete: function _fileComplete() {\n this._fileSuccess();\n },\n _fileError: function _fileError(rootFile, file, message) {\n this._fileProgress();\n\n this.processResponse(message);\n this.error = true;\n this.isComplete = false;\n this.isUploading = false;\n }\n },\n mounted: function mounted() {\n var _this2 = this;\n\n var staticProps = ['paused', 'error', 'averageSpeed', 'currentSpeed'];\n var fnProps = ['isComplete', 'isUploading', {\n key: 'size',\n fn: 'getSize'\n }, {\n key: 'formatedSize',\n fn: 'getFormatSize'\n }, {\n key: 'uploadedSize',\n fn: 'sizeUploaded'\n }, 'progress', 'timeRemaining', {\n key: 'type',\n fn: 'getType'\n }, {\n key: 'extension',\n fn: 'getExtension'\n }];\n staticProps.forEach(function (prop) {\n _this2[prop] = _this2.file[prop];\n });\n fnProps.forEach(function (fnProp) {\n if (typeof fnProp === 'string') {\n _this2[fnProp] = _this2.file[fnProp]();\n } else {\n _this2[fnProp.key] = _this2.file[fnProp.fn]();\n }\n });\n var handlers = this._handlers = {};\n\n var eventHandler = function eventHandler(event) {\n handlers[event] = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this2.fileEventsHandler(event, args);\n };\n\n return handlers[event];\n };\n\n _common_file_events__WEBPACK_IMPORTED_MODULE_5__[\"default\"].forEach(function (event) {\n _this2.file.uploader.on(event, eventHandler(event));\n });\n },\n destroyed: function destroyed() {\n var _this3 = this;\n\n _common_file_events__WEBPACK_IMPORTED_MODULE_5__[\"default\"].forEach(function (event) {\n _this3.file.uploader.off(event, _this3._handlers[event]);\n });\n this._handlers = null;\n }\n});\n\n//# sourceURL=webpack:///./src/components/filebrowser/uploader/components/file.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/filebrowser/uploader/components/files.vue?vue&type=script&lang=js&": -/*!**********************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/filebrowser/uploader/components/files.vue?vue&type=script&lang=js& ***! - \**********************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common_mixins__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common/mixins */ \"./src/components/filebrowser/uploader/common/mixins.js\");\n/* harmony import */ var _file_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./file.vue */ \"./src/components/filebrowser/uploader/components/file.vue\");\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\nvar COMPONENT_NAME = 'uploader-files';\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: COMPONENT_NAME,\n mixins: [_common_mixins__WEBPACK_IMPORTED_MODULE_0__[\"uploaderMixin\"]],\n computed: {\n files: function files() {\n return this.uploader.files;\n }\n },\n components: {\n UploaderFile: _file_vue__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n }\n});\n\n//# sourceURL=webpack:///./src/components/filebrowser/uploader/components/files.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/filebrowser/uploader/components/list.vue?vue&type=script&lang=js&": -/*!*********************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/filebrowser/uploader/components/list.vue?vue&type=script&lang=js& ***! - \*********************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common_mixins__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common/mixins */ \"./src/components/filebrowser/uploader/common/mixins.js\");\n/* harmony import */ var _file_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./file.vue */ \"./src/components/filebrowser/uploader/components/file.vue\");\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\nvar COMPONENT_NAME = 'uploader-list';\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: COMPONENT_NAME,\n mixins: [_common_mixins__WEBPACK_IMPORTED_MODULE_0__[\"uploaderMixin\"]],\n computed: {\n fileList: function fileList() {\n return this.uploader.fileList;\n }\n },\n components: {\n UploaderFile: _file_vue__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n }\n});\n\n//# sourceURL=webpack:///./src/components/filebrowser/uploader/components/list.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/filebrowser/uploader/components/unsupport.vue?vue&type=script&lang=js&": -/*!**************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/filebrowser/uploader/components/unsupport.vue?vue&type=script&lang=js& ***! - \**************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common_mixins__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common/mixins */ \"./src/components/filebrowser/uploader/common/mixins.js\");\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nvar COMPONENT_NAME = 'uploader-unsupport';\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: COMPONENT_NAME,\n mixins: [_common_mixins__WEBPACK_IMPORTED_MODULE_0__[\"uploaderMixin\"], _common_mixins__WEBPACK_IMPORTED_MODULE_0__[\"supportMixin\"]]\n});\n\n//# sourceURL=webpack:///./src/components/filebrowser/uploader/components/unsupport.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/filebrowser/uploader/components/uploader.vue?vue&type=script&lang=js&": -/*!*************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/filebrowser/uploader/components/uploader.vue?vue&type=script&lang=js& ***! - \*************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Users_liangjianli_go_CasaOSNew_CasaOS_UI_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ \"./node_modules/core-js/modules/es.array.slice.js\");\n/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var simple_uploader_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! simple-uploader.js */ \"./node_modules/simple-uploader.js/src/uploader.js\");\n/* harmony import */ var simple_uploader_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(simple_uploader_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _common_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../common/utils */ \"./src/components/filebrowser/uploader/common/utils.js\");\n/* harmony import */ var _btn_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./btn.vue */ \"./src/components/filebrowser/uploader/components/btn.vue\");\n/* harmony import */ var _drop_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./drop.vue */ \"./src/components/filebrowser/uploader/components/drop.vue\");\n/* harmony import */ var _unsupport_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./unsupport.vue */ \"./src/components/filebrowser/uploader/components/unsupport.vue\");\n/* harmony import */ var _list_vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./list.vue */ \"./src/components/filebrowser/uploader/components/list.vue\");\n/* harmony import */ var _files_vue__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./files.vue */ \"./src/components/filebrowser/uploader/components/files.vue\");\n/* harmony import */ var _file_vue__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./file.vue */ \"./src/components/filebrowser/uploader/components/file.vue\");\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n\n\nvar COMPONENT_NAME = 'uploader';\nvar FILE_ADDED_EVENT = 'fileAdded';\nvar FILES_ADDED_EVENT = 'filesAdded';\nvar UPLOAD_START_EVENT = 'uploadStart';\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: COMPONENT_NAME,\n provide: function provide() {\n return {\n uploader: this\n };\n },\n props: {\n options: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n autoStart: {\n type: Boolean,\n default: true\n },\n fileStatusText: {\n type: [Object, Function],\n default: function _default() {\n return {\n success: 'success',\n error: 'error',\n uploading: 'uploading',\n paused: 'paused',\n waiting: 'waiting'\n };\n }\n }\n },\n data: function data() {\n return {\n started: false,\n files: [],\n fileList: []\n };\n },\n methods: {\n uploadStart: function uploadStart() {\n this.started = true;\n },\n fileAdded: function fileAdded(file) {\n this.$emit(Object(_common_utils__WEBPACK_IMPORTED_MODULE_3__[\"kebabCase\"])(FILE_ADDED_EVENT), file);\n\n if (file.ignored) {\n // is ignored, filter it\n return false;\n }\n },\n filesAdded: function filesAdded(files, fileList) {\n this.$emit(Object(_common_utils__WEBPACK_IMPORTED_MODULE_3__[\"kebabCase\"])(FILES_ADDED_EVENT), files, fileList);\n\n if (files.ignored || fileList.ignored) {\n // is ignored, filter it\n return false;\n }\n },\n fileRemoved: function fileRemoved(file) {\n this.files = this.uploader.files;\n this.fileList = this.uploader.fileList;\n },\n filesSubmitted: function filesSubmitted(files, fileList) {\n this.files = this.uploader.files;\n this.fileList = this.uploader.fileList;\n\n if (this.autoStart) {\n this.uploader.upload();\n }\n },\n allEvent: function allEvent() {\n var _EVENTSMAP;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var name = args[0];\n var EVENTSMAP = (_EVENTSMAP = {}, Object(_Users_liangjianli_go_CasaOSNew_CasaOS_UI_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_EVENTSMAP, FILE_ADDED_EVENT, true), Object(_Users_liangjianli_go_CasaOSNew_CasaOS_UI_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_EVENTSMAP, FILES_ADDED_EVENT, true), Object(_Users_liangjianli_go_CasaOSNew_CasaOS_UI_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_EVENTSMAP, UPLOAD_START_EVENT, 'uploadStart'), _EVENTSMAP);\n var handler = EVENTSMAP[name];\n\n if (handler) {\n if (handler === true) {\n return;\n }\n\n this[handler].apply(this, args.slice(1));\n }\n\n args[0] = Object(_common_utils__WEBPACK_IMPORTED_MODULE_3__[\"kebabCase\"])(name);\n this.$emit.apply(this, args);\n }\n },\n created: function created() {\n this.options.initialPaused = !this.autoStart;\n var uploader = new simple_uploader_js__WEBPACK_IMPORTED_MODULE_2___default.a(this.options);\n this.uploader = uploader;\n this.uploader.fileStatusText = this.fileStatusText;\n uploader.on('catchAll', this.allEvent);\n uploader.on(FILE_ADDED_EVENT, this.fileAdded);\n uploader.on(FILES_ADDED_EVENT, this.filesAdded);\n uploader.on('fileRemoved', this.fileRemoved);\n uploader.on('filesSubmitted', this.filesSubmitted);\n },\n destroyed: function destroyed() {\n var uploader = this.uploader;\n uploader.off('catchAll', this.allEvent);\n uploader.off(FILE_ADDED_EVENT, this.fileAdded);\n uploader.off(FILES_ADDED_EVENT, this.filesAdded);\n uploader.off('fileRemoved', this.fileRemoved);\n uploader.off('filesSubmitted', this.filesSubmitted);\n this.uploader = null;\n },\n components: {\n UploaderBtn: _btn_vue__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n UploaderDrop: _drop_vue__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n UploaderUnsupport: _unsupport_vue__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n UploaderList: _list_vue__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n UploaderFiles: _files_vue__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n UploaderFile: _file_vue__WEBPACK_IMPORTED_MODULE_9__[\"default\"]\n }\n});\n\n//# sourceURL=webpack:///./src/components/filebrowser/uploader/components/uploader.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/filebrowser/viewers/CodeEditor.vue?vue&type=script&lang=js&": -/*!***************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/filebrowser/viewers/CodeEditor.vue?vue&type=script&lang=js& ***! - \***************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ \"./node_modules/core-js/modules/es.regexp.exec.js\");\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.string.split.js */ \"./node_modules/core-js/modules/es.string.split.js\");\n/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _mixins_mixin__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/mixins/mixin */ \"./src/mixins/mixin.js\");\n/* harmony import */ var mime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! mime */ \"./node_modules/mime/index.js\");\n/* harmony import */ var mime__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(mime__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var vue_codemirror__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vue-codemirror */ \"./node_modules/vue-codemirror/dist/vue-codemirror.js\");\n/* harmony import */ var vue_codemirror__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(vue_codemirror__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var codemirror_lib_codemirror_css__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! codemirror/lib/codemirror.css */ \"./node_modules/codemirror/lib/codemirror.css\");\n/* harmony import */ var codemirror_lib_codemirror_css__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(codemirror_lib_codemirror_css__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var codemirror_theme_monokai_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! codemirror/theme/monokai.css */ \"./node_modules/codemirror/theme/monokai.css\");\n/* harmony import */ var codemirror_theme_monokai_css__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(codemirror_theme_monokai_css__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var codemirror_addon_selection_active_line_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! codemirror/addon/selection/active-line.js */ \"./node_modules/codemirror/addon/selection/active-line.js\");\n/* harmony import */ var codemirror_addon_selection_active_line_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(codemirror_addon_selection_active_line_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var codemirror_addon_selection_mark_selection_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! codemirror/addon/selection/mark-selection.js */ \"./node_modules/codemirror/addon/selection/mark-selection.js\");\n/* harmony import */ var codemirror_addon_selection_mark_selection_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(codemirror_addon_selection_mark_selection_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var codemirror_addon_search_searchcursor_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! codemirror/addon/search/searchcursor.js */ \"./node_modules/codemirror/addon/search/searchcursor.js\");\n/* harmony import */ var codemirror_addon_search_searchcursor_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(codemirror_addon_search_searchcursor_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var codemirror_addon_hint_show_hint_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! codemirror/addon/hint/show-hint.js */ \"./node_modules/codemirror/addon/hint/show-hint.js\");\n/* harmony import */ var codemirror_addon_hint_show_hint_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(codemirror_addon_hint_show_hint_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var codemirror_addon_hint_show_hint_css__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! codemirror/addon/hint/show-hint.css */ \"./node_modules/codemirror/addon/hint/show-hint.css\");\n/* harmony import */ var codemirror_addon_hint_show_hint_css__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(codemirror_addon_hint_show_hint_css__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var codemirror_addon_hint_javascript_hint_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! codemirror/addon/hint/javascript-hint.js */ \"./node_modules/codemirror/addon/hint/javascript-hint.js\");\n/* harmony import */ var codemirror_addon_hint_javascript_hint_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(codemirror_addon_hint_javascript_hint_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var codemirror_addon_scroll_annotatescrollbar_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! codemirror/addon/scroll/annotatescrollbar.js */ \"./node_modules/codemirror/addon/scroll/annotatescrollbar.js\");\n/* harmony import */ var codemirror_addon_scroll_annotatescrollbar_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(codemirror_addon_scroll_annotatescrollbar_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var codemirror_addon_scroll_simplescrollbars__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! codemirror/addon/scroll/simplescrollbars */ \"./node_modules/codemirror/addon/scroll/simplescrollbars.js\");\n/* harmony import */ var codemirror_addon_scroll_simplescrollbars__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(codemirror_addon_scroll_simplescrollbars__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var codemirror_addon_scroll_simplescrollbars_css__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! codemirror/addon/scroll/simplescrollbars.css */ \"./node_modules/codemirror/addon/scroll/simplescrollbars.css\");\n/* harmony import */ var codemirror_addon_scroll_simplescrollbars_css__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(codemirror_addon_scroll_simplescrollbars_css__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var codemirror_addon_search_matchesonscrollbar_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! codemirror/addon/search/matchesonscrollbar.js */ \"./node_modules/codemirror/addon/search/matchesonscrollbar.js\");\n/* harmony import */ var codemirror_addon_search_matchesonscrollbar_js__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(codemirror_addon_search_matchesonscrollbar_js__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var codemirror_addon_search_match_highlighter_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! codemirror/addon/search/match-highlighter.js */ \"./node_modules/codemirror/addon/search/match-highlighter.js\");\n/* harmony import */ var codemirror_addon_search_match_highlighter_js__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(codemirror_addon_search_match_highlighter_js__WEBPACK_IMPORTED_MODULE_17__);\n/* harmony import */ var codemirror_mode_clike_clike_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! codemirror/mode/clike/clike.js */ \"./node_modules/codemirror/mode/clike/clike.js\");\n/* harmony import */ var codemirror_mode_clike_clike_js__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(codemirror_mode_clike_clike_js__WEBPACK_IMPORTED_MODULE_18__);\n/* harmony import */ var codemirror_addon_edit_matchbrackets_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! codemirror/addon/edit/matchbrackets.js */ \"./node_modules/codemirror/addon/edit/matchbrackets.js\");\n/* harmony import */ var codemirror_addon_edit_matchbrackets_js__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(codemirror_addon_edit_matchbrackets_js__WEBPACK_IMPORTED_MODULE_19__);\n/* harmony import */ var codemirror_addon_comment_comment_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! codemirror/addon/comment/comment.js */ \"./node_modules/codemirror/addon/comment/comment.js\");\n/* harmony import */ var codemirror_addon_comment_comment_js__WEBPACK_IMPORTED_MODULE_20___default = /*#__PURE__*/__webpack_require__.n(codemirror_addon_comment_comment_js__WEBPACK_IMPORTED_MODULE_20__);\n/* harmony import */ var codemirror_addon_dialog_dialog_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! codemirror/addon/dialog/dialog.js */ \"./node_modules/codemirror/addon/dialog/dialog.js\");\n/* harmony import */ var codemirror_addon_dialog_dialog_js__WEBPACK_IMPORTED_MODULE_21___default = /*#__PURE__*/__webpack_require__.n(codemirror_addon_dialog_dialog_js__WEBPACK_IMPORTED_MODULE_21__);\n/* harmony import */ var codemirror_addon_dialog_dialog_css__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! codemirror/addon/dialog/dialog.css */ \"./node_modules/codemirror/addon/dialog/dialog.css\");\n/* harmony import */ var codemirror_addon_dialog_dialog_css__WEBPACK_IMPORTED_MODULE_22___default = /*#__PURE__*/__webpack_require__.n(codemirror_addon_dialog_dialog_css__WEBPACK_IMPORTED_MODULE_22__);\n/* harmony import */ var codemirror_addon_search_search_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! codemirror/addon/search/search.js */ \"./node_modules/codemirror/addon/search/search.js\");\n/* harmony import */ var codemirror_addon_search_search_js__WEBPACK_IMPORTED_MODULE_23___default = /*#__PURE__*/__webpack_require__.n(codemirror_addon_search_search_js__WEBPACK_IMPORTED_MODULE_23__);\n/* harmony import */ var codemirror_keymap_sublime_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! codemirror/keymap/sublime.js */ \"./node_modules/codemirror/keymap/sublime.js\");\n/* harmony import */ var codemirror_keymap_sublime_js__WEBPACK_IMPORTED_MODULE_24___default = /*#__PURE__*/__webpack_require__.n(codemirror_keymap_sublime_js__WEBPACK_IMPORTED_MODULE_24__);\n/* harmony import */ var codemirror_addon_fold_foldgutter_css__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! codemirror/addon/fold/foldgutter.css */ \"./node_modules/codemirror/addon/fold/foldgutter.css\");\n/* harmony import */ var codemirror_addon_fold_foldgutter_css__WEBPACK_IMPORTED_MODULE_25___default = /*#__PURE__*/__webpack_require__.n(codemirror_addon_fold_foldgutter_css__WEBPACK_IMPORTED_MODULE_25__);\n/* harmony import */ var codemirror_addon_fold_brace_fold_js__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! codemirror/addon/fold/brace-fold.js */ \"./node_modules/codemirror/addon/fold/brace-fold.js\");\n/* harmony import */ var codemirror_addon_fold_brace_fold_js__WEBPACK_IMPORTED_MODULE_26___default = /*#__PURE__*/__webpack_require__.n(codemirror_addon_fold_brace_fold_js__WEBPACK_IMPORTED_MODULE_26__);\n/* harmony import */ var codemirror_addon_fold_comment_fold_js__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! codemirror/addon/fold/comment-fold.js */ \"./node_modules/codemirror/addon/fold/comment-fold.js\");\n/* harmony import */ var codemirror_addon_fold_comment_fold_js__WEBPACK_IMPORTED_MODULE_27___default = /*#__PURE__*/__webpack_require__.n(codemirror_addon_fold_comment_fold_js__WEBPACK_IMPORTED_MODULE_27__);\n/* harmony import */ var codemirror_addon_fold_foldcode_js__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! codemirror/addon/fold/foldcode.js */ \"./node_modules/codemirror/addon/fold/foldcode.js\");\n/* harmony import */ var codemirror_addon_fold_foldcode_js__WEBPACK_IMPORTED_MODULE_28___default = /*#__PURE__*/__webpack_require__.n(codemirror_addon_fold_foldcode_js__WEBPACK_IMPORTED_MODULE_28__);\n/* harmony import */ var codemirror_addon_fold_foldgutter_js__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! codemirror/addon/fold/foldgutter.js */ \"./node_modules/codemirror/addon/fold/foldgutter.js\");\n/* harmony import */ var codemirror_addon_fold_foldgutter_js__WEBPACK_IMPORTED_MODULE_29___default = /*#__PURE__*/__webpack_require__.n(codemirror_addon_fold_foldgutter_js__WEBPACK_IMPORTED_MODULE_29__);\n/* harmony import */ var codemirror_addon_fold_indent_fold_js__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! codemirror/addon/fold/indent-fold.js */ \"./node_modules/codemirror/addon/fold/indent-fold.js\");\n/* harmony import */ var codemirror_addon_fold_indent_fold_js__WEBPACK_IMPORTED_MODULE_30___default = /*#__PURE__*/__webpack_require__.n(codemirror_addon_fold_indent_fold_js__WEBPACK_IMPORTED_MODULE_30__);\n/* harmony import */ var codemirror_addon_fold_markdown_fold_js__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! codemirror/addon/fold/markdown-fold.js */ \"./node_modules/codemirror/addon/fold/markdown-fold.js\");\n/* harmony import */ var codemirror_addon_fold_markdown_fold_js__WEBPACK_IMPORTED_MODULE_31___default = /*#__PURE__*/__webpack_require__.n(codemirror_addon_fold_markdown_fold_js__WEBPACK_IMPORTED_MODULE_31__);\n/* harmony import */ var codemirror_addon_fold_xml_fold_js__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! codemirror/addon/fold/xml-fold.js */ \"./node_modules/codemirror/addon/fold/xml-fold.js\");\n/* harmony import */ var codemirror_addon_fold_xml_fold_js__WEBPACK_IMPORTED_MODULE_32___default = /*#__PURE__*/__webpack_require__.n(codemirror_addon_fold_xml_fold_js__WEBPACK_IMPORTED_MODULE_32__);\n/* harmony import */ var codemirror_mode_javascript_javascript__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! codemirror/mode/javascript/javascript */ \"./node_modules/codemirror/mode/javascript/javascript.js\");\n/* harmony import */ var codemirror_mode_javascript_javascript__WEBPACK_IMPORTED_MODULE_33___default = /*#__PURE__*/__webpack_require__.n(codemirror_mode_javascript_javascript__WEBPACK_IMPORTED_MODULE_33__);\n/* harmony import */ var codemirror_mode_go_go__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! codemirror/mode/go/go */ \"./node_modules/codemirror/mode/go/go.js\");\n/* harmony import */ var codemirror_mode_go_go__WEBPACK_IMPORTED_MODULE_34___default = /*#__PURE__*/__webpack_require__.n(codemirror_mode_go_go__WEBPACK_IMPORTED_MODULE_34__);\n/* harmony import */ var codemirror_mode_htmlmixed_htmlmixed__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! codemirror/mode/htmlmixed/htmlmixed */ \"./node_modules/codemirror/mode/htmlmixed/htmlmixed.js\");\n/* harmony import */ var codemirror_mode_htmlmixed_htmlmixed__WEBPACK_IMPORTED_MODULE_35___default = /*#__PURE__*/__webpack_require__.n(codemirror_mode_htmlmixed_htmlmixed__WEBPACK_IMPORTED_MODULE_35__);\n/* harmony import */ var codemirror_mode_htmlembedded_htmlembedded__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! codemirror/mode/htmlembedded/htmlembedded */ \"./node_modules/codemirror/mode/htmlembedded/htmlembedded.js\");\n/* harmony import */ var codemirror_mode_htmlembedded_htmlembedded__WEBPACK_IMPORTED_MODULE_36___default = /*#__PURE__*/__webpack_require__.n(codemirror_mode_htmlembedded_htmlembedded__WEBPACK_IMPORTED_MODULE_36__);\n/* harmony import */ var codemirror_mode_http_http__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! codemirror/mode/http/http */ \"./node_modules/codemirror/mode/http/http.js\");\n/* harmony import */ var codemirror_mode_http_http__WEBPACK_IMPORTED_MODULE_37___default = /*#__PURE__*/__webpack_require__.n(codemirror_mode_http_http__WEBPACK_IMPORTED_MODULE_37__);\n/* harmony import */ var codemirror_mode_php_php__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! codemirror/mode/php/php */ \"./node_modules/codemirror/mode/php/php.js\");\n/* harmony import */ var codemirror_mode_php_php__WEBPACK_IMPORTED_MODULE_38___default = /*#__PURE__*/__webpack_require__.n(codemirror_mode_php_php__WEBPACK_IMPORTED_MODULE_38__);\n/* harmony import */ var codemirror_mode_python_python__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! codemirror/mode/python/python */ \"./node_modules/codemirror/mode/python/python.js\");\n/* harmony import */ var codemirror_mode_python_python__WEBPACK_IMPORTED_MODULE_39___default = /*#__PURE__*/__webpack_require__.n(codemirror_mode_python_python__WEBPACK_IMPORTED_MODULE_39__);\n/* harmony import */ var codemirror_mode_sql_sql__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! codemirror/mode/sql/sql */ \"./node_modules/codemirror/mode/sql/sql.js\");\n/* harmony import */ var codemirror_mode_sql_sql__WEBPACK_IMPORTED_MODULE_40___default = /*#__PURE__*/__webpack_require__.n(codemirror_mode_sql_sql__WEBPACK_IMPORTED_MODULE_40__);\n/* harmony import */ var codemirror_mode_vue_vue__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! codemirror/mode/vue/vue */ \"./node_modules/codemirror/mode/vue/vue.js\");\n/* harmony import */ var codemirror_mode_vue_vue__WEBPACK_IMPORTED_MODULE_41___default = /*#__PURE__*/__webpack_require__.n(codemirror_mode_vue_vue__WEBPACK_IMPORTED_MODULE_41__);\n/* harmony import */ var codemirror_mode_xml_xml__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! codemirror/mode/xml/xml */ \"./node_modules/codemirror/mode/xml/xml.js\");\n/* harmony import */ var codemirror_mode_xml_xml__WEBPACK_IMPORTED_MODULE_42___default = /*#__PURE__*/__webpack_require__.n(codemirror_mode_xml_xml__WEBPACK_IMPORTED_MODULE_42__);\n/* harmony import */ var codemirror_mode_yaml_yaml__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! codemirror/mode/yaml/yaml */ \"./node_modules/codemirror/mode/yaml/yaml.js\");\n/* harmony import */ var codemirror_mode_yaml_yaml__WEBPACK_IMPORTED_MODULE_43___default = /*#__PURE__*/__webpack_require__.n(codemirror_mode_yaml_yaml__WEBPACK_IMPORTED_MODULE_43__);\n/* harmony import */ var codemirror_mode_css_css__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! codemirror/mode/css/css */ \"./node_modules/codemirror/mode/css/css.js\");\n/* harmony import */ var codemirror_mode_css_css__WEBPACK_IMPORTED_MODULE_44___default = /*#__PURE__*/__webpack_require__.n(codemirror_mode_css_css__WEBPACK_IMPORTED_MODULE_44__);\n/* harmony import */ var codemirror_mode_cmake_cmake__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! codemirror/mode/cmake/cmake */ \"./node_modules/codemirror/mode/cmake/cmake.js\");\n/* harmony import */ var codemirror_mode_cmake_cmake__WEBPACK_IMPORTED_MODULE_45___default = /*#__PURE__*/__webpack_require__.n(codemirror_mode_cmake_cmake__WEBPACK_IMPORTED_MODULE_45__);\n/* harmony import */ var codemirror_mode_markdown_markdown__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! codemirror/mode/markdown/markdown */ \"./node_modules/codemirror/mode/markdown/markdown.js\");\n/* harmony import */ var codemirror_mode_markdown_markdown__WEBPACK_IMPORTED_MODULE_46___default = /*#__PURE__*/__webpack_require__.n(codemirror_mode_markdown_markdown__WEBPACK_IMPORTED_MODULE_46__);\n/* harmony import */ var codemirror_mode_lua_lua__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! codemirror/mode/lua/lua */ \"./node_modules/codemirror/mode/lua/lua.js\");\n/* harmony import */ var codemirror_mode_lua_lua__WEBPACK_IMPORTED_MODULE_47___default = /*#__PURE__*/__webpack_require__.n(codemirror_mode_lua_lua__WEBPACK_IMPORTED_MODULE_47__);\n/* harmony import */ var codemirror_mode_ruby_ruby__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! codemirror/mode/ruby/ruby */ \"./node_modules/codemirror/mode/ruby/ruby.js\");\n/* harmony import */ var codemirror_mode_ruby_ruby__WEBPACK_IMPORTED_MODULE_48___default = /*#__PURE__*/__webpack_require__.n(codemirror_mode_ruby_ruby__WEBPACK_IMPORTED_MODULE_48__);\n/* harmony import */ var codemirror_mode_rust_rust__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(/*! codemirror/mode/rust/rust */ \"./node_modules/codemirror/mode/rust/rust.js\");\n/* harmony import */ var codemirror_mode_rust_rust__WEBPACK_IMPORTED_MODULE_49___default = /*#__PURE__*/__webpack_require__.n(codemirror_mode_rust_rust__WEBPACK_IMPORTED_MODULE_49__);\n/* harmony import */ var codemirror_mode_shell_shell__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(/*! codemirror/mode/shell/shell */ \"./node_modules/codemirror/mode/shell/shell.js\");\n/* harmony import */ var codemirror_mode_shell_shell__WEBPACK_IMPORTED_MODULE_50___default = /*#__PURE__*/__webpack_require__.n(codemirror_mode_shell_shell__WEBPACK_IMPORTED_MODULE_50__);\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n // Core\n\n\n // theme css\n\n // import 'codemirror/theme/elegant.css'\n// require active-line.js\n\n // styleSelectedText\n\n\n // hint\n\n\n\n\n // highlightSelectionMatches\n\n\n\n\n\n\n // keyMap\n\n\n\n\n\n\n\n\n // foldGutter\n\n\n\n\n\n\n\n\n // Mode\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n mixins: [_mixins_mixin__WEBPACK_IMPORTED_MODULE_2__[\"mixin\"]],\n components: {\n codemirror: vue_codemirror__WEBPACK_IMPORTED_MODULE_4__[\"codemirror\"]\n },\n props: {\n item: {\n type: Object,\n default: function _default() {\n return {\n path: '/DATA/background.js',\n name: 'background.js'\n };\n }\n }\n },\n data: function data() {\n var _this = this;\n\n return {\n code: \"\",\n isChange: false,\n cmOptions: {\n tabSize: 4,\n styleActiveLine: true,\n lineNumbers: true,\n styleSelectedText: false,\n line: true,\n foldGutter: true,\n gutters: [\"CodeMirror-linenumbers\", \"CodeMirror-foldgutter\"],\n highlightSelectionMatches: {\n showToken: /\\w/,\n annotateScrollbar: true\n },\n mode: \"text/javascript\",\n // hint.js options\n hintOptions: {\n completeSingle: false\n },\n keyMap: \"sublime\",\n matchBrackets: true,\n showCursorWhenSelecting: true,\n theme: \"monokai\",\n extraKeys: {\n 'Ctrl': \"autocomplete\",\n 'Ctrl-S': function CtrlS() {\n _this.saveFile();\n },\n 'Cmd-S': function CmdS() {\n _this.saveFile();\n }\n },\n scrollbarStyle: \"overlay\"\n }\n };\n },\n computed: {\n codemirror: function codemirror() {\n return this.$refs.cmEditor.codemirror;\n },\n pathArray: function pathArray() {\n return this.item.path.substr(1).split(\"/\");\n }\n },\n mounted: function mounted() {\n this.readFile();\n },\n methods: {\n onCmCodeChange: function onCmCodeChange() {\n this.isChange = true;\n },\n onCmReady: function onCmReady() {\n this.isChange = false;\n },\n readFile: function readFile() {\n var _this2 = this;\n\n var ext = this.getFileExt(this.item);\n var mode = mime__WEBPACK_IMPORTED_MODULE_3___default.a.getType(ext) == null ? \"text/javascript\" : mime__WEBPACK_IMPORTED_MODULE_3___default.a.getType(ext);\n\n if (ext.toLowerCase() == \"makefile\") {\n mode = 'text/x-cmake';\n } else if (ext.toLowerCase() == \"py\") {\n mode = 'text/x-python';\n } else if (ext.toLowerCase() == \"go\") {\n mode = 'text/x-go';\n } else if (ext.toLowerCase() == \"vue\") {\n mode = 'text/x-vue';\n }\n\n console.log(mode);\n this.codemirror.setOption(\"mode\", mode);\n this.$api.file.download(this.item.path).then(function (res) {\n if (_this2.getFileExt(_this2.item) == 'json') {\n _this2.code = JSON.stringify(res.data, null, 2);\n } else {\n _this2.code = res.data;\n }\n\n _this2.$nextTick(function () {\n _this2.isChange = false;\n });\n });\n },\n saveFile: function saveFile() {\n var _this3 = this;\n\n var leave = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var content = this.codemirror.getValue();\n this.$api.file.update(this.item.path, content).then(function (res) {\n if (res.data.success == 200) {\n _this3.readFile();\n\n _this3.isChange = false;\n\n _this3.$buefy.toast.open({\n message: _this3.$t('Saved'),\n type: 'is-success'\n });\n\n if (leave) {\n _this3.$emit(\"close\");\n }\n } else {\n _this3.$buefy.toast.open({\n message: res.data.message,\n type: 'is-danger'\n });\n }\n });\n },\n download: function download() {\n this.downloadFile(this.item);\n },\n close: function close() {\n var _this4 = this;\n\n if (this.isChange) {\n this.$buefy.dialog.confirm({\n title: this.$t('Want to save?'),\n message: this.$t('Your changes will be lost if you don’t save them.'),\n hasIcon: true,\n canCancel: ['button'],\n confirmText: this.$t('Save'),\n cancelText: this.$t('Don’t Save'),\n onConfirm: function onConfirm() {\n _this4.saveFile(true);\n },\n onCancel: function onCancel() {\n _this4.$emit(\"close\");\n }\n });\n } else {\n this.$emit(\"close\");\n }\n }\n }\n});\n\n//# sourceURL=webpack:///./src/components/filebrowser/viewers/CodeEditor.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/filebrowser/viewers/ImageViewer.vue?vue&type=script&lang=js&": -/*!****************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/filebrowser/viewers/ImageViewer.vue?vue&type=script&lang=js& ***! - \****************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mixins_mixin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/mixins/mixin */ \"./src/mixins/mixin.js\");\n/* harmony import */ var svg64__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! svg64 */ \"./node_modules/svg64/dist/svg64.js\");\n/* harmony import */ var svg64__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(svg64__WEBPACK_IMPORTED_MODULE_1__);\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n mixins: [_mixins_mixin__WEBPACK_IMPORTED_MODULE_0__[\"mixin\"]],\n props: {\n item: {\n type: Object,\n default: function _default() {\n return {\n path: '/DATA/1.png',\n name: '1.png'\n };\n }\n }\n },\n components: {},\n data: function data() {\n return {\n type: \"\",\n ext: \"\",\n bgUrl: \"\"\n };\n },\n mounted: function mounted() {\n var _this = this;\n\n var ext = this.getFileExt(this.item);\n\n if (ext == \"svg\") {\n this.$api.file.download(this.item.path).then(function (res) {\n _this.bgUrl = svg64__WEBPACK_IMPORTED_MODULE_1___default()(res.data);\n console.log(_this.bgUrl);\n });\n } else {\n this.bgUrl = this.getFileUrl(this.item);\n }\n },\n methods: {\n download: function download() {\n this.downloadFile(this.item);\n },\n close: function close() {\n this.$emit(\"close\");\n }\n }\n});\n\n//# sourceURL=webpack:///./src/components/filebrowser/viewers/ImageViewer.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/filebrowser/viewers/PdfViewer.vue?vue&type=script&lang=js&": -/*!**************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/filebrowser/viewers/PdfViewer.vue?vue&type=script&lang=js& ***! - \**************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mixins_mixin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/mixins/mixin */ \"./src/mixins/mixin.js\");\n/* harmony import */ var vue_pdf__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vue-pdf */ \"./node_modules/vue-pdf/src/vuePdfNoSss.vue\");\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n mixins: [_mixins_mixin__WEBPACK_IMPORTED_MODULE_0__[\"mixin\"]],\n props: {\n item: {\n type: Object,\n default: function _default() {\n return {\n path: '/DATA/1.png',\n name: '1.png'\n };\n }\n }\n },\n components: {\n pdf: vue_pdf__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n },\n data: function data() {\n return {\n type: \"\",\n ext: \"\",\n isLoading: true,\n src: vue_pdf__WEBPACK_IMPORTED_MODULE_1__[\"default\"].createLoadingTask(this.getFileUrl(this.item)),\n numPages: undefined\n };\n },\n mounted: function mounted() {\n var _this = this;\n\n this.src.promise.then(function (pdf) {\n _this.isLoading = false;\n _this.numPages = pdf.numPages;\n }).catch(function () {\n _this.isLoading = false;\n });\n },\n methods: {\n download: function download() {\n this.downloadFile(this.item);\n },\n close: function close() {\n this.$emit(\"close\");\n }\n }\n});\n\n//# sourceURL=webpack:///./src/components/filebrowser/viewers/PdfViewer.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/filebrowser/viewers/VideoPlayer.vue?vue&type=script&lang=js&": -/*!****************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/filebrowser/viewers/VideoPlayer.vue?vue&type=script&lang=js& ***! - \****************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ \"./node_modules/core-js/modules/web.dom-collections.for-each.js\");\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ \"./node_modules/core-js/modules/es.object.keys.js\");\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _mixins_mixin__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/mixins/mixin */ \"./src/mixins/mixin.js\");\n/* harmony import */ var vue_plyr__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vue-plyr */ \"./node_modules/vue-plyr/dist/vue-plyr.esm.js\");\n/* harmony import */ var vue_plyr_dist_vue_plyr_css__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vue-plyr/dist/vue-plyr.css */ \"./node_modules/vue-plyr/dist/vue-plyr.css\");\n/* harmony import */ var vue_plyr_dist_vue_plyr_css__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(vue_plyr_dist_vue_plyr_css__WEBPACK_IMPORTED_MODULE_4__);\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n mixins: [_mixins_mixin__WEBPACK_IMPORTED_MODULE_2__[\"mixin\"]],\n props: {\n item: {\n type: Object,\n default: function _default() {\n return {\n path: '/DATA/5 Seconds Of Summer - Amnesia.mp4',\n name: '5 Seconds Of Summer - Amnesia.mp4'\n };\n }\n }\n },\n components: {\n VuePlyr: vue_plyr__WEBPACK_IMPORTED_MODULE_3__[\"default\"]\n },\n data: function data() {\n return {\n type: \"\",\n ext: \"\",\n player: null\n };\n },\n computed: {\n isVideo: function isVideo() {\n return this.type == \"video-x-generic\";\n },\n isAudio: function isAudio() {\n return this.type == \"audio-x-generic\";\n }\n },\n mounted: function mounted() {\n var _this = this;\n\n this.ext = this.getFileExt(this.item);\n Object.keys(this.typeMap).forEach(function (_type) {\n var extensions = _this.typeMap[_type];\n\n if (extensions.indexOf(_this.ext.toLowerCase()) > -1) {\n _this.type = _type;\n }\n });\n },\n methods: {\n download: function download() {\n this.downloadFile(this.item);\n },\n close: function close() {\n this.$emit(\"close\");\n }\n },\n beforeDestroy: function beforeDestroy() {\n this.$refs.plyr.player.destroy();\n }\n});\n\n//# sourceURL=webpack:///./src/components/filebrowser/viewers/VideoPlayer.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/forms/CommandsInput.vue?vue&type=script&lang=js&": -/*!****************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/forms/CommandsInput.vue?vue&type=script&lang=js& ***! - \****************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_array_splice_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.splice.js */ \"./node_modules/core-js/modules/es.array.splice.js\");\n/* harmony import */ var core_js_modules_es_array_splice_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_splice_js__WEBPACK_IMPORTED_MODULE_0__);\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'commands-input',\n components: {},\n data: function data() {\n return {\n isLoading: false,\n items: [],\n min: 0\n };\n },\n model: {\n prop: 'vdata',\n event: 'change'\n },\n props: {\n vdata: Array,\n label: String,\n message: String\n },\n methods: {\n addItem: function addItem() {\n this.vdata.push(\"\");\n },\n removeItem: function removeItem(index) {\n this.vdata.splice(index, 1);\n this.filterArray();\n },\n handleInput: function handleInput() {\n this.filterArray();\n },\n filterArray: function filterArray() {\n this.$emit('change', this.vdata);\n }\n }\n});\n\n//# sourceURL=webpack:///./src/components/forms/CommandsInput.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/forms/EnvInputGroup.vue?vue&type=script&lang=js&": -/*!****************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/forms/EnvInputGroup.vue?vue&type=script&lang=js& ***! - \****************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_array_splice_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.splice.js */ \"./node_modules/core-js/modules/es.array.splice.js\");\n/* harmony import */ var core_js_modules_es_array_splice_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_splice_js__WEBPACK_IMPORTED_MODULE_0__);\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'env-input-group',\n data: function data() {\n return {\n isLoading: false,\n items: [],\n min: 0\n };\n },\n model: {\n prop: 'vdata',\n event: 'change'\n },\n props: {\n vdata: Array,\n label: String,\n message: String,\n name1: {\n type: String,\n default: \"Key\"\n },\n name2: {\n type: String,\n default: \"Value\"\n }\n },\n created: function created() {//this.items = this.vdata;\n },\n watch: {},\n mounted: function mounted() {//this.addItem()\n },\n methods: {\n addItem: function addItem() {\n var itemObj = {\n container: \"\",\n host: \"\"\n };\n this.vdata.push(itemObj);\n },\n removeItem: function removeItem(index) {\n this.vdata.splice(index, 1);\n this.filterArray();\n },\n handleInput: function handleInput() {\n this.filterArray();\n },\n filterArray: function filterArray() {\n this.$emit('change', this.vdata);\n }\n }\n});\n\n//# sourceURL=webpack:///./src/components/forms/EnvInputGroup.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/forms/IconInput.vue?vue&type=script&lang=js&": -/*!************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/forms/IconInput.vue?vue&type=script&lang=js& ***! - \************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _fileList_FilePanel_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../fileList/FilePanel.vue */ \"./src/components/fileList/FilePanel.vue\");\n//\n//\n//\n//\n//\n\nvar DATA_PATH = \"/DATA\";\nvar DEV_PATH = \"/dev\";\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: \"iconInput\",\n props: {\n vdata: String,\n type: String,\n placeholder: String\n },\n model: {\n prop: 'vdata',\n event: 'change'\n },\n data: function data() {\n return {\n path: this.vdata\n };\n },\n computed: {\n initPath: function initPath() {\n if (this.type == \"device\") {\n return this.path == \"\" ? DEV_PATH : this.path;\n } else {\n return this.path == \"\" ? DATA_PATH : this.path;\n }\n },\n rootPath: function rootPath() {\n if (this.type == \"device\") {\n return DEV_PATH;\n } else {\n return DATA_PATH;\n }\n }\n },\n watch: {\n vdata: function vdata(val) {\n this.path = val;\n }\n },\n methods: {\n handleInput: function handleInput() {\n this.$emit('change', this.path);\n this.$emit('input', this.path);\n },\n selectFile: function selectFile() {\n this.showFileModal();\n },\n showFileModal: function showFileModal() {\n var _this = this;\n\n this.$buefy.modal.open({\n parent: this,\n component: _fileList_FilePanel_vue__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n hasModalCard: true,\n customClass: 'fileModal',\n trapFocus: true,\n canCancel: ['escape'],\n scroll: \"keep\",\n animation: \"zoom-in\",\n events: {\n 'updatePath': function updatePath(e) {\n _this.path = e;\n\n _this.$emit('change', _this.path);\n\n _this.$emit('input', _this.path);\n }\n },\n props: {\n initPath: this.initPath,\n rootPath: this.rootPath\n }\n });\n }\n }\n});\n\n//# sourceURL=webpack:///./src/components/forms/IconInput.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/forms/ImportPanel.vue?vue&type=script&lang=js&": -/*!**************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/forms/ImportPanel.vue?vue&type=script&lang=js& ***! - \**************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Users_liangjianli_go_CasaOSNew_CasaOS_UI_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/esm/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\");\n/* harmony import */ var core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.number.constructor.js */ \"./node_modules/core-js/modules/es.number.constructor.js\");\n/* harmony import */ var core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ \"./node_modules/core-js/modules/es.array.concat.js\");\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ \"./node_modules/core-js/modules/web.dom-collections.for-each.js\");\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.includes.js */ \"./node_modules/core-js/modules/es.array.includes.js\");\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.string.includes.js */ \"./node_modules/core-js/modules/es.string.includes.js\");\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_string_trim_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.string.trim.js */ \"./node_modules/core-js/modules/es.string.trim.js\");\n/* harmony import */ var core_js_modules_es_string_trim_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_trim_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ \"./node_modules/core-js/modules/es.regexp.exec.js\");\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.string.replace.js */ \"./node_modules/core-js/modules/es.string.replace.js\");\n/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ \"./node_modules/core-js/modules/es.function.name.js\");\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.string.split.js */ \"./node_modules/core-js/modules/es.string.split.js\");\n/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ \"./node_modules/core-js/modules/es.array.map.js\");\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ \"./node_modules/core-js/modules/es.array.filter.js\");\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es_array_splice_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.array.splice.js */ \"./node_modules/core-js/modules/es.array.splice.js\");\n/* harmony import */ var core_js_modules_es_array_splice_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_splice_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var lodash_upperFirst__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! lodash/upperFirst */ \"./node_modules/lodash/upperFirst.js\");\n/* harmony import */ var lodash_upperFirst__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(lodash_upperFirst__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var lodash_lowerFirst__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! lodash/lowerFirst */ \"./node_modules/lodash/lowerFirst.js\");\n/* harmony import */ var lodash_lowerFirst__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(lodash_lowerFirst__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var yargs_parser__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! yargs-parser */ \"./node_modules/yargs-parser/build/lib/index.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n data: function data() {\n return {\n activeTab: 0,\n file: {},\n dropFiles: {},\n dockerCliCommands: \"\",\n parseError: false,\n appFileLoaded: false,\n errors: \"\",\n dropText: this.$t('Drop your app file here or click to upload'),\n updateData: this.initData\n };\n },\n props: {\n initData: Object,\n netWorks: Array,\n oriNetWorks: Array,\n deviceMemory: Number\n },\n created: function created() {//console.log(this.oriNetWorks);\n },\n methods: {\n /**\n * @description: Emit Event to tell parent Update\n * @param {*}\n * @return {*} void\n */\n emitSubmit: function emitSubmit() {\n if (this.activeTab == 0) {\n if (this.parseCli()) {\n this.errors = \"\";\n this.$emit('update', this.updateData);\n this.$emit('close');\n } else {\n this.errors = this.$t('Please fill correct command line');\n this.parseError = true;\n }\n } else if (this.activeTab == 1) {\n if (this.appFileLoaded) {\n this.errors = \"\";\n this.$emit('update', this.updateData);\n this.$emit('close');\n } else {\n this.errors = this.$t('Please import a valid App file');\n this.parseError = true;\n }\n }\n },\n volumeAutoCheck: function volumeAutoCheck(containerPath, hostPath, appName) {\n var finalHostPath = hostPath;\n var rootDir = \"/DATA\";\n var checkArray = [{\n keywords: [\"config\"],\n value: \"/AppData/\".concat(appName).concat(containerPath)\n }, {\n keywords: [\"tvshows\", \"TV\", \"tv\"],\n value: \"/Media/TV Shows\"\n }, {\n keywords: [\"movies\", \"Movie\", \"movie\"],\n value: \"/Media/Movies\"\n }, {\n keywords: [\"Music\", \"music\"],\n value: \"/Media/Music\"\n }, {\n keywords: [\"download\"],\n value: \"/Downloads\"\n }, {\n keywords: [\"pictures\", \"photo\"],\n value: \"/Gallery\"\n }, {\n keywords: [\"media\"],\n value: \"/Media\"\n }];\n checkArray.forEach(function (item) {\n if (item.keywords.some(function (keywordsItem) {\n return containerPath.includes(keywordsItem);\n })) {\n finalHostPath = rootDir + item.value;\n return;\n }\n });\n return finalHostPath;\n },\n\n /**\n * @description: Parse Import Docker Cli Commands\n * @return {Boolean} \n */\n parseCli: function parseCli() {\n var _this2 = this;\n\n var formattedInput = this.dockerCliCommands.replace(/<[^>]*>/g, 'Custom_data').replace(/[\\r\\n]/g, \"\").replace(/\\\\/g, \"\\\\ \").replace(\"-d\", \"\").replace(/[\\\\]/g, '').trim();\n var parsedInput = Object(yargs_parser__WEBPACK_IMPORTED_MODULE_16__[\"default\"])(formattedInput);\n var command = parsedInput._;\n\n if (command[0] !== 'docker' || command[1] !== 'run' && command[1] !== 'create') {\n return false;\n } else {\n //Image\n this.updateData.image = Object(_Users_liangjianli_go_CasaOSNew_CasaOS_UI_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(command).pop();\n console.log(parsedInput); //Label\n\n if (parsedInput.name != undefined) {\n this.updateData.label = lodash_upperFirst__WEBPACK_IMPORTED_MODULE_14___default()(parsedInput.name);\n } else {\n var imageArray = this.updateData.image.split(\"/\");\n\n var lastNode = Object(_Users_liangjianli_go_CasaOSNew_CasaOS_UI_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(imageArray).pop();\n\n this.updateData.label = lodash_upperFirst__WEBPACK_IMPORTED_MODULE_14___default()(lastNode.split(\":\")[0]);\n } //Envs\n\n\n this.updateData.envs = this.makeArray(parsedInput.e).map(function (item) {\n var ii = item.split(\"=\");\n return {\n host: ii[1].replace(/\"/g, \"\"),\n container: ii[0]\n };\n }); //Ports\n\n this.updateData.ports = this.makeArray(parsedInput.p).map(function (item) {\n var pArray = item.split(\":\");\n var endArray = pArray[1].split(\"/\");\n var protocol = endArray[1] ? endArray[1] : 'tcp';\n return {\n container: endArray[0],\n host: pArray[0],\n protocol: protocol\n };\n }); //Volume\n\n this.updateData.volumes = this.makeArray(parsedInput.v).map(function (item) {\n var ii = item.split(\":\");\n\n if (ii.length > 1) {\n // console.log(this.volumeAutoCheck(ii[1],ii[0], _.lowerFirst(this.updateData.label)));\n return {\n container: ii[1],\n host: _this2.volumeAutoCheck(ii[1], ii[0], lodash_lowerFirst__WEBPACK_IMPORTED_MODULE_15___default()(_this2.updateData.label))\n };\n } else {\n return {\n container: ii[0],\n host: _this2.volumeAutoCheck(ii[0], \"\", lodash_lowerFirst__WEBPACK_IMPORTED_MODULE_15___default()(_this2.updateData.label))\n };\n }\n }); // Devices\n\n this.updateData.devices = this.makeArray(parsedInput.device).map(function (item) {\n var ii = item.split(\":\");\n return {\n container: ii[1],\n host: ii[0]\n };\n }); //Network\n\n if (parsedInput.network != undefined) {\n var network = parsedInput.network == 'physical' ? 'macvlan' : parsedInput.network;\n var seletNetworks = this.netWorks.filter(function (item) {\n if (item.driver == network) {\n return true;\n }\n });\n\n if (seletNetworks.length > 0) {\n this.updateData.network_model = seletNetworks[0].networks[0].name;\n }\n } //privileged\n\n\n this.updateData.privileged = parsedInput.privileged != undefined; //Restart\n\n if (parsedInput.restart != undefined) {\n this.updateData.restart = parsedInput.restart;\n }\n\n return true;\n }\n },\n\n /**\n * @description: Make String to Array\n * @param {*}\n * @return {Array}\n */\n makeArray: function makeArray(foo) {\n var newArray = typeof foo == \"string\" ? [foo] : foo;\n return newArray == undefined ? [] : newArray;\n },\n deleteDropFile: function deleteDropFile(index) {\n this.dropFiles.splice(index, 1);\n },\n onSelect: function onSelect(val) {\n var _this = this;\n\n var reader = new FileReader();\n\n if (typeof FileReader === \"undefined\") {\n this.$buefy.toast.open({\n duration: 3000,\n message: this.$t('Your browser does not support file reading.'),\n type: 'is-danger'\n });\n return;\n }\n\n reader.readAsText(val);\n\n reader.onload = function () {\n try {\n _this.updateData = JSON.parse(this.result);\n\n if (_this.updateData.version === undefined) {\n _this.$buefy.toast.open({\n duration: 3000,\n message: _this.$t('This is not a valid App file.'),\n type: 'is-danger'\n });\n\n _this.appFileLoaded = false;\n return false;\n } else {\n delete _this.updateData.versison;\n _this.updateData.network_model = _this.getNetworkModel(_this.updateData.network_model);\n _this.updateData.memory = _this.deviceMemory;\n _this.dropText = val.name + \" \" + _this.$t('has been selected');\n _this.appFileLoaded = true;\n return true;\n }\n } catch (e) {\n _this.$buefy.toast.open({\n duration: 3000,\n message: _this.$t('This is not a valid json file.'),\n type: 'is-danger'\n });\n\n _this.appFileLoaded = false;\n return false;\n }\n };\n },\n getNetworkModel: function getNetworkModel(netName) {\n var network = this.oriNetWorks.filter(function (net) {\n return net.name == netName;\n });\n return network.length > 0 ? network[0].name : this.oriNetWorks[0].name;\n }\n }\n});\n\n//# sourceURL=webpack:///./src/components/forms/ImportPanel.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/forms/InputGroup.vue?vue&type=script&lang=js&": -/*!*************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/forms/InputGroup.vue?vue&type=script&lang=js& ***! - \*************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_array_splice_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.splice.js */ \"./node_modules/core-js/modules/es.array.splice.js\");\n/* harmony import */ var core_js_modules_es_array_splice_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_splice_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _forms_IconInput_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../forms/IconInput.vue */ \"./src/components/forms/IconInput.vue\");\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'input-group',\n components: {\n IconInput: _forms_IconInput_vue__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n },\n data: function data() {\n return {\n isLoading: false,\n items: [],\n min: 0\n };\n },\n model: {\n prop: 'vdata',\n event: 'change'\n },\n props: {\n vdata: Array,\n label: String,\n message: String,\n type: String,\n name1: {\n type: String,\n default: \"Container\"\n },\n name2: {\n type: String,\n default: \"Host\"\n }\n },\n created: function created() {//this.items = this.vdata;\n },\n watch: {},\n mounted: function mounted() {//this.addItem()\n },\n methods: {\n addItem: function addItem() {\n var itemObj = {\n container: \"\",\n host: \"\"\n };\n this.vdata.push(itemObj);\n },\n removeItem: function removeItem(index) {\n this.vdata.splice(index, 1);\n this.filterArray();\n },\n handleInput: function handleInput() {\n this.filterArray();\n },\n filterArray: function filterArray() {\n this.$emit('change', this.vdata);\n }\n }\n});\n\n//# sourceURL=webpack:///./src/components/forms/InputGroup.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/forms/Ports.vue?vue&type=script&lang=js&": -/*!********************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/forms/Ports.vue?vue&type=script&lang=js& ***! - \********************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_array_splice_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.splice.js */ \"./node_modules/core-js/modules/es.array.splice.js\");\n/* harmony import */ var core_js_modules_es_array_splice_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_splice_js__WEBPACK_IMPORTED_MODULE_0__);\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'ports',\n data: function data() {\n return {\n isLoading: false,\n items: [],\n min: 0\n };\n },\n model: {\n prop: 'vdata',\n event: 'change'\n },\n props: {\n vdata: Array,\n showHostPost: Boolean\n },\n created: function created() {//this.items = this.vdata;\n },\n mounted: function mounted() {\n if (this.vdata.length == 0) {//this.addItem()\n }\n },\n methods: {\n addItem: function addItem() {\n var itemObj = {\n container: \"\",\n host: \"\",\n protocol: \"tcp\"\n };\n this.vdata.push(itemObj);\n },\n removeItem: function removeItem(index) {\n this.vdata.splice(index, 1);\n this.filterArray();\n },\n handleInput: function handleInput() {\n this.filterArray();\n },\n filterArray: function filterArray() {\n // let newArray = this.items.filter(item => {\n // if (item.container != \"\" && item.host != \"\") {\n // return true\n // } else {\n // return false\n // }\n // })\n this.$emit('change', this.vdata);\n }\n }\n});\n\n//# sourceURL=webpack:///./src/components/forms/Ports.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/logsAndTerminal/LogsCard.vue?vue&type=script&lang=js&": -/*!*********************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/logsAndTerminal/LogsCard.vue?vue&type=script&lang=js& ***! - \*********************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: \"logs-card\",\n data: function data() {\n return {\n fullscreen: false,\n state: true\n };\n },\n props: {\n data: String\n },\n computed: {\n buttonSzie: function buttonSzie() {\n return this.$store.state.device == \"mobile\" ? 'is-small' : '';\n },\n buttonIcon: function buttonIcon() {\n return this.fullscreen ? \"fullscreen-exit\" : \"fullscreen\";\n }\n },\n beforeDestroy: function beforeDestroy() {\n window.removeEventListener('resize', this.onWindowResize);\n },\n created: function created() {\n window.addEventListener('resize', this.onWindowResize);\n this.onWindowResize();\n },\n mounted: function mounted() {\n this.onWindowResize();\n },\n methods: {\n toggleFullScreen: function toggleFullScreen() {\n this.fullscreen = !this.fullscreen;\n },\n onWindowResize: function onWindowResize() {\n var _this = this;\n\n this.$nextTick(function () {\n if (_this.fullscreen) {\n document.getElementById('logs').style.height = window.innerHeight - _this.getTop(document.getElementById('logs')) + 'px';\n document.body.style.overflow = \"hidden\";\n } else {\n document.getElementById('logs').style.height = window.innerHeight - _this.getTop(document.getElementById('logs')) - 62 + 'px';\n document.body.style.overflow = \"auto\";\n }\n });\n },\n getTop: function getTop(e) {\n var offset = e.offsetTop;\n if (e.offsetParent != null) offset += this.getTop(e.offsetParent);\n return offset;\n },\n active: function active(state) {\n this.state = state;\n\n if (state) {\n this.onWindowResize();\n }\n }\n }\n});\n\n//# sourceURL=webpack:///./src/components/logsAndTerminal/LogsCard.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/logsAndTerminal/TerminalCard.vue?vue&type=script&lang=js&": -/*!*************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/logsAndTerminal/TerminalCard.vue?vue&type=script&lang=js& ***! - \*************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var xterm_css_xterm_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! xterm/css/xterm.css */ \"./node_modules/xterm/css/xterm.css\");\n/* harmony import */ var xterm_css_xterm_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(xterm_css_xterm_css__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var xterm__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! xterm */ \"./node_modules/xterm/lib/xterm.js\");\n/* harmony import */ var xterm__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(xterm__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var xterm_addon_fit__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! xterm-addon-fit */ \"./node_modules/xterm-addon-fit/lib/xterm-addon-fit.js\");\n/* harmony import */ var xterm_addon_fit__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(xterm_addon_fit__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var xterm_addon_attach__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! xterm-addon-attach */ \"./node_modules/xterm-addon-attach/lib/xterm-addon-attach.js\");\n/* harmony import */ var xterm_addon_attach__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(xterm_addon_attach__WEBPACK_IMPORTED_MODULE_3__);\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\nvar fitAddon = new xterm_addon_fit__WEBPACK_IMPORTED_MODULE_2__[\"FitAddon\"]();\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: \"terminal-card\",\n props: {\n id: String,\n label: String,\n wsUrl: String\n },\n data: function data() {\n return {\n fullscreen: false,\n term: \"\",\n state: true\n };\n },\n computed: {\n buttonSzie: function buttonSzie() {\n return this.$store.state.device == \"mobile\" ? 'is-small' : '';\n },\n buttonIcon: function buttonIcon() {\n return this.fullscreen ? \"fullscreen-exit\" : \"fullscreen\";\n }\n },\n mounted: function mounted() {\n this.initSocket();\n },\n beforeDestroy: function beforeDestroy() {\n this.socket.close();\n if (this.term != \"\") this.term.dispose();\n window.removeEventListener('resize', this.onWindowResize);\n },\n methods: {\n toggleFullScreen: function toggleFullScreen() {\n this.fullscreen = !this.fullscreen;\n },\n initTerm: function initTerm() {\n var term = new xterm__WEBPACK_IMPORTED_MODULE_1__[\"Terminal\"]({\n fontSize: 14,\n cursorBlink: true,\n theme: {\n background: '#1E1E1E'\n }\n });\n var attachAddon = new xterm_addon_attach__WEBPACK_IMPORTED_MODULE_3__[\"AttachAddon\"](this.socket);\n term.loadAddon(attachAddon);\n term.loadAddon(fitAddon);\n term.open(document.getElementById('xterm'));\n fitAddon.fit();\n term.focus();\n this.term = term;\n window.addEventListener('resize', this.onWindowResize);\n this.onWindowResize();\n },\n initSocket: function initSocket() {\n this.socket = new WebSocket(this.wsUrl);\n this.socketOnClose();\n this.socketOnOpen();\n this.socketOnError();\n },\n socketOnOpen: function socketOnOpen() {\n var _this = this;\n\n this.socket.onopen = function () {\n _this.initTerm();\n };\n },\n socketOnClose: function socketOnClose() {\n this.socket.onclose = function () {\n console.log('close socket');\n };\n },\n socketOnError: function socketOnError() {\n this.socket.onerror = function () {\n console.log('socket 链接失败');\n };\n },\n onWindowResize: function onWindowResize() {\n var _this2 = this;\n\n this.$nextTick(function () {\n if (_this2.fullscreen) {\n document.getElementById('xterm').style.height = window.innerHeight - _this2.getTop(document.getElementById('xterm')) + 'px';\n document.body.style.overflow = \"hidden\";\n } else {\n document.getElementById('xterm').style.height = window.innerHeight - _this2.getTop(document.getElementById('xterm')) - 62 + 'px';\n document.body.style.overflow = \"auto\";\n }\n\n if (_this2.state) {\n fitAddon.fit();\n\n _this2.socket.send(JSON.stringify({\n type: \"resize\",\n cols: _this2.term.cols,\n rows: _this2.term.rows\n }));\n }\n });\n },\n getTop: function getTop(e) {\n var offset = e.offsetTop;\n if (e.offsetParent != null) offset += this.getTop(e.offsetParent);\n return offset;\n },\n active: function active(state) {\n this.state = state;\n\n if (state) {\n this.onWindowResize();\n }\n }\n }\n});\n\n//# sourceURL=webpack:///./src/components/logsAndTerminal/TerminalCard.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/logsAndTerminal/TerminalPanel.vue?vue&type=script&lang=js&": -/*!**************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/logsAndTerminal/TerminalPanel.vue?vue&type=script&lang=js& ***! - \**************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ \"./node_modules/core-js/modules/es.array.concat.js\");\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _TerminalCard_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./TerminalCard.vue */ \"./src/components/logsAndTerminal/TerminalCard.vue\");\n/* harmony import */ var _LogsCard_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./LogsCard.vue */ \"./src/components/logsAndTerminal/LogsCard.vue\");\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'terminal-panel',\n components: {\n TerminalCard: _TerminalCard_vue__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n LogsCard: _LogsCard_vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n },\n data: function data() {\n return {\n isLoading: false,\n wsUrl: false ? undefined : \"ws://\".concat(document.location.host, \"/v1/sys/wsssh?token=\").concat(this.$store.state.token),\n logData: \"\"\n };\n },\n mounted: function mounted() {\n this.getLogs();\n },\n methods: {\n getLogs: function getLogs() {\n var _this = this;\n\n this.$api.info.systemLogs().then(function (res) {\n _this.logData = res.data.data;\n });\n },\n onInput: function onInput(e) {\n if (e == \"terminal\") {\n this.$refs.terminal.active(true);\n this.$refs.logs.active(false);\n } else {\n this.$refs.terminal.active(false);\n this.$refs.logs.active(true);\n }\n }\n }\n});\n\n//# sourceURL=webpack:///./src/components/logsAndTerminal/TerminalPanel.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/settings/PortPanel.vue?vue&type=script&lang=js&": -/*!***************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/settings/PortPanel.vue?vue&type=script&lang=js& ***! - \***************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ \"./node_modules/core-js/modules/es.array.concat.js\");\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0__);\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: \"port-panel\",\n data: function data() {\n return {\n timer: 0,\n isLoading: false,\n confirmation: \"\",\n message: \"\",\n notificationShow: false,\n port: this.initPort,\n errorType: \"is-success\",\n errors: \"\"\n };\n },\n props: {\n initPort: {\n type: String,\n default: \"0\"\n }\n },\n methods: {\n savePort: function savePort() {\n var _this = this;\n\n this.isLoading = true;\n this.$api.info.saveSystemPort({\n port: this.port\n }).then(function (res) {\n if (res.data.success == 200) {\n _this.errorType = \"is-success\";\n _this.errors = \"\";\n\n _this.$api.info.killSystem();\n\n _this.checkUpdate();\n } else {\n _this.isLoading = false;\n _this.errorType = \"is-danger\";\n _this.errors = res.data.message;\n }\n });\n },\n checkUpdate: function checkUpdate() {\n var _this2 = this;\n\n this.timer = setInterval(function () {\n var checkUrl = false ? undefined : \"http://\".concat(document.domain, \":\").concat(_this2.port);\n\n _this2.$api.info.checkUiPort(checkUrl + '/v1/sys/port').then(function (res) {\n if (res.data.success == 200) {\n clearInterval(_this2.timer);\n var url = false ? undefined : \"http://\".concat(document.domain, \":\").concat(res.data.data);\n window.open(url, '_self');\n }\n });\n }, 1000);\n }\n },\n destroyed: function destroyed() {\n clearInterval(this.timer);\n }\n});\n\n//# sourceURL=webpack:///./src/components/settings/PortPanel.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/smartHome/SmartBlock.vue?vue&type=script&lang=js&": -/*!*****************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/smartHome/SmartBlock.vue?vue&type=script&lang=js& ***! - \*****************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: \"smart-block\",\n methods: {\n goToDiscord: function goToDiscord() {\n this.$buefy.dialog.confirm({\n title: ' ',\n message: this.$t('Have an idea? Shoot it on Discord!'),\n hasIcon: true,\n icon: 'discord',\n confirmText: this.$t('Go'),\n cancelText: this.$t('Cancel'),\n onConfirm: function onConfirm() {\n window.open('https://discord.gg/Gx4BCEtHjx', '_blank');\n }\n });\n }\n }\n});\n\n//# sourceURL=webpack:///./src/components/smartHome/SmartBlock.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/syncthing/SyncBlock.vue?vue&type=script&lang=js&": -/*!****************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/syncthing/SyncBlock.vue?vue&type=script&lang=js& ***! - \****************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ \"./node_modules/core-js/modules/es.array.concat.js\");\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.number.constructor.js */ \"./node_modules/core-js/modules/es.number.constructor.js\");\n/* harmony import */ var core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_number_constructor_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.includes.js */ \"./node_modules/core-js/modules/es.array.includes.js\");\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.string.includes.js */ \"./node_modules/core-js/modules/es.string.includes.js\");\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ \"./node_modules/core-js/modules/web.dom-collections.for-each.js\");\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ \"./node_modules/core-js/modules/es.array.map.js\");\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _syncthing_SyncPanel_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../syncthing/SyncPanel.vue */ \"./src/components/syncthing/SyncPanel.vue\");\n/* harmony import */ var lodash_forEach__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! lodash/forEach */ \"./node_modules/lodash/forEach.js\");\n/* harmony import */ var lodash_forEach__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(lodash_forEach__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var lodash_pull__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! lodash/pull */ \"./node_modules/lodash/pull.js\");\n/* harmony import */ var lodash_pull__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(lodash_pull__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! axios */ \"./node_modules/axios/index.js\");\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(axios__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _mixins_mixin__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../mixins/mixin */ \"./src/mixins/mixin.js\");\n\n\n\n\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: \"sync-block\",\n components: {},\n mixins: [_mixins_mixin__WEBPACK_IMPORTED_MODULE_10__[\"mixin\"]],\n data: function data() {\n return {\n isLoading: false,\n timeGap: 3,\n state: 1,\n timer: 0,\n connection: {},\n total: {},\n devices: [],\n totalDevice: 0,\n activeDevice: 0,\n folders: 0,\n activeFolders: [],\n syncState: \"Synchronized\",\n upSpeed: 0,\n downSpeed: 0,\n myID: \"\",\n totalSize: 0,\n syncXhr: Object,\n syncBaseURL: \"\"\n };\n },\n created: function created() {\n this.syncBaseURL = false ? undefined : \"\".concat(document.location.protocol, \"//\").concat(document.location.hostname, \":\").concat(this.$store.state.syncthingPort);\n this.syncXhr = axios__WEBPACK_IMPORTED_MODULE_9___default.a.create({\n baseURL: this.syncBaseURL\n });\n this.syncXhr.defaults.headers.common['X-API-Key'] = this.$store.state.syncthingKey;\n },\n computed: {\n syncIcon: function syncIcon() {\n return this.syncState == \"Synchronized\" ? \"check-circle\" : \"sync\";\n },\n spinner: function spinner() {\n return this.syncState == \"Synchronized\" ? \"\" : \"spinner\";\n }\n },\n mounted: function mounted() {\n var _this2 = this;\n\n if (this.timer) {\n clearInterval(this.timer);\n }\n\n if (this.$store.state.syncthingKey.length != 32) {\n return false;\n } // Get Events\n\n\n this.syncXhr.get(\"/rest/events?limit=1\").then(function (res) {\n var lastEvent = res.data[0];\n\n _this2.getFolderCompletion(res);\n\n _this2.getEvents(lastEvent.id);\n });\n this.init();\n this.timer = setInterval(function () {\n _this2.init();\n }, this.timeGap * 1000);\n },\n destroyed: function destroyed() {\n clearInterval(this.timer);\n },\n watch: {\n total: function total(newValue, oldValue) {\n if (oldValue.outBytesTotal !== undefined) {\n this.upSpeed = (newValue.outBytesTotal - oldValue.outBytesTotal) / this.timeGap;\n this.downSpeed = (newValue.inBytesTotal - oldValue.inBytesTotal) / this.timeGap;\n }\n }\n },\n methods: {\n init: function init() {\n if (this.$store.state.syncthingKey.length == 32) {\n this.getStatus();\n this.getConnections();\n this.getConfigs();\n this.getTotalSize();\n }\n },\n openSyncPanel: function openSyncPanel() {\n var _this3 = this;\n\n this.$buefy.modal.open({\n parent: this,\n component: _syncthing_SyncPanel_vue__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n hasModalCard: true,\n customClass: 'sync-panel',\n trapFocus: true,\n canCancel: ['escape'],\n scroll: \"keep\",\n animation: \"zoom-in\",\n events: {\n 'updateConfig': function updateConfig() {\n _this3.init(true);\n }\n }\n });\n },\n //Events Long polling \n getEvents: function getEvents(id) {\n var _this4 = this;\n\n var _this = this;\n\n this.syncXhr.get(\"/rest/events?since=\".concat(id), {\n timeout: 60000\n }).then(function (response) {\n _this4.getFolderCompletion(response);\n\n id = Number(response.data[0].id) + 1;\n\n _this.getEvents(id);\n }).catch(function (error) {\n if (error.message.includes('timeout') || error.message.includes('Cannot')) {\n _this.getEvents(id);\n }\n });\n },\n getFolderCompletion: function getFolderCompletion(response) {\n var _this5 = this;\n\n response.data.forEach(function (eventData) {\n if (eventData.type == \"FolderSummary\") {\n if (eventData.data.summary.state == \"syncing\") {\n _this5.syncState = \"Synchronizing\";\n lodash_pull__WEBPACK_IMPORTED_MODULE_8___default()(_this5.activeFolders, eventData.data.folder);\n } else if (eventData.data.summary.state == \"idle\") {\n _this5.syncState = \"Synchronized\";\n\n if (_this5.activeFolders.indexOf(eventData.data.folder) == -1) {\n _this5.activeFolders.push(eventData.data.folder);\n }\n }\n } // if (eventData.type == \"FolderCompletion\") {\n // console.log(eventData.data);\n // }\n\n });\n },\n getStatus: function getStatus() {\n var _this6 = this;\n\n this.syncXhr.get(\"/rest/system/status\").then(function (res) {\n // console.log('status', res.data);\n _this6.myID = res.data.myID;\n });\n },\n getTotalSize: function getTotalSize() {\n var _this7 = this;\n\n this.syncXhr.get(\"/rest/db/completion?device=\".concat(this.myID)).then(function (res) {\n _this7.totalSize = res.data.globalBytes;\n });\n },\n getConnections: function getConnections() {\n var _this8 = this;\n\n this.syncXhr.get(\"/rest/system/connections\").then(function (res) {\n _this8.total = res.data.total; //console.log(\"connection\", res.data);\n\n _this8.totalDevice = 0;\n _this8.activeDevice = 0;\n lodash_forEach__WEBPACK_IMPORTED_MODULE_7___default()(res.data.connections, function (value, key) {\n if (key != _this8.myID) {\n _this8.totalDevice++;\n }\n\n if (key != _this8.myID && value.connected) {\n _this8.activeDevice++;\n }\n });\n });\n },\n getConfigs: function getConfigs() {\n var _this9 = this;\n\n this.syncXhr.get(\"/rest/config\").then(function (res) {\n _this9.state = res.data.devices.length > 1 ? 2 : 1;\n _this9.devices = res.data.devices.map(function (item) {\n item.fullData = _this9.connection[item.deviceID];\n return item;\n });\n _this9.activeFolders = res.data.folders.map(function (item) {\n return item.id;\n });\n _this9.folders = res.data.folders.length;\n });\n },\n gotoAdvancedPanel: function gotoAdvancedPanel() {\n window.open(this.syncBaseURL, \"_blank\");\n }\n }\n});\n\n//# sourceURL=webpack:///./src/components/syncthing/SyncBlock.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/syncthing/SyncPanel.vue?vue&type=script&lang=js&": -/*!****************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/syncthing/SyncPanel.vue?vue&type=script&lang=js& ***! - \****************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ \"./node_modules/core-js/modules/es.array.concat.js\");\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ \"./node_modules/core-js/modules/es.function.name.js\");\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ \"./node_modules/core-js/modules/es.regexp.exec.js\");\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.string.replace.js */ \"./node_modules/core-js/modules/es.string.replace.js\");\n/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ \"./node_modules/core-js/modules/es.array.map.js\");\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var ua_parser_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ua-parser-js */ \"./node_modules/ua-parser-js/src/ua-parser.js\");\n/* harmony import */ var ua_parser_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(ua_parser_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var lottie_web_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lottie-web-vue */ \"./node_modules/lottie-web-vue/dist/lottie-web-vue.esm.js\");\n/* harmony import */ var vue_smooth_reflow__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! vue-smooth-reflow */ \"./node_modules/vue-smooth-reflow/dist/vue-smooth-reflow.min.js\");\n/* harmony import */ var vue_smooth_reflow__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(vue_smooth_reflow__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! axios */ \"./node_modules/axios/index.js\");\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(axios__WEBPACK_IMPORTED_MODULE_8__);\n\n\n\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\nvar SYNCTHING_GOOGLEPLAY_URL = \"https://play.google.com/store/apps/details?id=com.nutomic.syncthingandroid\";\nvar SYNCTHING_APK_URL = \"https://f-droid.org/repo/com.nutomic.syncthingandroid_4286.apk\";\nvar SYNCTRAY_GITURL = \"https://api.github.com/repos/canton7/SyncTrayzor/releases/latest\";\nvar SYNCTRAY_GIT_RELEASE_URL = \"https://github.com/canton7/SyncTrayzor/releases/download/\";\nvar SYNCTHING_MAC_GITURL = \"https://api.github.com/repos/syncthing/syncthing-macos/releases/latest\";\nvar SYNCTHING_MAC_GIT_RELEASE_URL = \"https://github.com/syncthing/syncthing-macos/releases/download/\";\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: \"sync-panel\",\n components: {\n LottieAnimation: lottie_web_vue__WEBPACK_IMPORTED_MODULE_6__[\"default\"]\n },\n mixins: [vue_smooth_reflow__WEBPACK_IMPORTED_MODULE_7___default.a],\n data: function data() {\n return {\n isLoading: true,\n isGettingUrl: false,\n showMore: false,\n step: 1,\n broswerUA: {},\n icon: \"casa\",\n platform: \"casa\",\n osName: \"\",\n helpTitle: 'How to get Device ID',\n //helpTitle: 'Next actions on your device',\n syncthingDownloadUrl: \"\",\n syncthingMacDlUrl: \"\",\n syncthingWindows64DlUrl: \"\",\n syncthingWindows32DlUrl: \"\",\n syncthingAndroidDlUrl: \"\",\n syncthingAndroidDlUrl1: \"\",\n //Submit new device\n deviceId: \"\",\n syncConfig: {},\n isSubmiting: false,\n isSubmited: false,\n isValId: false,\n syncXhr: Object,\n syncBaseURL: \"\"\n };\n },\n created: function created() {\n this.syncBaseURL = false ? undefined : \"\".concat(document.location.protocol, \"//\").concat(document.location.hostname, \":\").concat(this.$store.state.syncthingPort);\n this.syncXhr = axios__WEBPACK_IMPORTED_MODULE_8___default.a.create({\n baseURL: this.syncBaseURL\n });\n this.syncXhr.defaults.headers.common['X-API-Key'] = this.$store.state.syncthingKey;\n var parser = new ua_parser_js__WEBPACK_IMPORTED_MODULE_5___default.a();\n this.broswerUA = parser.getResult();\n this.getOSIcon(); // axios.get(SYNCTHING_GITURL)\n // .then(({ data }) => {\n // this.isLoading = false;\n // const tagName = data.tag_name;\n // this.getOS(tagName)\n // this.syncthingMacDlUrl = `${SYNCTHING_GIT_RELEASE_URL}${tagName}/syncthing-macos-universal-${tagName}.zip`\n // this.syncthingWindows64DlUrl = `${SYNCTHING_GIT_RELEASE_URL}${tagName}/syncthing-windows-amd64-${tagName}.zip`\n // this.syncthingWindows32DlUrl = `${SYNCTHING_GIT_RELEASE_URL}${tagName}/syncthing-windows-386-${tagName}.zip`\n // this.syncthingAndroidDlUrl = SYNCTHING_GOOGLEPLAY_URL\n // this.syncthingAndroidDlUrl1 = SYNCTHING_APK_URL\n // })\n // .catch((error) => {\n // throw error\n // })\n // .finally(() => {\n // })\n },\n mounted: function mounted() {\n this.$smoothReflow({\n el: '.modal-card',\n property: ['height', 'width'],\n transition: 'height .25s ease, width .75s ease-out'\n });\n },\n methods: {\n getOSIcon: function getOSIcon() {\n switch (this.broswerUA.os.name) {\n case \"Mac OS\":\n this.platform = this.icon = \"macos\";\n this.osName = \"macOS\";\n break;\n\n case \"Windows\":\n this.platform = this.icon = \"windows\";\n this.osName = \"Windows\";\n break;\n\n case \"Android\":\n this.platform = this.icon = \"android\";\n this.osName = \"Android\";\n break;\n\n case \"iOS\":\n this.platform = this.icon = \"syncthing\";\n this.osName = \"iOS\";\n this.showMore = true;\n break;\n\n default:\n this.platform = this.icon = \"linux\";\n this.osName = \"Linux\";\n break;\n }\n },\n getDownloadUrl: function getDownloadUrl(os) {\n var _this = this;\n\n var arch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"\";\n this.isGettingUrl = true;\n\n switch (os) {\n case \"macOS\":\n axios__WEBPACK_IMPORTED_MODULE_8___default.a.get(SYNCTHING_MAC_GITURL).then(function (_ref) {\n var data = _ref.data;\n var tagName = data.tag_name;\n var tagNameDl = tagName.replace('v', \"\");\n var url = \"\".concat(SYNCTHING_MAC_GIT_RELEASE_URL).concat(tagName, \"/Syncthing-\").concat(tagNameDl, \".dmg\");\n\n _this.downloadSyncthing(url);\n });\n break;\n\n case \"Windows\":\n axios__WEBPACK_IMPORTED_MODULE_8___default.a.get(SYNCTRAY_GITURL).then(function (_ref2) {\n var data = _ref2.data;\n var tagName = data.tag_name;\n var url = arch == \"\" ? \"\".concat(SYNCTRAY_GIT_RELEASE_URL).concat(tagName, \"/SyncTrayzorSetup-x64.exe\") : \"\".concat(SYNCTRAY_GIT_RELEASE_URL).concat(tagName, \"/SyncTrayzorSetup-\").concat(arch, \".exe\");\n\n _this.downloadSyncthing(url);\n });\n break;\n\n case \"Android\":\n if (arch == \"google\") {\n this.downloadSyncthing(SYNCTHING_GOOGLEPLAY_URL);\n } else if (arch == \"apk\") {\n this.downloadSyncthing(SYNCTHING_APK_URL);\n } else {\n this.downloadSyncthing(SYNCTHING_GOOGLEPLAY_URL);\n }\n\n break;\n }\n },\n // getOS(tagName) {\n // switch (this.broswerUA.os.name) {\n // case \"Mac OS\":\n // this.syncthingDownloadUrl = `${SYNCTHING_GIT_RELEASE_URL}${tagName}/syncthing-${this.platform}-${this.getArchitecture()}-${tagName}.zip`\n // break;\n // case \"Windows\":\n // this.syncthingDownloadUrl = `${SYNCTHING_GIT_RELEASE_URL}${tagName}/syncthing-${this.platform}-${this.getArchitecture()}-${tagName}.zip`\n // break;\n // case \"Android\":\n // this.syncthingAndroidDlUrl = SYNCTHING_GOOGLEPLAY_URL\n // this.syncthingAndroidDlUrl1 = SYNCTHING_APK_URL\n // break;\n // case \"iOS\":\n // this.syncthingDownloadUrl = ``\n // break;\n // default:\n // this.syncthingDownloadUrl = `${SYNCTHING_GIT_RELEASE_URL}${tagName}/syncthing-${this.platform}-${this.getArchitecture()}-${tagName}.tar.gz`\n // break;\n // }\n // },\n getArchitecture: function getArchitecture() {\n var arch = \"\";\n\n if (this.broswerUA.cpu.architecture == undefined) {\n arch = \"universal\";\n } else {\n arch = this.broswerUA.cpu.architecture;\n }\n\n return arch;\n },\n downloadSyncthing: function downloadSyncthing(url) {\n var isSelf = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var target = isSelf ? \"_self\" : \"_blank\";\n console.log(url);\n\n if (url == SYNCTHING_GOOGLEPLAY_URL) {\n target = \"_blank\";\n }\n\n this.isGettingUrl = false;\n window.open(url, target);\n },\n showMorePlatform: function showMorePlatform() {\n this.icon = \"syncthing\";\n this.showMore = true;\n },\n checkDeviceId: function checkDeviceId() {\n var _this2 = this;\n\n this.syncXhr.get(\"/rest/svc/deviceid?id=\".concat(this.deviceId)).then(function (res) {\n if (res.data.id) {\n _this2.isValId = true;\n } else {\n _this2.isValId = false;\n }\n });\n },\n submitNewDevice: function submitNewDevice() {\n var _this3 = this;\n\n this.isSubmiting = true;\n this.syncXhr.get(\"/rest/config\").then(function (res) {\n _this3.syncConfig = res.data;\n\n var newDevice = _this3.genNewDevice(_this3.deviceId);\n\n _this3.syncConfig.devices.push(newDevice);\n\n _this3.syncConfig.folders = _this3.createShareFolder(_this3.syncConfig.folders);\n\n _this3.syncXhr.put(\"/rest/config\", _this3.syncConfig).then(function (res) {\n _this3.isSubmiting = false;\n\n if (res.status == 200) {\n _this3.isSubmited = true;\n _this3.helpTitle = \"What do I need to do on my device?\";\n }\n });\n });\n },\n // Create Share folder for new device\n createShareFolder: function createShareFolder(folders) {\n var _this4 = this;\n\n return folders.map(function (folder) {\n if (folder.id == \"default\") {\n folder.devices.push({\n deviceID: _this4.deviceId\n });\n }\n\n return folder;\n });\n },\n // Generate new Device with deviceId\n genNewDevice: function genNewDevice(deviceId) {\n return {\n deviceID: deviceId,\n addresses: [\"dynamic\"],\n compression: \"metadata\",\n certName: \"\",\n introducer: false,\n skipIntroductionRemovals: false,\n introducedBy: \"\",\n paused: false,\n allowedNetworks: [],\n autoAcceptFolders: false,\n maxSendKbps: 0,\n maxRecvKbps: 0,\n ignoredFolders: [],\n maxRequestKiB: 0,\n untrusted: false,\n remoteGUIPort: 0\n };\n },\n nextStep: function nextStep() {\n this.step++;\n }\n }\n});\n\n//# sourceURL=webpack:///./src/components/syncthing/SyncPanel.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/widgets/Settings.vue?vue&type=script&lang=js&": -/*!*************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/widgets/Settings.vue?vue&type=script&lang=js& ***! - \*************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ \"./node_modules/core-js/modules/es.array.filter.js\");\n/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ \"./node_modules/core-js/modules/web.dom-collections.for-each.js\");\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ \"./node_modules/core-js/modules/es.object.to-string.js\");\n/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ \"./node_modules/core-js/modules/web.dom-collections.iterator.js\");\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ \"./node_modules/core-js/modules/es.function.name.js\");\n/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var lodash_find__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lodash/find */ \"./node_modules/lodash/find.js\");\n/* harmony import */ var lodash_find__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(lodash_find__WEBPACK_IMPORTED_MODULE_5__);\n\n\n\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\nvar widgetsComponents = __webpack_require__(\"./src/widgets sync .vue$\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: \"settings\",\n data: function data() {\n return {\n apps: [],\n settingsData: []\n };\n },\n model: {\n prop: 'widgetsSettings',\n event: 'change'\n },\n props: {\n widgetsSettings: Array\n },\n computed: {\n position: function position() {\n var tempSettingArray = this.settingsData.filter(function (item) {\n return item.show;\n });\n return tempSettingArray.length > 0 ? \"is-top-left\" : \"is-bottom-left\";\n }\n },\n created: function created() {\n var _this = this;\n\n this.settingsData = JSON.parse(JSON.stringify(this.widgetsSettings));\n widgetsComponents.keys().forEach(function (fileName) {\n var componentConfig = widgetsComponents(fileName);\n\n _this.apps.push({\n app: componentConfig\n });\n });\n },\n mounted: function mounted() {\n window.addEventListener('resize', this.onRezise);\n },\n methods: {\n getIcon: function getIcon(value) {\n var obj = lodash_find__WEBPACK_IMPORTED_MODULE_5___default()(this.apps, function (o) {\n return o.app.default.name === value;\n });\n return obj.app.default.icon;\n },\n getTitle: function getTitle(value) {\n var obj = lodash_find__WEBPACK_IMPORTED_MODULE_5___default()(this.apps, function (o) {\n return o.app.default.name === value;\n });\n return obj.app.default.title;\n },\n handleInput: function handleInput() {\n this.$emit('change', this.settingsData);\n },\n onRezise: function onRezise() {// let container = document.querySelector(\".scroll-area\")\n //console.log(container.offsetHeight);\n }\n },\n destroyed: function destroyed() {\n window.addEventListener('resize', this.onRezise);\n }\n});\n\n//# sourceURL=webpack:///./src/components/widgets/Settings.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/Home.vue?vue&type=script&lang=js&": -/*!********************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/Home.vue?vue&type=script&lang=js& ***! - \********************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ \"./node_modules/core-js/modules/es.array.concat.js\");\n/* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ \"./node_modules/core-js/modules/web.dom-collections.for-each.js\");\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _components_SearchBar_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/components/SearchBar.vue */ \"./src/components/SearchBar.vue\");\n/* harmony import */ var _components_SideBar_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/SideBar.vue */ \"./src/components/SideBar.vue\");\n/* harmony import */ var _components_TopBar_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/components/TopBar.vue */ \"./src/components/TopBar.vue\");\n/* harmony import */ var _components_CoreService_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../components/CoreService.vue */ \"./src/components/CoreService.vue\");\n/* harmony import */ var _components_Apps_AppSection_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../components/Apps/AppSection.vue */ \"./src/components/Apps/AppSection.vue\");\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n // import Suggestion from '@/components/Suggestion.vue'\n\n\n\n //import Shortcuts from '@/components/Shortcuts.vue'\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: \"home-page\",\n components: {\n SideBar: _components_SideBar_vue__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n SearchBar: _components_SearchBar_vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n // Suggestion,\n AppSection: _components_Apps_AppSection_vue__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n TopBar: _components_TopBar_vue__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n CoreService: _components_CoreService_vue__WEBPACK_IMPORTED_MODULE_5__[\"default\"] //Shortcuts \n\n },\n data: function data() {\n return {\n isLoading: true,\n hardwareInfoLoading: true,\n timer: 0,\n timeGap: 3,\n topBarAni: {\n classes: 'fadeInDown',\n duration: 800\n },\n wsUrl: false ? undefined : \"ws://\".concat(document.location.host, \"/v1/notify/ws?token=\").concat(this.$store.state.token)\n };\n },\n computed: {\n sidebarOpen: function sidebarOpen() {\n return this.$store.state.sidebarOpen;\n }\n },\n mounted: function mounted() {\n var _this = this;\n\n this.isLoading = false;\n\n if (this.timer) {\n clearInterval(this.timer);\n }\n\n this.getHardwareInfo();\n this.timer = setInterval(function () {\n _this.getHardwareInfo();\n }, 2000);\n window.addEventListener(\"resize\", this.onResize);\n this.onResize();\n this.initWebSocket();\n },\n methods: {\n /**\n * @description: Show SideBar\n * @param {*}\n * @return {*} void\n */\n showSideBar: function showSideBar() {\n console.log(\"showSidebar\");\n },\n\n /**\n * @description: Window Resize Handler\n * @param {*}\n * @return {*} void\n */\n onResize: function onResize() {\n if (window.innerWidth > 480 && this.sidebarOpen) {\n this.$store.commit('closeSideBar');\n }\n },\n\n /**\n * @description: Get Hardware info and save to store\n * @param {*}\n * @return {*} void\n */\n getHardwareInfo: function getHardwareInfo() {\n var _this2 = this;\n\n this.$api.info.allInfo().then(function (res) {\n if (res.data.success === 200) {\n _this2.hardwareInfoLoading = false;\n\n _this2.$store.commit('changeHardwareInfo', res.data.data);\n }\n });\n },\n\n /**\n * @description: Handle applist change from websocket\n * @param {*}\n * @return {*} void\n */\n handleAppListChange: function handleAppListChange() {\n this.$refs.apps.getList();\n },\n\n /**\n * @description: WebSocket group function\n * @param {*}\n * @return {*} void\n */\n initWebSocket: function initWebSocket() {\n //初始化weosocket\n this.websock = new WebSocket(this.wsUrl);\n this.websock.onmessage = this.websocketonmessage;\n this.websock.onopen = this.websocketonopen;\n this.websock.onerror = this.websocketonerror;\n this.websock.onclose = this.websocketclose;\n },\n websocketonopen: function websocketonopen() {\n //连接建立之后执行send方法发送数据\n console.log('connected');\n var sendData = {\n type: \"app\",\n data: \"\"\n };\n this.websocketsend(JSON.stringify(sendData));\n },\n websocketonerror: function websocketonerror() {\n //连接建立失败重连\n this.initWebSocket();\n },\n websocketonmessage: function websocketonmessage(e) {\n var _this3 = this;\n\n //数据接收\n var redata = JSON.parse(e.data);\n redata.forEach(function (item) {\n if (item.message == \"uninstalled\" || item.message == \"installed\") {\n _this3.handleAppListChange();\n }\n });\n },\n websocketsend: function websocketsend(Data) {\n //数据发送\n this.websock.send(Data);\n },\n websocketclose: function websocketclose(e) {\n //关闭\n console.log('断开连接', e);\n }\n },\n beforeDestroy: function beforeDestroy() {\n window.removeEventListener(\"resize\", this.onResize);\n clearInterval(this.timer);\n }\n});\n\n//# sourceURL=webpack:///./src/views/Home.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/widgets/Clock.vue?vue&type=script&lang=js&": -/*!***********************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/widgets/Clock.vue?vue&type=script&lang=js& ***! - \***********************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ \"./node_modules/core-js/modules/es.regexp.exec.js\");\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.string.replace.js */ \"./node_modules/core-js/modules/es.string.replace.js\");\n/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var dateformat__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! dateformat */ \"./node_modules/dateformat/lib/dateformat.js\");\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: \"clock\",\n icon: \"clock-outline\",\n title: \"Time\",\n initShow: true,\n data: function data() {\n return {\n timer: 0,\n timeText: \"\",\n dateText: \"\",\n lang: this.$i18n.locale.replace(\"_\", \"-\")\n };\n },\n mounted: function mounted() {\n var _this = this;\n\n if (this.timer) {\n clearInterval(this.timer);\n }\n\n this.updateClock();\n this.timer = setInterval(function () {\n _this.updateClock();\n }, 1000);\n },\n watch: {\n '$i18n.locale': {\n handler: function handler(data) {\n this.lang = data.replace(\"_\", \"-\");\n },\n deep: true\n }\n },\n methods: {\n updateClock: function updateClock() {\n var today = new Date();\n this.timeText = Object(dateformat__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(today, \"HH:MM\");\n this.dateText = today.toLocaleDateString(this.lang, {\n weekday: \"long\",\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\"\n });\n }\n }\n});\n\n//# sourceURL=webpack:///./src/widgets/Clock.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/widgets/Cpu.vue?vue&type=script&lang=js&": -/*!*********************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/widgets/Cpu.vue?vue&type=script&lang=js& ***! - \*********************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ \"./node_modules/core-js/modules/es.array.map.js\");\n/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_number_to_fixed_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.number.to-fixed.js */ \"./node_modules/core-js/modules/es.number.to-fixed.js\");\n/* harmony import */ var core_js_modules_es_number_to_fixed_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_number_to_fixed_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var vue_apexcharts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vue-apexcharts */ \"./node_modules/vue-apexcharts/dist/vue-apexcharts.js\");\n/* harmony import */ var vue_apexcharts__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(vue_apexcharts__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var vue_smooth_reflow__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vue-smooth-reflow */ \"./node_modules/vue-smooth-reflow/dist/vue-smooth-reflow.min.js\");\n/* harmony import */ var vue_smooth_reflow__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(vue_smooth_reflow__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var lodash_orderBy__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash/orderBy */ \"./node_modules/lodash/orderBy.js\");\n/* harmony import */ var lodash_orderBy__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_orderBy__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var lodash_has__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lodash/has */ \"./node_modules/lodash/has.js\");\n/* harmony import */ var lodash_has__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(lodash_has__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var lodash_slice__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lodash/slice */ \"./node_modules/lodash/slice.js\");\n/* harmony import */ var lodash_slice__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(lodash_slice__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _mixins_mixin__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../mixins/mixin */ \"./src/mixins/mixin.js\");\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'cpu',\n icon: \"cog\",\n title: \"System Status\",\n initShow: true,\n mixins: [vue_smooth_reflow__WEBPACK_IMPORTED_MODULE_3___default.a, _mixins_mixin__WEBPACK_IMPORTED_MODULE_7__[\"mixin\"]],\n components: {\n apexchart: vue_apexcharts__WEBPACK_IMPORTED_MODULE_2___default.a\n },\n data: function data() {\n return {\n activeTab: 0,\n showMore: false,\n cpuCores: 0,\n totalMemory: 0,\n barHeight: 120,\n cpuSeries: [0],\n ramSeries: [0],\n chartOptions: {\n chart: {\n type: 'radialBar',\n width: '100%'\n },\n colors: [\"#01FFC2\"],\n grid: {\n padding: {\n left: 0,\n right: 0,\n top: -8,\n bottom: -10\n }\n },\n plotOptions: {\n radialBar: {\n startAngle: 0,\n endAngle: 360,\n offsetX: 0,\n offsetY: 0,\n hollow: {\n margin: 0,\n size: '60%',\n image: undefined,\n imageOffsetX: 0,\n imageOffsetY: 0,\n position: 'front',\n dropShadow: {\n enabled: true,\n top: 3,\n left: 0,\n blur: 4,\n opacity: 0.24\n }\n },\n track: {\n background: '#fff',\n strokeWidth: '100%',\n margin: 0,\n // margin is in pixels\n opacity: 0.4,\n dropShadow: {\n enabled: true,\n top: -3,\n left: 0,\n blur: 4,\n opacity: 0.35\n }\n },\n dataLabels: {\n show: true,\n value: {\n formatter: function formatter(val) {\n return parseInt(val) + \"%\";\n },\n offsetY: -10,\n color: '#fff',\n fontSize: '18px',\n show: true\n }\n }\n }\n },\n fill: {\n type: 'gradient',\n gradient: {\n shade: 'dark',\n type: 'diagonal2',\n shadeIntensity: 0.5,\n gradientToColors: ['#06FF03'],\n inverseColors: true,\n opacityFrom: 1,\n opacityTo: 1,\n stops: [0, 100]\n }\n },\n stroke: {\n lineCap: 'round'\n },\n labels: ['']\n },\n containerCpuList: [],\n containerRamList: []\n };\n },\n mounted: function mounted() {\n this.cpuCores = this.$store.state.hardwareInfo.cpu.num;\n this.totalMemory = this.$store.state.hardwareInfo.mem.total;\n this.updateCharts(this.$store.state.hardwareInfo);\n this.getDockerUsage();\n this.$smoothReflow({\n el: '.widget',\n property: ['height']\n });\n },\n watch: {\n // Watch if Hardware info changes in the store\n '$store.state.hardwareInfo': {\n handler: function handler(val) {\n this.updateCharts(val);\n },\n deep: true\n }\n },\n methods: {\n /**\n * @description: Update cpu and memory usage\n * @param {*}\n * @return {*} void\n */\n updateCharts: function updateCharts(hardwareInfo) {\n this.cpuSeries = [hardwareInfo.cpu.percent];\n this.ramSeries = [hardwareInfo.mem.usedPercent];\n\n if (this.showMore) {\n this.getDockerUsage();\n }\n },\n\n /**\n * @description: Get Docker apps cpu and memory usage\n * @param {*}\n * @return {*} void\n */\n getDockerUsage: function getDockerUsage() {\n var _this = this;\n\n this.$api.app.getAppUsage().then(function (res) {\n var id = 0;\n _this.containerCpuList = res.data.data.map(function (item) {\n var usage = 0;\n\n if (item.pre == null) {\n usage = 0;\n } else {\n var cpu_delta = item.data.cpu_stats.cpu_usage.total_usage - item.pre.cpu_stats.cpu_usage.total_usage;\n var system_cpu_delta = item.data.cpu_stats.system_cpu_usage - item.pre.cpu_stats.system_cpu_usage + 1;\n var number_cpus = item.data.cpu_stats.online_cpus;\n usage = (cpu_delta / system_cpu_delta * number_cpus * 100).toFixed(1);\n }\n\n id++;\n return {\n id: id,\n usage: isNaN(usage) ? 0 : usage,\n icon: item.icon,\n title: item.title\n };\n });\n _this.containerRamList = res.data.data.map(function (item) {\n var cache = 0;\n var id = 0;\n\n if (lodash_has__WEBPACK_IMPORTED_MODULE_5___default()(item.data.memory_stats.stats, 'inactive_file')) {\n cache = item.data.memory_stats.stats.inactive_file;\n } else {\n if (lodash_has__WEBPACK_IMPORTED_MODULE_5___default()(item.data.memory_stats.stats, 'cache')) {\n cache = item.data.memory_stats.stats.cache;\n } else if (lodash_has__WEBPACK_IMPORTED_MODULE_5___default()(item.data.memory_stats.stats, 'total_inactive_file')) {\n cache = item.data.memory_stats.stats.total_inactive_file;\n }\n }\n\n var used_memory = \"stats\" in item.data.memory_stats ? item.data.memory_stats.usage - cache : NaN;\n id++;\n return {\n id: id,\n usage: isNaN(used_memory) ? 0 : used_memory,\n icon: item.icon,\n title: item.title\n };\n });\n _this.containerCpuList = lodash_slice__WEBPACK_IMPORTED_MODULE_6___default()(lodash_orderBy__WEBPACK_IMPORTED_MODULE_4___default()(_this.containerCpuList, ['usage'], ['desc']), 0, 8);\n _this.containerRamList = lodash_slice__WEBPACK_IMPORTED_MODULE_6___default()(lodash_orderBy__WEBPACK_IMPORTED_MODULE_4___default()(_this.containerRamList, ['usage'], ['desc']), 0, 8);\n });\n },\n\n /**\n * @description: Toggle more info\n * @param {*}\n * @return {*} void\n */\n showMoreInfo: function showMoreInfo() {\n this.showMore = !this.showMore;\n }\n }\n});\n\n//# sourceURL=webpack:///./src/widgets/Cpu.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/widgets/Disks.vue?vue&type=script&lang=js&": -/*!***********************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/widgets/Disks.vue?vue&type=script&lang=js& ***! - \***********************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _components_Storage_StorageManagerPanel_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/components/Storage/StorageManagerPanel.vue */ \"./src/components/Storage/StorageManagerPanel.vue\");\n/* harmony import */ var _mixins_mixin__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../mixins/mixin */ \"./src/mixins/mixin.js\");\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'disks',\n icon: \"harddisk\",\n title: \"Storage Status\",\n initShow: true,\n mixins: [_mixins_mixin__WEBPACK_IMPORTED_MODULE_1__[\"mixin\"]],\n data: function data() {\n return {\n totalSize: 0,\n totalUsed: 0,\n totalPercent: 0,\n health: \"\",\n usbDisks: []\n };\n },\n mounted: function mounted() {\n this.getDiskInfo(this.$store.state.hardwareInfo.disk);\n this.usbDisks = this.$store.state.hardwareInfo.usb;\n },\n watch: {\n // Watch if Hardware info changes in the store\n '$store.state.hardwareInfo': {\n handler: function handler(data) {\n this.getDiskInfo(data.disk);\n this.usbDisks = data.usb;\n },\n deep: true\n }\n },\n methods: {\n getDiskInfo: function getDiskInfo(diskInfo) {\n this.totalSize = diskInfo.size;\n this.totalUsed = diskInfo.used;\n this.totalPercent = 100 - Math.floor(diskInfo.avail * 100 / this.totalSize);\n this.health = diskInfo.health;\n },\n showDiskManagement: function showDiskManagement() {\n this.$buefy.modal.open({\n parent: this,\n component: _components_Storage_StorageManagerPanel_vue__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n hasModalCard: true,\n customClass: 'storage-modal',\n trapFocus: true,\n canCancel: [],\n scroll: \"keep\",\n animation: \"zoom-in\"\n });\n }\n }\n});\n\n//# sourceURL=webpack:///./src/widgets/Disks.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/widgets/Network.vue?vue&type=script&lang=js&": -/*!*************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/widgets/Network.vue?vue&type=script&lang=js& ***! - \*************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ \"./node_modules/core-js/modules/web.dom-collections.for-each.js\");\n/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_number_to_fixed_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.number.to-fixed.js */ \"./node_modules/core-js/modules/es.number.to-fixed.js\");\n/* harmony import */ var core_js_modules_es_number_to_fixed_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_number_to_fixed_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var vue_apexcharts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vue-apexcharts */ \"./node_modules/vue-apexcharts/dist/vue-apexcharts.js\");\n/* harmony import */ var vue_apexcharts__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(vue_apexcharts__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _mixins_mixin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/mixins/mixin */ \"./src/mixins/mixin.js\");\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n mixins: [_mixins_mixin__WEBPACK_IMPORTED_MODULE_3__[\"mixin\"]],\n name: 'network',\n icon: \"lan\",\n title: \"Network Status\",\n initShow: true,\n components: {\n VueApexCharts: vue_apexcharts__WEBPACK_IMPORTED_MODULE_2___default.a\n },\n data: function data() {\n return {\n initNetwork: [],\n networkId: 0,\n networks: [],\n currentUpSpeed: 1,\n currentDownSpeed: 1,\n chartOptions: {\n chart: {\n offsetX: -5,\n offsetY: -10,\n zoom: {\n enabled: false\n },\n toolbar: {\n show: false\n },\n stacked: false,\n animations: {\n enabled: false\n }\n },\n markers: {\n size: 0\n },\n dataLabels: {\n enabled: false\n },\n stroke: {\n curve: 'smooth',\n width: 1\n },\n grid: {\n xaxis: {\n lines: {\n show: false\n }\n },\n yaxis: {\n lines: {\n show: true\n }\n }\n },\n tooltip: {\n enabled: false\n },\n xaxis: {\n type: 'numeric',\n range: 60,\n labels: {\n show: false\n },\n tooltip: {\n enabled: false\n },\n axisBorder: {\n show: false\n }\n },\n yaxis: {\n labels: {\n show: true,\n rotate: 0,\n rotateAlways: false,\n hideOverlappingLabels: true,\n showDuplicates: false,\n trim: false,\n minHeight: undefined,\n maxHeight: 120,\n style: {\n colors: '#ffffff',\n fontSize: '10px',\n fontWeight: 400,\n cssClass: 'apexcharts-xaxis-label'\n },\n offsetX: 0,\n offsetY: 0,\n format: undefined,\n formatter: undefined,\n datetimeUTC: true\n }\n },\n legend: {\n show: false,\n position: 'top',\n horizontalAlign: 'left'\n }\n }\n };\n },\n watch: {\n // Watch if Hardware info changes in the store\n '$store.state.hardwareInfo': {\n handler: function handler(val) {\n this.buildDatas(val.net);\n },\n deep: true\n }\n },\n created: function created() {\n this.initNetwork = this.$store.state.hardwareInfo.net;\n },\n mounted: function mounted() {\n this.buildDatas(this.initNetwork);\n },\n methods: {\n buildDatas: function buildDatas(data) {\n var _this = this;\n\n var lastTime = 0;\n data.forEach(function (el, index) {\n if (_this.networks[index] === undefined) {\n _this.networks[index] = [{\n name: 'Up',\n data: [\"0\"],\n cacheData: 0\n }, {\n name: 'Down',\n data: [\"0\"],\n cacheData: 0\n }];\n }\n\n var timeGap = lastTime == 0 ? 2 : el.time - lastTime; // Send Data\n\n if (_this.networks[index][0].data.length >= 60) {\n _this.networks[index][0].data.shift();\n }\n\n if (_this.networks[index][0].cacheData > 0) {\n _this.networks[index][0].data.push(_this.covertToKB((el.bytesSent - _this.networks[index][0].cacheData) / timeGap));\n }\n\n _this.networks[index][0].cacheData = el.bytesSent; // RecvData\n\n if (_this.networks[index][1].data.length >= 60) {\n _this.networks[index][1].data.shift();\n }\n\n if (_this.networks[index][1].cacheData > 0) {\n _this.networks[index][1].data.push(_this.covertToKB((el.bytesRecv - _this.networks[index][1].cacheData) / timeGap));\n }\n\n _this.networks[index][1].cacheData = el.bytesRecv;\n lastTime = el.time;\n });\n this.$refs.chart.updateSeries(this.networks[this.networkId]);\n this.currentUpSpeed = this.networks[this.networkId][0].data[this.networks[this.networkId][0].data.length - 1];\n this.currentDownSpeed = this.networks[this.networkId][1].data[this.networks[this.networkId][1].data.length - 1];\n },\n covertToKB: function covertToKB(bytes) {\n return (bytes / 1024).toFixed(0);\n }\n }\n});\n\n//# sourceURL=webpack:///./src/widgets/Network.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/AcquaintanceShare/AcquaintanceEntryCard.vue?vue&type=template&id=c6631ce8&": -/*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/AcquaintanceShare/AcquaintanceEntryCard.vue?vue&type=template&id=c6631ce8& ***! - \********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"column is-narrow is-3\" }, [\n _c(\n \"div\",\n {\n staticClass:\n \"wuji-card is-flex is-align-items-center is-justify-content-center p-55 app-card\"\n },\n [\n _c(\"div\", { staticClass: \"blur-background\" }),\n _c(\"div\", { staticClass: \"cards-content\" }, [\n _c(\n \"div\",\n {\n staticClass:\n \"has-text-centered is-flex is-justify-content-center is-flex-direction-column pt-3 pb-3 img-c\"\n },\n [\n _c(\n \"a\",\n {\n staticClass: \"is-flex is-justify-content-center\",\n attrs: { href: _vm.url, target: \"share_window\" },\n on: { click: _vm.analyseShareClick }\n },\n [\n _c(\"b-image\", {\n staticClass: \"is-72x72\",\n attrs: {\n src: __webpack_require__(/*! @/assets/img/share/folder-publicshare.svg */ \"./src/assets/img/share/folder-publicshare.svg\")\n }\n })\n ],\n 1\n ),\n _c(\"p\", { staticClass: \"mt-4 one-line\" }, [\n _c(\n \"a\",\n {\n staticClass: \"one-line\",\n attrs: { href: _vm.url, target: \"share_window\" },\n on: { click: _vm.analyseShareClick }\n },\n [_vm._v(\" \" + _vm._s(_vm.$t(\"Share module name\")) + \" \")]\n )\n ])\n ]\n )\n ])\n ]\n )\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/AcquaintanceShare/AcquaintanceEntryCard.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/Apps/AppCard.vue?vue&type=template&id=0ef4e844&": -/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Apps/AppCard.vue?vue&type=template&id=0ef4e844& ***! - \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n staticClass:\n \"wuji-card is-flex is-align-items-center is-justify-content-center p-55 app-card\",\n on: {\n mouseover: function($event) {\n _vm.hover = true\n },\n mouseleave: function($event) {\n _vm.hover = true\n }\n }\n },\n [\n _c(\n \"div\",\n { staticClass: \"action-btn\" },\n [\n _c(\n \"b-dropdown\",\n {\n ref: \"dro\",\n staticClass: \"app-card-drop\",\n attrs: {\n \"aria-role\": \"list\",\n triggers: [\"contextmenu\", \"click\"],\n position: \"is-bottom-left\",\n animation: \"fade1\",\n \"mobile-modal\": false,\n \"append-to-body\": \"\"\n },\n on: { \"active-change\": _vm.setDropState },\n scopedSlots: _vm._u([\n {\n key: \"trigger\",\n fn: function() {\n return [\n _c(\n \"p\",\n { attrs: { role: \"button\" } },\n [_c(\"b-icon\", { attrs: { icon: \"dots-vertical\" } })],\n 1\n )\n ]\n },\n proxy: true\n }\n ])\n },\n [\n _c(\n \"b-dropdown-item\",\n {\n attrs: {\n \"aria-role\": \"menu-item\",\n focusable: false,\n custom: \"\"\n }\n },\n [\n _c(\n \"b-button\",\n {\n attrs: { type: \"is-text\", tag: \"a\", expanded: \"\" },\n on: {\n click: function($event) {\n return _vm.openApp(_vm.item)\n }\n }\n },\n [_vm._v(_vm._s(_vm.$t(\"Open\")))]\n ),\n _c(\n \"b-button\",\n {\n attrs: { type: \"is-text\", expanded: \"\" },\n on: { click: _vm.configApp }\n },\n [_vm._v(_vm._s(_vm.$t(\"Setting\")))]\n ),\n _c(\n \"b-button\",\n {\n staticClass: \"mb-1\",\n attrs: {\n type: \"is-text\",\n loading: _vm.isUninstalling,\n expanded: \"\"\n },\n on: { click: _vm.uninstallConfirm }\n },\n [_vm._v(\" \" + _vm._s(_vm.$t(\"Uninstall\")) + \" \")]\n ),\n _c(\"div\", { staticClass: \"gap\" }, [\n _c(\n \"div\",\n { staticClass: \"columns is-gapless bbor is-flex\" },\n [\n _c(\n \"div\",\n {\n staticClass:\n \"column is-flex is-justify-content-center is-align-items-center\"\n },\n [\n _c(\n \"b-button\",\n {\n attrs: {\n type: \"is-text\",\n expanded: \"\",\n loading: _vm.isRestarting\n },\n on: { click: _vm.restartApp }\n },\n [\n _c(\"b-icon\", {\n attrs: {\n icon: \"sync\",\n \"custom-size\": \"mdi-18px\"\n }\n })\n ],\n 1\n )\n ],\n 1\n ),\n _c(\n \"div\",\n {\n staticClass:\n \"column is-flex is-justify-content-center is-align-items-center\"\n },\n [\n _c(\n \"b-button\",\n {\n class: _vm.item.state,\n attrs: {\n type: \"is-text\",\n expanded: \"\",\n loading: _vm.isStarting\n },\n on: {\n click: function($event) {\n return _vm.toggle(_vm.item)\n }\n }\n },\n [\n _c(\"b-icon\", {\n attrs: {\n icon: \"power-standby\",\n \"custom-size\": \"mdi-18px\"\n }\n })\n ],\n 1\n )\n ],\n 1\n )\n ]\n )\n ])\n ],\n 1\n )\n ],\n 1\n )\n ],\n 1\n ),\n _c(\"div\", { staticClass: \"blur-background\" }),\n _c(\n \"div\",\n { staticClass: \"cards-content\" },\n [\n _c(\n \"div\",\n {\n staticClass:\n \"has-text-centered is-flex is-justify-content-center is-flex-direction-column pt-3 pb-3 img-c\"\n },\n [\n _c(\n \"a\",\n {\n staticClass: \"is-flex is-justify-content-center\",\n on: {\n click: function($event) {\n return _vm.openApp(_vm.item)\n }\n }\n },\n [\n _c(\"b-image\", {\n staticClass: \"is-72x72\",\n class: _vm._f(\"dotClass\")(_vm.item.state),\n attrs: {\n src: _vm.item.icon,\n \"src-fallback\": __webpack_require__(/*! @/assets/img/app/default.png */ \"./src/assets/img/app/default.png\"),\n \"webp-fallback\": \".jpg\"\n }\n })\n ],\n 1\n ),\n _c(\"p\", { staticClass: \"mt-4 one-line\" }, [\n _c(\n \"a\",\n {\n staticClass: \"one-line\",\n on: {\n click: function($event) {\n return _vm.openApp(_vm.item)\n }\n }\n },\n [_vm._v(\" \" + _vm._s(_vm.item.name) + \" \")]\n )\n ])\n ]\n ),\n _c(\"b-loading\", {\n attrs: { \"is-full-page\": false, \"can-cancel\": false },\n model: {\n value: _vm.isUninstalling,\n callback: function($$v) {\n _vm.isUninstalling = $$v\n },\n expression: \"isUninstalling\"\n }\n })\n ],\n 1\n )\n ]\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/Apps/AppCard.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/Apps/AppSection.vue?vue&type=template&id=cf73c23e&": -/*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Apps/AppSection.vue?vue&type=template&id=cf73c23e& ***! - \********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"home-section has-text-left mt-6\" }, [\n _c(\"div\", { staticClass: \"title-bar is-flex is-align-items-center\" }, [\n _c(\"h1\", { staticClass: \"title is-4 has-text-white is-flex-shrink-1\" }, [\n _vm._v(_vm._s(_vm.$t(\"Apps\")))\n ]),\n _c(\n \"div\",\n { staticClass: \"buttons \" },\n [\n _c(\n \"b-button\",\n {\n attrs: {\n id: \"v-step-0\",\n \"icon-left\": \"apps\",\n type: \"is-dark\",\n size: \"is-small\",\n loading: _vm.isShowing,\n rounded: \"\"\n },\n on: { click: _vm.showInstall }\n },\n [_vm._v(_vm._s(_vm.$t(\"App Store\")))]\n )\n ],\n 1\n )\n ]),\n _c(\n \"div\",\n { staticClass: \"columns is-variable is-2 is-multiline app-list \" },\n [\n !_vm.isLoading\n ? [\n _c(\"file-entry-card\"),\n _c(\"acquaintance-entry-card\"),\n _vm.appList.length == 0\n ? _c(\"div\", { staticClass: \"column is-narrow is-3\" }, [\n _c(\n \"div\",\n {\n staticClass:\n \"wuji-card is-flex is-align-items-center is-justify-content-center p-55 app-card\"\n },\n [\n _c(\"div\", { staticClass: \"blur-background\" }),\n _c(\"div\", { staticClass: \"cards-content\" }, [\n _c(\n \"div\",\n {\n staticClass:\n \"has-text-centered is-flex is-justify-content-center is-flex-direction-column p-55 img-c\"\n },\n [\n _c(\n \"a\",\n {\n staticClass:\n \"is-flex is-justify-content-center\",\n on: { click: _vm.showInstall }\n },\n [\n _c(\"b-image\", {\n staticClass: \"is-72x72\",\n attrs: {\n src: __webpack_require__(/*! @/assets/img/app/add_button.svg */ \"./src/assets/img/app/add_button.svg\")\n }\n })\n ],\n 1\n )\n ]\n )\n ])\n ]\n )\n ])\n : _vm._e(),\n _vm._l(_vm.appList, function(item, index) {\n return _c(\n \"div\",\n {\n key: \"app-\" + index + item.icon + item.port,\n staticClass: \"column is-narrow is-3\"\n },\n [\n _c(\"app-card\", {\n attrs: { item: item },\n on: {\n updateState: _vm.getList,\n configApp: _vm.showConfigPanel\n }\n })\n ],\n 1\n )\n })\n ]\n : _vm._e(),\n _c(\"b-loading\", {\n attrs: { \"is-full-page\": false },\n model: {\n value: _vm.isLoading,\n callback: function($$v) {\n _vm.isLoading = $$v\n },\n expression: \"isLoading\"\n }\n })\n ],\n 2\n )\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/Apps/AppSection.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/Apps/AppSideBar.vue?vue&type=template&id=7e7fa090&": -/*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Apps/AppSideBar.vue?vue&type=template&id=7e7fa090& ***! - \********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"app-sidebar\", class: { \"no-event\": _vm.isOpen } },\n [\n _c(\n \"transition\",\n {\n attrs: { name: _vm.transitionName },\n on: {\n \"before-enter\": _vm.beforeEnter,\n \"after-enter\": _vm.afterEnter,\n enter: _vm.enter\n }\n },\n [\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.isOpen,\n expression: \"isOpen\"\n }\n ],\n ref: \"sidebarContent\",\n staticClass: \"sidebar-content\",\n class: _vm.rootClasses\n },\n [_vm._t(\"default\", null, { close: _vm.close })],\n 2\n )\n ]\n )\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/Apps/AppSideBar.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/Apps/AppTerminalPanel.vue?vue&type=template&id=a489bf38&": -/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Apps/AppTerminalPanel.vue?vue&type=template&id=a489bf38& ***! - \**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"modal-card\" },\n [\n _c(\"section\", { staticClass: \"modal-card-body \" }, [\n _c(\"div\", { staticClass: \"close-container\" }, [\n _c(\"button\", {\n staticClass: \"delete\",\n attrs: { type: \"button\" },\n on: {\n click: function($event) {\n return _vm.$emit(\"close\")\n }\n }\n })\n ]),\n _c(\"h2\", { staticClass: \"title is-4\" }, [_vm._v(_vm._s(_vm.appName))]),\n _c(\n \"div\",\n { staticClass: \"flex1\" },\n [\n _c(\n \"b-tabs\",\n { attrs: { animated: false }, on: { input: _vm.onInput } },\n [\n _c(\n \"b-tab-item\",\n { attrs: { label: _vm.$t(\"Terminal\"), value: \"terminal\" } },\n [\n _c(\"terminal-card\", {\n ref: \"terminal\",\n attrs: { wsUrl: _vm.wsUrl }\n })\n ],\n 1\n ),\n _c(\n \"b-tab-item\",\n { attrs: { label: _vm.$t(\"Logs\"), value: \"logs\" } },\n [\n _c(\"logs-card\", {\n ref: \"logs\",\n attrs: { data: _vm.logData }\n })\n ],\n 1\n )\n ],\n 1\n )\n ],\n 1\n )\n ]),\n _c(\"b-loading\", {\n attrs: { \"is-full-page\": false },\n model: {\n value: _vm.isLoading,\n callback: function($$v) {\n _vm.isLoading = $$v\n },\n expression: \"isLoading\"\n }\n })\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/Apps/AppTerminalPanel.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/Apps/Panel.vue?vue&type=template&id=46e56a92&": -/*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Apps/Panel.vue?vue&type=template&id=46e56a92& ***! - \***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n staticClass: \"modal-card app-card\",\n class: { narrow: _vm.currentSlide > 0 }\n },\n [\n _c(\"app-side-bar\", {\n attrs: { overlay: true, position: \"absolute\", right: true },\n scopedSlots: _vm._u([\n {\n key: \"default\",\n fn: function(ref) {\n var close = ref.close\n return [\n _c(\"div\", { staticClass: \"modal-card app-detial\" }, [\n _c(\n \"header\",\n {\n staticClass: \"modal-card-head\",\n staticStyle: { background: \"#ff000\" }\n },\n [\n _c(\"div\", { staticClass: \"flex1\" }, [\n _c(\n \"div\",\n {\n staticClass:\n \"button is-ghost auto-height pl-0 pt-0 pb-0\",\n on: { click: close }\n },\n [\n _c(\"b-icon\", {\n staticClass: \"mr-1\",\n attrs: { icon: \"chevron-left\", size: \"is-medium\" }\n }),\n _vm._v(\" \" + _vm._s(_vm.$t(\"Back\")) + \" \")\n ],\n 1\n )\n ])\n ]\n ),\n _c(\n \"section\",\n {\n staticClass: \"modal-card-body\",\n attrs: { id: \"ss-content\" }\n },\n [\n _c(\n \"div\",\n { staticClass: \"app-header is-flex pb-4 b-line\" },\n [\n _c(\n \"div\",\n { staticClass: \"header-icon mr-5\" },\n [\n _c(\"b-image\", {\n key: _vm.detailData.icon,\n staticClass: \"is-128x128 icon-shadow\",\n attrs: {\n src: _vm.detailData.icon,\n \"src-fallback\": __webpack_require__(/*! @/assets/img/app/default.png */ \"./src/assets/img/app/default.png\"),\n \"webp-fallback\": \".jpg\"\n }\n })\n ],\n 1\n ),\n _c(\n \"div\",\n {\n staticClass: \"flex1 is-flex is-align-items-center\"\n },\n [\n _c(\"div\", [\n _c(\n \"h4\",\n { staticClass: \"title store-title is-4 \" },\n [_vm._v(_vm._s(_vm.detailData.title))]\n ),\n _c(\n \"p\",\n {\n staticClass: \"subtitle is-size-66 two-line\"\n },\n [_vm._v(_vm._s(_vm.detailData.tagline))]\n ),\n _c(\n \"p\",\n { staticClass: \"description\" },\n [\n _c(\n \"b-button\",\n {\n attrs: {\n type: \"is-primary\",\n size: \"is-normal\",\n loading:\n _vm.detailData.id ==\n _vm.currentInstallId,\n rounded: \"\"\n },\n on: {\n click: function($event) {\n return _vm.qucikInstall(\n _vm.detailData.id\n )\n }\n }\n },\n [_vm._v(_vm._s(_vm.$t(\"Install\")))]\n )\n ],\n 1\n )\n ])\n ]\n )\n ]\n ),\n _c(\"nav\", { staticClass: \"level is-mobile mt-4\" }, [\n _c(\n \"div\",\n { staticClass: \"level-item has-text-centered\" },\n [\n _c(\"div\", [\n _c(\"p\", { staticClass: \"heading\" }, [\n _vm._v(_vm._s(_vm.$t(\"CATEGORY\")))\n ]),\n _c(\n \"p\",\n { staticClass: \"title\" },\n [\n _c(\"b-icon\", {\n attrs: {\n icon: _vm.detailData.category_font,\n \"custom-size\": \"mdi-36px\"\n }\n })\n ],\n 1\n ),\n _c(\"p\", { staticClass: \"footing is-size-65\" }, [\n _vm._v(_vm._s(_vm.detailData.category))\n ])\n ])\n ]\n ),\n _c(\n \"div\",\n { staticClass: \"level-item has-text-centered\" },\n [\n _c(\"div\", [\n _c(\"p\", { staticClass: \"heading\" }, [\n _vm._v(_vm._s(_vm.$t(\"DEVELOPER\")))\n ]),\n _c(\n \"p\",\n { staticClass: \"title\" },\n [\n _c(\"b-icon\", {\n attrs: {\n icon: \"account-circle-outline\",\n \"custom-size\": \"mdi-36px\"\n }\n })\n ],\n 1\n ),\n _c(\"p\", { staticClass: \"footing is-size-65\" }, [\n _vm._v(_vm._s(_vm.detailData.developer))\n ])\n ])\n ]\n ),\n _c(\n \"div\",\n { staticClass: \"level-item has-text-centered\" },\n [\n _c(\"div\", [\n _c(\"p\", { staticClass: \"heading \" }, [\n _c(\n \"span\",\n { staticClass: \"is-hidden-mobile\" },\n [_vm._v(_vm._s(_vm.$t(\"REQUIRE\")) + \" \")]\n ),\n _vm._v(_vm._s(_vm.$t(\"MEMORY\")))\n ]),\n _c(\"p\", { staticClass: \"title\" }, [\n _vm._v(_vm._s(_vm.detailData.min_memory))\n ]),\n _c(\"p\", { staticClass: \"footing is-size-65\" }, [\n _vm._v(\"MB\")\n ])\n ])\n ]\n ),\n _c(\n \"div\",\n { staticClass: \"level-item has-text-centered\" },\n [\n _c(\"div\", [\n _c(\"p\", { staticClass: \"heading\" }, [\n _c(\n \"span\",\n { staticClass: \"is-hidden-mobile\" },\n [_vm._v(_vm._s(_vm.$t(\"REQUIRE\")) + \" \")]\n ),\n _vm._v(_vm._s(_vm.$t(\"DISK\")))\n ]),\n _c(\"p\", { staticClass: \"title\" }, [\n _vm._v(_vm._s(_vm.detailData.min_disk))\n ]),\n _c(\"p\", { staticClass: \"footing is-size-65\" }, [\n _vm._v(\"MB\")\n ])\n ])\n ]\n )\n ]),\n _vm.showDetailSwiper\n ? _c(\n \"div\",\n { staticClass: \"is-relative\" },\n [\n _c(\n \"swiper\",\n {\n ref: \"infoSwiper\",\n staticClass:\n \"swiper swiper-responsive-breakpoints\",\n attrs: { options: _vm.swiperOptions }\n },\n _vm._l(_vm.detailData.screenshot_link, function(\n item\n ) {\n return _c(\n \"swiper-slide\",\n { key: \"sc\" + item },\n [\n _c(\n \"div\",\n { staticClass: \"gap\" },\n [\n _c(\"b-image\", {\n staticClass: \"border-8\",\n attrs: {\n src: item,\n \"src-fallback\": __webpack_require__(/*! @/assets/img/app/swiper_placeholder.png */ \"./src/assets/img/app/swiper_placeholder.png\"),\n placeholder: \"\",\n ratio: \"16by9\"\n }\n })\n ],\n 1\n )\n ]\n )\n }),\n 1\n ),\n _c(\"div\", {\n staticClass: \"swiper-button-prev\",\n class: {\n \"swiper-button-disabled\": _vm.disPrev\n },\n on: {\n click: function($event) {\n return _vm.$refs.infoSwiper.$swiper.slidePrev()\n }\n }\n }),\n _c(\"div\", {\n staticClass: \"swiper-button-next\",\n class: {\n \"swiper-button-disabled\": _vm.disNext\n },\n on: {\n click: function($event) {\n return _vm.$refs.infoSwiper.$swiper.slideNext()\n }\n }\n })\n ],\n 1\n )\n : _vm._e(),\n _c(\"div\", { staticClass: \"app-desc mt-4 mb-6\" }, [\n _c(\n \"p\",\n { staticClass: \"is-size-66 mb-2 un-break-word\" },\n [_vm._v(_vm._s(_vm.detailData.tagline))]\n ),\n _c(\"p\", { staticClass: \"is-size-66 un-break-word\" }, [\n _vm._v(_vm._s(_vm.detailData.description))\n ])\n ])\n ]\n )\n ])\n ]\n }\n }\n ]),\n model: {\n value: _vm.sidebarOpen,\n callback: function($$v) {\n _vm.sidebarOpen = $$v\n },\n expression: \"sidebarOpen\"\n }\n }),\n _c(\"header\", { staticClass: \"modal-card-head\" }, [\n _c(\"div\", { staticClass: \"flex1\" }, [\n _c(\"h3\", { staticClass: \"title is-4 has-text-weight-normal\" }, [\n _vm._v(_vm._s(_vm.panelTitle))\n ])\n ]),\n _c(\n \"div\",\n { staticClass: \"is-flex is-align-items-center\" },\n [\n _vm.currentSlide == 0\n ? _c(\"b-button\", {\n staticClass: \"mr-2\",\n attrs: {\n \"icon-left\": \"view-grid-plus\",\n size: \"is-small\",\n type: \"is-primary\",\n label: _vm.$t(\"Custom Install\"),\n rounded: \"\"\n },\n on: {\n click: function($event) {\n _vm.currentSlide = 1\n }\n }\n })\n : _vm._e(),\n _vm.showImportButton\n ? _c(\n \"b-tooltip\",\n {\n attrs: {\n label: _vm.$t(\"Import\"),\n position: \"is-bottom\",\n type: \"is-dark\"\n }\n },\n [\n _c(\"button\", {\n staticClass: \"icon-button mdi mdi-import\",\n attrs: { type: \"button\" },\n on: { click: _vm.showImportPanel }\n })\n ]\n )\n : _vm._e(),\n _vm.showTerminalButton\n ? _c(\n \"b-tooltip\",\n {\n attrs: {\n label: _vm.$t(\"Terminal & Logs\"),\n position: \"is-bottom\",\n type: \"is-dark\"\n }\n },\n [\n _c(\"button\", {\n staticClass: \"icon-button mdi mdi-console\",\n attrs: { type: \"button\" },\n on: { click: _vm.showTerminalPanel }\n })\n ]\n )\n : _vm._e(),\n _vm.showExportButton\n ? _c(\n \"b-tooltip\",\n {\n attrs: {\n label: _vm.$t(\"Export AppFile\"),\n position: \"is-bottom\",\n type: \"is-dark\"\n }\n },\n [\n _c(\"button\", {\n staticClass: \"icon-button mdi mdi-export-variant\",\n attrs: { type: \"button\" },\n on: { click: _vm.exportJSON }\n })\n ]\n )\n : _vm._e(),\n _vm.currentSlide < 2\n ? _c(\n \"div\",\n {\n staticClass:\n \"is-flex is-align-items-center modal-close-container modal-close-container-line\"\n },\n [\n _c(\"button\", {\n staticClass: \"delete\",\n attrs: { type: \"button\" },\n on: {\n click: function($event) {\n return _vm.$emit(\"close\")\n }\n }\n })\n ]\n )\n : _vm._e()\n ],\n 1\n )\n ]),\n _c(\n \"section\",\n { staticClass: \"modal-card-body\" },\n [\n _vm.currentSlide == 0\n ? _c(\n \"section\",\n [\n _vm.recommendList.length > 0\n ? [\n _c(\n \"h3\",\n { staticClass: \"title is-5 has-text-weight-normal\" },\n [_vm._v(_vm._s(_vm.$t(\"Featured Apps\")))]\n ),\n _c(\n \"div\",\n {\n staticClass: \"is-relative featured-app b-line pb-5\"\n },\n [\n _c(\n \"swiper\",\n {\n ref: \"featureSwiper\",\n staticClass: \"swiper \",\n attrs: { options: _vm.featureSwiperOptions }\n },\n _vm._l(_vm.recommendList, function(item, index) {\n return _c(\n \"swiper-slide\",\n { key: index + item.title + item.id },\n [\n _c(\n \"div\",\n {\n staticClass: \"gap\",\n on: {\n click: function($event) {\n return _vm.showAppDetial(item.id)\n }\n }\n },\n [\n _c(\"b-image\", {\n staticClass: \"border-8 is-clickable\",\n attrs: {\n src: item.thumbnail,\n ratio: \"16by9\",\n \"src-fallback\": __webpack_require__(/*! @/assets/img/app/swiper_placeholder.png */ \"./src/assets/img/app/swiper_placeholder.png\"),\n placeholder: __webpack_require__(/*! @/assets/img/app/swiper_placeholder.png */ \"./src/assets/img/app/swiper_placeholder.png\")\n }\n })\n ],\n 1\n ),\n _c(\n \"div\",\n {\n staticClass:\n \"is-flex pt-5 is-align-items-center\"\n },\n [\n _c(\n \"div\",\n {\n staticClass: \" mr-3\",\n on: {\n click: function($event) {\n return _vm.showAppDetial(\n item.id\n )\n }\n }\n },\n [\n _c(\"b-image\", {\n staticClass:\n \"is-48x48 is-clickable\",\n attrs: {\n src: item.icon,\n \"src-fallback\": __webpack_require__(/*! @/assets/img/app/default.png */ \"./src/assets/img/app/default.png\"),\n placeholder: __webpack_require__(/*! @/assets/img/app/default.png */ \"./src/assets/img/app/default.png\")\n }\n })\n ],\n 1\n ),\n _c(\n \"div\",\n {\n staticClass:\n \"flex1 mr-4 is-clickable\",\n on: {\n click: function($event) {\n return _vm.showAppDetial(\n item.id\n )\n }\n }\n },\n [\n _c(\n \"h6\",\n {\n staticClass: \"title is-6 mb-2 \"\n },\n [_vm._v(_vm._s(item.title))]\n ),\n _c(\n \"p\",\n {\n staticClass:\n \"is-size-7 two-line\"\n },\n [_vm._v(_vm._s(item.tagline))]\n )\n ]\n ),\n _c(\n \"div\",\n [\n _c(\n \"b-button\",\n {\n attrs: {\n type: \"is-primary is-light\",\n size: \"is-small\",\n rounded: \"\",\n loading:\n item.id ==\n _vm.currentInstallId\n },\n on: {\n click: function($event) {\n return _vm.qucikInstall(\n item.id\n )\n }\n }\n },\n [\n _vm._v(\n _vm._s(_vm.$t(\"Install\"))\n )\n ]\n )\n ],\n 1\n )\n ]\n )\n ]\n )\n }),\n 1\n ),\n _c(\"div\", {\n staticClass: \"swiper-button-prev\",\n class: {\n \"swiper-button-disabled\": _vm.disFeaturedPrev\n },\n on: {\n click: function($event) {\n return _vm.$refs.featureSwiper.$swiper.slidePrev()\n }\n }\n }),\n _c(\"div\", {\n staticClass: \"swiper-button-next\",\n class: {\n \"swiper-button-disabled\": _vm.disFeaturedNext\n },\n on: {\n click: function($event) {\n return _vm.$refs.featureSwiper.$swiper.slideNext()\n }\n }\n })\n ],\n 1\n )\n ]\n : _vm._e(),\n _c(\"div\", { staticClass: \"is-flex mt-5 mb-5\" }, [\n _c(\n \"div\",\n { staticClass: \"flex1\" },\n [\n _c(\n \"b-dropdown\",\n {\n staticClass: \"app-select\",\n attrs: {\n \"aria-role\": \"list\",\n position: \"is-bottom-right\",\n scrollable: \"\",\n animation: \"fade1\",\n \"mobile-modal\": false,\n \"append-to-body\": \"\"\n },\n scopedSlots: _vm._u(\n [\n {\n key: \"trigger\",\n fn: function(ref) {\n return [\n _c(\n \"div\",\n {\n staticClass:\n \"button is-text auto-height pl-0 pt-0 pb-0 \"\n },\n [\n _c(\"b-icon\", {\n staticClass: \"mr-1 ml-0\",\n attrs: {\n icon: _vm.currentCate.font,\n size: \"is-small\"\n }\n }),\n _vm._v(\n \" \" +\n _vm._s(_vm.currentCate.name) +\n \" \"\n ),\n _c(\"b-icon\", {\n staticClass: \"ml-1\",\n attrs: {\n icon: \"menu-down\",\n size: \"is-normal\"\n }\n })\n ],\n 1\n )\n ]\n }\n }\n ],\n null,\n false,\n 846618133\n ),\n model: {\n value: _vm.currentCate,\n callback: function($$v) {\n _vm.currentCate = $$v\n },\n expression: \"currentCate\"\n }\n },\n _vm._l(_vm.cateMenu, function(menu) {\n return _c(\n \"b-dropdown-item\",\n {\n key: menu.id,\n class:\n menu.id == _vm.currentCate.id\n ? \"is-active\"\n : \"\",\n attrs: {\n value: menu,\n \"aria-role\": \"listitem\",\n \"data-title\": menu.count\n }\n },\n [\n _c(\n \"div\",\n {\n staticClass:\n \"media is-align-items-center is-flex\"\n },\n [\n _c(\"b-icon\", {\n staticClass: \"mr-1\",\n attrs: {\n icon: menu.font,\n size: \"is-small\"\n }\n }),\n _c(\n \"div\",\n { staticClass: \"media-content\" },\n [_c(\"h3\", [_vm._v(_vm._s(menu.name))])]\n )\n ],\n 1\n )\n ]\n )\n }),\n 1\n )\n ],\n 1\n ),\n _c(\n \"div\",\n [\n _vm._v(\" \" + _vm._s(_vm.$t(\"Sort by\")) + \": \"),\n _c(\n \"b-dropdown\",\n {\n staticClass: \"app-select\",\n attrs: {\n \"aria-role\": \"list\",\n animation: \"fade1\",\n \"mobile-modal\": false\n },\n scopedSlots: _vm._u(\n [\n {\n key: \"trigger\",\n fn: function(ref) {\n return [\n _c(\n \"div\",\n {\n staticClass:\n \"button is-text auto-height pl-0 pt-0 pb-0 is-size-65\"\n },\n [\n _vm._v(\n \" \" +\n _vm._s(_vm.currentSort.name) +\n \" \"\n ),\n _c(\"b-icon\", {\n staticClass: \"ml-1\",\n attrs: {\n icon: \"menu-down\",\n size: \"is-normal\"\n }\n })\n ],\n 1\n )\n ]\n }\n }\n ],\n null,\n false,\n 232636145\n ),\n model: {\n value: _vm.currentSort,\n callback: function($$v) {\n _vm.currentSort = $$v\n },\n expression: \"currentSort\"\n }\n },\n _vm._l(_vm.sortMenu, function(menu, index) {\n return _c(\n \"b-dropdown-item\",\n {\n key: \"sort_\" + index,\n class:\n menu.slash == _vm.currentSort.slash\n ? \"is-active\"\n : \"\",\n attrs: { value: menu, \"aria-role\": \"listitem\" }\n },\n [\n _c(\n \"div\",\n {\n staticClass:\n \"media align-items-center is-flex\"\n },\n [\n _c(\n \"div\",\n { staticClass: \"media-content\" },\n [_c(\"h3\", [_vm._v(_vm._s(menu.name))])]\n )\n ]\n )\n ]\n )\n }),\n 1\n )\n ],\n 1\n )\n ]),\n _c(\n \"div\",\n {\n staticClass:\n \"columns f-list is-multiline is-mobile pb-3 mb-5\"\n },\n _vm._l(_vm.pageList, function(item, index) {\n return _c(\n \"div\",\n {\n key: index + item.title + item.id,\n staticClass: \"column is-one-quarter\"\n },\n [\n _c(\n \"div\",\n { staticClass: \"is-flex is-align-items-center\" },\n [\n _c(\n \"div\",\n {\n staticClass: \"list-icon mr-4 is-clickable\",\n on: {\n click: function($event) {\n return _vm.showAppDetial(item.id)\n }\n }\n },\n [\n _c(\"b-image\", {\n staticClass: \"is-72x72 icon-shadow\",\n attrs: {\n src: item.icon,\n \"src-fallback\": __webpack_require__(/*! @/assets/img/app/default.png */ \"./src/assets/img/app/default.png\"),\n \"webp-fallback\": \".jpg\"\n }\n })\n ],\n 1\n ),\n _c(\n \"div\",\n {\n staticClass: \"flex1 mr-4 is-clickable\",\n on: {\n click: function($event) {\n return _vm.showAppDetial(item.id)\n }\n }\n },\n [\n _c(\"h6\", { staticClass: \"title is-6 mb-2\" }, [\n _vm._v(_vm._s(item.title))\n ]),\n _c(\n \"p\",\n { staticClass: \"is-size-7 two-line\" },\n [_vm._v(_vm._s(item.tagline))]\n )\n ]\n )\n ]\n ),\n _c(\n \"div\",\n {\n staticClass:\n \"mt-1 ml-7 is-flex is-align-items-center\"\n },\n [\n _c(\n \"div\",\n {\n staticClass:\n \"flex1 is-size-7 has-text-grey-light\\t\"\n },\n [_vm._v(_vm._s(item.category))]\n ),\n _c(\n \"b-button\",\n {\n attrs: {\n type: \"is-primary is-light\",\n size: \"is-small\",\n rounded: \"\",\n loading: item.id == _vm.currentInstallId\n },\n on: {\n click: function($event) {\n return _vm.qucikInstall(item.id)\n }\n }\n },\n [_vm._v(_vm._s(_vm.$t(\"Install\")))]\n )\n ],\n 1\n )\n ]\n )\n }),\n 0\n ),\n _vm.communityList.length > 0\n ? [\n _c(\n \"h3\",\n { staticClass: \"title is-5 has-text-weight-normal\" },\n [_vm._v(_vm._s(_vm.$t(\"Community Apps\")))]\n ),\n _c(\n \"h3\",\n { staticClass: \"subtitle is-7 has-text-grey-light\" },\n [\n _vm._v(\n \" \" +\n _vm._s(\n _vm.$t(\n \"From community contributors, not optimized for CasaOS, but provides a basic App experience.\"\n )\n )\n )\n ]\n ),\n _c(\n \"div\",\n {\n staticClass:\n \"columns f-list is-multiline is-mobile pb-3 mb-5\"\n },\n _vm._l(_vm.communityList, function(item, index) {\n return _c(\n \"div\",\n {\n key: index + item.title + item.id,\n staticClass: \"column is-one-quarter\"\n },\n [\n _c(\n \"div\",\n {\n staticClass:\n \"is-flex is-align-items-center\"\n },\n [\n _c(\n \"div\",\n {\n staticClass:\n \"list-icon mr-4 is-clickable\",\n on: {\n click: function($event) {\n return _vm.showAppDetial(item.id)\n }\n }\n },\n [\n _c(\"b-image\", {\n staticClass: \"is-72x72 icon-shadow\",\n attrs: {\n src: item.icon,\n \"src-fallback\": __webpack_require__(/*! @/assets/img/app/default.png */ \"./src/assets/img/app/default.png\"),\n \"webp-fallback\": \".jpg\"\n }\n })\n ],\n 1\n ),\n _c(\n \"div\",\n {\n staticClass: \"flex1 mr-4 is-clickable\",\n on: {\n click: function($event) {\n return _vm.showAppDetial(item.id)\n }\n }\n },\n [\n _c(\n \"h6\",\n { staticClass: \"title is-6 mb-2\" },\n [_vm._v(_vm._s(item.title))]\n ),\n _c(\n \"p\",\n { staticClass: \"is-size-7 two-line\" },\n [_vm._v(_vm._s(item.tagline))]\n )\n ]\n )\n ]\n ),\n _c(\n \"div\",\n {\n staticClass:\n \"mt-1 ml-7 is-flex is-align-items-center\"\n },\n [\n _c(\n \"div\",\n {\n staticClass:\n \"flex1 is-size-7 has-text-grey-light\\t\"\n },\n [_vm._v(_vm._s(item.category))]\n ),\n _c(\n \"b-button\",\n {\n attrs: {\n type: \"is-primary is-light\",\n size: \"is-small\",\n rounded: \"\",\n loading:\n item.id == _vm.currentInstallId\n },\n on: {\n click: function($event) {\n return _vm.qucikInstall(item.id)\n }\n }\n },\n [_vm._v(_vm._s(_vm.$t(\"Install\")))]\n )\n ],\n 1\n )\n ]\n )\n }),\n 0\n )\n ]\n : _vm._e()\n ],\n 2\n )\n : _vm._e(),\n _vm.currentSlide == 1\n ? _c(\n \"section\",\n [\n _c(\n \"ValidationObserver\",\n { ref: \"ob1\" },\n [\n _c(\"ValidationProvider\", {\n attrs: { rules: \"required\", name: \"Image\" },\n scopedSlots: _vm._u(\n [\n {\n key: \"default\",\n fn: function(ref) {\n var errors = ref.errors\n var valid = ref.valid\n return [\n _c(\n \"b-field\",\n {\n attrs: {\n label: _vm.$t(\"Docker Image\") + \" *\",\n type: {\n \"is-danger\": errors[0],\n \"is-success\": valid\n },\n message: _vm.$t(errors)\n }\n },\n [\n _c(\"b-input\", {\n attrs: {\n placeholder: _vm.$t(\n \"e.g.,hello-world:latest\"\n ),\n readonly: _vm.state == \"update\"\n },\n on: { input: _vm.changeIcon },\n model: {\n value: _vm.initData.image,\n callback: function($$v) {\n _vm.$set(_vm.initData, \"image\", $$v)\n },\n expression: \"initData.image\"\n }\n })\n ],\n 1\n )\n ]\n }\n }\n ],\n null,\n false,\n 3994570334\n )\n }),\n _c(\"ValidationProvider\", {\n attrs: { rules: \"required\", name: \"Name\" },\n scopedSlots: _vm._u(\n [\n {\n key: \"default\",\n fn: function(ref) {\n var errors = ref.errors\n var valid = ref.valid\n return [\n _c(\n \"b-field\",\n {\n attrs: {\n label: _vm.$t(\"App name\") + \" *\",\n type: {\n \"is-danger\": errors[0],\n \"is-success\": valid\n },\n message: errors\n }\n },\n [\n _c(\"b-input\", {\n attrs: {\n value: \"\",\n placeholder: _vm.$t(\n \"Your custom App Name\"\n )\n },\n model: {\n value: _vm.initData.label,\n callback: function($$v) {\n _vm.$set(_vm.initData, \"label\", $$v)\n },\n expression: \"initData.label\"\n }\n })\n ],\n 1\n )\n ]\n }\n }\n ],\n null,\n false,\n 133168582\n )\n }),\n _c(\n \"b-field\",\n { attrs: { label: _vm.$t(\"Icon URL\") } },\n [\n _c(\"b-input\", {\n attrs: {\n value: \"\",\n placeholder: _vm.$t(\"Your custom icon URL\")\n },\n model: {\n value: _vm.initData.icon,\n callback: function($$v) {\n _vm.$set(_vm.initData, \"icon\", $$v)\n },\n expression: \"initData.icon\"\n }\n })\n ],\n 1\n ),\n _c(\n \"b-field\",\n { attrs: { label: \"Web UI\" } },\n [\n _c(\"p\", { staticClass: \"control\" }, [\n _c(\"span\", { staticClass: \"button is-static\" }, [\n _vm._v(_vm._s(_vm.baseUrl))\n ])\n ]),\n _c(\"b-input\", {\n attrs: {\n placeholder: \"port[/path/to/index.html]\",\n expanded: \"\"\n },\n model: {\n value: _vm.webui,\n callback: function($$v) {\n _vm.webui = $$v\n },\n expression: \"webui\"\n }\n })\n ],\n 1\n ),\n _c(\n \"b-field\",\n { attrs: { label: _vm.$t(\"Network\") } },\n [\n _c(\n \"b-select\",\n {\n attrs: { placeholder: \"Select\", expanded: \"\" },\n model: {\n value: _vm.initData.network_model,\n callback: function($$v) {\n _vm.$set(_vm.initData, \"network_model\", $$v)\n },\n expression: \"initData.network_model\"\n }\n },\n _vm._l(_vm.networks, function(net) {\n return _c(\n \"optgroup\",\n {\n key: net.driver,\n attrs: { label: net.driver }\n },\n _vm._l(net.networks, function(option, index) {\n return _c(\n \"option\",\n {\n key: option.name + index,\n domProps: { value: option.name }\n },\n [_vm._v(\" \" + _vm._s(option.name) + \" \")]\n )\n }),\n 0\n )\n }),\n 0\n )\n ],\n 1\n ),\n _vm.showPorts\n ? _c(\"ports\", {\n attrs: { showHostPost: _vm.showHostPort },\n model: {\n value: _vm.initData.ports,\n callback: function($$v) {\n _vm.$set(_vm.initData, \"ports\", $$v)\n },\n expression: \"initData.ports\"\n }\n })\n : _vm._e(),\n _c(\"input-group\", {\n attrs: {\n type: \"volume\",\n label: _vm.$t(\"Volumes\"),\n message: _vm.$t(\n \"No volumes now, click “+” to add one.\"\n )\n },\n model: {\n value: _vm.initData.volumes,\n callback: function($$v) {\n _vm.$set(_vm.initData, \"volumes\", $$v)\n },\n expression: \"initData.volumes\"\n }\n }),\n _c(\"env-input-group\", {\n attrs: {\n label: _vm.$t(\"Environment Variables\"),\n message: _vm.$t(\n \"No environment variables now, click “+” to add one.\"\n )\n },\n model: {\n value: _vm.initData.envs,\n callback: function($$v) {\n _vm.$set(_vm.initData, \"envs\", $$v)\n },\n expression: \"initData.envs\"\n }\n }),\n _c(\"input-group\", {\n attrs: {\n type: \"device\",\n label: _vm.$t(\"Devices\"),\n message: _vm.$t(\n \"No devices now, click “+” to add one.\"\n )\n },\n model: {\n value: _vm.initData.devices,\n callback: function($$v) {\n _vm.$set(_vm.initData, \"devices\", $$v)\n },\n expression: \"initData.devices\"\n }\n }),\n _c(\"commands-input\", {\n attrs: {\n label: _vm.$t(\"Container Command\"),\n message: _vm.$t(\n \"No commands now, click “+” to add one.\"\n )\n },\n model: {\n value: _vm.initData.cmd,\n callback: function($$v) {\n _vm.$set(_vm.initData, \"cmd\", $$v)\n },\n expression: \"initData.cmd\"\n }\n }),\n _c(\n \"b-field\",\n { attrs: { label: _vm.$t(\"Privileged\") } },\n [\n _c(\"b-switch\", {\n model: {\n value: _vm.initData.privileged,\n callback: function($$v) {\n _vm.$set(_vm.initData, \"privileged\", $$v)\n },\n expression: \"initData.privileged\"\n }\n })\n ],\n 1\n ),\n _c(\n \"b-field\",\n { attrs: { label: _vm.$t(\"Memory Limit\") } },\n [\n _c(\"vue-slider\", {\n attrs: { min: 256, max: _vm.totalMemory },\n model: {\n value: _vm.initData.memory,\n callback: function($$v) {\n _vm.$set(_vm.initData, \"memory\", $$v)\n },\n expression: \"initData.memory\"\n }\n })\n ],\n 1\n ),\n _c(\n \"b-field\",\n { attrs: { label: _vm.$t(\"CPU Shares\") } },\n [\n _c(\n \"b-select\",\n {\n attrs: {\n placeholder: _vm.$t(\"Select\"),\n expanded: \"\"\n },\n model: {\n value: _vm.initData.cpu_shares,\n callback: function($$v) {\n _vm.$set(_vm.initData, \"cpu_shares\", $$v)\n },\n expression: \"initData.cpu_shares\"\n }\n },\n [\n _c(\"option\", { attrs: { value: \"10\" } }, [\n _vm._v(_vm._s(_vm.$t(\"Low\")))\n ]),\n _c(\"option\", { attrs: { value: \"50\" } }, [\n _vm._v(_vm._s(_vm.$t(\"Medium\")))\n ]),\n _c(\"option\", { attrs: { value: \"90\" } }, [\n _vm._v(_vm._s(_vm.$t(\"High\")))\n ])\n ]\n )\n ],\n 1\n ),\n _c(\n \"b-field\",\n { attrs: { label: _vm.$t(\"Restart Policy\") } },\n [\n _c(\n \"b-select\",\n {\n attrs: {\n placeholder: _vm.$t(\"Select\"),\n expanded: \"\"\n },\n model: {\n value: _vm.initData.restart,\n callback: function($$v) {\n _vm.$set(_vm.initData, \"restart\", $$v)\n },\n expression: \"initData.restart\"\n }\n },\n [\n _c(\"option\", { attrs: { value: \"on-failure\" } }, [\n _vm._v(\"on-failure\")\n ]),\n _c(\"option\", { attrs: { value: \"always\" } }, [\n _vm._v(\"always\")\n ]),\n _c(\n \"option\",\n { attrs: { value: \"unless-stopped\" } },\n [_vm._v(\"unless-stopped\")]\n )\n ]\n )\n ],\n 1\n ),\n _c(\n \"b-field\",\n {\n attrs: {\n label: _vm.$t(\"Container Capabilities (cap-add)\")\n }\n },\n [\n _c(\"b-taginput\", {\n ref: \"taginput\",\n attrs: {\n data: _vm.capArray,\n autocomplete: \"\",\n \"allow-new\": false,\n \"open-on-focus\": false\n },\n on: { typing: _vm.getFilteredTags },\n scopedSlots: _vm._u(\n [\n {\n key: \"default\",\n fn: function(props) {\n return [\n _vm._v(\" \" + _vm._s(props.option) + \" \")\n ]\n }\n },\n {\n key: \"empty\",\n fn: function() {\n return [_vm._v(\" There are no items \")]\n },\n proxy: true\n },\n {\n key: \"selected\",\n fn: function(props) {\n return _vm._l(props.tags, function(\n tag,\n index\n ) {\n return _c(\n \"b-tag\",\n {\n key: index,\n attrs: {\n tabstop: false,\n closable: \"\"\n },\n on: {\n close: function($event) {\n return _vm.$refs.taginput.removeTag(\n index,\n $event\n )\n }\n }\n },\n [_vm._v(\" \" + _vm._s(tag) + \" \")]\n )\n })\n }\n }\n ],\n null,\n false,\n 1247547680\n ),\n model: {\n value: _vm.initData.cap_add,\n callback: function($$v) {\n _vm.$set(_vm.initData, \"cap_add\", $$v)\n },\n expression: \"initData.cap_add\"\n }\n })\n ],\n 1\n ),\n _c(\"ValidationProvider\", {\n attrs: { rules: \"rfc1123\", name: \"Name\" },\n scopedSlots: _vm._u(\n [\n {\n key: \"default\",\n fn: function(ref) {\n var errors = ref.errors\n var valid = ref.valid\n return [\n _c(\n \"b-field\",\n {\n attrs: {\n label: _vm.$t(\"Container Hostname\"),\n type: {\n \"is-danger\": errors[0],\n \"is-success\": valid\n },\n message: _vm.$t(errors)\n }\n },\n [\n _c(\"b-input\", {\n attrs: {\n value: \"\",\n placeholder: _vm.$t(\n \"Hostname of app container\"\n )\n },\n model: {\n value: _vm.initData.hostname,\n callback: function($$v) {\n _vm.$set(\n _vm.initData,\n \"hostname\",\n $$v\n )\n },\n expression: \"initData.hostname\"\n }\n })\n ],\n 1\n )\n ]\n }\n }\n ],\n null,\n false,\n 2198436637\n )\n }),\n _c(\n \"b-field\",\n { attrs: { label: _vm.$t(\"App Description\") } },\n [\n _c(\"b-input\", {\n model: {\n value: _vm.initData.description,\n callback: function($$v) {\n _vm.$set(_vm.initData, \"description\", $$v)\n },\n expression: \"initData.description\"\n }\n })\n ],\n 1\n )\n ],\n 1\n )\n ],\n 1\n )\n : _vm._e(),\n _vm.currentSlide == 2\n ? _c(\"section\", [\n _c(\"div\", { staticClass: \"installing-warpper\" }, [\n _c(\n \"div\",\n {\n staticClass:\n \"is-flex is-align-items-center is-justify-content-center\"\n },\n [\n _c(\"lottie-animation\", {\n staticClass: \"install-animation\",\n attrs: {\n animationData: __webpack_require__(/*! @/assets/ani/rocket-launching.json */ \"./src/assets/ani/rocket-launching.json\"),\n loop: true,\n autoPlay: true\n }\n })\n ],\n 1\n ),\n _c(\"h3\", {\n staticClass: \"title is-6 has-text-centered\",\n class: {\n \"has-text-danger\": _vm.errorType == 3,\n \"has-text-black\": _vm.errorType != 3\n },\n domProps: { innerHTML: _vm._s(_vm.installText) }\n })\n ])\n ])\n : _vm._e(),\n _c(\"b-loading\", {\n attrs: { \"is-full-page\": false, \"can-cancel\": false },\n model: {\n value: _vm.isLoading,\n callback: function($$v) {\n _vm.isLoading = $$v\n },\n expression: \"isLoading\"\n }\n })\n ],\n 1\n ),\n _c(\n \"footer\",\n {\n staticClass: \"modal-card-foot is-flex is-align-items-center \",\n class: { \"is-justify-content-center\": _vm.currentSlide == 0 }\n },\n [\n [\n _c(\"div\", { staticClass: \"flex1\" }),\n _c(\n \"div\",\n [\n _vm.currentSlide == 2 && _vm.errorType == 3\n ? _c(\"b-button\", {\n attrs: { label: _vm.$t(\"Back\"), rounded: \"\" },\n on: { click: _vm.prevStep }\n })\n : _vm._e(),\n _vm.currentSlide == 1 && _vm.state == \"install\"\n ? _c(\"b-button\", {\n attrs: {\n label: _vm.$t(\"Install\"),\n type: \"is-primary\",\n rounded: \"\",\n loading: _vm.isLoading\n },\n on: {\n click: function($event) {\n return _vm.installApp()\n }\n }\n })\n : _vm._e(),\n _vm.currentSlide == 1 && _vm.state == \"update\"\n ? _c(\"b-button\", {\n attrs: {\n label: _vm.$t(\"Save\"),\n type: \"is-primary\",\n rounded: \"\",\n loading: _vm.isLoading\n },\n on: {\n click: function($event) {\n return _vm.updateApp()\n }\n }\n })\n : _vm._e(),\n _vm.currentSlide == 2 &&\n (_vm.errorType == 1 || _vm.errorType == 4)\n ? _c(\"b-button\", {\n attrs: {\n label: _vm.$t(_vm.cancelButtonText),\n type: \"is-primary\",\n rounded: \"\"\n },\n on: {\n click: function($event) {\n return _vm.$emit(\"close\")\n }\n }\n })\n : _vm._e()\n ],\n 1\n )\n ]\n ],\n 2\n )\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/Apps/Panel.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/CoreService.vue?vue&type=template&id=5da81dd4&": -/*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/CoreService.vue?vue&type=template&id=5da81dd4& ***! - \****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \" home-section has-text-left mt-55\" }, [\n _c(\n \"div\",\n { staticClass: \"columns is-variable is-2 is-multiline suggestion-list\" },\n [\n !_vm.isLoading\n ? [\n _vm.isSyncConfigLoaded ? _c(\"sync-block\") : _vm._e(),\n _c(\"smart-block\")\n ]\n : _vm._e(),\n _c(\"b-loading\", {\n attrs: { \"is-full-page\": false },\n model: {\n value: _vm.isLoading,\n callback: function($$v) {\n _vm.isLoading = $$v\n },\n expression: \"isLoading\"\n }\n })\n ],\n 2\n )\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/CoreService.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/SearchBar.vue?vue&type=template&id=0eca37cb&": -/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/SearchBar.vue?vue&type=template&id=0eca37cb& ***! - \**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"b-field\",\n {\n staticClass: \"search-bar has-text-white\",\n attrs: { position: \"is-centered \" }\n },\n [\n _c(\"b-input\", {\n class: [\"ovh\", _vm.isFocus ? \"fo\" : \"\"],\n attrs: {\n placeholder: _vm.$t(\"Search...\"),\n icon: \"magnify\",\n \"icon-right\": \"magnify\",\n \"icon-right-clickable\": \"\",\n size: \"is-large\",\n expanded: \"\"\n },\n on: {\n \"icon-right-click\": _vm.gotoSearch,\n focus: _vm.onFocus,\n blur: _vm.onBlur\n },\n nativeOn: {\n keyup: function($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")\n ) {\n return null\n }\n return _vm.gotoSearch.apply(null, arguments)\n }\n },\n model: {\n value: _vm.keyText,\n callback: function($$v) {\n _vm.keyText = $$v\n },\n expression: \"keyText\"\n }\n })\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/SearchBar.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/SideBar.vue?vue&type=template&id=3eca7188&": -/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/SideBar.vue?vue&type=template&id=3eca7188& ***! - \************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return !_vm.isLoading\n ? _c(\n \"div\",\n { staticClass: \"side-bar mr-5\", class: { open: _vm.sidebarOpen } },\n [\n _c(\n \"vue-custom-scrollbar\",\n {\n staticClass: \"scroll-area\",\n attrs: { settings: _vm.scrollSettings }\n },\n [\n _vm._l(_vm.activeApps, function(item, index) {\n return _c(\n \"div\",\n { key: \"widgets_\" + index },\n [\n _vm.checkShow(item.app.name, _vm.widgetsSettings)\n ? _c(item.app, { tag: \"component\" })\n : _vm._e()\n ],\n 1\n )\n }),\n _c(\"settings\", {\n on: { change: _vm.handleChange },\n model: {\n value: _vm.widgetsSettings,\n callback: function($$v) {\n _vm.widgetsSettings = $$v\n },\n expression: \"widgetsSettings\"\n }\n })\n ],\n 2\n )\n ],\n 1\n )\n : _vm._e()\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/SideBar.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/Storage/DriveItem.vue?vue&type=template&id=43c6a089&": -/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Storage/DriveItem.vue?vue&type=template&id=43c6a089& ***! - \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"mb-5 mt-2\" }, [\n _c(\"div\", { staticClass: \"is-flex mb-2\" }, [\n _c(\n \"div\",\n { staticClass: \"header-icon\" },\n [\n _c(\"b-image\", {\n staticClass: \"is-64x64\",\n attrs: { src: __webpack_require__(/*! @/assets/img/storage/disk.png */ \"./src/assets/img/storage/disk.png\") }\n })\n ],\n 1\n ),\n _c(\n \"div\",\n { staticClass: \"ml-3 is-flex-grow-1 is-flex is-align-items-center\" },\n [\n _c(\"div\", [\n _c(\n \"h4\",\n { staticClass: \"title is-size-6-5 mb-3 has-text-left one-line\" },\n [_vm._v(_vm._s(_vm.item.name))]\n ),\n _c(\"p\", { staticClass: \"has-text-left is-size-7 \" }, [\n _vm._v(\n _vm._s(_vm.item.model) +\n \", \" +\n _vm._s(_vm.renderSize(_vm.item.size)) +\n \" \" +\n _vm._s(_vm.item.disk_type)\n )\n ])\n ])\n ]\n ),\n _c(\"div\", { staticClass: \"is-flex is-align-items-center status\" }, [\n _c(\"div\", [\n _c(\"p\", { staticClass: \"has-text-left is-size-7 mb-3\" }, [\n _vm._v(_vm._s(_vm.$t(\"Health\")) + \": \"),\n _vm.item.health\n ? _c(\"b\", { staticClass: \"has-text-success\" }, [\n _vm._v(_vm._s(_vm.$t(\"Healthy\")))\n ])\n : _vm._e(),\n !_vm.item.health\n ? _c(\"b\", { staticClass: \"has-text-danger\" }, [\n _vm._v(_vm._s(_vm.$t(\"Damage\")))\n ])\n : _vm._e()\n ]),\n _c(\"p\", { staticClass: \"has-text-left is-size-7 \" }, [\n _vm._v(_vm._s(_vm.$t(\"Temp\")) + \": \"),\n _vm.item.temperature > 0\n ? _c(\"b\", [\n _vm._v(\n _vm._s(_vm.item.temperature) +\n \"°C / \" +\n _vm._s(_vm._f(\"toFahrenheit\")(_vm.item.temperature)) +\n \"°F\"\n )\n ])\n : _c(\"b\", [_vm._v(\"N/A\")])\n ])\n ])\n ])\n ])\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/Storage/DriveItem.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/Storage/StorageItem.vue?vue&type=template&id=0721290c&": -/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Storage/StorageItem.vue?vue&type=template&id=0721290c& ***! - \************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"mb-5 mt-2\" },\n [\n _c(\"div\", { staticClass: \"is-flex mb-2\" }, [\n _c(\n \"div\",\n { staticClass: \"header-icon\" },\n [\n _c(\"b-image\", {\n staticClass: \"is-64x64\",\n attrs: { src: __webpack_require__(/*! @/assets/img/storage/storage.png */ \"./src/assets/img/storage/storage.png\") }\n })\n ],\n 1\n ),\n _c(\n \"div\",\n { staticClass: \"ml-3 is-flex-grow-1 is-flex is-align-items-center\" },\n [\n _c(\"div\", [\n _c(\n \"h4\",\n {\n staticClass: \"title is-size-6-5 mb-0 has-text-left one-line\"\n },\n [\n _vm._v(_vm._s(_vm.item.name) + \" \"),\n _vm.item.isSystem\n ? _c(\"b-tag\", { staticClass: \"ml-2\" }, [_vm._v(\"CasaOS\")])\n : _vm._e()\n ],\n 1\n ),\n _c(\n \"p\",\n {\n staticClass: \"has-text-left is-size-7 has-text-grey-light\\t\"\n },\n [\n _vm._v(_vm._s(_vm.$t(\"Single Drive Storage\")) + \", \"),\n _c(\"span\", { staticClass: \"is-uppercase\" }, [\n _vm._v(_vm._s(_vm.item.fsType))\n ]),\n _c(\n \"b-tooltip\",\n {\n attrs: {\n label: _vm.$t(\n \"CasaOS reserves 1% of file space when creating storage in EXT4 format.\"\n ),\n multilined: \"\"\n }\n },\n [\n _c(\"b-icon\", {\n staticClass: \"mr-2 \",\n attrs: { icon: \"help-circle-outline\", size: \"is-small\" }\n })\n ],\n 1\n )\n ],\n 1\n ),\n _c(\"p\", { staticClass: \"has-text-left is-size-7 \" }, [\n _vm._v(\n _vm._s(\n _vm.$t(\"Available Total\", {\n name: _vm.item.diskName,\n avl: _vm.renderSize(_vm.item.availSize),\n total: _vm.renderSize(_vm.item.size)\n })\n )\n )\n ])\n ])\n ]\n ),\n !_vm.item.isSystem\n ? _c(\n \"div\",\n { staticClass: \"is-flex is-align-items-center b-group\" },\n [\n _c(\n \"b-button\",\n {\n attrs: {\n size: \"is-small\",\n type: _vm.isFormating ? \"is-primary\" : \"\",\n rounded: \"\",\n loading: _vm.isFormating,\n disabled: _vm.isRemoving\n },\n on: {\n click: function($event) {\n return _vm.formatStorage(\n _vm.item.path,\n _vm.item.mount_point\n )\n }\n }\n },\n [_vm._v(_vm._s(_vm.$t(\"Format\")))]\n ),\n _c(\n \"b-button\",\n {\n staticClass: \"ml-2\",\n attrs: {\n size: \"is-small\",\n type: _vm.isRemoving ? \"is-primary\" : \"\",\n rounded: \"\",\n loading: _vm.isRemoving,\n disabled: _vm.isFormating\n },\n on: {\n click: function($event) {\n return _vm.removeStorage(\n _vm.item.path,\n _vm.item.mount_point\n )\n }\n }\n },\n [_vm._v(\" \" + _vm._s(_vm.$t(\"Remove\")))]\n )\n ],\n 1\n )\n : _vm._e()\n ]),\n _c(\"b-progress\", {\n attrs: {\n type: _vm._f(\"getProgressType\")(_vm.item.usePercent),\n size: \"is-small\",\n value: _vm.item.usePercent\n }\n })\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/Storage/StorageItem.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/Storage/StorageManagerPanel.vue?vue&type=template&id=d6c48484&": -/*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Storage/StorageManagerPanel.vue?vue&type=template&id=d6c48484& ***! - \********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"modal-card\" }, [\n _c(\n \"section\",\n { staticClass: \"modal-card-body \" },\n [\n !_vm.isCreating\n ? [\n _c(\"h2\", { staticClass: \"title is-4\" }, [\n _vm._v(_vm._s(_vm.title))\n ]),\n _c(\"div\", { staticClass: \"close-container\" }, [\n _c(\"button\", {\n staticClass: \"delete\",\n attrs: { type: \"button\" },\n on: {\n click: function($event) {\n return _vm.$emit(\"close\")\n }\n }\n })\n ]),\n !_vm.creatIsShow\n ? _c(\n \"div\",\n { staticClass: \"flex1 is-relative\" },\n [\n _vm.activeTab == 0 && _vm.unDiskData.length > 0\n ? _c(\n \"div\",\n { staticClass: \"create-container\" },\n [\n _c(\n \"b-button\",\n {\n attrs: {\n size: \"is-small\",\n type: \"is-link is-light\",\n rounded: \"\"\n },\n on: { click: _vm.showCreate }\n },\n [_vm._v(_vm._s(_vm.$t(\"Create Storage\")))]\n )\n ],\n 1\n )\n : _vm._e(),\n _c(\n \"b-tabs\",\n {\n attrs: { animated: false },\n model: {\n value: _vm.activeTab,\n callback: function($$v) {\n _vm.activeTab = $$v\n },\n expression: \"activeTab\"\n }\n },\n [\n _c(\n \"b-tab-item\",\n {\n staticClass: \"scrollbars-light-auto tab-item\",\n attrs: { label: _vm.$t(\"Storage\") }\n },\n _vm._l(_vm.storageData, function(item, index) {\n return _c(\"storage-item\", {\n key: \"storage\" + index,\n attrs: { item: item },\n on: { getDiskList: _vm.getDiskList }\n })\n }),\n 1\n ),\n _c(\n \"b-tab-item\",\n {\n staticClass: \"scrollbars-light-auto tab-item\",\n attrs: { label: _vm.$t(\"Drive\") }\n },\n _vm._l(_vm.diskData, function(item, index) {\n return _c(\"drive-item\", {\n key: \"disk\" + index,\n attrs: { item: item }\n })\n }),\n 1\n )\n ],\n 1\n )\n ],\n 1\n )\n : _vm._e(),\n _vm.creatIsShow\n ? _c(\n \"div\",\n { staticClass: \"flex1 is-relative\" },\n [\n _c(\n \"ValidationObserver\",\n { ref: \"ob1\" },\n [\n _c(\"ValidationProvider\", {\n attrs: { rules: \"required\", name: \"StorageName\" },\n scopedSlots: _vm._u(\n [\n {\n key: \"default\",\n fn: function(ref) {\n var errors = ref.errors\n var valid = ref.valid\n return [\n _c(\n \"b-field\",\n {\n attrs: {\n label: _vm.$t(\"Storage Name\"),\n type: {\n \"is-danger\": errors[0],\n \"is-success\": valid\n },\n message: _vm.$t(errors)\n }\n },\n [\n _c(\"b-input\", {\n nativeOn: {\n keyup: function($event) {\n _vm.createStorageName = _vm.createStorageName.replace(\n /[^\\w]/g,\n \"\"\n )\n },\n paste: function($event) {\n _vm.createStorageName = _vm.createStorageName.replace(\n /[^\\w]/g,\n \"\"\n )\n }\n },\n model: {\n value: _vm.createStorageName,\n callback: function($$v) {\n _vm.createStorageName = $$v\n },\n expression: \"createStorageName\"\n }\n })\n ],\n 1\n )\n ]\n }\n }\n ],\n null,\n false,\n 3013383262\n )\n }),\n _c(\n \"b-field\",\n { attrs: { label: _vm.$t(\"Choose Drive\") } },\n [\n _c(\n \"b-select\",\n {\n attrs: { expanded: \"\" },\n on: { input: _vm.onDiskChoose },\n model: {\n value: _vm.activeDisk,\n callback: function($$v) {\n _vm.activeDisk = $$v\n },\n expression: \"activeDisk\"\n }\n },\n _vm._l(_vm.unDiskData, function(option, index) {\n return _c(\n \"option\",\n {\n key: option.path,\n domProps: { value: index }\n },\n [\n _vm._v(\n \" \" +\n _vm._s(option.name) +\n \" (\" +\n _vm._s(option.model) +\n \" - \" +\n _vm._s(_vm.renderSize(option.size)) +\n \") \"\n )\n ]\n )\n }),\n 0\n )\n ],\n 1\n )\n ],\n 1\n ),\n _vm.createStorageType == \"format\"\n ? _c(\n \"article\",\n { staticClass: \"message is-danger mt-5\" },\n [\n _c(\"section\", { staticClass: \"message-body\" }, [\n _c(\"div\", { staticClass: \"media\" }, [\n _vm._m(0),\n _c(\"div\", { staticClass: \"media-content\" }, [\n _c(\"h3\", { staticClass: \"is-size-5\" }, [\n _vm._v(_vm._s(_vm.$t(\"Warning\")))\n ]),\n _c(\"p\", { staticClass: \"is-size-65\" }, [\n _vm._v(\n \" \" +\n _vm._s(\n _vm.$t(\n \"The selected drive will be emptied.\"\n )\n )\n ),\n _c(\"br\"),\n _vm._v(\n \" \" +\n _vm._s(\n _vm.$t(\n \"Please make sure again that there is no important data on the selected drive that needs to be backed up.\"\n )\n ) +\n \" \"\n )\n ])\n ])\n ])\n ])\n ]\n )\n : _c(\n \"article\",\n { staticClass: \"message is-danger mt-5\" },\n [\n _c(\"section\", { staticClass: \"message-body\" }, [\n _c(\"div\", { staticClass: \"media\" }, [\n _vm._m(1),\n _c(\"div\", { staticClass: \"media-content\" }, [\n _c(\"h3\", { staticClass: \"is-size-5\" }, [\n _vm._v(_vm._s(_vm.$t(\"Attention\")))\n ]),\n _c(\"p\", { staticClass: \"is-size-65\" }, [\n _vm._v(\n \" \" +\n _vm._s(\n _vm.$t(\n \"The drive you select can be used directly as storage.\"\n )\n )\n ),\n _c(\"br\"),\n _vm._v(\n \" \" +\n _vm._s(\n _vm.$t(\n \"You can also choose to create it after formatting. If formatted, the selected drive will be emptied.\"\n )\n )\n ),\n _c(\"br\"),\n _vm._v(\n \" \" +\n _vm._s(\n _vm.$t(\n \"Please make sure again that there is no important data on the selected drive that needs to be backed up.\"\n )\n ) +\n \" \"\n )\n ])\n ])\n ])\n ])\n ]\n )\n ],\n 1\n )\n : _vm._e()\n ]\n : _vm._e(),\n _vm.isCreating\n ? [\n _c(\"div\", { staticClass: \"installing-warpper mt-6 mb-6\" }, [\n _c(\n \"div\",\n {\n staticClass:\n \"is-flex is-align-items-center is-justify-content-center mb-5\"\n },\n [\n _c(\"lottie-animation\", {\n staticClass: \"creating-animation\",\n attrs: {\n animationData: __webpack_require__(/*! @/assets/ani/creating.json */ \"./src/assets/ani/creating.json\"),\n loop: true,\n autoPlay: true\n }\n })\n ],\n 1\n ),\n _c(\n \"h3\",\n {\n staticClass:\n \"title is-4 has-text-centered has-text-weight-light\"\n },\n [_vm._v(_vm._s(_vm.$t(\"Creation in progress\")) + \"...\")]\n )\n ])\n ]\n : _vm._e(),\n _c(\"b-loading\", {\n attrs: { \"is-full-page\": false, \"can-cancel\": false },\n model: {\n value: _vm.isLoading,\n callback: function($$v) {\n _vm.isLoading = $$v\n },\n expression: \"isLoading\"\n }\n })\n ],\n 2\n ),\n _vm.creatIsShow && !_vm.isCreating\n ? _c(\n \"footer\",\n { staticClass: \"modal-card-foot is-flex is-align-items-center \" },\n [\n [\n _c(\"div\", { staticClass: \"flex1\" }),\n _c(\n \"div\",\n [\n _c(\"b-button\", {\n attrs: { label: _vm.$t(\"Cancel\"), rounded: \"\" },\n on: { click: _vm.showDefault }\n }),\n _c(\"b-button\", {\n attrs: {\n label: _vm.$t(\"Format and Create\"),\n type:\n _vm.createStorageType == \"format\" ? \"is-primary\" : \"\",\n rounded: \"\",\n loading: _vm.isValiding\n },\n on: {\n click: function($event) {\n return _vm.createStorge(true)\n }\n }\n }),\n _vm.createStorageType == \"mountable\"\n ? _c(\"b-button\", {\n attrs: {\n label: _vm.$t(\"Create\"),\n type: \"is-primary\",\n rounded: \"\",\n loading: _vm.isValiding\n },\n on: {\n click: function($event) {\n return _vm.createStorge(false)\n }\n }\n })\n : _vm._e()\n ],\n 1\n )\n ]\n ],\n 2\n )\n : _vm._e()\n ])\n}\nvar staticRenderFns = [\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"media-left\" }, [\n _c(\"span\", { staticClass: \"icon is-large is-danger\" }, [\n _c(\"i\", { staticClass: \"mdi mdi-alert-circle mdi-48px\" })\n ])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"media-left\" }, [\n _c(\"span\", { staticClass: \"icon is-large is-danger\" }, [\n _c(\"i\", { staticClass: \"mdi mdi-alert-circle mdi-48px\" })\n ])\n ])\n }\n]\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/Storage/StorageManagerPanel.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/TopBar.vue?vue&type=template&id=ae7504a4&": -/*!***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/TopBar.vue?vue&type=template&id=ae7504a4& ***! - \***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"navbar top-bar is-flex is-align-items-center\" },\n [\n _c(\n \"div\",\n { staticClass: \"navbar-brand ml-3\" },\n [\n _c(\n \"div\",\n {\n staticClass: \"is-flex is-align-items-center mr-3 ml-3\",\n attrs: { id: \"sidebar-btn\" }\n },\n [\n _c(\n \"b-tooltip\",\n {\n attrs: {\n label: _vm.sidebarIconLabel,\n position: \"is-right\",\n type: \"is-dark\"\n }\n },\n [\n _c(\n \"p\",\n {\n attrs: { role: \"button\" },\n on: { click: _vm.showSideBar }\n },\n [_c(\"b-icon\", { attrs: { icon: _vm.sidebarIcon } })],\n 1\n )\n ]\n )\n ],\n 1\n ),\n _c(\n \"b-dropdown\",\n {\n staticClass: \"navbar-item \",\n attrs: { \"aria-role\": \"list\", animation: \"fade1\" },\n on: { \"active-change\": _vm.getUserInfo },\n scopedSlots: _vm._u([\n {\n key: \"trigger\",\n fn: function() {\n return [\n _c(\n \"b-tooltip\",\n {\n attrs: {\n label: _vm.$t(\"Account\"),\n position: \"is-right\",\n type: \"is-dark\"\n }\n },\n [\n _c(\n \"p\",\n { attrs: { role: \"button\" } },\n [\n _c(\"b-icon\", {\n staticClass: \"picon\",\n attrs: { icon: \"account-circle\" }\n })\n ],\n 1\n )\n ]\n )\n ]\n },\n proxy: true\n }\n ])\n },\n [\n _c(\n \"b-dropdown-item\",\n {\n attrs: {\n \"aria-role\": \"menu-item\",\n focusable: false,\n custom: \"\"\n }\n },\n [\n _c(\"h2\", { staticClass: \"title is-4\" }, [\n _vm._v(_vm._s(_vm.$t(\"Account\")))\n ]),\n _c(\n \"div\",\n { staticClass: \"is-flex is-align-items-center item\" },\n [\n _c(\n \"div\",\n { staticClass: \"is-flex is-align-items-center flex1\" },\n [\n _c(\"b-image\", {\n staticClass: \"is-40x40 mr-3\",\n attrs: {\n src: __webpack_require__(/*! @/assets/img/account/default-avatar.svg */ \"./src/assets/img/account/default-avatar.svg\"),\n rounded: \"\"\n }\n }),\n _c(\"b\", [_vm._v(_vm._s(_vm.userInfo.user_name))])\n ],\n 1\n ),\n _c(\"div\", [\n _c(\n \"a\",\n {\n attrs: { \"aria-role\": \"button\" },\n on: { click: _vm.showAccountPanel }\n },\n [_c(\"b-icon\", { attrs: { icon: \"account-edit\" } })],\n 1\n )\n ])\n ]\n ),\n _c(\n \"div\",\n { staticClass: \"is-flex is-align-items-center item mt-2\" },\n [\n _c(\"div\", {\n staticClass: \"is-flex is-align-items-center flex1\"\n }),\n _c(\n \"div\",\n [\n _c(\n \"b-button\",\n {\n staticClass: \"ml-2 \",\n attrs: {\n type: \"is-dark\",\n size: \"is-small\",\n rounded: \"\"\n },\n on: { click: _vm.logout }\n },\n [_vm._v(_vm._s(_vm.$t(\"Logout\")))]\n )\n ],\n 1\n )\n ]\n )\n ]\n )\n ],\n 1\n ),\n _c(\n \"b-dropdown\",\n {\n staticClass: \"navbar-item\",\n attrs: { \"aria-role\": \"list\", animation: \"fade1\" },\n on: { \"active-change\": _vm.onOpen },\n scopedSlots: _vm._u([\n {\n key: \"trigger\",\n fn: function() {\n return [\n _c(\n \"b-tooltip\",\n {\n attrs: {\n label: _vm.$t(\"Settings\"),\n position: \"is-right\",\n type: \"is-dark\"\n }\n },\n [\n _c(\n \"p\",\n { attrs: { role: \"button\" } },\n [\n _c(\"b-icon\", {\n staticClass: \"picon\",\n class: {\n \"update-icon-dot\": _vm.updateInfo.is_need\n },\n attrs: { icon: \"tune\" }\n })\n ],\n 1\n )\n ]\n )\n ]\n },\n proxy: true\n }\n ])\n },\n [\n _c(\n \"b-dropdown-item\",\n {\n attrs: {\n \"aria-role\": \"menu-item\",\n focusable: false,\n custom: \"\"\n }\n },\n [\n _c(\"h2\", { staticClass: \"title is-4\" }, [\n _vm._v(_vm._s(_vm.$t(\"Dashboard Setting\")))\n ]),\n _c(\n \"div\",\n { staticClass: \"is-flex is-align-items-center mb-2\" },\n [\n _c(\n \"div\",\n { staticClass: \"is-flex is-align-items-center flex1\" },\n [\n _c(\"b-icon\", {\n staticClass: \"mr-1\",\n attrs: {\n icon: \"magnify\",\n \"custom-size\": \"mdi-18px\"\n }\n }),\n _vm._v(\" \"),\n _c(\"b\", [_vm._v(_vm._s(_vm.$t(\"Search Engine\")))])\n ],\n 1\n ),\n _c(\n \"div\",\n [\n _c(\n \"b-field\",\n [\n _c(\n \"b-select\",\n {\n staticClass: \"set-select\",\n attrs: { size: \"is-small\" },\n on: { input: _vm.saveData },\n model: {\n value: _vm.barData.search_engine,\n callback: function($$v) {\n _vm.$set(\n _vm.barData,\n \"search_engine\",\n $$v\n )\n },\n expression: \"barData.search_engine\"\n }\n },\n [\n _c(\n \"option\",\n {\n attrs: {\n value: \"https://duckduckgo.com/?q=\"\n }\n },\n [_vm._v(\"DuckDuckGo\")]\n ),\n _c(\n \"option\",\n {\n attrs: {\n value:\n \"https://www.google.com/search?q=\"\n }\n },\n [_vm._v(\"Google\")]\n ),\n _c(\n \"option\",\n {\n attrs: {\n value: \"https://www.bing.com/search?q=\"\n }\n },\n [_vm._v(\"Bing\")]\n )\n ]\n )\n ],\n 1\n )\n ],\n 1\n )\n ]\n ),\n _c(\n \"div\",\n { staticClass: \"is-flex is-align-items-center mb-2\" },\n [\n _c(\n \"div\",\n { staticClass: \"is-flex is-align-items-center flex1\" },\n [\n _c(\"b-icon\", {\n staticClass: \"mr-1\",\n attrs: {\n icon: \"translate\",\n \"custom-size\": \"mdi-18px\"\n }\n }),\n _vm._v(\" \"),\n _c(\"b\", [_vm._v(_vm._s(_vm.$t(\"Language\")))])\n ],\n 1\n ),\n _c(\n \"div\",\n [\n _c(\n \"b-field\",\n [\n _c(\n \"b-select\",\n {\n staticClass: \"set-select\",\n attrs: { size: \"is-small\" },\n on: { input: _vm.saveData },\n model: {\n value: _vm.barData.lang,\n callback: function($$v) {\n _vm.$set(_vm.barData, \"lang\", $$v)\n },\n expression: \"barData.lang\"\n }\n },\n [\n _c(\"option\", { attrs: { value: \"de_de\" } }, [\n _vm._v(\"Deutsch\")\n ]),\n _c(\"option\", { attrs: { value: \"en_us\" } }, [\n _vm._v(\"English\")\n ]),\n _c(\"option\", { attrs: { value: \"es_es\" } }, [\n _vm._v(\"Español\")\n ]),\n _c(\"option\", { attrs: { value: \"fr_fr\" } }, [\n _vm._v(\"Français\")\n ]),\n _c(\"option\", { attrs: { value: \"it_it\" } }, [\n _vm._v(\"Italiano\")\n ]),\n _c(\"option\", { attrs: { value: \"ru_ru\" } }, [\n _vm._v(\"Русский\")\n ]),\n _c(\"option\", { attrs: { value: \"pl_pl\" } }, [\n _vm._v(\"Polska\")\n ]),\n _c(\"option\", { attrs: { value: \"pt_br\" } }, [\n _vm._v(\"Português (Brasil)\")\n ]),\n _c(\"option\", { attrs: { value: \"zh_cn\" } }, [\n _vm._v(\"简体中文\")\n ])\n ]\n )\n ],\n 1\n )\n ],\n 1\n )\n ]\n ),\n _c(\n \"div\",\n { staticClass: \"is-flex is-align-items-center mb-1\" },\n [\n _c(\n \"div\",\n { staticClass: \"is-flex is-align-items-center flex1\" },\n [\n _c(\"b-icon\", {\n staticClass: \"mr-1\",\n attrs: {\n icon: \"view-dashboard-outline\",\n \"custom-size\": \"mdi-18px\"\n }\n }),\n _vm._v(\" \"),\n _c(\"b\", [_vm._v(_vm._s(_vm.$t(\"WebUI Port\")))])\n ],\n 1\n ),\n _c(\"div\", [_vm._v(\" \" + _vm._s(_vm.port) + \" \")])\n ]\n ),\n _c(\n \"div\",\n {\n staticClass:\n \"is-flex is-align-items-center is-justify-content-end update-container mb-2\"\n },\n [\n _c(\"div\", { staticClass: \"flex1\" }),\n _c(\n \"b-button\",\n {\n attrs: {\n type: \"is-dark\",\n size: \"is-small\",\n rounded: \"\"\n },\n on: { click: _vm.showPortPanel }\n },\n [_vm._v(_vm._s(_vm.$t(\"Edit\")))]\n )\n ],\n 1\n ),\n _c(\n \"div\",\n { staticClass: \"is-flex is-align-items-center item\" },\n [\n _c(\n \"div\",\n { staticClass: \"is-flex is-align-items-center flex1\" },\n [\n _c(\"b-icon\", {\n staticClass: \"mr-1\",\n attrs: { icon: \"sync\", \"custom-size\": \"mdi-18px\" }\n }),\n _vm._v(\" \"),\n _c(\n \"b\",\n {\n class: {\n \"update-text-dot\": _vm.updateInfo.is_need\n }\n },\n [_vm._v(_vm._s(_vm.$t(\"Update\")))]\n )\n ],\n 1\n ),\n _c(\"div\", [\n _vm._v(\n \" v\" + _vm._s(_vm.updateInfo.current_version) + \" \"\n )\n ])\n ]\n ),\n !_vm.updateInfo.is_need\n ? _c(\n \"div\",\n { staticClass: \"is-flex is-align-items-center pl-55\" },\n [\n _vm._v(\" \" + _vm._s(_vm.$t(_vm.latestText)) + \" \"),\n _c(\"b-icon\", {\n staticClass: \"ml-1\",\n attrs: {\n type: \"is-success\",\n icon: \"check\",\n \"custom-size\": \"mdi-18px\"\n }\n })\n ],\n 1\n )\n : _c(\n \"div\",\n {\n staticClass:\n \"is-flex is-align-items-center is-justify-content-end update-container pl-5\"\n },\n [\n _c(\"div\", { staticClass: \"flex1\" }, [\n _vm._v(_vm._s(_vm.$t(_vm.updateText)))\n ]),\n _c(\n \"b-button\",\n {\n staticClass: \"ml-2\",\n attrs: {\n type: \"is-dark\",\n size: \"is-small\",\n loading: _vm.isUpdating,\n rounded: \"\"\n },\n on: { click: _vm.updateSystem }\n },\n [_vm._v(_vm._s(_vm.$t(\"Update\")))]\n )\n ],\n 1\n )\n ]\n )\n ],\n 1\n ),\n _c(\n \"div\",\n { staticClass: \"is-flex is-align-items-center ml-3\" },\n [\n _c(\n \"b-tooltip\",\n {\n attrs: {\n label: _vm.$t(\"Terminal & Logs\"),\n position: \"is-right\",\n type: \"is-dark\"\n }\n },\n [\n _c(\n \"p\",\n {\n attrs: { role: \"button\" },\n on: { click: _vm.showTerminalPanel }\n },\n [\n _c(\"b-icon\", {\n staticClass: \"picon\",\n attrs: { icon: \"console\" }\n })\n ],\n 1\n )\n ]\n )\n ],\n 1\n )\n ],\n 1\n ),\n _vm._m(0)\n ]\n )\n}\nvar staticRenderFns = [\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"navbar-menu\" }, [\n _c(\"div\", { staticClass: \"navbar-end mr-3\" })\n ])\n }\n]\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/TopBar.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/account/AccountPanel.vue?vue&type=template&id=25a2f429&": -/*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/account/AccountPanel.vue?vue&type=template&id=25a2f429& ***! - \*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"modal-card\" },\n [\n _c(\"ValidationObserver\", {\n ref: \"observer\",\n scopedSlots: _vm._u([\n {\n key: \"default\",\n fn: function(ref) {\n var handleSubmit = ref.handleSubmit\n return [\n _c(\n \"header\",\n {\n staticClass: \"modal-card-head\",\n class: { \"modal-card-head1\": _vm.state == 1 }\n },\n [\n _c(\"div\", { staticClass: \"flex1\" }, [\n _c(\n \"h3\",\n { staticClass: \"title is-4 has-text-weight-normal\" },\n [_vm._v(_vm._s(_vm.title))]\n )\n ]),\n _c(\"div\", [\n _c(\"button\", {\n staticClass: \"delete\",\n attrs: { type: \"button\" },\n on: {\n click: function($event) {\n return _vm.$emit(\"close\")\n }\n }\n })\n ])\n ]\n ),\n _c(\n \"section\",\n {\n staticClass: \"modal-card-body \",\n class: { \"is-flex\": _vm.state == 1 }\n },\n [\n _vm.state == 1\n ? [\n _c(\n \"div\",\n [\n _c(\"b-image\", {\n staticClass: \"is-128x128\",\n attrs: {\n src: __webpack_require__(/*! @/assets/img/account/default-avatar.svg */ \"./src/assets/img/account/default-avatar.svg\"),\n rounded: \"\"\n }\n })\n ],\n 1\n ),\n _c(\"div\", { staticClass: \"ml-5\" }, [\n _c(\"h2\", { staticClass: \"title is-4\" }, [\n _vm._v(_vm._s(_vm.$t(\"Name\")))\n ]),\n _c(\"h2\", { staticClass: \"title is-6\" }, [\n _vm._v(_vm._s(_vm.userInfo.user_name))\n ]),\n _c(\n \"h2\",\n {\n staticClass: \"title is-6 has-text-weight-normal\"\n },\n [\n _c(\n \"a\",\n {\n on: {\n click: function($event) {\n return _vm.goto(2)\n }\n }\n },\n [_vm._v(_vm._s(_vm.$t(\"Change name\")))]\n )\n ]\n ),\n _c(\"h2\", { staticClass: \"title is-4 mt-6\" }, [\n _vm._v(_vm._s(_vm.$t(\"Password\")))\n ]),\n _c(\n \"h2\",\n {\n staticClass: \"title is-6 has-text-weight-normal\"\n },\n [\n _c(\n \"a\",\n {\n on: {\n click: function($event) {\n return _vm.goto(3)\n }\n }\n },\n [_vm._v(_vm._s(_vm.$t(\"Change Password\")))]\n )\n ]\n )\n ])\n ]\n : _vm._e(),\n _vm.state == 2\n ? [\n _c(\"ValidationProvider\", {\n attrs: { rules: \"required\", name: \"User\" },\n scopedSlots: _vm._u(\n [\n {\n key: \"default\",\n fn: function(ref) {\n var errors = ref.errors\n var valid = ref.valid\n return [\n _c(\n \"b-field\",\n {\n staticClass:\n \"mb-5 mt-5 has-text-light\",\n attrs: {\n type: {\n \"is-danger\": errors[0],\n \"is-success\": valid\n },\n message: _vm.$t(errors)\n }\n },\n [\n _c(\"b-input\", {\n attrs: { type: \"text\" },\n nativeOn: {\n keyup: function($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k(\n $event.keyCode,\n \"enter\",\n 13,\n $event.key,\n \"Enter\"\n )\n ) {\n return null\n }\n return handleSubmit(\n _vm.saveUser\n )\n }\n },\n model: {\n value: _vm.username,\n callback: function($$v) {\n _vm.username = $$v\n },\n expression: \"username\"\n }\n })\n ],\n 1\n )\n ]\n }\n }\n ],\n null,\n true\n )\n })\n ]\n : _vm._e(),\n _vm.state == 3\n ? [\n _c(\n \"b-notification\",\n {\n attrs: {\n \"auto-close\": \"\",\n type: \"is-danger\",\n \"aria-close-label\": \"Close notification\",\n role: \"alert\"\n },\n model: {\n value: _vm.notificationShow,\n callback: function($$v) {\n _vm.notificationShow = $$v\n },\n expression: \"notificationShow\"\n }\n },\n [_vm._v(\" \" + _vm._s(_vm.message) + \" \")]\n ),\n _c(\"ValidationProvider\", {\n attrs: {\n rules: \"required|min:5\",\n vid: \"oriPassword\",\n name: \"oriPassword\"\n },\n scopedSlots: _vm._u(\n [\n {\n key: \"default\",\n fn: function(ref) {\n var errors = ref.errors\n var valid = ref.valid\n return [\n _c(\n \"b-field\",\n {\n staticClass:\n \"mb-5 mt-5 has-text-light\",\n attrs: {\n type: {\n \"is-danger\": errors[0],\n \"is-success\": valid\n },\n message: _vm.$t(errors)\n }\n },\n [\n _c(\"b-input\", {\n attrs: {\n type: \"password\",\n placeholder: _vm.$t(\n \"Original password\"\n ),\n \"password-reveal\": \"\"\n },\n model: {\n value: _vm.oriPassword,\n callback: function($$v) {\n _vm.oriPassword = $$v\n },\n expression: \"oriPassword\"\n }\n })\n ],\n 1\n )\n ]\n }\n }\n ],\n null,\n true\n )\n }),\n _c(\"ValidationProvider\", {\n attrs: {\n rules: \"required|min:5\",\n vid: \"password\",\n name: \"Password\"\n },\n scopedSlots: _vm._u(\n [\n {\n key: \"default\",\n fn: function(ref) {\n var errors = ref.errors\n var valid = ref.valid\n return [\n _c(\n \"b-field\",\n {\n staticClass:\n \"mb-5 mt-5 has-text-light\",\n attrs: {\n type: {\n \"is-danger\": errors[0],\n \"is-success\": valid\n },\n message: _vm.$t(errors)\n }\n },\n [\n _c(\"b-input\", {\n attrs: {\n type: \"password\",\n placeholder: _vm.$t(\n \"New password\"\n ),\n \"password-reveal\": \"\"\n },\n model: {\n value: _vm.password,\n callback: function($$v) {\n _vm.password = $$v\n },\n expression: \"password\"\n }\n })\n ],\n 1\n )\n ]\n }\n }\n ],\n null,\n true\n )\n }),\n _c(\"ValidationProvider\", {\n attrs: {\n rules: \"required|confirmed:password\",\n name: \"Password Confirmation\"\n },\n scopedSlots: _vm._u(\n [\n {\n key: \"default\",\n fn: function(ref) {\n var errors = ref.errors\n var valid = ref.valid\n return [\n _c(\n \"b-field\",\n {\n staticClass: \"mt-4 mb-5\",\n attrs: {\n type: {\n \"is-danger\": errors[0],\n \"is-success\": valid\n },\n message: _vm.$t(errors)\n }\n },\n [\n _c(\"b-input\", {\n attrs: {\n type: \"password\",\n placeholder: _vm.$t(\n \"Confirm the new password again\"\n ),\n \"password-reveal\": \"\"\n },\n nativeOn: {\n keyup: function($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k(\n $event.keyCode,\n \"enter\",\n 13,\n $event.key,\n \"Enter\"\n )\n ) {\n return null\n }\n return _vm.savePassword(\n _vm.savePassword\n )\n }\n },\n model: {\n value: _vm.confirmation,\n callback: function($$v) {\n _vm.confirmation = $$v\n },\n expression: \"confirmation\"\n }\n })\n ],\n 1\n )\n ]\n }\n }\n ],\n null,\n true\n )\n })\n ]\n : _vm._e()\n ],\n 2\n ),\n _c(\n \"footer\",\n {\n staticClass: \"modal-card-foot is-flex is-align-items-center\"\n },\n [\n _c(\"div\", { staticClass: \"flex1\" }),\n _c(\n \"div\",\n [\n _vm.state >= 2\n ? _c(\"b-button\", {\n attrs: { label: _vm.$t(\"Back\"), rounded: \"\" },\n on: {\n click: function($event) {\n return _vm.goto(1)\n }\n }\n })\n : _vm._e(),\n _vm.state == 2\n ? _c(\"b-button\", {\n attrs: {\n label: _vm.$t(\"Submit\"),\n type: \"is-primary\",\n rounded: \"\",\n expaned: \"\"\n },\n on: {\n click: function($event) {\n return handleSubmit(_vm.saveUser)\n }\n }\n })\n : _vm._e(),\n _vm.state == 3\n ? _c(\"b-button\", {\n attrs: {\n label: _vm.$t(\"Submit\"),\n type: \"is-primary\",\n rounded: \"\",\n expaned: \"\"\n },\n on: {\n click: function($event) {\n return handleSubmit(_vm.savePassword)\n }\n }\n })\n : _vm._e()\n ],\n 1\n )\n ]\n )\n ]\n }\n }\n ])\n }),\n _c(\"b-loading\", {\n attrs: { \"is-full-page\": false },\n model: {\n value: _vm.isLoading,\n callback: function($$v) {\n _vm.isLoading = $$v\n },\n expression: \"isLoading\"\n }\n })\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/account/AccountPanel.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/filebrowser/FileEntryCard.vue?vue&type=template&id=5fac6c63&": -/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/filebrowser/FileEntryCard.vue?vue&type=template&id=5fac6c63& ***! - \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"column is-narrow is-3\" }, [\n _c(\n \"div\",\n {\n staticClass:\n \"wuji-card is-flex is-align-items-center is-justify-content-center p-55 app-card\"\n },\n [\n _c(\"div\", { staticClass: \"blur-background\" }),\n _c(\"div\", { staticClass: \"cards-content\" }, [\n _c(\n \"div\",\n {\n staticClass:\n \"has-text-centered is-flex is-justify-content-center is-flex-direction-column pt-3 pb-3 img-c\"\n },\n [\n _c(\n \"a\",\n {\n staticClass: \"is-flex is-justify-content-center\",\n on: { click: _vm.showFilePanel }\n },\n [\n _c(\"b-image\", {\n staticClass: \"is-72x72\",\n attrs: {\n src: __webpack_require__(/*! @/assets/img/filebrowser/folder-open.svg */ \"./src/assets/img/filebrowser/folder-open.svg\")\n }\n })\n ],\n 1\n ),\n _c(\"p\", { staticClass: \"mt-4 one-line\" }, [\n _c(\n \"a\",\n { staticClass: \"one-line\", on: { click: _vm.showFilePanel } },\n [_vm._v(\" \" + _vm._s(_vm.$t(\"Files\")) + \" \")]\n )\n ])\n ]\n )\n ])\n ]\n )\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/filebrowser/FileEntryCard.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/filebrowser/FilePanel.vue?vue&type=template&id=5cb5f976&": -/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/filebrowser/FilePanel.vue?vue&type=template&id=5cb5f976& ***! - \**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"modal-card\" }, [\n _c(\n \"section\",\n { staticClass: \"modal-card-body is-flex\" },\n [\n _c(\n \"transition\",\n { attrs: { name: \"c-zoom-in\" } },\n [\n _vm.isShowDetial\n ? _c(_vm.panelType, {\n ref: \"previewPanel\",\n tag: \"component\",\n attrs: { item: _vm.currentItem },\n on: {\n close: function($event) {\n _vm.isShowDetial = false\n _vm.isModalOpen = false\n }\n }\n })\n : _vm._e()\n ],\n 1\n ),\n [\n _c(\"div\", { staticClass: \"nav-bar\" }, [\n _c(\"h2\", { staticClass: \"title is-4 mb-0 pb-3\" }, [\n _vm._v(_vm._s(_vm.$t(\"Files\")))\n ]),\n _c(\n \"div\",\n { staticClass: \"list-container scrollbars-light pt-0\" },\n [\n _c(\"tree-list\", {\n ref: \"navBar\",\n attrs: { path: _vm.rootPath, autoLoad: true }\n })\n ],\n 1\n )\n ]),\n _c(\n \"div\",\n { staticClass: \"content flex1\" },\n [\n _c(\n \"uploader\",\n {\n ref: \"uploader\",\n staticClass: \"uploader-example\",\n attrs: { options: _vm.options }\n },\n [\n _c(\"uploader-unsupport\"),\n _c(\"header\", { staticClass: \"modal-card-head\" }, [\n _c(\"div\", { staticClass: \"flex1 is-flex \" }),\n _c(\n \"div\",\n { staticClass: \"is-flex is-align-items-center\" },\n [\n _c(\n \"transition\",\n { attrs: { name: \"fade\" } },\n [\n _vm.hasPasteData\n ? _c(\"b-button\", {\n staticClass: \"mr-3\",\n attrs: {\n \"icon-left\": \"content-paste\",\n type: \"is-success\",\n size: \"is-small\",\n label: _vm.$t(\"Paste\"),\n rounded: \"\"\n },\n on: {\n \"~click\": function($event) {\n return _vm.paste.apply(null, arguments)\n }\n }\n })\n : _vm._e()\n ],\n 1\n ),\n _c(\n \"div\",\n { staticClass: \"action-btn\" },\n [\n _c(\n \"b-dropdown\",\n {\n ref: \"moreBtn\",\n staticClass: \"file-dropdown\",\n attrs: {\n \"aria-role\": \"list\",\n triggers: [\"click\", \"context\"],\n position: \"is-bottom-left\",\n animation: \"fade1\",\n \"mobile-modal\": false,\n \"append-to-body\": \"\",\n \"close-on-click\": \"\"\n },\n scopedSlots: _vm._u([\n {\n key: \"trigger\",\n fn: function() {\n return [\n _c(\"b-button\", {\n staticClass: \"mr-2\",\n attrs: {\n \"icon-left\": \"book-arrow-up\",\n size: \"is-small\",\n type: \"is-primary\",\n label: _vm.$t(\"Upload or Create\"),\n rounded: \"\"\n }\n })\n ]\n },\n proxy: true\n }\n ])\n },\n [\n _c(\n \"b-dropdown-item\",\n {\n staticClass:\n \"is-flex is-align-items-center\",\n attrs: {\n id: \"upfile-btn\",\n \"aria-role\": \"menuitem\"\n }\n },\n [\n _c(\"b-icon\", {\n staticClass: \"mr-1\",\n attrs: {\n icon: \"file-upload-outline\",\n \"custom-size\": \"mdi-18px\"\n }\n }),\n _vm._v(\n \" \" + _vm._s(_vm.$t(\"Upload Files\")) + \" \"\n )\n ],\n 1\n ),\n _c(\n \"b-dropdown-item\",\n {\n staticClass:\n \"is-flex is-align-items-center\",\n attrs: {\n id: \"upfolder-btn\",\n \"aria-role\": \"menuitem\"\n }\n },\n [\n _c(\"b-icon\", {\n staticClass: \"mr-1\",\n attrs: {\n icon: \"folder-upload-outline\",\n \"custom-size\": \"mdi-18px\"\n }\n }),\n _vm._v(\n \" \" +\n _vm._s(_vm.$t(\"Upload Folder\")) +\n \" \"\n )\n ],\n 1\n ),\n _c(\"hr\", { staticClass: \"dropdown-divider\" }),\n _c(\n \"b-dropdown-item\",\n {\n staticClass:\n \"is-flex is-align-items-center\",\n attrs: { \"aria-role\": \"menuitem\" },\n on: { click: _vm.showNewFileModal }\n },\n [\n _c(\"b-icon\", {\n staticClass: \"mr-1\",\n attrs: {\n icon: \"file-plus-outline\",\n \"custom-size\": \"mdi-18px\"\n }\n }),\n _vm._v(\n \" \" + _vm._s(_vm.$t(\"New File\")) + \" \"\n )\n ],\n 1\n ),\n _c(\n \"b-dropdown-item\",\n {\n staticClass:\n \"is-flex is-align-items-center\",\n attrs: { \"aria-role\": \"menuitem\" },\n on: { click: _vm.showNewFolderModal }\n },\n [\n _c(\"b-icon\", {\n staticClass: \"mr-1\",\n attrs: {\n icon: \"folder-plus-outline\",\n \"custom-size\": \"mdi-18px\"\n }\n }),\n _vm._v(\n \" \" + _vm._s(_vm.$t(\"New Folder\")) + \" \"\n )\n ],\n 1\n )\n ],\n 1\n )\n ],\n 1\n ),\n _c(\n \"div\",\n {\n staticClass:\n \"is-flex is-align-items-center modal-close-container modal-close-container-line \"\n },\n [\n _c(\"button\", {\n staticClass: \"delete\",\n attrs: { type: \"button\" },\n on: {\n click: function($event) {\n return _vm.$emit(\"close\")\n }\n }\n })\n ]\n )\n ],\n 1\n )\n ]),\n _c(\"div\", { staticClass: \"tool-bar is-flex\" }, [\n _c(\n \"div\",\n {\n staticClass: \"breadcrumb-container flex1\",\n attrs: { id: \"bread-container\" }\n },\n [_c(\"file-breadcrumb\")],\n 1\n ),\n _c(\n \"div\",\n { staticClass: \"view-btns is-flex-shrink-0\" },\n [\n _c(\n \"b-tooltip\",\n {\n attrs: {\n label: _vm.$t(\"Change View\"),\n position: \"is-left\",\n type: \"is-dark\"\n }\n },\n [\n _c(\n \"p\",\n {\n staticClass: \"is-clickable\",\n attrs: { role: \"button\" },\n on: { click: _vm.changeView }\n },\n [_c(\"b-icon\", { attrs: { icon: _vm.viewIcon } })],\n 1\n )\n ]\n )\n ],\n 1\n )\n ]),\n _c(\n \"div\",\n { attrs: { id: \"dropTarget\" } },\n [\n _vm.isDragIn\n ? _c(\n \"div\",\n {\n staticClass:\n \"drag-mask is-flex is-align-items-flex-end is-flex-direction-row\"\n },\n [\n _c(\"div\", { staticClass: \"mb-6\" }, [\n _c(\n \"div\",\n { staticClass: \"upload-icon\" },\n [\n _c(\"b-icon\", {\n attrs: {\n icon: \"arrow-up\",\n size: \"is-medium\",\n type: \"is-white\"\n }\n })\n ],\n 1\n ),\n _c(\"p\", { staticClass: \"has-text-primary\" }, [\n _vm._v(\n \" \" +\n _vm._s(_vm.$t(\"Upload to\")) +\n \" \" +\n _vm._s(_vm.currentPathName) +\n \" \"\n )\n ])\n ])\n ]\n )\n : _vm._e(),\n _c(\n _vm.listView,\n {\n tag: \"component\",\n attrs: { isLoading: _vm.isLoading },\n on: {\n showDetailModal: _vm.showDetailModal,\n gotoFolder: _vm.getFileList,\n reload: _vm.reload\n },\n model: {\n value: _vm.listData,\n callback: function($$v) {\n _vm.listData = $$v\n },\n expression: \"listData\"\n }\n },\n [\n _c(\"empty-holder\", {\n on: {\n newFolder: _vm.showNewFolderModal,\n newFile: _vm.showNewFileModal\n }\n })\n ],\n 1\n )\n ],\n 1\n ),\n _vm.showUploadList\n ? _c(\n \"div\",\n { staticClass: \"upload-list\" },\n [\n _c(\n \"b-collapse\",\n {\n ref: \"uploadList\",\n staticClass: \"card\",\n attrs: {\n animation: \"slide1\",\n \"aria-id\": \"contentIdForA11y3\"\n },\n scopedSlots: _vm._u(\n [\n {\n key: \"trigger\",\n fn: function(props) {\n return [\n _c(\n \"div\",\n {\n staticClass: \"card-header\",\n attrs: {\n role: \"button\",\n \"aria-controls\":\n \"contentIdForA11y3\",\n \"aria-expanded\": props.open\n }\n },\n [\n _c(\n \"p\",\n {\n staticClass: \"card-header-title\"\n },\n [\n _c(\"b-icon\", {\n staticClass: \"mr-2\",\n attrs: {\n icon: props.open\n ? \"chevron-down\"\n : \"chevron-up\"\n }\n }),\n _vm._v(\n \" \" +\n _vm._s(\n _vm.$t(\n _vm.uploaderListHeaderText\n )\n ) +\n \" \"\n )\n ],\n 1\n ),\n _c(\n \"a\",\n {\n staticClass: \"card-header-icon\",\n on: {\n click: function($event) {\n $event.preventDefault()\n return _vm.closeUploaderList.apply(\n null,\n arguments\n )\n }\n }\n },\n [\n _c(\"b-icon\", {\n attrs: { icon: \"close\" }\n })\n ],\n 1\n )\n ]\n )\n ]\n }\n }\n ],\n null,\n false,\n 2696700549\n )\n },\n [\n _c(\n \"div\",\n {\n staticClass: \"card-content scrollbars-light\"\n },\n [\n _c(\n \"div\",\n { staticClass: \"content\" },\n [_c(\"uploader-list\")],\n 1\n )\n ]\n )\n ]\n )\n ],\n 1\n )\n : _vm._e()\n ],\n 1\n )\n ],\n 1\n )\n ]\n ],\n 2\n )\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/filebrowser/FilePanel.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/filebrowser/components/ActionButton.vue?vue&type=template&id=49c47fbe&": -/*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/filebrowser/components/ActionButton.vue?vue&type=template&id=49c47fbe& ***! - \****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"action-btn\" },\n [\n _c(\n \"b-dropdown\",\n {\n ref: \"dropDown\",\n staticClass: \"file-dropdown\",\n attrs: {\n \"aria-role\": \"list\",\n \"append-to-body\": \"\",\n \"close-on-click\": false,\n triggers: [\"click\"],\n id: \"dr-\" + _vm.index,\n position: \"is-\" + _vm.verticalPos + \"-\" + _vm.horizontalPos,\n animation: \"fade1\",\n \"mobile-modal\": false\n },\n on: {\n \"active-change\": function($event) {\n return _vm.dorpActiveChange($event, \"dr-\" + _vm.index)\n }\n },\n scopedSlots: _vm._u([\n {\n key: \"trigger\",\n fn: function() {\n return [\n _c(\n \"p\",\n { attrs: { role: \"button\" } },\n [\n _c(\"b-icon\", {\n attrs: {\n icon: \"dots-horizontal\",\n \"custom-size\": \"mdi-18px\",\n id: \"das\"\n }\n })\n ],\n 1\n )\n ]\n },\n proxy: true\n }\n ])\n },\n [\n !_vm.item.is_dir\n ? _c(\n \"b-dropdown-item\",\n {\n attrs: { \"aria-role\": \"menuitem\" },\n on: { click: _vm.download }\n },\n [_vm._v(\" \" + _vm._s(_vm.$t(\"Download\")) + \" \")]\n )\n : _vm._e(),\n _c(\n \"b-dropdown-item\",\n { attrs: { \"aria-role\": \"menuitem\" }, on: { click: _vm.copyPath } },\n [_vm._v(\" \" + _vm._s(_vm.$t(\"Copy Path\")) + \" \")]\n ),\n !_vm.item.is_dir\n ? _c(\"hr\", { staticClass: \"dropdown-divider\" })\n : _vm._e(),\n _c(\n \"b-dropdown-item\",\n { attrs: { \"aria-role\": \"menuitem\" }, on: { click: _vm.rename } },\n [_vm._v(\" \" + _vm._s(_vm.$t(\"Rename\")) + \" \")]\n ),\n _c(\n \"b-dropdown-item\",\n {\n attrs: { \"aria-role\": \"menuitem\" },\n on: {\n click: function($event) {\n return _vm.operate(\"move\")\n }\n }\n },\n [_vm._v(\" \" + _vm._s(_vm.$t(\"Cut\")) + \" \")]\n ),\n _c(\n \"b-dropdown-item\",\n {\n attrs: { \"aria-role\": \"menuitem\" },\n on: {\n click: function($event) {\n return _vm.operate(\"copy\")\n }\n }\n },\n [_vm._v(\" \" + _vm._s(_vm.$t(\"Copy\")) + \" \")]\n ),\n _c(\"hr\", { staticClass: \"dropdown-divider\" }),\n !_vm.isConfirmed\n ? _c(\n \"b-dropdown-item\",\n {\n staticClass: \"has-text-danger\",\n attrs: { \"aria-role\": \"menuitem\" },\n on: {\n click: function($event) {\n _vm.isConfirmed = true\n }\n }\n },\n [_vm._v(\" \" + _vm._s(_vm.$t(\"Delete\")) + \" \")]\n )\n : _c(\n \"b-dropdown-item\",\n {\n staticClass: \"has-text-danger\",\n attrs: { \"aria-role\": \"menuitem\" },\n on: { click: _vm.deleteItem }\n },\n [_vm._v(\" \" + _vm._s(_vm.$t(\"Are you sure?\")) + \" \")]\n )\n ],\n 1\n )\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/filebrowser/components/ActionButton.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/filebrowser/components/ContextMenu.vue?vue&type=template&id=c68c0130&": -/*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/filebrowser/components/ContextMenu.vue?vue&type=template&id=c68c0130& ***! - \***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", [\n _c(\n \"div\",\n {\n staticClass: \"action-btn context-menu\",\n style: { top: _vm.y + \"px\", left: _vm.x + \"px\" }\n },\n [\n _c(\n \"b-dropdown\",\n {\n ref: \"dropDown\",\n staticClass: \"file-dropdown\",\n attrs: {\n \"aria-role\": \"list\",\n \"close-on-click\": false,\n id: \"dr1\",\n position: \"is-\" + _vm.verticalPos + \"-\" + _vm.horizontalPos,\n animation: _vm.ani,\n \"mobile-modal\": false\n },\n on: {\n \"active-change\": function($event) {\n return _vm.dorpActiveChange($event, \"dr1\")\n }\n }\n },\n [\n !_vm.showDetial\n ? [\n _c(\n \"b-dropdown-item\",\n {\n key: \"system-context11\",\n staticClass: \"is-flex is-align-items-center\",\n attrs: { \"aria-role\": \"menuitem\" },\n on: {\n click: function($event) {\n _vm.$refs.dropDown.toggle()\n _vm.filePanel.showNewFileModal()\n }\n }\n },\n [\n _c(\"b-icon\", {\n staticClass: \"mr-1\",\n attrs: {\n icon: \"file-plus-outline\",\n \"custom-size\": \"mdi-18px\"\n }\n }),\n _vm._v(\" \" + _vm._s(_vm.$t(\"New File\")) + \" \")\n ],\n 1\n ),\n _c(\n \"b-dropdown-item\",\n {\n key: \"system-context1\",\n staticClass: \"is-flex is-align-items-center\",\n attrs: { \"aria-role\": \"menuitem\" },\n on: {\n click: function($event) {\n _vm.$refs.dropDown.toggle()\n _vm.filePanel.showNewFolderModal()\n }\n }\n },\n [\n _c(\"b-icon\", {\n staticClass: \"mr-1\",\n attrs: {\n icon: \"folder-plus-outline\",\n \"custom-size\": \"mdi-18px\"\n }\n }),\n _vm._v(\" \" + _vm._s(_vm.$t(\"New Folder\")) + \" \")\n ],\n 1\n ),\n _c(\"hr\", { staticClass: \"dropdown-divider\" }),\n _c(\n \"b-dropdown-item\",\n {\n key: \"system-context2\",\n staticClass: \"is-flex is-align-items-center \",\n attrs: { \"aria-role\": \"menuitem\", id: \"upfileBtn\" },\n on: {\n click: function($event) {\n return _vm.$refs.dropDown.toggle()\n }\n }\n },\n [\n _c(\"b-icon\", {\n staticClass: \"mr-1\",\n attrs: {\n icon: \"file-upload-outline\",\n \"custom-size\": \"mdi-18px\"\n }\n }),\n _vm._v(\" \" + _vm._s(_vm.$t(\"Upload Files\")) + \" \")\n ],\n 1\n ),\n _c(\n \"b-dropdown-item\",\n {\n key: \"system-context3\",\n staticClass: \"is-flex is-align-items-center \",\n attrs: { \"aria-role\": \"menuitem\", id: \"upfolderBtn\" },\n on: {\n click: function($event) {\n return _vm.$refs.dropDown.toggle()\n }\n }\n },\n [\n _c(\"b-icon\", {\n staticClass: \"mr-1\",\n attrs: {\n icon: \"folder-upload-outline\",\n \"custom-size\": \"mdi-18px\"\n }\n }),\n _vm._v(\" \" + _vm._s(_vm.$t(\"Upload Folder\")) + \" \")\n ],\n 1\n ),\n _vm.hasPasteData\n ? _c(\n \"b-dropdown-item\",\n {\n key: \"system-context4\",\n staticClass: \"is-flex is-align-items-center\",\n attrs: { \"aria-role\": \"menuitem\" },\n on: { click: _vm.paste }\n },\n [\n _c(\"b-icon\", {\n staticClass: \"mr-1\",\n attrs: {\n icon: \"content-paste\",\n \"custom-size\": \"mdi-18px\"\n }\n }),\n _vm._v(\" \" + _vm._s(_vm.$t(\"Paste\")) + \" \")\n ],\n 1\n )\n : _vm._e(),\n _c(\"hr\", { staticClass: \"dropdown-divider\" }),\n _c(\n \"b-dropdown-item\",\n {\n key: \"system-context5\",\n staticClass: \"is-flex is-align-items-center\",\n attrs: { \"aria-role\": \"menuitem\" },\n on: {\n click: function($event) {\n _vm.$refs.dropDown.toggle()\n _vm.filePanel.reload()\n }\n }\n },\n [\n _c(\"b-icon\", {\n staticClass: \"mr-1\",\n attrs: { icon: \"refresh\", \"custom-size\": \"mdi-18px\" }\n }),\n _vm._v(\" \" + _vm._s(_vm.$t(\"Refresh\")) + \" \")\n ],\n 1\n )\n ]\n : [\n !_vm.item.is_dir\n ? _c(\n \"b-dropdown-item\",\n {\n key: \"file-context1\",\n attrs: { \"aria-role\": \"menuitem\" },\n on: { click: _vm.download }\n },\n [_vm._v(\" \" + _vm._s(_vm.$t(\"Download\")) + \" \")]\n )\n : _vm._e(),\n _c(\n \"b-dropdown-item\",\n {\n key: \"file-context2\",\n attrs: { \"aria-role\": \"menuitem\" },\n on: { click: _vm.copyPath }\n },\n [_vm._v(\" \" + _vm._s(_vm.$t(\"Copy Path\")) + \" \")]\n ),\n !_vm.item.is_dir\n ? _c(\"hr\", { staticClass: \"dropdown-divider\" })\n : _vm._e(),\n _c(\n \"b-dropdown-item\",\n {\n key: \"file-context3\",\n attrs: { \"aria-role\": \"menuitem\" },\n on: { click: _vm.rename }\n },\n [_vm._v(\" \" + _vm._s(_vm.$t(\"Rename\")) + \" \")]\n ),\n _c(\n \"b-dropdown-item\",\n {\n key: \"file-context4\",\n attrs: { \"aria-role\": \"menuitem\" },\n on: {\n click: function($event) {\n return _vm.operate(\"move\")\n }\n }\n },\n [_vm._v(\" \" + _vm._s(_vm.$t(\"Cut\")) + \" \")]\n ),\n _c(\n \"b-dropdown-item\",\n {\n key: \"file-context5\",\n attrs: { \"aria-role\": \"menuitem\" },\n on: {\n click: function($event) {\n return _vm.operate(\"copy\")\n }\n }\n },\n [_vm._v(\" \" + _vm._s(_vm.$t(\"Copy\")) + \" \")]\n ),\n _c(\"hr\", { staticClass: \"dropdown-divider\" }),\n !_vm.isConfirmed\n ? _c(\n \"b-dropdown-item\",\n {\n staticClass: \"has-text-danger\",\n attrs: { \"aria-role\": \"menuitem\" },\n on: {\n click: function($event) {\n _vm.isConfirmed = true\n }\n }\n },\n [_vm._v(\" \" + _vm._s(_vm.$t(\"Delete\")) + \" \")]\n )\n : _c(\n \"b-dropdown-item\",\n {\n staticClass: \"has-text-danger\",\n attrs: { \"aria-role\": \"menuitem\" },\n on: { click: _vm.deleteItem }\n },\n [_vm._v(\" \" + _vm._s(_vm.$t(\"Are you sure?\")) + \" \")]\n )\n ]\n ],\n 2\n )\n ],\n 1\n )\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/filebrowser/components/ContextMenu.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/filebrowser/components/EmptyHolder.vue?vue&type=template&id=af5398da&": -/*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/filebrowser/components/EmptyHolder.vue?vue&type=template&id=af5398da& ***! - \***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"has-text-centered\" }, [\n _c(\"h5\", { staticClass: \"title is-65\" }, [\n _vm._v(_vm._s(_vm.$t(\"Drop your files here to upload\")))\n ]),\n _c(\"p\", { staticClass: \"is-size-7\" }, [_vm._v(_vm._s(_vm.$t(\"or\")))]),\n _c(\"ul\", { staticClass: \"is-flex upload-btns\" }, [\n _c(\n \"li\",\n {\n staticClass: \"e-btn\",\n on: {\n click: function($event) {\n return _vm.$emit(\"newFile\")\n }\n }\n },\n [\n _c(\"span\", [_vm._v(_vm._s(_vm.$t(\"New File\")))]),\n _c(\"b-image\", {\n attrs: { src: __webpack_require__(/*! @/assets/img/filebrowser/newFile.svg */ \"./src/assets/img/filebrowser/newFile.svg\") }\n })\n ],\n 1\n ),\n _c(\n \"li\",\n {\n staticClass: \"e-btn\",\n on: {\n click: function($event) {\n return _vm.$emit(\"newFolder\")\n }\n }\n },\n [\n _c(\"span\", [_vm._v(_vm._s(_vm.$t(\"New Folder\")))]),\n _c(\"b-image\", {\n attrs: { src: __webpack_require__(/*! @/assets/img/filebrowser/newFolder.svg */ \"./src/assets/img/filebrowser/newFolder.svg\") }\n })\n ],\n 1\n ),\n _c(\n \"li\",\n { staticClass: \"e-btn\", attrs: { id: \"eUpFileBtn\" } },\n [\n _c(\"span\", [_vm._v(_vm._s(_vm.$t(\"Upload Files\")))]),\n _c(\"b-image\", {\n attrs: { src: __webpack_require__(/*! @/assets/img/filebrowser/upfile.svg */ \"./src/assets/img/filebrowser/upfile.svg\") }\n })\n ],\n 1\n ),\n _c(\n \"li\",\n { staticClass: \"e-btn\", attrs: { id: \"eUpFolderBtn\" } },\n [\n _c(\"span\", [_vm._v(_vm._s(_vm.$t(\"Upload Folder\")))]),\n _c(\"b-image\", {\n attrs: { src: __webpack_require__(/*! @/assets/img/filebrowser/upfolder.svg */ \"./src/assets/img/filebrowser/upfolder.svg\") }\n })\n ],\n 1\n )\n ])\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/filebrowser/components/EmptyHolder.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/filebrowser/components/FileBreadcrumb.vue?vue&type=template&id=cbe9db56&": -/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/filebrowser/components/FileBreadcrumb.vue?vue&type=template&id=cbe9db56& ***! - \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n [\n _c(\n \"b-breadcrumb\",\n { attrs: { size: \"is-medium\" } },\n _vm._l(_vm.pathCollection, function(item, index) {\n return _c(\n \"b-breadcrumb-item\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: item.show || item == _vm.activeHide,\n expression: \"item.show || item == activeHide\"\n }\n ],\n key: item + index,\n attrs: { active: _vm.checkActive(index) },\n on: {\n click: function($event) {\n $event.stopPropagation()\n return _vm.open(item)\n }\n }\n },\n [\n item == _vm.activeHide\n ? [\n _c(\n \"b-dropdown\",\n {\n ref: \"breadDrop\",\n refInFor: true,\n staticClass: \"file-dropdown\",\n attrs: {\n \"aria-role\": \"list\",\n \"append-to-body\": \"\",\n triggers: [\"\"],\n animation: \"fade1\",\n \"mobile-modal\": false\n },\n scopedSlots: _vm._u(\n [\n {\n key: \"trigger\",\n fn: function() {\n return [\n _c(\n \"p\",\n { attrs: { role: \"button\" } },\n [\n _c(\"b-icon\", {\n attrs: {\n icon: \"dots-horizontal\",\n \"custom-size\": \"mdi-18px\",\n id: \"das\"\n }\n })\n ],\n 1\n )\n ]\n },\n proxy: true\n }\n ],\n null,\n true\n )\n },\n _vm._l(_vm.hideItems, function(sitem, index) {\n return _c(\n \"b-dropdown-item\",\n {\n key: \"ff\" + index,\n attrs: { \"aria-role\": \"menuitem\" },\n on: {\n click: function($event) {\n return _vm.subOpen(sitem)\n }\n }\n },\n [_vm._v(\" \" + _vm._s(sitem.name) + \" \")]\n )\n }),\n 1\n )\n ]\n : [_vm._v(\" \" + _vm._s(item.name) + \" \")]\n ],\n 2\n )\n }),\n 1\n ),\n _c(\n \"b-breadcrumb\",\n {\n staticClass: \"shadow\",\n attrs: { size: \"is-medium\", id: \"shadowBread\" }\n },\n _vm._l(_vm.pathCollection, function(item, index) {\n return _c(\"b-breadcrumb-item\", { key: \"fake\" + item + index }, [\n _vm._v(\" \" + _vm._s(item.name) + \" \")\n ])\n }),\n 1\n )\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/filebrowser/components/FileBreadcrumb.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/filebrowser/components/GirdView.vue?vue&type=template&id=c9d666e2&": -/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/filebrowser/components/GirdView.vue?vue&type=template&id=c9d666e2& ***! - \************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n staticClass: \"scroll-container scrollbars-light is-relative\",\n on: {\n contextmenu: function($event) {\n $event.preventDefault()\n return _vm.openContextMenu.apply(null, arguments)\n }\n }\n },\n [\n _vm.listData.length == 0 && !_vm.isLoading\n ? _c(\n \"div\",\n {\n staticClass:\n \"is-flex is-align-items-center is-justify-content-center empty-container\"\n },\n [_vm._t(\"default\")],\n 2\n )\n : _vm._e(),\n _c(\"div\", { staticClass: \"content-components\" }, [\n _c(\n \"div\",\n { staticClass: \"card-container\", attrs: { id: \"card-container\" } },\n _vm._l(_vm.listData, function(item, index) {\n return _c(\n \"div\",\n {\n key: \"list-\" + index + item.name,\n staticClass: \"grid-card rdata\",\n style: _vm.colStyle,\n attrs: { \"data-rel\": index }\n },\n [\n _c(\"div\", { staticClass: \"file-card\" }, [\n _c(\"div\", { staticClass: \"file-card-item\" }, [\n _c(\"div\", { staticClass: \"node-card-container\" }, [\n _c(\n \"div\",\n { staticClass: \"outer-wrapper\" },\n [\n _c(\"action-button\", {\n attrs: { cols: _vm.cols, index: index, item: item },\n on: {\n showDetailModal: function($event) {\n return _vm.$emit(\"showDetailModal\", item)\n },\n reload: function($event) {\n return _vm.$emit(\"reload\")\n }\n }\n }),\n _c(\n \"div\",\n {\n staticClass: \"node-card is-unselectable\",\n class: { isCutting: _vm.getCardState(item) },\n on: {\n click: function($event) {\n return _vm.clickItem($event, item)\n },\n contextmenu: function($event) {\n $event.preventDefault()\n return _vm.openContextMenu($event, item)\n }\n }\n },\n [\n _c(\"div\", { staticClass: \"cover\" }, [\n _c(\n \"div\",\n { class: _vm._f(\"coverType\")(item) },\n [\n _c(\"img\", {\n class: _vm._f(\"iconType\")(item),\n attrs: {\n alt: \"folder\",\n src: _vm.getIconFile(item)\n }\n })\n ]\n ),\n item.is_dir && item.type == \"application\"\n ? _c(\n \"div\",\n { staticClass: \"friendly-name\" },\n [_vm._v(_vm._s(item.label))]\n )\n : _vm._e()\n ]),\n _c(\"div\", { staticClass: \"info\" }, [\n _c(\"p\", { staticClass: \"title\" }, [\n _vm._v(_vm._s(item.name))\n ]),\n _c(\"p\", { staticClass: \"desc\" }, [\n _vm._v(_vm._s(_vm._f(\"dateFmt\")(item.date)))\n ])\n ])\n ]\n )\n ],\n 1\n )\n ])\n ])\n ])\n ]\n )\n }),\n 0\n )\n ]),\n _c(\"context-menu\", {\n ref: \"ctxMenu\",\n on: {\n reload: function($event) {\n return _vm.$emit(\"reload\")\n }\n }\n })\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/filebrowser/components/GirdView.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/filebrowser/components/ListView.vue?vue&type=template&id=0bc52ece&": -/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/filebrowser/components/ListView.vue?vue&type=template&id=0bc52ece& ***! - \************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"node-list\" }, [\n _c(\"div\", { staticClass: \"table-thead\" }, [\n _vm.listData.length > 0\n ? _c(\"div\", { staticClass: \"tr-wrapper\" }, [\n _c(\"div\", { staticClass: \"tr\" }, [\n _c(\"div\", { staticClass: \"th\" }, [\n _vm._v(_vm._s(_vm.$t(\"Name\")))\n ]),\n _c(\"div\", { staticClass: \"th\" }, [\n _vm._v(_vm._s(_vm.$t(\"Date Modified\")))\n ]),\n _c(\"div\", { staticClass: \"th\" }, [_vm._v(_vm._s(_vm.$t(\"Size\")))])\n ])\n ])\n : _vm._e()\n ]),\n _c(\n \"div\",\n { staticClass: \"tbody\" },\n [\n _c(\n \"div\",\n {\n staticClass: \"scroll-container scrollbars-light is-relative\",\n on: {\n contextmenu: function($event) {\n $event.preventDefault()\n return _vm.openContextMenu.apply(null, arguments)\n }\n }\n },\n [\n _vm.listData.length == 0 && !_vm.isLoading\n ? _c(\n \"div\",\n {\n staticClass:\n \"is-flex is-align-items-center is-justify-content-center empty-container\"\n },\n [_vm._t(\"default\")],\n 2\n )\n : _vm._e(),\n _vm._l(_vm.listData, function(item, index) {\n return _c(\n \"div\",\n {\n key: \"list-\" + index + item.name,\n staticClass: \"tr-wrapper rdata\",\n attrs: { \"data-rel\": index }\n },\n [\n _c(\n \"div\",\n {\n staticClass: \"tr is-unselectable\",\n class: { isCutting: _vm.getCardState(item) },\n on: {\n \"!click\": function($event) {\n return _vm.clickItem($event, item)\n },\n contextmenu: function($event) {\n $event.preventDefault()\n return _vm.openContextMenu($event, item)\n }\n }\n },\n [\n _c(\"div\", { staticClass: \"td\" }, [\n _c(\"div\", { staticClass: \"cover\" }, [\n _c(\"div\", { class: _vm._f(\"coverType\")(item) }, [\n _c(\"img\", {\n class: _vm._f(\"iconType\")(item),\n attrs: {\n alt: \"folder\",\n src: _vm.getIconFile(item)\n }\n })\n ])\n ]),\n _c(\n \"p\",\n { staticClass: \"text\" },\n [\n _vm._v(\" \" + _vm._s(item.name) + \" \"),\n item.is_dir && item.type == \"application\"\n ? _c(\n \"b-tag\",\n { attrs: { type: \"is-primary is-light\" } },\n [_vm._v(_vm._s(item.label) + \" \")]\n )\n : _vm._e()\n ],\n 1\n ),\n _c(\n \"div\",\n { staticClass: \"action-wrapper\" },\n [\n _c(\"action-button\", {\n attrs: {\n cols: _vm.cols,\n index: index,\n item: item\n },\n on: {\n showDetailModal: function($event) {\n return _vm.$emit(\"showDetailModal\", item)\n },\n reload: function($event) {\n return _vm.$emit(\"reload\")\n }\n }\n })\n ],\n 1\n )\n ]),\n _c(\"div\", { staticClass: \"td\" }, [\n _vm._v(_vm._s(_vm._f(\"dateFmt\")(item.date)))\n ]),\n !item.is_dir\n ? _c(\"div\", { staticClass: \"td\" }, [\n _vm._v(_vm._s(_vm._f(\"renderSize\")(item.size)))\n ])\n : _c(\"div\", { staticClass: \"td\" })\n ]\n )\n ]\n )\n })\n ],\n 2\n ),\n _c(\"context-menu\", {\n ref: \"ctxMenu\",\n on: {\n reload: function($event) {\n return _vm.$emit(\"reload\")\n }\n }\n })\n ],\n 1\n )\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/filebrowser/components/ListView.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/filebrowser/modals/DetailModal.vue?vue&type=template&id=6b3ef366&": -/*!***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/filebrowser/modals/DetailModal.vue?vue&type=template&id=6b3ef366& ***! - \***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"modal-card\" }, [\n _c(\"header\", { staticClass: \"modal-card-head\" }, [\n _c(\"div\", { staticClass: \"flex1 is-flex \" }),\n _c(\"div\", { staticClass: \"is-flex is-align-items-center\" }, [\n _c(\n \"div\",\n {\n staticClass: \"is-flex is-align-items-center modal-close-container \"\n },\n [\n _c(\"button\", {\n staticClass: \"delete\",\n attrs: { type: \"button\" },\n on: {\n click: function($event) {\n return _vm.$emit(\"close\")\n }\n }\n })\n ]\n )\n ])\n ]),\n _c(\n \"section\",\n {\n staticClass:\n \"modal-card-body is-flex is-justify-content-center is-align-items-center\"\n },\n [\n _c(\"div\", { staticClass: \"node-card \" }, [\n _c(\"div\", { staticClass: \"cover is-unselectable\" }, [\n _c(\"div\", { class: _vm._f(\"coverType\")(_vm.item) }, [\n _c(\"img\", {\n class: _vm._f(\"iconType\")(_vm.item),\n attrs: { alt: \"folder\", src: _vm.getIconFile(_vm.item) }\n })\n ])\n ]),\n _c(\n \"div\",\n {\n staticClass:\n \"info mt-3 is-flex is-flex-direction-column is-justify-content-center\"\n },\n [\n _c(\"p\", { staticClass: \"title\" }, [\n _vm._v(_vm._s(_vm.item.name))\n ]),\n _c(\n \"div\",\n { staticClass: \"buttons is-justify-content-center\" },\n [\n _c(\n \"b-button\",\n {\n attrs: { type: \"is-primary\" },\n on: { click: _vm.download }\n },\n [\n _vm._v(\n _vm._s(_vm.$t(\"Download\")) +\n \" \" +\n _vm._s(_vm._f(\"renderSize\")(_vm.item.size))\n )\n ]\n )\n ],\n 1\n )\n ]\n )\n ])\n ]\n ),\n _c(\"footer\", {\n staticClass: \"modal-card-foot is-flex is-align-items-center \"\n })\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/filebrowser/modals/DetailModal.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/filebrowser/modals/NewFileModal.vue?vue&type=template&id=f46e0992&": -/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/filebrowser/modals/NewFileModal.vue?vue&type=template&id=f46e0992& ***! - \************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"modal-card\" }, [\n _c(\"header\", { staticClass: \"modal-card-head\" }, [\n _c(\"div\", { staticClass: \"flex1\" }, [\n _c(\"h3\", { staticClass: \"title is-4 has-text-weight-normal\" }, [\n _vm._v(_vm._s(_vm.$t(\"New File\")))\n ])\n ]),\n _c(\"div\", [\n _c(\"button\", {\n staticClass: \"delete\",\n attrs: { type: \"button\" },\n on: {\n click: function($event) {\n return _vm.$emit(\"close\")\n }\n }\n })\n ])\n ]),\n _c(\"section\", { staticClass: \"modal-card-body \" }, [\n _c(\n \"div\",\n { staticClass: \"node-card\" },\n [\n _c(\"div\", { staticClass: \"cover\" }, [\n _c(\"div\", { staticClass: \"folder-cover\" }, [\n _c(\"img\", {\n staticClass: \"folder-icon\",\n attrs: {\n alt: \"folder\",\n src: __webpack_require__(/*! @/assets/img/filebrowser/text-x-generic.svg */ \"./src/assets/img/filebrowser/text-x-generic.svg\")\n }\n })\n ])\n ]),\n _c(\n \"b-field\",\n {\n staticClass: \"mb-3 mt-5 has-text-light\",\n attrs: { type: _vm.errorType, message: _vm.errors, expanded: \"\" }\n },\n [\n _c(\"b-input\", {\n nativeOn: {\n keyup: function($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")\n ) {\n return null\n }\n return _vm.createFolder.apply(null, arguments)\n },\n input: function($event) {\n _vm.fileName = _vm.fileName.replace(/\\//g, \"\")\n }\n },\n model: {\n value: _vm.fileName,\n callback: function($$v) {\n _vm.fileName = $$v\n },\n expression: \"fileName\"\n }\n })\n ],\n 1\n )\n ],\n 1\n )\n ]),\n _c(\n \"footer\",\n { staticClass: \"modal-card-foot is-flex is-align-items-center\" },\n [\n _c(\"div\", { staticClass: \"flex1\" }),\n _c(\n \"div\",\n [\n _c(\"b-button\", {\n attrs: {\n label: _vm.$t(\"Submit\"),\n type: \"is-primary\",\n rounded: \"\",\n expaned: \"\"\n },\n on: { click: _vm.createFolder }\n })\n ],\n 1\n )\n ]\n )\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/filebrowser/modals/NewFileModal.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/filebrowser/modals/NewFolderModal.vue?vue&type=template&id=58981905&": -/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/filebrowser/modals/NewFolderModal.vue?vue&type=template&id=58981905& ***! - \**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"modal-card\" }, [\n _c(\"header\", { staticClass: \"modal-card-head\" }, [\n _c(\"div\", { staticClass: \"flex1\" }, [\n _c(\"h3\", { staticClass: \"title is-4 has-text-weight-normal\" }, [\n _vm._v(_vm._s(_vm.$t(\"New Folder\")))\n ])\n ]),\n _c(\"div\", [\n _c(\"button\", {\n staticClass: \"delete\",\n attrs: { type: \"button\" },\n on: {\n click: function($event) {\n return _vm.$emit(\"close\")\n }\n }\n })\n ])\n ]),\n _c(\"section\", { staticClass: \"modal-card-body \" }, [\n _c(\n \"div\",\n { staticClass: \"node-card\" },\n [\n _c(\"div\", { staticClass: \"cover\" }, [\n _c(\"div\", { staticClass: \"folder-cover\" }, [\n _c(\"img\", {\n staticClass: \"folder-icon\",\n attrs: {\n alt: \"folder\",\n src: __webpack_require__(/*! @/assets/img/filebrowser/folder-default.svg */ \"./src/assets/img/filebrowser/folder-default.svg\")\n }\n })\n ])\n ]),\n _c(\n \"b-field\",\n {\n staticClass: \"mb-3 mt-5 has-text-light\",\n attrs: { type: _vm.errorType, message: _vm.errors, expanded: \"\" }\n },\n [\n _c(\"b-input\", {\n nativeOn: {\n keyup: function($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")\n ) {\n return null\n }\n return _vm.createFolder.apply(null, arguments)\n },\n input: function($event) {\n _vm.folderName = _vm.folderName.replace(/\\//g, \"\")\n }\n },\n model: {\n value: _vm.folderName,\n callback: function($$v) {\n _vm.folderName = $$v\n },\n expression: \"folderName\"\n }\n })\n ],\n 1\n )\n ],\n 1\n )\n ]),\n _c(\n \"footer\",\n { staticClass: \"modal-card-foot is-flex is-align-items-center\" },\n [\n _c(\"div\", { staticClass: \"flex1\" }),\n _c(\n \"div\",\n [\n _c(\"b-button\", {\n attrs: {\n label: _vm.$t(\"Submit\"),\n type: \"is-primary\",\n rounded: \"\",\n expaned: \"\"\n },\n on: { click: _vm.createFolder }\n })\n ],\n 1\n )\n ]\n )\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/filebrowser/modals/NewFolderModal.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/filebrowser/modals/RenameModal.vue?vue&type=template&id=63bd4f19&": -/*!***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/filebrowser/modals/RenameModal.vue?vue&type=template&id=63bd4f19& ***! - \***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"modal-card\" }, [\n _c(\"header\", { staticClass: \"modal-card-head\" }, [\n _c(\"div\", { staticClass: \"flex1\" }, [\n _c(\"h3\", { staticClass: \"title is-4 has-text-weight-normal\" }, [\n _vm._v(_vm._s(_vm.$t(\"Rename\")))\n ])\n ]),\n _c(\"div\", [\n _c(\"button\", {\n staticClass: \"delete\",\n attrs: { type: \"button\" },\n on: {\n click: function($event) {\n return _vm.$emit(\"close\")\n }\n }\n })\n ])\n ]),\n _c(\"section\", { staticClass: \"modal-card-body \" }, [\n _c(\n \"div\",\n { staticClass: \"node-card\" },\n [\n _c(\"div\", { staticClass: \"cover\" }, [\n _c(\"div\", { class: _vm._f(\"coverType\")(_vm.item) }, [\n _c(\"img\", {\n class: _vm._f(\"iconType\")(_vm.item),\n attrs: { alt: \"folder\", src: _vm.getIconFile(_vm.item) }\n })\n ])\n ]),\n _c(\n \"b-field\",\n {\n staticClass: \"mb-3 mt-5 has-text-light\",\n attrs: { type: _vm.errorType, message: _vm.errors, expanded: \"\" }\n },\n [\n _c(\"b-input\", {\n ref: \"rinput\",\n nativeOn: {\n keyup: function($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")\n ) {\n return null\n }\n return _vm.saveNewName.apply(null, arguments)\n },\n input: function($event) {\n _vm.fileName = _vm.fileName.replace(/\\//g, \"\")\n }\n },\n model: {\n value: _vm.fileName,\n callback: function($$v) {\n _vm.fileName = $$v\n },\n expression: \"fileName\"\n }\n })\n ],\n 1\n )\n ],\n 1\n )\n ]),\n _c(\n \"footer\",\n { staticClass: \"modal-card-foot is-flex is-align-items-center\" },\n [\n _c(\"div\", { staticClass: \"flex1\" }),\n _c(\n \"div\",\n [\n _c(\"b-button\", {\n attrs: {\n label: _vm.$t(\"Submit\"),\n type: \"is-primary\",\n rounded: \"\",\n expaned: \"\"\n },\n on: { click: _vm.saveNewName }\n })\n ],\n 1\n )\n ]\n )\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/filebrowser/modals/RenameModal.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/filebrowser/sidebar/TreeList.vue?vue&type=template&id=17f8613c&": -/*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/filebrowser/sidebar/TreeList.vue?vue&type=template&id=17f8613c& ***! - \*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"ul\",\n _vm._l(_vm.initFolders, function(item) {\n return _c(\"li\", { key: item.path }, [\n _c(\n \"div\",\n {\n staticClass: \"is-flex list-item new-list-item\",\n class: { active: _vm.checkActive(item) },\n on: {\n click: function($event) {\n return _vm.open(item.path)\n }\n }\n },\n [\n _c(\n \"div\",\n { staticClass: \"cover mr-4 is-flex-shrink-0\" },\n [_c(\"b-icon\", { attrs: { icon: item.icon } })],\n 1\n ),\n _c(\"span\", [_vm._v(_vm._s(item.name))])\n ]\n )\n ])\n }),\n 0\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/filebrowser/sidebar/TreeList.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/filebrowser/uploader/components/btn.vue?vue&type=template&id=8bcb673e&": -/*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/filebrowser/uploader/components/btn.vue?vue&type=template&id=8bcb673e& ***! - \****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"label\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.support,\n expression: \"support\"\n }\n ],\n ref: \"btn\",\n staticClass: \"uploader-btn\"\n },\n [_vm._t(\"default\")],\n 2\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/filebrowser/uploader/components/btn.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/filebrowser/uploader/components/drop.vue?vue&type=template&id=1749538c&": -/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/filebrowser/uploader/components/drop.vue?vue&type=template&id=1749538c& ***! - \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.support,\n expression: \"support\"\n }\n ],\n ref: \"drop\",\n staticClass: \"uploader-drop\",\n class: _vm.dropClass\n },\n [_vm._t(\"default\")],\n 2\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/filebrowser/uploader/components/drop.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/filebrowser/uploader/components/file.vue?vue&type=template&id=3b67e372&": -/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/filebrowser/uploader/components/file.vue?vue&type=template&id=3b67e372& ***! - \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"uploader-file\", attrs: { status: _vm.status } },\n [\n _vm._t(\n \"default\",\n function() {\n return [\n _c(\"div\", { staticClass: \"task is-flex\" }, [\n _vm.status != \"success\"\n ? _c(\"div\", {\n staticClass: \"task-progress normal task-progress\",\n class: _vm.progressingClass,\n style: _vm.progressStyle\n })\n : _vm._e(),\n _c(\"div\", { staticClass: \"task-info\" }, [\n _c(\"div\", { staticClass: \"cover\" }, [\n _c(\"div\", { staticClass: \"folder-cover\" }, [\n _c(\"img\", {\n staticClass: \"folder-icon\",\n attrs: { alt: \"folder\", src: _vm.getIconFile(_vm.file) }\n })\n ])\n ]),\n _c(\"div\", { staticClass: \"task-info-wrapper\" }, [\n _c(\"span\", { staticClass: \"task-file-name\" }, [\n _vm._v(_vm._s(_vm.file.name))\n ]),\n _c(\"div\", { staticClass: \"task-desc-wrapper\" }, [\n _vm.status != \"success\"\n ? _c(\"span\", { staticClass: \"task-desc\" }, [\n _vm._v(\n _vm._s(\n _vm._f(\"renderSize\")(_vm.size * _vm.progress)\n ) +\n \"/\" +\n _vm._s(_vm.formatedSize)\n )\n ])\n : _c(\"span\", { staticClass: \"task-desc\" }, [\n _vm._v(_vm._s(_vm.formatedSize))\n ]),\n _c(\"span\", { staticClass: \"task-dot\" }),\n _c(\"span\", { staticClass: \"task-desc\" }, [\n _vm._v(\" \" + _vm._s(_vm.$t(_vm.statusText)) + \" \")\n ])\n ])\n ])\n ]),\n _c(\"div\", { staticClass: \"action\" }, [\n _vm.status != \"success\"\n ? _c(\n \"span\",\n {\n staticClass: \"action-icon icon\",\n attrs: { \"data-role\": \"icon\" },\n on: { click: _vm.remove }\n },\n [\n _c(\"b-icon\", {\n attrs: { icon: \"close\", size: \"is-small\" }\n })\n ],\n 1\n )\n : _vm._e(),\n _vm.status == \"error\"\n ? _c(\n \"span\",\n {\n staticClass: \"action-icon icon\",\n attrs: { \"data-role\": \"icon\" },\n on: { click: _vm.retry }\n },\n [\n _c(\"b-icon\", {\n attrs: { icon: \"replay\", size: \"is-small\" }\n })\n ],\n 1\n )\n : _vm._e(),\n _vm.status == \"paused\"\n ? _c(\n \"span\",\n {\n staticClass: \"action-icon icon\",\n attrs: { \"data-role\": \"icon\" },\n on: { click: _vm.resume }\n },\n [\n _c(\"b-icon\", {\n attrs: { icon: \"play\", size: \"is-small\" }\n })\n ],\n 1\n )\n : _vm._e(),\n _vm.status == \"uploading\"\n ? _c(\n \"span\",\n {\n staticClass: \"action-icon icon\",\n attrs: { \"data-role\": \"icon\" },\n on: { click: _vm.pause }\n },\n [\n _c(\"b-icon\", {\n attrs: { icon: \"pause\", size: \"is-small\" }\n })\n ],\n 1\n )\n : _vm._e()\n ])\n ])\n ]\n },\n {\n file: _vm.file,\n list: _vm.list,\n status: _vm.status,\n paused: _vm.paused,\n error: _vm.error,\n response: _vm.response,\n averageSpeed: _vm.averageSpeed,\n formatedAverageSpeed: _vm.formatedAverageSpeed,\n currentSpeed: _vm.currentSpeed,\n isComplete: _vm.isComplete,\n isUploading: _vm.isUploading,\n size: _vm.size,\n formatedSize: _vm.formatedSize,\n uploadedSize: _vm.uploadedSize,\n progress: _vm.progress,\n progressStyle: _vm.progressStyle,\n progressingClass: _vm.progressingClass,\n timeRemaining: _vm.timeRemaining,\n formatedTimeRemaining: _vm.formatedTimeRemaining,\n type: _vm.type,\n extension: _vm.extension,\n fileCategory: _vm.fileCategory\n }\n )\n ],\n 2\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/filebrowser/uploader/components/file.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/filebrowser/uploader/components/files.vue?vue&type=template&id=6ae15bbc&": -/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/filebrowser/uploader/components/files.vue?vue&type=template&id=6ae15bbc& ***! - \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"uploader-files\" },\n [\n _vm._t(\n \"default\",\n function() {\n return [\n _c(\n \"ul\",\n _vm._l(_vm.files, function(file) {\n return _c(\n \"li\",\n { key: file.id },\n [_c(\"uploader-file\", { attrs: { file: file } })],\n 1\n )\n }),\n 0\n )\n ]\n },\n { files: _vm.files }\n )\n ],\n 2\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/filebrowser/uploader/components/files.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/filebrowser/uploader/components/list.vue?vue&type=template&id=5e586869&": -/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/filebrowser/uploader/components/list.vue?vue&type=template&id=5e586869& ***! - \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"uploader-list\" },\n [\n _vm._t(\n \"default\",\n function() {\n return [\n _c(\n \"ul\",\n _vm._l(_vm.fileList, function(file) {\n return _c(\n \"li\",\n { key: file.id },\n [_c(\"uploader-file\", { attrs: { file: file, list: true } })],\n 1\n )\n }),\n 0\n )\n ]\n },\n { fileList: _vm.fileList }\n )\n ],\n 2\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/filebrowser/uploader/components/list.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/filebrowser/uploader/components/unsupport.vue?vue&type=template&id=2ad2de5b&": -/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/filebrowser/uploader/components/unsupport.vue?vue&type=template&id=2ad2de5b& ***! - \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: !_vm.support,\n expression: \"!support\"\n }\n ],\n staticClass: \"uploader-unsupport\"\n },\n [\n _vm._t(\"default\", function() {\n return [_vm._m(0)]\n })\n ],\n 2\n )\n}\nvar staticRenderFns = [\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"p\", [\n _vm._v(\n \" Your browser, unfortunately, is not supported by Uploader.js. The library requires support for \"\n ),\n _c(\"a\", { attrs: { href: \"http://www.w3.org/TR/FileAPI/\" } }, [\n _vm._v(\"the HTML5 File API\")\n ]),\n _vm._v(\" along with \"),\n _c(\n \"a\",\n {\n attrs: {\n href: \"http://www.w3.org/TR/FileAPI/#normalization-of-params\"\n }\n },\n [_vm._v(\"file slicing\")]\n ),\n _vm._v(\". \")\n ])\n }\n]\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/filebrowser/uploader/components/unsupport.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/filebrowser/uploader/components/uploader.vue?vue&type=template&id=5600c68e&": -/*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/filebrowser/uploader/components/uploader.vue?vue&type=template&id=5600c68e& ***! - \*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"uploader\" },\n [\n _vm._t(\n \"default\",\n function() {\n return [\n _c(\"uploader-unsupport\"),\n _c(\n \"uploader-drop\",\n [\n _c(\"p\", [_vm._v(\"Drop files here to upload or\")]),\n _c(\"uploader-btn\", [_vm._v(\"select files\")]),\n _c(\"uploader-btn\", { attrs: { directory: true } }, [\n _vm._v(\"select folder\")\n ])\n ],\n 1\n ),\n _c(\"uploader-list\")\n ]\n },\n { files: _vm.files, fileList: _vm.fileList, started: _vm.started }\n )\n ],\n 2\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/filebrowser/uploader/components/uploader.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/filebrowser/viewers/CodeEditor.vue?vue&type=template&id=7784315b&": -/*!***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/filebrowser/viewers/CodeEditor.vue?vue&type=template&id=7784315b& ***! - \***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"overlay\" }, [\n _c(\"header\", { staticClass: \"modal-card-head\" }, [\n _c(\"div\", { staticClass: \"flex1 is-flex \" }, [\n _c(\"h3\", { staticClass: \"title is-5\" }, [\n _vm._v(_vm._s(_vm.$t(\"Code Editor\")))\n ])\n ]),\n _c(\n \"div\",\n { staticClass: \"is-flex is-align-items-center\" },\n [\n _c(\"b-button\", {\n staticClass: \"mr-3\",\n attrs: {\n \"icon-left\": \"content-save\",\n type: \"is-dark\",\n size: \"is-small\",\n label: _vm.$t(\"Save\"),\n rounded: \"\"\n },\n on: {\n click: function($event) {\n return _vm.saveFile(false)\n }\n }\n }),\n _c(\"b-button\", {\n staticClass: \"mr-2\",\n attrs: {\n \"icon-left\": \"download\",\n type: \"is-primary\",\n size: \"is-small\",\n label: _vm.$t(\"Download\"),\n rounded: \"\"\n },\n on: { click: _vm.download }\n }),\n _c(\n \"div\",\n {\n staticClass:\n \"is-flex is-align-items-center modal-close-container close-btn modal-close-container-line\"\n },\n [\n _c(\"button\", {\n staticClass: \"delete\",\n attrs: { type: \"button\" },\n on: { click: _vm.close }\n })\n ]\n )\n ],\n 1\n )\n ]),\n _c(\n \"div\",\n { staticClass: \"file-path-bread\" },\n [\n _c(\n \"b-breadcrumb\",\n { attrs: { size: \"is-small\" } },\n _vm._l(_vm.pathArray, function(item, index) {\n return _c(\n \"b-breadcrumb-item\",\n { key: \"f-\" + index, attrs: { active: \"\" } },\n [_vm._v(_vm._s(item))]\n )\n }),\n 1\n )\n ],\n 1\n ),\n _c(\n \"div\",\n {\n staticClass:\n \"is-flex is-justify-content-center is-align-items-center is-flex-grow-1 v-container code\"\n },\n [\n _c(\"codemirror\", {\n ref: \"cmEditor\",\n attrs: { options: _vm.cmOptions },\n on: { input: _vm.onCmCodeChange, ready: _vm.onCmReady },\n model: {\n value: _vm.code,\n callback: function($$v) {\n _vm.code = $$v\n },\n expression: \"code\"\n }\n })\n ],\n 1\n )\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/filebrowser/viewers/CodeEditor.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/filebrowser/viewers/ImageViewer.vue?vue&type=template&id=5973f308&": -/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/filebrowser/viewers/ImageViewer.vue?vue&type=template&id=5973f308& ***! - \************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"overlay\" }, [\n _c(\"header\", { staticClass: \"modal-card-head\" }, [\n _c(\"div\", { staticClass: \"flex1 is-flex \" }, [\n _c(\"h3\", { staticClass: \"title is-5 one-line\" }, [\n _vm._v(_vm._s(_vm.item.name))\n ])\n ]),\n _c(\n \"div\",\n { staticClass: \"is-flex is-align-items-center\" },\n [\n _c(\"b-button\", {\n staticClass: \"mr-2\",\n attrs: {\n \"icon-left\": \"download\",\n type: \"is-primary\",\n size: \"is-small\",\n label: _vm.$t(\"Download\"),\n rounded: \"\"\n },\n on: { click: _vm.download }\n }),\n _c(\n \"div\",\n {\n staticClass:\n \"is-flex is-align-items-center modal-close-container close-btn modal-close-container-line\"\n },\n [\n _c(\"button\", {\n staticClass: \"delete\",\n attrs: { type: \"button\" },\n on: { click: _vm.close }\n })\n ]\n )\n ],\n 1\n )\n ]),\n _c(\n \"div\",\n {\n staticClass:\n \"is-flex is-justify-content-center is-align-items-center is-flex-grow-1 v-container video\"\n },\n [\n _c(\"div\", {\n staticClass: \"image-container\",\n style: { backgroundImage: \"url(\" + _vm.bgUrl + \")\" }\n })\n ]\n ),\n _c(\"div\", { staticClass: \"v-footer is-flex is-justify-content-center\" })\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/filebrowser/viewers/ImageViewer.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/filebrowser/viewers/PdfViewer.vue?vue&type=template&id=bd38d1da&": -/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/filebrowser/viewers/PdfViewer.vue?vue&type=template&id=bd38d1da& ***! - \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"overlay\" },\n [\n _c(\"b-loading\", {\n attrs: { \"is-full-page\": false },\n model: {\n value: _vm.isLoading,\n callback: function($$v) {\n _vm.isLoading = $$v\n },\n expression: \"isLoading\"\n }\n }),\n _c(\"header\", { staticClass: \"modal-card-head\" }, [\n _c(\"div\", { staticClass: \"flex1 is-flex \" }, [\n _c(\"h3\", { staticClass: \"title is-5 one-line\" }, [\n _vm._v(_vm._s(_vm.item.name))\n ])\n ]),\n _c(\n \"div\",\n { staticClass: \"is-flex is-align-items-center\" },\n [\n _c(\"b-button\", {\n staticClass: \"mr-2\",\n attrs: {\n \"icon-left\": \"download\",\n type: \"is-primary\",\n size: \"is-small\",\n label: _vm.$t(\"Download\"),\n rounded: \"\"\n },\n on: { click: _vm.download }\n }),\n _c(\n \"div\",\n {\n staticClass:\n \"is-flex is-align-items-center modal-close-container close-btn modal-close-container-line\"\n },\n [\n _c(\"button\", {\n staticClass: \"delete\",\n attrs: { type: \"button\" },\n on: { click: _vm.close }\n })\n ]\n )\n ],\n 1\n )\n ]),\n _c(\n \"div\",\n {\n staticClass:\n \"is-flex is-justify-content-center is-align-items-center is-flex-grow-1 v-container video\"\n },\n [\n _c(\n \"div\",\n { staticClass: \"pdf-container scrollbars-light\" },\n _vm._l(_vm.numPages, function(i) {\n return _c(\"pdf\", { key: i, attrs: { src: _vm.src, page: i } })\n }),\n 1\n )\n ]\n ),\n _c(\"div\", { staticClass: \"v-footer is-flex is-justify-content-center\" })\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/filebrowser/viewers/PdfViewer.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/filebrowser/viewers/VideoPlayer.vue?vue&type=template&id=366472eb&": -/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/filebrowser/viewers/VideoPlayer.vue?vue&type=template&id=366472eb& ***! - \************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"overlay\" }, [\n _c(\"header\", { staticClass: \"modal-card-head\" }, [\n _c(\"div\", { staticClass: \"flex1 is-flex \" }, [\n _c(\"h3\", { staticClass: \"title is-5 one-line\" }, [\n _vm._v(_vm._s(_vm.item.name))\n ])\n ]),\n _c(\n \"div\",\n { staticClass: \"is-flex is-align-items-center\" },\n [\n _c(\"b-button\", {\n staticClass: \"mr-2\",\n attrs: {\n \"icon-left\": \"download\",\n type: \"is-primary\",\n size: \"is-small\",\n label: _vm.$t(\"Download\"),\n rounded: \"\"\n },\n on: { click: _vm.download }\n }),\n _c(\n \"div\",\n {\n staticClass:\n \"is-flex is-align-items-center modal-close-container close-btn modal-close-container-line\"\n },\n [\n _c(\"button\", {\n staticClass: \"delete\",\n attrs: { type: \"button\" },\n on: { click: _vm.close }\n })\n ]\n )\n ],\n 1\n )\n ]),\n _c(\n \"div\",\n {\n staticClass:\n \"is-flex is-justify-content-center is-align-items-center is-flex-grow-1 v-container video\"\n },\n [\n _c(\n \"div\",\n { staticClass: \"video-container\" },\n [\n _vm.isVideo\n ? _c(\"vue-plyr\", { key: \"video-player\", ref: \"plyr\" }, [\n _c(\n \"video\",\n {\n attrs: { controls: \"\", crossorigin: \"\", playsinline: \"\" }\n },\n [\n _c(\"source\", {\n attrs: {\n src: _vm.getFileUrl(_vm.item),\n type: \"video/mp4\"\n }\n })\n ]\n )\n ])\n : _vm._e(),\n _vm.isAudio\n ? _c(\"vue-plyr\", { key: \"audio-player\", ref: \"plyr\" }, [\n _c(\n \"audio\",\n {\n attrs: { controls: \"\", crossorigin: \"\", playsinline: \"\" }\n },\n [\n _c(\"source\", {\n attrs: {\n src: _vm.getFileUrl(_vm.item),\n type: \"audio/\" + _vm.ext\n }\n })\n ]\n )\n ])\n : _vm._e()\n ],\n 1\n )\n ]\n ),\n _c(\"div\", { staticClass: \"v-footer is-flex is-justify-content-center\" })\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/filebrowser/viewers/VideoPlayer.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/forms/CommandsInput.vue?vue&type=template&id=9eacdd7c&": -/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/forms/CommandsInput.vue?vue&type=template&id=9eacdd7c& ***! - \************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"mb-5\" },\n [\n _c(\n \"div\",\n { staticClass: \"field is-flex is-align-items-center mb-2\" },\n [\n _c(\"label\", { staticClass: \"label mb-0 flex1\" }, [\n _vm._v(_vm._s(_vm.label))\n ]),\n _c(\n \"b-button\",\n {\n attrs: { \"icon-left\": \"plus\", size: \"is-small\", rounded: \"\" },\n on: { click: _vm.addItem }\n },\n [_vm._v(_vm._s(_vm.$t(\"Add\")))]\n )\n ],\n 1\n ),\n _vm.vdata.length == 0\n ? _c(\n \"div\",\n { staticClass: \"is-flex is-align-items-center mb-5 info\" },\n [\n _c(\"b-icon\", {\n staticClass: \"mr-2 \",\n attrs: { icon: \"information\", size: \"is-small\" }\n }),\n _c(\"span\", [_vm._v(\" \" + _vm._s(_vm.message) + \" \")])\n ],\n 1\n )\n : _vm._e(),\n _vm._l(_vm.vdata, function(item, index) {\n return _c(\n \"div\",\n { key: \"port\" + index, staticClass: \"port-item\" },\n [\n _c(\"b-icon\", {\n staticClass: \"is-clickable\",\n attrs: { icon: \"close\", size: \"is-small\" },\n nativeOn: {\n click: function($event) {\n return _vm.removeItem(index)\n }\n }\n }),\n _c(\n \"b-field\",\n { attrs: { expanded: \"\" } },\n [\n _c(\"b-input\", {\n attrs: { placeholder: \"Commands\", expanded: \"\" },\n on: { input: _vm.handleInput },\n model: {\n value: _vm.vdata[index],\n callback: function($$v) {\n _vm.$set(_vm.vdata, index, $$v)\n },\n expression: \"vdata[index]\"\n }\n })\n ],\n 1\n )\n ],\n 1\n )\n })\n ],\n 2\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/forms/CommandsInput.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/forms/EnvInputGroup.vue?vue&type=template&id=1b52fcc2&": -/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/forms/EnvInputGroup.vue?vue&type=template&id=1b52fcc2& ***! - \************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"mb-5\" },\n [\n _c(\n \"div\",\n { staticClass: \"field is-flex is-align-items-center mb-2\" },\n [\n _c(\"label\", { staticClass: \"label mb-0 flex1\" }, [\n _vm._v(_vm._s(_vm.label))\n ]),\n _c(\n \"b-button\",\n {\n attrs: { \"icon-left\": \"plus\", size: \"is-small\", rounded: \"\" },\n on: { click: _vm.addItem }\n },\n [_vm._v(_vm._s(_vm.$t(\"Add\")))]\n )\n ],\n 1\n ),\n _vm.vdata.length == 0\n ? _c(\n \"div\",\n { staticClass: \"is-flex is-align-items-center mb-5 info\" },\n [\n _c(\"b-icon\", {\n staticClass: \"mr-2 \",\n attrs: { icon: \"information\", size: \"is-small\" }\n }),\n _c(\"span\", [_vm._v(\" \" + _vm._s(_vm.message) + \" \")])\n ],\n 1\n )\n : _vm._e(),\n _vm._l(_vm.vdata, function(item, index) {\n return _c(\n \"div\",\n { key: \"port\" + index, staticClass: \"port-item\" },\n [\n _c(\"b-icon\", {\n staticClass: \"is-clickable\",\n attrs: { icon: \"close\", size: \"is-small\" },\n nativeOn: {\n click: function($event) {\n return _vm.removeItem(index)\n }\n }\n }),\n index < 1\n ? [\n _c(\n \"b-field\",\n { attrs: { grouped: \"\" } },\n [\n _c(\n \"b-field\",\n { attrs: { label: _vm.$t(_vm.name1), expanded: \"\" } },\n [\n _c(\"b-input\", {\n attrs: {\n placeholder: _vm.$t(_vm.name1),\n expanded: \"\"\n },\n on: { input: _vm.handleInput },\n model: {\n value: item.container,\n callback: function($$v) {\n _vm.$set(item, \"container\", $$v)\n },\n expression: \"item.container\"\n }\n })\n ],\n 1\n ),\n _c(\n \"b-field\",\n { attrs: { label: _vm.$t(_vm.name2), expanded: \"\" } },\n [\n _c(\"b-input\", {\n attrs: {\n placeholder: _vm.$t(_vm.name2),\n expanded: \"\"\n },\n on: { input: _vm.handleInput },\n model: {\n value: item.host,\n callback: function($$v) {\n _vm.$set(item, \"host\", $$v)\n },\n expression: \"item.host\"\n }\n })\n ],\n 1\n )\n ],\n 1\n )\n ]\n : [\n _c(\n \"b-field\",\n { attrs: { grouped: \"\" } },\n [\n _c(\"b-input\", {\n attrs: { placeholder: _vm.$t(_vm.name1), expanded: \"\" },\n on: { input: _vm.handleInput },\n model: {\n value: item.container,\n callback: function($$v) {\n _vm.$set(item, \"container\", $$v)\n },\n expression: \"item.container\"\n }\n }),\n _c(\"b-input\", {\n attrs: { placeholder: _vm.$t(_vm.name2), expanded: \"\" },\n on: { input: _vm.handleInput },\n model: {\n value: item.host,\n callback: function($$v) {\n _vm.$set(item, \"host\", $$v)\n },\n expression: \"item.host\"\n }\n })\n ],\n 1\n )\n ]\n ],\n 2\n )\n })\n ],\n 2\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/forms/EnvInputGroup.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/forms/IconInput.vue?vue&type=template&id=062d0271&": -/*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/forms/IconInput.vue?vue&type=template&id=062d0271& ***! - \********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"b-input\", {\n attrs: {\n placeholder: _vm.placeholder,\n expanded: \"\",\n \"icon-right\": \"image-filter-center-focus-strong\",\n \"icon-right-clickable\": \"\"\n },\n on: { input: _vm.handleInput, \"icon-right-click\": _vm.selectFile },\n model: {\n value: _vm.path,\n callback: function($$v) {\n _vm.path = $$v\n },\n expression: \"path\"\n }\n })\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/forms/IconInput.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/forms/ImportPanel.vue?vue&type=template&id=03d0dfff&": -/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/forms/ImportPanel.vue?vue&type=template&id=03d0dfff& ***! - \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"modal-card\" }, [\n _c(\"header\", { staticClass: \"modal-card-head\" }, [\n _c(\"div\", { staticClass: \"flex1\" }, [\n _c(\"h3\", { staticClass: \"title is-4 has-text-weight-normal\" }, [\n _vm._v(_vm._s(_vm.$t(\"Import\")))\n ])\n ])\n ]),\n _c(\n \"section\",\n { staticClass: \"modal-card-body\" },\n [\n _c(\n \"b-tabs\",\n {\n model: {\n value: _vm.activeTab,\n callback: function($$v) {\n _vm.activeTab = $$v\n },\n expression: \"activeTab\"\n }\n },\n [\n _c(\n \"b-tab-item\",\n { attrs: { label: \"Docker CLI\" } },\n [\n _c(\n \"b-field\",\n {\n attrs: {\n type: { \"is-danger\": _vm.parseError },\n message: _vm.errors\n }\n },\n [\n _c(\"b-input\", {\n staticClass: \"import-area\",\n attrs: { maxlength: \"800\", type: \"textarea\" },\n model: {\n value: _vm.dockerCliCommands,\n callback: function($$v) {\n _vm.dockerCliCommands = $$v\n },\n expression: \"dockerCliCommands\"\n }\n })\n ],\n 1\n )\n ],\n 1\n ),\n _c(\n \"b-tab-item\",\n { attrs: { label: _vm.$t(\"AppFile\") } },\n [\n _c(\n \"b-field\",\n {\n attrs: {\n type: { \"is-danger\": _vm.parseError },\n message: _vm.errors\n }\n },\n [\n _c(\n \"b-upload\",\n {\n attrs: {\n \"drag-drop\": \"\",\n expanded: \"\",\n accept: \"application/json\"\n },\n on: { input: _vm.onSelect },\n model: {\n value: _vm.dropFiles,\n callback: function($$v) {\n _vm.dropFiles = $$v\n },\n expression: \"dropFiles\"\n }\n },\n [\n _c(\"section\", { staticClass: \"section\" }, [\n _c(\n \"div\",\n { staticClass: \"content has-text-centered\" },\n [\n _c(\n \"p\",\n [\n _c(\"b-icon\", {\n attrs: { icon: \"upload\", size: \"is-large\" }\n })\n ],\n 1\n ),\n _c(\"p\", [_vm._v(_vm._s(_vm.dropText))])\n ]\n )\n ])\n ]\n )\n ],\n 1\n )\n ],\n 1\n )\n ],\n 1\n )\n ],\n 1\n ),\n _c(\n \"footer\",\n { staticClass: \"modal-card-foot is-flex is-align-items-center\" },\n [\n _c(\"div\", { staticClass: \"flex1\" }),\n _c(\n \"div\",\n [\n _c(\"b-button\", {\n attrs: { label: _vm.$t(\"Cancel\"), rounded: \"\" },\n on: {\n click: function($event) {\n return _vm.$emit(\"close\")\n }\n }\n }),\n _c(\"b-button\", {\n attrs: {\n label: _vm.$t(\"Submit\"),\n type: \"is-primary\",\n rounded: \"\"\n },\n on: { click: _vm.emitSubmit }\n })\n ],\n 1\n )\n ]\n )\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/forms/ImportPanel.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/forms/InputGroup.vue?vue&type=template&id=22835c65&": -/*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/forms/InputGroup.vue?vue&type=template&id=22835c65& ***! - \*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"mb-5\" },\n [\n _c(\n \"div\",\n { staticClass: \"field is-flex is-align-items-center mb-2\" },\n [\n _c(\"label\", { staticClass: \"label mb-0 flex1\" }, [\n _vm._v(_vm._s(_vm.label))\n ]),\n _c(\n \"b-button\",\n {\n attrs: { \"icon-left\": \"plus\", size: \"is-small\", rounded: \"\" },\n on: { click: _vm.addItem }\n },\n [_vm._v(_vm._s(_vm.$t(\"Add\")))]\n )\n ],\n 1\n ),\n _vm.vdata.length == 0\n ? _c(\n \"div\",\n { staticClass: \"is-flex is-align-items-center mb-5 info\" },\n [\n _c(\"b-icon\", {\n staticClass: \"mr-2 \",\n attrs: { icon: \"information\", size: \"is-small\" }\n }),\n _c(\"span\", [_vm._v(\" \" + _vm._s(_vm.message) + \" \")])\n ],\n 1\n )\n : _vm._e(),\n _vm._l(_vm.vdata, function(item, index) {\n return _c(\n \"div\",\n { key: \"port\" + index, staticClass: \"port-item\" },\n [\n _c(\"b-icon\", {\n staticClass: \"is-clickable\",\n attrs: { icon: \"close\", size: \"is-small\" },\n nativeOn: {\n click: function($event) {\n return _vm.removeItem(index)\n }\n }\n }),\n index < 1\n ? [\n _c(\n \"b-field\",\n { attrs: { grouped: \"\" } },\n [\n _c(\n \"b-field\",\n { attrs: { label: _vm.$t(_vm.name2), expanded: \"\" } },\n [\n _c(\"icon-input\", {\n attrs: {\n placeholder: _vm.$t(_vm.name2),\n type: _vm.type,\n expanded: \"\"\n },\n on: { input: _vm.handleInput },\n model: {\n value: item.host,\n callback: function($$v) {\n _vm.$set(item, \"host\", $$v)\n },\n expression: \"item.host\"\n }\n })\n ],\n 1\n ),\n _c(\n \"b-field\",\n { attrs: { label: _vm.$t(_vm.name1), expanded: \"\" } },\n [\n _c(\"b-input\", {\n attrs: {\n placeholder: _vm.$t(_vm.name1),\n expanded: \"\"\n },\n on: { input: _vm.handleInput },\n model: {\n value: item.container,\n callback: function($$v) {\n _vm.$set(item, \"container\", $$v)\n },\n expression: \"item.container\"\n }\n })\n ],\n 1\n )\n ],\n 1\n )\n ]\n : [\n _c(\n \"b-field\",\n { attrs: { grouped: \"\" } },\n [\n _c(\n \"b-field\",\n { attrs: { expanded: \"\" } },\n [\n _c(\"icon-input\", {\n attrs: {\n placeholder: _vm.$t(_vm.name2),\n type: _vm.type,\n expanded: \"\"\n },\n on: { input: _vm.handleInput },\n model: {\n value: item.host,\n callback: function($$v) {\n _vm.$set(item, \"host\", $$v)\n },\n expression: \"item.host\"\n }\n })\n ],\n 1\n ),\n _c(\n \"b-field\",\n { attrs: { expanded: \"\" } },\n [\n _c(\"b-input\", {\n attrs: {\n placeholder: _vm.$t(_vm.name1),\n expanded: \"\"\n },\n on: { input: _vm.handleInput },\n model: {\n value: item.container,\n callback: function($$v) {\n _vm.$set(item, \"container\", $$v)\n },\n expression: \"item.container\"\n }\n })\n ],\n 1\n )\n ],\n 1\n )\n ]\n ],\n 2\n )\n })\n ],\n 2\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/forms/InputGroup.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/forms/Ports.vue?vue&type=template&id=431c319c&": -/*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/forms/Ports.vue?vue&type=template&id=431c319c& ***! - \****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"mb-5\" },\n [\n _c(\n \"div\",\n { staticClass: \"field is-flex is-align-items-center mb-2\" },\n [\n _c(\"label\", { staticClass: \"label mb-0 flex1\" }, [\n _vm._v(_vm._s(_vm.$t(\"Ports\")))\n ]),\n _c(\n \"b-button\",\n {\n attrs: { \"icon-left\": \"plus\", size: \"is-small\", rounded: \"\" },\n on: { click: _vm.addItem }\n },\n [_vm._v(_vm._s(_vm.$t(\"Add\")))]\n )\n ],\n 1\n ),\n _vm.vdata.length == 0\n ? _c(\n \"div\",\n { staticClass: \"is-flex is-align-items-center mb-5 info\" },\n [\n _c(\"b-icon\", {\n staticClass: \"mr-2 \",\n attrs: { icon: \"information\", size: \"is-small\" }\n }),\n _c(\"span\", [\n _vm._v(\n \" \" +\n _vm._s(_vm.$t(\"No ports now, click “+” to add one.\")) +\n \" \"\n )\n ])\n ],\n 1\n )\n : _vm._e(),\n _vm._l(_vm.vdata, function(item, index) {\n return _c(\n \"div\",\n { key: \"port\" + index, staticClass: \"port-item\" },\n [\n _c(\"b-icon\", {\n staticClass: \"is-clickable\",\n attrs: { icon: \"close\", size: \"is-small\" },\n nativeOn: {\n click: function($event) {\n return _vm.removeItem(index)\n }\n }\n }),\n index < 1\n ? [\n _c(\n \"b-field\",\n { attrs: { grouped: \"\" } },\n [\n _vm.showHostPost\n ? _c(\n \"b-field\",\n { attrs: { label: _vm.$t(\"Host\"), expanded: \"\" } },\n [\n _c(\"b-input\", {\n attrs: {\n placeholder: _vm.$t(\"Host\"),\n type: \"number\",\n expanded: \"\"\n },\n on: { input: _vm.handleInput },\n model: {\n value: item.host,\n callback: function($$v) {\n _vm.$set(item, \"host\", $$v)\n },\n expression: \"item.host\"\n }\n })\n ],\n 1\n )\n : _vm._e(),\n _c(\n \"b-field\",\n { attrs: { label: _vm.$t(\"Container\"), expanded: \"\" } },\n [\n _c(\"b-input\", {\n attrs: {\n placeholder: _vm.$t(\"Container\"),\n type: \"number\",\n expanded: \"\"\n },\n on: { input: _vm.handleInput },\n model: {\n value: item.container,\n callback: function($$v) {\n _vm.$set(item, \"container\", $$v)\n },\n expression: \"item.container\"\n }\n })\n ],\n 1\n ),\n _c(\n \"b-field\",\n { attrs: { label: _vm.$t(\"Protocol\"), expanded: \"\" } },\n [\n _c(\n \"b-select\",\n {\n attrs: {\n placeholder: _vm.$t(\"Protocol\"),\n expanded: \"\"\n },\n on: { input: _vm.handleInput },\n model: {\n value: item.protocol,\n callback: function($$v) {\n _vm.$set(item, \"protocol\", $$v)\n },\n expression: \"item.protocol\"\n }\n },\n [\n _c(\"option\", { attrs: { value: \"tcp\" } }, [\n _vm._v(\"TCP\")\n ]),\n _c(\"option\", { attrs: { value: \"udp\" } }, [\n _vm._v(\"UDP\")\n ]),\n _c(\"option\", { attrs: { value: \"both\" } }, [\n _vm._v(\"TCP + UDP\")\n ])\n ]\n )\n ],\n 1\n )\n ],\n 1\n )\n ]\n : [\n _c(\n \"b-field\",\n { attrs: { grouped: \"\" } },\n [\n _vm.showHostPost\n ? _c(\"b-input\", {\n attrs: {\n placeholder: _vm.$t(\"Host\"),\n type: \"number\",\n expanded: \"\"\n },\n on: { input: _vm.handleInput },\n model: {\n value: item.host,\n callback: function($$v) {\n _vm.$set(item, \"host\", $$v)\n },\n expression: \"item.host\"\n }\n })\n : _vm._e(),\n _c(\"b-input\", {\n attrs: {\n placeholder: _vm.$t(\"Container\"),\n type: \"number\",\n expanded: \"\"\n },\n on: { input: _vm.handleInput },\n model: {\n value: item.container,\n callback: function($$v) {\n _vm.$set(item, \"container\", $$v)\n },\n expression: \"item.container\"\n }\n }),\n _c(\n \"b-select\",\n {\n attrs: {\n placeholder: _vm.$t(\"Protocol\"),\n expanded: \"\"\n },\n on: { input: _vm.handleInput },\n model: {\n value: item.protocol,\n callback: function($$v) {\n _vm.$set(item, \"protocol\", $$v)\n },\n expression: \"item.protocol\"\n }\n },\n [\n _c(\"option\", { attrs: { value: \"tcp\" } }, [\n _vm._v(\"TCP\")\n ]),\n _c(\"option\", { attrs: { value: \"udp\" } }, [\n _vm._v(\"UDP\")\n ]),\n _c(\"option\", { attrs: { value: \"both\" } }, [\n _vm._v(\"TCP + UDP\")\n ])\n ]\n )\n ],\n 1\n )\n ]\n ],\n 2\n )\n })\n ],\n 2\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/forms/Ports.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/logsAndTerminal/LogsCard.vue?vue&type=template&id=436df5fa&": -/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/logsAndTerminal/LogsCard.vue?vue&type=template&id=436df5fa& ***! - \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"fullscreen\",\n {\n staticClass: \"fullScreen pl-2 pt-2 pb-2\",\n class: { \"mt-5\": !_vm.fullscreen },\n attrs: { fullscreen: _vm.fullscreen, teleport: true, \"page-only\": true },\n on: {\n \"update:fullscreen\": function($event) {\n _vm.fullscreen = $event\n },\n change: _vm.onWindowResize\n }\n },\n [\n _c(\n \"a\",\n {\n staticClass: \"fullscreen-button\",\n on: { click: _vm.toggleFullScreen }\n },\n [_c(\"b-icon\", { attrs: { icon: _vm.buttonIcon } })],\n 1\n ),\n _c(\"div\", { staticClass: \"logs scrollbars\", attrs: { id: \"logs\" } }, [\n _c(\"div\", { domProps: { innerHTML: _vm._s(_vm.data) } })\n ])\n ]\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/logsAndTerminal/LogsCard.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/logsAndTerminal/TerminalCard.vue?vue&type=template&id=3d5f2c47&": -/*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/logsAndTerminal/TerminalCard.vue?vue&type=template&id=3d5f2c47& ***! - \*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"fullscreen\",\n {\n staticClass: \"fullScreen pl-2 pt-2 pb-2\",\n class: { \"mt-5\": !_vm.fullscreen },\n attrs: { fullscreen: _vm.fullscreen, teleport: true, \"page-only\": true },\n on: {\n \"update:fullscreen\": function($event) {\n _vm.fullscreen = $event\n },\n change: _vm.onWindowResize\n }\n },\n [\n _c(\n \"a\",\n {\n staticClass: \"fullscreen-button\",\n on: { click: _vm.toggleFullScreen }\n },\n [_c(\"b-icon\", { attrs: { icon: _vm.buttonIcon } })],\n 1\n ),\n _c(\"div\", { staticClass: \"xterm\", attrs: { id: \"xterm\" } })\n ]\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/logsAndTerminal/TerminalCard.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/logsAndTerminal/TerminalPanel.vue?vue&type=template&id=2764e7dd&": -/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/logsAndTerminal/TerminalPanel.vue?vue&type=template&id=2764e7dd& ***! - \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"modal-card\" },\n [\n _c(\"section\", { staticClass: \"modal-card-body \" }, [\n _c(\"h2\", { staticClass: \"title is-4\" }, [_vm._v(\"CasaOS\")]),\n _c(\"div\", { staticClass: \"close-container\" }, [\n _c(\"button\", {\n staticClass: \"delete\",\n attrs: { type: \"button\" },\n on: {\n click: function($event) {\n return _vm.$emit(\"close\")\n }\n }\n })\n ]),\n _c(\n \"div\",\n { staticClass: \"flex1\" },\n [\n _c(\n \"b-tabs\",\n { attrs: { animated: false }, on: { input: _vm.onInput } },\n [\n _c(\n \"b-tab-item\",\n { attrs: { label: _vm.$t(\"Terminal\"), value: \"terminal\" } },\n [\n _c(\"terminal-card\", {\n ref: \"terminal\",\n attrs: { wsUrl: _vm.wsUrl }\n })\n ],\n 1\n ),\n _c(\n \"b-tab-item\",\n { attrs: { label: _vm.$t(\"Logs\"), value: \"logs\" } },\n [\n _c(\"logs-card\", {\n ref: \"logs\",\n attrs: { data: _vm.logData }\n })\n ],\n 1\n )\n ],\n 1\n )\n ],\n 1\n )\n ]),\n _c(\"b-loading\", {\n attrs: { \"is-full-page\": false },\n model: {\n value: _vm.isLoading,\n callback: function($$v) {\n _vm.isLoading = $$v\n },\n expression: \"isLoading\"\n }\n })\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/logsAndTerminal/TerminalPanel.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/settings/PortPanel.vue?vue&type=template&id=f5c884f2&": -/*!***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/settings/PortPanel.vue?vue&type=template&id=f5c884f2& ***! - \***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"modal-card\" },\n [\n _c(\"header\", { staticClass: \"modal-card-head\" }, [\n _c(\"div\", { staticClass: \"flex1\" }, [\n _c(\"h3\", { staticClass: \"title is-4 has-text-weight-normal\" }, [\n _vm._v(_vm._s(_vm.$t(\"Edit Web UI port\")))\n ])\n ]),\n _c(\"div\", [\n _c(\"button\", {\n staticClass: \"delete\",\n attrs: { type: \"button\" },\n on: {\n click: function($event) {\n return _vm.$emit(\"close\")\n }\n }\n })\n ])\n ]),\n _c(\n \"section\",\n { staticClass: \"modal-card-body \" },\n [\n _c(\n \"b-field\",\n {\n staticClass: \"mb-5 mt-5 has-text-light\",\n attrs: { type: _vm.errorType, message: _vm.errors, expanded: \"\" }\n },\n [\n _c(\"b-input\", {\n attrs: { type: \"number\" },\n nativeOn: {\n keyup: function($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")\n ) {\n return null\n }\n return _vm.savePort.apply(null, arguments)\n }\n },\n model: {\n value: _vm.port,\n callback: function($$v) {\n _vm.port = $$v\n },\n expression: \"port\"\n }\n })\n ],\n 1\n )\n ],\n 1\n ),\n _c(\n \"footer\",\n { staticClass: \"modal-card-foot is-flex is-align-items-center\" },\n [\n _c(\"div\", { staticClass: \"flex1\" }),\n _c(\n \"div\",\n [\n _c(\"b-button\", {\n attrs: { label: _vm.$t(\"Cancel\"), rounded: \"\" },\n on: {\n click: function($event) {\n return _vm.$emit(\"close\")\n }\n }\n }),\n _c(\"b-button\", {\n attrs: {\n label: _vm.$t(\"Submit\"),\n type: \"is-primary\",\n rounded: \"\",\n expaned: \"\"\n },\n on: { click: _vm.savePort }\n })\n ],\n 1\n )\n ]\n ),\n _c(\"b-loading\", {\n attrs: { \"is-full-page\": false },\n model: {\n value: _vm.isLoading,\n callback: function($$v) {\n _vm.isLoading = $$v\n },\n expression: \"isLoading\"\n }\n })\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/settings/PortPanel.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/smartHome/SmartBlock.vue?vue&type=template&id=3a2ae5ca&": -/*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/smartHome/SmartBlock.vue?vue&type=template&id=3a2ae5ca& ***! - \*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"column is-one-half\" }, [\n _c(\"div\", { staticClass: \"wuji-card\" }, [\n _c(\"div\", { staticClass: \"blur-background\" }),\n _c(\"div\", { staticClass: \"wuji-content\" }, [\n _c(\"h6\", { staticClass: \"title is-6 mb-2 has-text-white\" }, [\n _vm._v(_vm._s(_vm.$t(\"Smarten up your home\")))\n ]),\n _c(\n \"div\",\n { staticClass: \"is-flex is-align-items-center\" },\n [\n _c(\"div\", { staticClass: \"info \" }, [\n _c(\"div\", { staticClass: \"des two-line\" }, [\n _vm._v(\n \" \" +\n _vm._s(\n _vm.$t(\n \"We want to give you a smart home experience with privacy, high speed, and localized storage.\"\n )\n ) +\n \" \"\n )\n ])\n ]),\n _c(\"b-image\", {\n staticClass: \"is-64x64\",\n attrs: { src: __webpack_require__(/*! @/assets/img/smart/smart_icon.png */ \"./src/assets/img/smart/smart_icon.png\") }\n })\n ],\n 1\n ),\n _c(\n \"div\",\n { staticClass: \"buttons\" },\n [\n _c(\n \"b-button\",\n {\n attrs: { type: \"is-primary\", size: \"is-small\", rounded: \"\" },\n on: { click: _vm.goToDiscord }\n },\n [_vm._v(_vm._s(_vm.$t(\"In development\")))]\n )\n ],\n 1\n )\n ])\n ])\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/smartHome/SmartBlock.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/syncthing/SyncBlock.vue?vue&type=template&id=129a2c54&": -/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/syncthing/SyncBlock.vue?vue&type=template&id=129a2c54& ***! - \************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"column is-one-half\" }, [\n _c(\"div\", { staticClass: \"wuji-card\" }, [\n _c(\"div\", { staticClass: \"blur-background\" }),\n _c(\n \"div\",\n { staticClass: \"wuji-content\" },\n [\n _vm.state == 1\n ? [\n _c(\"h6\", { staticClass: \"title is-6 mb-2 has-text-white\" }, [\n _vm._v(_vm._s(_vm.$t(\"Sync your data\")))\n ]),\n _c(\n \"div\",\n { staticClass: \"is-flex is-align-items-center\" },\n [\n _c(\"div\", { staticClass: \"info \" }, [\n _c(\"div\", { staticClass: \"des two-line\" }, [\n _vm._v(\n \" \" +\n _vm._s(\n _vm.$t(\n \"Follow the guide to start syncing your files across multiple devices.\"\n )\n ) +\n \" \"\n )\n ])\n ]),\n _c(\"b-image\", {\n staticClass: \"is-64x64\",\n attrs: {\n src: __webpack_require__(/*! @/assets/img/syncthing/sync_icon.png */ \"./src/assets/img/syncthing/sync_icon.png\")\n }\n })\n ],\n 1\n ),\n _c(\n \"div\",\n { staticClass: \"buttons\" },\n [\n _c(\n \"b-button\",\n {\n attrs: {\n type: \"is-primary\",\n size: \"is-small\",\n rounded: \"\"\n },\n on: { click: _vm.openSyncPanel }\n },\n [_vm._v(_vm._s(_vm.$t(\"Go !\")))]\n )\n ],\n 1\n )\n ]\n : _vm._e(),\n _vm.state == 2\n ? [\n _c(\"div\", { staticClass: \"is-flex is-align-items-center\" }, [\n _c(\"div\", { staticClass: \"flex1\" }, [\n _c(\n \"h6\",\n { staticClass: \"title is-6 mb-2 has-text-white\" },\n [_vm._v(_vm._s(_vm.$t(\"Sync your data\")))]\n )\n ]),\n _c(\n \"div\",\n { staticClass: \"is-flex is-align-items-center\" },\n [\n _c(\n \"b-tooltip\",\n {\n attrs: {\n label: _vm.$t(\"Add New Device\"),\n position: \"is-top\",\n type: \"is-dark\"\n }\n },\n [\n _c(\"button\", {\n staticClass: \"icon-button-new mdi mdi-plus\",\n attrs: { type: \"button\" },\n on: { click: _vm.openSyncPanel }\n })\n ]\n ),\n _c(\n \"b-tooltip\",\n {\n attrs: {\n label: _vm.$t(\"Config\"),\n position: \"is-top\",\n type: \"is-dark\"\n }\n },\n [\n _c(\"button\", {\n staticClass: \"icon-button-new mdi mdi-cog-outline\",\n attrs: { type: \"button\" },\n on: { click: _vm.gotoAdvancedPanel }\n })\n ]\n )\n ],\n 1\n )\n ]),\n _c(\"div\", { staticClass: \"columns mb-0 mt-2 is-mobile\" }, [\n _c(\n \"div\",\n { staticClass: \"column is-flex is-align-items-center\" },\n [\n _c(\"b-image\", {\n staticClass: \"is-32x32\",\n attrs: {\n src: __webpack_require__(/*! @/assets/img/syncthing/device.png */ \"./src/assets/img/syncthing/device.png\")\n }\n }),\n _c(\"div\", { staticClass: \"flex1\" }, [\n _c(\"p\", { staticClass: \"is-size-65 ml-2 one-line\" }, [\n _vm._v(\n _vm._s(_vm.$t(\"Up to Date\")) +\n \" \" +\n _vm._s(_vm.activeDevice) +\n \"/\" +\n _vm._s(_vm.totalDevice)\n )\n ])\n ])\n ],\n 1\n ),\n _c(\n \"div\",\n { staticClass: \"column is-flex is-align-items-center\" },\n [\n _c(\"b-image\", {\n staticClass: \"is-32x32\",\n attrs: {\n src: __webpack_require__(/*! @/assets/img/syncthing/folder1.png */ \"./src/assets/img/syncthing/folder1.png\")\n }\n }),\n _c(\"div\", { staticClass: \"flex1\" }, [\n _c(\"p\", { staticClass: \"is-size-65 ml-2 one-line\" }, [\n _vm._v(\n _vm._s(_vm.$t(\"Up to Date\")) +\n \" \" +\n _vm._s(_vm.activeFolders.length) +\n \"/\" +\n _vm._s(_vm.folders)\n )\n ])\n ])\n ],\n 1\n )\n ]),\n _c(\"div\", { staticClass: \"columns mb-0 mt-1 is-mobile\" }, [\n _c(\n \"div\",\n {\n staticClass:\n \"column pt-0 pb-0 is-flex is-align-items-center is-size-65\"\n },\n [\n _c(\"b-icon\", {\n staticClass: \"mr-1\",\n attrs: {\n icon: _vm.syncIcon,\n type: \"is-success\",\n \"custom-size\": \"mdi-18px\",\n \"custom-class\": _vm.spinner\n }\n }),\n _vm._v(\" \" + _vm._s(_vm.$t(_vm.syncState)) + \" \")\n ],\n 1\n ),\n _c(\n \"div\",\n {\n staticClass:\n \"column pt-0 pb-0 is-flex is-align-items-center is-size-65 is-justify-content-end \"\n },\n [\n _vm.syncState == \"Synchronized\"\n ? _c(\"b\", { staticClass: \"one-line\" }, [\n _vm._v(\n _vm._s(_vm.$t(\"Total\")) +\n \":\" +\n _vm._s(_vm._f(\"renderSize\")(_vm.totalSize))\n )\n ])\n : _vm._e(),\n _vm.syncState == \"Synchronizing\"\n ? _c(\n \"p\",\n {\n staticClass:\n \"one-line is-flex is-align-items-center\"\n },\n [\n _c(\"b-icon\", {\n staticClass: \"mr-1\",\n attrs: {\n icon: \"cloud-upload-outline\",\n \"custom-size\": \"mdi-18px\"\n }\n }),\n _vm._v(\n \" \" +\n _vm._s(_vm._f(\"renderBps\")(_vm.upSpeed)) +\n \" \"\n ),\n _c(\"b-icon\", {\n staticClass: \"ml-2 mr-1\",\n attrs: {\n icon: \"cloud-download-outline\",\n \"custom-size\": \"mdi-18px\"\n }\n }),\n _vm._v(\n \" \" +\n _vm._s(_vm._f(\"renderBps\")(_vm.downSpeed)) +\n \" \"\n )\n ],\n 1\n )\n : _vm._e()\n ]\n )\n ])\n ]\n : _vm._e()\n ],\n 2\n )\n ])\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/syncthing/SyncBlock.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/syncthing/SyncPanel.vue?vue&type=template&id=6a559bcd&": -/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/syncthing/SyncPanel.vue?vue&type=template&id=6a559bcd& ***! - \************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"modal-card\" }, [\n _c(\"header\", { staticClass: \"modal-card-head\" }, [\n _c(\"div\", { staticClass: \"flex1\" }, [\n _c(\"h3\", { staticClass: \"title is-4 has-text-weight-normal\" }, [\n _vm._v(_vm._s(_vm.$t(\"Sync Guide\")))\n ])\n ]),\n _c(\"div\", { staticClass: \"is-flex is-align-items-center\" }, [\n _c(\n \"div\",\n {\n staticClass: \"is-flex is-align-items-center modal-close-container\"\n },\n [\n _c(\"button\", {\n staticClass: \"delete\",\n attrs: { type: \"button\" },\n on: {\n click: function($event) {\n return _vm.$emit(\"close\")\n }\n }\n })\n ]\n )\n ])\n ]),\n _c(\"section\", { staticClass: \"modal-card-body\" }, [\n _c(\"div\", { staticClass: \"columns is-mobile\" }, [\n _c(\n \"div\",\n {\n staticClass:\n \"column is-8 is-offset-2 is-12-mobile is-offset-0-mobile\"\n },\n [\n _c(\"div\", { staticClass: \"columns is-mobile steps\" }, [\n _c(\"div\", { staticClass: \"column has-text-centered\" }, [\n _c(\n \"span\",\n {\n staticClass: \"dot\",\n class: [\n { active: _vm.step == 1 },\n { \"ok-dot\": _vm.step > 1 }\n ],\n attrs: { \"data-title\": \"1\" }\n },\n [_vm._v(_vm._s(_vm.$t(\"Install\")))]\n )\n ]),\n _c(\"div\", { staticClass: \"column has-text-centered\" }, [\n _c(\n \"span\",\n {\n staticClass: \"dot \",\n class: [\n { active: _vm.step == 2 },\n { \"ok-dot\": _vm.step > 2 }\n ],\n attrs: { \"data-title\": \"2\" }\n },\n [_vm._v(_vm._s(_vm.$t(\"Config\")))]\n )\n ]),\n _c(\"div\", { staticClass: \"column has-text-centered\" }, [\n _c(\n \"span\",\n {\n staticClass: \"dot \",\n class: [\n { active: _vm.step == 3 },\n { \"ok-dot\": _vm.step > 2 }\n ],\n attrs: { \"data-title\": \"3\" }\n },\n [_vm._v(_vm._s(_vm.$t(\"Complete\")))]\n )\n ])\n ])\n ]\n )\n ]),\n _c(\"div\", [\n _vm.step == 1\n ? _c(\n \"div\",\n { staticClass: \"step1 has-text-centered \" },\n [\n _c(\"h1\", { staticClass: \"title is-5 has-text-weight-normal\" }, [\n _vm._v(\n _vm._s(\n _vm.$t(\n \"Download Syncthing on the device you want to sync with CasaOS\"\n )\n )\n )\n ]),\n _c(\n \"div\",\n { staticClass: \"is-flex is-justify-content-center mt-6\" },\n [\n _c(\"b-image\", {\n staticClass: \"is-176x176\",\n attrs: {\n src: __webpack_require__(\"./src/assets/img/syncthing sync recursive ^\\\\.\\\\/.*\\\\.svg$\")(\"./\" +\n _vm.icon +\n \".svg\")\n }\n })\n ],\n 1\n ),\n !_vm.showMore\n ? [\n _c(\n \"p\",\n {\n staticClass:\n \"control is-flex is-justify-content-center mt-5\"\n },\n [\n _c(\"b-button\", {\n attrs: {\n type: \"is-dark\",\n size: \"is-large\",\n label: _vm.$t(\"Get Syncthing for\", {\n os: _vm.broswerUA.os.name\n }),\n loading: _vm.isGettingUrl,\n rounded: \"\"\n },\n on: {\n click: function($event) {\n return _vm.getDownloadUrl(_vm.osName)\n }\n }\n })\n ],\n 1\n ),\n _vm.platform == \"android\"\n ? _c(\n \"p\",\n {\n staticClass:\n \"control is-flex is-justify-content-center\"\n },\n [\n _c(\"b-button\", {\n attrs: {\n type: \"is-ghost\",\n label: _vm.$t(\"Download APK\"),\n rounded: \"\"\n },\n on: {\n click: function($event) {\n return _vm.getDownloadUrl(\"Android\", \"apk\")\n }\n }\n })\n ],\n 1\n )\n : _vm._e()\n ]\n : _vm._e(),\n _vm.showMore\n ? _c(\"div\", { staticClass: \"columns is-mobile mt-4\" }, [\n _c(\"div\", { staticClass: \"column is-8 is-offset-2\" }, [\n _c(\"div\", { staticClass: \"columns is-mobile \" }, [\n _c(\n \"div\",\n { staticClass: \"column has-text-centered\" },\n [\n _c(\n \"p\",\n {\n staticClass:\n \"control is-flex is-justify-content-center\"\n },\n [\n _c(\"b-button\", {\n attrs: {\n type: \"is-dark\",\n label: \"Syncthing Win x64\",\n rounded: \"\"\n },\n on: {\n click: function($event) {\n return _vm.getDownloadUrl(\n \"Windows\",\n \"x64\"\n )\n }\n }\n })\n ],\n 1\n )\n ]\n ),\n _c(\n \"div\",\n { staticClass: \"column has-text-centered\" },\n [\n _c(\n \"p\",\n {\n staticClass:\n \"control is-flex is-justify-content-center\"\n },\n [\n _c(\"b-button\", {\n attrs: {\n type: \"is-dark\",\n label: \"Syncthing Win x32\",\n rounded: \"\"\n },\n on: {\n click: function($event) {\n return _vm.getDownloadUrl(\n \"Windows\",\n \"x64\"\n )\n }\n }\n })\n ],\n 1\n )\n ]\n )\n ]),\n _c(\"div\", { staticClass: \"columns is-mobile\" }, [\n _c(\n \"div\",\n { staticClass: \"column has-text-centered\" },\n [\n _c(\n \"p\",\n {\n staticClass:\n \"control is-flex is-justify-content-center\"\n },\n [\n _c(\"b-button\", {\n attrs: {\n type: \"is-dark\",\n label: \"Syncthing macOS\",\n rounded: \"\"\n },\n on: {\n click: function($event) {\n return _vm.getDownloadUrl(\"macOS\")\n }\n }\n })\n ],\n 1\n )\n ]\n ),\n _c(\n \"div\",\n { staticClass: \"column has-text-centered\" },\n [\n _c(\n \"p\",\n {\n staticClass:\n \"control is-flex is-justify-content-center\"\n },\n [\n _c(\"b-button\", {\n attrs: {\n type: \"is-dark\",\n label: \"Syncthing Andorid\",\n rounded: \"\"\n },\n on: {\n click: function($event) {\n return _vm.downloadSyncthing(\n _vm.syncthingAndroidDlUrl\n )\n }\n }\n })\n ],\n 1\n ),\n _c(\n \"p\",\n {\n staticClass:\n \"control is-flex is-justify-content-center\"\n },\n [\n _c(\"b-button\", {\n attrs: {\n type: \"is-ghost\",\n label: _vm.$t(\"Download APK\"),\n rounded: \"\"\n },\n on: {\n click: function($event) {\n return _vm.downloadSyncthing(\n _vm.syncthingAndroidDlUrl1\n )\n }\n }\n })\n ],\n 1\n )\n ]\n )\n ])\n ])\n ])\n : _vm._e(),\n !_vm.showMore\n ? _c(\n \"p\",\n {\n staticClass:\n \"control is-flex is-justify-content-center mt-5 mb-5\"\n },\n [\n _c(\"b-button\", {\n attrs: {\n type: \"is-ghost\",\n label: _vm.$t(\"Show all Platforms\"),\n rounded: \"\"\n },\n on: { click: _vm.showMorePlatform }\n })\n ],\n 1\n )\n : _vm._e(),\n _c(\n \"p\",\n {\n staticClass:\n \"is-flex is-align-items-top is-size-65 is-justify-content-center\"\n },\n [\n _c(\"b-icon\", {\n staticClass: \"mr-2\",\n staticStyle: { color: \"#F8D149\" },\n attrs: { icon: \"information\" }\n }),\n _vm._v(\n \" \" +\n _vm._s(\n _vm.$t(\n 'Install and open the downloaded application, then click the \"Next\" button.'\n )\n ) +\n \" \"\n )\n ],\n 1\n )\n ],\n 2\n )\n : _vm._e(),\n _vm.step == 2\n ? _c(\n \"div\",\n { staticClass: \"step2\" },\n [\n _c(\n \"b-field\",\n { attrs: { label: _vm.$t(\"Device ID\"), expanded: \"\" } },\n [\n _c(\"b-input\", {\n attrs: {\n placeholder: _vm.$t(\n \"Fill in your Device ID to continue\"\n ),\n disabled: _vm.isSubmited,\n expanded: \"\"\n },\n on: { input: _vm.checkDeviceId },\n model: {\n value: _vm.deviceId,\n callback: function($$v) {\n _vm.deviceId = $$v\n },\n expression: \"deviceId\"\n }\n }),\n _c(\n \"p\",\n { staticClass: \"control\" },\n [\n _c(\"b-button\", {\n attrs: {\n type: \"is-primary\",\n label: _vm.$t(\"Submit\"),\n loading: _vm.isSubmiting,\n disabled: !_vm.isValId || _vm.isSubmited\n },\n on: { click: _vm.submitNewDevice }\n })\n ],\n 1\n )\n ],\n 1\n ),\n _c(\"h3\", { staticClass: \"title is-6 mt-5 mb-3\" }, [\n _vm._v(_vm._s(_vm.$t(_vm.helpTitle)))\n ]),\n _c(\n \"b-tabs\",\n {\n model: {\n value: _vm.platform,\n callback: function($$v) {\n _vm.platform = $$v\n },\n expression: \"platform\"\n }\n },\n [\n _c(\n \"b-tab-item\",\n {\n key: \"windows\",\n attrs: {\n label: \"Windows\",\n icon: \"microsoft-windows\",\n value: \"windows\"\n }\n },\n [\n _c(\"div\", { staticClass: \"t-box\" }, [\n !_vm.isSubmited\n ? _c(\"div\", [\n _c(\"ol\", [\n _c(\"li\", [\n _vm._v(\n _vm._s(_vm.$t(\"Open the SyncTrayzor\"))\n )\n ]),\n _c(\n \"li\",\n [\n _vm._v(\n _vm._s(_vm.$t(\"Find the Device ID\")) +\n \" \"\n ),\n _c(\"b-image\", {\n staticClass: \"t-img t-img-2\",\n attrs: {\n src: __webpack_require__(/*! @/assets/syncthing_tutorials/Windows-ShowID.png */ \"./src/assets/syncthing_tutorials/Windows-ShowID.png\")\n }\n }),\n _c(\"b-image\", {\n staticClass: \"t-img\",\n attrs: {\n src: __webpack_require__(/*! @/assets/syncthing_tutorials/Windows-DeviceID.png */ \"./src/assets/syncthing_tutorials/Windows-DeviceID.png\")\n }\n })\n ],\n 1\n )\n ])\n ])\n : _vm._e(),\n _vm.isSubmited\n ? _c(\"div\", [\n _c(\n \"ol\",\n [\n _c(\"li\", [\n _vm._v(\n _vm._s(\n _vm.$t(\n \"Add new device on your device\"\n )\n )\n )\n ]),\n _c(\"b-image\", {\n staticClass: \"t-img\",\n attrs: {\n src: __webpack_require__(/*! @/assets/syncthing_tutorials/Windows-NewDevice.png */ \"./src/assets/syncthing_tutorials/Windows-NewDevice.png\")\n }\n }),\n _c(\"b-image\", {\n staticClass: \"t-img\",\n attrs: {\n src: __webpack_require__(/*! @/assets/syncthing_tutorials/Windows-NewDeviceSave.png */ \"./src/assets/syncthing_tutorials/Windows-NewDeviceSave.png\")\n }\n }),\n _c(\"li\", [\n _vm._v(\n _vm._s(\n _vm.$t(\n \"Add new folder on your device\"\n )\n )\n )\n ]),\n _c(\"b-image\", {\n staticClass: \"t-img\",\n attrs: {\n src: __webpack_require__(/*! @/assets/syncthing_tutorials/Windows-NewFolder.png */ \"./src/assets/syncthing_tutorials/Windows-NewFolder.png\")\n }\n }),\n _c(\"b-image\", {\n staticClass: \"t-img\",\n attrs: {\n src: __webpack_require__(/*! @/assets/syncthing_tutorials/Windows-NewFolderSave.png */ \"./src/assets/syncthing_tutorials/Windows-NewFolderSave.png\")\n }\n }),\n _c(\"li\", [_vm._v(_vm._s(_vm.$t(\"Done!\")))])\n ],\n 1\n )\n ])\n : _vm._e()\n ])\n ]\n ),\n _c(\n \"b-tab-item\",\n {\n key: \"macos\",\n attrs: { label: \"macOS\", icon: \"apple\", value: \"macos\" }\n },\n [\n _c(\"div\", { staticClass: \"t-box\" }, [\n !_vm.isSubmited\n ? _c(\"div\", [\n _c(\"ol\", [\n _c(\"li\", [\n _vm._v(\n _vm._s(\n _vm.$t(\n \"Open Syncthing in the Launchpad\"\n )\n )\n )\n ]),\n _c(\n \"li\",\n [\n _vm._v(\n _vm._s(\n _vm.$t(\n \"Find the Syncthing icon in the menubar\"\n )\n ) + \" \"\n ),\n _c(\"b-image\", {\n staticClass: \"t-img t-img-1\",\n attrs: {\n src: __webpack_require__(/*! @/assets/syncthing_tutorials/macOS-icon.png */ \"./src/assets/syncthing_tutorials/macOS-icon.png\")\n }\n }),\n _c(\"b-image\", {\n staticClass: \"t-img t-img-2\",\n attrs: {\n src: __webpack_require__(/*! @/assets/syncthing_tutorials/macOS-Config.png */ \"./src/assets/syncthing_tutorials/macOS-Config.png\")\n }\n })\n ],\n 1\n ),\n _c(\n \"li\",\n [\n _vm._v(\n _vm._s(_vm.$t(\"Find the Device ID\")) +\n \" \"\n ),\n _c(\"b-image\", {\n staticClass: \"t-img t-img-2\",\n attrs: {\n src: __webpack_require__(/*! @/assets/syncthing_tutorials/macOS-ShowID.png */ \"./src/assets/syncthing_tutorials/macOS-ShowID.png\")\n }\n }),\n _c(\"b-image\", {\n staticClass: \"t-img\",\n attrs: {\n src: __webpack_require__(/*! @/assets/syncthing_tutorials/macOS-DeviceID.png */ \"./src/assets/syncthing_tutorials/macOS-DeviceID.png\")\n }\n })\n ],\n 1\n )\n ])\n ])\n : _vm._e(),\n _vm.isSubmited\n ? _c(\"div\", [\n _c(\n \"ol\",\n [\n _c(\"li\", [\n _vm._v(\n _vm._s(\n _vm.$t(\n \"Add new device on your device\"\n )\n )\n )\n ]),\n _c(\"b-image\", {\n staticClass: \"t-img\",\n attrs: {\n src: __webpack_require__(/*! @/assets/syncthing_tutorials/Windows-NewDevice.png */ \"./src/assets/syncthing_tutorials/Windows-NewDevice.png\")\n }\n }),\n _c(\"b-image\", {\n staticClass: \"t-img\",\n attrs: {\n src: __webpack_require__(/*! @/assets/syncthing_tutorials/Windows-NewDeviceSave.png */ \"./src/assets/syncthing_tutorials/Windows-NewDeviceSave.png\")\n }\n }),\n _c(\"li\", [\n _vm._v(\n _vm._s(\n _vm.$t(\n \"Add new folder on your device\"\n )\n )\n )\n ]),\n _c(\"b-image\", {\n staticClass: \"t-img\",\n attrs: {\n src: __webpack_require__(/*! @/assets/syncthing_tutorials/macOS-NewFolder.png */ \"./src/assets/syncthing_tutorials/macOS-NewFolder.png\")\n }\n }),\n _c(\"b-image\", {\n staticClass: \"t-img\",\n attrs: {\n src: __webpack_require__(/*! @/assets/syncthing_tutorials/macOS-NewFolderSave.png */ \"./src/assets/syncthing_tutorials/macOS-NewFolderSave.png\")\n }\n }),\n _c(\"li\", [_vm._v(_vm._s(_vm.$t(\"Done!\")))])\n ],\n 1\n )\n ])\n : _vm._e()\n ])\n ]\n ),\n _c(\n \"b-tab-item\",\n {\n key: \"android\",\n attrs: {\n label: \"Android\",\n icon: \"android\",\n value: \"android\"\n }\n },\n [\n _c(\"div\", { staticClass: \"t-box\" }, [\n !_vm.isSubmited\n ? _c(\"div\", [\n _c(\"ol\", [\n _c(\"li\", [\n _vm._v(_vm._s(_vm.$t(\"Open Syncthing\")))\n ]),\n _c(\n \"li\",\n [\n _vm._v(\n _vm._s(_vm.$t(\"Open the menu\")) + \" \"\n ),\n _c(\"b-image\", {\n staticClass: \"t-img t-img-3\",\n attrs: {\n src: __webpack_require__(/*! @/assets/syncthing_tutorials/Android-Menu.png */ \"./src/assets/syncthing_tutorials/Android-Menu.png\")\n }\n })\n ],\n 1\n ),\n _c(\n \"li\",\n [\n _vm._v(\n _vm._s(\n _vm.$t('Choose \"Show device ID\"')\n ) + \" \"\n ),\n _c(\"b-image\", {\n staticClass: \"t-img t-img-3\",\n attrs: {\n src: __webpack_require__(/*! @/assets/syncthing_tutorials/Android-ShowDeviceID.png */ \"./src/assets/syncthing_tutorials/Android-ShowDeviceID.png\")\n }\n })\n ],\n 1\n ),\n _c(\n \"li\",\n [\n _vm._v(\n _vm._s(_vm.$t(\"Copy the Device ID\")) +\n \" \"\n ),\n _c(\"b-image\", {\n staticClass: \"t-img t-img-3\",\n attrs: {\n src: __webpack_require__(/*! @/assets/syncthing_tutorials/Android-DeviceID.png */ \"./src/assets/syncthing_tutorials/Android-DeviceID.png\")\n }\n })\n ],\n 1\n )\n ])\n ])\n : _vm._e(),\n _vm.isSubmited\n ? _c(\"div\", [\n _c(\n \"ol\",\n [\n _c(\"li\", [\n _vm._v(\n _vm._s(\n _vm.$t(\n \"Add new device on your device\"\n )\n )\n )\n ]),\n _c(\"b-image\", {\n staticClass: \"t-img t-img-3\",\n attrs: {\n src: __webpack_require__(/*! @/assets/syncthing_tutorials/Android-NewDevice.png */ \"./src/assets/syncthing_tutorials/Android-NewDevice.png\")\n }\n }),\n _c(\"b-image\", {\n staticClass: \"t-img t-img-3\",\n attrs: {\n src: __webpack_require__(/*! @/assets/syncthing_tutorials/Android-NewDeviceAdd.png */ \"./src/assets/syncthing_tutorials/Android-NewDeviceAdd.png\")\n }\n }),\n _c(\"li\", [\n _vm._v(\n _vm._s(\n _vm.$t(\n \"Add new folder on your device\"\n )\n )\n )\n ]),\n _c(\"b-image\", {\n staticClass: \"t-img t-img-3\",\n attrs: {\n src: __webpack_require__(/*! @/assets/syncthing_tutorials/Android-NewFolder.png */ \"./src/assets/syncthing_tutorials/Android-NewFolder.png\")\n }\n }),\n _c(\"b-image\", {\n staticClass: \"t-img t-img-3\",\n attrs: {\n src: __webpack_require__(/*! @/assets/syncthing_tutorials/Android-NewFolderCreate.png */ \"./src/assets/syncthing_tutorials/Android-NewFolderCreate.png\")\n }\n }),\n _c(\"li\", [_vm._v(_vm._s(_vm.$t(\"Done!\")))])\n ],\n 1\n )\n ])\n : _vm._e()\n ])\n ]\n )\n ],\n 1\n )\n ],\n 1\n )\n : _vm._e(),\n _vm.step == 3\n ? _c(\"div\", { staticClass: \"step3\" }, [\n _c(\"div\", { staticClass: \"mt-6\" }, [\n _c(\n \"h3\",\n {\n staticClass:\n \"title is-4 has-text-centered has-text-weight-normal\"\n },\n [_vm._v(_vm._s(_vm.$t(\"There you go!\")))]\n ),\n _c(\n \"h2\",\n {\n staticClass:\n \"subtitle is-5 has-text-centered has-text-weight-light\"\n },\n [\n _vm._v(\n _vm._s(\n _vm.$t(\n \"Your data has started to sync.It may take some minutes to fulfill synchronization.\"\n )\n )\n )\n ]\n ),\n _c(\n \"div\",\n {\n staticClass:\n \"is-flex is-align-items-center is-justify-content-center\"\n },\n [\n _c(\"lottie-animation\", {\n staticClass: \"animation\",\n attrs: {\n animationData: __webpack_require__(/*! @/assets/ani/sync.json */ \"./src/assets/ani/sync.json\"),\n autoPlay: true,\n loop: true\n }\n })\n ],\n 1\n )\n ])\n ])\n : _vm._e()\n ])\n ]),\n _c(\n \"footer\",\n { staticClass: \"modal-card-foot is-flex is-align-items-center \" },\n [\n _c(\n \"div\",\n {\n staticClass:\n \"flex1 is-flex is-align-items-center is-justify-content-center \",\n class: { \"pl-7\": !(_vm.step == 2 && !_vm.isSubmited) }\n },\n [\n _c(\"p\", { staticClass: \"is-size-7 has-text-grey\\tmr-2\" }, [\n _vm._v(\"Powered by\")\n ]),\n _c(\"b-image\", {\n staticClass: \"syncthing-logo\",\n attrs: {\n src: __webpack_require__(/*! @/assets/img/syncthing/syncthing-logo.svg */ \"./src/assets/img/syncthing/syncthing-logo.svg\")\n }\n })\n ],\n 1\n ),\n _c(\n \"div\",\n [\n _c(\"b-button\", {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.step == 1 || (_vm.step == 2 && _vm.isSubmited),\n expression: \"step == 1 || (step == 2 && isSubmited)\"\n }\n ],\n attrs: { label: _vm.$t(\"Next\"), type: \"is-primary\", rounded: \"\" },\n on: { click: _vm.nextStep }\n }),\n _c(\"b-button\", {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.step == 3,\n expression: \"step == 3\"\n }\n ],\n attrs: {\n label: _vm.$t(\"Close\"),\n type: \"is-primary\",\n rounded: \"\"\n },\n on: {\n click: function($event) {\n return _vm.$emit(\"close\")\n }\n }\n })\n ],\n 1\n )\n ]\n )\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/syncthing/SyncPanel.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/widgets/Settings.vue?vue&type=template&id=3baef233&": -/*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/widgets/Settings.vue?vue&type=template&id=3baef233& ***! - \*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"wsettings\" },\n [\n _c(\n \"b-dropdown\",\n {\n staticClass: \"navbar-item\",\n attrs: {\n \"aria-role\": \"list\",\n animation: \"fade1\",\n \"mobile-modal\": false,\n position: _vm.position\n },\n scopedSlots: _vm._u([\n {\n key: \"trigger\",\n fn: function() {\n return [\n _c(\"b-button\", {\n staticClass: \"circle-btn\",\n attrs: { \"icon-left\": \"menu\", rounded: \"\" }\n })\n ]\n },\n proxy: true\n }\n ])\n },\n [\n _c(\n \"b-dropdown-item\",\n {\n staticClass: \"has-text-white has-text-left\",\n attrs: { \"aria-role\": \"menu-item\", focusable: false, custom: \"\" }\n },\n [\n _c(\"h2\", { staticClass: \"title is-5 has-text-white\" }, [\n _vm._v(_vm._s(_vm.$t(\"Widgets Settings\")))\n ]),\n _vm._l(_vm.settingsData, function(item, index) {\n return _c(\n \"div\",\n {\n key: \"setting_\" + index,\n staticClass: \"is-flex is-align-items-center item\"\n },\n [\n _c(\n \"div\",\n { staticClass: \"is-flex is-align-items-center flex1\" },\n [\n _c(\"b-icon\", {\n staticClass: \"mr-2\",\n attrs: { icon: _vm.getIcon(item.name) }\n }),\n _vm._v(\" \"),\n _c(\"b\", [\n _vm._v(_vm._s(_vm.$t(_vm.getTitle(item.name))))\n ])\n ],\n 1\n ),\n _c(\n \"b-field\",\n [\n _c(\"b-switch\", {\n staticClass: \"is-flex-direction-row-reverse mr-0\",\n attrs: { type: \"is-dark\", size: \"is-small\" },\n on: { input: _vm.handleInput },\n model: {\n value: item.show,\n callback: function($$v) {\n _vm.$set(item, \"show\", $$v)\n },\n expression: \"item.show\"\n }\n })\n ],\n 1\n )\n ],\n 1\n )\n })\n ],\n 2\n )\n ],\n 1\n )\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/widgets/Settings.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/Home.vue?vue&type=template&id=fae5bece&": -/*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/Home.vue?vue&type=template&id=fae5bece& ***! - \****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return !_vm.isLoading\n ? _c(\n \"div\",\n { staticClass: \"out-container\" },\n [\n _c(\"top-bar\", {\n directives: [\n {\n name: \"animate-css\",\n rawName: \"v-animate-css\",\n value: _vm.topBarAni,\n expression: \"topBarAni\"\n }\n ],\n on: { showSideBar: _vm.showSideBar }\n }),\n _c(\"div\", { staticClass: \"contents pt-55\" }, [\n _c(\"div\", { staticClass: \"container\" }, [\n _c(\n \"div\",\n { staticClass: \"is-flex\" },\n [\n !_vm.hardwareInfoLoading ? _c(\"side-bar\") : _vm._e(),\n _c(\"div\", {\n staticClass: \"dark-bg\",\n class: { open: _vm.sidebarOpen }\n }),\n _c(\"div\", { staticClass: \"main-content\" }, [\n _c(\"section\", [_c(\"search-bar\")], 1),\n _c(\"section\", [_c(\"core-service\")], 1),\n _c(\"section\", [_c(\"app-section\", { ref: \"apps\" })], 1)\n ])\n ],\n 1\n )\n ])\n ])\n ],\n 1\n )\n : _vm._e()\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/views/Home.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/widgets/Clock.vue?vue&type=template&id=072e1685&": -/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/widgets/Clock.vue?vue&type=template&id=072e1685& ***! - \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"widget has-text-white clock\" }, [\n _c(\"div\", { staticClass: \"blur-background\" }),\n _c(\"div\", { staticClass: \"widget-content\" }, [\n _c(\"div\", { staticClass: \"time\" }, [_vm._v(_vm._s(_vm.timeText))]),\n _c(\"div\", { staticClass: \"data\" }, [_vm._v(_vm._s(_vm.dateText))])\n ])\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/widgets/Clock.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/widgets/Cpu.vue?vue&type=template&id=6accea42&": -/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/widgets/Cpu.vue?vue&type=template&id=6accea42& ***! - \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"widget has-text-white clock\" }, [\n _c(\"div\", { staticClass: \"blur-background\" }),\n _c(\"div\", { staticClass: \"widget-content\" }, [\n _c(\n \"div\",\n { staticClass: \"arrow-btn\", on: { click: _vm.showMoreInfo } },\n [\n _c(\"b-icon\", {\n class: { open: _vm.showMore },\n attrs: { icon: \"chevron-right\" }\n })\n ],\n 1\n ),\n _c(\"div\", { staticClass: \"columns is-mobile \" }, [\n _c(\n \"div\",\n { staticClass: \"column is-half has-text-centered\" },\n [\n _c(\"apexchart\", {\n attrs: {\n type: \"radialBar\",\n height: _vm.barHeight,\n options: _vm.chartOptions,\n series: _vm.cpuSeries\n }\n }),\n _c(\"p\", { staticClass: \"is-size-6-5\" }, [\n _vm._v(\"CPU \"),\n _c(\"span\", { staticClass: \"is-size-7\" }, [\n _vm._v(\n \"(\" +\n _vm._s(_vm.cpuCores) +\n \" \" +\n _vm._s(_vm.$t(\"Cores\")) +\n \")\"\n )\n ])\n ])\n ],\n 1\n ),\n _c(\n \"div\",\n { staticClass: \"column is-half has-text-centered\" },\n [\n _c(\"apexchart\", {\n attrs: {\n type: \"radialBar\",\n height: _vm.barHeight,\n options: _vm.chartOptions,\n series: _vm.ramSeries\n }\n }),\n _c(\"p\", { staticClass: \"is-size-6-5\" }, [\n _vm._v(\"RAM \"),\n _c(\"span\", { staticClass: \"is-size-7\" }, [\n _vm._v(\n \"(\" + _vm._s(_vm._f(\"renderSize\")(_vm.totalMemory)) + \")\"\n )\n ])\n ])\n ],\n 1\n )\n ]),\n _vm.showMore\n ? _c(\"div\", [\n _c(\n \"div\",\n { staticClass: \"more-info pt-3 pb-1\" },\n [\n _c(\n \"b-tabs\",\n {\n model: {\n value: _vm.activeTab,\n callback: function($$v) {\n _vm.activeTab = $$v\n },\n expression: \"activeTab\"\n }\n },\n [\n _c(\n \"b-tab-item\",\n { attrs: { label: \"CPU\" } },\n _vm._l(_vm.containerCpuList, function(item) {\n return _c(\n \"div\",\n { key: item.title + item.id + \"-cpu\" },\n [\n !isNaN(item.usage)\n ? _c(\n \"div\",\n {\n staticClass:\n \"is-flex is-size-7 is-align-items-center mb-2\"\n },\n [\n _c(\n \"div\",\n {\n staticClass:\n \"is-flex-grow-1 is-flex is-align-items-center\"\n },\n [\n _c(\"b-image\", {\n staticClass: \"is-16x16 mr-2\",\n attrs: {\n lazy: false,\n src: item.icon,\n \"src-fallback\": __webpack_require__(/*! @/assets/img/app/default.png */ \"./src/assets/img/app/default.png\")\n }\n }),\n _c(\"span\", [_vm._v(_vm._s(item.title))])\n ],\n 1\n ),\n _c(\"div\", [\n _vm._v(_vm._s(item.usage) + \"%\")\n ])\n ]\n )\n : _vm._e()\n ]\n )\n }),\n 0\n ),\n _c(\n \"b-tab-item\",\n { attrs: { label: \"RAM\" } },\n _vm._l(_vm.containerRamList, function(item) {\n return _c(\n \"div\",\n { key: item.title + item.id + \"-rem\" },\n [\n !isNaN(item.usage)\n ? _c(\n \"div\",\n {\n staticClass:\n \"is-flex is-size-7 is-align-items-center mb-2\"\n },\n [\n _c(\n \"div\",\n {\n staticClass:\n \"is-flex-grow-1 is-flex is-align-items-center\"\n },\n [\n _c(\"b-image\", {\n staticClass: \"is-16x16 mr-2\",\n attrs: {\n src: item.icon,\n \"src-fallback\": __webpack_require__(/*! @/assets/img/app/default.png */ \"./src/assets/img/app/default.png\")\n }\n }),\n _c(\"span\", [_vm._v(_vm._s(item.title))])\n ],\n 1\n ),\n _c(\"div\", [\n _vm._v(\n _vm._s(_vm._f(\"renderSize\")(item.usage))\n )\n ])\n ]\n )\n : _vm._e()\n ]\n )\n }),\n 0\n )\n ],\n 1\n )\n ],\n 1\n )\n ])\n : _vm._e()\n ])\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/widgets/Cpu.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/widgets/Disks.vue?vue&type=template&id=457f6ced&": -/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/widgets/Disks.vue?vue&type=template&id=457f6ced& ***! - \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", [\n _c(\"div\", { staticClass: \"widget has-text-white disk is-relative\" }, [\n _c(\n \"div\",\n { staticClass: \"arrow-btn\", on: { click: _vm.showDiskManagement } },\n [\n _c(\"b-icon\", {\n attrs: { icon: \"cog-outline\", \"custom-size\": \"mdi-18px\" }\n })\n ],\n 1\n ),\n _c(\"div\", { staticClass: \"blur-background\" }),\n _c(\"div\", { staticClass: \"widget-content\" }, [\n _c(\"div\", { staticClass: \"columns is-mobile is-multiline pt-2 \" }, [\n _c(\n \"div\",\n { staticClass: \"column is-full pb-1\" },\n [\n _c(\"div\", { staticClass: \"is-flex\" }, [\n _c(\n \"div\",\n { staticClass: \"header-icon\" },\n [\n _c(\"b-image\", {\n staticClass: \"is-64x64\",\n attrs: {\n src: __webpack_require__(/*! @/assets/img/storage/storage.png */ \"./src/assets/img/storage/storage.png\")\n }\n })\n ],\n 1\n ),\n _c(\"div\", { staticClass: \"ml-3 is-flex-grow-1 \" }, [\n _c(\n \"h4\",\n {\n staticClass:\n \"title is-size-6-5 mb-2 mt-1 has-text-left has-text-white one-line is-align-items-center is-flex\"\n },\n [\n _vm._v(\" \" + _vm._s(_vm.$t(\"Storage\")) + \" \"),\n _vm.health\n ? _c(\n \"b\",\n {\n staticClass:\n \"has-text-success is-size-7 has-text-weight-normal ml-3\"\n },\n [_vm._v(_vm._s(_vm.$t(\"Healthy\")))]\n )\n : _c(\n \"b\",\n {\n staticClass:\n \"has-text-danger is-size-7 has-text-weight-normal ml-3\"\n },\n [_vm._v(_vm._s(_vm.$t(\"Damage\")))]\n )\n ]\n ),\n _c(\n \"p\",\n { staticClass: \"has-text-left is-size-7 mt-1 op65\" },\n [\n _vm._v(\n _vm._s(_vm.$t(\"Used\")) +\n \": \" +\n _vm._s(_vm.renderSize(_vm.totalUsed))\n ),\n _c(\"br\"),\n _vm._v(\n \" \" +\n _vm._s(_vm.$t(\"Total\")) +\n \": \" +\n _vm._s(_vm.renderSize(_vm.totalSize))\n )\n ]\n )\n ])\n ]),\n _c(\"b-progress\", {\n staticClass: \"mt-2\",\n attrs: {\n type: _vm._f(\"getProgressType\")(_vm.totalPercent),\n size: \"is-small\",\n value: _vm.totalPercent\n }\n })\n ],\n 1\n )\n ])\n ])\n ]),\n _vm.usbDisks.length > 0\n ? _c(\"div\", { staticClass: \"widget has-text-white disk is-relative\" }, [\n _c(\"div\", { staticClass: \"blur-background\" }),\n _c(\"div\", { staticClass: \"widget-content\" }, [\n _c(\n \"div\",\n { staticClass: \"columns is-mobile is-multiline pt-2 \" },\n _vm._l(_vm.usbDisks, function(item) {\n return _c(\n \"div\",\n {\n key: \"usb_\" + item.name,\n staticClass: \"column is-full pb-1\"\n },\n [\n _c(\"div\", { staticClass: \"is-flex\" }, [\n _c(\n \"div\",\n { staticClass: \"header-icon is-flex-shrink-0\" },\n [\n _c(\"b-image\", {\n staticClass: \"is-64x64\",\n attrs: {\n src: __webpack_require__(/*! @/assets/img/storage/USB.png */ \"./src/assets/img/storage/USB.png\")\n }\n })\n ],\n 1\n ),\n _c(\"div\", { staticClass: \"ml-3 is-flex-grow-1 \" }, [\n _c(\n \"h4\",\n {\n staticClass:\n \"title is-size-6-5 mb-2 mt-1 has-text-left has-text-white one-line \"\n },\n [_vm._v(\" \" + _vm._s(item.model))]\n ),\n _c(\n \"p\",\n { staticClass: \"has-text-left is-size-7 mt-1 op65\" },\n [\n _c(\"span\", [\n _vm._v(\n _vm._s(_vm.$t(\"Used\")) +\n \": \" +\n _vm._s(\n item.mount\n ? _vm.renderSize(item.use)\n : _vm.N / _vm.A\n )\n )\n ]),\n _c(\"br\"),\n _vm._v(\n \" \" +\n _vm._s(_vm.$t(\"Total\")) +\n \": \" +\n _vm._s(_vm.renderSize(item.size)) +\n \" \"\n )\n ]\n )\n ])\n ]),\n item.mount\n ? _c(\"b-progress\", {\n staticClass: \"mt-2\",\n attrs: {\n type: _vm._f(\"getProgressType\")(\n Math.floor((item.use * 100) / item.size)\n ),\n size: \"is-small\",\n value: Math.floor((item.use * 100) / item.size)\n }\n })\n : _c(\"b-progress\", {\n staticClass: \"mt-2\",\n attrs: { type: \"is-dark\", size: \"is-small\", value: 0 }\n })\n ],\n 1\n )\n }),\n 0\n )\n ])\n ])\n : _vm._e()\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/widgets/Disks.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"526b7f72-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/widgets/Network.vue?vue&type=template&id=14ad6e36&": -/*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"526b7f72-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/widgets/Network.vue?vue&type=template&id=14ad6e36& ***! - \*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"widget has-text-white clock is-relative pb-1\" },\n [\n _c(\"div\", { staticClass: \"blur-background\" }),\n _c(\"div\", { staticClass: \"network\" }, [\n _c(\"div\", { staticClass: \"is-flex pt-4\" }, [\n _c(\n \"div\",\n { staticClass: \"ml-4 is-flex-grow-1\" },\n [\n _c(\n \"b-dropdown\",\n {\n staticClass: \"netowrk-dropdown\",\n attrs: { \"aria-role\": \"list\", animation: \"fade1\" },\n scopedSlots: _vm._u([\n {\n key: \"trigger\",\n fn: function(ref) {\n var active = ref.active\n return [\n _c(\"b-button\", {\n attrs: {\n label: _vm.initNetwork[_vm.networkId].name,\n type: \"is-primary\",\n \"icon-right\": active\n ? \"chevron-up\"\n : \"chevron-down\"\n }\n })\n ]\n }\n }\n ]),\n model: {\n value: _vm.networkId,\n callback: function($$v) {\n _vm.networkId = $$v\n },\n expression: \"networkId\"\n }\n },\n _vm._l(_vm.initNetwork, function(item, index) {\n return _c(\n \"b-dropdown-item\",\n {\n key: \"net\" + index,\n attrs: { \"aria-role\": \"listitem\", value: index }\n },\n [_vm._v(_vm._s(item.name))]\n )\n }),\n 1\n )\n ],\n 1\n ),\n _c(\n \"div\",\n {\n staticClass:\n \" is-flex-shrink-0 mr-4 is-size-7 is-flex is-align-items-center\"\n },\n [\n _c(\n \"div\",\n [\n _c(\"b-icon\", {\n staticClass: \"up\",\n attrs: { icon: \"arrow-up-bold\", size: \"is-small\" }\n }),\n _vm._v(\n \" \" +\n _vm._s(_vm._f(\"renderSize\")(_vm.currentUpSpeed * 1024)) +\n \"/s \"\n ),\n _c(\"b-icon\", {\n staticClass: \"down ml-2\",\n attrs: { icon: \"arrow-down-bold\", size: \"is-small\" }\n }),\n _vm._v(\n \" \" +\n _vm._s(\n _vm._f(\"renderSize\")(_vm.currentDownSpeed * 1024)\n ) +\n \"/s \"\n )\n ],\n 1\n )\n ]\n )\n ]),\n _c(\n \"div\",\n { staticClass: \"chart-container\" },\n [\n _c(\"vue-apex-charts\", {\n ref: \"chart\",\n attrs: {\n type: \"area\",\n height: \"130\",\n options: _vm.chartOptions,\n series: _vm.networks[_vm.networkId]\n }\n })\n ],\n 1\n )\n ])\n ]\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/widgets/Network.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22526b7f72-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/codemirror/addon/comment/comment.js": -/*!**********************************************************!*\ - !*** ./node_modules/codemirror/addon/comment/comment.js ***! - \**********************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (true) // CommonJS\n mod(__webpack_require__(/*! ../../lib/codemirror */ \"./node_modules/codemirror/lib/codemirror.js\"));\n else {}\n})(function(CodeMirror) {\n \"use strict\";\n\n var noOptions = {};\n var nonWS = /[^\\s\\u00a0]/;\n var Pos = CodeMirror.Pos, cmp = CodeMirror.cmpPos;\n\n function firstNonWS(str) {\n var found = str.search(nonWS);\n return found == -1 ? 0 : found;\n }\n\n CodeMirror.commands.toggleComment = function(cm) {\n cm.toggleComment();\n };\n\n CodeMirror.defineExtension(\"toggleComment\", function(options) {\n if (!options) options = noOptions;\n var cm = this;\n var minLine = Infinity, ranges = this.listSelections(), mode = null;\n for (var i = ranges.length - 1; i >= 0; i--) {\n var from = ranges[i].from(), to = ranges[i].to();\n if (from.line >= minLine) continue;\n if (to.line >= minLine) to = Pos(minLine, 0);\n minLine = from.line;\n if (mode == null) {\n if (cm.uncomment(from, to, options)) mode = \"un\";\n else { cm.lineComment(from, to, options); mode = \"line\"; }\n } else if (mode == \"un\") {\n cm.uncomment(from, to, options);\n } else {\n cm.lineComment(from, to, options);\n }\n }\n });\n\n // Rough heuristic to try and detect lines that are part of multi-line string\n function probablyInsideString(cm, pos, line) {\n return /\\bstring\\b/.test(cm.getTokenTypeAt(Pos(pos.line, 0))) && !/^[\\'\\\"\\`]/.test(line)\n }\n\n function getMode(cm, pos) {\n var mode = cm.getMode()\n return mode.useInnerComments === false || !mode.innerMode ? mode : cm.getModeAt(pos)\n }\n\n CodeMirror.defineExtension(\"lineComment\", function(from, to, options) {\n if (!options) options = noOptions;\n var self = this, mode = getMode(self, from);\n var firstLine = self.getLine(from.line);\n if (firstLine == null || probablyInsideString(self, from, firstLine)) return;\n\n var commentString = options.lineComment || mode.lineComment;\n if (!commentString) {\n if (options.blockCommentStart || mode.blockCommentStart) {\n options.fullLines = true;\n self.blockComment(from, to, options);\n }\n return;\n }\n\n var end = Math.min(to.ch != 0 || to.line == from.line ? to.line + 1 : to.line, self.lastLine() + 1);\n var pad = options.padding == null ? \" \" : options.padding;\n var blankLines = options.commentBlankLines || from.line == to.line;\n\n self.operation(function() {\n if (options.indent) {\n var baseString = null;\n for (var i = from.line; i < end; ++i) {\n var line = self.getLine(i);\n var whitespace = line.slice(0, firstNonWS(line));\n if (baseString == null || baseString.length > whitespace.length) {\n baseString = whitespace;\n }\n }\n for (var i = from.line; i < end; ++i) {\n var line = self.getLine(i), cut = baseString.length;\n if (!blankLines && !nonWS.test(line)) continue;\n if (line.slice(0, cut) != baseString) cut = firstNonWS(line);\n self.replaceRange(baseString + commentString + pad, Pos(i, 0), Pos(i, cut));\n }\n } else {\n for (var i = from.line; i < end; ++i) {\n if (blankLines || nonWS.test(self.getLine(i)))\n self.replaceRange(commentString + pad, Pos(i, 0));\n }\n }\n });\n });\n\n CodeMirror.defineExtension(\"blockComment\", function(from, to, options) {\n if (!options) options = noOptions;\n var self = this, mode = getMode(self, from);\n var startString = options.blockCommentStart || mode.blockCommentStart;\n var endString = options.blockCommentEnd || mode.blockCommentEnd;\n if (!startString || !endString) {\n if ((options.lineComment || mode.lineComment) && options.fullLines != false)\n self.lineComment(from, to, options);\n return;\n }\n if (/\\bcomment\\b/.test(self.getTokenTypeAt(Pos(from.line, 0)))) return\n\n var end = Math.min(to.line, self.lastLine());\n if (end != from.line && to.ch == 0 && nonWS.test(self.getLine(end))) --end;\n\n var pad = options.padding == null ? \" \" : options.padding;\n if (from.line > end) return;\n\n self.operation(function() {\n if (options.fullLines != false) {\n var lastLineHasText = nonWS.test(self.getLine(end));\n self.replaceRange(pad + endString, Pos(end));\n self.replaceRange(startString + pad, Pos(from.line, 0));\n var lead = options.blockCommentLead || mode.blockCommentLead;\n if (lead != null) for (var i = from.line + 1; i <= end; ++i)\n if (i != end || lastLineHasText)\n self.replaceRange(lead + pad, Pos(i, 0));\n } else {\n var atCursor = cmp(self.getCursor(\"to\"), to) == 0, empty = !self.somethingSelected()\n self.replaceRange(endString, to);\n if (atCursor) self.setSelection(empty ? to : self.getCursor(\"from\"), to)\n self.replaceRange(startString, from);\n }\n });\n });\n\n CodeMirror.defineExtension(\"uncomment\", function(from, to, options) {\n if (!options) options = noOptions;\n var self = this, mode = getMode(self, from);\n var end = Math.min(to.ch != 0 || to.line == from.line ? to.line : to.line - 1, self.lastLine()), start = Math.min(from.line, end);\n\n // Try finding line comments\n var lineString = options.lineComment || mode.lineComment, lines = [];\n var pad = options.padding == null ? \" \" : options.padding, didSomething;\n lineComment: {\n if (!lineString) break lineComment;\n for (var i = start; i <= end; ++i) {\n var line = self.getLine(i);\n var found = line.indexOf(lineString);\n if (found > -1 && !/comment/.test(self.getTokenTypeAt(Pos(i, found + 1)))) found = -1;\n if (found == -1 && nonWS.test(line)) break lineComment;\n if (found > -1 && nonWS.test(line.slice(0, found))) break lineComment;\n lines.push(line);\n }\n self.operation(function() {\n for (var i = start; i <= end; ++i) {\n var line = lines[i - start];\n var pos = line.indexOf(lineString), endPos = pos + lineString.length;\n if (pos < 0) continue;\n if (line.slice(endPos, endPos + pad.length) == pad) endPos += pad.length;\n didSomething = true;\n self.replaceRange(\"\", Pos(i, pos), Pos(i, endPos));\n }\n });\n if (didSomething) return true;\n }\n\n // Try block comments\n var startString = options.blockCommentStart || mode.blockCommentStart;\n var endString = options.blockCommentEnd || mode.blockCommentEnd;\n if (!startString || !endString) return false;\n var lead = options.blockCommentLead || mode.blockCommentLead;\n var startLine = self.getLine(start), open = startLine.indexOf(startString)\n if (open == -1) return false\n var endLine = end == start ? startLine : self.getLine(end)\n var close = endLine.indexOf(endString, end == start ? open + startString.length : 0);\n var insideStart = Pos(start, open + 1), insideEnd = Pos(end, close + 1)\n if (close == -1 ||\n !/comment/.test(self.getTokenTypeAt(insideStart)) ||\n !/comment/.test(self.getTokenTypeAt(insideEnd)) ||\n self.getRange(insideStart, insideEnd, \"\\n\").indexOf(endString) > -1)\n return false;\n\n // Avoid killing block comments completely outside the selection.\n // Positions of the last startString before the start of the selection, and the first endString after it.\n var lastStart = startLine.lastIndexOf(startString, from.ch);\n var firstEnd = lastStart == -1 ? -1 : startLine.slice(0, from.ch).indexOf(endString, lastStart + startString.length);\n if (lastStart != -1 && firstEnd != -1 && firstEnd + endString.length != from.ch) return false;\n // Positions of the first endString after the end of the selection, and the last startString before it.\n firstEnd = endLine.indexOf(endString, to.ch);\n var almostLastStart = endLine.slice(to.ch).lastIndexOf(startString, firstEnd - to.ch);\n lastStart = (firstEnd == -1 || almostLastStart == -1) ? -1 : to.ch + almostLastStart;\n if (firstEnd != -1 && lastStart != -1 && lastStart != to.ch) return false;\n\n self.operation(function() {\n self.replaceRange(\"\", Pos(end, close - (pad && endLine.slice(close - pad.length, close) == pad ? pad.length : 0)),\n Pos(end, close + endString.length));\n var openEnd = open + startString.length;\n if (pad && startLine.slice(openEnd, openEnd + pad.length) == pad) openEnd += pad.length;\n self.replaceRange(\"\", Pos(start, open), Pos(start, openEnd));\n if (lead) for (var i = start + 1; i <= end; ++i) {\n var line = self.getLine(i), found = line.indexOf(lead);\n if (found == -1 || nonWS.test(line.slice(0, found))) continue;\n var foundEnd = found + lead.length;\n if (pad && line.slice(foundEnd, foundEnd + pad.length) == pad) foundEnd += pad.length;\n self.replaceRange(\"\", Pos(i, found), Pos(i, foundEnd));\n }\n });\n return true;\n });\n});\n\n\n//# sourceURL=webpack:///./node_modules/codemirror/addon/comment/comment.js?"); - -/***/ }), - -/***/ "./node_modules/codemirror/addon/dialog/dialog.css": -/*!*********************************************************!*\ - !*** ./node_modules/codemirror/addon/dialog/dialog.css ***! - \*********************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("// style-loader: Adds some css to the DOM by adding a