@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.
- package/dist/actionbar.js +386 -395
- package/dist/adder.js +21 -19
- package/dist/animable/absorbable/absorbable.js +204 -213
- package/dist/animable/absorbable/css/absorb.css +1 -0
- package/dist/animable/absorbable/css/absorb.css.map +1 -1
- package/dist/animable/pulsable/pulsable.js +168 -177
- package/dist/autocomplete/css/autocomplete.css +1 -0
- package/dist/autocomplete/css/autocomplete.css.map +1 -1
- package/dist/autocomplete.js +68 -66
- package/dist/badge/badge.js +188 -197
- package/dist/badge/css/badge.css +1 -0
- package/dist/badge/css/badge.css.map +1 -1
- package/dist/breadcrumbs.js +275 -284
- package/dist/btngrouper.js +5 -5
- package/dist/bulkActionPopup.js +490 -495
- package/dist/button.js +283 -291
- package/dist/cascadingComboBox.js +249 -258
- package/dist/ckeditor/ckConfigurator.js +26 -19
- package/dist/ckeditor/dtdHandler.js +11 -9
- package/dist/class/selector.js +441 -450
- package/dist/component/resizable.js +1 -1
- package/dist/component/windowed.js +285 -294
- package/dist/component.js +419 -428
- package/dist/contextualPopup.js +417 -426
- package/dist/dashboard.js +300 -309
- package/dist/datalist.js +753 -762
- package/dist/datatable/filterStrategy/multiple.js +1 -1
- package/dist/datatable/filterStrategy/single.js +1 -1
- package/dist/datatable.js +1527 -1550
- package/dist/dateRange/dateRange.js +393 -402
- package/dist/datetime/picker.js +665 -672
- package/dist/deleter.js +368 -377
- package/dist/destination/selector.js +286 -295
- package/dist/dialog/alert.js +3 -3
- package/dist/dialog/confirm.js +1 -1
- package/dist/dialog/confirmDelete.js +216 -225
- package/dist/dialog.js +650 -654
- package/dist/disabler.js +8 -8
- package/dist/documentViewer/providers/pdfViewer/fallback/viewer.js +166 -175
- package/dist/documentViewer/providers/pdfViewer/pdfjs/findBar.js +518 -527
- package/dist/documentViewer/providers/pdfViewer/pdfjs/pageView.js +380 -389
- package/dist/documentViewer/providers/pdfViewer/pdfjs/searchEngine.js +539 -548
- package/dist/documentViewer/providers/pdfViewer/pdfjs/viewer.js +369 -378
- package/dist/documentViewer/providers/pdfViewer.js +184 -193
- package/dist/documentViewer.js +292 -301
- package/dist/dropdown.js +383 -392
- package/dist/durationer.js +5 -5
- package/dist/dynamicComponent.js +597 -598
- package/dist/feedback.js +356 -362
- package/dist/figure/FigureStateActive.js +117 -108
- package/dist/filesender.js +2 -2
- package/dist/filter.js +230 -239
- package/dist/form/dropdownForm.js +355 -357
- package/dist/form/form.js +919 -690
- package/dist/form/simpleForm.js +1 -1
- package/dist/form/validator/renderer.js +233 -235
- package/dist/form/validator/validator.js +257 -189
- package/dist/form/widget/definitions.js +1 -1
- package/dist/form/widget/providers/checkBox.js +254 -259
- package/dist/form/widget/providers/comboBox.js +187 -192
- package/dist/form/widget/providers/default.js +8 -9
- package/dist/form/widget/providers/hidden.js +170 -179
- package/dist/form/widget/providers/hiddenBox.js +262 -267
- package/dist/form/widget/providers/radioBox.js +216 -225
- package/dist/form/widget/providers/textArea.js +187 -196
- package/dist/form/widget/providers/textBox.js +2 -3
- package/dist/form/widget/widget.js +473 -475
- package/dist/formValidator/formValidator.js +1 -1
- package/dist/formValidator/highlighters/message.js +1 -1
- package/dist/generis/form/form.js +314 -323
- package/dist/generis/validator/validator.js +209 -218
- package/dist/generis/widget/checkBox/checkBox.js +218 -227
- package/dist/generis/widget/comboBox/comboBox.js +179 -188
- package/dist/generis/widget/hiddenBox/hiddenBox.js +220 -229
- package/dist/generis/widget/textBox/textBox.js +169 -178
- package/dist/generis/widget/widget.js +246 -255
- package/dist/groupedComboBox.js +222 -231
- package/dist/groupvalidator.js +2 -2
- package/dist/highlighter.js +967 -958
- package/dist/image/ImgStateActive/helper.js +7 -5
- package/dist/image/ImgStateActive/initHelper.js +49 -43
- package/dist/image/ImgStateActive/initMediaEditor.js +24 -20
- package/dist/image/ImgStateActive/mediaSizer.js +14 -12
- package/dist/image/ImgStateActive.js +72 -70
- package/dist/incrementer.js +6 -6
- package/dist/inplacer.js +6 -6
- package/dist/itemButtonList/css/item-button-list.css +1 -0
- package/dist/itemButtonList/css/item-button-list.css.map +1 -1
- package/dist/itemButtonList.js +439 -435
- package/dist/keyNavigation/navigableDomElement.js +51 -38
- package/dist/keyNavigation/navigator.js +85 -70
- package/dist/listbox.js +460 -469
- package/dist/liststyler.js +8 -8
- package/dist/loadingButton/loadingButton.js +209 -218
- package/dist/lock.js +476 -485
- package/dist/login/login.js +475 -484
- package/dist/maths/calculator/basicCalculator.js +235 -244
- package/dist/maths/calculator/calculatorComponent.js +3 -3
- package/dist/maths/calculator/core/board.js +772 -781
- package/dist/maths/calculator/core/expression.js +476 -485
- package/dist/maths/calculator/core/labels.js +228 -237
- package/dist/maths/calculator/core/tokenizer.js +1 -1
- package/dist/maths/calculator/core/tokens.js +163 -170
- package/dist/maths/calculator/plugins/keyboard/templateKeyboard/templateKeyboard.js +244 -253
- package/dist/maths/calculator/plugins/screen/simpleScreen/simpleScreen.js +279 -288
- package/dist/maths/calculator/scientificCalculator.js +327 -336
- package/dist/mediaEditor/mediaEditorComponent.js +238 -245
- package/dist/mediaEditor/plugins/mediaAlignment/helper.js +7 -7
- package/dist/mediaEditor/plugins/mediaAlignment/mediaAlignmentComponent.js +229 -235
- package/dist/mediaEditor/plugins/mediaDimension/mediaDimensionComponent.js +580 -589
- package/dist/mediaplayer/players/html5.js +666 -675
- package/dist/mediaplayer/players/youtube.js +419 -424
- package/dist/mediaplayer/support.js +11 -10
- package/dist/mediaplayer/utils/reminder.js +14 -13
- package/dist/mediaplayer/utils/timeObserver.js +10 -11
- package/dist/mediaplayer/youtubeManager.js +164 -145
- package/dist/mediaplayer.js +1565 -1520
- package/dist/mediasizer.js +669 -678
- package/dist/modal.js +10 -17
- package/dist/pageSizeSelector.js +219 -228
- package/dist/pagination/providers/pages.js +280 -289
- package/dist/pagination/providers/simple.js +192 -201
- package/dist/previewer.js +30 -30
- package/dist/progressbar.js +4 -4
- package/dist/report.js +347 -356
- package/dist/resource/filters.js +271 -280
- package/dist/resource/list.js +1264 -1273
- package/dist/resource/selector.js +865 -874
- package/dist/resource/tree.js +1483 -1492
- package/dist/resourcemgr/fileBrowser.js +564 -569
- package/dist/resourcemgr/filePreview.js +16 -16
- package/dist/resourcemgr/fileSelector.js +515 -524
- package/dist/resourcemgr/util/updatePermissions.js +2 -2
- package/dist/resourcemgr.js +306 -315
- package/dist/searchModal/advancedSearch.js +796 -767
- package/dist/searchModal.js +114 -91
- package/dist/switch/switch.js +298 -307
- package/dist/tabs.js +598 -575
- package/dist/taskQueue/status.js +312 -321
- package/dist/taskQueue/table.js +375 -384
- package/dist/taskQueue/taskQueueModel.js +488 -472
- package/dist/taskQueueButton/taskable.js +264 -273
- package/dist/taskQueueButton/treeButton.js +189 -198
- package/dist/themeLoader.js +24 -23
- package/dist/themes.js +1 -1
- package/dist/toggler.js +3 -3
- package/dist/tooltip.js +295 -304
- package/dist/transformer.js +2 -2
- package/dist/tristateCheckboxGroup.js +311 -320
- package/dist/uploader.js +687 -696
- package/dist/validator/Report.js +1 -1
- package/dist/validator/Validator.js +3 -3
- package/dist/validator/validators.js +9 -9
- package/dist/validator.js +240 -230
- package/dist/waitForMedia.js +1 -1
- package/package.json +3 -3
- package/src/animable/absorbable/css/absorb.css +1 -0
- package/src/animable/absorbable/css/absorb.css.map +1 -1
- package/src/autocomplete/css/autocomplete.css +1 -0
- package/src/autocomplete/css/autocomplete.css.map +1 -1
- package/src/badge/css/badge.css +1 -0
- package/src/badge/css/badge.css.map +1 -1
- package/src/ckeditor/ckConfigurator.js +4 -0
- package/src/itemButtonList/css/item-button-list.css +1 -0
- package/src/itemButtonList/css/item-button-list.css.map +1 -1
- package/src/.DS_Store +0 -0
- package/src/css/basic.css +0 -7826
- package/src/css/basic.css.map +0 -1
- package/src/css/ckeditor/skins/tao/css/dialog.css +0 -950
- package/src/css/ckeditor/skins/tao/css/dialog.css.map +0 -1
- package/src/css/ckeditor/skins/tao/css/editor.css +0 -1850
- package/src/css/ckeditor/skins/tao/css/editor.css.map +0 -1
- package/src/scss/.DS_Store +0 -0
- package/src/scss/basic.scss +0 -16
- package/src/scss/ckeditor/skins/tao/scss/dialog.scss +0 -763
- package/src/scss/ckeditor/skins/tao/scss/editor.scss +0 -111
- package/src/scss/ckeditor/skins/tao/scss/inc/_ck-icons.scss +0 -59
- package/src/scss/ckeditor/skins/tao/scss/inc/_colorpanel.scss +0 -118
- package/src/scss/ckeditor/skins/tao/scss/inc/_elementspath.scss +0 -69
- package/src/scss/ckeditor/skins/tao/scss/inc/_mainui.scss +0 -194
- package/src/scss/ckeditor/skins/tao/scss/inc/_menu.scss +0 -181
- package/src/scss/ckeditor/skins/tao/scss/inc/_panel.scss +0 -200
- package/src/scss/ckeditor/skins/tao/scss/inc/_presets.scss +0 -32
- package/src/scss/ckeditor/skins/tao/scss/inc/_reset.scss +0 -101
- package/src/scss/ckeditor/skins/tao/scss/inc/_richcombo.scss +0 -213
- package/src/scss/ckeditor/skins/tao/scss/inc/_tao.scss +0 -59
- package/src/scss/ckeditor/skins/tao/scss/inc/_toolbar.scss +0 -301
- package/src/scss/font/source-sans-pro/source-sans-pro-italic.eot +0 -0
- package/src/scss/font/source-sans-pro/source-sans-pro-italic.eot.b64 +0 -1
- package/src/scss/font/source-sans-pro/source-sans-pro-italic.woff +0 -0
- package/src/scss/font/source-sans-pro/source-sans-pro-italic.woff.b64 +0 -1
- package/src/scss/font/source-sans-pro/source-sans-pro-regular.eot +0 -0
- package/src/scss/font/source-sans-pro/source-sans-pro-regular.eot.b64 +0 -1
- package/src/scss/font/source-sans-pro/source-sans-pro-regular.woff +0 -0
- package/src/scss/font/source-sans-pro/source-sans-pro-regular.woff.b64 +0 -1
- package/src/scss/font/source-sans-pro/source-sans-pro-semibold-italic.eot +0 -0
- package/src/scss/font/source-sans-pro/source-sans-pro-semibold-italic.eot.b64 +0 -1
- package/src/scss/font/source-sans-pro/source-sans-pro-semibold-italic.woff +0 -0
- package/src/scss/font/source-sans-pro/source-sans-pro-semibold-italic.woff.b64 +0 -1
- package/src/scss/font/source-sans-pro/source-sans-pro-semibold.eot +0 -0
- package/src/scss/font/source-sans-pro/source-sans-pro-semibold.eot.b64 +0 -1
- package/src/scss/font/source-sans-pro/source-sans-pro-semibold.woff +0 -0
- package/src/scss/font/source-sans-pro/source-sans-pro-semibold.woff.b64 +0 -1
- package/src/scss/font/tao/tao.eot +0 -0
- package/src/scss/font/tao/tao.svg +0 -235
- package/src/scss/font/tao/tao.ttf +0 -0
- package/src/scss/font/tao/tao.woff +0 -0
- package/src/scss/inc/_base.scss +0 -496
- package/src/scss/inc/_bootstrap.scss +0 -6
- package/src/scss/inc/_buttons.scss +0 -114
- package/src/scss/inc/_colors.scss +0 -88
- package/src/scss/inc/_feedback.scss +0 -150
- package/src/scss/inc/_flex-grid.scss +0 -15
- package/src/scss/inc/_fonts.scss +0 -4
- package/src/scss/inc/_forms.scss +0 -827
- package/src/scss/inc/_functions.scss +0 -283
- package/src/scss/inc/_grid.scss +0 -66
- package/src/scss/inc/_jquery.nouislider.scss +0 -254
- package/src/scss/inc/_normalize.scss +0 -528
- package/src/scss/inc/_report.scss +0 -68
- package/src/scss/inc/_secondary-properties.scss +0 -89
- package/src/scss/inc/_select2.scss +0 -634
- package/src/scss/inc/_toolbars.scss +0 -155
- package/src/scss/inc/_tooltip.scss +0 -312
- package/src/scss/inc/_variables.scss +0 -21
- package/src/scss/inc/base/_highlight.scss +0 -5
- package/src/scss/inc/base/_list-style.scss +0 -59
- package/src/scss/inc/base/_svg.scss +0 -3
- package/src/scss/inc/base/_table.scss +0 -63
- package/src/scss/inc/fonts/_source-sans-pro.scss +0 -29
- package/src/scss/inc/fonts/_tao-icon-classes.scss +0 -226
- package/src/scss/inc/fonts/_tao-icon-def.scss +0 -12
- package/src/scss/inc/fonts/_tao-icon-vars.scss +0 -240
package/dist/adder.js
CHANGED
|
@@ -13,11 +13,11 @@ define(['jquery', 'lodash', 'handlebars', 'core/pluginifier', 'core/dataattrhand
|
|
|
13
13
|
* @requires core/pluginifier
|
|
14
14
|
* @requires core/dataattrhandler
|
|
15
15
|
*/
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
var ns = 'adder';
|
|
17
|
+
var dataNs = 'ui.' + ns; //positions available must match jquery function {position}To (ie. appendTo)
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
var positions = ['append', 'prepend'];
|
|
20
|
+
var defaults = {
|
|
21
21
|
bindEvent: 'click',
|
|
22
22
|
disableClass: 'disabled',
|
|
23
23
|
position: 'append',
|
|
@@ -43,7 +43,7 @@ define(['jquery', 'lodash', 'handlebars', 'core/pluginifier', 'core/dataattrhand
|
|
|
43
43
|
* @params {dataCallback} [] - an optionnal callback used
|
|
44
44
|
* @returns {object} the data to be bound to the template
|
|
45
45
|
*/
|
|
46
|
-
templateData: function (dataCallback) {
|
|
46
|
+
templateData: function templateData(dataCallback) {
|
|
47
47
|
/**
|
|
48
48
|
* This callback is used to populate template data
|
|
49
49
|
* @callback dataCallback
|
|
@@ -70,7 +70,7 @@ define(['jquery', 'lodash', 'handlebars', 'core/pluginifier', 'core/dataattrhand
|
|
|
70
70
|
* @callback checkAndCallAdd
|
|
71
71
|
* @params {executeAdd} - callback to run add function
|
|
72
72
|
*/
|
|
73
|
-
checkAndCallAdd: function (executeAdd) {
|
|
73
|
+
checkAndCallAdd: function checkAndCallAdd(executeAdd) {
|
|
74
74
|
/**
|
|
75
75
|
* This callback is used to populate template data
|
|
76
76
|
* @callback executeAdd
|
|
@@ -84,7 +84,7 @@ define(['jquery', 'lodash', 'handlebars', 'core/pluginifier', 'core/dataattrhand
|
|
|
84
84
|
* @exports ui/adder
|
|
85
85
|
*/
|
|
86
86
|
|
|
87
|
-
|
|
87
|
+
var Adder = {
|
|
88
88
|
/**
|
|
89
89
|
* Initialize the plugin.
|
|
90
90
|
*
|
|
@@ -103,14 +103,14 @@ define(['jquery', 'lodash', 'handlebars', 'core/pluginifier', 'core/dataattrhand
|
|
|
103
103
|
* @fires Adder#create.adder
|
|
104
104
|
* @returns {jQueryElement} for chaining
|
|
105
105
|
*/
|
|
106
|
-
init: function (options) {
|
|
106
|
+
init: function init(options) {
|
|
107
107
|
options = _.defaults(options || {}, defaults);
|
|
108
108
|
|
|
109
109
|
if (typeof options.content === 'function') {
|
|
110
110
|
//compiled template
|
|
111
111
|
options._template = options.content;
|
|
112
112
|
} else {
|
|
113
|
-
|
|
113
|
+
var $content = options.content;
|
|
114
114
|
|
|
115
115
|
if ($content.prop('tagName') === 'SCRIPT' && $content.attr('type') === 'text/template') {
|
|
116
116
|
//template element
|
|
@@ -127,7 +127,7 @@ define(['jquery', 'lodash', 'handlebars', 'core/pluginifier', 'core/dataattrhand
|
|
|
127
127
|
}
|
|
128
128
|
|
|
129
129
|
return this.each(function () {
|
|
130
|
-
|
|
130
|
+
var $elt = $(this);
|
|
131
131
|
|
|
132
132
|
if (!$elt.data(dataNs)) {
|
|
133
133
|
//add data to the element
|
|
@@ -136,7 +136,9 @@ define(['jquery', 'lodash', 'handlebars', 'core/pluginifier', 'core/dataattrhand
|
|
|
136
136
|
if (options.bindEvent !== false) {
|
|
137
137
|
$elt.on(options.bindEvent, function (e) {
|
|
138
138
|
e.preventDefault();
|
|
139
|
-
options.checkAndCallAdd(()
|
|
139
|
+
options.checkAndCallAdd(function () {
|
|
140
|
+
return Adder._add($elt);
|
|
141
|
+
});
|
|
140
142
|
});
|
|
141
143
|
}
|
|
142
144
|
/**
|
|
@@ -159,10 +161,10 @@ define(['jquery', 'lodash', 'handlebars', 'core/pluginifier', 'core/dataattrhand
|
|
|
159
161
|
* @fires Adder#add.adder
|
|
160
162
|
* @fires Adder#add
|
|
161
163
|
*/
|
|
162
|
-
_add: function ($elt) {
|
|
163
|
-
|
|
164
|
+
_add: function _add($elt) {
|
|
165
|
+
var options = $elt.data(dataNs);
|
|
164
166
|
|
|
165
|
-
|
|
167
|
+
var applyTemplate = function applyTemplate($content, position, $target, data) {
|
|
166
168
|
$content[position]($target);
|
|
167
169
|
/**
|
|
168
170
|
* The target has received content.
|
|
@@ -183,9 +185,9 @@ define(['jquery', 'lodash', 'handlebars', 'core/pluginifier', 'core/dataattrhand
|
|
|
183
185
|
$elt.trigger('add.' + ns, [$target, $content, data]);
|
|
184
186
|
};
|
|
185
187
|
|
|
186
|
-
|
|
188
|
+
var $target = options.target; //call appendTo, prependTo, etc.
|
|
187
189
|
|
|
188
|
-
|
|
190
|
+
var position = options.position + 'To'; //DOM element or template
|
|
189
191
|
|
|
190
192
|
if (typeof options._template === 'function') {
|
|
191
193
|
options.templateData(function templateDataCallback(data) {
|
|
@@ -204,10 +206,10 @@ define(['jquery', 'lodash', 'handlebars', 'core/pluginifier', 'core/dataattrhand
|
|
|
204
206
|
* @public
|
|
205
207
|
* @fires Adder#destroy.adder
|
|
206
208
|
*/
|
|
207
|
-
destroy: function () {
|
|
209
|
+
destroy: function destroy() {
|
|
208
210
|
this.each(function () {
|
|
209
|
-
|
|
210
|
-
|
|
211
|
+
var $elt = $(this);
|
|
212
|
+
var options = $elt.data(dataNs);
|
|
211
213
|
|
|
212
214
|
if (options.bindEvent !== false) {
|
|
213
215
|
$elt.off(options.bindEvent);
|
|
@@ -1,244 +1,235 @@
|
|
|
1
1
|
define(['lodash', 'ui/component', 'ui/component/alignable', 'handlebars', 'i18n', 'lib/dompurify/purify', 'css!ui/animable/absorbable/css/absorb.css'], function (_, componentFactory, makeAlignable, Handlebars, __, DOMPurify, absorb_css) { 'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
3
|
+
_ = _ && Object.prototype.hasOwnProperty.call(_, 'default') ? _['default'] : _;
|
|
4
|
+
componentFactory = componentFactory && Object.prototype.hasOwnProperty.call(componentFactory, 'default') ? componentFactory['default'] : componentFactory;
|
|
5
|
+
makeAlignable = makeAlignable && Object.prototype.hasOwnProperty.call(makeAlignable, 'default') ? makeAlignable['default'] : makeAlignable;
|
|
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
|
-
*
|
|
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
|
-
*
|
|
26
|
+
* Register dompurify helper
|
|
27
27
|
*
|
|
28
|
+
* https://github.com/cure53/DOMPurify
|
|
29
|
+
* with config SAFE_FOR_TEMPLATES: true
|
|
30
|
+
* to make output safe for template systems
|
|
28
31
|
*/
|
|
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
|
-
|
|
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
|
-
*/
|
|
53
|
-
|
|
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
|
-
}
|
|
72
32
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
33
|
+
hb.registerHelper('dompurify', function (context) {
|
|
34
|
+
return DOMPurify.sanitize(context);
|
|
35
|
+
});
|
|
36
|
+
/**
|
|
37
|
+
* Register join helper
|
|
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*
|
|
43
|
+
*/
|
|
76
44
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
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 : '"';
|
|
80
50
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
//it also adds a local variable "i" as the index in each iteration loop
|
|
51
|
+
_.forIn(arr, function (value, key) {
|
|
52
|
+
var fragment = '';
|
|
84
53
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
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(' ');
|
|
59
|
+
}
|
|
60
|
+
} else {
|
|
61
|
+
value = '';
|
|
62
|
+
}
|
|
90
63
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
i: i
|
|
94
|
-
}));
|
|
64
|
+
if (keyValueGlue !== undefined) {
|
|
65
|
+
fragment += key + keyValueGlue;
|
|
95
66
|
}
|
|
96
67
|
|
|
97
|
-
|
|
68
|
+
fragment += wrapper + value + wrapper;
|
|
69
|
+
fragments.push(fragment);
|
|
98
70
|
});
|
|
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
|
|
107
71
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
// it checks if value is in array
|
|
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
|
|
112
75
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
}
|
|
76
|
+
hb.registerHelper('for', function (startIndex, stopIndex, increment, options) {
|
|
77
|
+
var ret = '';
|
|
78
|
+
startIndex = parseInt(startIndex);
|
|
79
|
+
stopIndex = parseInt(stopIndex);
|
|
80
|
+
increment = parseInt(increment);
|
|
119
81
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
this.compilerInfo = [4,'>= 1.0.0'];
|
|
126
|
-
helpers = this.merge(helpers, Handlebars.helpers);
|
|
82
|
+
for (var i = startIndex; i < stopIndex; i += increment) {
|
|
83
|
+
ret += options.fn(_.extend({}, this, {
|
|
84
|
+
i: i
|
|
85
|
+
}));
|
|
86
|
+
}
|
|
127
87
|
|
|
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
|
|
128
98
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
return (asString || true) ? html : $(html);
|
|
134
|
-
}
|
|
99
|
+
hb.registerHelper('property', function (name, context) {
|
|
100
|
+
return context[name] || '';
|
|
101
|
+
}); // register an 'includes' helper
|
|
102
|
+
// it checks if value is in array
|
|
135
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=\"absorbable\"></div>";
|
|
121
|
+
});
|
|
122
|
+
function absorbTpl(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) 2017 (original work) Open Assessment Technologies SA;
|
|
143
|
+
*/
|
|
144
|
+
var defaultConfig = {
|
|
145
|
+
animationDuration: 1
|
|
146
|
+
};
|
|
147
|
+
var absorbableComponent = {
|
|
136
148
|
/**
|
|
137
|
-
*
|
|
138
|
-
*
|
|
139
|
-
*
|
|
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) 2017 (original work) Open Assessment Technologies SA;
|
|
149
|
+
* Generate an absorbing animation from a target element to the component
|
|
150
|
+
* @param {JQuery} $target - the target dom where the absorb animation should start
|
|
151
|
+
* @returns {Promise} - resolved when the animation is over
|
|
152
152
|
*/
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
var animationDuration = parseInt(this.config.animationDuration, 10) || defaultConfig.animationDuration;
|
|
170
|
-
var animationStartOffset = 10; //safety duration padding to allow styles to be properly applied
|
|
171
|
-
|
|
172
|
-
var animatedComponent = makeAlignable(componentFactory()).setTemplate(absorbTpl).init().render($component).setSize(targetWidth, targetHeight).alignWith($target, {
|
|
173
|
-
hPos: 'center',
|
|
174
|
-
vPos: 'center',
|
|
175
|
-
hOrigin: 'center',
|
|
176
|
-
vOrigin: 'center'
|
|
177
|
-
});
|
|
178
|
-
|
|
179
|
-
if ($component.css('position') === 'static') {
|
|
180
|
-
$component.css('position', 'relative');
|
|
181
|
-
}
|
|
153
|
+
absorb: function absorb($target) {
|
|
154
|
+
var self = this;
|
|
155
|
+
var $component = this.getElement();
|
|
156
|
+
var targetWidth = $target.width();
|
|
157
|
+
var targetHeight = $target.height();
|
|
158
|
+
var finalWidth = 10;
|
|
159
|
+
var finalHeight = 10;
|
|
160
|
+
var animationDuration = parseInt(this.config.animationDuration, 10) || defaultConfig.animationDuration;
|
|
161
|
+
var animationStartOffset = 10; //safety duration padding to allow styles to be properly applied
|
|
162
|
+
|
|
163
|
+
var animatedComponent = makeAlignable(componentFactory()).setTemplate(absorbTpl).init().render($component).setSize(targetWidth, targetHeight).alignWith($target, {
|
|
164
|
+
hPos: 'center',
|
|
165
|
+
vPos: 'center',
|
|
166
|
+
hOrigin: 'center',
|
|
167
|
+
vOrigin: 'center'
|
|
168
|
+
});
|
|
182
169
|
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
//css
|
|
186
|
-
animatedComponent.getElement().addClass('animate').css({
|
|
187
|
-
transitionDuration: animationDuration + 's'
|
|
188
|
-
});
|
|
189
|
-
animatedComponent.setSize(finalWidth, finalHeight).alignWith($component, {
|
|
190
|
-
hPos: 'center',
|
|
191
|
-
vPos: 'center',
|
|
192
|
-
hOrigin: 'center',
|
|
193
|
-
vOrigin: 'center',
|
|
194
|
-
hOffset: targetWidth / 2 - finalWidth / 2,
|
|
195
|
-
vOffset: targetHeight / 2 - finalHeight / 2
|
|
196
|
-
});
|
|
197
|
-
|
|
198
|
-
_.delay(function () {
|
|
199
|
-
animatedComponent.destroy();
|
|
200
|
-
resolve(self); //finish the animation by resolving the promise
|
|
201
|
-
}, 1000 * animationDuration + animationStartOffset);
|
|
202
|
-
}, animationStartOffset);
|
|
203
|
-
});
|
|
204
|
-
},
|
|
205
|
-
|
|
206
|
-
/**
|
|
207
|
-
* Generate a sequence of absorbing animation from a target element to the component.
|
|
208
|
-
*
|
|
209
|
-
* @param {JQuery} $target - the target dom where the absorb animation should start
|
|
210
|
-
* @param {Array} delayArray - the array of time an absorb animation should successively start
|
|
211
|
-
* @returns {Promise} - resolved when the animation is over
|
|
212
|
-
*/
|
|
213
|
-
absorbBurst: function ($target, delayArray) {
|
|
214
|
-
var animations = [];
|
|
215
|
-
var self = this;
|
|
216
|
-
delayArray = _.isArray(delayArray) ? delayArray : [0];
|
|
217
|
-
|
|
218
|
-
_.forEach(delayArray, function (startTimeOffset) {
|
|
219
|
-
animations.push(new Promise(function (resolve) {
|
|
220
|
-
_.delay(function () {
|
|
221
|
-
self.absorb($target).then(resolve);
|
|
222
|
-
}, startTimeOffset);
|
|
223
|
-
}));
|
|
224
|
-
});
|
|
225
|
-
|
|
226
|
-
return Promise.all(animations);
|
|
170
|
+
if ($component.css('position') === 'static') {
|
|
171
|
+
$component.css('position', 'relative');
|
|
227
172
|
}
|
|
228
|
-
|
|
173
|
+
|
|
174
|
+
return new Promise(function (resolve) {
|
|
175
|
+
_.delay(function () {
|
|
176
|
+
//css
|
|
177
|
+
animatedComponent.getElement().addClass('animate').css({
|
|
178
|
+
transitionDuration: animationDuration + 's'
|
|
179
|
+
});
|
|
180
|
+
animatedComponent.setSize(finalWidth, finalHeight).alignWith($component, {
|
|
181
|
+
hPos: 'center',
|
|
182
|
+
vPos: 'center',
|
|
183
|
+
hOrigin: 'center',
|
|
184
|
+
vOrigin: 'center',
|
|
185
|
+
hOffset: targetWidth / 2 - finalWidth / 2,
|
|
186
|
+
vOffset: targetHeight / 2 - finalHeight / 2
|
|
187
|
+
});
|
|
188
|
+
|
|
189
|
+
_.delay(function () {
|
|
190
|
+
animatedComponent.destroy();
|
|
191
|
+
resolve(self); //finish the animation by resolving the promise
|
|
192
|
+
}, 1000 * animationDuration + animationStartOffset);
|
|
193
|
+
}, animationStartOffset);
|
|
194
|
+
});
|
|
195
|
+
},
|
|
196
|
+
|
|
229
197
|
/**
|
|
230
|
-
*
|
|
231
|
-
*
|
|
198
|
+
* Generate a sequence of absorbing animation from a target element to the component.
|
|
199
|
+
*
|
|
200
|
+
* @param {JQuery} $target - the target dom where the absorb animation should start
|
|
201
|
+
* @param {Array} delayArray - the array of time an absorb animation should successively start
|
|
202
|
+
* @returns {Promise} - resolved when the animation is over
|
|
232
203
|
*/
|
|
204
|
+
absorbBurst: function absorbBurst($target, delayArray) {
|
|
205
|
+
var animations = [];
|
|
206
|
+
var self = this;
|
|
207
|
+
delayArray = _.isArray(delayArray) ? delayArray : [0];
|
|
233
208
|
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
209
|
+
_.forEach(delayArray, function (startTimeOffset) {
|
|
210
|
+
animations.push(new Promise(function (resolve) {
|
|
211
|
+
_.delay(function () {
|
|
212
|
+
self.absorb($target).then(resolve);
|
|
213
|
+
}, startTimeOffset);
|
|
214
|
+
}));
|
|
239
215
|
});
|
|
216
|
+
|
|
217
|
+
return Promise.all(animations);
|
|
240
218
|
}
|
|
219
|
+
};
|
|
220
|
+
/**
|
|
221
|
+
* @param {Component} component - an instance of ui/component
|
|
222
|
+
* @param {Object} config
|
|
223
|
+
*/
|
|
224
|
+
|
|
225
|
+
function makeAbsorbable(component, config) {
|
|
226
|
+
_.assign(component, absorbableComponent);
|
|
227
|
+
|
|
228
|
+
return component.off('.makeAbsorbable').on('init.makeAbsorbable', function () {
|
|
229
|
+
_.defaults(this.config, config || {}, defaultConfig);
|
|
230
|
+
});
|
|
231
|
+
}
|
|
241
232
|
|
|
242
|
-
|
|
233
|
+
return makeAbsorbable;
|
|
243
234
|
|
|
244
235
|
});
|