├── 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 |
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 [](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 |
--------------------------------------------------------------------------------