├── app ├── .gitkeep └── components │ └── json-editor.js ├── addon ├── .gitkeep └── components │ └── json-editor.js ├── vendor └── .gitkeep ├── tests ├── helpers │ └── .gitkeep ├── unit │ └── .gitkeep ├── integration │ ├── .gitkeep │ └── components │ │ └── json-editor-test.js ├── dummy │ ├── app │ │ ├── helpers │ │ │ └── .gitkeep │ │ ├── models │ │ │ └── .gitkeep │ │ ├── routes │ │ │ ├── .gitkeep │ │ │ └── application.js │ │ ├── components │ │ │ └── .gitkeep │ │ ├── controllers │ │ │ ├── .gitkeep │ │ │ └── application.js │ │ ├── templates │ │ │ ├── components │ │ │ │ └── .gitkeep │ │ │ └── application.hbs │ │ ├── resolver.js │ │ ├── router.js │ │ ├── app.js │ │ ├── index.html │ │ └── styles │ │ │ └── app.css │ ├── public │ │ ├── robots.txt │ │ └── images │ │ │ └── GitHub-Mark-Light-32px.png │ └── config │ │ ├── optional-features.json │ │ ├── targets.js │ │ ├── ember-cli-update.json │ │ └── environment.js ├── test-helper.js └── index.html ├── .template-lintrc.js ├── config ├── environment.js └── ember-try.js ├── blueprints └── ember-jsoneditor │ └── index.js ├── .ember-cli ├── .eslintignore ├── .editorconfig ├── .gitignore ├── .npmignore ├── .vscode └── launch.json ├── testem.js ├── ember-cli-build.js ├── CONTRIBUTING.md ├── changelog-template.hbs ├── index.js ├── LICENSE.md ├── .eslintrc.js ├── .travis.yml ├── package.json ├── README.md └── CHANGELOG.md /app/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /addon/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /vendor/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/helpers/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/unit/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/integration/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/dummy/app/helpers/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/dummy/app/models/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/dummy/app/routes/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/dummy/app/components/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/dummy/app/controllers/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/dummy/app/templates/components/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/dummy/public/robots.txt: -------------------------------------------------------------------------------- 1 | # http://www.robotstxt.org 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /app/components/json-editor.js: -------------------------------------------------------------------------------- 1 | export { default } from 'ember-jsoneditor/components/json-editor'; -------------------------------------------------------------------------------- /.template-lintrc.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = { 4 | extends: 'recommended' 5 | }; 6 | -------------------------------------------------------------------------------- /tests/dummy/app/resolver.js: -------------------------------------------------------------------------------- 1 | import Resolver from 'ember-resolver'; 2 | 3 | export default Resolver; 4 | -------------------------------------------------------------------------------- /config/environment.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = function(/* environment, appConfig */) { 4 | return { }; 5 | }; 6 | -------------------------------------------------------------------------------- /tests/dummy/config/optional-features.json: -------------------------------------------------------------------------------- 1 | { 2 | "application-template-wrapper": false, 3 | "jquery-integration": false 4 | } 5 | -------------------------------------------------------------------------------- /blueprints/ember-jsoneditor/index.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | normalizeEntityName: function() {}, // no-op since we're just adding dependencies 3 | }; -------------------------------------------------------------------------------- /tests/dummy/public/images/GitHub-Mark-Light-32px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Glavin001/ember-jsoneditor/HEAD/tests/dummy/public/images/GitHub-Mark-Light-32px.png -------------------------------------------------------------------------------- /tests/test-helper.js: -------------------------------------------------------------------------------- 1 | import Application from '../app'; 2 | import config from '../config/environment'; 3 | import { setApplication } from '@ember/test-helpers'; 4 | import { start } from 'ember-qunit'; 5 | 6 | setApplication(Application.create(config.APP)); 7 | 8 | start(); 9 | -------------------------------------------------------------------------------- /tests/dummy/app/router.js: -------------------------------------------------------------------------------- 1 | import EmberRouter from '@ember/routing/router'; 2 | import config from './config/environment'; 3 | 4 | const Router = EmberRouter.extend({ 5 | location: config.locationType, 6 | rootURL: config.rootURL 7 | }); 8 | 9 | Router.map(function() { 10 | }); 11 | 12 | export default Router; 13 | -------------------------------------------------------------------------------- /.ember-cli: -------------------------------------------------------------------------------- 1 | { 2 | /** 3 | Ember CLI sends analytics information by default. The data is completely 4 | anonymous, but there are times when you might want to disable this behavior. 5 | 6 | Setting `disableAnalytics` to true will prevent any data from being sent. 7 | */ 8 | "disableAnalytics": false 9 | } 10 | -------------------------------------------------------------------------------- /tests/dummy/app/controllers/application.js: -------------------------------------------------------------------------------- 1 | import Controller from '@ember/controller'; 2 | import { computed } from '@ember/object'; 3 | 4 | export default Controller.extend({ 5 | modes: computed(function() { 6 | return ['tree', 'view', 'form', 'code', 'text']; 7 | }), 8 | mode: 'tree', 9 | name: 'JSONEditor' 10 | }); 11 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | # unconventional js 2 | /blueprints/*/files/ 3 | /vendor/ 4 | 5 | # compiled output 6 | /dist/ 7 | /tmp/ 8 | 9 | # dependencies 10 | /bower_components/ 11 | /node_modules/ 12 | 13 | # misc 14 | /coverage/ 15 | !.* 16 | 17 | # ember-try 18 | /.node_modules.ember-try/ 19 | /bower.json.ember-try 20 | /package.json.ember-try 21 | -------------------------------------------------------------------------------- /tests/dummy/config/targets.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const browsers = [ 4 | 'last 1 Chrome versions', 5 | 'last 1 Firefox versions', 6 | 'last 1 Safari versions' 7 | ]; 8 | 9 | const isCI = !!process.env.CI; 10 | const isProduction = process.env.EMBER_ENV === 'production'; 11 | 12 | if (isCI || isProduction) { 13 | browsers.push('ie 11'); 14 | } 15 | 16 | module.exports = { 17 | browsers 18 | }; 19 | -------------------------------------------------------------------------------- /tests/dummy/app/routes/application.js: -------------------------------------------------------------------------------- 1 | import Route from '@ember/routing/route'; 2 | 3 | export default Route.extend({ 4 | model: function() { 5 | return { 6 | 'array': [1, 2, 3], 7 | 'boolean': true, 8 | 'null': null, 9 | 'number': 123, 10 | 'object': { 11 | 'a': 'b', 12 | 'c': 'd', 13 | 'e': 'f' 14 | }, 15 | 'string': 'Hello World' 16 | }; 17 | } 18 | }); 19 | -------------------------------------------------------------------------------- /tests/dummy/app/app.js: -------------------------------------------------------------------------------- 1 | import Application from '@ember/application'; 2 | import Resolver from './resolver'; 3 | import loadInitializers from 'ember-load-initializers'; 4 | import config from './config/environment'; 5 | 6 | const App = Application.extend({ 7 | modulePrefix: config.modulePrefix, 8 | podModulePrefix: config.podModulePrefix, 9 | Resolver 10 | }); 11 | 12 | loadInitializers(App, config.modulePrefix); 13 | 14 | export default App; 15 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig helps developers define and maintain consistent 2 | # coding styles between different editors and IDEs 3 | # editorconfig.org 4 | 5 | root = true 6 | 7 | 8 | [*] 9 | end_of_line = lf 10 | charset = utf-8 11 | trim_trailing_whitespace = true 12 | insert_final_newline = true 13 | indent_style = space 14 | indent_size = 2 15 | 16 | [*.hbs] 17 | insert_final_newline = false 18 | 19 | [*.{diff,md}] 20 | trim_trailing_whitespace = false 21 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | # compiled output 4 | /dist/ 5 | /tmp/ 6 | 7 | # dependencies 8 | /bower_components/ 9 | /node_modules/ 10 | 11 | # misc 12 | /.env* 13 | /.pnp* 14 | /.sass-cache 15 | /connect.lock 16 | /coverage/ 17 | /libpeerconnection.log 18 | /npm-debug.log* 19 | /testem.log 20 | /yarn-error.log 21 | 22 | # ember-try 23 | /.node_modules.ember-try/ 24 | /bower.json.ember-try 25 | /package.json.ember-try 26 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | # compiled output 2 | /dist/ 3 | /tmp/ 4 | 5 | # dependencies 6 | /bower_components/ 7 | 8 | # misc 9 | /.bowerrc 10 | /.editorconfig 11 | /.ember-cli 12 | /.env* 13 | /.eslintignore 14 | /.eslintrc.js 15 | /.gitignore 16 | /.template-lintrc.js 17 | /.travis.yml 18 | /.watchmanconfig 19 | /bower.json 20 | /config/ember-try.js 21 | /CONTRIBUTING.md 22 | /ember-cli-build.js 23 | /testem.js 24 | /tests/ 25 | /yarn.lock 26 | .gitkeep 27 | 28 | # ember-try 29 | /.node_modules.ember-try/ 30 | /bower.json.ember-try 31 | /package.json.ember-try 32 | -------------------------------------------------------------------------------- /tests/dummy/config/ember-cli-update.json: -------------------------------------------------------------------------------- 1 | { 2 | "schemaVersion": "1.0.0", 3 | "packages": [ 4 | { 5 | "name": "ember-cli", 6 | "version": "3.12.1", 7 | "blueprints": [ 8 | { 9 | "name": "addon", 10 | "outputRepo": "https://github.com/ember-cli/ember-addon-output", 11 | "codemodsSource": "ember-addon-codemods-manifest@1", 12 | "isBaseBlueprint": true, 13 | "options": [ 14 | "--no-welcome" 15 | ] 16 | } 17 | ] 18 | } 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "type": "chrome", 9 | "request": "launch", 10 | "name": "Debug Ember", 11 | "port": 9222, 12 | "runtimeArgs": [ "--remote-debugging-port=9222" ], 13 | "url": "http://localhost:4200", 14 | "sourceMapPathOverrides": { 15 | "trakker/*": "${workspaceFolder}/app/*" 16 | } 17 | } 18 | ] 19 | } -------------------------------------------------------------------------------- /testem.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | test_page: 'tests/index.html?hidepassed', 3 | disable_watching: true, 4 | launch_in_ci: [ 5 | 'Chrome' 6 | ], 7 | launch_in_dev: [ 8 | 'Chrome' 9 | ], 10 | browser_args: { 11 | Chrome: { 12 | ci: [ 13 | // --no-sandbox is needed when running Chrome inside a container 14 | process.env.CI ? '--no-sandbox' : null, 15 | '--headless', 16 | '--disable-dev-shm-usage', 17 | '--disable-software-rasterizer', 18 | '--mute-audio', 19 | '--remote-debugging-port=0', 20 | '--window-size=1440,900' 21 | ].filter(Boolean) 22 | } 23 | } 24 | }; 25 | -------------------------------------------------------------------------------- /ember-cli-build.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const EmberAddon = require('ember-cli/lib/broccoli/ember-addon'); 4 | 5 | module.exports = function(defaults) { 6 | let app = new EmberAddon(defaults, { 7 | autoImport: { 8 | alias: { 9 | jsoneditor: 'jsoneditor/dist/jsoneditor' 10 | } 11 | } 12 | }); 13 | 14 | /* 15 | This build file specifies the options for the dummy test app of this 16 | addon, located in `/tests/dummy` 17 | This build file does *not* influence how the addon or the app using it 18 | behave. You most likely want to be modifying `./index.js` or app's build file 19 | */ 20 | 21 | return app.toTree(); 22 | }; 23 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # How To Contribute 2 | 3 | ## Installation 4 | 5 | * `git clone git@github.com:Glavin001/ember-jsoneditor.git` 6 | * `cd ember-jsoneditor` 7 | * `npm install` 8 | 9 | ## Linting 10 | 11 | * `npm run lint:hbs` 12 | * `npm run lint:js` 13 | * `npm run lint:js -- --fix` 14 | 15 | ## Running tests 16 | 17 | * `ember test` – Runs the test suite on the current Ember version 18 | * `ember test --server` – Runs the test suite in "watch mode" 19 | * `ember try:each` – Runs the test suite against multiple Ember versions 20 | 21 | ## Running the dummy application 22 | 23 | * `ember serve` 24 | * Visit the dummy application at [http://localhost:4200](http://localhost:4200). 25 | 26 | For more information on using ember-cli, visit [https://ember-cli.com/](https://ember-cli.com/). -------------------------------------------------------------------------------- /tests/dummy/app/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | ember-jsoneditor 7 | 8 | 9 | 10 | {{content-for "head"}} 11 | 12 | 13 | 14 | 15 | {{content-for "head-footer"}} 16 | 17 | 18 | {{content-for "body"}} 19 | 20 | 21 | 22 | 23 | {{content-for "body-footer"}} 24 | 25 | 26 | -------------------------------------------------------------------------------- /changelog-template.hbs: -------------------------------------------------------------------------------- 1 | {{! template-lint-disable }} 2 | # Changelog 3 | 4 | All notable changes to this project will be documented in this file. 5 | 6 | {{#each releases}} 7 | {{#if href}} 8 | ## [{{title}}]({{href}}){{#if tag}} - {{isoDate}}{{/if}} 9 | {{else}} 10 | ## {{title}}{{#if tag}} - {{isoDate}}{{/if}} 11 | {{/if}} 12 | 13 | {{#if summary}} 14 | {{summary}} 15 | {{/if}} 16 | 17 | {{#if merges}} 18 | ### Merged 19 | 20 | {{#each merges}} 21 | - {{message}} {{#if href}}[`#{{id}}`]({{href}}){{/if}} 22 | {{/each}} 23 | {{/if}} 24 | 25 | {{#if fixes}} 26 | ### Fixed 27 | 28 | {{#each fixes}} 29 | - {{commit.subject}}{{#each fixes}} {{#if href}}[`#{{id}}`]({{href}}){{/if}}{{/each}} 30 | {{/each}} 31 | {{/if}} 32 | 33 | {{#commit-list commits heading="### Commits"}} 34 | - {{#if breaking}}**Breaking change:** {{/if}}{{subject}} {{#if href}}[`{{shorthash}}`]({{href}}){{/if}} 35 | {{/commit-list}} 36 | 37 | {{/each}} -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* eslint node/no-extraneous-require: 0 */ 3 | var path = require("path"); 4 | var Funnel = require("broccoli-funnel"); 5 | var MergeTrees = require("broccoli-merge-trees"); 6 | 7 | module.exports = { 8 | name: require("./package").name, 9 | 10 | included: function(app) { 11 | this._super.included.apply(this, arguments); 12 | 13 | app.import("vendor/jsoneditor.css"); 14 | app.import("vendor/jsoneditor-icons.svg", { 15 | destDir: "assets/img" 16 | }); 17 | }, 18 | 19 | treeForVendor(/* vendorTree */) { 20 | let cssTree = new Funnel( 21 | path.join(this.project.root, "node_modules", "jsoneditor/dist"), 22 | { 23 | files: ["jsoneditor.css"] 24 | } 25 | ); 26 | 27 | let iconTree = new Funnel( 28 | path.join(this.project.root, "node_modules", "jsoneditor/dist/img"), 29 | { 30 | files: ["jsoneditor-icons.svg"] 31 | } 32 | ); 33 | 34 | return new MergeTrees([cssTree, iconTree]); 35 | } 36 | }; 37 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2019 4 | 5 | Permission 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: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | THE 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. 10 | -------------------------------------------------------------------------------- /tests/dummy/app/styles/app.css: -------------------------------------------------------------------------------- 1 | body { 2 | font-family: 'Lucida Sans', 'Lucida Sans Regular', 'Lucida Grande', 3 | 'Lucida Sans Unicode', Geneva, Verdana, sans-serif; 4 | width: 100%; 5 | } 6 | 7 | header { 8 | height: 60px; 9 | color: white; 10 | background-color: #3883fa; 11 | margin: 0 10px; 12 | display: flex; 13 | align-items: center; 14 | justify-content: space-between; 15 | } 16 | 17 | .title { 18 | padding-left: 20px; 19 | font-size: 1.2em; 20 | } 21 | 22 | .github { 23 | padding-right: 10px; 24 | } 25 | 26 | .container { 27 | margin: 20px 0px 15px 15px; 28 | } 29 | 30 | .row { 31 | display: flex; 32 | justify-content: center; 33 | } 34 | 35 | .col-sm-4 { 36 | width: 33.33% 37 | } 38 | 39 | .col-sm-5 { 40 | width: 41.66%; 41 | margin: 0 15px; 42 | } 43 | 44 | .jsoneditor-component { 45 | height: 300px; 46 | } 47 | 48 | pre { 49 | margin-top: -20px; 50 | } 51 | 52 | .json-pretty pre { 53 | font-size: 12pt; 54 | outline: none; 55 | } 56 | 57 | .subTitles { 58 | font-size: 1.1em; 59 | font-weight: 500; 60 | margin: 25px 0 10px 0; 61 | } -------------------------------------------------------------------------------- /tests/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Dummy Tests 7 | 8 | 9 | 10 | {{content-for "head"}} 11 | {{content-for "test-head"}} 12 | 13 | 14 | 15 | 16 | 17 | {{content-for "head-footer"}} 18 | {{content-for "test-head-footer"}} 19 | 20 | 21 | {{content-for "body"}} 22 | {{content-for "test-body"}} 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | {{content-for "body-footer"}} 31 | {{content-for "test-body-footer"}} 32 | 33 | 34 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | parserOptions: { 4 | ecmaVersion: 2018, 5 | sourceType: 'module' 6 | }, 7 | plugins: [ 8 | 'ember' 9 | ], 10 | extends: [ 11 | 'eslint:recommended', 12 | 'plugin:ember/recommended' 13 | ], 14 | env: { 15 | browser: true 16 | }, 17 | rules: { 18 | }, 19 | overrides: [ 20 | // node files 21 | { 22 | files: [ 23 | '.eslintrc.js', 24 | '.template-lintrc.js', 25 | 'ember-cli-build.js', 26 | 'index.js', 27 | 'testem.js', 28 | 'blueprints/*/index.js', 29 | 'config/**/*.js', 30 | 'tests/dummy/config/**/*.js' 31 | ], 32 | excludedFiles: [ 33 | 'addon/**', 34 | 'addon-test-support/**', 35 | 'app/**', 36 | 'tests/dummy/app/**' 37 | ], 38 | parserOptions: { 39 | sourceType: 'script' 40 | }, 41 | env: { 42 | browser: false, 43 | node: true 44 | }, 45 | plugins: ['node'], 46 | rules: Object.assign({}, require('eslint-plugin-node').configs.recommended.rules, { 47 | // add your custom rules and overrides for node files here 48 | }) 49 | } 50 | ] 51 | }; 52 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | --- 2 | language: node_js 3 | node_js: 4 | # we recommend testing addons with the same minimum supported node version as Ember CLI 5 | # so that your addon works for all apps 6 | - "8" 7 | 8 | sudo: false 9 | dist: trusty 10 | 11 | addons: 12 | chrome: stable 13 | 14 | cache: 15 | directories: 16 | - $HOME/.npm 17 | 18 | env: 19 | global: 20 | # See https://git.io/vdao3 for details. 21 | - JOBS=1 22 | 23 | branches: 24 | only: 25 | - master 26 | # npm version tags 27 | - /^v\d+\.\d+\.\d+/ 28 | 29 | jobs: 30 | fail_fast: true 31 | allow_failures: 32 | - env: EMBER_TRY_SCENARIO=ember-canary 33 | 34 | include: 35 | # runs linting and tests with current locked deps 36 | 37 | - stage: "Tests" 38 | name: "Tests" 39 | script: 40 | - npm run lint:hbs 41 | - npm run lint:js 42 | - npm test 43 | 44 | # we recommend new addons test the current and previous LTS 45 | # as well as latest stable release (bonus points to beta/canary) 46 | - stage: "Additional Tests" 47 | env: EMBER_TRY_SCENARIO=ember-lts-3.4 48 | - env: EMBER_TRY_SCENARIO=ember-lts-3.8 49 | - env: EMBER_TRY_SCENARIO=ember-release 50 | - env: EMBER_TRY_SCENARIO=ember-beta 51 | - env: EMBER_TRY_SCENARIO=ember-canary 52 | - env: EMBER_TRY_SCENARIO=ember-default-with-jquery 53 | 54 | script: 55 | - node_modules/.bin/ember try:one $EMBER_TRY_SCENARIO 56 | -------------------------------------------------------------------------------- /tests/dummy/config/environment.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = function(environment) { 4 | let ENV = { 5 | modulePrefix: 'dummy', 6 | environment, 7 | rootURL: '/', 8 | locationType: 'auto', 9 | EmberENV: { 10 | FEATURES: { 11 | // Here you can enable experimental features on an ember canary build 12 | // e.g. EMBER_NATIVE_DECORATOR_SUPPORT: true 13 | }, 14 | EXTEND_PROTOTYPES: { 15 | // Prevent Ember Data from overriding Date.parse. 16 | Date: false 17 | } 18 | }, 19 | 20 | APP: { 21 | // Here you can pass flags/options to your application instance 22 | // when it is created 23 | } 24 | }; 25 | 26 | if (environment === 'development') { 27 | // ENV.APP.LOG_RESOLVER = true; 28 | // ENV.APP.LOG_ACTIVE_GENERATION = true; 29 | // ENV.APP.LOG_TRANSITIONS = true; 30 | // ENV.APP.LOG_TRANSITIONS_INTERNAL = true; 31 | // ENV.APP.LOG_VIEW_LOOKUPS = true; 32 | } 33 | 34 | if (environment === 'test') { 35 | // Testem prefers this... 36 | ENV.locationType = 'none'; 37 | 38 | // keep test console output quieter 39 | ENV.APP.LOG_ACTIVE_GENERATION = false; 40 | ENV.APP.LOG_VIEW_LOOKUPS = false; 41 | 42 | ENV.APP.rootElement = '#ember-testing'; 43 | ENV.APP.autoboot = false; 44 | } 45 | 46 | if (environment === 'production') { 47 | // here you can enable a production-specific feature 48 | } 49 | 50 | return ENV; 51 | }; 52 | -------------------------------------------------------------------------------- /tests/dummy/app/templates/application.hbs: -------------------------------------------------------------------------------- 1 |
2 |
3 | ember-json-editor 4 |
5 | 6 | 7 | 8 |
9 |
10 |

11 | Ember component using 12 | 13 | jsoneditor 14 | 15 | to view, edit and format JSON. 16 |

17 |
18 |
19 |

20 | Editor 1 21 |

22 | 27 |

28 | Options 29 |

30 |
31 | Name: 32 | {{input value=name}} 33 |
34 | Mode: 35 | {{!-- {{view Ember.Select content=modes value=mode}} --}} 36 | 43 |
44 |
45 |

46 | Editor 2 47 |

48 | 54 |
55 |

56 | Raw JSON 57 |

58 |
59 |           
60 |         
61 |
62 |
63 |
64 |
-------------------------------------------------------------------------------- /config/ember-try.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const getChannelURL = require('ember-source-channel-url'); 4 | 5 | module.exports = async function() { 6 | return { 7 | scenarios: [ 8 | { 9 | name: 'ember-lts-3.4', 10 | npm: { 11 | devDependencies: { 12 | 'ember-source': '~3.4.0' 13 | } 14 | } 15 | }, 16 | { 17 | name: 'ember-lts-3.8', 18 | npm: { 19 | devDependencies: { 20 | 'ember-source': '~3.8.0' 21 | } 22 | } 23 | }, 24 | { 25 | name: 'ember-release', 26 | npm: { 27 | devDependencies: { 28 | 'ember-source': await getChannelURL('release') 29 | } 30 | } 31 | }, 32 | { 33 | name: 'ember-beta', 34 | npm: { 35 | devDependencies: { 36 | 'ember-source': await getChannelURL('beta') 37 | } 38 | } 39 | }, 40 | { 41 | name: 'ember-canary', 42 | npm: { 43 | devDependencies: { 44 | 'ember-source': await getChannelURL('canary') 45 | } 46 | } 47 | }, 48 | // The default `.travis.yml` runs this scenario via `npm test`, 49 | // not via `ember try`. It's still included here so that running 50 | // `ember try:each` manually or from a customized CI config will run it 51 | // along with all the other scenarios. 52 | { 53 | name: 'ember-default', 54 | npm: { 55 | devDependencies: {} 56 | } 57 | }, 58 | { 59 | name: 'ember-default-with-jquery', 60 | env: { 61 | EMBER_OPTIONAL_FEATURES: JSON.stringify({ 62 | 'jquery-integration': true 63 | }) 64 | }, 65 | npm: { 66 | devDependencies: { 67 | '@ember/jquery': '^0.5.1' 68 | } 69 | } 70 | } 71 | ] 72 | }; 73 | }; 74 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ember-jsoneditor", 3 | "version": "1.0.0", 4 | "description": "Ember component to view, edit and format JSON.", 5 | "keywords": [ 6 | "ember-addon", 7 | "json-editor", 8 | "json", 9 | "editor", 10 | "viewer", 11 | "formatter" 12 | ], 13 | "repository": "https://github.com/Glavin001/ember-jsoneditor", 14 | "license": "MIT", 15 | "author": { 16 | "name": "Glavin Wiechert", 17 | "email": "glavin.wiechert@gmail.com", 18 | "url": "https://github.com/Glavin001" 19 | }, 20 | "directories": { 21 | "doc": "doc", 22 | "test": "tests" 23 | }, 24 | "scripts": { 25 | "build": "ember build", 26 | "lint:hbs": "ember-template-lint .", 27 | "lint:js": "eslint .", 28 | "start": "ember serve", 29 | "test": "ember test", 30 | "test:all": "ember try:each", 31 | "deploy": "ember build && ember github-pages:commit --message \"Deploy gh-pages from commit $(git rev-parse HEAD)\" && git push origin gh-pages:gh-pages", 32 | "version": "auto-changelog -p && git add CHANGELOG.md" 33 | }, 34 | "auto-changelog": { 35 | "output": "CHANGELOG.md", 36 | "template": "changelog-template.hbs", 37 | "unreleased": true, 38 | "commitLimit": false 39 | }, 40 | "dependencies": { 41 | "broccoli-funnel": "^3.0.2", 42 | "broccoli-merge-trees": "^4.1.0", 43 | "ember-auto-import": "^1.5.3", 44 | "ember-cli-babel": "^7.19.0", 45 | "jsoneditor": "^8.6.4" 46 | }, 47 | "devDependencies": { 48 | "@ember/optional-features": "^1.3.0", 49 | "auto-changelog": "^1.16.3", 50 | "broccoli-asset-rev": "^3.0.0", 51 | "ember-cli": "^3.17.0", 52 | "ember-cli-dependency-checker": "^3.2.0", 53 | "ember-cli-eslint": "^5.1.0", 54 | "ember-cli-github-pages": "^0.2.2", 55 | "ember-cli-htmlbars": "^4.2.3", 56 | "ember-cli-inject-live-reload": "^2.0.2", 57 | "ember-cli-json-pretty": "^0.1.4", 58 | "ember-cli-sri": "^2.1.1", 59 | "ember-cli-template-lint": "^2.0.2", 60 | "ember-cli-uglify": "^3.0.0", 61 | "ember-disable-prototype-extensions": "^1.1.3", 62 | "ember-export-application-global": "^2.0.1", 63 | "ember-load-initializers": "^2.1.1", 64 | "ember-maybe-import-regenerator": "^0.1.6", 65 | "ember-qunit": "^4.6.0", 66 | "ember-resolver": "^7.0.0", 67 | "ember-source": "~3.12.0", 68 | "ember-source-channel-url": "^2.0.1", 69 | "ember-truth-helpers": "^2.1.0", 70 | "ember-try": "^1.4.0", 71 | "eslint-plugin-ember": "^8.0.0", 72 | "eslint-plugin-node": "^11.1.0", 73 | "loader.js": "^4.7.0", 74 | "qunit-dom": "^1.1.0" 75 | }, 76 | "engines": { 77 | "node": "10.* || >= 12" 78 | }, 79 | "ember-addon": { 80 | "configPath": "tests/dummy/config", 81 | "demoURL": "http://blog.glavin.org/ember-jsoneditor/" 82 | } 83 | } 84 | -------------------------------------------------------------------------------- /tests/integration/components/json-editor-test.js: -------------------------------------------------------------------------------- 1 | import { find, findAll, render } from '@ember/test-helpers'; 2 | import { module, test } from 'qunit'; 3 | import { setupRenderingTest } from 'ember-qunit'; 4 | import hbs from 'htmlbars-inline-precompile'; 5 | 6 | // tests borrowed from ember-cli-jsoneditor - why reinvent the wheel? - thanks!!! 7 | module('Integration | Component | json editor', function(hooks) { 8 | setupRenderingTest(hooks); 9 | 10 | hooks.beforeEach(function() { 11 | this.set('json', { name: 'bob', threes: 'company' }); 12 | }); 13 | 14 | test('json loads', async function(assert) { 15 | await render(hbs`{{json-editor json=json}}`); 16 | 17 | // hacky, but this was simple using JQuery 18 | let jsonData = ""; 19 | 20 | const rows = findAll('.jsoneditor-values tbody > tr') 21 | 22 | for (let i = 0; i < rows.length; i++){ 23 | for (let j = 0; j < rows[i].cells.length; j++) 24 | { 25 | jsonData += rows[i].cells[j].textContent.trim(); 26 | } 27 | } 28 | 29 | assert.equal(jsonData, "JSONEditor{2}name:bobthrees:company"); 30 | }); 31 | 32 | test('json', async function(assert) { 33 | assert.expect(2); 34 | 35 | await render(hbs`{{json-editor json=json onChange=(action (mut json))}}`); 36 | 37 | // prettier-ignore 38 | let content = find('.jsoneditor-tree').querySelectorAll('div[contenteditable="true"]'); 39 | let last = content[content.length - 1].textContent.toString(); 40 | assert.equal(last, 'company'); 41 | 42 | // prettier-ignore 43 | this.set('json', { foo: 'foo' }); 44 | content = find('.jsoneditor-tree').querySelectorAll( 45 | 'div[contenteditable="true"]' 46 | ); 47 | last = content[content.length - 1].textContent.toString(); 48 | 49 | assert.equal(last, 'foo'); 50 | }); 51 | 52 | test('mode - tree', async function(assert) { 53 | await render(hbs`{{json-editor json=json mode='tree'}}`); 54 | 55 | assert.ok(find('.jsoneditor-modes button').textContent.trim().indexOf('Tree') > -1); 56 | 57 | const content = find('.jsoneditor-tree').querySelectorAll('div[contenteditable="true"]'); 58 | const last = content[content.length - 1].textContent.toString(); 59 | assert.equal(last, 'company'); 60 | }); 61 | 62 | test('mode - view', async function(assert) { 63 | await render(hbs`{{json-editor json=json mode='view'}}`); 64 | assert.ok(find('.jsoneditor-modes button').textContent.trim().indexOf('View') > -1); 65 | assert.dom('.jsoneditor-tree > div[contenteditable="false"]').exists({ count: 5 }); 66 | }); 67 | 68 | test('mode - form', async function(assert) { 69 | await render(hbs`{{json-editor json=json mode='form'}}`); 70 | assert.ok(find('.jsoneditor-modes button').textContent.trim().indexOf('Form') > -1); 71 | assert.dom('.jsoneditor-tree > div[contenteditable="true"]').exists({ count: 2 }); 72 | 73 | const content = find('.jsoneditor-tree').querySelectorAll('div[contenteditable="true"]'); 74 | const last = content[content.length - 1].textContent.toString(); 75 | 76 | assert.equal(last, 'company'); 77 | }); 78 | 79 | test('mode - text', async function(assert) { 80 | await render(hbs`{{json-editor json=json mode='text'}}`); 81 | assert.ok(find('.jsoneditor-modes button').textContent.trim().indexOf('Text') > -1); 82 | }); 83 | 84 | test('mode - code', async function(assert) { 85 | await render(hbs`{{json-editor json=json mode='code'}}`); 86 | 87 | assert.ok( 88 | find('.jsoneditor-modes') 89 | .querySelector('button') 90 | .textContent.trim() 91 | .indexOf('Code') > -1 92 | ); 93 | }); 94 | }); 95 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ember-jsoneditor [![npm version](https://badge.fury.io/js/ember-jsoneditor.svg)](http://badge.fury.io/js/ember-jsoneditor) 2 | ============================================================================== 3 | 4 | 5 | 6 | > Ember component for [JSON Editor](https://github.com/josdejong/jsoneditor/) to view, edit and format JSON. 7 | 8 | **Live demo**: http://glavin001.github.io/ember-jsoneditor/ 9 | 10 | 11 | Compatibility 12 | ------------------------------------------------------------------------------ 13 | 14 | * Ember.js v3.4 or above 15 | * Ember CLI v2.13 or above 16 | * Node.js v10 or above 17 | 18 | Previous versions compatibility 19 | * ember-json-editor v9.3 - Ember.js 2.4 and above 20 | 21 | Installation 22 | ------------------------------------------------------------------------------ 23 | 24 | ``` 25 | ember install ember-jsoneditor 26 | ``` 27 | 28 | 29 | Usage 30 | ------------------------------------------------------------------------------ 31 | 32 | ```handlebars 33 | 34 | ``` 35 | 36 | For Ember versions < 3.4, you need to use classic component invocation: 37 | 38 | ```handlebars 39 | {{json-editor json=model mode=mode name=name}} 40 | ``` 41 | 42 | For a complete example, see the [dummy test app in `tests/dummy/app/`](https://github.com/Glavin001/ember-jsoneditor/tree/master/tests/dummy/app). 43 | 44 | ## Documentation 45 | 46 | See [jsoneditor](https://github.com/josdejong/jsoneditor/blob/master/docs/api.md) for configuration details. ember-jsoneditor supports the following jsoneditor options: 47 | 48 | 49 | Option | Description | Default 50 | ------------|-----------------------------------------------------------------------------------|------------ 51 | change | maps to jsoneditor's onChange event | null 52 | error | maps to jsoneditor's onError event | null 53 | expand | if true, renders with json tree expanded | false 54 | history | Enables history undo/redo button | true 55 | indentation | number of indentation spaces | 2 56 | mode | Editor mode - modes | tree 57 | modes | Drop down to select editor mode. Options: 'tree', 'view', 'form', 'code', 'text' | All options 58 | name | Field name for the JSON root node, | null 59 | search | boolean - show editor search box | true 60 | 61 | 62 | Example using event options 63 | 64 | ```handlebars 65 | {{!-- app/templates/application.hbs --}} 66 | 67 | 74 | ``` 75 | 76 | ```javascript 77 | // app/controllers/application.js 78 | import Controller from '@ember/controller'; 79 | 80 | export default Controller.extend({ 81 | /// .... 82 | actions: { 83 | myError(error){ 84 | alert(`Error: ${error}`) 85 | }, 86 | 87 | itChanged() { 88 | alert("The Data Changed!"); 89 | } 90 | } 91 | }) 92 | ``` 93 | 94 | 95 | 96 | Contributing 97 | ------------------------------------------------------------------------------ 98 | 99 | See the [Contributing](CONTRIBUTING.md) guide for details. 100 | 101 | 102 | License 103 | ------------------------------------------------------------------------------ 104 | 105 | This project is licensed under the [MIT License](LICENSE.md). 106 | -------------------------------------------------------------------------------- /addon/components/json-editor.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable ember/no-observers */ 2 | import Component from '@ember/component'; 3 | import { isEmpty } from '@ember/utils'; 4 | import { computed, observer } from '@ember/object'; 5 | import { bind } from '@ember/runloop'; 6 | import JSONEditor from 'jsoneditor'; 7 | 8 | export default Component.extend({ 9 | /** 10 | Element tag name. 11 | */ 12 | tagName: 'div', 13 | 14 | /** 15 | Element classes. 16 | */ 17 | classNames: ['jsoneditor-component'], 18 | 19 | /** 20 | Cached editor. 21 | */ 22 | _editor: null, 23 | 24 | /** 25 | Passed parameters 26 | */ 27 | editor: null, 28 | 29 | /** 30 | Component is rendered on DOM, so 31 | we can create the editor 32 | */ 33 | didInsertElement() { 34 | this._super(...arguments); 35 | let options = this.options; 36 | let json = this.json; 37 | let editor = new JSONEditor(this.element, options, json); 38 | 39 | if (this.expand) editor.expandAll(); 40 | 41 | // set cached editor 42 | this.set('_editor', editor); 43 | this.set('editor', editor); 44 | }, 45 | 46 | /** 47 | Tear down the editor if component 48 | is being destroyed 49 | */ 50 | willDestroyElement() { 51 | this._super(...arguments); 52 | this.editor.destroy(); 53 | }, 54 | /** 55 | JSON object 56 | */ 57 | json: null, 58 | 59 | /** 60 | Object with options 61 | */ 62 | // prettier-ignore 63 | options: computed( 64 | '_change', '_error', 'history', 'indentation', 'mode', 'modes', 'search', 'name', 65 | function () { 66 | 67 | const options = {}; 68 | 69 | options['history'] = this.history 70 | options['indentation'] = this.indentation; 71 | options['mode'] = this.mode; 72 | options['modes'] = this.modes; 73 | options['name'] = this.name; 74 | options['search'] = this.search; 75 | 76 | // https://balinterdi.com/blog/ember-dot-run-dot-bind/ 77 | // assign internal change function to jsoneditor onChange 78 | options['onChange'] = bind(this, this._change); 79 | 80 | // assign internal error function to jsoneditor onError 81 | options['onError'] = bind(this, this._error); 82 | 83 | // set nodes if none passed in 84 | const modes = ['tree', 'view', 'form', 'text', 'code']; 85 | options.modes = options.modes ? options.modes : modes; 86 | 87 | return options; 88 | }), 89 | 90 | /** 91 | Editor mode. Available values: 92 | 'tree' (default), 'view', 93 | 'form', 'text', and 'code' 94 | */ 95 | mode: 'tree', 96 | 97 | /** 98 | Create a box in the editor menu where the user can switch between the specified modes. 99 | Available values: see option mode. 100 | */ 101 | modes: null, 102 | 103 | /** 104 | Callback method, triggered 105 | on change of contents 106 | */ 107 | change: null, 108 | 109 | /** 110 | Set a callback method triggered when an error occurs. 111 | Invoked with the error as first argument. 112 | The callback is only invoked for errors triggered by a users action 113 | */ 114 | error: null, 115 | 116 | /** 117 | Error event handler. 118 | Triggers `error()` which is user defined 119 | */ 120 | _error: function(error) { 121 | // error is swallowed if function 122 | // was not passed to the compoment 123 | if (this.error) this.error(error); 124 | }, 125 | 126 | /** 127 | Editor updated JSON. 128 | */ 129 | _updating: false, 130 | 131 | /** 132 | Change event handler. 133 | Triggers `change()` which is user defined 134 | */ 135 | _change() { 136 | let editor = this._editor; 137 | 138 | if (isEmpty(editor)) { 139 | return; 140 | } 141 | try { 142 | let json = editor.get(); 143 | // 144 | this.set('_updating', true); 145 | this.set('json', json); 146 | this.set('_updating', false); 147 | 148 | // Trigger Change event 149 | if (this.change) { 150 | this.change(); 151 | } 152 | } catch (error) { 153 | this._error(error); 154 | } 155 | }, 156 | 157 | /** 158 | Enable search box. 159 | True by default 160 | Only applicable for modes 161 | 'tree', 'view', and 'form' 162 | */ 163 | search: true, 164 | 165 | /** 166 | Enable history (undo/redo). 167 | True by default 168 | Only applicable for modes 169 | 'tree', 'view', and 'form' 170 | */ 171 | history: true, 172 | 173 | /** 174 | Field name for the root node. 175 | Only applicable for modes 176 | 'tree', 'view', and 'form' 177 | */ 178 | name: 'JSONEditor', 179 | 180 | /** 181 | Number of indentation 182 | spaces. 4 by default. 183 | Only applicable for 184 | modes 'text' and 'code' 185 | */ 186 | indentation: 4, 187 | 188 | /** 189 | Editor did change. 190 | */ 191 | editorDidChange: observer('editor', function() { 192 | // this.get('editor'); 193 | }), 194 | 195 | /** 196 | JSON did change 197 | */ 198 | jsonDidChange: observer('json', function() { 199 | if (!this._updating) { 200 | let json = this.json; 201 | this.editor.set(json); 202 | } 203 | }), 204 | 205 | /** 206 | Mode did change 207 | */ 208 | modeDidChange: observer('mode', function() { 209 | let mode = this.mode; 210 | this.editor.setMode(mode); 211 | }), 212 | 213 | /** 214 | Name did change 215 | */ 216 | nameDidChange: observer('name', function() { 217 | let name = this.name; 218 | this.editor.setName(name); 219 | }) 220 | }); 221 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | All notable changes to this project will be documented in this file. 4 | 5 | ## [v1.0.0](https://github.com/Glavin001/ember-jsoneditor/compare/v0.9.5...v1.0.0) - 2020-03-29 6 | 7 | ### Merged 8 | 9 | - Ember 3.12 [`#33`](https://github.com/Glavin001/ember-jsoneditor/pull/33) 10 | 11 | ### Commits 12 | 13 | - 3.4...3.12 [`af5efe1`](https://github.com/Glavin001/ember-jsoneditor/commit/af5efe10f2956ad9b4b6057f33dfdc37f10809ea) 14 | - npm audit fix [`be5b246`](https://github.com/Glavin001/ember-jsoneditor/commit/be5b246a474207a59f7c6cc69792eaef6885eac0) 15 | - Fixed linting errors [`d3b5ac0`](https://github.com/Glavin001/ember-jsoneditor/commit/d3b5ac0f835dc328d98d0a45bb3755926a86d268) 16 | - Drop node v8 support [`8be512f`](https://github.com/Glavin001/ember-jsoneditor/commit/8be512fb6239a059373cecec073773c540326478) 17 | 18 | ## [v0.9.5](https://github.com/Glavin001/ember-jsoneditor/compare/v0.9.4...v0.9.5) - 2019-10-29 19 | 20 | ### Merged 21 | 22 | - Update dependencies [`#31`](https://github.com/Glavin001/ember-jsoneditor/pull/31) 23 | 24 | ### Commits 25 | 26 | - Added missing npm badge [`3443f9d`](https://github.com/Glavin001/ember-jsoneditor/commit/3443f9d2ce3f45631d3a36337e04fa3652647102) 27 | 28 | ## [v0.9.4](https://github.com/Glavin001/ember-jsoneditor/compare/v0.9.3...v0.9.4) - 2019-10-06 29 | 30 | ### Merged 31 | 32 | - Ember 3.8 [`#29`](https://github.com/Glavin001/ember-jsoneditor/pull/29) 33 | - Converted README examples and Application template to angle-brackets [`#28`](https://github.com/Glavin001/ember-jsoneditor/pull/28) 34 | 35 | ### Commits 36 | 37 | - Improved demo app [`a2815f5`](https://github.com/Glavin001/ember-jsoneditor/commit/a2815f54aaa183d5933489677c27eb0350afa603) 38 | - Update readme and application to angle bracket syntax [`8cfcdda`](https://github.com/Glavin001/ember-jsoneditor/commit/8cfcdda4220d309c16dd8687b9318c309cadb2cb) 39 | - Bump versions of ember-auto-import and gh-pages addons [`400616b`](https://github.com/Glavin001/ember-jsoneditor/commit/400616b89771c6c210a0d4561d7a5d4eae65b0e3) 40 | - add github pages deploy script [`d085c48`](https://github.com/Glavin001/ember-jsoneditor/commit/d085c4805efba7caa4bb7cf97731299090a4805c) 41 | 42 | ## [v0.9.3](https://github.com/Glavin001/ember-jsoneditor/compare/v0.9.2...v0.9.3) - 2019-10-05 43 | 44 | ### Merged 45 | 46 | - Fixed tests after @ember/jquery was removed [`#26`](https://github.com/Glavin001/ember-jsoneditor/pull/26) 47 | - Remove jQuery [`#24`](https://github.com/Glavin001/ember-jsoneditor/pull/24) 48 | 49 | ### Commits 50 | 51 | - Ran codemods to remove jQuery [`dca50a9`](https://github.com/Glavin001/ember-jsoneditor/commit/dca50a93e089bf5197cafdb9dff26eab5b3eabea) 52 | - Switch from Yarn back to NPM because 'npm audit fix' [`5057c7c`](https://github.com/Glavin001/ember-jsoneditor/commit/5057c7c36235b628775d402e36f1d941eaebc045) 53 | - Add auto-changelog [`0f7148c`](https://github.com/Glavin001/ember-jsoneditor/commit/0f7148c2fe46a4b7cdbd4afd9e3c168b7b88aaf5) 54 | - Fixed tests aferter @ember/jquery was removed [`f10784d`](https://github.com/Glavin001/ember-jsoneditor/commit/f10784d84897fb3c58cbcc6fd651e91e259e2380) 55 | 56 | ## [v0.9.2](https://github.com/Glavin001/ember-jsoneditor/compare/v0.9.1...v0.9.2) - 2019-02-02 57 | 58 | ### Commits 59 | 60 | - corrected handlebar comments, added second abr example [`851cf6e`](https://github.com/Glavin001/ember-jsoneditor/commit/851cf6e99e669f4ffe0b2e7ef5f6a592375a7981) 61 | 62 | ## [v0.9.1](https://github.com/Glavin001/ember-jsoneditor/compare/v0.7.0...v0.9.1) - 2019-02-02 63 | 64 | ### Merged 65 | 66 | - Add expand property [`#23`](https://github.com/Glavin001/ember-jsoneditor/pull/23) 67 | 68 | ### Commits 69 | 70 | - added angle bracket invocation example [`a1cf23f`](https://github.com/Glavin001/ember-jsoneditor/commit/a1cf23f6d26756fc9e0acc8efe5743d5650fdabf) 71 | 72 | ## [v0.7.0](https://github.com/Glavin001/ember-jsoneditor/compare/v0.6.1...v0.7.0) - 2018-11-15 73 | 74 | ### Commits 75 | 76 | - updated readme [`7bcdde1`](https://github.com/Glavin001/ember-jsoneditor/commit/7bcdde124293b0455083c00680abaf66e9502d56) 77 | - drop venderTree from index.js MergeTrees [`3afa43c`](https://github.com/Glavin001/ember-jsoneditor/commit/3afa43c03eac1ee5afd6833468e08918435f428f) 78 | 79 | ## [v0.6.1](https://github.com/Glavin001/ember-jsoneditor/compare/v0.5.1...v0.6.1) - 2018-11-08 80 | 81 | ### Merged 82 | 83 | - Broccolli [`#20`](https://github.com/Glavin001/ember-jsoneditor/pull/20) 84 | 85 | ## [v0.5.1](https://github.com/Glavin001/ember-jsoneditor/compare/v0.5.0...v0.5.1) - 2018-11-08 86 | 87 | ### Commits 88 | 89 | - fixed missed bower install in blueprint [`05214ae`](https://github.com/Glavin001/ember-jsoneditor/commit/05214ae8e55704fcc6a75275621ad76256679b37) 90 | 91 | ## [v0.5.0](https://github.com/Glavin001/ember-jsoneditor/compare/v0.2.1...v0.5.0) - 2018-11-08 92 | 93 | ### Merged 94 | 95 | - Upgrade to ember 3.4 lts [`#19`](https://github.com/Glavin001/ember-jsoneditor/pull/19) 96 | - Configure travis.yml [`#18`](https://github.com/Glavin001/ember-jsoneditor/pull/18) 97 | - Upgrades [`#17`](https://github.com/Glavin001/ember-jsoneditor/pull/17) 98 | 99 | ## [v0.2.1](https://github.com/Glavin001/ember-jsoneditor/compare/v0.1.2...v0.2.1) - 2018-04-28 100 | 101 | ### Merged 102 | 103 | - Updated docs/fixed warnings #14 [`#16`](https://github.com/Glavin001/ember-jsoneditor/pull/16) 104 | - ember upgrade 2.18.2 [`#15`](https://github.com/Glavin001/ember-jsoneditor/pull/15) 105 | 106 | ### Fixed 107 | 108 | - ember upgrade 2.18.2 (#15) [`#8`](https://github.com/Glavin001/ember-jsoneditor/issues/8) 109 | 110 | ### Commits 111 | 112 | - 2.18.2 upgrade [`ea5e241`](https://github.com/Glavin001/ember-jsoneditor/commit/ea5e241973d1571e1d8bb84cb99aeb40065cc68c) 113 | - 2.18.2 upgrade - first pass [`6219c91`](https://github.com/Glavin001/ember-jsoneditor/commit/6219c91f16635dd03bda472424d5b9974310ffb0) 114 | - fixed jsoneditor property warnings [`21bad0d`](https://github.com/Glavin001/ember-jsoneditor/commit/21bad0d1d937b2d3a31fe40691721c76c99ab2b2) 115 | - added tests [`5d62901`](https://github.com/Glavin001/ember-jsoneditor/commit/5d6290193448a5f1567cd6c63cc844017875db27) 116 | - updated documentation [`d3eebec`](https://github.com/Glavin001/ember-jsoneditor/commit/d3eebecb60f1d7fc42ed8db300390fb0e7249888) 117 | - added bower install [`d27da24`](https://github.com/Glavin001/ember-jsoneditor/commit/d27da247e6d3508b6dff2d5b79a60a15dcfef19c) 118 | - added postinstall script [`0550da8`](https://github.com/Glavin001/ember-jsoneditor/commit/0550da87d4ca8b47926750810db3703af73fe5db) 119 | - added missing documentation [`f69c0da`](https://github.com/Glavin001/ember-jsoneditor/commit/f69c0dafc520ed267e8535c5e2986d91ab73bbb8) 120 | - fix bower install [`6140697`](https://github.com/Glavin001/ember-jsoneditor/commit/6140697a0ce1298c41c1d2ec5b714dc8d8105c75) 121 | - updated sudo [`ccd4fdb`](https://github.com/Glavin001/ember-jsoneditor/commit/ccd4fdb0c1a7a19b34beedf76faf6dafeecedb31) 122 | 123 | ## [v0.1.2](https://github.com/Glavin001/ember-jsoneditor/compare/v0.1.1...v0.1.2) - 2016-05-17 124 | 125 | ### Merged 126 | 127 | - jsoneditor now ships with a SVG image [`#9`](https://github.com/Glavin001/ember-jsoneditor/pull/9) 128 | - Fixed blueprint requirement of normalizeEntityName() and fixed bower path for jsoneditor [`#3`](https://github.com/Glavin001/ember-jsoneditor/pull/3) 129 | - Removed element from property dependents because it cannot be observed [`#5`](https://github.com/Glavin001/ember-jsoneditor/pull/5) 130 | - Convert to Ember CLI plugin [`#2`](https://github.com/Glavin001/ember-jsoneditor/pull/2) 131 | 132 | ### Fixed 133 | 134 | - Closes #6. notifyPropertyChange on controller with update component [`#6`](https://github.com/Glavin001/ember-jsoneditor/issues/6) 135 | 136 | ### Commits 137 | 138 | - Remove dist/ directory. [`e91de1b`](https://github.com/Glavin001/ember-jsoneditor/commit/e91de1bb03368a28ba6e16ae5c1ee6eb1c43ee90) 139 | - Add dist/ directory for GitHub Pages [`10ef0c6`](https://github.com/Glavin001/ember-jsoneditor/commit/10ef0c6221c54acae07ee5303a69f5cdf77b2cfd) 140 | - Moving over to Ember CLI [`17f80f4`](https://github.com/Glavin001/ember-jsoneditor/commit/17f80f4826d2f095166e36fc7008cc6705d0bd65) 141 | - Update to latest Ember-CLI, jsoneditor, and other dependencies [`7207a4a`](https://github.com/Glavin001/ember-jsoneditor/commit/7207a4a23687bebad5f9d8ad3593a06e64a9d65b) 142 | - Added blueprint, and finished demo page [`b9ea104`](https://github.com/Glavin001/ember-jsoneditor/commit/b9ea1047a260aa81a2a8a653c956fe95fa332fea) 143 | - Improve README [`02f5196`](https://github.com/Glavin001/ember-jsoneditor/commit/02f51963116df77dd9720d1767f887bb371c6a45) 144 | - Improve package.json for release 0.1.0 [`97fe211`](https://github.com/Glavin001/ember-jsoneditor/commit/97fe2114538341903155710e9faece9bbf13c9fd) 145 | - Updated package.json [`1110cb4`](https://github.com/Glavin001/ember-jsoneditor/commit/1110cb4b4d1abec94f11fe37afdb8b81d97c6819) 146 | - Setup ember-cli-github-pages [`981726d`](https://github.com/Glavin001/ember-jsoneditor/commit/981726d158080f48d0b67e34676c32101899358f) 147 | - Use ember build to generate dist/ [`8702c3e`](https://github.com/Glavin001/ember-jsoneditor/commit/8702c3e13d0ad1239117c2d3ebc28a67950c3004) 148 | - Add demoURL to package.json [`9a61610`](https://github.com/Glavin001/ember-jsoneditor/commit/9a61610dbf0edd5ec8a5e9d456065507cbe82710) 149 | - Add npm version badge to README [`3699b92`](https://github.com/Glavin001/ember-jsoneditor/commit/3699b92da71e17be59f98595d1ea91ccb65dde9a) 150 | - Built example page [`572f780`](https://github.com/Glavin001/ember-jsoneditor/commit/572f780caf37e583652c52404e24e582c22cbc52) 151 | - Add dist/ to gitignore [`b812428`](https://github.com/Glavin001/ember-jsoneditor/commit/b81242865ada94afe3c49298d3080f733178cdec) 152 | 153 | ## [v0.1.1](https://github.com/Glavin001/ember-jsoneditor/compare/v0.1.0...v0.1.1) - 2014-05-26 154 | 155 | ### Commits 156 | 157 | - Improve demo with two-way binding example. [`b66660a`](https://github.com/Glavin001/ember-jsoneditor/commit/b66660ac1d990dac827e59e163d1a657d6b62875) 158 | 159 | ## v0.1.0 - 2014-05-25 160 | 161 | ### Commits 162 | 163 | - Initial commit with generator-ember-plugin. [`b9e56fb`](https://github.com/Glavin001/ember-jsoneditor/commit/b9e56fb26d52c3702f236393592b9c93d284094d) 164 | - First completely working version. [`a695955`](https://github.com/Glavin001/ember-jsoneditor/commit/a695955b3ff2a20cd26b6ca5ef31edd95019673c) 165 | - Initial commit [`c0b99c6`](https://github.com/Glavin001/ember-jsoneditor/commit/c0b99c644052f97b112ddc9d626cb100f5427475) 166 | - Version bump to 0.1.0 and :lipstick: README file. [`9797a5a`](https://github.com/Glavin001/ember-jsoneditor/commit/9797a5ad143dd97db1d8f62e0e01ef2e445b009a) 167 | --------------------------------------------------------------------------------