@oat-sa/tao-core-ui 1.58.1 → 1.58.2

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 (233) hide show
  1. package/dist/actionbar.js +386 -395
  2. package/dist/adder.js +21 -19
  3. package/dist/animable/absorbable/absorbable.js +204 -213
  4. package/dist/animable/absorbable/css/absorb.css +1 -0
  5. package/dist/animable/absorbable/css/absorb.css.map +1 -1
  6. package/dist/animable/pulsable/pulsable.js +168 -177
  7. package/dist/autocomplete/css/autocomplete.css +1 -0
  8. package/dist/autocomplete/css/autocomplete.css.map +1 -1
  9. package/dist/autocomplete.js +68 -66
  10. package/dist/badge/badge.js +188 -197
  11. package/dist/badge/css/badge.css +1 -0
  12. package/dist/badge/css/badge.css.map +1 -1
  13. package/dist/breadcrumbs.js +275 -284
  14. package/dist/btngrouper.js +5 -5
  15. package/dist/bulkActionPopup.js +490 -495
  16. package/dist/button.js +283 -291
  17. package/dist/cascadingComboBox.js +249 -258
  18. package/dist/ckeditor/ckConfigurator.js +26 -19
  19. package/dist/ckeditor/dtdHandler.js +11 -9
  20. package/dist/class/selector.js +441 -450
  21. package/dist/component/resizable.js +1 -1
  22. package/dist/component/windowed.js +285 -294
  23. package/dist/component.js +419 -428
  24. package/dist/contextualPopup.js +417 -426
  25. package/dist/dashboard.js +300 -309
  26. package/dist/datalist.js +753 -762
  27. package/dist/datatable/filterStrategy/multiple.js +1 -1
  28. package/dist/datatable/filterStrategy/single.js +1 -1
  29. package/dist/datatable.js +1527 -1550
  30. package/dist/dateRange/dateRange.js +393 -402
  31. package/dist/datetime/picker.js +665 -672
  32. package/dist/deleter.js +368 -377
  33. package/dist/destination/selector.js +286 -295
  34. package/dist/dialog/alert.js +3 -3
  35. package/dist/dialog/confirm.js +1 -1
  36. package/dist/dialog/confirmDelete.js +216 -225
  37. package/dist/dialog.js +650 -654
  38. package/dist/disabler.js +8 -8
  39. package/dist/documentViewer/providers/pdfViewer/fallback/viewer.js +166 -175
  40. package/dist/documentViewer/providers/pdfViewer/pdfjs/findBar.js +518 -527
  41. package/dist/documentViewer/providers/pdfViewer/pdfjs/pageView.js +380 -389
  42. package/dist/documentViewer/providers/pdfViewer/pdfjs/searchEngine.js +539 -548
  43. package/dist/documentViewer/providers/pdfViewer/pdfjs/viewer.js +369 -378
  44. package/dist/documentViewer/providers/pdfViewer.js +184 -193
  45. package/dist/documentViewer.js +292 -301
  46. package/dist/dropdown.js +383 -392
  47. package/dist/durationer.js +5 -5
  48. package/dist/dynamicComponent.js +597 -598
  49. package/dist/feedback.js +356 -362
  50. package/dist/figure/FigureStateActive.js +117 -108
  51. package/dist/filesender.js +2 -2
  52. package/dist/filter.js +230 -239
  53. package/dist/form/dropdownForm.js +355 -357
  54. package/dist/form/form.js +919 -690
  55. package/dist/form/simpleForm.js +1 -1
  56. package/dist/form/validator/renderer.js +233 -235
  57. package/dist/form/validator/validator.js +257 -189
  58. package/dist/form/widget/definitions.js +1 -1
  59. package/dist/form/widget/providers/checkBox.js +254 -259
  60. package/dist/form/widget/providers/comboBox.js +187 -192
  61. package/dist/form/widget/providers/default.js +8 -9
  62. package/dist/form/widget/providers/hidden.js +170 -179
  63. package/dist/form/widget/providers/hiddenBox.js +262 -267
  64. package/dist/form/widget/providers/radioBox.js +216 -225
  65. package/dist/form/widget/providers/textArea.js +187 -196
  66. package/dist/form/widget/providers/textBox.js +2 -3
  67. package/dist/form/widget/widget.js +473 -475
  68. package/dist/formValidator/formValidator.js +1 -1
  69. package/dist/formValidator/highlighters/message.js +1 -1
  70. package/dist/generis/form/form.js +314 -323
  71. package/dist/generis/validator/validator.js +209 -218
  72. package/dist/generis/widget/checkBox/checkBox.js +218 -227
  73. package/dist/generis/widget/comboBox/comboBox.js +179 -188
  74. package/dist/generis/widget/hiddenBox/hiddenBox.js +220 -229
  75. package/dist/generis/widget/textBox/textBox.js +169 -178
  76. package/dist/generis/widget/widget.js +246 -255
  77. package/dist/groupedComboBox.js +222 -231
  78. package/dist/groupvalidator.js +2 -2
  79. package/dist/highlighter.js +967 -958
  80. package/dist/image/ImgStateActive/helper.js +7 -5
  81. package/dist/image/ImgStateActive/initHelper.js +49 -43
  82. package/dist/image/ImgStateActive/initMediaEditor.js +24 -20
  83. package/dist/image/ImgStateActive/mediaSizer.js +14 -12
  84. package/dist/image/ImgStateActive.js +72 -70
  85. package/dist/incrementer.js +6 -6
  86. package/dist/inplacer.js +6 -6
  87. package/dist/itemButtonList/css/item-button-list.css +1 -0
  88. package/dist/itemButtonList/css/item-button-list.css.map +1 -1
  89. package/dist/itemButtonList.js +439 -435
  90. package/dist/keyNavigation/navigableDomElement.js +51 -38
  91. package/dist/keyNavigation/navigator.js +85 -70
  92. package/dist/listbox.js +460 -469
  93. package/dist/liststyler.js +8 -8
  94. package/dist/loadingButton/loadingButton.js +209 -218
  95. package/dist/lock.js +476 -485
  96. package/dist/login/login.js +475 -484
  97. package/dist/maths/calculator/basicCalculator.js +235 -244
  98. package/dist/maths/calculator/calculatorComponent.js +3 -3
  99. package/dist/maths/calculator/core/board.js +772 -781
  100. package/dist/maths/calculator/core/expression.js +476 -485
  101. package/dist/maths/calculator/core/labels.js +228 -237
  102. package/dist/maths/calculator/core/tokenizer.js +1 -1
  103. package/dist/maths/calculator/core/tokens.js +163 -170
  104. package/dist/maths/calculator/plugins/keyboard/templateKeyboard/templateKeyboard.js +244 -253
  105. package/dist/maths/calculator/plugins/screen/simpleScreen/simpleScreen.js +279 -288
  106. package/dist/maths/calculator/scientificCalculator.js +327 -336
  107. package/dist/mediaEditor/mediaEditorComponent.js +238 -245
  108. package/dist/mediaEditor/plugins/mediaAlignment/helper.js +7 -7
  109. package/dist/mediaEditor/plugins/mediaAlignment/mediaAlignmentComponent.js +229 -235
  110. package/dist/mediaEditor/plugins/mediaDimension/mediaDimensionComponent.js +580 -589
  111. package/dist/mediaplayer/players/html5.js +666 -675
  112. package/dist/mediaplayer/players/youtube.js +419 -424
  113. package/dist/mediaplayer/support.js +11 -10
  114. package/dist/mediaplayer/utils/reminder.js +14 -13
  115. package/dist/mediaplayer/utils/timeObserver.js +10 -11
  116. package/dist/mediaplayer/youtubeManager.js +164 -145
  117. package/dist/mediaplayer.js +1565 -1520
  118. package/dist/mediasizer.js +669 -678
  119. package/dist/modal.js +10 -17
  120. package/dist/pageSizeSelector.js +219 -228
  121. package/dist/pagination/providers/pages.js +280 -289
  122. package/dist/pagination/providers/simple.js +192 -201
  123. package/dist/previewer.js +30 -30
  124. package/dist/progressbar.js +4 -4
  125. package/dist/report.js +347 -356
  126. package/dist/resource/filters.js +271 -280
  127. package/dist/resource/list.js +1264 -1273
  128. package/dist/resource/selector.js +865 -874
  129. package/dist/resource/tree.js +1483 -1492
  130. package/dist/resourcemgr/fileBrowser.js +564 -569
  131. package/dist/resourcemgr/filePreview.js +16 -16
  132. package/dist/resourcemgr/fileSelector.js +515 -524
  133. package/dist/resourcemgr/util/updatePermissions.js +2 -2
  134. package/dist/resourcemgr.js +306 -315
  135. package/dist/searchModal/advancedSearch.js +796 -767
  136. package/dist/searchModal.js +114 -91
  137. package/dist/switch/switch.js +298 -307
  138. package/dist/tabs.js +598 -575
  139. package/dist/taskQueue/status.js +312 -321
  140. package/dist/taskQueue/table.js +375 -384
  141. package/dist/taskQueue/taskQueueModel.js +488 -472
  142. package/dist/taskQueueButton/taskable.js +264 -273
  143. package/dist/taskQueueButton/treeButton.js +189 -198
  144. package/dist/themeLoader.js +24 -23
  145. package/dist/themes.js +1 -1
  146. package/dist/toggler.js +3 -3
  147. package/dist/tooltip.js +295 -304
  148. package/dist/transformer.js +2 -2
  149. package/dist/tristateCheckboxGroup.js +311 -320
  150. package/dist/uploader.js +687 -696
  151. package/dist/validator/Report.js +1 -1
  152. package/dist/validator/Validator.js +3 -3
  153. package/dist/validator/validators.js +9 -9
  154. package/dist/validator.js +240 -230
  155. package/dist/waitForMedia.js +1 -1
  156. package/package.json +3 -3
  157. package/src/animable/absorbable/css/absorb.css +1 -0
  158. package/src/animable/absorbable/css/absorb.css.map +1 -1
  159. package/src/autocomplete/css/autocomplete.css +1 -0
  160. package/src/autocomplete/css/autocomplete.css.map +1 -1
  161. package/src/badge/css/badge.css +1 -0
  162. package/src/badge/css/badge.css.map +1 -1
  163. package/src/ckeditor/ckConfigurator.js +4 -0
  164. package/src/itemButtonList/css/item-button-list.css +1 -0
  165. package/src/itemButtonList/css/item-button-list.css.map +1 -1
  166. package/src/.DS_Store +0 -0
  167. package/src/css/basic.css +0 -7826
  168. package/src/css/basic.css.map +0 -1
  169. package/src/css/ckeditor/skins/tao/css/dialog.css +0 -950
  170. package/src/css/ckeditor/skins/tao/css/dialog.css.map +0 -1
  171. package/src/css/ckeditor/skins/tao/css/editor.css +0 -1850
  172. package/src/css/ckeditor/skins/tao/css/editor.css.map +0 -1
  173. package/src/scss/.DS_Store +0 -0
  174. package/src/scss/basic.scss +0 -16
  175. package/src/scss/ckeditor/skins/tao/scss/dialog.scss +0 -763
  176. package/src/scss/ckeditor/skins/tao/scss/editor.scss +0 -111
  177. package/src/scss/ckeditor/skins/tao/scss/inc/_ck-icons.scss +0 -59
  178. package/src/scss/ckeditor/skins/tao/scss/inc/_colorpanel.scss +0 -118
  179. package/src/scss/ckeditor/skins/tao/scss/inc/_elementspath.scss +0 -69
  180. package/src/scss/ckeditor/skins/tao/scss/inc/_mainui.scss +0 -194
  181. package/src/scss/ckeditor/skins/tao/scss/inc/_menu.scss +0 -181
  182. package/src/scss/ckeditor/skins/tao/scss/inc/_panel.scss +0 -200
  183. package/src/scss/ckeditor/skins/tao/scss/inc/_presets.scss +0 -32
  184. package/src/scss/ckeditor/skins/tao/scss/inc/_reset.scss +0 -101
  185. package/src/scss/ckeditor/skins/tao/scss/inc/_richcombo.scss +0 -213
  186. package/src/scss/ckeditor/skins/tao/scss/inc/_tao.scss +0 -59
  187. package/src/scss/ckeditor/skins/tao/scss/inc/_toolbar.scss +0 -301
  188. package/src/scss/font/source-sans-pro/source-sans-pro-italic.eot +0 -0
  189. package/src/scss/font/source-sans-pro/source-sans-pro-italic.eot.b64 +0 -1
  190. package/src/scss/font/source-sans-pro/source-sans-pro-italic.woff +0 -0
  191. package/src/scss/font/source-sans-pro/source-sans-pro-italic.woff.b64 +0 -1
  192. package/src/scss/font/source-sans-pro/source-sans-pro-regular.eot +0 -0
  193. package/src/scss/font/source-sans-pro/source-sans-pro-regular.eot.b64 +0 -1
  194. package/src/scss/font/source-sans-pro/source-sans-pro-regular.woff +0 -0
  195. package/src/scss/font/source-sans-pro/source-sans-pro-regular.woff.b64 +0 -1
  196. package/src/scss/font/source-sans-pro/source-sans-pro-semibold-italic.eot +0 -0
  197. package/src/scss/font/source-sans-pro/source-sans-pro-semibold-italic.eot.b64 +0 -1
  198. package/src/scss/font/source-sans-pro/source-sans-pro-semibold-italic.woff +0 -0
  199. package/src/scss/font/source-sans-pro/source-sans-pro-semibold-italic.woff.b64 +0 -1
  200. package/src/scss/font/source-sans-pro/source-sans-pro-semibold.eot +0 -0
  201. package/src/scss/font/source-sans-pro/source-sans-pro-semibold.eot.b64 +0 -1
  202. package/src/scss/font/source-sans-pro/source-sans-pro-semibold.woff +0 -0
  203. package/src/scss/font/source-sans-pro/source-sans-pro-semibold.woff.b64 +0 -1
  204. package/src/scss/font/tao/tao.eot +0 -0
  205. package/src/scss/font/tao/tao.svg +0 -235
  206. package/src/scss/font/tao/tao.ttf +0 -0
  207. package/src/scss/font/tao/tao.woff +0 -0
  208. package/src/scss/inc/_base.scss +0 -496
  209. package/src/scss/inc/_bootstrap.scss +0 -6
  210. package/src/scss/inc/_buttons.scss +0 -114
  211. package/src/scss/inc/_colors.scss +0 -88
  212. package/src/scss/inc/_feedback.scss +0 -150
  213. package/src/scss/inc/_flex-grid.scss +0 -15
  214. package/src/scss/inc/_fonts.scss +0 -4
  215. package/src/scss/inc/_forms.scss +0 -827
  216. package/src/scss/inc/_functions.scss +0 -283
  217. package/src/scss/inc/_grid.scss +0 -66
  218. package/src/scss/inc/_jquery.nouislider.scss +0 -254
  219. package/src/scss/inc/_normalize.scss +0 -528
  220. package/src/scss/inc/_report.scss +0 -68
  221. package/src/scss/inc/_secondary-properties.scss +0 -89
  222. package/src/scss/inc/_select2.scss +0 -634
  223. package/src/scss/inc/_toolbars.scss +0 -155
  224. package/src/scss/inc/_tooltip.scss +0 -312
  225. package/src/scss/inc/_variables.scss +0 -21
  226. package/src/scss/inc/base/_highlight.scss +0 -5
  227. package/src/scss/inc/base/_list-style.scss +0 -59
  228. package/src/scss/inc/base/_svg.scss +0 -3
  229. package/src/scss/inc/base/_table.scss +0 -63
  230. package/src/scss/inc/fonts/_source-sans-pro.scss +0 -29
  231. package/src/scss/inc/fonts/_tao-icon-classes.scss +0 -226
  232. package/src/scss/inc/fonts/_tao-icon-def.scss +0 -12
  233. package/src/scss/inc/fonts/_tao-icon-vars.scss +0 -240
@@ -1,221 +1,289 @@
1
1
  define(['lodash', 'i18n'], function (_, __) { 'use strict';
2
2
 
3
- _ = _ && Object.prototype.hasOwnProperty.call(_, 'default') ? _['default'] : _;
4
- __ = __ && Object.prototype.hasOwnProperty.call(__, 'default') ? __['default'] : __;
3
+ _ = _ && Object.prototype.hasOwnProperty.call(_, 'default') ? _['default'] : _;
4
+ __ = __ && Object.prototype.hasOwnProperty.call(__, 'default') ? __['default'] : __;
5
5
 
6
- /**
7
- * This program is free software; you can redistribute it and/or
8
- * modify it under the terms of the GNU General Public License
9
- * as published by the Free Software Foundation; under version 2
10
- * of the License (non-upgradable).
11
- *
12
- * This program is distributed in the hope that it will be useful,
13
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
14
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
- * GNU General Public License for more details.
16
- *
17
- * You should have received a copy of the GNU General Public License
18
- * along with this program; if not, write to the Free Software
19
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20
- *
21
- * Copyright (c) 2019 Open Assessment Technologies SA ;
22
- */
23
- /**
24
- * @typedef {Object} validationRule Defines a validation rule to apply on a value.
25
- * @property {String} id - The validation identifier
26
- * @property {RegExp|Function|String|String[]} predicate - The validation rule to apply on the value.
27
- * It could be either a RegExp or a Function.
28
- * The function must return a boolean value,
29
- * it can wrap it in a Promise too.
30
- * @property {String} [message] - The message returned in case of failed validation
31
- * @property {Number} [precedence] - The precedence order for sorting
32
- */
6
+ function _unsupportedIterableToArray(o, minLen) {
7
+ if (!o) return;
8
+ if (typeof o === "string") return _arrayLikeToArray(o, minLen);
9
+ var n = Object.prototype.toString.call(o).slice(8, -1);
10
+ if (n === "Object" && o.constructor) n = o.constructor.name;
11
+ if (n === "Map" || n === "Set") return Array.from(o);
12
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
13
+ }
33
14
 
34
- /**
35
- * @typedef {Object} validatorConfig Defines the config entries available to setup a form widget validator
36
- * @property {validationRule[]} validations - The list of validations to apply
37
- * @property {String} defaultMessage - The default message returned when a validation fails and no message is set
38
- */
15
+ function _arrayLikeToArray(arr, len) {
16
+ if (len == null || len > arr.length) len = arr.length;
39
17
 
40
- /**
41
- * Defaults config for the validator
42
- * @type {validatorConfig}
43
- */
18
+ for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
44
19
 
45
- const defaults = {
46
- defaultMessage: __('Invalid input')
47
- };
48
- /**
49
- * Validates a value
50
- * @param {String} value
51
- * @param {validationRule} validation
52
- * @returns {Boolean|Promise}
53
- */
20
+ return arr2;
21
+ }
22
+
23
+ function _createForOfIteratorHelper(o, allowArrayLike) {
24
+ var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
54
25
 
55
- function validateValue(value, validation) {
56
- if (validation.predicate instanceof RegExp) {
57
- return validation.predicate.test(value);
58
- } else if (_.isFunction(validation.predicate)) {
59
- return validation.predicate(value);
60
- } else if (_.isArray(validation.predicate)) {
61
- return _.indexOf(validation.predicate, value) > -1;
26
+ if (!it) {
27
+ if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
28
+ if (it) o = it;
29
+ var i = 0;
30
+
31
+ var F = function () {};
32
+
33
+ return {
34
+ s: F,
35
+ n: function () {
36
+ if (i >= o.length) return {
37
+ done: true
38
+ };
39
+ return {
40
+ done: false,
41
+ value: o[i++]
42
+ };
43
+ },
44
+ e: function (e) {
45
+ throw e;
46
+ },
47
+ f: F
48
+ };
62
49
  }
63
50
 
64
- return validation.predicate === value;
51
+ throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
65
52
  }
66
- /**
67
- * Compares validation rules
68
- * @param {validationRule} a
69
- * @param {validationRule} b
70
- * @returns {Number}
71
- */
72
53
 
54
+ var normalCompletion = true,
55
+ didErr = false,
56
+ err;
57
+ return {
58
+ s: function () {
59
+ it = it.call(o);
60
+ },
61
+ n: function () {
62
+ var step = it.next();
63
+ normalCompletion = step.done;
64
+ return step;
65
+ },
66
+ e: function (e) {
67
+ didErr = true;
68
+ err = e;
69
+ },
70
+ f: function () {
71
+ try {
72
+ if (!normalCompletion && it.return != null) it.return();
73
+ } finally {
74
+ if (didErr) throw err;
75
+ }
76
+ }
77
+ };
78
+ }
79
+
80
+ /**
81
+ * @typedef {Object} validationRule Defines a validation rule to apply on a value.
82
+ * @property {String} id - The validation identifier
83
+ * @property {RegExp|Function|String|String[]} predicate - The validation rule to apply on the value.
84
+ * It could be either a RegExp or a Function.
85
+ * The function must return a boolean value,
86
+ * it can wrap it in a Promise too.
87
+ * @property {String} [message] - The message returned in case of failed validation
88
+ * @property {Number} [precedence] - The precedence order for sorting
89
+ */
90
+
91
+ /**
92
+ * @typedef {Object} validatorConfig Defines the config entries available to setup a form widget validator
93
+ * @property {validationRule[]} validations - The list of validations to apply
94
+ * @property {String} defaultMessage - The default message returned when a validation fails and no message is set
95
+ */
96
+
97
+ /**
98
+ * Defaults config for the validator
99
+ * @type {validatorConfig}
100
+ */
73
101
 
74
- function compareRule(a, b) {
75
- return (a && a.precedence || 0) - (b && b.precedence || 0);
102
+ var defaults = {
103
+ defaultMessage: __('Invalid input')
104
+ };
105
+ /**
106
+ * Validates a value
107
+ * @param {String} value
108
+ * @param {validationRule} validation
109
+ * @returns {Boolean|Promise}
110
+ */
111
+
112
+ function validateValue(value, validation) {
113
+ if (validation.predicate instanceof RegExp) {
114
+ return validation.predicate.test(value);
115
+ } else if (_.isFunction(validation.predicate)) {
116
+ return validation.predicate(value);
117
+ } else if (_.isArray(validation.predicate)) {
118
+ return _.indexOf(validation.predicate, value) > -1;
76
119
  }
120
+
121
+ return validation.predicate === value;
122
+ }
123
+ /**
124
+ * Compares validation rules
125
+ * @param {validationRule} a
126
+ * @param {validationRule} b
127
+ * @returns {Number}
128
+ */
129
+
130
+
131
+ function compareRule(a, b) {
132
+ return (a && a.precedence || 0) - (b && b.precedence || 0);
133
+ }
134
+ /**
135
+ * Creates a simple form widget's validator.
136
+ * It manages and applies a collection of validation rules on a value.
137
+ *
138
+ * @example
139
+ * const validator = validatorFactory({
140
+ * defaultMessage: 'An error occurred!',
141
+ * validations: [{
142
+ * id: 'numeric',
143
+ * message: 'This field must be numerical',
144
+ * predicate: /^\d+$/,
145
+ * precedence: 2
146
+ * }, {
147
+ * id: 'required',
148
+ * message: 'This field is required',
149
+ * predicate: value => value.length > 0,
150
+ * precedence: 1
151
+ * }, {
152
+ * id: 'domain',
153
+ * predicate: value => (parseInt(value, 10) || 0) <= 10,
154
+ * precedence: 3
155
+ * }]
156
+ * });
157
+ *
158
+ * validator.validate('100')
159
+ * .then(() => {
160
+ * // ...
161
+ * })
162
+ * .catch(messages => {
163
+ * // ...
164
+ * });
165
+ *
166
+ * @param {validatorConfig} config
167
+ * @param {validationRule[]} [config.validations] - The list of validation rules to apply
168
+ * @param {String} [config.defaultMessage] - The default message returned when a validation fails and no message is set
169
+ * @returns {validator}
170
+ */
171
+
172
+
173
+ function validatorFactory(config) {
174
+ var validations = new Map();
77
175
  /**
78
- * Creates a simple form widget's validator.
79
- * It manages and applies a collection of validation rules on a value.
80
- *
81
- * @example
82
- * const validator = validatorFactory({
83
- * defaultMessage: 'An error occurred!',
84
- * validations: [{
85
- * id: 'numeric',
86
- * message: 'This field must be numerical',
87
- * predicate: /^\d+$/,
88
- * precedence: 2
89
- * }, {
90
- * id: 'required',
91
- * message: 'This field is required',
92
- * predicate: value => value.length > 0,
93
- * precedence: 1
94
- * }, {
95
- * id: 'domain',
96
- * predicate: value => (parseInt(value, 10) || 0) <= 10,
97
- * precedence: 3
98
- * }]
99
- * });
100
- *
101
- * validator.validate('100')
102
- * .then(() => {
103
- * // ...
104
- * })
105
- * .catch(messages => {
106
- * // ...
107
- * });
108
- *
109
- * @param {validatorConfig} config
110
- * @param {validationRule[]} [config.validations] - The list of validation rules to apply
111
- * @param {String} [config.defaultMessage] - The default message returned when a validation fails and no message is set
112
- * @returns {validator}
176
+ * @typedef {Object} validator
113
177
  */
114
178
 
115
-
116
- function validatorFactory(config) {
117
- const validations = new Map();
179
+ var validator = {
118
180
  /**
119
- * @typedef {Object} validator
181
+ * Runs all validation rules on a value
182
+ * @param {String} value
183
+ * @returns {Promise} Will provide the list of error messages if the validation failed.
120
184
  */
121
-
122
- const validator = {
123
- /**
124
- * Runs all validation rules on a value
125
- * @param {String} value
126
- * @returns {Promise} Will provide the list of error messages if the validation failed.
127
- */
128
- validate(value) {
129
- const rules = this.getValidations();
130
- rules.sort(compareRule);
131
- return Promise.all(rules.map(validation => Promise.resolve(validateValue(value, validation)))).then(results => {
132
- const errors = _.reduce(results, (list, result, index) => {
133
- if (!result) {
134
- list.push(rules[index].message || config.defaultMessage);
135
- }
136
-
137
- return list;
138
- }, []);
139
-
140
- if (errors.length) {
141
- return Promise.reject(errors);
185
+ validate: function validate(value) {
186
+ var rules = this.getValidations();
187
+ rules.sort(compareRule);
188
+ return Promise.all(rules.map(function (validation) {
189
+ return Promise.resolve(validateValue(value, validation));
190
+ })).then(function (results) {
191
+ var errors = _.reduce(results, function (list, result, index) {
192
+ if (!result) {
193
+ list.push(rules[index].message || config.defaultMessage);
142
194
  }
143
- });
144
- },
145
-
146
- /**
147
- * Adds a validation rule
148
- * @param {validationRule} validation
149
- * @returns {validator}
150
- * @throws {TypeError} if the validation object is not valid
151
- */
152
- addValidation(validation) {
153
- if (!_.isPlainObject(validation)) {
154
- throw new TypeError('The validation must be an object');
155
- }
156
195
 
157
- if (!_.isString(validation.id) || !validation.id) {
158
- throw new TypeError('The validation must contain an identifier');
159
- }
196
+ return list;
197
+ }, []);
160
198
 
161
- if (!_.isFunction(validation.predicate) && !_.isRegExp(validation.predicate) && !_.isString(validation.predicate) && !_.isArray(validation.predicate)) {
162
- throw new TypeError('The validation must provide a predicate');
199
+ if (errors.length) {
200
+ return Promise.reject(errors);
163
201
  }
202
+ });
203
+ },
204
+
205
+ /**
206
+ * Adds a validation rule
207
+ * @param {validationRule} validation
208
+ * @returns {validator}
209
+ * @throws {TypeError} if the validation object is not valid
210
+ */
211
+ addValidation: function addValidation(validation) {
212
+ if (!_.isPlainObject(validation)) {
213
+ throw new TypeError('The validation must be an object');
214
+ }
215
+
216
+ if (!_.isString(validation.id) || !validation.id) {
217
+ throw new TypeError('The validation must contain an identifier');
218
+ }
219
+
220
+ if (!_.isFunction(validation.predicate) && !_.isRegExp(validation.predicate) && !_.isString(validation.predicate) && !_.isArray(validation.predicate)) {
221
+ throw new TypeError('The validation must provide a predicate');
222
+ }
223
+
224
+ validations.set(validation.id, validation);
225
+ return this;
226
+ },
227
+
228
+ /**
229
+ * Gets a validation rule by its identifier
230
+ * @param {String} id
231
+ * @returns {validationRule|null}
232
+ */
233
+ getValidation: function getValidation(id) {
234
+ return validations.get(id) || null;
235
+ },
164
236
 
165
- validations.set(validation.id, validation);
166
- return this;
167
- },
168
-
169
- /**
170
- * Gets a validation rule by its identifier
171
- * @param {String} id
172
- * @returns {validationRule|null}
173
- */
174
- getValidation(id) {
175
- return validations.get(id) || null;
176
- },
177
-
178
- /**
179
- * Gets the list of validation rules.
180
- * @returns {validationRule[]}
181
- */
182
- getValidations() {
183
- const list = [];
184
-
185
- for (let validation of validations.values()) {
237
+ /**
238
+ * Gets the list of validation rules.
239
+ * @returns {validationRule[]}
240
+ */
241
+ getValidations: function getValidations() {
242
+ var list = [];
243
+
244
+ var _iterator = _createForOfIteratorHelper(validations.values()),
245
+ _step;
246
+
247
+ try {
248
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
249
+ var validation = _step.value;
186
250
  list.push(validation);
187
251
  }
188
-
189
- return list;
190
- },
191
-
192
- /**
193
- * Removes a validation rule
194
- * @param {String} id
195
- * @returns {validator}
196
- */
197
- removeValidation(id) {
198
- validations.delete(id);
199
- return this;
200
- },
201
-
202
- /**
203
- * Removes all validation rules
204
- * @returns {validator}
205
- */
206
- removeValidations() {
207
- validations.clear();
208
- return this;
252
+ } catch (err) {
253
+ _iterator.e(err);
254
+ } finally {
255
+ _iterator.f();
209
256
  }
210
257
 
211
- };
212
- config = _.defaults(_.clone(config) || {}, defaults);
258
+ return list;
259
+ },
260
+
261
+ /**
262
+ * Removes a validation rule
263
+ * @param {String} id
264
+ * @returns {validator}
265
+ */
266
+ removeValidation: function removeValidation(id) {
267
+ validations.delete(id);
268
+ return this;
269
+ },
270
+
271
+ /**
272
+ * Removes all validation rules
273
+ * @returns {validator}
274
+ */
275
+ removeValidations: function removeValidations() {
276
+ validations.clear();
277
+ return this;
278
+ }
279
+ };
280
+ config = _.defaults(_.clone(config) || {}, defaults);
213
281
 
214
- _.forEach(config.validations, validator.addValidation);
282
+ _.forEach(config.validations, validator.addValidation);
215
283
 
216
- return validator;
217
- }
284
+ return validator;
285
+ }
218
286
 
219
- return validatorFactory;
287
+ return validatorFactory;
220
288
 
221
289
  });
@@ -27,7 +27,7 @@ define(function () { 'use strict';
27
27
  * Defines the URI of each available widget
28
28
  * @type {Object}
29
29
  */
30
- const widgetDefinitions = {
30
+ var widgetDefinitions = {
31
31
  TEXTBOX: 'http://www.tao.lu/datatypes/WidgetDefinitions.rdf#TextBox',
32
32
  TEXTAREA: 'http://www.tao.lu/datatypes/WidgetDefinitions.rdf#TextArea',
33
33
  HIDDEN: 'http://www.tao.lu/datatypes/WidgetDefinitions.rdf#Hidden',