@json-editor/json-editor 1.4.0-beta.0 → 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 (435) 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 +62 -16
  8. package/CHANGELOG.md +483 -113
  9. package/CONTRIBUTING.md +43 -4
  10. package/Makefile +26 -0
  11. package/README.md +632 -121
  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 -11550
  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 +42 -35
  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 +600 -582
  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 +9 -17
  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 +381 -327
  61. package/src/editor.js +733 -544
  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 +107 -130
  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 +141 -125
  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 +1190 -1068
  93. package/src/editors/radio.js +117 -101
  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 -433
  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 -265
  141. package/src/themes/bootstrap3.css +53 -0
  142. package/src/themes/bootstrap3.css.js +3 -0
  143. package/src/themes/bootstrap3.js +355 -262
  144. package/src/themes/bootstrap4.css +89 -0
  145. package/src/themes/bootstrap4.css.js +3 -0
  146. package/src/themes/bootstrap4.js +743 -237
  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 +535 -472
  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 -167
  156. package/src/themes/materialize.js +263 -292
  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 +909 -565
  165. package/src/validators/ip-validator.js +51 -0
  166. package/tests/Dockerfile +3 -0
  167. package/tests/README.md +25 -5
  168. package/tests/codeceptjs/codecept.json +9 -2
  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 -63
  174. package/tests/codeceptjs/editors/advanced_test.js +12 -9
  175. package/tests/codeceptjs/editors/array_any_of_test.js +50 -0
  176. package/tests/codeceptjs/editors/array_test.js +923 -657
  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 -6
  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 -64
  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 -7
  187. package/tests/codeceptjs/editors/number_test.js +75 -60
  188. package/tests/codeceptjs/editors/object_test.js +322 -80
  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 -10
  195. package/tests/codeceptjs/editors/select_test.js +47 -18
  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 +107 -91
  199. package/tests/codeceptjs/editors/table-confirm-delete_test.js +60 -54
  200. package/tests/codeceptjs/editors/tabs_test.js +15 -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 +11 -19
  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 +10 -8
  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 +10 -13
  301. package/tests/pages/grid.html +4 -7
  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 +56 -20
  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 -228
  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/src/class.js +0 -68
  430. package/src/editors/rating.js +0 -152
  431. package/src/ie9.js +0 -51
  432. package/src/intro.js +0 -23
  433. package/src/jquery.js +0 -64
  434. package/src/outro.js +0 -2
  435. package/src/themes/jsoneditor.barebones-theme.js +0 -60
package/src/defaults.js CHANGED
@@ -1,390 +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
+ /* 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
20
25
 
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
- };
33
-
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 Object Properties buttons
216
- */
217
- button_object_properties: "Object Properties",
218
- /**
219
- * Title on Delete Row buttons
220
- * @variable This key takes one variable: The title of object to delete
221
- */
222
- button_delete_row_title: "Delete {{0}}",
223
- /**
224
- * Title on Delete Row buttons, short version (no parameter with the object title)
225
- */
226
- button_delete_row_title_short: "Delete",
227
- /**
228
- * Title on Collapse buttons
229
- */
230
- button_collapse: "Collapse",
231
- /**
232
- * Title on Expand buttons
233
- */
234
- button_expand: "Expand",
235
- /**
236
- * Title on Flatpickr toggle buttons
237
- */
238
- flatpickr_toggle_button: "Toggle",
239
- /**
240
- * Title on Flatpickr clear buttons
241
- */
242
- flatpickr_clear_button: "Clear"
243
- };
370
+ paste_max_length_reached: 'Pasted text exceeded maximum length of {{0}} and will be clipped.'
371
+ }
244
372
 
245
- // Miscellaneous Plugin Settings
246
- JSONEditor.plugins = {
247
- ace: {
248
- theme: ''
249
- },
250
- SimpleMDE: {
373
+ /* Default per-editor options */
374
+ Object.entries(editors).forEach(([i, editor]) => { editors[i].options = editor.options || {} })
251
375
 
252
- },
253
- 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
+ }
254
381
 
255
- },
256
- select2: {
382
+ /* String translate function */
383
+ function translate (key, variables, schema) {
384
+ let schemaMessages = {}
257
385
 
258
- },
259
- selectize: {
386
+ if (schema && schema.options && schema.options.error_messages && schema.options.error_messages[defaults.language]) {
387
+ schemaMessages = schema.options.error_messages[defaults.language]
260
388
  }
261
- };
262
389
 
263
- // Default per-editor options
264
- $each(JSONEditor.defaults.editors, function(i,editor) {
265
- JSONEditor.defaults.editors[i].options = editor.options || {};
266
- });
390
+ const lang = defaults.languages[defaults.language]
267
391
 
268
- // Set the default resolvers
269
- // Use "multiple" as a fall back for everything
270
- JSONEditor.defaults.resolvers.unshift(function(schema) {
271
- if(typeof schema.type !== "string") return "multiple";
272
- });
273
- // If the type is not set but properties are defined, we can infer the type is actually object
274
- JSONEditor.defaults.resolvers.unshift(function(schema) {
275
- // If the schema is a simple type
276
- if(!schema.type && schema.properties ) return "object";
277
- });
278
- // If the type is set and it's a basic type, use the primitive editor
279
- JSONEditor.defaults.resolvers.unshift(function(schema) {
280
- // If the schema is a simple type
281
- if(typeof schema.type === "string") return schema.type;
282
- });
283
- // Use specialized editor for signatures
284
- JSONEditor.defaults.resolvers.unshift(function(schema) {
285
- if(schema.type === "string" && schema.format === "signature") return "signature";
286
- });
287
- // Use a specialized editor for ratings
288
- JSONEditor.defaults.resolvers.unshift(function(schema) {
289
- if(schema.type === "integer" && schema.format === "rating") return "rating";
290
- });
291
- // Use the select editor for all boolean values
292
- JSONEditor.defaults.resolvers.unshift(function(schema) {
293
- if(schema.type === 'boolean') {
294
- // If explicitly set to 'checkbox', use that
295
- if(schema.format === "checkbox" || (schema.options && schema.options.checkbox)) {
296
- return "checkbox";
297
- }
298
- // Otherwise, default to select menu
299
- return (JSONEditor.plugins.selectize.enable) ? 'selectize' : 'select';
300
- }
301
- });
302
- // Use the multiple editor for schemas where the `type` is set to "any"
303
- JSONEditor.defaults.resolvers.unshift(function(schema) {
304
- // If the schema can be of any type
305
- if(schema.type === "any") return "multiple";
306
- });
307
- // Editor for base64 encoded files
308
- JSONEditor.defaults.resolvers.unshift(function(schema) {
309
- // If the schema can be of any type
310
- if(schema.type === "string" && schema.media && schema.media.binaryEncoding==="base64") {
311
- return "base64";
312
- }
313
- });
314
- // Editor for uploading files
315
- JSONEditor.defaults.resolvers.unshift(function(schema) {
316
- if(schema.type === "string" && schema.format === "url" && schema.options && schema.options.upload === true) {
317
- if(window.FileReader) return "upload";
318
- }
319
- });
320
- // Use the table editor for arrays with the format set to `table`
321
- JSONEditor.defaults.resolvers.unshift(function(schema) {
322
- // Type `array` with format set to `table`
323
- if(schema.type === "array" && schema.format === "table") {
324
- return "table";
325
- }
326
- });
327
- // Use the `select` editor for dynamic enumSource enums
328
- JSONEditor.defaults.resolvers.unshift(function(schema) {
329
- if(schema.enumSource) {
330
- if(schema.format === "radio") {
331
- return "radio";
332
- }
333
- return (JSONEditor.plugins.selectize.enable) ? 'selectize' : 'select';
334
- }
335
- });
336
- // Use the `enum` or `select` editors for schemas with enumerated properties
337
- JSONEditor.defaults.resolvers.unshift(function(schema) {
338
- if(schema["enum"]) {
339
- if(schema.type === "array" || schema.type === "object") {
340
- return "enum";
341
- }
342
- else if(schema.type === "number" || schema.type === "integer" || schema.type === "string") {
392
+ if (!lang) throw new Error(`Unknown language ${defaults.language}`)
343
393
 
344
- if(schema.format === "radio") {
345
- return "radio";
346
- }
394
+ let string = schemaMessages[key] || lang[key] || defaults.languages[default_language][key] || key
347
395
 
348
- return (JSONEditor.plugins.selectize.enable) ? 'selectize' : 'select';
349
- }
350
- }
351
- });
352
- // Specialized editors for arrays of strings
353
- JSONEditor.defaults.resolvers.unshift(function(schema) {
354
- if(schema.type === "array" && schema.items && !(Array.isArray(schema.items)) && schema.uniqueItems && ['string','number','integer'].indexOf(schema.items.type) >= 0) {
355
- // if 'selectize' enabled it is expected to be selectized control
356
- if (JSONEditor.plugins.selectize.enable) {
357
- return 'arraySelectize';
396
+ if (variables) {
397
+ for (let i = 0; i < variables.length; i++) {
398
+ string = string.replace(new RegExp(`\\{\\{${i}}}`, 'g'), variables[i])
358
399
  }
359
- // otherwise it is select
360
- else {
361
- return 'multiselect';
362
- }
363
- }
364
- });
365
- // Use the multiple editor for schemas with `oneOf` set
366
- JSONEditor.defaults.resolvers.unshift(function(schema) {
367
- // If this schema uses `oneOf` or `anyOf`
368
- if(schema.oneOf || schema.anyOf) return "multiple";
369
- });
370
- // Specialized editor for date, time and datetime-local formats
371
- JSONEditor.defaults.resolvers.unshift(function(schema) {
372
- if (['string', 'integer'].indexOf(schema.type) !== -1 && ['date', 'time', 'datetime-local'].indexOf(schema.format) !== -1) {
373
- return "datetime";
374
400
  }
375
- });
376
- // Use a specialized editor for starratings
377
- JSONEditor.defaults.resolvers.unshift(function(schema) {
378
- if (schema.type === "string" && schema.format === "starrating") return "starrating";
379
- });
380
401
 
381
- // hyper-link describeBy Resolver
382
- JSONEditor.defaults.resolvers.unshift(function(schema) {
383
- if (schema.links) {
384
- for (var i = 0; i < schema.links.length; i++) {
385
- if (schema.links[i].rel.toLowerCase() === "describedby") {
386
- return "describedBy";
387
- }
388
- }
389
- }
390
- });
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
+ }