@json-editor/json-editor 1.3.5 → 1.17.0

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 (436) hide show
  1. package/.claude/settings.local.json +8 -0
  2. package/.env +2 -0
  3. package/.env-dist +2 -0
  4. package/.eslintrc +10 -0
  5. package/.github/PULL_REQUEST_TEMPLATE.md +9 -0
  6. package/.github/workflows/build.yml +70 -0
  7. package/.travis.yml +63 -9
  8. package/CHANGELOG.md +1152 -0
  9. package/CONTRIBUTING.md +44 -5
  10. package/Makefile +26 -0
  11. package/README.md +765 -138
  12. package/README_ADDON.md +577 -0
  13. package/UPGRADING.md +46 -0
  14. package/build/CssToJson.js +55 -0
  15. package/codecept.conf.js +35 -0
  16. package/config/.eslintrc +7 -0
  17. package/config/codeceptjs_helpers.js +146 -0
  18. package/config/helpers.js +10 -0
  19. package/config/karma.conf.js +89 -0
  20. package/config/readme.md +31 -0
  21. package/config/webpack.common.js +71 -0
  22. package/config/webpack.dev.js +15 -0
  23. package/config/webpack.nonmin.js +19 -0
  24. package/config/webpack.prod.js +24 -0
  25. package/dist/jsoneditor.js +2 -11013
  26. package/dist/jsoneditor.js.LICENSE.txt +15 -0
  27. package/dist/nonmin/jsoneditor.js +31392 -0
  28. package/dist/nonmin/jsoneditor.js.map +1 -0
  29. package/docs/basic.html +2 -2
  30. package/docs/basic_person.json +2 -1
  31. package/docs/choices.html +86 -0
  32. package/docs/cleave.html +11 -19
  33. package/docs/colorpicker.html +194 -0
  34. package/docs/css_integration.html +56 -54
  35. package/docs/custom-editor.html +92 -0
  36. package/docs/datetime.html +48 -21
  37. package/docs/describedby.html +161 -0
  38. package/docs/enumsource.html +67 -0
  39. package/docs/form-submission.html +162 -0
  40. package/docs/imask.html +192 -0
  41. package/docs/index.html +606 -423
  42. package/docs/materialize_css.html +1 -1
  43. package/docs/meta-schema.html +793 -0
  44. package/docs/meta_schema.json +446 -400
  45. package/docs/polyfills/assign.js +29 -0
  46. package/docs/radio.html +156 -0
  47. package/docs/recursive.html +15 -17
  48. package/docs/scripts/ajv-validator.js +8695 -0
  49. package/docs/select2.html +15 -9
  50. package/docs/selectize.html +11 -9
  51. package/docs/signature.html +12 -11
  52. package/docs/starrating.html +5 -17
  53. package/docs/upload.html +33 -23
  54. package/docs/uuid.html +70 -0
  55. package/docs/wysiwyg.html +14 -7
  56. package/jasmine.json +11 -0
  57. package/package.json +74 -25
  58. package/release-notes.md +90 -0
  59. package/src/core.js +411 -611
  60. package/src/defaults.js +385 -306
  61. package/src/editor.js +761 -520
  62. package/src/editors/ace.js +90 -0
  63. package/src/editors/array/choices.js +104 -0
  64. package/src/editors/array/select2.js +112 -0
  65. package/src/editors/array/selectize.js +108 -86
  66. package/src/editors/array.css +9 -0
  67. package/src/editors/array.css.js +3 -0
  68. package/src/editors/array.js +812 -695
  69. package/src/editors/autocomplete.js +59 -0
  70. package/src/editors/base64.js +148 -129
  71. package/src/editors/button.js +104 -0
  72. package/src/editors/checkbox.js +111 -76
  73. package/src/editors/choices.css +3 -0
  74. package/src/editors/choices.css.js +3 -0
  75. package/src/editors/choices.js +71 -0
  76. package/src/editors/colorpicker.js +105 -0
  77. package/src/editors/datetime.js +93 -79
  78. package/src/editors/describedby.js +190 -0
  79. package/src/editors/enum.js +131 -116
  80. package/src/editors/hidden.js +100 -86
  81. package/src/editors/index.js +81 -0
  82. package/src/editors/info.js +28 -0
  83. package/src/editors/integer.js +21 -8
  84. package/src/editors/ip.js +36 -0
  85. package/src/editors/jodit.js +66 -0
  86. package/src/editors/multiple.js +380 -241
  87. package/src/editors/multiselect.js +207 -207
  88. package/src/editors/null.js +15 -11
  89. package/src/editors/number.js +39 -30
  90. package/src/editors/object.css +41 -0
  91. package/src/editors/object.css.js +3 -0
  92. package/src/editors/object.js +1209 -1007
  93. package/src/editors/radio.js +128 -0
  94. package/src/editors/sceditor.js +74 -0
  95. package/src/editors/select.js +318 -342
  96. package/src/editors/select2.js +112 -0
  97. package/src/editors/selectize.js +89 -338
  98. package/src/editors/signature.js +100 -104
  99. package/src/editors/simplemde.js +103 -0
  100. package/src/{styles → editors}/starrating.css +11 -2
  101. package/src/editors/starrating.css.js +3 -0
  102. package/src/editors/starrating.js +126 -95
  103. package/src/editors/stepper.js +27 -0
  104. package/src/editors/string.js +352 -426
  105. package/src/editors/table.js +486 -410
  106. package/src/editors/upload.js +297 -131
  107. package/src/editors/uuid.js +49 -0
  108. package/src/iconlib.js +22 -27
  109. package/src/iconlibs/bootstrap.js +28 -0
  110. package/src/iconlibs/bootstrap2.js +28 -17
  111. package/src/iconlibs/bootstrap3.js +28 -17
  112. package/src/iconlibs/fontawesome3.js +28 -17
  113. package/src/iconlibs/fontawesome4.js +28 -18
  114. package/src/iconlibs/fontawesome5.js +28 -18
  115. package/src/iconlibs/foundation2.js +24 -17
  116. package/src/iconlibs/foundation3.js +28 -17
  117. package/src/iconlibs/index.js +27 -0
  118. package/src/iconlibs/jqueryui.js +28 -17
  119. package/src/iconlibs/materialicons.js +49 -44
  120. package/src/iconlibs/openiconic.js +28 -0
  121. package/src/iconlibs/spectre.js +28 -0
  122. package/src/resolvers.js +135 -0
  123. package/src/schemaloader.js +639 -0
  124. package/src/style.css +157 -0
  125. package/src/style.css.js +3 -0
  126. package/src/templates/default.js +46 -51
  127. package/src/templates/ejs.js +8 -10
  128. package/src/templates/handlebars.js +1 -3
  129. package/src/templates/hogan.js +7 -9
  130. package/src/templates/index.js +21 -0
  131. package/src/templates/lodash.js +6 -8
  132. package/src/templates/markup.js +6 -8
  133. package/src/templates/mustache.js +6 -8
  134. package/src/templates/swig.js +1 -3
  135. package/src/templates/underscore.js +6 -8
  136. package/src/theme.js +717 -426
  137. package/src/themes/barebones.css +35 -0
  138. package/src/themes/barebones.css.js +3 -0
  139. package/src/themes/barebones.js +31 -0
  140. package/src/themes/bootstrap2.js +302 -264
  141. package/src/themes/bootstrap3.css +53 -0
  142. package/src/themes/bootstrap3.css.js +3 -0
  143. package/src/themes/bootstrap3.js +356 -259
  144. package/src/themes/bootstrap4.css +89 -0
  145. package/src/themes/bootstrap4.css.js +3 -0
  146. package/src/themes/bootstrap4.js +744 -234
  147. package/src/themes/bootstrap5.css +97 -0
  148. package/src/themes/bootstrap5.css.js +3 -0
  149. package/src/themes/bootstrap5.js +687 -0
  150. package/src/themes/foundation.js +539 -465
  151. package/src/themes/html.css +60 -0
  152. package/src/themes/html.css.js +3 -0
  153. package/src/themes/html.js +69 -82
  154. package/src/themes/index.js +29 -0
  155. package/src/themes/jqueryui.js +181 -166
  156. package/src/themes/materialize.js +263 -291
  157. package/src/themes/spectre.css +208 -0
  158. package/src/themes/spectre.css.js +3 -0
  159. package/src/themes/spectre.js +443 -0
  160. package/src/themes/tailwind.css +303 -0
  161. package/src/themes/tailwind.css.js +3 -0
  162. package/src/themes/tailwind.js +469 -0
  163. package/src/utilities.js +127 -68
  164. package/src/validator.js +914 -551
  165. package/src/validators/ip-validator.js +51 -0
  166. package/tests/Dockerfile +3 -0
  167. package/tests/README.md +27 -6
  168. package/tests/codeceptjs/codecept.json +29 -5
  169. package/tests/codeceptjs/constrains/contains_test.js +37 -0
  170. package/tests/codeceptjs/constrains/dependentRequired_test.js +33 -0
  171. package/tests/codeceptjs/constrains/dependentSchemas_test.js +16 -0
  172. package/tests/codeceptjs/constrains/if-then-else_test.js +186 -0
  173. package/tests/codeceptjs/core_test.js +534 -68
  174. package/tests/codeceptjs/editors/advanced_test.js +12 -10
  175. package/tests/codeceptjs/editors/array_any_of_test.js +50 -0
  176. package/tests/codeceptjs/editors/array_test.js +935 -677
  177. package/tests/codeceptjs/editors/autocomplete_test.js +15 -0
  178. package/tests/codeceptjs/editors/button_test.js +50 -0
  179. package/tests/codeceptjs/editors/checkbox_test.js +21 -8
  180. package/tests/codeceptjs/editors/colorpicker_test.js +29 -0
  181. package/tests/codeceptjs/editors/datetime_test.js +33 -0
  182. package/tests/codeceptjs/editors/inheritance_test.js +10 -0
  183. package/tests/codeceptjs/editors/integer_test.js +82 -71
  184. package/tests/codeceptjs/editors/jodit_test.js +23 -0
  185. package/tests/codeceptjs/editors/multiple_test.js +27 -0
  186. package/tests/codeceptjs/editors/multiselect_test.js +6 -9
  187. package/tests/codeceptjs/editors/number_test.js +75 -67
  188. package/tests/codeceptjs/editors/object_test.js +337 -28
  189. package/tests/codeceptjs/editors/option-no_default_values_test.js +42 -0
  190. package/tests/codeceptjs/editors/programmatic-changes_test.js +20 -0
  191. package/tests/codeceptjs/editors/purify_test.js +26 -0
  192. package/tests/codeceptjs/editors/radio_test.js +9 -0
  193. package/tests/codeceptjs/editors/range_test.js +10 -0
  194. package/tests/codeceptjs/editors/rating_test.js +10 -16
  195. package/tests/codeceptjs/editors/select_test.js +46 -23
  196. package/tests/codeceptjs/editors/starrating_test.js +15 -0
  197. package/tests/codeceptjs/editors/stepper_test.js +37 -0
  198. package/tests/codeceptjs/editors/string_test.js +108 -101
  199. package/tests/codeceptjs/editors/table-confirm-delete_test.js +60 -55
  200. package/tests/codeceptjs/editors/tabs_test.js +14 -11
  201. package/tests/codeceptjs/editors/uuid_test.js +48 -0
  202. package/tests/codeceptjs/editors/validation_test.js +13 -9
  203. package/tests/codeceptjs/issues/issue-gh-1133_test.js +9 -0
  204. package/tests/codeceptjs/issues/issue-gh-1158-2_test.js +10 -0
  205. package/tests/codeceptjs/issues/issue-gh-1158_test.js +8 -0
  206. package/tests/codeceptjs/issues/issue-gh-1164_test.js +9 -0
  207. package/tests/codeceptjs/issues/issue-gh-1171_test.js +11 -0
  208. package/tests/codeceptjs/issues/issue-gh-1211_test.js +17 -0
  209. package/tests/codeceptjs/issues/issue-gh-1257_test.js +11 -0
  210. package/tests/codeceptjs/issues/issue-gh-1272_test.js +21 -0
  211. package/tests/codeceptjs/issues/issue-gh-1330_test.js +8 -0
  212. package/tests/codeceptjs/issues/issue-gh-1338_test.js +18 -0
  213. package/tests/codeceptjs/issues/issue-gh-1347_test.js +8 -0
  214. package/tests/codeceptjs/issues/issue-gh-1364_test.js +13 -0
  215. package/tests/codeceptjs/issues/issue-gh-1367_test.js +11 -0
  216. package/tests/codeceptjs/issues/issue-gh-1383_test.js +9 -0
  217. package/tests/codeceptjs/issues/issue-gh-1384_test.js +9 -0
  218. package/tests/codeceptjs/issues/issue-gh-1410_test.js +13 -0
  219. package/tests/codeceptjs/issues/issue-gh-1422_test.js +9 -0
  220. package/tests/codeceptjs/issues/issue-gh-1431_test.js +12 -0
  221. package/tests/codeceptjs/issues/issue-gh-1439_test.js +12 -0
  222. package/tests/codeceptjs/issues/issue-gh-1452_test.js +10 -0
  223. package/tests/codeceptjs/issues/issue-gh-1453_test.js +18 -0
  224. package/tests/codeceptjs/issues/issue-gh-1461_test.js +14 -0
  225. package/tests/codeceptjs/issues/issue-gh-1463_test.js +9 -0
  226. package/tests/codeceptjs/issues/issue-gh-1471_test.js +17 -0
  227. package/tests/codeceptjs/issues/issue-gh-1485_test.js +13 -0
  228. package/tests/codeceptjs/issues/issue-gh-1491_test.js +9 -0
  229. package/tests/codeceptjs/issues/issue-gh-1525_test.js +9 -0
  230. package/tests/codeceptjs/issues/issue-gh-1536_test.js +12 -0
  231. package/tests/codeceptjs/issues/issue-gh-1538_test.js +10 -0
  232. package/tests/codeceptjs/issues/issue-gh-1541_test.js +8 -0
  233. package/tests/codeceptjs/issues/issue-gh-1559_test.js +15 -0
  234. package/tests/codeceptjs/issues/issue-gh-1562_test.js +12 -0
  235. package/tests/codeceptjs/issues/issue-gh-1586_test.js +15 -0
  236. package/tests/codeceptjs/issues/issue-gh-1636_test.js +9 -0
  237. package/tests/codeceptjs/issues/issue-gh-795_test.js +13 -0
  238. package/tests/codeceptjs/issues/issue-gh-810_test.js +52 -0
  239. package/tests/codeceptjs/issues/issue-gh-812_test.js +25 -0
  240. package/tests/codeceptjs/meta-schema_test.js +85 -0
  241. package/tests/codeceptjs/schemaloader_test.js +14 -0
  242. package/tests/codeceptjs/steps.d.ts +13 -0
  243. package/tests/codeceptjs/steps_file.js +4 -4
  244. package/tests/codeceptjs/test-config.js +3 -0
  245. package/tests/codeceptjs/themes_test.js +564 -0
  246. package/tests/docker-compose-local.yml +5 -0
  247. package/tests/docker-compose.yml +23 -17
  248. package/tests/fixtures/basic_person.json +2 -1
  249. package/tests/fixtures/definitions.json +22 -0
  250. package/tests/fixtures/nested_object.json +26 -0
  251. package/tests/fixtures/properties.json +20 -0
  252. package/tests/fixtures/some_types.json +32 -0
  253. package/tests/fixtures/validation.json +1347 -0
  254. package/tests/pages/_demo.html +475 -0
  255. package/tests/pages/advanced.html +1 -1
  256. package/tests/pages/anyof-2.html +91 -0
  257. package/tests/pages/anyof.html +82 -0
  258. package/tests/pages/array-anyof.html +145 -0
  259. package/tests/pages/array-checkboxes-infotext.html +55 -0
  260. package/tests/pages/array-checkboxes.html +5 -2
  261. package/tests/pages/array-choices.html +48 -0
  262. package/tests/pages/array-events-table.html +70 -0
  263. package/tests/pages/array-events.html +75 -0
  264. package/tests/pages/array-header-template.html +60 -0
  265. package/tests/pages/array-integers.html +5 -2
  266. package/tests/pages/array-multiselects.html +5 -2
  267. package/tests/pages/array-nested-arrays.html +5 -2
  268. package/tests/pages/array-numbers.html +5 -2
  269. package/tests/pages/array-objects.html +5 -2
  270. package/tests/pages/array-ratings.html +5 -2
  271. package/tests/pages/array-selectize-create.html +63 -0
  272. package/tests/pages/array-selectize.html +54 -0
  273. package/tests/pages/array-selects.html +5 -2
  274. package/tests/pages/array-strings.html +5 -2
  275. package/tests/pages/array-table-responsive.html +66 -0
  276. package/tests/pages/array-unique-items-sort.html +81 -0
  277. package/tests/pages/array.html +5 -2
  278. package/tests/pages/assets/autocomplete.css +1 -0
  279. package/tests/pages/assets/autocomplete.min.js +1 -0
  280. package/tests/pages/assets/pages.css +130 -0
  281. package/tests/pages/autocomplete.html +72 -0
  282. package/tests/pages/button-callbacks.html +79 -0
  283. package/tests/pages/button-icons.html +39 -0
  284. package/tests/pages/button_state_mode_1.html +35 -0
  285. package/tests/pages/button_state_mode_2.html +36 -0
  286. package/tests/pages/checkbox-labels.html +116 -0
  287. package/tests/pages/colorpicker-no-3rd-party.html +45 -0
  288. package/tests/pages/colorpicker-use-vanilla-picker.html +52 -0
  289. package/tests/pages/container-attributes.html +51 -0
  290. package/tests/pages/contains.html +39 -0
  291. package/tests/pages/core.html +14 -7
  292. package/tests/pages/datetime.html +78 -0
  293. package/tests/pages/dependentRequired.html +72 -0
  294. package/tests/pages/dependentSchemas.html +53 -0
  295. package/tests/pages/disable-button-in-object-editors.html +57 -0
  296. package/tests/pages/editor-show-validation-errors.html +54 -0
  297. package/tests/pages/enforce-const.html +168 -0
  298. package/tests/pages/error-messages.html +48 -0
  299. package/tests/pages/form-name.html +111 -0
  300. package/tests/pages/grid-strict.html +308 -0
  301. package/tests/pages/grid.html +281 -0
  302. package/tests/pages/if-else.html +58 -0
  303. package/tests/pages/if-then-else-allOf.html +118 -0
  304. package/tests/pages/if-then-else-disable-fields.html +70 -0
  305. package/tests/pages/if-then-else.html +65 -0
  306. package/tests/pages/if-then.html +58 -0
  307. package/tests/pages/inheritance.html +80 -0
  308. package/tests/pages/integer.html +17 -10
  309. package/tests/pages/issues/_template.html +50 -0
  310. package/tests/pages/issues/issue-gh-1133.html +64 -0
  311. package/tests/pages/issues/issue-gh-1158-2.html +189 -0
  312. package/tests/pages/issues/issue-gh-1158.html +50 -0
  313. package/tests/pages/issues/issue-gh-1164.html +71 -0
  314. package/tests/pages/issues/issue-gh-1165.html +63 -0
  315. package/tests/pages/issues/issue-gh-1165.json +8 -0
  316. package/tests/pages/issues/issue-gh-1171.html +39 -0
  317. package/tests/pages/issues/issue-gh-1211.html +1022 -0
  318. package/tests/pages/issues/issue-gh-1233-failing.html +46 -0
  319. package/tests/pages/issues/issue-gh-1233-passing.html +49 -0
  320. package/tests/pages/issues/issue-gh-1257.html +77 -0
  321. package/tests/pages/issues/issue-gh-1272.html +167 -0
  322. package/tests/pages/issues/issue-gh-1330.html +52 -0
  323. package/tests/pages/issues/issue-gh-1338.html +74 -0
  324. package/tests/pages/issues/issue-gh-1347.html +142 -0
  325. package/tests/pages/issues/issue-gh-1364.html +64 -0
  326. package/tests/pages/issues/issue-gh-1367.html +49 -0
  327. package/tests/pages/issues/issue-gh-1383.html +31 -0
  328. package/tests/pages/issues/issue-gh-1383.json +14 -0
  329. package/tests/pages/issues/issue-gh-1384.html +31 -0
  330. package/tests/pages/issues/issue-gh-1384.json +36 -0
  331. package/tests/pages/issues/issue-gh-1410.html +57 -0
  332. package/tests/pages/issues/issue-gh-1422.html +68 -0
  333. package/tests/pages/issues/issue-gh-1431.html +49 -0
  334. package/tests/pages/issues/issue-gh-1439.html +69 -0
  335. package/tests/pages/issues/issue-gh-1452.html +98 -0
  336. package/tests/pages/issues/issue-gh-1453.html +45 -0
  337. package/tests/pages/issues/issue-gh-1461.html +55 -0
  338. package/tests/pages/issues/issue-gh-1463.html +41 -0
  339. package/tests/pages/issues/issue-gh-1466.html +63 -0
  340. package/tests/pages/issues/issue-gh-1471.html +49 -0
  341. package/tests/pages/issues/issue-gh-1485.html +59 -0
  342. package/tests/pages/issues/issue-gh-1491.html +59 -0
  343. package/tests/pages/issues/issue-gh-1525.html +62 -0
  344. package/tests/pages/issues/issue-gh-1536.html +55 -0
  345. package/tests/pages/issues/issue-gh-1538.html +56 -0
  346. package/tests/pages/issues/issue-gh-1541.html +51 -0
  347. package/tests/pages/issues/issue-gh-1541.json +9 -0
  348. package/tests/pages/issues/issue-gh-1559.html +68 -0
  349. package/tests/pages/issues/issue-gh-1562.html +170 -0
  350. package/tests/pages/issues/issue-gh-1586.html +48 -0
  351. package/tests/pages/issues/issue-gh-1636.html +52 -0
  352. package/tests/pages/issues/issue-gh-795.html +58 -0
  353. package/tests/pages/issues/issue-gh-810.html +149 -0
  354. package/tests/pages/issues/issue-gh-812.html +113 -0
  355. package/tests/pages/issues/issue-gh-823-meta-schema.html +35 -0
  356. package/tests/pages/issues/issue-gh-848.html +81 -0
  357. package/tests/pages/keep_only_existing_values.html +81 -0
  358. package/tests/pages/load-events.html +61 -0
  359. package/tests/pages/maxContains.html +40 -0
  360. package/tests/pages/meta-schema.html +793 -0
  361. package/tests/pages/meta_schema.json +740 -0
  362. package/tests/pages/minContains.html +40 -0
  363. package/tests/pages/number.html +53 -6
  364. package/tests/pages/object-case-sensitive-property-search-false.html +42 -0
  365. package/tests/pages/object-case-sensitive-property-search-true.html +42 -0
  366. package/tests/pages/object-no-additional-properties.html +68 -0
  367. package/tests/pages/object-no-duplicated-id.html +70 -0
  368. package/tests/pages/object-required-properties.html +261 -0
  369. package/tests/pages/object-show-opt-in.html +111 -0
  370. package/tests/pages/object-with-dependencies-array.html +58 -0
  371. package/tests/pages/object-with-dependencies.html +62 -0
  372. package/tests/pages/object.html +5 -3
  373. package/tests/pages/oneof-2.html +91 -0
  374. package/tests/pages/oneof.html +105 -0
  375. package/tests/pages/opt-in-widget.html +134 -0
  376. package/tests/pages/option-dependencies.html +107 -0
  377. package/tests/pages/option-no_default_values.html +60 -0
  378. package/tests/pages/per-editor-options.html +44 -0
  379. package/tests/pages/placeholder-options.html +57 -0
  380. package/tests/pages/programmatic-changes.html +121 -0
  381. package/tests/pages/prompt-paste-max-length-reached.html +51 -0
  382. package/tests/pages/purify.html +66 -0
  383. package/tests/pages/range.html +62 -0
  384. package/tests/pages/read-only.html +60 -8
  385. package/tests/pages/ready.html +44 -0
  386. package/tests/pages/references.html +168 -0
  387. package/tests/pages/remove-false-properties.html +85 -0
  388. package/tests/pages/select-values.html +91 -0
  389. package/tests/pages/select.html +4 -3
  390. package/tests/pages/show-validation-errors.html +73 -0
  391. package/tests/pages/starrating.html +86 -0
  392. package/tests/pages/stepper-manual.html +59 -0
  393. package/tests/pages/stepper.html +61 -0
  394. package/tests/pages/string-ace-editor.html +7 -3
  395. package/tests/pages/string-cleave.html +48 -0
  396. package/tests/pages/string-custom-attributes.html +9 -6
  397. package/tests/pages/string-formats.html +54 -0
  398. package/tests/pages/string-formats2.html +59 -0
  399. package/tests/pages/{array-move-events.html → string-jodit-editor.html} +21 -29
  400. package/tests/pages/string-sceditor.html +9 -7
  401. package/tests/pages/string-simplemde-editor.html +83 -0
  402. package/tests/pages/switcher-option.html +69 -0
  403. package/tests/pages/table.html +4 -2
  404. package/tests/pages/tabs.html +1 -1
  405. package/tests/pages/themes.html +517 -0
  406. package/tests/pages/title-hidden.html +75 -0
  407. package/tests/pages/translate-property.html +248 -0
  408. package/tests/pages/urn.html +98 -0
  409. package/tests/pages/use-name-attributes.html +207 -0
  410. package/tests/pages/uuid.html +113 -0
  411. package/tests/pages/validation-messages.json +705 -0
  412. package/tests/pages/validation.html +20 -730
  413. package/tests/unit/.eslintrc +8 -0
  414. package/tests/unit/core.spec.js +320 -0
  415. package/tests/unit/defaults.spec.js +40 -0
  416. package/tests/unit/editor.spec.js +172 -0
  417. package/tests/unit/editors/array.spec.js +87 -0
  418. package/tests/unit/editors/object.spec.js +81 -0
  419. package/tests/unit/editors/table.spec.js +93 -0
  420. package/tests/unit/readme.md +35 -0
  421. package/tests/unit/schemaloader.spec.js +576 -0
  422. package/tests/unit/validator.spec.js +104 -0
  423. package/tests/unit/validators/ip-validator.spec.js +62 -0
  424. package/Gruntfile.js +0 -226
  425. package/dist/css/jsoneditor.min.css +0 -1
  426. package/dist/jsoneditor.js.map +0 -1
  427. package/dist/jsoneditor.min.js +0 -19
  428. package/dist/jsoneditor.min.js.map +0 -1
  429. package/docs/demo.html +0 -646
  430. package/src/class.js +0 -68
  431. package/src/editors/rating.js +0 -152
  432. package/src/ie9.js +0 -51
  433. package/src/intro.js +0 -23
  434. package/src/jquery.js +0 -64
  435. package/src/outro.js +0 -2
  436. package/src/themes/jsoneditor.barebones-theme.js +0 -60
@@ -0,0 +1,35 @@
1
+ exports.config = {
2
+ tests: './tests/codeceptjs/**/*_test.js',
3
+ timeout: 10000,
4
+ output: './e2e/output',
5
+ helpers: {
6
+ Puppeteer: {
7
+ browser: 'chrome',
8
+ url: 'localhost:9001/tests/pages/',
9
+ show: true,
10
+ disableScreenshots: false,
11
+ waitForNavigation: 'networkidle0',
12
+ waitForAction: 200,
13
+ restart: false,
14
+ chrome: {
15
+ args: ['--ignore-certificate-errors', '--no-sandbox']
16
+ }
17
+ },
18
+ customHelpers: {
19
+ require: './config/codeceptjs_helpers.js'
20
+ }
21
+ },
22
+ include: {
23
+ I: './tests/codeceptjs/steps_file.js'
24
+ },
25
+ bootstrap: null,
26
+ mocha: {
27
+ reporterOptions: {
28
+ reportDir: './e2e/reports',
29
+ inlineAssets: true,
30
+ reportPageTitle: 'E2E Test Reports',
31
+ reportTitle: 'E2E Test Reports'
32
+ }
33
+ },
34
+ name: 'codeceptjs-json-editor'
35
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "extends":"../.eslintrc",
3
+ "rules":
4
+ {
5
+ "no-undef":"off"
6
+ }
7
+ }
@@ -0,0 +1,146 @@
1
+ const assert = require('assert')
2
+ // eslint-disable-next-line camelcase
3
+ let Helper = codecept_helper
4
+
5
+ const sleep = async (msec) => {
6
+ return new Promise(resolve => setTimeout(resolve, msec))
7
+ }
8
+
9
+ class customHelpers extends Helper {
10
+ async donSeeDuplicatedIds () {
11
+ const helper = this.helpers['Puppeteer'] || this.helpers['WebDriver']
12
+ await helper.wait(1)
13
+ let donSeeDuplicatedIds = await helper.executeScript(() => {
14
+ let dontSeeDuplicated = true
15
+ let ids = []
16
+ const all = [].slice.call(document.querySelectorAll('*'))
17
+ all.forEach((el) => {
18
+ const id = el.getAttribute('id')
19
+ if (ids.includes(id)) {
20
+ dontSeeDuplicated = false
21
+ }
22
+ if (id) {
23
+ ids.push(id)
24
+ }
25
+ })
26
+ return dontSeeDuplicated
27
+ })
28
+ return assert.strictEqual(donSeeDuplicatedIds, true)
29
+ }
30
+
31
+ async pressKeys (string) {
32
+ const helper = this.helpers['Puppeteer'] || this.helpers['WebDriver']
33
+ try {
34
+ await helper.wait(1)
35
+ let digits = string.split('')
36
+ for (let i = 0; i < digits.length; i++) {
37
+ await helper.pressKey(digits[i])
38
+ }
39
+ } catch (err) {
40
+ console.log('CodeceptJs Custom Helper "pressKeys" Error:', err)
41
+ }
42
+ }
43
+
44
+ // Custom amCancellingPopups function, overriding original function.
45
+ // Required for tests to work with WebDriver, since "amCancellingPopups" is a Puppeteer command.
46
+ // returns existing amCancellingPopups function if exists
47
+ async amCancellingPopups () {
48
+ const helper = this.helpers['Puppeteer'] || this.helpers['WebDriver']
49
+ try {
50
+ if (typeof helper.amCancellingPopups === 'function') return helper.amCancellingPopups.call(arguments)
51
+ } catch (err) {
52
+ console.log('CodeceptJs Custom Helper "amCancellingPopups" Error:', err)
53
+ }
54
+ }
55
+
56
+ // Custom amAcceptingPopups function, overriding original function.
57
+ // Required for tests to work with WebDriver, since "amAcceptingPopups" is a Puppeteer command.
58
+ // returns existing amAcceptingPopups function if exists
59
+ async amAcceptingPopups () {
60
+ const helper = this.helpers['Puppeteer'] || this.helpers['WebDriver']
61
+ try {
62
+ if (typeof helper.amAcceptingPopups === 'function') return helper.amAcceptingPopups.call(arguments)
63
+ } catch (err) {
64
+ console.log('CodeceptJs Custom Helper "amAcceptingPopups" Error:', err)
65
+ }
66
+ }
67
+
68
+ // Custom seeCheckedAttribute function.
69
+ // Evaluates true if xpath is checked
70
+ async seeCheckedAttribute (xpath) {
71
+ const helper = this.helpers['Puppeteer'] || this.helpers['WebDriver']
72
+ return await helper.waitForElement(xpath + ':checked')
73
+ }
74
+
75
+ // Custom dontSeeCheckedAttribute function.
76
+ // Evaluates true if xpath is not checked
77
+ async dontSeeCheckedAttribute (xpath) {
78
+ const helper = this.helpers['Puppeteer'] || this.helpers['WebDriver']
79
+ return await helper.waitForInvisible(xpath + ':checked')
80
+ }
81
+
82
+ // Custom seeDisabledAttribute function.
83
+ // Evaluates true if xpath is disabled
84
+ async seeDisabledAttribute (xpath) {
85
+ const helper = this.helpers['Puppeteer'] || this.helpers['WebDriver']
86
+ return await helper.waitForElement(xpath + ':disabled')
87
+ }
88
+
89
+ // Custom dontSeeDisabledAttributet function.
90
+ // Evaluates true if xpath is not disabled
91
+ async dontSeeDisabledAttribute (xpath) {
92
+ const helper = this.helpers['Puppeteer'] || this.helpers['WebDriver']
93
+ return await helper.waitForInvisible(xpath + ':disabled')
94
+ }
95
+
96
+ // Custom seeReadOnlyAttribute function.
97
+ // Evaluates true if xpath is disabled
98
+ async seeReadOnlyAttribute (xpath) {
99
+ const helper = this.helpers['Puppeteer'] || this.helpers['WebDriver']
100
+ let res = await helper.grabAttributeFrom(xpath, 'readonly')
101
+ return assert.ok(res !== null && typeof res !== 'undefined' && res.toString().toLowerCase() === 'true', "\x1b[31mexpected element '\x1b[91m" + xpath + "\x1b[31m' to be readonly")
102
+ }
103
+
104
+ // Custom dontSeeReadOnlyAttributet function.
105
+ // Evaluates true if xpath is not disabled
106
+ async dontSeeReadOnlyAttribute (xpath) {
107
+ const helper = this.helpers['Puppeteer'] || this.helpers['WebDriver']
108
+ let res = await helper.grabAttributeFrom(xpath, 'readonly')
109
+ return assert.ok(!(res !== null && typeof res !== 'undefined' && res.toString().toLowerCase() === 'true'), "\x1b[31mexpected element '\x1b[91m" + xpath + "\x1b[31m' NOT to be readonly")
110
+ }
111
+
112
+ // Custom grabBooleanAttributeFrom function.
113
+ // returns boolean value
114
+ async grabBooleanAttributeFrom (xpath, attrib) {
115
+ const helper = this.helpers['Puppeteer'] || this.helpers['WebDriver']
116
+ try {
117
+ let res = await helper.grabAttributeFrom(xpath, attrib)
118
+ return res !== null && typeof res !== 'undefined' && res.toString().toLowerCase() === 'true'
119
+ } catch (err) {
120
+ console.log('CodeceptJs Custom Helper "grabBooleanAttributeFrom" Error:', err)
121
+ }
122
+ }
123
+
124
+ async getSelectedValueAndAssert(selector, expectedValue) {
125
+ const helper = this.helpers['Puppeteer'] || this.helpers['WebDriver']
126
+
127
+ const selectValue = await helper.executeScript((sel) => {
128
+ const selectElement = document.querySelector(sel);
129
+ return selectElement.value;
130
+ }, selector);
131
+
132
+ return assert.strictEqual(selectValue, expectedValue);
133
+ }
134
+
135
+ // Custom isTrue function.
136
+ // returns boolean value
137
+ async isTrue (val) {
138
+ try {
139
+ return val !== null && typeof val !== 'undefined' && val.toString().toLowerCase() === 'true'
140
+ } catch (err) {
141
+ console.log('CodeceptJs Custom Helper "isTrue" Error:', err)
142
+ }
143
+ }
144
+ }
145
+
146
+ module.exports = customHelpers
@@ -0,0 +1,10 @@
1
+ var path = require('path')
2
+
3
+ var _root = path.resolve(__dirname, '..')
4
+
5
+ function root (args) {
6
+ args = Array.prototype.slice.call(arguments, 0)
7
+ return path.join.apply(path, [_root].concat(args))
8
+ }
9
+
10
+ exports.root = root
@@ -0,0 +1,89 @@
1
+ const CssToJSON = require('../build/CssToJson')
2
+
3
+ /* eslint-disable no-undef */
4
+ // Karma configuration
5
+ const webpackConfig = {
6
+ devtool: 'inline-source-map',
7
+ plugins: [
8
+ new CssToJSON({
9
+ pattern: './src/**/*.css'
10
+ })
11
+ ]
12
+ }
13
+
14
+ module.exports = function (config) {
15
+ config.set({
16
+
17
+ // base path that will be used to resolve all patterns (eg. files, exclude)
18
+ basePath: '../',
19
+
20
+ // frameworks to use
21
+ frameworks: ['jasmine'],
22
+
23
+ // list of files / patterns to load in the browser
24
+ files: [
25
+ { pattern: './tests/unit/**/*.spec.js', watched: false }
26
+ ],
27
+
28
+ // preprocess matching files before serving them to the browser
29
+ // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
30
+ preprocessors: {
31
+ './src/core.js': ['webpack', 'sourcemap'], // Same as entrypoint specified in webpack.config.js
32
+ './tests/unit/**/*.spec.js': ['webpack', 'sourcemap']
33
+ },
34
+
35
+ // list of files / patterns to exclude
36
+ exclude: [
37
+ ],
38
+
39
+ webpack: webpackConfig,
40
+
41
+ webpackMiddleware: {
42
+ // webpack-dev-middleware configuration
43
+ // i. e.
44
+ stats: 'errors-only'
45
+ },
46
+
47
+ // test results reporter to use
48
+ // possible values: 'dots', 'progress'
49
+ // available reporters: https://npmjs.org/browse/keyword/karma-reporter
50
+ reporters: ['progress', 'kjhtml'],
51
+
52
+ // web server port
53
+ port: 9876,
54
+
55
+ // enable / disable colors in the output (reporters and logs)
56
+ colors: true,
57
+
58
+ client: {
59
+ clearContext: false // leave Jasmine Spec Runner output visible in browser
60
+ },
61
+
62
+ // level of logging
63
+ // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
64
+ logLevel: config.LOG_INFO,
65
+
66
+ // enable / disable watching file and executing tests whenever any file changes
67
+ autoWatch: true,
68
+
69
+ // start these browsers
70
+ // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
71
+ browsers: ['ChromeHeadless', 'Chrome'],
72
+
73
+ customLaunchers: {
74
+ Chrome_with_debugging: {
75
+ base: 'Chrome',
76
+ flags: ['--remote-debugging-port=9222'],
77
+ debug: true
78
+ }
79
+ },
80
+
81
+ // Continuous Integration mode
82
+ // if true, Karma captures browsers, runs the tests and exits
83
+ singleRun: false,
84
+
85
+ // Concurrency level
86
+ // how many browser should be started simultaneous
87
+ concurrency: Infinity
88
+ })
89
+ }
@@ -0,0 +1,31 @@
1
+ # Config Readme
2
+
3
+ ## Webpack Configurations
4
+
5
+ The fairly standard Webpack setup would involve having three different Webpack config files derived from the same common config:
6
+ 1. Production - distribution
7
+ 2. Development - debugging etc
8
+ 3. Test - for unit testing
9
+
10
+ Development build output is set using the `devtool` entry in the config file. This provides a great deal of flexibility about type out of output (minified, non-minified) and whether or how source maps are generated (see https://webpack.js.org/guides/development/).
11
+
12
+
13
+ However we have two different use-cases for a development build:
14
+ 1. A non-minified and easily readable version for distribution
15
+ 2. Easy debugging using source maps via the webpack development server.
16
+
17
+ Usually both of these use-cases would be easily achieved with `devtool:"source-map"` but there is a [known bug](https://github.com/webpack/webpack/issues/5491) with Chrome Developer tools in this configuration. So for now we've had to produce a separate config for each use case.
18
+
19
+ As a result there are four separate Webpack configurations, each derived from webpack.common.js, with the following purposes
20
+
21
+ | Config File | Purpose | Related NPM scripts |
22
+ |-----|-----|-----|
23
+ | webpack.prod.js | Generates minified output to `/dist` root | `build.prod` - runs this build<br>`build` - runs both `prod` and `nonmin` builds
24
+ | webpack.nonmin.js | Generates non-minified output and sourcemap to `/dist/nonmin/` | `build.nonmin` - runs this build<br>`build` - runs both `prod` and `nonmin` builds<br>`debug.nonmin` - starts dev server for this config in watch mode. (No need to build first)<br>`watch` - starts build in watch mode |
25
+ | webpack.dev.js | Generates output and sourcemap (debuggable by both Chrome and Firefox) for dev server | `debug` - starts dev server for this config in watch mode. (No need to build first)
26
+ | karma.config.js | Contains tiny webpack config to provide script only build for Karma test runner | `test` - runs Karma scripts in Chrome Browser in watch mode<br>`test.headless` - runs Karma scripts once in headless mode
27
+
28
+
29
+
30
+
31
+
@@ -0,0 +1,71 @@
1
+ const webpack = require('webpack')
2
+ const helpers = require('./helpers')
3
+ const CssToJSON = require('../build/CssToJson')
4
+ const ESLintPlugin = require('eslint-webpack-plugin');
5
+
6
+ const bannerText = `/**
7
+ * @name JSON Editor
8
+ * @description JSON Schema Based Editor
9
+ * This library is the continuation of jdorn's great work (see also https://github.com/jdorn/json-editor/issues/800)
10
+ * @version {{ VERSION }}
11
+ * @author Jeremy Dorn
12
+ * @see https://github.com/jdorn/json-editor/
13
+ * @see https://github.com/json-editor/json-editor
14
+ * @license MIT
15
+ * @example see README.md and docs/ for requirements, examples and usage info
16
+ */`
17
+ module.exports = {
18
+ entry: {
19
+ jsoneditor: './src/core.js'
20
+ },
21
+ resolve: {
22
+ extensions: ['.js']
23
+ },
24
+ module: {
25
+ rules: [
26
+ {
27
+ test: /\.js|\.css.js$/,
28
+ exclude: /node_modules/,
29
+ use: [
30
+ {
31
+ loader: 'babel-loader',
32
+ options: {
33
+ presets: [
34
+ ['@babel/preset-env', {
35
+ useBuiltIns: 'usage',
36
+ corejs: 3,
37
+ debug: false
38
+ }]
39
+ ]
40
+ }
41
+ }
42
+ ]
43
+ },
44
+ {
45
+ test: /\.css$/,
46
+ exclude: /(node_modules)|(src\/themes)|(src\/editors)/,
47
+ use: ['style-loader', 'css-loader']
48
+ }
49
+ ]
50
+ },
51
+ plugins: [
52
+ new ESLintPlugin(),
53
+ new webpack.BannerPlugin(
54
+ bannerText.replace(
55
+ '{{ VERSION }}',
56
+ JSON.stringify(require('../package.json').version)
57
+ )
58
+ ),
59
+ new CssToJSON({
60
+ pattern: './src/**/*.css'
61
+ })
62
+ ],
63
+ performance: {
64
+ hints: false
65
+ },
66
+ devServer: {
67
+ static: helpers.root('.'),
68
+ historyApiFallback: true,
69
+ port: 8080
70
+ }
71
+ }
@@ -0,0 +1,15 @@
1
+ /* eslint-disable no-undef */
2
+ const webpackMerge = require('webpack-merge')
3
+ const commonConfig = require('./webpack.common.js')
4
+ const helpers = require('./helpers')
5
+
6
+ module.exports = webpackMerge(commonConfig, {
7
+ mode: 'development',
8
+ devtool: 'eval-cheap-module-source-map',
9
+ output: {
10
+ path: helpers.root('dist/dev'),
11
+ publicPath: '/dist/',
12
+ filename: '[name].js',
13
+ libraryTarget: 'umd'
14
+ }
15
+ })
@@ -0,0 +1,19 @@
1
+ const webpackMerge = require('webpack-merge')
2
+ const { CleanWebpackPlugin } = require('clean-webpack-plugin')
3
+ const commonConfig = require('./webpack.common.js')
4
+ const helpers = require('./helpers')
5
+
6
+ // See https://webpack.js.org/guides/development/
7
+ module.exports = (env) => webpackMerge(commonConfig, {
8
+ mode: 'development',
9
+ devtool: 'source-map',
10
+ output: {
11
+ path: env && env.travis === true ? helpers.root('dist') : helpers.root('dist/nonmin'),
12
+ publicPath: '/dist/',
13
+ filename: '[name].js',
14
+ libraryTarget: 'umd'
15
+ },
16
+ plugins: [
17
+ new CleanWebpackPlugin() // Cleans directory before building
18
+ ]
19
+ })
@@ -0,0 +1,24 @@
1
+ const webpack = require('webpack')
2
+ const webpackMerge = require('webpack-merge')
3
+ const RemoveStrictPlugin = require('remove-strict-webpack-plugin')
4
+ const commonConfig = require('./webpack.common.js')
5
+ const helpers = require('./helpers')
6
+
7
+ module.exports = () => {
8
+ return webpackMerge(commonConfig, {
9
+ mode: 'production',
10
+ output: {
11
+ path: helpers.root('dist'),
12
+ publicPath: '/dist/',
13
+ filename: '[name].js',
14
+ libraryTarget: 'umd'
15
+ },
16
+ optimization: {
17
+ minimize: true
18
+ },
19
+ plugins: [
20
+ // This doesn't seem to actually be minimising the CSS!
21
+ new webpack.NoEmitOnErrorsPlugin()
22
+ ]
23
+ })
24
+ }