@wirenboard/json-editor 2.5.3-wb13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env-dist +2 -0
- package/.eslintrc +7 -0
- package/.gitattributes +1 -0
- package/.github/PULL_REQUEST_TEMPLATE.md +9 -0
- package/.github/issue_template +25 -0
- package/.github/workflows/build.yml +58 -0
- package/.travis.yml +70 -0
- package/CHANGELOG.md +915 -0
- package/CONTRIBUTING.md +92 -0
- package/LICENSE +20 -0
- package/Makefile +26 -0
- package/README.md +1646 -0
- package/README_ADDON.md +573 -0
- package/UPGRADING.md +46 -0
- package/build/CssToJson.js +55 -0
- package/codecept.conf.js +35 -0
- package/config/.eslintrc +7 -0
- package/config/codeceptjs_helpers.js +139 -0
- package/config/helpers.js +10 -0
- package/config/karma.conf.js +93 -0
- package/config/readme.md +31 -0
- package/config/webpack.common.js +75 -0
- package/config/webpack.dev.js +15 -0
- package/config/webpack.nonmin.js +19 -0
- package/config/webpack.prod.js +25 -0
- package/dist/jsoneditor.js +14 -0
- package/dist/nonmin/jsoneditor.js +29097 -0
- package/dist/nonmin/jsoneditor.js.map +1 -0
- package/docs/ace_editor.html +56 -0
- package/docs/advanced.html +136 -0
- package/docs/basic.html +63 -0
- package/docs/basic_person.json +26 -0
- package/docs/choices.html +86 -0
- package/docs/cleave.html +132 -0
- package/docs/colorpicker.html +194 -0
- package/docs/css_integration.html +135 -0
- package/docs/datetime.html +305 -0
- package/docs/describedby.html +161 -0
- package/docs/enumsource.html +67 -0
- package/docs/images/categoriesDemo.png +0 -0
- package/docs/images/inheritance_tree.png +0 -0
- package/docs/images/jsoneditor.png +0 -0
- package/docs/imask.html +192 -0
- package/docs/index.html +579 -0
- package/docs/materialize_css.html +164 -0
- package/docs/meta_schema.json +705 -0
- package/docs/multiple_upload_base64.html +65 -0
- package/docs/person.json +73 -0
- package/docs/polyfills/assign.js +29 -0
- package/docs/radio.html +156 -0
- package/docs/recursive.html +170 -0
- package/docs/select2.html +99 -0
- package/docs/selectize.html +100 -0
- package/docs/signature.html +42 -0
- package/docs/starrating.html +137 -0
- package/docs/upload.html +131 -0
- package/docs/uuid.html +70 -0
- package/docs/wysiwyg.html +56 -0
- package/jasmine.json +11 -0
- package/json-editor-json-editor-2.5.3-wb13.tgz +0 -0
- package/package.json +100 -0
- package/release-notes.md +88 -0
- package/src/core.js +412 -0
- package/src/defaults.js +402 -0
- package/src/editor.js +707 -0
- package/src/editors/ace.js +89 -0
- package/src/editors/array/choices.js +103 -0
- package/src/editors/array/select2.js +110 -0
- package/src/editors/array/selectize.js +103 -0
- package/src/editors/array.css +9 -0
- package/src/editors/array.css.js +3 -0
- package/src/editors/array.js +818 -0
- package/src/editors/autocomplete.js +58 -0
- package/src/editors/base64.js +157 -0
- package/src/editors/button.js +97 -0
- package/src/editors/checkbox.js +95 -0
- package/src/editors/choices.css +3 -0
- package/src/editors/choices.css.js +3 -0
- package/src/editors/choices.js +69 -0
- package/src/editors/colorpicker.js +103 -0
- package/src/editors/datetime.js +141 -0
- package/src/editors/describedby.js +188 -0
- package/src/editors/enum.js +136 -0
- package/src/editors/hidden.js +127 -0
- package/src/editors/index.js +81 -0
- package/src/editors/info.js +20 -0
- package/src/editors/integer.js +19 -0
- package/src/editors/ip.js +36 -0
- package/src/editors/jodit.js +64 -0
- package/src/editors/multiple.js +409 -0
- package/src/editors/multiselect.js +218 -0
- package/src/editors/null.js +18 -0
- package/src/editors/number.js +51 -0
- package/src/editors/object.css +41 -0
- package/src/editors/object.css.js +3 -0
- package/src/editors/object.js +1290 -0
- package/src/editors/radio.js +111 -0
- package/src/editors/sceditor.js +72 -0
- package/src/editors/select.js +370 -0
- package/src/editors/select2.js +110 -0
- package/src/editors/selectize.js +112 -0
- package/src/editors/signature.js +113 -0
- package/src/editors/simplemde.js +100 -0
- package/src/editors/starrating.css +52 -0
- package/src/editors/starrating.css.js +3 -0
- package/src/editors/starrating.js +135 -0
- package/src/editors/stepper.js +27 -0
- package/src/editors/string.js +372 -0
- package/src/editors/table.js +516 -0
- package/src/editors/upload.js +321 -0
- package/src/editors/uuid.js +56 -0
- package/src/iconlib.js +24 -0
- package/src/iconlibs/bootstrap2.js +28 -0
- package/src/iconlibs/bootstrap3.js +28 -0
- package/src/iconlibs/fontawesome3.js +28 -0
- package/src/iconlibs/fontawesome4.js +28 -0
- package/src/iconlibs/fontawesome5.js +28 -0
- package/src/iconlibs/foundation2.js +24 -0
- package/src/iconlibs/foundation3.js +28 -0
- package/src/iconlibs/index.js +25 -0
- package/src/iconlibs/jqueryui.js +28 -0
- package/src/iconlibs/materialicons.js +49 -0
- package/src/iconlibs/openiconic.js +28 -0
- package/src/iconlibs/spectre.js +28 -0
- package/src/resolvers.js +128 -0
- package/src/schemaloader.js +408 -0
- package/src/style.css +150 -0
- package/src/style.css.js +3 -0
- package/src/templates/default.js +52 -0
- package/src/templates/ejs.js +13 -0
- package/src/templates/handlebars.js +1 -0
- package/src/templates/hogan.js +10 -0
- package/src/templates/index.js +21 -0
- package/src/templates/lodash.js +9 -0
- package/src/templates/markup.js +9 -0
- package/src/templates/mustache.js +9 -0
- package/src/templates/swig.js +1 -0
- package/src/templates/underscore.js +9 -0
- package/src/theme.js +659 -0
- package/src/themes/barebones.css +35 -0
- package/src/themes/barebones.css.js +3 -0
- package/src/themes/barebones.js +28 -0
- package/src/themes/bootstrap2.js +319 -0
- package/src/themes/bootstrap3.css +0 -0
- package/src/themes/bootstrap3.css.js +3 -0
- package/src/themes/bootstrap3.js +315 -0
- package/src/themes/bootstrap4.css +89 -0
- package/src/themes/bootstrap4.css.js +3 -0
- package/src/themes/bootstrap4.js +690 -0
- package/src/themes/bootstrap5.css.js +3 -0
- package/src/themes/foundation.js +569 -0
- package/src/themes/html.css +60 -0
- package/src/themes/html.css.js +3 -0
- package/src/themes/html.js +71 -0
- package/src/themes/index.js +28 -0
- package/src/themes/jqueryui.js +198 -0
- package/src/themes/materialize.js +426 -0
- package/src/themes/spectre.css +208 -0
- package/src/themes/spectre.css.js +3 -0
- package/src/themes/spectre.js +406 -0
- package/src/themes/tailwind.css +249 -0
- package/src/themes/tailwind.css.js +3 -0
- package/src/themes/tailwind.js +443 -0
- package/src/utilities.js +138 -0
- package/src/validator.js +877 -0
- package/src/validators/ip-validator.js +51 -0
- package/tests/Dockerfile +3 -0
- package/tests/README.md +48 -0
- package/tests/codeceptjs/codecept.json +42 -0
- package/tests/codeceptjs/constrains/if-then-else_test.js +143 -0
- package/tests/codeceptjs/core_test.js +217 -0
- package/tests/codeceptjs/editors/advanced_test.js +13 -0
- package/tests/codeceptjs/editors/array_any_of_test.js +50 -0
- package/tests/codeceptjs/editors/array_test.js +900 -0
- package/tests/codeceptjs/editors/button_test.js +35 -0
- package/tests/codeceptjs/editors/checkbox_test.js +21 -0
- package/tests/codeceptjs/editors/colorpicker_test.js +27 -0
- package/tests/codeceptjs/editors/datetime_test.js +33 -0
- package/tests/codeceptjs/editors/inheritance_test.js +11 -0
- package/tests/codeceptjs/editors/integer_test.js +84 -0
- package/tests/codeceptjs/editors/issues/issue-gh-812_test.js +32 -0
- package/tests/codeceptjs/editors/jodit_test.js +24 -0
- package/tests/codeceptjs/editors/multiselect_test.js +8 -0
- package/tests/codeceptjs/editors/number_test.js +82 -0
- package/tests/codeceptjs/editors/object_test.js +204 -0
- package/tests/codeceptjs/editors/option-no_default_values_test.js +42 -0
- package/tests/codeceptjs/editors/programmatic-changes_test.js +20 -0
- package/tests/codeceptjs/editors/radio_test.js +10 -0
- package/tests/codeceptjs/editors/rating_test.js +13 -0
- package/tests/codeceptjs/editors/select_test.js +22 -0
- package/tests/codeceptjs/editors/stepper_test.js +27 -0
- package/tests/codeceptjs/editors/string_test.js +118 -0
- package/tests/codeceptjs/editors/table-confirm-delete_test.js +67 -0
- package/tests/codeceptjs/editors/tabs_test.js +14 -0
- package/tests/codeceptjs/editors/uuid_test.js +21 -0
- package/tests/codeceptjs/editors/validation_test.js +14 -0
- package/tests/codeceptjs/meta-schema_test.js +17 -0
- package/tests/codeceptjs/schemaloader_test.js +13 -0
- package/tests/codeceptjs/steps.d.ts +13 -0
- package/tests/codeceptjs/steps_file.js +12 -0
- package/tests/codeceptjs/themes_test.js +519 -0
- package/tests/docker-compose.yml +34 -0
- package/tests/fixtures/basic_person.json +26 -0
- package/tests/fixtures/nested_object.json +26 -0
- package/tests/fixtures/person.json +55 -0
- package/tests/fixtures/recursive.json +8 -0
- package/tests/fixtures/some_types.json +32 -0
- package/tests/fixtures/string.json +3 -0
- package/tests/fixtures/validation.json +1140 -0
- package/tests/pages/_demo.html +475 -0
- package/tests/pages/advanced.html +137 -0
- package/tests/pages/anyof.html +80 -0
- package/tests/pages/array-anyof.html +142 -0
- package/tests/pages/array-checkboxes.html +41 -0
- package/tests/pages/array-choices.html +45 -0
- package/tests/pages/array-integers.html +37 -0
- package/tests/pages/array-move-events.html +61 -0
- package/tests/pages/array-multiselects.html +42 -0
- package/tests/pages/array-nested-arrays.html +40 -0
- package/tests/pages/array-numbers.html +37 -0
- package/tests/pages/array-objects.html +42 -0
- package/tests/pages/array-ratings.html +40 -0
- package/tests/pages/array-selectize.html +51 -0
- package/tests/pages/array-selects.html +36 -0
- package/tests/pages/array-strings.html +36 -0
- package/tests/pages/array.html +42 -0
- package/tests/pages/assets/pages.css +130 -0
- package/tests/pages/button-callbacks.html +77 -0
- package/tests/pages/checkbox-labels.html +114 -0
- package/tests/pages/colorpicker-no-3rd-party.html +43 -0
- package/tests/pages/colorpicker-use-vanilla-picker.html +50 -0
- package/tests/pages/core.html +118 -0
- package/tests/pages/datetime.html +76 -0
- package/tests/pages/form-name.html +108 -0
- package/tests/pages/grid-strict.html +311 -0
- package/tests/pages/grid.html +284 -0
- package/tests/pages/if-then-else-allOf.html +117 -0
- package/tests/pages/inheritance.html +76 -0
- package/tests/pages/integer.html +68 -0
- package/tests/pages/issues/_template.html +50 -0
- package/tests/pages/issues/issue-gh-812.html +110 -0
- package/tests/pages/issues/issue-gh-823-meta-schema.html +35 -0
- package/tests/pages/issues/issue-gh-848.html +81 -0
- package/tests/pages/meta_schema.json +705 -0
- package/tests/pages/number.html +89 -0
- package/tests/pages/object-no-additional-properties.html +65 -0
- package/tests/pages/object-no-duplicated-id.html +68 -0
- package/tests/pages/object-required-properties.html +236 -0
- package/tests/pages/object-with-dependencies-array.html +46 -0
- package/tests/pages/object-with-dependencies.html +60 -0
- package/tests/pages/object.html +79 -0
- package/tests/pages/oneof.html +103 -0
- package/tests/pages/option-no_default_values.html +58 -0
- package/tests/pages/programmatic-changes.html +120 -0
- package/tests/pages/read-only.html +105 -0
- package/tests/pages/select.html +41 -0
- package/tests/pages/stepper.html +59 -0
- package/tests/pages/string-ace-editor.html +52 -0
- package/tests/pages/string-cleave.html +46 -0
- package/tests/pages/string-custom-attributes.html +62 -0
- package/tests/pages/string-formats.html +52 -0
- package/tests/pages/string-formats2.html +57 -0
- package/tests/pages/string-jodit-editor.html +49 -0
- package/tests/pages/string-sceditor.html +62 -0
- package/tests/pages/table-move-events.html +56 -0
- package/tests/pages/table.html +46 -0
- package/tests/pages/tabs.html +131 -0
- package/tests/pages/themes.html +527 -0
- package/tests/pages/translate-property.html +247 -0
- package/tests/pages/urn.html +93 -0
- package/tests/pages/uuid.html +72 -0
- package/tests/pages/validation.html +99 -0
- package/tests/unit/.eslintrc +8 -0
- package/tests/unit/core.spec.js +309 -0
- package/tests/unit/defaults.spec.js +40 -0
- package/tests/unit/editor.spec.js +160 -0
- package/tests/unit/editors/array.spec.js +86 -0
- package/tests/unit/editors/object.spec.js +79 -0
- package/tests/unit/editors/table.spec.js +91 -0
- package/tests/unit/readme.md +35 -0
- package/tests/unit/schemaloader.spec.js +498 -0
- package/tests/unit/validator.spec.js +94 -0
- package/tests/unit/validators/ip-validator.spec.js +62 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html>
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<title>JSON Editor signature drawing</title>
|
|
6
|
+
<script src="https://cdn.jsdelivr.net/npm/signature_pad@2.3.2/dist/signature_pad.min.js"></script>
|
|
7
|
+
<script src="https://cdn.jsdelivr.net/npm/@json-editor/json-editor@latest/dist/jsoneditor.min.js"></script>
|
|
8
|
+
</head>
|
|
9
|
+
<body>
|
|
10
|
+
<h1>JSON Editor: signature editor</h1>
|
|
11
|
+
|
|
12
|
+
<div>Using this editor a signature (or any other simple drawing) can be made using the mouse or touchpad. The result is saved in base64 format. The editor will span the full width of the container, so no columns/grids are possible. With big thank you to <a href='https://github.com/szimek'>Szimek</a> for creating SignaturePad. <a href='https://github.com/szimek/signature_pad'>SignaturePad</a> must be included before the json-editor to load the signature editor properly. Set the type of the property to 'string' and the format to 'signature' to use the editor. The canvas is set to a default height of 300px, but this can be easily overriden by adding for example 'canvas_height': 500 in the properties.</div>
|
|
13
|
+
|
|
14
|
+
<div id='editor_holder'></div>
|
|
15
|
+
<button id='submit'>Submit (console.log)</button>
|
|
16
|
+
|
|
17
|
+
<script>
|
|
18
|
+
// Initialize the editor with a JSON schema
|
|
19
|
+
var editor = new JSONEditor(document.getElementById('editor_holder'),{
|
|
20
|
+
"schema": {
|
|
21
|
+
"type": "object",
|
|
22
|
+
"title": "Document",
|
|
23
|
+
"properties": {
|
|
24
|
+
"signature": {
|
|
25
|
+
"type": "signature",
|
|
26
|
+
"title": "Signature",
|
|
27
|
+
"options": {
|
|
28
|
+
"canvas_height": 500
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
// Hook up the submit button to log to the console
|
|
36
|
+
document.getElementById('submit').addEventListener('click',function() {
|
|
37
|
+
// Get the value from the editor
|
|
38
|
+
console.log(editor.getValue());
|
|
39
|
+
});
|
|
40
|
+
</script>
|
|
41
|
+
</body>
|
|
42
|
+
</html>
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
<!DOCTYPE HTML>
|
|
2
|
+
|
|
3
|
+
<html>
|
|
4
|
+
|
|
5
|
+
<head>
|
|
6
|
+
<title>starrating editor examples</title>
|
|
7
|
+
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
|
8
|
+
|
|
9
|
+
<!-- Enable responsive viewport -->
|
|
10
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
11
|
+
|
|
12
|
+
<!-- jQuery -->
|
|
13
|
+
<script src="https://cdn.jsdelivr.net/npm/jquery@3.4.1/dist/jquery.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
|
|
14
|
+
|
|
15
|
+
<!-- Bootstrap4 -->
|
|
16
|
+
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
|
|
17
|
+
|
|
18
|
+
<!-- fontawesome5 -->
|
|
19
|
+
<link rel='stylesheet' href='https://use.fontawesome.com/releases/v5.12.1/css/all.css'>
|
|
20
|
+
|
|
21
|
+
<!-- JSON-Editor -->
|
|
22
|
+
<script src="https://cdn.jsdelivr.net/npm/@json-editor/json-editor@latest/dist/jsoneditor.min.js"></script>
|
|
23
|
+
|
|
24
|
+
<style type="text/css">
|
|
25
|
+
body {
|
|
26
|
+
margin: 1em;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.starrating {
|
|
30
|
+
direction: rtl;
|
|
31
|
+
display: inline-block;
|
|
32
|
+
white-space:nowrap;
|
|
33
|
+
}
|
|
34
|
+
.starrating > input {
|
|
35
|
+
display: none;
|
|
36
|
+
} /* Remove radio buttons */
|
|
37
|
+
.starrating > label:before {
|
|
38
|
+
content: '\2606'; /* Empty Star */
|
|
39
|
+
margin: 1px;
|
|
40
|
+
font-size: 18px;
|
|
41
|
+
font-style:normal;
|
|
42
|
+
font-weight:400;
|
|
43
|
+
line-height:1;
|
|
44
|
+
font-family: 'Arial';
|
|
45
|
+
display: inline-block;
|
|
46
|
+
}
|
|
47
|
+
.starrating > label {
|
|
48
|
+
color: #888; /* Start color when not clicked */
|
|
49
|
+
cursor: pointer;
|
|
50
|
+
margin: 0;
|
|
51
|
+
margin: 8px 0 2px 0;
|
|
52
|
+
}
|
|
53
|
+
.starrating > label.starrating-display-enabled {
|
|
54
|
+
margin: 1px 0 0 0;
|
|
55
|
+
}
|
|
56
|
+
.starrating > input:checked ~ label,
|
|
57
|
+
.starrating:not(.readonly) > input:hover ~ label {
|
|
58
|
+
color: #ffca08; /* Set yellow color when star checked/hover */
|
|
59
|
+
}
|
|
60
|
+
.starrating > input:checked ~ label:before,
|
|
61
|
+
.starrating:not(.readonly) > input:hover ~ label:before {
|
|
62
|
+
content: '\2605'; /* Filled Star when star checked/hover */
|
|
63
|
+
text-shadow: 0 0 1px rgba(0,20,20,1);
|
|
64
|
+
}
|
|
65
|
+
.starrating .starrating-display {
|
|
66
|
+
position: relative;
|
|
67
|
+
direction: ltr;
|
|
68
|
+
text-align: center;
|
|
69
|
+
font-size: 10px;
|
|
70
|
+
line-height: 0px;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
</style>
|
|
74
|
+
</head>
|
|
75
|
+
|
|
76
|
+
<body>
|
|
77
|
+
<h2>String based Starrating editor</h2>
|
|
78
|
+
<p><ul>
|
|
79
|
+
<li>If "displayValue" is set to true, the seleced option will be displayed below the stars.</li>
|
|
80
|
+
</ul></p>
|
|
81
|
+
<div id="form"></div>
|
|
82
|
+
<script type="text/javascript">
|
|
83
|
+
|
|
84
|
+
var options = {
|
|
85
|
+
"theme": "bootstrap4",
|
|
86
|
+
"template": "handlebars",
|
|
87
|
+
"iconlib": "fontawesome5",
|
|
88
|
+
"schema": {
|
|
89
|
+
"title": "starrating editor examples",
|
|
90
|
+
"id": "test",
|
|
91
|
+
"type": "object",
|
|
92
|
+
"format": "grid",
|
|
93
|
+
"properties": {
|
|
94
|
+
starrating: {
|
|
95
|
+
type: "string",
|
|
96
|
+
format: "starrating",
|
|
97
|
+
title: "Starrating",
|
|
98
|
+
description: 'Starrating',
|
|
99
|
+
enum: ["Beginner", "Skilled", "Experienced", "Advanced", "Expert"],
|
|
100
|
+
options: {
|
|
101
|
+
grid_columns: 2
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
starrating2: {
|
|
105
|
+
type: "string",
|
|
106
|
+
format: "starrating",
|
|
107
|
+
title: "Starrating",
|
|
108
|
+
description: 'Starrating with "displayValue=true"',
|
|
109
|
+
enum: ["Beginner", "Skilled", "Experienced", "Advanced", "Expert"],
|
|
110
|
+
options: {
|
|
111
|
+
grid_columns: 2,
|
|
112
|
+
displayValue: true
|
|
113
|
+
}
|
|
114
|
+
},
|
|
115
|
+
starrating3: {
|
|
116
|
+
type: "string",
|
|
117
|
+
format: "starrating",
|
|
118
|
+
title: "Starrating",
|
|
119
|
+
description: 'Starrating with "displayValue=true"',
|
|
120
|
+
default: "5 Stars",
|
|
121
|
+
enum: ["1 Star", "2 Stars", "3 Stars", "4 Stars", "5 Stars", "6 Stars", "7 Stars", "8 Stars", "9 Stars", "10 Stars"],
|
|
122
|
+
options: {
|
|
123
|
+
grid_columns: 4,
|
|
124
|
+
displayValue: true
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
var element = document.getElementById('form');
|
|
132
|
+
var editor = new JSONEditor(element, options);
|
|
133
|
+
|
|
134
|
+
</script>
|
|
135
|
+
</body>
|
|
136
|
+
|
|
137
|
+
</html>
|
package/docs/upload.html
ADDED
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html>
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<title>JSON Editor Upload Example</title>
|
|
6
|
+
<script src="https://cdn.jsdelivr.net/npm/@json-editor/json-editor@latest/dist/jsoneditor.min.js"></script>
|
|
7
|
+
</head>
|
|
8
|
+
<body>
|
|
9
|
+
<h1>JSON Editor Upload Example</h1>
|
|
10
|
+
|
|
11
|
+
<div id='editor_holder'></div>
|
|
12
|
+
<button id='submit'>Submit (console.log)</button>
|
|
13
|
+
|
|
14
|
+
<script>
|
|
15
|
+
// Specify theme
|
|
16
|
+
JSONEditor.defaults.options.theme = 'html';
|
|
17
|
+
|
|
18
|
+
// Specify upload handler
|
|
19
|
+
JSONEditor.defaults.callbacks.upload = {
|
|
20
|
+
"testUploadHandler" : function(jseditor, type, file, cbs) {
|
|
21
|
+
if (type === 'root.upload_fail') cbs.failure('Upload failed');
|
|
22
|
+
else {
|
|
23
|
+
var tick = 0;
|
|
24
|
+
|
|
25
|
+
var tickFunction = function() {
|
|
26
|
+
tick += 1;
|
|
27
|
+
console.log('progress: ' + tick);
|
|
28
|
+
|
|
29
|
+
if (tick < 100) {
|
|
30
|
+
cbs.updateProgress(tick);
|
|
31
|
+
window.setTimeout(tickFunction, 50)
|
|
32
|
+
} else if (tick == 100) {
|
|
33
|
+
cbs.updateProgress();
|
|
34
|
+
window.setTimeout(tickFunction, 500)
|
|
35
|
+
} else {
|
|
36
|
+
cbs.success('http://www.example.com/images/' + file.name);
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
window.setTimeout(tickFunction)
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// Initialize the editor with a JSON schema
|
|
46
|
+
var editor = new JSONEditor(document.getElementById('editor_holder'),{
|
|
47
|
+
schema: {
|
|
48
|
+
type: "object",
|
|
49
|
+
title: "Image",
|
|
50
|
+
properties: {
|
|
51
|
+
upload_default: {
|
|
52
|
+
type: "string",
|
|
53
|
+
format: "url",
|
|
54
|
+
options: {
|
|
55
|
+
upload: {
|
|
56
|
+
upload_handler: "testUploadHandler"
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
"links": [
|
|
60
|
+
{
|
|
61
|
+
"href": "{{self}}"
|
|
62
|
+
}
|
|
63
|
+
]
|
|
64
|
+
},
|
|
65
|
+
upload_custom_link: {
|
|
66
|
+
type: "string",
|
|
67
|
+
format: "url",
|
|
68
|
+
options: {
|
|
69
|
+
upload: {
|
|
70
|
+
upload_handler: "testUploadHandler"
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
"links": [
|
|
74
|
+
{
|
|
75
|
+
"href": "{{self}}",
|
|
76
|
+
"rel": "view"
|
|
77
|
+
}
|
|
78
|
+
]
|
|
79
|
+
},
|
|
80
|
+
upload_readonly: {
|
|
81
|
+
readonly: true,
|
|
82
|
+
type: "string",
|
|
83
|
+
format: "url",
|
|
84
|
+
options: {
|
|
85
|
+
upload: {
|
|
86
|
+
upload_handler: "testUploadHandler"
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
"links": [
|
|
90
|
+
{
|
|
91
|
+
"href": "{{self}}"
|
|
92
|
+
}
|
|
93
|
+
]
|
|
94
|
+
},
|
|
95
|
+
upload_fail: {
|
|
96
|
+
type: "string",
|
|
97
|
+
format: "url",
|
|
98
|
+
options: {
|
|
99
|
+
upload: {
|
|
100
|
+
upload_handler: "testUploadHandler"
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
"links": [
|
|
104
|
+
{
|
|
105
|
+
"href": "{{self}}"
|
|
106
|
+
}
|
|
107
|
+
]
|
|
108
|
+
},
|
|
109
|
+
name: {
|
|
110
|
+
type: "string"
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
editor.setValue({
|
|
117
|
+
upload_default: "",
|
|
118
|
+
upload_custom_link: "",
|
|
119
|
+
upload_readonly: "http://www.example.com/images/image.jpg",
|
|
120
|
+
upload_fail: "",
|
|
121
|
+
name: ""
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
// Hook up the submit button to log to the console
|
|
125
|
+
document.getElementById('submit').addEventListener('click',function() {
|
|
126
|
+
// Get the value from the editor
|
|
127
|
+
console.log(editor.getValue());
|
|
128
|
+
});
|
|
129
|
+
</script>
|
|
130
|
+
</body>
|
|
131
|
+
</html>
|
package/docs/uuid.html
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html>
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<title>Basic JSON Editor Example</title>
|
|
6
|
+
<script src="https://cdn.jsdelivr.net/npm/@json-editor/json-editor@latest/dist/jsoneditor.min.js"></script>
|
|
7
|
+
</head>
|
|
8
|
+
<body>
|
|
9
|
+
<h1>UUID JSON Editor Example</h1>
|
|
10
|
+
|
|
11
|
+
<div id='editor_holder'></div>
|
|
12
|
+
<button id='submit'>Submit (console.log)</button>
|
|
13
|
+
|
|
14
|
+
<script>
|
|
15
|
+
JSONEditor.defaults.options['required_by_default'] = true;
|
|
16
|
+
// Initialize the editor with a JSON schema
|
|
17
|
+
var editor = new JSONEditor(document.getElementById('editor_holder'),{
|
|
18
|
+
schema: {
|
|
19
|
+
"type": "object",
|
|
20
|
+
"title": "UUID format with autogenerated uuid",
|
|
21
|
+
"properties": {
|
|
22
|
+
"_header": {
|
|
23
|
+
"type": "string",
|
|
24
|
+
"format": "hidden",
|
|
25
|
+
"description": "Example of new editor format [uuid] for string type. Value must be a valid RFC 4122 uuid (Universally Unique IDentifier). If field has initial no value (startval) then a random uuid will be autogenerated",
|
|
26
|
+
"options": {
|
|
27
|
+
"compact": true
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"uuid1": {
|
|
31
|
+
"type": "string",
|
|
32
|
+
"format": "uuid",
|
|
33
|
+
"description": "uuid field with value in startval (Value should be: dd4f33f9-46f4-46b0-8143-5d75a7eea115)"
|
|
34
|
+
},
|
|
35
|
+
"uuid1-clone": {
|
|
36
|
+
"type": "string",
|
|
37
|
+
"description": "watching uuid field with value in startval",
|
|
38
|
+
"template": "{{uuid}}",
|
|
39
|
+
"watch": {
|
|
40
|
+
"uuid": "uuid1"
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
"uuid2": {
|
|
44
|
+
"type": "string",
|
|
45
|
+
"format": "uuid",
|
|
46
|
+
"description": "uuid field with no value in startval (autogenerated)"
|
|
47
|
+
},
|
|
48
|
+
"uuid2-clone": {
|
|
49
|
+
"type": "string",
|
|
50
|
+
"description": "watching uuid field with no value in startval",
|
|
51
|
+
"template": "{{uuid}}",
|
|
52
|
+
"watch": {
|
|
53
|
+
"uuid": "uuid2"
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
startval: {
|
|
59
|
+
"uuid1": "dd4f33f9-46f4-46b0-8143-5d75a7eea115"
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
// Hook up the submit button to log to the console
|
|
64
|
+
document.getElementById('submit').addEventListener('click',function() {
|
|
65
|
+
// Get the value from the editor
|
|
66
|
+
console.log(editor.getValue());
|
|
67
|
+
});
|
|
68
|
+
</script>
|
|
69
|
+
</body>
|
|
70
|
+
</html>
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html>
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<title>JSON Editor WYSIWYG Example</title>
|
|
6
|
+
<!-- jQuery -->
|
|
7
|
+
<script src="https://cdn.jsdelivr.net/npm/jquery@3.4.1/dist/jquery.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
|
|
8
|
+
|
|
9
|
+
<script src="https://cdn.jsdelivr.net/npm/@json-editor/json-editor@latest/dist/jsoneditor.min.js"></script>
|
|
10
|
+
|
|
11
|
+
<script src="https://cdn.jsdelivr.net/npm/sceditor@2.1.3/minified/sceditor.min.js" integrity="sha256-7GEpvmt+1qm9enykl3RvZdsKf57OFpg8f90CBZqT+Jc=" crossorigin="anonymous"></script>
|
|
12
|
+
<script src="https://cdn.jsdelivr.net/npm/sceditor@2.1.3/minified/jquery.sceditor.xhtml.min.js" integrity="sha256-nkB+zOz8M6XuTq2h6Bzt+O5cZrXERx+7eQyCMz0tP4E=" crossorigin="anonymous"></script>
|
|
13
|
+
<script src="https://cdn.jsdelivr.net/npm/sceditor@2.1.3/minified/jquery.sceditor.min.js" integrity="sha256-vuUmDhitRMIBuAWNi8rX02E/RWpJViZ5rRVRh/9rmHY=" crossorigin="anonymous"></script>
|
|
14
|
+
<script src="https://cdn.jsdelivr.net/npm/sceditor@2.1.3/minified/jquery.sceditor.bbcode.min.js" integrity="sha256-DPXQJi/qdeX7CqTZv4fEbzRdxvhVQuBwil5sfMb2krw=" crossorigin="anonymous"></script>
|
|
15
|
+
|
|
16
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/sceditor@2.1.3/minified/themes/default.min.css" integrity="sha256-C6XRk2o6eHt2prXw5sIA+jdMuxlKJ8sHsXtbfNsa1jg=" crossorigin="anonymous">
|
|
17
|
+
</head>
|
|
18
|
+
<body>
|
|
19
|
+
<h1>JSON Editor WYSIWYG Example</h1>
|
|
20
|
+
|
|
21
|
+
<p style='margin-bottom:20px;'>This example demonstrates JSONEditor's integration with SCEditor</p>
|
|
22
|
+
|
|
23
|
+
<div id='editor_holder'></div>
|
|
24
|
+
<button id='submit'>Submit (console.log)</button>
|
|
25
|
+
|
|
26
|
+
<script>
|
|
27
|
+
// Initialize the editor with a JSON schema
|
|
28
|
+
var editor = new JSONEditor(document.getElementById('editor_holder'),{
|
|
29
|
+
schema: {
|
|
30
|
+
type: "object",
|
|
31
|
+
title: "Blog Post",
|
|
32
|
+
properties: {
|
|
33
|
+
title: {
|
|
34
|
+
type: "string"
|
|
35
|
+
},
|
|
36
|
+
body: {
|
|
37
|
+
type: "string",
|
|
38
|
+
format: "xhtml",
|
|
39
|
+
options: {
|
|
40
|
+
sceditor: {
|
|
41
|
+
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
// Hook up the submit button to log to the console
|
|
50
|
+
document.getElementById('submit').addEventListener('click',function() {
|
|
51
|
+
// Get the value from the editor
|
|
52
|
+
console.log(editor.getValue());
|
|
53
|
+
});
|
|
54
|
+
</script>
|
|
55
|
+
</body>
|
|
56
|
+
</html>
|
package/jasmine.json
ADDED
|
Binary file
|
package/package.json
ADDED
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@wirenboard/json-editor",
|
|
3
|
+
"title": "JSONEditor",
|
|
4
|
+
"description": "JSON Schema based editor",
|
|
5
|
+
"version": "2.5.3-wb13",
|
|
6
|
+
"main": "dist/jsoneditor.js",
|
|
7
|
+
"author": {
|
|
8
|
+
"name": "Jeremy Dorn",
|
|
9
|
+
"email": "jeremy@jeremydorn.com",
|
|
10
|
+
"url": "http://jeremydorn.com"
|
|
11
|
+
},
|
|
12
|
+
"bugs": {
|
|
13
|
+
"url": "https://github.com/json-editor/json-editor/issues"
|
|
14
|
+
},
|
|
15
|
+
"repository": {
|
|
16
|
+
"type": "git",
|
|
17
|
+
"url": "https://github.com/json-editor/json-editor.git"
|
|
18
|
+
},
|
|
19
|
+
"keywords": [
|
|
20
|
+
"json",
|
|
21
|
+
"schema",
|
|
22
|
+
"jsonschema",
|
|
23
|
+
"editor"
|
|
24
|
+
],
|
|
25
|
+
"scripts": {
|
|
26
|
+
"prepare": "npm run build",
|
|
27
|
+
"clean": "npm run clean.css.js",
|
|
28
|
+
"clean.css.js": "find ./src -name *.css.js -type f -delete",
|
|
29
|
+
"build": "npm run build.prod && npm run build.nonmin",
|
|
30
|
+
"build.prod": "webpack --config config/webpack.prod.js --progress --profile --bail",
|
|
31
|
+
"build.nonmin": "webpack --config config/webpack.nonmin.js --progress --profile --bail",
|
|
32
|
+
"build.nonmin.travis": "webpack --config config/webpack.nonmin.js --env.travis --progress --profile --bail",
|
|
33
|
+
"build.dev": "webpack --config config/webpack.dev.js --progress --profile --bail",
|
|
34
|
+
"watch": "webpack --config config/webpack.nonmin.js --watch",
|
|
35
|
+
"debug": "webpack-dev-server --config config/webpack.dev.js --progress",
|
|
36
|
+
"debug.nonmin": "webpack-dev-server --config config/webpack.nonmin.js --progress",
|
|
37
|
+
"test": "karma start config/karma.conf.js --browsers Chrome --log-level debug",
|
|
38
|
+
"test-headless": "karma start config/karma.conf.js --singleRun true --browsers ChromeHeadless",
|
|
39
|
+
"serve-test": "http-server --p 9001",
|
|
40
|
+
"docker-test": "docker-compose run --rm node npm install && docker-compose run --rm node npm run build && docker-compose up -d && docker-compose ps && docker-compose exec node codeceptjs -c /repo/tests/codeceptjs/codecept.json run-multiple basic:chrome --invert --grep '@optional'",
|
|
41
|
+
"preversion": "npm run test-headless && npm run docker-test",
|
|
42
|
+
"postversion": "git push && git push --tags && npm publish ./ --access public",
|
|
43
|
+
"winserver": "cd tests && start cmd /c npm run serve-test .",
|
|
44
|
+
"cp:test": "codeceptjs run --steps --invert --grep @optional",
|
|
45
|
+
"cp:testmocha": "codeceptjs run --steps --reporter mochawesome --invert --grep @optional",
|
|
46
|
+
"cp:fulltest": "codeceptjs run --steps",
|
|
47
|
+
"cp:fulltestmocha": "codeceptjs run --steps --reporter mochawesome",
|
|
48
|
+
"eslint.fix": "eslint -c ./.eslintrc src/**/*.js --fix",
|
|
49
|
+
"eslint": "eslint -c ./.eslintrc src/**/*.js"
|
|
50
|
+
},
|
|
51
|
+
"license": "MIT",
|
|
52
|
+
"engines": {
|
|
53
|
+
"node": ">= 0.8.0"
|
|
54
|
+
},
|
|
55
|
+
"devDependencies": {
|
|
56
|
+
"@babel/core": "^7.14.0",
|
|
57
|
+
"@babel/plugin-transform-runtime": "^7.13.15",
|
|
58
|
+
"@babel/preset-env": "^7.14.1",
|
|
59
|
+
"@babel/runtime": "^7.14.0",
|
|
60
|
+
"ace-builds": "^1.4.12",
|
|
61
|
+
"babel-loader": "^8.2.2",
|
|
62
|
+
"clean-webpack-plugin": "^3.0.0",
|
|
63
|
+
"cleave.js": "^1.6.0",
|
|
64
|
+
"codeceptjs": "^2.6.11",
|
|
65
|
+
"css-loader": "^3.6.0",
|
|
66
|
+
"css2json": "^1.1.1",
|
|
67
|
+
"cssnano": "^4.1.11",
|
|
68
|
+
"eslint": "^6.8.0",
|
|
69
|
+
"eslint-loader": "^2.2.1",
|
|
70
|
+
"http-server": "^0.12.3",
|
|
71
|
+
"jasmine": "^3.7.0",
|
|
72
|
+
"jasmine-core": "^3.7.1",
|
|
73
|
+
"jodit": "~3.3.24",
|
|
74
|
+
"jquery": "^3.6.0",
|
|
75
|
+
"karma": "^5.2.3",
|
|
76
|
+
"karma-chrome-launcher": "^3.1.0",
|
|
77
|
+
"karma-jasmine": "^2.0.1",
|
|
78
|
+
"karma-jasmine-html-reporter": "^1.6.0",
|
|
79
|
+
"karma-sourcemap-loader": "^0.3.8",
|
|
80
|
+
"karma-webpack": "^4.0.2",
|
|
81
|
+
"mathjs": "^7.5.1",
|
|
82
|
+
"mini-css-extract-plugin": "^0.8.2",
|
|
83
|
+
"mocha": "^6.2.2",
|
|
84
|
+
"mochawesome": "^4.1.0",
|
|
85
|
+
"postcss-loader": "^5.2.0",
|
|
86
|
+
"puppeteer": "^1.20.0",
|
|
87
|
+
"remove-strict-webpack-plugin": "^0.1.2",
|
|
88
|
+
"sceditor": "^2.1.3",
|
|
89
|
+
"sinon": "^8.1.1",
|
|
90
|
+
"standard": "^14.3.4",
|
|
91
|
+
"style-loader": "^1.3.0",
|
|
92
|
+
"webpack": "^4.46.0",
|
|
93
|
+
"webpack-cli": "^3.3.12",
|
|
94
|
+
"webpack-dev-server": "^3.11.2",
|
|
95
|
+
"webpack-merge": "^4.2.2"
|
|
96
|
+
},
|
|
97
|
+
"dependencies": {
|
|
98
|
+
"core-js": "^3.12.1"
|
|
99
|
+
}
|
|
100
|
+
}
|
package/release-notes.md
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# Webpack Notes
|
|
2
|
+
|
|
3
|
+
## Introduction
|
|
4
|
+
|
|
5
|
+
This work package replaces Grunt-based concatenation and minification and testing, with Webpack, providing the following advantages:
|
|
6
|
+
|
|
7
|
+
1. Clearer and more modular dependency management using `import`/`export`
|
|
8
|
+
1. Modular code is easier to unit-test
|
|
9
|
+
1. On-the-fly compilation and serving of files
|
|
10
|
+
1. Facility for splitting distribution into several modules so that less commonly used features can be lazy-loaded (TODO)
|
|
11
|
+
1. Possibility of upgrading javascript ES6 by introducing babel compiler (TODO)
|
|
12
|
+
|
|
13
|
+
The emphasis is this work-package has been to make minimal and localized changes to the core code to factilitate merging back into the main branch. However the interdependencies between the different files were quite complicated and untangling them with minimal impact hasn't been easy.
|
|
14
|
+
|
|
15
|
+
Assuming the PR is accepted and merged into the main branch, there will be potential for a lot more refactoring and simplification of the codebase.
|
|
16
|
+
|
|
17
|
+
## Useful docs
|
|
18
|
+
|
|
19
|
+
https://webpack.js.org/guides/
|
|
20
|
+
|
|
21
|
+
I loosely based the structure of the webpack config files on this article [angular webpack guide](https://v5.angular.io/guide/webpack).
|
|
22
|
+
|
|
23
|
+
## Summary of Changes
|
|
24
|
+
|
|
25
|
+
1. Refactored code to use `import` / `export` to specify dependencies instead of relying on concatenation
|
|
26
|
+
1. Replaced Grunt with Webpack tasks - setting up files in `./config` for production/development/test builds
|
|
27
|
+
1. Replaced jshint with eslint - eslint better supports newer js features and its config files can be picked up automatically by IDEs such as VS Code, providing intellisense linting support
|
|
28
|
+
1. Created some unit test stub implementations
|
|
29
|
+
1. package.json:
|
|
30
|
+
1. Replaced all grunt-based scripts
|
|
31
|
+
1. Removed all grunt dev-dependencies (also package.lock.json)
|
|
32
|
+
|
|
33
|
+
1. updated docs
|
|
34
|
+
1. removed other references to Grunt
|
|
35
|
+
|
|
36
|
+
## TODO
|
|
37
|
+
|
|
38
|
+
1. implement headless unit testing and integrate into Travis
|
|
39
|
+
|
|
40
|
+
## Future Work
|
|
41
|
+
|
|
42
|
+
### Polyfills
|
|
43
|
+
|
|
44
|
+
I have included the old ie9.js file in the build even though it breaks the modularity afforded by webpack. Webpack has its own infrastructure for providing polyfills in an efficient way and we should look into migrating to that.
|
|
45
|
+
|
|
46
|
+
### Other Package Optimisations
|
|
47
|
+
|
|
48
|
+
Currently all code is compiled into a single bundle. We should look at splitting less commonly-used code into lazy-loaded bundles to allow speedier loading of core code
|
|
49
|
+
|
|
50
|
+
### General Refactoring
|
|
51
|
+
|
|
52
|
+
Now that dependencies in the code are clearer, opportunites for improving structure and readability of code should reveal themselves.
|
|
53
|
+
|
|
54
|
+
### Expansion of Unit Test Coverage
|
|
55
|
+
|
|
56
|
+
I have provided some very basic unit-test stubs. It should now be much easier to unit test code so we should:
|
|
57
|
+
|
|
58
|
+
1. Ensure that before editing existing code, we write unit-tests to cover our assumptions about its functions
|
|
59
|
+
1. When writing new code, adopt a TDD approach - IE, write tests *before* writing the implementation
|
|
60
|
+
|
|
61
|
+
### Upgrade to ES6
|
|
62
|
+
|
|
63
|
+
Javascript ES6 provides many useful language features which make for clearer, less error-prone code including:
|
|
64
|
+
1. classes (which would allow us to get rid of homegrown class.js)
|
|
65
|
+
1. template literals
|
|
66
|
+
1. let/const providing better variable scoping
|
|
67
|
+
|
|
68
|
+
It is fairly easy to introduce transpilation from ES6 via Webpack to enable these features - I'd recommend doing so.
|
|
69
|
+
|
|
70
|
+
### Editors
|
|
71
|
+
|
|
72
|
+
#### JSONEditor.defaults
|
|
73
|
+
|
|
74
|
+
The base class editor had a dependency on the `translate` and `callbacks` properties of `JSONEditor.defaults`.
|
|
75
|
+
|
|
76
|
+
Aditionally, all editors had a single dependency on `JSONEditor` via the `.defaults.options` property, accessed in the `build()` or `afterInputReady()` method. In each case, these options are merged with the user options using a virtually identical formula. Would it be worth looking at creating a base class helper method for this merge, to keep things DRY?.
|
|
77
|
+
|
|
78
|
+
For now I have passed in `JSONEditor.defaults` as `defaults`.
|
|
79
|
+
|
|
80
|
+
### NPM Release
|
|
81
|
+
|
|
82
|
+
1. Switch to `release` branch and `merge master into release`
|
|
83
|
+
2. Update `CHANGELOG.md`
|
|
84
|
+
3. NPM login: `npm login`
|
|
85
|
+
4. Build new version: `npm version 2.5.2`
|
|
86
|
+
|
|
87
|
+
The `npm version` command will automatically build the source files & test the new generated script files.
|
|
88
|
+
On success the `postversion` script will push the source to GitHub and publish the version on NPM.
|