├── .babelrc ├── .editorconfig ├── .github └── FUNDING.yml ├── .gitignore ├── .postcssrc.js ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── build ├── build.js ├── check-versions.js ├── logo.png ├── utils.js ├── vue-loader.conf.js ├── webpack.base.conf.js ├── webpack.dev.conf.js └── webpack.prod.conf.js ├── config ├── dev.env.js ├── index.js └── prod.env.js ├── docs ├── index.html └── static │ ├── SplitText.min.js │ ├── css │ ├── app.da4edb0940c93b0ccf15ba7f997689b5.css │ └── app.da4edb0940c93b0ccf15ba7f997689b5.css.map │ ├── fonts │ ├── 1a6dec8e-26f9-4243-8495-835709538f92.3939ac6.eot │ ├── 1f6af904-724d-4f75-b836-51c3d674a37e.1748af2.eot │ ├── 2029e71f-067d-46a8-bc44-b5c64a258928.daa6dec.woff2 │ ├── 33f5d8d9-105f-4a49-9351-74ecae7f4a49.32044ed.ttf │ ├── 3e18b964-7a6f-4828-8e18-5cc698e1051f.c99c69c.woff │ ├── 4bfd13a9-3195-4d8f-87a9-83a212d18b16.a00cb26.woff2 │ ├── 63aa9f40-04be-453a-a672-aa8f9919115d.75f4b90.woff │ ├── a7622e06-0cde-414a-a25d-5e5f6f5bfcaa.6885c19.ttf │ ├── a82a5fb6-ad03-4675-801e-d3182a58ff5f.623b22d.ttf │ ├── b01b8a8a-cb45-4c4e-b2bb-e5b8853e6fe6.cc06d64.woff2 │ ├── c4be5717-c19c-43a5-9ad3-b548ddf070d4.29d5f41.eot │ └── f05272f9-83e3-4de6-8423-5d57f730c87b.fd6b6e9.woff │ ├── img │ ├── b56150eb-5caa-4385-b907-373e97ddb2ff.8286231.svg │ ├── beb2cee2-1a51-44ca-848f-4f795394ee5a.b8d79de.svg │ └── ca4569d2-e4c3-4dec-8bfe-52712ef6bc31.52c259e.svg │ ├── js │ ├── app.e4cceecd78724032dadb.js │ ├── app.e4cceecd78724032dadb.js.map │ ├── manifest.2ae2e69a05c33dfc65f8.js │ ├── manifest.2ae2e69a05c33dfc65f8.js.map │ ├── vendor.aaa6f9e0cfe8c0fffcb4.js │ └── vendor.aaa6f9e0cfe8c0fffcb4.js.map │ └── normalize.css ├── index.html ├── package-lock.json ├── package.json ├── src ├── App.vue ├── assets │ └── Fonts │ │ ├── 1a6dec8e-26f9-4243-8495-835709538f92.eot │ │ ├── 1f6af904-724d-4f75-b836-51c3d674a37e.eot │ │ ├── 2029e71f-067d-46a8-bc44-b5c64a258928.woff2 │ │ ├── 33f5d8d9-105f-4a49-9351-74ecae7f4a49.ttf │ │ ├── 3e18b964-7a6f-4828-8e18-5cc698e1051f.woff │ │ ├── 4bfd13a9-3195-4d8f-87a9-83a212d18b16.woff2 │ │ ├── 63aa9f40-04be-453a-a672-aa8f9919115d.woff │ │ ├── a7622e06-0cde-414a-a25d-5e5f6f5bfcaa.ttf │ │ ├── a82a5fb6-ad03-4675-801e-d3182a58ff5f.ttf │ │ ├── b01b8a8a-cb45-4c4e-b2bb-e5b8853e6fe6.woff2 │ │ ├── b56150eb-5caa-4385-b907-373e97ddb2ff.svg │ │ ├── beb2cee2-1a51-44ca-848f-4f795394ee5a.svg │ │ ├── c4be5717-c19c-43a5-9ad3-b548ddf070d4.eot │ │ ├── ca4569d2-e4c3-4dec-8bfe-52712ef6bc31.svg │ │ └── f05272f9-83e3-4de6-8423-5d57f730c87b.woff ├── components │ ├── AppCode.vue │ ├── AppGithubCorner.vue │ ├── AppMethodPrimary.vue │ ├── LocaleSwitcher.vue │ └── methods │ │ ├── MethodBase.vue │ │ └── MethodChoice.vue ├── locale │ ├── ar │ │ └── index.js │ ├── bg │ │ └── index.js │ ├── cz │ │ └── index.js │ ├── de │ │ └── index.js │ ├── el │ │ └── index.js │ ├── en │ │ └── index.js │ ├── es │ │ └── index.js │ ├── fi │ │ └── index.js │ ├── fr │ │ └── index.js │ ├── id │ │ └── index.js │ ├── it │ │ └── index.js │ ├── ja │ │ └── index.js │ ├── nl │ │ └── index.js │ ├── pt │ │ └── index.js │ ├── ru │ │ └── index.js │ ├── sr │ │ └── index.js │ ├── tr │ │ └── index.js │ ├── ua │ │ └── index.js │ └── zh_cn │ │ └── index.js └── main.js ├── static ├── .gitkeep ├── SplitText.min.js └── normalize.css └── store ├── ar ├── index.js └── meta.json ├── bg ├── index.js └── meta.json ├── cz ├── index.js └── meta.json ├── de ├── index.js └── meta.json ├── el ├── index.js └── meta.json ├── en ├── index.js └── meta.json ├── es ├── index.js └── meta.json ├── fi ├── index.js └── meta.json ├── fr ├── index.js └── meta.json ├── id ├── index.js └── meta.json ├── index.js ├── it ├── index.js └── meta.json ├── ja ├── index.js └── meta.json ├── nl ├── index.js └── meta.json ├── pt ├── index.js └── meta.json ├── ru ├── index.js └── meta.json ├── sr ├── index.js └── meta.json ├── tr ├── index.js └── meta.json ├── ua ├── index.js └── meta.json └── zh_cn ├── index.js └── meta.json /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | ["env", { 4 | "modules": false, 5 | "targets": { 6 | "browsers": ["> 1%", "last 2 versions", "not ie <= 8"] 7 | } 8 | }], 9 | "stage-2" 10 | ], 11 | "plugins": ["transform-vue-jsx", "transform-runtime"] 12 | } 13 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | quote_type = single 11 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: [sdras] 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | npm-debug.log* 2 | yarn-debug.log* 3 | yarn-error.log* 4 | 5 | # Editor directories and files 6 | .idea 7 | .vscode 8 | *.suo 9 | *.ntvs* 10 | *.njsproj 11 | *.sln 12 | 13 | ### OSX ### 14 | *.DS_Store 15 | .AppleDouble 16 | .LSOverride 17 | 18 | # Icon must end with two 19 | Icon 20 | # Thumbnails 21 | ._* 22 | # Files that might appear in the root of a volume 23 | .DocumentRevisions-V100 24 | .fseventsd 25 | .Spotlight-V100 26 | .TemporaryItems 27 | .Trashes 28 | .VolumeIcon.icns 29 | .com.apple.timemachine.donotpresent 30 | # Directories potentially created on remote AFP share 31 | .AppleDB 32 | .AppleDesktop 33 | Network Trash Folder 34 | Temporary Items 35 | .apdisk 36 | 37 | ### Node ### 38 | # Logs 39 | logs 40 | *.log 41 | npm-debug.log* 42 | 43 | # Runtime data 44 | pids 45 | *.pid 46 | *.seed 47 | *.pid.lock 48 | 49 | # Directory for instrumented libs generated by jscoverage/JSCover 50 | lib-cov 51 | 52 | # Coverage directory used by tools like istanbul 53 | coverage 54 | 55 | # nyc test coverage 56 | .nyc_output 57 | 58 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 59 | .grunt 60 | 61 | # node-waf configuration 62 | .lock-wscript 63 | 64 | # Compiled binary addons (http://nodejs.org/api/addons.html) 65 | build/Release 66 | 67 | # Dependency directories 68 | node_modules 69 | jspm_packages 70 | 71 | # Optional npm cache directory 72 | .npm 73 | 74 | # Optional eslint cache 75 | .eslintcache 76 | 77 | # Optional REPL history 78 | .node_repl_history 79 | 80 | # Output of 'npm pack' 81 | *.tgz 82 | 83 | # Yarn Integrity file 84 | .yarn-integrity -------------------------------------------------------------------------------- /.postcssrc.js: -------------------------------------------------------------------------------- 1 | // https://github.com/michael-ciniawsky/postcss-load-config 2 | 3 | module.exports = { 4 | "plugins": { 5 | // to edit target browsers: use "browserslist" field in package.json 6 | "postcss-import": {}, 7 | "autoprefixer": {} 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. 6 | 7 | ## Our Standards 8 | 9 | Examples of behavior that contributes to creating a positive environment include: 10 | 11 | * Using welcoming and inclusive language 12 | * Being respectful of differing viewpoints and experiences 13 | * Gracefully accepting constructive criticism 14 | * Focusing on what is best for the community 15 | * Showing empathy towards other community members 16 | 17 | Examples of unacceptable behavior by participants include: 18 | 19 | * The use of sexualized language or imagery and unwelcome sexual attention or advances 20 | * Trolling, insulting/derogatory comments, and personal or political attacks 21 | * Public or private harassment 22 | * Publishing others' private information, such as a physical or electronic address, without explicit permission 23 | * Other conduct which could reasonably be considered inappropriate in a professional setting 24 | 25 | ## Our Responsibilities 26 | 27 | Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. 28 | 29 | Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. 30 | 31 | ## Scope 32 | 33 | This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. 34 | 35 | ## Enforcement 36 | 37 | Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at sarah.drasner@gmail.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. 38 | 39 | Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. 40 | 41 | ## Attribution 42 | 43 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] 44 | 45 | [homepage]: http://contributor-covenant.org 46 | [version]: http://contributor-covenant.org/version/1/4/ 47 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # How to contribute 2 | 3 | Thank you for stopping by the project! If you're interested in creating a language translation, please check out **Translations** below. 4 | 5 | The mission of this project is to build the resource I would have wanted when I was first learning array methods, so some very opinionated choices have been made to keep in line with that idea, and some are controversial. One such example was not to include `Array.prototype.methodName()` and rather, simplify to `Array.methodName()`, as when I was learning I found it confusing. After polling a lot of people, I wasn't the only one, so this change was made. 6 | 7 | This tool is not meant to be a replacement for documentation, but rather a way to quickly traverse and find what one needs. I value quick clarity and the ability to scan above all else. If you see a way that this can be improved, I appreciate contributions! 8 | 9 | ## Build Setup 10 | 11 | ```bash 12 | # install dependencies 13 | npm install 14 | 15 | # serve with hot reload at localhost:8080 16 | npm run dev 17 | 18 | # build for production with minification 19 | npm run build 20 | 21 | # build for production and view the bundle analyzer report 22 | npm run build --report 23 | 24 | # to build for the docs: 25 | npm run build 26 | # then rename `dist` to `docs` and remove the first slash `/static` from `static` in `index.html` 27 | # then change the font paths in the css file from `/static` to `../../static` 28 | ``` 29 | 30 | ## Submitting changes 31 | 32 | Please send a pull request with a clear list of what you've done (read more about [pull requests](https://help.github.com/categories/collaborating-with-issues-and-pull-requests/)). 33 | 34 | ## Translations 35 | 36 | In `store`, you'll see many folders with language acronyms, each one has an `index.js` file and a `meta.json` file. Please make a copy of the `en` folder and translate the `index.js`, and give yourself credit in the `meta.json` file, and state the language. 37 | 38 | Then in `store/index.js`, you will see a few places where you'll need to add your translation version. 39 | 40 | In `src/locale`, you'll find another set of language folders, please duplicate the `en` folder and translate the `index.js` file. 41 | 42 | Test that everything is working by running: 43 | 44 | ``` 45 | yarn 46 | npm run dev 47 | ``` 48 | 49 | ## Coding conventions 50 | 51 | Start reading our code and you'll get the hang of it. I optimize for readability: 52 | 53 | * I use prettier to format the javascript, two spaces 54 | * I use single quotes or template literal backticks in the JS, double quotes in the HTML 55 | * The meat of the content is in a Vuex store that is disseminated through the application, rather than being hardcoded into the components 56 | 57 | Thank you! 58 | Sarah Drasner 59 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Sarah Drasner 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | # JavaScript Array Explorer 6 | 7 | When I was first learning array methods, I spent a lot of time digging through the docs to find the appropriate one, and I had to search one by one. I made this resource to help people find the correct array method a bit more naturally. You can narrow down what you want to do and explore until you find what's most useful to you. 8 | 9 | Check out the site here: [https://arrayexplorer.netlify.com/](https://arrayexplorer.netlify.com/) 10 | 11 | Or if you prefer codepen: [https://codepen.io/sdras/full/gogVRX/](https://codepen.io/sdras/full/gogVRX/) 12 | 13 | I realize that there are about a million ways that this resource can be set up, and some of the taxonomy is necessarily opinionated. I tried to focus on what I thought would have helped me learn the best, rather than industry standard delineations (mutator, accessor, iteration, for example). There are a lot of resources that already divide the methods this way, so if that style of learning suits you better, that's great! This resource is not set up that way. Please keep in mind that this is not meant to be as comprehensive or a replacement for full documentation, which is why the MDN docs are linked to in each method. 14 | 15 | I based most of the examples and longer descriptions off of the MDN documentation, altering it slightly where I felt the description was not as beginner-friendly as it could be. 16 | 17 | **Enjoy!** 18 | 19 | ## Other Similar Projects 20 | 21 | **I have an Object Explorer as well: [https://objectexplorer.netlify.com/](https://objectexplorer.netlify.com/)** 22 | 23 | I've heard people say they want to fork this project for other languages and data types (ruby, etc), please feel free to! If you let me know about it, I'll link it up here. 24 | 25 | - [Ruby Array Explorer](https://contrepoint.github.io/ruby-array-explorer/). Code [here](https://github.com/contrepoint/ruby-array-explorer) 26 | - [Angular Array Explorer](https://niladri24dutta.github.io/Array-explorer-angular/) . Code [here](https://github.com/Niladri24dutta/Array-explorer-angular) 27 | - [Python List Explorer](https://akashp1712.github.io/python-explorer/). Code [here](https://github.com/akashp1712/python-explorer) 28 | - [Ramdajs Methods Explorer](https://davesnx.github.io/learn-ramda/) . Code [here](https://github.com/davesnx/learn-ramda) 29 | 30 | ## Thank you! 31 | 32 | Many thanks to everyone who helped with the translations! @AWolf81, @Gonzalo2310, @welll, @julienmartin, @g-plane, @imbyurhan, @bahe007, @salahaa1, @proYang, @bdimitrovski, @TheElderMindseeker, @glenngijsberts, @galuhsahid, @xgebi 33 | 34 | ## Build Setup 35 | 36 | ```bash 37 | # install dependencies 38 | npm install 39 | 40 | # serve with hot reload at localhost:8080 41 | npm run dev 42 | 43 | # build for production with minification 44 | npm run build 45 | 46 | # build for production and view the bundle analyzer report 47 | npm run build --report 48 | ``` 49 | 50 | For a detailed explanation on how things work, check out the [guide](http://vuejs-templates.github.io/webpack/) and [docs for vue-loader](http://vuejs.github.io/vue-loader). 51 | -------------------------------------------------------------------------------- /build/build.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | require('./check-versions')() 3 | 4 | process.env.NODE_ENV = 'production' 5 | 6 | const ora = require('ora') 7 | const rm = require('rimraf') 8 | const path = require('path') 9 | const chalk = require('chalk') 10 | const webpack = require('webpack') 11 | const config = require('../config') 12 | const webpackConfig = require('./webpack.prod.conf') 13 | 14 | const spinner = ora('building for production...') 15 | spinner.start() 16 | 17 | rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => { 18 | if (err) throw err 19 | webpack(webpackConfig, (err, stats) => { 20 | spinner.stop() 21 | if (err) throw err 22 | process.stdout.write(stats.toString({ 23 | colors: true, 24 | modules: false, 25 | children: false, // if you are using ts-loader, setting this to true will make tyescript errors show up during build 26 | chunks: false, 27 | chunkModules: false 28 | }) + '\n\n') 29 | 30 | if (stats.hasErrors()) { 31 | console.log(chalk.red(' Build failed with errors.\n')) 32 | process.exit(1) 33 | } 34 | 35 | console.log(chalk.cyan(' Build complete.\n')) 36 | console.log(chalk.yellow( 37 | ' Tip: built files are meant to be served over an HTTP server.\n' + 38 | ' Opening index.html over file:// won\'t work.\n' 39 | )) 40 | }) 41 | }) 42 | -------------------------------------------------------------------------------- /build/check-versions.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const chalk = require('chalk') 3 | const semver = require('semver') 4 | const packageConfig = require('../package.json') 5 | const shell = require('shelljs') 6 | 7 | function exec (cmd) { 8 | return require('child_process').execSync(cmd).toString().trim() 9 | } 10 | 11 | const versionRequirements = [ 12 | { 13 | name: 'node', 14 | currentVersion: semver.clean(process.version), 15 | versionRequirement: packageConfig.engines.node 16 | } 17 | ] 18 | 19 | if (shell.which('npm')) { 20 | versionRequirements.push({ 21 | name: 'npm', 22 | currentVersion: exec('npm --version'), 23 | versionRequirement: packageConfig.engines.npm 24 | }) 25 | } 26 | 27 | module.exports = function () { 28 | const warnings = [] 29 | 30 | for (let i = 0; i < versionRequirements.length; i++) { 31 | const mod = versionRequirements[i] 32 | 33 | if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) { 34 | warnings.push(mod.name + ': ' + 35 | chalk.red(mod.currentVersion) + ' should be ' + 36 | chalk.green(mod.versionRequirement) 37 | ) 38 | } 39 | } 40 | 41 | if (warnings.length) { 42 | console.log('') 43 | console.log(chalk.yellow('To use this template, you must update following to modules:')) 44 | console.log() 45 | 46 | for (let i = 0; i < warnings.length; i++) { 47 | const warning = warnings[i] 48 | console.log(' ' + warning) 49 | } 50 | 51 | console.log() 52 | process.exit(1) 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /build/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sdras/array-explorer/9941fc89f7055a570aea582ba5543c90fe94d266/build/logo.png -------------------------------------------------------------------------------- /build/utils.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const path = require('path') 3 | const config = require('../config') 4 | const ExtractTextPlugin = require('extract-text-webpack-plugin') 5 | const packageConfig = require('../package.json') 6 | 7 | exports.assetsPath = function (_path) { 8 | const assetsSubDirectory = process.env.NODE_ENV === 'production' 9 | ? config.build.assetsSubDirectory 10 | : config.dev.assetsSubDirectory 11 | 12 | return path.posix.join(assetsSubDirectory, _path) 13 | } 14 | 15 | exports.cssLoaders = function (options) { 16 | options = options || {} 17 | 18 | const cssLoader = { 19 | loader: 'css-loader', 20 | options: { 21 | sourceMap: options.sourceMap 22 | } 23 | } 24 | 25 | const postcssLoader = { 26 | loader: 'postcss-loader', 27 | options: { 28 | sourceMap: options.sourceMap 29 | } 30 | } 31 | 32 | // generate loader string to be used with extract text plugin 33 | function generateLoaders (loader, loaderOptions) { 34 | const loaders = options.usePostCSS ? [cssLoader, postcssLoader] : [cssLoader] 35 | 36 | if (loader) { 37 | loaders.push({ 38 | loader: loader + '-loader', 39 | options: Object.assign({}, loaderOptions, { 40 | sourceMap: options.sourceMap 41 | }) 42 | }) 43 | } 44 | 45 | // Extract CSS when that option is specified 46 | // (which is the case during production build) 47 | if (options.extract) { 48 | return ExtractTextPlugin.extract({ 49 | use: loaders, 50 | fallback: 'vue-style-loader' 51 | }) 52 | } else { 53 | return ['vue-style-loader'].concat(loaders) 54 | } 55 | } 56 | 57 | // https://vue-loader.vuejs.org/en/configurations/extract-css.html 58 | return { 59 | css: generateLoaders(), 60 | postcss: generateLoaders(), 61 | less: generateLoaders('less'), 62 | sass: generateLoaders('sass', { indentedSyntax: true }), 63 | scss: generateLoaders('sass'), 64 | stylus: generateLoaders('stylus'), 65 | styl: generateLoaders('stylus') 66 | } 67 | } 68 | 69 | // Generate loaders for standalone style files (outside of .vue) 70 | exports.styleLoaders = function (options) { 71 | const output = [] 72 | const loaders = exports.cssLoaders(options) 73 | 74 | for (const extension in loaders) { 75 | const loader = loaders[extension] 76 | output.push({ 77 | test: new RegExp('\\.' + extension + '$'), 78 | use: loader 79 | }) 80 | } 81 | 82 | return output 83 | } 84 | 85 | exports.createNotifierCallback = () => { 86 | const notifier = require('node-notifier') 87 | 88 | return (severity, errors) => { 89 | if (severity !== 'error') return 90 | 91 | const error = errors[0] 92 | const filename = error.file && error.file.split('!').pop() 93 | 94 | notifier.notify({ 95 | title: packageConfig.name, 96 | message: severity + ': ' + error.name, 97 | subtitle: filename || '', 98 | icon: path.join(__dirname, 'logo.png') 99 | }) 100 | } 101 | } 102 | -------------------------------------------------------------------------------- /build/vue-loader.conf.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const utils = require('./utils') 3 | const config = require('../config') 4 | const isProduction = process.env.NODE_ENV === 'production' 5 | const sourceMapEnabled = isProduction 6 | ? config.build.productionSourceMap 7 | : config.dev.cssSourceMap 8 | 9 | module.exports = { 10 | loaders: utils.cssLoaders({ 11 | sourceMap: sourceMapEnabled, 12 | extract: isProduction 13 | }), 14 | cssSourceMap: sourceMapEnabled, 15 | cacheBusting: config.dev.cacheBusting, 16 | transformToRequire: { 17 | video: ['src', 'poster'], 18 | source: 'src', 19 | img: 'src', 20 | image: 'xlink:href' 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /build/webpack.base.conf.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const path = require('path') 3 | const utils = require('./utils') 4 | const config = require('../config') 5 | const vueLoaderConfig = require('./vue-loader.conf') 6 | 7 | function resolve (dir) { 8 | return path.join(__dirname, '..', dir) 9 | } 10 | 11 | 12 | 13 | module.exports = { 14 | context: path.resolve(__dirname, '../'), 15 | entry: { 16 | app: './src/main.js' 17 | }, 18 | output: { 19 | path: config.build.assetsRoot, 20 | filename: '[name].js', 21 | publicPath: process.env.NODE_ENV === 'production' 22 | ? config.build.assetsPublicPath 23 | : config.dev.assetsPublicPath 24 | }, 25 | resolve: { 26 | extensions: ['.js', '.vue', '.json'], 27 | alias: { 28 | 'vue$': 'vue/dist/vue.esm.js', 29 | '@': resolve('src'), 30 | } 31 | }, 32 | module: { 33 | rules: [ 34 | { 35 | test: /\.vue$/, 36 | loader: 'vue-loader', 37 | options: vueLoaderConfig 38 | }, 39 | { 40 | test: /\.js$/, 41 | loader: 'babel-loader', 42 | include: [resolve('src'), resolve('test')] 43 | }, 44 | { 45 | test: /\.(png|jpe?g|gif|svg)(\?.*)?$/, 46 | loader: 'url-loader', 47 | options: { 48 | limit: 10000, 49 | name: utils.assetsPath('img/[name].[hash:7].[ext]') 50 | } 51 | }, 52 | { 53 | test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/, 54 | loader: 'url-loader', 55 | options: { 56 | limit: 10000, 57 | name: utils.assetsPath('media/[name].[hash:7].[ext]') 58 | } 59 | }, 60 | { 61 | test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/, 62 | loader: 'url-loader', 63 | options: { 64 | limit: 10000, 65 | name: utils.assetsPath('fonts/[name].[hash:7].[ext]') 66 | } 67 | } 68 | ] 69 | }, 70 | node: { 71 | // prevent webpack from injecting useless setImmediate polyfill because Vue 72 | // source contains it (although only uses it if it's native). 73 | setImmediate: false, 74 | // prevent webpack from injecting mocks to Node native modules 75 | // that does not make sense for the client 76 | dgram: 'empty', 77 | fs: 'empty', 78 | net: 'empty', 79 | tls: 'empty', 80 | child_process: 'empty' 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /build/webpack.dev.conf.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const utils = require('./utils') 3 | const webpack = require('webpack') 4 | const config = require('../config') 5 | const merge = require('webpack-merge') 6 | const baseWebpackConfig = require('./webpack.base.conf') 7 | const HtmlWebpackPlugin = require('html-webpack-plugin') 8 | const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin') 9 | const portfinder = require('portfinder') 10 | 11 | const HOST = process.env.HOST 12 | const PORT = process.env.PORT && Number(process.env.PORT) 13 | 14 | const devWebpackConfig = merge(baseWebpackConfig, { 15 | module: { 16 | rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap, usePostCSS: true }) 17 | }, 18 | // cheap-module-eval-source-map is faster for development 19 | devtool: config.dev.devtool, 20 | 21 | // these devServer options should be customized in /config/index.js 22 | devServer: { 23 | clientLogLevel: 'warning', 24 | historyApiFallback: true, 25 | hot: true, 26 | compress: true, 27 | host: HOST || config.dev.host, 28 | port: PORT || config.dev.port, 29 | open: config.dev.autoOpenBrowser, 30 | overlay: config.dev.errorOverlay 31 | ? { warnings: false, errors: true } 32 | : false, 33 | publicPath: config.dev.assetsPublicPath, 34 | proxy: config.dev.proxyTable, 35 | quiet: true, // necessary for FriendlyErrorsPlugin 36 | watchOptions: { 37 | poll: config.dev.poll, 38 | } 39 | }, 40 | plugins: [ 41 | new webpack.DefinePlugin({ 42 | 'process.env': require('../config/dev.env') 43 | }), 44 | new webpack.HotModuleReplacementPlugin(), 45 | new webpack.NamedModulesPlugin(), // HMR shows correct file names in console on update. 46 | new webpack.NoEmitOnErrorsPlugin(), 47 | // https://github.com/ampedandwired/html-webpack-plugin 48 | new HtmlWebpackPlugin({ 49 | filename: 'index.html', 50 | template: 'index.html', 51 | inject: true 52 | }), 53 | ] 54 | }) 55 | 56 | module.exports = new Promise((resolve, reject) => { 57 | portfinder.basePort = process.env.PORT || config.dev.port 58 | portfinder.getPort((err, port) => { 59 | if (err) { 60 | reject(err) 61 | } else { 62 | // publish the new Port, necessary for e2e tests 63 | process.env.PORT = port 64 | // add port to devServer config 65 | devWebpackConfig.devServer.port = port 66 | 67 | // Add FriendlyErrorsPlugin 68 | devWebpackConfig.plugins.push(new FriendlyErrorsPlugin({ 69 | compilationSuccessInfo: { 70 | messages: [`Your application is running here: http://${devWebpackConfig.devServer.host}:${port}`], 71 | }, 72 | onErrors: config.dev.notifyOnErrors 73 | ? utils.createNotifierCallback() 74 | : undefined 75 | })) 76 | 77 | resolve(devWebpackConfig) 78 | } 79 | }) 80 | }) 81 | -------------------------------------------------------------------------------- /build/webpack.prod.conf.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const path = require('path') 3 | const utils = require('./utils') 4 | const webpack = require('webpack') 5 | const config = require('../config') 6 | const merge = require('webpack-merge') 7 | const baseWebpackConfig = require('./webpack.base.conf') 8 | const CopyWebpackPlugin = require('copy-webpack-plugin') 9 | const HtmlWebpackPlugin = require('html-webpack-plugin') 10 | const ExtractTextPlugin = require('extract-text-webpack-plugin') 11 | const OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin') 12 | const UglifyJsPlugin = require('uglifyjs-webpack-plugin') 13 | 14 | const env = require('../config/prod.env') 15 | 16 | const webpackConfig = merge(baseWebpackConfig, { 17 | module: { 18 | rules: utils.styleLoaders({ 19 | sourceMap: config.build.productionSourceMap, 20 | extract: true, 21 | usePostCSS: true 22 | }) 23 | }, 24 | devtool: config.build.productionSourceMap ? config.build.devtool : false, 25 | output: { 26 | path: config.build.assetsRoot, 27 | filename: utils.assetsPath('js/[name].[chunkhash].js'), 28 | chunkFilename: utils.assetsPath('js/[id].[chunkhash].js') 29 | }, 30 | plugins: [ 31 | // http://vuejs.github.io/vue-loader/en/workflow/production.html 32 | new webpack.DefinePlugin({ 33 | 'process.env': env 34 | }), 35 | new UglifyJsPlugin({ 36 | uglifyOptions: { 37 | compress: { 38 | warnings: false 39 | } 40 | }, 41 | sourceMap: config.build.productionSourceMap, 42 | parallel: true 43 | }), 44 | // extract css into its own file 45 | new ExtractTextPlugin({ 46 | filename: utils.assetsPath('css/[name].[contenthash].css'), 47 | // Setting the following option to `false` will not extract CSS from codesplit chunks. 48 | // Their CSS will instead be inserted dynamically with style-loader when the codesplit chunk has been loaded by webpack. 49 | // It's currently set to `true` because we are seeing that sourcemaps are included in the codesplit bundle as well when it's `false`, 50 | // increasing file size: https://github.com/vuejs-templates/webpack/issues/1110 51 | allChunks: true, 52 | }), 53 | // Compress extracted CSS. We are using this plugin so that possible 54 | // duplicated CSS from different components can be deduped. 55 | new OptimizeCSSPlugin({ 56 | cssProcessorOptions: config.build.productionSourceMap 57 | ? { safe: true, map: { inline: false } } 58 | : { safe: true } 59 | }), 60 | // generate dist index.html with correct asset hash for caching. 61 | // you can customize output by editing /index.html 62 | // see https://github.com/ampedandwired/html-webpack-plugin 63 | new HtmlWebpackPlugin({ 64 | filename: config.build.index, 65 | template: 'index.html', 66 | inject: true, 67 | minify: { 68 | removeComments: true, 69 | collapseWhitespace: true, 70 | removeAttributeQuotes: true 71 | // more options: 72 | // https://github.com/kangax/html-minifier#options-quick-reference 73 | }, 74 | // necessary to consistently work with multiple chunks via CommonsChunkPlugin 75 | chunksSortMode: 'dependency' 76 | }), 77 | // keep module.id stable when vender modules does not change 78 | new webpack.HashedModuleIdsPlugin(), 79 | // enable scope hoisting 80 | new webpack.optimize.ModuleConcatenationPlugin(), 81 | // split vendor js into its own file 82 | new webpack.optimize.CommonsChunkPlugin({ 83 | name: 'vendor', 84 | minChunks (module) { 85 | // any required modules inside node_modules are extracted to vendor 86 | return ( 87 | module.resource && 88 | /\.js$/.test(module.resource) && 89 | module.resource.indexOf( 90 | path.join(__dirname, '../node_modules') 91 | ) === 0 92 | ) 93 | } 94 | }), 95 | // extract webpack runtime and module manifest to its own file in order to 96 | // prevent vendor hash from being updated whenever app bundle is updated 97 | new webpack.optimize.CommonsChunkPlugin({ 98 | name: 'manifest', 99 | minChunks: Infinity 100 | }), 101 | // This instance extracts shared chunks from code splitted chunks and bundles them 102 | // in a separate chunk, similar to the vendor chunk 103 | // see: https://webpack.js.org/plugins/commons-chunk-plugin/#extra-async-commons-chunk 104 | new webpack.optimize.CommonsChunkPlugin({ 105 | name: 'app', 106 | async: 'vendor-async', 107 | children: true, 108 | minChunks: 3 109 | }), 110 | 111 | // copy custom static assets 112 | new CopyWebpackPlugin([ 113 | { 114 | from: path.resolve(__dirname, '../static'), 115 | to: config.build.assetsSubDirectory, 116 | ignore: ['.*'] 117 | } 118 | ]) 119 | ] 120 | }) 121 | 122 | if (config.build.productionGzip) { 123 | const CompressionWebpackPlugin = require('compression-webpack-plugin') 124 | 125 | webpackConfig.plugins.push( 126 | new CompressionWebpackPlugin({ 127 | asset: '[path].gz[query]', 128 | algorithm: 'gzip', 129 | test: new RegExp( 130 | '\\.(' + 131 | config.build.productionGzipExtensions.join('|') + 132 | ')$' 133 | ), 134 | threshold: 10240, 135 | minRatio: 0.8 136 | }) 137 | ) 138 | } 139 | 140 | if (config.build.bundleAnalyzerReport) { 141 | const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin 142 | webpackConfig.plugins.push(new BundleAnalyzerPlugin()) 143 | } 144 | 145 | module.exports = webpackConfig 146 | -------------------------------------------------------------------------------- /config/dev.env.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const merge = require('webpack-merge') 3 | const prodEnv = require('./prod.env') 4 | 5 | module.exports = merge(prodEnv, { 6 | NODE_ENV: '"development"' 7 | }) 8 | -------------------------------------------------------------------------------- /config/index.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | // Template version: 1.2.7 3 | // see http://vuejs-templates.github.io/webpack for documentation. 4 | 5 | const path = require('path') 6 | 7 | module.exports = { 8 | dev: { 9 | 10 | // Paths 11 | assetsSubDirectory: 'static', 12 | assetsPublicPath: '/', 13 | proxyTable: {}, 14 | 15 | // Various Dev Server settings 16 | host: 'localhost', // can be overwritten by process.env.HOST 17 | port: 8080, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined 18 | autoOpenBrowser: false, 19 | errorOverlay: true, 20 | notifyOnErrors: true, 21 | poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions- 22 | 23 | 24 | /** 25 | * Source Maps 26 | */ 27 | 28 | // https://webpack.js.org/configuration/devtool/#development 29 | devtool: 'eval-source-map', 30 | 31 | // If you have problems debugging vue-files in devtools, 32 | // set this to false - it *may* help 33 | // https://vue-loader.vuejs.org/en/options.html#cachebusting 34 | cacheBusting: true, 35 | 36 | // CSS Sourcemaps off by default because relative paths are "buggy" 37 | // with this option, according to the CSS-Loader README 38 | // (https://github.com/webpack/css-loader#sourcemaps) 39 | // In our experience, they generally work as expected, 40 | // just be aware of this issue when enabling this option. 41 | cssSourceMap: false, 42 | }, 43 | 44 | build: { 45 | // Template for index.html 46 | index: path.resolve(__dirname, '../dist/index.html'), 47 | 48 | // Paths 49 | assetsRoot: path.resolve(__dirname, '../dist'), 50 | assetsSubDirectory: 'static', 51 | assetsPublicPath: '/', 52 | 53 | /** 54 | * Source Maps 55 | */ 56 | 57 | productionSourceMap: true, 58 | // https://webpack.js.org/configuration/devtool/#production 59 | devtool: '#source-map', 60 | 61 | // Gzip off by default as many popular static hosts such as 62 | // Surge or Netlify already gzip all static assets for you. 63 | // Before setting to `true`, make sure to: 64 | // npm install --save-dev compression-webpack-plugin 65 | productionGzip: false, 66 | productionGzipExtensions: ['js', 'css'], 67 | 68 | // Run the build command with an extra argument to 69 | // View the bundle analyzer report after build finishes: 70 | // `npm run build --report` 71 | // Set to `true` or `false` to always turn it on or off 72 | bundleAnalyzerReport: process.env.npm_config_report 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /config/prod.env.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | module.exports = { 3 | NODE_ENV: '"production"' 4 | } 5 | -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | JavaScript Array Explorer 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /docs/static/css/app.da4edb0940c93b0ccf15ba7f997689b5.css: -------------------------------------------------------------------------------- 1 | body,html{margin:0;padding:0;color:#2c3e50;background:#f6f7f7}@font-face{font-family:Gill Sans W04 Book;src:url(/static/fonts/c4be5717-c19c-43a5-9ad3-b548ddf070d4.29d5f41.eot?#iefix);src:url(/static/fonts/c4be5717-c19c-43a5-9ad3-b548ddf070d4.29d5f41.eot?#iefix) format("eot"),url(/static/fonts/4bfd13a9-3195-4d8f-87a9-83a212d18b16.a00cb26.woff2) format("woff2"),url(/static/fonts/63aa9f40-04be-453a-a672-aa8f9919115d.75f4b90.woff) format("woff"),url(/static/fonts/a82a5fb6-ad03-4675-801e-d3182a58ff5f.623b22d.ttf) format("truetype"),url(/static/img/beb2cee2-1a51-44ca-848f-4f795394ee5a.b8d79de.svg#beb2cee2-1a51-44ca-848f-4f795394ee5a) format("svg")}@font-face{font-family:GillSansW01-MediumItali;src:url(/static/fonts/1f6af904-724d-4f75-b836-51c3d674a37e.1748af2.eot?#iefix);src:url(/static/fonts/1f6af904-724d-4f75-b836-51c3d674a37e.1748af2.eot?#iefix) format("eot"),url(/static/fonts/b01b8a8a-cb45-4c4e-b2bb-e5b8853e6fe6.cc06d64.woff2) format("woff2"),url(/static/fonts/3e18b964-7a6f-4828-8e18-5cc698e1051f.c99c69c.woff) format("woff"),url(/static/fonts/a7622e06-0cde-414a-a25d-5e5f6f5bfcaa.6885c19.ttf) format("truetype"),url(/static/img/ca4569d2-e4c3-4dec-8bfe-52712ef6bc31.52c259e.svg#ca4569d2-e4c3-4dec-8bfe-52712ef6bc31) format("svg")}@font-face{font-family:Gill Sans W01 Bold;src:url(/static/fonts/1a6dec8e-26f9-4243-8495-835709538f92.3939ac6.eot?#iefix);src:url(/static/fonts/1a6dec8e-26f9-4243-8495-835709538f92.3939ac6.eot?#iefix) format("eot"),url(/static/fonts/2029e71f-067d-46a8-bc44-b5c64a258928.daa6dec.woff2) format("woff2"),url(/static/fonts/f05272f9-83e3-4de6-8423-5d57f730c87b.fd6b6e9.woff) format("woff"),url(/static/fonts/33f5d8d9-105f-4a49-9351-74ecae7f4a49.32044ed.ttf) format("truetype"),url(/static/img/b56150eb-5caa-4385-b907-373e97ddb2ff.8286231.svg#b56150eb-5caa-4385-b907-373e97ddb2ff) format("svg")}#app{height:100vh;margin:0;padding:0;font-size:19px;letter-spacing:.005em}#app,option,select{font-family:Gill Sans W04 Book,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a:focus,select:focus{outline:1px dashed #ccc}h1,h2,h3,h4,h5{font-family:Gill Sans W01 Bold,Helvetica,Arial,sans-serif}em{font-family:GillSansW01-MediumItali,Helvetica,Arial,sans-serif;font-style:normal;letter-spacing:-.01em}h1{margin-bottom:0}.subtitle{color:#d86f5a;margin-top:0}a,a:active,a:visited{color:#d86f5a;text-decoration:none}body{margin:40px}main{margin-top:60px;width:95%;display:grid;grid-gap:40px;grid-template-columns:1fr 1fr;grid-auto-columns:minmax(500px,auto)}@media screen and (max-width:850px){main{grid-template-columns:1fr}}.usage{margin:35px 0 0}code[data-v-c134480e]{background:#eee;padding:3px 6px;font-size:16px;border-radius:5px;color:#666}div[data-v-0dd77848]{border:1px solid #ccc;margin-top:30px;padding:0 20px;background:#fff;border-radius:5px}h2[data-v-0dd77848]{color:#ce371a}p.desc[data-v-0dd77848]{margin-bottom:0}p.link[data-v-0dd77848]{margin-top:5px}.github-corner:hover .octo-arm[data-v-ba6985fe]{-webkit-animation:octocat-wave-data-v-ba6985fe .56s ease-in-out;animation:octocat-wave-data-v-ba6985fe .56s ease-in-out}@-webkit-keyframes octocat-wave-data-v-ba6985fe{0%,to{-webkit-transform:rotate(0);transform:rotate(0)}20%,60%{-webkit-transform:rotate(-25deg);transform:rotate(-25deg)}40%,80%{-webkit-transform:rotate(10deg);transform:rotate(10deg)}}@keyframes octocat-wave-data-v-ba6985fe{0%,to{-webkit-transform:rotate(0);transform:rotate(0)}20%,60%{-webkit-transform:rotate(-25deg);transform:rotate(-25deg)}40%,80%{-webkit-transform:rotate(10deg);transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm[data-v-ba6985fe]{-webkit-animation:none;animation:none}.github-corner .octo-arm[data-v-ba6985fe]{-webkit-animation:octocat-wave-data-v-ba6985fe .56s ease-in-out;animation:octocat-wave-data-v-ba6985fe .56s ease-in-out}}select[data-v-83802682]{margin-top:8px}.localization-dropdown[data-v-83802682]{position:absolute;right:8%;top:35px;text-align:right}.usage-code{padding:0 20px;margin:20px 0;background:#333;border:2px solid #f55e41;transition:all .2s ease;display:block;border-radius:5px;line-height:1.8em;font-family:monospace}.usage1{color:#aeded4}.usage2 span{color:#ecc2a4}.exampleoutput,.exampleoutput2{display:inline-block;opacity:0}.exampleoutput2 div,.exampleoutput div{opacity:0;-webkit-transform:scale(0);transform:scale(0)} 2 | /*# sourceMappingURL=app.da4edb0940c93b0ccf15ba7f997689b5.css.map */ -------------------------------------------------------------------------------- /docs/static/css/app.da4edb0940c93b0ccf15ba7f997689b5.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["app.da4edb0940c93b0ccf15ba7f997689b5.css"],"names":[],"mappings":"AACA,UAEE,SAAU,AACV,UAAW,AACX,cAAe,AACf,kBAAoB,CACrB,AACD,WACE,+BAAkC,AAClC,+EAAgF,AAChF,kdASkB,CACnB,AACD,WACE,oCAAuC,AACvC,+EAAgF,AAChF,kdASkB,CACnB,AACD,WACE,+BAAkC,AAClC,+EAAgF,AAChF,kdASkB,CACnB,AACD,KAIE,aAAc,AACd,SAAU,AACV,UAAW,AACX,eAAgB,AAChB,qBAAwB,CACzB,AACD,mBATE,0DAAgE,AAChE,mCAAoC,AACpC,iCAAmC,CAYpC,AACD,qBAEE,uBAAyB,CAC1B,AACD,eAKE,yDAAgE,CACjE,AACD,GACE,+DAAqE,AACrE,kBAAmB,AACnB,qBAAwB,CACzB,AACD,GACE,eAAiB,CAClB,AACD,UACE,cAAe,AACf,YAAc,CACf,AACD,qBAGE,cAAe,AACf,oBAAsB,CACvB,AAGD,KACE,WAAa,CACd,AACD,KACE,gBAAiB,AACjB,UAAW,AACX,aAAc,AACd,cAAe,AACf,8BAA+B,AAC/B,oCAAuC,CACxC,AACD,oCACA,KACI,yBAA2B,CAC9B,CACA,AACD,OACE,eAAiB,CAClB,AA2GD,sBACE,gBAAiB,AACjB,gBAAiB,AACjB,eAAgB,AAChB,kBAAmB,AACnB,UAAY,CACb,AAED,qBACE,sBAAuB,AACvB,gBAAiB,AACjB,eAAgB,AAChB,gBAAkB,AAClB,iBAAmB,CACpB,AACD,oBACE,aAAe,CAChB,AACD,wBACE,eAAiB,CAClB,AACD,wBACE,cAAgB,CACjB,AAED,gDACE,gEAAkE,AAC1D,uDAA0D,CACnE,AACD,gDACA,MAEI,4BAA6B,AACrB,mBAAqB,CAChC,AACD,QAEI,iCAAkC,AAC1B,wBAA0B,CACrC,AACD,QAEI,gCAAiC,AACzB,uBAAyB,CACpC,CACA,AACD,wCACA,MAEI,4BAA6B,AACrB,mBAAqB,CAChC,AACD,QAEI,iCAAkC,AAC1B,wBAA0B,CACrC,AACD,QAEI,gCAAiC,AACzB,uBAAyB,CACpC,CACA,AACD,yBACA,gDACI,uBAAwB,AAChB,cAAgB,CAC3B,AACD,0CACI,gEAAkE,AAC1D,uDAA0D,CACrE,CACA,AAED,wBACE,cAAgB,CACjB,AACD,wCACE,kBAAmB,AACnB,SAAU,AACV,SAAU,AACV,gBAAkB,CACnB,AAED,YACE,eAAgB,AAChB,cAAe,AACf,gBAAiB,AACjB,yBAA0B,AAE1B,wBAA0B,AAC1B,cAAe,AACf,kBAAmB,AACnB,kBAAmB,AACnB,qBAAuB,CACxB,AACD,QACE,aAAe,CAChB,AACD,aACE,aAAe,CAChB,AACD,+BAEE,qBAAsB,AACtB,SAAW,CACZ,AACD,uCAEE,UAAW,AACX,2BAA4B,AACpB,kBAAoB,CAC7B","file":"app.da4edb0940c93b0ccf15ba7f997689b5.css","sourcesContent":["\nbody,\nhtml {\n margin: 0;\n padding: 0;\n color: #2c3e50;\n background: #f6f7f7;\n}\n@font-face {\n font-family: 'Gill Sans W04 Book';\n src: url(/static/fonts/c4be5717-c19c-43a5-9ad3-b548ddf070d4.29d5f41.eot?#iefix);\n src: url(/static/fonts/c4be5717-c19c-43a5-9ad3-b548ddf070d4.29d5f41.eot?#iefix)\n format('eot'),\n url(/static/fonts/4bfd13a9-3195-4d8f-87a9-83a212d18b16.a00cb26.woff2)\n format('woff2'),\n url(/static/fonts/63aa9f40-04be-453a-a672-aa8f9919115d.75f4b90.woff)\n format('woff'),\n url(/static/fonts/a82a5fb6-ad03-4675-801e-d3182a58ff5f.623b22d.ttf)\n format('truetype'),\n url(/static/img/beb2cee2-1a51-44ca-848f-4f795394ee5a.b8d79de.svg#beb2cee2-1a51-44ca-848f-4f795394ee5a)\n format('svg');\n}\n@font-face {\n font-family: 'GillSansW01-MediumItali';\n src: url(/static/fonts/1f6af904-724d-4f75-b836-51c3d674a37e.1748af2.eot?#iefix);\n src: url(/static/fonts/1f6af904-724d-4f75-b836-51c3d674a37e.1748af2.eot?#iefix)\n format('eot'),\n url(/static/fonts/b01b8a8a-cb45-4c4e-b2bb-e5b8853e6fe6.cc06d64.woff2)\n format('woff2'),\n url(/static/fonts/3e18b964-7a6f-4828-8e18-5cc698e1051f.c99c69c.woff)\n format('woff'),\n url(/static/fonts/a7622e06-0cde-414a-a25d-5e5f6f5bfcaa.6885c19.ttf)\n format('truetype'),\n url(/static/img/ca4569d2-e4c3-4dec-8bfe-52712ef6bc31.52c259e.svg#ca4569d2-e4c3-4dec-8bfe-52712ef6bc31)\n format('svg');\n}\n@font-face {\n font-family: 'Gill Sans W01 Bold';\n src: url(/static/fonts/1a6dec8e-26f9-4243-8495-835709538f92.3939ac6.eot?#iefix);\n src: url(/static/fonts/1a6dec8e-26f9-4243-8495-835709538f92.3939ac6.eot?#iefix)\n format('eot'),\n url(/static/fonts/2029e71f-067d-46a8-bc44-b5c64a258928.daa6dec.woff2)\n format('woff2'),\n url(/static/fonts/f05272f9-83e3-4de6-8423-5d57f730c87b.fd6b6e9.woff)\n format('woff'),\n url(/static/fonts/33f5d8d9-105f-4a49-9351-74ecae7f4a49.32044ed.ttf)\n format('truetype'),\n url(/static/img/b56150eb-5caa-4385-b907-373e97ddb2ff.8286231.svg#b56150eb-5caa-4385-b907-373e97ddb2ff)\n format('svg');\n}\n#app {\n font-family: 'Gill Sans W04 Book', Helvetica, Arial, sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n height: 100vh;\n margin: 0;\n padding: 0;\n font-size: 19px;\n letter-spacing: 0.005em;\n}\nselect,\noption {\n font-family: 'Gill Sans W04 Book', Helvetica, Arial, sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\nselect:focus,\na:focus {\n outline: 1px dashed #ccc;\n}\nh1,\nh2,\nh3,\nh4,\nh5 {\n font-family: 'Gill Sans W01 Bold', Helvetica, Arial, sans-serif;\n}\nem {\n font-family: 'GillSansW01-MediumItali', Helvetica, Arial, sans-serif;\n font-style: normal;\n letter-spacing: -0.01em;\n}\nh1 {\n margin-bottom: 0;\n}\n.subtitle {\n color: #d86f5a;\n margin-top: 0;\n}\na,\na:visited,\na:active {\n color: #d86f5a;\n text-decoration: none;\n}\n\n/* -- grid -- */\nbody {\n margin: 40px;\n}\nmain {\n margin-top: 60px;\n width: 95%;\n display: grid;\n grid-gap: 40px;\n grid-template-columns: 1fr 1fr;\n grid-auto-columns: minmax(500px, auto);\n}\n@media screen and (max-width: 850px) {\nmain {\n grid-template-columns: 1fr;\n}\n}\n.usage {\n margin: 35px 0 0;\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\ncode[data-v-c134480e] {\n background: #eee;\n padding: 3px 6px;\n font-size: 16px;\n border-radius: 5px;\n color: #666;\n}\n\ndiv[data-v-0dd77848] {\n border: 1px solid #ccc;\n margin-top: 30px;\n padding: 0 20px;\n background: white;\n border-radius: 5px;\n}\nh2[data-v-0dd77848] {\n color: #ce371a;\n}\np.desc[data-v-0dd77848] {\n margin-bottom: 0;\n}\np.link[data-v-0dd77848] {\n margin-top: 5px;\n}\n\n.github-corner:hover .octo-arm[data-v-ba6985fe] {\n -webkit-animation: octocat-wave-data-v-ba6985fe 560ms ease-in-out;\n animation: octocat-wave-data-v-ba6985fe 560ms ease-in-out;\n}\n@-webkit-keyframes octocat-wave-data-v-ba6985fe {\n0%,\n 100% {\n -webkit-transform: rotate(0);\n transform: rotate(0);\n}\n20%,\n 60% {\n -webkit-transform: rotate(-25deg);\n transform: rotate(-25deg);\n}\n40%,\n 80% {\n -webkit-transform: rotate(10deg);\n transform: rotate(10deg);\n}\n}\n@keyframes octocat-wave-data-v-ba6985fe {\n0%,\n 100% {\n -webkit-transform: rotate(0);\n transform: rotate(0);\n}\n20%,\n 60% {\n -webkit-transform: rotate(-25deg);\n transform: rotate(-25deg);\n}\n40%,\n 80% {\n -webkit-transform: rotate(10deg);\n transform: rotate(10deg);\n}\n}\n@media (max-width: 500px) {\n.github-corner:hover .octo-arm[data-v-ba6985fe] {\n -webkit-animation: none;\n animation: none;\n}\n.github-corner .octo-arm[data-v-ba6985fe] {\n -webkit-animation: octocat-wave-data-v-ba6985fe 560ms ease-in-out;\n animation: octocat-wave-data-v-ba6985fe 560ms ease-in-out;\n}\n}\n\nselect[data-v-83802682] {\n margin-top: 8px;\n}\n.localization-dropdown[data-v-83802682] {\n position: absolute;\n right: 8%;\n top: 35px;\n text-align: right;\n}\n\n.usage-code {\n padding: 0 20px;\n margin: 20px 0;\n background: #333;\n border: 2px solid #f55e41;\n -webkit-transition: 0.2s all ease;\n transition: 0.2s all ease;\n display: block;\n border-radius: 5px;\n line-height: 1.8em;\n font-family: monospace;\n}\n.usage1 {\n color: #aeded4;\n}\n.usage2 span {\n color: #ecc2a4;\n}\n.exampleoutput,\n.exampleoutput2 {\n display: inline-block;\n opacity: 0;\n}\n.exampleoutput div,\n.exampleoutput2 div {\n opacity: 0;\n -webkit-transform: scale(0);\n transform: scale(0);\n}\n"]} -------------------------------------------------------------------------------- /docs/static/fonts/1a6dec8e-26f9-4243-8495-835709538f92.3939ac6.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sdras/array-explorer/9941fc89f7055a570aea582ba5543c90fe94d266/docs/static/fonts/1a6dec8e-26f9-4243-8495-835709538f92.3939ac6.eot -------------------------------------------------------------------------------- /docs/static/fonts/1f6af904-724d-4f75-b836-51c3d674a37e.1748af2.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sdras/array-explorer/9941fc89f7055a570aea582ba5543c90fe94d266/docs/static/fonts/1f6af904-724d-4f75-b836-51c3d674a37e.1748af2.eot -------------------------------------------------------------------------------- /docs/static/fonts/2029e71f-067d-46a8-bc44-b5c64a258928.daa6dec.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sdras/array-explorer/9941fc89f7055a570aea582ba5543c90fe94d266/docs/static/fonts/2029e71f-067d-46a8-bc44-b5c64a258928.daa6dec.woff2 -------------------------------------------------------------------------------- /docs/static/fonts/33f5d8d9-105f-4a49-9351-74ecae7f4a49.32044ed.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sdras/array-explorer/9941fc89f7055a570aea582ba5543c90fe94d266/docs/static/fonts/33f5d8d9-105f-4a49-9351-74ecae7f4a49.32044ed.ttf -------------------------------------------------------------------------------- /docs/static/fonts/3e18b964-7a6f-4828-8e18-5cc698e1051f.c99c69c.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sdras/array-explorer/9941fc89f7055a570aea582ba5543c90fe94d266/docs/static/fonts/3e18b964-7a6f-4828-8e18-5cc698e1051f.c99c69c.woff -------------------------------------------------------------------------------- /docs/static/fonts/4bfd13a9-3195-4d8f-87a9-83a212d18b16.a00cb26.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sdras/array-explorer/9941fc89f7055a570aea582ba5543c90fe94d266/docs/static/fonts/4bfd13a9-3195-4d8f-87a9-83a212d18b16.a00cb26.woff2 -------------------------------------------------------------------------------- /docs/static/fonts/63aa9f40-04be-453a-a672-aa8f9919115d.75f4b90.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sdras/array-explorer/9941fc89f7055a570aea582ba5543c90fe94d266/docs/static/fonts/63aa9f40-04be-453a-a672-aa8f9919115d.75f4b90.woff -------------------------------------------------------------------------------- /docs/static/fonts/a7622e06-0cde-414a-a25d-5e5f6f5bfcaa.6885c19.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sdras/array-explorer/9941fc89f7055a570aea582ba5543c90fe94d266/docs/static/fonts/a7622e06-0cde-414a-a25d-5e5f6f5bfcaa.6885c19.ttf -------------------------------------------------------------------------------- /docs/static/fonts/a82a5fb6-ad03-4675-801e-d3182a58ff5f.623b22d.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sdras/array-explorer/9941fc89f7055a570aea582ba5543c90fe94d266/docs/static/fonts/a82a5fb6-ad03-4675-801e-d3182a58ff5f.623b22d.ttf -------------------------------------------------------------------------------- /docs/static/fonts/b01b8a8a-cb45-4c4e-b2bb-e5b8853e6fe6.cc06d64.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sdras/array-explorer/9941fc89f7055a570aea582ba5543c90fe94d266/docs/static/fonts/b01b8a8a-cb45-4c4e-b2bb-e5b8853e6fe6.cc06d64.woff2 -------------------------------------------------------------------------------- /docs/static/fonts/c4be5717-c19c-43a5-9ad3-b548ddf070d4.29d5f41.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sdras/array-explorer/9941fc89f7055a570aea582ba5543c90fe94d266/docs/static/fonts/c4be5717-c19c-43a5-9ad3-b548ddf070d4.29d5f41.eot -------------------------------------------------------------------------------- /docs/static/fonts/f05272f9-83e3-4de6-8423-5d57f730c87b.fd6b6e9.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sdras/array-explorer/9941fc89f7055a570aea582ba5543c90fe94d266/docs/static/fonts/f05272f9-83e3-4de6-8423-5d57f730c87b.fd6b6e9.woff -------------------------------------------------------------------------------- /docs/static/js/manifest.2ae2e69a05c33dfc65f8.js: -------------------------------------------------------------------------------- 1 | !function(r){var n=window.webpackJsonp;window.webpackJsonp=function(e,u,c){for(var f,i,p,a=0,l=[];a