@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
package/src/defaults.js CHANGED
@@ -1,365 +1,444 @@
1
- // Set the default theme
2
- JSONEditor.defaults.theme = 'html';
1
+ import { resolvers } from './resolvers.js'
2
+ import { editors } from './editors/index.js'
3
3
 
4
- // Set the default template engine
5
- JSONEditor.defaults.template = 'default';
4
+ /* default theme */
5
+ const theme = 'html'
6
6
 
7
- // Default options when initializing JSON Editor
8
- JSONEditor.defaults.options = {};
7
+ /* default template engine */
8
+ const template = 'default'
9
9
 
10
- JSONEditor.defaults.options.prompt_before_delete = true;
10
+ /* Global callback list */
11
+ const callbacks = {}
11
12
 
12
- JSONEditor.defaults.options.upload = function(type, file, cbs) {
13
- console.log('Upload handler required for upload editor');
14
- };
13
+ const themes = {}
14
+ const templates = {}
15
+ const iconlibs = {}
16
+ const languages = {}
17
+ // eslint-disable-next-line camelcase
18
+ const custom_validators = []
15
19
 
16
- // String translate function
17
- JSONEditor.defaults.translate = function(key, variables) {
18
- var lang = JSONEditor.defaults.languages[JSONEditor.defaults.language];
19
- if(!lang) throw "Unknown language "+JSONEditor.defaults.language;
20
-
21
- var string = lang[key] || JSONEditor.defaults.languages[JSONEditor.defaults.default_language][key];
22
-
23
- if(typeof string === "undefined") throw "Unknown translate string "+key;
24
-
25
- if(variables) {
26
- for(var i=0; i<variables.length; i++) {
27
- string = string.replace(new RegExp('\\{\\{'+i+'}}','g'),variables[i]);
28
- }
29
- }
30
-
31
- return string;
32
- };
20
+ /* Translation strings and default languages */
21
+ // eslint-disable-next-line camelcase
22
+ const default_language = 'en'
23
+ // eslint-disable-next-line camelcase
24
+ const language = default_language
33
25
 
34
- // Translation strings and default languages
35
- JSONEditor.defaults.default_language = 'en';
36
- JSONEditor.defaults.language = JSONEditor.defaults.default_language;
37
- JSONEditor.defaults.languages.en = {
26
+ languages.en = {
38
27
  /**
39
28
  * When a property is not set
40
29
  */
41
- error_notset: "Property must be set",
30
+ error_notset: 'Property must be set',
42
31
  /**
43
- * When a string must not be empty
44
- */
45
- error_notempty: "Value required",
32
+ * When a string must not be empty
33
+ */
34
+ error_notempty: 'Value required',
46
35
  /**
47
- * When a value is not one of the enumerated values
48
- */
49
- error_enum: "Value must be one of the enumerated values",
36
+ * When a value is not one of the enumerated values
37
+ */
38
+ error_enum: 'Value must be one of the enumerated values',
50
39
  /**
51
- * When a value doesn't validate any schema of a 'anyOf' combination
52
- */
53
- error_anyOf: "Value must validate against at least one of the provided schemas",
40
+ * When a value is not equal to the constant
41
+ */
42
+ error_const: 'Value must be the constant value',
54
43
  /**
55
- * When a value doesn't validate
56
- * @variables This key takes one variable: The number of schemas the value does not validate
57
- */
44
+ * When a value doesn't validate any schema of a 'anyOf' combination
45
+ */
46
+ error_anyOf: 'Value must validate against at least one of the provided schemas',
47
+ /**
48
+ * When a value doesn't validate
49
+ * @variables This key takes one variable: The number of schemas the value does not validate
50
+ */
58
51
  error_oneOf: 'Value must validate against exactly one of the provided schemas. It currently validates against {{0}} of the schemas.',
59
52
  /**
60
- * When a value does not validate a 'not' schema
61
- */
62
- error_not: "Value must not validate against the provided schema",
53
+ * When a value does not validate a 'not' schema
54
+ */
55
+ error_not: 'Value must not validate against the provided schema',
63
56
  /**
64
- * When a value does not match any of the provided types
65
- */
66
- error_type_union: "Value must be one of the provided types",
57
+ * When a value does not match any of the provided types
58
+ */
59
+ error_type_union: 'Value must be one of the provided types',
67
60
  /**
68
- * When a value does not match the given type
69
- * @variables This key takes one variable: The type the value should be of
70
- */
71
- error_type: "Value must be of type {{0}}",
61
+ * When a value does not match the given type
62
+ * @variables This key takes one variable: The type the value should be of
63
+ */
64
+ error_type: 'Value must be of type {{0}}',
72
65
  /**
73
- * When the value validates one of the disallowed types
74
- */
75
- error_disallow_union: "Value must not be one of the provided disallowed types",
66
+ * When the value validates one of the disallowed types
67
+ */
68
+ error_disallow_union: 'Value must not be one of the provided disallowed types',
76
69
  /**
77
- * When the value validates a disallowed type
78
- * @variables This key takes one variable: The type the value should not be of
79
- */
80
- error_disallow: "Value must not be of type {{0}}",
70
+ * When the value validates a disallowed type
71
+ * @variables This key takes one variable: The type the value should not be of
72
+ */
73
+ error_disallow: 'Value must not be of type {{0}}',
81
74
  /**
82
- * When a value is not a multiple of or divisible by a given number
83
- * @variables This key takes one variable: The number mentioned above
84
- */
85
- error_multipleOf: "Value must be a multiple of {{0}}",
75
+ * When a value is not a multiple of or divisible by a given number
76
+ * @variables This key takes one variable: The number mentioned above
77
+ */
78
+ error_multipleOf: 'Value must be a multiple of {{0}}',
86
79
  /**
87
- * When a value is greater than it's supposed to be (exclusive)
88
- * @variables This key takes one variable: The maximum
89
- */
90
- error_maximum_excl: "Value must be less than {{0}}",
80
+ * When a value is greater than it's supposed to be (exclusive)
81
+ * @variables This key takes one variable: The maximum
82
+ */
83
+ error_maximum_excl: 'Value must be less than {{0}}',
91
84
  /**
92
- * When a value is greater than it's supposed to be (inclusive
93
- * @variables This key takes one variable: The maximum
94
- */
95
- error_maximum_incl: "Value must be at most {{0}}",
85
+ * When a value is greater than it's supposed to be (inclusive
86
+ * @variables This key takes one variable: The maximum
87
+ */
88
+ error_maximum_incl: 'Value must be at most {{0}}',
96
89
  /**
97
- * When a value is lesser than it's supposed to be (exclusive)
98
- * @variables This key takes one variable: The minimum
99
- */
100
- error_minimum_excl: "Value must be greater than {{0}}",
90
+ * When a value is lesser than it's supposed to be (exclusive)
91
+ * @variables This key takes one variable: The minimum
92
+ */
93
+ error_minimum_excl: 'Value must be greater than {{0}}',
101
94
  /**
102
- * When a value is lesser than it's supposed to be (inclusive)
103
- * @variables This key takes one variable: The minimum
104
- */
105
- error_minimum_incl: "Value must be at least {{0}}",
95
+ * When a value is lesser than it's supposed to be (inclusive)
96
+ * @variables This key takes one variable: The minimum
97
+ */
98
+ error_minimum_incl: 'Value must be at least {{0}}',
106
99
  /**
107
- * When a value have too many characters
108
- * @variables This key takes one variable: The maximum character count
109
- */
110
- error_maxLength: "Value must be at most {{0}} characters long",
100
+ * When a value have too many characters
101
+ * @variables This key takes one variable: The maximum character count
102
+ */
103
+ error_maxLength: 'Value must be at most {{0}} characters long',
111
104
  /**
112
- * When a value does not have enough characters
113
- * @variables This key takes one variable: The minimum character count
105
+ * When no array items validates the contains schema
114
106
  */
115
- error_minLength: "Value must be at least {{0}} characters long",
107
+ error_contains: 'No items match contains',
116
108
  /**
117
- * When a value does not match a given pattern
109
+ * When an array have too few items that validate agaist contains schema
110
+ * @variables This key takes two variable: The valid items count and the minContains value
118
111
  */
119
- error_pattern: "Value must match the pattern {{0}}",
112
+ error_minContains: 'Contains match count {{0}} is less than minimum contains count of {{1}}',
120
113
  /**
121
- * When an array has additional items whereas it is not supposed to
114
+ * When an array have too many items that validate agaist contains schema
115
+ * @variables This key takes two variable: The valid items count and the maxContains value
122
116
  */
123
- error_additionalItems: "No additional items allowed in this array",
117
+ error_maxContains: 'Contains match count {{0}} exceeds maximum contains count of {{1}}',
124
118
  /**
125
- * When there are to many items in an array
126
- * @variables This key takes one variable: The maximum item count
127
- */
128
- error_maxItems: "Value must have at most {{0}} items",
119
+ * When a value does not have enough characters
120
+ * @variables This key takes one variable: The minimum character count
121
+ */
122
+ error_minLength: 'Value must be at least {{0}} characters long',
129
123
  /**
130
- * When there are not enough items in an array
131
- * @variables This key takes one variable: The minimum item count
132
- */
133
- error_minItems: "Value must have at least {{0}} items",
124
+ * When a value does not match a given pattern
125
+ */
126
+ error_pattern: 'Value must match the pattern {{0}}',
134
127
  /**
135
- * When an array is supposed to have unique items but has duplicates
136
- */
137
- error_uniqueItems: "Array must have unique items",
128
+ * When an array has additional items whereas it is not supposed to
129
+ */
130
+ error_additionalItems: 'No additional items allowed in this array',
138
131
  /**
139
- * When there are too many properties in an object
140
- * @variables This key takes one variable: The maximum property count
141
- */
142
- error_maxProperties: "Object must have at most {{0}} properties",
132
+ * When there are to many items in an array
133
+ * @variables This key takes one variable: The maximum item count
134
+ */
135
+ error_maxItems: 'Value must have at most {{0}} items',
143
136
  /**
144
- * When there are not enough properties in an object
145
- * @variables This key takes one variable: The minimum property count
146
- */
147
- error_minProperties: "Object must have at least {{0}} properties",
137
+ * When there are not enough items in an array
138
+ * @variables This key takes one variable: The minimum item count
139
+ */
140
+ error_minItems: 'Value must have at least {{0}} items',
148
141
  /**
149
- * When a required property is not defined
150
- * @variables This key takes one variable: The name of the missing property
151
- */
152
- error_required: "Object is missing the required property '{{0}}'",
142
+ * When an array is supposed to have unique items but has duplicates
143
+ */
144
+ error_uniqueItems: 'Array must have unique items',
153
145
  /**
154
- * When there is an additional property is set whereas there should be none
155
- * @variables This key takes one variable: The name of the additional property
156
- */
157
- error_additional_properties: "No additional properties allowed, but property {{0}} is set",
146
+ * When there are too many properties in an object
147
+ * @variables This key takes one variable: The maximum property count
148
+ */
149
+ error_maxProperties: 'Object must have at most {{0}} properties',
158
150
  /**
159
- * When a dependency is not resolved
160
- * @variables This key takes one variable: The name of the missing property for the dependency
161
- */
162
- error_dependency: "Must have property {{0}}",
151
+ * When there are not enough properties in an object
152
+ * @variables This key takes one variable: The minimum property count
153
+ */
154
+ error_minProperties: 'Object must have at least {{0}} properties',
155
+ /**
156
+ * When a required property is not defined
157
+ * @variables This key takes one variable: The name of the missing property
158
+ */
159
+ error_required: "Object is missing the required property '{{0}}'",
163
160
  /**
164
- * When a date is in incorrect format
165
- * @variables This key takes one variable: The valid format
166
- */
161
+ * When there is an additional property is set whereas there should be none
162
+ * @variables This key takes one variable: The name of the additional property
163
+ */
164
+ error_additional_properties: 'No additional properties allowed, but property {{0}} is set',
165
+ /**
166
+ * When there is a propertyName that sets a max length and a property name exceeds the max length
167
+ * @variables This key takes one variable: The name of the invalid property
168
+ */
169
+ error_property_names_exceeds_maxlength: 'Property name {{0}} exceeds maxLength',
170
+ /**
171
+ * When there is a propertyName that sets an enum and a property name matches none of the possible enum
172
+ * @variables This key takes one variable: The name of the invalid property
173
+ */
174
+ error_property_names_enum_mismatch: 'Property name {{0}} does not match any enum values',
175
+ /**
176
+ * When there is a propertyName that sets a const and a property does not match the const value
177
+ * @variables This key takes one variable: The name of the invalid property
178
+ */
179
+ error_property_names_const_mismatch: 'Property name {{0}} does not match the const value',
180
+ /**
181
+ * When there is a propertyName that sets a pattern and a property name does not match the pattern
182
+ * @variables This key takes one variable: The name of the invalid property
183
+ */
184
+ error_property_names_pattern_mismatch: 'Property name {{0}} does not match pattern',
185
+ /**
186
+ * When the propertyName is set to false and there is at least one property
187
+ * @variables This key takes one variable: The name of the invalid property
188
+ */
189
+ error_property_names_false: 'Property name {{0}} fails when propertyName is false',
190
+ /**
191
+ * When the propertyName specifies a maxLength that is not a number
192
+ * @variables This key takes one variable: The name of the current property
193
+ */
194
+ error_property_names_maxlength: 'Property name {{0}} cannot match invalid maxLength',
195
+ /**
196
+ * When the propertyName specifies an enum that is not an array
197
+ * @variables This key takes one variable: The name of the current property
198
+ */
199
+ error_property_names_enum: 'Property name {{0}} cannot match invalid enum',
200
+ /**
201
+ * When the propertyName specifies a pattern that is not a string
202
+ * @variables This key takes one variable: The name of the current property
203
+ */
204
+ error_property_names_pattern: 'Property name {{0}} cannot match invalid pattern',
205
+ /**
206
+ * When the propertyName is unsupported
207
+ * @variables This key takes one variable: The name of the invalid propertyName
208
+ */
209
+ error_property_names_unsupported: 'Unsupported propertyName {{0}}',
210
+ /**
211
+ * When a dependency is not resolved
212
+ * @variables This key takes one variable: The name of the missing property for the dependency
213
+ */
214
+ error_dependency: 'Must have property {{0}}',
215
+ /**
216
+ * When a date is in incorrect format
217
+ * @variables This key takes one variable: The valid format
218
+ */
167
219
  error_date: 'Date must be in the format {{0}}',
168
220
  /**
169
- * When a time is in incorrect format
170
- * @variables This key takes one variable: The valid format
171
- */
221
+ * When a time is in incorrect format
222
+ * @variables This key takes one variable: The valid format
223
+ */
172
224
  error_time: 'Time must be in the format {{0}}',
173
225
  /**
174
- * When a datetime-local is in incorrect format
175
- * @variables This key takes one variable: The valid format
176
- */
226
+ * When a datetime-local is in incorrect format
227
+ * @variables This key takes one variable: The valid format
228
+ */
177
229
  error_datetime_local: 'Datetime must be in the format {{0}}',
178
230
  /**
179
- * When a integer date is less than 1 January 1970
180
- */
231
+ * When a integer date is less than 1 January 1970
232
+ */
181
233
  error_invalid_epoch: 'Date must be greater than 1 January 1970',
182
-
183
234
  /**
184
- * Text on Delete All buttons
235
+ * When an IPv4 is in incorrect format
236
+ */
237
+ error_ipv4: 'Value must be a valid IPv4 address in the form of 4 numbers between 0 and 255, separated by dots',
238
+ /**
239
+ * When an IPv6 is in incorrect format
240
+ */
241
+ error_ipv6: 'Value must be a valid IPv6 address',
242
+ /**
243
+ * When a hostname is in incorrect format
244
+ */
245
+ error_hostname: 'The hostname has the wrong format',
246
+ /**
247
+ * When uploads max size limit is exceeded
248
+ */
249
+ upload_max_size: 'Filesize too large. Max size is ',
250
+ /**
251
+ * When the mime type does not match the type of the file
252
+ */
253
+ upload_wrong_file_format: 'Wrong file format. Allowed format(s): ',
254
+ /**
255
+ * Text/Title on Save button
256
+ */
257
+ button_save: 'Save',
258
+ /**
259
+ * Text/Title on Copy button
260
+ */
261
+ button_copy: 'Copy',
262
+ /**
263
+ * Text/Title on Cancel button
264
+ */
265
+ button_cancel: 'Cancel',
266
+ /**
267
+ * Text/Title on Add button
268
+ */
269
+ button_add: 'Add',
270
+ /**
271
+ * Text on Delete All buttons
272
+ */
273
+ button_delete_all: 'All',
274
+ /**
275
+ * Title on Delete All buttons
276
+ */
277
+ button_delete_all_title: 'Delete All',
278
+ /**
279
+ * Text on Delete Last buttons
280
+ * @variable This key takes one variable: The title of object to delete
281
+ */
282
+ button_delete_last: 'Last {{0}}',
283
+ /**
284
+ * Title on Delete Last buttons
285
+ * @variable This key takes one variable: The title of object to delete
286
+ */
287
+ button_delete_last_title: 'Delete Last {{0}}',
288
+ /**
289
+ * Title on Add Row buttons
290
+ * @variable This key takes one variable: The title of object to add
291
+ */
292
+ button_add_row_title: 'Add {{0}}',
293
+ /**
294
+ * Title on Move Down buttons
295
+ */
296
+ button_move_down_title: 'Move down',
297
+ /**
298
+ * Title on Move Up buttons
299
+ */
300
+ button_move_up_title: 'Move up',
301
+ /**
302
+ * Text on Object Properties buttons
303
+ */
304
+ button_properties: 'Properties',
305
+ /**
306
+ * Title on Object Properties buttons
307
+ */
308
+ button_object_properties: 'Object Properties',
309
+ /**
310
+ * Title on Copy Row button
311
+ * @variable This key takes one variable: The title of object to delete
312
+ */
313
+ button_copy_row_title: 'Copy {{0}}',
314
+ /**
315
+ * Title on Delete Row buttons
316
+ * @variable This key takes one variable: The title of object to delete
317
+ */
318
+ button_delete_row_title: 'Delete {{0}}',
319
+ /**
320
+ * Title on Delete Row buttons, short version (no parameter with the object title)
321
+ */
322
+ button_delete_row_title_short: 'Delete',
323
+ /**
324
+ * Title on Copy Row buttons, short version (no parameter with the object title)
325
+ */
326
+ button_copy_row_title_short: 'Copy',
327
+ /**
328
+ * Title on Collapse buttons
329
+ */
330
+ button_collapse: 'Collapse',
331
+ /**
332
+ * Title on Expand buttons
333
+ */
334
+ button_expand: 'Expand',
335
+ /**
336
+ * Title on Edit JSON buttons
337
+ */
338
+ button_edit_json: 'Edit JSON',
339
+ /**
340
+ * Text/Title on Upload buttons
341
+ */
342
+ button_upload: 'Upload',
343
+ /**
344
+ * Title on Flatpickr toggle buttons
345
+ */
346
+ flatpickr_toggle_button: 'Toggle',
347
+ /**
348
+ * Title on Flatpickr clear buttons
349
+ */
350
+ flatpickr_clear_button: 'Clear',
351
+ /**
352
+ * Choices input field placeholder text
353
+ */
354
+ choices_placeholder_text: 'Start typing to add value',
355
+ /**
356
+ * Default title for array items
357
+ */
358
+ default_array_item_title: 'item',
359
+ /**
360
+ * Warning when deleting a node
361
+ */
362
+ button_delete_node_warning: 'Are you sure you want to remove this item?',
363
+ /**
364
+ * Warning when deleting a node
185
365
  */
186
- button_delete_all: "All",
366
+ table_controls: 'Controls',
187
367
  /**
188
- * Title on Delete All buttons
368
+ * Warning when paste and length exceeded maxLength
189
369
  */
190
- button_delete_all_title: "Delete All",
191
- /**
192
- * Text on Delete Last buttons
193
- * @variable This key takes one variable: The title of object to delete
194
- */
195
- button_delete_last: "Last {{0}}",
196
- /**
197
- * Title on Delete Last buttons
198
- * @variable This key takes one variable: The title of object to delete
199
- */
200
- button_delete_last_title: "Delete Last {{0}}",
201
- /**
202
- * Title on Add Row buttons
203
- * @variable This key takes one variable: The title of object to add
204
- */
205
- button_add_row_title: "Add {{0}}",
206
- /**
207
- * Title on Move Down buttons
208
- */
209
- button_move_down_title: "Move down",
210
- /**
211
- * Title on Move Up buttons
212
- */
213
- button_move_up_title: "Move up",
214
- /**
215
- * Title on Delete Row buttons
216
- * @variable This key takes one variable: The title of object to delete
217
- */
218
- button_delete_row_title: "Delete {{0}}",
219
- /**
220
- * Title on Delete Row buttons, short version (no parameter with the object title)
221
- */
222
- button_delete_row_title_short: "Delete",
223
- /**
224
- * Title on Collapse buttons
225
- */
226
- button_collapse: "Collapse",
227
- /**
228
- * Title on Expand buttons
229
- */
230
- button_expand: "Expand",
231
- /**
232
- * Title on Flatpickr toggle buttons
233
- */
234
- flatpickr_toggle_button: "Toggle",
235
- /**
236
- * Title on Flatpickr clear buttons
237
- */
238
- flatpickr_clear_button: "Clear"
239
- };
370
+ paste_max_length_reached: 'Pasted text exceeded maximum length of {{0}} and will be clipped.'
371
+ }
240
372
 
241
- // Miscellaneous Plugin Settings
242
- JSONEditor.plugins = {
243
- ace: {
244
- theme: ''
245
- },
246
- SimpleMDE: {
373
+ /* Default per-editor options */
374
+ Object.entries(editors).forEach(([i, editor]) => { editors[i].options = editor.options || {} })
247
375
 
248
- },
249
- sceditor: {
376
+ /* Default upload handler */
377
+ function upload (type, file, cbs) {
378
+ // eslint-disable-next-line no-console
379
+ console.log('Upload handler required for upload editor')
380
+ }
250
381
 
251
- },
252
- select2: {
253
-
254
- },
255
- selectize: {
382
+ /* String translate function */
383
+ function translate (key, variables, schema) {
384
+ let schemaMessages = {}
385
+
386
+ if (schema && schema.options && schema.options.error_messages && schema.options.error_messages[defaults.language]) {
387
+ schemaMessages = schema.options.error_messages[defaults.language]
256
388
  }
257
- };
258
389
 
259
- // Default per-editor options
260
- $each(JSONEditor.defaults.editors, function(i,editor) {
261
- JSONEditor.defaults.editors[i].options = editor.options || {};
262
- });
390
+ const lang = defaults.languages[defaults.language]
263
391
 
264
- // Set the default resolvers
265
- // Use "multiple" as a fall back for everything
266
- JSONEditor.defaults.resolvers.unshift(function(schema) {
267
- if(typeof schema.type !== "string") return "multiple";
268
- });
269
- // If the type is not set but properties are defined, we can infer the type is actually object
270
- JSONEditor.defaults.resolvers.unshift(function(schema) {
271
- // If the schema is a simple type
272
- if(!schema.type && schema.properties ) return "object";
273
- });
274
- // If the type is set and it's a basic type, use the primitive editor
275
- JSONEditor.defaults.resolvers.unshift(function(schema) {
276
- // If the schema is a simple type
277
- if(typeof schema.type === "string") return schema.type;
278
- });
279
- // Use specialized editor for signatures
280
- JSONEditor.defaults.resolvers.unshift(function(schema) {
281
- if(schema.type === "string" && schema.format === "signature") return "signature";
282
- });
283
- // Use a specialized editor for ratings
284
- JSONEditor.defaults.resolvers.unshift(function(schema) {
285
- if(schema.type === "integer" && schema.format === "rating") return "rating";
286
- });
287
- // Use the select editor for all boolean values
288
- JSONEditor.defaults.resolvers.unshift(function(schema) {
289
- if(schema.type === 'boolean') {
290
- // If explicitly set to 'checkbox', use that
291
- if(schema.format === "checkbox" || (schema.options && schema.options.checkbox)) {
292
- return "checkbox";
293
- }
294
- // Otherwise, default to select menu
295
- return (JSONEditor.plugins.selectize.enable) ? 'selectize' : 'select';
296
- }
297
- });
298
- // Use the multiple editor for schemas where the `type` is set to "any"
299
- JSONEditor.defaults.resolvers.unshift(function(schema) {
300
- // If the schema can be of any type
301
- if(schema.type === "any") return "multiple";
302
- });
303
- // Editor for base64 encoded files
304
- JSONEditor.defaults.resolvers.unshift(function(schema) {
305
- // If the schema can be of any type
306
- if(schema.type === "string" && schema.media && schema.media.binaryEncoding==="base64") {
307
- return "base64";
308
- }
309
- });
310
- // Editor for uploading files
311
- JSONEditor.defaults.resolvers.unshift(function(schema) {
312
- if(schema.type === "string" && schema.format === "url" && schema.options && schema.options.upload === true) {
313
- if(window.FileReader) return "upload";
314
- }
315
- });
316
- // Use the table editor for arrays with the format set to `table`
317
- JSONEditor.defaults.resolvers.unshift(function(schema) {
318
- // Type `array` with format set to `table`
319
- if(schema.type === "array" && schema.format === "table") {
320
- return "table";
321
- }
322
- });
323
- // Use the `select` editor for dynamic enumSource enums
324
- JSONEditor.defaults.resolvers.unshift(function(schema) {
325
- if(schema.enumSource) return (JSONEditor.plugins.selectize.enable) ? 'selectize' : 'select';
326
- });
327
- // Use the `enum` or `select` editors for schemas with enumerated properties
328
- JSONEditor.defaults.resolvers.unshift(function(schema) {
329
- if(schema["enum"]) {
330
- if(schema.type === "array" || schema.type === "object") {
331
- return "enum";
332
- }
333
- else if(schema.type === "number" || schema.type === "integer" || schema.type === "string") {
334
- return (JSONEditor.plugins.selectize.enable) ? 'selectize' : 'select';
335
- }
336
- }
337
- });
338
- // Specialized editors for arrays of strings
339
- JSONEditor.defaults.resolvers.unshift(function(schema) {
340
- if(schema.type === "array" && schema.items && !(Array.isArray(schema.items)) && schema.uniqueItems && ['string','number','integer'].indexOf(schema.items.type) >= 0) {
341
- // For enumerated strings, number, or integers
342
- if(schema.items.enum) {
343
- return 'multiselect';
344
- }
345
- // For non-enumerated strings (tag editor)
346
- else if(JSONEditor.plugins.selectize.enable && schema.items.type === "string") {
347
- return 'arraySelectize';
392
+ if (!lang) throw new Error(`Unknown language ${defaults.language}`)
393
+
394
+ let string = schemaMessages[key] || lang[key] || defaults.languages[default_language][key] || key
395
+
396
+ if (variables) {
397
+ for (let i = 0; i < variables.length; i++) {
398
+ string = string.replace(new RegExp(`\\{\\{${i}}}`, 'g'), variables[i])
348
399
  }
349
400
  }
350
- });
351
- // Use the multiple editor for schemas with `oneOf` set
352
- JSONEditor.defaults.resolvers.unshift(function(schema) {
353
- // If this schema uses `oneOf` or `anyOf`
354
- if(schema.oneOf || schema.anyOf) return "multiple";
355
- });
356
- // Specialized editor for date, time and datetime-local formats
357
- JSONEditor.defaults.resolvers.unshift(function(schema) {
358
- if (['string', 'integer'].indexOf(schema.type) !== -1 && ['date', 'time', 'datetime-local'].indexOf(schema.format) !== -1) {
359
- return "datetime";
360
- }
361
- });
362
- // Use a specialized editor for starratings
363
- JSONEditor.defaults.resolvers.unshift(function(schema) {
364
- if (schema.type === "string" && schema.format === "starrating") return "starrating";
365
- });
401
+
402
+ return string
403
+ }
404
+
405
+ /* Text element translate function */
406
+
407
+ function translateProperty (text, variables) {
408
+ return text
409
+ }
410
+
411
+ /* Default options when initializing JSON Editor */
412
+ const options = {
413
+ upload,
414
+ use_name_attributes: true,
415
+ prompt_before_delete: true,
416
+ use_default_values: true,
417
+ max_depth: 0,
418
+ button_state_mode: 1,
419
+ case_sensitive_property_search: true,
420
+ show_errors: 'interaction',
421
+ prompt_paste_max_length_reached: false,
422
+ remove_false_properties: false,
423
+ enforce_const: false,
424
+ opt_in_widget: 'checkbox'
425
+ }
426
+
427
+ /* This assignment was previously in index.js but makes more sense here */
428
+ export const defaults = {
429
+ options,
430
+ theme,
431
+ template,
432
+ themes,
433
+ callbacks,
434
+ templates,
435
+ iconlibs,
436
+ editors,
437
+ languages,
438
+ resolvers,
439
+ custom_validators,
440
+ default_language,
441
+ language,
442
+ translate,
443
+ translateProperty
444
+ }