@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
|
@@ -1,435 +1,426 @@
|
|
|
1
1
|
define(['jquery', 'ui/hider', 'handlebars', 'i18n', 'lodash', 'lib/dompurify/purify'], function ($$1, hider, Handlebars, __, _, DOMPurify) { 'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
3
|
+
$$1 = $$1 && Object.prototype.hasOwnProperty.call($$1, 'default') ? $$1['default'] : $$1;
|
|
4
|
+
hider = hider && Object.prototype.hasOwnProperty.call(hider, 'default') ? hider['default'] : hider;
|
|
5
|
+
Handlebars = Handlebars && Object.prototype.hasOwnProperty.call(Handlebars, 'default') ? Handlebars['default'] : Handlebars;
|
|
6
|
+
__ = __ && Object.prototype.hasOwnProperty.call(__, 'default') ? __['default'] : __;
|
|
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
32
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
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
|
+
*/
|
|
59
44
|
|
|
60
|
-
|
|
61
|
-
|
|
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 : '"';
|
|
62
50
|
|
|
63
|
-
|
|
64
|
-
|
|
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
|
}
|
|
60
|
+
} else {
|
|
61
|
+
value = '';
|
|
62
|
+
}
|
|
76
63
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
}
|
|
64
|
+
if (keyValueGlue !== undefined) {
|
|
65
|
+
fragment += key + keyValueGlue;
|
|
66
|
+
}
|
|
80
67
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
68
|
+
fragment += wrapper + value + wrapper;
|
|
69
|
+
fragments.push(fragment);
|
|
70
|
+
});
|
|
84
71
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
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
|
-
|
|
92
|
-
|
|
93
|
-
|
|
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
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
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
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
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
|
-
|
|
114
|
-
|
|
115
|
-
|
|
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
|
|
119
103
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
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); data = data || {};
|
|
118
|
+
var buffer = "", stack1, helper, functionType="function", escapeExpression=this.escapeExpression;
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
buffer += "<div class=\"pdf-page hidden\" data-page=\"";
|
|
122
|
+
if (helper = helpers.page) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
123
|
+
else { helper = (depth0 && depth0.page); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
124
|
+
buffer += escapeExpression(stack1)
|
|
125
|
+
+ "\">\n <canvas class=\"pdf-content\"></canvas>\n <div class=\"pdf-text\"></div>\n</div>\n";
|
|
126
|
+
return buffer;
|
|
127
|
+
});
|
|
128
|
+
function pageTpl(data, options, asString) {
|
|
129
|
+
var html = Template(data, options);
|
|
130
|
+
return (asString || true) ? html : $(html);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* This program is free software; you can redistribute it and/or
|
|
135
|
+
* modify it under the terms of the GNU General Public License
|
|
136
|
+
* as published by the Free Software Foundation; under version 2
|
|
137
|
+
* of the License (non-upgradable).
|
|
138
|
+
*
|
|
139
|
+
* This program is distributed in the hope that it will be useful,
|
|
140
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
141
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
142
|
+
* GNU General Public License for more details.
|
|
143
|
+
*
|
|
144
|
+
* You should have received a copy of the GNU General Public License
|
|
145
|
+
* along with this program; if not, write to the Free Software
|
|
146
|
+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
147
|
+
*
|
|
148
|
+
* Copyright (c) 2016 (original work) Open Assessment Technologies SA ;
|
|
149
|
+
*/
|
|
150
|
+
/**
|
|
151
|
+
* The default scale factor
|
|
152
|
+
* @type {Number}
|
|
153
|
+
*/
|
|
154
|
+
|
|
155
|
+
var DEFAULT_SCALE = 1.0;
|
|
156
|
+
/**
|
|
157
|
+
* The minimum scale factor that allows a good experience
|
|
158
|
+
* @type {Number}
|
|
159
|
+
*/
|
|
160
|
+
|
|
161
|
+
var MIN_SCALE = 0.25;
|
|
162
|
+
/**
|
|
163
|
+
* The maximum allowed scale factor
|
|
164
|
+
* @type {Number}
|
|
165
|
+
*/
|
|
166
|
+
|
|
167
|
+
var MAX_SCALE = 10.0;
|
|
168
|
+
/**
|
|
169
|
+
* A conversion factor from printed to displayed
|
|
170
|
+
* @type {Number}
|
|
171
|
+
*/
|
|
172
|
+
|
|
173
|
+
var CSS_UNITS = 96.0 / 72.0;
|
|
174
|
+
/**
|
|
175
|
+
* Returns scale factor for the canvas.
|
|
176
|
+
* @param {CanvasRenderingContext2D} context
|
|
177
|
+
* @returns {Number}
|
|
178
|
+
*/
|
|
179
|
+
|
|
180
|
+
function getOutputScale(context) {
|
|
181
|
+
var devicePixelRatio = window.devicePixelRatio || 1;
|
|
182
|
+
var backingStoreRatio = context.backingStorePixelRatio || context.webkitBackingStorePixelRatio || context.mozBackingStorePixelRatio || context.msBackingStorePixelRatio || context.oBackingStorePixelRatio || 1;
|
|
183
|
+
return devicePixelRatio / backingStoreRatio;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Normalize a scale factor
|
|
187
|
+
* @param {Number} scale
|
|
188
|
+
* @returns {Number}
|
|
189
|
+
*/
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
function normalizeScale(scale) {
|
|
193
|
+
return Math.min(Math.max(MIN_SCALE, parseInt(scale, 10) || DEFAULT_SCALE), MAX_SCALE);
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Creates a page view
|
|
197
|
+
* @param {jQuery} $container
|
|
198
|
+
* @param {Object} config
|
|
199
|
+
* @param {Number} config.pageNum - The number of the page the view is displaying
|
|
200
|
+
* @param {Object} [config.textManager] - The textManager component that gives access to the text content
|
|
201
|
+
* @returns {Object}
|
|
202
|
+
*/
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
function pageViewFactory($container, config) {
|
|
206
|
+
var $pageView, $textLayer, $drawLayer;
|
|
207
|
+
var canvas, context, scale;
|
|
208
|
+
var textManager = null;
|
|
209
|
+
var rendered = false;
|
|
210
|
+
var pageNum;
|
|
211
|
+
var view = {
|
|
212
|
+
/**
|
|
213
|
+
* The page number that is attached to this view
|
|
214
|
+
* @type {Number}
|
|
215
|
+
*/
|
|
216
|
+
get pageNum() {
|
|
217
|
+
return pageNum;
|
|
218
|
+
},
|
|
141
219
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
* of the License (non-upgradable).
|
|
147
|
-
*
|
|
148
|
-
* This program is distributed in the hope that it will be useful,
|
|
149
|
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
150
|
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
151
|
-
* GNU General Public License for more details.
|
|
152
|
-
*
|
|
153
|
-
* You should have received a copy of the GNU General Public License
|
|
154
|
-
* along with this program; if not, write to the Free Software
|
|
155
|
-
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
156
|
-
*
|
|
157
|
-
* Copyright (c) 2016 (original work) Open Assessment Technologies SA ;
|
|
158
|
-
*/
|
|
159
|
-
/**
|
|
160
|
-
* The default scale factor
|
|
161
|
-
* @type {Number}
|
|
162
|
-
*/
|
|
220
|
+
set pageNum(num) {
|
|
221
|
+
pageNum = parseInt(num, 10);
|
|
222
|
+
$pageView.attr('data-page', num);
|
|
223
|
+
},
|
|
163
224
|
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
225
|
+
/**
|
|
226
|
+
* Whether the view has been rendered or not
|
|
227
|
+
* @returns {Boolean}
|
|
228
|
+
*/
|
|
229
|
+
isRendered: function isRendered() {
|
|
230
|
+
return rendered;
|
|
231
|
+
},
|
|
169
232
|
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
233
|
+
/**
|
|
234
|
+
* Gets the page container
|
|
235
|
+
* @returns {jQuery}
|
|
236
|
+
*/
|
|
237
|
+
getContainer: function getContainer() {
|
|
238
|
+
return $container;
|
|
239
|
+
},
|
|
175
240
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
241
|
+
/**
|
|
242
|
+
* Gets the page view element
|
|
243
|
+
* @returns {jQuery}
|
|
244
|
+
*/
|
|
245
|
+
getElement: function getElement() {
|
|
246
|
+
return $pageView;
|
|
247
|
+
},
|
|
181
248
|
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
249
|
+
/**
|
|
250
|
+
* Gets the draw layer element
|
|
251
|
+
* @returns {jQuery}
|
|
252
|
+
*/
|
|
253
|
+
getDrawLayerElement: function getDrawLayerElement() {
|
|
254
|
+
return $drawLayer;
|
|
255
|
+
},
|
|
188
256
|
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
* @param {Number} scale
|
|
197
|
-
* @returns {Number}
|
|
198
|
-
*/
|
|
257
|
+
/**
|
|
258
|
+
* Gets the text layer container
|
|
259
|
+
* @returns {jQuery}
|
|
260
|
+
*/
|
|
261
|
+
getTextLayerElement: function getTextLayerElement() {
|
|
262
|
+
return $textLayer;
|
|
263
|
+
},
|
|
199
264
|
|
|
265
|
+
/**
|
|
266
|
+
* Gets the canvas element
|
|
267
|
+
* @returns {HTMLElement}
|
|
268
|
+
*/
|
|
269
|
+
getCanvas: function getCanvas() {
|
|
270
|
+
return canvas;
|
|
271
|
+
},
|
|
200
272
|
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
* @param {Number} config.pageNum - The number of the page the view is displaying
|
|
209
|
-
* @param {Object} [config.textManager] - The textManager component that gives access to the text content
|
|
210
|
-
* @returns {Object}
|
|
211
|
-
*/
|
|
273
|
+
/**
|
|
274
|
+
* Gets the drawing context
|
|
275
|
+
* @returns {CanvasRenderingContext2D}
|
|
276
|
+
*/
|
|
277
|
+
getRenderingContext: function getRenderingContext() {
|
|
278
|
+
return context;
|
|
279
|
+
},
|
|
212
280
|
|
|
281
|
+
/**
|
|
282
|
+
* Sets the text manager
|
|
283
|
+
* @param {Object} manager
|
|
284
|
+
*/
|
|
285
|
+
setTextManager: function setTextManager(manager) {
|
|
286
|
+
textManager = manager;
|
|
287
|
+
},
|
|
213
288
|
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
/**
|
|
222
|
-
* The page number that is attached to this view
|
|
223
|
-
* @type {Number}
|
|
224
|
-
*/
|
|
225
|
-
get pageNum() {
|
|
226
|
-
return pageNum;
|
|
227
|
-
},
|
|
228
|
-
|
|
229
|
-
set pageNum(num) {
|
|
230
|
-
pageNum = parseInt(num, 10);
|
|
231
|
-
$pageView.attr('data-page', num);
|
|
232
|
-
},
|
|
233
|
-
|
|
234
|
-
/**
|
|
235
|
-
* Whether the view has been rendered or not
|
|
236
|
-
* @returns {Boolean}
|
|
237
|
-
*/
|
|
238
|
-
isRendered: function isRendered() {
|
|
239
|
-
return rendered;
|
|
240
|
-
},
|
|
241
|
-
|
|
242
|
-
/**
|
|
243
|
-
* Gets the page container
|
|
244
|
-
* @returns {jQuery}
|
|
245
|
-
*/
|
|
246
|
-
getContainer: function getContainer() {
|
|
247
|
-
return $container;
|
|
248
|
-
},
|
|
249
|
-
|
|
250
|
-
/**
|
|
251
|
-
* Gets the page view element
|
|
252
|
-
* @returns {jQuery}
|
|
253
|
-
*/
|
|
254
|
-
getElement: function getElement() {
|
|
255
|
-
return $pageView;
|
|
256
|
-
},
|
|
257
|
-
|
|
258
|
-
/**
|
|
259
|
-
* Gets the draw layer element
|
|
260
|
-
* @returns {jQuery}
|
|
261
|
-
*/
|
|
262
|
-
getDrawLayerElement: function getDrawLayerElement() {
|
|
263
|
-
return $drawLayer;
|
|
264
|
-
},
|
|
265
|
-
|
|
266
|
-
/**
|
|
267
|
-
* Gets the text layer container
|
|
268
|
-
* @returns {jQuery}
|
|
269
|
-
*/
|
|
270
|
-
getTextLayerElement: function getTextLayerElement() {
|
|
271
|
-
return $textLayer;
|
|
272
|
-
},
|
|
273
|
-
|
|
274
|
-
/**
|
|
275
|
-
* Gets the canvas element
|
|
276
|
-
* @returns {HTMLElement}
|
|
277
|
-
*/
|
|
278
|
-
getCanvas: function getCanvas() {
|
|
279
|
-
return canvas;
|
|
280
|
-
},
|
|
281
|
-
|
|
282
|
-
/**
|
|
283
|
-
* Gets the drawing context
|
|
284
|
-
* @returns {CanvasRenderingContext2D}
|
|
285
|
-
*/
|
|
286
|
-
getRenderingContext: function getRenderingContext() {
|
|
287
|
-
return context;
|
|
288
|
-
},
|
|
289
|
-
|
|
290
|
-
/**
|
|
291
|
-
* Sets the text manager
|
|
292
|
-
* @param {Object} manager
|
|
293
|
-
*/
|
|
294
|
-
setTextManager: function setTextManager(manager) {
|
|
295
|
-
textManager = manager;
|
|
296
|
-
},
|
|
297
|
-
|
|
298
|
-
/**
|
|
299
|
-
* Gets the text manager
|
|
300
|
-
* @returns {Object}
|
|
301
|
-
*/
|
|
302
|
-
getTextManager: function getTextManager() {
|
|
303
|
-
return textManager;
|
|
304
|
-
},
|
|
305
|
-
|
|
306
|
-
/**
|
|
307
|
-
* Renders a page into the view
|
|
308
|
-
* @param {Object} page - The PDF page definition
|
|
309
|
-
* @param {Boolean} [fitToWidth] - Force the page view to fit its container width, without respect of the container height
|
|
310
|
-
* @returns {Promise}
|
|
311
|
-
*/
|
|
312
|
-
render: function render(page, fitToWidth) {
|
|
313
|
-
var viewport, textViewport, renderContext;
|
|
314
|
-
var promises = [];
|
|
315
|
-
var renderScale = scale * CSS_UNITS;
|
|
316
|
-
rendered = false;
|
|
317
|
-
viewport = page.getViewport(renderScale);
|
|
318
|
-
renderContext = {
|
|
319
|
-
canvasContext: view.getRenderingContext(),
|
|
320
|
-
viewport: viewport
|
|
321
|
-
};
|
|
322
|
-
adjustSize(viewport, fitToWidth);
|
|
323
|
-
promises.push(page.render(renderContext).promise);
|
|
324
|
-
|
|
325
|
-
if (textManager) {
|
|
326
|
-
$textLayer.empty();
|
|
327
|
-
textViewport = viewport.clone({
|
|
328
|
-
scale: renderScale * $textLayer.width() / viewport.width
|
|
329
|
-
});
|
|
330
|
-
promises.push(textManager.renderPage(page.pageIndex + 1, textViewport).then(function (renderedContent) {
|
|
331
|
-
if ($textLayer) {
|
|
332
|
-
$textLayer.append(renderedContent);
|
|
333
|
-
}
|
|
334
|
-
}));
|
|
335
|
-
}
|
|
289
|
+
/**
|
|
290
|
+
* Gets the text manager
|
|
291
|
+
* @returns {Object}
|
|
292
|
+
*/
|
|
293
|
+
getTextManager: function getTextManager() {
|
|
294
|
+
return textManager;
|
|
295
|
+
},
|
|
336
296
|
|
|
337
|
-
|
|
338
|
-
|
|
297
|
+
/**
|
|
298
|
+
* Renders a page into the view
|
|
299
|
+
* @param {Object} page - The PDF page definition
|
|
300
|
+
* @param {Boolean} [fitToWidth] - Force the page view to fit its container width, without respect of the container height
|
|
301
|
+
* @returns {Promise}
|
|
302
|
+
*/
|
|
303
|
+
render: function render(page, fitToWidth) {
|
|
304
|
+
var viewport, textViewport, renderContext;
|
|
305
|
+
var promises = [];
|
|
306
|
+
var renderScale = scale * CSS_UNITS;
|
|
307
|
+
rendered = false;
|
|
308
|
+
viewport = page.getViewport(renderScale);
|
|
309
|
+
renderContext = {
|
|
310
|
+
canvasContext: view.getRenderingContext(),
|
|
311
|
+
viewport: viewport
|
|
312
|
+
};
|
|
313
|
+
adjustSize(viewport, fitToWidth);
|
|
314
|
+
promises.push(page.render(renderContext).promise);
|
|
315
|
+
|
|
316
|
+
if (textManager) {
|
|
317
|
+
$textLayer.empty();
|
|
318
|
+
textViewport = viewport.clone({
|
|
319
|
+
scale: renderScale * $textLayer.width() / viewport.width
|
|
339
320
|
});
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
show: function show() {
|
|
346
|
-
hider.show($pageView);
|
|
347
|
-
},
|
|
348
|
-
|
|
349
|
-
/**
|
|
350
|
-
* Hides the page
|
|
351
|
-
*/
|
|
352
|
-
hide: function hide() {
|
|
353
|
-
hider.hide($pageView);
|
|
354
|
-
},
|
|
355
|
-
|
|
356
|
-
/**
|
|
357
|
-
* Removes and destroys the page view
|
|
358
|
-
*/
|
|
359
|
-
destroy: function destroy() {
|
|
360
|
-
$pageView.remove();
|
|
361
|
-
$container = null;
|
|
362
|
-
$pageView = null;
|
|
363
|
-
$textLayer = null;
|
|
364
|
-
$drawLayer = null;
|
|
365
|
-
canvas = null;
|
|
366
|
-
context = null;
|
|
367
|
-
textManager = null;
|
|
368
|
-
config = null;
|
|
321
|
+
promises.push(textManager.renderPage(page.pageIndex + 1, textViewport).then(function (renderedContent) {
|
|
322
|
+
if ($textLayer) {
|
|
323
|
+
$textLayer.append(renderedContent);
|
|
324
|
+
}
|
|
325
|
+
}));
|
|
369
326
|
}
|
|
370
|
-
|
|
327
|
+
|
|
328
|
+
return Promise.all(promises).then(function () {
|
|
329
|
+
rendered = true;
|
|
330
|
+
});
|
|
331
|
+
},
|
|
332
|
+
|
|
371
333
|
/**
|
|
372
|
-
*
|
|
373
|
-
* @param {Object} viewport - The PDF page viewport
|
|
374
|
-
* @param {Boolean} fitToWidth - Force the page view to fit its container width, without respect of the container height
|
|
334
|
+
* Shows the page
|
|
375
335
|
*/
|
|
336
|
+
show: function show() {
|
|
337
|
+
hider.show($pageView);
|
|
338
|
+
},
|
|
376
339
|
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
340
|
+
/**
|
|
341
|
+
* Hides the page
|
|
342
|
+
*/
|
|
343
|
+
hide: function hide() {
|
|
344
|
+
hider.hide($pageView);
|
|
345
|
+
},
|
|
383
346
|
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
347
|
+
/**
|
|
348
|
+
* Removes and destroys the page view
|
|
349
|
+
*/
|
|
350
|
+
destroy: function destroy() {
|
|
351
|
+
$pageView.remove();
|
|
352
|
+
$container = null;
|
|
353
|
+
$pageView = null;
|
|
354
|
+
$textLayer = null;
|
|
355
|
+
$drawLayer = null;
|
|
356
|
+
canvas = null;
|
|
357
|
+
context = null;
|
|
358
|
+
textManager = null;
|
|
359
|
+
config = null;
|
|
360
|
+
}
|
|
361
|
+
};
|
|
362
|
+
/**
|
|
363
|
+
* Adjust the size of the page view to fit its container with respect to the provided viewport
|
|
364
|
+
* @param {Object} viewport - The PDF page viewport
|
|
365
|
+
* @param {Boolean} fitToWidth - Force the page view to fit its container width, without respect of the container height
|
|
366
|
+
*/
|
|
367
|
+
|
|
368
|
+
function adjustSize(viewport, fitToWidth) {
|
|
369
|
+
var ratio = viewport.width / (viewport.height || 1) || 1;
|
|
370
|
+
var parentWidth = $container.width();
|
|
371
|
+
var parentHeight = $container.height();
|
|
372
|
+
var parentOffset = $container.offset();
|
|
373
|
+
var width, height;
|
|
374
|
+
|
|
375
|
+
function setSize(w, h) {
|
|
376
|
+
$pageView.width(w).height(h).offset({
|
|
377
|
+
left: parentOffset.left + Math.max(0, (parentWidth - w) / 2)
|
|
378
|
+
});
|
|
379
|
+
$drawLayer.width(w).height(h);
|
|
380
|
+
$textLayer.width(w).height(h);
|
|
381
|
+
}
|
|
391
382
|
|
|
392
|
-
|
|
383
|
+
if (fitToWidth) {
|
|
384
|
+
width = parentWidth;
|
|
385
|
+
height = width / ratio;
|
|
386
|
+
|
|
387
|
+
if (height > parentHeight) {
|
|
388
|
+
setSize(Math.max(1, parentWidth / 2), height);
|
|
389
|
+
parentWidth = $container.prop('scrollWidth');
|
|
393
390
|
width = parentWidth;
|
|
394
391
|
height = width / ratio;
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
height = width / ratio;
|
|
401
|
-
}
|
|
392
|
+
}
|
|
393
|
+
} else {
|
|
394
|
+
if (ratio >= 1) {
|
|
395
|
+
height = Math.min(parentHeight, parentWidth / ratio);
|
|
396
|
+
width = Math.min(parentWidth, height * ratio);
|
|
402
397
|
} else {
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
width = Math.min(parentWidth, height * ratio);
|
|
406
|
-
} else {
|
|
407
|
-
width = Math.min(parentWidth, parentHeight * ratio);
|
|
408
|
-
height = Math.min(parentHeight, width / ratio);
|
|
409
|
-
}
|
|
398
|
+
width = Math.min(parentWidth, parentHeight * ratio);
|
|
399
|
+
height = Math.min(parentHeight, width / ratio);
|
|
410
400
|
}
|
|
411
|
-
|
|
412
|
-
setSize(width, height);
|
|
413
|
-
canvas.width = viewport.width;
|
|
414
|
-
canvas.height = viewport.height;
|
|
415
401
|
}
|
|
416
402
|
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
$pageView = $$1(pageTpl({
|
|
421
|
-
page: pageNum
|
|
422
|
-
}));
|
|
423
|
-
$textLayer = $pageView.find('.pdf-text');
|
|
424
|
-
$drawLayer = $pageView.find('canvas');
|
|
425
|
-
canvas = $drawLayer.get(0);
|
|
426
|
-
context = canvas.getContext('2d');
|
|
427
|
-
scale = normalizeScale(getOutputScale(context) * DEFAULT_SCALE); // the page view is automatically added to its container
|
|
428
|
-
|
|
429
|
-
$container.append($pageView);
|
|
430
|
-
return view;
|
|
403
|
+
setSize(width, height);
|
|
404
|
+
canvas.width = viewport.width;
|
|
405
|
+
canvas.height = viewport.height;
|
|
431
406
|
}
|
|
432
407
|
|
|
433
|
-
|
|
408
|
+
config = config || {};
|
|
409
|
+
textManager = config.textManager;
|
|
410
|
+
pageNum = config.pageNum;
|
|
411
|
+
$pageView = $$1(pageTpl({
|
|
412
|
+
page: pageNum
|
|
413
|
+
}));
|
|
414
|
+
$textLayer = $pageView.find('.pdf-text');
|
|
415
|
+
$drawLayer = $pageView.find('canvas');
|
|
416
|
+
canvas = $drawLayer.get(0);
|
|
417
|
+
context = canvas.getContext('2d');
|
|
418
|
+
scale = normalizeScale(getOutputScale(context) * DEFAULT_SCALE); // the page view is automatically added to its container
|
|
419
|
+
|
|
420
|
+
$container.append($pageView);
|
|
421
|
+
return view;
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
return pageViewFactory;
|
|
434
425
|
|
|
435
426
|
});
|