@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.
Files changed (283) hide show
  1. package/.env-dist +2 -0
  2. package/.eslintrc +7 -0
  3. package/.gitattributes +1 -0
  4. package/.github/PULL_REQUEST_TEMPLATE.md +9 -0
  5. package/.github/issue_template +25 -0
  6. package/.github/workflows/build.yml +58 -0
  7. package/.travis.yml +70 -0
  8. package/CHANGELOG.md +915 -0
  9. package/CONTRIBUTING.md +92 -0
  10. package/LICENSE +20 -0
  11. package/Makefile +26 -0
  12. package/README.md +1646 -0
  13. package/README_ADDON.md +573 -0
  14. package/UPGRADING.md +46 -0
  15. package/build/CssToJson.js +55 -0
  16. package/codecept.conf.js +35 -0
  17. package/config/.eslintrc +7 -0
  18. package/config/codeceptjs_helpers.js +139 -0
  19. package/config/helpers.js +10 -0
  20. package/config/karma.conf.js +93 -0
  21. package/config/readme.md +31 -0
  22. package/config/webpack.common.js +75 -0
  23. package/config/webpack.dev.js +15 -0
  24. package/config/webpack.nonmin.js +19 -0
  25. package/config/webpack.prod.js +25 -0
  26. package/dist/jsoneditor.js +14 -0
  27. package/dist/nonmin/jsoneditor.js +29097 -0
  28. package/dist/nonmin/jsoneditor.js.map +1 -0
  29. package/docs/ace_editor.html +56 -0
  30. package/docs/advanced.html +136 -0
  31. package/docs/basic.html +63 -0
  32. package/docs/basic_person.json +26 -0
  33. package/docs/choices.html +86 -0
  34. package/docs/cleave.html +132 -0
  35. package/docs/colorpicker.html +194 -0
  36. package/docs/css_integration.html +135 -0
  37. package/docs/datetime.html +305 -0
  38. package/docs/describedby.html +161 -0
  39. package/docs/enumsource.html +67 -0
  40. package/docs/images/categoriesDemo.png +0 -0
  41. package/docs/images/inheritance_tree.png +0 -0
  42. package/docs/images/jsoneditor.png +0 -0
  43. package/docs/imask.html +192 -0
  44. package/docs/index.html +579 -0
  45. package/docs/materialize_css.html +164 -0
  46. package/docs/meta_schema.json +705 -0
  47. package/docs/multiple_upload_base64.html +65 -0
  48. package/docs/person.json +73 -0
  49. package/docs/polyfills/assign.js +29 -0
  50. package/docs/radio.html +156 -0
  51. package/docs/recursive.html +170 -0
  52. package/docs/select2.html +99 -0
  53. package/docs/selectize.html +100 -0
  54. package/docs/signature.html +42 -0
  55. package/docs/starrating.html +137 -0
  56. package/docs/upload.html +131 -0
  57. package/docs/uuid.html +70 -0
  58. package/docs/wysiwyg.html +56 -0
  59. package/jasmine.json +11 -0
  60. package/json-editor-json-editor-2.5.3-wb13.tgz +0 -0
  61. package/package.json +100 -0
  62. package/release-notes.md +88 -0
  63. package/src/core.js +412 -0
  64. package/src/defaults.js +402 -0
  65. package/src/editor.js +707 -0
  66. package/src/editors/ace.js +89 -0
  67. package/src/editors/array/choices.js +103 -0
  68. package/src/editors/array/select2.js +110 -0
  69. package/src/editors/array/selectize.js +103 -0
  70. package/src/editors/array.css +9 -0
  71. package/src/editors/array.css.js +3 -0
  72. package/src/editors/array.js +818 -0
  73. package/src/editors/autocomplete.js +58 -0
  74. package/src/editors/base64.js +157 -0
  75. package/src/editors/button.js +97 -0
  76. package/src/editors/checkbox.js +95 -0
  77. package/src/editors/choices.css +3 -0
  78. package/src/editors/choices.css.js +3 -0
  79. package/src/editors/choices.js +69 -0
  80. package/src/editors/colorpicker.js +103 -0
  81. package/src/editors/datetime.js +141 -0
  82. package/src/editors/describedby.js +188 -0
  83. package/src/editors/enum.js +136 -0
  84. package/src/editors/hidden.js +127 -0
  85. package/src/editors/index.js +81 -0
  86. package/src/editors/info.js +20 -0
  87. package/src/editors/integer.js +19 -0
  88. package/src/editors/ip.js +36 -0
  89. package/src/editors/jodit.js +64 -0
  90. package/src/editors/multiple.js +409 -0
  91. package/src/editors/multiselect.js +218 -0
  92. package/src/editors/null.js +18 -0
  93. package/src/editors/number.js +51 -0
  94. package/src/editors/object.css +41 -0
  95. package/src/editors/object.css.js +3 -0
  96. package/src/editors/object.js +1290 -0
  97. package/src/editors/radio.js +111 -0
  98. package/src/editors/sceditor.js +72 -0
  99. package/src/editors/select.js +370 -0
  100. package/src/editors/select2.js +110 -0
  101. package/src/editors/selectize.js +112 -0
  102. package/src/editors/signature.js +113 -0
  103. package/src/editors/simplemde.js +100 -0
  104. package/src/editors/starrating.css +52 -0
  105. package/src/editors/starrating.css.js +3 -0
  106. package/src/editors/starrating.js +135 -0
  107. package/src/editors/stepper.js +27 -0
  108. package/src/editors/string.js +372 -0
  109. package/src/editors/table.js +516 -0
  110. package/src/editors/upload.js +321 -0
  111. package/src/editors/uuid.js +56 -0
  112. package/src/iconlib.js +24 -0
  113. package/src/iconlibs/bootstrap2.js +28 -0
  114. package/src/iconlibs/bootstrap3.js +28 -0
  115. package/src/iconlibs/fontawesome3.js +28 -0
  116. package/src/iconlibs/fontawesome4.js +28 -0
  117. package/src/iconlibs/fontawesome5.js +28 -0
  118. package/src/iconlibs/foundation2.js +24 -0
  119. package/src/iconlibs/foundation3.js +28 -0
  120. package/src/iconlibs/index.js +25 -0
  121. package/src/iconlibs/jqueryui.js +28 -0
  122. package/src/iconlibs/materialicons.js +49 -0
  123. package/src/iconlibs/openiconic.js +28 -0
  124. package/src/iconlibs/spectre.js +28 -0
  125. package/src/resolvers.js +128 -0
  126. package/src/schemaloader.js +408 -0
  127. package/src/style.css +150 -0
  128. package/src/style.css.js +3 -0
  129. package/src/templates/default.js +52 -0
  130. package/src/templates/ejs.js +13 -0
  131. package/src/templates/handlebars.js +1 -0
  132. package/src/templates/hogan.js +10 -0
  133. package/src/templates/index.js +21 -0
  134. package/src/templates/lodash.js +9 -0
  135. package/src/templates/markup.js +9 -0
  136. package/src/templates/mustache.js +9 -0
  137. package/src/templates/swig.js +1 -0
  138. package/src/templates/underscore.js +9 -0
  139. package/src/theme.js +659 -0
  140. package/src/themes/barebones.css +35 -0
  141. package/src/themes/barebones.css.js +3 -0
  142. package/src/themes/barebones.js +28 -0
  143. package/src/themes/bootstrap2.js +319 -0
  144. package/src/themes/bootstrap3.css +0 -0
  145. package/src/themes/bootstrap3.css.js +3 -0
  146. package/src/themes/bootstrap3.js +315 -0
  147. package/src/themes/bootstrap4.css +89 -0
  148. package/src/themes/bootstrap4.css.js +3 -0
  149. package/src/themes/bootstrap4.js +690 -0
  150. package/src/themes/bootstrap5.css.js +3 -0
  151. package/src/themes/foundation.js +569 -0
  152. package/src/themes/html.css +60 -0
  153. package/src/themes/html.css.js +3 -0
  154. package/src/themes/html.js +71 -0
  155. package/src/themes/index.js +28 -0
  156. package/src/themes/jqueryui.js +198 -0
  157. package/src/themes/materialize.js +426 -0
  158. package/src/themes/spectre.css +208 -0
  159. package/src/themes/spectre.css.js +3 -0
  160. package/src/themes/spectre.js +406 -0
  161. package/src/themes/tailwind.css +249 -0
  162. package/src/themes/tailwind.css.js +3 -0
  163. package/src/themes/tailwind.js +443 -0
  164. package/src/utilities.js +138 -0
  165. package/src/validator.js +877 -0
  166. package/src/validators/ip-validator.js +51 -0
  167. package/tests/Dockerfile +3 -0
  168. package/tests/README.md +48 -0
  169. package/tests/codeceptjs/codecept.json +42 -0
  170. package/tests/codeceptjs/constrains/if-then-else_test.js +143 -0
  171. package/tests/codeceptjs/core_test.js +217 -0
  172. package/tests/codeceptjs/editors/advanced_test.js +13 -0
  173. package/tests/codeceptjs/editors/array_any_of_test.js +50 -0
  174. package/tests/codeceptjs/editors/array_test.js +900 -0
  175. package/tests/codeceptjs/editors/button_test.js +35 -0
  176. package/tests/codeceptjs/editors/checkbox_test.js +21 -0
  177. package/tests/codeceptjs/editors/colorpicker_test.js +27 -0
  178. package/tests/codeceptjs/editors/datetime_test.js +33 -0
  179. package/tests/codeceptjs/editors/inheritance_test.js +11 -0
  180. package/tests/codeceptjs/editors/integer_test.js +84 -0
  181. package/tests/codeceptjs/editors/issues/issue-gh-812_test.js +32 -0
  182. package/tests/codeceptjs/editors/jodit_test.js +24 -0
  183. package/tests/codeceptjs/editors/multiselect_test.js +8 -0
  184. package/tests/codeceptjs/editors/number_test.js +82 -0
  185. package/tests/codeceptjs/editors/object_test.js +204 -0
  186. package/tests/codeceptjs/editors/option-no_default_values_test.js +42 -0
  187. package/tests/codeceptjs/editors/programmatic-changes_test.js +20 -0
  188. package/tests/codeceptjs/editors/radio_test.js +10 -0
  189. package/tests/codeceptjs/editors/rating_test.js +13 -0
  190. package/tests/codeceptjs/editors/select_test.js +22 -0
  191. package/tests/codeceptjs/editors/stepper_test.js +27 -0
  192. package/tests/codeceptjs/editors/string_test.js +118 -0
  193. package/tests/codeceptjs/editors/table-confirm-delete_test.js +67 -0
  194. package/tests/codeceptjs/editors/tabs_test.js +14 -0
  195. package/tests/codeceptjs/editors/uuid_test.js +21 -0
  196. package/tests/codeceptjs/editors/validation_test.js +14 -0
  197. package/tests/codeceptjs/meta-schema_test.js +17 -0
  198. package/tests/codeceptjs/schemaloader_test.js +13 -0
  199. package/tests/codeceptjs/steps.d.ts +13 -0
  200. package/tests/codeceptjs/steps_file.js +12 -0
  201. package/tests/codeceptjs/themes_test.js +519 -0
  202. package/tests/docker-compose.yml +34 -0
  203. package/tests/fixtures/basic_person.json +26 -0
  204. package/tests/fixtures/nested_object.json +26 -0
  205. package/tests/fixtures/person.json +55 -0
  206. package/tests/fixtures/recursive.json +8 -0
  207. package/tests/fixtures/some_types.json +32 -0
  208. package/tests/fixtures/string.json +3 -0
  209. package/tests/fixtures/validation.json +1140 -0
  210. package/tests/pages/_demo.html +475 -0
  211. package/tests/pages/advanced.html +137 -0
  212. package/tests/pages/anyof.html +80 -0
  213. package/tests/pages/array-anyof.html +142 -0
  214. package/tests/pages/array-checkboxes.html +41 -0
  215. package/tests/pages/array-choices.html +45 -0
  216. package/tests/pages/array-integers.html +37 -0
  217. package/tests/pages/array-move-events.html +61 -0
  218. package/tests/pages/array-multiselects.html +42 -0
  219. package/tests/pages/array-nested-arrays.html +40 -0
  220. package/tests/pages/array-numbers.html +37 -0
  221. package/tests/pages/array-objects.html +42 -0
  222. package/tests/pages/array-ratings.html +40 -0
  223. package/tests/pages/array-selectize.html +51 -0
  224. package/tests/pages/array-selects.html +36 -0
  225. package/tests/pages/array-strings.html +36 -0
  226. package/tests/pages/array.html +42 -0
  227. package/tests/pages/assets/pages.css +130 -0
  228. package/tests/pages/button-callbacks.html +77 -0
  229. package/tests/pages/checkbox-labels.html +114 -0
  230. package/tests/pages/colorpicker-no-3rd-party.html +43 -0
  231. package/tests/pages/colorpicker-use-vanilla-picker.html +50 -0
  232. package/tests/pages/core.html +118 -0
  233. package/tests/pages/datetime.html +76 -0
  234. package/tests/pages/form-name.html +108 -0
  235. package/tests/pages/grid-strict.html +311 -0
  236. package/tests/pages/grid.html +284 -0
  237. package/tests/pages/if-then-else-allOf.html +117 -0
  238. package/tests/pages/inheritance.html +76 -0
  239. package/tests/pages/integer.html +68 -0
  240. package/tests/pages/issues/_template.html +50 -0
  241. package/tests/pages/issues/issue-gh-812.html +110 -0
  242. package/tests/pages/issues/issue-gh-823-meta-schema.html +35 -0
  243. package/tests/pages/issues/issue-gh-848.html +81 -0
  244. package/tests/pages/meta_schema.json +705 -0
  245. package/tests/pages/number.html +89 -0
  246. package/tests/pages/object-no-additional-properties.html +65 -0
  247. package/tests/pages/object-no-duplicated-id.html +68 -0
  248. package/tests/pages/object-required-properties.html +236 -0
  249. package/tests/pages/object-with-dependencies-array.html +46 -0
  250. package/tests/pages/object-with-dependencies.html +60 -0
  251. package/tests/pages/object.html +79 -0
  252. package/tests/pages/oneof.html +103 -0
  253. package/tests/pages/option-no_default_values.html +58 -0
  254. package/tests/pages/programmatic-changes.html +120 -0
  255. package/tests/pages/read-only.html +105 -0
  256. package/tests/pages/select.html +41 -0
  257. package/tests/pages/stepper.html +59 -0
  258. package/tests/pages/string-ace-editor.html +52 -0
  259. package/tests/pages/string-cleave.html +46 -0
  260. package/tests/pages/string-custom-attributes.html +62 -0
  261. package/tests/pages/string-formats.html +52 -0
  262. package/tests/pages/string-formats2.html +57 -0
  263. package/tests/pages/string-jodit-editor.html +49 -0
  264. package/tests/pages/string-sceditor.html +62 -0
  265. package/tests/pages/table-move-events.html +56 -0
  266. package/tests/pages/table.html +46 -0
  267. package/tests/pages/tabs.html +131 -0
  268. package/tests/pages/themes.html +527 -0
  269. package/tests/pages/translate-property.html +247 -0
  270. package/tests/pages/urn.html +93 -0
  271. package/tests/pages/uuid.html +72 -0
  272. package/tests/pages/validation.html +99 -0
  273. package/tests/unit/.eslintrc +8 -0
  274. package/tests/unit/core.spec.js +309 -0
  275. package/tests/unit/defaults.spec.js +40 -0
  276. package/tests/unit/editor.spec.js +160 -0
  277. package/tests/unit/editors/array.spec.js +86 -0
  278. package/tests/unit/editors/object.spec.js +79 -0
  279. package/tests/unit/editors/table.spec.js +91 -0
  280. package/tests/unit/readme.md +35 -0
  281. package/tests/unit/schemaloader.spec.js +498 -0
  282. package/tests/unit/validator.spec.js +94 -0
  283. 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>
@@ -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
@@ -0,0 +1,11 @@
1
+ {
2
+ "spec_dir": "./tests/unit",
3
+ "spec_files": [
4
+ "**/*[sS]pec.js"
5
+ ],
6
+ "helpers": [
7
+ "helpers/**/*.js"
8
+ ],
9
+ "stopSpecOnExpectationFailure": false,
10
+ "random": true
11
+ }
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
+ }
@@ -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.