[
  {
    "path": ".bowerrc",
    "content": "{\n  \"directory\": \"bower_components\",\n  \"analytics\": false\n}\n"
  },
  {
    "path": ".editorconfig",
    "content": "# EditorConfig helps developers define and maintain consistent\n# coding styles between different editors and IDEs\n# editorconfig.org\n\nroot = true\n\n\n[*]\nend_of_line = lf\ncharset = utf-8\ntrim_trailing_whitespace = true\ninsert_final_newline = true\nindent_style = space\nindent_size = 2\n\n[*.hbs]\ninsert_final_newline = false\n\n[*.{diff,md}]\ntrim_trailing_whitespace = false\n"
  },
  {
    "path": ".ember-cli",
    "content": "{\n  /**\n    Ember CLI sends analytics information by default. The data is completely\n    anonymous, but there are times when you might want to disable this behavior.\n\n    Setting `disableAnalytics` to true will prevent any data from being sent.\n  */\n  \"disableAnalytics\": false\n}\n"
  },
  {
    "path": ".eslintignore",
    "content": "# unconventional js\n/blueprints/*/files/\n/vendor/\n\n# compiled output\n/dist/\n/tmp/\n\n# dependencies\n/bower_components/\n\n# misc\n/coverage/\n!.*\n\n# ember-try\n/.node_modules.ember-try/\n/bower.json.ember-try\n/package.json.ember-try\n"
  },
  {
    "path": ".eslintrc.js",
    "content": "/* eslint-env node */\nmodule.exports = {\n  root: true,\n  parserOptions: {\n    ecmaVersion: 2017,\n    sourceType: 'module'\n  },\n  plugins: [\n    'ember'\n  ],\n  extends: [\n    'eslint:recommended',\n    'plugin:ember/recommended'\n  ],\n  env: {\n    browser: true\n  },\n  rules: {\n    \"ember/use-brace-expansion\": 1,\n    \"ember/no-on-calls-in-components\": 1,\n    \"ember/avoid-leaking-state-in-ember-objects\": 1,\n    \"ember/closure-actions\": 1,\n    \"ember/no-global-jquery\": 1\n  },\n  overrides: [\n    // node files\n    {\n      files: [\n        'index.js',\n        'testem.js',\n        'ember-cli-build.js',\n        'config/**/*.js',\n        'tests/dummy/config/**/*.js'\n      ],\n      excludedFiles: [\n        'app/**',\n        'addon/**'\n      ],\n      parserOptions: {\n        sourceType: 'script',\n        ecmaVersion: 2015\n      },\n      env: {\n        browser: false,\n        node: true\n      },\n      plugins: ['node'],\n      rules: Object.assign({}, require('eslint-plugin-node').configs.recommended.rules, {\n        // add your custom rules and overrides for node files here\n      })\n    },\n\n    // test files\n    {\n      files: ['tests/**/*.js'],\n      excludedFiles: ['tests/dummy/**/*.js'],\n      env: {\n        embertest: true\n      }\n    }\n  ]\n};\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.md",
    "content": "---\nname: Bug report\nabout: Create a report to help us improve\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n**Describe the bug**\nA clear and concise description of what the bug is.\n\n**To Reproduce**\nSteps to reproduce the behavior:\n1. Go to '...'\n2. Click on '....'\n3. Scroll down to '....'\n4. See error\n\n**Expected behavior**\nA clear and concise description of what you expected to happen.\n\n**Screenshots**\nIf applicable, add screenshots to help explain your problem.\n\n**Desktop (please complete the following information):**\n - Browser [e.g. chrome, safari]\n - Library Version [e.g. 22]\n\n**Additional context**\nAdd any other context about the problem here.\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.md",
    "content": "---\nname: Feature request\nabout: Suggest an idea for this project\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n**Is your feature request related to a problem? Please describe.**\nA clear and concise description of what the problem is. Ex. I'm always frustrated when [...]\n\n**Describe the solution you'd like**\nA clear and concise description of what you want to happen.\n\n**Describe alternatives you've considered**\nA clear and concise description of any alternative solutions or features you've considered.\n\n**Additional context**\nAdd any other context or screenshots about the feature request here.\n"
  },
  {
    "path": ".gitignore",
    "content": "# See https://help.github.com/ignore-files/ for more about ignoring files.\n\n# compiled output\n/dist/\n/tmp/\n\n# dependencies\n/bower_components/\n/node_modules/\n\n# misc\n/.sass-cache\n/connect.lock\n/coverage/\n/libpeerconnection.log\n/npm-debug.log*\n/testem.log\n/yarn-error.log\n\n# ember-try\n/.node_modules.ember-try/\n/bower.json.ember-try\n/package.json.ember-try\n"
  },
  {
    "path": ".jscsrc",
    "content": "{\n  \"preset\": \"ember-suave\",\n  \"excludeFiles\": [\"blanket-options.js\"],\n  \"requireParenthesesAroundArrowParam\": null,\n  \"disallowConstOutsideModuleScope\": null\n}\n"
  },
  {
    "path": ".jshintrc",
    "content": "{\n  \"predef\": [\n    \"document\",\n    \"window\",\n    \"-Promise\"\n  ],\n  \"browser\": true,\n  \"boss\": true,\n  \"curly\": true,\n  \"debug\": false,\n  \"devel\": true,\n  \"eqeqeq\": true,\n  \"evil\": true,\n  \"forin\": false,\n  \"immed\": false,\n  \"laxbreak\": false,\n  \"newcap\": true,\n  \"noarg\": true,\n  \"noempty\": false,\n  \"nonew\": false,\n  \"nomen\": false,\n  \"onevar\": false,\n  \"plusplus\": false,\n  \"regexp\": false,\n  \"undef\": true,\n  \"sub\": true,\n  \"strict\": false,\n  \"white\": false,\n  \"eqnull\": true,\n  \"esnext\": true,\n  \"unused\": true\n}\n"
  },
  {
    "path": ".npmignore",
    "content": "# compiled output\n/dist/\n/tmp/\n\n# dependencies\n/bower_components/\n\n# misc\n/.bowerrc\n/.editorconfig\n/.ember-cli\n/.eslintignore\n/.eslintrc.js\n/.gitignore\n/.template-lintrc.js\n/.travis.yml\n/.watchmanconfig\n/bower.json\n/config/ember-try.js\n/ember-cli-build.js\n/testem.js\n/tests/\n/yarn.lock\n.gitkeep\n\n# ember-try\n/.node_modules.ember-try/\n/bower.json.ember-try\n/package.json.ember-try\n"
  },
  {
    "path": ".prettierrc",
    "content": "{\n  \"singleQuote\": true,\n  \"bracketSpacing\": true,\n  \"trailingComma\": \"none\",\n  \"useTabs\": false,\n  \"tabWidth\": 2,\n  \"printWidth\": 120,\n  \"semi\": true\n}\n"
  },
  {
    "path": ".template-lintrc.js",
    "content": "/* eslint-env node */\n'use strict';\n\nmodule.exports = {\n  extends: 'recommended'\n};\n"
  },
  {
    "path": ".travis.yml",
    "content": "language: node_js\nnode_js:\n- '8'\nsudo: false\ndist: trusty\naddons:\n  chrome: stable\ncache:\n  yarn: true\nyarn: true\nenv:\n  global:\n  - JOBS=1\n\nstages:\n  - 'Tests'\n  - 'Additional Tests'\n  - 'Canary Tests'\n  - name: 'Deploy'\n    if: branch = master AND type = push\n\njobs:\n  fail_fast: true\n  allow_failures:\n  - env: EMBER_TRY_SCENARIO=ember-canary\n  include:\n  - stage: Tests\n    name: Tests\n    install:\n    - yarn install --non-interactive && bower install\n    script:\n    - yarn lint:js && ember test\n  - name: Floating Dependencies\n    script:\n    - ember test\n  - stage: Additional Tests\n    node_js: 10\n    env: EMBER_TRY_SCENARIO=ember-1.13\n  - env: EMBER_TRY_SCENARIO=ember-lts-2.16\n  - env: EMBER_TRY_SCENARIO=ember-lts-2.18\n  - env: EMBER_TRY_SCENARIO=ember-release\n  - env: EMBER_TRY_SCENARIO=ember-beta\n  - env: EMBER_TRY_SCENARIO=ember-default-with-jquery\n  - stage: 'Canary Tests'\n    script:\n      - node_modules/.bin/ember try:one $EMBER_TRY_SCENARIO\n    env: EMBER_TRY_SCENARIO=ember-canary\n  - stage: 'Deploy'\n    name: 'Publish to npm'\n    install:\n      - yarn install --non-interactive\n    script: yarn semantic-release\n\nbefore_install:\n- curl -o- -L https://yarnpkg.com/install.sh | bash\n- export PATH=$HOME/.yarn/bin:$PATH\n- npm install -g bower\ninstall:\n- yarn install --no-lockfile --non-interactive && bower install\nscript:\n- yarn lint:js && ember try:one $EMBER_TRY_SCENARIO\ndeploy:\n  provider: heroku\n  api_key:\n    secure: MZDN5BsZUmmxIkOGDC1/fLem7B0E1xoTTX62P/UyzHaNTByQBEBilzhqxarfBVJ+jkrDHVLB4iPxeZKoQhphmdYCBDJvZlPTLmRcSaHBy+m80JfPvm9lkOuTVVklNjcJuwhSLC9rlRxNRL6sVbfJUgOwx/lFEKXyUYVc5Y1Cn6A=\n  app: ember-materialize-demo\n  on:\n    repo: mike-north/ember-cli-materialize\n    condition: \"$EMBER_TRY_SCENARIO = ember-release\"\n"
  },
  {
    "path": ".vscode/settings.json",
    "content": "{\n  \"javascript.implicitProjectConfig.checkJs\": true,\n  \"editor.formatOnSave\": false\n}"
  },
  {
    "path": ".watchmanconfig",
    "content": "{\n  \"ignore_dirs\": [\"tmp\", \"dist\"]\n}\n"
  },
  {
    "path": "CHANGELOG.md",
    "content": "# [0.24.0](https://github.com/mike-north/ember-cli-materialize/compare/v0.23.0...v0.24.0) (2019-03-03)\n\n\n### Features\n\n* remove ember-new-computed dependency ([e3ab9f4](https://github.com/mike-north/ember-cli-materialize/commit/e3ab9f4))\n\n# [0.23.0](https://github.com/mike-north/ember-cli-materialize/compare/v0.22.0...v0.23.0) (2019-02-14)\n\n\n### Features\n\n* trigger actions from md-select. ([#716](https://github.com/mike-north/ember-cli-materialize/issues/716)) ([b8e9821](https://github.com/mike-north/ember-cli-materialize/commit/b8e9821))\n\n# [0.22.0](https://github.com/mike-north/ember-cli-materialize/compare/v0.21.0...v0.22.0) (2018-11-10)\n\n\n### Features\n\n* upgrade to ember 3 ([d7a8d4c](https://github.com/mike-north/ember-cli-materialize/commit/d7a8d4c))\n\n# Change Log\n\n## [v0.18.1](https://github.com/mike-north/ember-cli-materialize/tree/v0.18.1) (2015-08-17)\n\n[Full Changelog](https://github.com/mike-north/ember-cli-materialize/compare/v0.18.0...v0.18.1)\n\n**Fixed bugs:**\n\n- md-btn isDisabled doesn't disable event [\\#201](https://github.com/mike-north/ember-cli-materialize/issues/201)\n\n- Upgraded to master & materialize 0.97 - modals have lost the translucent overlay, and have z-index issues [\\#192](https://github.com/mike-north/ember-cli-materialize/issues/192)\n\n- ember-radio-button v1.0.4 causing deprecation warning, updating breaks radio buttons [\\#178](https://github.com/mike-north/ember-cli-materialize/issues/178)\n\n- Update docs to reflect buttonType correctly [\\#164](https://github.com/mike-north/ember-cli-materialize/issues/164)\n\n- Override `waves-light` [\\#157](https://github.com/mike-north/ember-cli-materialize/issues/157)\n\n- Odd blue line showing up when using the datepicker [\\#140](https://github.com/mike-north/ember-cli-materialize/issues/140)\n\n**Merged pull requests:**\n\n- Allow customization of button waves [\\#210](https://github.com/mike-north/ember-cli-materialize/pull/210) ([mike-north](https://github.com/mike-north))\n\n- Button actions shouldn't fire when in disabled state [\\#209](https://github.com/mike-north/ember-cli-materialize/pull/209) ([mike-north](https://github.com/mike-north))\n\n## [v0.18.0](https://github.com/mike-north/ember-cli-materialize/tree/v0.18.0) (2015-08-17)\n\n[Full Changelog](https://github.com/mike-north/ember-cli-materialize/compare/v0.17.4...v0.18.0)\n\n**Closed issues:**\n\n- Deprecation warnings [\\#176](https://github.com/mike-north/ember-cli-materialize/issues/176)\n\n**Merged pull requests:**\n\n- Autofocus Support on input field [\\#208](https://github.com/mike-north/ember-cli-materialize/pull/208) ([cmanou](https://github.com/cmanou))\n\n- Kill deprecations [\\#207](https://github.com/mike-north/ember-cli-materialize/pull/207) ([mike-north](https://github.com/mike-north))\n\n- Use v0.4.0 of ember-key-responder [\\#191](https://github.com/mike-north/ember-cli-materialize/pull/191) ([mike-north](https://github.com/mike-north))\n\n## [v0.17.4](https://github.com/mike-north/ember-cli-materialize/tree/v0.17.4) (2015-08-15)\n\n[Full Changelog](https://github.com/mike-north/ember-cli-materialize/compare/v0.17.3...v0.17.4)\n\n**Closed issues:**\n\n- md-modal computed property with @each leaf causing assertion failure in canary [\\#202](https://github.com/mike-north/ember-cli-materialize/issues/202)\n\n- Installation of the addon breaks auto-generated tests [\\#199](https://github.com/mike-north/ember-cli-materialize/issues/199)\n\n- How can i use the md-input small validation message with ember-validations? [\\#198](https://github.com/mike-north/ember-cli-materialize/issues/198)\n\n- Remove {{bind-attr}} [\\#168](https://github.com/mike-north/ember-cli-materialize/issues/168)\n\n**Merged pull requests:**\n\n- Style/Testing Cleanup [\\#206](https://github.com/mike-north/ember-cli-materialize/pull/206) ([mike-north](https://github.com/mike-north))\n\n- \\[Canary\\] Replaced '@each' computed property with '\\[\\]' \\(fixes \\#202\\) [\\#203](https://github.com/mike-north/ember-cli-materialize/pull/203) ([mdehoog](https://github.com/mdehoog))\n\n- Switched md-btn-dropdown boolean attributes to use booleans [\\#200](https://github.com/mike-north/ember-cli-materialize/pull/200) ([mdehoog](https://github.com/mdehoog))\n\n- Using elementId in dropdown instead of element.id [\\#196](https://github.com/mike-north/ember-cli-materialize/pull/196) ([unmanbearpig](https://github.com/unmanbearpig))\n\n- Fixed closeModal action name \\(fixes \\#193\\) [\\#194](https://github.com/mike-north/ember-cli-materialize/pull/194) ([mdehoog](https://github.com/mdehoog))\n\n## [v0.17.3](https://github.com/mike-north/ember-cli-materialize/tree/v0.17.3) (2015-07-31)\n\n[Full Changelog](https://github.com/mike-north/ember-cli-materialize/compare/v0.17.2...v0.17.3)\n\n**Closed issues:**\n\n- Modal only closes if close action is called 'closeModal' [\\#193](https://github.com/mike-north/ember-cli-materialize/issues/193)\n\n- No placeholder option for md-input [\\#188](https://github.com/mike-north/ember-cli-materialize/issues/188)\n\n- Recent changes to validations? [\\#186](https://github.com/mike-north/ember-cli-materialize/issues/186)\n\n- Switch and Check seem to have issue with missing ember-composability  [\\#181](https://github.com/mike-north/ember-cli-materialize/issues/181)\n\n**Merged pull requests:**\n\n- Add ember-legacy-views [\\#190](https://github.com/mike-north/ember-cli-materialize/pull/190) ([mike-north](https://github.com/mike-north))\n\n- Remove Ember.keys deprecation warning [\\#189](https://github.com/mike-north/ember-cli-materialize/pull/189) ([mdehoog](https://github.com/mdehoog))\n\n- Observer timing issues [\\#187](https://github.com/mike-north/ember-cli-materialize/pull/187) ([brandonparsons](https://github.com/brandonparsons))\n\n- Make dat homeRoute customizable!!! [\\#185](https://github.com/mike-north/ember-cli-materialize/pull/185) ([rtablada](https://github.com/rtablada))\n\n- input type should be tel [\\#184](https://github.com/mike-north/ember-cli-materialize/pull/184) ([basz](https://github.com/basz))\n\n- Deprecation fixes - convert each-in to each-as [\\#180](https://github.com/mike-north/ember-cli-materialize/pull/180) ([mike-north](https://github.com/mike-north))\n\n## [v0.17.2](https://github.com/mike-north/ember-cli-materialize/tree/v0.17.2) (2015-07-14)\n\n[Full Changelog](https://github.com/mike-north/ember-cli-materialize/compare/v0.17.1...v0.17.2)\n\n**Closed issues:**\n\n- Error on new project: unbound variable $mdi-list-icons [\\#171](https://github.com/mike-north/ember-cli-materialize/issues/171)\n\n**Merged pull requests:**\n\n- Fix leftover \"disabled\" debug legend on checkbox [\\#182](https://github.com/mike-north/ember-cli-materialize/pull/182) ([LexLythius](https://github.com/LexLythius))\n\n- fix-anchor [\\#179](https://github.com/mike-north/ember-cli-materialize/pull/179) ([ladyleet](https://github.com/ladyleet))\n\n- Removed blueprint temporary fix for materialize.css that is no longer [\\#177](https://github.com/mike-north/ember-cli-materialize/pull/177) ([mnannola](https://github.com/mnannola))\n\n- Feature/md btn dropdown [\\#162](https://github.com/mike-north/ember-cli-materialize/pull/162) ([basz](https://github.com/basz))\n\n## [v0.17.1](https://github.com/mike-north/ember-cli-materialize/tree/v0.17.1) (2015-07-12)\n\n[Full Changelog](https://github.com/mike-north/ember-cli-materialize/compare/v0.17.0...v0.17.1)\n\n**Merged pull requests:**\n\n- Ember-composability [\\#175](https://github.com/mike-north/ember-cli-materialize/pull/175) ([mike-north](https://github.com/mike-north))\n\n## [v0.17.2](https://github.com/truenorth/ember-cli-materialize/tree/v0.17.2) (2015-07-14)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.17.1...v0.17.2)\n\n**Closed issues:**\n\n- Error on new project: unbound variable $mdi-list-icons [\\#171](https://github.com/truenorth/ember-cli-materialize/issues/171)\n\n**Merged pull requests:**\n\n- Fix leftover \"disabled\" debug legend on checkbox [\\#182](https://github.com/truenorth/ember-cli-materialize/pull/182) ([LexLythius](https://github.com/LexLythius))\n\n- fix-anchor [\\#179](https://github.com/truenorth/ember-cli-materialize/pull/179) ([ladyleet](https://github.com/ladyleet))\n\n- Removed blueprint temporary fix for materialize.css that is no longer [\\#177](https://github.com/truenorth/ember-cli-materialize/pull/177) ([mnannola](https://github.com/mnannola))\n\n- Feature/md btn dropdown [\\#162](https://github.com/truenorth/ember-cli-materialize/pull/162) ([basz](https://github.com/basz))\n\n## [v0.17.1](https://github.com/truenorth/ember-cli-materialize/tree/v0.17.1) (2015-07-12)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.17.0...v0.17.1)\n\n**Merged pull requests:**\n\n- Ember-composability [\\#175](https://github.com/truenorth/ember-cli-materialize/pull/175) ([truenorth](https://github.com/truenorth))\n\n## [v0.17.0](https://github.com/truenorth/ember-cli-materialize/tree/v0.17.0) (2015-07-11)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.16.4...v0.17.0)\n\n**Merged pull requests:**\n\n- minor-color-edits-and-colors-page-additions [\\#174](https://github.com/truenorth/ember-cli-materialize/pull/174) ([ladyleet](https://github.com/ladyleet))\n\n- colors-page [\\#173](https://github.com/truenorth/ember-cli-materialize/pull/173) ([ladyleet](https://github.com/ladyleet))\n\n- Remove all instances of bind-attr [\\#169](https://github.com/truenorth/ember-cli-materialize/pull/169) ([MattMSumner](https://github.com/MattMSumner))\n\n## [v0.16.4](https://github.com/truenorth/ember-cli-materialize/tree/v0.16.4) (2015-07-11)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.16.3...v0.16.4)\n\n**Merged pull requests:**\n\n- Update to ember-cli 1.13.1 [\\#170](https://github.com/truenorth/ember-cli-materialize/pull/170) ([truenorth](https://github.com/truenorth))\n\n## [v0.16.3](https://github.com/truenorth/ember-cli-materialize/tree/v0.16.3) (2015-07-05)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.16.2...v0.16.3)\n\n**Fixed bugs:**\n\n- issue with modal not being on top [\\#166](https://github.com/truenorth/ember-cli-materialize/issues/166)\n\n**Merged pull requests:**\n\n- Modal fixes, blueprint update [\\#167](https://github.com/truenorth/ember-cli-materialize/pull/167) ([truenorth](https://github.com/truenorth))\n\n## [v0.16.2](https://github.com/truenorth/ember-cli-materialize/tree/v0.16.2) (2015-07-03)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.16.1...v0.16.2)\n\n**Merged pull requests:**\n\n- Configurable default values [\\#165](https://github.com/truenorth/ember-cli-materialize/pull/165) ([truenorth](https://github.com/truenorth))\n\n## [v0.16.1](https://github.com/truenorth/ember-cli-materialize/tree/v0.16.1) (2015-07-03)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.16.0...v0.16.1)\n\n**Implemented enhancements:**\n\n- Sending an action argument within a button action [\\#153](https://github.com/truenorth/ember-cli-materialize/issues/153)\n\n- Actions can not be passed to SelectableItem sub classes [\\#102](https://github.com/truenorth/ember-cli-materialize/issues/102)\n\n**Closed issues:**\n\n- Support projects using broccoli-less [\\#146](https://github.com/truenorth/ember-cli-materialize/issues/146)\n\n- LinkView deprecation [\\#144](https://github.com/truenorth/ember-cli-materialize/issues/144)\n\n- cannot find module 'handlebars' [\\#123](https://github.com/truenorth/ember-cli-materialize/issues/123)\n\n- consider making collapsibles actionable [\\#112](https://github.com/truenorth/ember-cli-materialize/issues/112)\n\n- Get ember-canary on critical CI path again [\\#71](https://github.com/truenorth/ember-cli-materialize/issues/71)\n\n**Merged pull requests:**\n\n- Pass argument along with action, when md-btn fires  [\\#161](https://github.com/truenorth/ember-cli-materialize/pull/161) ([truenorth](https://github.com/truenorth))\n\n## [v0.16.0](https://github.com/truenorth/ember-cli-materialize/tree/v0.16.0) (2015-07-03)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.15.11...v0.16.0)\n\n**Merged pull requests:**\n\n- Tables [\\#160](https://github.com/truenorth/ember-cli-materialize/pull/160) ([truenorth](https://github.com/truenorth))\n\n- Collections [\\#159](https://github.com/truenorth/ember-cli-materialize/pull/159) ([truenorth](https://github.com/truenorth))\n\n## [v0.15.11](https://github.com/truenorth/ember-cli-materialize/tree/v0.15.11) (2015-07-02)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.15.10...v0.15.11)\n\n**Closed issues:**\n\n- Ember 1.13 [\\#156](https://github.com/truenorth/ember-cli-materialize/issues/156)\n\n**Merged pull requests:**\n\n- Redo all examples on demo site as code snippets [\\#158](https://github.com/truenorth/ember-cli-materialize/pull/158) ([truenorth](https://github.com/truenorth))\n\n## [v0.15.10](https://github.com/truenorth/ember-cli-materialize/tree/v0.15.10) (2015-06-30)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.15.9...v0.15.10)\n\n## [v0.15.9](https://github.com/truenorth/ember-cli-materialize/tree/v0.15.9) (2015-06-30)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.15.8...v0.15.9)\n\n## [v0.15.8](https://github.com/truenorth/ember-cli-materialize/tree/v0.15.8) (2015-06-30)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.15.7...v0.15.8)\n\n## [v0.15.7](https://github.com/truenorth/ember-cli-materialize/tree/v0.15.7) (2015-06-30)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.15.6...v0.15.7)\n\n## [v0.15.6](https://github.com/truenorth/ember-cli-materialize/tree/v0.15.6) (2015-06-30)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.15.5...v0.15.6)\n\n**Closed issues:**\n\n- Sidnav mobile - links don't work on iOS / Mobile Safari [\\#147](https://github.com/truenorth/ember-cli-materialize/issues/147)\n\n**Merged pull requests:**\n\n- Enable CI testing against ember release channel [\\#155](https://github.com/truenorth/ember-cli-materialize/pull/155) ([truenorth](https://github.com/truenorth))\n\n- Cleanup to finish repository transfer [\\#154](https://github.com/truenorth/ember-cli-materialize/pull/154) ([truenorth](https://github.com/truenorth))\n\n- Ember 1.13 workarounds [\\#152](https://github.com/truenorth/ember-cli-materialize/pull/152) ([truenorth](https://github.com/truenorth))\n\n- fix typo in md-input-date [\\#151](https://github.com/truenorth/ember-cli-materialize/pull/151) ([nflbeezy](https://github.com/nflbeezy))\n\n- md-check, md-radio, md-switch fire actions on state change [\\#138](https://github.com/truenorth/ember-cli-materialize/pull/138) ([truenorth](https://github.com/truenorth))\n\n- Add example of snippet-based demo page [\\#137](https://github.com/truenorth/ember-cli-materialize/pull/137) ([truenorth](https://github.com/truenorth))\n\n## [v0.15.5](https://github.com/truenorth/ember-cli-materialize/tree/v0.15.5) (2015-06-22)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.15.4...v0.15.5)\n\n**Fixed bugs:**\n\n- \\[Bug\\] Navbar unresonsible on iPad [\\#141](https://github.com/truenorth/ember-cli-materialize/issues/141)\n\n**Closed issues:**\n\n- How did you guys manage to get a logo in the nav bar on the demo page? [\\#143](https://github.com/truenorth/ember-cli-materialize/issues/143)\n\n- Help with dropdown nav bar? [\\#135](https://github.com/truenorth/ember-cli-materialize/issues/135)\n\n- Cannot deselect item with md-checks and others if multiple=false [\\#133](https://github.com/truenorth/ember-cli-materialize/issues/133)\n\n- /Users/username/appName/tmp/tree\\_merger-tmp\\_dest\\_dir-NKY037BG.tmp/app/styles/app.\\[scss|sass\\] does not exist [\\#132](https://github.com/truenorth/ember-cli-materialize/issues/132)\n\n**Merged pull requests:**\n\n- Update modal.hbs [\\#145](https://github.com/truenorth/ember-cli-materialize/pull/145) ([samselikoff](https://github.com/samselikoff))\n\n- Fix demo's sidenav for mobile  [\\#142](https://github.com/truenorth/ember-cli-materialize/pull/142) ([truenorth](https://github.com/truenorth))\n\n- Revert \"Move sassOptions to Brocfile\" [\\#139](https://github.com/truenorth/ember-cli-materialize/pull/139) ([truenorth](https://github.com/truenorth))\n\n- Fix issue \\#133 [\\#134](https://github.com/truenorth/ember-cli-materialize/pull/134) ([LexLythius](https://github.com/LexLythius))\n\n## [v0.15.4](https://github.com/truenorth/ember-cli-materialize/tree/v0.15.4) (2015-06-08)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.15.3...v0.15.4)\n\n**Fixed bugs:**\n\n- Deprecation on ember-cli 0.2.6 [\\#125](https://github.com/truenorth/ember-cli-materialize/issues/125)\n\n**Merged pull requests:**\n\n- Sidenav instead of navbar for demo app [\\#129](https://github.com/truenorth/ember-cli-materialize/pull/129) ([truenorth](https://github.com/truenorth))\n\n- make md-collapsible actionable [\\#128](https://github.com/truenorth/ember-cli-materialize/pull/128) ([foxnewsnetwork](https://github.com/foxnewsnetwork))\n\n## [v0.15.3](https://github.com/truenorth/ember-cli-materialize/tree/v0.15.3) (2015-06-02)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.15.2...v0.15.3)\n\n**Merged pull requests:**\n\n- Ember-cli 0.2.6 [\\#127](https://github.com/truenorth/ember-cli-materialize/pull/127) ([truenorth](https://github.com/truenorth))\n\n## [v0.15.2](https://github.com/truenorth/ember-cli-materialize/tree/v0.15.2) (2015-06-01)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.15.1...v0.15.2)\n\n**Merged pull requests:**\n\n- Adds \"demoURL\" to package.json [\\#126](https://github.com/truenorth/ember-cli-materialize/pull/126) ([gcollazo](https://github.com/gcollazo))\n\n## [v0.15.1](https://github.com/truenorth/ember-cli-materialize/tree/v0.15.1) (2015-05-28)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.15.0...v0.15.1)\n\n**Closed issues:**\n\n- Get rid of the pyramid of doom [\\#110](https://github.com/truenorth/ember-cli-materialize/issues/110)\n\n**Merged pull requests:**\n\n- \\[Bugfix\\] md-tabs Indicator position not updated if content set after selection [\\#122](https://github.com/truenorth/ember-cli-materialize/pull/122) ([truenorth](https://github.com/truenorth))\n\n## [v0.15.0](https://github.com/truenorth/ember-cli-materialize/tree/v0.15.0) (2015-05-27)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.14.1...v0.15.0)\n\n**Closed issues:**\n\n- \\(roadmap || priority\\) to include slider [\\#121](https://github.com/truenorth/ember-cli-materialize/issues/121)\n\n- md-card: passing a handlebars expression inside title hash [\\#100](https://github.com/truenorth/ember-cli-materialize/issues/100)\n\n## [v0.14.1](https://github.com/truenorth/ember-cli-materialize/tree/v0.14.1) (2015-05-25)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.14.0...v0.14.1)\n\n**Fixed bugs:**\n\n- \\[Glimmer\\] Card titles do not render [\\#113](https://github.com/truenorth/ember-cli-materialize/issues/113)\n\n**Merged pull requests:**\n\n- \\[BUGFIX\\] Glimmer fixes [\\#119](https://github.com/truenorth/ember-cli-materialize/pull/119) ([truenorth](https://github.com/truenorth))\n\n## [v0.14.0](https://github.com/truenorth/ember-cli-materialize/tree/v0.14.0) (2015-05-25)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.13.7...v0.14.0)\n\n**Fixed bugs:**\n\n- Deprecation warning: sassOptions should be moved to your Brocfile [\\#109](https://github.com/truenorth/ember-cli-materialize/issues/109)\n\n**Closed issues:**\n\n- md-checks optionLabelPath appears dysfunctional [\\#120](https://github.com/truenorth/ember-cli-materialize/issues/120)\n\n- Update ember-modal-dialog to 0.7.0 [\\#115](https://github.com/truenorth/ember-cli-materialize/issues/115)\n\n- Bad contrast on demo page's hero unit [\\#105](https://github.com/truenorth/ember-cli-materialize/issues/105)\n\n**Merged pull requests:**\n\n- Move sassOptions to Brocfile [\\#118](https://github.com/truenorth/ember-cli-materialize/pull/118) ([truenorth](https://github.com/truenorth))\n\n- \\[Enhancement\\] Floating button group [\\#117](https://github.com/truenorth/ember-cli-materialize/pull/117) ([truenorth](https://github.com/truenorth))\n\n- Update ember-modal-dialog to 0.7.0 [\\#116](https://github.com/truenorth/ember-cli-materialize/pull/116) ([truenorth](https://github.com/truenorth))\n\n## [v0.13.7](https://github.com/truenorth/ember-cli-materialize/tree/v0.13.7) (2015-05-21)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.13.6...v0.13.7)\n\n**Closed issues:**\n\n- Installation fails on ember-cli 0.2.3 [\\#101](https://github.com/truenorth/ember-cli-materialize/issues/101)\n\n**Merged pull requests:**\n\n- Fixed floating button group example in docs [\\#114](https://github.com/truenorth/ember-cli-materialize/pull/114) ([truenorth](https://github.com/truenorth))\n\n- First revamp of demo page [\\#111](https://github.com/truenorth/ember-cli-materialize/pull/111) ([truenorth](https://github.com/truenorth))\n\n- Ember-cli 0.2.5 [\\#108](https://github.com/truenorth/ember-cli-materialize/pull/108) ([truenorth](https://github.com/truenorth))\n\n- Fixed possible XSS bug in md-loader style binding [\\#107](https://github.com/truenorth/ember-cli-materialize/pull/107) ([truenorth](https://github.com/truenorth))\n\n## [v0.13.6](https://github.com/truenorth/ember-cli-materialize/tree/v0.13.6) (2015-05-16)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.13.5...v0.13.6)\n\n**Fixed bugs:**\n\n- Navbar problem [\\#90](https://github.com/truenorth/ember-cli-materialize/issues/90)\n\n**Closed issues:**\n\n- Uncaught TypeError: Cannot read property 'indexOf' of undefined [\\#103](https://github.com/truenorth/ember-cli-materialize/issues/103)\n\n- Improve documentation for forms [\\#95](https://github.com/truenorth/ember-cli-materialize/issues/95)\n\n**Merged pull requests:**\n\n- Update to ember-cli 0.2.4 [\\#104](https://github.com/truenorth/ember-cli-materialize/pull/104) ([truenorth](https://github.com/truenorth))\n\n## [v0.13.5](https://github.com/truenorth/ember-cli-materialize/tree/v0.13.5) (2015-04-27)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.13.4...v0.13.5)\n\n**Closed issues:**\n\n- addon changed my application.hbs and my arrangement in config/environment  :-\\( [\\#89](https://github.com/truenorth/ember-cli-materialize/issues/89)\n\n- Publish v0.13.4 to NPM [\\#88](https://github.com/truenorth/ember-cli-materialize/issues/88)\n\n- Modal issue [\\#81](https://github.com/truenorth/ember-cli-materialize/issues/81)\n\n**Merged pull requests:**\n\n- Fix deprecation in navbar docs [\\#91](https://github.com/truenorth/ember-cli-materialize/pull/91) ([truenorth](https://github.com/truenorth))\n\n## [v0.13.4](https://github.com/truenorth/ember-cli-materialize/tree/v0.13.4) (2015-04-24)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.13.3...v0.13.4)\n\n**Closed issues:**\n\n- Trouble with buttons [\\#79](https://github.com/truenorth/ember-cli-materialize/issues/79)\n\n- Simple arrays [\\#74](https://github.com/truenorth/ember-cli-materialize/issues/74)\n\n- Binding value [\\#28](https://github.com/truenorth/ember-cli-materialize/issues/28)\n\n**Merged pull requests:**\n\n- Modal container component, modal documentation improvements [\\#83](https://github.com/truenorth/ember-cli-materialize/pull/83) ([truenorth](https://github.com/truenorth))\n\n- \\[Bugfix\\] Handle nested addons properly [\\#80](https://github.com/truenorth/ember-cli-materialize/pull/80) ([truenorth](https://github.com/truenorth))\n\n- \\[Bugfix\\] Select - simple array case [\\#78](https://github.com/truenorth/ember-cli-materialize/pull/78) ([truenorth](https://github.com/truenorth))\n\n- \\[Refactor\\] Remove liquid fire [\\#77](https://github.com/truenorth/ember-cli-materialize/pull/77) ([truenorth](https://github.com/truenorth))\n\n## [v0.13.3](https://github.com/truenorth/ember-cli-materialize/tree/v0.13.3) (2015-04-23)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.13.2...v0.13.3)\n\n**Closed issues:**\n\n- Style broken in Safari [\\#73](https://github.com/truenorth/ember-cli-materialize/issues/73)\n\n**Merged pull requests:**\n\n- \\[Bugfix\\] Datepicker input now updates bound value [\\#76](https://github.com/truenorth/ember-cli-materialize/pull/76) ([truenorth](https://github.com/truenorth))\n\n## [v0.13.2](https://github.com/truenorth/ember-cli-materialize/tree/v0.13.2) (2015-04-22)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.13.1...v0.13.2)\n\n**Merged pull requests:**\n\n- Fixed classnamebinding in md-select [\\#75](https://github.com/truenorth/ember-cli-materialize/pull/75) ([pajter](https://github.com/pajter))\n\n## [v0.13.1](https://github.com/truenorth/ember-cli-materialize/tree/v0.13.1) (2015-04-21)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.13.0...v0.13.1)\n\n**Merged pull requests:**\n\n- New CP syntax, cleanup, formatting [\\#70](https://github.com/truenorth/ember-cli-materialize/pull/70) ([truenorth](https://github.com/truenorth))\n\n- md-\\* helpers [\\#69](https://github.com/truenorth/ember-cli-materialize/pull/69) ([truenorth](https://github.com/truenorth))\n\n- Modal [\\#65](https://github.com/truenorth/ember-cli-materialize/pull/65) ([truenorth](https://github.com/truenorth))\n\n## [v0.13.0](https://github.com/truenorth/ember-cli-materialize/tree/v0.13.0) (2015-04-16)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.12.0...v0.13.0)\n\n**Merged pull requests:**\n\n- added configuration block in README [\\#68](https://github.com/truenorth/ember-cli-materialize/pull/68) ([hanloong](https://github.com/hanloong))\n\n- Forms - Checkbox, Radio, Switch, Range and Checkbox/Radio/Switch List components [\\#64](https://github.com/truenorth/ember-cli-materialize/pull/64) ([truenorth](https://github.com/truenorth))\n\n## [v0.12.0](https://github.com/truenorth/ember-cli-materialize/tree/v0.12.0) (2015-04-16)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.11.3...v0.12.0)\n\n**Merged pull requests:**\n\n- ES6ification [\\#66](https://github.com/truenorth/ember-cli-materialize/pull/66) ([truenorth](https://github.com/truenorth))\n\n- Re-enable stylesheet in qunit test runner [\\#61](https://github.com/truenorth/ember-cli-materialize/pull/61) ([truenorth](https://github.com/truenorth))\n\n- Pagination [\\#58](https://github.com/truenorth/ember-cli-materialize/pull/58) ([truenorth](https://github.com/truenorth))\n\n## [v0.11.3](https://github.com/truenorth/ember-cli-materialize/tree/v0.11.3) (2015-04-16)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.11.2...v0.11.3)\n\n**Merged pull requests:**\n\n- WIP - Modal [\\#63](https://github.com/truenorth/ember-cli-materialize/pull/63) ([truenorth](https://github.com/truenorth))\n\n## [v0.11.2](https://github.com/truenorth/ember-cli-materialize/tree/v0.11.2) (2015-04-15)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.11.1...v0.11.2)\n\n**Closed issues:**\n\n- Crashes on startup [\\#48](https://github.com/truenorth/ember-cli-materialize/issues/48)\n\n- If the browser fills the input with a value on page load then the label is not set to active [\\#43](https://github.com/truenorth/ember-cli-materialize/issues/43)\n\n**Merged pull requests:**\n\n- \\[Bugfix\\] Teardown pickadate and collapsible events [\\#62](https://github.com/truenorth/ember-cli-materialize/pull/62) ([jasonmit](https://github.com/jasonmit))\n\n- Run ember-try on travis-ci parallel [\\#60](https://github.com/truenorth/ember-cli-materialize/pull/60) ([truenorth](https://github.com/truenorth))\n\n- Update travis.yml to use PhantomJS 2.0 [\\#59](https://github.com/truenorth/ember-cli-materialize/pull/59) ([truenorth](https://github.com/truenorth))\n\n- ES6ification [\\#57](https://github.com/truenorth/ember-cli-materialize/pull/57) ([truenorth](https://github.com/truenorth))\n\n- Form \\(switch, check box, range, radio buttons\\) [\\#46](https://github.com/truenorth/ember-cli-materialize/pull/46) ([truenorth](https://github.com/truenorth))\n\n## [v0.11.1](https://github.com/truenorth/ember-cli-materialize/tree/v0.11.1) (2015-04-11)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.11.0...v0.11.1)\n\n**Merged pull requests:**\n\n- Use non-beta version of ember-cli-sass to address dependency issues. [\\#56](https://github.com/truenorth/ember-cli-materialize/pull/56) ([rynam0](https://github.com/rynam0))\n\n## [v0.11.0](https://github.com/truenorth/ember-cli-materialize/tree/v0.11.0) (2015-04-10)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.10.0...v0.11.0)\n\n**Merged pull requests:**\n\n- Tabs  [\\#34](https://github.com/truenorth/ember-cli-materialize/pull/34) ([truenorth](https://github.com/truenorth))\n\n## [v0.10.0](https://github.com/truenorth/ember-cli-materialize/tree/v0.10.0) (2015-04-10)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.9.3...v0.10.0)\n\n**Merged pull requests:**\n\n- Create component for footer [\\#53](https://github.com/truenorth/ember-cli-materialize/pull/53) ([franktcurran](https://github.com/franktcurran))\n\n## [v0.9.3](https://github.com/truenorth/ember-cli-materialize/tree/v0.9.3) (2015-04-09)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.9.2...v0.9.3)\n\n**Merged pull requests:**\n\n- Upgrade ember-cli-sass to 4.0.0-beta.4 [\\#55](https://github.com/truenorth/ember-cli-materialize/pull/55) ([truenorth](https://github.com/truenorth))\n\n## [v0.9.2](https://github.com/truenorth/ember-cli-materialize/tree/v0.9.2) (2015-04-08)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.9.1...v0.9.2)\n\n**Merged pull requests:**\n\n- Ember-cli 0.2.3, Don't rely on prototype extensions [\\#54](https://github.com/truenorth/ember-cli-materialize/pull/54) ([truenorth](https://github.com/truenorth))\n\n## [v0.9.1](https://github.com/truenorth/ember-cli-materialize/tree/v0.9.1) (2015-04-07)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.9.0...v0.9.1)\n\n**Closed issues:**\n\n- Fresh install results in error in config/environment.js [\\#50](https://github.com/truenorth/ember-cli-materialize/issues/50)\n\n- Ember-cli crashes with V0.9.0 of addon [\\#42](https://github.com/truenorth/ember-cli-materialize/issues/42)\n\n**Merged pull requests:**\n\n- Fix blueprint [\\#51](https://github.com/truenorth/ember-cli-materialize/pull/51) ([truenorth](https://github.com/truenorth))\n\n- Restore ember-1.10 compatibility, and add ember-try [\\#49](https://github.com/truenorth/ember-cli-materialize/pull/49) ([truenorth](https://github.com/truenorth))\n\n- Refactor cards-test [\\#45](https://github.com/truenorth/ember-cli-materialize/pull/45) ([truenorth](https://github.com/truenorth))\n\n- Code climate improvements [\\#44](https://github.com/truenorth/ember-cli-materialize/pull/44) ([truenorth](https://github.com/truenorth))\n\n## [v0.9.0](https://github.com/truenorth/ember-cli-materialize/tree/v0.9.0) (2015-04-02)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.8.1...v0.9.0)\n\n**Closed issues:**\n\n- icons not showing [\\#41](https://github.com/truenorth/ember-cli-materialize/issues/41)\n\n**Merged pull requests:**\n\n- Loader component [\\#37](https://github.com/truenorth/ember-cli-materialize/pull/37) ([truenorth](https://github.com/truenorth))\n\n## [v0.8.1](https://github.com/truenorth/ember-cli-materialize/tree/v0.8.1) (2015-04-02)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.8.0...v0.8.1)\n\n## [v0.8.0](https://github.com/truenorth/ember-cli-materialize/tree/v0.8.0) (2015-04-02)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.7.2...v0.8.0)\n\n**Closed issues:**\n\n- Generalize materialize-input [\\#39](https://github.com/truenorth/ember-cli-materialize/issues/39)\n\n- \\_normalize.scss - invalid top-level expression [\\#35](https://github.com/truenorth/ember-cli-materialize/issues/35)\n\n- Invalid top-level expression [\\#30](https://github.com/truenorth/ember-cli-materialize/issues/30)\n\n**Merged pull requests:**\n\n- Type of input can be set through parameter [\\#40](https://github.com/truenorth/ember-cli-materialize/pull/40) ([jaimevent](https://github.com/jaimevent))\n\n- Add emberobserver.com badge to Readme [\\#38](https://github.com/truenorth/ember-cli-materialize/pull/38) ([truenorth](https://github.com/truenorth))\n\n- Badge component [\\#36](https://github.com/truenorth/ember-cli-materialize/pull/36) ([truenorth](https://github.com/truenorth))\n\n## [v0.7.2](https://github.com/truenorth/ember-cli-materialize/tree/v0.7.2) (2015-04-01)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.7.1...v0.7.2)\n\n**Merged pull requests:**\n\n- Update to ember-cli 0.2.2 [\\#33](https://github.com/truenorth/ember-cli-materialize/pull/33) ([truenorth](https://github.com/truenorth))\n\n## [v0.7.1](https://github.com/truenorth/ember-cli-materialize/tree/v0.7.1) (2015-03-29)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.7.0...v0.7.1)\n\n**Closed issues:**\n\n- paralax broken and other issues when changing routes [\\#18](https://github.com/truenorth/ember-cli-materialize/issues/18)\n\n**Merged pull requests:**\n\n- Fix dummy app CSS path [\\#27](https://github.com/truenorth/ember-cli-materialize/pull/27) ([truenorth](https://github.com/truenorth))\n\n- Update dev dependencies [\\#26](https://github.com/truenorth/ember-cli-materialize/pull/26) ([truenorth](https://github.com/truenorth))\n\n## [v0.7.0](https://github.com/truenorth/ember-cli-materialize/tree/v0.7.0) (2015-03-28)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.6.0...v0.7.0)\n\n**Merged pull requests:**\n\n- sgasser/ember-cli-materialize/18: create a component for parallax [\\#25](https://github.com/truenorth/ember-cli-materialize/pull/25) ([rynam0](https://github.com/rynam0))\n\n## [v0.6.0](https://github.com/truenorth/ember-cli-materialize/tree/v0.6.0) (2015-03-27)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.5.2...v0.6.0)\n\n**Closed issues:**\n\n- disabled submit button submits forms [\\#21](https://github.com/truenorth/ember-cli-materialize/issues/21)\n\n**Merged pull requests:**\n\n- create input components for Date, Select, and TextArea [\\#24](https://github.com/truenorth/ember-cli-materialize/pull/24) ([rynam0](https://github.com/rynam0))\n\n## [v0.5.2](https://github.com/truenorth/ember-cli-materialize/tree/v0.5.2) (2015-03-23)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.5.1...v0.5.2)\n\n## [v0.5.1](https://github.com/truenorth/ember-cli-materialize/tree/v0.5.1) (2015-03-23)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.5.0...v0.5.1)\n\n**Closed issues:**\n\n- navbar should \"closeOnClick\" by default [\\#22](https://github.com/truenorth/ember-cli-materialize/issues/22)\n\n## [v0.5.0](https://github.com/truenorth/ember-cli-materialize/tree/v0.5.0) (2015-03-23)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.4.1...v0.5.0)\n\n**Merged pull requests:**\n\n- Create component for form input [\\#23](https://github.com/truenorth/ember-cli-materialize/pull/23) ([rynam0](https://github.com/rynam0))\n\n## [v0.4.1](https://github.com/truenorth/ember-cli-materialize/tree/v0.4.1) (2015-03-19)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.4.0...v0.4.1)\n\n**Closed issues:**\n\n- Components should live in the project's addon directory [\\#17](https://github.com/truenorth/ember-cli-materialize/issues/17)\n\n**Merged pull requests:**\n\n- Refactor: sgasser/ember-cli-materialize/17 [\\#20](https://github.com/truenorth/ember-cli-materialize/pull/20) ([rynam0](https://github.com/rynam0))\n\n## [v0.4.0](https://github.com/truenorth/ember-cli-materialize/tree/v0.4.0) (2015-03-18)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.3.3...v0.4.0)\n\n**Closed issues:**\n\n- Cannot install under ember-cli 0.2.0 [\\#13](https://github.com/truenorth/ember-cli-materialize/issues/13)\n\n**Merged pull requests:**\n\n- create components for Collapsibles [\\#16](https://github.com/truenorth/ember-cli-materialize/pull/16) ([rynam0](https://github.com/rynam0))\n\n- create components for cards [\\#15](https://github.com/truenorth/ember-cli-materialize/pull/15) ([rynam0](https://github.com/rynam0))\n\n## [v0.3.3](https://github.com/truenorth/ember-cli-materialize/tree/v0.3.3) (2015-03-16)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.3.2...v0.3.3)\n\n## [v0.3.2](https://github.com/truenorth/ember-cli-materialize/tree/v0.3.2) (2015-03-15)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.3.1...v0.3.2)\n\n**Closed issues:**\n\n- App blank after installing [\\#10](https://github.com/truenorth/ember-cli-materialize/issues/10)\n\n- Transfer ownership of ember-cli-materialize [\\#9](https://github.com/truenorth/ember-cli-materialize/issues/9)\n\n- Can not import @materialze with newest ember-cli version. [\\#8](https://github.com/truenorth/ember-cli-materialize/issues/8)\n\n**Merged pull requests:**\n\n- Upgrade to ember-cli@0.2.0 [\\#14](https://github.com/truenorth/ember-cli-materialize/pull/14) ([rynam0](https://github.com/rynam0))\n\n- Removed extra semi-colon [\\#12](https://github.com/truenorth/ember-cli-materialize/pull/12) ([rynam0](https://github.com/rynam0))\n\n## [v0.3.1](https://github.com/truenorth/ember-cli-materialize/tree/v0.3.1) (2015-03-02)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.3.0...v0.3.1)\n\n**Closed issues:**\n\n- sorry bad repo [\\#5](https://github.com/truenorth/ember-cli-materialize/issues/5)\n\n## [v0.3.0](https://github.com/truenorth/ember-cli-materialize/tree/v0.3.0) (2015-01-28)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.2.1...v0.3.0)\n\n**Closed issues:**\n\n- select input doesn’t work properly with ember-cli [\\#4](https://github.com/truenorth/ember-cli-materialize/issues/4)\n\n## [v0.2.1](https://github.com/truenorth/ember-cli-materialize/tree/v0.2.1) (2015-01-05)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.2.0...v0.2.1)\n\n**Merged pull requests:**\n\n- Reopen LinkView in an initializer [\\#3](https://github.com/truenorth/ember-cli-materialize/pull/3) ([miguelcobain](https://github.com/miguelcobain))\n\n- include ember-cli 0.1.5 install instructions [\\#2](https://github.com/truenorth/ember-cli-materialize/pull/2) ([miguelcobain](https://github.com/miguelcobain))\n\n## [v0.2.0](https://github.com/truenorth/ember-cli-materialize/tree/v0.2.0) (2014-12-25)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.1.2...v0.2.0)\n\n## [v0.1.2](https://github.com/truenorth/ember-cli-materialize/tree/v0.1.2) (2014-12-23)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.1.1...v0.1.2)\n\n## [v0.1.1](https://github.com/truenorth/ember-cli-materialize/tree/v0.1.1) (2014-12-22)\n\n[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.1.0...v0.1.1)\n\n## [v0.1.0](https://github.com/truenorth/ember-cli-materialize/tree/v0.1.0) (2014-12-22)\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "# Contributing\nFirst of all, **thank you** for contributing, **you are awesome**!\n\nHere are a few rules to follow in order to ease code reviews, and discussions before\nmaintainers accept and merge your work.\n\nYou MUST run the test suite.\n\nYou MUST write (or update) unit tests.\n\nYou SHOULD write documentation.\n\nPlease, write [commit messages that make\nsense](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html),\nand [rebase your branch](http://git-scm.com/book/en/Git-Branching-Rebasing)\nbefore submitting your Pull Request.\n\nOne may ask you to [squash your\ncommits](http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html)\ntoo. This is used to \"clean\" your Pull Request before merging it (we don't want\ncommits such as `fix tests`, `fix 2`, `fix 3`, etc.).\n\nAlso, while creating your Pull Request on GitHub, you MUST write a description\nwhich gives the context and/or explains why you are creating it.\n\nThank you!\n"
  },
  {
    "path": "LICENSE.md",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2016 Stefan Gasser <stefangasser.info@gmail.com> and Mike North <michael.l.north@gmail.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"
  },
  {
    "path": "README.md",
    "content": "# ember-cli-materialize\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/mike-north/ember-cli-materialize.svg)](https://greenkeeper.io/)\n\n[![Build Status](https://travis-ci.org/mike-north/ember-cli-materialize.svg?branch=master)](https://travis-ci.org/mike-north/ember-cli-materialize)\n[![npm version](https://badge.fury.io/js/ember-cli-materialize.svg)](http://badge.fury.io/js/ember-cli-materialize)\n[![Code Climate](https://codeclimate.com/github/mike-north/ember-cli-materialize/badges/gpa.svg)](https://codeclimate.com/github/mike-north/ember-cli-materialize)\n[![Coverage Status](https://coveralls.io/repos/mike-north/ember-cli-materialize/badge.svg?branch=master&service=github)](https://coveralls.io/github/mike-north/ember-cli-materialize?branch=master)\n[![Ember Observer Score](http://emberobserver.com/badges/ember-cli-materialize.svg)](http://emberobserver.com/addons/ember-cli-materialize)\n[![Book session on Codementor](https://cdn.codementor.io/badges/book_session_github.svg)](https://www.codementor.io/mikenorth0?utm_source=github&utm_medium=button&utm_term=mikenorth0&utm_campaign=github)\n\nAn [ember-cli](http://www.ember-cli.com) addon for using [Materialize](http://materializecss.com/) (CSS Framework based on [Material Design](http://www.google.com/design/spec/material-design/introduction.html)) in Ember applications.\n\n**Ember 2.0 Friendly**\n\n**Materialize Version ~0.97.0**\n\n[![NPM](https://nodei.co/npm-dl/ember-cli-materialize.png?months=6)](https://nodei.co/npm/ember-cli-materialize/)\n\n### Which version do I use?\n\nEmber.js version | ember-cli-materialize version\n-----------------|--------------\n`< 1.10.0`       | Not supported\n`1.10.0 <= x <  1.11.0`| [`v0.16.4`](https://github.com/mike-north/ember-cli-materialize/tree/v0.16.4)\n`1.11.0 <= x <  1.13.0`| [`v0.18.6`](https://github.com/mike-north/ember-cli-materialize/tree/v0.18.6)\n`x >= 1.13.0` | [![npm version](https://badge.fury.io/js/ember-cli-materialize.svg)](http://badge.fury.io/js/ember-cli-materialize)\n\n\n## Main features\n\n* Imports [Materialize](http://materializecss.com/) sass (via [ember-cli-sass](https://www.npmjs.com/package/ember-cli-sass)) and fonts into your app.\n* It's a components library for all Materialize components\n\n## Usage\nThe [online demo](http://mike.works/ember-cli-materialize) demonstrates all components with all possible options.\n\nOr you can download the demo:\n```sh\n$ sudo npm install -g ember-cli\n$ git clone git@github.com:mike-north/ember-cli-materialize\n$ cd ember-cli-materialize\n# install dependencies\n$ npm install && bower install\n# fire up local server\n$ ember serve\n```\n\n### Configuration\n\n#### Style\n\nUsing **SASS** makes configuring the color scheme simple. Just make sure you import `components/color` and `components/variables` before `materialize` like the example below.\n\n```scss\n// Example app.scss\n@import 'components/color';\n\n// Custom color settings go here\n$primary-color: color(\"pink\", \"lighten-2\");\n\n@import 'components/variables';\n@import 'materialize';\n@import 'ember-cli-materialize';\n```\nSee the materialize docs on sass variables [here](http://materializecss.com/color.html).\n\n#### Defaults\n\nSome of the library's defaults can be set via your **config/environment.js** file\n\n```javascript\nmodule.exports = function(/* environment, appConfig */) {\n  var ENV = {\n    materializeDefaults: {\n      modalIsFooterFixed:  false,\n      buttonIconPosition:  'left',\n      loaderSize:          'big',\n      loaderMode:          'indeterminate',\n      modalContainerId:    'materialize-modal-root-element',\n      dropdownInDuration:  300,\n      dropdownOutDuration: 300\n    },\n    ...\n  };\n}\n\n```\n\n## Installation\n\n```sh\n$ ember install ember-cli-materialize\n```\n\n### PhantomJS\n\nIf you are using PhantomJS version 1.9.x as a test runner then after installing this addon you may experience test failures when running tests via `ember test` that you do not see in a browser.\n\nThis is due to the known limitation in PhantomJS 1.9 not providing a `.bind` method. To continue using PhantomJS simply either install [ember-cli-es5-shim](https://github.com/pixelhandler/ember-cli-es5-shim), which provides a `.bind` method, or try PhantomJS 2.x.\n\n## Testing\n\nThis addon is continuiously integrated against the following framework versions\n\nVersion | Failures Allowed\n--------|-------------------\nEmber `~1.10.0` | No\nEmber `~1.11.0` | No\nEmber `~1.12.0` | No\ncomponents/ember#release | No\ncomponents/ember#beta | No\ncomponents/ember#canary | No\n\n\n## Contributing\nSee [CONTRIBUTING file](https://github.com/mike-north/ember-cli-materialize/tree/master/CONTRIBUTING.md).\n\n## Special Thanks\nSpecial thanks to [Stefan Gasser](https://github.com/sgasser) for creating and originally maintaining this great library\n\n## License\nember-cli-materialize is released under the MIT License. See the bundled LICENSE file for\ndetails.\n\n![Analytics](https://ga-beacon.appspot.com/UA-66610985-1/mike-north/ember-cli-materialize/readme)\n"
  },
  {
    "path": "addon/components/-md-fixed-btn-base.js",
    "content": "import { computed } from '@ember/object';\nimport Component from '@ember/component';\n\nexport default Component.extend({\n  actionArgs: null,\n  large: true,\n\n  actions: {\n    fireButtonAction() {\n      const actionArgs = this.get('actionArgs');\n      if (actionArgs) {\n        this.sendAction('action', actionArgs || null);\n      } else {\n        this.sendAction('action');\n      }\n    }\n  },\n\n  _btnClassString: computed('btnClass', function() {\n    return `${this.get('btnClass')} btn-floating ${this.get('large') ? 'btn-large' : ''}`;\n  })\n});\n"
  },
  {
    "path": "addon/components/md-badge.js",
    "content": "import Component from '@ember/component';\nimport layout from '../templates/components/md-badge';\n\nexport default Component.extend({\n  layout,\n  tagName: 'span',\n  text: null,\n  classNames: ['badge']\n});\n"
  },
  {
    "path": "addon/components/md-btn-dropdown.js",
    "content": "import { computed } from '@ember/object';\nimport layout from '../templates/components/md-btn-dropdown';\nimport MaterializeButton from './md-btn';\n\nexport default MaterializeButton.extend({\n  layout,\n  tagName: 'a',\n  classNames: ['dropdown-button'],\n  icon: 'mdi-navigation-expand-more',\n  iconBody: '',\n  iconPosition: 'right',\n  attributeBindings: [\n    'inDuration:data-induration',\n    'outDuration:data-outduration',\n    'constrainWidth:data-constrainwidth',\n    '_hoverVal:data-hover',\n    'gutter:data-gutter',\n    'belowOrigin:data-beloworigin',\n    'alignment'\n  ],\n\n  didRender() {\n    this._super(...arguments);\n    this._setupDropdown();\n  },\n\n  _hoverVal: computed('hover', function() {\n    return this.get('hover') ? 'true' : 'false';\n  }),\n\n  _setupDropdown() {\n    // needed until the Materialize.dropdown plugin is replaced\n    this.$().attr('data-activates', this.get('_dropdownContentId'));\n    let options = {\n      hover: !!this.getWithDefault('hover', false),\n      // Ignore requireCamelCaseOrUpperCaseIdentifiers because the original\n      // variable of materializecss contains underscore\n      // jscs:disable requireCamelCaseOrUpperCaseIdentifiers\n      constrain_width: !!this.getWithDefault('constrainWidth', true),\n      // jscs:enable requireCamelCaseOrUpperCaseIdentifiers\n      inDuration: this.getWithDefault('inDuration', this.get('_mdSettings.dropdownInDuration')),\n      outDuration: this.getWithDefault('outDuration', this.get('_mdSettings.dropdownOutDuration')),\n      gutter: this.getWithDefault('gutter', 0),\n      belowOrigin: !!this.getWithDefault('belowOrigin', false),\n      alignment: this.getWithDefault('alignment', 'left')\n    };\n\n    this.$().dropdown(options);\n  },\n  _dropdownContentId: computed(function() {\n    return `${this.get('elementId')}-dropdown-content`;\n  })\n});\n"
  },
  {
    "path": "addon/components/md-btn-submit.js",
    "content": "import MaterializeButton from './md-btn';\n\nexport default MaterializeButton.extend({\n  layoutName: 'components/materialize-button',\n  tagName: 'button',\n  attributeBindings: ['type'],\n  type: 'submit'\n});\n"
  },
  {
    "path": "addon/components/md-btn.js",
    "content": "import { equal } from '@ember/object/computed';\nimport Component from '@ember/component';\nimport { computed } from '@ember/object';\nimport { typeOf } from '@ember/utils';\nimport { scheduleOnce } from '@ember/runloop';\nimport UsesSettings from '../mixins/uses-settings';\nimport layout from '../templates/components/md-btn';\n\nexport default Component.extend(UsesSettings, {\n  layout,\n  tagName: 'a',\n  classNameBindings: ['btn:waves-effect', 'wavesClass', 'isDisabled:disabled:waves-effect', 'buttonClass'],\n  attributeBindings: ['isDisabled:disabled'],\n  wavesClass: 'waves-light',\n  text: null,\n  icon: null,\n  iconPosition: null,\n  buttonType: null,\n  actionArg: null,\n  isFlat: equal('buttonType', 'flat'),\n  isDisabled: false,\n\n  init() {\n    this._super(...arguments);\n    if (!this.get('iconPosition')) {\n      this.set('iconPosition', this.get('_mdSettings.buttonIconPosition'));\n    }\n  },\n\n  didInsertElement() {\n    this._super(...arguments);\n    scheduleOnce('afterRender', this, this._setupWaves);\n  },\n\n  buttonClass: computed('buttonType', function() {\n    const buttonType = this.get('buttonType');\n    return buttonType ? `btn-${buttonType}` : 'btn';\n  }),\n\n  _setupWaves() {\n    const Waves = window.Waves || {};\n    if (typeOf(Waves.displayEffect) === 'function') {\n      Waves.displayEffect();\n    }\n  },\n\n  click() {\n    if (!this.get('isDisabled')) {\n      this.sendAction('action', this.get('actionArg'));\n    }\n  }\n});\n"
  },
  {
    "path": "addon/components/md-card-action.js",
    "content": "import Component from '@ember/component';\n\nexport default Component.extend({\n  classNames: ['card-action']\n});\n"
  },
  {
    "path": "addon/components/md-card-collapsible.js",
    "content": "import { computed } from '@ember/object';\nimport Component from '@ember/component';\nimport layout from '../templates/components/md-card-collapsible';\n\nexport default Component.extend({\n  layout,\n  tagName: 'ul',\n  classNames: ['collapsible'],\n  attributeBindings: ['data-collapsible'],\n  accordion: true,\n\n  'data-collapsible': computed(function() {\n    return this.get('accordion') ? 'accordion' : 'expandable';\n  }),\n\n  didInsertElement() {\n    this._super(...arguments);\n    this._setupCollapsible();\n  },\n\n  _setupCollapsible() {\n    const accordion = this.get('accordion');\n    this.$().collapsible({ accordion });\n  },\n\n  _teardownCollapsible() {\n    const $panelHeaders = this.$('> li > .collapsible-header');\n    this.$().off('click.collapse', '.collapsible-header');\n    $panelHeaders.off('click.collapse');\n  },\n\n  willDestroyElement() {\n    this._super(...arguments);\n    this._teardownCollapsible();\n  }\n});\n"
  },
  {
    "path": "addon/components/md-card-content.js",
    "content": "import Component from '@ember/component';\nimport { computed } from '@ember/object';\nimport layout from '../templates/components/md-card-content';\nimport { deprecate } from '@ember/application/deprecations';\n\nexport default Component.extend({\n  layout,\n\n  classNames: ['card-content'],\n\n  classNameBindings: ['class'],\n\n  title: computed('parentView.title', function() {\n    deprecate('Using md-card-content without passing it a \"title\" property (relying on parentView.title) is deprecated.',\n      true, {\n      id: 'ember-cli-materialize.deprecate-parentView',\n      until: '1.0.0'\n    });\n    return this.get('parentView.title');\n  }),\n\n  titleClass: computed('parentView.titleClass', function() {\n    deprecate('Using md-card-content without passing it a \"titleClass\" property (relying on parentView.titleClass) is deprecated.',\n      true, {\n      id: 'ember-cli-materialize.deprecate-parentView',\n      until: '1.0.0'\n    });\n    return this.get('parentView.titleClass');\n  }),\n\n  activator: computed('parentView.activator', function() {\n    deprecate('Using md-card-content without passing it an \"activator\" property (relying on parentView.activator) is deprecated.',\n      true, {\n      id: 'ember-cli-materialize.deprecate-parentView',\n      until: '1.0.0'\n    });\n    return this.get('parentView.activator');\n  }),\n\n  cardTitleClass: computed('titleClass', function() {\n    return this.get('titleClass') || 'black-text';\n  })\n});\n"
  },
  {
    "path": "addon/components/md-card-panel.js",
    "content": "import Component from '@ember/component';\nimport layout from '../templates/components/md-card-panel';\n\nexport default Component.extend({\n  layout,\n\n  classNames: ['card-panel'],\n  classNameBindings: ['class']\n});\n"
  },
  {
    "path": "addon/components/md-card-reveal.js",
    "content": "import Component from '@ember/component';\nimport { computed } from '@ember/object';\nimport layout from '../templates/components/md-card-reveal';\nimport { deprecate } from '@ember/application/deprecations';\n\nexport default Component.extend({\n  layout,\n  tagName: 'div',\n\n  classNames: ['card-reveal'],\n  classNameBindings: ['class'],\n  title: computed('parentView.title', function() {\n    deprecate('Using md-card-reveal without passing it a \"title\" property (relying on parentView.title) is deprecated.',\n      true, {\n      id: 'ember-cli-materialize.deprecate-parentView',\n      until: '1.0.0'\n    });\n    return this.get('parentView.title');\n  }),\n  activator: computed('parentView.activator', function() {\n    deprecate('Using md-card-reveal without passing it an \"activator\" property (relying on parentView.activator) is deprecated.',\n      true, {\n      id: 'ember-cli-materialize.deprecate-parentView',\n      until: '1.0.0'\n    });\n    return this.get('parentView.activator');\n  })\n});\n"
  },
  {
    "path": "addon/components/md-card.js",
    "content": "import Component from '@ember/component';\nimport layout from '../templates/components/md-card';\n\nexport default Component.extend({\n  layout,\n  classNames: ['card'],\n  classNameBindings: ['class']\n});\n"
  },
  {
    "path": "addon/components/md-check.js",
    "content": "import { alias } from '@ember/object/computed';\nimport SelectableItem from './selectable-item';\nimport layout from '../templates/components/md-checkbox';\n\nexport default SelectableItem.extend({\n  layout,\n  text: alias('name'),\n  classNames: ['materialize-checkbox']\n});\n"
  },
  {
    "path": "addon/components/md-checks-check.js",
    "content": "import CheckboxComponent from './md-check';\nimport GroupSelectableItemMixin from '../mixins/group-selectable-item';\n\nexport default CheckboxComponent.extend(GroupSelectableItemMixin, {});\n"
  },
  {
    "path": "addon/components/md-checks.js",
    "content": "import SelectableItemGroup from './selectable-item-group';\n\nexport default SelectableItemGroup.extend({\n  selectableItemView: 'md-checks-check',\n  multiple: true\n});\n"
  },
  {
    "path": "addon/components/md-collapsible.js",
    "content": "import { deprecate } from '@ember/application/deprecations';\nimport Component from '@ember/component';\nimport layout from '../templates/components/md-collapsible';\nimport { computed } from '@ember/object';\n\nexport default Component.extend({\n  layout,\n  tagName: 'li',\n  // classNameBindings: ['class'],\n  actionArg: null,\n  model: computed('actionArg', {\n    get() {\n      deprecate('md-collapsible#model is deprecated. Please use md-collapsible#actionArg instead');\n      return this.get('actionArg');\n    },\n    set(key, val) {\n      deprecate('md-collapsible#model is deprecated. Please use md-collapsible#actionArg instead');\n      return this.set('actionArg', val);\n    }\n  }),\n  actions: {\n    headerClicked() {\n      this.sendAction('action', this.get('actionArg'));\n    }\n  }\n});\n"
  },
  {
    "path": "addon/components/md-collection.js",
    "content": "import Component from '@ember/component';\nimport { bool } from '@ember/object/computed';\nimport layout from '../templates/components/md-collection';\n\nexport default Component.extend({\n  layout,\n  classNames: ['collection'],\n  classNameBindings: ['_hasHeader:with-header'],\n  headerComponentName: 'md-default-collection-header',\n  header: null,\n  _hasHeader: bool('header')\n});\n"
  },
  {
    "path": "addon/components/md-copyright.js",
    "content": "import Component from '@ember/component';\nimport { computed } from '@ember/object';\nimport { assert } from '@ember/debug';\nimport layout from '../templates/components/md-copyright';\n\nexport default Component.extend({\n  layout,\n  classNames: ['footer-copyright'],\n\n  init() {\n    this._super(...arguments);\n    assert(\n      'Property startYear must be less than or equal to the current year.',\n      this.get('startYear') === null || this.get('startYear') <= new Date().getFullYear()\n    );\n  },\n\n  startYear: null,\n  text: null,\n\n  date: computed(function() {\n    const currentYear = new Date().getFullYear();\n    const startYear = this.get('startYear');\n\n    if (startYear === null || startYear === currentYear) {\n      return `${currentYear}`;\n    } else {\n      return `${startYear} - ${currentYear}`;\n    }\n  })\n});\n"
  },
  {
    "path": "addon/components/md-default-collection-header.js",
    "content": "import Component from '@ember/component';\nimport layout from '../templates/components/md-default-collection-header';\n\nexport default Component.extend({\n  layout,\n  classNames: ['collection-header']\n});\n"
  },
  {
    "path": "addon/components/md-default-column-header.js",
    "content": "import Component from '@ember/component';\nimport { alias } from '@ember/object/computed';\nimport layout from '../templates/components/md-default-column-header';\n\nexport default Component.extend({\n  tagName: 'th',\n  layout,\n  attributeBindings: ['data-field'],\n  'data-field': alias('column.valueBindingPath')\n});\n"
  },
  {
    "path": "addon/components/md-fixed-btn.js",
    "content": "import FixedButtonBase from './-md-fixed-btn-base';\nimport layout from '../templates/components/md-fixed-btn';\n\nexport default FixedButtonBase.extend({\n  layout,\n  tagName: 'li',\n  classNames: ['md-fixed-btn']\n});\n"
  },
  {
    "path": "addon/components/md-fixed-btns.js",
    "content": "import FixedButtonBase from './-md-fixed-btn-base';\nimport layout from '../templates/components/md-fixed-btns';\n\nexport default FixedButtonBase.extend({\n  layout,\n  classNames: ['md-fixed-btns', 'fixed-action-btn']\n});\n"
  },
  {
    "path": "addon/components/md-input-date.js",
    "content": "import $ from 'jquery';\nimport MaterializeInput from './md-input';\nimport layout from '../templates/components/md-input-date';\n\nconst MONTH_NAMES = [\n  'January',\n  'February',\n  'March',\n  'April',\n  'May',\n  'June',\n  'July',\n  'August',\n  'September',\n  'October',\n  'November',\n  'December'\n];\n\nfunction formatDate(timestamp) {\n  const d = new Date(timestamp);\n  return `${d.getDate()} ${MONTH_NAMES[d.getMonth()]}, ${d.getFullYear()}`;\n}\n\nexport default MaterializeInput.extend({\n  layout,\n\n  selectMonths: true,\n  numberOfYears: 15,\n  min: '',\n  max: '',\n\n  didInsertElement() {\n    this._super(...arguments);\n    this._setupPicker();\n  },\n\n  willDestroyElement() {\n    this._super(...arguments);\n    this._teardownPicker();\n  },\n\n  _setupPicker() {\n    const datePickerOptions = this.getProperties('selectMonths', 'numberOfYears', 'min', 'max');\n    datePickerOptions.selectYears = datePickerOptions.numberOfYears;\n\n    this._onDateSet = evt => {\n      if (evt.select) {\n        this.set('value', formatDate(evt.select));\n      }\n    };\n\n    this.$('.datepicker').pickadate(\n      $.extend(datePickerOptions, {\n        onSet: this._onDateSet\n      })\n    );\n  },\n\n  _teardownPicker() {\n    const $pickadate = this.$('.datepicker').data('pickadate');\n    if ($pickadate) {\n      $pickadate.stop();\n    }\n  }\n});\n"
  },
  {
    "path": "addon/components/md-input-field.js",
    "content": "import Component from '@ember/component';\nimport { computed } from '@ember/object';\nimport { isPresent } from '@ember/utils';\n\nexport default Component.extend({\n  classNames: ['input-field'],\n\n  bindAttributes: ['disabled', 'readonly', 'autofocus'],\n  validate: false,\n  _wasTouched: false,\n  isValid: computed('_wasTouched', 'value', 'validate', 'errors', 'errors.[]', function() {\n    return (\n      (isPresent(this.get('value')) || this.get('_wasTouched')) &&\n      this.get('validate') &&\n      this.get('errors') &&\n      this.get('errors.length') === 0\n    );\n  }),\n\n  isInvalid: computed('_wasTouched', 'value', 'validate', 'errors', 'errors.[]', function() {\n    return (\n      (isPresent(this.get('value')) || this.get('_wasTouched')) &&\n      this.get('validate') &&\n      this.get('errors') &&\n      this.get('errors.length') > 0\n    );\n  }),\n\n  didInsertElement() {\n    this._super(...arguments);\n    // pad the errors element when an icon is present\n    if (isPresent(this.get('icon'))) {\n      this.$('> span').css('padding-left', '3rem');\n    }\n  },\n\n  id: computed('elementId', function() {\n    return `${this.get('elementId')}-input`;\n  }),\n\n  _setupLabel() {\n    const $label = this.$('> label');\n    if (isPresent(this.get('value')) && !$label.hasClass('active')) {\n      $label.addClass('active');\n    }\n  },\n  _errorString: computed('errors.[]', function() {\n    return (this.get('errors') || []).join('. ');\n  }),\n  actions: {\n    inputFocusIn(evt) {\n      this.set('_wasTouched', true);\n      this.sendAction('focusIn', evt);\n    }\n  }\n});\n"
  },
  {
    "path": "addon/components/md-input.js",
    "content": "import MaterializeInputField from './md-input-field';\nimport layout from '../templates/components/md-input';\n\nexport default MaterializeInputField.extend({\n  layout,\n  type: 'text',\n\n  didInsertElement() {\n    this._super(...arguments);\n    // make sure the label moves when a value is bound.\n    this._setupLabel();\n  }\n});\n"
  },
  {
    "path": "addon/components/md-loader.js",
    "content": "import Component from '@ember/component';\nimport { computed } from '@ember/object';\nimport { A } from '@ember/array';\nimport { htmlSafe } from '@ember/string';\nimport UsesSettings from '../mixins/uses-settings';\nimport layout from '../templates/components/md-loader';\n\nexport default Component.extend(UsesSettings, {\n  layout,\n\n  classNameBindings: ['isBarType:progress:preloader-wrapper', 'active:active', 'size'],\n\n  mode: null,\n  percent: 0,\n  size: null,\n  active: true,\n  color: null,\n\n  init() {\n    this._super(...arguments);\n    if (!this.get('mode')) {\n      this.set('mode', this.get('_mdSettings.loaderMode'));\n    }\n\n    if (!this.get('size')) {\n      this.set('size', this.get('_mdSettings.loaderSize'));\n    }\n  },\n\n  isBarType: computed('mode', function() {\n    return ['determinate', 'indeterminate'].indexOf(this.get('mode')) >= 0;\n  }),\n\n  isDeterminate: computed('mode', function() {\n    return ['determinate'].indexOf(this.get('mode'));\n  }),\n\n  barStyle: computed('mode', 'percent', function() {\n    if (this.get('mode') === 'determinate') {\n      return htmlSafe(`width: ${parseInt(this.get('percent'), 10)}%`);\n    } else {\n      return htmlSafe('');\n    }\n  }),\n\n  barClassName: computed('isBarType', 'mode', function() {\n    return this.get('isBarType') ? this.get('mode') : null;\n  }),\n\n  spinnerClassNames: computed('color', 'isBarType', function() {\n    if (!this.get('isBarType')) {\n      const color = this.get('color');\n      if (!color) {\n        return A(['blue', 'red', 'green', 'yellow'].map(c => `spinner-layer spinner-${c}`));\n      } else {\n        return A([`spinner-layer spinner-${color}-only`]);\n      }\n    } else {\n      return A();\n    }\n  })\n});\n"
  },
  {
    "path": "addon/components/md-modal-container.js",
    "content": "import Component from '@ember/component';\nimport UsesSettings from '../mixins/uses-settings';\nimport layout from '../templates/components/md-modal-container';\n\nexport default Component.extend(UsesSettings, {\n  layout,\n  modalContainerId: null,\n\n  init() {\n    this._super(...arguments);\n    if (!this.get('modalContainerId')) {\n      this.set('modalContainerId', this.get('_mdSettings.modalContainerId'));\n    }\n  }\n});\n"
  },
  {
    "path": "addon/components/md-modal.js",
    "content": "import Component from '@ember/component';\nimport { computed } from '@ember/object';\nimport { oneWay } from '@ember/object/computed';\nimport { htmlSafe } from '@ember/string';\nimport { on } from '@ember/object/evented';\nimport UsesSettings from '../mixins/uses-settings';\nimport layout from '../templates/components/md-modal';\nimport { EKMixin, keyUp } from 'ember-keyboard';\n\nexport default Component.extend(EKMixin, UsesSettings, {\n  layout,\n\n  attributeBindings: ['style:inlineStyle'],\n  concatenatedProperties: ['modalClassNames'],\n\n  inlineStyle: computed(function() {\n    return htmlSafe('z-index: 1000;');\n  }),\n\n  isFooterFixed: oneWay('_mdSettings.modalIsFooterFixed'),\n\n  modalClassNames: ['modal', 'show'],\n  _modalClassString: computed('modalClassNames.[]', 'isFooterFixed', function() {\n    const names = this.get('modalClassNames');\n    if (this.get('isFooterFixed')) {\n      names.push('modal-fixed-footer');\n    }\n    return names.join(' ');\n  }),\n\n  init() {\n    this._super(...arguments);\n    this.set('keyboardActivated', true);\n  },\n\n  _onEsc: on(keyUp('Escape'), function() {\n    this.cancel();\n  }),\n\n  cancel() {\n    this.sendAction('close');\n  },\n\n  actions: {\n    closeModal() {\n      this.sendAction('close');\n    }\n  }\n});\n"
  },
  {
    "path": "addon/components/md-navbar.js",
    "content": "import $ from 'jquery';\nimport { computed } from '@ember/object';\nimport Component from '@ember/component';\nimport { typeOf } from '@ember/utils';\nimport { scheduleOnce } from '@ember/runloop';\nimport layout from '../templates/components/md-navbar';\n\nexport default Component.extend({\n  tagName: 'nav',\n  layout,\n  homeRoute: 'index',\n\n  didInsertElement() {\n    this._super(...arguments);\n    // TODO: is this scheduling necessary?\n    scheduleOnce('afterRender', this, this._setupNavbar);\n  },\n\n  _setupNavbar() {\n    if (typeOf($('.button-collapse').sideNav) === 'function') {\n      this.notifyPropertyChange('_sideNavId');\n      this.$('.button-collapse').sideNav({\n        closeOnClick: true\n      });\n    }\n  },\n\n  _sideNavId: computed(function() {\n    return (typeof FastBoot === 'undefined') ? `${this.get('element.id')}-sidenav` : '';\n  })\n\n  // TODO: Unregister any listeners that $.sideNav() puts in place\n  // _teardownNavbar() {\n  //\n  // }\n});\n"
  },
  {
    "path": "addon/components/md-pagination.js",
    "content": "import Component from '@ember/component';\nimport { computed } from '@ember/object';\nimport { A } from '@ember/array';\nimport layout from '../templates/components/md-pagination';\n\nexport default Component.extend({\n  layout,\n\n  classNames: ['pagination'],\n\n  min: 1,\n  max: 1,\n  current: 1,\n  range: 5,\n  tagName: 'ul',\n\n  windowRange: computed('min', 'max', 'range', 'current', function() {\n    // TODO: this should be broken out into a util, so that it can be tested independently\n    const max = this.get('max');\n    const min = this.get('min');\n    const range = this.get('range');\n    const current = this.get('current');\n\n    const middle = Math.floor((max - min) / 2);\n    let low = Math.max(min, current - Math.floor(range / 2));\n    let high = Math.min(max, current + Math.floor(range / 2));\n\n    if (high - low < range - 1) {\n      if (current <= middle) {\n        high = Math.min(max, low + range - 1);\n      } else {\n        low = Math.max(min, high - (range - 1));\n      }\n    }\n    return {\n      low,\n      high\n    };\n  }),\n\n  _pages: computed('windowRange.low', 'windowRange.high', 'current', function() {\n    const a = new A([]);\n    const winRange = this.get('windowRange');\n    const current = this.get('current');\n    for (let i = winRange.low; i <= winRange.high; i += 1) {\n      a.addObject({ val: i, cssClass: current === i ? 'active' : 'waves-effect' });\n    }\n    return a;\n  }),\n\n  _canGoBack: computed('min', 'current', function() {\n    return this.get('current') > this.get('min');\n  }),\n\n  _canGoFwd: computed('max', 'current', function() {\n    return this.get('current') < this.get('max');\n  }),\n\n  incrementClass: computed('_canGoFwd', function() {\n    return this.get('_canGoFwd') ? '' : 'disabled';\n  }),\n\n  decrementClass: computed('_canGoBack', function() {\n    return this.get('_canGoBack') ? '' : 'disabled';\n  }),\n\n  actions: {\n    oneBack() {\n      if (this.get('_canGoBack')) {\n        this.decrementProperty('current');\n      }\n    },\n    oneFwd() {\n      if (this.get('_canGoFwd')) {\n        this.incrementProperty('current');\n      }\n    },\n    gotoPage(pagenum) {\n      this.set('current', pagenum);\n    }\n  }\n});\n"
  },
  {
    "path": "addon/components/md-parallax.js",
    "content": "import Component from '@ember/component';\nimport layout from '../templates/components/md-parallax';\n\nexport default Component.extend({\n  layout,\n  classNames: ['parallax-container'],\n\n  didInsertElement() {\n    this._super(...arguments);\n    this._setupParallax();\n  },\n\n  _setupParallax() {\n    this.$('.parallax').parallax();\n  }\n\n  // TODO: unregister any listeners that $.parallax() registers\n  // _teardownParallax() {\n  //\n  // }\n});\n"
  },
  {
    "path": "addon/components/md-radio.js",
    "content": "import { computed } from '@ember/object';\nimport { alias } from '@ember/object/computed';\nimport { isEmpty } from '@ember/utils';\nimport { assert } from '@ember/debug';\nimport SelectableItem from './selectable-item';\nimport layout from '../templates/components/md-radio';\n\nexport default SelectableItem.extend({\n  layout,\n\n  value: '',\n  text: alias('name'),\n  groupValue: alias('group.selection'),\n\n  className: ['materialize-radio'],\n\n  checked: computed('groupValue', 'value', function() {\n    return this.get('groupValue') === this.get('value');\n  }),\n\n  didInsertElement() {\n    this._super(...arguments);\n    assert(\n      !isEmpty(this.get('group')),\n      'materialize-radio is not supported outside the context of a materialize-radio-group'\n    );\n  }\n});\n"
  },
  {
    "path": "addon/components/md-radios-radio.js",
    "content": "import RadioComponent from './md-radio';\nimport GroupSelectableItemMixin from '../mixins/group-selectable-item';\n\nexport default RadioComponent.extend(GroupSelectableItemMixin, {});\n"
  },
  {
    "path": "addon/components/md-radios.js",
    "content": "import SelectableItemGroup from './selectable-item-group';\n\nexport default SelectableItemGroup.extend({\n  classNames: ['md-radios'],\n  selectableItemView: 'md-radios-radio'\n});\n"
  },
  {
    "path": "addon/components/md-range.js",
    "content": "import Component from '@ember/component';\nimport layout from '../templates/components/md-range';\n\nexport default Component.extend({\n  layout,\n  classNames: ['md-range'],\n  min: 0,\n  max: 100,\n  step: 1\n});\n"
  },
  {
    "path": "addon/components/md-select.js",
    "content": "import { A } from '@ember/array';\nimport { isNone } from '@ember/utils';\nimport { later } from '@ember/runloop';\nimport { get, observer, computed } from '@ember/object';\nimport MaterializeInputField from './md-input-field';\nimport layout from '../templates/components/md-select';\n\nexport default MaterializeInputField.extend({\n  layout,\n  classNames: ['md-select'],\n  optionLabelPath: 'content',\n  optionValuePath: 'content',\n\n  didRender() {\n    this._super(...arguments);\n    this._setupSelect();\n  },\n\n  willUpdate() {\n    this._teardownSelect();\n  },\n\n  willDestroyElement() {\n    this._teardownSelect();\n  },\n\n  _setupSelect() {\n    // jscs: disable\n    this.$('select').material_select();\n    // jscs: enable\n  },\n\n  _parsedContent: computed('optionValuePath', 'optionLabelPath', 'content.[]', function() {\n    const contentRegex = /(content\\.|^content$)/;\n    // keep backwards compatability for defining optionValuePath & as optionContentPath `content.{{attName}}`\n    const optionValuePath = (this.get('optionValuePath') || '').replace(contentRegex, '');\n    const optionLabelPath = (this.get('optionLabelPath') || '').replace(contentRegex, '');\n    return A(\n      (this.get('content') || []).map(option => {\n        return {\n          value: optionValuePath ? get(option, optionValuePath) : option,\n          label: optionLabelPath ? get(option, optionLabelPath) : option\n        };\n      })\n    );\n  }),\n\n  _teardownSelect() {\n    // jscs: disable\n    this.$('select').material_select('destroy');\n    // jscs: enable\n  },\n\n  actions: {\n    optionSelected(e) {\n      const target = e.target;\n      if (!this.get('isDisabled')) {\n        if (this.get('action')) {\n          this.sendAction('action', target.value);\n        }\n        else {\n          this.set('value', target.value)\n        }\n      }\n    }\n  },\n\n  // TODO: this could be converted to a computed property, returning a string\n  //  that is bound to the class attribute of the inputSelector\n  errorsDidChange: observer('errors', function() {\n    const inputSelector = this.$('input');\n    // monitor the select's validity and copy the appropriate validation class to the materialize input element.\n    if (!isNone(inputSelector)) {\n      later(\n        this,\n        function() {\n          const isValid = this.$('select').hasClass('valid');\n          if (isValid) {\n            inputSelector.removeClass('invalid');\n            inputSelector.addClass('valid');\n          } else {\n            inputSelector.removeClass('valid');\n            inputSelector.addClass('invalid');\n          }\n        },\n        150\n      );\n    }\n  })\n});\n"
  },
  {
    "path": "addon/components/md-switch.js",
    "content": "import { computed } from '@ember/object';\nimport SelectableItem from './selectable-item';\nimport layout from '../templates/components/md-switch';\n\nexport default SelectableItem.extend({\n  layout,\n\n  classNames: ['switch', 'materialize-switch'],\n\n  offLabel: 'Off',\n  onLabel: 'On',\n  disabled: false,\n\n  _labelClass: computed('name', function() {\n    return this.get('name') ? 'right' : '';\n  })\n});\n"
  },
  {
    "path": "addon/components/md-switches-switch.js",
    "content": "import GroupSelectableItemMixin from '../mixins/group-selectable-item';\nimport SwitchComponent from './md-switch';\n\nexport default SwitchComponent.extend(GroupSelectableItemMixin, {});\n"
  },
  {
    "path": "addon/components/md-switches.js",
    "content": "import SelectableItemGroup from './selectable-item-group';\n\nexport default SelectableItemGroup.extend({\n  selectableItemView: 'md-switches-switch',\n  multiple: true\n});\n"
  },
  {
    "path": "addon/components/md-tab.js",
    "content": "import Component from '@ember/component';\nimport { computed } from '@ember/object';\nimport { oneWay } from '@ember/object/computed';\nimport ChildComponentSupport from 'ember-composability/mixins/child-component-support';\nimport MdTabs from './md-tabs';\nimport layout from '../templates/components/md-tab';\n\nexport default Component.extend(ChildComponentSupport, {\n  _parentComponentTypes: [MdTabs],\n  tagName: 'li',\n  layout,\n\n  classNames: ['materialize-tabs-tab', 'tab', 'col'],\n  classNameBindings: ['_colClass'],\n\n  colWidth: oneWay('composableParent.colWidth'),\n\n  _colClass: computed('colWidth', function() {\n    return `s${this.get('colWidth')}`;\n  }),\n\n  active: computed('composableParent.composableChildren.[]', 'composableParent.selected', 'value', function() {\n    const selected = this.get('composableParent.selected');\n    if (selected) {\n      return selected === this.get('value');\n    } else {\n      const values = this.get('composableParent')\n        .tabComponents()\n        .map(t => t.get('value'));\n      return values.indexOf(this.get('value')) === 0;\n    }\n  }).readOnly(),\n\n  click() {\n    this.get('composableParent').set('selected', this.get('value'));\n  }\n});\n"
  },
  {
    "path": "addon/components/md-table-col.js",
    "content": "import Component from '@ember/component';\nimport { get, computed } from '@ember/object';\nimport { alias } from '@ember/object/computed';\nimport layout from '../templates/components/md-table-col';\nimport Table from './md-table';\nimport ChildComponentSupport from 'ember-composability/mixins/child-component-support';\n\nexport default Component.extend(ChildComponentSupport, {\n  // eslint-disable-next-line\n  _parentComponentTypes: [Table],\n  tagName: 'td',\n  layout,\n  valueBindingPath: null,\n  headerComponentName: 'md-default-column-header',\n  header: alias('valueBindingPath'),\n  key: alias('valueBindingPath'),\n  _value: computed('valueBindingPath', 'row', function() {\n    let vbp = this.get('valueBindingPath');\n    if (!vbp) {\n      return '';\n    } else {\n      return get(this.get('row'), this.get('valueBindingPath'));\n    }\n  })\n});\n"
  },
  {
    "path": "addon/components/md-table.js",
    "content": "import { A } from '@ember/array';\nimport Component from '@ember/component';\nimport { computed } from '@ember/object';\nimport ParentComponentSupport from 'ember-composability/mixins/parent-component-support';\nimport layout from '../templates/components/md-table';\n\nexport default Component.extend(ParentComponentSupport, {\n  tagName: 'table',\n  layout,\n  columns: null,\n  composableChildrenDebounceTime: 1,\n  init() {\n    this._super(...arguments);\n    this.set('columns', []);\n  },\n\n  columnComponents: computed('composableChildren', function() {\n    return new A(this.get('composableChildren'));\n  }).readOnly(),\n\n  registerChildComponent(childComponent) {\n    this.get('_childComponents').add(childComponent, childComponent.get('key'));\n    this._notifyComposableChildrenChanged();\n  },\n\n  unregisterChildComponent(childComponent) {\n    this.get('_childComponents').delete(childComponent, childComponent.get('key'));\n    this._notifyComposableChildrenChanged();\n  }\n});\n"
  },
  {
    "path": "addon/components/md-tabs.js",
    "content": "import Component from '@ember/component';\nimport { alias } from '@ember/object/computed';\nimport { debounce } from '@ember/runloop';\nimport { A } from '@ember/array';\nimport { observer, computed, get } from '@ember/object';\nimport ParentComponentSupport from 'ember-composability/mixins/parent-component-support';\nimport layout from '../templates/components/md-tabs';\n\nexport default Component.extend(ParentComponentSupport, {\n  layout,\n  classNames: ['materialize-tabs', 'row'],\n  composableChildrenDebounceTime: 1,\n  content: null,\n  numTabs: alias('composableChildren.length'),\n  optionValuePath: 'id',\n  optionLabelPath: 'title',\n  colWidth: 2,\n\n  selected: null,\n\n  didInsertElement() {\n    this._super(...arguments);\n    this._updateIndicatorPosition(false);\n  },\n\n  _indicatorUpdater: observer('selected', 'content.[]', 'composableChildren.[]', function() {\n    debounce(this, this._updateIndicatorPosition, 100);\n  }),\n\n  tabComponents() {\n    return A(this.get('composableChildren')) || A();\n  },\n\n  _updateIndicatorPosition(animate = true) {\n    if (!this.element) {\n      return;\n    }\n    const [tabComponent] = (this.get('composableChildren') || []).filter(\n      item => get(item, 'value') === this.get('selected')\n    );\n    const tabSetRect = this.element.getBoundingClientRect();\n    if (tabComponent) {\n      const tabRect = tabComponent.element.getBoundingClientRect();\n\n      const cssParams = {\n        left: tabRect.left - tabSetRect.left,\n        right: tabSetRect.right - tabRect.right\n      };\n\n      if (!animate) {\n        this.$('.indicator').css(cssParams);\n      } else {\n        this.$('.indicator1').velocity(cssParams, {\n          duration: 150\n        });\n        this.$('.indicator2').velocity(cssParams, {\n          duration: 150,\n          delay: 40\n        });\n      }\n    }\n  },\n\n  _content: computed('content.[]', 'optionLabelPath', 'optionValuePath', function() {\n    const labelPath = this.get('optionLabelPath');\n    const valuePath = this.get('optionValuePath');\n    return new A(\n      (this.get('content') || []).map(contentItem => ({\n        id: contentItem[valuePath],\n        title: contentItem[labelPath]\n      }))\n    );\n  })\n});\n"
  },
  {
    "path": "addon/components/md-textarea.js",
    "content": "import InputField from './md-input-field';\nimport layout from '../templates/components/md-textarea';\n\nexport default InputField.extend({\n  layout,\n\n  didInsertElement() {\n    this._super(...arguments);\n    // make sure the label moves when a value is bound.\n    this._setupLabel();\n  }\n});\n"
  },
  {
    "path": "addon/components/selectable-item-group.js",
    "content": "import Component from '@ember/component';\nimport { A } from '@ember/array';\nimport { computed, get } from '@ember/object';\nimport ParentComponentSupport from 'ember-composability/mixins/parent-component-support';\nimport layout from '../templates/components/selectable-item-group';\n\nexport default Component.extend(ParentComponentSupport, {\n  layout,\n\n  content: null,\n  selection: null,\n\n  optionValuePath: 'content',\n  optionLabelPath: 'content',\n  multiple: false,\n  __materializeSelectableItemGroup: true,\n\n  init() {\n    this._super(...arguments);\n    if (this.get('selection') === null && !!this.get('multiple')) {\n      this.set('selection', new A([]));\n    }\n  },\n\n  isValueSelected(value) {\n    if (this.get('multiple')) {\n      return this.get('selection').indexOf(value) >= 0;\n    } else {\n      return this.get('selection') === value;\n    }\n  },\n\n  setValueSelection(value, select) {\n    if (select) {\n      return this.addToSelection(value);\n    } else {\n      return this.removeFromSelection(value);\n    }\n  },\n\n  addToSelection(value) {\n    if (this.get('multiple')) {\n      this.get('selection').addObject(value);\n    } else {\n      this.set('selection', value);\n    }\n  },\n\n  removeFromSelection(value) {\n    if (this.get('multiple')) {\n      this.get('selection').removeObject(value);\n    } else {\n      if (this.get('selection') === value) {\n        this.set('selection', null);\n      }\n    }\n  },\n  disabled: false,\n\n  _valuePath: computed('optionValuePath', function() {\n    const optionValuePath = get(this, 'optionValuePath');\n    return optionValuePath.replace(/^content\\.?/, '');\n  }),\n\n  _labelPath: computed('optionLabelPath', function() {\n    const optionLabelPath = get(this, 'optionLabelPath');\n    return optionLabelPath.replace(/^content\\.?/, '');\n  }),\n\n  _content: computed('content.[]', '_valuePath', '_labelPath', function() {\n    const valuePath = get(this, '_valuePath');\n    const labelPath = get(this, '_labelPath');\n    const content = get(this, 'content') || new A([]);\n\n    if (valuePath && labelPath) {\n      return A(\n        content.map(el => {\n          return { value: get(el, valuePath), label: get(el, labelPath) };\n        })\n      );\n    } else {\n      return A(\n        content.map(el => {\n          return { value: el, label: el };\n        })\n      );\n    }\n  })\n});\n"
  },
  {
    "path": "addon/components/selectable-item.js",
    "content": "import { computed } from '@ember/object';\nimport { alias } from '@ember/object/computed';\nimport Component from '@ember/component';\nimport ChildComponentSupport from 'ember-composability/mixins/child-component-support';\nimport SelectableItemGroup from './selectable-item-group';\n\nexport default Component.extend(ChildComponentSupport, {\n  // eslint-disable-next-line\n  _parentComponentTypes: [SelectableItemGroup],\n  checked: null,\n  disabled: false,\n  classNames: ['materialize-selectable-item'],\n\n  _checked: computed('checked', 'group.selection', 'group.selection.[]', {\n    get() {\n      let group = this.get('group');\n      if (!group) {\n        return this.get('checked');\n      } else {\n        return group.isValueSelected(this.get('value'));\n      }\n    },\n    set(key, val) {\n      let group = this.get('group');\n      if (!group) {\n        this.set('checked', val);\n      } else {\n        group.setValueSelection(this.get('value'), val);\n      }\n      this.sendAction('action', { checked: !!val });\n      return !!val;\n    }\n  }),\n\n  isSelected: alias('_checked'),\n\n  _setupLabel() {\n    let [$input] = this.$(\n      '.materialize-selectable-item-input, .materialize-selectable-item-input-container input'\n    ).toArray();\n\n    let inputId = $input ? $input.id : null;\n    this.$('.materialize-selectable-item-label').attr('for', inputId);\n  },\n\n  didInsertElement() {\n    this._super(...arguments);\n    this._setupLabel();\n  },\n\n  group: computed(function() {\n    return this.nearestWithProperty('__materializeSelectableItemGroup');\n  })\n});\n"
  },
  {
    "path": "addon/helpers/bw-compat-icon.js",
    "content": "import Helper from '@ember/component/helper';\nimport { htmlSafe } from '@ember/string';\nimport { A } from '@ember/array';\n\nexport function isOldIcon(str) {\n  return (\n    str.split(' ').filter(c => {\n      return c.indexOf('mdi-') === 0;\n    }).length > 0\n  );\n}\n\nexport function bwCompatIcon(params, hash) {\n  let [iconStr] = params;\n  let extraClassesString = (hash || {}).extraClasses || null;\n  let extraClasses = extraClassesString ? extraClassesString.split(' ') : [];\n  if (isOldIcon(iconStr)) {\n    return htmlSafe(\n      `<i class='${A([iconStr].concat(extraClasses))\n        .compact()\n        .join(' ')}'></i>`\n    );\n  } else {\n    let classes = iconStr.split(' ');\n    let icon = classes.shift();\n    let classString = A(['material-icons'].concat(classes).concat(extraClasses))\n      .compact()\n      .join(' ');\n    return htmlSafe(`<i class='${classString}'>${icon}</i>`);\n  }\n}\n\nexport default Helper.helper(bwCompatIcon);\n"
  },
  {
    "path": "addon/mixins/group-selectable-item.js",
    "content": "import Mixin from '@ember/object/mixin';\nimport { alias } from '@ember/object/computed';\n\nexport default Mixin.create({\n  name: alias('content.label'),\n  value: alias('content.value'),\n  disabled: false\n});\n"
  },
  {
    "path": "addon/mixins/uses-settings.js",
    "content": "import { getOwner } from '@ember/application';\nimport { computed } from '@ember/object';\nimport Mixin from '@ember/object/mixin';\n\nexport default Mixin.create({\n  _mdSettings: computed(function() {\n    // jscs:disable disallowDirectPropertyAccess\n    let owner = getOwner ? getOwner(this) : this.get('container');\n    // jscs:enable disallowDirectPropertyAccess\n    return owner.lookup('service:materialize-settings');\n  })\n});\n"
  },
  {
    "path": "addon/services/md-settings.js",
    "content": "import { keys as emberKeys } from '@ember/polyfills';\nimport { set, getWithDefault } from '@ember/object';\nimport { oneWay } from '@ember/object/computed';\nimport Service from '@ember/service';\nimport { classify } from '@ember/string';\n// jscs:disable disallowDirectPropertyAccess\nconst keys = Object.keys || emberKeys;\n// jscs:enable disallowDirectPropertyAccess\n\nexport default Service.extend({\n  // Footer\n  modalIsFooterFixed: oneWay('defaultModalIsFooterFixed'),\n  // Button\n  buttonIconPosition: oneWay('defaultButtonIconPosition'),\n  // Loader\n  loaderSize: oneWay('defaultLoaderSize'),\n  loaderMode: oneWay('defaultLoaderMode'),\n  // Modal\n  modalContainerId: oneWay('defaultModalContainerId'),\n\n  // Animation (Dropdown Button)\n  dropdownInDuration: oneWay('defaultDropdownInDuration'),\n  dropdownOutDuration: oneWay('defaultDropdownOutDuration'),\n\n  init() {\n    this._super(...arguments);\n    this._setDefaults();\n  },\n\n  _setDefaults() {\n    const defaults = getWithDefault(this, 'materializeDefaults', {});\n    keys(defaults).map(key => {\n      const classifiedKey = classify(key);\n      const defaultKey = `default${classifiedKey}`;\n      return set(this, defaultKey, defaults[key]);\n    });\n  }\n});\n"
  },
  {
    "path": "addon/templates/components/md-badge.hbs",
    "content": "{{text}}{{yield}}\n"
  },
  {
    "path": "addon/templates/components/md-btn-dropdown.hbs",
    "content": "{{#if icon}}\n  {{bw-compat-icon icon extraClasses=iconPosition}}\n{{/if}}\n{{text}}\n<ul id=\"{{_dropdownContentId}}\" class=\"dropdown-content\">\n  {{yield}}\n</ul>\n"
  },
  {
    "path": "addon/templates/components/md-btn.hbs",
    "content": "{{#if icon}}\n  {{bw-compat-icon icon extraClasses=iconPosition}}\n{{/if}}\n{{text}}\n{{yield}}\n"
  },
  {
    "path": "addon/templates/components/md-card-collapsible.hbs",
    "content": "{{yield}}\n"
  },
  {
    "path": "addon/templates/components/md-card-content.hbs",
    "content": "{{#if title}}\n  <span class=\"card-title {{if activator 'activator'}} {{cardTitleClass}}\">\n    {{title}}\n\n    {{#if activator}}\n      <i class=\"material-icons right\">more_vert</i>\n    {{/if}}\n  </span>\n{{/if}}\n\n<p>{{yield}}</p>\n"
  },
  {
    "path": "addon/templates/components/md-card-panel.hbs",
    "content": "<span class=\"{{bodyClass}}\">\n  {{yield}}\n</span>\n"
  },
  {
    "path": "addon/templates/components/md-card-reveal.hbs",
    "content": "<span class=\"card-title grey-text text-darken-4 {{if activator 'activator'}}\">\n  {{title}} <i class=\"material-icons right\">close</i>\n</span>\n<p>{{yield}}</p>\n"
  },
  {
    "path": "addon/templates/components/md-card.hbs",
    "content": "{{#if image}}\n  <div class=\"card-image {{if activator 'waves-effect'}} {{if activator 'waves-block'}} {{if activator 'waves-light'}}\">\n    <img src=\"{{image}}\" class=\"{{if activator 'activator'}}\"/>\n  </div>\n{{/if}}\n\n{{yield}}\n"
  },
  {
    "path": "addon/templates/components/md-checkbox.hbs",
    "content": "{{input type=\"checkbox\" class=\"materialize-selectable-item-input\" checked=isSelected disabled=disabled}}\n<label class=\"materialize-selectable-item-label\">{{name}}{{yield}}</label>\n"
  },
  {
    "path": "addon/templates/components/md-checks-check.hbs",
    "content": "{{yield}}\n"
  },
  {
    "path": "addon/templates/components/md-collapsible.hbs",
    "content": "<div class=\"collapsible-header {{if active 'active'}}\" onClick={{action \"headerClicked\"}}>\n  {{#if icon}}\n    {{bw-compat-icon icon}}\n  {{/if}}\n\n  {{title}}\n</div>\n\n<div class=\"collapsible-body\">\n    <p>{{yield}}</p>\n</div>\n"
  },
  {
    "path": "addon/templates/components/md-collection.hbs",
    "content": "{{#if _hasHeader}}\n  {{component headerComponentName header=header}}\n{{/if}}\n{{#each content as |item idx|}}\n  {{yield item idx}}\n{{/each}}\n"
  },
  {
    "path": "addon/templates/components/md-copyright.hbs",
    "content": "<div class=\"container\">&copy; {{date}} {{text}} {{yield}}</div>\n"
  },
  {
    "path": "addon/templates/components/md-default-collection-header.hbs",
    "content": "<h4>{{header}}</h4>"
  },
  {
    "path": "addon/templates/components/md-default-column-header.hbs",
    "content": "{{column.header}}"
  },
  {
    "path": "addon/templates/components/md-fixed-btn.hbs",
    "content": "{{#md-btn\n  icon=btnIcon\n  class=_btnClassString\n  action='fireButtonAction'}}\n\n  {{yield}}\n\n{{/md-btn}}"
  },
  {
    "path": "addon/templates/components/md-fixed-btns.hbs",
    "content": "{{md-btn\n  icon=btnIcon\n  class=_btnClassString\n  action='fireButtonAction'}}\n\n<ul>\n  {{yield}}\n</ul>"
  },
  {
    "path": "addon/templates/components/md-input-date.hbs",
    "content": "{{#if icon}}\n  {{bw-compat-icon icon extraClasses=\"prefix\"}}\n{{/if}}\n\n<input type=\"date\"\n  id=\"{{id}}\"\n  class=\"{{if validate 'validate'}} {{if errors 'invalid' 'valid'}} datepicker\"\n  data-value=\"{{value}}\"\n  required={{required}}\n  readonly={{readonly}}\n  disabled={{disabled}} />\n\n<label for=\"{{id}}\" data-error={{_errorString}}>{{label}}</label>"
  },
  {
    "path": "addon/templates/components/md-input.hbs",
    "content": "{{#if icon}}\n  {{bw-compat-icon icon extraClasses=\"prefix\"}}\n{{/if}}\n\n{{input id=id\n  value=value\n  classNameBindings=\"validate:validate: isValid:valid: isInvalid:invalid:\"\n  type=type\n  required=required\n  pattern=pattern\n  maxlength=maxlength\n  readonly=readonly\n  disabled=disabled\n  autocomplete=autocomplete\n  autofocus=autofocus\n  focusIn=(action 'inputFocusIn')\n  step=step\n  min=min\n  max=max}}\n<label for=\"{{id}}\" data-error={{_errorString}}>{{label}}</label>\n"
  },
  {
    "path": "addon/templates/components/md-loader.hbs",
    "content": "{{#if isBarType}}\n  <div class=\"{{barClassName}}\" style={{barStyle}}></div>\n{{/if}}\n\n{{#each spinnerClassNames as |spinnerClassName|}}\n  <div class=\"{{spinnerClassName}}\">\n    <div class=\"circle-clipper left\">\n      <div class=\"circle\"></div>\n    </div><div class=\"gap-patch\">\n      <div class=\"circle\"></div>\n    </div><div class=\"circle-clipper right\">\n      <div class=\"circle\"></div>\n    </div>\n  </div>\n{{/each}}\n"
  },
  {
    "path": "addon/templates/components/md-modal-container.hbs",
    "content": "<div id=\"{{modalContainerId}}\"></div>\n"
  },
  {
    "path": "addon/templates/components/md-modal.hbs",
    "content": "{{#modal-dialog\n  alignment=alignment\n  alignmentTarget=alignmentTarget\n  translucentOverlay=true\n  overlayClassNames='lean-modal'\n  clickOutsideToClose=true\n  onClose='closeModal'}}\n  <div class=\"{{_modalClassString}}\" style=\"display: block; opacity: 1; top: 10%;\">\n    {{yield}}\n  </div>\n{{/modal-dialog}}"
  },
  {
    "path": "addon/templates/components/md-navbar.hbs",
    "content": "<div class='nav-wrapper'>\n  <div class='container'>\n    {{#link-to homeRoute class='brand-logo'}}{{name}}{{/link-to}}\n    <ul class='right hide-on-med-and-down'>\n      {{yield}}\n    </ul>\n  </div>\n\n  <a class='button-collapse' data-activates=\"{{_sideNavId}}\">\n    <i class='material-icons'>menu</i>\n  </a>\n</div>\n\n<ul id=\"{{_sideNavId}}\" class='side-nav'>\n  {{yield}}\n</ul>\n"
  },
  {
    "path": "addon/templates/components/md-pagination.hbs",
    "content": "<li class=\"{{decrementClass}}\">\n  <a {{action 'oneBack'}}  class='decrement'>\n    <i class=\"material-icons\">chevron_left</i>\n  </a>\n</li>\n\n{{#each _pages as |page|}}\n  <li class=\"{{page.cssClass}}\">\n    <a {{action 'gotoPage' page.val}}>\n      {{page.val}}\n    </a>\n  </li>\n{{/each}}\n\n<li class=\"{{incrementClass}}\">\n  <a {{action 'oneFwd'}}  class='increment'>\n    <i class=\"material-icons\">chevron_right</i>\n  </a>\n</li>\n"
  },
  {
    "path": "addon/templates/components/md-parallax.hbs",
    "content": "<div class=\"parallax\">\n  <img src=\"{{image}}\"/>\n</div>\n"
  },
  {
    "path": "addon/templates/components/md-radio.hbs",
    "content": "{{radio-button\n  disabled=disabled\n  value=value\n  groupValue=groupValue\n  radioClass=\"materialize-selectable-item-input\"}}\n<label class=\"materialize-selectable-item-label materialize-selectable-item-label\" >\n  {{name}}{{yield}}\n</label>\n\n"
  },
  {
    "path": "addon/templates/components/md-radios-radio.hbs",
    "content": "{{yield}}\n"
  },
  {
    "path": "addon/templates/components/md-range.hbs",
    "content": "<label>{{name}}</label>\n<p class=\"range-field\">\n{{input type=\"range\" min=min max=max step=step value=value disabled=disabled}}\n</p>"
  },
  {
    "path": "addon/templates/components/md-select.hbs",
    "content": "<label id=\"{{id}}\" class=\"active\">{{label}}</label>\n\n<select onchange={{action 'optionSelected'}}\n        class=\"{{if validate 'validate'}} {{if errors 'invalid' 'valid'}}\"\n        disabled={{if disabled \"true\"}}>\n  {{#if prompt}}\n    <option value=\"\" disabled selected={{unless value \"true\"}}>{{prompt}}</option>\n  {{/if}}\n  {{#each _parsedContent as |opt|}}\n    <option value={{opt.value}} selected={{if (eq value opt.value) \"true\"}}>{{opt.label}}</option>\n  {{/each}}\n</select>\n\n<small class=\"red-text\">\n  {{#if errors}}\n    {{errors.firstObject}}\n  {{else}}\n    &nbsp;\n  {{/if}}\n</small>\n"
  },
  {
    "path": "addon/templates/components/md-switch.hbs",
    "content": "<span class=\"switch-label materialize-selectable-item-label\">{{name}}</span>\n\n<label class=\"{{_labelClass}}\">\n  <span class=\"offlabel\">{{offLabel}}</span>\n  {{input type=\"checkbox\" disabled=disabled checked=isSelected}}\n  <span class=\"lever\"></span>\n  <span class=\"onlabel\">{{onLabel}}</span>\n</label>\n"
  },
  {
    "path": "addon/templates/components/md-switches-switch.hbs",
    "content": "{{yield}}\n"
  },
  {
    "path": "addon/templates/components/md-tab.hbs",
    "content": "<a class=\"{{if active 'active'}}\">\n  {{title}}\n</a>\n"
  },
  {
    "path": "addon/templates/components/md-table-col.hbs",
    "content": "{{_value}}\n{{yield}}\n"
  },
  {
    "path": "addon/templates/components/md-table.hbs",
    "content": "<thead>\n  <tr>\n    {{#each columnComponents as |column|}}\n      {{component column.headerComponentName column=column}}\n    {{/each}}\n  </tr>\n</thead>\n<tbody>\n  {{#each content as |row|}}\n    <tr>\n      {{yield row}}\n    </tr>\n  {{/each}}\n</tbody>"
  },
  {
    "path": "addon/templates/components/md-tabs.hbs",
    "content": "<div class=\"col s12\">\n  <ul class=\"tabs\">\n    {{#each _content as |tab|}}\n      {{md-tab title=tab.title value=tab.id}}\n    {{/each}}\n    {{yield}}\n    <div class=\"indicator indicator1\"></div>\n    <div class=\"indicator indicator2\"></div>\n  </ul>\n</div>\n"
  },
  {
    "path": "addon/templates/components/md-textarea.hbs",
    "content": "{{#if icon}}\n  {{bw-compat-icon icon extraClasses=\"prefix\"}}\n{{/if}}\n\n{{textarea id=id value=value name=name required=required readonly=readonly disabled=disabled maxlength=maxlength class=\"materialize-textarea\"}}\n<label for=\"{{id}}\" data-error={{_errorString}}>{{label}}</label>\n"
  },
  {
    "path": "addon/templates/components/selectable-item-group.hbs",
    "content": "{{yield}}\n{{#each _content as |item|}}\n  <p>{{component selectableItemView content=item disabled=disabled groupId=\"group-{{elementId}}\"}}</p>\n{{/each}}\n"
  },
  {
    "path": "app/.gitkeep",
    "content": ""
  },
  {
    "path": "app/components/materialize-badge.js",
    "content": "import { deprecate } from '@ember/application/deprecations';\nimport MaterializeBadge from './md-badge';\n\nexport default MaterializeBadge.extend({\n  init() {\n    this._super(...arguments);\n    deprecate('{{materialize-badge}} has been deprecated. Please use {{md-badge}} instead', false, {\n      url: 'https://github.com/sgasser/ember-cli-materialize/issues/67'\n    });\n  }\n});\n"
  },
  {
    "path": "app/components/materialize-button-submit.js",
    "content": "import { deprecate } from '@ember/application/deprecations';\nimport MaterializeButtonSubmit from './md-btn-submit';\n\nexport default MaterializeButtonSubmit.extend({\n  init() {\n    this._super(...arguments);\n    deprecate('{{materialize-button-submit}} has been deprecated. Please use {{md-btn-submit}} instead', false, {\n      url: 'https://github.com/sgasser/ember-cli-materialize/issues/67'\n    });\n  }\n});\n"
  },
  {
    "path": "app/components/materialize-button.js",
    "content": "import { deprecate } from '@ember/application/deprecations';\nimport MaterializeButton from './md-btn';\n\nexport default MaterializeButton.extend({\n  init() {\n    this._super(...arguments);\n    deprecate('{{materialize-button}} has been deprecated. Please use {{md-btn}} instead', false, {\n      url: 'https://github.com/sgasser/ember-cli-materialize/issues/67'\n    });\n  }\n});\n"
  },
  {
    "path": "app/components/materialize-card-action.js",
    "content": "import { deprecate } from '@ember/application/deprecations';\nimport MaterializeCardAction from './md-card-action';\n\nexport default MaterializeCardAction.extend({\n  init() {\n    this._super(...arguments);\n    deprecate('{{materialize-card-action}} has been deprecated. Please use {{md-card-action}} instead', false, {\n      url: 'https://github.com/sgasser/ember-cli-materialize/issues/67'\n    });\n  }\n});\n"
  },
  {
    "path": "app/components/materialize-card-content.js",
    "content": "import { deprecate } from '@ember/application/deprecations';\nimport MaterializeCardContent from './md-card-content';\n\nexport default MaterializeCardContent.extend({\n  init() {\n    this._super(...arguments);\n    deprecate('{{materialize-card-content}} has been deprecated. Please use {{md-card-content}} instead', false, {\n      url: 'https://github.com/sgasser/ember-cli-materialize/issues/67'\n    });\n  }\n});\n"
  },
  {
    "path": "app/components/materialize-card-panel.js",
    "content": "import { deprecate } from '@ember/application/deprecations';\nimport MaterializeCardPanel from './md-card-panel';\n\nexport default MaterializeCardPanel.extend({\n  init() {\n    this._super(...arguments);\n    deprecate('{{materialize-card-panel}} has been deprecated. Please use {{md-card-panel}} instead', false, {\n      url: 'https://github.com/sgasser/ember-cli-materialize/issues/67'\n    });\n  }\n});\n"
  },
  {
    "path": "app/components/materialize-card-reveal.js",
    "content": "import { deprecate } from '@ember/application/deprecations';\nimport MaterializeCardReveal from './md-card-reveal';\n\nexport default MaterializeCardReveal.extend({\n  init() {\n    this._super(...arguments);\n    deprecate('{{materialize-card-reveal}} has been deprecated. Please use {{md-card-reveal}} instead', false, {\n      url: 'https://github.com/sgasser/ember-cli-materialize/issues/67'\n    });\n  }\n});\n"
  },
  {
    "path": "app/components/materialize-card.js",
    "content": "import { deprecate } from '@ember/application/deprecations';\nimport MaterializeCard from './md-card';\n\nexport default MaterializeCard.extend({\n  init() {\n    this._super(...arguments);\n    deprecate('{{materialize-card}} has been deprecated. Please use {{md-card}} instead', false, {\n      url: 'https://github.com/sgasser/ember-cli-materialize/issues/67'\n    });\n  }\n});\n"
  },
  {
    "path": "app/components/materialize-checkbox.js",
    "content": "import { deprecate } from '@ember/application/deprecations';\nimport materializeCheckbox from './md-check';\n\nexport default materializeCheckbox.extend({\n  init() {\n    this._super(...arguments);\n    deprecate('{{materialize-checkbox}} has been deprecated. Please use {{md-check}} instead', false, {\n      url: 'https://github.com/sgasser/ember-cli-materialize/issues/67'\n    });\n  }\n});\n"
  },
  {
    "path": "app/components/materialize-checkboxes.js",
    "content": "import { deprecate } from '@ember/application/deprecations';\nimport materializeCheckboxes from './md-checks';\n\nexport default materializeCheckboxes.extend({\n  init() {\n    this._super(...arguments);\n    deprecate('{{materialize-checkboxes}} has been deprecated. Please use {{md-checks}} instead', false, {\n      url: 'https://github.com/sgasser/ember-cli-materialize/issues/67'\n    });\n  }\n});\n"
  },
  {
    "path": "app/components/materialize-collapsible-card.js",
    "content": "import { deprecate } from '@ember/application/deprecations';\nimport MaterializeCollapsibleCard from './md-card-collapsible';\n\nexport default MaterializeCollapsibleCard.extend({\n  init() {\n    this._super(...arguments);\n    deprecate(\n      '{{materialize-collapsible-card}} has been deprecated. Please use {{md-card-collapsible}} instead',\n      false,\n      { url: 'https://github.com/sgasser/ember-cli-materialize/issues/67' }\n    );\n  }\n});\n"
  },
  {
    "path": "app/components/materialize-collapsible.js",
    "content": "import { deprecate } from '@ember/application/deprecations';\nimport MaterializeCollapsible from './md-collapsible';\n\nexport default MaterializeCollapsible.extend({\n  init() {\n    this._super(...arguments);\n    deprecate('{{materialize-collapsible}} has been deprecated. Please use {{md-collapsible}} instead', false, {\n      url: 'https://github.com/sgasser/ember-cli-materialize/issues/67'\n    });\n  }\n});\n"
  },
  {
    "path": "app/components/materialize-copyright.js",
    "content": "import { deprecate } from '@ember/application/deprecations';\nimport materializeCopyright from './md-copyright';\n\nexport default materializeCopyright.extend({\n  init() {\n    this._super(...arguments);\n    deprecate('{{materialize-copyright}} has been deprecated. Please use {{md-copyright}} instead', false, {\n      url: 'https://github.com/sgasser/ember-cli-materialize/issues/67'\n    });\n  }\n});\n"
  },
  {
    "path": "app/components/materialize-date-input.js",
    "content": "import { deprecate } from '@ember/application/deprecations';\nimport materializeDateInput from './md-input-date';\n\nexport default materializeDateInput.extend({\n  init() {\n    this._super(...arguments);\n    deprecate('{{materialize-date-input}} has been deprecated. Please use {{md-input-date}} instead', false, {\n      url: 'https://github.com/sgasser/ember-cli-materialize/issues/67'\n    });\n  }\n});\n"
  },
  {
    "path": "app/components/materialize-input-field.js",
    "content": "import { deprecate } from '@ember/application/deprecations';\nimport materializeInputField from './md-input-field';\n\nexport default materializeInputField.extend({\n  init() {\n    this._super(...arguments);\n    deprecate('{{materialize-input-field}} has been deprecated. Please use {{md-input-field}} instead', false, {\n      url: 'https://github.com/sgasser/ember-cli-materialize/issues/67'\n    });\n  }\n});\n"
  },
  {
    "path": "app/components/materialize-input.js",
    "content": "import { deprecate } from '@ember/application/deprecations';\nimport materializeInput from './md-input';\n\nexport default materializeInput.extend({\n  init() {\n    this._super(...arguments);\n    deprecate('{{materialize-input}} has been deprecated. Please use {{md-input}} instead', false, {\n      url: 'https://github.com/sgasser/ember-cli-materialize/issues/67'\n    });\n  }\n});\n"
  },
  {
    "path": "app/components/materialize-loader.js",
    "content": "import { deprecate } from '@ember/application/deprecations';\nimport materializeLoader from './md-loader';\n\nexport default materializeLoader.extend({\n  init() {\n    this._super(...arguments);\n    deprecate('{{materialize-loader}} has been deprecated. Please use {{md-loader}} instead', false, {\n      url: 'https://github.com/sgasser/ember-cli-materialize/issues/67'\n    });\n  }\n});\n"
  },
  {
    "path": "app/components/materialize-modal.js",
    "content": "import { deprecate } from '@ember/application/deprecations';\nimport MaterializeModal from './md-modal';\n\nexport default MaterializeModal.extend({\n  init() {\n    this._super(...arguments);\n    deprecate('{{materialize-modal}} has been deprecated. Please use {{md-modal}} instead', false, {\n      url: 'https://github.com/sgasser/ember-cli-materialize/issues/67'\n    });\n  }\n});\n"
  },
  {
    "path": "app/components/materialize-navbar.js",
    "content": "import { deprecate } from '@ember/application/deprecations';\nimport MaterializeNavBar from './md-navbar';\n\nexport default MaterializeNavBar.extend({\n  init() {\n    this._super(...arguments);\n    deprecate('{{materialize-navbar}} has been deprecated. Please use {{md-navbar}} instead', false, {\n      url: 'https://github.com/sgasser/ember-cli-materialize/issues/67'\n    });\n  }\n});\n"
  },
  {
    "path": "app/components/materialize-pagination.js",
    "content": "import { deprecate } from '@ember/application/deprecations';\nimport materializePagination from './md-pagination';\n\nexport default materializePagination.extend({\n  init() {\n    this._super(...arguments);\n    deprecate('{{materialize-pagination}} has been deprecated. Please use {{md-pagination}} instead', false, {\n      url: 'https://github.com/sgasser/ember-cli-materialize/issues/67'\n    });\n  }\n});\n"
  },
  {
    "path": "app/components/materialize-parallax.js",
    "content": "import { deprecate } from '@ember/application/deprecations';\nimport materializeParallax from './md-parallax';\n\nexport default materializeParallax.extend({\n  init() {\n    this._super(...arguments);\n    deprecate('{{materialize-parallax}} has been deprecated. Please use {{md-parallax}} instead', false, {\n      url: 'https://github.com/sgasser/ember-cli-materialize/issues/67'\n    });\n  }\n});\n"
  },
  {
    "path": "app/components/materialize-radio.js",
    "content": "import { deprecate } from '@ember/application/deprecations';\nimport materializeRadio from './md-radio';\n\nexport default materializeRadio.extend({\n  init() {\n    this._super(...arguments);\n    deprecate('{{materialize-radio}} has been deprecated. Please use {{md-radio}} instead', false, {\n      url: 'https://github.com/sgasser/ember-cli-materialize/issues/67'\n    });\n  }\n});\n"
  },
  {
    "path": "app/components/materialize-radios.js",
    "content": "import { deprecate } from '@ember/application/deprecations';\nimport materializeRadios from './md-radios';\n\nexport default materializeRadios.extend({\n  init() {\n    this._super(...arguments);\n    deprecate('{{materialize-radios}} has been deprecated. Please use {{md-radios}} instead', false, {\n      url: 'https://github.com/sgasser/ember-cli-materialize/issues/67'\n    });\n  }\n});\n"
  },
  {
    "path": "app/components/materialize-range.js",
    "content": "import { deprecate } from '@ember/application/deprecations';\nimport materializeRange from './md-range';\n\nexport default materializeRange.extend({\n  init() {\n    this._super(...arguments);\n    deprecate('{{materialize-range}} has been deprecated. Please use {{md-range}} instead', false, {\n      url: 'https://github.com/sgasser/ember-cli-materialize/issues/67'\n    });\n  }\n});\n"
  },
  {
    "path": "app/components/materialize-select.js",
    "content": "import { deprecate } from '@ember/application/deprecations';\nimport materializeSelect from './md-select';\n\nexport default materializeSelect.extend({\n  init() {\n    this._super(...arguments);\n    deprecate('{{materialize-select}} has been deprecated. Please use {{md-select}} instead', false, {\n      url: 'https://github.com/sgasser/ember-cli-materialize/issues/67'\n    });\n  }\n});\n"
  },
  {
    "path": "app/components/materialize-switch.js",
    "content": "import { deprecate } from '@ember/application/deprecations';\nimport materializeSwitch from './md-switch';\n\nexport default materializeSwitch.extend({\n  init() {\n    this._super(...arguments);\n    deprecate('{{materialize-switch}} has been deprecated. Please use {{md-switch}} instead', false, {\n      url: 'https://github.com/sgasser/ember-cli-materialize/issues/67'\n    });\n  }\n});\n"
  },
  {
    "path": "app/components/materialize-switches.js",
    "content": "import { deprecate } from '@ember/application/deprecations';\nimport materializeSwitches from './md-switches';\n\nexport default materializeSwitches.extend({\n  init() {\n    this._super(...arguments);\n    deprecate('{{materialize-switches}} has been deprecated. Please use {{md-switches}} instead', false, {\n      url: 'https://github.com/sgasser/ember-cli-materialize/issues/67'\n    });\n  }\n});\n"
  },
  {
    "path": "app/components/materialize-tabs-tab.js",
    "content": "import { deprecate } from '@ember/application/deprecations';\nimport materializeTabsTab from './md-tab';\n\nexport default materializeTabsTab.extend({\n  init() {\n    this._super(...arguments);\n    deprecate('{{materialize-tabs-tab}} has been deprecated. Please use {{md-tab}} instead', false, {\n      url: 'https://github.com/sgasser/ember-cli-materialize/issues/67'\n    });\n  }\n});\n"
  },
  {
    "path": "app/components/materialize-tabs.js",
    "content": "import { deprecate } from '@ember/application/deprecations';\nimport materializeTabs from './md-tabs';\n\nexport default materializeTabs.extend({\n  init() {\n    this._super(...arguments);\n    deprecate('{{materialize-tabs}} has been deprecated. Please use {{md-tabs}} instead', false, {\n      url: 'https://github.com/sgasser/ember-cli-materialize/issues/67'\n    });\n  }\n});\n"
  },
  {
    "path": "app/components/materialize-textarea.js",
    "content": "import { deprecate } from '@ember/application/deprecations';\nimport materializeTextarea from './md-textarea';\n\nexport default materializeTextarea.extend({\n  init() {\n    this._super(...arguments);\n    deprecate('{{materialize-textarea}} has been deprecated. Please use {{md-textarea}} instead', false, {\n      url: 'https://github.com/sgasser/ember-cli-materialize/issues/67'\n    });\n  }\n});\n"
  },
  {
    "path": "app/components/md-badge.js",
    "content": "import materializeBadge from 'ember-cli-materialize/components/md-badge';\n\nexport default materializeBadge;\n"
  },
  {
    "path": "app/components/md-btn-dropdown.js",
    "content": "import MaterializeButtonDropdown from 'ember-cli-materialize/components/md-btn-dropdown';\n\nexport default MaterializeButtonDropdown;\n"
  },
  {
    "path": "app/components/md-btn-submit.js",
    "content": "import MaterializeButtonSubmit from 'ember-cli-materialize/components/md-btn-submit';\n\nexport default MaterializeButtonSubmit;\n"
  },
  {
    "path": "app/components/md-btn.js",
    "content": "import MaterializeButton from 'ember-cli-materialize/components/md-btn';\n\nexport default MaterializeButton;\n"
  },
  {
    "path": "app/components/md-card-action.js",
    "content": "import MaterializeCardAction from 'ember-cli-materialize/components/md-card-action';\n\nexport default MaterializeCardAction;\n"
  },
  {
    "path": "app/components/md-card-collapsible.js",
    "content": "import MaterializeCollapsibleCard from 'ember-cli-materialize/components/md-card-collapsible';\n\nexport default MaterializeCollapsibleCard;\n"
  },
  {
    "path": "app/components/md-card-content.js",
    "content": "import MaterializeCardContent from 'ember-cli-materialize/components/md-card-content';\n\nexport default MaterializeCardContent;\n"
  },
  {
    "path": "app/components/md-card-panel.js",
    "content": "import MaterializeCardPanel from 'ember-cli-materialize/components/md-card-panel';\n\nexport default MaterializeCardPanel;\n"
  },
  {
    "path": "app/components/md-card-reveal.js",
    "content": "import MaterializeCardReveal from 'ember-cli-materialize/components/md-card-reveal';\n\nexport default MaterializeCardReveal;\n"
  },
  {
    "path": "app/components/md-card.js",
    "content": "import MaterializeCard from 'ember-cli-materialize/components/md-card';\n\nexport default MaterializeCard;\n"
  },
  {
    "path": "app/components/md-check.js",
    "content": "import materializeCheckbox from 'ember-cli-materialize/components/md-check';\n\nexport default materializeCheckbox;\n"
  },
  {
    "path": "app/components/md-checks-check.js",
    "content": "export { default } from 'ember-cli-materialize/components/md-checks-check';\n"
  },
  {
    "path": "app/components/md-checks.js",
    "content": "import materializeCheckboxes from 'ember-cli-materialize/components/md-checks';\n\nexport default materializeCheckboxes;\n"
  },
  {
    "path": "app/components/md-collapsible.js",
    "content": "import MaterializeCollapsible from 'ember-cli-materialize/components/md-collapsible';\n\nexport default MaterializeCollapsible;\n"
  },
  {
    "path": "app/components/md-collection.js",
    "content": "export { default } from 'ember-cli-materialize/components/md-collection';\n"
  },
  {
    "path": "app/components/md-copyright.js",
    "content": "import materializeCopyright from 'ember-cli-materialize/components/md-copyright';\n\nexport default materializeCopyright;\n"
  },
  {
    "path": "app/components/md-default-collection-header.js",
    "content": "export { default } from 'ember-cli-materialize/components/md-default-collection-header';\n"
  },
  {
    "path": "app/components/md-default-column-header.js",
    "content": "export { default } from 'ember-cli-materialize/components/md-default-column-header';\n"
  },
  {
    "path": "app/components/md-fixed-btn.js",
    "content": "export { default } from 'ember-cli-materialize/components/md-fixed-btn';\n"
  },
  {
    "path": "app/components/md-fixed-btns.js",
    "content": "export { default } from 'ember-cli-materialize/components/md-fixed-btns';\n"
  },
  {
    "path": "app/components/md-input-date.js",
    "content": "import materializeDateInput from 'ember-cli-materialize/components/md-input-date';\n\nexport default materializeDateInput;\n"
  },
  {
    "path": "app/components/md-input-field.js",
    "content": "import materializeInputField from 'ember-cli-materialize/components/md-input-field';\n\nexport default materializeInputField;\n"
  },
  {
    "path": "app/components/md-input.js",
    "content": "import materializeInput from 'ember-cli-materialize/components/md-input';\n\nexport default materializeInput;\n"
  },
  {
    "path": "app/components/md-loader.js",
    "content": "import materializeLoader from 'ember-cli-materialize/components/md-loader';\n\nexport default materializeLoader;\n"
  },
  {
    "path": "app/components/md-modal-container.js",
    "content": "import mdModalContainer from 'ember-cli-materialize/components/md-modal-container';\n\nexport default mdModalContainer;\n"
  },
  {
    "path": "app/components/md-modal.js",
    "content": "import materializeModal from 'ember-cli-materialize/components/md-modal';\n\nexport default materializeModal;\n"
  },
  {
    "path": "app/components/md-navbar.js",
    "content": "import MaterializeNavBar from 'ember-cli-materialize/components/md-navbar';\n\nexport default MaterializeNavBar;\n"
  },
  {
    "path": "app/components/md-pagination.js",
    "content": "import materializePagination from 'ember-cli-materialize/components/md-pagination';\n\nexport default materializePagination;\n"
  },
  {
    "path": "app/components/md-parallax.js",
    "content": "import materializeParallax from 'ember-cli-materialize/components/md-parallax';\n\nexport default materializeParallax;\n"
  },
  {
    "path": "app/components/md-radio.js",
    "content": "import materializeRadio from 'ember-cli-materialize/components/md-radio';\n\nexport default materializeRadio;\n"
  },
  {
    "path": "app/components/md-radios-radio.js",
    "content": "export { default } from 'ember-cli-materialize/components/md-radios-radio';\n"
  },
  {
    "path": "app/components/md-radios.js",
    "content": "import materializeRadios from 'ember-cli-materialize/components/md-radios';\n\nexport default materializeRadios;\n"
  },
  {
    "path": "app/components/md-range.js",
    "content": "import materializeRange from 'ember-cli-materialize/components/md-range';\n\nexport default materializeRange;\n"
  },
  {
    "path": "app/components/md-select.js",
    "content": "import materializeSelect from 'ember-cli-materialize/components/md-select';\n\nexport default materializeSelect;\n"
  },
  {
    "path": "app/components/md-switch.js",
    "content": "import materializeSwitch from 'ember-cli-materialize/components/md-switch';\n\nexport default materializeSwitch;\n"
  },
  {
    "path": "app/components/md-switches-switch.js",
    "content": "export { default } from 'ember-cli-materialize/components/md-switches-switch';\n"
  },
  {
    "path": "app/components/md-switches.js",
    "content": "import materializeSwitches from 'ember-cli-materialize/components/md-switches';\n\nexport default materializeSwitches;\n"
  },
  {
    "path": "app/components/md-tab.js",
    "content": "import materializeTabsTab from 'ember-cli-materialize/components/md-tab';\n\nexport default materializeTabsTab;\n"
  },
  {
    "path": "app/components/md-table-col.js",
    "content": "export { default } from 'ember-cli-materialize/components/md-table-col';\n"
  },
  {
    "path": "app/components/md-table.js",
    "content": "export { default } from 'ember-cli-materialize/components/md-table';\n"
  },
  {
    "path": "app/components/md-tabs.js",
    "content": "import materializeTabs from 'ember-cli-materialize/components/md-tabs';\n\nexport default materializeTabs;\n"
  },
  {
    "path": "app/components/md-textarea.js",
    "content": "import materializeTextarea from 'ember-cli-materialize/components/md-textarea';\n\nexport default materializeTextarea;\n"
  },
  {
    "path": "app/helpers/bw-compat-icon.js",
    "content": "export { default, bwCompatIcon } from 'ember-cli-materialize/helpers/bw-compat-icon';\n"
  },
  {
    "path": "app/initializers/add-modals-container.js",
    "content": "export function initialize() {\n  const application = arguments[1] || arguments[0];\n  var rootEl = document.querySelector(application.rootElement);\n  var modalContainerEl = document.createElement('div');\n  var emberModalDialog = application.emberModalDialog || {};\n  var modalContainerElId = emberModalDialog.modalRootElementId || 'modal-overlays';\n  modalContainerEl.id = modalContainerElId;\n  rootEl.appendChild(modalContainerEl);\n\n  application.register('config:modals-container-id', modalContainerElId, { instantiate: false });\n  application.inject('component:materialize-modal', 'destinationElementId', 'config:modals-container-id');\n}\n\nexport default {\n  name: 'add-modals-container',\n  initialize: initialize\n};\n"
  },
  {
    "path": "app/initializers/md-settings.js",
    "content": "import config from '../config/environment';\nimport MaterializeSettings from 'ember-cli-materialize/services/md-settings';\n\nexport function initialize() {\n  const { materializeDefaults } = config;\n  const application = arguments[1] || arguments[0];\n\n  if (window && window.validate_field) {\n    window.validate_field = function() {};\n  }\n\n  application.register('config:materialize', materializeDefaults, { instantiate: false });\n  application.register('service:materialize-settings', MaterializeSettings);\n  application.inject('service:materialize-settings', 'materializeDefaults', 'config:materialize');\n}\n\nexport default {\n  name: 'md-settings',\n  initialize: initialize\n};\n"
  },
  {
    "path": "app/services/md-settings.js",
    "content": "export { default } from 'ember-cli-materialize/services/md-settings';\n"
  },
  {
    "path": "app/styles/app.scss",
    "content": "// Fix for Roboto font path\n$roboto-font-path: '../assets/';\n\n// Materialize styles\n@import \"materialize\";\n"
  },
  {
    "path": "app/styles/ember-cli-materialize.scss",
    "content": ".ember-modal-overlay {\n  height: 100vh;\n  left: 0;\n  opacity: 0;\n  position: fixed;\n  right: 0;\n  top: 0;\n  z-index: 50;\n}\n.ember-modal-dialog {\n  z-index: 50;\n  position: fixed;\n\n  &.ember-modal-dialog-in-place {\n    position: relative;\n  }\n}\n\n.lean-modal {\n  background-color: rgba(0, 0, 0, 0.5);\n  opacity: 1.0;\n  z-index: 10001;\n}\n"
  },
  {
    "path": "app.json",
    "content": "{\n  \"name\": \"ember-cli-materialize\",\n  \"description\": \"Documentation for ember-cli-materialize\",\n  \"scripts\": {\n  },\n  \"env\": {\n  },\n  \"formation\": {\n    \"web\": {\n      \"quantity\": 1\n    }\n  },\n  \"addons\": [\n\n  ],\n  \"buildpacks\": [\n    {\n      \"url\": \"https://codon-buildpacks.s3.amazonaws.com/buildpacks/heroku/emberjs.tgz\"\n    }\n  ]\n}\n"
  },
  {
    "path": "blueprints/.jshintrc",
    "content": "{\n  \"predef\": [\n    \"console\"\n  ]\n}\n"
  },
  {
    "path": "blueprints/ember-cli-materialize/index.js",
    "content": "/* eslint-env node */\n\nmodule.exports = {\n  normalizeEntityName: function() {},\n\n  beforeInstall: function() {\n    return this.addAddonsToProject({\n      packages: [\n        { name: 'ember-composability', target: '~0.3.7' },\n        { name: 'ember-radio-button', target: '1.0.7' },\n        { name: 'ember-keyboard', target: '3.0.0' },\n        { name: 'ember-truth-helpers', target: '1.2.0' },\n        { name: 'ember-modal-dialog', target: '~0.8.0' },\n        { name: 'ember-materialize-shim', target: '~0.2.0' }\n      ]\n    });\n  }\n};\n"
  },
  {
    "path": "bower.json",
    "content": "{\n  \"name\": \"ember-cli-materialize\",\n  \"dependencies\": {\n    \"materialize\": \"~0.98.0\"\n  }\n}\n"
  },
  {
    "path": "config/ember-try.js",
    "content": "/* eslint-env node */\n'use strict';\n\nconst getChannelURL = require('ember-source-channel-url');\n\nfunction scenario(emberVersion) {\n  return {\n    name: 'ember-' + emberVersion,\n    bower: {\n      dependencies: {\n        ember: '~' + emberVersion + '.0'\n      },\n      resolutions: {\n        ember: '~' + emberVersion + '.0'\n      }\n    }\n  };\n}\n\nmodule.exports = function() {\n  return Promise.all([getChannelURL('release'), getChannelURL('beta'), getChannelURL('canary')]).then(urls => {\n    return {\n      useYarn: true,\n      scenarios: [\n        scenario('1.13'),\n        {\n          name: 'ember-lts-2.16',\n          env: {\n            EMBER_OPTIONAL_FEATURES: JSON.stringify({\n              'jquery-integration': true\n            })\n          },\n          npm: {\n            devDependencies: {\n              '@ember/jquery': '^0.5.1',\n              'ember-source': '~2.16.0'\n            }\n          }\n        },\n        {\n          name: 'ember-lts-2.18',\n          env: {\n            EMBER_OPTIONAL_FEATURES: JSON.stringify({\n              'jquery-integration': true\n            })\n          },\n          npm: {\n            devDependencies: {\n              '@ember/jquery': '^0.5.1',\n              'ember-source': '~2.18.0'\n            }\n          }\n        },\n        {\n          name: 'ember-release',\n          npm: {\n            devDependencies: {\n              'ember-source': urls[0]\n            }\n          }\n        },\n        {\n          name: 'ember-beta',\n          npm: {\n            devDependencies: {\n              'ember-source': urls[1]\n            }\n          }\n        },\n        {\n          name: 'ember-canary',\n          npm: {\n            devDependencies: {\n              'ember-source': urls[2]\n            }\n          }\n        },\n        {\n          name: 'ember-default',\n          npm: {\n            devDependencies: {}\n          }\n        },\n        {\n          name: 'ember-default-with-jquery',\n          env: {\n            EMBER_OPTIONAL_FEATURES: JSON.stringify({\n              'jquery-integration': true\n            })\n          },\n          npm: {\n            devDependencies: {\n              '@ember/jquery': '^0.5.1'\n            }\n          }\n        }\n      ]\n    };\n  });\n};\n"
  },
  {
    "path": "config/environment.js",
    "content": "'use strict';\n\nmodule.exports = function(/* environment, appConfig */) {\n  return {\n    materializeDefaults: {\n      modalIsFooterFixed: false,\n      modalContainerId: 'materialize-modal-root-element',\n      buttonIconPosition: 'left',\n      loaderSize: 'big',\n      loaderMode: 'indeterminate',\n      dropdownInDuration: 300,\n      dropdownOutDuration: 300\n    }\n  };\n};\n"
  },
  {
    "path": "config/release.js",
    "content": "/* jshint node:true */\n// var RSVP = require('rsvp');\n\n// For details on each option run `ember help release`\nmodule.exports = {\n  // local: true,\n  // remote: 'some_remote',\n  // annotation: \"Release %@\",\n  // message: \"Bumped version to %@\",\n  // manifest: [ 'package.json', 'bower.json', 'someconfig.json' ],\n  // publish: true,\n  // strategy: 'date',\n  // format: 'YYYY-MM-DD',\n  // timezone: 'America/Los_Angeles',\n  //\n  // beforeCommit: function(project, versions) {\n  //   return new RSVP.Promise(function(resolve, reject) {\n  //     // Do custom things here...\n  //   });\n  // }\n};\n"
  },
  {
    "path": "ember-cli-build.js",
    "content": "'use strict';\n\nconst EmberAddon = require('ember-cli/lib/broccoli/ember-addon');\n\nmodule.exports = function(defaults) {\n  let app = new EmberAddon(defaults, {\n    sassOptions: {\n      includePaths: ['bower_components/materialize/sass']\n    }\n  });\n\n  app.options.snippetPaths = ['tests/dummy/app/templates/snippets'];\n  app.options.snippetSearchPaths = ['tests/dummy', 'app', 'addon'];\n  /*\n    This build file specifes the options for the dummy test app of this\n    addon, located in `/tests/dummy`\n    This build file does *not* influence how the addon or the app using it\n    behave. You most likely want to be modifying `./index.js` or app's build file\n  */\n\n  app.import('vendor/highlight.pack.js', {\n    exports: ['highlight.js']\n  });\n  return app.toTree();\n};\n"
  },
  {
    "path": "index.js",
    "content": "'use strict';\n\nmodule.exports = {\n  name: 'ember-cli-materialize'\n};\n"
  },
  {
    "path": "jsconfig.json",
    "content": "{\"compilerOptions\":{\"target\":\"es6\",\"experimentalDecorators\":true},\"exclude\":[\"node_modules\",\"bower_components\",\"tmp\",\"vendor\",\".git\",\"dist\"]}"
  },
  {
    "path": "lib/try-generate-pages.sh",
    "content": "#!/bin/bash\necho \"Attempting to generate pages\"\nif [[ \"${TRAVIS_PULL_REQUEST}\" = \"false\" && \"${TRAVIS_BRANCH}\" == 'master' && \"${EMBER_TRY_SCENARIO}\" == 'ember-1.12' ]]; then\n  ember github-pages:commit --message \"New release\" --branch \"${GH_DEST_BRANCH}\"\n  git push deploy gh-pages 2>&1 >/dev/null\nelse\n  echo \"Not a main build -- no deploy\"\nfi\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"ember-cli-materialize\",\n  \"description\": \"An ember-cli addon for using Materialize (CSS Framework based on Material Design) in Ember applications.\",\n  \"version\": \"0.0.0-development\",\n  \"directories\": {\n    \"doc\": \"doc\",\n    \"test\": \"tests\"\n  },\n  \"scripts\": {\n    \"build\": \"ember build\",\n    \"lint:js\": \"eslint .\",\n    \"start\": \"ember serve\",\n    \"test\": \"ember try:each\",\n    \"semantic-release\": \"semantic-release\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/mike-north/ember-cli-materialize.git\"\n  },\n  \"bugs\": {\n    \"url\": \"https://github.com/mike-north/ember-cli-materialize/issues\"\n  },\n  \"engines\": {\n    \"node\": \"^4.5 || 6.* || >= 7.*\"\n  },\n  \"author\": \"Mike North <michael.l.north@gmail.com> (http://mike.works)\",\n  \"contributors\": [\n    {\n      \"name\": \"Stefan Gasser\"\n    }\n  ],\n  \"license\": \"MIT\",\n  \"devDependencies\": {\n    \"@commitlint/cli\": \"7.6.0\",\n    \"@commitlint/config-conventional\": \"7.6.0\",\n    \"@commitlint/travis-cli\": \"7.6.0\",\n    \"@ember/optional-features\": \"0.7.0\",\n    \"@mike-north/js-lib-renovate-config\": \"1.1.5\",\n    \"@mike-north/js-lib-semantic-release-config\": \"1.0.1\",\n    \"@types/ember\": \"3.0.28\",\n    \"bower\": \"1.8.13\",\n    \"broccoli-asset-rev\": \"3.0.0\",\n    \"ember-ajax\": \"5.0.0\",\n    \"ember-anchor\": \"1.0.3\",\n    \"ember-array-helper\": \"5.1.0\",\n    \"ember-ci\": \"0.1.4\",\n    \"ember-cli\": \"4.11.0\",\n    \"ember-cli-app-version\": \"3.2.0\",\n    \"ember-cli-dependency-checker\": \"3.3.1\",\n    \"ember-cli-eslint\": \"5.1.0\",\n    \"ember-cli-htmlbars-inline-precompile\": \"3.0.2\",\n    \"ember-cli-inject-live-reload\": \"2.1.0\",\n    \"ember-cli-qunit\": \"4.4.0\",\n    \"ember-cli-sass\": \"10.0.1\",\n    \"ember-cli-shims\": \"1.2.0\",\n    \"ember-cli-sri\": \"2.1.1\",\n    \"ember-cli-test-loader\": \"2.2.0\",\n    \"ember-cli-uglify\": \"3.0.0\",\n    \"ember-cli-version-checker\": \"3.0.1\",\n    \"ember-code-snippet\": \"2.4.2\",\n    \"ember-composability\": \"1.0.1\",\n    \"ember-disable-prototype-extensions\": \"1.1.3\",\n    \"ember-export-application-global\": \"2.0.1\",\n    \"ember-keyboard\": \"4.0.0\",\n    \"ember-load-initializers\": \"2.1.2\",\n    \"ember-material-design-icons-shim\": \"0.1.13\",\n    \"ember-materialize-shim\": \"0.5.1\",\n    \"ember-modal-dialog\": \"3.0.1\",\n    \"ember-percy\": \"1.6.0\",\n    \"ember-radio-button\": \"2.0.1\",\n    \"ember-resolver\": \"8.1.0\",\n    \"ember-source\": \"4.11.0\",\n    \"ember-source-channel-url\": \"1.2.0\",\n    \"ember-truth-helpers\": \"2.1.0\",\n    \"ember-try\": \"1.4.0\",\n    \"eslint-plugin-ember\": \"10.6.1\",\n    \"eslint-plugin-node\": \"11.1.0\",\n    \"husky\": \"1.3.1\",\n    \"loader.js\": \"4.7.0\",\n    \"sass\": \"1.15.3\",\n    \"semantic-release\": \"15.12.5\"\n  },\n  \"keywords\": [\n    \"materialize\",\n    \"materialize-css\",\n    \"material-design\",\n    \"ember-addon\"\n  ],\n  \"dependencies\": {\n    \"ember-cli-babel\": \"^7.1.3\",\n    \"ember-cli-htmlbars\": \"^6.0.0\",\n    \"rsvp\": \"^4.7.0\"\n  },\n  \"ember-addon\": {\n    \"configPath\": \"tests/dummy/config\",\n    \"demoURL\": \"https://mike.works/ember-cli-materialize\"\n  },\n  \"commitlint\": {\n    \"extends\": [\n      \"@commitlint/config-conventional\"\n    ]\n  },\n  \"husky\": {\n    \"hooks\": {\n      \"commit-msg\": \"./node_modules/.bin/commitlint -e $HUSKY_GIT_PARAMS\"\n    }\n  },\n  \"release\": {\n    \"extends\": \"@mike-north/js-lib-semantic-release-config\"\n  }\n}\n"
  },
  {
    "path": "renovate.json",
    "content": "{\n  \"extends\": [\"@mike-north/js-lib-renovate-config\"]\n}\n"
  },
  {
    "path": "testem.js",
    "content": "module.exports = {\n  test_page: 'tests/index.html?hidepassed',\n  disable_watching: true,\n  launch_in_ci: [\n    'Chrome'\n  ],\n  launch_in_dev: [\n    'Chrome'\n  ],\n  browser_args: {\n    Chrome: {\n      ci: [\n        // --no-sandbox is needed when running Chrome inside a container\n        process.env.CI ? '--no-sandbox' : null,\n        '--headless',\n        '--disable-gpu',\n        '--disable-dev-shm-usage',\n        '--disable-software-rasterizer',\n        '--mute-audio',\n        '--remote-debugging-port=0',\n        '--window-size=1440,900'\n      ].filter(Boolean)\n    }\n  }\n};\n"
  },
  {
    "path": "tests/.jshintrc",
    "content": "{\n  \"predef\": [\n    \"percySnapshot\",\n    \"document\",\n    \"window\",\n    \"location\",\n    \"setTimeout\",\n    \"$\",\n    \"-Promise\",\n    \"define\",\n    \"console\",\n    \"visit\",\n    \"exists\",\n    \"fillIn\",\n    \"click\",\n    \"keyEvent\",\n    \"triggerEvent\",\n    \"find\",\n    \"findWithAssert\",\n    \"wait\",\n    \"DS\",\n    \"andThen\",\n    \"currentURL\",\n    \"currentPath\",\n    \"currentRouteName\"\n  ],\n  \"node\": false,\n  \"browser\": false,\n  \"boss\": true,\n  \"curly\": true,\n  \"debug\": false,\n  \"devel\": false,\n  \"eqeqeq\": true,\n  \"evil\": true,\n  \"forin\": false,\n  \"immed\": false,\n  \"laxbreak\": false,\n  \"newcap\": true,\n  \"noarg\": true,\n  \"noempty\": false,\n  \"nonew\": false,\n  \"nomen\": false,\n  \"onevar\": false,\n  \"plusplus\": false,\n  \"regexp\": false,\n  \"undef\": true,\n  \"sub\": true,\n  \"strict\": false,\n  \"white\": false,\n  \"eqnull\": true,\n  \"esnext\": true,\n  \"unused\": true\n}\n"
  },
  {
    "path": "tests/acceptance/badges-test.js",
    "content": "import { test } from 'qunit';\nimport moduleForAcceptance from '../../tests/helpers/module-for-acceptance';\n\nmoduleForAcceptance('Acceptance - Badges');\n\ntest('Load the demo page', function(assert) {\n  visit('/badges');\n\n  andThen(function() {\n    assert.ok(true, 'If this is passing, this page has no deprecation warnings');\n  });\n});\n"
  },
  {
    "path": "tests/acceptance/buttons-test.js",
    "content": "import { test } from 'qunit';\nimport moduleForAcceptance from '../../tests/helpers/module-for-acceptance';\nimport $ from 'jquery';\n\nmoduleForAcceptance('Acceptance - Buttons');\n\nconst BUTTON_HOVER_TIMEOUT = 1000;\n\ntest('Load the demo page', function(assert) {\n  visit('/buttons');\n\n  andThen(function() {\n    assert.ok(true, 'If this is passing, this page has no deprecation warnings');\n  });\n});\n\ntest('Floating buttons should be exposed on hover', assert => {\n  visit('/buttons');\n\n  andThen(() => {\n    const mainButton = find('.fixed-btns-example > a.btn-floating');\n    assert.equal(\n      $('.fixed-btns-example ul li:first-child a').css('opacity'),\n      '0',\n      'Secondary buttons should be hidden before mouseover'\n    );\n    $(mainButton).mouseover();\n  });\n\n  andThen(() => {\n    const done = assert.async();\n    setTimeout(() => {\n      assert.ok(\n        parseInt($('.fixed-btns-example ul li:first-child a').css('opacity'), 10) > 0.5,        \n        'Secondary buttons should be shown after mouseover'\n      );\n      done();\n    }, BUTTON_HOVER_TIMEOUT);\n  });\n});\n\ntest('Clicking the first floating button should fire an action', assert => {\n  visit('/buttons');\n  const done = assert.async();\n\n  const oldAlert = window.alert;\n\n  window.alert = function(alertText) {\n    assert.equal(alertText, 'firstAction', 'firstAction is fired when primary button is clicked');\n    window.alert = oldAlert;\n    done();\n  };\n\n  click('.fixed-btns-example > a.btn-floating');\n});\n\ntest('Clicking a secondary floating button should fire a different action, and pass arguments', assert => {\n  visit('/buttons');\n  const done = assert.async();\n\n  const oldAlert = window.alert;\n\n  andThen(() => {\n    const mainButton = find('.fixed-btns-example > a.btn-floating');\n    assert.equal(\n      $('.fixed-btns-example ul li:first-child a').css('opacity'),\n      '0',\n      'Secondary buttons should be hidden before mouseover'\n    );\n    $(mainButton).mouseover();\n  });\n\n  andThen(() => {\n    setTimeout(() => {\n      window.alert = function(alertText) {\n        assert.equal(alertText, `anotherAction\\narg: \"1\"`, 'firstAction is fired when primary button is clicked');\n        window.alert = oldAlert;\n        done();\n      };\n\n      click('.fixed-btns-example ul li:first-child a');\n    }, BUTTON_HOVER_TIMEOUT);\n  });\n});\n"
  },
  {
    "path": "tests/acceptance/cards-test.js",
    "content": "import { test } from 'qunit';\nimport moduleForAcceptance from '../../tests/helpers/module-for-acceptance';\n\nmoduleForAcceptance('Acceptance - Cards');\n\nfunction checkCardTitle(cardType, cardId) {\n  test(`${cardType} should have a title`, function(assert) {\n    visit('/cards');\n\n    andThen(function() {\n      const titleEle = find(`#${cardId} > .card-content span`);\n\n      assert.ok(titleEle.hasClass('card-title'));\n      assert.equal(\n        titleEle\n          .children()\n          .remove()\n          .end()\n          .text()\n          .trim(),\n        'Card Title'\n      );\n    });\n  });\n}\n\nfunction checkCardContent(cardType, cardId) {\n  test(`${cardType} should have content`, function(assert) {\n    visit('/cards');\n\n    andThen(function() {\n      const contentEle = find(`#${cardId} > .card-content`);\n\n      assert.ok(contentEle.hasClass('card-content'));\n\n      const expected = `I am a very simple card. I am good at containing small bits of information. I am convenient because I require little markup to use effectively.`;\n\n      // skip over the span containing the card title and get just the card content text.\n      const actual = contentEle\n        .find('>span')\n        .next()\n        .text()\n        .trim()\n        .replace(/[\\s\\n]+/g, ' ');\n      assert.equal(actual, expected);\n    });\n  });\n}\n\nfunction checkCardActions(cardType, cardId) {\n  test(`${cardType} should have actions`, function(assert) {\n    visit('/cards');\n\n    andThen(function() {\n      const actionEle = find(`#${cardId} > .card-action`);\n\n      assert.ok(actionEle.hasClass('card-action'));\n    });\n  });\n}\n\nconst cardFlavors = [\n  { type: 'Basic Card', id: 'basic-card' },\n  { type: 'Image Card', id: 'image-card' },\n  { type: 'Card Reveal', id: 'card-reveal' }\n];\n\nfor (let i = 0; i < cardFlavors.length; i++) {\n  checkCardTitle(cardFlavors[i].type, cardFlavors[i].id);\n}\ncheckCardContent(cardFlavors[0].type, cardFlavors[0].id);\ncheckCardContent(cardFlavors[1].type, cardFlavors[1].id);\ncheckCardActions(cardFlavors[0].type, cardFlavors[0].id);\ncheckCardActions(cardFlavors[1].type, cardFlavors[1].id);\n\ntest('Card Reveal should have content', function(assert) {\n  visit('/cards');\n\n  andThen(function() {\n    const contentEle = find('#card-reveal > .card-content');\n\n    assert.ok(contentEle.hasClass('card-content'));\n\n    // skip over the span containing the card title and get just the card content text.\n    const actual = contentEle\n      .find('>span')\n      .next()\n      .text()\n      .trim();\n\n    assert.equal(actual, 'This is a Link');\n  });\n});\n\ntest('Card Reveal should have content', function(assert) {\n  visit('/cards');\n\n  andThen(function() {\n    const contentEle = find('#card-panel > span');\n\n    assert.ok(contentEle.hasClass('white-text'));\n\n    const expected =\n      'I am a very simple card. I am good at containing small bits of information. ' +\n      'I am convenient because I require little markup to use effectively. ' +\n      'I am similar to what is called a panel in other frameworks.';\n\n    // skip over the span containing the card title and get just the card content text.\n    const actual = contentEle\n      .text()\n      .trim()\n      .replace(/[\\s\\n]+/g, ' ');\n\n    assert.equal(actual, expected);\n  });\n});\n\ntest('Card Reveal should reveal and conceal content', function(assert) {\n  visit('/cards');\n\n  andThen(function() {\n    const doneReveal = assert.async();\n    const doneConceal = assert.async();\n\n    const activatorEle = find('#card-reveal>.card-content>.activator');\n    const revealEle = find('#card-reveal>.card-reveal');\n    const concealEle = revealEle.find('>.card-title');\n    const animationClass = 'velocity-animating';\n\n    // click to reveal\n    click(activatorEle).then(function() {\n      // should be animating...\n      assert.ok(revealEle.hasClass(animationClass));\n\n      // wait for animation to complete\n      setTimeout(function() {\n        assert.ok(!revealEle.hasClass(animationClass));\n        doneReveal();\n\n        // click to conceal\n        click(concealEle).then(function() {\n          assert.ok(revealEle.hasClass(animationClass));\n\n          // wait for animation to complete\n          setTimeout(function() {\n            assert.ok(!revealEle.hasClass(animationClass));\n            doneConceal();\n          }, 500);\n        });\n      }, 500);\n    });\n  });\n});\n"
  },
  {
    "path": "tests/acceptance/collapsible-test.js",
    "content": "import { test } from 'qunit';\nimport moduleForAcceptance from '../../tests/helpers/module-for-acceptance';\nimport $ from 'jquery';\nmoduleForAcceptance('Acceptance - Collapsible');\n\ntest('Collapsible basic tests', function(assert) {\n  visit('/collapsible');\n\n  andThen(function() {\n    assert.equal($('.accordion-example ul > li').length, 3, 'Accordion should have 3 headers');\n    assert.equal($('.expandable-example ul > li').length, 3, 'Expandable should have 3 headers');\n    assert.equal($('.preselected-example ul >li').length, 3, 'Preselected should have 3 headers');\n    assert.equal(\n      $('.accordion-example ul > li>.active').length,\n      0,\n      'Accordion should not have an active collapsible'\n    );\n    assert.equal(\n      $('.expandable-example ul > li>.active').length,\n      0,\n      'Expandable should not have an active collapsible'\n    );\n    assert.equal(\n      $('.preselected-example ul > li>.active').length,\n      1,\n      'Preselected should have an active collapsible'\n    );\n    assert.equal($('.action-selection-example ul > li').length, 3, 'Action selection should also have 3 headers');\n  });\n});\n\ntest('Action collapsible operations', function(assert) {\n  visit('/collapsible');\n\n  andThen(function() {\n    assert.equal($('.selected-action').text(), '', 'there should be no selected action');\n  });\n\n  click('.action-selection-example ul > li:first-child > .collapsible-header');\n\n  andThen(function() {\n    assert.equal(\n      $('.selected-action').text(),\n      'cloud',\n      'after clicking, we should have the correct selected action'\n    );\n    assert.equal($('.action-selection-example ul > li > .active').length, 1, 'we should have an activated tab');\n  });\n\n  click('.action-selection-example ul > li:nth-child(2) > .collapsible-header');\n\n  andThen(function() {\n    assert.equal($('.selected-action').text(), 'marker', 'clicking another header should fire the action again');\n  });\n});\n"
  },
  {
    "path": "tests/acceptance/collection-test.js",
    "content": "import { test } from 'qunit';\nimport moduleForAcceptance from '../../tests/helpers/module-for-acceptance';\n\nmoduleForAcceptance('Acceptance - Collection');\n\ntest('Load the demo page', function(assert) {\n  visit('/collection');\n\n  andThen(function() {\n    // Basic collection\n    assert.equal(find('.basic-collection-example .collection-item').length, 3, '3 items in basic collection example');\n\n    // Links example\n    assert.equal(\n      find('.links-collection-example a.collection-item').length,\n      3,\n      'links items in links collection example'\n    );\n\n    // Active link\n    assert.equal(\n      find('.links-collection-example a.collection-item.active').text(),\n      'Gustavo Freng',\n      'Gus should be active'\n    );\n\n    // Simple header on collection\n    assert.equal(\n      find('.simple-header-collection-example .collection-item').length,\n      3,\n      '3 items in basic collection example'\n    );\n    assert.equal(\n      find('.simple-header-collection-example .collection-header').text(),\n      'People to Watch',\n      'Header content is correct'\n    );\n    assert.equal(find('.simple-header-collection-example .with-header').length, 1, 'with-header class is present');\n\n    // Custom header on collection\n    assert.equal(\n      find('.custom-header-collection-example .collection-item').length,\n      3,\n      '3 items in basic collection example'\n    );\n    assert.equal(\n      find('.custom-header-collection-example .collection-header').text(),\n      'People to Watch',\n      'Header content is correct'\n    );\n    assert.equal(find('.custom-header-collection-example .with-header').length, 1, 'with-header class is present');\n    assert.equal(\n      find('.custom-header-collection-example .collection-header.deep-purple').length,\n      1,\n      'Header is customized (deep-purple)'\n    );\n  });\n});\n"
  },
  {
    "path": "tests/acceptance/copyright-test.js",
    "content": "import { test } from 'qunit';\nimport moduleForAcceptance from '../../tests/helpers/module-for-acceptance';\n\nmoduleForAcceptance('Acceptance - Copyright');\n\ntest('Load the demo page', function(assert) {\n  visit('/copyright');\n\n  andThen(function() {\n    assert.ok(true, 'If this is passing, this page has no deprecation warnings');\n  });\n});\n"
  },
  {
    "path": "tests/acceptance/forms-test.js",
    "content": "import { test } from 'qunit';\nimport moduleForAcceptance from '../../tests/helpers/module-for-acceptance';\n\nmoduleForAcceptance('Acceptance - Forms');\n\ntest('Load the demo page', assert => {\n  visit('/forms');\n\n  andThen(function() {\n    assert.ok(true, 'If this is passing, this page has no deprecation warnings');\n  });\n});\n"
  },
  {
    "path": "tests/acceptance/index-test.js",
    "content": "import { test } from 'qunit';\nimport moduleForAcceptance from '../../tests/helpers/module-for-acceptance';\n\nmoduleForAcceptance('Acceptance - Dummy app index page');\n\ntest('Load the demo page', assert => {\n  visit('/');\n\n  andThen(function() {\n    assert.ok(true, 'If this is passing, this page has no deprecation warnings');\n  });\n});\n"
  },
  {
    "path": "tests/acceptance/loader-test.js",
    "content": "import { test } from 'qunit';\nimport moduleForAcceptance from '../../tests/helpers/module-for-acceptance';\n\nmoduleForAcceptance('Acceptance - Loader');\n\ntest('Load the demo page', assert => {\n  visit('/loader');\n\n  andThen(function() {\n    assert.ok(true, 'If this is passing, this page has no deprecation warnings');\n  });\n});\n"
  },
  {
    "path": "tests/acceptance/modal-test.js",
    "content": "import { test } from 'qunit';\nimport moduleForAcceptance from '../../tests/helpers/module-for-acceptance';\nimport $ from 'jquery';\n\nmoduleForAcceptance('Acceptance - Modal');\n\ntest('Modal container is installed', assert => {\n  visit('/modal');\n\n  andThen(function() {\n    assert.equal($('#materialize-modal-root-element').length, 1, 'Modal container is in body');\n  });\n});\n\ntest('Modal opens when button is clicked', assert => {\n  visit('/modal');\n\n  andThen(function() {\n    assert.equal($('#materialize-modal-root-element .modal-content').length, 0, 'Modal is not on the screen');\n  });\n\n  click('.open-modal-button');\n\n  andThen(function() {\n    assert.equal($('#materialize-modal-root-element .modal-content').length, 1, 'Modal is on the screen');\n  });\n});\n\ntest('Modal is dismissed upon hitting \"cancel\"', assert => {\n  visit('/modal');\n\n  andThen(function() {\n    assert.equal($('#materialize-modal-root-element .modal-content').length, 0, 'Modal is not on the screen');\n  });\n\n  click('.open-modal-button');\n\n  andThen(function() {\n    assert.equal($('#materialize-modal-root-element .modal-content').length, 1, 'Modal is on the screen');\n  });\n\n  click('#materialize-modal-root-element .modal-footer .cancel-button');\n\n  andThen(function() {\n    assert.equal($('#materialize-modal-root-element .modal-content').length, 0, 'Modal is on not the screen');\n  });\n});\n\ntest('Modal is dismissed by clicking on background', assert => {\n  visit('/modal');\n\n  andThen(function() {\n    assert.equal($('.ember-modal-wrapper .modal-content').length, 0, 'Modal is not on the screen');\n  });\n\n  click('.test-modal-button');\n\n  andThen(function() {\n    assert.equal($('.ember-modal-wrapper .modal-content').length, 1, 'Modal is on the screen');\n  });\n\n  click('.ember-modal-wrapper');\n});\n"
  },
  {
    "path": "tests/acceptance/navbar-test.js",
    "content": "import { test } from 'qunit';\nimport moduleForAcceptance from '../../tests/helpers/module-for-acceptance';\nimport $ from 'jquery';\n\nmoduleForAcceptance('Acceptance - Navbar');\n\ntest('Load the demo page', assert => {\n  visit('/navbar');\n\n  andThen(() => {\n    assert.ok(true, 'If this is passing, this page has no deprecation warnings');\n\n    assert.equal($('.navbar-example nav').length, 1, 'Navbar is in the DOM');\n    assert.equal($('.navbar-example nav .brand-logo').text(), 'Example', 'name is rendered in .brand-info');\n  });\n});\n\ntest('SideNav', assert => {\n  visit('/navbar');\n\n  let done = assert.async();\n\n  andThen(() => {\n    assert.equal(find('.navbar-example nav .button-collapse').length, 1, 'Navbar collapse button is in the DOM');\n    click('.navbar-example nav .button-collapse');\n  });\n\n  andThen(() => {\n    setTimeout(() => {\n      assert.ok(\n        $('.navbar-example .side-nav')\n          .attr('style')\n          .indexOf('translateX(0px)') > 0,\n        'TranslateX is 0'\n      );\n      assert.equal($('.navbar-example .side-nav').css('left'), '0px', 'SideNav is open');\n      setTimeout(() => {\n        $('#sidenav-overlay').click();\n        setTimeout(() => {\n          assert.ok(\n            $('.navbar-example .side-nav')\n              .attr('style')\n              .indexOf('translateX(-100%)') > 0,\n            'TranslateX > 0'\n          );\n          done();\n        }, 1200);\n      }, 1200);\n    }, 1200);\n  });\n});\n\ntest('Navbar Custom Home Route', assert => {\n  visit('/navbar');\n\n  click('.navbar-custom-home a.brand-logo');\n\n  andThen(() => {\n    assert.equal('/navbar', currentURL(), 'Navbar can have a custom home route');\n  });\n});\n"
  },
  {
    "path": "tests/acceptance/pagination-test.js",
    "content": "import { test } from 'qunit';\nimport moduleForAcceptance from '../../tests/helpers/module-for-acceptance';\n\nmoduleForAcceptance('Acceptance - Pagination');\n\ntest('Load the demo page', assert => {\n  visit('/pagination');\n\n  andThen(function() {\n    assert.ok(true, 'If this is passing, this page has no deprecation warnings');\n  });\n});\n"
  },
  {
    "path": "tests/acceptance/parallax-test.js",
    "content": "import { test } from 'qunit';\nimport moduleForAcceptance from '../../tests/helpers/module-for-acceptance';\n\nmoduleForAcceptance('Acceptance - Parallax');\n\ntest('Load the demo page', assert => {\n  visit('/parallax');\n\n  andThen(function() {\n    assert.ok(true, 'If this is passing, this page has no deprecation warnings');\n  });\n});\n"
  },
  {
    "path": "tests/acceptance/table-test.js",
    "content": "import { test } from 'qunit';\nimport moduleForAcceptance from '../../tests/helpers/module-for-acceptance';\n\nmoduleForAcceptance('Acceptance - Table');\n\ntest('Load the demo page', assert => {\n  visit('/tables');\n\n  andThen(function() {\n    assert.equal(find('.basic-table table tbody tr').length, 6, 'Three rows (x2 tables) in basic table example');\n    assert.equal(find('.basic-table table:nth-child(2) tbody tr:first-child td').length, 2, 'Two columns');\n\n    assert.equal(find('.custom-cells table td .btn').length, 3, 'Buttons as table cells');\n\n    assert.equal(find('.custom-headers table thead th i').length, 2, 'Headers are customized');\n  });\n});\n"
  },
  {
    "path": "tests/acceptance/tabs-test.js",
    "content": "import { test } from 'qunit';\nimport moduleForAcceptance from '../../tests/helpers/module-for-acceptance';\n\nmoduleForAcceptance('Acceptance - Tabs');\n\ntest('Basic Example - One set of tabs should be rendered, with three tabs', function(assert) {\n  visit('/tabs').then(function() {\n    assert.equal(find('.basic-tabs-example .materialize-tabs').length, 1, 'One set of tabs');\n    assert.equal(\n      find('.basic-tabs-example .materialize-tabs .materialize-tabs-tab a').length,\n      3,\n      'Three tabs in the set'\n    );\n    assert.equal(\n      find('.basic-tabs-example .materialize-tabs .materialize-tabs-tab:first-child a')\n        .text()\n        .trim(),\n      'First',\n      'Label of first tab is \"First\"'\n    );\n    assert.equal(\n      find('.basic-tabs-example .materialize-tabs .materialize-tabs-tab:nth-child(2) a')\n        .text()\n        .trim(),\n      'Second',\n      'Label of second tab is \"Second\"'\n    );\n    assert.equal(\n      find('.basic-tabs-example .materialize-tabs .materialize-tabs-tab:nth-child(3) a')\n        .text()\n        .trim(),\n      'Third',\n      'Label of third tab is \"Third\"'\n    );\n\n    assert.equal(\n      find('.basic-tabs-example .materialize-tabs .materialize-tabs-tab:first-child .active').length,\n      1,\n      'First tab is initially selected'\n    );\n  });\n});\n"
  },
  {
    "path": "tests/blanket-options.js",
    "content": "/* globals blanket, module */\n\nvar options = {\n  modulePrefix: 'ember-cli-materialize',\n  filter: '//.*ember-cli-materialize/.*/',\n  antifilter: '//.*(tests|template).*/',\n  enableCoverage: true,\n  loaderExclusions: ['highlight.js'],\n  cliOptions: {\n    reporters: ['lcov'],\n    autostart: true\n  }\n};\nif (typeof exports === 'undefined') {\n  blanket.options(options);\n} else {\n  module.exports = options;\n}\n"
  },
  {
    "path": "tests/dummy/app/app.js",
    "content": "import Application from '@ember/application';\nimport Resolver from './resolver';\nimport loadInitializers from 'ember-load-initializers';\nimport config from './config/environment';\n\nconst App = Application.extend({\n  modulePrefix: config.modulePrefix,\n  podModulePrefix: config.podModulePrefix,\n  Resolver\n});\n\nloadInitializers(App, config.modulePrefix);\n\nexport default App;\n"
  },
  {
    "path": "tests/dummy/app/components/.gitkeep",
    "content": ""
  },
  {
    "path": "tests/dummy/app/components/demo-nav.js",
    "content": "import Component from '@ember/component';\n\nexport default Component.extend({\n  classNames: ['navbar-fixed'],\n  didInsertElement() {\n    this._super(...arguments);\n    this.$('.demo-button-collapse').sideNav();\n  }\n});\n"
  },
  {
    "path": "tests/dummy/app/components/example-snippet.js",
    "content": "import Component from '@ember/component';\nimport { computed } from '@ember/object';\nimport { empty } from '@ember/object/computed';\n\nexport default Component.extend({\n  emptySnippet: empty('snippet'),\n  exampleFrameClass: 'col s12 position-relative',\n  partialName: computed('snippet', {\n    get() {\n      return `snippets/${this.get('snippet') || 'none'}`;\n    }\n  }),\n  snippetName: computed('snippet', {\n    get() {\n      return `${this.get('snippet') || 'none'}.hbs`;\n    }\n  }),\n  send() {\n    let target = this.get('targetObject');\n    target.send(...arguments);\n  }\n});\n"
  },
  {
    "path": "tests/dummy/app/components/my-column-header.js",
    "content": "import layout from '../templates/snippets/my-column-header';\n\n// BEGIN-SNIPPET my-column-header\nimport DefaultHeader from 'ember-cli-materialize/components/md-default-column-header';\n\nexport default DefaultHeader.extend({\n  layout\n});\n// END-SNIPPET\n"
  },
  {
    "path": "tests/dummy/app/components/my-custom-header.js",
    "content": "// BEGIN-SNIPPET custom-collection-header\nimport DefaultCollectionHeader from 'ember-cli-materialize/components/md-default-collection-header';\nimport layout from '../templates/snippets/my-custom-header';\n\nexport default DefaultCollectionHeader.extend({\n  layout,\n  classNames: ['deep-purple']\n});\n// END-SNIPPET\n"
  },
  {
    "path": "tests/dummy/app/components/options-panel.js",
    "content": "import Component from '@ember/component';\nimport { computed } from '@ember/object';\n\nexport default Component.extend({\n  componentName: '',\n  header: computed('componentName', {\n    get() {\n      return `${this.get('componentName')} component options are:`;\n    }\n  })\n});\n"
  },
  {
    "path": "tests/dummy/app/config/environment.d.ts",
    "content": "/* tslint:disable */\n\nexport default config;\n\ndeclare namespace config {\n  const APP: {\n    [k: string]: any;\n  };\n  const environment: any;\n  const modulePrefix: string;\n  const podModulePrefix: string;\n  const locationType: string;\n  const rootURL: string;\n}\n"
  },
  {
    "path": "tests/dummy/app/controllers/.gitkeep",
    "content": ""
  },
  {
    "path": "tests/dummy/app/controllers/application.js",
    "content": "import { A } from '@ember/array';\nimport Controller from '@ember/controller';\n\nexport default Controller.extend({\n  // eslint-disable-next-line\n  demoSections: new A([\n    { name: 'Badges', route: 'badges' },\n    { name: 'Buttons', route: 'buttons' },\n    { name: 'Cards', route: 'cards' },\n    { name: 'Collapsible', route: 'collapsible' },\n    { name: 'Collection', route: 'collection' },\n    { name: 'Colors', route: 'colors', new: true },\n    { name: 'Copyright', route: 'copyright' },\n    { name: 'Forms', route: 'forms' },\n    { name: 'Loader', route: 'loader' },\n    { name: 'Modal', route: 'modal' },\n    { name: 'Navbar', route: 'navbar' },\n    { name: 'Pagination', route: 'pagination' },\n    { name: 'Parallax', route: 'parallax' },\n    { name: 'Tables', route: 'tables' },\n    { name: 'Tabs', route: 'tabs' }\n  ])\n});\n"
  },
  {
    "path": "tests/dummy/app/controllers/buttons.js",
    "content": "import Controller from '@ember/controller';\nimport { A } from '@ember/array';\n\nexport default Controller.extend({\n  // eslint-disable-next-line\n  myData: new A(['hello', 'world']),\n\n  actions: {\n    debug() {\n      window.alert('clicked!');\n    },\n    firstAction() {\n      window.alert('firstAction');\n    },\n    anotherAction(arg) {\n      window.alert(`anotherAction\\narg: ${JSON.stringify(arg)}`);\n    }\n  }\n});\n"
  },
  {
    "path": "tests/dummy/app/controllers/collapsible.js",
    "content": "import Controller from '@ember/controller';\n\nexport default Controller.extend({\n  lastClicked: null,\n  actions: {\n    clicked(tabModel) {\n      this.set('lastClicked', tabModel);\n      if (tabModel === this.get('activeSlide')) {\n        this.set('activeSlide', null);\n      } else {\n        this.set('activeSlide', tabModel);\n      }\n    }\n  }\n});\n"
  },
  {
    "path": "tests/dummy/app/controllers/collection.js",
    "content": "import Controller from '@ember/controller';\n\nexport default Controller.extend({});\n"
  },
  {
    "path": "tests/dummy/app/controllers/colors.js",
    "content": "import { A } from '@ember/array';\nimport Controller from '@ember/controller';\nimport { computed } from '@ember/object';\nimport AnchorControllerSupport from 'ember-anchor/mixins/controller-support';\n\nexport default Controller.extend(AnchorControllerSupport, {\n  //eslint-disable-next-line\n  colorBases: new A([\n    'pink',\n    'red',\n    'deep-orange',\n    'orange',\n    'amber',\n    'yellow',\n    'light-green',\n    'green',\n    'teal',\n    'cyan',\n    'light-blue',\n    'blue',\n    'indigo',\n    'purple',\n    'deep-purple'\n  ]),\n  //eslint-disable-next-line\n  boringColorBases: new A(['brown', 'grey', 'blue-grey']),\n  //eslint-disable-next-line\n  colorVariants: new A([\n    'lighten-5',\n    'lighten-4',\n    'lighten-3',\n    'lighten-2',\n    'lighten-1',\n    '',\n    'darken-1',\n    'darken-2',\n    'darken-3',\n    'darken-4'\n  ]),\n  //eslint-disable-next-line\n  accentColorVariants: new A(['accent-1', 'accent-2', 'accent-3', 'accent-4']),\n\n  colors: computed('colorBases.[]', 'colorVariants.[]', function() {\n    return new A(\n      this.get('colorBases').map(colorBase => {\n        let variants = this.get('colorVariants');\n        if (['brown', 'grey', 'blue-grey'].indexOf(colorBase) < 0) {\n          variants = variants.concat(this.get('accentColorVariants'));\n        }\n        return {\n          base: colorBase,\n          variants: new A(variants)\n        };\n      })\n    );\n  }),\n\n  boringColors: computed('boringColorBases.[]', 'colorVariants.[]', function() {\n    return new A(\n      this.get('boringColorBases').map(colorBase => {\n        let variants = this.get('colorVariants');\n        if (['brown', 'grey', 'blue-grey'].indexOf(colorBase) < 0) {\n          variants = variants.concat(this.get('accentColorVariants'));\n        }\n        return {\n          base: colorBase,\n          variants: new A(variants)\n        };\n      })\n    );\n  })\n});\n"
  },
  {
    "path": "tests/dummy/app/controllers/forms.js",
    "content": "// @ts-check\nimport Controller from '@ember/controller';\nimport { A } from '@ember/array';\nimport { computed, observer } from '@ember/object';\nimport { isPresent } from '@ember/utils';\nimport { not } from '@ember/object/computed';\nimport { later } from '@ember/runloop';\n\nfunction asJSON(propKey) {\n  return computed(`${propKey},${propKey}.[]`, function() {\n    return JSON.stringify(this.get(propKey));\n  });\n}\n\nexport default Controller.extend({\n  //eslint-disable-next-line\n  frameworks: new A([\n    {\n      id: 1,\n      value: 'Materialize CSS'\n    },\n    {\n      id: 2,\n      value: 'Ember-CLI Materialize'\n    }\n  ]),\n  message: `This is a long message. It might flow to the next line if I keep typing, so it's better suited to a textarea`,\n  //eslint-disable-next-line\n  errors: {\n    name: A([]),\n    framework: A([])\n  },\n\n  // BEGIN-SNIPPET form-validation-basic\n  nameDidChange: observer('model.name', function() {\n    let messages = [];\n    if (!isPresent(this.get('model.name'))) {\n      messages = ['This field is required'];\n    }\n    this.get('errors.name').setObjects(messages);\n  }),\n  // END-SNIPPET\n\n  frameworkDidChange: observer('framework', function() {\n    let self = this;\n    later(() => {\n      let messages = [];\n      if (!isPresent(self.get('framework'))) {\n        messages = ['This field is required'];\n      }\n      this.get('errors.framework').setObjects(messages);\n    }, 100);\n  }),\n\n  dateValue: '15 January, 1974',\n  ageFromDate: computed('dateValue', function() {\n    let d = new Date(this.get('dateValue'));\n    return new Date().getFullYear() - d.getFullYear();\n  }),\n\n  rangeValue: 64,\n  switchValue1: true,\n  notSwitchValue: not('switchValue'),\n  switchValue: true,\n  checkValueOne: false,\n  checkValueTwo: true,\n\n  checkboxIsSelected: false,\n  radioIsSelected: false,\n  radioSelection: 2,\n  otherRadioSelection: 'green',\n  //eslint-disable-next-line\n  radioChoices: new A([\n    {\n      id: 1,\n      text: 'One'\n    },\n    {\n      id: 2,\n      text: 'Two'\n    }\n  ]),\n\n  radioSelectionString: asJSON('radioSelection'),\n  radioChoicesString: asJSON('radioChoices'),\n\n  //eslint-disable-next-line\n  checkboxSelections: new A([3, 4]),\n  //eslint-disable-next-line\n  checkboxChoices: new A([\n    {\n      id: 3,\n      label: 'Three'\n    },\n    {\n      id: 4,\n      label: 'Four'\n    },\n    {\n      id: 5,\n      label: 'Five'\n    }\n  ]),\n\n  switchesChoicesString: asJSON('switchesChoices'),\n  //eslint-disable-next-line\n  switchesChoices: new A([\n    {\n      key: 6,\n      name: 'Six'\n    },\n    {\n      key: 7,\n      name: 'Seven'\n    },\n    {\n      key: 8,\n      name: 'Eight'\n    }\n  ]),\n  //eslint-disable-next-line\n  switchesSelections: new A([7]),\n  switchesSelection: 7,\n  switchesSelectionString: asJSON('switchesSelection'),\n  switchesSelectionsString: asJSON('switchesSelections'),\n\n  checkboxChoicesString: asJSON('checkboxChoices'),\n  checkboxSelectionsString: asJSON('checkboxSelections')\n});\n"
  },
  {
    "path": "tests/dummy/app/controllers/loader.js",
    "content": "import Controller from '@ember/controller';\n\nexport default Controller.extend({\n  percent: 70\n});\n"
  },
  {
    "path": "tests/dummy/app/controllers/modal.js",
    "content": "import Controller from '@ember/controller';\n\nexport default Controller.extend({\n  modalIsOpen: false,\n  isOpen: false,\n  actions: {\n    openModal() {\n      this.set('modalIsOpen', true);\n    },\n    closeModal() {\n      this.set('modalIsOpen', false);\n    },\n    agree() {\n      window.alert('Thanks for using ember-cli-materialize!');\n      this.set('modalIsOpen', false);\n    }\n  }\n});\n"
  },
  {
    "path": "tests/dummy/app/controllers/pagination.js",
    "content": "// BEGIN-SNIPPET pagination-controller\nimport Controller from '@ember/controller';\n\nexport default Controller.extend({\n  queryParams: ['page'],\n  page: 3\n});\n// END-SNIPPET\n"
  },
  {
    "path": "tests/dummy/app/controllers/tabs.js",
    "content": "import Controller from '@ember/controller';\nimport { A } from '@ember/array';\n\nexport default Controller.extend({\n  //eslint-disable-next-line\n  basicTabsContent: new A([{ id: 'a', title: 'First' }, { id: 'b', title: 'Second' }, { id: 'c', title: 'Third' }]),\n  //eslint-disable-next-line\n  alternateTabsContent: new A([\n    { key: 'a', label: 'First' },\n    { key: 'b', label: 'Second' },\n    { key: 'c', label: 'Third' }\n  ]),\n  basicTabsSelection: 'a',\n  secondTabsSelection: 'g',\n  actions: {\n    addTab() {\n      this.get('basicTabsContent').addObject({ id: 'd', title: 'Fourth' });\n    }\n  }\n});\n"
  },
  {
    "path": "tests/dummy/app/helpers/.gitkeep",
    "content": ""
  },
  {
    "path": "tests/dummy/app/index.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <meta charset=\"utf-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n    <title>ember-cli-materialize</title>\n    <meta name=\"description\" content=\"An ember-cli addon for using Materialize (CSS Framework based on Material Design) in Ember applications.\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=no\"/>\n\n    {{content-for \"head\"}}\n\n    <link integrity=\"\" rel=\"stylesheet\" href=\"{{rootURL}}assets/vendor.css\">\n    <link integrity=\"\" rel=\"stylesheet\" href=\"{{rootURL}}assets/dummy.css\">\n\n    {{content-for \"head-footer\"}}\n  </head>\n  <body>\n    {{content-for \"body\"}}\n\n    <script src=\"{{rootURL}}assets/vendor.js\"></script>\n    <script src=\"{{rootURL}}assets/dummy.js\"></script>\n\n    {{content-for \"body-footer\"}}\n  </body>\n</html>\n"
  },
  {
    "path": "tests/dummy/app/models/.gitkeep",
    "content": ""
  },
  {
    "path": "tests/dummy/app/resolver.js",
    "content": "import Resolver from 'ember-resolver';\n\nexport default Resolver;\n"
  },
  {
    "path": "tests/dummy/app/router.js",
    "content": "import EmberRouter from '@ember/routing/router';\nimport config from './config/environment';\n\nconst Router = EmberRouter.extend({\n  location: config.locationType,\n  rootURL: config.rootURL\n});\n\nRouter.map(function() {\n  this.route('badges');\n  this.route('buttons');\n  this.route('cards');\n  this.route('collapsible');\n  this.route('collection');\n  this.route('copyright');\n  this.route('forms');\n  this.route('loader');\n  this.route('modal');\n  this.route('navbar');\n  this.route('pagination');\n  this.route('parallax');\n  this.route('tables');\n  this.route('tabs');\n  this.route('colors');\n});\n\nexport default Router;\n"
  },
  {
    "path": "tests/dummy/app/routes/.gitkeep",
    "content": ""
  },
  {
    "path": "tests/dummy/app/routes/buttons.js",
    "content": "import Route from '@ember/routing/route';\n\nexport default Route.extend({\n  actions: {\n    debug() {\n      // eslint-disable-next-line\n      console.debug('Action debug sent');\n    }\n  }\n});\n"
  },
  {
    "path": "tests/dummy/app/routes/collection.js",
    "content": "import { A } from '@ember/array';\nimport Route from '@ember/routing/route';\n\nexport default Route.extend({\n  model() {\n    // BEGIN-SNIPPET collection-route\n    let content = A([\n      { id: 'white', name: 'Walter White', route: 'tabs' },\n      { id: 'pinkman', name: 'Jesse Pinkman', route: 'modal' },\n      { id: 'freng', name: 'Gustavo Freng', route: 'collection' }\n    ]);\n    // END-SNIPPET\n    return content;\n  }\n});\n"
  },
  {
    "path": "tests/dummy/app/routes/forms.js",
    "content": "import EObj from '@ember/object';\nimport Route from '@ember/routing/route';\nimport { A } from '@ember/array';\n// jscs:enable disallowDirectPropertyAccess\n\nexport default Route.extend({\n  model() {\n    return EObj.create({ name: null });\n  },\n\n  setupController(controller, model) {\n    this._super(controller, model);\n    controller.set('errors', EObj.create({ name: A(['This field is required']) }));\n  }\n});\n"
  },
  {
    "path": "tests/dummy/app/routes/tables.js",
    "content": "import Route from '@ember/routing/route';\nimport { A } from '@ember/array';\n\nexport default Route.extend({\n  model() {\n    // BEGIN-SNIPPET table-route\n    let content = new A([\n      { id: 'white', name: 'Walter White', route: 'tabs' },\n      { id: 'pinkman', name: 'Jesse Pinkman', route: 'modal' },\n      { id: 'freng', name: 'Gustavo Freng', route: 'collection' }\n    ]);\n    // END-SNIPPET\n\n    return content;\n  }\n});\n"
  },
  {
    "path": "tests/dummy/app/styles/app.scss",
    "content": "// Fix for Roboto font path\n$roboto-font-path: '../assets/';\n$button-color: #e51c23;\n\n// Materialize styles\n@import \"materialize\";\n\n@import 'code';\n// ember-cli-materialize styles\n@import 'ember-cli-materialize';\n\nspan.new-badge {\n  padding-right: 15px;\n  padding-left: 10px;\n  margin-right: -20px;\n}\n\n.index-banner {\n  background-color: color('grey', 'lighten-3');\n  .container {\n    position: relative;\n    .header {\n      color: color('deep-orange', 'base');\n    }\n  }\n  h4 {\n    margin-bottom: 40px;\n  }\n  a{\n    color: color('deep-orange', 'base');\n  }\n}\n\n.github-commit {\n  padding: 14px 0;\n  height: 60px;\n  line-height: 36px;\n  background-color: #5c5757;\n  color: #e6e6e6;\n  font-size: 0.9rem;\n}\n\na {\n  color: $button-color;\n}\n\n.badge {\n  &.new {\n    color: color('materialize-red', 'base');\n    background-color: #fff\n  }\n  &.default-value {\n    float: none;\n    position: inherit;\n  }\n}\n\n.intro {\n  font-size: 1.2em;\n}\n\n// /* FIXME: Workaround for https://github.com/Dogfalo/materialize/issues/1079 */\n// @each $mdi-icon-name, $mdi-icon-value in $mdi-list-icons {\n//   .#{$mdi-prefix}#{$mdi-icon-name}:before {\n//     content: \"\\\"\"+ $mdi-icon-value +\"\\\"\";\n//   }\n// }\n\n// Qunit test runner style fixes\n#qunit-testrunner-toolbar {\n  [type=\"checkbox\"] + label {\n    margin-left: 25px;\n    &:before {\n      left: -20px;\n    }\n  }\n  #qunit-modulefilter {\n    display: inherit;\n  }\n}\n\nnav .brand-logo {\n  white-space: nowrap;\n  padding-left: 20px;\n}\n\n.code-comment {\n  color: #aaa;\n}\n\n.ember-logo {\n  height: 48px;\n  padding-top: 15px;\n}\n\n.top-nav-container {\n  float: right;\n  max-width: calc(100% - 260px);\n  overflow-y: scroll;\n  box-shadow: inset -10px 0 20px rgba(255,255,255,0.7), inset 10px 0 20px rgba(255,255,255,0.7);\n  ul {\n    white-space: nowrap;\n    li {\n      float: none;\n      display: inline-block;\n    }\n  }\n}\n\n.fixed-btns-example {\n  position: relative;\n  display: inline-block;\n  right: 0;\n  bottom: 0;\n}\n\nheader, main, footer.demo-footer {\n  padding-left: 240px;\n}\n\n@media only screen and (max-width : 992px) {\n  main, footer.demo-footer, header {\n    padding-left: 0;\n  }\n}\n\n.demo-page-submenu {\n  li:hover,\n  li.active {\n    background-color: color('deep-orange', 'lighten-2');\n    a {\n      color: white;\n    }\n  }\n}\n\n.navbar-fixed {\n  z-index: 10000;\n}\n.option-description {\n  font-size: 0.8rem;\n  margin-left: 40px;\n}\n\n.color-swatch-collection {\n\n  .color-swatch {\n    &[class*=\"darken\"] {\n      color: white;\n    }\n    height: 40px;\n    line-height: 40px;\n  }\n}\n\n.text-center {\n  text-align: center;\n}\n\n.font-size-18 {\n  font-size: 18px;\n}\n.position-relative {\n  position: relative;\n}\n\n"
  },
  {
    "path": "tests/dummy/app/styles/code.scss",
    "content": "/* Code blocks */\npre[class*=\"language-\"] {\n  padding: 1em;\n  margin: .5em 0;\n  overflow: auto;\n}\n\n:not(pre) > code[class*=\"language-\"],\npre[class*=\"language-\"] {\n  background: #f5f2f0;\n}\n\n/* Inline code */\n:not(pre) > code[class*=\"language-\"] {\n  padding: .1em;\n  border-radius: .3em;\n}\n"
  },
  {
    "path": "tests/dummy/app/styles/tests.scss",
    "content": "\n// Qunit test runner style fixes\n#qunit-testrunner-toolbar {\n  [type=\"checkbox\"] + label {\n    margin-left: 25px;\n    &:before {\n      left: -20px;\n    }\n  }\n  #qunit-modulefilter {\n    display: inherit;\n  }\n}"
  },
  {
    "path": "tests/dummy/app/templates/application.hbs",
    "content": "<header>\n  {{demo-nav}}\n</header>\n<ul class=\"side-nav fixed demo-page-submenu\" id=\"mobile-demo\">\n  {{#each demoSections as |section|}} {{#link-to section.route activeClass='active' tagName='li'}} {{#link-to section.route}}\n  {{section.name}} {{#if section.new}} {{#md-badge class='deep-orange lighten-1 new-badge right white-text'}}New{{/md-badge}}\n  {{/if}} {{/link-to}} {{/link-to}} {{/each}}\n</ul>\n<main>\n  {{outlet}}\n</main>\n\n{{!-- {{md-modal-container}} --}}\n\n<footer class=\"page-footer demo-footer deep-orange darken-2\">\n  {{#md-copyright text='Copyright Text' startYear=2014}}\n  <a class=\"grey-text text-lighten-4 right\" href=\"#!\">More Links</a>{{/md-copyright}}\n</footer>\n{{ember-anchor a=myQueryParam}}"
  },
  {
    "path": "tests/dummy/app/templates/badges.hbs",
    "content": "{{example-header title=\"Badges\"}}\n\n<div class='container'>\n  {{#options-panel}}\n    {{component-option optionId=\"text\"}}\n  {{/options-panel}}\n\n  <div class=\"section\">\n    {{example-snippet snippet='badges-simple'}}\n  </div>\n</div>\n"
  },
  {
    "path": "tests/dummy/app/templates/buttons.hbs",
    "content": "{{example-header title=\"Buttons\"}}\n\n<div class='container'>\n  {{#options-panel}}\n    {{component-option optionId=\"text\"}}\n    {{component-option optionId=\"action\"}}\n    {{component-option optionId=\"actionArg\" description=\"An object or value to be passed to action handlers when it fires\"}}\n    {{component-option optionId=\"icon\"}}\n    {{component-option optionId=\"iconPosition\" default=\"left\"}}\n    {{component-option optionId=\"buttonType\"}}\n    {{component-option optionId=\"isDisabled\" default=\"false\"}}\n  {{/options-panel}}\n\n  <div class=\"section\">\n    <h4 class=\"col s12 header\">Raised</h4>\n    {{example-snippet targetObject=this snippet='buttons-raised' class=\"button-example\"}}\n  </div>\n\n  <div class=\"section\">\n    <h4 class=\"col s12 header\">Floating</h4>\n    {{example-snippet targetObject=this snippet='buttons-floating' class=\"button-example\"}}\n  </div>\n\n  <div class=\"section\">\n    <h4 class=\"col s12 header\">Floating Group</h4>\n    {{example-snippet targetObject=this snippet='buttons-floating-group' class=\"button-example\"}}\n  </div>\n\n  <div class=\"section\">\n    <h4 class=\"col s12 header\">Dropdown</h4>\n    <p>Add a dropdown list to any button. Note: list items are wrapped in an &lt;ul&gt;-tag by the component.</p>\n\n    {{example-snippet snippet='buttons-dropdown' class=\"button-example\"}}\n\n    {{#options-panel}}\n      {{component-option optionId=\"hover\" default=\"false\" description=\"If true, the dropdown will open on hover.\"}}\n      {{component-option optionId=\"constrainWidth\" default=\"true\" description=\"If true, constrainWidth to the size of the dropdown activator.\"}}\n      {{component-option optionId=\"inDuration\" default=\"300\" description=\"The duration of the transition enter in milliseconds.\"}}\n      {{component-option optionId=\"outDuration\" default=\"300\" description=\"The duration of the transition out in milliseconds.\"}}\n      {{component-option optionId=\"gutter\" default=\"0\" description=\"This defines the spacing from the aligned edge.\"}}\n      {{component-option optionId=\"belowOrigin\" default=\"false\" description=\"If true, the dropdown will show below the activator.\"}}\n    {{/options-panel}}\n  </div>\n\n  <div class=\"section\">\n    <h4 class=\"col s12 header\">Flat</h4>\n    {{example-snippet snippet='buttons-flat'}}\n  </div>\n\n  <div class=\"section\">\n    <h4 class=\"col s12 header\">Submit</h4>\n    {{example-snippet snippet='buttons-submit'}}\n  </div>\n\n  <div class=\"section\">\n    <h4 class=\"col s12 header\">Large</h4>\n    {{example-snippet snippet='buttons-large'}}\n  </div>\n\n  <div class=\"section\">\n    <h4 class=\"col s12 header\">Disabled</h4>\n    {{example-snippet snippet='buttons-disabled'}}\n  </div>\n</div>\n"
  },
  {
    "path": "tests/dummy/app/templates/cards.hbs",
    "content": "{{example-header title=\"Cards\"}}\n\n<div class='container'>\n\n    {{#options-panel}}\n        {{component-option optionId=\"title\"}}\n        {{component-option optionId=\"titleClass\" default=\"black-text\"}}\n        {{component-option optionId=\"class\"}}\n        {{component-option optionId=\"image\"}}\n        {{component-option optionId=\"activator\"}}\n        {{component-option optionId=\"bodyClass\"}}\n    {{/options-panel}}\n\n    <div class=\"section\">\n        <h4 class=\"col s12 header\">Basic Card</h4>\n        {{example-snippet snippet='cards-basic' class='card-example' exampleFrameClass=\"col m8 s12\"}}\n    </div>\n\n    <div class=\"section\">\n        <h4 class=\"col s12 header\">Image Card</h4>\n        {{example-snippet snippet='cards-image' class='card-example' exampleFrameClass=\"col m6 s12\"}}\n    </div>\n\n    <div class=\"section\">\n        <h4 class=\"col s12 header\">Card Reveal</h4>\n        {{example-snippet snippet='cards-reveal' class='card-example' exampleFrameClass=\"col m6 s12\"}}\n    </div>\n\n    <div class=\"section\">\n        <h4 class=\"col s12 header\">Card Panel</h4>\n        {{example-snippet snippet='cards-panel' class='card-example' exampleFrameClass=\"col m8 s12\"}}\n    </div>\n\n</div>\n"
  },
  {
    "path": "tests/dummy/app/templates/collapsible.hbs",
    "content": "{{example-header title=\"Collapsible\"}}\n\n<div class='container'>\n\n    {{#options-panel}}\n        {{component-option optionId=\"title\" }}\n        {{component-option optionId=\"icon\" }}\n        {{component-option optionId=\"accordion\" default=\"true\"}}\n        {{component-option optionId=\"active\" }}\n        {{component-option optionId=\"action\" }}\n        {{component-option optionId=\"model\" }}\n    {{/options-panel}}\n\n    <div class=\"section\">\n        <h4 class=\"col s12 header\">Accordion</h4>\n        {{example-snippet snippet='collapsible-accordion' class='accordion-example'}}\n    </div>\n\n    <div class=\"section\">\n        <h4 class=\"col s12 header\">Expandable</h4>\n        {{example-snippet snippet='collapsible-expandable' class='expandable-example'}}\n    </div>\n\n    <div class=\"section\">\n        <h4 class=\"col s12 header\">Preselected Section</h4>\n        {{example-snippet snippet='collapsible-preselected' class='preselected-example'}}\n    </div>\n\n    <div class=\"section\">\n        <h4 class=\"col s12 header\">Action Section</h4>\n        {{#if lastClicked}}\n            <p>Last slide clicked: <span class=\"selected-action\">{{lastClicked}}</span></p>\n        {{/if}}\n        {{example-snippet snippet='collapsible-action' targetObject=this class='action-selection-example'}}\n    </div>\n\n</div>\n"
  },
  {
    "path": "tests/dummy/app/templates/collection.hbs",
    "content": "{{example-header title=\"Collection\"}}\n\n<div class='container'>\n    {{#options-panel}}\n      {{component-option optionId=\"content\" required=true description=\"Iterable collection\"}}\n      {{component-option optionId=\"header\" description=\"Header text\"}}\n      {{component-option optionId=\"headerView\" description=\"Header view (string or view class)\"}}\n    {{/options-panel}}\n\n    <p>For the following examples, let's say we have an array like this</p>\n    {{code-snippet name='collection-route.js'}}\n\n    <div class=\"section\">\n      <h4 class=\"col s12 header\">Basic Collection</h4>\n      {{example-snippet snippet='collection-basic' class='basic-collection-example' content=(or content model)}}\n    </div>\n    <div class=\"section\">\n      <h4 class=\"col s12 header\">Links</h4>\n      {{example-snippet snippet='collection-links' class='links-collection-example' content=(or content model)}}\n    </div>\n    <div class=\"section\">\n      <h4 class=\"col s12 header\">Simple Collection Header</h4>\n\n      {{example-snippet snippet='collection-header' class='simple-header-collection-example' content=(or content model)}}\n    </div>\n    <div class=\"section\">\n      <h4 class=\"col s12 header\">Custom Collection Header</h4>\n      <p>First you need to create a view</p>\n      {{code-snippet name='custom-collection-header.js'}}\n      <p>And a template for the header view</p>\n      {{code-snippet name='my-custom-header.hbs'}}\n      <p>You can then pass this view to the collection</p>\n      {{example-snippet snippet='collection-header-custom' class='custom-header-collection-example' content=(or content model)}}\n    </div>\n    <div class=\"section\">\n      <h4 class=\"col s12 header\">Secondary Content</h4>\n      {{example-snippet snippet='collection-secondary-content' class='secondary-content-collection-example' content=(or content model)}}\n    </div>\n    <div class=\"section\">\n      <h4 class=\"col s12 header\">Avatars</h4>\n      {{example-snippet snippet='collection-avatars' class='avatars-collection-example' content=(or content model)}}\n    </div>\n</div>\n"
  },
  {
    "path": "tests/dummy/app/templates/colors.hbs",
    "content": "{{example-header title=\"Colors\"}}\n\n<div class=\"container\">\n\t<div class=\"row\">\n\t\t<div class=\"col s12\">\n\t\t\t<h4>Use of Colors</h4>\n\t\t</div>\n\t\t<div class=\"col s12\">\n\t\t\t<p>\n\t\t\t\t<ul>\n\t\t\t\t\t<li>{{link-to 'Background Colors' 'colors' (query-params anchor='background-colors')}} </li>\n\t\t\t\t\t<li>{{link-to 'Text Colors' 'colors' (query-params anchor='text-colors')}} </li>\n\t\t\t\t\t<li>{{link-to 'Text Colors with Variants' 'colors' (query-params anchor='text-colors-with-variants')}} </li>\n\t\t\t\t</ul>\n\t\t\t</p>\n\t\t</div>\n\t</div>\n</div>\n\n{{!-- colors --}}\n<div class=\"container\"  data-anchor='background-colors'>\n\t<div class=\"row\">\n\t\t<div class=\"col s12\">\n\t\t\t<h4>Background Colors</h4>\n\t\t</div>\n\t</div>\n\t<div class=\"row\">\n\t\t{{#each colors as |color|}}\n\t\t<div class=\"col s12 m6 l6\">\n\t\t\t<h4 class=\"{{color.base}}-text\">{{color.base}}</h4>\n\t\t\t<div class=\"color-swatch-collection\">\n\t\t\t\t{{#each color.variants as |cv|}}\n\t\t\t\t<div class=\"color-swatch {{color.base}} {{cv}} text-center\">\n\t\t\t\t\t&lt;div class=\"{{color.base}} {{cv}}\"&gt;\n\t\t\t\t</div>\n\t\t\t\t{{/each}}\n\t\t\t</div>\n\t\t</div>\n\t\t{{/each}}\n\t</div>\n\t<div class=\"row\">\n\t\t{{#each boringColors as |color|}}\n\t\t<div class=\"col s12 m6 l6\">\n\t\t\t<h4>{{color.base}}</h4>\n\t\t\t<div class=\"color-swatch-collection\">\n\t\t\t\t{{#each color.variants as |cv|}}\n\t\t\t\t<div class=\"color-swatch {{color.base}} {{cv}} text-center\">\n\t\t\t\t\t&lt;div class=\"{{color.base}} {{cv}}\"&gt;\n\t\t\t\t</div>\n\t\t\t\t{{/each}}\n\t\t\t</div>\n\t\t</div>\n\t\t{{/each}}\n\t</div>\n</div>\n\n{{!-- text colors --}}\n<div class=\"container\" data-anchor='text-colors'>\n\t<div class=\"row\">\n\t\t<div class=\"col s12\">\n\t\t\t<h4>Text Colors</h4>\n\t\t</div>\n\t\t{{#each colors as |color|}}\n\t\t<div class=\"col s12 m4 l4\">\n\t\t\t<p class=\"{{color.base}}-text\" >\n\t\t\t\t<b>{{color.base}}</b>\n\t\t\t</p>\n\t\t\t<p>&lt;div class= \"{{color.base}}-text\"&gt;</p>\n\t\t</div>\n\t\t{{/each}}\n\t</div>\n\n{{!-- text-color-variants --}}\n\n  <div class=\"row\" data-anchor='text-colors-with-variants'>\n    <div class=\"col s12\">\n    <h4>Text Colors Using Darken, Lighten, or Accent</h4>\n    \t<p>\n\t\t\tTo use darken or lighten in text, just add <code>text-darken-1</code> or <code>text-lighten-5</code> to the class.\n\t\t</p>\n\t</div>\n  </div>\n  <div>\n    {{example-snippet snippet='text-color' class='text-color-example'}}\n  </div>\n</div>\n\n\n\n\n\n\n\n\n"
  },
  {
    "path": "tests/dummy/app/templates/components/.gitkeep",
    "content": ""
  },
  {
    "path": "tests/dummy/app/templates/components/component-option.hbs",
    "content": "<li>\n  {{optionId}},\n  {{#if required}}\n    {{#md-badge class='red darken-2 white-text'}}Required{{/md-badge}}\n  {{else}}\n    {{#md-badge class='grey lighten-2'}}Optional{{/md-badge}}\n  {{/if}}\n  default value <span class=\"default-value badge\">{{if default default 'null'}}</span>\n  {{#if description}}\n    <p class='option-description grey-text'>{{description}}</p>\n  {{/if}}\n</li>"
  },
  {
    "path": "tests/dummy/app/templates/components/demo-nav.hbs",
    "content": "<nav class=\"demo-page-nav deep-orange\">\n    <div class=\"nav-wrapper\">\n      <div class=\"container-fluid\">\n        <a href=\"#!\" class=\"brand-logo white-text\">\n          <img class=\"ember-logo hide-on-med-and-down\" src=\"images/ember-white.svg\" />\n          Materialize\n        </a>\n        <a href=\"#\" data-activates=\"mobile-demo\" class=\"button-collapse demo-button-collapse deep-orange-text text-darken-2\"><i class=\"mdi-navigation-menu\"></i></a>\n      </div>\n    </div>\n  </nav>"
  },
  {
    "path": "tests/dummy/app/templates/components/example-header.hbs",
    "content": "<div class=\"section index-banner\">\n  <div class=\"container\">\n    <div class=\"row\">\n      <div class=\"col s12 m9\">\n        <h1 class=\"header\">{{title}}</h1>\n      </div>\n    </div>\n  </div>\n</div>"
  },
  {
    "path": "tests/dummy/app/templates/components/example-snippet.hbs",
    "content": "{{#if emptySnippet}}\n  <div class=\"row\">\n    <div class=\"col s12\">\n      You must provide a snippet parameter\n    </div>\n  </div>\n{{else}}\n  <div class=\"row\">\n    <div class=\"{{exampleFrameClass}}\">\n      {{partial partialName}}\n    </div>\n  </div>\n\n  <div class=\"row\">\n    <div class=\"col s12\">\n      {{code-snippet name=snippetName}}\n    </div>\n  </div>\n{{/if}}\n"
  },
  {
    "path": "tests/dummy/app/templates/components/options-panel.hbs",
    "content": "  <div class=\"section\">\n    <div class=\"intro\">\n        <h4 class=\"col s12 header\">{{header}}</h4>\n        {{content}}\n        <ul>\n          {{yield}}\n        </ul>\n      </div>\n  </div>"
  },
  {
    "path": "tests/dummy/app/templates/copyright.hbs",
    "content": "{{example-header title=\"Copyright\"}}\n\n<div class='container'>\n    {{#options-panel}}\n      {{component-option optionId=\"text\"}}\n      {{component-option optionId=\"startYear\"}}\n    {{/options-panel}}\n\n    <div class=\"section\">\n        <h4 class=\"col s12 header\">Copyright</h4>\n        {{example-snippet snippet='copyright-basic' class='copyright-example'}}\n    </div>\n</div>\n"
  },
  {
    "path": "tests/dummy/app/templates/forms.hbs",
    "content": "{{example-header title=\"Forms\"}}\n\n\n<div class='container'>\n    <div class=\"section\">\n        <h4 class=\"col s12 header\">Input</h4>\n        {{#options-panel header=''}}\n            {{component-option optionId=\"label\"}}\n            {{component-option optionId=\"icon\"}}\n            {{component-option optionId=\"value\"}}\n            {{component-option optionId=\"type\" default=\"text\"}}\n            {{component-option optionId=\"required\" default=\"false\"}}\n            {{component-option optionId=\"readonly\" default=\"false\"}}\n            {{component-option optionId=\"disabled\" default=\"false\"}}\n            {{component-option optionId=\"maxlength\"}}\n            {{component-option optionId=\"pattern\"}}\n            {{component-option optionId=\"validate\" default=\"false\"}}\n            {{component-option optionId=\"autocomplete\"}}\n        {{/options-panel}}\n        <h5>Basic Input</h5>\n        {{example-snippet snippet='input-basic' class='input-example'}}\n        <h5>Input With Icon</h5>\n        {{example-snippet snippet='input-with-icon' class='input-example'}}\n        <h5>Typed Inputs</h5>\n        {{example-snippet snippet='input-types' class='input-example'}}\n    </div>\n\n\n\n\n    <div class=\"section\">\n        <h4 class=\"col s12 header\">Validations</h4>\n      <p>\n          Validations can be performed using HTML5 browser validation by passing validate=true to the component\n          or you can take advantage of the ember-validations addon w/out additional configuration of the component.\n          The following example simulates ember-validations style validation using an observer on the controller's name\n          property.\n      </p>\n      {{example-snippet snippet='form-validation-basic' model=model errors=errors}}\n      {{code-snippet name='form-validation-basic.js'}}\n    </div>\n    <div class=\"section\">\n        <h4 class=\"col s12 header\">Text Area</h4>\n        {{#options-panel header=''}}\n          {{component-option optionId=\"label\" }}\n          {{component-option optionId=\"icon\" }}\n          {{component-option optionId=\"value\" }}\n          {{component-option optionId=\"name\" }}\n          {{component-option optionId=\"required\" default=\"false\"}}\n          {{component-option optionId=\"readonly\" default=\"false\"}}\n          {{component-option optionId=\"disabled\" default=\"false\"}}\n          {{component-option optionId=\"maxlength\" }}\n          {{component-option optionId=\"validate\" default=\"false\"}}\n        {{/options-panel}}\n        <h5>Basic Textarea</h5>\n        {{example-snippet snippet='textarea-basic' class='input-example' message=message}}\n    </div>\n    <div class=\"section\">\n        <h4 class=\"col s12 header\">Select</h4>\n        {{#options-panel header=''}}\n            {{component-option optionId=\"label\" }}\n            {{component-option optionId=\"prompt\" }}\n            {{component-option optionId=\"content\" }}\n            {{component-option optionId=\"value\" }}\n            {{component-option optionId=\"optionValuePath\" }}\n            {{component-option optionId=\"optionLabelPath\" }}\n            {{component-option optionId=\"validate\" default=\"false\"}}\n        {{/options-panel}}\n        <h5>Basic Select</h5>\n        {{example-snippet snippet='select-basic' class='input-example' framework=framework frameworks=frameworks}}\n    </div>\n    <div class=\"section\">\n        <h4 class=\"col s12 header\">Date Input</h4>\n        {{#options-panel header=''}}\n            {{component-option optionId=\"label\" }}\n            {{component-option optionId=\"icon\" }}\n            {{component-option optionId=\"value\" }}\n            {{component-option optionId=\"required\" }}\n            {{component-option optionId=\"readonly\" }}\n            {{component-option optionId=\"disabled\" }}\n            {{component-option optionId=\"selectMonths\" default=\"true\"}}\n            {{component-option optionId=\"numberOfYears\" default=\"15\"}}\n            {{component-option optionId=\"min\" }}\n            {{component-option optionId=\"max\" }}\n            {{component-option optionId=\"validate\" default=\"false\"}}\n        {{/options-panel}}\n        <h5>Date Input</h5>\n        {{example-snippet snippet='input-date-basic' class='input-example' dateValue=dateValue}}\n        <p>If you were born on {{dateValue}}, you are about <span class=\"badge white-text light-blue\" style=\"position: inherit\">{{ageFromDate}}</span> years old.</p>\n\n    </div>\n    <div class=\"section\">\n        <h4 class=\"col s12 header\">Range Input</h4>\n        {{#options-panel header=''}}\n          {{component-option optionId=\"value\" default=0}}\n          {{component-option optionId=\"min\" default=0}}\n          {{component-option optionId=\"max\" default=100}}\n          {{component-option optionId=\"step\" default=5}}\n          {{component-option optionId=\"disabled\" default=false}}\n        {{/options-panel}}\n        <h5>Range Input</h5>\n        {{example-snippet snippet='input-range-basic' class='input-example' rangeValue=rangeValue}}\n    </div>\n    <div class=\"section\">\n        <h4 class=\"col s12 header\">Checkbox</h4>\n        {{#options-panel header=''}}\n          {{component-option optionId=\"checked\" default=\"false\"}}\n          {{component-option optionId=\"name\" }}\n          {{component-option optionId=\"disabled\" default=\"false\"}}\n        {{/options-panel}}\n        <h5>Checkbox</h5>\n        {{example-snippet snippet='input-check-basic' class='checkbox-example' checkboxIsSelected=checkboxIsSelected}}\n    </div>\n\n    <div class=\"section\">\n        <h4 class=\"col s12 header\">Switch</h4>\n        {{#options-panel header=''}}\n          {{component-option optionId=\"onLabel\" default=\"On\"}}\n          {{component-option optionId=\"offLabel\" default=\"Off\"}}\n          {{component-option optionId=\"checked\" default=\"false\"}}\n          {{component-option optionId=\"disabled\" default=\"false\"}}\n        {{/options-panel}}\n        <h5>Switch</h5>\n        {{example-snippet snippet='input-switch-basic' class='switch-example' switchValue=switchValue notSwitchValue=notSwitchValue}}\n    </div>\n    <div class=\"section\">\n        <h4 class=\"col s12 header\">Checkbox, Radio button and Switch lists</h4>\n        {{#options-panel header=''}}\n          {{component-option optionId=\"selection\" default=\"null\"}}\n          {{component-option optionId=\"content\" default=\"null\"}}\n          {{component-option optionId=\"optionValuePath\" default=\"content\"}}\n          {{component-option optionId=\"optionLabelPath\" default=\"content\"}}\n          {{component-option optionId=\"disabled\" default=\"false\"}}\n        {{/options-panel}}\n\n        <h5>Multi-Select Switch List</h5>\n        <p>Selection:\n          {{#each checkboxSelections as |str|}}\n            {{md-badge text=str class=\"default-value light-blue white-text\"}}\n          {{/each}}\n        </p>\n        {{example-snippet snippet='input-switch-list' class='checkbox-example' checkboxChoices=checkboxChoices checkboxSelections=checkboxSelections}}\n\n        <h5>Single-Select Switch List</h5>\n        <p>Selection: {{md-badge text=radioSelection class=\"default-value light-blue white-text\"}}</p>\n        {{example-snippet snippet='input-switch-list-exclusive' class='checkbox-example' radioSelection=radioSelection}}\n\n        <h5>Checkbox List</h5>\n        <p>Selection:\n          {{#each checkboxSelections as |str|}}\n            {{md-badge text=str class=\"default-value blue white-text\"}}\n          {{/each}}\n        </p>\n        {{example-snippet snippet='input-check-list' class='checkbox-example' checkboxChoices=checkboxChoices checkboxSelections=checkboxSelections}}\n\n        <h5>Radio List</h5>\n        <p>Selection: {{md-badge text=radioSelection class=\"default-value light-blue white-text\"}}</p>\n\n        {{example-snippet snippet='input-radio-list' class='checkbox-example' radioSelection=radioSelection}}\n    </div>\n\n</div>\n"
  },
  {
    "path": "tests/dummy/app/templates/index.hbs",
    "content": "<div class=\"section index-banner\">\n  <div class=\"container\">\n    <div class=\"row\">\n      <div class=\"col s12 m9\">\n        <h1 class=\"header\"><a href=\"http://materializecss.com/\" target=\"_blank\">Materialize.css</a></h1>\n        <h4 class=\"light deep-orange-text text-lighten-3\">A CSS Framework based on <a href=\"http://www.google.com/design/spec/material-design/introduction.html\" target=\"_blank\">Material Design</a> made simple, for Ember.js apps.</h4>\n      </div>\n    </div>\n  </div>\n</div>\n<div class=\"github-commit\">\n  <div class=\"container\">\n    <div class=\"commit\">\n      <a id=\"github-button\" href=\"https://github.com/sgasser/ember-cli-materialize\" class=\"btn right grey deep-orange-text lighten-2 text-darken-2 waves-effect waves-light hide-on-med-and-down\">\n      Github</a>\n    </div>\n  </div>\n</div>\n\n<div class='container'>\n  <h2 class=\"col s12 header\">Main features</h2>\n  <div class=\"section\">\n    <div class=\"intro\">\n      <ul>\n        <li>Imports Materialize sass (via <a href=\"https://www.npmjs.com/package/ember-cli-sass\" target=\"_blank\">ember-cli-sass</a>) and fonts into your app.</li>\n        <li>It's a components library for all Materialize components.</li>\n      </ul>\n    </div>\n  </div>\n\n  <h2 class=\"col s12 header\">Installation</h2>\n  <div class=\"section\">\n    <pre class=\" language-markup\">\n      <code class=\" col s12 language-markup\">\n        # install via npm\n        $ npm install ember-cli-materialize --save-dev\n        # make ember-cli fetch internal dependencies\n        $ ember g ember-cli-materialize\n      </code>\n    </pre>\n  </div>\n</div>\n"
  },
  {
    "path": "tests/dummy/app/templates/loader.hbs",
    "content": "{{example-header title=\"Loader\"}}\n\n\n<div class='container'>\n  {{#options-panel}}\n    {{component-option optionId=\"mode\"\n      default=\"indeterminate\"\n      description=\"Loader mode (determinate, indeterminate, circular)\"}}\n    {{component-option optionId=\"percent\"\n      default=\"0\"\n      description=\"Percent progress (determinate loader only)\"}}\n    {{component-option optionId=\"active\"\n      default=\"true\"\n      description=\"Whether the animation should be active or not (indeterminate loaders only)\"}}\n    {{component-option optionId=\"color\"\n      description=\"Circular loader color (null, yellow, blue, green, red). Setting this to null (default) will result in the color rotating\"}}\n    {{component-option optionId=\"size\"\n      default=\"big\"\n      description=\"Circular loader size (small, big)\"}}\n  {{/options-panel}}\n\n  <!-- INDETERMINATE LOADER -->\n  <div class=\"section\">\n    <h4 class=\"col s12 header\">Indeterminate Loader</h4>\n    {{example-snippet snippet='progress-indeterminate' class='loader-example'}}\n  </div>\n\n  <!-- DETERMINATE LOADER -->\n  <div class=\"section\">\n    <h4 class=\"col s12 header\">Determinate Loader</h4>\n    {{example-snippet snippet='progress-determinate' class='loader-example' percent=percent}}\n  </div>\n\n  <!-- CIRCULAR DETERMINATE LOADER -->\n  <div class=\"section\">\n    <h4 class=\"col s12 header\">Circular Indeterminate Loader</h4>\n    {{example-snippet snippet='progress-circular' class='loader-example'}}\n  </div>\n\n</div>\n"
  },
  {
    "path": "tests/dummy/app/templates/modal.hbs",
    "content": "{{example-header title=\"Modal\"}}\n\n<div class='container'>\n  {{#options-panel}} {{component-option optionId=\"close\" default=\"close\" description=\"action called by hitting 'esc' key or\n  clicking on overlay\"}} {{component-option optionId=\"isFooterFixed\" default=\"false\" description=\"toggle to add a fixed footer\n  to your modal\"}} {{/options-panel}}\n\n\n  <div class=\"section\">\n    <h4 class=\"col s12 header\">Modal</h4>\n    {{#md-btn action='openModal' class=\"open-modal-button\"}}Open modal{{/md-btn}} {{example-snippet snippet='modal-basic' class='modal-example'\n    modalIsOpen=modalIsOpen}}\n  </div>\n</div>\n\n\n<div class=\"container test-modal-container\">\n  {{#if isOpen}}\n    {{#md-modal close=(action (mut isOpen) false) class=\"test-modal\"}}\n        <div class=\"modal-content\">\n            <h4>test</h4>\n            \n        </div>\n        <div class=\"modal-footer\">\n            <a class=\"modal-action modal-close waves-effect waves-red btn-flat cancel-button\" onClick={{action (mut isOpen) false}}>\n                Cancel\n            </a>\n        </div>\n    {{/md-modal}}\n  {{else}}\n\n  <button class='test-modal-button' onClick={{action (mut isOpen) true }}>Open</button>\n  {{/if}}\n\n</div>"
  },
  {
    "path": "tests/dummy/app/templates/navbar.hbs",
    "content": "{{example-header title=\"Navbar\"}}\n\n<div class='container'>\n  {{#options-panel}}\n    {{component-option optionId=\"name\"}}\n  {{/options-panel}}\n\n\n  <div class=\"section\">\n    <h4 class=\"col s12 header\">Navbar with mobile collapse button</h4>\n    {{example-snippet snippet='navbar-basic' class='navbar-example'}}\n  </div>\n\n  <div class=\"section\">\n    <h4 class=\"col s12 header\">Navbar with custom homeRoute defined</h4>\n    {{example-snippet snippet='navbar-custom-home' class='navbar-custom-home'}}\n  </div>\n</div>\n"
  },
  {
    "path": "tests/dummy/app/templates/pagination.hbs",
    "content": "{{example-header title=\"Pagination\"}}\n\n<div class='container'>\n  {{#options-panel}}\n    {{component-option optionId=\"min\" default=1 required=true}}\n    {{component-option optionId=\"max\" default=1 required=true}}\n    {{component-option optionId=\"current\" default=1 required=true}}\n    {{component-option optionId=\"range\" default=5}}\n  {{/options-panel}}\n\n    <div class=\"section\">\n        <h4 class=\"col s12 header\">Pagination</h4>\n        {{example-snippet snippet='pagination-basic' class='pagination-example' page=page}}\n        {{code-snippet name='pagination-controller.js'}}\n    </div>\n</div>\n"
  },
  {
    "path": "tests/dummy/app/templates/parallax.hbs",
    "content": "{{example-header title=\"Parallax\"}}\n\n<div class='container'>\n  {{#options-panel}}\n    {{component-option optionId=\"image\"}}\n  {{/options-panel}}\n  <div class=\"section\">\n    <h4 class=\"col s12 header\">Parallax</h4>\n    {{example-snippet snippet='parallax-basic'}}\n  </div>\n\n</div>\n"
  },
  {
    "path": "tests/dummy/app/templates/snippets/badges-simple.hbs",
    "content": "<ul class=\"collection\">\n  <li class=\"collection-item\">\n    1. Steal Some Underpants\n  \n    {{md-badge class='deep-purple white-text' text=\"6\"}}\n  \n  </li>\n  <li class=\"collection-item\">2. ???\n    \n    {{#md-badge class='deep-orange lighten-2 white-text'}}\n    \t9\n    {{/md-badge}}\n\n  </li>\n  <li class=\"collection-item\">3. Profit</li>\n</ul>"
  },
  {
    "path": "tests/dummy/app/templates/snippets/buttons-disabled.hbs",
    "content": "{{md-btn text='Disabled button' isDisabled=true}}"
  },
  {
    "path": "tests/dummy/app/templates/snippets/buttons-dropdown.hbs",
    "content": "{{#md-btn-dropdown text='Button' belowOrigin=true}}\n\t<li><a href=\"#!\">one</a></li>\n\t<li><a href=\"#!\">two</a></li>\n\t<li class=\"divider\"></li>\n\t<li><a href=\"#!\">three</a></li>\n{{/md-btn-dropdown}}\n\n\n{{#md-btn-dropdown\n  text=\"Other Button\"\n  icon=\"material-icons\"\n  iconBody=\"arrow_drop_down\"\n  iconPosition=\"right\"}}\n  <li><a href=\"#!\">four</a></li>\n  <li><a href=\"#!\">five</a></li>\n  <li class=\"divider\"></li>\n  <li><a href=\"#!\">six</a></li>\n{{/md-btn-dropdown}}\n"
  },
  {
    "path": "tests/dummy/app/templates/snippets/buttons-flat.hbs",
    "content": "{{md-btn action='debug'\n\ttext='These' \n\tbuttonType='flat'\n\tclass='lime'}}\n\n{{#md-btn action='debug'\n\tbuttonType='flat'\n\tclass='purple lighten-2 white-text'}}\n\tButtons\n{{/md-btn}}\n\n{{#md-btn action='debug'\n\tbuttonType='flat'\n\tclass='yellow black-text'\n\twavesClass='waves-dark'}}\n\tAre\n{{/md-btn}}\n\n{{#md-btn action='debug'\n\tbuttonType='flat'\n\tclass='pink lighten-2 white-text'\n\twavesClass='waves-dark'}}\n\tFlat\n{{/md-btn}}\n"
  },
  {
    "path": "tests/dummy/app/templates/snippets/buttons-floating-group.hbs",
    "content": "{{#md-fixed-btns\n\tclass=\"fixed-btns-example\" \n\tbtnIcon=\"mdi-content-add\"\n\tbtnClass=\"btn-large lime darken-2\"\n\taction=\"firstAction\"\n\tactionArgs=\"0\"}}\n\t\n\t{{md-fixed-btn\n\t\tbtnClass=\"indigo\"\n\t\tbtnIcon=\"mdi-action-class\"\n\t\taction=\"anotherAction\"\n\t\tactionArgs=\"1\"}}\n\n\t{{md-fixed-btn\n\t\tbtnClass=\"deep-purple\"\n\t\tbtnIcon=\"mdi-content-grade\"\n\t\taction=\"anotherAction\"\n\t\tactionArgs=\"abc\"}}\n\n\t{{md-fixed-btn\n\t\tbtnClass=\"green\"\n\t\tbtnIcon=\"mdi-action-redeem\"\n\t\taction=\"anotherAction\"\n\t\tactionArgs=myData}}\n\n\t{{md-fixed-btn\n\t\tbtnClass=\"green\"\n\t\tbtnIcon=\"mdi-alert-warning\"\n\t\taction=\"anotherAction\"}}\n\n{{/md-fixed-btns}}\n"
  },
  {
    "path": "tests/dummy/app/templates/snippets/buttons-floating.hbs",
    "content": "<!-- A floating example -->\n{{md-btn icon='mdi-action-favorite'\n\taction='debug' buttonType='floating'\n\tclass='btn-large'}}"
  },
  {
    "path": "tests/dummy/app/templates/snippets/buttons-large.hbs",
    "content": "{{md-btn text='Large button'\n    action='debug'\n    buttonType='large'\n    class='deep-orange darken-2 white-text'}}"
  },
  {
    "path": "tests/dummy/app/templates/snippets/buttons-raised.hbs",
    "content": "<!-- A colored button -->\n{{md-btn text='Button'\n\taction='debug'\n\tclass='indigo darken-2'}}\n\n<!-- A colored button with an icon -->\n{{md-btn text='Button'\n\ticon='mdi-action-favorite'\n\taction='debug'\n\tclass='deep-purple darken-3'}}\n\n<!-- A colored button, right aligned, with colored text-->\n{{md-btn text='Button'\n\ticon='mdi-action-favorite'\n\ticonPosition='right'\n\taction='debug'\n\tclass='yellow deep-purple-text text-darken-3'}}"
  },
  {
    "path": "tests/dummy/app/templates/snippets/buttons-submit.hbs",
    "content": "{{md-btn-submit icon='mdi-content-send'\n    iconPosition='right'\n    text='Submit'}}"
  },
  {
    "path": "tests/dummy/app/templates/snippets/cards-basic.hbs",
    "content": "{{#md-card title=\"Card Title\" id=\"basic-card\"}}\n    {{#md-card-content}}\n        I am a very simple card. I am good at containing\n        small bits of information. I am convenient because\n        I require little markup to use effectively.\n    {{/md-card-content}}\n    {{#md-card-action}}\n        {{#link-to \"cards\"}}Link 1{{/link-to}}\n        {{#link-to \"cards\"}}Link 2{{/link-to}}\n    {{/md-card-action}}\n{{/md-card}}"
  },
  {
    "path": "tests/dummy/app/templates/snippets/cards-image.hbs",
    "content": "{{#md-card title=\"Card Title\"\n    titleClass=\"orange-text\"\n    image=\"images/ember.png\"\n    id=\"image-card\"}}\n\n    {{#md-card-content}}\n        I am a very simple card. I am good at containing\n        small bits of information. I am convenient because\n        I require little markup to use effectively.\n    {{/md-card-content}}\n\n    {{#md-card-action}}\n        {{#link-to \"cards\"}}Link 1{{/link-to}}\n        {{#link-to \"cards\"}}Link 2{{/link-to}}\n    {{/md-card-action}}\n\n{{/md-card}}\n"
  },
  {
    "path": "tests/dummy/app/templates/snippets/cards-panel.hbs",
    "content": "{{#md-card-panel class=\"teal\"\n    bodyClass=\"white-text\"\n    id=\"card-panel\"}}\n        I am a very simple card.\n        I am good at containing small bits of information.\n        I am convenient because I require little markup to use effectively.\n        I am similar to what is called a panel in other frameworks.\n{{/md-card-panel}}"
  },
  {
    "path": "tests/dummy/app/templates/snippets/cards-reveal.hbs",
    "content": "{{#md-card title=\"Card Title\"\n    image=\"images/ember-cli.png\"\n    activator=true\n    id=\"card-reveal\"}}\n\n    {{#md-card-content}}\n        {{#link-to \"cards\"}}This is a Link{{/link-to}}\n    {{/md-card-content}}\n\n    {{#md-card-reveal}}\n        Here is some more information about this product that is only revealed once clicked on.\n    {{/md-card-reveal}}\n\n{{/md-card}}"
  },
  {
    "path": "tests/dummy/app/templates/snippets/collapsible-accordion.hbs",
    "content": "{{#md-card-collapsible }}\n    {{#md-collapsible icon=\"mdi-image-filter-drama\"\n        title=\"One\"}}\n\n        Lorem ipsum dolor sit amet, consectetur\n        adipiscing elit, sed do eiusmod tempor incididunt ut\n        labore et dolore magna aliqua. Ut enim ad minim veniam,\n        quis nostrud exercitation ullamco laboris nisi ut\n        aliquip ex ea commodo consequat.\n    {{/md-collapsible}}\n    {{#md-collapsible icon=\"mdi-maps-place\"\n        title=\"Two\"}}\n\n        Lorem ipsum dolor sit amet, consectetur\n        adipiscing elit, sed do eiusmod tempor incididunt ut\n        labore et dolore magna aliqua. Ut enim ad minim veniam,\n        quis nostrud exercitation ullamco laboris nisi ut\n        aliquip ex ea commodo consequat.\n    {{/md-collapsible}}\n    {{#md-collapsible icon=\"mdi-social-whatshot\"\n        title=\"Three\"}}\n\n        Lorem ipsum dolor sit amet, consectetur\n        adipiscing elit, sed do eiusmod tempor incididunt ut\n        labore et dolore magna aliqua. Ut enim ad minim veniam,\n        quis nostrud exercitation ullamco laboris nisi ut\n        aliquip ex ea commodo consequat.\n    {{/md-collapsible}}\n{{/md-card-collapsible}}"
  },
  {
    "path": "tests/dummy/app/templates/snippets/collapsible-action.hbs",
    "content": "{{#md-card-collapsible }}\n    {{#md-collapsible icon=\"mdi-image-filter-drama\"\n        title=\"One\"\n        action=\"clicked\"\n        actionArg='cloud'}}\n\n        Lorem ipsum dolor sit amet, consectetur\n        adipiscing elit, sed do eiusmod tempor incididunt ut\n        labore et dolore magna aliqua. Ut enim ad minim veniam,\n        quis nostrud exercitation ullamco laboris nisi ut\n        aliquip ex ea commodo consequat.\n    {{/md-collapsible}}\n    {{#md-collapsible icon=\"mdi-maps-place\"\n        title=\"Two\"\n        action=\"clicked\"\n        actionArg='marker'}}\n\n        Lorem ipsum dolor sit amet, consectetur\n        adipiscing elit, sed do eiusmod tempor incididunt ut\n        labore et dolore magna aliqua. Ut enim ad minim veniam,\n        quis nostrud exercitation ullamco laboris nisi ut\n        aliquip ex ea commodo consequat.\n    {{/md-collapsible}}\n    {{#md-collapsible icon=\"mdi-social-whatshot\"\n        title=\"Three\"\n        action=\"clicked\"\n        actionArg='three'}}\n\n        Lorem ipsum dolor sit amet, consectetur\n        adipiscing elit, sed do eiusmod tempor incididunt ut\n        labore et dolore magna aliqua. Ut enim ad minim veniam,\n        quis nostrud exercitation ullamco laboris nisi ut\n        aliquip ex ea commodo consequat.\n    {{/md-collapsible}}\n{{/md-card-collapsible}}"
  },
  {
    "path": "tests/dummy/app/templates/snippets/collapsible-expandable.hbs",
    "content": "{{#md-card-collapsible accordion=false}}\n    {{#md-collapsible icon=\"mdi-image-filter-drama\"\n        title=\"One\"}}\n\n        Lorem ipsum dolor sit amet, consectetur\n        adipiscing elit, sed do eiusmod tempor incididunt ut\n        labore et dolore magna aliqua. Ut enim ad minim veniam,\n        quis nostrud exercitation ullamco laboris nisi ut\n        aliquip ex ea commodo consequat.\n    {{/md-collapsible}}\n    {{#md-collapsible icon=\"mdi-maps-place\"\n        title=\"Two\"}}\n\n        Lorem ipsum dolor sit amet, consectetur\n        adipiscing elit, sed do eiusmod tempor incididunt ut\n        labore et dolore magna aliqua. Ut enim ad minim veniam,\n        quis nostrud exercitation ullamco laboris nisi ut\n        aliquip ex ea commodo consequat.\n    {{/md-collapsible}}\n    {{#md-collapsible icon=\"mdi-social-whatshot\"\n        title=\"Three\"}}\n\n        Lorem ipsum dolor sit amet, consectetur\n        adipiscing elit, sed do eiusmod tempor incididunt ut\n        labore et dolore magna aliqua. Ut enim ad minim veniam,\n        quis nostrud exercitation ullamco laboris nisi ut\n        aliquip ex ea commodo consequat.\n    {{/md-collapsible}}\n{{/md-card-collapsible}}"
  },
  {
    "path": "tests/dummy/app/templates/snippets/collapsible-preselected.hbs",
    "content": "{{#md-card-collapsible }}\n    {{#md-collapsible icon=\"mdi-image-filter-drama\"\n        title=\"One\"}}\n\n        Lorem ipsum dolor sit amet, consectetur\n        adipiscing elit, sed do eiusmod tempor incididunt ut\n        labore et dolore magna aliqua. Ut enim ad minim veniam,\n        quis nostrud exercitation ullamco laboris nisi ut\n        aliquip ex ea commodo consequat.\n    {{/md-collapsible}}\n    {{#md-collapsible icon=\"mdi-maps-place\"\n        title=\"Two\"\n        active=true}}\n\n        Lorem ipsum dolor sit amet, consectetur\n        adipiscing elit, sed do eiusmod tempor incididunt ut\n        labore et dolore magna aliqua. Ut enim ad minim veniam,\n        quis nostrud exercitation ullamco laboris nisi ut\n        aliquip ex ea commodo consequat.\n    {{/md-collapsible}}\n    {{#md-collapsible icon=\"mdi-social-whatshot\"\n        title=\"Three\"}}\n\n        Lorem ipsum dolor sit amet, consectetur\n        adipiscing elit, sed do eiusmod tempor incididunt ut\n        labore et dolore magna aliqua. Ut enim ad minim veniam,\n        quis nostrud exercitation ullamco laboris nisi ut\n        aliquip ex ea commodo consequat.\n    {{/md-collapsible}}\n{{/md-card-collapsible}}"
  },
  {
    "path": "tests/dummy/app/templates/snippets/collection-avatars.hbs",
    "content": "{{#md-collection content=content as |item|}}\n  <div class='collection-item avatar'>\n    <i class=\"circle green mdi-action-favorite\"></i>\n    <span class=\"title\">{{item.name}}</span>\n    <p>A character from the TV series \"Breaking Bad\"</p>\n    {{#link-to item.route class='secondary-content'}}\n      <i class=\"mdi-action-favorite\"></i>\n    {{/link-to}}\n  </div>\n{{/md-collection}}"
  },
  {
    "path": "tests/dummy/app/templates/snippets/collection-basic.hbs",
    "content": "{{#md-collection content=content as |item|}}\n  <div class='collection-item'>\n    {{item.name}}\n  </div>\n{{/md-collection}}"
  },
  {
    "path": "tests/dummy/app/templates/snippets/collection-header-custom.hbs",
    "content": "{{#md-collection content=content\n  headerComponentName='my-custom-header'\n  header='People to Watch' as |item|}}\n  <div class='collection-item'>\n    {{item.name}}\n  </div>\n{{/md-collection}}"
  },
  {
    "path": "tests/dummy/app/templates/snippets/collection-header.hbs",
    "content": "{{#md-collection content=content header='People to Watch' as |item|}}\n  <div class='collection-item'>\n    {{item.name}}\n  </div>\n{{/md-collection}}"
  },
  {
    "path": "tests/dummy/app/templates/snippets/collection-links.hbs",
    "content": "{{#md-collection content=content as |item|}}\n  {{link-to item.name item.route class='collection-item'}}\n{{/md-collection}}"
  },
  {
    "path": "tests/dummy/app/templates/snippets/collection-secondary-content.hbs",
    "content": "{{#md-collection content=content as |item|}}\n  <div class='collection-item'>\n    {{item.name}}\n    {{#link-to item.route class='secondary-content'}}\n      <i class=\"mdi-action-favorite\"></i>\n    {{/link-to}}\n  </div>\n{{/md-collection}}"
  },
  {
    "path": "tests/dummy/app/templates/snippets/copyright-basic.hbs",
    "content": "<footer class='page-footer light-blue white-text'>\n    <div class=\"container\">\n        <div class=\"row\">\n            <div class=\"col m6 s12\">\n                <h5>Left</h5>\n            </div>\n            <div class=\"col m6 s12\">\n                <h5>Right</h5>\n            </div>\n        </div>\n    </div>\n    {{#md-copyright text='Copyright Text'\n        startYear=2014\n        class='light-blue darken-2 white-text'}}\n        <a class=\"white-text right\" href=\"#!\">\n          More Links\n        </a>\n    {{/md-copyright}}\n</footer>"
  },
  {
    "path": "tests/dummy/app/templates/snippets/form-validation-basic.hbs",
    "content": "<div class=\"row\">\n  {{md-input\n    value=model.name \n    label=\"Name\"\n    validate=true\n    class=\"col s12\"\n    errors=errors.name}}\n</div>\n"
  },
  {
    "path": "tests/dummy/app/templates/snippets/input-basic.hbs",
    "content": "{{md-input \n  value=\"Hi Mom\"\n  label='Example'\n  class=\"col s6\"\n  validate=true}}\n\n{{md-input \n  value=\"An error was found\"\n  label='Example'\n  class=\"col s6\"\n  validate=true\n  errors=(array \"We found an error\")}}"
  },
  {
    "path": "tests/dummy/app/templates/snippets/input-check-basic.hbs",
    "content": "{{md-check name=\"A single checkbox\" checked=checkboxIsSelected}}"
  },
  {
    "path": "tests/dummy/app/templates/snippets/input-check-list.hbs",
    "content": "{{md-checks\n    selection=checkboxSelections\n    content=checkboxChoices\n    optionValuePath='id'\n    optionLabelPath='label'}}\n"
  },
  {
    "path": "tests/dummy/app/templates/snippets/input-date-basic.hbs",
    "content": "<div class=\"row\">\n  {{md-input-date label='Birthday' value=dateValue class=\"col s12\"}}\n</div>\n"
  },
  {
    "path": "tests/dummy/app/templates/snippets/input-radio-list.hbs",
    "content": "{{#md-radios\n    selection=radioSelection\n    optionValuePath='id'\n    optionLabelPath='text'}}\n    <p>{{md-radio value=1 name=\"One\"}}</p>\n      <p>{{md-radio value=2 name=\"Two\"}}</p>\n{{/md-radios}}"
  },
  {
    "path": "tests/dummy/app/templates/snippets/input-range-basic.hbs",
    "content": "{{md-range value=rangeValue min=50 name=\"My Range\"}}"
  },
  {
    "path": "tests/dummy/app/templates/snippets/input-switch-basic.hbs",
    "content": "<div class=\"row\">\n  <div class=\"col s12\">\n    <p>{{md-switch checked=switchValue}}</p>\n    <p>{{md-switch checked=switchValue\n          onLabel=\"Enabled\"\n          offLabel=\"Disabled\"}}</p>\n    <p>{{md-switch disabled=notSwitchValue checked=false}}</p>\n  </div>\n</div>"
  },
  {
    "path": "tests/dummy/app/templates/snippets/input-switch-list-exclusive.hbs",
    "content": "{{#md-switches\n    multiple=false\n    selection=radioSelection\n    optionValuePath='id'\n    optionLabelPath='text'}}\n      <p>{{md-switch value=1 name=\"One\"}}</p>\n      <p>{{md-switch value=2 name=\"Two\"}}</p>\n{{/md-switches}}"
  },
  {
    "path": "tests/dummy/app/templates/snippets/input-switch-list.hbs",
    "content": "{{md-switches\n    selection=checkboxSelections\n    content=checkboxChoices\n    optionValuePath='id'\n    optionLabelPath='label'}}"
  },
  {
    "path": "tests/dummy/app/templates/snippets/input-types.hbs",
    "content": "<div class=\"row\">\n  {{md-input value=\"test\" label='Password' type=\"password\" class=\"col s12\" validate=true}}\n  {{md-input value=65 label='Number' type=\"number\" class=\"col s12\" validate=true}}\n  {{md-input value='(202) 555-1212' label='Phone' type=\"tel\" class=\"col s12\" validate=true}}\n  {{md-input value='test@test.com' label='Email' type=\"email\" class=\"col s12\" validate=true}}\n</div>\n"
  },
  {
    "path": "tests/dummy/app/templates/snippets/input-with-icon.hbs",
    "content": "<div class=\"row\">\n  {{md-input value=\"I love material design.\"\n    label=\"Example with color specification\"\n    icon=\"android light-blue-text\"\n    class=\"col s12\"\n    validate=true}}\n  {{md-input value=\"I love material design.\"\n    label=\"Example with icon and errors\"\n    icon=\"phone light-lime-text\"\n    class=\"col s12\"\n    validate=true\n    errors=(array \"Sorry, phones aren't cool anymore\")}}\n</div>\n"
  },
  {
    "path": "tests/dummy/app/templates/snippets/modal-basic.hbs",
    "content": "{{#if modalIsOpen}}\n    {{#md-modal close=(action (mut modalIsOpen) false) class=\"test-modal\"}}\n        <div class=\"modal-content\">\n            <h4>Ohai there!</h4>\n            <p>Star ember-cli-materialize if you love it on \n            <a href=\"https://github.com/truenorth/ember-cli-materialize\">github</a>!\n            </p>\n        </div>\n        <div class=\"modal-footer\">\n            <a class=\"modal-action modal-close waves-effect waves-orange btn-flat agree-button\" {{action 'agree'}}>\n                Done!\n            </a>\n            <a class=\"modal-action modal-close waves-effect waves-red btn-flat cancel-button\" onClick={{action (mut modalIsOpen) false}}>\n                Cancel\n            </a>\n        </div>\n    {{/md-modal}}\n{{/if}}"
  },
  {
    "path": "tests/dummy/app/templates/snippets/my-column-header.hbs",
    "content": "<i class=\"mdi-content-sort\"></i>\n<span class=\"green white-text\">{{column.header}}</span>"
  },
  {
    "path": "tests/dummy/app/templates/snippets/my-custom-header.hbs",
    "content": "<h4 class='white-text'>{{header}}</h4>"
  },
  {
    "path": "tests/dummy/app/templates/snippets/navbar-basic.hbs",
    "content": "{{#md-navbar name='Example' class='indigo'}}\n  <!-- A workaround to get the \"active\" class\n    to apply to the active <li> automatically -->\n  {{#link-to 'navbar' tagName='li'}}\n    {{link-to 'Navbar' 'navbar'}}\n  {{/link-to}}\n  {{#link-to 'tabs' tagName='li'}}\n    {{link-to 'Tabs' 'tabs'}}\n  {{/link-to}}\n{{/md-navbar}}"
  },
  {
    "path": "tests/dummy/app/templates/snippets/navbar-custom-home.hbs",
    "content": "{{#md-navbar name='Example' class='indigo' homeRoute='navbar'}}\n  <!-- A workaround to get the \"active\" class\n    to apply to the active <li> automatically -->\n  {{#link-to 'navbar' tagName='li'}}\n    {{link-to 'Navbar' 'navbar'}}\n  {{/link-to}}\n  {{#link-to 'tabs' tagName='li'}}\n    {{link-to 'Tabs' 'tabs'}}\n  {{/link-to}}\n{{/md-navbar}}"
  },
  {
    "path": "tests/dummy/app/templates/snippets/none.hbs",
    "content": ""
  },
  {
    "path": "tests/dummy/app/templates/snippets/pagination-basic.hbs",
    "content": "{{md-pagination min=1 max=12 current=page range=7}}"
  },
  {
    "path": "tests/dummy/app/templates/snippets/parallax-basic.hbs",
    "content": "{{md-parallax image=\"images/ember-cli.png\"}}\n  <div class=\"section grey lighten-2\">\n      <div class=\"row container\">\n          <h4>Hello Parallax</h4>\n          <p>My really amazing content goes here...</p>\n      </div>\n  </div>\n{{md-parallax image=\"images/ember-cli.png\"}}"
  },
  {
    "path": "tests/dummy/app/templates/snippets/progress-circular.hbs",
    "content": "{{md-loader mode=\"circular\"}}\n{{md-loader mode=\"circular\" size=\"small\"}}\n{{md-loader mode=\"circular\" color=\"blue\"}}\n{{md-loader mode=\"circular\" color=\"red\"}}\n{{md-loader mode=\"circular\" color=\"green\"}}\n{{md-loader mode=\"circular\" color=\"yellow\"}}"
  },
  {
    "path": "tests/dummy/app/templates/snippets/progress-determinate.hbs",
    "content": " <div class=\"col s2\">\n    {{md-input label=\"Percent\"\n        type=\"number\"\n        value=percent\n        step=5\n        min=0\n        max=100}}\n</div>\n<div class=\"col s10\">\n    {{md-loader mode=\"determinate\" percent=percent}}\n</div>"
  },
  {
    "path": "tests/dummy/app/templates/snippets/progress-indeterminate.hbs",
    "content": "{{md-loader}}"
  },
  {
    "path": "tests/dummy/app/templates/snippets/select-basic.hbs",
    "content": "<div class=\"row\">\n  {{md-select content=frameworks\n    value=framework\n    label=\"Framework\"\n    prompt=\"Please choose...\"\n    optionLabelPath=\"content.value\"\n    optionValuePath=\"content\" class=\"col s12\"}}\n</div>\n"
  },
  {
    "path": "tests/dummy/app/templates/snippets/tables-basic.hbs",
    "content": "<h5>Example 1</h5>\n\n{{#md-table content=content as |row|}}\n  {{md-table-col row=row valueBindingPath='id'}}\n  {{md-table-col row=row valueBindingPath='name'}}\n{{/md-table}}\n\n<h5>Example 2</h5>\n\n{{#md-table content=content as |row|}}\n  {{#md-table-col row=row key='id' header='Person Id'}}\n    {{row.id}}\n  {{/md-table-col}}\n  {{#md-table-col row=row key='name' header='Person Name'}}\n    {{row.name}}\n  {{/md-table-col}}\n{{/md-table}}"
  },
  {
    "path": "tests/dummy/app/templates/snippets/tables-bordered.hbs",
    "content": "{{#md-table content=content class='bordered' as |row|}}\n  {{md-table-col row=row valueBindingPath='id'}}\n  {{md-table-col row=row valueBindingPath='name'}}\n{{/md-table}}\n"
  },
  {
    "path": "tests/dummy/app/templates/snippets/tables-centered.hbs",
    "content": "{{#md-table content=content class='centered' as |row|}}\n  {{md-table-col row=row valueBindingPath='id'}}\n  {{md-table-col row=row valueBindingPath='name'}}\n{{/md-table}}"
  },
  {
    "path": "tests/dummy/app/templates/snippets/tables-custom-cell.hbs",
    "content": "{{#md-table content=content as |row|}}\n  {{#md-table-col row=row key='id' header='Person Id'}}\n    {{row.id}}\n  {{/md-table-col}}\n  {{#md-table-col row=row key='name' header='Person Name'}}\n    {{md-btn class='teal white-text' text=row.name}}\n  {{/md-table-col}}\n{{/md-table}}"
  },
  {
    "path": "tests/dummy/app/templates/snippets/tables-custom-header.hbs",
    "content": "{{#md-table content=content as |row|}}\n  {{md-table-col row=row\n    valueBindingPath='id'\n    headerComponentName='my-column-header'}}\n  {{md-table-col row=row\n    valueBindingPath='name'\n    headerComponentName='my-column-header'}}\n{{/md-table}}"
  },
  {
    "path": "tests/dummy/app/templates/snippets/tables-hoverable.hbs",
    "content": "{{#md-table content=content class='hoverable' as |row|}}\n  {{md-table-col row=row valueBindingPath='id'}}\n  {{md-table-col row=row valueBindingPath='name'}}\n{{/md-table}}"
  },
  {
    "path": "tests/dummy/app/templates/snippets/tables-responsive.hbs",
    "content": "{{#md-table content=content class='responsive-table' as |row|}}\n  {{md-table-col row=row valueBindingPath='id'}}\n  {{md-table-col row=row valueBindingPath='name'}}\n{{/md-table}}"
  },
  {
    "path": "tests/dummy/app/templates/snippets/tables-striped.hbs",
    "content": "{{#md-table content=content class='striped' as |row|}}\n  {{md-table-col row=row valueBindingPath='id'}}\n  {{md-table-col row=row valueBindingPath='name'}}\n{{/md-table}}"
  },
  {
    "path": "tests/dummy/app/templates/snippets/tabs-basic.hbs",
    "content": "{{md-tabs\n    content=basicTabsContent\n    selected=basicTabsSelection}}"
  },
  {
    "path": "tests/dummy/app/templates/snippets/tabs-declarative.hbs",
    "content": "{{#md-tabs\n  selected=basicTabsSelection}}\n  {{md-tab value='a' title=\"Sixth\"}}\n  {{md-tab value='b' title=\"Seventh\"}}\n  {{md-tab value='c' title=\"Eighth\"}}\n{{/md-tabs}}"
  },
  {
    "path": "tests/dummy/app/templates/snippets/tabs-optionpaths.hbs",
    "content": "{{md-tabs\n    content=alternateTabsContent\n    selected='b'\n    optionValuePath='key'\n    optionLabelPath='label'}}"
  },
  {
    "path": "tests/dummy/app/templates/snippets/text-color.hbs",
    "content": "<h5>\n<span class=\"blue-text text-lighten-2\">lighten-2</span>\n<span class=\"blue-text text-lighten-1\">lighten-1</span>\n<span class=\"blue-text\">blue-text</span>\n<span class=\"blue-text text-darken-1\">darken-1</span>\n<span class=\"blue-text text-darken-2\">darken-2</span>\n</h5>"
  },
  {
    "path": "tests/dummy/app/templates/snippets/textarea-basic.hbs",
    "content": "<div class=\"row\">\n  {{md-textarea label='Message'\n    value=message class=\"col s12\"}}\n</div>\n"
  },
  {
    "path": "tests/dummy/app/templates/tables.hbs",
    "content": "{{example-header title=\"Tables\"}}\n\n<div class='container'>\n\n  {{#options-panel componentName='md-table'}}\n    {{component-option optionId=\"content\" required=true description='an array of objects, each of which will become a row in the table'}}\n  {{/options-panel}}\n  {{#options-panel componentName='md-table-col'}}\n    {{component-option optionId=\"key\" required=true default='valueBindingPath' description='a unique key for the column -- used to maintain a set of column models'}}\n    {{component-option optionId=\"row\" required=true description=\"pass the row through each column, as it's yielded by the md-table component\"}}\n\n    {{component-option optionId=\"header\" default='valueBindingPath' description='column header text (or value)'}}\n    {{component-option optionId=\"valueBindingPath\" description='the on each row object to render into the columns cells'}}\n\n    {{component-option optionId=\"headerView\" default='ember-cli-materialize/views/default-column-view' description='Ember view to use to render the column header'}}\n\n  {{/options-panel}}\n  <div class=\"section\">\n    <h4 class=\"col s12 header\">Basic Table</h4>\n    {{example-snippet snippet='tables-basic' content=(or content model) class='basic-table'}}\n  </div>\n\n  <div class=\"section\">\n    <h4 class=\"col s12 header\">Bordered Table</h4>\n    {{example-snippet snippet='tables-bordered' content=(or content model)}}\n  </div>\n\n  <div class=\"section\">\n    <h4 class=\"col s12 header\">Striped Table</h4>\n    {{example-snippet snippet='tables-striped' content=(or content model)}}\n  </div>\n\n  <div class=\"section\">\n    <h4 class=\"col s12 header\">Hoverable Table</h4>\n    {{example-snippet snippet='tables-hoverable' content=(or content model)}}\n  </div>\n\n  <div class=\"section\">\n    <h4 class=\"col s12 header\">Centered Table</h4>\n    {{example-snippet snippet='tables-centered' content=(or content model)}}\n  </div>\n\n  <div class=\"section\">\n    <h4 class=\"col s12 header\">Responsive Table</h4>\n    {{example-snippet snippet='tables-responsive' content=(or content model)}}\n  </div>\n\n  <div class=\"section\">\n    <h4 class=\"col s12 header\">Customizing Cells</h4>\n    {{example-snippet snippet='tables-custom-cell' content=(or content model) class='custom-cells'}}\n  </div>\n\n  <div class=\"section\">\n    <h4 class=\"col s12 header\">Customizing Headers</h4>\n    <p>First you need to create a new column header view</p>\n    <b>app/views/my-column-header.js</b>\n    {{code-snippet name='my-column-header.js'}}\n    <b>app/templates/my-column-header.hbs</b>\n    {{code-snippet name='my-column-header.hbs'}}\n    <p>...and then you can pass this new column header view to one or more columns</p>\n    {{example-snippet snippet='tables-custom-header' content=(or content model) class='custom-headers'}}\n  </div>\n</div>\n"
  },
  {
    "path": "tests/dummy/app/templates/tabs.hbs",
    "content": "{{example-header title=\"Tabs\"}}\n\n<div class='container'>\n\n  {{#options-panel}}\n\n    {{component-option optionId=\"content\" default=\"[]\" description=\"tabs array\"}}\n    {{component-option optionId=\"selected\" description=\"selected tab id\"}}\n    {{component-option optionId=\"colWidth\" default=\"2\" description=\"width of tabs, in grid columns\"}}\n  {{/options-panel}}\n\n  <div class=\"section\">\n    <h4 class=\"col s12 header\">Basic Usage</h4>\n   <p>Creating a basic set of tabs is simple, and you have several syntax options to choose from.\n    First, you can pass an array of tabs to the <code>&#123;&#123;md-tabs&#125;&#125;</code> component:</p>\n    {{example-snippet snippet='tabs-basic' class='basic-tabs-example' basicTabsContent=basicTabsContent basicTabsSelection=basicTabsSelection exampleFrameClass='z-depth-1'}}\n    <p>By default, the structure of the array of tabs is expected to look like this</p>\n\n    <pre class=\" language-markup\">\n      <code class=\" col s8 language-markup\">\n      [ {id: 'a', title: 'First'},\n        {id: 'b', title: 'Second'},\n        {id: 'c', title: 'Third'} ]\n      </code>\n    </pre>\n    <p>If you wish to use different key and value properties, you may specify some additional options</p>\n\n      {{example-snippet snippet='tabs-optionpaths' class='second-tabs-example' alternateTabsContent=alternateTabsContent basicTabsSelection=basicTabsSelection exampleFrameClass='z-depth-1'}}\n\n    <h4 class=\"col s12 header\">Alternate Syntax</h4>\n    <p>The following syntax allows for more granular control over the particulars of each tab</p>\n    {{example-snippet snippet='tabs-declarative' class='third-tabs-example' basicTabsSelection=basicTabsSelection exampleFrameClass='z-depth-1'}}\n  </div>\n</div>"
  },
  {
    "path": "tests/dummy/config/environment.js",
    "content": "/* jshint node: true */\n\nmodule.exports = function(environment) {\n  var ENV = {\n    modulePrefix: 'dummy',\n    environment,\n    rootURL: '/',\n    locationType: 'auto',\n    EmberENV: {\n      FEATURES: {\n        // Here you can enable experimental features on an ember canary build\n        // e.g. 'with-controller': true\n      },\n      EXTEND_PROTOTYPES: {\n        // Prevent Ember Data from overriding Date.parse.\n        Date: false\n      }\n    },\n\n    APP: {\n      emberModalDialog: {\n        modalRootElementId: 'materialize-modal-root-element'\n      }\n      // Here you can pass flags/options to your application instance\n      // when it is created\n    }\n  };\n\n  if (environment === 'development') {\n    // ENV.APP.LOG_RESOLVER = true;\n    // ENV.APP.LOG_ACTIVE_GENERATION = true;\n    // ENV.APP.LOG_TRANSITIONS = true;\n    // ENV.APP.LOG_TRANSITIONS_INTERNAL = true;\n    // ENV.APP.LOG_VIEW_LOOKUPS = true;\n    // ENV.EmberENV.RAISE_ON_DEPRECATION = true;\n  }\n\n  if (environment === 'test') {\n    // Testem prefers this...\n    ENV.rootURL = '/';\n    ENV.locationType = 'none';\n    // ENV.EmberENV.RAISE_ON_DEPRECATION = !process.env['ALLOW_DEPRECATIONS'];\n\n    // keep test console output quieter\n    ENV.APP.LOG_ACTIVE_GENERATION = false;\n    ENV.APP.LOG_VIEW_LOOKUPS = false;\n\n    ENV.APP.rootElement = '#ember-testing';\n    ENV.APP.autoboot = false;\n  }\n\n  if (environment === 'production') {\n    ENV.locationType = 'hash';\n    ENV.rootURL = '/ember-cli-materialize/';\n    ENV.rootURL = '/ember-cli-materialize';\n    ENV.locationType = 'hash';\n  }\n\n  // ENV.contentSecurityPolicy = {\n  //   \"default-src\": \"'unsafe-inline'\",\n  //   \"script-src\": \"'self' 'unsafe-eval' 'unsafe-inline'\",\n  //   \"style-src\": \"'self' 'unsafe-inline'\",\n  //   \"connect-src\": \"'self' \",\n  //   \"img-src\": \"'self'\",\n  //   \"media-src\": \"'self'\"\n  // };\n\n  return ENV;\n};\n"
  },
  {
    "path": "tests/dummy/config/optional-features.json",
    "content": "{\n  \"jquery-integration\": true\n}\n"
  },
  {
    "path": "tests/dummy/config/targets.js",
    "content": "'use strict';\n\nconst browsers = [\n  'last 1 Chrome versions',\n  'last 1 Firefox versions',\n  'last 1 Safari versions'\n];\n\nconst isCI = !!process.env.CI;\nconst isProduction = process.env.EMBER_ENV === 'production';\n\nif (isCI || isProduction) {\n  browsers.push('ie 11');\n}\n\nmodule.exports = {\n  browsers\n};\n"
  },
  {
    "path": "tests/dummy/public/crossdomain.xml",
    "content": "<?xml version=\"1.0\"?>\n<!DOCTYPE cross-domain-policy SYSTEM \"http://www.adobe.com/xml/dtds/cross-domain-policy.dtd\">\n<cross-domain-policy>\n  <!-- Read this: www.adobe.com/devnet/articles/crossdomain_policy_file_spec.html -->\n\n  <!-- Most restrictive policy: -->\n  <site-control permitted-cross-domain-policies=\"none\"/>\n\n  <!-- Least restrictive policy: -->\n  <!--\n  <site-control permitted-cross-domain-policies=\"all\"/>\n  <allow-access-from domain=\"*\" to-ports=\"*\" secure=\"false\"/>\n  <allow-http-request-headers-from domain=\"*\" headers=\"*\" secure=\"false\"/>\n  -->\n</cross-domain-policy>\n"
  },
  {
    "path": "tests/dummy/public/robots.txt",
    "content": "# http://www.robotstxt.org\nUser-agent: *\nDisallow:\n"
  },
  {
    "path": "tests/helpers/destroy-app.js",
    "content": "import { run } from '@ember/runloop';\n\nexport default function destroyApp(application) {\n  run(application, 'destroy');\n}\n"
  },
  {
    "path": "tests/helpers/module-for-acceptance.js",
    "content": "import { module } from 'qunit';\nimport { resolve } from 'rsvp';\nimport startApp from '../helpers/start-app';\nimport destroyApp from '../helpers/destroy-app';\n\nexport default function(name, options = {}) {\n  module(name, {\n    beforeEach() {\n      this.application = startApp();\n\n      if (options.beforeEach) {\n        return options.beforeEach.apply(this, arguments);\n      }\n    },\n\n    afterEach() {\n      let afterEach = options.afterEach && options.afterEach.apply(this, arguments);\n      return resolve(afterEach).then(() => destroyApp(this.application));\n    }\n  });\n}\n"
  },
  {
    "path": "tests/helpers/resolver.js",
    "content": "import Resolver from '../../resolver';\nimport config from '../../config/environment';\n\nconst resolver = Resolver.create();\n\nresolver.namespace = {\n  modulePrefix: config.modulePrefix,\n  podModulePrefix: config.podModulePrefix\n};\n\nexport default resolver;\n"
  },
  {
    "path": "tests/helpers/selectable-item-group.js",
    "content": "import { run } from '@ember/runloop';\n\nimport { test } from 'ember-qunit';\n\nexport function deselectForSingleSelectionTest() {\n  test('deselecting checkbox works with multiple=false', function(assert) {\n    assert.expect(6);\n\n    const component = this.subject();\n    component.set('content', ['a', 'b', 'c']);\n    component.set('multiple', false);\n    component.setValueSelection('b', true);\n    this.render();\n\n    run(function() {\n      assert.equal(component.isValueSelected('a'), false, 'A should be un-checked');\n      assert.equal(component.isValueSelected('b'), true, 'B should be checked');\n      assert.equal(component.isValueSelected('c'), false, 'C should be un-checked');\n      assert.equal(component.get('selection'), 'b', 'Selection should be B and only B');\n\n      component.setValueSelection('b', false);\n      assert.equal(component.isValueSelected('b'), false, 'B should be un-checked after unselection');\n      assert.equal(component.get('selection'), null, 'Selection should be B and only B');\n    });\n  });\n}\n"
  },
  {
    "path": "tests/helpers/selectable-item.js",
    "content": "import { schedule, run } from '@ember/runloop';\nimport { isArray, A } from '@ember/array';\nimport $ from 'jquery';\n\nimport { test } from 'ember-qunit';\n\nexport function selectableItemHasRequiredParts() {\n  test('has required DOM elements', function(assert) {\n    assert.expect(3);\n\n    let component = this.subject();\n    this.render();\n\n    assert.equal(\n      component.$().hasClass('materialize-selectable-item'),\n      true,\n      'has materialize-selectable-item class on top-level element'\n    );\n    assert.equal(\n      component.$('input.materialize-selectable-item-input').length > 0,\n      true,\n      'has materialize-selectable-item-input on input'\n    );\n    assert.equal(\n      component.$('label.materialize-selectable-item-label').length > 0,\n      true,\n      'has materialize-selectable-item-label on label'\n    );\n  });\n}\n\nexport function disabledStateTest() {\n  test('disabled state', function(assert) {\n    assert.expect(3);\n\n    // Creates the component instance\n    let component = this.subject();\n    component.set('checked', false);\n    // Renders the component to the page\n    this.render();\n\n    assert.ok(!component.$('input').attr('disabled'), 'by default, component is not disabled');\n    run(function() {\n      component.set('disabled', true);\n      run.schedule('afterRender', function() {\n        assert.ok(!!component.$('input').attr('disabled'), 'disabling the component disables its input');\n        component.$('input').click();\n        assert.equal(component.get('checked'), false, 'clicking on component does nothing while it is disabled');\n      });\n    });\n  });\n}\n\nexport function selectTest(params = {}) {\n  test('clicking changes its state', function(assert) {\n    assert.expect(2);\n\n    let component = this.subject(params);\n    component.set('checked', false);\n    this.render();\n\n    assert.equal(component.get('checked'), false, 'Initially un-checked');\n\n    component.$('input').click();\n    assert.equal(component.get('checked'), true, 'After clicking, is checked');\n  });\n}\n\nexport function selectByLabelTest() {\n  test('clicking on label changes its state', function(assert) {\n    assert.expect(2);\n\n    let component = this.subject();\n    component.set('checked', false);\n\n    this.render();\n    assert.equal(component.get('checked'), false, 'Initially un-checked');\n    component.$('label').click();\n    assert.equal(component.get('checked'), true, 'After clicking, is checked');\n  });\n}\n\nexport function labelTest() {\n  test('component label', function(assert) {\n    assert.expect(2);\n\n    let component = this.subject();\n    component.set('name', 'Heisenberg');\n    this.render();\n\n    assert.equal(\n      component\n        .$()\n        .text()\n        .indexOf('Heisenberg') >= 0,\n      true,\n      'Label is rendered'\n    );\n\n    run(function() {\n      component.set('name', 'Walter');\n      schedule('afterRender', function() {\n        assert.equal(\n          component\n            .$()\n            .text()\n            .indexOf('Walter') >= 0,\n          true,\n          'Label is updated'\n        );\n      });\n    });\n  });\n}\n\nexport function groupItemsRenderTest() {\n  test('items render', function(assert) {\n    assert.expect(2);\n    let choices = A(['aaa', 'bbb', 'ccc', 'ddd', 'eee']);\n    // Creates the component instance\n    let component = this.subject({\n      content: choices,\n      selection: null\n    });\n\n    // Renders the component to the page\n    this.render();\n\n    assert.equal(\n      component.$('.materialize-selectable-item .materialize-selectable-item-label').length,\n      choices.length,\n      `${choices} items rendered`\n    );\n    assert.equal(\n      component\n        .$('.materialize-selectable-item .materialize-selectable-item-label')\n        .text()\n        .replace(/[\\s\\n]/g, ''),\n      choices.join(''),\n      'All choice labels are present'\n    );\n  });\n}\n\nexport function initialSelectionTest(selection) {\n  test('initial selection is correct', function(assert) {\n    assert.expect(1);\n    let choices = A(['aaa', 'bbb', 'ccc', 'ddd', 'eee']);\n    // Creates the component instance\n    let component = this.subject({\n      content: choices,\n      selection\n    });\n\n    // Renders the component to the page\n    this.render();\n\n    let shouldBeSelected = isArray(selection) ? selection : A([selection]);\n    let actuallySelected = component\n      .$('input:checked')\n      .map((idx, e) => {\n        let parentElement = $(e).closest('.materialize-selectable-item');\n        return parentElement\n          .find('.materialize-selectable-item-label')\n          .text()\n          .trim();\n      })\n      .toArray();\n    assert.equal(actuallySelected.join(''), shouldBeSelected.join(''), 'initial selection is correct');\n  });\n}\n\nexport function disabledGroupTest() {\n  test('disabling group disables all inputs', function(assert) {\n    let choices = A(['aaa', 'bbb', 'ccc', 'ddd', 'eee']);\n    // Creates the component instance\n    let component = this.subject({\n      content: choices,\n      selection: null\n    });\n    this.render();\n    assert.equal(component.$('input:disabled').length, 0, 'No inputs are initially disabled');\n    run(function() {\n      component.set('disabled', true);\n      run.schedule('afterRender', function() {\n        assert.equal(component.$('input:disabled').length, 5, 'All inputs are disabled when group is disabled');\n      });\n    });\n  });\n}\n"
  },
  {
    "path": "tests/helpers/start-app.js",
    "content": "import Application from '../../app';\nimport config from '../../config/environment';\nimport { merge } from '@ember/polyfills';\nimport { run } from '@ember/runloop';\n\nexport default function startApp(attrs) {\n  let attributes = merge({}, config.APP);\n  attributes.autoboot = true;\n  attributes = merge(attributes, attrs); // use defaults, but you can override;\n\n  return run(() => {\n    let application = Application.create(attributes);\n    application.setupForTesting();\n    application.injectTestHelpers();\n    return application;\n  });\n}\n"
  },
  {
    "path": "tests/index.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <meta charset=\"utf-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n    <title>Dummy Tests</title>\n    <meta name=\"description\" content=\"\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n\n    {{content-for \"head\"}}\n    {{content-for \"test-head\"}}\n\n    <link rel=\"stylesheet\" href=\"{{rootURL}}assets/vendor.css\">\n    <link rel=\"stylesheet\" href=\"{{rootURL}}assets/dummy.css\">\n    <link rel=\"stylesheet\" href=\"{{rootURL}}assets/test-support.css\">\n    <style>#blanket-main { position: relative; z-index: 99999; }</style>\n    {{content-for \"head-footer\"}}\n    {{content-for \"test-head-footer\"}}\n  </head>\n  <body>\n    {{content-for \"body\"}}\n    {{content-for \"test-body\"}}\n\n    <script src=\"/testem.js\" integrity=\"\"></script>\n    <script src=\"{{rootURL}}assets/vendor.js\"></script>\n    <script src=\"{{rootURL}}assets/test-support.js\"></script>\n    <script>\n      QUnit.config.testTimeout = 90000;\n    </script>\n    <script src=\"{{rootURL}}assets/dummy.js\"></script>\n    <script src=\"{{rootURL}}assets/tests.js\"></script>\n\n    {{content-for \"body-footer\"}}\n    {{content-for \"test-body-footer\"}}\n  </body>\n</html>\n"
  },
  {
    "path": "tests/integration/components/md-btn-dropdown-test.js",
    "content": "// import Ember from 'ember';\n// import { moduleForComponent, test } from 'ember-qunit';\n// import hbs from 'htmlbars-inline-precompile';\n\n// moduleForComponent('md-btn-dropdown', 'Integration | Component | md btn dropdown', {\n//   integration: true\n// });\n\n// test('it renders on origin', function(assert) {\n//   // Set any properties with this.set('myProperty', 'value');\n//   // Handle any actions with this.on('myAction', function(val) { ... });\n//   let done = assert.async();\n//   this.render(hbs`{{md-btn-dropdown}}`);\n\n//   assert.equal(this.$().text().trim(), '');\n\n//   // Template block usage:\n//   this.render(hbs`\n//    {{#md-btn-dropdown text='Button'}}\n//       <li><a href=\"#!\">one</a></li>\n//       <li><a href=\"#!\">two</a></li>\n//       <li class=\"divider\"></li>\n//       <li><a href=\"#!\">three</a></li>\n//     {{/md-btn-dropdown}}\n//   `);\n\n//   assert.equal(this.$().text().trim().replace(/[\\s\\n]+/g, '\\n'), `Button\n// one\n// two\n// three`);\n//   assert.equal(this.$('.dropdown-content.active').length, 0, 'Dropdown is closed');\n//   this.$('.dropdown-button').click();\n//   Ember.run(() => {\n//     Ember.run.later(() => {\n//       assert.equal(this.$('.dropdown-content.active').position().top < 5,  true, 'not below origin');\n//       done();\n//     }, 300);\n//   });\n// });\n"
  },
  {
    "path": "tests/integration/components/md-pagination-test.js",
    "content": "import { moduleForComponent, test } from 'ember-qunit';\nimport hbs from 'htmlbars-inline-precompile';\nimport $ from 'jquery';\n\nmoduleForComponent('md-pagination', 'Integration | Component | md pagination', {\n  integration: true\n});\n\ntest('Buttons render properly', function(assert) {\n  this.render(hbs`\n    {{md-pagination min=1 max=12 current=2 range=5}}\n  `);\n  let labels = $('.pagination li')\n    .toArray()\n    .map(x => x.innerText);\n  assert.equal(labels.length, 7, '5 labels + 2 directional buttons');\n  assert.deepEqual(labels, ['chevron_left', '1', '2', '3', '4', '5', 'chevron_right'], 'labels are correct');\n});\n\ntest('decrement button disables at lower end of range', function(assert) {\n  this.render(hbs`\n    {{md-pagination min=1 max=12 current=1 range=5}}\n  `);\n  let labels = $('.pagination li.disabled a.decrement')\n    .toArray()\n    .map(x => x.innerText);\n  assert.equal(labels.length, 1, 'left button is disabled at lower-end of range');\n});\n\ntest('increment button disables at lower end of range', function(assert) {\n  this.render(hbs`\n    {{md-pagination min=1 max=12 current=12 range=5}}\n  `);\n  let labels = $('.pagination li.disabled a.increment')\n    .toArray()\n    .map(x => x.innerText);\n  assert.equal(labels.length, 1, 'right button is disabled at upper-end of range');\n});\n"
  },
  {
    "path": "tests/integration/components/md-select-test.js",
    "content": "import { moduleForComponent, test } from 'ember-qunit';\nimport hbs from 'htmlbars-inline-precompile';\n\nmoduleForComponent('md-select', 'Integration | Component | md select', {\n  integration: true\n});\n\ntest('basic usage', function(assert) {\n  // Set any properties with this.set('myProperty', 'value');\n  // Handle any actions with this.on('myAction', function(val) { ... });\n\n  this.set('frameworks', [{ id: 1, value: 'Materialize CSS' }, { id: 2, value: 'Ember-CLI Materialize' }]);\n  // Template block usage:\n  this.render(hbs`\n    {{md-select content=frameworks\n      value=framework\n      label=\"Framework\"\n      prompt=\"Please choose...\"\n      optionLabelPath=\"content.value\"\n      optionValuePath=\"content\" class=\"col s12\"}}\n  `);\n  assert.equal(\n    this.$()\n      .text()\n      .trim()\n      .replace(/[\\s\\n]+/g, ''),\n    `Framework▼Pleasechoose...MaterializeCSSEmber-CLIMaterializePleasechoose...MaterializeCSSEmber-CLIMaterialize`\n  );\n\n  assert.ok(this.$('.md-select').hasClass('input-field'));\n\n  assert.equal(this.$('.md-select >label').text(), 'Framework');\n});\n\ntest('simple array usage', function(assert) {\n  // Set any properties with this.set('myProperty', 'value');\n  // Handle any actions with this.on('myAction', function(val) { ... });\n\n  this.set('content', ['Walter White', 'Jesee Pinkman', 'Gus Freng']);\n  // Template block usage:\n  this.render(hbs`\n    {{md-select\n      content=content\n      value=\"Jesee Pinkman\"}}\n  `);\n\n  assert.equal(\n    this.$()\n      .text()\n      .trim()\n      .replace(/[\\s\\n]+/g, ''),\n    '▼WalterWhiteJeseePinkmanGusFrengWalterWhiteJeseePinkmanGusFreng'\n  );\n  assert.equal(this.$('.md-select input').val(), 'Jesee Pinkman', 'Jesee Pinkman is initially selected');\n});\n"
  },
  {
    "path": "tests/test-helper.js",
    "content": "import Application from '../app';\nimport config from '../config/environment';\nimport { setApplication } from '@ember/test-helpers';\nimport { start } from 'ember-qunit';\n\nsetApplication(Application.create(config.APP));\n\nstart();\n"
  },
  {
    "path": "tests/unit/.gitkeep",
    "content": ""
  },
  {
    "path": "tests/unit/components/materialize-badge-test.js",
    "content": "import { run } from '@ember/runloop';\n\nimport { moduleForComponent, test } from 'ember-qunit';\n\nmoduleForComponent('md-badge', {\n  unit: true\n  // Specify the other units that are required for this test\n  // needs: ['component:foo', 'helper:bar']\n});\n\ntest('badge renders', function(assert) {\n  assert.expect(2);\n\n  // Creates the component instance\n  let component = this.subject();\n  assert.equal(component._state, 'preRender');\n\n  // Renders the component to the page\n  this.render();\n  assert.equal(component._state, 'inDOM');\n});\n\ntest('badge binding to the text property works', function(assert) {\n  assert.expect(2);\n\n  let component = this.subject();\n\n  this.render();\n  assert.equal(\n    component\n      .$()\n      .text()\n      .trim(),\n    '',\n    'By default the text property is empty'\n  );\n\n  run(function() {\n    component.set('text', 'Heisenberg');\n    run.schedule('afterRender', function() {\n      assert.equal(\n        component\n          .$()\n          .text()\n          .trim(),\n        'Heisenberg',\n        'Setting the text property updates the content of the badge'\n      );\n    });\n  });\n});\n"
  },
  {
    "path": "tests/unit/components/materialize-button-dropdown-test.js",
    "content": "import { moduleForComponent, test } from 'ember-qunit';\nimport $ from 'jquery';\n\nmoduleForComponent('md-btn-dropdown', 'component:md-btn-dropdown', {\n  unit: true,\n  needs: ['helper:bw-compat-icon']\n});\n\ntest('button dropdown renders', function(assert) {\n  assert.expect(2);\n\n  // creates the component instance\n  let component = this.subject();\n  assert.equal(component._state, 'preRender');\n\n  // appends the component to the page\n  this.render();\n  assert.equal(component._state, 'inDOM');\n});\n\ntest('button dropdown is added to the page', function(assert) {\n  this.subject();\n  this.render();\n\n  assert.ok($('button').length);\n});\n\ntest('dropdown shown when clicked', function(assert) {\n  let component = this.subject();\n  component.set('hover', false);\n  this.render();\n\n  let dropdownContentId = `#${component.get('_dropdownContentId')}`;\n  let dropdownElement = $(dropdownContentId);\n  assert.ok(!dropdownElement.is(':visible'));\n  component.$().trigger('mouseenter');\n  assert.ok(!dropdownElement.is(':visible'));\n  component.$().click();\n  assert.ok(dropdownElement.is(':visible'));\n});\n\ntest('dropdown shown when hovered', function(assert) {\n  let component = this.subject();\n  component.set('hover', true);\n  this.render();\n\n  let dropdownContentId = `#${component.get('_dropdownContentId')}`;\n  let dropdownElement = $(dropdownContentId);\n  assert.ok(!dropdownElement.is(':visible'));\n  component.$().trigger('mouseenter');\n  assert.ok(dropdownElement.is(':visible'));\n});\n"
  },
  {
    "path": "tests/unit/components/materialize-button-submit-test.js",
    "content": "import { moduleForComponent, test } from 'ember-qunit';\nimport $ from 'jquery';\n\nmoduleForComponent('md-btn-submit', 'component:md-btn-submit', {\n  unit: true,\n  needs: ['helper:bw-compat-icon']\n});\n\ntest('button submit renders', function(assert) {\n  assert.expect(2);\n\n  // creates the component instance\n  const component = this.subject();\n  assert.equal(component._state, 'preRender');\n\n  // appends the component to the page\n  this.render();\n  assert.equal(component._state, 'inDOM');\n});\n\ntest('button submit is added to the page', function(assert) {\n  this.subject();\n  this.render();\n\n  assert.ok($('button').length);\n});\n"
  },
  {
    "path": "tests/unit/components/materialize-button-test.js",
    "content": "import { run } from '@ember/runloop';\n\nimport { moduleForComponent, test } from 'ember-qunit';\n\nmoduleForComponent('md-btn', {\n  unit: true,\n  needs: ['helper:bw-compat-icon']\n});\n\ntest('button renders', function(assert) {\n  assert.expect(2);\n\n  // creates the component instance\n  let component = this.subject();\n  assert.equal(component._state, 'preRender');\n\n  // appends the component to the page\n  this.render();\n  assert.equal(component._state, 'inDOM');\n});\n\ntest('button is added to the page', function(assert) {\n  let component = this.subject();\n  this.render();\n  assert.ok(component.$().length);\n\n  assert.ok(component.$().hasClass('waves-light'));\n  assert.ok(component.$().hasClass('waves-effect'));\n  assert.ok(component.$().hasClass('btn'));\n});\n\ntest('button click test', function(assert) {\n  let clickedCount = 0;\n  let component = this.subject({\n    action() {\n      clickedCount++;\n    }\n  });\n  this.render();\n  component.$().click();\n  assert.equal(clickedCount, 1, 'action should fire when clicked');\n});\n\ntest('button click action does not fire if disabled', function(assert) {\n  let clickedCount = 0;\n  let component = this.subject({\n    isDisabled: true,\n    action() {\n      clickedCount++;\n    }\n  });\n  this.render();\n  component.$().click();\n\n  assert.equal(clickedCount, 0, 'action should not fire when clicked');\n});\n\ntest('button text test', function(assert) {\n  let component = this.subject();\n  this.render();\n  run(function() {\n    component.set('text', 'Button');\n  });\n\n  assert.equal(\n    component\n      .$()\n      .text()\n      .trim(),\n    'Button'\n  );\n});\n\ntest('button icon test', function(assert) {\n  let component = this.subject({\n    iconPosition: 'left'\n  });\n  this.render();\n\n  run(function() {\n    component.set('icon', 'mdi-action-favorite');\n  });\n\n  assert.ok(this.$('i').length);\n  assert.ok(this.$('i').hasClass('mdi-action-favorite'));\n  assert.ok(this.$('i').hasClass('left'));\n});\n\ntest('button icon with position test', function(assert) {\n  let component = this.subject();\n  this.render();\n\n  run(function() {\n    component.set('icon', 'mdi-action-favorite');\n    component.set('iconPosition', 'right');\n  });\n\n  assert.ok(this.$('i').length);\n  assert.ok(this.$('i').hasClass('mdi-action-favorite'));\n  assert.ok(this.$('i').hasClass('right'));\n});\n\ntest('button buttonType floating test', function(assert) {\n  let component = this.subject();\n  this.render();\n\n  run(function() {\n    component.set('buttonType', 'floating');\n  });\n\n  assert.ok(this.$().hasClass('waves-light'));\n  assert.ok(this.$().hasClass('waves-effect'));\n  assert.ok(this.$().hasClass('btn-floating'));\n});\n\ntest('button buttonType flat test', function(assert) {\n  let component = this.subject();\n  this.render();\n\n  run(function() {\n    component.set('buttonType', 'flat');\n  });\n\n  assert.ok(this.$().hasClass('waves-effect'));\n  assert.ok(this.$().hasClass('btn-flat'));\n});\n\ntest('button buttonType large test', function(assert) {\n  let component = this.subject();\n  this.render();\n\n  run(function() {\n    component.set('buttonType', 'large');\n  });\n\n  assert.ok(this.$().hasClass('waves-light'));\n  assert.ok(this.$().hasClass('waves-effect'));\n  assert.ok(this.$().hasClass('btn-large'));\n});\n\ntest('button isDisabled test', function(assert) {\n  let component = this.subject();\n  this.render();\n\n  run(function() {\n    component.set('isDisabled', 'true');\n  });\n\n  assert.ok(this.$().hasClass('waves-light'));\n  assert.ok(this.$().hasClass('disabled'));\n  assert.ok(this.$().hasClass('btn'));\n});\n"
  },
  {
    "path": "tests/unit/components/materialize-card-action-test.js",
    "content": "import { moduleForComponent, test } from 'ember-qunit';\nimport $ from 'jquery';\n\nmoduleForComponent('md-card-action', {\n  unit: true\n});\n\ntest('card action renders', function(assert) {\n  // creates the component instance\n  const component = this.subject();\n  assert.equal(component._state, 'preRender');\n\n  // appends the component to the page\n  this.render();\n  assert.equal(component._state, 'inDOM');\n});\n\ntest('card action it is added to the page', function(assert) {\n  this.subject();\n  this.render();\n  assert.ok($('div').length);\n});\n\ntest('card action is a DIV', function(assert) {\n  this.subject();\n  assert.equal('DIV', this.$().prop('tagName'));\n});\n\ntest('card action has passed classes', function(assert) {\n  this.subject({ classNames: 'teal' });\n\n  assert.ok(this.$().hasClass('card-action'));\n  assert.ok(this.$().hasClass('teal'));\n});\n"
  },
  {
    "path": "tests/unit/components/materialize-card-content-test.js",
    "content": "import { moduleForComponent, test } from 'ember-qunit';\nimport $ from 'jquery';\n\nmoduleForComponent('md-card-content', {\n  unit: true\n});\n\ntest('card-content renders', function(assert) {\n  // creates the component instance\n  const component = this.subject();\n  assert.equal(component._state, 'preRender');\n\n  // appends the component to the page\n  this.render();\n  assert.equal(component._state, 'inDOM');\n});\n\ntest('card-content is added to the page', function(assert) {\n  this.subject();\n  this.render();\n  assert.ok($('div').length);\n});\n\ntest('card-content is a DIV', function(assert) {\n  this.subject();\n  assert.equal('DIV', this.$().prop('tagName'));\n});\n\ntest('card-content has passed classes', function(assert) {\n  this.subject({ classNames: 'teal' });\n\n  assert.ok(this.$().hasClass('card-content'));\n  assert.ok(this.$().hasClass('teal'));\n});\n"
  },
  {
    "path": "tests/unit/components/materialize-card-panel-test.js",
    "content": "import { moduleForComponent, test } from 'ember-qunit';\nimport $ from 'jquery';\n\nmoduleForComponent('md-card-panel', {\n  unit: true\n});\n\ntest('card panel renders', function(assert) {\n  // creates the component instance\n  const component = this.subject();\n  assert.equal(component._state, 'preRender');\n\n  // appends the component to the page\n  this.render();\n  assert.equal(component._state, 'inDOM');\n});\n\ntest('card panel it is added to the page', function(assert) {\n  this.subject();\n  this.render();\n  assert.ok($('div').length);\n});\n\ntest('card panel is a DIV', function(assert) {\n  this.subject();\n  assert.equal('DIV', this.$().prop('tagName'));\n});\n\ntest('card panel has passed classes', function(assert) {\n  this.subject({ classNames: 'teal' });\n\n  assert.ok(this.$().hasClass('card-panel'));\n  assert.ok(this.$().hasClass('teal'));\n});\n"
  },
  {
    "path": "tests/unit/components/materialize-card-reveal-test.js",
    "content": "import { moduleForComponent, test } from 'ember-qunit';\nimport $ from 'jquery';\n\nmoduleForComponent('md-card-reveal', {\n  unit: true\n});\n\ntest('card reveal renders', function(assert) {\n  // creates the component instance\n  const component = this.subject();\n  assert.equal(component._state, 'preRender');\n\n  // appends the component to the page\n  this.render();\n  assert.equal(component._state, 'inDOM');\n});\n\ntest('card reveal it is added to the page', function(assert) {\n  this.subject();\n  this.render();\n  assert.ok($('div').length);\n});\n\ntest('card reveal is a DIV', function(assert) {\n  this.subject();\n  assert.equal('DIV', this.$().prop('tagName'));\n});\n\ntest('card reveal has passed classes', function(assert) {\n  this.subject({ classNames: 'teal' });\n\n  assert.ok(this.$().hasClass('card-reveal'));\n  assert.ok(this.$().hasClass('teal'));\n});\n"
  },
  {
    "path": "tests/unit/components/materialize-card-test.js",
    "content": "import { moduleForComponent, test } from 'ember-qunit';\nimport $ from 'jquery';\n\nmoduleForComponent('md-card', {\n  unit: true\n});\n\ntest('card renders', function(assert) {\n  // creates the component instance\n  const component = this.subject();\n  assert.equal(component._state, 'preRender');\n\n  // appends the component to the page\n  this.render();\n  assert.equal(component._state, 'inDOM');\n});\n\ntest('card is added to the page', function(assert) {\n  this.subject();\n  this.render();\n  assert.ok($('div').length);\n});\n\ntest('card a DIV', function(assert) {\n  this.subject();\n  assert.equal('DIV', this.$().prop('tagName'));\n});\n\ntest('card has title properties', function(assert) {\n  const component = this.subject({ title: 'My Component', titleClass: 'green-text' });\n  assert.equal('My Component', component.get('title'));\n  assert.equal('green-text', component.get('titleClass'));\n});\n\ntest('card has an image', function(assert) {\n  const component = this.subject({ image: 'images/ember.png' });\n  assert.equal('images/ember.png', component.get('image'));\n});\n\ntest('card has passed classes', function(assert) {\n  this.subject({ classNames: 'teal' });\n\n  assert.ok(this.$().hasClass('card'));\n  assert.ok(this.$().hasClass('teal'));\n});\n"
  },
  {
    "path": "tests/unit/components/materialize-checkbox-test.js",
    "content": "import { moduleForComponent, test } from 'ember-qunit';\n\nimport {\n  disabledStateTest,\n  selectTest,\n  labelTest,\n  selectByLabelTest,\n  selectableItemHasRequiredParts\n} from '../../helpers/selectable-item';\n\nmoduleForComponent('md-check', {\n  unit: true\n  // Specify the other units that are required for this test\n  // needs: ['component:foo', 'helper:bar']\n});\n\ntest('it renders', function(assert) {\n  assert.expect(2);\n\n  // Creates the component instance\n  const component = this.subject();\n  assert.equal(component._state, 'preRender');\n\n  // Renders the component to the page\n  this.render();\n  assert.equal(component._state, 'inDOM');\n});\n\nselectableItemHasRequiredParts();\nselectTest();\nselectByLabelTest();\ndisabledStateTest();\nlabelTest();\n"
  },
  {
    "path": "tests/unit/components/materialize-checkboxes-test.js",
    "content": "import { A } from '@ember/array';\nimport $ from 'jquery';\nimport { moduleForComponent, test } from 'ember-qunit';\n\nimport { disabledGroupTest, groupItemsRenderTest, initialSelectionTest } from '../../helpers/selectable-item';\n\nimport { deselectForSingleSelectionTest } from '../../helpers/selectable-item-group';\n\nmoduleForComponent('md-checks', {\n  unit: true,\n  needs: ['component:md-checks-check']\n});\n\ntest('it renders', function(assert) {\n  assert.expect(2);\n\n  // Creates the component instance\n  let component = this.subject();\n  assert.equal(component._state, 'preRender');\n\n  // Renders the component to the page\n  this.render();\n  assert.equal(component._state, 'inDOM');\n});\n\ntest('simple array test', function(assert) {\n  let component = this.subject({\n    content: A(['Dexter Morgan', 'Deborah Morgan', 'Harry Morgan']),\n    selection: A(['Harry Morgan'])\n  });\n  this.render();\n  assert.deepEqual(\n    component\n      .$('label')\n      .toArray()\n      .map(x => $(x).text()),\n    ['Dexter Morgan', 'Deborah Morgan', 'Harry Morgan'],\n    'Choices are valid'\n  );\n  assert.equal(component.$('input[type=\"checkbox\"]')[2].checked, true, 'Third checkbox is checked');\n});\n\ndisabledGroupTest();\ngroupItemsRenderTest();\ninitialSelectionTest(A(['bbb', 'ccc']));\n\ndeselectForSingleSelectionTest();\n"
  },
  {
    "path": "tests/unit/components/materialize-collapsible-card-test.js",
    "content": "import { moduleForComponent, test } from 'ember-qunit';\n\nmoduleForComponent('md-card-collapsible', {\n  unit: true\n  // specify the other units that are required for this test\n  // needs: ['component:foo', 'helper:bar']\n});\n\ntest('collapsible card renders', function(assert) {\n  assert.expect(2);\n\n  // creates the component instance\n  const component = this.subject();\n  assert.equal(component._state, 'preRender');\n\n  // renders the component to the page\n  this.render();\n  assert.equal(component._state, 'inDOM');\n});\n"
  },
  {
    "path": "tests/unit/components/materialize-collapsible-test.js",
    "content": "import { moduleForComponent, test } from 'ember-qunit';\n\nmoduleForComponent('md-collapsible', {\n  unit: true,\n  needs: ['helper:bw-compat-icon']\n});\n\ntest('collapsible renders', function(assert) {\n  assert.expect(2);\n\n  // creates the component instance\n  const component = this.subject();\n  assert.equal(component._state, 'preRender');\n\n  // renders the component to the page\n  this.render();\n  assert.equal(component._state, 'inDOM');\n});\n"
  },
  {
    "path": "tests/unit/components/materialize-copyright-test.js",
    "content": "import { run } from '@ember/runloop';\n\nimport { moduleForComponent, test } from 'ember-qunit';\n\nmoduleForComponent('md-copyright', {\n  unit: true\n  // specify the other units that are required for this test\n  // needs: ['component:foo', 'helper:bar']\n});\n\ntest('copyright renders', function(assert) {\n  assert.expect(2);\n\n  // creates the component instance\n  let component = this.subject();\n  assert.equal(component._state, 'preRender');\n\n  // renders the component to the page\n  this.render();\n  assert.equal(component._state, 'inDOM');\n});\n\ntest('copyright binding to the text property works', function(assert) {\n  assert.expect(2);\n\n  let component = this.subject();\n  let currentYear = new Date().getFullYear();\n\n  this.render();\n  assert.equal(\n    component\n      .$()\n      .text()\n      .trim(),\n    `\\u00A9 ${currentYear}`,\n    'By default the text property is empty'\n  );\n\n  run(function() {\n    component.set('text', 'Copyright Text');\n    run.schedule('afterRender', function() {\n      assert.equal(\n        component\n          .$()\n          .text()\n          .trim(),\n        `\\u00A9 ${currentYear} Copyright Text`,\n        'Setting the text property updates the content of the copyright component'\n      );\n    });\n  });\n});\n\ntest('copyright null startYear', function(assert) {\n  // get the component to test\n  let component = this.subject();\n  this.render();\n\n  // confirm the component's date is 'currentYear'\n  run(function() {\n    run.schedule('afterRender', function() {\n      assert.equal(\n        component.get('date'),\n        new Date().getFullYear(),\n        'Not setting the startYear property just shows the currentYear'\n      );\n    });\n  });\n});\n\ntest('copyright current startYear', function(assert) {\n  // get the component to test\n  // set the startYear equal to the currentYear\n  let currentYear = new Date().getFullYear();\n  let component = this.subject({ startYear: currentYear });\n  this.render();\n\n  // confirm the component's date is 'currentYear'\n  run(function() {\n    run.schedule('afterRender', function() {\n      assert.equal(\n        component.get('date'),\n        currentYear,\n        'Setting the startYear property to the same year as the currentYear just shows the currentYear'\n      );\n    });\n  });\n});\n\ntest('copyright past startYear', function(assert) {\n  // get the component to test\n  // set the startYear a year less than the currentYear\n  let currentYear = new Date().getFullYear();\n  let component = this.subject({ startYear: currentYear - 1 });\n  this.render();\n\n  // confirm the component's date is 'startYear - currentYear'\n  run(function() {\n    run.schedule('afterRender', function() {\n      assert.equal(\n        component.get('date'),\n        `${currentYear - 1} - ${currentYear}`,\n        'Setting the startYear property to a year before the currentYear shows startYear - currentYear'\n      );\n    });\n  });\n});\n\ntest('copyright future startYear', function(assert) {\n  assert.throws(() => {\n    this.subject({ startYear: new Date().getFullYear() + 1 });\n    this.render();\n  }, /Property startYear must be less than or equal to the current year/);\n});\n"
  },
  {
    "path": "tests/unit/components/materialize-date-input-test.js",
    "content": "import { moduleForComponent, test } from 'ember-qunit';\n\nmoduleForComponent('md-input-date', {\n  unit: true,\n  needs: ['helper:bw-compat-icon']\n  // specify the other units that are required for this test\n});\n\ntest('date input renders', function(assert) {\n  assert.expect(2);\n\n  // creates the component instance\n  const component = this.subject();\n  assert.equal(component._state, 'preRender');\n\n  // renders the component to the page\n  this.render();\n  assert.equal(component._state, 'inDOM');\n});\n\ntest('date input has class input-field', function(assert) {\n  const component = this.subject();\n  this.render();\n  assert.ok(component.$().hasClass('input-field'));\n});\n\ntest('date input has a label', function(assert) {\n  const label = 'My Input';\n  const component = this.subject({ label });\n  this.render();\n  assert.equal(component.$('>label').text(), label);\n});\n\ntest('date input has a value', function(assert) {\n  const value = '15 January, 1974';\n  const component = this.subject({ value });\n  this.render();\n  assert.equal(component.$('>input').val(), value);\n});\n\ntest('date input label is active with value', function(assert) {\n  const component = this.subject({ value: '15 January, 1974' });\n  this.render();\n  assert.ok(component.$('>label').hasClass('active'));\n});\n\ntest('date input has an icon', function(assert) {\n  const icon = 'mdi-action-face-unlock';\n  const component = this.subject({ icon });\n  this.render();\n  assert.ok(component.$('>i').hasClass(icon));\n});\n"
  },
  {
    "path": "tests/unit/components/materialize-input-field-test.js",
    "content": "import { moduleForComponent, test } from 'ember-qunit';\n\nmoduleForComponent('md-input-field', {\n  unit: true\n  // specify the other units that are required for this test\n  // needs: ['component:foo', 'helper:bar']\n});\n\ntest('input field renders', function(assert) {\n  assert.expect(2);\n\n  // creates the component instance\n  const component = this.subject();\n  assert.equal(component._state, 'preRender');\n\n  // renders the component to the page\n  this.render();\n  assert.equal(component._state, 'inDOM');\n});\n\ntest('input field has class input-field', function(assert) {\n  const component = this.subject();\n  this.render();\n  assert.ok(component.$().hasClass('input-field'));\n});\n\ntest('input field has class input-field', function(assert) {\n  const component = this.subject();\n  this.render();\n  assert.ok(component.$().hasClass('input-field'));\n});\n\ntest('input field has a label', function(assert) {\n  const label = 'My Input';\n  const component = this.subject({ label });\n  this.render();\n  assert.equal(component.get('label'), label);\n});\n\ntest('input field has a value', function(assert) {\n  const value = 'My Input Value';\n  const component = this.subject({ value });\n  this.render();\n  assert.equal(component.get('value'), value);\n});\n\ntest('input field has an icon', function(assert) {\n  const icon = 'mdi-action-face-unlock';\n  const component = this.subject({ icon });\n  this.render();\n  assert.equal(component.get('icon'), icon);\n});\n"
  },
  {
    "path": "tests/unit/components/materialize-input-test.js",
    "content": "import { moduleForComponent, test } from 'ember-qunit';\n\nmoduleForComponent('md-input', {\n  unit: true,\n  needs: ['helper:bw-compat-icon', 'service:keyboard']\n});\n\ntest('input renders', function(assert) {\n  assert.expect(2);\n\n  // creates the component instance\n  const component = this.subject();\n  assert.equal(component._state, 'preRender');\n\n  // renders the component to the page\n  this.render();\n  assert.equal(component._state, 'inDOM');\n});\n\ntest('input has class input-field', function(assert) {\n  const component = this.subject();\n  this.render();\n  assert.ok(component.$().hasClass('input-field'));\n});\n\ntest('input has a label', function(assert) {\n  const label = 'My Input';\n  const component = this.subject({ label });\n  this.render();\n  assert.equal(component.$('>label').text(), label);\n});\n\ntest('input has a value', function(assert) {\n  const value = 'My Input Value';\n  const component = this.subject({ value });\n  this.render();\n  assert.equal(component.$('>input').val(), value);\n});\n\ntest('input label is active with value', function(assert) {\n  const component = this.subject({ value: 'some text' });\n  this.render();\n  assert.ok(component.$('>label').hasClass('active'));\n});\n\ntest('input has an icon', function(assert) {\n  const icon = 'mdi-action-face-unlock';\n  const component = this.subject({ icon });\n  this.render();\n  assert.ok(component.$('>i').hasClass(icon));\n});\n\ntest('input has type password', function(assert) {\n  const type = 'password';\n  const component = this.subject({ type });\n  this.render();\n  assert.equal(component.$('>input').attr('type'), type);\n});\n"
  },
  {
    "path": "tests/unit/components/materialize-loader-test.js",
    "content": "import { moduleForComponent, test } from 'ember-qunit';\n\nmoduleForComponent('md-loader', {\n  unit: true\n  // Specify the other units that are required for this test\n  // needs: ['component:foo', 'helper:bar']\n});\n\ntest('loader renders', function(assert) {\n  assert.expect(2);\n\n  // Creates the component instance\n  const component = this.subject();\n  assert.equal(component._state, 'preRender');\n\n  // Renders the component to the page\n  this.render();\n  assert.equal(component._state, 'inDOM');\n});\n"
  },
  {
    "path": "tests/unit/components/materialize-pagination-test.js",
    "content": "// import { run } from '@ember/runloop';\n\n// import { moduleForComponent, test } from 'ember-qunit';\n\n// moduleForComponent('md-pagination', {\n//   unit: true\n//   // Specify the other units that are required for this test\n//   // needs: ['component:foo', 'helper:bar']\n// });\n\n// test('it renders', function(assert) {\n//   assert.expect(2);\n\n//   // Creates the component instance\n//   let component = this.subject();\n//   assert.equal(component._state, 'preRender');\n\n//   // Renders the component to the page\n//   this.render();\n//   assert.equal(component._state, 'inDOM');\n// });\n\n// test('window range calculation', function(assert) {\n//   assert.expect(3);\n\n//   // Creates the component instance\n//   let component = this.subject({\n//     min: 1,\n//     max: 12,\n//     current: 2,\n//     range: 5\n//   });\n//   assert.deepEqual(component.get('windowRange'), { low: 1, high: 5 }, 'Off center window range calculates correctly');\n//   run(function() {\n//     component.setProperties({\n//       min: 1,\n//       max: 12,\n//       current: 7,\n//       range: 5\n//     });\n//     assert.deepEqual(\n//       component.get('windowRange'),\n//       { low: 5, high: 9 },\n//       'Changes to current position updates window range'\n//     );\n\n//     component.setProperties({\n//       min: 1,\n//       max: 12,\n//       current: 7,\n//       range: 7\n//     });\n//     assert.deepEqual(component.get('windowRange'), { low: 4, high: 10 }, 'Changes to range width updates window range');\n//   });\n// });\n\n// test('increment button', function(assert) {\n//   assert.expect(5);\n\n//   // Creates the component instance\n//   let component = this.subject({\n//     min: 1,\n//     max: 12,\n//     current: 2,\n//     range: 5\n//   });\n//   this.render();\n//   component.$('.increment').click();\n//   assert.equal(component.get('current'), 3, 'Increment button incremenets position');\n//   component.$('.decrement').click();\n//   component.$('.decrement').click();\n//   assert.equal(component.get('current'), 1, 'Decrement button incremenets position');\n//   assert.equal(component.$('li.disabled').length, 1, 'Decrement button disables at lower edge of range');\n//   component.set('current', 7);\n//   assert.equal(component.$('li.disabled').length, 0, 'No buttons disabled in middle of range');\n//   component.set('current', 12);\n//   // run.schedule('afterRender', function() {\n//   assert.equal(component.$('li.disabled').length, 1, 'Increment button disables at upper edge of range');\n//   // });\n// });\n"
  },
  {
    "path": "tests/unit/components/materialize-parallax-test.js",
    "content": "import { moduleForComponent, test } from 'ember-qunit';\n\nmoduleForComponent('md-parallax', {\n  unit: true\n  // specify the other units that are required for this test\n  // needs: ['component:foo', 'helper:bar']\n});\n\ntest('parallax renders', function(assert) {\n  assert.expect(2);\n\n  // creates the component instance\n  const component = this.subject();\n  assert.equal(component._state, 'preRender');\n\n  // renders the component to the page\n  this.render();\n  assert.equal(component._state, 'inDOM');\n});\n\ntest('parallax has class parallax-container', function(assert) {\n  const component = this.subject();\n  this.render();\n  assert.ok(component.$().hasClass('parallax-container'));\n});\n\ntest('parallax has div with class parallax', function(assert) {\n  const component = this.subject();\n  this.render();\n  assert.ok(component.$('>div').hasClass('parallax'));\n});\n\ntest('parallax has an image', function(assert) {\n  const component = this.subject();\n  this.render();\n  assert.ok(component.$('>div>img').length);\n});\n"
  },
  {
    "path": "tests/unit/components/materialize-radios-test.js",
    "content": "import { A } from '@ember/array';\nimport $ from 'jquery';\nimport hbs from 'htmlbars-inline-precompile';\nimport { moduleForComponent, test } from 'ember-qunit';\n\nmoduleForComponent('md-radios', {\n  integration: true\n});\n\ntest('simple array test, with initial selection', function(assert) {\n  this.setProperties({\n    content: A(['Dexter Morgan', 'Deborah Morgan', 'Harry Morgan']),\n    selection: 'Harry Morgan'\n  });\n  this.render(hbs`\n    {{md-radios content=content selection=selection}}\n  `);\n\n  assert.deepEqual(\n    this.$('label')\n      .toArray()\n      .map(x =>\n        $(x)\n          .text()\n          .trim()\n      ),\n    ['Dexter Morgan', 'Deborah Morgan', 'Harry Morgan'],\n    'Choices are valid'\n  );\n  assert.equal(this.$('input[type=\"radio\"]')[2].checked, true, 'Third radio is checked');\n});\n\ntest('disabled test', function(assert) {\n  this.setProperties({\n    content: A(['Dexter Morgan', 'Deborah Morgan', 'Harry Morgan']),\n    selection: 'Harry Morgan'\n  });\n  this.render(hbs`\n    {{md-radios content=content selection=selection disabled=true}}\n  `);\n  assert.equal(this.$('input:disabled').length, 3, 'All three inputs disabled');\n});\n\ntest('deselecting checkbox works with multiple=false', function(assert) {\n  this.setProperties({\n    content: ['a', 'b', 'c'],\n    selection: 'b'\n  });\n\n  this.render(hbs`\n    {{md-radios content=content selection=selection}}\n  `);\n\n  assert.equal(this.$('input:checked').length, 1, 'One item should be selected');\n  assert.equal(this.$('input:checked').attr('value'), 'b', 'Item b should be selected');\n\n  this.$('input[value=\"a\"]').click();\n  assert.equal(this.$('input:checked').length, 1, 'One item should be selected');\n  assert.equal(this.$('input:checked').attr('value'), 'a', 'Item a should be selected');\n\n  this.$('input[value=\"b\"]').click();\n  assert.equal(this.$('input:checked').length, 1, 'One item should be selected');\n  assert.equal(this.$('input:checked').attr('value'), 'b', 'Item b should be selected');\n\n  this.$('input[value=\"b\"]').click();\n  assert.equal(this.$('input:checked').length, 1, 'One item should be selected');\n  assert.equal(this.$('input:checked').attr('value'), 'b', 'Item b should be selected');\n\n  this.$('input[value=\"c\"]').click();\n  assert.equal(this.$('input:checked').length, 1, 'One item should be selected');\n  assert.equal(this.$('input:checked').attr('value'), 'c', 'Item c should be selected');\n});\n"
  },
  {
    "path": "tests/unit/components/materialize-range-test.js",
    "content": "import { moduleForComponent, test } from 'ember-qunit';\n\nimport { disabledStateTest, labelTest } from '../../helpers/selectable-item';\n\nmoduleForComponent('md-range', {\n  unit: true,\n  // Specify the other units that are required for this test\n  needs: ['service:keyboard']\n});\n\ntest('it renders', function(assert) {\n  assert.expect(2);\n\n  // Creates the component instance\n  const component = this.subject();\n  assert.equal(component._state, 'preRender');\n\n  // Renders the component to the page\n  this.render();\n  assert.equal(component._state, 'inDOM');\n});\n\ndisabledStateTest();\nlabelTest();\n"
  },
  {
    "path": "tests/unit/components/materialize-switch-test.js",
    "content": "import { run } from '@ember/runloop';\n\nimport { moduleForComponent, test } from 'ember-qunit';\n\nimport { selectTest, disabledStateTest, labelTest } from '../../helpers/selectable-item';\n\nmoduleForComponent('md-switch', {\n  unit: true\n  // Specify the other units that are required for this test\n  // needs: ['component:foo', 'helper:bar']\n});\n\ntest('it renders', function(assert) {\n  assert.expect(2);\n\n  // Creates the component instance\n  let component = this.subject();\n  assert.equal(component._state, 'preRender');\n\n  // Renders the component to the page\n  this.render();\n  assert.equal(component._state, 'inDOM');\n});\n\ntest('custom on/off labels', function(assert) {\n  assert.expect(4);\n\n  // Creates the component instance\n  let component = this.subject();\n  component.set('checked', false);\n\n  // Renders the component to the page\n  this.render();\n  assert.equal(component.$('.offlabel').text(), 'Off', 'by default, off label is \"Off\"');\n  assert.equal(component.$('.onlabel').text(), 'On', 'by default, off label is \"On\"');\n  run(function() {\n    component.setProperties({\n      offLabel: 'disabled',\n      onLabel: 'enabled'\n    });\n    run.schedule('afterRender', function() {\n      assert.equal(component.$('.offlabel').text(), 'disabled', 'off label should be customized');\n      assert.equal(component.$('.onlabel').text(), 'enabled', 'on label should be customized');\n    });\n  });\n});\n\nselectTest();\ndisabledStateTest();\nlabelTest();\n"
  },
  {
    "path": "tests/unit/components/materialize-switches-test.js",
    "content": "import { A } from '@ember/array';\nimport $ from 'jquery';\nimport { moduleForComponent, test } from 'ember-qunit';\n\nimport { disabledGroupTest, groupItemsRenderTest, initialSelectionTest } from '../../helpers/selectable-item';\n\nimport { deselectForSingleSelectionTest } from '../../helpers/selectable-item-group';\n\nmoduleForComponent('md-switches', {\n  unit: true,\n  needs: ['component:md-switches-switch']\n});\n\ntest('it renders', function(assert) {\n  assert.expect(2);\n\n  // Creates the component instance\n  const component = this.subject();\n  assert.equal(component._state, 'preRender');\n\n  // Renders the component to the page\n  this.render();\n  assert.equal(component._state, 'inDOM');\n});\n\ntest('simple array test', function(assert) {\n  const component = this.subject({\n    content: A(['Dexter Morgan', 'Deborah Morgan', 'Harry Morgan']),\n    selection: A(['Deborah Morgan'])\n  });\n  this.render();\n  assert.deepEqual(\n    component\n      .$('.switch-label')\n      .toArray()\n      .map(x => $(x).text()),\n    ['Dexter Morgan', 'Deborah Morgan', 'Harry Morgan'],\n    'Choices are valid'\n  );\n  assert.equal(component.$('input[type=\"checkbox\"]')[1].checked, true, 'Second checkbox is checked');\n});\n\ndisabledGroupTest();\ngroupItemsRenderTest();\ninitialSelectionTest(A(['bbb', 'ccc']));\n\ndeselectForSingleSelectionTest();\n"
  },
  {
    "path": "tests/unit/components/materialize-tabs-tab-test.js",
    "content": "/**\n * @public\n * Testing of this component is included in the materialize-tabs test cases, since this component\n * cannot exist independently\n */\n"
  },
  {
    "path": "tests/unit/components/materialize-tabs-test.js",
    "content": "import { A } from '@ember/array';\nimport { schedule, scheduleOnce, run } from '@ember/runloop';\n\nimport { moduleForComponent, test } from 'ember-qunit';\n\nmoduleForComponent('md-tabs', {\n  unit: true,\n  // Specify the other units that are required for this test\n  needs: ['component:md-tab']\n});\n\ntest('it renders', function(assert) {\n  assert.expect(2);\n\n  // Creates the component instance\n  const component = this.subject();\n\n  component.setProperties({\n    content: new A([{ id: 'a', title: 'First' }, { id: 'b', title: 'Second' }, { id: 'c', title: 'Third' }]),\n    selected: 'a'\n  });\n\n  assert.equal(component._state, 'preRender');\n\n  // Renders the component to the page\n  this.render();\n  assert.equal(component._state, 'inDOM');\n});\n\ntest('programatically setting selected tab', function(assert) {\n  assert.expect(2);\n\n  // Creates the component instance\n  const component = this.subject();\n\n  component.setProperties({\n    content: new A([{ id: 'a', title: 'First' }, { id: 'b', title: 'Second' }, { id: 'c', title: 'Third' }]),\n    selected: 'a'\n  });\n  this.render();\n  assert.equal(\n    component\n      .$('.active')\n      .text()\n      .trim(),\n    'First',\n    'First tab is initially selected'\n  );\n\n  run(function() {\n    component.set('selected', 'b');\n    schedule('afterRender', function() {\n      assert.equal(\n        component\n          .$('.active')\n          .text()\n          .trim(),\n        'Second',\n        'Second tab is now selected'\n      );\n    });\n  });\n});\n\ntest('No initial selection - first tab should be selected', function(assert) {\n  assert.expect(1);\n\n  // Creates the component instance\n  const component = this.subject();\n\n  component.setProperties({\n    content: new A([{ id: 'a', title: 'First' }, { id: 'b', title: 'Second' }, { id: 'c', title: 'Third' }])\n  });\n\n  run(() => {\n    this.render();\n    scheduleOnce('afterRender', () => {\n      assert.equal(\n        component\n          .$('.active')\n          .text()\n          .trim(),\n        'First',\n        'First tab is initially selected'\n      );\n    });\n  });\n});\n\ntest('Empty content - should render an empty UL', function(assert) {\n  assert.expect(1);\n\n  // Creates the component instance\n  const component = this.subject();\n\n  component.setProperties({\n    content: new A([])\n  });\n  this.render();\n  assert.equal(component.$('.materialize-tabs-tab').length, 0, 'No tabs should be rendered');\n});\n\ntest('Col width - should result in the correct CSS classes', function(assert) {\n  assert.expect(3);\n\n  // Creates the component instance\n  const component = this.subject();\n  assert.equal(component.get('colWidth'), 2, 'Default col width is 2');\n  component.setProperties({\n    colWidth: 4,\n    content: new A([{ id: 'a', title: 'First' }, { id: 'b', title: 'Second' }, { id: 'c', title: 'Third' }])\n  });\n  this.render();\n  assert.equal(component.get('composableChildren')[0].get('colWidth'), 4, 'Col width on tab set applies to tabs');\n  assert.equal(component.get('composableChildren')[0].get('_colClass'), 's4', 'tab col class is correct');\n});\n"
  },
  {
    "path": "tests/unit/components/materialize-textarea-test.js",
    "content": "import { moduleForComponent, test } from 'ember-qunit';\n\nmoduleForComponent('md-textarea', {\n  unit: true,\n  needs: ['helper:bw-compat-icon', 'service:keyboard']\n  // specify the other units that are required for this test\n});\n\ntest('textarea renders', function(assert) {\n  assert.expect(2);\n\n  // creates the component instance\n  const component = this.subject();\n  assert.equal(component._state, 'preRender');\n\n  // renders the component to the page\n  this.render();\n  assert.equal(component._state, 'inDOM');\n});\n\ntest('textarea has class input-field', function(assert) {\n  const component = this.subject();\n  this.render();\n  assert.ok(component.$().hasClass('input-field'));\n});\n\ntest('textarea has a label', function(assert) {\n  const label = 'My Input';\n  const component = this.subject({ label });\n  this.render();\n  assert.equal(component.$('>label').text(), label);\n});\n\ntest('textarea has a value', function(assert) {\n  const value = 'My Input Value';\n  const component = this.subject({ value });\n  this.render();\n  assert.equal(component.get('value'), value);\n});\n\ntest('textarea label is active with value', function(assert) {\n  const component = this.subject({ value: 'some text' });\n  this.render();\n  assert.ok(component.$('>label').hasClass('active'));\n});\n\ntest('textarea has an icon', function(assert) {\n  const icon = 'mdi-action-face-unlock';\n  const component = this.subject({ icon });\n  this.render();\n  assert.ok(component.$('>i').hasClass(icon));\n});\n"
  },
  {
    "path": "tests/unit/components/md-collection-test.js",
    "content": "import { moduleForComponent, test } from 'ember-qunit';\n\nmoduleForComponent('md-collection', 'Unit | Component | md collection', {\n  // Specify the other units that are required for this test\n  // needs: ['component:foo', 'helper:bar'],\n  unit: true\n});\n\ntest('it renders', function(assert) {\n  assert.expect(2);\n\n  // Creates the component instance\n  const component = this.subject();\n  assert.equal(component._state, 'preRender');\n\n  // Renders the component to the page\n  this.render();\n  assert.equal(component._state, 'inDOM');\n});\n"
  },
  {
    "path": "tests/unit/components/md-fixed-btn-test.js",
    "content": "import { moduleForComponent, test } from 'ember-qunit';\n\nmoduleForComponent('md-fixed-btn', 'component:md-fixed-btn', {\n  // Specify the other units that are required for this test\n  needs: ['component:md-btn', 'helper:bw-compat-icon']\n});\n\ntest('it renders', function(assert) {\n  assert.expect(2);\n\n  // Creates the component instance\n  const component = this.subject();\n  assert.equal(component._state, 'preRender');\n\n  // Renders the component to the page\n  this.render();\n  assert.equal(component._state, 'inDOM');\n});\n\ntest('btnIcon attribute results in an icon being rendered', function(assert) {\n  const component = this.subject({\n    btnIcon: 'mdi-content-add'\n  });\n\n  this.render();\n  assert.equal(component.$('i.mdi-content-add').length, 1, 'Icon should be present');\n});\n\ntest('btnIcon(material-icons) attribute results in an icon being rendered', function(assert) {\n  const component = this.subject({\n    btnIcon: 'edit'\n  });\n\n  this.render();\n  assert.equal(component.$('i.material-icons').html(), 'edit', 'Icon should be present');\n});\n\ntest('btnClass attribute should pass through to the button', function(assert) {\n  const component = this.subject({\n    btnClass: 'green'\n  });\n\n  this.render();\n  assert.equal(component.$('.btn-floating.green').length, 1, 'Class should be appended to button');\n});\n\ntest('btn-floating and btn-large classes are on the button by default', function(assert) {\n  const component = this.subject();\n  this.render();\n  assert.equal(component.$('.btn-floating.btn-large').length, 1, 'Classes should be present');\n});\n\ntest('button should be wrapped in a li tag', function(assert) {\n  const component = this.subject();\n  this.render();\n  assert.equal(component.$()[0].tagName, 'LI');\n  assert.equal(component.$('.btn-floating').length, 1, 'Button should be wrapped in a li tag');\n});\n\ntest('Optionally, users can opt to use small floating buttons', function(assert) {\n  const component = this.subject({\n    large: false\n  });\n  this.render();\n  assert.equal(component.$('.btn-floating').length, 1, 'Button should be in DOM');\n  assert.equal(component.$('.btn-floating.btn-large').length, 0, 'Button should not be large');\n});\n"
  },
  {
    "path": "tests/unit/components/md-fixed-btns-test.js",
    "content": "import { moduleForComponent, test } from 'ember-qunit';\n\nmoduleForComponent('md-fixed-btns', 'component:md-fixed-btns', {\n  // Specify the other units that are required for this test\n  needs: ['component:md-btn', 'helper:bw-compat-icon']\n});\n\ntest('it renders', function(assert) {\n  assert.expect(2);\n\n  // Creates the component instance\n  const component = this.subject();\n  assert.equal(component._state, 'preRender');\n\n  // Renders the component to the page\n  this.render();\n  assert.equal(component._state, 'inDOM');\n});\n\ntest('btnIcon attribute results in an icon being rendered', function(assert) {\n  const component = this.subject({\n    btnIcon: 'mdi-content-add'\n  });\n\n  this.render();\n  assert.equal(component.$('i.mdi-content-add').length, 1, 'Icon should be present');\n});\n\ntest('btnClass attribute should pass through to the button', function(assert) {\n  const component = this.subject({\n    btnClass: 'green'\n  });\n\n  this.render();\n  assert.equal(component.$('.btn-floating.green').length, 1, 'Class should be appended to button');\n});\n\ntest('btn-floating and btn-large classes are on the button by default', function(assert) {\n  const component = this.subject();\n  this.render();\n  assert.equal(component.$('.btn-floating.btn-large').length, 1, 'Classes should be present');\n});\n\ntest('Optionally, users can opt to use small floating buttons', function(assert) {\n  const component = this.subject({\n    large: false\n  });\n  this.render();\n  assert.equal(component.$('.btn-floating').length, 1, 'Button should be in DOM');\n  assert.equal(component.$('.btn-floating.btn-large').length, 0, 'Button should not be large');\n});\n\ntest('there should be a UL tag to hold child buttons', function(assert) {\n  const component = this.subject();\n  this.render();\n  assert.ok(component.$().hasClass('fixed-action-btn'));\n  assert.equal(component.$('ul').length, 1, 'ul should be present');\n});\n"
  },
  {
    "path": "tests/unit/components/md-modal-container-test.js",
    "content": "import { moduleForComponent, test } from 'ember-qunit';\n\nmoduleForComponent('md-modal-container', {\n  unit: true\n  // Specify the other units that are required for this test\n  // needs: ['component:foo', 'helper:bar']\n});\n\ntest('it renders', function(assert) {\n  assert.expect(2);\n\n  // Creates the component instance\n  const component = this.subject();\n  assert.equal(component._state, 'preRender');\n\n  // Renders the component to the page\n  this.render();\n  assert.equal(component._state, 'inDOM');\n});\n\ntest('it has the expected ID for md-modal to render into it', function(assert) {\n  assert.expect(1);\n\n  // Creates the component instance\n  const component = this.subject({\n    modalContainerId: 'materialize-modal-root-element'\n  });\n  // Renders the component to the page\n  this.render();\n  assert.equal(\n    component.$('#materialize-modal-root-element').length,\n    1,\n    '#materialize-modal-root-element should be in the DOM'\n  );\n});\n"
  },
  {
    "path": "tests/unit/helpers/bw-compat-icon-test.js",
    "content": "import { bwCompatIcon } from 'dummy/helpers/bw-compat-icon';\nimport { module, test } from 'qunit';\n\nmodule('Unit | Helper | bw compat icon');\n\n// Replace this with your real tests.\ntest('it works with the old materialize icons', function(assert) {\n  assert.equal(\n    bwCompatIcon(['mdi-action-android']).toHTML(),\n    `<i class='mdi-action-android'></i>`,\n    'Correct html for old icons'\n  );\n\n  assert.equal(\n    bwCompatIcon(['mdi-action-android blue-text']).toHTML(),\n    `<i class='mdi-action-android blue-text'></i>`,\n    'Correct html for old icons with other classes'\n  );\n});\n\ntest('it works with the new materialize icons', function(assert) {\n  assert.equal(\n    bwCompatIcon(['all_out']).toHTML(),\n    `<i class='material-icons'>all_out</i>`,\n    'Correct html for new icons'\n  );\n\n  assert.equal(\n    bwCompatIcon(['all_out blue-text']).toHTML(),\n    `<i class='material-icons blue-text'>all_out</i>`,\n    'Correct html for old icons'\n  );\n});\n"
  },
  {
    "path": "tests/unit/initializers/md-settings-test.js",
    "content": "import { run } from '@ember/runloop';\nimport Application from '@ember/application';\nimport { initialize } from '../../../initializers/md-settings';\nimport { module, test } from 'qunit';\n\nlet container, application;\n\nmodule('Unit | Initializer | md settings', {\n  beforeEach() {\n    run(function() {\n      application = Application.create();\n      container = application.__container__;\n      application.deferReadiness();\n    });\n  }\n});\n\n// Replace this with your real tests.\ntest('it works', function(assert) {\n  initialize(container, application);\n\n  // you would normally confirm the results of the initializer here\n  assert.ok(true);\n});\n"
  },
  {
    "path": "tests/unit/services/md-settings-test.js",
    "content": "import { moduleFor, test } from 'ember-qunit';\n\nmoduleFor('service:md-settings', 'Unit | Service | md settings', {\n  // Specify the other units that are required for this test.\n  // needs: ['service:foo']\n});\n\n// Replace this with your real tests.\ntest('it exists', function(assert) {\n  const service = this.subject();\n  assert.ok(service);\n});\n"
  },
  {
    "path": "vendor/.gitkeep",
    "content": ""
  },
  {
    "path": "vendor/highlight.pack.js",
    "content": "! function(e) {\n  \"undefined\" != typeof exports ? e(exports) : (window.hljs = e({}), \"function\" == typeof define && define.amd && define(\"hljs\", [], function() {\n    return window.hljs\n  }))\n}(function(e) {\n  function n(e) {\n    return e.replace(/&/gm, \"&amp;\").replace(/</gm, \"&lt;\").replace(/>/gm, \"&gt;\")\n  }\n\n  function t(e) {\n    return e.nodeName.toLowerCase()\n  }\n\n  function r(e, n) {\n    var t = e && e.exec(n);\n    return t && 0 == t.index\n  }\n\n  function a(e) {\n    return /no-?highlight|plain|text/.test(e)\n  }\n\n  function i(e) {\n    var n, t, r, i = e.className + \" \";\n    if (i += e.parentNode ? e.parentNode.className : \"\", t = /\\blang(?:uage)?-([\\w-]+)\\b/.exec(i)) return E(t[1]) ? t[1] : \"no-highlight\";\n    for (i = i.split(/\\s+/), n = 0, r = i.length; r > n; n++)\n      if (E(i[n]) || a(i[n])) return i[n]\n  }\n\n  function o(e, n) {\n    var t, r = {};\n    for (t in e) r[t] = e[t];\n    if (n)\n      for (t in n) r[t] = n[t];\n    return r\n  }\n\n  function u(e) {\n    var n = [];\n    return function r(e, a) {\n      for (var i = e.firstChild; i; i = i.nextSibling) 3 == i.nodeType ? a += i.nodeValue.length : 1 == i.nodeType && (n.push({\n        event: \"start\",\n        offset: a,\n        node: i\n      }), a = r(i, a), t(i).match(/br|hr|img|input/) || n.push({\n        event: \"stop\",\n        offset: a,\n        node: i\n      }));\n      return a\n    }(e, 0), n\n  }\n\n  function c(e, r, a) {\n    function i() {\n      return e.length && r.length ? e[0].offset != r[0].offset ? e[0].offset < r[0].offset ? e : r : \"start\" == r[0].event ? e : r : e.length ? e : r\n    }\n\n    function o(e) {\n      function r(e) {\n        return \" \" + e.nodeName + '=\"' + n(e.value) + '\"'\n      }\n      f += \"<\" + t(e) + Array.prototype.map.call(e.attributes, r).join(\"\") + \">\"\n    }\n\n    function u(e) {\n      f += \"</\" + t(e) + \">\"\n    }\n\n    function c(e) {\n      (\"start\" == e.event ? o : u)(e.node)\n    }\n    for (var s = 0, f = \"\", l = []; e.length || r.length;) {\n      var g = i();\n      if (f += n(a.substr(s, g[0].offset - s)), s = g[0].offset, g == e) {\n        l.reverse().forEach(u);\n        do c(g.splice(0, 1)[0]), g = i(); while (g == e && g.length && g[0].offset == s);\n        l.reverse().forEach(o)\n      } else \"start\" == g[0].event ? l.push(g[0].node) : l.pop(), c(g.splice(0, 1)[0])\n    }\n    return f + n(a.substr(s))\n  }\n\n  function s(e) {\n    function n(e) {\n      return e && e.source || e\n    }\n\n    function t(t, r) {\n      return new RegExp(n(t), \"m\" + (e.cI ? \"i\" : \"\") + (r ? \"g\" : \"\"))\n    }\n\n    function r(a, i) {\n      if (!a.compiled) {\n        if (a.compiled = !0, a.k = a.k || a.bK, a.k) {\n          var u = {},\n            c = function(n, t) {\n              e.cI && (t = t.toLowerCase()), t.split(\" \").forEach(function(e) {\n                var t = e.split(\"|\");\n                u[t[0]] = [n, t[1] ? Number(t[1]) : 1]\n              })\n            };\n          \"string\" == typeof a.k ? c(\"keyword\", a.k) : Object.keys(a.k).forEach(function(e) {\n            c(e, a.k[e])\n          }), a.k = u\n        }\n        a.lR = t(a.l || /\\b\\w+\\b/, !0), i && (a.bK && (a.b = \"\\\\b(\" + a.bK.split(\" \").join(\"|\") + \")\\\\b\"), a.b || (a.b = /\\B|\\b/), a.bR = t(a.b), a.e || a.eW || (a.e = /\\B|\\b/), a.e && (a.eR = t(a.e)), a.tE = n(a.e) || \"\", a.eW && i.tE && (a.tE += (a.e ? \"|\" : \"\") + i.tE)), a.i && (a.iR = t(a.i)), void 0 === a.r && (a.r = 1), a.c || (a.c = []);\n        var s = [];\n        a.c.forEach(function(e) {\n          e.v ? e.v.forEach(function(n) {\n            s.push(o(e, n))\n          }) : s.push(\"self\" == e ? a : e)\n        }), a.c = s, a.c.forEach(function(e) {\n          r(e, a)\n        }), a.starts && r(a.starts, i);\n        var f = a.c.map(function(e) {\n          return e.bK ? \"\\\\.?(\" + e.b + \")\\\\.?\" : e.b\n        }).concat([a.tE, a.i]).map(n).filter(Boolean);\n        a.t = f.length ? t(f.join(\"|\"), !0) : {\n          exec: function() {\n            return null\n          }\n        }\n      }\n    }\n    r(e)\n  }\n\n  function f(e, t, a, i) {\n    function o(e, n) {\n      for (var t = 0; t < n.c.length; t++)\n        if (r(n.c[t].bR, e)) return n.c[t]\n    }\n\n    function u(e, n) {\n      if (r(e.eR, n)) {\n        for (; e.endsParent && e.parent;) e = e.parent;\n        return e\n      }\n      return e.eW ? u(e.parent, n) : void 0\n    }\n\n    function c(e, n) {\n      return !a && r(n.iR, e)\n    }\n\n    function g(e, n) {\n      var t = N.cI ? n[0].toLowerCase() : n[0];\n      return e.k.hasOwnProperty(t) && e.k[t]\n    }\n\n    function h(e, n, t, r) {\n      var a = r ? \"\" : w.classPrefix,\n        i = '<span class=\"' + a,\n        o = t ? \"\" : \"</span>\";\n      return i += e + '\">', i + n + o\n    }\n\n    function p() {\n      if (!L.k) return n(y);\n      var e = \"\",\n        t = 0;\n      L.lR.lastIndex = 0;\n      for (var r = L.lR.exec(y); r;) {\n        e += n(y.substr(t, r.index - t));\n        var a = g(L, r);\n        a ? (B += a[1], e += h(a[0], n(r[0]))) : e += n(r[0]), t = L.lR.lastIndex, r = L.lR.exec(y)\n      }\n      return e + n(y.substr(t))\n    }\n\n    function d() {\n      var e = \"string\" == typeof L.sL;\n      if (e && !x[L.sL]) return n(y);\n      var t = e ? f(L.sL, y, !0, M[L.sL]) : l(y, L.sL.length ? L.sL : void 0);\n      return L.r > 0 && (B += t.r), e && (M[L.sL] = t.top), h(t.language, t.value, !1, !0)\n    }\n\n    function b() {\n      return void 0 !== L.sL ? d() : p()\n    }\n\n    function v(e, t) {\n      var r = e.cN ? h(e.cN, \"\", !0) : \"\";\n      e.rB ? (k += r, y = \"\") : e.eB ? (k += n(t) + r, y = \"\") : (k += r, y = t), L = Object.create(e, {\n        parent: {\n          value: L\n        }\n      })\n    }\n\n    function m(e, t) {\n      if (y += e, void 0 === t) return k += b(), 0;\n      var r = o(t, L);\n      if (r) return k += b(), v(r, t), r.rB ? 0 : t.length;\n      var a = u(L, t);\n      if (a) {\n        var i = L;\n        i.rE || i.eE || (y += t), k += b();\n        do L.cN && (k += \"</span>\"), B += L.r, L = L.parent; while (L != a.parent);\n        return i.eE && (k += n(t)), y = \"\", a.starts && v(a.starts, \"\"), i.rE ? 0 : t.length\n      }\n      if (c(t, L)) throw new Error('Illegal lexeme \"' + t + '\" for mode \"' + (L.cN || \"<unnamed>\") + '\"');\n      return y += t, t.length || 1\n    }\n    var N = E(e);\n    if (!N) throw new Error('Unknown language: \"' + e + '\"');\n    s(N);\n    var R, L = i || N,\n      M = {},\n      k = \"\";\n    for (R = L; R != N; R = R.parent) R.cN && (k = h(R.cN, \"\", !0) + k);\n    var y = \"\",\n      B = 0;\n    try {\n      for (var C, j, I = 0;;) {\n        if (L.t.lastIndex = I, C = L.t.exec(t), !C) break;\n        j = m(t.substr(I, C.index - I), C[0]), I = C.index + j\n      }\n      for (m(t.substr(I)), R = L; R.parent; R = R.parent) R.cN && (k += \"</span>\");\n      return {\n        r: B,\n        value: k,\n        language: e,\n        top: L\n      }\n    } catch (O) {\n      if (-1 != O.message.indexOf(\"Illegal\")) return {\n        r: 0,\n        value: n(t)\n      };\n      throw O\n    }\n  }\n\n  function l(e, t) {\n    t = t || w.languages || Object.keys(x);\n    var r = {\n        r: 0,\n        value: n(e)\n      },\n      a = r;\n    return t.forEach(function(n) {\n      if (E(n)) {\n        var t = f(n, e, !1);\n        t.language = n, t.r > a.r && (a = t), t.r > r.r && (a = r, r = t)\n      }\n    }), a.language && (r.second_best = a), r\n  }\n\n  function g(e) {\n    return w.tabReplace && (e = e.replace(/^((<[^>]+>|\\t)+)/gm, function(e, n) {\n      return n.replace(/\\t/g, w.tabReplace)\n    })), w.useBR && (e = e.replace(/\\n/g, \"<br>\")), e\n  }\n\n  function h(e, n, t) {\n    var r = n ? R[n] : t,\n      a = [e.trim()];\n    return e.match(/\\bhljs\\b/) || a.push(\"hljs\"), -1 === e.indexOf(r) && a.push(r), a.join(\" \").trim()\n  }\n\n  function p(e) {\n    var n = i(e);\n    if (!a(n)) {\n      var t;\n      w.useBR ? (t = document.createElementNS(\"http://www.w3.org/1999/xhtml\", \"div\"), t.innerHTML = e.innerHTML.replace(/\\n/g, \"\").replace(/<br[ \\/]*>/g, \"\\n\")) : t = e;\n      var r = t.textContent,\n        o = n ? f(n, r, !0) : l(r),\n        s = u(t);\n      if (s.length) {\n        var p = document.createElementNS(\"http://www.w3.org/1999/xhtml\", \"div\");\n        p.innerHTML = o.value, o.value = c(s, u(p), r)\n      }\n      o.value = g(o.value), e.innerHTML = o.value, e.className = h(e.className, n, o.language), e.result = {\n        language: o.language,\n        re: o.r\n      }, o.second_best && (e.second_best = {\n        language: o.second_best.language,\n        re: o.second_best.r\n      })\n    }\n  }\n\n  function d(e) {\n    w = o(w, e)\n  }\n\n  function b() {\n    if (!b.called) {\n      b.called = !0;\n      var e = document.querySelectorAll(\"pre code\");\n      Array.prototype.forEach.call(e, p)\n    }\n  }\n\n  function v() {\n    addEventListener(\"DOMContentLoaded\", b, !1), addEventListener(\"load\", b, !1)\n  }\n\n  function m(n, t) {\n    var r = x[n] = t(e);\n    r.aliases && r.aliases.forEach(function(e) {\n      R[e] = n\n    })\n  }\n\n  function N() {\n    return Object.keys(x)\n  }\n\n  function E(e) {\n    return x[e] || x[R[e]]\n  }\n  var w = {\n      classPrefix: \"hljs-\",\n      tabReplace: null,\n      useBR: !1,\n      languages: void 0\n    },\n    x = {},\n    R = {};\n  return e.highlight = f, e.highlightAuto = l, e.fixMarkup = g, e.highlightBlock = p, e.configure = d, e.initHighlighting = b, e.initHighlightingOnLoad = v, e.registerLanguage = m, e.listLanguages = N, e.getLanguage = E, e.inherit = o, e.IR = \"[a-zA-Z]\\\\w*\", e.UIR = \"[a-zA-Z_]\\\\w*\", e.NR = \"\\\\b\\\\d+(\\\\.\\\\d+)?\", e.CNR = \"(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\", e.BNR = \"\\\\b(0b[01]+)\", e.RSR = \"!|!=|!==|%|%=|&|&&|&=|\\\\*|\\\\*=|\\\\+|\\\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\\\?|\\\\[|\\\\{|\\\\(|\\\\^|\\\\^=|\\\\||\\\\|=|\\\\|\\\\||~\", e.BE = {\n    b: \"\\\\\\\\[\\\\s\\\\S]\",\n    r: 0\n  }, e.ASM = {\n    cN: \"string\",\n    b: \"'\",\n    e: \"'\",\n    i: \"\\\\n\",\n    c: [e.BE]\n  }, e.QSM = {\n    cN: \"string\",\n    b: '\"',\n    e: '\"',\n    i: \"\\\\n\",\n    c: [e.BE]\n  }, e.PWM = {\n    b: /\\b(a|an|the|are|I|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such)\\b/\n  }, e.C = function(n, t, r) {\n    var a = e.inherit({\n      cN: \"comment\",\n      b: n,\n      e: t,\n      c: []\n    }, r || {});\n    return a.c.push(e.PWM), a.c.push({\n      cN: \"doctag\",\n      b: \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n      r: 0\n    }), a\n  }, e.CLCM = e.C(\"//\", \"$\"), e.CBCM = e.C(\"/\\\\*\", \"\\\\*/\"), e.HCM = e.C(\"#\", \"$\"), e.NM = {\n    cN: \"number\",\n    b: e.NR,\n    r: 0\n  }, e.CNM = {\n    cN: \"number\",\n    b: e.CNR,\n    r: 0\n  }, e.BNM = {\n    cN: \"number\",\n    b: e.BNR,\n    r: 0\n  }, e.CSSNM = {\n    cN: \"number\",\n    b: e.NR + \"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?\",\n    r: 0\n  }, e.RM = {\n    cN: \"regexp\",\n    b: /\\//,\n    e: /\\/[gimuy]*/,\n    i: /\\n/,\n    c: [e.BE, {\n      b: /\\[/,\n      e: /\\]/,\n      r: 0,\n      c: [e.BE]\n    }]\n  }, e.TM = {\n    cN: \"title\",\n    b: e.IR,\n    r: 0\n  }, e.UTM = {\n    cN: \"title\",\n    b: e.UIR,\n    r: 0\n  }, e\n});\nhljs.registerLanguage(\"css\", function(e) {\n  var c = \"[a-zA-Z-][a-zA-Z0-9_-]*\",\n    a = {\n      cN: \"function\",\n      b: c + \"\\\\(\",\n      rB: !0,\n      eE: !0,\n      e: \"\\\\(\"\n    },\n    r = {\n      cN: \"rule\",\n      b: /[A-Z\\_\\.\\-]+\\s*:/,\n      rB: !0,\n      e: \";\",\n      eW: !0,\n      c: [{\n        cN: \"attribute\",\n        b: /\\S/,\n        e: \":\",\n        eE: !0,\n        starts: {\n          cN: \"value\",\n          eW: !0,\n          eE: !0,\n          c: [a, e.CSSNM, e.QSM, e.ASM, e.CBCM, {\n            cN: \"hexcolor\",\n            b: \"#[0-9A-Fa-f]+\"\n          }, {\n            cN: \"important\",\n            b: \"!important\"\n          }]\n        }\n      }]\n    };\n  return {\n    cI: !0,\n    i: /[=\\/|'\\$]/,\n    c: [e.CBCM, r, {\n      cN: \"id\",\n      b: /\\#[A-Za-z0-9_-]+/\n    }, {\n      cN: \"class\",\n      b: /\\.[A-Za-z0-9_-]+/\n    }, {\n      cN: \"attr_selector\",\n      b: /\\[/,\n      e: /\\]/,\n      i: \"$\"\n    }, {\n      cN: \"pseudo\",\n      b: /:(:)?[a-zA-Z0-9\\_\\-\\+\\(\\)\"']+/\n    }, {\n      cN: \"at_rule\",\n      b: \"@(font-face|page)\",\n      l: \"[a-z-]+\",\n      k: \"font-face page\"\n    }, {\n      cN: \"at_rule\",\n      b: \"@\",\n      e: \"[{;]\",\n      c: [{\n        cN: \"keyword\",\n        b: /\\S+/\n      }, {\n        b: /\\s/,\n        eW: !0,\n        eE: !0,\n        r: 0,\n        c: [a, e.ASM, e.QSM, e.CSSNM]\n      }]\n    }, {\n      cN: \"tag\",\n      b: c,\n      r: 0\n    }, {\n      cN: \"rules\",\n      b: \"{\",\n      e: \"}\",\n      i: /\\S/,\n      c: [e.CBCM, r]\n    }]\n  }\n});\nhljs.registerLanguage(\"javascript\", function(e) {\n  return {\n    aliases: [\"js\"],\n    k: {\n      keyword: \"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await\",\n      literal: \"true false null undefined NaN Infinity\",\n      built_in: \"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise\"\n    },\n    c: [{\n      cN: \"pi\",\n      r: 10,\n      b: /^\\s*['\"]use (strict|asm)['\"]/\n    }, e.ASM, e.QSM, {\n      cN: \"string\",\n      b: \"`\",\n      e: \"`\",\n      c: [e.BE, {\n        cN: \"subst\",\n        b: \"\\\\$\\\\{\",\n        e: \"\\\\}\"\n      }]\n    }, e.CLCM, e.CBCM, {\n      cN: \"number\",\n      v: [{\n        b: \"\\\\b(0[bB][01]+)\"\n      }, {\n        b: \"\\\\b(0[oO][0-7]+)\"\n      }, {\n        b: e.CNR\n      }],\n      r: 0\n    }, {\n      b: \"(\" + e.RSR + \"|\\\\b(case|return|throw)\\\\b)\\\\s*\",\n      k: \"return throw case\",\n      c: [e.CLCM, e.CBCM, e.RM, {\n        b: /</,\n        e: />\\s*[);\\]]/,\n        r: 0,\n        sL: \"xml\"\n      }],\n      r: 0\n    }, {\n      cN: \"function\",\n      bK: \"function\",\n      e: /\\{/,\n      eE: !0,\n      c: [e.inherit(e.TM, {\n        b: /[A-Za-z$_][0-9A-Za-z$_]*/\n      }), {\n        cN: \"params\",\n        b: /\\(/,\n        e: /\\)/,\n        eB: !0,\n        eE: !0,\n        c: [e.CLCM, e.CBCM],\n        i: /[\"'\\(]/\n      }],\n      i: /\\[|%/\n    }, {\n      b: /\\$[(.]/\n    }, {\n      b: \"\\\\.\" + e.IR,\n      r: 0\n    }, {\n      bK: \"import\",\n      e: \"[;$]\",\n      k: \"import from as\",\n      c: [e.ASM, e.QSM]\n    }, {\n      cN: \"class\",\n      bK: \"class\",\n      e: /[{;=]/,\n      eE: !0,\n      i: /[:\"\\[\\]]/,\n      c: [{\n        bK: \"extends\"\n      }, e.UTM]\n    }],\n    i: /#/\n  }\n});\nhljs.registerLanguage(\"xml\", function(t) {\n  var s = \"[A-Za-z0-9\\\\._:-]+\",\n    c = {\n      b: /<\\?(php)?(?!\\w)/,\n      e: /\\?>/,\n      sL: \"php\"\n    },\n    e = {\n      eW: !0,\n      i: /</,\n      r: 0,\n      c: [c, {\n        cN: \"attribute\",\n        b: s,\n        r: 0\n      }, {\n        b: \"=\",\n        r: 0,\n        c: [{\n          cN: \"value\",\n          c: [c],\n          v: [{\n            b: /\"/,\n            e: /\"/\n          }, {\n            b: /'/,\n            e: /'/\n          }, {\n            b: /[^\\s\\/>]+/\n          }]\n        }]\n      }]\n    };\n  return {\n    aliases: [\"html\", \"xhtml\", \"rss\", \"atom\", \"xsl\", \"plist\"],\n    cI: !0,\n    c: [{\n      cN: \"doctype\",\n      b: \"<!DOCTYPE\",\n      e: \">\",\n      r: 10,\n      c: [{\n        b: \"\\\\[\",\n        e: \"\\\\]\"\n      }]\n    }, t.C(\"<!--\", \"-->\", {\n      r: 10\n    }), {\n      cN: \"cdata\",\n      b: \"<\\\\!\\\\[CDATA\\\\[\",\n      e: \"\\\\]\\\\]>\",\n      r: 10\n    }, {\n      cN: \"tag\",\n      b: \"<style(?=\\\\s|>|$)\",\n      e: \">\",\n      k: {\n        title: \"style\"\n      },\n      c: [e],\n      starts: {\n        e: \"</style>\",\n        rE: !0,\n        sL: \"css\"\n      }\n    }, {\n      cN: \"tag\",\n      b: \"<script(?=\\\\s|>|$)\",\n      e: \">\",\n      k: {\n        title: \"script\"\n      },\n      c: [e],\n      starts: {\n        e: \"</script>\",\n        rE: !0,\n        sL: [\"actionscript\", \"javascript\", \"handlebars\"]\n      }\n    }, c, {\n      cN: \"pi\",\n      b: /<\\?\\w+/,\n      e: /\\?>/,\n      r: 10\n    }, {\n      cN: \"tag\",\n      b: \"</?\",\n      e: \"/?>\",\n      c: [{\n        cN: \"title\",\n        b: /[^ \\/><\\n\\t]+/,\n        r: 0\n      }, e]\n    }]\n  }\n});\nhljs.registerLanguage(\"json\", function(e) {\n  var t = {\n      literal: \"true false null\"\n    },\n    i = [e.QSM, e.CNM],\n    l = {\n      cN: \"value\",\n      e: \",\",\n      eW: !0,\n      eE: !0,\n      c: i,\n      k: t\n    },\n    c = {\n      b: \"{\",\n      e: \"}\",\n      c: [{\n        cN: \"attribute\",\n        b: '\\\\s*\"',\n        e: '\"\\\\s*:\\\\s*',\n        eB: !0,\n        eE: !0,\n        c: [e.BE],\n        i: \"\\\\n\",\n        starts: l\n      }],\n      i: \"\\\\S\"\n    },\n    n = {\n      b: \"\\\\[\",\n      e: \"\\\\]\",\n      c: [e.inherit(l, {\n        cN: null\n      })],\n      i: \"\\\\S\"\n    };\n  return i.splice(i.length, 0, c, n), {\n    c: i,\n    k: t,\n    i: \"\\\\S\"\n  }\n});\n"
  }
]