\n ),\n threshold: 10240,\n minRatio: 0.8\n })\n )\n}\n\nif (config.build.bundleAnalyzerReport) {\n const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin\n webpackConfig.plugins.push(new BundleAnalyzerPlugin())\n}\n\nmodule.exports = webpackConfig\n","id":"a7126d28-5297-41e2-8b73-5dba663a1821","is_binary":false,"title":"webpack.prod.conf.js","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"SkA77-Nuy-8","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"HylgXW4dy-I"},{"code":"'use strict'\nconst path = require('path')\nconst utils = require('.\u002Futils')\nconst webpack = require('webpack')\nconst config = require('..\u002Fconfig')\nconst merge = require('webpack-merge')\nconst baseWebpackConfig = require('.\u002Fwebpack.base.conf')\nconst CopyWebpackPlugin = require('copy-webpack-plugin')\nconst HtmlWebpackPlugin = require('html-webpack-plugin')\nconst ExtractTextPlugin = require('extract-text-webpack-plugin')\nconst OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin')\nconst UglifyJsPlugin = require('uglifyjs-webpack-plugin')\n\nconst env = process.env.NODE_ENV = require('..\u002Fconfig\u002Fe.env')\n\nconst webpackConfig = merge(baseWebpackConfig, {\n module: {\n rules: utils.styleLoaders({\n sourceMap: config.build.productionSourceMap,\n extract: true,\n usePostCSS: true\n })\n },\n devtool: config.build.productionSourceMap ? config.build.devtool : false,\n output: {\n path: config.build.assetsRoot,\n filename: utils.assetsPath('js\u002F[name].[chunkhash].js'),\n chunkFilename: utils.assetsPath('js\u002F[id].[chunkhash].js')\n },\n plugins: [\n \u002F\u002F http:\u002F\u002Fvuejs.github.io\u002Fvue-loader\u002Fen\u002Fworkflow\u002Fproduction.html\n new webpack.DefinePlugin({\n 'process.env': env\n }),\n new UglifyJsPlugin({\n uglifyOptions: {\n compress: {\n warnings: false\n }\n },\n sourceMap: config.build.productionSourceMap,\n parallel: true\n }),\n \u002F\u002F extract css into its own file\n new ExtractTextPlugin({\n filename: utils.assetsPath('css\u002F[name].[contenthash].css'),\n \u002F\u002F Setting the following option to `false` will not extract CSS from codesplit chunks.\n \u002F\u002F Their CSS will instead be inserted dynamically with style-loader when the codesplit chunk has been loaded by webpack.\n \u002F\u002F It's currently set to `true` because we are seeing that sourcemaps are included in the codesplit bundle as well when it's `false`, \n \u002F\u002F increasing file size: https:\u002F\u002Fgithub.com\u002Fvuejs-templates\u002Fwebpack\u002Fissues\u002F1110\n allChunks: true,\n }),\n \u002F\u002F Compress extracted CSS. We are using this plugin so that possible\n \u002F\u002F duplicated CSS from different components can be deduped.\n new OptimizeCSSPlugin({\n cssProcessorOptions: config.build.productionSourceMap\n ? { safe: true, map: { inline: false } }\n : { safe: true }\n }),\n \u002F\u002F generate dist index.html with correct asset hash for caching.\n \u002F\u002F you can customize output by editing \u002Findex.html\n \u002F\u002F see https:\u002F\u002Fgithub.com\u002Fampedandwired\u002Fhtml-webpack-plugin\n new HtmlWebpackPlugin({\n filename: process.env.NODE_ENV === 'testing'\n ? 'index.html'\n : config.build.index,\n template: 'index.html',\n inject: true,\n minify: {\n removeComments: true,\n collapseWhitespace: true,\n removeAttributeQuotes: true\n \u002F\u002F more options:\n \u002F\u002F https:\u002F\u002Fgithub.com\u002Fkangax\u002Fhtml-minifier#options-quick-reference\n },\n \u002F\u002F necessary to consistently work with multiple chunks via CommonsChunkPlugin\n chunksSortMode: 'dependency'\n }),\n \u002F\u002F keep module.id stable when vendor modules does not change\n new webpack.HashedModuleIdsPlugin(),\n \u002F\u002F enable scope hoisting\n new webpack.optimize.ModuleConcatenationPlugin(),\n \u002F\u002F split vendor js into its own file\n new webpack.optimize.CommonsChunkPlugin({\n name: 'vendor',\n minChunks (module) {\n \u002F\u002F any required modules inside node_modules are extracted to vendor\n return (\n module.resource &&\n \u002F\\.js$\u002F.test(module.resource) &&\n module.resource.indexOf(\n path.join(__dirname, '..\u002Fnode_modules')\n ) === 0\n )\n }\n }),\n \u002F\u002F extract webpack runtime and module manifest to its own file in order to\n \u002F\u002F prevent vendor hash from being updated whenever app bundle is updated\n new webpack.optimize.CommonsChunkPlugin({\n name: 'manifest',\n minChunks: Infinity\n }),\n \u002F\u002F This instance extracts shared chunks from code splitted chunks and bundles them\n \u002F\u002F in a separate chunk, similar to the vendor chunk\n \u002F\u002F see: https:\u002F\u002Fwebpack.js.org\u002Fplugins\u002Fcommons-chunk-plugin\u002F#extra-async-commons-chunk\n new webpack.optimize.CommonsChunkPlugin({\n name: 'app',\n async: 'vendor-async',\n children: true,\n minChunks: 3\n }),\n\n \u002F\u002F copy custom static assets\n new CopyWebpackPlugin([\n {\n from: path.resolve(__dirname, '..\u002Fstatic'),\n to: config.build.assetsSubDirectory,\n ignore: ['.*']\n }\n ])\n ]\n})\n\nif (config.build.productionGzip) {\n const CompressionWebpackPlugin = require('compression-webpack-plugin')\n\n webpackConfig.plugins.push(\n new CompressionWebpackPlugin({\n asset: '[path].gz[query]',\n algorithm: 'gzip',\n test: new RegExp(\n '\\\\.(' +\n config.build.productionGzipExtensions.join('|') +\n ')
\n ),\n threshold: 10240,\n minRatio: 0.8\n })\n )\n}\n\nif (config.build.bundleAnalyzerReport) {\n const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin\n webpackConfig.plugins.push(new BundleAnalyzerPlugin())\n}\n\nmodule.exports = webpackConfig\n","id":"11df3aff-95d4-4f64-96dc-d947bed37ca2","is_binary":false,"title":"webpack.prod.electron.conf.js","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"Sy1EXbNOJb8","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"HylgXW4dy-I"},{"code":"'use strict'\nconst merge = require('webpack-merge')\nconst prodEnv = require('.\u002Fprod.env')\n\nmodule.exports = merge(prodEnv, {\n NODE_ENV: '\"development\"',\n LINX_AGENT: '\"cordova\"'\n})\n","id":"89ca8359-7dfb-401b-9207-9a68d21123cb","is_binary":false,"title":"c.env.js","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"r1lEmZNdJbI","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"r1-lXZNOJWU"},{"code":"'use strict'\nconst merge = require('webpack-merge')\nconst prodEnv = require('.\u002Fprod.env')\n\nmodule.exports = merge(prodEnv, {\n NODE_ENV: '\"development\"'\n})\n","id":"3d39d2b2-de05-4b6d-a53f-751fae05c090","is_binary":false,"title":"dev.env.js","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"r1bV7-Vu1-L","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"r1-lXZNOJWU"},{"code":"'use strict'\nconst merge = require('webpack-merge')\nconst prodEnv = require('.\u002Fprod.env')\n\nmodule.exports = merge(prodEnv, {\n LINX_AGENT: '\"electron\"'\n})\n","id":"9897c387-58f8-499a-97c3-3e2e5e9ac682","is_binary":false,"title":"e.env.js","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"HJfV7-4dyZU","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"r1-lXZNOJWU"},{"code":"https:\u002F\u002Frawcdn.githack.com\u002Fscris\u002Fscristask\u002Fddc85a3565dad88c47220510cd9d4854258d4970\u002Fapp\u002Fres\u002Fscreen\u002Fblackberry10\u002Fsplash-1280x768.png","id":"ea3ad13f-8b17-469a-96f6-96fdfbdd3144","is_binary":true,"title":"splash-1280x768.png","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"Bk4U7bEuJZL","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"H1kZQZ4_ybI"},{"code":"https:\u002F\u002Frawcdn.githack.com\u002Fscris\u002Fscristask\u002Fddc85a3565dad88c47220510cd9d4854258d4970\u002Fapp\u002Fres\u002Fscreen\u002Fblackberry10\u002Fsplash-768x1280.png","id":"32448b94-33e7-4e35-ada6-5580b3ba563a","is_binary":true,"title":"splash-768x1280.png","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"SySUmWEdJbI","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"H1kZQZ4_ybI"},{"code":"https:\u002F\u002Frawcdn.githack.com\u002Fscris\u002Fscristask\u002Fddc85a3565dad88c47220510cd9d4854258d4970\u002Fsrc\u002Fassets\u002Fding.mp3","id":"c1c38e57-1c33-48cc-882d-1e5c8d3e33bb","is_binary":true,"title":"ding.mp3","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"HJ8IXZVuy-I","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"Bk7gm-EOJbU"},{"code":"https:\u002F\u002Frawcdn.githack.com\u002Fscris\u002Fscristask\u002Fddc85a3565dad88c47220510cd9d4854258d4970\u002Fapp\u002Fres\u002Fscreen\u002Fandroid\u002Fscreen-mdpi-landscape.png","id":"8d00c2ce-b1c3-4c95-9b64-870e75eecef8","is_binary":true,"title":"screen-mdpi-landscape.png","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"ByPLQ-N_y-L","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"Sy0xQZN_JZU"},{"code":"https:\u002F\u002Frawcdn.githack.com\u002Fscris\u002Fscristask\u002Fddc85a3565dad88c47220510cd9d4854258d4970\u002Fapp\u002Fres\u002Fscreen\u002Fandroid\u002Fscreen-mdpi-portrait.png","id":"76a6d182-cd75-4a1e-9213-ea2cadde4aac","is_binary":true,"title":"screen-mdpi-portrait.png","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"SJOUmZVuJ-8","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"Sy0xQZN_JZU"},{"code":"https:\u002F\u002Frawcdn.githack.com\u002Fscris\u002Fscristask\u002Fddc85a3565dad88c47220510cd9d4854258d4970\u002Fapp\u002Fres\u002Fscreen\u002Fbada-wac\u002Fscreen-type3.png","id":"bb3d7b02-af75-44c4-ade1-36e359941aec","is_binary":true,"title":"screen-type3.png","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"BkKIXbVdJb8","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"BJlZQbEd1ZI"},{"code":"https:\u002F\u002Frawcdn.githack.com\u002Fscris\u002Fscristask\u002Fddc85a3565dad88c47220510cd9d4854258d4970\u002Fapp\u002Fres\u002Fscreen\u002Fbada-wac\u002Fscreen-type5.png","id":"007ae045-3101-46e7-945d-05171f4ee240","is_binary":true,"title":"screen-type5.png","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"H1cUmb4_k-L","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"BJlZQbEd1ZI"},{"code":"https:\u002F\u002Frawcdn.githack.com\u002Fscris\u002Fscristask\u002Fddc85a3565dad88c47220510cd9d4854258d4970\u002Fsrc\u002Fassets\u002Fpic.png","id":"f83e7355-fd4e-4358-ab69-34566486d87c","is_binary":true,"title":"pic.png","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"ByiI7WVdkW8","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"Bk7gm-EOJbU"},{"code":"https:\u002F\u002Frawcdn.githack.com\u002Fscris\u002Fscristask\u002Fddc85a3565dad88c47220510cd9d4854258d4970\u002Fapp\u002Fres\u002Fscreen\u002Fios\u002FDefault@2x~universal~anyany.png","id":"f244761a-ae95-4694-b6a8-711b74e90be2","is_binary":true,"title":"Default@2x~universal~anyany.png","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"rknU7Z4_yZL","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"B1ZbQWVu1WI"},{"code":"https:\u002F\u002Frawcdn.githack.com\u002Fscris\u002Fscristask\u002Fddc85a3565dad88c47220510cd9d4854258d4970\u002Fapp\u002Fres\u002Fscreen\u002Fandroid\u002Fscreen-hdpi-landscape.png","id":"c384fe17-145e-4020-998a-13f7adf56509","is_binary":true,"title":"screen-hdpi-landscape.png","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"rJpU7-V_JZU","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"Sy0xQZN_JZU"},{"code":"","id":"ad48f01f-a59a-4598-9fd2-507d9e161cb6","is_binary":false,"title":".gitkeep","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"SJQbXZEd1WU","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"Sy7-Ndk-U"},{"code":"{\n \"presets\": [\n [\"env\", {\n \"modules\": false,\n \"targets\": {\n \"browsers\": [\"\u003E 1%\", \"last 2 versions\", \"not ie \u003C= 8\"]\n }\n }],\n \"stage-2\"\n ],\n \"plugins\": [\"transform-vue-jsx\", \"transform-runtime\"],\n \"env\": {\n \"test\": {\n \"presets\": [\"env\", \"stage-2\"],\n \"plugins\": [\"transform-vue-jsx\", \"transform-es2015-modules-commonjs\", \"dynamic-import-node\"]\n }\n }\n}\n","id":"a4f0a52b-75cf-4ea6-9678-1b6d7127b6dd","is_binary":false,"title":".babelrc","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"SkNbmW4_1-8","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":null},{"code":"root = true\n\n[*]\ncharset = utf-8\nindent_style = space\nindent_size = 2\nend_of_line = lf\ninsert_final_newline = true\ntrim_trailing_whitespace = true\n","id":"04596c7b-6c05-405e-945c-daa1a021c119","is_binary":false,"title":".editorconfig","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"r1rWm-EuyW8","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":null},{"code":"\u002Fbuild\u002F\n\u002Fconfig\u002F\n\u002Fdist\u002F\n\u002F*.js\n\u002Ftest\u002Funit\u002Fcoverage\u002F\n","id":"849e617a-5fd8-4b29-a44f-1d6c8a759d8e","is_binary":false,"title":".eslintignore","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"Sk8-XWNuJZU","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":null},{"code":"\u002F\u002F https:\u002F\u002Feslint.org\u002Fdocs\u002Fuser-guide\u002Fconfiguring\n\nmodule.exports = {\n root: true,\n parserOptions: {\n parser: 'babel-eslint'\n },\n env: {\n browser: true,\n },\n \u002F\u002F https:\u002F\u002Fgithub.com\u002Fvuejs\u002Feslint-plugin-vue#priority-a-essential-error-prevention\n \u002F\u002F consider switching to `plugin:vue\u002Fstrongly-recommended` or `plugin:vue\u002Frecommended` for stricter rules.\n extends: ['plugin:vue\u002Fessential', 'airbnb-base'],\n \u002F\u002F required to lint *.vue files\n plugins: [\n 'vue'\n ],\n \u002F\u002F check if imports actually resolve\n settings: {\n 'import\u002Fresolver': {\n webpack: {\n config: 'build\u002Fwebpack.base.conf.js'\n }\n }\n },\n \u002F\u002F add your custom rules here\n rules: {\n \u002F\u002F don't require .vue extension when importing\n 'import\u002Fextensions': ['error', 'always', {\n js: 'never',\n vue: 'never'\n }],\n \u002F\u002F disallow reassignment of function parameters\n \u002F\u002F disallow parameter object manipulation except for specific exclusions\n 'no-param-reassign': ['error', {\n props: true,\n ignorePropertyModificationsFor: [\n 'state', \u002F\u002F for vuex state\n 'acc', \u002F\u002F for reduce accumulators\n 'e' \u002F\u002F for e.returnvalue\n ]\n }],\n \u002F\u002F allow optionalDependencies\n 'import\u002Fno-extraneous-dependencies': ['error', {\n optionalDependencies: ['test\u002Funit\u002Findex.js']\n }],\n \u002F\u002F allow debugger during development\n 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off'\n }\n}\n","id":"ebc06982-b111-43c3-afb6-c0926a55e210","is_binary":false,"title":".eslintrc.js","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"SkDZ7bEO1ZU","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":null},{"code":".DS_Store\nnode_modules\u002F\ndist\u002F\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\ntest\u002Funit\u002Fcoverage\ntest\u002Fe2e\u002Freports\nselenium-debug.log\nimage\n.vscode\u002F\nscristask-darwin-x64\u002F\npackage-lock.json\napp\u002Fwww\u002F\napp\u002Fplatforms\u002F\napp\u002Fplugins\u002F","id":"7f7cb4bc-6c71-4e81-ba08-6bded13bac36","is_binary":false,"title":".gitignore","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"S1dW7W4dyWU","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":null},{"code":"\n## Build Setup\n\nthe same as building \u003Chttps:\u002F\u002Fgithub.com\u002FScrisStudio\u002Flinx.vue\u003E\n\n[Have a Try](https:\u002F\u002Ftask.scris.top\u002F)\n\n![dominikmade](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDeveloped%20by-Dominik%20Qiu-brightgreen.svg)\n\n![rv](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Frelease\u002Fscris\u002Fscristask.svg)\n\n### If you wanna copy it to your server or you find the task.scris.top server has ran out of flow\n1. Fork the proj\n2. Register an Leancloud account\n3. Open src\u002Fcomponents\u002Fregister.vue\n4. Make APPID & APPKEY your own. (On Line 16&17)\n5. If your Leancloud App is not in the US node, delete \u003Ccode\u003Eregion: 'us'\u003C\u002Fcode\u003E\n6. Wait for some time, and you can use your own Scris Task.\n\nCopyright © 2015-2019 Scris Studio.\n","id":"f72983f2-b358-4cf2-9c61-58ac3fd6f869","is_binary":false,"title":"README.md","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"B1F-mbEOkZI","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":null},{"code":"# OS X\n.DS_Store\n","id":"06f5f17b-7efc-4d81-8a10-18333edc435e","is_binary":false,"title":".npmignore","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"HJ9WXbNukbI","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"Syg7-Vu1-8"},{"code":"\u003C?xml version='1.0' encoding='utf-8'?\u003E\n\u003Cwidget id=\"com.scrisstudio\" version=\"1.0.0\" xmlns=\"http:\u002F\u002Fwww.w3.org\u002Fns\u002Fwidgets\" xmlns:cdv=\"http:\u002F\u002Fcordova.apache.org\u002Fns\u002F1.0\"\u003E\n \u003Cname\u003ELinx Example\u003C\u002Fname\u003E\n \u003Cdescription\u003E\n A sample Apache Cordova application.\n \u003C\u002Fdescription\u003E\n \u003Cauthor email=\"slaaker@126.com\" href=\"http:\u002F\u002Fscris.top\"\u003E\n Dominik Qiu from Scris Studio\n \u003C\u002Fauthor\u003E\n \u003Ccontent src=\"index.html\" \u002F\u003E\n \u003Caccess origin=\"*\" \u002F\u003E\n \u003Callow-intent href=\"http:\u002F\u002F*\u002F*\" \u002F\u003E\n \u003Callow-intent href=\"https:\u002F\u002F*\u002F*\" \u002F\u003E\n \u003Callow-intent href=\"tel:*\" \u002F\u003E\n \u003Callow-intent href=\"sms:*\" \u002F\u003E\n \u003Callow-intent href=\"mailto:*\" \u002F\u003E\n \u003Callow-intent href=\"geo:*\" \u002F\u003E\n \u003Cplatform name=\"android\"\u003E\n \u003Callow-intent href=\"market:*\" \u002F\u003E\n \u003C\u002Fplatform\u003E\n \u003Cplatform name=\"ios\"\u003E\n \u003Callow-intent href=\"itms:*\" \u002F\u003E\n \u003Callow-intent href=\"itms-apps:*\" \u002F\u003E\n \u003Csplash src=\"res\u002Fscreen\u002Fios\u002FDefault@2x~universal~anyany.png\" \u002F\u003E\n \u003C\u002Fplatform\u003E\n \u003Cpreference name=\"StatusBarStyle\" value=\"lightcontent\" \u002F\u003E\n \u003Cplugin name=\"cordova-plugin-whitelist\" spec=\"1\" \u002F\u003E\n \u003Cplugin name=\"cordova-plugin-dialogs\" spec=\"~2.0.1\" \u002F\u003E\n \u003Cplugin name=\"cordova-plugin-statusbar\" spec=\"~2.4.2\" \u002F\u003E\n \u003Cengine name=\"browser\" spec=\"^5.0.4\" \u002F\u003E\n\u003C\u002Fwidget\u003E\n","id":"6d797b3e-f436-4733-8f54-c82c31e2a2a4","is_binary":false,"title":"config.xml","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"BkoWmZEu1bU","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"Syg7-Vu1-8"},{"code":"\u003C!--\n#\n# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements. See the NOTICE file\n# distributed with this work for additional information\n# regarding copyright ownership. The ASF licenses this file\n# to you under the Apache License, Version 2.0 (the\n# \"License\"); you may not use this file except in compliance\n# with the License. You may obtain a copy of the License at\n#\n# http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing,\n# software distributed under the License is distributed on an\n# \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n# KIND, either express or implied. See the License for the\n# specific language governing permissions and limitations\n# under the License.\n#\n--\u003E\n# Cordova Hooks\n\nCordova Hooks represent special scripts which could be added by application and plugin developers or even by your own build system to customize cordova commands. See Hooks Guide for more details: http:\u002F\u002Fcordova.apache.org\u002Fdocs\u002Fen\u002Fedge\u002Fguide_appdev_hooks_index.md.html#Hooks%20Guide.\n","id":"c5d0534f-acdc-4565-ae40-9a8e1c0e8e15","is_binary":false,"title":"README.md","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"r12bXb4dJb8","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"BJb7ZVOJbU"},{"code":"{\n \"name\": \"scristask-vue\",\n \"version\": \"1.10.0\",\n \"description\": \"The Vue.js remake version of Scris Task \",\n \"author\": \"Dominik \u003Cslaaker@126.com\u003E\",\n \"license\": null,\n \"main\": \"index.js\",\n \"private\": true,\n \"scripts\": {\n \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\"\n },\n \"dependencies\": {\n \"cordova-browser\": \"^5.0.4\",\n \"cordova-plugin-dialogs\": \"^2.0.1\",\n \"cordova-plugin-statusbar\": \"^2.4.2\",\n \"cordova-plugin-whitelist\": \"^1.3.3\"\n },\n \"cordova\": {\n \"plugins\": {\n \"cordova-plugin-whitelist\": {},\n \"cordova-plugin-dialogs\": {},\n \"cordova-plugin-statusbar\": {}\n },\n \"platforms\": [\n \"browser\"\n ]\n }\n}","id":"a5bab4e0-4c36-4f04-a5d5-52a5e73887c2","is_binary":false,"title":"package.json","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"rkpZQb4ukb8","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"Syg7-Vu1-8"},{"code":"'use strict'\nmodule.exports = {\n NODE_ENV: '\"production\"'\n}\n","id":"b2b953e9-5015-4777-a4f4-05855098f0e0","is_binary":false,"title":"prod.env.js","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"H1NEXWEuyZ8","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"r1-lXZNOJWU"},{"code":"'use strict'\nconst merge = require('webpack-merge')\nconst devEnv = require('.\u002Fdev.env')\n\nmodule.exports = merge(devEnv, {\n NODE_ENV: '\"testing\"'\n})\n","id":"24913526-0672-4267-b9ed-ff6cdfe57490","is_binary":false,"title":"test.env.js","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"ryHE7WNdk-I","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"r1-lXZNOJWU"},{"code":"\u003C!DOCTYPE html\u003E\n\u003Chtml\u003E\n \u003Chead\u003E\n \u003Cmeta charset=\"utf-8\"\u003E\n \u003Cmeta name=\"viewport\" content=\"initial-scale=1, width=device-width, height=device-height, maximum-scale=1, minimum-scale=1, user-scalable=no, viewport-fit=cover\"\u003E\n \u003Cmeta name=\"format-detection\" content=\"telephone=no\"\u003E\n \u003Ctitle\u003EScris Task\u003C\u002Ftitle\u003E\n \u003Cstyle\u003E\n body {\n background-color: #fdfdfd;\n background-repeat: no-repeat;\n background-position-x: center;\n background-position-y: 100%;\n background-attachment: fixed;\n background-size: 100% auto;\n padding-top: constant(safe-area-inset-top);\n padding-bottom: constant(safe-area-inset-bottom);\n padding-top: env(safe-area-inset-top);\n padding-bottom: env(safe-area-inset-bottom);\n font-family: \"Helvetica Neue\",Helvetica,\"PingFang SC\",\"Hiragino Sans GB\",\"Microsoft YaHei\",\"微软雅黑\",Arial,sans-serif;\n font-size: 32px;\n text-align: center;\n }\n .today {\n align-content: center;\n text-align: center;\n }\n a:link {\n color: rgb(168, 168, 168);\n text-decoration: none;\n }\n a:visited {\n color: rgb(114, 114, 114);\n text-decoration: none;\n }\n a:hover {\n color: rgb(179, 179, 179);\n text-decoration: underline;\n }\n a:active {\n color: rgb(0, 0, 0);\n text-decoration: underline;\n }\n .text {\n font-size: 14px;\n }\n *, *:before, *:after { \n max-height: 100000px; \n }\n #footer {\n margin: 2em 0 0 0;\n }\n #footer span {\n color: dimgrey;\n }\n .input {\n width: 15em;\n display: inline-block;\n -webkit-box-sizing: content-box;\n -moz-box-sizing: content-box;\n box-sizing: content-box;\n border: 0 solid #b7b7b7;\n -webkit-border-radius: 3px;\n border-radius: 3px;\n font: normal normal 17px\u002Fnormal Arial, Helvetica, sans-serif;\n color: rgba(0,0,0,1);\n -o-text-overflow: clip;\n text-overflow: clip;\n background: rgba(252,252,252,1);\n text-shadow: 1px 1px 0 rgba(255,255,255,0.66) ;\n -webkit-transition: all 200ms cubic-bezier(0.42, 0, 0.58, 1);\n -moz-transition: all 200ms cubic-bezier(0.42, 0, 0.58, 1);\n -o-transition: all 200ms cubic-bezier(0.42, 0, 0.58, 1);\n transition: all 200ms cubic-bezier(0.42, 0, 0.58, 1);\n }\n .inputsmall {\n width: 8em;\n }\n .button {\n display: inline-block;\n -webkit-box-sizing: content-box;\n -moz-box-sizing: content-box;\n box-sizing: content-box;\n cursor: pointer;\n padding: 0.6em 0 0 0;\n border: none;\n text-align: left;\n -webkit-border-radius: 3px;\n border-radius: 3px;\n font: normal normal bold 17px\u002Fnormal Arial, Helvetica, sans-serif;\n color: rgba(0,0,0,0.9);\n -o-text-overflow: clip;\n text-overflow: clip;\n background: rgba(255,255,255,0.9);\n -webkit-transition: all 300ms cubic-bezier(0.42, 0, 0.58, 1);\n -moz-transition: all 300ms cubic-bezier(0.42, 0, 0.58, 1);\n -o-transition: all 300ms cubic-bezier(0.42, 0, 0.58, 1);\n transition: all 300ms cubic-bezier(0.42, 0, 0.58, 1);\n }\n .taskpane {\n padding: 1em 0 1em 0;\n border: none;\n -webkit-border-radius: 3px;\n border-radius: 3px;\n font: normal normal 17px\u002Fnormal Arial, Helvetica, sans-serif;\n color: rgba(0,0,0,0.9);\n -o-text-overflow: clip;\n text-overflow: clip;\n background: rgba(255,255,255,0.9);\n -webkit-transition: all 300ms cubic-bezier(0.42, 0, 0.58, 1);\n -moz-transition: all 300ms cubic-bezier(0.42, 0, 0.58, 1);\n -o-transition: all 300ms cubic-bezier(0.42, 0, 0.58, 1);\n transition: all 300ms cubic-bezier(0.42, 0, 0.58, 1);\n }\n .tasktitle {\n font: normal normal bold 24px\u002Fnormal Arial, Helvetica, sans-serif;\n }\n .tasktime {\n padding: 0.4em 0 0 0;\n color: lightslategray;\n }\n .taskleft {\n float: left;\n width: 15em;\n }\n .taskright {\n margin: 1em 0 0 15em;\n }\n .taskmore {\n padding: 0.6em 0 0 0;\n border: none;\n -webkit-border-radius: 3px;\n border-radius: 3px;\n font: normal normal 17px\u002Fnormal Arial, Helvetica, sans-serif;\n color: rgba(0,0,0,0.9);\n -o-text-overflow: clip;\n text-overflow: clip;\n background: rgba(255,255,255,0.9);\n -webkit-transition: all 300ms cubic-bezier(0.42, 0, 0.58, 1);\n -moz-transition: all 300ms cubic-bezier(0.42, 0, 0.58, 1);\n -o-transition: all 300ms cubic-bezier(0.42, 0, 0.58, 1);\n transition: all 300ms cubic-bezier(0.42, 0, 0.58, 1);\n clear: left;\n }\n .inputwhited {\n background: white;\n }\n .loginbtn {\n margin-top: 1em;\n }\n @media screen and (max-width: 600px) {\n .inputwithpadding {\n padding: 0.6em 0 0 0;\n }\n }\n \u003C\u002Fstyle\u003E\n \u003Cscript\u003E!function(e){function t(a){if(i[a])return i[a].exports;var n=i[a]={exports:{},id:a,loaded:!1};return e[a].call(n.exports,n,n.exports,t),n.loaded=!0,n.exports}var i={};return t.m=e,t.c=i,t.p=\"\",t(0)}([function(e,t){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var i=window;t[\"default\"]=i.flex=function(normal,e,t){var a=e||100,n=t||1,r=i.document,o=navigator.userAgent,d=o.match(\u002FAndroid[\\S\\s]+AppleWebkit\\\u002F(\\d{3})\u002Fi),l=o.match(\u002FU3\\\u002F((\\d+|\\.){5,})\u002Fi),c=l&&parseInt(l[1].split(\".\").join(\"\"),10)\u003E=80,p=navigator.appVersion.match(\u002F(iphone|ipad|ipod)\u002Fgi),s=i.devicePixelRatio||1;p||d&&d[1]\u003E534||c||(s=1);var u=normal?1:1\u002Fs,m=r.querySelector('meta[name=\"viewport\"]');m||(m=r.createElement(\"meta\"),m.setAttribute(\"name\",\"viewport\"),r.head.appendChild(m)),m.setAttribute(\"content\",\"width=device-width,user-scalable=no,initial-scale=\"+u+\",maximum-scale=\"+u+\",minimum-scale=\"+u),r.documentElement.style.fontSize=normal?\"50px\": a\u002F2*s*n+\"px\"},e.exports=t[\"default\"]}]); flex(false,100, 1);\u003C\u002Fscript\u003E\n \u003C\u002Fhead\u003E\n \u003Cbody\u003E\n \u003Cdiv id=\"app\"\u003E\u003C\u002Fdiv\u003E\n \u003Cscript src=\"cordova.js\"\u003E\u003C\u002Fscript\u003E\n \u003C!-- built files will be auto injected --\u003E\n \u003C\u002Fbody\u003E\n\u003C\u002Fhtml\u003E","id":"f187f703-1ac0-4e89-8e93-c8faf0437386","is_binary":false,"title":"index-app.html","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"HyUV7-4_JW8","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":null},{"code":"\u003C!DOCTYPE html\u003E\n\u003Chtml\u003E\n \u003Chead\u003E\n \u003Cmeta charset=\"utf-8\"\u003E\n \u003Cmeta name=\"viewport\" content=\"minimal-ui,width=device-width\"\u002F\u003E\n \u003Clink rel=\"apple-touch-icon\" href=\".\u002Ftask.png\"\u003E\n \u003Cmeta name=\"apple-mobile-web-app-capable\" content=\"yes\"\u003E\n \u003Cmeta name=\"apple-mobile-web-app-status-bar-style\" content=\"white\"\u003E\n \u003Ctitle\u003EScris Task\u003C\u002Ftitle\u003E\n \u003Cstyle\u003E\n @media screen and (orientation:landscape) {\n #container {\n position: absolute;\n top: 10%;\n left: 10%;\n transform: translateY(-30%);\n transform: translateX(-10%);\n }\n }\n \n @media screen and (orientation:portrait) {\n #container {\n position: absolute;\n top: 4%;\n left: 10%;\n transform: translateY(-30%);\n transform: translateX(-10%);\n }\n }\n\n body {\n background-color: #fdfdfd;\n background-repeat: no-repeat;\n background-position-x: center;\n background-position-y: 100%;\n background-attachment: fixed;\n background-size: 100% auto;\n font-family: \"Helvetica Neue\",Helvetica,\"PingFang SC\",\"Hiragino Sans GB\",\"Microsoft YaHei\",\"微软雅黑\",Arial,sans-serif;\n }\n #today {\n align-content: center;\n text-align: center;\n }\n a:link {\n color: rgb(168, 168, 168);\n text-decoration: none;\n }\n a:visited {\n color: rgb(114, 114, 114);\n text-decoration: none;\n }\n a:hover {\n color: rgb(179, 179, 179);\n text-decoration: underline;\n }\n a:active {\n color: rgb(0, 0, 0);\n text-decoration: underline;\n }\n .text {\n font-size: 14px;\n }\n .item {\n padding: 18px 0;\n }\n .box-card {\n width: 480px;\n }\n .task-card {\n width: 420px;\n }\n #footer {\n margin: 2em 0 0 0;\n }\n #footer span {\n color: dimgrey;\n }\n .input {\n width: 15em;\n display: inline-block;\n -webkit-box-sizing: content-box;\n -moz-box-sizing: content-box;\n box-sizing: content-box;\n border: 0 solid #b7b7b7;\n -webkit-border-radius: 3px;\n border-radius: 3px;\n font: normal normal 17px\u002Fnormal Arial, Helvetica, sans-serif;\n color: rgba(0,0,0,1);\n -o-text-overflow: clip;\n text-overflow: clip;\n background: rgba(252,252,252,1);\n text-shadow: 1px 1px 0 rgba(255,255,255,0.66) ;\n -webkit-transition: all 200ms cubic-bezier(0.42, 0, 0.58, 1);\n -moz-transition: all 200ms cubic-bezier(0.42, 0, 0.58, 1);\n -o-transition: all 200ms cubic-bezier(0.42, 0, 0.58, 1);\n transition: all 200ms cubic-bezier(0.42, 0, 0.58, 1);\n }\n .inputsmall {\n width: 8em;\n }\n .button {\n display: inline-block;\n -webkit-box-sizing: content-box;\n -moz-box-sizing: content-box;\n box-sizing: content-box;\n cursor: pointer;\n padding: 0.6em 0 0 0;\n border: none;\n text-align: left;\n -webkit-border-radius: 3px;\n border-radius: 3px;\n font: normal normal bold 17px\u002Fnormal Arial, Helvetica, sans-serif;\n color: rgba(0,0,0,0.9);\n -o-text-overflow: clip;\n text-overflow: clip;\n background: rgba(255,255,255,0.9);\n -webkit-transition: all 300ms cubic-bezier(0.42, 0, 0.58, 1);\n -moz-transition: all 300ms cubic-bezier(0.42, 0, 0.58, 1);\n -o-transition: all 300ms cubic-bezier(0.42, 0, 0.58, 1);\n transition: all 300ms cubic-bezier(0.42, 0, 0.58, 1);\n }\n .taskpane {\n padding: 1em 0 1em 0;\n border: none;\n -webkit-border-radius: 3px;\n border-radius: 3px;\n font: normal normal 17px\u002Fnormal Arial, Helvetica, sans-serif;\n color: rgba(0,0,0,0.9);\n -o-text-overflow: clip;\n text-overflow: clip;\n background: rgba(255,255,255,0.9);\n -webkit-transition: all 300ms cubic-bezier(0.42, 0, 0.58, 1);\n -moz-transition: all 300ms cubic-bezier(0.42, 0, 0.58, 1);\n -o-transition: all 300ms cubic-bezier(0.42, 0, 0.58, 1);\n transition: all 300ms cubic-bezier(0.42, 0, 0.58, 1);\n }\n .tasktitle {\n font: normal normal bold 24px\u002Fnormal Arial, Helvetica, sans-serif;\n }\n .tasktime {\n padding: 0.4em 0 0 0;\n color: lightslategray;\n }\n .taskleft {\n float: left;\n width: 15em;\n }\n .taskright {\n margin: 1em 0 0 15em;\n }\n .taskmore {\n padding: 0.6em 0 0 0;\n border: none;\n -webkit-border-radius: 3px;\n border-radius: 3px;\n font: normal normal 17px\u002Fnormal Arial, Helvetica, sans-serif;\n color: rgba(0,0,0,0.9);\n -o-text-overflow: clip;\n text-overflow: clip;\n background: rgba(255,255,255,0.9);\n -webkit-transition: all 300ms cubic-bezier(0.42, 0, 0.58, 1);\n -moz-transition: all 300ms cubic-bezier(0.42, 0, 0.58, 1);\n -o-transition: all 300ms cubic-bezier(0.42, 0, 0.58, 1);\n transition: all 300ms cubic-bezier(0.42, 0, 0.58, 1);\n clear: left;\n }\n .inputwhited {\n background: white;\n }\n .loginbtn {\n margin-top: 1em;\n }\n @media screen and (max-width: 600px) {\n .inputwithpadding {\n padding: 0.6em 0 0 0;\n }\n }\n \u003C\u002Fstyle\u003E\n \u003C\u002Fhead\u003E\n \u003Cbody\u003E\n \u003Cdiv id=\"container\"\u003E\u003Cdiv id=\"app\"\u003E\u003C\u002Fdiv\u003E\u003C\u002Fdiv\u003E\n \u003C!-- built files will be auto injected --\u003E\n \u003C\u002Fbody\u003E\n\u003C\u002Fhtml\u003E\n","id":"69ef0c74-9704-43cf-b69c-122f93d1267f","is_binary":false,"title":"index.html","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"BkPEmZNuJWU","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":null},{"code":"https:\u002F\u002Frawcdn.githack.com\u002Fscris\u002Fscristask\u002Fddc85a3565dad88c47220510cd9d4854258d4970\u002Fapp\u002Fres\u002Ficon\u002Fandroid\u002Ficon-72-hdpi.png","id":"375ad802-aea3-4e46-a05f-68f4a9b872a6","is_binary":true,"title":"icon-72-hdpi.png","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"Sy-GQ-4OJbL","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"BJE7bEOJb8"},{"code":"https:\u002F\u002Frawcdn.githack.com\u002Fscris\u002Fscristask\u002Fddc85a3565dad88c47220510cd9d4854258d4970\u002Fapp\u002Fres\u002Ficon\u002Fandroid\u002Ficon-96-xhdpi.png","id":"91750f0f-f4c9-4a7d-b9fd-af3dae3006f3","is_binary":true,"title":"icon-96-xhdpi.png","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"ryfG7bV_JW8","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"BJE7bEOJb8"},{"code":"https:\u002F\u002Frawcdn.githack.com\u002Fscris\u002Fscristask\u002Fddc85a3565dad88c47220510cd9d4854258d4970\u002Fapp\u002Fres\u002Ficon\u002Fbada-wac\u002Ficon-48-type5.png","id":"2674ba83-20c7-46b1-8f6d-1de935ef34ed","is_binary":true,"title":"icon-48-type5.png","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"By7GQZNu1-L","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"S1HQ-4u1-L"},{"code":"https:\u002F\u002Frawcdn.githack.com\u002Fscris\u002Fscristask\u002Fddc85a3565dad88c47220510cd9d4854258d4970\u002Fapp\u002Fres\u002Ficon\u002Fbada-wac\u002Ficon-50-type3.png","id":"54a3a0e1-94ee-4fe0-8fa6-815195518ae4","is_binary":true,"title":"icon-50-type3.png","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"S1VfQ-EO1-8","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"S1HQ-4u1-L"},{"code":"https:\u002F\u002Frawcdn.githack.com\u002Fscris\u002Fscristask\u002Fddc85a3565dad88c47220510cd9d4854258d4970\u002Fapp\u002Fres\u002Ficon\u002Fbada-wac\u002Ficon-80-type4.png","id":"a3f36e3b-cc5a-4ad2-876a-b4a9947fdda9","is_binary":true,"title":"icon-80-type4.png","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"SkSzXb4OkWL","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"S1HQ-4u1-L"},{"code":"https:\u002F\u002Frawcdn.githack.com\u002Fscris\u002Fscristask\u002Fddc85a3565dad88c47220510cd9d4854258d4970\u002Fapp\u002Fres\u002Ficon\u002Fbada\u002Ficon-128.png","id":"a461a51e-0afd-4967-a3d4-9663f305f921","is_binary":true,"title":"icon-128.png","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"BJLfQZ4d1WI","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"SJLmZ4ukbI"},{"code":"\u003C!--\n#\n# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements. See the NOTICE file\n# distributed with this work for additional information\n# regarding copyright ownership. The ASF licenses this file\n# to you under the Apache License, Version 2.0 (the\n# \"License\"); you may not use this file except in compliance\n# with the License. You may obtain a copy of the License at\n#\n# http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing,\n# software distributed under the License is distributed on an\n# \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n# KIND, either express or implied. See the License for the\n# specific language governing permissions and limitations\n# under the License.\n#\n--\u003E\n\nNote that these image resources are not copied into a project when a project\nis created with the CLI. Although there are default image resources in a\nnewly-created project, those come from the platform-specific project template,\nwhich can generally be found in the platform's `template` directory. Until\nicon and splashscreen support is added to the CLI, these image resources\naren't used directly.\n\nSee https:\u002F\u002Fissues.apache.org\u002Fjira\u002Fbrowse\u002FCB-5145\n","id":"e7a5b25c-92b8-49b9-8932-590db2f9e66f","is_binary":false,"title":"README.md","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"B1R-m-Vu1WL","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"SyMmWEd1ZI"},{"code":"https:\u002F\u002Frawcdn.githack.com\u002Fscris\u002Fscristask\u002Fddc85a3565dad88c47220510cd9d4854258d4970\u002Fapp\u002Fres\u002Ficon\u002Fandroid\u002Ficon-36-ldpi.png","id":"7dda2394-d113-4208-a876-af10deb4338a","is_binary":true,"title":"icon-36-ldpi.png","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"ByJzmWVdyW8","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"BJE7bEOJb8"},{"code":"https:\u002F\u002Frawcdn.githack.com\u002Fscris\u002Fscristask\u002Fddc85a3565dad88c47220510cd9d4854258d4970\u002Fapp\u002Fres\u002Ficon\u002Fandroid\u002Ficon-48-mdpi.png","id":"716abd5c-b174-467a-906c-1136003b8cd9","is_binary":true,"title":"icon-48-mdpi.png","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"SkxfQW4_y-8","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"BJE7bEOJb8"},{"code":"\u003C!--\n#\n# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements. See the NOTICE file\n# distributed with this work for additional information\n# regarding copyright ownership. The ASF licenses this file\n# to you under the Apache License, Version 2.0 (the\n# \"License\"); you may not use this file except in compliance\n# with the License. You may obtain a copy of the License at\n#\n# http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing,\n# software distributed under the License is distributed on an\n# \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n# KIND, either express or implied. See the License for the\n# specific language governing permissions and limitations\n# under the License.\n#\n--\u003E\n\n# Tizen Splash Screen\n\nSplash screens are unsupported on the Tizen platform.\n","id":"2eaf0ede-b5c9-4a87-b0c9-62f3657c26a0","is_binary":false,"title":"README.md","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"BkWQX-Vuk-8","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"HkR7ZN_k-8"},{"code":"https:\u002F\u002Frawcdn.githack.com\u002Fscris\u002Fscristask\u002Fddc85a3565dad88c47220510cd9d4854258d4970\u002Fapp\u002Fres\u002Fscreen\u002Fwebos\u002Fscreen-64.png","id":"75b69273-0b93-46d7-a79d-1a00f0774e68","is_binary":true,"title":"screen-64.png","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"BJzQmbVOk-L","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"B1Je7-4OJWL"},{"code":"require('babel-register')\nvar config = require('..\u002F..\u002Fconfig')\n\n\u002F\u002F http:\u002F\u002Fnightwatchjs.org\u002Fgettingstarted#settings-file\nmodule.exports = {\n src_folders: ['test\u002Fe2e\u002Fspecs'],\n output_folder: 'test\u002Fe2e\u002Freports',\n custom_assertions_path: ['test\u002Fe2e\u002Fcustom-assertions'],\n\n selenium: {\n start_process: true,\n server_path: require('selenium-server').path,\n host: '127.0.0.1',\n port: 4444,\n cli_args: {\n 'webdriver.chrome.driver': require('chromedriver').path\n }\n },\n\n test_settings: {\n default: {\n selenium_port: 4444,\n selenium_host: 'localhost',\n silent: true,\n globals: {\n devServerURL: 'http:\u002F\u002Flocalhost:' + (process.env.PORT || config.dev.port)\n }\n },\n\n chrome: {\n desiredCapabilities: {\n browserName: 'chrome',\n javascriptEnabled: true,\n acceptSslCerts: true\n }\n },\n\n firefox: {\n desiredCapabilities: {\n browserName: 'firefox',\n javascriptEnabled: true,\n acceptSslCerts: true\n }\n }\n }\n}\n","id":"ff84823f-1f8d-4d48-a098-ff78b48e37d4","is_binary":false,"title":"nightwatch.conf.js","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"BkwHmZVdJZI","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"BJwxXWV_ybU"},{"code":"'use strict'\nrequire('.\u002Fcheck-versions')()\n\nprocess.env.NODE_ENV = 'production'\n\nconst ora = require('ora')\nconst rm = require('rimraf')\nconst path = require('path')\nconst chalk = require('chalk')\nconst webpack = require('webpack')\nconst config = require('..\u002Fconfig')\nconst webpackConfig = require('.\u002Fwebpack.prod.app.conf')\n\nconst spinner = ora('building for cordova...')\nspinner.start()\n\nrm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err =\u003E {\n if (err) throw err\n webpack(webpackConfig, (err, stats) =\u003E {\n spinner.stop()\n if (err) throw err\n process.stdout.write(stats.toString({\n colors: true,\n modules: false,\n children: false, \u002F\u002F If you are using ts-loader, setting this to true will make TypeScript errors show up during build.\n chunks: false,\n chunkModules: false\n }) + '\\n\\n')\n\n if (stats.hasErrors()) {\n console.log(chalk.red(' Build failed with errors.\\n'))\n process.exit(1)\n }\n\n console.log(chalk.cyan(' Build complete.\\n'))\n console.log(chalk.yellow(\n ' Tip: built files are meant to be served over an HTTP server.\\n' +\n ' Opening index.html over file:\u002F\u002F won\\'t work.\\n'\n ))\n })\n})\n","id":"9f65de7d-c358-4c7d-bc67-2e09d7485873","is_binary":false,"title":"build.app.js","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"r1mQXZ4uybI","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"HylgXW4dy-I"},{"code":"'use strict'\nrequire('.\u002Fcheck-versions')()\n\nprocess.env.NODE_ENV = 'production'\n\nconst ora = require('ora')\nconst rm = require('rimraf')\nconst path = require('path')\nconst chalk = require('chalk')\nconst webpack = require('webpack')\nconst config = require('..\u002Fconfig')\nconst webpackConfig = require('.\u002Fwebpack.prod.electron.conf')\n\nconst spinner = ora('building for electron...')\nspinner.start()\n\nrm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err =\u003E {\n if (err) throw err\n webpack(webpackConfig, (err, stats) =\u003E {\n spinner.stop()\n if (err) throw err\n process.stdout.write(stats.toString({\n colors: true,\n modules: false,\n children: false, \u002F\u002F If you are using ts-loader, setting this to true will make TypeScript errors show up during build.\n chunks: false,\n chunkModules: false\n }) + '\\n\\n')\n\n if (stats.hasErrors()) {\n console.log(chalk.red(' Build failed with errors.\\n'))\n process.exit(1)\n }\n\n console.log(chalk.cyan(' Build complete.\\n'))\n console.log(chalk.yellow(\n ' Tip: built files are meant to be served over an HTTP server.\\n' +\n ' Opening index.html over file:\u002F\u002F won\\'t work.\\n'\n ))\n })\n})\n","id":"e776e240-b839-47d0-a4d9-47da42786114","is_binary":false,"title":"build.electron.js","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"HJEQ7-NukZL","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"HylgXW4dy-I"},{"code":"'use strict'\nrequire('.\u002Fcheck-versions')()\n\nprocess.env.NODE_ENV = 'production'\n\nconst ora = require('ora')\nconst rm = require('rimraf')\nconst path = require('path')\nconst chalk = require('chalk')\nconst webpack = require('webpack')\nconst config = require('..\u002Fconfig')\nconst webpackConfig = require('.\u002Fwebpack.prod.conf')\n\nconst spinner = ora('building for production...')\nspinner.start()\n\nrm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err =\u003E {\n if (err) throw err\n webpack(webpackConfig, (err, stats) =\u003E {\n spinner.stop()\n if (err) throw err\n process.stdout.write(stats.toString({\n colors: true,\n modules: false,\n children: false, \u002F\u002F If you are using ts-loader, setting this to true will make TypeScript errors show up during build.\n chunks: false,\n chunkModules: false\n }) + '\\n\\n')\n\n if (stats.hasErrors()) {\n console.log(chalk.red(' Build failed with errors.\\n'))\n process.exit(1)\n }\n\n console.log(chalk.cyan(' Build complete.\\n'))\n console.log(chalk.yellow(\n ' Tip: built files are meant to be served over an HTTP server.\\n' +\n ' Opening index.html over file:\u002F\u002F won\\'t work.\\n'\n ))\n })\n})\n","id":"bb017ca7-7e00-4f29-9b53-ea503447c4ef","is_binary":false,"title":"build.js","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"ryH7Q-VuJbL","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"HylgXW4dy-I"},{"code":"'use strict'\nconst chalk = require('chalk')\nconst semver = require('semver')\nconst packageConfig = require('..\u002Fpackage.json')\nconst shell = require('shelljs')\n\nfunction exec (cmd) {\n return require('child_process').execSync(cmd).toString().trim()\n}\n\nconst versionRequirements = [\n {\n name: 'node',\n currentVersion: semver.clean(process.version),\n versionRequirement: packageConfig.engines.node\n }\n]\n\nif (shell.which('npm')) {\n versionRequirements.push({\n name: 'npm',\n currentVersion: exec('npm --version'),\n versionRequirement: packageConfig.engines.npm\n })\n}\n\nmodule.exports = function () {\n const warnings = []\n\n for (let i = 0; i \u003C versionRequirements.length; i++) {\n const mod = versionRequirements[i]\n\n if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) {\n warnings.push(mod.name + ': ' +\n chalk.red(mod.currentVersion) + ' should be ' +\n chalk.green(mod.versionRequirement)\n )\n }\n }\n\n if (warnings.length) {\n console.log('')\n console.log(chalk.yellow('To use this template, you must update following to modules:'))\n console.log()\n\n for (let i = 0; i \u003C warnings.length; i++) {\n const warning = warnings[i]\n console.log(' ' + warning)\n }\n\n console.log()\n process.exit(1)\n }\n}\n","id":"9ba85c37-38ec-479d-8da7-21ac902bc50b","is_binary":false,"title":"check-versions.js","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"rJU7mW4O1WL","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"HylgXW4dy-I"},{"code":"\u002F\u002F Modules to control application life and create native browser window\nconst {app, BrowserWindow, ipcMain} = require('electron')\n\nconst path = require('path')\nconst url = require('url')\n\n\u002F\u002F Keep a global reference of the window object, if you don't, the window will\n\u002F\u002F be closed automatically when the JavaScript object is garbage collected.\nlet mainWindow\n\nfunction createWindow () {\n \u002F\u002F Create the browser window.\n mainWindow = new BrowserWindow({\n width: 800, \n height: 600,\n })\n\n \u002F\u002F and load the index.html of the app.\n \u002F\u002FmainWindow.loadFile('..\u002Fdist\u002Findex.html')\n mainWindow.loadURL(url.format({\n pathname: path.join(__dirname, '..\u002Fdist\u002Findex.html'),\n protocol: 'file:',\n slashes: true\n }))\n\n \u002F\u002F Open the DevTools.\n \u002F\u002F mainWindow.webContents.openDevTools()\n\n \u002F\u002F Emitted when the window is closed.\n mainWindow.on('closed', function () {\n \u002F\u002F Dereference the window object, usually you would store windows\n \u002F\u002F in an array if your app supports multi windows, this is the time\n \u002F\u002F when you should delete the corresponding element.\n mainWindow = null\n })\n}\n\n\u002F\u002F This method will be called when Electron has finished\n\u002F\u002F initialization and is ready to create browser windows.\n\u002F\u002F Some APIs can only be used after this event occurs.\napp.on('ready', createWindow)\n\n\u002F\u002F Quit when all windows are closed.\napp.on('window-all-closed', function () {\n \u002F\u002F On OS X it is common for applications and their menu bar\n \u002F\u002F to stay active until the user quits explicitly with Cmd + Q\n if (process.platform !== 'darwin') {\n app.quit()\n }\n})\n\napp.on('activate', function () {\n \u002F\u002F On OS X it's common to re-create a window in the app when the\n \u002F\u002F dock icon is clicked and there are no other windows open.\n if (mainWindow === null) {\n createWindow()\n }\n})\n\n\u002F\u002F In this file you can include the rest of your app's specific main process\n\u002F\u002F code. You can also put them in separate files and require them here.\n\n\nipcMain.on('winhider', function () {\n win.hide()\n})\n\nipcMain.on('minimizer', function () {\n win.minimize()\n})","id":"a94b64ca-e849-4967-b8cf-44a74dae385b","is_binary":false,"title":"electron.js","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"B1D77-EOyZU","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"HylgXW4dy-I"},{"code":"https:\u002F\u002Frawcdn.githack.com\u002Fscris\u002Fscristask\u002Fddc85a3565dad88c47220510cd9d4854258d4970\u002Fbuild\u002Flogo.png","id":"02a09896-b4ef-40d7-a6a9-93d63df46d98","is_binary":true,"title":"logo.png","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"rkuX7-VOJWU","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"HylgXW4dy-I"},{"code":"https:\u002F\u002Frawcdn.githack.com\u002Fscris\u002Fscristask\u002Fddc85a3565dad88c47220510cd9d4854258d4970\u002Fapp\u002Fres\u002Fscreen\u002Fandroid\u002Fscreen-hdpi-portrait.png","id":"ec8f7ed1-c9de-4ba8-9e14-02b8545bdc2f","is_binary":true,"title":"screen-hdpi-portrait.png","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"SkALX-E_k-8","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"Sy0xQZN_JZU"},{"code":"https:\u002F\u002Frawcdn.githack.com\u002Fscris\u002Fscristask\u002Fddc85a3565dad88c47220510cd9d4854258d4970\u002Fapp\u002Fres\u002Fscreen\u002Fbada-wac\u002Fscreen-type4.png","id":"2a613f74-6d7a-42cd-bdcb-349f963faea0","is_binary":true,"title":"screen-type4.png","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"HJ1vmZVdyZ8","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"BJlZQbEd1ZI"},{"code":"https:\u002F\u002Frawcdn.githack.com\u002Fscris\u002Fscristask\u002Fddc85a3565dad88c47220510cd9d4854258d4970\u002Fapp\u002Fres\u002Fscreen\u002Fbada\u002Fscreen-portrait.png","id":"533a795c-c948-41e2-957b-bccf2e863aa4","is_binary":true,"title":"screen-portrait.png","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"B1gwXbVO1bL","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"HyMZXZVuJbU"},{"code":"https:\u002F\u002Frawcdn.githack.com\u002Fscris\u002Fscristask\u002Fddc85a3565dad88c47220510cd9d4854258d4970\u002Fsrc\u002Fassets\u002Ffavicon.icns","id":"728db18b-5edf-4e57-b870-64e21b743baa","is_binary":true,"title":"favicon.icns","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"S1bPQbE_1W8","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"Bk7gm-EOJbU"},{"code":"'use strict'\nconst path = require('path')\nconst config = require('..\u002Fconfig')\nconst ExtractTextPlugin = require('extract-text-webpack-plugin')\nconst packageConfig = require('..\u002Fpackage.json')\n\nexports.assetsPath = function (_path) {\n const assetsSubDirectory = process.env.NODE_ENV === 'production'\n ? config.build.assetsSubDirectory\n : config.dev.assetsSubDirectory\n\n return path.posix.join(assetsSubDirectory, _path)\n}\n\nexports.cssLoaders = function (options) {\n options = options || {}\n\n const cssLoader = {\n loader: 'css-loader',\n options: {\n sourceMap: options.sourceMap\n }\n }\n\n const postcssLoader = {\n loader: 'postcss-loader',\n options: {\n sourceMap: options.sourceMap\n }\n }\n\n \u002F\u002F generate loader string to be used with extract text plugin\n function generateLoaders (loader, loaderOptions) {\n const loaders = options.usePostCSS ? [cssLoader, postcssLoader] : [cssLoader]\n\n if (loader) {\n loaders.push({\n loader: loader + '-loader',\n options: Object.assign({}, loaderOptions, {\n sourceMap: options.sourceMap\n })\n })\n }\n\n \u002F\u002F Extract CSS when that option is specified\n \u002F\u002F (which is the case during production build)\n if (options.extract) {\n return ExtractTextPlugin.extract({\n use: loaders,\n fallback: 'vue-style-loader',\n })\n } else {\n return ['vue-style-loader'].concat(loaders)\n }\n }\n\n \u002F\u002F https:\u002F\u002Fvue-loader.vuejs.org\u002Fen\u002Fconfigurations\u002Fextract-css.html\n return {\n css: generateLoaders(),\n postcss: generateLoaders(),\n less: generateLoaders('less'),\n sass: generateLoaders('sass', { indentedSyntax: true }),\n scss: generateLoaders('sass'),\n stylus: generateLoaders('stylus'),\n styl: generateLoaders('stylus')\n }\n}\n\n\u002F\u002F Generate loaders for standalone style files (outside of .vue)\nexports.styleLoaders = function (options) {\n const output = []\n const loaders = exports.cssLoaders(options)\n\n for (const extension in loaders) {\n const loader = loaders[extension]\n output.push({\n test: new RegExp('\\\\.' + extension + '
),\n use: loader\n })\n }\n\n return output\n}\n\nexports.createNotifierCallback = () =\u003E {\n const notifier = require('node-notifier')\n\n return (severity, errors) =\u003E {\n if (severity !== 'error') return\n\n const error = errors[0]\n const filename = error.file && error.file.split('!').pop()\n\n notifier.notify({\n title: packageConfig.name,\n message: severity + ': ' + error.name,\n subtitle: filename || '',\n icon: path.join(__dirname, 'logo.png')\n })\n }\n}\n","id":"87703ecc-3cf0-4704-84a6-f9a2da54b1c1","is_binary":false,"title":"utils.js","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"B1KQX-VukWU","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"HylgXW4dy-I"},{"code":"'use strict'\nconst utils = require('.\u002Futils')\nconst config = require('..\u002Fconfig')\nconst isProduction = process.env.NODE_ENV === 'production'\nconst sourceMapEnabled = isProduction\n ? config.build.productionSourceMap\n : config.dev.cssSourceMap\n\nmodule.exports = {\n loaders: utils.cssLoaders({\n sourceMap: sourceMapEnabled,\n extract: isProduction\n }),\n cssSourceMap: sourceMapEnabled,\n cacheBusting: config.dev.cacheBusting,\n transformToRequire: {\n video: ['src', 'poster'],\n source: 'src',\n img: 'src',\n image: 'xlink:href'\n }\n}\n","id":"949a6455-da4d-45ab-84bb-c46ebb35cd17","is_binary":false,"title":"vue-loader.conf.js","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"HJ9m7-VdJbI","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"HylgXW4dy-I"},{"code":"'use strict'\nconst path = require('path')\nconst utils = require('.\u002Futils')\nconst config = require('..\u002Fconfig')\nconst vueLoaderConfig = require('.\u002Fvue-loader.conf')\n\nfunction resolve (dir) {\n return path.join(__dirname, '..', dir)\n}\n\nconst createLintingRule = () =\u003E ({\n test: \u002F\\.(js|vue)$\u002F,\n loader: 'eslint-loader',\n enforce: 'pre',\n include: [resolve('src'), resolve('test')],\n options: {\n formatter: require('eslint-friendly-formatter'),\n emitWarning: !config.dev.showEslintErrorsInOverlay\n }\n})\n\nmodule.exports = {\n context: path.resolve(__dirname, '..\u002F'),\n entry: {\n app: '.\u002Fsrc\u002Fmain.js'\n },\n output: {\n path: config.build.assetsRoot,\n filename: '[name].js',\n publicPath: process.env.NODE_ENV === 'production'\n ? config.build.assetsPublicPath\n : config.dev.assetsPublicPath\n },\n resolve: {\n extensions: ['.js', '.vue', '.json'],\n alias: {\n 'vue
: 'vue\u002Fdist\u002Fvue.esm.js',\n '@': resolve('src'),\n }\n },\n module: {\n rules: [\n ...(config.dev.useEslint ? [createLintingRule()] : []),\n {\n test: \u002F\\.vue$\u002F,\n loader: 'vue-loader',\n options: vueLoaderConfig\n },\n {\n test: \u002F\\.js$\u002F,\n loader: 'babel-loader',\n include: [resolve('src'), resolve('test'), resolve('node_modules\u002Fwebpack-dev-server\u002Fclient')]\n },\n {\n test: \u002F\\.(png|jpe?g|gif|svg)(\\?.*)?$\u002F,\n loader: 'url-loader',\n options: {\n limit: 10000,\n name: utils.assetsPath('img\u002F[name].[hash:7].[ext]')\n }\n },\n {\n test: \u002F\\.(mp4|webm|ogg|mp3|wav|flac|aac)(\\?.*)?$\u002F,\n loader: 'url-loader',\n options: {\n limit: 10000,\n name: utils.assetsPath('media\u002F[name].[hash:7].[ext]')\n }\n },\n {\n test: \u002F\\.(woff2?|eot|ttf|otf)(\\?.*)?$\u002F,\n loader: 'url-loader',\n options: {\n limit: 10000,\n name: utils.assetsPath('fonts\u002F[name].[hash:7].[ext]')\n }\n }\n ]\n },\n node: {\n \u002F\u002F prevent webpack from injecting useless setImmediate polyfill because Vue\n \u002F\u002F source contains it (although only uses it if it's native).\n setImmediate: false,\n \u002F\u002F prevent webpack from injecting mocks to Node native modules\n \u002F\u002F that does not make sense for the client\n dgram: 'empty',\n fs: 'empty',\n net: 'empty',\n tls: 'empty',\n child_process: 'empty'\n }\n}\n","id":"88e0930e-7794-4b58-bda0-4b1388ee7f77","is_binary":false,"title":"webpack.base.conf.js","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"r1i7X-4_1b8","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"HylgXW4dy-I"},{"code":"'use strict'\nconst utils = require('.\u002Futils')\nconst webpack = require('webpack')\nconst config = require('..\u002Fconfig')\nconst merge = require('webpack-merge')\nconst path = require('path')\nconst baseWebpackConfig = require('.\u002Fwebpack.base.conf')\nconst CopyWebpackPlugin = require('copy-webpack-plugin')\nconst HtmlWebpackPlugin = require('html-webpack-plugin')\nconst FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin')\nconst portfinder = require('portfinder')\n\nconst HOST = process.env.HOST\nconst PORT = process.env.PORT && Number(process.env.PORT)\n\nconst devWebpackConfig = merge(baseWebpackConfig, {\n module: {\n rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap, usePostCSS: true })\n },\n \u002F\u002F cheap-module-eval-source-map is faster for development\n devtool: config.dev.devtool,\n\n \u002F\u002F these devServer options should be customized in \u002Fconfig\u002Findex.js\n devServer: {\n clientLogLevel: 'warning',\n historyApiFallback: {\n rewrites: [\n { from: \u002F.*\u002F, to: path.posix.join(config.dev.assetsPublicPath, 'index.html') },\n ],\n },\n hot: true,\n contentBase: false, \u002F\u002F since we use CopyWebpackPlugin.\n compress: true,\n host: HOST || config.dev.host,\n port: PORT || config.dev.port,\n open: config.dev.autoOpenBrowser,\n overlay: config.dev.errorOverlay\n ? { warnings: false, errors: true }\n : false,\n publicPath: config.dev.assetsPublicPath,\n proxy: config.dev.proxyTable,\n quiet: true, \u002F\u002F necessary for FriendlyErrorsPlugin\n watchOptions: {\n poll: config.dev.poll,\n }\n },\n plugins: [\n new webpack.DefinePlugin({\n 'process.env': require('..\u002Fconfig\u002Fdev.env')\n }),\n new webpack.HotModuleReplacementPlugin(),\n new webpack.NamedModulesPlugin(), \u002F\u002F HMR shows correct file names in console on update.\n new webpack.NoEmitOnErrorsPlugin(),\n \u002F\u002F https:\u002F\u002Fgithub.com\u002Fampedandwired\u002Fhtml-webpack-plugin\n new HtmlWebpackPlugin({\n filename: 'index.html',\n template: 'index.html',\n inject: true\n }),\n \u002F\u002F copy custom static assets\n new CopyWebpackPlugin([\n {\n from: path.resolve(__dirname, '..\u002Fstatic'),\n to: config.dev.assetsSubDirectory,\n ignore: ['.*']\n }\n ])\n ]\n})\n\nmodule.exports = new Promise((resolve, reject) =\u003E {\n portfinder.basePort = process.env.PORT || config.dev.port\n portfinder.getPort((err, port) =\u003E {\n if (err) {\n reject(err)\n } else {\n \u002F\u002F publish the new Port, necessary for e2e tests\n process.env.PORT = port\n \u002F\u002F add port to devServer config\n devWebpackConfig.devServer.port = port\n\n \u002F\u002F Add FriendlyErrorsPlugin\n devWebpackConfig.plugins.push(new FriendlyErrorsPlugin({\n compilationSuccessInfo: {\n messages: [`Your application is running here: http:\u002F\u002F${devWebpackConfig.devServer.host}:${port}`],\n },\n onErrors: config.dev.notifyOnErrors\n ? utils.createNotifierCallback()\n : undefined\n }))\n\n resolve(devWebpackConfig)\n }\n })\n})\n","id":"5c61c068-5f20-4c2e-a4a2-cdb574399ef0","is_binary":false,"title":"webpack.dev.conf.js","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"HynX7-VO1ZI","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"HylgXW4dy-I"},{"code":"'use strict'\nconst path = require('path')\nconst utils = require('.\u002Futils')\nconst webpack = require('webpack')\nvar config = require('..\u002Fconfig')\nconst merge = require('webpack-merge')\nconst baseWebpackConfig = require('.\u002Fwebpack.base.conf')\nconst CopyWebpackPlugin = require('copy-webpack-plugin')\nconst HtmlWebpackPlugin = require('html-webpack-plugin')\nconst ExtractTextPlugin = require('extract-text-webpack-plugin')\nconst OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin')\nconst UglifyJsPlugin = require('uglifyjs-webpack-plugin')\n\nconst env = process.env.NODE_ENV = require('..\u002Fconfig\u002Fc.env')\n\nconfig.build.index = path.resolve(__dirname, '..\u002Fapp\u002Fwww\u002Findex.html')\nconfig.build.assetsRoot = path.resolve(__dirname, '..\u002Fapp\u002Fwww')\n\nconst webpackConfig = merge(baseWebpackConfig, {\n module: {\n rules: utils.styleLoaders({\n sourceMap: config.build.productionSourceMap,\n extract: true,\n usePostCSS: true\n })\n },\n devtool: config.build.productionSourceMap ? config.build.devtool : false,\n output: {\n path: config.build.assetsRoot,\n publicPath: process.env.NODE_ELECTRON === 'true' ? path.join(__dirname, '..\u002Fapp\u002Fwww\u002F') : '',\n filename: utils.assetsPath('js\u002F[name].[chunkhash].js'),\n chunkFilename: utils.assetsPath('js\u002F[id].[chunkhash].js')\n },\n plugins: [\n \u002F\u002F http:\u002F\u002Fvuejs.github.io\u002Fvue-loader\u002Fen\u002Fworkflow\u002Fproduction.html\n new webpack.DefinePlugin({\n 'process.env': env\n }),\n new UglifyJsPlugin({\n uglifyOptions: {\n compress: {\n warnings: false\n }\n },\n sourceMap: config.build.productionSourceMap,\n parallel: true\n }),\n \u002F\u002F extract css into its own file\n new ExtractTextPlugin({\n filename: utils.assetsPath('css\u002F[name].[contenthash].css'),\n \u002F\u002F Setting the following option to `false` will not extract CSS from codesplit chunks.\n \u002F\u002F Their CSS will instead be inserted dynamically with style-loader when the codesplit chunk has been loaded by webpack.\n \u002F\u002F It's currently set to `true` because we are seeing that sourcemaps are included in the codesplit bundle as well when it's `false`, \n \u002F\u002F increasing file size: https:\u002F\u002Fgithub.com\u002Fvuejs-templates\u002Fwebpack\u002Fissues\u002F1110\n allChunks: true,\n }),\n \u002F\u002F Compress extracted CSS. We are using this plugin so that possible\n \u002F\u002F duplicated CSS from different components can be deduped.\n new OptimizeCSSPlugin({\n cssProcessorOptions: config.build.productionSourceMap\n ? { safe: true, map: { inline: false } }\n : { safe: true }\n }),\n \u002F\u002F generate dist index.html with correct asset hash for caching.\n \u002F\u002F you can customize output by editing \u002Findex.html\n \u002F\u002F see https:\u002F\u002Fgithub.com\u002Fampedandwired\u002Fhtml-webpack-plugin\n new HtmlWebpackPlugin({\n filename: config.build.index,\n template: 'index-app.html',\n inject: true,\n minify: {\n removeComments: true,\n collapseWhitespace: true,\n removeAttributeQuotes: true\n \u002F\u002F more options:\n \u002F\u002F https:\u002F\u002Fgithub.com\u002Fkangax\u002Fhtml-minifier#options-quick-reference\n },\n \u002F\u002F necessary to consistently work with multiple chunks via CommonsChunkPlugin\n chunksSortMode: 'dependency'\n }),\n \u002F\u002F keep module.id stable when vendor modules does not change\n new webpack.HashedModuleIdsPlugin(),\n \u002F\u002F enable scope hoisting\n new webpack.optimize.ModuleConcatenationPlugin(),\n \u002F\u002F split vendor js into its own file\n new webpack.optimize.CommonsChunkPlugin({\n name: 'vendor',\n minChunks (module) {\n \u002F\u002F any required modules inside node_modules are extracted to vendor\n return (\n module.resource &&\n \u002F\\.js$\u002F.test(module.resource) &&\n module.resource.indexOf(\n path.join(__dirname, '..\u002Fnode_modules')\n ) === 0\n )\n }\n }),\n \u002F\u002F extract webpack runtime and module manifest to its own file in order to\n \u002F\u002F prevent vendor hash from being updated whenever app bundle is updated\n new webpack.optimize.CommonsChunkPlugin({\n name: 'manifest',\n minChunks: Infinity\n }),\n \u002F\u002F This instance extracts shared chunks from code splitted chunks and bundles them\n \u002F\u002F in a separate chunk, similar to the vendor chunk\n \u002F\u002F see: https:\u002F\u002Fwebpack.js.org\u002Fplugins\u002Fcommons-chunk-plugin\u002F#extra-async-commons-chunk\n new webpack.optimize.CommonsChunkPlugin({\n name: 'app',\n async: 'vendor-async',\n children: true,\n minChunks: 3\n }),\n\n \u002F\u002F copy custom static assets\n new CopyWebpackPlugin([\n {\n from: path.resolve(__dirname, '..\u002Fstatic'),\n to: config.build.assetsSubDirectory,\n ignore: ['.*']\n }\n ])\n ]\n})\n\nif (config.build.productionGzip) {\n const CompressionWebpackPlugin = require('compression-webpack-plugin')\n\n webpackConfig.plugins.push(\n new CompressionWebpackPlugin({\n asset: '[path].gz[query]',\n algorithm: 'gzip',\n test: new RegExp(\n '\\\\.(' +\n config.build.productionGzipExtensions.join('|') +\n ')
\n ),\n threshold: 10240,\n minRatio: 0.8\n })\n )\n}\n\nif (config.build.bundleAnalyzerReport) {\n const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin\n webpackConfig.plugins.push(new BundleAnalyzerPlugin())\n}\n\nmodule.exports = webpackConfig\n","id":"9d6183f8-c1eb-4fed-bd26-3ffc28ea56cd","is_binary":false,"title":"webpack.prod.app.conf.js","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"HJamXb4_kW8","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"HylgXW4dy-I"},{"code":"'use strict'\n\u002F\u002F Template version: 1.3.1\n\u002F\u002F see http:\u002F\u002Fvuejs-templates.github.io\u002Fwebpack for documentation.\nconst path = require('path')\nvar assetspp = '';\nif(process.env.LINX_AGENT == 'electron') {\n assetspp = '.\u002F';\n}\n\nmodule.exports = {\n dev: {\n\n \u002F\u002F Paths\n env: require('.\u002Fdev.env'),\n assetsSubDirectory: 'static',\n assetsPublicPath: assetspp,\n proxyTable: {},\n\n \u002F\u002F Various Dev Server settings\n host: 'localhost', \u002F\u002F can be overwritten by process.env.HOST\n port: 5215, \u002F\u002F can be overwritten by process.env.PORT, if port is in use, a free one will be determined\n autoOpenBrowser: false,\n errorOverlay: true,\n notifyOnErrors: true,\n poll: false, \u002F\u002F https:\u002F\u002Fwebpack.js.org\u002Fconfiguration\u002Fdev-server\u002F#devserver-watchoptions-\n\n \u002F\u002F Use Eslint Loader?\n \u002F\u002F If true, your code will be linted during bundling and\n \u002F\u002F linting errors and warnings will be shown in the console.\n useEslint: false,\n \u002F\u002F If true, eslint errors and warnings will also be shown in the error overlay\n \u002F\u002F in the browser.\n showEslintErrorsInOverlay: false,\n\n \u002F**\n * Source Maps\n *\u002F\n\n \u002F\u002F https:\u002F\u002Fwebpack.js.org\u002Fconfiguration\u002Fdevtool\u002F#development\n devtool: 'cheap-module-eval-source-map',\n\n \u002F\u002F If you have problems debugging vue-files in devtools,\n \u002F\u002F set this to false - it *may* help\n \u002F\u002F https:\u002F\u002Fvue-loader.vuejs.org\u002Fen\u002Foptions.html#cachebusting\n cacheBusting: true,\n\n cssSourceMap: true\n },\n\n build: {\n \u002F\u002F vue&electron\n env: require(\".\u002Fprod.env\"),\n index: path.resolve(__dirname, '..\u002Fdist\u002Findex.html'),\n assetsRoot: path.resolve(__dirname, '..\u002Fdist'),\n assetsSubDirectory: 'static',\n assetsPublicPath: assetspp,\n\n \u002F**\n * Source Maps\n *\u002F\n\n productionSourceMap: true,\n \u002F\u002F https:\u002F\u002Fwebpack.js.org\u002Fconfiguration\u002Fdevtool\u002F#production\n devtool: '#source-map',\n\n \u002F\u002F Gzip off by default as many popular static hosts such as\n \u002F\u002F Surge or Netlify already gzip all static assets for you.\n \u002F\u002F Before setting to `true`, make sure to:\n \u002F\u002F npm install --save-dev compression-webpack-plugin\n productionGzip: false,\n productionGzipExtensions: ['js', 'css'],\n\n \u002F\u002F Run the build command with an extra argument to\n \u002F\u002F View the bundle analyzer report after build finishes:\n \u002F\u002F `npm run build --report`\n \u002F\u002F Set to `true` or `false` to always turn it on or off\n bundleAnalyzerReport: process.env.npm_config_report\n }\n}\n","id":"2f281320-1c39-4f14-a93a-236a2d84475b","is_binary":false,"title":"index.js","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"S1QVXbV_JbU","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"r1-lXZNOJWU"},{"code":"{\n \"name\": \"scristask\",\n \"version\": \"1.10.0\",\n \"description\": \"Special Tasklist and Two Timers\",\n \"author\": \"Dominik Qiu \u003Cslaaker@126.com\u003E\",\n \"private\": true,\n \"scripts\": {\n \"dev\": \"webpack-dev-server --inline --progress --config build\u002Fwebpack.dev.conf.js\",\n \"start\": \"npm run dev\",\n \"build\": \"node build\u002Fbuild.js\",\n \"edev\": \"node build\u002Fbuild.electron.js && electron build\u002Felectron.js\",\n \"ewin\": \"node build\u002Fbuild.electron.js && electron-packager .\u002Fdist\u002F ScrisTask --platform=win32 --arch=x64 --icon=.\u002Fsrc\u002Fassets\u002Ffavicon.ico --overwrite\",\n \"emac\": \"node build\u002Fbuild.electron.js && electron-packager .\u002Fdist\u002F Task --platform=darwin --arch=x64 --icon=.\u002Fsrc\u002Fassets\u002Ffavicon.icns --overwrite\",\n \"elinux\": \"node build\u002Fbuild.electron.js && electron-packager .\u002Fdist\u002F ScrisTask --platform=linux --arch=x64 --icon=.\u002Fsrc\u002Fassets\u002Ffavicon.ico --overwrite\",\n \"cbrowser\": \"node build\u002Fbuild.app.js && cd app && cordova run browser && cd ..\u002F\",\n \"cios\": \"node build\u002Fbuild.app.js && cd app && cordova run ios && cd ..\u002F\",\n \"candroid\": \"node build\u002Fbuild.app.js && cd app && cordova run android && cd ..\u002F\"\n },\n \"dependencies\": {\n \"ajv\": \"^6.5.4\",\n \"element-ui\": \"^2.4.7\",\n \"growl\": \"^1.10.5\",\n \"https-proxy-agent\": \"^2.2.1\",\n \"leancloud-storage\": \"^3.10.0\",\n \"pip\": \"0.0.1\",\n \"vue\": \"^2.5.2\",\n \"vue-material-design-icons\": \"^2.4.0\",\n \"vue-router\": \"^3.0.1\"\n },\n \"devDependencies\": {\n \"autoprefixer\": \"^7.1.2\",\n \"babel-core\": \"^6.22.1\",\n \"babel-eslint\": \"^8.2.1\",\n \"babel-helper-vue-jsx-merge-props\": \"^2.0.3\",\n \"babel-jest\": \"^21.0.2\",\n \"babel-loader\": \"^7.1.1\",\n \"babel-plugin-dynamic-import-node\": \"^1.2.0\",\n \"babel-plugin-syntax-jsx\": \"^6.18.0\",\n \"babel-plugin-transform-es2015-modules-commonjs\": \"^6.26.0\",\n \"babel-plugin-transform-runtime\": \"^6.22.0\",\n \"babel-plugin-transform-vue-jsx\": \"^3.5.0\",\n \"babel-polyfill\": \"^6.26.0\",\n \"babel-preset-env\": \"^1.3.2\",\n \"babel-preset-stage-2\": \"^6.22.0\",\n \"babel-register\": \"^6.22.0\",\n \"chalk\": \"^2.0.1\",\n \"chromedriver\": \"^2.42.0\",\n \"copy-webpack-plugin\": \"^4.0.1\",\n \"cross-env\": \"^5.2.0\",\n \"cross-spawn\": \"^5.0.1\",\n \"css-loader\": \"^0.28.0\",\n \"electron\": \"^5.0.4\",\n \"electron-packager\": \"^13.1.1\",\n \"eslint\": \"^4.15.0\",\n \"eslint-config-airbnb-base\": \"^11.3.0\",\n \"eslint-friendly-formatter\": \"^3.0.0\",\n \"eslint-import-resolver-webpack\": \"^0.8.3\",\n \"eslint-loader\": \"^1.7.1\",\n \"eslint-plugin-import\": \"^2.7.0\",\n \"eslint-plugin-vue\": \"^4.0.0\",\n \"extract-text-webpack-plugin\": \"^3.0.2\",\n \"file-loader\": \"^1.1.4\",\n \"friendly-errors-webpack-plugin\": \"^1.6.1\",\n \"html-webpack-plugin\": \"^2.30.1\",\n \"jest\": \"^22.0.4\",\n \"jest-serializer-vue\": \"^0.3.0\",\n \"merge\": \"\u003E=1.2.1\",\n \"nightwatch\": \"^0.9.12\",\n \"node-notifier\": \"^5.1.2\",\n \"optimize-css-assets-webpack-plugin\": \"^3.2.0\",\n \"ora\": \"^1.4.0\",\n \"portfinder\": \"^1.0.13\",\n \"postcss-import\": \"^11.0.0\",\n \"postcss-loader\": \"^2.0.8\",\n \"postcss-url\": \"^7.2.1\",\n \"rimraf\": \"^2.6.0\",\n \"selenium-server\": \"^3.0.1\",\n \"semver\": \"^5.3.0\",\n \"shelljs\": \"^0.7.8\",\n \"uglifyjs-webpack-plugin\": \"^1.1.1\",\n \"url-loader\": \"^0.5.8\",\n \"vue-jest\": \"^1.0.2\",\n \"vue-loader\": \"^13.3.0\",\n \"vue-style-loader\": \"^3.0.1\",\n \"vue-template-compiler\": \"^2.5.2\",\n \"webpack\": \"^3.12.0\",\n \"webpack-bundle-analyzer\": \"^2.9.0\",\n \"webpack-dev-server\": \"^2.9.1\",\n \"webpack-merge\": \"^4.1.4\"\n },\n \"engines\": {\n \"node\": \"\u003E= 6.0.0\",\n \"npm\": \"\u003E= 3.0.0\"\n },\n \"browserslist\": [\n \"\u003E 1%\",\n \"last 2 versions\",\n \"not ie \u003C= 8\"\n ]\n}\n","id":"f3088901-ae92-4a97-8fa0-09cd68e052d7","is_binary":false,"title":"package.json","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"ByOVQZNd1W8","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":null},{"code":" module.exports = { \n plugins: { \n 'autoprefixer': {browsers: 'last 5 version'} \n } \n }","id":"18d3fe62-5b29-4499-b77e-dd6d34abd6ff","is_binary":false,"title":"postcss.config.js","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"HkKVXbEdyb8","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":null},{"code":"\u003Ctemplate\u003E\n \u003Cdiv id=\"app\"\u003E\n \u003Crouter-view\u002F\u003E\n \n \u003C\u002Fdiv\u003E\n\u003C\u002Ftemplate\u003E\n\n\u003Cscript\u003E\nexport default {\n name: 'App',\n};\n\u003C\u002Fscript\u003E\n","id":"5ce18bcd-f1c9-4c87-a418-e4a6883818b5","is_binary":false,"title":"App.vue","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"r15Emb4OkbU","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"r1fxX-E_1b8"},{"code":"\u003Csvg viewBox=\"0 0 192 108\" xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\"\u003E\n \u003Cpath d=\"m18.5 93 3.6-12 4 12z\" fill=\"#0a2\"\u002F\u003E\n \u003Cpath d=\"m22 81-2 12h-1.5z\" fill=\"#072\"\u002F\u003E\n \u003Cpath d=\"m25.5 89.3 3.6-12 4 12z\" fill=\"#0a2\"\u002F\u003E\n \u003Cpath d=\"m29 77.3-2 12h-1.5z\" fill=\"#072\"\u002F\u003E\n \u003Cpath d=\"m35.3 90.3 3.6-12 4 12z\" fill=\"#0a2\"\u002F\u003E\n \u003Cpath d=\"m38.8 78.3-2 12h-1.5z\" fill=\"#072\"\u002F\u003E\n \u003Cpath d=\"m29.8 94.5 3.6-12 4 12z\" fill=\"#0a2\"\u002F\u003E\n \u003Cpath d=\"m33.3 82.5-2 12h-1.5z\" fill=\"#072\"\u002F\u003E\n \u003Cpath d=\"m196.9 27.8-30 70h60z\" fill=\"#636\"\u002F\u003E\n \u003Cpath d=\"m166.9 97.8 30-70-20 70z\" fill=\"#414\"\u002F\u003E\n \u003Cpath d=\"m127 71.4-30 70h60z\" fill=\"#636\"\u002F\u003E\n \u003Cpath d=\"m97 141.4 30-70-20 70z\" fill=\"#414\"\u002F\u003E\n \u003Cpath d=\"m168.2 47.4-30 70h60z\" fill=\"#636\"\u002F\u003E\n \u003Cpath d=\"m138.2 117.4 30-70-20 70z\" fill=\"#414\"\u002F\u003E\n \u003Cpath d=\"m149.2 40.3-30 70h60z\" fill=\"#636\"\u002F\u003E\n \u003Cpath d=\"m119.2 110.3 30-70-20 70z\" fill=\"#414\"\u002F\u003E\n \u003Cpath d=\"m32.5 45-30 70h60z\" fill=\"#636\"\u002F\u003E\n \u003Cpath d=\"m2.5 115 30-70-20 70z\" fill=\"#414\"\u002F\u003E\n \u003Cpath d=\"m14 31.9-30 70h60z\" fill=\"#636\"\u002F\u003E\n \u003Cpath d=\"m-15.9 101.9 30-70-20 70z\" fill=\"#414\"\u002F\u003E\n \u003Cpath d=\"m-5 76.2s88-14.2 124 39.2h-124z\" fill=\"#7b3\"\u002F\u003E\n \u003Cpath d=\"m206 78.7s-89-21.4-135 36.3c69 .4 101.8 3 134.4 3z\" fill=\"#7d3\"\u002F\u003E\n \u003Cpath d=\"m165.1 84 3.5-12 3.6 12z\" fill=\"#0a2\"\u002F\u003E\n \u003Cpath d=\"m168.6 72-2 12h-1.5z\" fill=\"#072\"\u002F\u003E\n \u003Cpath d=\"m157.1 84 3.5-12 3.6 12z\" fill=\"#0a2\"\u002F\u003E\n \u003Cpath d=\"m160.7 72-2 12h-1.5z\" fill=\"#072\"\u002F\u003E\n \u003Cpath d=\"m161 92.3 3.5-12 3.6 12z\" fill=\"#0a2\"\u002F\u003E\n \u003Cpath d=\"m164.5 80.3-2 12h-1.5z\" fill=\"#072\"\u002F\u003E\n \u003Cpath d=\"m169 89.3 3.5-12 3.6 12z\" fill=\"#0a2\"\u002F\u003E\n \u003Cpath d=\"m172.5 77.3-2 12h-1.5z\" fill=\"#072\"\u002F\u003E\n \u003Cpath d=\"m152.8 89.9 3.5-12 3.6 12z\" fill=\"#0a2\"\u002F\u003E\n \u003Cpath d=\"m156.3 77.9-2 12h-1.5z\" fill=\"#072\"\u002F\u003E\n \u003Cpath d=\"m16.4 77.3 3.5-12 3.6 12z\" fill=\"#0a2\"\u002F\u003E\n \u003Cpath d=\"m20 65.3-2 12h-1.5z\" fill=\"#072\"\u002F\u003E\n \u003Cpath d=\"m26 78.4 3.5-12 3.6 12z\" fill=\"#0a2\"\u002F\u003E\n \u003Cpath d=\"m29.5 66.4-2 12h-1.5z\" fill=\"#072\"\u002F\u003E\n \u003Cpath d=\"m21 83 3.5-12 3.6 12z\" fill=\"#0a2\"\u002F\u003E\n \u003Cpath d=\"m24.5 71-2 12h-1.5z\" fill=\"#072\"\u002F\u003E\n \u003Cpath d=\"m11 80.2 3.5-12 3.6 12z\" fill=\"#0a2\"\u002F\u003E\n \u003Cpath d=\"m14.5 68.2-2 12h-1.5z\" fill=\"#072\"\u002F\u003E\n \u003C\u002Fsvg\u003E","id":"190822f5-f6f8-4fc2-a3cb-66e974619465","is_binary":false,"title":"bg.svg","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"S1sV7WEdyWU","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"Bk7gm-EOJbU"},{"code":"https:\u002F\u002Frawcdn.githack.com\u002Fscris\u002Fscristask\u002Fddc85a3565dad88c47220510cd9d4854258d4970\u002Fsrc\u002Fassets\u002Ffavicon.ico","id":"33aebd6d-f7e7-4eeb-9bcb-d4b9ec06a8f5","is_binary":true,"title":"favicon.ico","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"ry24QbV_JW8","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"Bk7gm-EOJbU"},{"code":"\u003Ctemplate\u003E\n \u003Cspan :aria-hidden=\"decorative\"\n :aria-label=\"title\"\n class=\"material-design-icon clipboard-text-play-outline-icon\"\n role=\"img\"\u003E\n \u003Csvg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\u003E\n \u003Ctitle\u003E{{ title }}\u003C\u002Ftitle\u003E\n \u003Cpath d=\"M19,3H14.82C14.25,1.44 12.53,0.64 11,1.2C10.14,1.5 9.5,2.16 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H15V19H5V5H7V7H17V5H19V14H21V5A2,2 0 0,0 19,3M12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5M17,16V22L22,19L17,16M17,11H7V9H17V11M15,15H7V13H15V15Z\" \u002F\u003E\n \u003C\u002Fsvg\u003E\n \u003C\u002Fspan\u003E\n\u003C\u002Ftemplate\u003E\n\n\u003Cscript\u003E\nexport default {\n name: \"ClipboardTextPlayOutlineIcon\",\n props: {\n title: {\n type: String,\n default: \"Clipboard Text icon\"\n },\n decorative: {\n type: Boolean,\n default: false\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n }\n }\n}\n\u003C\u002Fscript\u003E\n","id":"542f06da-6fc4-4092-9041-ef1c0152a955","is_binary":false,"title":"ClipboardTextPlayOutline.vue","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"SkT47bNO1W8","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"SJVl7WE_yZL"},{"code":"\u003C!--\n\u003Ctemplate\u003E\n \u003Cdiv class=\"timer\" id=\"timer\"\u003E\n \u003Cel-row\u003E\n \u003Cel-col\u003E\n \u003Cel-input placeholder=\"Name\"\n v-model=\"timertaskname\" clearable\u003E\u003C\u002Fel-input\u003E\n \u003C\u002Fel-col\u003E\n \u003C\u002Fel-row\u003E\n \u003Cel-row v-show=\"timerow\"\u003E\n \u003Cel-col\u003E\n \u003Cel-input placeholder=\"Working Time (min)\" \n v-model=\"worktime\" clearable\u003E \u003C\u002Fel-input\u003E\n \u003C\u002Fel-col\u003E\n \u003C\u002Fel-row\u003E\n \u003Cel-row v-show=\"timerow\"\u003E\n \u003Cel-col\u003E\n \u003Cel-input placeholder=\"Relaxing Time (min)\" \n v-model=\"resttime\" clearable\u003E \u003C\u002Fel-input\u003E\n \u003C\u002Fel-col\u003E\n \u003C\u002Fel-row\u003E\n \u003Cel-row\u003E\n \u003Cel-col\u003E\n \u003Cel-button @click=\"countDown\"\u003E {{content}} \u003C\u002Fel-button\u003E\n \u003C\u002Fel-col\u003E\n \u003C\u002Fel-row\u003E\n \u003C\u002Fdiv\u003E\n\u003C\u002Ftemplate\u003E\n\n\u003Cscript\u003E\nvar clock;\nexport default ({\n name: 'breaktimer',\n props: {\n breaktimertitle: {\n type: String,\n required: true,\n },\n },\n data () {\n return {\n content: 'Start Timer',\n timertaskname: '',\n worktime: '',\n resttime: '',\n total: 60,\n isStarted: 0,\n timerow: true,\n };\n },\n methods: {\n clocky() {\n \n },\n countDown() {\n \u002F\u002F0=haven't started yet\n \u002F\u002F1=working\n \u002F\u002F3=relaxing\n if(this.isStarted == 0) {\n if(!isNaN(parseInt(this.worktime))) {\n this.total = parseInt(this.worktime) * 60;\n this.isStarted = 1;\n this.timerow = false;\n clock = window.setInterval(() =\u003E {\n this.total--;\n this.content = Math.floor(this.total \u002F 60) + 'min' \n + (this.total % 60) + 's left for working';\n if(this.total \u003C 1) {\n window.clearInterval(clock);\n this.total = parseInt(this.resttime) * 60;\n this.isStarted = 3;\n this.notify('Working Time is Over','It\\'s time to have a rest.');\n clock = window.setInterval(() =\u003E {\n this.total--;\n this.content = Math.floor(this.total \u002F 60) + 'min' \n + (this.total % 60) + 's left for relaxing';\n if(this.total \u003C 0) {\n window.clearInterval(clock);\n this.content = 'Relaxing Time is Over';\n this.total = 0;\n this.isStarted = 0;\n this.timerow = true;\n this.notify('Relaxing Time is Over','Now let\\'s start working again.')\n }\n },1000);\n }\n },1000);\n } else {\n this.$alert('Your input is not an number.', 'Please Use a Number as Time', {\n confirmButtonText: 'That\\'s OK',\n });\n }\n }\n else if(this.isStarted == 1) {\n window.clearInterval(clock);\n this.total = parseInt(this.resttime) * 60;\n this.isStarted = 3;\n clock = window.setInterval(() =\u003E {\n this.total--;\n this.content = Math.floor(this.total \u002F 60) + 'min' \n + (this.total % 60) + 's left for relaxing';\n if(this.total \u003C 0) {\n window.clearInterval(clock);\n this.content = 'Relaxing Time is Over';\n this.total = 0;\n this.isStarted = 0;\n this.timerow = true;\n }\n },1000);\n }\n else if(this.isStarted == 3) {\n window.clearInterval(clock);\n this.content = 'Start Timer';\n this.total = 0;\n this.worktime = '';\n this.resttime = '';\n this.isStarted = 0;\n this.timerow = true;\n }\n },\n notify (notifytitle,notifybody) {\n if(!window.Notification) {\n this.$alert('We can\\'t send you Notifications', 'Either you denied the permission or your platform don\\'t support it.', {\n confirmButtonText: 'That\\'s OK',\n });\n }\n else if(Notification.permission !== \"denied\") {\n Notification.requestPermission(function(status) {\n if (status === \"granted\") {\n let myNotification = new Notification(notifytitle, {\n body: notifybody,\n });\n myNotification.onclick = () =\u003E {\n \n };\n } else {\n this.$alert('We can\\'t send you Notifications', 'Either you denied the permission or your platform don\\'t support it.', {\n confirmButtonText: 'That\\'s OK',\n });\n }\n });\n }\n else {\n let myNotification = new Notification(notifytitle, {\n body: notifybody,\n });\n myNotification.onclick = () =\u003E {\n \n };\n }\n },\n },\n});\n\u003C\u002Fscript\u003E\n--\u003E","id":"0e4de16b-90f6-4653-b792-ad3cbfc14be1","is_binary":false,"title":"breaktimer.vue","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"ByRVmZ4dyW8","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"SJVl7WE_yZL"},{"code":"\u003Ctemplate\u003E\n \u003Cdiv id=\"main\"\u003E\n \u003Ch1\u003E{{ today }}\u003C\u002Fh1\u003E\n \u003Cinput v-model=\"email\" placeholder=\"Email\" type=\"email\" class=\"button input inputwithpadding\"\u002F\u003E\u003Cbr\u003E\n \u003Cinput v-model=\"pwd\" placeholder=\"Password\" type=\"password\" class=\"button input inputwithpadding\"\u002F\u003E\u003Cbr\u003E\n \u003Cbutton @click=\"login\" class=\"button loginbtn\"\u003ELogin\u003C\u002Fbutton\u003E  \n \u003Cbutton @click=\"reg\" class=\"button loginbtn\"\u003ERegister\u003C\u002Fbutton\u003E\n \u003C\u002Fdiv\u003E\n\u003C\u002Ftemplate\u003E\n\n\u003Cscript\u003E\nimport AV from 'leancloud-storage';\nvar APP_ID = 'C7SVWNehvavYoUH5cssIKYDH-MdYXbMMI';\nvar APP_KEY = 'nJ2QMhw8deT5QwNt40rjsaK7';\nAV.init({\n\tappId: APP_ID,\n\tappKey: APP_KEY,\n\tregion: 'us'\n});\n\nexport default {\n name: 'register',\n data() {\n return {\n email: '',\n pwd: '',\n today: \"Wow, it is Sunday! Isn't it?\",\n };\n },\n mounted: function(){\n var weekday = new Array(7);\n var weekday = new Array(7);\n weekday[0] = \"Sunday 😊\";\n weekday[1] = \"Monday 😎\";\n weekday[2] = \"Tuesday 😀\";\n weekday[3] = \"Wednesday 😏\";\n weekday[4] = \"Thursday 😙\";\n weekday[5] = \"Friday 😜\";\n weekday[6] = \"Saturday 😇\";\n var dd = new Date();\n var n = weekday[dd.getDay()];\n var randomWordArray = Array(\"Wow, it's \", \"Hey there, it's \", \"Happy \", \"It's currently \", \"Awesome, it's \", \"Have a nice \", \"Happy splendid \", \"Enjoy your \", \"What a good day, it's \");\n var randomWord = randomWordArray[Math.floor(Math.random() * randomWordArray.length)];\n this.today = randomWord + n;\n },\n methods: {\n reg(){\n var that = this;\n var user = new AV.User();\n user.setUsername(that.email);\n user.setPassword(that.pwd);\n user.signUp().then(function (loginedUser) {\n var avnote = AV.Object.extend('note');\n var note = new avnote();\n note.set('owner', AV.User.current());\n note.set('notecontent','');\n note.save().then(function (todo) {\n \n }, function (error) {\n alert(JSON.stringify(error));\n });\n var avtask = AV.Object.extend('tasktext');\n var task = new avtask();\n task.set('owner', AV.User.current());\n task.set('val','');\n task.save().then(function (todo) {\n that.$router.push('list'); \n }, function (error) {\n alert(JSON.stringify(error));\n });\n }, (function (error) {\n alert(JSON.stringify(error));\n }));\n },\n login(){\n var that = this;\n AV.User.logIn(that.email, that.pwd).then(function (loginedUser) {\n that.$router.push('list'); \n }, function (error) {\n alert(JSON.stringify(error));\n });\n },\n },\n};\n\u003C\u002Fscript\u003E\n","id":"30d9e806-db5a-4a3c-b778-1077c068a7d1","is_binary":false,"title":"register.vue","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"BkJrXW4uJbI","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"SJVl7WE_yZL"},{"code":"\u003Ctemplate\u003E\n \u003Cdiv id=\"simpleui\" class=\"simpleui\"\u003E\n \u003Ch1\u003E{{ today }}\u003C\u002Fh1\u003E\n \u003Cinput class=\"input inputwithpadding\" placeholder=\"Input your Task's Name\" v-model=\"entertask\"\u002F\u003E\n \u003Cinput class=\"input inputwithpadding\" placeholder=\"When Should it Start\" v-model=\"starttime\"\u002F\u003E\u003Cbr\u003E\n \u003Cinput class=\"input inputwithpadding\" placeholder=\"How Long Will it Last\" v-model=\"lastfor\"\u002F\u003E\n \u003Cbutton class=\"button\" @click=\"modify\"\u003E\u003Cmdcheck\u002F\u003E\u003C\u002Fbutton\u003E\u003Cbr\u003E\n \u003Cdiv id=\"tasks\"\u003E\n \u003Cdiv v-if=\"todos.length\"\u003E\n \u003Ctaskitem v-for=\"todo in todos\" :key=\"todo.id\" :todo=\"todo\" @delete=\"deletetask\" @start=\"starttask\"\u002F\u003E\n \u003C\u002Fdiv\u003E\n \u003Cdiv v-else class=\"taskpane\"\u003E {{ notask }} \u003C\u002Fdiv\u003E\n \u003C\u002Fdiv\u003E\n \u003Cbr\u003E\n \u003Cdiv id=\"footer\"\u003E\n \u003Cb\u003E\u003Cspan class=\"tasktime\"\u003EDominik Qiu from Scris Studio\u003C\u002Fspan\u003E\u003C\u002Fb\u003E\n \u003C!--\u003Cspan class=\"tasktime\"\u003E\u003Ca\u003ETutorial\u003C\u002Fa\u003E\u003C\u002Fspan\u003E--\u003E\n \u003Cbr\u003E\u003Cspan class=\"tasktime\"\u003EUse \u003Cb\u003E\u003Ca href=\"https:\u002F\u002Fwnr.scris.top\u002F\"\u003Ewnr\u003C\u002Fa\u003E\u003C\u002Fb\u003E together to get better experience.\u003C\u002Fspan\u003E\n \u003C\u002Fdiv\u003E\n \u003C\u002Fdiv\u003E\n\u003C\u002Ftemplate\u003E\n\u003Cscript\u003E\nimport mdcheck from \"vue-material-design-icons\u002FCheck.vue\"\nimport AV from 'leancloud-storage';\nimport timer from '..\u002Fcomponents\u002Ftimer.vue'\nimport breaktimer from '..\u002Fcomponents\u002Fbreaktimer.vue'\nimport taskitem from '..\u002Fcomponents\u002Ftaskitem.vue'\nimport { log } from 'util';\n\nif(!AV.User.current) {\n this.$router.push('register'); \n}\n\nvar avtask = AV.Object.extend('task');\nvar avnote = AV.Object.extend('note');\n\nexport default {\n name: 'simpleui',\n components: {\n timer,\n breaktimer,\n taskitem,\n mdcheck,\n },\n data() {\n return {\n today: \"Wow, it is Sunday! Isn't it?\",\n entertask: '',\n starttime: '',\n lastfor: '',\n nlastfor: 0,\n todos: [],\n notask: 'Tasks are Loading…',\n };\n },\n mounted: function(){\n this.initfunc();\n },\n methods: {\n additem(text, id, starttime, lastfor) {\n\t\t\tthis.todos.push({\n\t\t\t\tid: id,\n\t\t\t\ttitle: text,\n starttime: starttime,\n lastfor: lastfor,\n });\n },\n initfunc() {\n if(!AV.User.current) {\n this.$router.push('register'); \n }\n \n var weekday = new Array(7);\n var weekday = new Array(7);\n weekday[0] = \"Sunday 😊\";\n weekday[1] = \"Monday 😎\";\n weekday[2] = \"Tuesday 😀\";\n weekday[3] = \"Wednesday 😏\";\n weekday[4] = \"Thursday 😙\";\n weekday[5] = \"Friday 😜\";\n weekday[6] = \"Saturday 😇\";\n var dd = new Date();\n var n = weekday[dd.getDay()];\n var randomWordArray = Array(\"Wow, it's \", \"Hey there, it's \", \"Happy \", \"It's currently \", \"Awesome, it's \", \"Have a nice \", \"Happy splendid \", \"Enjoy your \", \"What a good day, it's \");\n var randomWord = randomWordArray[Math.floor(Math.random() * randomWordArray.length)];\n this.today = randomWord + n;\n \n var query = new AV.Query('task');\n query.equalTo('owner', AV.User.current());\n var thatq = this;\n query.ascending('starttime');\n query.find().then(function (results) {\n results.forEach((taskr) =\u003E {\n thatq.todos.push({\n id: taskr.id,\n title: taskr.get(\"taskname\"),\n starttime: taskr.get(\"starttime\"),\n lastfor: taskr.get(\"lastfor\")\n });\n });\n thatq.notask = 'No tasks left';\n }, function (error) {\n alert(JSON.stringify(error));\n });\n },\n addtask() {\n var ataskname = this.entertask.trim();\n var astarttime = this.starttime.trim();\n var alastfor = Number(this.lastfor.trim());\n this.entertask = '';\n this.starttime = '';\n this.lastfor = '';\n\t\t\tif (ataskname) {\n var itemVal = ataskname;\n\t\t\t\tvar todoFolder = new avtask();\n todoFolder.set('taskname', itemVal);\n todoFolder.set('isfinished', false);\n todoFolder.set('owner', AV.User.current());\n todoFolder.set('starttime', astarttime);\n todoFolder.set('lastfor', alastfor);\n var thatt = this;\n todoFolder.save().then(function (itodo) {\n thatt.additem(itodo.get(\"taskname\"), itodo.id, itodo.get(\"starttime\"), itodo.get(\"lastfor\"));\n }, function (error) {\n alert(JSON.stringify(error));\n });\n }\n },\n modify() {\n\t\t\tif (this.entertask) {\n this.addtask();\n }\n },\n starttask(taskid, tlastfor){\n log(\".i.\")\n },\n deletetask(taskid) {\n var itodo = AV.Object.createWithoutData('task', taskid);\n var thatd = this;\n itodo.destroy().then(function (success){\n thatd.todos = thatd.todos.filter(todo =\u003E {\n return todo.id !== taskid\n })\n }, function (error) {\n alert(JSON.stringify(error));\n });\n },\n logout() {\n this.$router.push('register'); \n },\n },\n};\n\u003C\u002Fscript\u003E\n","id":"e692bdb1-d782-454a-bc9b-e947d5d2ae25","is_binary":false,"title":"simpleui.vue","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"S1grmWVuJWL","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"SJVl7WE_yZL"},{"code":"https:\u002F\u002Frawcdn.githack.com\u002Fscris\u002Fscristask\u002Fddc85a3565dad88c47220510cd9d4854258d4970\u002Fsrc\u002Fassets\u002Ftaskicon.psd","id":"67e04523-b3a6-4a25-aa9c-410aab8c02e3","is_binary":true,"title":"taskicon.psd","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"H1fvmb4_JbI","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"Bk7gm-EOJbU"},{"code":"https:\u002F\u002Frawcdn.githack.com\u002Fscris\u002Fscristask\u002Fddc85a3565dad88c47220510cd9d4854258d4970\u002Fapp\u002Fres\u002Fscreen\u002Fandroid\u002Fscreen-xhdpi-landscape.png","id":"7eb3c206-63b4-4d92-bea2-f4f6a9ad9769","is_binary":true,"title":"screen-xhdpi-landscape.png","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"By7D7Z4O1ZI","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"Sy0xQZN_JZU"},{"code":"\u003Ctemplate\u003E\n \u003Cdiv class=\"taskitem\"\u003E\n \u003Cdiv class=\"taskpane\"\u003E\n \u003Cdiv class=\"taskleft\"\u003E\n \u003Cbutton class=\"button tasktitle\" @click=\"toggle\"\u003E {{ todo.title }} \u003C\u002Fbutton\u003E\n \u003Cdiv class=\"tasktime\"\u003E\n \u003Cmdlist\u002F\u003E {{ todo.starttime }} \u003Cmdtimer\u002F\u003E {{ todo.lastfor }} mins\n \u003C\u002Fdiv\u003E\n \u003C\u002Fdiv\u003E\n \u003Cnav class=\"taskright\"\u003E\n \u003Cbutton class=\"button\" @click=\"$emit('delete',todo.id)\"\u003E \u003Cmdclose\u002F\u003E\u003C\u002Fbutton\u003E\n \u003Cbutton class=\"button\" @click=\"$emit('delete',todo.id)\"\u003E\u003Cmdcheck\u002F\u003E\u003C\u002Fbutton\u003E\n \u003C\u002Fnav\u003E\n \u003C\u002Fdiv\u003E\n \u003Cbr\u003E\n \u003C\u002Fdiv\u003E\n\u003C\u002Ftemplate\u003E\n\n\u003Cscript\u003E\nimport mdclose from \"vue-material-design-icons\u002FClose.vue\"\nimport mdtimer from \"vue-material-design-icons\u002FTimer.vue\"\nimport mdlist from \"..\u002Fcomponents\u002FClipboardTextPlayOutline.vue\"\nimport mdcheck from \"vue-material-design-icons\u002FCheck.vue\"\nexport default {\n name: 'taskitem',\n components: {\n mdclose,\n mdtimer,\n mdlist,\n mdcheck,\n },\n props: {\n todo: {\n type: Object,\n required: true,\n },\n },\n data() {\n return{\n toggling: false,\n }\n },\n mounted: function(){\n this.initfunc();\n },\n methods: {\n initfunc() {\n \n },\n toggle() {\n this.toggling = !this.toggling;\n },\n }\n}\n\u003C\u002Fscript\u003E\n","id":"58569997-5391-40c4-a073-3f7a709a5758","is_binary":false,"title":"taskitem.vue","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"SkZS7WNuJWU","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"SJVl7WE_yZL"},{"code":"\u003Ctemplate\u003E\n \u003Cdiv class=\"timer\" id=\"timer\"\u003E\n \u003Cdiv class=\"input inputwhited\"\u003E{{ this.content }}\u003C\u002Fdiv\u003E\n \u003Cbutton class=\"button\" @click=\"countDown\" @dblclick=\"dbl\"\u003E\u003Cmdplay v-if='isStarted == 0'\u002F\u003E\u003Cmdpause v-else-if='isStarted == 1'\u002F\u003E\u003Cmdrfilled v-else\u002F\u003E\u003C\u002Fbutton\u003E\n \u003Cbutton class=\"button\" @click=\"$emit('delete',timertaskname)\"\u003E\u003Cmdcheck\u002F\u003E\u003C\u002Fbutton\u003E\n \u003C\u002Fdiv\u003E\n\u003C\u002Ftemplate\u003E\n\n\u003Cscript\u003E\nimport mdplay from \"vue-material-design-icons\u002FPlay.vue\"\nimport mdcheck from \"vue-material-design-icons\u002FCheck.vue\"\nimport mdpause from \"vue-material-design-icons\u002FPause.vue\"\nimport mdrfilled from \"vue-material-design-icons\u002FRadioboxMarked.vue\"\nvar clock;\nexport default ({\n name: 'timer',\n props: {\n timertitle: {\n type: String,\n required: true,\n },\n timertimeset: {\n type: Number,\n required: true,\n }\n },\n components: {\n mdplay,\n mdcheck,\n mdpause,\n mdrfilled,\n },\n data () {\n return {\n content: 'Timer haven\\'t been Started yet' ,\n timertaskname: '',\n total: 60,\n isStarted: 0,\n dblclicky: 'End Timer',\n isDblShow: false,\n timerow: true,\n };\n },\n methods: {\n clocky() {\n \n },\n countDown() {\n \u002F\u002F0=haven't started yet\n \u002F\u002F1=working\n \u002F\u002F2=paused\n if(this.isStarted == 0) {\n this.$emit('start', this.timertaskname, this.timertimeset);\n if(!isNaN(parseInt(this.timertimeset))) {\n this.total = parseInt(this.timertimeset) * 60;\n this.isStarted = 1;\n this.timerow = false;\n clock = window.setInterval(() =\u003E {\n this.total--;\n this.content = Math.floor(this.total \u002F 60) + 'min' \n + (this.total % 60) + 's left';\n if(this.total \u003C 0) {\n window.clearInterval(clock);\n this.content = 'Time is Up';\n this.total = 0;\n this.isStarted = 0;\n this.timerow = true;\n this.notify('Time is Up','Now check whether you\\'ve finished the task or not.');\n }\n },1000);\n } else {\n this.$alert('Your input is not an number.', 'Please Use a Number as Time', {\n confirmButtonText: 'That\\'s OK',\n });\n }\n }\n else if(this.isStarted == 1) {\n this.isStarted = 2;\n window.clearInterval(clock);\n this.isDblShow = true;\n this.content = 'Click-\u003EResume, Double-\u003EFinish';\n }\n else {\n this.isStarted = 1;\n window.clearInterval(clock);\n this.isDblShow = false;\n clock = window.setInterval(() =\u003E {\n this.total--;\n this.content = Math.floor(this.total \u002F 60) + 'min' \n + (this.total % 60) + 's left.';\n if(this.total \u003C 0) {\n window.clearInterval(clock);\n this.content = 'Time is Up';\n this.total = 0;\n this.isStarted = 0;\n this.timerow = true;\n this.notify('Time is Up','Now check whether you\\'ve finished the task or not.');\n }\n },1000);\n }\n },\n dbl() {\n if(this.isStarted == 2) {\n window.clearInterval(clock);\n this.content = 'Start Timer';\n this.total = 0;\n this.isStarted = 0;\n this.isDblShow = false;\n this.timerow = true;\n }\n },\n notify (notifytitle,notifybody) {\n if(!window.Notification) {\n this.$alert('We can\\'t send you Notifications', 'Either you denied the permission or your platform don\\'t support it.', {\n confirmButtonText: 'That\\'s OK',\n });\n }\n else if(Notification.permission !== \"denied\") {\n Notification.requestPermission(function(status) {\n if (status === \"granted\") {\n let myNotification = new Notification(notifytitle, {\n body: notifybody,\n });\n myNotification.onclick = () =\u003E {\n \n };\n } else {\n this.$alert('We can\\'t send you Notifications', 'Either you denied the permission or your platform don\\'t support it.', {\n confirmButtonText: 'That\\'s OK',\n });\n }\n });\n }\n else {\n let myNotification = new Notification(notifytitle, {\n body: notifybody,\n });\n myNotification.onclick = () =\u003E {\n \n };\n }\n },\n },\n});\n\u003C\u002Fscript\u003E\n","id":"9a6c9f79-b510-418f-80c5-a1736de54393","is_binary":false,"title":"timer.vue","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"HJGHm-VdJWL","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"SJVl7WE_yZL"},{"code":"\u002F\u002F The Vue build version to load with the `import` command\n\u002F\u002F (runtime-only or standalone) has been set in webpack.base.conf with an alias.\nimport Vue from 'vue';\nimport ElementUI from 'element-ui';\nimport 'element-ui\u002Flib\u002Ftheme-chalk\u002Findex.css';\nimport App from '.\u002FApp';\nimport router from '.\u002Frouter';\nimport cordova from '.\u002Fmobile-index';\nimport \"vue-material-design-icons\u002Fstyles.css\"\n\nVue.config.productionTip = false;\nVue.use(ElementUI);\n\nif(process.env.LINX_AGENT == 'cordova') \n{\n \n cordova.onDeviceReady = () =\u003E {\n \u002F* eslint-disable no-new *\u002F\n new Vue({\n el: '#app',\n router,\n components: { App },\n template: '\u003CApp\u002F\u003E',\n });\n }\n cordova.initialize();\n\n} else {\n \u002F* eslint-disable no-new *\u002F\n new Vue({\n el: '#app',\n router,\n components: { App },\n template: '\u003CApp\u002F\u003E',\n });\n}\n","id":"eb1edf9f-26bb-4df7-a9b9-91359dc7107e","is_binary":false,"title":"main.js","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"r17BXWNuJZ8","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"r1fxX-E_1b8"},{"code":"\u002F*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n*\u002F\n\nexport default {\n \u002F\u002F Application Constructor\n initialize () {\n if(process.env.LINX_AGENT == 'cordova') this.bindEvents();\n },\n \u002F\u002F Bind Event Listeners\n \u002F\u002F\n \u002F\u002F Bind any events that are required on startup. Common events are:\n \u002F\u002F 'load', 'deviceready', 'offline', and 'online'.\n bindEvents () {\n const app = document.URL.indexOf('http:\u002F\u002F') === -1 && document.URL.indexOf('https:\u002F\u002F') === -1;\n if (app) {\n document.addEventListener('deviceready', this.onDeviceReady.bind(this), false);\n } else {\n this.onDeviceReady();\n }\n },\n \u002F\u002F deviceready Event Handler\n \u002F\u002F\n \u002F\u002F The scope of 'this' is the event. In order to call the 'receivedEvent'\n \u002F\u002F function, we must explicitly call 'app.receivedEvent(...);'\n onDeviceReady () {\n }\n};","id":"3f0e26af-a953-4877-9a64-bc4353bd5da8","is_binary":false,"title":"mobile-index.js","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"S14rXWEdJbU","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"r1fxX-E_1b8"},{"code":"import Vue from 'vue';\nimport Router from 'vue-router';\nimport register from '@\u002Fcomponents\u002Fregister';\nimport simpleui from '@\u002Fcomponents\u002Fsimpleui';\n\nVue.use(Router);\n\n\nexport default new Router({\n routes: [\n {\n path: '\u002F',\n name: 'register',\n component: register,\n },\n {\n path: '\u002Fregister',\n name: 'register',\n component: register,\n },\n {\n path: '\u002Flist',\n name: 'simpleui',\n component: simpleui,\n },\n ],\n});\n","id":"eaa7f1b8-792b-4585-9980-3cd354cb0121","is_binary":false,"title":"index.js","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"BJHBm-4dJbI","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"rJSe7bE_kbU"},{"code":"\u002F\u002F A custom Nightwatch assertion.\n\u002F\u002F The assertion name is the filename.\n\u002F\u002F Example usage:\n\u002F\u002F\n\u002F\u002F browser.assert.elementCount(selector, count)\n\u002F\u002F\n\u002F\u002F For more information on custom assertions see:\n\u002F\u002F http:\u002F\u002Fnightwatchjs.org\u002Fguide#writing-custom-assertions\n\nexports.assertion = function (selector, count) {\n this.message = 'Testing if element \u003C' + selector + '\u003E has count: ' + count\n this.expected = count\n this.pass = function (val) {\n return val === this.expected\n }\n this.value = function (res) {\n return res.value\n }\n this.command = function (cb) {\n var self = this\n return this.api.execute(function (selector) {\n return document.querySelectorAll(selector).length\n }, [selector], function (res) {\n cb.call(self, res)\n })\n }\n}\n","id":"96831be8-6c3a-40dc-9f27-44b55d59d21d","is_binary":false,"title":"elementCount.js","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"B18BX-VOJbI","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"ryug7-Vd1ZI"},{"code":"https:\u002F\u002Frawcdn.githack.com\u002Fscris\u002Fscristask\u002Fddc85a3565dad88c47220510cd9d4854258d4970\u002Fapp\u002Fres\u002Fscreen\u002Fandroid\u002Fscreen-xhdpi-portrait.png","id":"77ff8b2a-4261-4537-b715-50200c4280fb","is_binary":true,"title":"screen-xhdpi-portrait.png","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"Hy4DX-4OkWU","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"Sy0xQZN_JZU"},{"code":"\u002F\u002F 1. start the dev server using production config\nprocess.env.NODE_ENV = 'testing'\n\nconst webpack = require('webpack')\nconst DevServer = require('webpack-dev-server')\n\nconst webpackConfig = require('..\u002F..\u002Fbuild\u002Fwebpack.prod.conf')\nconst devConfigPromise = require('..\u002F..\u002Fbuild\u002Fwebpack.dev.conf')\n\nlet server\n\ndevConfigPromise.then(devConfig =\u003E {\n const devServerOptions = devConfig.devServer\n const compiler = webpack(webpackConfig)\n server = new DevServer(compiler, devServerOptions)\n const port = devServerOptions.port\n const host = devServerOptions.host\n return server.listen(port, host)\n})\n.then(() =\u003E {\n \u002F\u002F 2. run the nightwatch test suite against it\n \u002F\u002F to run in additional browsers:\n \u002F\u002F 1. add an entry in test\u002Fe2e\u002Fnightwatch.conf.js under \"test_settings\"\n \u002F\u002F 2. add it to the --env flag below\n \u002F\u002F or override the environment flag, for example: `npm run e2e -- --env chrome,firefox`\n \u002F\u002F For more information on Nightwatch's config file, see\n \u002F\u002F http:\u002F\u002Fnightwatchjs.org\u002Fguide#settings-file\n let opts = process.argv.slice(2)\n if (opts.indexOf('--config') === -1) {\n opts = opts.concat(['--config', 'test\u002Fe2e\u002Fnightwatch.conf.js'])\n }\n if (opts.indexOf('--env') === -1) {\n opts = opts.concat(['--env', 'chrome'])\n }\n\n const spawn = require('cross-spawn')\n const runner = spawn('.\u002Fnode_modules\u002F.bin\u002Fnightwatch', opts, { stdio: 'inherit' })\n\n runner.on('exit', function (code) {\n server.close()\n process.exit(code)\n })\n\n runner.on('error', function (err) {\n server.close()\n throw err\n })\n})\n","id":"8d12775a-1506-4a28-ae74-500ad01a1688","is_binary":false,"title":"runner.js","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"r1uB7WVO1W8","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"BJwxXWV_ybU"},{"code":"\u002F\u002F For authoring Nightwatch tests, see\n\u002F\u002F http:\u002F\u002Fnightwatchjs.org\u002Fguide#usage\n\nmodule.exports = {\n 'default e2e tests': function test(browser) {\n \u002F\u002F automatically uses dev Server port from \u002Fconfig.index.js\n \u002F\u002F default: http:\u002F\u002Flocalhost:8080\n \u002F\u002F see nightwatch.conf.js\n const devServer = browser.globals.devServerURL\n\n browser\n .url(devServer)\n .waitForElementVisible('#app', 5000)\n .assert.elementPresent('.hello')\n .assert.containsText('h1', 'Welcome to Your Vue.js App')\n .assert.elementCount('img', 1)\n .end()\n }\n}\n","id":"e1585368-003f-497e-bdd2-88b5499c15d2","is_binary":false,"title":"test.js","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"SyYHm-VdyWU","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"Sktl7-NO1ZU"},{"code":"{\n \"env\": { \n \"jest\": true\n },\n \"globals\": { \n }\n}\n","id":"a07b3df5-b5f3-4d4e-a853-166b48c0e6c1","is_binary":false,"title":".eslintrc","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"Sy5HXWEdyZU","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"Hk5lmbNOJWL"},{"code":"const path = require('path')\n\nmodule.exports = {\n rootDir: path.resolve(__dirname, '..\u002F..\u002F'),\n moduleFileExtensions: [\n 'js',\n 'json',\n 'vue'\n ],\n moduleNameMapper: {\n '^@\u002F(.*)
: '\u003CrootDir\u003E\u002Fsrc\u002F$1'\n },\n transform: {\n '^.+\\\\.js
: '\u003CrootDir\u003E\u002Fnode_modules\u002Fbabel-jest',\n '.*\\\\.(vue)
: '\u003CrootDir\u003E\u002Fnode_modules\u002Fvue-jest'\n },\n testPathIgnorePatterns: [\n '\u003CrootDir\u003E\u002Ftest\u002Fe2e'\n ],\n snapshotSerializers: ['\u003CrootDir\u003E\u002Fnode_modules\u002Fjest-serializer-vue'],\n setupFiles: ['\u003CrootDir\u003E\u002Ftest\u002Funit\u002Fsetup'],\n mapCoverage: true,\n coverageDirectory: '\u003CrootDir\u003E\u002Ftest\u002Funit\u002Fcoverage',\n collectCoverageFrom: [\n 'src\u002F**\u002F*.{js,vue}',\n '!src\u002Fmain.js',\n '!src\u002Frouter\u002Findex.js',\n '!**\u002Fnode_modules\u002F**'\n ]\n}\n","id":"f176eecb-fea1-4d81-b3bd-d64253ed4892","is_binary":false,"title":"jest.conf.js","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"r1oS7bNOkb8","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"Hk5lmbNOJWL"},{"code":"import Vue from 'vue'\n\nVue.config.productionTip = false\n","id":"a09b251a-27bf-4a3e-adf9-a55dbdfc2f07","is_binary":false,"title":"setup.js","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"S13HmZ4dy-I","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"Hk5lmbNOJWL"},{"code":"import Vue from 'vue'\nimport HelloWorld from '@\u002Fcomponents\u002FHelloWorld'\n\ndescribe('HelloWorld.vue', () =\u003E {\n it('should render correct contents', () =\u003E {\n const Constructor = Vue.extend(HelloWorld)\n const vm = new Constructor().$mount()\n expect(vm.$el.querySelector('.hello h1').textContent)\n .toEqual('Welcome to Your Vue.js App')\n })\n})\n","id":"e350c691-0c2b-4b14-952b-9fbfb5e150ad","is_binary":false,"title":"HelloWorld.spec.js","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"rJTHX-VdJ-8","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"SJjeXZNdyWI"},{"code":"https:\u002F\u002Frawcdn.githack.com\u002Fscris\u002Fscristask\u002Fddc85a3565dad88c47220510cd9d4854258d4970\u002Fapp\u002Fres\u002Ficon\u002Fwindows-phone\u002Ficon-173-tile.png","id":"427e35ef-a275-4335-9d86-36864fb00762","is_binary":true,"title":"icon-173-tile.png","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"HJASXb4_1bU","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"rkhQ-NOJbL"},{"code":"https:\u002F\u002Frawcdn.githack.com\u002Fscris\u002Fscristask\u002Fddc85a3565dad88c47220510cd9d4854258d4970\u002Fapp\u002Fres\u002Fscreen\u002Fblackberry\u002Fscreen-225.png","id":"18946db9-c146-4054-afa1-eab790412e0c","is_binary":true,"title":"screen-225.png","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"BJJ8QZEd1bU","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"rk2e7-Vd1WI"},{"code":"https:\u002F\u002Frawcdn.githack.com\u002Fscris\u002Fscristask\u002Fddc85a3565dad88c47220510cd9d4854258d4970\u002Fapp\u002Fres\u002Fscreen\u002Fwindows-phone\u002Fscreen-portrait.jpg","id":"8bde9e1d-60e3-4e50-ac19-651e71b16b91","is_binary":true,"title":"screen-portrait.jpg","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"B1l87ZN_1b8","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"rJaeQW4dk-L"},{"code":"https:\u002F\u002Frawcdn.githack.com\u002Fscris\u002Fscristask\u002Fddc85a3565dad88c47220510cd9d4854258d4970\u002Fapp\u002Fres\u002Fscreen\u002Fandroid\u002Fscreen-ldpi-landscape.png","id":"b7b11ac6-9082-44ad-a5df-2399c10ece3e","is_binary":true,"title":"screen-ldpi-landscape.png","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"Sk-UXb4uyZL","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"Sy0xQZN_JZU"},{"code":"https:\u002F\u002Frawcdn.githack.com\u002Fscris\u002Fscristask\u002Fddc85a3565dad88c47220510cd9d4854258d4970\u002Fapp\u002Fres\u002Fscreen\u002Fandroid\u002Fscreen-ldpi-portrait.png","id":"70e8162a-6bd5-415c-96f5-6ca8dadbd783","is_binary":true,"title":"screen-ldpi-portrait.png","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"BkGI7WVOkZI","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"Sy0xQZN_JZU"},{"code":"https:\u002F\u002Frawcdn.githack.com\u002Fscris\u002Fscristask\u002Fddc85a3565dad88c47220510cd9d4854258d4970\u002Fapp\u002Fres\u002Fscreen\u002Fblackberry10\u002Fsplash-720x720.png","id":"38637db9-0c70-466d-9644-b91d93b2a620","is_binary":true,"title":"splash-720x720.png","sha":null,"inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","upload_id":null,"shortid":"S1QUmWV_J-L","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"H1kZQZ4_ybI"}],"collection":false,"source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","team":null,"title":"scristask","permissions":{"prevent_sandbox_export":false,"prevent_sandbox_leaving":false},"updated_at":"2020-01-17T17:50:50","feature_flags":{"comments":false,"container_lsp":false},"directories":[{"id":"00cab3fb-fbee-41aa-ba48-9cf797bf3527","title":"static","inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","shortid":"Sy7-Ndk-U","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":null},{"id":"c69a66c8-c9b5-487e-a146-484da1dd4ce1","title":"app","inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","shortid":"Syg7-Vu1-8","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":null},{"id":"131bfdfd-4d67-42aa-ae1b-0b9b19a94048","title":"build","inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","shortid":"HylgXW4dy-I","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":null},{"id":"2edcc68c-1618-4a75-8a80-f7c17b9a85cd","title":"config","inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","shortid":"r1-lXZNOJWU","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":null},{"id":"bbf68eb1-809f-40f1-a75a-0a9e66b65a85","title":"src","inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","shortid":"r1fxX-E_1b8","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":null},{"id":"c7b6e6c0-b7f7-43c6-a3cd-6d67737977a2","title":"test","inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","shortid":"Hy8lX-Nd1ZI","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":null},{"id":"f7c1b6e7-cf12-4113-ba54-1113dff8e7a7","title":"hooks","inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","shortid":"BJb7ZVOJbU","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"Syg7-Vu1-8"},{"id":"d3876dac-b6af-4382-bfaa-348db74091e4","title":"res","inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","shortid":"SyMmWEd1ZI","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"Syg7-Vu1-8"},{"id":"cf5e8210-ae5d-4706-b34b-92f0c2ec6300","title":"icon","inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","shortid":"rkmXWVuy-I","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"SyMmWEd1ZI"},{"id":"1568144f-589d-46ce-a8fc-dcc12a0bf39b","title":"screen","inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","shortid":"HkaQ-E_kbU","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"SyMmWEd1ZI"},{"id":"264fed04-f7d2-4eac-9483-284a92488419","title":"android","inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","shortid":"BJE7bEOJb8","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"rkmXWVuy-I"},{"id":"a64eb3fa-5119-4b8c-b23f-1d4056064f73","title":"bada-wac","inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","shortid":"S1HQ-4u1-L","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"rkmXWVuy-I"},{"id":"0ec8d08e-ae5f-40f3-8c01-0852b1f3e181","title":"bada","inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","shortid":"SJLmZ4ukbI","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"rkmXWVuy-I"},{"id":"227ef887-1ea7-4f9b-bd7e-dae12bf7d215","title":"blackberry","inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","shortid":"r1wmWEuyWI","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"rkmXWVuy-I"},{"id":"026f7016-bb81-4e28-a39a-f3ffef829f15","title":"blackberry10","inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","shortid":"Hy_m-VdyZL","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"rkmXWVuy-I"},{"id":"c0a57a89-e30a-48a3-888a-84074af3fffe","title":"ios","inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","shortid":"BJYmWV_1bL","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"rkmXWVuy-I"},{"id":"78472b9e-8398-4c5b-8d9a-15b72ce53c2c","title":"tizen","inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","shortid":"Sk5XWNuJ-I","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"rkmXWVuy-I"},{"id":"16824273-f139-40ed-8699-af86a3141e3e","title":"webos","inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","shortid":"ryi7b4OkWL","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"rkmXWVuy-I"},{"id":"8b84b21e-d444-413b-9c4a-14e67d17a29e","title":"windows-phone","inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","shortid":"rkhQ-NOJbL","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"rkmXWVuy-I"},{"id":"234fd24c-d437-4b00-9442-0c9f70c5f7ab","title":"tizen","inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","shortid":"HkR7ZN_k-8","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"HkaQ-E_kbU"},{"id":"8bd3f3eb-ed3d-4279-a406-cafc2f355eca","title":"webos","inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","shortid":"B1Je7-4OJWL","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"HkaQ-E_kbU"},{"id":"675fe1a3-4a8f-4105-8d22-42d13c131d0b","title":"blackberry","inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","shortid":"rk2e7-Vd1WI","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"HkaQ-E_kbU"},{"id":"ef8902e2-3687-42ca-9e45-7a8819f8d682","title":"windows-phone","inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","shortid":"rJaeQW4dk-L","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"HkaQ-E_kbU"},{"id":"442a9491-5be0-4ee5-b3ae-86e759ee620a","title":"android","inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","shortid":"Sy0xQZN_JZU","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"HkaQ-E_kbU"},{"id":"f8487abc-039c-414b-a843-2f85cad54553","title":"blackberry10","inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","shortid":"H1kZQZ4_ybI","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"HkaQ-E_kbU"},{"id":"a0ab1189-2c7b-4e7b-9cd8-832ad902249e","title":"bada-wac","inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","shortid":"BJlZQbEd1ZI","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"HkaQ-E_kbU"},{"id":"25b584d4-a292-4afd-856d-7069b49f2346","title":"ios","inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","shortid":"B1ZbQWVu1WI","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"HkaQ-E_kbU"},{"id":"f704255d-4fcd-4185-b46a-e5fe656ad384","title":"bada","inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","shortid":"HyMZXZVuJbU","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"HkaQ-E_kbU"},{"id":"1df279aa-5792-4661-8b67-5bc2654f1ac6","title":"assets","inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","shortid":"Bk7gm-EOJbU","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"r1fxX-E_1b8"},{"id":"1af772f0-9cea-4860-8aaa-aff032318126","title":"components","inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","shortid":"SJVl7WE_yZL","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"r1fxX-E_1b8"},{"id":"b570715b-32be-4972-874b-fff958d1a8dc","title":"router","inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","shortid":"rJSe7bE_kbU","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"r1fxX-E_1b8"},{"id":"aaecc41c-6a8e-4470-b98b-7981efc8f337","title":"e2e","inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","shortid":"BJwxXWV_ybU","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"Hy8lX-Nd1ZI"},{"id":"f0a12a40-6ea8-450e-8df8-b678bcf58934","title":"unit","inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","shortid":"Hk5lmbNOJWL","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"Hy8lX-Nd1ZI"},{"id":"fb524f88-b6aa-4298-b4cf-cc1466cdfc54","title":"custom-assertions","inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","shortid":"ryug7-Vd1ZI","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"BJwxXWV_ybU"},{"id":"32b5ae83-cdaa-49e1-a00f-9632efde09bd","title":"specs","inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","shortid":"Sktl7-NO1ZU","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"BJwxXWV_ybU"},{"id":"7f02083a-efde-468e-bdda-23e0ca057401","title":"specs","inserted_at":"2020-01-17T17:50:50","updated_at":"2020-01-17T17:50:50","shortid":"SJjeXZNdyWI","source_id":"eacb66ba-50fd-460d-a9ff-2e718fc91654","directory_shortid":"Hk5lmbNOJWL"}],"template":"vue-cli","picks":[],"base_git":null,"room_id":null,"tags":[],"npm_dependencies":{},"is_sse":false,"like_count":0,"inserted_at":"2018-11-24T03:38:52","forked_template":null,"pr_number":null,"restricted":false,"free_plan_editing_restricted":false,"owned":false,"npm_registries":[],"original_git_commit_sha":null,"restrictions":{"free_plan_editing_restricted":false,"live_sessions_restricted":false},"settings":{"ai_consent":null},"view_count":867,"external_resources":[],"fork_count":2,"description":"Special Tasklist and Two Timers","draft":true,"custom_template":{"id":"67c5af58-5927-4bb8-b7ef-8b6c46c701ac","title":"scristask","color":"#61DAFB","v2":false,"url":null,"published":false,"icon_url":"github","official":false},"privacy":0,"git":{"path":"","branch":"master","repo":"scristask","username":"scris","commit_sha":"ddc85a3565dad88c47220510cd9d4854258d4970"}};