@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/documentViewer.js
CHANGED
|
@@ -1,352 +1,343 @@
|
|
|
1
1
|
define(['lodash', 'ui/component', 'ui/documentViewer/viewerFactory', 'handlebars', 'i18n', 'lib/dompurify/purify', 'css!ui/documentViewer/css/documentViewer.css'], function (_, component, viewerFactory, Handlebars, __, DOMPurify, documentViewer_css) { 'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
3
|
+
_ = _ && Object.prototype.hasOwnProperty.call(_, 'default') ? _['default'] : _;
|
|
4
|
+
component = component && Object.prototype.hasOwnProperty.call(component, 'default') ? component['default'] : component;
|
|
5
|
+
viewerFactory = viewerFactory && Object.prototype.hasOwnProperty.call(viewerFactory, 'default') ? viewerFactory['default'] : viewerFactory;
|
|
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
|
+
* 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
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
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
|
-
|
|
55
|
-
var
|
|
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
|
-
|
|
74
|
-
|
|
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
|
}
|
|
76
|
-
|
|
77
|
-
fragment += wrapper + value + wrapper;
|
|
78
|
-
fragments.push(fragment);
|
|
79
|
-
});
|
|
80
|
-
|
|
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
|
|
84
|
-
|
|
85
|
-
hb.registerHelper('for', function (startIndex, stopIndex, increment, options) {
|
|
86
|
-
var ret = '';
|
|
87
|
-
startIndex = parseInt(startIndex);
|
|
88
|
-
stopIndex = parseInt(stopIndex);
|
|
89
|
-
increment = parseInt(increment);
|
|
90
|
-
|
|
91
|
-
for (var i = startIndex; i < stopIndex; i += increment) {
|
|
92
|
-
ret += options.fn(_.extend({}, this, {
|
|
93
|
-
i: i
|
|
94
|
-
}));
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
return ret;
|
|
98
|
-
});
|
|
99
|
-
hb.registerHelper('equal', function (var1, var2, options) {
|
|
100
|
-
if (var1 == var2) {
|
|
101
|
-
return options.fn(this);
|
|
102
60
|
} else {
|
|
103
|
-
|
|
61
|
+
value = '';
|
|
104
62
|
}
|
|
105
|
-
}); // register a "get property" helper
|
|
106
|
-
// it gets the named property from the provided context
|
|
107
63
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
}); // register an 'includes' helper
|
|
111
|
-
// it checks if value is in array
|
|
112
|
-
|
|
113
|
-
hb.registerHelper('includes', function (haystack, needle, options) {
|
|
114
|
-
if (_.contains(haystack, needle)) {
|
|
115
|
-
return options.fn(this);
|
|
64
|
+
if (keyValueGlue !== undefined) {
|
|
65
|
+
fragment += key + keyValueGlue;
|
|
116
66
|
}
|
|
117
|
-
});
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
if (!Helpers0.__initialized) {
|
|
121
|
-
Helpers0(Handlebars);
|
|
122
|
-
Helpers0.__initialized = true;
|
|
123
|
-
}
|
|
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
67
|
|
|
128
|
-
|
|
129
|
-
|
|
68
|
+
fragment += wrapper + value + wrapper;
|
|
69
|
+
fragments.push(fragment);
|
|
130
70
|
});
|
|
131
|
-
function documentViewerTpl(data, options, asString) {
|
|
132
|
-
var html = Template(data, options);
|
|
133
|
-
return (asString || true) ? html : $(html);
|
|
134
|
-
}
|
|
135
71
|
|
|
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
|
|
75
|
+
|
|
76
|
+
hb.registerHelper('for', function (startIndex, stopIndex, increment, options) {
|
|
77
|
+
var ret = '';
|
|
78
|
+
startIndex = parseInt(startIndex);
|
|
79
|
+
stopIndex = parseInt(stopIndex);
|
|
80
|
+
increment = parseInt(increment);
|
|
81
|
+
|
|
82
|
+
for (var i = startIndex; i < stopIndex; i += increment) {
|
|
83
|
+
ret += options.fn(_.extend({}, this, {
|
|
84
|
+
i: i
|
|
85
|
+
}));
|
|
86
|
+
}
|
|
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
|
|
98
|
+
|
|
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=\"document-viewer\"></div>";
|
|
121
|
+
});
|
|
122
|
+
function documentViewerTpl(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) 2016 (original work) Open Assessment Technologies SA ;
|
|
143
|
+
*/
|
|
144
|
+
/**
|
|
145
|
+
* Some defaults config
|
|
146
|
+
* @type {Object}
|
|
147
|
+
*/
|
|
148
|
+
|
|
149
|
+
var defaults = {
|
|
150
|
+
width: 'auto',
|
|
151
|
+
height: 'auto',
|
|
152
|
+
fitToWidth: false,
|
|
153
|
+
allowSearch: false,
|
|
154
|
+
caseSensitiveSearch: false,
|
|
155
|
+
highlightAllMatches: false
|
|
156
|
+
};
|
|
157
|
+
/**
|
|
158
|
+
* Creates a document viewer
|
|
159
|
+
* @param {Object} config - The config set
|
|
160
|
+
* @param {Number|String} [config.width] - The width in pixels, or 'auto' to use the container's width
|
|
161
|
+
* @param {Number|String} [config.height] - The height in pixels, or 'auto' to use the container's height
|
|
162
|
+
* @param {Boolean} [config.fitToWidth] - The document will be displayed using the full available width instead of fitting the height
|
|
163
|
+
* @param {Boolean} [config.allowSearch] - Allow to search within the displayed document
|
|
164
|
+
* @param {Boolean} [config.caseSensitiveSearch] - Use a case sensitive search when the search feature is available
|
|
165
|
+
* @param {Boolean} [config.highlightAllMatches] - Highlight all matches to see all of them at a glance
|
|
166
|
+
* @returns {Object}
|
|
167
|
+
*/
|
|
168
|
+
|
|
169
|
+
function documentViewerFactory(config) {
|
|
170
|
+
var documentType, documentUrl, viewer;
|
|
136
171
|
/**
|
|
137
|
-
*
|
|
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) 2016 (original work) Open Assessment Technologies SA ;
|
|
152
|
-
*/
|
|
153
|
-
/**
|
|
154
|
-
* Some defaults config
|
|
172
|
+
* The document viewer API
|
|
155
173
|
* @type {Object}
|
|
156
174
|
*/
|
|
157
175
|
|
|
158
|
-
var
|
|
159
|
-
width: 'auto',
|
|
160
|
-
height: 'auto',
|
|
161
|
-
fitToWidth: false,
|
|
162
|
-
allowSearch: false,
|
|
163
|
-
caseSensitiveSearch: false,
|
|
164
|
-
highlightAllMatches: false
|
|
165
|
-
};
|
|
166
|
-
/**
|
|
167
|
-
* Creates a document viewer
|
|
168
|
-
* @param {Object} config - The config set
|
|
169
|
-
* @param {Number|String} [config.width] - The width in pixels, or 'auto' to use the container's width
|
|
170
|
-
* @param {Number|String} [config.height] - The height in pixels, or 'auto' to use the container's height
|
|
171
|
-
* @param {Boolean} [config.fitToWidth] - The document will be displayed using the full available width instead of fitting the height
|
|
172
|
-
* @param {Boolean} [config.allowSearch] - Allow to search within the displayed document
|
|
173
|
-
* @param {Boolean} [config.caseSensitiveSearch] - Use a case sensitive search when the search feature is available
|
|
174
|
-
* @param {Boolean} [config.highlightAllMatches] - Highlight all matches to see all of them at a glance
|
|
175
|
-
* @returns {Object}
|
|
176
|
-
*/
|
|
177
|
-
|
|
178
|
-
function documentViewerFactory(config) {
|
|
179
|
-
var documentType, documentUrl, viewer;
|
|
176
|
+
var documentViewer = {
|
|
180
177
|
/**
|
|
181
|
-
*
|
|
182
|
-
* @
|
|
178
|
+
* Gets the type of the loaded document
|
|
179
|
+
* @returns {String}
|
|
183
180
|
*/
|
|
181
|
+
getType: function getType() {
|
|
182
|
+
return documentType || null;
|
|
183
|
+
},
|
|
184
184
|
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
},
|
|
185
|
+
/**
|
|
186
|
+
* Gets the url of the loaded document
|
|
187
|
+
* @returns {String}
|
|
188
|
+
*/
|
|
189
|
+
getUrl: function getUrl() {
|
|
190
|
+
return documentUrl || null;
|
|
191
|
+
},
|
|
193
192
|
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
193
|
+
/**
|
|
194
|
+
* Gets the current viewer
|
|
195
|
+
* @returns {Object}
|
|
196
|
+
*/
|
|
197
|
+
getViewer: function getViewer() {
|
|
198
|
+
return viewer || null;
|
|
199
|
+
},
|
|
201
200
|
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
201
|
+
/**
|
|
202
|
+
* Loads a document
|
|
203
|
+
* @param {String} url - The URL of the document to load
|
|
204
|
+
* @param {String} type - The MIME type of the document to load
|
|
205
|
+
* @returns {documentViewer}
|
|
206
|
+
* @throws TypeError if one of the url or the type is missing
|
|
207
|
+
* @throws Error if the document type is unknown
|
|
208
|
+
* @fires load
|
|
209
|
+
* @fires loaded
|
|
210
|
+
* @fires unloaded
|
|
211
|
+
*/
|
|
212
|
+
load: function load(url, type) {
|
|
213
|
+
var self = this;
|
|
209
214
|
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
* @param {String} type - The MIME type of the document to load
|
|
214
|
-
* @returns {documentViewer}
|
|
215
|
-
* @throws TypeError if one of the url or the type is missing
|
|
216
|
-
* @throws Error if the document type is unknown
|
|
217
|
-
* @fires load
|
|
218
|
-
* @fires loaded
|
|
219
|
-
* @fires unloaded
|
|
220
|
-
*/
|
|
221
|
-
load: function load(url, type) {
|
|
222
|
-
var self = this;
|
|
215
|
+
if (_.isEmpty(url) || !_.isString(url)) {
|
|
216
|
+
throw new TypeError('You must provide the URL of the document!');
|
|
217
|
+
}
|
|
223
218
|
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
219
|
+
if (_.isEmpty(type) || !_.isString(type)) {
|
|
220
|
+
throw new TypeError('You must provide a document type!');
|
|
221
|
+
} // destroy existing viewer before setting a new one
|
|
227
222
|
|
|
228
|
-
if (_.isEmpty(type) || !_.isString(type)) {
|
|
229
|
-
throw new TypeError('You must provide a document type!');
|
|
230
|
-
} // destroy existing viewer before setting a new one
|
|
231
223
|
|
|
224
|
+
if (viewer) {
|
|
225
|
+
viewer.destroy();
|
|
226
|
+
}
|
|
232
227
|
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
228
|
+
documentType = type;
|
|
229
|
+
documentUrl = url;
|
|
230
|
+
viewer = viewerFactory(documentType, _.merge({
|
|
231
|
+
type: documentType,
|
|
232
|
+
// provide the type in case of hybrid/multi-type implementation
|
|
233
|
+
url: documentUrl,
|
|
234
|
+
replace: true // always replace existing viewer
|
|
236
235
|
|
|
237
|
-
|
|
238
|
-
documentUrl = url;
|
|
239
|
-
viewer = viewerFactory(documentType, _.merge({
|
|
240
|
-
type: documentType,
|
|
241
|
-
// provide the type in case of hybrid/multi-type implementation
|
|
242
|
-
url: documentUrl,
|
|
243
|
-
replace: true // always replace existing viewer
|
|
244
|
-
|
|
245
|
-
}, _.pick(this.config, _.keys(defaults)))).on('loaded', function () {
|
|
246
|
-
/**
|
|
247
|
-
* @event documentViewer#loaded
|
|
248
|
-
* @param {String} url - The URL of the document to load
|
|
249
|
-
* @param {String} type - The MIME type of the document to load
|
|
250
|
-
*/
|
|
251
|
-
self.trigger('loaded', documentUrl, documentType);
|
|
252
|
-
}).on('unloaded', function () {
|
|
253
|
-
/**
|
|
254
|
-
* @event documentViewer#unloaded
|
|
255
|
-
* @param {String} url - The URL of the document to load
|
|
256
|
-
* @param {String} type - The MIME type of the document to load
|
|
257
|
-
*/
|
|
258
|
-
self.trigger('unloaded', documentUrl, documentType);
|
|
259
|
-
}).on('resized', function (width, height) {
|
|
260
|
-
/**
|
|
261
|
-
* @event documentViewer#resized
|
|
262
|
-
* @param {Number} width
|
|
263
|
-
* @param {Number} height
|
|
264
|
-
*/
|
|
265
|
-
self.trigger('resized', width, height);
|
|
266
|
-
}).on('error', function (err) {
|
|
267
|
-
/**
|
|
268
|
-
* @event documentViewer#error
|
|
269
|
-
* @param error
|
|
270
|
-
*/
|
|
271
|
-
self.trigger('error', err);
|
|
272
|
-
});
|
|
236
|
+
}, _.pick(this.config, _.keys(defaults)))).on('loaded', function () {
|
|
273
237
|
/**
|
|
274
|
-
* @event documentViewer#
|
|
238
|
+
* @event documentViewer#loaded
|
|
275
239
|
* @param {String} url - The URL of the document to load
|
|
276
240
|
* @param {String} type - The MIME type of the document to load
|
|
277
241
|
*/
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
if (this.is('rendered')) {
|
|
282
|
-
viewer.render(this.getElement());
|
|
283
|
-
}
|
|
284
|
-
|
|
285
|
-
return this;
|
|
286
|
-
},
|
|
287
|
-
|
|
288
|
-
/**
|
|
289
|
-
* Unloads the current document and clears the viewer
|
|
290
|
-
* @returns {documentViewer}
|
|
291
|
-
* @fires unload
|
|
292
|
-
*/
|
|
293
|
-
unload: function unload() {
|
|
294
|
-
if (viewer) {
|
|
295
|
-
viewer.destroy();
|
|
296
|
-
}
|
|
242
|
+
self.trigger('loaded', documentUrl, documentType);
|
|
243
|
+
}).on('unloaded', function () {
|
|
297
244
|
/**
|
|
298
|
-
* @event documentViewer#
|
|
245
|
+
* @event documentViewer#unloaded
|
|
299
246
|
* @param {String} url - The URL of the document to load
|
|
300
247
|
* @param {String} type - The MIME type of the document to load
|
|
301
248
|
*/
|
|
249
|
+
self.trigger('unloaded', documentUrl, documentType);
|
|
250
|
+
}).on('resized', function (width, height) {
|
|
251
|
+
/**
|
|
252
|
+
* @event documentViewer#resized
|
|
253
|
+
* @param {Number} width
|
|
254
|
+
* @param {Number} height
|
|
255
|
+
*/
|
|
256
|
+
self.trigger('resized', width, height);
|
|
257
|
+
}).on('error', function (err) {
|
|
258
|
+
/**
|
|
259
|
+
* @event documentViewer#error
|
|
260
|
+
* @param error
|
|
261
|
+
*/
|
|
262
|
+
self.trigger('error', err);
|
|
263
|
+
});
|
|
264
|
+
/**
|
|
265
|
+
* @event documentViewer#load
|
|
266
|
+
* @param {String} url - The URL of the document to load
|
|
267
|
+
* @param {String} type - The MIME type of the document to load
|
|
268
|
+
*/
|
|
302
269
|
|
|
270
|
+
this.trigger('load', documentUrl, documentType);
|
|
303
271
|
|
|
304
|
-
|
|
305
|
-
viewer = null;
|
|
306
|
-
documentType = null;
|
|
307
|
-
documentUrl = null;
|
|
308
|
-
return this;
|
|
309
|
-
}
|
|
310
|
-
};
|
|
311
|
-
return component(documentViewer, defaults).setTemplate(documentViewerTpl).on('init', function onInit() {
|
|
312
|
-
viewer = null;
|
|
313
|
-
documentType = null;
|
|
314
|
-
documentUrl = null;
|
|
315
|
-
}).on('destroy', function onDestroy() {
|
|
316
|
-
this.unload();
|
|
317
|
-
}).on('render', function onRender() {
|
|
318
|
-
if (viewer) {
|
|
272
|
+
if (this.is('rendered')) {
|
|
319
273
|
viewer.render(this.getElement());
|
|
320
274
|
}
|
|
321
|
-
}).on('setsize', function onSetSize(width, height) {
|
|
322
|
-
if (viewer) {
|
|
323
|
-
viewer.setSize(width, height);
|
|
324
|
-
}
|
|
325
|
-
}).init(config);
|
|
326
|
-
}
|
|
327
|
-
/**
|
|
328
|
-
* Registers a viewer for a particular document type
|
|
329
|
-
* @param {String} type - The of document the viewer can handle
|
|
330
|
-
* @param {Object} provider - The document viewer implementation
|
|
331
|
-
* @returns {documentViewerFactory}
|
|
332
|
-
*/
|
|
333
275
|
|
|
276
|
+
return this;
|
|
277
|
+
},
|
|
334
278
|
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
279
|
+
/**
|
|
280
|
+
* Unloads the current document and clears the viewer
|
|
281
|
+
* @returns {documentViewer}
|
|
282
|
+
* @fires unload
|
|
283
|
+
*/
|
|
284
|
+
unload: function unload() {
|
|
285
|
+
if (viewer) {
|
|
286
|
+
viewer.destroy();
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* @event documentViewer#unload
|
|
290
|
+
* @param {String} url - The URL of the document to load
|
|
291
|
+
* @param {String} type - The MIME type of the document to load
|
|
292
|
+
*/
|
|
343
293
|
|
|
344
294
|
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
295
|
+
this.trigger('unload', documentUrl, documentType);
|
|
296
|
+
viewer = null;
|
|
297
|
+
documentType = null;
|
|
298
|
+
documentUrl = null;
|
|
299
|
+
return this;
|
|
300
|
+
}
|
|
348
301
|
};
|
|
349
|
-
|
|
350
|
-
|
|
302
|
+
return component(documentViewer, defaults).setTemplate(documentViewerTpl).on('init', function onInit() {
|
|
303
|
+
viewer = null;
|
|
304
|
+
documentType = null;
|
|
305
|
+
documentUrl = null;
|
|
306
|
+
}).on('destroy', function onDestroy() {
|
|
307
|
+
this.unload();
|
|
308
|
+
}).on('render', function onRender() {
|
|
309
|
+
if (viewer) {
|
|
310
|
+
viewer.render(this.getElement());
|
|
311
|
+
}
|
|
312
|
+
}).on('setsize', function onSetSize(width, height) {
|
|
313
|
+
if (viewer) {
|
|
314
|
+
viewer.setSize(width, height);
|
|
315
|
+
}
|
|
316
|
+
}).init(config);
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* Registers a viewer for a particular document type
|
|
320
|
+
* @param {String} type - The of document the viewer can handle
|
|
321
|
+
* @param {Object} provider - The document viewer implementation
|
|
322
|
+
* @returns {documentViewerFactory}
|
|
323
|
+
*/
|
|
324
|
+
|
|
325
|
+
|
|
326
|
+
documentViewerFactory.registerProvider = function registerProvider(type, provider) {
|
|
327
|
+
viewerFactory.registerProvider(type, provider);
|
|
328
|
+
return this;
|
|
329
|
+
};
|
|
330
|
+
/**
|
|
331
|
+
* Clears the registered viewers
|
|
332
|
+
* @returns {documentViewerFactory}
|
|
333
|
+
*/
|
|
334
|
+
|
|
335
|
+
|
|
336
|
+
documentViewerFactory.clearProviders = function clearProviders() {
|
|
337
|
+
viewerFactory.clearProviders();
|
|
338
|
+
return this;
|
|
339
|
+
};
|
|
340
|
+
|
|
341
|
+
return documentViewerFactory;
|
|
351
342
|
|
|
352
343
|
});
|