@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
package/dist/component.js CHANGED
@@ -1,521 +1,512 @@
1
1
  define(['jquery', 'lodash', 'core/eventifier', 'handlebars', 'i18n', 'lib/dompurify/purify', 'css!ui/component/css/components.css'], function ($$1, _, eventifier, Handlebars, __, DOMPurify, components_css) { 'use strict';
2
2
 
3
- $$1 = $$1 && Object.prototype.hasOwnProperty.call($$1, 'default') ? $$1['default'] : $$1;
4
- _ = _ && Object.prototype.hasOwnProperty.call(_, 'default') ? _['default'] : _;
5
- eventifier = eventifier && Object.prototype.hasOwnProperty.call(eventifier, 'default') ? eventifier['default'] : eventifier;
6
- Handlebars = Handlebars && Object.prototype.hasOwnProperty.call(Handlebars, 'default') ? Handlebars['default'] : Handlebars;
7
- __ = __ && Object.prototype.hasOwnProperty.call(__, 'default') ? __['default'] : __;
8
- DOMPurify = DOMPurify && Object.prototype.hasOwnProperty.call(DOMPurify, 'default') ? DOMPurify['default'] : DOMPurify;
9
-
3
+ $$1 = $$1 && Object.prototype.hasOwnProperty.call($$1, 'default') ? $$1['default'] : $$1;
4
+ _ = _ && Object.prototype.hasOwnProperty.call(_, 'default') ? _['default'] : _;
5
+ eventifier = eventifier && Object.prototype.hasOwnProperty.call(eventifier, 'default') ? eventifier['default'] : eventifier;
6
+ Handlebars = Handlebars && Object.prototype.hasOwnProperty.call(Handlebars, 'default') ? Handlebars['default'] : Handlebars;
7
+ __ = __ && Object.prototype.hasOwnProperty.call(__, 'default') ? __['default'] : __;
8
+ DOMPurify = DOMPurify && Object.prototype.hasOwnProperty.call(DOMPurify, 'default') ? DOMPurify['default'] : DOMPurify;
9
+
10
+ function _typeof(obj) {
11
+ "@babel/helpers - typeof";
12
+
13
+ return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) {
14
+ return typeof obj;
15
+ } : function (obj) {
16
+ return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
17
+ }, _typeof(obj);
18
+ }
19
+
20
+ function Helpers0 (hb) {
21
+ //register a i18n helper
22
+ hb.registerHelper('__', function (key) {
23
+ return __(key);
24
+ });
10
25
  /**
11
- * This program is free software; you can redistribute it and/or
12
- * modify it under the terms of the GNU General Public License
13
- * as published by the Free Software Foundation; under version 2
14
- * of the License (non-upgradable).
15
- *
16
- * This program is distributed in the hope that it will be useful,
17
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
18
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
- * GNU General Public License for more details.
20
- *
21
- * You should have received a copy of the GNU General Public License
22
- * along with this program; if not, write to the Free Software
23
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
24
- *
25
- * Copyright (c) 2013-2019 (original work) Open Assessment Technologies SA (under the project TAO-PRODUCT);
26
+ * Register dompurify helper
26
27
  *
28
+ * https://github.com/cure53/DOMPurify
29
+ * with config SAFE_FOR_TEMPLATES: true
30
+ * to make output safe for template systems
31
+ */
32
+
33
+ hb.registerHelper('dompurify', function (context) {
34
+ return DOMPurify.sanitize(context);
35
+ });
36
+ /**
37
+ * Register join helper
27
38
  *
39
+ * Example :
40
+ * var values = {a:v1, b:v2, c:v3};
41
+ * Using {{{join attributes '=' ' ' '"'}}} will return : a="v1" b="v2" c="v3"
42
+ * Using {{{join values null ' or ' '*'}}} will return : *v1* or *v2* or *v3*
28
43
  */
29
- function Helpers0 (hb) {
30
- //register a i18n helper
31
- hb.registerHelper('__', function (key) {
32
- return __(key);
33
- });
34
- /**
35
- * Register dompurify helper
36
- *
37
- * https://github.com/cure53/DOMPurify
38
- * with config SAFE_FOR_TEMPLATES: true
39
- * to make output safe for template systems
40
- */
41
44
 
42
- hb.registerHelper('dompurify', function (context) {
43
- return DOMPurify.sanitize(context);
44
- });
45
- /**
46
- * Register join helper
47
- *
48
- * Example :
49
- * var values = {a:v1, b:v2, c:v3};
50
- * Using {{{join attributes '=' ' ' '"'}}} will return : a="v1" b="v2" c="v3"
51
- * Using {{{join values null ' or ' '*'}}} will return : *v1* or *v2* or *v3*
52
- */
45
+ hb.registerHelper('join', function (arr, keyValueGlue, fragmentGlue, wrapper) {
46
+ var fragments = [];
47
+ keyValueGlue = typeof keyValueGlue === 'string' ? keyValueGlue : undefined;
48
+ fragmentGlue = typeof fragmentGlue === 'string' ? fragmentGlue : ' ';
49
+ wrapper = typeof wrapper === 'string' ? wrapper : '"';
53
50
 
54
- hb.registerHelper('join', function (arr, keyValueGlue, fragmentGlue, wrapper) {
55
- var fragments = [];
56
- keyValueGlue = typeof keyValueGlue === 'string' ? keyValueGlue : undefined;
57
- fragmentGlue = typeof fragmentGlue === 'string' ? fragmentGlue : ' ';
58
- wrapper = typeof wrapper === 'string' ? wrapper : '"';
59
-
60
- _.forIn(arr, function (value, key) {
61
- var fragment = '';
62
-
63
- if (value !== null || value !== undefined) {
64
- if (typeof value === 'boolean') {
65
- value = value ? 'true' : 'false';
66
- } else if (typeof value === 'object') {
67
- value = _.values(value).join(' ');
68
- }
69
- } else {
70
- value = '';
71
- }
51
+ _.forIn(arr, function (value, key) {
52
+ var fragment = '';
72
53
 
73
- if (keyValueGlue !== undefined) {
74
- fragment += key + keyValueGlue;
54
+ if (value !== null || value !== undefined) {
55
+ if (typeof value === 'boolean') {
56
+ value = value ? 'true' : 'false';
57
+ } else if (_typeof(value) === 'object') {
58
+ value = _.values(value).join(' ');
75
59
  }
60
+ } else {
61
+ value = '';
62
+ }
76
63
 
77
- fragment += wrapper + value + wrapper;
78
- fragments.push(fragment);
79
- });
64
+ if (keyValueGlue !== undefined) {
65
+ fragment += key + keyValueGlue;
66
+ }
80
67
 
81
- return fragments.join(fragmentGlue);
82
- }); //register a classic "for loop" helper
83
- //it also adds a local variable "i" as the index in each iteration loop
68
+ fragment += wrapper + value + wrapper;
69
+ fragments.push(fragment);
70
+ });
84
71
 
85
- hb.registerHelper('for', function (startIndex, stopIndex, increment, options) {
86
- var ret = '';
87
- startIndex = parseInt(startIndex);
88
- stopIndex = parseInt(stopIndex);
89
- increment = parseInt(increment);
72
+ return fragments.join(fragmentGlue);
73
+ }); //register a classic "for loop" helper
74
+ //it also adds a local variable "i" as the index in each iteration loop
90
75
 
91
- for (var i = startIndex; i < stopIndex; i += increment) {
92
- ret += options.fn(_.extend({}, this, {
93
- i: i
94
- }));
95
- }
76
+ hb.registerHelper('for', function (startIndex, stopIndex, increment, options) {
77
+ var ret = '';
78
+ startIndex = parseInt(startIndex);
79
+ stopIndex = parseInt(stopIndex);
80
+ increment = parseInt(increment);
96
81
 
97
- return ret;
98
- });
99
- hb.registerHelper('equal', function (var1, var2, options) {
100
- if (var1 == var2) {
101
- return options.fn(this);
102
- } else {
103
- return options.inverse(this);
104
- }
105
- }); // register a "get property" helper
106
- // it gets the named property from the provided context
82
+ for (var i = startIndex; i < stopIndex; i += increment) {
83
+ ret += options.fn(_.extend({}, this, {
84
+ i: i
85
+ }));
86
+ }
107
87
 
108
- hb.registerHelper('property', function (name, context) {
109
- return context[name] || '';
110
- }); // register an 'includes' helper
111
- // it checks if value is in array
88
+ return ret;
89
+ });
90
+ hb.registerHelper('equal', function (var1, var2, options) {
91
+ if (var1 == var2) {
92
+ return options.fn(this);
93
+ } else {
94
+ return options.inverse(this);
95
+ }
96
+ }); // register a "get property" helper
97
+ // it gets the named property from the provided context
112
98
 
113
- hb.registerHelper('includes', function (haystack, needle, options) {
114
- if (_.contains(haystack, needle)) {
115
- return options.fn(this);
116
- }
117
- });
118
- }
99
+ hb.registerHelper('property', function (name, context) {
100
+ return context[name] || '';
101
+ }); // register an 'includes' helper
102
+ // it checks if value is in array
103
+
104
+ hb.registerHelper('includes', function (haystack, needle, options) {
105
+ if (_.contains(haystack, needle)) {
106
+ return options.fn(this);
107
+ }
108
+ });
109
+ }
110
+
111
+ if (!Helpers0.__initialized) {
112
+ Helpers0(Handlebars);
113
+ Helpers0.__initialized = true;
114
+ }
115
+ var Template = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
116
+ this.compilerInfo = [4,'>= 1.0.0'];
117
+ helpers = this.merge(helpers, Handlebars.helpers);
118
+
119
+
120
+ return "<div class=\"component\"></div>";
121
+ });
122
+ function defaultTpl(data, options, asString) {
123
+ var html = Template(data, options);
124
+ return (asString || true) ? html : $(html);
125
+ }
126
+
127
+ /**
128
+ * This program is free software; you can redistribute it and/or
129
+ * modify it under the terms of the GNU General Public License
130
+ * as published by the Free Software Foundation; under version 2
131
+ * of the License (non-upgradable).
132
+ *
133
+ * This program is distributed in the hope that it will be useful,
134
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
135
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
136
+ * GNU General Public License for more details.
137
+ *
138
+ * You should have received a copy of the GNU General Public License
139
+ * along with this program; if not, write to the Free Software
140
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
141
+ *
142
+ * Copyright (c) 2015 (original work) Open Assessment Technologies SA ;
143
+ */
144
+ var _slice = [].slice;
145
+ /**
146
+ * Handles the resize of the component regarding the config set
147
+ */
148
+
149
+ function delegatedResize() {
150
+ var width = this.config.width;
151
+ var height = this.config.height;
152
+ var $container = this.getContainer();
153
+ var $element = this.getElement();
154
+
155
+ if ($container) {
156
+ if ('auto' === width) {
157
+ width = $container.width();
158
+ }
119
159
 
120
- if (!Helpers0.__initialized) {
121
- Helpers0(Handlebars);
122
- Helpers0.__initialized = true;
160
+ if ('auto' === height) {
161
+ height = $container.height();
162
+ }
123
163
  }
124
- var Template = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
125
- this.compilerInfo = [4,'>= 1.0.0'];
126
- helpers = this.merge(helpers, Handlebars.helpers);
127
164
 
165
+ if ($element) {
166
+ if (_.isNumber(width)) {
167
+ $element.css({
168
+ width: "".concat(width, "px")
169
+ });
170
+ }
128
171
 
129
- return "<div class=\"component\"></div>";
130
- });
131
- function defaultTpl(data, options, asString) {
132
- var html = Template(data, options);
133
- return (asString || true) ? html : $(html);
172
+ if (_.isNumber(height)) {
173
+ $element.css({
174
+ height: "".concat(height, "px")
175
+ });
176
+ }
134
177
  }
135
178
 
136
- /**
137
- * This program is free software; you can redistribute it and/or
138
- * modify it under the terms of the GNU General Public License
139
- * as published by the Free Software Foundation; under version 2
140
- * of the License (non-upgradable).
141
- *
142
- * This program is distributed in the hope that it will be useful,
143
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
144
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
145
- * GNU General Public License for more details.
146
- *
147
- * You should have received a copy of the GNU General Public License
148
- * along with this program; if not, write to the Free Software
149
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
150
- *
151
- * Copyright (c) 2015 (original work) Open Assessment Technologies SA ;
152
- */
153
- var _slice = [].slice;
154
- /**
155
- * Handles the resize of the component regarding the config set
156
- */
157
-
158
- function delegatedResize() {
159
- let width = this.config.width;
160
- let height = this.config.height;
161
- const $container = this.getContainer();
162
- const $element = this.getElement();
179
+ this._width = width;
180
+ this._height = height;
181
+ }
182
+ /**
183
+ * Builds a component from a base skeleton
184
+ * @param {Object} [specs] - Some extra methods to assign to the component instance
185
+ * @param {Object} [defaults] - Some default config entries
186
+ * @returns {component}
187
+ */
163
188
 
164
- if ($container) {
165
- if ('auto' === width) {
166
- width = $container.width();
167
- }
168
189
 
169
- if ('auto' === height) {
170
- height = $container.height();
171
- }
172
- }
190
+ function component(specs, defaults) {
191
+ // the template is a private property
192
+ var componentTpl = defaultTpl; //contains the states of the components
173
193
 
174
- if ($element) {
175
- if (_.isNumber(width)) {
176
- $element.css({
177
- width: `${width}px`
178
- });
179
- }
194
+ var componentState = {}; //where the component is added
180
195
 
181
- if (_.isNumber(height)) {
182
- $element.css({
183
- height: `${height}px`
184
- });
185
- }
186
- }
196
+ var $container; // base skeleton
187
197
 
188
- this._width = width;
189
- this._height = height;
190
- }
191
198
  /**
192
- * Builds a component from a base skeleton
193
- * @param {Object} [specs] - Some extra methods to assign to the component instance
194
- * @param {Object} [defaults] - Some default config entries
195
- * @returns {component}
199
+ * @typedef {Object} Component
196
200
  */
197
201
 
202
+ var componentApi = {
203
+ /**
204
+ * Initializes the component
205
+ * @param {Object} config
206
+ * @param {jQuery|HTMLElement|String} [config.renderTo] - An optional container in which renders the component
207
+ * @param {Boolean} [config.replace] - When the component is appended to its container, clears the place before
208
+ * @param {Number|String} [config.width] - The width in pixels, or 'auto' to use the container's width
209
+ * @param {Number|String} [config.height] - The height in pixels, or 'auto' to use the container's height
210
+ * @returns {component}
211
+ * @fires component#init
212
+ */
213
+ init: function init(config) {
214
+ this.config = _(config || {}).omit(function (value) {
215
+ return value === null || typeof value === 'undefined';
216
+ }).defaults(defaults || {}).value();
217
+ componentState = {};
218
+ /**
219
+ * Executes extra init tasks
220
+ * @event component#init
221
+ */
198
222
 
199
- function component(specs, defaults) {
200
- // the template is a private property
201
- var componentTpl = defaultTpl; //contains the states of the components
223
+ this.trigger('init');
202
224
 
203
- var componentState = {}; //where the component is added
225
+ if (this.config.renderTo) {
226
+ $container = $$1(this.config.renderTo);
227
+ this.render();
228
+ }
204
229
 
205
- var $container; // base skeleton
230
+ return this;
231
+ },
206
232
 
207
233
  /**
208
- * @typedef {Object} Component
234
+ * Uninstalls the component
235
+ * @returns {component}
236
+ * @fires component#destroy
209
237
  */
210
-
211
- var componentApi = {
238
+ destroy: function destroy() {
212
239
  /**
213
- * Initializes the component
214
- * @param {Object} config
215
- * @param {jQuery|HTMLElement|String} [config.renderTo] - An optional container in which renders the component
216
- * @param {Boolean} [config.replace] - When the component is appended to its container, clears the place before
217
- * @param {Number|String} [config.width] - The width in pixels, or 'auto' to use the container's width
218
- * @param {Number|String} [config.height] - The height in pixels, or 'auto' to use the container's height
219
- * @returns {component}
220
- * @fires component#init
240
+ * Executes extra destroy tasks
241
+ * @event component#destroy
221
242
  */
222
- init: function init(config) {
223
- this.config = _(config || {}).omit(function (value) {
224
- return value === null || typeof value === 'undefined';
225
- }).defaults(defaults || {}).value();
226
- componentState = {};
227
- /**
228
- * Executes extra init tasks
229
- * @event component#init
230
- */
231
-
232
- this.trigger('init');
233
-
234
- if (this.config.renderTo) {
235
- $container = $$1(this.config.renderTo);
236
- this.render();
237
- }
243
+ this.trigger('destroy');
238
244
 
239
- return this;
240
- },
245
+ if (this.$component) {
246
+ this.$component.remove();
247
+ }
241
248
 
242
- /**
243
- * Uninstalls the component
244
- * @returns {component}
245
- * @fires component#destroy
246
- */
247
- destroy: function destroy() {
248
- /**
249
- * Executes extra destroy tasks
250
- * @event component#destroy
251
- */
252
- this.trigger('destroy');
253
-
254
- if (this.$component) {
255
- this.$component.remove();
249
+ this.$component = null;
250
+ componentState = {};
251
+ return this;
252
+ },
253
+
254
+ /**
255
+ * Renders the component
256
+ * @param {jQuery|HTMLElement|String} [container] - where the component is rendered
257
+ * @returns {component}
258
+ * @fires component#render
259
+ */
260
+ render: function render(container) {
261
+ if (container) {
262
+ $container = $$1(container);
263
+ }
264
+
265
+ this.$component = $$1(componentTpl(this.config));
266
+
267
+ if ($container) {
268
+ if (this.config.replace) {
269
+ $container.empty();
256
270
  }
257
271
 
258
- this.$component = null;
259
- componentState = {};
260
- return this;
261
- },
272
+ $container.append(this.$component);
273
+ }
262
274
 
275
+ this.setState('rendered', true);
276
+ delegatedResize.call(this);
263
277
  /**
264
- * Renders the component
265
- * @param {jQuery|HTMLElement|String} [container] - where the component is rendered
266
- * @returns {component}
267
- * @fires component#render
278
+ * Executes extra render tasks
279
+ * @event component#render
280
+ * @param {jQuery} $component
268
281
  */
269
- render: function render(container) {
270
- if (container) {
271
- $container = $$1(container);
272
- }
273
-
274
- this.$component = $$1(componentTpl(this.config));
275
282
 
276
- if ($container) {
277
- if (this.config.replace) {
278
- $container.empty();
279
- }
283
+ this.trigger('render', this.$component);
284
+ return this;
285
+ },
280
286
 
281
- $container.append(this.$component);
282
- }
287
+ /**
288
+ * Sets the component's size
289
+ * @param {Number|String} width - The width in pixels, or 'auto' to use the container's width
290
+ * @param {Number|String} height - The height in pixels, or 'auto' to use the container's height
291
+ * @returns {component}
292
+ * @fires component#setsize
293
+ */
294
+ setSize: function setSize(width, height) {
295
+ this.config.width = width;
296
+ this.config.height = height;
283
297
 
284
- this.setState('rendered', true);
298
+ if (this.is('rendered')) {
285
299
  delegatedResize.call(this);
286
- /**
287
- * Executes extra render tasks
288
- * @event component#render
289
- * @param {jQuery} $component
290
- */
291
-
292
- this.trigger('render', this.$component);
293
- return this;
294
- },
295
-
300
+ }
296
301
  /**
297
- * Sets the component's size
298
- * @param {Number|String} width - The width in pixels, or 'auto' to use the container's width
299
- * @param {Number|String} height - The height in pixels, or 'auto' to use the container's height
300
- * @returns {component}
301
- * @fires component#setsize
302
+ * Executes extra resize tasks
303
+ * @event component#setsize
304
+ * @param {Number|String} width
305
+ * @param {Number|String} height
302
306
  */
303
- setSize: function setSize(width, height) {
304
- this.config.width = width;
305
- this.config.height = height;
306
307
 
307
- if (this.is('rendered')) {
308
- delegatedResize.call(this);
309
- }
310
- /**
311
- * Executes extra resize tasks
312
- * @event component#setsize
313
- * @param {Number|String} width
314
- * @param {Number|String} height
315
- */
316
308
 
309
+ this.trigger('setsize', width, height);
310
+ return this;
311
+ },
317
312
 
318
- this.trigger('setsize', width, height);
319
- return this;
320
- },
313
+ /**
314
+ * Get the component's size
315
+ * @returns {Object}
316
+ * @fires component#setsize
317
+ */
318
+ getSize: function getSize() {
319
+ if (this.is('rendered')) {
320
+ return {
321
+ width: this._width || 0,
322
+ height: this._height || 0
323
+ };
324
+ }
325
+ },
321
326
 
322
- /**
323
- * Get the component's size
324
- * @returns {Object}
325
- * @fires component#setsize
326
- */
327
- getSize: function getSize() {
328
- if (this.is('rendered')) {
329
- return {
330
- width: this._width || 0,
331
- height: this._height || 0
332
- };
333
- }
334
- },
327
+ /**
328
+ * Get the component rendered size
329
+ * @param {Boolean} includeMargin - include the margins in the returned size
330
+ * @returns {{width: number, height: number}}
331
+ */
332
+ getOuterSize: function getOuterSize(includeMargin) {
333
+ var $component;
334
+
335
+ if (this.is('rendered')) {
336
+ $component = this.getElement();
337
+ includeMargin = includeMargin || false;
338
+ return {
339
+ width: Math.round($component.outerWidth(includeMargin)),
340
+ height: Math.round($component.outerHeight(includeMargin))
341
+ };
342
+ }
343
+ },
335
344
 
345
+ /**
346
+ * Shows the component
347
+ * @returns {component}
348
+ * @fires component#show
349
+ */
350
+ show: function show() {
336
351
  /**
337
- * Get the component rendered size
338
- * @param {Boolean} includeMargin - include the margins in the returned size
339
- * @returns {{width: number, height: number}}
352
+ * Executes extra tasks on show
353
+ * @event component#show
354
+ * @param {component} component
340
355
  */
341
- getOuterSize: function getOuterSize(includeMargin) {
342
- var $component;
343
-
344
- if (this.is('rendered')) {
345
- $component = this.getElement();
346
- includeMargin = includeMargin || false;
347
- return {
348
- width: Math.round($component.outerWidth(includeMargin)),
349
- height: Math.round($component.outerHeight(includeMargin))
350
- };
351
- }
352
- },
356
+ this.trigger('show', this);
357
+ return this.setState('hidden', false);
358
+ },
353
359
 
360
+ /**
361
+ * Hides the component
362
+ * @returns {component}
363
+ * @fires component#hide
364
+ */
365
+ hide: function hide() {
354
366
  /**
355
- * Shows the component
356
- * @returns {component}
357
- * @fires component#show
367
+ * Executes extra tasks on hide
368
+ * @event component#hide
369
+ * @param {component} component
358
370
  */
359
- show: function show() {
360
- /**
361
- * Executes extra tasks on show
362
- * @event component#show
363
- * @param {component} component
364
- */
365
- this.trigger('show', this);
366
- return this.setState('hidden', false);
367
- },
371
+ this.trigger('hide', this);
372
+ return this.setState('hidden', true);
373
+ },
368
374
 
375
+ /**
376
+ * Enables the component
377
+ * @returns {component}
378
+ * @fires component#enable
379
+ */
380
+ enable: function enable() {
369
381
  /**
370
- * Hides the component
371
- * @returns {component}
372
- * @fires component#hide
382
+ * Executes extra tasks on enable
383
+ * @event component#enable
384
+ * @param {component} component
373
385
  */
374
- hide: function hide() {
375
- /**
376
- * Executes extra tasks on hide
377
- * @event component#hide
378
- * @param {component} component
379
- */
380
- this.trigger('hide', this);
381
- return this.setState('hidden', true);
382
- },
386
+ this.trigger('enable', this);
387
+ return this.setState('disabled', false);
388
+ },
383
389
 
390
+ /**
391
+ * Disables the component
392
+ * @returns {component}
393
+ * @fires component#disable
394
+ */
395
+ disable: function disable() {
384
396
  /**
385
- * Enables the component
386
- * @returns {component}
387
- * @fires component#enable
397
+ * Executes extra tasks on disable
398
+ * @event component#disable
399
+ * @param {component} component
388
400
  */
389
- enable: function enable() {
390
- /**
391
- * Executes extra tasks on enable
392
- * @event component#enable
393
- * @param {component} component
394
- */
395
- this.trigger('enable', this);
396
- return this.setState('disabled', false);
397
- },
401
+ this.trigger('disable', this);
402
+ return this.setState('disabled', true);
403
+ },
398
404
 
399
- /**
400
- * Disables the component
401
- * @returns {component}
402
- * @fires component#disable
403
- */
404
- disable: function disable() {
405
- /**
406
- * Executes extra tasks on disable
407
- * @event component#disable
408
- * @param {component} component
409
- */
410
- this.trigger('disable', this);
411
- return this.setState('disabled', true);
412
- },
405
+ /**
406
+ * Checks if the component has a particular state
407
+ * @param {String} state
408
+ * @returns {Boolean}
409
+ */
410
+ is: function is(state) {
411
+ return !!componentState[state];
412
+ },
413
413
 
414
- /**
415
- * Checks if the component has a particular state
416
- * @param {String} state
417
- * @returns {Boolean}
418
- */
419
- is: function is(state) {
420
- return !!componentState[state];
421
- },
414
+ /**
415
+ * Sets the component to a particular state
416
+ * @param {String} state
417
+ * @param {Boolean} flag
418
+ * @returns {component}
419
+ * @fires component#state
420
+ */
421
+ setState: function setState(state, flag) {
422
+ flag = !!flag;
423
+ componentState[state] = flag;
422
424
 
425
+ if (this.$component) {
426
+ this.$component.toggleClass(state, flag);
427
+ }
423
428
  /**
424
- * Sets the component to a particular state
429
+ * Executes extra tasks on state change
430
+ * @event component#state
425
431
  * @param {String} state
426
432
  * @param {Boolean} flag
427
- * @returns {component}
428
- * @fires component#state
433
+ * @param {component} component
429
434
  */
430
- setState: function setState(state, flag) {
431
- flag = !!flag;
432
- componentState[state] = flag;
433
435
 
434
- if (this.$component) {
435
- this.$component.toggleClass(state, flag);
436
- }
437
- /**
438
- * Executes extra tasks on state change
439
- * @event component#state
440
- * @param {String} state
441
- * @param {Boolean} flag
442
- * @param {component} component
443
- */
444
436
 
437
+ this.trigger('state', state, flag, this);
438
+ return this;
439
+ },
445
440
 
446
- this.trigger('state', state, flag, this);
447
- return this;
448
- },
441
+ /**
442
+ * Gets the underlying DOM element
443
+ * @returns {jQuery}
444
+ */
445
+ getContainer: function getContainer() {
446
+ return $container;
447
+ },
449
448
 
450
- /**
451
- * Gets the underlying DOM element
452
- * @returns {jQuery}
453
- */
454
- getContainer: function getContainer() {
455
- return $container;
456
- },
449
+ /**
450
+ * Gets the underlying DOM element
451
+ * @returns {jQuery}
452
+ */
453
+ getElement: function getElement() {
454
+ return this.$component;
455
+ },
457
456
 
458
- /**
459
- * Gets the underlying DOM element
460
- * @returns {jQuery}
461
- */
462
- getElement: function getElement() {
463
- return this.$component;
464
- },
457
+ /**
458
+ * Gets the template used to render this component
459
+ * @returns {Function}
460
+ */
461
+ getTemplate: function getTemplate() {
462
+ return componentTpl;
463
+ },
465
464
 
466
- /**
467
- * Gets the template used to render this component
468
- * @returns {Function}
469
- */
470
- getTemplate: function getTemplate() {
471
- return componentTpl;
472
- },
465
+ /**
466
+ * Sets the template used to render this component
467
+ * @param {Function} template
468
+ * @returns {componentApi}
469
+ * @fires component#template
470
+ */
471
+ setTemplate: function setTemplate(template) {
472
+ var tpl = template || defaultTpl;
473
+ componentTpl = tpl; // ensure the template is defined as a function
473
474
 
475
+ if (!_.isFunction(componentTpl)) {
476
+ componentTpl = function componentTpl() {
477
+ return tpl;
478
+ };
479
+ }
474
480
  /**
475
- * Sets the template used to render this component
476
- * @param {Function} template
477
- * @returns {componentApi}
478
- * @fires component#template
481
+ * Executes extra tasks on template change
482
+ * @event component#template
483
+ * @param {function} componentTpl
479
484
  */
480
- setTemplate: function setTemplate(template) {
481
- var tpl = template || defaultTpl;
482
- componentTpl = tpl; // ensure the template is defined as a function
483
-
484
- if (!_.isFunction(componentTpl)) {
485
- componentTpl = function () {
486
- return tpl;
487
- };
488
- }
489
- /**
490
- * Executes extra tasks on template change
491
- * @event component#template
492
- * @param {function} componentTpl
493
- */
494
485
 
495
486
 
496
- this.trigger('template', componentTpl);
497
- return this;
498
- },
487
+ this.trigger('template', componentTpl);
488
+ return this;
489
+ },
499
490
 
500
- /**
501
- * Get the component's configuration
502
- */
503
- getConfig: function getConfig() {
504
- return this.config || defaults || {};
505
- }
506
- }; // let's extend the instance with extra methods
507
-
508
- if (specs) {
509
- _(specs).functions().forEach(function (method) {
510
- componentApi[method] = function delegate() {
511
- return specs[method].apply(componentApi, _slice.call(arguments));
512
- };
513
- });
491
+ /**
492
+ * Get the component's configuration
493
+ */
494
+ getConfig: function getConfig() {
495
+ return this.config || defaults || {};
514
496
  }
497
+ }; // let's extend the instance with extra methods
515
498
 
516
- return eventifier(componentApi);
499
+ if (specs) {
500
+ _(specs).functions().forEach(function (method) {
501
+ componentApi[method] = function delegate() {
502
+ return specs[method].apply(componentApi, _slice.call(arguments));
503
+ };
504
+ });
517
505
  }
518
506
 
519
- return component;
507
+ return eventifier(componentApi);
508
+ }
509
+
510
+ return component;
520
511
 
521
512
  });