@oat-sa/tao-core-ui 1.60.2 → 1.62.0
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/LICENSE +339 -339
- package/README.md +23 -18
- package/dist/actionbar.js +393 -410
- package/dist/adder.js +143 -156
- package/dist/animable/absorbable/absorbable.js +208 -211
- package/dist/animable/absorbable/css/absorb.css +7 -8
- package/dist/animable/absorbable/css/absorb.css.map +1 -1
- package/dist/animable/pulsable/css/pulse.css +7 -7
- package/dist/animable/pulsable/css/pulse.css.map +1 -1
- package/dist/animable/pulsable/pulsable.js +174 -174
- package/dist/areaBroker.js +59 -72
- package/dist/autocomplete/css/autocomplete.css +7 -8
- package/dist/autocomplete/css/autocomplete.css.map +1 -1
- package/dist/autocomplete.js +494 -604
- package/dist/autoscroll.js +23 -25
- package/dist/badge/badge.js +201 -199
- package/dist/badge/css/badge.css +7 -8
- package/dist/badge/css/badge.css.map +1 -1
- package/dist/breadcrumbs/css/breadcrumbs.css +7 -7
- package/dist/breadcrumbs/css/breadcrumbs.css.map +1 -1
- package/dist/breadcrumbs.js +286 -285
- package/dist/btngrouper.js +83 -95
- package/dist/bulkActionPopup/css/bulkActionPopup.css +7 -7
- package/dist/bulkActionPopup/css/bulkActionPopup.css.map +1 -1
- package/dist/bulkActionPopup.js +503 -503
- package/dist/button.js +300 -293
- package/dist/calculator/css/calculator.css +10 -10
- package/dist/calculator/css/calculator.css.map +1 -1
- package/dist/calculator.js +59 -72
- package/dist/cascadingComboBox.js +257 -256
- package/dist/ckeditor/ckConfigurator.js +130 -154
- package/dist/ckeditor/dtdHandler.js +305 -345
- package/dist/class/css/selector.css +7 -7
- package/dist/class/css/selector.css.map +1 -1
- package/dist/class/selector.js +437 -470
- package/dist/component/alignable.js +97 -121
- package/dist/component/containable.js +53 -58
- package/dist/component/css/components.css +7 -7
- package/dist/component/css/components.css.map +1 -1
- package/dist/component/css/windowComponent.css +7 -7
- package/dist/component/css/windowComponent.css.map +1 -1
- package/dist/component/draggable.js +34 -36
- package/dist/component/placeable.js +84 -102
- package/dist/component/resizable.js +79 -89
- package/dist/component/stackable.js +21 -27
- package/dist/component/windowed.js +284 -297
- package/dist/component.js +439 -467
- package/dist/container.js +79 -98
- package/dist/contextualPopup/css/contextualPopup.css +7 -7
- package/dist/contextualPopup/css/contextualPopup.css.map +1 -1
- package/dist/contextualPopup.js +417 -436
- package/dist/dashboard/css/dashboard.css +7 -7
- package/dist/dashboard/css/dashboard.css.map +1 -1
- package/dist/dashboard.js +302 -305
- package/dist/datalist/css/datalist.css +7 -7
- package/dist/datalist/css/datalist.css.map +1 -1
- package/dist/datalist.js +783 -791
- package/dist/datatable/css/datatable.css +11 -7
- package/dist/datatable/css/datatable.css.map +1 -1
- package/dist/datatable/filterStrategy/filterStrategy.js +28 -30
- package/dist/datatable/filterStrategy/multiple.js +26 -45
- package/dist/datatable/filterStrategy/single.js +28 -40
- package/dist/datatable.js +1591 -1616
- package/dist/dateRange/css/dateRange.css +7 -7
- package/dist/dateRange/css/dateRange.css.map +1 -1
- package/dist/dateRange/dateRange.js +398 -412
- package/dist/datetime/css/picker.css +7 -7
- package/dist/datetime/css/picker.css.map +1 -1
- package/dist/datetime/picker.js +670 -703
- package/dist/deleter.js +383 -398
- package/dist/destination/css/selector.css +7 -7
- package/dist/destination/css/selector.css.map +1 -1
- package/dist/destination/selector.js +295 -293
- package/dist/dialog/alert.js +30 -32
- package/dist/dialog/confirm.js +29 -32
- package/dist/dialog/confirmDelete.js +223 -221
- package/dist/dialog.js +651 -695
- package/dist/disabler.js +108 -119
- package/dist/documentViewer/css/documentViewer.css +7 -7
- package/dist/documentViewer/css/documentViewer.css.map +1 -1
- package/dist/documentViewer/providers/pdfViewer/fallback/viewer.js +172 -169
- package/dist/documentViewer/providers/pdfViewer/pdfjs/areaBroker.js +32 -29
- package/dist/documentViewer/providers/pdfViewer/pdfjs/findBar.js +523 -564
- package/dist/documentViewer/providers/pdfViewer/pdfjs/pageView.js +376 -393
- package/dist/documentViewer/providers/pdfViewer/pdfjs/pagesManager.js +53 -68
- package/dist/documentViewer/providers/pdfViewer/pdfjs/searchEngine.js +517 -567
- package/dist/documentViewer/providers/pdfViewer/pdfjs/textManager.js +73 -96
- package/dist/documentViewer/providers/pdfViewer/pdfjs/viewer.js +381 -392
- package/dist/documentViewer/providers/pdfViewer/pdfjs/wrapper.js +125 -152
- package/dist/documentViewer/providers/pdfViewer.js +189 -191
- package/dist/documentViewer/viewerFactory.js +76 -81
- package/dist/documentViewer.js +303 -311
- package/dist/dropdown/css/dropdown.css +7 -7
- package/dist/dropdown/css/dropdown.css.map +1 -1
- package/dist/dropdown.js +392 -412
- package/dist/durationer.js +77 -85
- package/dist/dynamicComponent/css/dynamicComponent.css +7 -7
- package/dist/dynamicComponent/css/dynamicComponent.css.map +1 -1
- package/dist/dynamicComponent.js +595 -630
- package/dist/feedback.js +365 -375
- package/dist/figure/FigureStateActive.js +246 -296
- package/dist/filesender.js +44 -54
- package/dist/filter.js +244 -240
- package/dist/form/css/dropdownForm.css +7 -7
- package/dist/form/css/dropdownForm.css.map +1 -1
- package/dist/form/css/form.css +7 -7
- package/dist/form/css/form.css.map +1 -1
- package/dist/form/dropdownForm.js +357 -362
- package/dist/form/form.js +703 -984
- package/dist/form/simpleForm.js +74 -77
- package/dist/form/validator/css/validator.css +7 -7
- package/dist/form/validator/css/validator.css.map +1 -1
- package/dist/form/validator/renderer.js +235 -241
- package/dist/form/validator/validator.js +181 -267
- package/dist/form/widget/css/widget.css +7 -7
- package/dist/form/widget/css/widget.css.map +1 -1
- package/dist/form/widget/definitions.js +27 -28
- package/dist/form/widget/loader.js +16 -16
- package/dist/form/widget/providers/checkBox.js +257 -264
- package/dist/form/widget/providers/comboBox.js +194 -193
- package/dist/form/widget/providers/default.js +44 -50
- package/dist/form/widget/providers/hidden.js +179 -176
- package/dist/form/widget/providers/hiddenBox.js +262 -272
- package/dist/form/widget/providers/radioBox.js +222 -223
- package/dist/form/widget/providers/textArea.js +197 -193
- package/dist/form/widget/providers/textBox.js +36 -37
- package/dist/form/widget/widget.js +480 -508
- package/dist/form.js +12 -17
- package/dist/formValidator/formValidator.js +74 -91
- package/dist/formValidator/highlighters/highlighter.js +43 -51
- package/dist/formValidator/highlighters/message.js +31 -32
- package/dist/formValidator/highlighters/tooltip.js +33 -35
- package/dist/generis/form/css/form.css +7 -7
- package/dist/generis/form/css/form.css.map +1 -1
- package/dist/generis/form/form.js +323 -331
- package/dist/generis/validator/css/validator.css +7 -7
- package/dist/generis/validator/css/validator.css.map +1 -1
- package/dist/generis/validator/validator.js +215 -216
- package/dist/generis/widget/checkBox/checkBox.js +227 -225
- package/dist/generis/widget/comboBox/comboBox.js +189 -183
- package/dist/generis/widget/css/widget.css +7 -7
- package/dist/generis/widget/css/widget.css.map +1 -1
- package/dist/generis/widget/hiddenBox/hiddenBox.js +231 -232
- package/dist/generis/widget/loader.js +21 -23
- package/dist/generis/widget/textBox/textBox.js +178 -172
- package/dist/generis/widget/widget.js +255 -266
- package/dist/groupedComboBox.js +231 -226
- package/dist/groupvalidator.js +30 -34
- package/dist/hider.js +43 -50
- package/dist/highlighter.js +946 -1057
- package/dist/image/ImgStateActive/extractLabel.js +20 -21
- package/dist/image/ImgStateActive/helper.js +21 -25
- package/dist/image/ImgStateActive/initHelper.js +133 -162
- package/dist/image/ImgStateActive/initMediaEditor.js +72 -92
- package/dist/image/ImgStateActive/mediaSizer.js +48 -58
- package/dist/image/ImgStateActive.js +185 -215
- package/dist/incrementer.js +91 -110
- package/dist/inplacer.js +108 -132
- package/dist/interactUtils.js +56 -67
- package/dist/itemButtonList/css/item-button-list.css +23 -24
- package/dist/itemButtonList/css/item-button-list.css.map +1 -1
- package/dist/itemButtonList.js +444 -469
- package/dist/keyNavigation/navigableDomElement.js +124 -158
- package/dist/keyNavigation/navigator.js +235 -312
- package/dist/listbox/css/listbox.css +7 -7
- package/dist/listbox/css/listbox.css.map +1 -1
- package/dist/listbox.js +463 -476
- package/dist/liststyler.js +75 -76
- package/dist/loadingButton/css/button.css +7 -7
- package/dist/loadingButton/css/button.css.map +1 -1
- package/dist/loadingButton/loadingButton.js +219 -218
- package/dist/lock.js +484 -509
- package/dist/login/login.js +471 -486
- package/dist/maths/calculator/basicCalculator.js +247 -242
- package/dist/maths/calculator/calculatorComponent.js +34 -36
- package/dist/maths/calculator/core/areaBroker.js +30 -28
- package/dist/maths/calculator/core/board.js +805 -872
- package/dist/maths/calculator/core/expression.js +500 -518
- package/dist/maths/calculator/core/labels.js +240 -235
- package/dist/maths/calculator/core/plugin.js +20 -20
- package/dist/maths/calculator/core/terms.js +27 -27
- package/dist/maths/calculator/core/tokenizer.js +119 -132
- package/dist/maths/calculator/core/tokens.js +157 -168
- package/dist/maths/calculator/css/calculator.css +7 -7
- package/dist/maths/calculator/css/calculator.css.map +1 -1
- package/dist/maths/calculator/defaultCalculator.js +24 -27
- package/dist/maths/calculator/plugins/core/degrad.js +22 -30
- package/dist/maths/calculator/plugins/core/history.js +55 -67
- package/dist/maths/calculator/plugins/core/remind.js +22 -25
- package/dist/maths/calculator/plugins/core/stepNavigation.js +33 -49
- package/dist/maths/calculator/plugins/keyboard/templateKeyboard/templateKeyboard.js +255 -258
- package/dist/maths/calculator/plugins/modifiers/pow10.js +47 -52
- package/dist/maths/calculator/plugins/modifiers/sign.js +103 -130
- package/dist/maths/calculator/plugins/screen/simpleScreen/simpleScreen.js +288 -293
- package/dist/maths/calculator/pluginsLoader.js +22 -22
- package/dist/maths/calculator/scientificCalculator.js +339 -334
- package/dist/mediaEditor/mediaEditorComponent.js +244 -249
- package/dist/mediaEditor/plugins/mediaAlignment/helper.js +28 -33
- package/dist/mediaEditor/plugins/mediaAlignment/mediaAlignmentComponent.js +228 -236
- package/dist/mediaEditor/plugins/mediaAlignment/style.css +7 -7
- package/dist/mediaEditor/plugins/mediaDimension/helper.js +81 -106
- package/dist/mediaEditor/plugins/mediaDimension/mediaDimensionComponent.js +597 -635
- package/dist/mediaEditor/plugins/mediaDimension/style.css +141 -141
- package/dist/mediaplayer/css/player.css +7 -7
- package/dist/mediaplayer/css/player.css.map +1 -1
- package/dist/mediaplayer/players/html5.js +646 -706
- package/dist/mediaplayer/players/youtube.js +393 -438
- package/dist/mediaplayer/players.js +19 -19
- package/dist/mediaplayer/support.js +66 -79
- package/dist/mediaplayer/utils/reminder.js +117 -128
- package/dist/mediaplayer/utils/timeObserver.js +106 -109
- package/dist/mediaplayer/youtubeManager.js +142 -170
- package/dist/mediaplayer.js +1484 -1774
- package/dist/mediasizer.js +633 -676
- package/dist/modal.js +137 -153
- package/dist/movableComponent.js +37 -37
- package/dist/pageSizeSelector.js +231 -224
- package/dist/pageStatus.js +43 -46
- package/dist/pagination/css/pagination.css +7 -7
- package/dist/pagination/css/pagination.css.map +1 -1
- package/dist/pagination/paginationStrategy.js +24 -25
- package/dist/pagination/providers/pages.js +281 -291
- package/dist/pagination/providers/simple.js +202 -196
- package/dist/pagination.js +49 -72
- package/dist/previewer.js +113 -138
- package/dist/progressbar.js +70 -80
- package/dist/propertySelector/css/propertySelector.css +74 -0
- package/dist/propertySelector/css/propertySelector.css.map +1 -0
- package/dist/propertySelector/propertySelector.js +489 -0
- package/dist/report.js +356 -359
- package/dist/resource/css/selector.css +7 -7
- package/dist/resource/css/selector.css.map +1 -1
- package/dist/resource/filters.js +275 -289
- package/dist/resource/list.js +1589 -1371
- package/dist/resource/selectable.js +101 -136
- package/dist/resource/selector.js +855 -914
- package/dist/resource/tree.js +1796 -1612
- package/dist/resourcemgr/css/resourcemgr.css +7 -7
- package/dist/resourcemgr/css/resourcemgr.css.map +1 -1
- package/dist/resourcemgr/fileBrowser.js +540 -587
- package/dist/resourcemgr/filePreview.js +16 -25
- package/dist/resourcemgr/fileSelector.js +520 -547
- package/dist/resourcemgr/util/updatePermissions.js +10 -18
- package/dist/resourcemgr.js +325 -332
- package/dist/scroller.js +29 -33
- package/dist/searchModal/advancedSearch.js +949 -833
- package/dist/searchModal/css/advancedSearch.css +7 -14
- package/dist/searchModal/css/advancedSearch.css.map +1 -1
- package/dist/searchModal/css/searchModal.css +28 -8
- package/dist/searchModal/css/searchModal.css.map +1 -1
- package/dist/searchModal.js +616 -335
- package/dist/selecter.js +21 -28
- package/dist/stacker.js +52 -60
- package/dist/switch/css/switch.css +7 -7
- package/dist/switch/css/switch.css.map +1 -1
- package/dist/switch/switch.js +305 -311
- package/dist/tableModel.js +39 -49
- package/dist/tabs/css/tabs.css +12 -12
- package/dist/tabs/css/tabs.css.map +1 -1
- package/dist/tabs.js +588 -639
- package/dist/taskQueue/css/taskQueue.css +7 -7
- package/dist/taskQueue/css/taskQueue.css.map +1 -1
- package/dist/taskQueue/status.js +317 -322
- package/dist/taskQueue/table.js +383 -394
- package/dist/taskQueue/taskQueue.js +19 -19
- package/dist/taskQueue/taskQueueModel.js +459 -538
- package/dist/taskQueue.js +49 -67
- package/dist/taskQueueButton/css/taskable.css +7 -7
- package/dist/taskQueueButton/css/taskable.css.map +1 -1
- package/dist/taskQueueButton/css/treeButton.css +7 -7
- package/dist/taskQueueButton/css/treeButton.css.map +1 -1
- package/dist/taskQueueButton/standardButton.js +45 -43
- package/dist/taskQueueButton/taskable.js +267 -272
- package/dist/taskQueueButton/treeButton.js +200 -198
- package/dist/themeLoader.js +109 -129
- package/dist/themes.js +86 -100
- package/dist/toggler.js +76 -88
- package/dist/tooltip.js +296 -311
- package/dist/tooltipster.js +17 -17
- package/dist/transformer.js +140 -169
- package/dist/tristateCheckboxGroup/css/tristateCheckboxGroup.css +7 -7
- package/dist/tristateCheckboxGroup/css/tristateCheckboxGroup.css.map +1 -1
- package/dist/tristateCheckboxGroup.js +319 -325
- package/dist/uploader.js +691 -724
- package/dist/validator/Report.js +1 -2
- package/dist/validator/Validator.js +6 -25
- package/dist/validator/validators.js +66 -80
- package/dist/validator.js +218 -254
- package/dist/waitForMedia.js +45 -51
- package/dist/waitingDialog/css/waitingDialog.css +7 -7
- package/dist/waitingDialog/css/waitingDialog.css.map +1 -1
- package/dist/waitingDialog/waitingDialog.js +59 -77
- package/package.json +109 -107
- package/scss/basic.scss +16 -16
- package/scss/ckeditor/skins/tao/scss/inc/_ck-icons.scss +59 -59
- package/scss/ckeditor/skins/tao/scss/inc/_tao.scss +59 -59
- package/scss/font/tao/tao.svg +234 -234
- package/scss/inc/_base.scss +495 -495
- package/scss/inc/_bootstrap.scss +6 -6
- package/scss/inc/_buttons.scss +114 -114
- package/scss/inc/_colors.scss +93 -88
- package/scss/inc/_feedback.scss +150 -150
- package/scss/inc/_flex-grid.scss +15 -15
- package/scss/inc/_fonts.scss +4 -4
- package/scss/inc/_forms.scss +832 -832
- package/scss/inc/_functions.scss +283 -283
- package/scss/inc/_jquery.nouislider.scss +254 -254
- package/scss/inc/_normalize.scss +528 -528
- package/scss/inc/_report.scss +67 -67
- package/scss/inc/_secondary-properties.scss +89 -89
- package/scss/inc/_select2.scss +634 -634
- package/scss/inc/_toolbars.scss +155 -155
- package/scss/inc/_tooltip.scss +312 -312
- package/scss/inc/_variables.scss +21 -21
- package/scss/inc/base/_highlight.scss +5 -5
- package/scss/inc/base/_list-style.scss +58 -58
- package/scss/inc/base/_svg.scss +3 -3
- package/scss/inc/base/_table.scss +62 -62
- package/scss/inc/fonts/_source-sans-pro.scss +29 -29
- package/scss/inc/fonts/_tao-icon-classes.scss +226 -226
- package/scss/inc/fonts/_tao-icon-def.scss +12 -12
- package/scss/inc/fonts/_tao-icon-vars.scss +240 -240
- package/src/actionbar/tpl/main.tpl +8 -8
- package/src/actionbar.js +251 -251
- package/src/adder.js +250 -250
- package/src/animable/absorbable/absorbable.js +134 -134
- package/src/animable/absorbable/css/absorb.css +7 -8
- package/src/animable/absorbable/css/absorb.css.map +1 -1
- package/src/animable/absorbable/scss/absorb.scss +37 -37
- package/src/animable/pulsable/css/pulse.css +7 -7
- package/src/animable/pulsable/css/pulse.css.map +1 -1
- package/src/animable/pulsable/pulsable.js +90 -90
- package/src/animable/pulsable/scss/pulse.scss +22 -22
- package/src/areaBroker.js +160 -160
- package/src/autocomplete/css/autocomplete.css +7 -8
- package/src/autocomplete/css/autocomplete.css.map +1 -1
- package/src/autocomplete/scss/autocomplete.scss +37 -37
- package/src/autocomplete.js +1029 -1029
- package/src/autoscroll.js +57 -57
- package/src/badge/badge.js +119 -119
- package/src/badge/css/badge.css +7 -8
- package/src/badge/css/badge.css.map +1 -1
- package/src/badge/scss/badge.scss +92 -92
- package/src/badge/tpl/badge.tpl +4 -4
- package/src/breadcrumbs/css/breadcrumbs.css +7 -7
- package/src/breadcrumbs/css/breadcrumbs.css.map +1 -1
- package/src/breadcrumbs/scss/breadcrumbs.scss +52 -52
- package/src/breadcrumbs/tpl/breadcrumbs.tpl +20 -20
- package/src/breadcrumbs.js +99 -99
- package/src/btngrouper.js +213 -213
- package/src/bulkActionPopup/css/bulkActionPopup.css +7 -7
- package/src/bulkActionPopup/css/bulkActionPopup.css.map +1 -1
- package/src/bulkActionPopup/scss/bulkActionPopup.scss +63 -63
- package/src/bulkActionPopup/tpl/layout.tpl +76 -76
- package/src/bulkActionPopup/tpl/select.tpl +8 -8
- package/src/bulkActionPopup.js +274 -274
- package/src/button/tpl/button.tpl +4 -4
- package/src/button.js +135 -135
- package/src/calculator/css/calculator.css +10 -10
- package/src/calculator/css/calculator.css.map +1 -1
- package/src/calculator/scss/calculator.scss +139 -139
- package/src/calculator.js +188 -188
- package/src/cascadingComboBox.js +126 -126
- package/src/ckeditor/ckConfigurator.js +736 -736
- package/src/ckeditor/dtdHandler.js +1030 -1030
- package/src/class/css/selector.css +7 -7
- package/src/class/css/selector.css.map +1 -1
- package/src/class/scss/selector.scss +101 -101
- package/src/class/selector.js +329 -329
- package/src/class/tpl/listItem.tpl +9 -9
- package/src/class/tpl/selector.tpl +10 -10
- package/src/component/alignable.js +274 -274
- package/src/component/containable.js +122 -122
- package/src/component/css/components.css +7 -7
- package/src/component/css/components.css.map +1 -1
- package/src/component/css/windowComponent.css +7 -7
- package/src/component/css/windowComponent.css.map +1 -1
- package/src/component/draggable.js +104 -104
- package/src/component/placeable.js +233 -233
- package/src/component/resizable.js +195 -195
- package/src/component/scss/components.scss +507 -507
- package/src/component/scss/windowComponent.scss +62 -62
- package/src/component/stackable.js +67 -67
- package/src/component/tpl/window.tpl +7 -7
- package/src/component/windowed.js +206 -206
- package/src/component.js +401 -401
- package/src/container.js +200 -200
- package/src/contextualPopup/css/contextualPopup.css +7 -7
- package/src/contextualPopup/css/contextualPopup.css.map +1 -1
- package/src/contextualPopup/scss/contextualPopup.scss +78 -78
- package/src/contextualPopup/tpl/popup.tpl +10 -10
- package/src/contextualPopup.js +297 -297
- package/src/css/basic.css +103 -106
- package/src/css/basic.css.map +1 -1
- package/src/dashboard/css/dashboard.css +7 -7
- package/src/dashboard/css/dashboard.css.map +1 -1
- package/src/dashboard/scss/dashboard.scss +93 -93
- package/src/dashboard/tpl/dashboard.tpl +16 -16
- package/src/dashboard/tpl/dashboardMetricsList.tpl +15 -15
- package/src/dashboard.js +184 -184
- package/src/datalist/css/datalist.css +7 -7
- package/src/datalist/css/datalist.css.map +1 -1
- package/src/datalist/scss/datalist.scss +116 -116
- package/src/datalist/tpl/list.tpl +24 -24
- package/src/datalist/tpl/main.tpl +44 -44
- package/src/datalist.js +500 -500
- package/src/datatable/css/datatable.css +11 -7
- package/src/datatable/css/datatable.css.map +1 -1
- package/src/datatable/filterStrategy/filterStrategy.js +70 -70
- package/src/datatable/filterStrategy/multiple.js +126 -126
- package/src/datatable/filterStrategy/single.js +108 -108
- package/src/datatable/scss/datatable.scss +149 -146
- package/src/datatable/tpl/button.tpl +6 -6
- package/src/datatable/tpl/layout.tpl +158 -158
- package/src/datatable.js +1056 -1056
- package/src/dateRange/css/dateRange.css +7 -7
- package/src/dateRange/css/dateRange.css.map +1 -1
- package/src/dateRange/dateRange.js +341 -341
- package/src/dateRange/scss/dateRange.scss +7 -7
- package/src/dateRange/tpl/select.tpl +18 -18
- package/src/datetime/css/picker.css +7 -7
- package/src/datetime/css/picker.css.map +1 -1
- package/src/datetime/picker.js +576 -576
- package/src/datetime/scss/picker.scss +192 -192
- package/src/datetime/tpl/picker.tpl +18 -18
- package/src/deleter/undo.tpl +6 -6
- package/src/deleter.js +296 -296
- package/src/destination/css/selector.css +7 -7
- package/src/destination/css/selector.css.map +1 -1
- package/src/destination/scss/selector.scss +36 -36
- package/src/destination/selector.js +195 -195
- package/src/destination/tpl/selector.tpl +13 -13
- package/src/dialog/alert.js +70 -70
- package/src/dialog/confirm.js +85 -85
- package/src/dialog/confirmDelete.js +95 -95
- package/src/dialog/tpl/body.tpl +24 -24
- package/src/dialog/tpl/buttons.tpl +6 -6
- package/src/dialog/tpl/checkbox.tpl +5 -5
- package/src/dialog.js +517 -517
- package/src/disabler.js +230 -230
- package/src/documentViewer/css/documentViewer.css +7 -7
- package/src/documentViewer/css/documentViewer.css.map +1 -1
- package/src/documentViewer/providers/pdfViewer/fallback/viewer.js +69 -69
- package/src/documentViewer/providers/pdfViewer/pdfjs/areaBroker.js +41 -41
- package/src/documentViewer/providers/pdfViewer/pdfjs/findBar.js +475 -475
- package/src/documentViewer/providers/pdfViewer/pdfjs/findBar.tpl +20 -20
- package/src/documentViewer/providers/pdfViewer/pdfjs/match.tpl +1 -1
- package/src/documentViewer/providers/pdfViewer/pdfjs/page.tpl +4 -4
- package/src/documentViewer/providers/pdfViewer/pdfjs/pageView.js +318 -318
- package/src/documentViewer/providers/pdfViewer/pdfjs/pagesManager.js +167 -167
- package/src/documentViewer/providers/pdfViewer/pdfjs/searchEngine.js +451 -451
- package/src/documentViewer/providers/pdfViewer/pdfjs/textManager.js +252 -252
- package/src/documentViewer/providers/pdfViewer/pdfjs/viewer.js +299 -299
- package/src/documentViewer/providers/pdfViewer/pdfjs/viewer.tpl +16 -16
- package/src/documentViewer/providers/pdfViewer/pdfjs/wrapper.js +351 -351
- package/src/documentViewer/providers/pdfViewer.js +93 -93
- package/src/documentViewer/scss/documentViewer.scss +184 -184
- package/src/documentViewer/viewerFactory.js +191 -191
- package/src/documentViewer.js +238 -238
- package/src/dropdown/css/dropdown.css +7 -7
- package/src/dropdown/css/dropdown.css.map +1 -1
- package/src/dropdown/scss/dropdown.scss +99 -99
- package/src/dropdown/tpl/dropdown.tpl +8 -8
- package/src/dropdown/tpl/list-item.tpl +4 -4
- package/src/dropdown.js +255 -255
- package/src/durationer.js +222 -222
- package/src/dynamicComponent/css/dynamicComponent.css +7 -7
- package/src/dynamicComponent/css/dynamicComponent.css.map +1 -1
- package/src/dynamicComponent/scss/dynamicComponent.scss +98 -98
- package/src/dynamicComponent/tpl/layout.tpl +17 -17
- package/src/dynamicComponent.js +554 -554
- package/src/feedback/feedback.tpl +7 -7
- package/src/feedback.js +295 -295
- package/src/figure/FigureStateActive.js +174 -174
- package/src/filesender.js +114 -114
- package/src/filter/template.tpl +5 -5
- package/src/filter.js +135 -135
- package/src/form/css/dropdownForm.css +7 -7
- package/src/form/css/dropdownForm.css.map +1 -1
- package/src/form/css/form.css +7 -7
- package/src/form/css/form.css.map +1 -1
- package/src/form/dropdownForm.js +281 -281
- package/src/form/form.js +688 -688
- package/src/form/scss/dropdownForm.scss +60 -60
- package/src/form/scss/form.scss +25 -25
- package/src/form/simpleForm.js +125 -125
- package/src/form/tpl/dropdownForm.tpl +4 -4
- package/src/form/tpl/form.tpl +7 -7
- package/src/form/validator/css/validator.css +7 -7
- package/src/form/validator/css/validator.css.map +1 -1
- package/src/form/validator/renderer.js +118 -118
- package/src/form/validator/scss/validator.scss +14 -14
- package/src/form/validator/tpl/message.tpl +1 -1
- package/src/form/validator/tpl/validator.tpl +1 -1
- package/src/form/validator/validator.js +220 -220
- package/src/form/widget/css/widget.css +7 -7
- package/src/form/widget/css/widget.css.map +1 -1
- package/src/form/widget/definitions.js +51 -51
- package/src/form/widget/loader.js +40 -40
- package/src/form/widget/providers/checkBox.js +138 -138
- package/src/form/widget/providers/comboBox.js +63 -63
- package/src/form/widget/providers/default.js +90 -90
- package/src/form/widget/providers/hidden.js +62 -62
- package/src/form/widget/providers/hiddenBox.js +152 -152
- package/src/form/widget/providers/radioBox.js +99 -99
- package/src/form/widget/providers/textArea.js +52 -52
- package/src/form/widget/providers/textBox.js +48 -48
- package/src/form/widget/scss/widget.scss +55 -55
- package/src/form/widget/tpl/checkBox.tpl +25 -25
- package/src/form/widget/tpl/comboBox.tpl +13 -13
- package/src/form/widget/tpl/hidden.tpl +1 -1
- package/src/form/widget/tpl/hiddenBox.tpl +17 -17
- package/src/form/widget/tpl/label.tpl +6 -6
- package/src/form/widget/tpl/radioBox.tpl +25 -25
- package/src/form/widget/tpl/textArea.tpl +8 -8
- package/src/form/widget/tpl/widget.tpl +8 -8
- package/src/form/widget/widget.js +372 -372
- package/src/form.js +53 -53
- package/src/formValidator/formValidator.js +253 -253
- package/src/formValidator/highlighters/highlighter.js +102 -102
- package/src/formValidator/highlighters/message.js +70 -70
- package/src/formValidator/highlighters/tooltip.js +78 -78
- package/src/generis/form/css/form.css +7 -7
- package/src/generis/form/css/form.css.map +1 -1
- package/src/generis/form/form.js +239 -239
- package/src/generis/form/readme.md +70 -70
- package/src/generis/form/scss/form.scss +23 -23
- package/src/generis/form/tpl/form.tpl +16 -16
- package/src/generis/validator/css/validator.css +7 -7
- package/src/generis/validator/css/validator.css.map +1 -1
- package/src/generis/validator/readme.md +46 -46
- package/src/generis/validator/scss/validator.scss +13 -13
- package/src/generis/validator/validator.js +128 -128
- package/src/generis/widget/checkBox/checkBox.js +112 -112
- package/src/generis/widget/checkBox/checkBox.tpl +18 -18
- package/src/generis/widget/comboBox/comboBox.js +67 -67
- package/src/generis/widget/comboBox/comboBox.tpl +12 -12
- package/src/generis/widget/css/widget.css +7 -7
- package/src/generis/widget/css/widget.css.map +1 -1
- package/src/generis/widget/hiddenBox/hiddenBox.js +132 -132
- package/src/generis/widget/hiddenBox/hiddenBox.tpl +16 -16
- package/src/generis/widget/loader.js +49 -49
- package/src/generis/widget/readme.md +59 -59
- package/src/generis/widget/scss/widget.scss +61 -61
- package/src/generis/widget/textBox/textBox.js +65 -65
- package/src/generis/widget/textBox/textBox.tpl +7 -7
- package/src/generis/widget/widget.js +164 -164
- package/src/generis/widget/widget.tpl +5 -5
- package/src/groupedComboBox.js +99 -99
- package/src/groupvalidator.js +84 -84
- package/src/hider.js +88 -88
- package/src/highlighter.js +1166 -1166
- package/src/image/ImgStateActive/extractLabel.js +29 -29
- package/src/image/ImgStateActive/helper.js +36 -36
- package/src/image/ImgStateActive/initHelper.js +137 -137
- package/src/image/ImgStateActive/initMediaEditor.js +92 -92
- package/src/image/ImgStateActive/mediaSizer.js +63 -63
- package/src/image/ImgStateActive.js +115 -115
- package/src/incrementer.js +319 -319
- package/src/inplacer.js +316 -316
- package/src/interactUtils.js +140 -140
- package/src/itemButtonList/css/item-button-list.css +23 -24
- package/src/itemButtonList/css/item-button-list.css.map +1 -1
- package/src/itemButtonList/scss/item-button-list.scss +236 -236
- package/src/itemButtonList/tpl/itemButtonList.tpl +21 -21
- package/src/itemButtonList.js +274 -274
- package/src/keyNavigation/navigableDomElement.js +282 -282
- package/src/keyNavigation/navigator.js +543 -543
- package/src/listbox/css/listbox.css +7 -7
- package/src/listbox/css/listbox.css.map +1 -1
- package/src/listbox/scss/listbox.scss +116 -116
- package/src/listbox/tpl/list.tpl +14 -14
- package/src/listbox/tpl/main.tpl +9 -9
- package/src/listbox.js +251 -251
- package/src/liststyler.js +155 -155
- package/src/loadingButton/css/button.css +7 -7
- package/src/loadingButton/css/button.css.map +1 -1
- package/src/loadingButton/loadingButton.js +110 -110
- package/src/loadingButton/scss/button.scss +41 -41
- package/src/loadingButton/tpl/button.tpl +5 -5
- package/src/lock/lock.tpl +16 -16
- package/src/lock.js +395 -395
- package/src/login/login.js +322 -322
- package/src/login/tpl/login.tpl +29 -29
- package/src/login/tpl/passwordReveal.tpl +7 -7
- package/src/maths/calculator/basicCalculator.js +55 -55
- package/src/maths/calculator/calculatorComponent.js +128 -128
- package/src/maths/calculator/core/areaBroker.js +38 -38
- package/src/maths/calculator/core/board.js +841 -841
- package/src/maths/calculator/core/expression.js +430 -430
- package/src/maths/calculator/core/labels.js +116 -116
- package/src/maths/calculator/core/plugin.js +40 -40
- package/src/maths/calculator/core/terms.js +459 -459
- package/src/maths/calculator/core/tokenizer.js +245 -245
- package/src/maths/calculator/core/tokens.js +178 -178
- package/src/maths/calculator/core/tpl/board.tpl +4 -4
- package/src/maths/calculator/css/calculator.css +7 -7
- package/src/maths/calculator/css/calculator.css.map +1 -1
- package/src/maths/calculator/defaultCalculator.js +66 -66
- package/src/maths/calculator/plugins/core/degrad.js +90 -90
- package/src/maths/calculator/plugins/core/history.js +166 -166
- package/src/maths/calculator/plugins/core/remind.js +96 -96
- package/src/maths/calculator/plugins/core/stepNavigation.js +175 -175
- package/src/maths/calculator/plugins/keyboard/templateKeyboard/defaultTemplate.tpl +36 -36
- package/src/maths/calculator/plugins/keyboard/templateKeyboard/templateKeyboard.js +91 -91
- package/src/maths/calculator/plugins/modifiers/pow10.js +143 -143
- package/src/maths/calculator/plugins/modifiers/sign.js +339 -339
- package/src/maths/calculator/plugins/screen/simpleScreen/defaultTemplate.tpl +3 -3
- package/src/maths/calculator/plugins/screen/simpleScreen/history.tpl +3 -3
- package/src/maths/calculator/plugins/screen/simpleScreen/simpleScreen.js +191 -191
- package/src/maths/calculator/pluginsLoader.js +46 -46
- package/src/maths/calculator/scientificCalculator.js +74 -74
- package/src/maths/calculator/scss/calculator.scss +396 -396
- package/src/maths/calculator/tpl/basicKeyboard.tpl +37 -37
- package/src/maths/calculator/tpl/basicScreen.tpl +2 -2
- package/src/maths/calculator/tpl/scientificKeyboard.tpl +61 -61
- package/src/maths/calculator/tpl/scientificScreen.tpl +3 -3
- package/src/mediaEditor/mediaEditorComponent.js +141 -141
- package/src/mediaEditor/plugins/mediaAlignment/helper.js +62 -62
- package/src/mediaEditor/plugins/mediaAlignment/mediaAlignmentComponent.js +99 -99
- package/src/mediaEditor/plugins/mediaAlignment/style.css +7 -7
- package/src/mediaEditor/plugins/mediaAlignment/tpl/mediaAlignment.tpl +25 -25
- package/src/mediaEditor/plugins/mediaDimension/helper.js +189 -189
- package/src/mediaEditor/plugins/mediaDimension/mediaDimensionComponent.js +561 -561
- package/src/mediaEditor/plugins/mediaDimension/style.css +141 -141
- package/src/mediaEditor/plugins/mediaDimension/tpl/mediaDimension.tpl +55 -55
- package/src/mediaEditor/tpl/editor.tpl +4 -4
- package/src/mediaplayer/css/player.css +7 -7
- package/src/mediaplayer/css/player.css.map +1 -1
- package/src/mediaplayer/players/html5.js +564 -564
- package/src/mediaplayer/players/youtube.js +323 -323
- package/src/mediaplayer/players.js +29 -29
- package/src/mediaplayer/readme.md +305 -305
- package/src/mediaplayer/scss/player.scss +569 -569
- package/src/mediaplayer/support.js +126 -126
- package/src/mediaplayer/tpl/audio.tpl +6 -6
- package/src/mediaplayer/tpl/player.tpl +37 -37
- package/src/mediaplayer/tpl/source.tpl +1 -1
- package/src/mediaplayer/tpl/video.tpl +6 -6
- package/src/mediaplayer/tpl/youtube.tpl +1 -1
- package/src/mediaplayer/utils/reminder.js +184 -184
- package/src/mediaplayer/utils/timeObserver.js +143 -143
- package/src/mediaplayer/youtubeManager.js +161 -161
- package/src/mediaplayer.js +1606 -1606
- package/src/mediasizer/mediasizer.tpl +55 -55
- package/src/mediasizer.js +635 -635
- package/src/modal.js +365 -365
- package/src/movableComponent.js +78 -78
- package/src/pageSizeSelector/tpl/pageSizeSelector.tpl +9 -9
- package/src/pageSizeSelector.js +107 -107
- package/src/pageStatus.js +147 -147
- package/src/pagination/css/pagination.css +7 -7
- package/src/pagination/css/pagination.css.map +1 -1
- package/src/pagination/paginationStrategy.js +53 -53
- package/src/pagination/providers/pages.js +161 -161
- package/src/pagination/providers/simple.js +74 -74
- package/src/pagination/providers/tpl/pages/page.tpl +1 -1
- package/src/pagination/providers/tpl/pages.tpl +8 -8
- package/src/pagination/providers/tpl/simple.tpl +7 -7
- package/src/pagination/scss/pagination.scss +111 -111
- package/src/pagination.js +237 -237
- package/src/previewer.js +300 -300
- package/src/progressbar.js +165 -165
- package/src/propertySelector/css/propertySelector.css +74 -0
- package/src/propertySelector/css/propertySelector.css.map +1 -0
- package/src/propertySelector/propertySelector.js +286 -0
- package/src/propertySelector/scss/propertySelector.scss +66 -0
- package/src/propertySelector/tpl/highlighted-text.tpl +1 -0
- package/src/propertySelector/tpl/property-description.tpl +13 -0
- package/src/propertySelector/tpl/property-selector.tpl +7 -0
- package/src/report/feedback.tpl +11 -11
- package/src/report/layout.tpl +10 -10
- package/src/report.js +184 -184
- package/src/resource/css/selector.css +7 -7
- package/src/resource/css/selector.css.map +1 -1
- package/src/resource/filters.js +208 -208
- package/src/resource/list.js +200 -200
- package/src/resource/scss/_filters.scss +26 -26
- package/src/resource/scss/_resource-list.scss +107 -107
- package/src/resource/scss/_resource-tree.scss +205 -205
- package/src/resource/scss/selector.scss +187 -187
- package/src/resource/selectable.js +322 -322
- package/src/resource/selector.js +871 -871
- package/src/resource/tpl/filters.tpl +2 -2
- package/src/resource/tpl/list.tpl +7 -7
- package/src/resource/tpl/listNode.tpl +4 -4
- package/src/resource/tpl/selector.tpl +46 -46
- package/src/resource/tpl/tree.tpl +4 -4
- package/src/resource/tpl/treeNode.tpl +30 -30
- package/src/resource/tree.js +400 -400
- package/src/resourcemgr/css/resourcemgr.css +7 -7
- package/src/resourcemgr/css/resourcemgr.css.map +1 -1
- package/src/resourcemgr/fileBrowser.js +381 -381
- package/src/resourcemgr/filePreview.js +73 -73
- package/src/resourcemgr/fileSelector.js +348 -348
- package/src/resourcemgr/scss/resourcemgr.scss +254 -254
- package/src/resourcemgr/tpl/fileSelect.tpl +39 -39
- package/src/resourcemgr/tpl/folder.tpl +11 -11
- package/src/resourcemgr/tpl/layout.tpl +84 -84
- package/src/resourcemgr/tpl/rootFolder.tpl +13 -13
- package/src/resourcemgr/util/updatePermissions.js +53 -53
- package/src/resourcemgr.js +216 -216
- package/src/scroller.js +94 -94
- package/src/scss/basic.scss +16 -16
- package/src/searchModal/advancedSearch.js +638 -601
- package/src/searchModal/css/advancedSearch.css +7 -14
- package/src/searchModal/css/advancedSearch.css.map +1 -1
- package/src/searchModal/css/searchModal.css +28 -8
- package/src/searchModal/css/searchModal.css.map +1 -1
- package/src/searchModal/scss/advancedSearch.scss +171 -177
- package/src/searchModal/scss/searchModal.scss +393 -375
- package/src/searchModal/tpl/advanced-search.tpl +9 -9
- package/src/searchModal/tpl/criteria-alias.tpl +1 -0
- package/src/searchModal/tpl/criteria-class-label.tpl +1 -0
- package/src/searchModal/tpl/criteria-label.tpl +1 -0
- package/src/searchModal/tpl/highlighted-text.tpl +1 -0
- package/src/searchModal/tpl/info-message.tpl +3 -3
- package/src/searchModal/tpl/invalid-criteria-warning.tpl +10 -10
- package/src/searchModal/tpl/layout.tpl +27 -25
- package/src/searchModal/tpl/list-checkbox-criterion.tpl +17 -12
- package/src/searchModal/tpl/list-select-criterion.tpl +12 -6
- package/src/searchModal/tpl/property-select-button.tpl +1 -0
- package/src/searchModal/tpl/results-container.tpl +1 -0
- package/src/searchModal/tpl/text-criterion.tpl +11 -6
- package/src/searchModal.js +761 -496
- package/src/selecter.js +43 -43
- package/src/stacker.js +133 -133
- package/src/switch/css/switch.css +7 -7
- package/src/switch/css/switch.css.map +1 -1
- package/src/switch/scss/switch.scss +83 -83
- package/src/switch/switch.js +195 -195
- package/src/switch/tpl/switch.tpl +7 -7
- package/src/tableModel.js +112 -112
- package/src/tabs/css/tabs.css +12 -12
- package/src/tabs/css/tabs.css.map +1 -1
- package/src/tabs/scss/tabs.scss +50 -50
- package/src/tabs/tpl/panel.tpl +3 -3
- package/src/tabs/tpl/tabs.tpl +10 -10
- package/src/tabs.js +528 -528
- package/src/taskQueue/css/taskQueue.css +7 -7
- package/src/taskQueue/css/taskQueue.css.map +1 -1
- package/src/taskQueue/scss/taskQueue.scss +47 -47
- package/src/taskQueue/status.js +228 -228
- package/src/taskQueue/table.js +350 -350
- package/src/taskQueue/taskQueue.js +33 -33
- package/src/taskQueue/taskQueueModel.js +548 -548
- package/src/taskQueue/tpl/statusMessage.tpl +7 -7
- package/src/taskQueue.js +218 -218
- package/src/taskQueueButton/css/taskable.css +7 -7
- package/src/taskQueueButton/css/taskable.css.map +1 -1
- package/src/taskQueueButton/css/treeButton.css +7 -7
- package/src/taskQueueButton/css/treeButton.css.map +1 -1
- package/src/taskQueueButton/scss/taskable.scss +4 -4
- package/src/taskQueueButton/scss/treeButton.scss +34 -34
- package/src/taskQueueButton/standardButton.js +108 -108
- package/src/taskQueueButton/taskable.js +202 -202
- package/src/taskQueueButton/tpl/report.tpl +5 -5
- package/src/taskQueueButton/tpl/treeButton.tpl +6 -6
- package/src/taskQueueButton/treeButton.js +109 -109
- package/src/themeLoader.js +252 -252
- package/src/themes.js +162 -162
- package/src/toggler.js +200 -200
- package/src/tooltip/default.tpl +3 -3
- package/src/tooltip.js +160 -160
- package/src/tooltipster.js +25 -25
- package/src/transformer.js +327 -327
- package/src/tristateCheckboxGroup/css/tristateCheckboxGroup.css +7 -7
- package/src/tristateCheckboxGroup/css/tristateCheckboxGroup.css.map +1 -1
- package/src/tristateCheckboxGroup/scss/tristateCheckboxGroup.scss +15 -15
- package/src/tristateCheckboxGroup/tpl/li.tpl +6 -6
- package/src/tristateCheckboxGroup.js +207 -207
- package/src/uploader/fileEntry.tpl +6 -6
- package/src/uploader/uploader.tpl +32 -32
- package/src/uploader.js +594 -594
- package/src/validator/Report.js +10 -10
- package/src/validator/Validator.js +108 -108
- package/src/validator/validators.js +220 -220
- package/src/validator.js +264 -264
- package/src/waitForMedia.js +82 -82
- package/src/waitingDialog/css/waitingDialog.css +7 -7
- package/src/waitingDialog/css/waitingDialog.css.map +1 -1
- package/src/waitingDialog/scss/waitingDialog.scss +34 -34
- package/src/waitingDialog/waitingDialog.js +240 -240
|
@@ -1,612 +1,562 @@
|
|
|
1
1
|
define(['lodash', 'handlebars', 'i18n', 'lib/dompurify/purify'], function (_, Handlebars, __, DOMPurify) { 'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
* https://github.com/cure53/DOMPurify
|
|
27
|
-
* with config SAFE_FOR_TEMPLATES: true
|
|
28
|
-
* to make output safe for template systems
|
|
3
|
+
_ = _ && Object.prototype.hasOwnProperty.call(_, 'default') ? _['default'] : _;
|
|
4
|
+
Handlebars = Handlebars && Object.prototype.hasOwnProperty.call(Handlebars, 'default') ? Handlebars['default'] : Handlebars;
|
|
5
|
+
__ = __ && Object.prototype.hasOwnProperty.call(__, 'default') ? __['default'] : __;
|
|
6
|
+
DOMPurify = DOMPurify && Object.prototype.hasOwnProperty.call(DOMPurify, 'default') ? DOMPurify['default'] : DOMPurify;
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* This program is free software; you can redistribute it and/or
|
|
10
|
+
* modify it under the terms of the GNU General Public License
|
|
11
|
+
* as published by the Free Software Foundation; under version 2
|
|
12
|
+
* of the License (non-upgradable).
|
|
13
|
+
*
|
|
14
|
+
* This program is distributed in the hope that it will be useful,
|
|
15
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
16
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
17
|
+
* GNU General Public License for more details.
|
|
18
|
+
*
|
|
19
|
+
* You should have received a copy of the GNU General Public License
|
|
20
|
+
* along with this program; if not, write to the Free Software
|
|
21
|
+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
22
|
+
*
|
|
23
|
+
* Copyright (c) 2013-2019 (original work) Open Assessment Technologies SA (under the project TAO-PRODUCT);
|
|
24
|
+
*
|
|
25
|
+
*
|
|
29
26
|
*/
|
|
27
|
+
function Helpers0 (hb) {
|
|
28
|
+
//register a i18n helper
|
|
29
|
+
hb.registerHelper('__', function (key) {
|
|
30
|
+
return __(key);
|
|
31
|
+
});
|
|
30
32
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
*/
|
|
42
|
-
|
|
43
|
-
hb.registerHelper('join', function (arr, keyValueGlue, fragmentGlue, wrapper) {
|
|
44
|
-
var fragments = [];
|
|
45
|
-
keyValueGlue = typeof keyValueGlue === 'string' ? keyValueGlue : undefined;
|
|
46
|
-
fragmentGlue = typeof fragmentGlue === 'string' ? fragmentGlue : ' ';
|
|
47
|
-
wrapper = typeof wrapper === 'string' ? wrapper : '"';
|
|
48
|
-
|
|
49
|
-
_.forIn(arr, function (value, key) {
|
|
50
|
-
var fragment = '';
|
|
33
|
+
/**
|
|
34
|
+
* Register dompurify helper
|
|
35
|
+
*
|
|
36
|
+
* https://github.com/cure53/DOMPurify
|
|
37
|
+
* with config SAFE_FOR_TEMPLATES: true
|
|
38
|
+
* to make output safe for template systems
|
|
39
|
+
*/
|
|
40
|
+
hb.registerHelper('dompurify', function (context) {
|
|
41
|
+
return DOMPurify.sanitize(context);
|
|
42
|
+
});
|
|
51
43
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
44
|
+
/**
|
|
45
|
+
* Register join helper
|
|
46
|
+
*
|
|
47
|
+
* Example :
|
|
48
|
+
* var values = {a:v1, b:v2, c:v3};
|
|
49
|
+
* Using {{{join attributes '=' ' ' '"'}}} will return : a="v1" b="v2" c="v3"
|
|
50
|
+
* Using {{{join values null ' or ' '*'}}} will return : *v1* or *v2* or *v3*
|
|
51
|
+
*/
|
|
52
|
+
hb.registerHelper('join', function (arr, keyValueGlue, fragmentGlue, wrapper) {
|
|
53
|
+
var fragments = [];
|
|
54
|
+
keyValueGlue = typeof keyValueGlue === 'string' ? keyValueGlue : undefined;
|
|
55
|
+
fragmentGlue = typeof fragmentGlue === 'string' ? fragmentGlue : ' ';
|
|
56
|
+
wrapper = typeof wrapper === 'string' ? wrapper : '"';
|
|
57
|
+
_.forIn(arr, function (value, key) {
|
|
58
|
+
var fragment = '';
|
|
59
|
+
if (value !== null || value !== undefined) {
|
|
60
|
+
if (typeof value === 'boolean') {
|
|
61
|
+
value = value ? 'true' : 'false';
|
|
62
|
+
} else if (typeof value === 'object') {
|
|
63
|
+
value = _.values(value).join(' ');
|
|
64
|
+
}
|
|
65
|
+
} else {
|
|
66
|
+
value = '';
|
|
57
67
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
68
|
+
if (keyValueGlue !== undefined) {
|
|
69
|
+
fragment += key + keyValueGlue;
|
|
70
|
+
}
|
|
71
|
+
fragment += wrapper + value + wrapper;
|
|
72
|
+
fragments.push(fragment);
|
|
73
|
+
});
|
|
74
|
+
return fragments.join(fragmentGlue);
|
|
75
|
+
});
|
|
61
76
|
|
|
62
|
-
|
|
63
|
-
|
|
77
|
+
//register a classic "for loop" helper
|
|
78
|
+
//it also adds a local variable "i" as the index in each iteration loop
|
|
79
|
+
hb.registerHelper('for', function (startIndex, stopIndex, increment, options) {
|
|
80
|
+
var ret = '';
|
|
81
|
+
startIndex = parseInt(startIndex);
|
|
82
|
+
stopIndex = parseInt(stopIndex);
|
|
83
|
+
increment = parseInt(increment);
|
|
84
|
+
for (var i = startIndex; i < stopIndex; i += increment) {
|
|
85
|
+
ret += options.fn(_.extend({}, this, {
|
|
86
|
+
i: i
|
|
87
|
+
}));
|
|
88
|
+
}
|
|
89
|
+
return ret;
|
|
90
|
+
});
|
|
91
|
+
hb.registerHelper('equal', function (var1, var2, options) {
|
|
92
|
+
if (var1 == var2) {
|
|
93
|
+
return options.fn(this);
|
|
94
|
+
} else {
|
|
95
|
+
return options.inverse(this);
|
|
64
96
|
}
|
|
65
|
-
|
|
66
|
-
fragment += wrapper + value + wrapper;
|
|
67
|
-
fragments.push(fragment);
|
|
68
97
|
});
|
|
69
98
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
var ret = '';
|
|
76
|
-
startIndex = parseInt(startIndex);
|
|
77
|
-
stopIndex = parseInt(stopIndex);
|
|
78
|
-
increment = parseInt(increment);
|
|
79
|
-
|
|
80
|
-
for (var i = startIndex; i < stopIndex; i += increment) {
|
|
81
|
-
ret += options.fn(_.extend({}, this, {
|
|
82
|
-
i: i
|
|
83
|
-
}));
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
return ret;
|
|
87
|
-
});
|
|
88
|
-
hb.registerHelper('equal', function (var1, var2, options) {
|
|
89
|
-
if (var1 == var2) {
|
|
90
|
-
return options.fn(this);
|
|
91
|
-
} else {
|
|
92
|
-
return options.inverse(this);
|
|
93
|
-
}
|
|
94
|
-
}); // register a "get property" helper
|
|
95
|
-
// it gets the named property from the provided context
|
|
96
|
-
|
|
97
|
-
hb.registerHelper('property', function (name, context) {
|
|
98
|
-
return context[name] || '';
|
|
99
|
-
}); // register an 'includes' helper
|
|
100
|
-
// it checks if value is in array
|
|
101
|
-
|
|
102
|
-
hb.registerHelper('includes', function (haystack, needle, options) {
|
|
103
|
-
if (_.contains(haystack, needle)) {
|
|
104
|
-
return options.fn(this);
|
|
105
|
-
}
|
|
106
|
-
});
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
if (!Helpers0.__initialized) {
|
|
110
|
-
Helpers0(Handlebars);
|
|
111
|
-
Helpers0.__initialized = true;
|
|
112
|
-
}
|
|
113
|
-
var Template = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
|
|
114
|
-
this.compilerInfo = [4,'>= 1.0.0'];
|
|
115
|
-
helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
|
116
|
-
var buffer = "", stack1, helper, functionType="function", escapeExpression=this.escapeExpression;
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
buffer += "<span class=\"highlight ";
|
|
120
|
-
if (helper = helpers.cls) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
121
|
-
else { helper = (depth0 && depth0.cls); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
122
|
-
buffer += escapeExpression(stack1)
|
|
123
|
-
+ "\" data-match=\"";
|
|
124
|
-
if (helper = helpers.index) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
125
|
-
else { helper = (depth0 && depth0.index); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
126
|
-
buffer += escapeExpression(stack1)
|
|
127
|
-
+ "\">";
|
|
128
|
-
if (helper = helpers.text) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
129
|
-
else { helper = (depth0 && depth0.text); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
130
|
-
buffer += escapeExpression(stack1)
|
|
131
|
-
+ "</span>\r\n";
|
|
132
|
-
return buffer;
|
|
133
|
-
});
|
|
134
|
-
function matchTpl(data, options, asString) {
|
|
135
|
-
var html = Template(data, options);
|
|
136
|
-
return (asString || true) ? html : $(html);
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
/**
|
|
140
|
-
* This program is free software; you can redistribute it and/or
|
|
141
|
-
* modify it under the terms of the GNU General Public License
|
|
142
|
-
* as published by the Free Software Foundation; under version 2
|
|
143
|
-
* of the License (non-upgradable).
|
|
144
|
-
*
|
|
145
|
-
* This program is distributed in the hope that it will be useful,
|
|
146
|
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
147
|
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
148
|
-
* GNU General Public License for more details.
|
|
149
|
-
*
|
|
150
|
-
* You should have received a copy of the GNU General Public License
|
|
151
|
-
* along with this program; if not, write to the Free Software
|
|
152
|
-
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
153
|
-
*
|
|
154
|
-
* Copyright (c) 2016 (original work) Open Assessment Technologies SA ;
|
|
155
|
-
*/
|
|
156
|
-
/**
|
|
157
|
-
* Map of special chars to normalize
|
|
158
|
-
* @type {Object}
|
|
159
|
-
*/
|
|
160
|
-
|
|
161
|
-
var charactersToNormalize = {
|
|
162
|
-
"\u2018": "'",
|
|
163
|
-
// Left single quotation mark
|
|
164
|
-
"\u2019": "'",
|
|
165
|
-
// Right single quotation mark
|
|
166
|
-
"\u201A": "'",
|
|
167
|
-
// Single low-9 quotation mark
|
|
168
|
-
"\u201B": "'",
|
|
169
|
-
// Single high-reversed-9 quotation mark
|
|
170
|
-
"\u201C": '"',
|
|
171
|
-
// Left double quotation mark
|
|
172
|
-
"\u201D": '"',
|
|
173
|
-
// Right double quotation mark
|
|
174
|
-
"\u201E": '"',
|
|
175
|
-
// Double low-9 quotation mark
|
|
176
|
-
"\u201F": '"',
|
|
177
|
-
// Double high-reversed-9 quotation mark
|
|
178
|
-
"\xBC": '1/4',
|
|
179
|
-
// Vulgar fraction one quarter
|
|
180
|
-
"\xBD": '1/2',
|
|
181
|
-
// Vulgar fraction one half
|
|
182
|
-
"\xBE": '3/4' // Vulgar fraction three quarters
|
|
183
|
-
|
|
184
|
-
};
|
|
185
|
-
/**
|
|
186
|
-
* RegExp that will match special chars to normalize
|
|
187
|
-
* @type {RegExp}
|
|
188
|
-
*/
|
|
189
|
-
|
|
190
|
-
var normalizationRegex = new RegExp('[' + Object.keys(charactersToNormalize).join('') + ']', 'g');
|
|
191
|
-
/**
|
|
192
|
-
* Replaces special chars by normalized equivalent
|
|
193
|
-
* @param {String} text
|
|
194
|
-
* @returns {String}
|
|
195
|
-
*/
|
|
196
|
-
|
|
197
|
-
function normalizeSpecialChars(text) {
|
|
198
|
-
return text.replace(normalizationRegex, function (ch) {
|
|
199
|
-
return charactersToNormalize[ch];
|
|
200
|
-
});
|
|
201
|
-
}
|
|
202
|
-
/**
|
|
203
|
-
* Find terms in a text
|
|
204
|
-
* @param {String} query
|
|
205
|
-
* @param {String} text
|
|
206
|
-
* @returns {Array}
|
|
207
|
-
*/
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
function findInText(query, text) {
|
|
211
|
-
var queryLen = query.length;
|
|
212
|
-
var index,
|
|
213
|
-
end = 0;
|
|
214
|
-
var matches = [];
|
|
215
|
-
|
|
216
|
-
if (queryLen) {
|
|
217
|
-
do {
|
|
218
|
-
index = text.indexOf(query, end);
|
|
219
|
-
end = index + queryLen;
|
|
99
|
+
// register a "get property" helper
|
|
100
|
+
// it gets the named property from the provided context
|
|
101
|
+
hb.registerHelper('property', function (name, context) {
|
|
102
|
+
return context[name] || '';
|
|
103
|
+
});
|
|
220
104
|
|
|
221
|
-
|
|
222
|
-
|
|
105
|
+
// register an 'includes' helper
|
|
106
|
+
// it checks if value is in array
|
|
107
|
+
hb.registerHelper('includes', function (haystack, needle, options) {
|
|
108
|
+
if (_.contains(haystack, needle)) {
|
|
109
|
+
return options.fn(this);
|
|
223
110
|
}
|
|
224
|
-
}
|
|
111
|
+
});
|
|
225
112
|
}
|
|
226
113
|
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
114
|
+
if (!Helpers0.__initialized) {
|
|
115
|
+
Helpers0(Handlebars);
|
|
116
|
+
Helpers0.__initialized = true;
|
|
117
|
+
}
|
|
118
|
+
var Template = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
|
|
119
|
+
this.compilerInfo = [4,'>= 1.0.0'];
|
|
120
|
+
helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
|
121
|
+
var buffer = "", stack1, helper, functionType="function", escapeExpression=this.escapeExpression;
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
buffer += "<span class=\"highlight ";
|
|
125
|
+
if (helper = helpers.cls) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
126
|
+
else { helper = (depth0 && depth0.cls); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
127
|
+
buffer += escapeExpression(stack1)
|
|
128
|
+
+ "\" data-match=\"";
|
|
129
|
+
if (helper = helpers.index) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
130
|
+
else { helper = (depth0 && depth0.index); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
131
|
+
buffer += escapeExpression(stack1)
|
|
132
|
+
+ "\">";
|
|
133
|
+
if (helper = helpers.text) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
134
|
+
else { helper = (depth0 && depth0.text); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
135
|
+
buffer += escapeExpression(stack1)
|
|
136
|
+
+ "</span>\n";
|
|
137
|
+
return buffer;
|
|
138
|
+
});
|
|
139
|
+
function matchTpl(data, options, asString) {
|
|
140
|
+
var html = Template(data, options);
|
|
141
|
+
return (asString || true) ? html : $(html);
|
|
243
142
|
}
|
|
244
143
|
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
function highlight(text, index, cls) {
|
|
265
|
-
return matchTpl({
|
|
266
|
-
text: text,
|
|
267
|
-
index: index,
|
|
268
|
-
cls: cls
|
|
269
|
-
}).trim();
|
|
270
|
-
}
|
|
271
|
-
/**
|
|
272
|
-
* Highlights a substring in a text
|
|
273
|
-
* @param {String} text - The text in which highlight the substring
|
|
274
|
-
* @param {Number} start - The start position of the substring in the text
|
|
275
|
-
* @param {Number} end - The end position of the substring in the text
|
|
276
|
-
* @param {Number} index - The match index
|
|
277
|
-
* @param {String} [cls] - An additional CSS class to set
|
|
278
|
-
* @returns {String}
|
|
279
|
-
*/
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
function highlightInText(text, start, end, index, cls) {
|
|
283
|
-
return text.substring(0, start) + highlight(text.substring(start, end), index, cls) + text.substring(end);
|
|
284
|
-
}
|
|
285
|
-
/**
|
|
286
|
-
* Refines the array of matches to provide positions inside the text layer per nodes basis
|
|
287
|
-
* @param {Array} matches
|
|
288
|
-
* @param {Object} pageContent
|
|
289
|
-
* @returns {Array}
|
|
290
|
-
*/
|
|
144
|
+
/**
|
|
145
|
+
* This program is free software; you can redistribute it and/or
|
|
146
|
+
* modify it under the terms of the GNU General Public License
|
|
147
|
+
* as published by the Free Software Foundation; under version 2
|
|
148
|
+
* of the License (non-upgradable).
|
|
149
|
+
*
|
|
150
|
+
* This program is distributed in the hope that it will be useful,
|
|
151
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
152
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
153
|
+
* GNU General Public License for more details.
|
|
154
|
+
*
|
|
155
|
+
* You should have received a copy of the GNU General Public License
|
|
156
|
+
* along with this program; if not, write to the Free Software
|
|
157
|
+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
158
|
+
*
|
|
159
|
+
* Copyright (c) 2016 (original work) Open Assessment Technologies SA ;
|
|
160
|
+
*/
|
|
291
161
|
|
|
162
|
+
/**
|
|
163
|
+
* Map of special chars to normalize
|
|
164
|
+
* @type {Object}
|
|
165
|
+
*/
|
|
166
|
+
var charactersToNormalize = {
|
|
167
|
+
'\u2018': "'",
|
|
168
|
+
// Left single quotation mark
|
|
169
|
+
'\u2019': "'",
|
|
170
|
+
// Right single quotation mark
|
|
171
|
+
'\u201A': "'",
|
|
172
|
+
// Single low-9 quotation mark
|
|
173
|
+
'\u201B': "'",
|
|
174
|
+
// Single high-reversed-9 quotation mark
|
|
175
|
+
'\u201C': '"',
|
|
176
|
+
// Left double quotation mark
|
|
177
|
+
'\u201D': '"',
|
|
178
|
+
// Right double quotation mark
|
|
179
|
+
'\u201E': '"',
|
|
180
|
+
// Double low-9 quotation mark
|
|
181
|
+
'\u201F': '"',
|
|
182
|
+
// Double high-reversed-9 quotation mark
|
|
183
|
+
'\u00BC': '1/4',
|
|
184
|
+
// Vulgar fraction one quarter
|
|
185
|
+
'\u00BD': '1/2',
|
|
186
|
+
// Vulgar fraction one half
|
|
187
|
+
'\u00BE': '3/4' // Vulgar fraction three quarters
|
|
188
|
+
};
|
|
292
189
|
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
var
|
|
298
|
-
var strPos = 0;
|
|
190
|
+
/**
|
|
191
|
+
* RegExp that will match special chars to normalize
|
|
192
|
+
* @type {RegExp}
|
|
193
|
+
*/
|
|
194
|
+
var normalizationRegex = new RegExp('[' + Object.keys(charactersToNormalize).join('') + ']', 'g');
|
|
299
195
|
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
196
|
+
/**
|
|
197
|
+
* Replaces special chars by normalized equivalent
|
|
198
|
+
* @param {String} text
|
|
199
|
+
* @returns {String}
|
|
200
|
+
*/
|
|
201
|
+
function normalizeSpecialChars(text) {
|
|
202
|
+
return text.replace(normalizationRegex, function (ch) {
|
|
203
|
+
return charactersToNormalize[ch];
|
|
204
|
+
});
|
|
205
|
+
}
|
|
306
206
|
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
207
|
+
/**
|
|
208
|
+
* Find terms in a text
|
|
209
|
+
* @param {String} query
|
|
210
|
+
* @param {String} text
|
|
211
|
+
* @returns {Array}
|
|
212
|
+
*/
|
|
213
|
+
function findInText(query, text) {
|
|
214
|
+
var queryLen = query.length;
|
|
215
|
+
var index,
|
|
216
|
+
end = 0;
|
|
217
|
+
var matches = [];
|
|
218
|
+
if (queryLen) {
|
|
219
|
+
do {
|
|
220
|
+
index = text.indexOf(query, end);
|
|
221
|
+
end = index + queryLen;
|
|
222
|
+
if (index !== -1) {
|
|
223
|
+
matches.push([index, end]);
|
|
224
|
+
}
|
|
225
|
+
} while (index !== -1);
|
|
310
226
|
}
|
|
227
|
+
return matches;
|
|
228
|
+
}
|
|
311
229
|
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
230
|
+
/**
|
|
231
|
+
* Find the query in the whole document
|
|
232
|
+
* @param {String} query
|
|
233
|
+
* @param {Array} contentText
|
|
234
|
+
* @param {Object} config
|
|
235
|
+
* @returns {Array}
|
|
236
|
+
*/
|
|
237
|
+
function findInDocument(query, contentText, config) {
|
|
238
|
+
var normalizedQuery = normalizeSpecialChars(query);
|
|
239
|
+
if (!config.caseSensitive) {
|
|
240
|
+
normalizedQuery = normalizedQuery.toLowerCase();
|
|
320
241
|
}
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
};
|
|
326
|
-
refinedMatches.push(position);
|
|
327
|
-
});
|
|
328
|
-
|
|
329
|
-
return refinedMatches;
|
|
330
|
-
}
|
|
331
|
-
/**
|
|
332
|
-
* Renders the matches into the text layer
|
|
333
|
-
* @param {Array} matches
|
|
334
|
-
* @param {Object} pageContent
|
|
335
|
-
* @param {Number} [selectedMatch]
|
|
336
|
-
*/
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
function renderMatches(matches, pageContent, selectedMatch) {
|
|
340
|
-
var positions = refineMatches(matches, pageContent);
|
|
341
|
-
var matchIndex = positions.length - 1;
|
|
342
|
-
var nodes = pageContent.nodes;
|
|
343
|
-
var selected = matchIndex === selectedMatch;
|
|
344
|
-
|
|
345
|
-
_.forEachRight(nodes, function (node, nodeIndex) {
|
|
346
|
-
var nodeText = pageContent.content.items[nodeIndex].str;
|
|
347
|
-
var match, startInNode, endInNode, nodeInMatch, cls;
|
|
348
|
-
|
|
349
|
-
while (matchIndex >= 0) {
|
|
350
|
-
match = positions[matchIndex];
|
|
351
|
-
startInNode = match.begin.node === nodeIndex;
|
|
352
|
-
endInNode = match.end.node === nodeIndex;
|
|
353
|
-
nodeInMatch = nodeIndex > match.begin.node && nodeIndex < match.end.node;
|
|
354
|
-
cls = selected ? ' selected' : '';
|
|
355
|
-
|
|
356
|
-
if (startInNode && endInNode) {
|
|
357
|
-
nodeText = highlightInText(nodeText, match.begin.offset, match.end.offset, match.index, cls);
|
|
358
|
-
matchIndex--;
|
|
359
|
-
} else if (startInNode) {
|
|
360
|
-
nodeText = highlightInText(nodeText, match.begin.offset, nodeText.length, match.index, 'begin' + cls);
|
|
361
|
-
matchIndex--;
|
|
362
|
-
} else if (endInNode) {
|
|
363
|
-
nodeText = highlightInText(nodeText, 0, match.end.offset, match.index, 'end' + cls);
|
|
364
|
-
break;
|
|
365
|
-
} else if (nodeInMatch) {
|
|
366
|
-
nodeText = highlight(nodeText, match.index, 'middle' + cls);
|
|
367
|
-
break;
|
|
368
|
-
} else {
|
|
369
|
-
break;
|
|
242
|
+
return _.times(contentText.length, function (pageIndex) {
|
|
243
|
+
var pageContent = normalizeSpecialChars(contentText[pageIndex]);
|
|
244
|
+
if (!config.caseSensitive) {
|
|
245
|
+
pageContent = pageContent.toLowerCase();
|
|
370
246
|
}
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
}
|
|
374
|
-
|
|
375
|
-
node.innerHTML = nodeText;
|
|
376
|
-
});
|
|
377
|
-
}
|
|
378
|
-
/**
|
|
379
|
-
* Embeds the search engine for the PDF viewer
|
|
380
|
-
* @param {Object} config A config set
|
|
381
|
-
* @param {Object} config.textManager - The textManager component that gives access to the text content
|
|
382
|
-
* @param {Boolean} [config.caseSensitive] - Use a case sensitive search when the search feature is available
|
|
383
|
-
* @returns {Object} Returns the search engine instance
|
|
384
|
-
*/
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
function pdfjsSearchFactory(config) {
|
|
388
|
-
var textManager = null;
|
|
389
|
-
var currentQuery = null;
|
|
390
|
-
var currentMatch = null;
|
|
391
|
-
var matches = [];
|
|
392
|
-
var pages = [];
|
|
393
|
-
var count = 0;
|
|
394
|
-
config = config || {};
|
|
395
|
-
textManager = config.textManager;
|
|
396
|
-
|
|
397
|
-
if (!_.isPlainObject(textManager)) {
|
|
398
|
-
throw new TypeError('You must provide a textManager to give access to the PDF text content! [config.textManager is missing]');
|
|
247
|
+
return findInText(normalizedQuery, pageContent);
|
|
248
|
+
});
|
|
399
249
|
}
|
|
400
250
|
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
return matches;
|
|
416
|
-
},
|
|
417
|
-
|
|
418
|
-
/**
|
|
419
|
-
* Gets the number of search matches
|
|
420
|
-
* @returns {Number}
|
|
421
|
-
*/
|
|
422
|
-
getMatchCount: function getMatchCount() {
|
|
423
|
-
return count;
|
|
424
|
-
},
|
|
425
|
-
|
|
426
|
-
/**
|
|
427
|
-
* Clears the search matches
|
|
428
|
-
*/
|
|
429
|
-
clearMatches: function clearMatches() {
|
|
430
|
-
currentMatch = null;
|
|
431
|
-
matches = [];
|
|
432
|
-
pages = [];
|
|
433
|
-
count = 0;
|
|
434
|
-
},
|
|
435
|
-
|
|
436
|
-
/**
|
|
437
|
-
* Sets the text manager
|
|
438
|
-
* @param {Object} manager
|
|
439
|
-
*/
|
|
440
|
-
setTextManager: function setTextManager(manager) {
|
|
441
|
-
textManager = manager;
|
|
442
|
-
},
|
|
443
|
-
|
|
444
|
-
/**
|
|
445
|
-
* Gets the text manager
|
|
446
|
-
* @returns {Object}
|
|
447
|
-
*/
|
|
448
|
-
getTextManager: function getTextManager() {
|
|
449
|
-
return textManager;
|
|
450
|
-
},
|
|
451
|
-
|
|
452
|
-
/**
|
|
453
|
-
* Gets the currently matched query
|
|
454
|
-
* @returns {String}
|
|
455
|
-
*/
|
|
456
|
-
getQuery: function getQuery() {
|
|
457
|
-
return currentQuery;
|
|
458
|
-
},
|
|
459
|
-
|
|
460
|
-
/**
|
|
461
|
-
* Gets the current match data. It contains:
|
|
462
|
-
* - overall: the index of the match over all the document, starting at 1
|
|
463
|
-
* - page: the page number of the match, starting at 1
|
|
464
|
-
* - index: the index of the match within its page, starting at 0
|
|
465
|
-
* @returns {Object}
|
|
466
|
-
*/
|
|
467
|
-
getCurrentMatch: function getCurrentMatch() {
|
|
468
|
-
return currentMatch;
|
|
469
|
-
},
|
|
470
|
-
|
|
471
|
-
/**
|
|
472
|
-
* Go to the previous match and returns the match data
|
|
473
|
-
* @returns {Boolean} Returns true if the search has reached the beginning of the document and moved to the end.
|
|
474
|
-
*/
|
|
475
|
-
previousMatch: function previousMatch() {
|
|
476
|
-
var pageIndex;
|
|
477
|
-
var loop = false;
|
|
478
|
-
|
|
479
|
-
if (currentMatch) {
|
|
480
|
-
if (currentMatch.index) {
|
|
481
|
-
currentMatch.index--;
|
|
482
|
-
} else {
|
|
483
|
-
pageIndex = _.indexOf(pages, currentMatch.page);
|
|
484
|
-
loop = !pageIndex;
|
|
485
|
-
currentMatch.page = pages[(pageIndex + pages.length - 1) % pages.length];
|
|
486
|
-
currentMatch.index = matches[currentMatch.page - 1].length - 1;
|
|
487
|
-
} // the overall index start at 1 instead of 0, so the formula is a little bit more complex
|
|
251
|
+
/**
|
|
252
|
+
* Wraps a text into a highlighting span
|
|
253
|
+
* @param {String} text - The text to highlight
|
|
254
|
+
* @param {Number} index - The match index
|
|
255
|
+
* @param {String} [cls] - An additional CSS class to set
|
|
256
|
+
* @returns {String}
|
|
257
|
+
*/
|
|
258
|
+
function highlight(text, index, cls) {
|
|
259
|
+
return matchTpl({
|
|
260
|
+
text: text,
|
|
261
|
+
index: index,
|
|
262
|
+
cls: cls
|
|
263
|
+
}).trim();
|
|
264
|
+
}
|
|
488
265
|
|
|
266
|
+
/**
|
|
267
|
+
* Highlights a substring in a text
|
|
268
|
+
* @param {String} text - The text in which highlight the substring
|
|
269
|
+
* @param {Number} start - The start position of the substring in the text
|
|
270
|
+
* @param {Number} end - The end position of the substring in the text
|
|
271
|
+
* @param {Number} index - The match index
|
|
272
|
+
* @param {String} [cls] - An additional CSS class to set
|
|
273
|
+
* @returns {String}
|
|
274
|
+
*/
|
|
275
|
+
function highlightInText(text, start, end, index, cls) {
|
|
276
|
+
return text.substring(0, start) + highlight(text.substring(start, end), index, cls) + text.substring(end);
|
|
277
|
+
}
|
|
489
278
|
|
|
490
|
-
|
|
279
|
+
/**
|
|
280
|
+
* Refines the array of matches to provide positions inside the text layer per nodes basis
|
|
281
|
+
* @param {Array} matches
|
|
282
|
+
* @param {Object} pageContent
|
|
283
|
+
* @returns {Array}
|
|
284
|
+
*/
|
|
285
|
+
function refineMatches(matches, pageContent) {
|
|
286
|
+
var refinedMatches = [];
|
|
287
|
+
var textItems = pageContent.content.items;
|
|
288
|
+
var count = textItems.length;
|
|
289
|
+
var cursor = 0;
|
|
290
|
+
var strPos = 0;
|
|
291
|
+
_.forEach(matches, function (match, index) {
|
|
292
|
+
var matchStart = match[0];
|
|
293
|
+
var matchEnd = match[1];
|
|
294
|
+
var position = {
|
|
295
|
+
index: index
|
|
296
|
+
};
|
|
297
|
+
while (cursor < count && matchStart >= strPos + textItems[cursor].str.length) {
|
|
298
|
+
strPos += textItems[cursor].str.length;
|
|
299
|
+
cursor++;
|
|
491
300
|
}
|
|
301
|
+
position.begin = {
|
|
302
|
+
node: cursor,
|
|
303
|
+
offset: matchStart - strPos
|
|
304
|
+
};
|
|
305
|
+
while (cursor < count && matchEnd > strPos + textItems[cursor].str.length) {
|
|
306
|
+
strPos += textItems[cursor].str.length;
|
|
307
|
+
cursor++;
|
|
308
|
+
}
|
|
309
|
+
position.end = {
|
|
310
|
+
node: cursor,
|
|
311
|
+
offset: matchEnd - strPos
|
|
312
|
+
};
|
|
313
|
+
refinedMatches.push(position);
|
|
314
|
+
});
|
|
315
|
+
return refinedMatches;
|
|
316
|
+
}
|
|
492
317
|
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
318
|
+
/**
|
|
319
|
+
* Renders the matches into the text layer
|
|
320
|
+
* @param {Array} matches
|
|
321
|
+
* @param {Object} pageContent
|
|
322
|
+
* @param {Number} [selectedMatch]
|
|
323
|
+
*/
|
|
324
|
+
function renderMatches(matches, pageContent, selectedMatch) {
|
|
325
|
+
var positions = refineMatches(matches, pageContent);
|
|
326
|
+
var matchIndex = positions.length - 1;
|
|
327
|
+
var nodes = pageContent.nodes;
|
|
328
|
+
var selected = matchIndex === selectedMatch;
|
|
329
|
+
_.forEachRight(nodes, function (node, nodeIndex) {
|
|
330
|
+
var nodeText = pageContent.content.items[nodeIndex].str;
|
|
331
|
+
var match, startInNode, endInNode, nodeInMatch, cls;
|
|
332
|
+
while (matchIndex >= 0) {
|
|
333
|
+
match = positions[matchIndex];
|
|
334
|
+
startInNode = match.begin.node === nodeIndex;
|
|
335
|
+
endInNode = match.end.node === nodeIndex;
|
|
336
|
+
nodeInMatch = nodeIndex > match.begin.node && nodeIndex < match.end.node;
|
|
337
|
+
cls = selected ? ' selected' : '';
|
|
338
|
+
if (startInNode && endInNode) {
|
|
339
|
+
nodeText = highlightInText(nodeText, match.begin.offset, match.end.offset, match.index, cls);
|
|
340
|
+
matchIndex--;
|
|
341
|
+
} else if (startInNode) {
|
|
342
|
+
nodeText = highlightInText(nodeText, match.begin.offset, nodeText.length, match.index, 'begin' + cls);
|
|
343
|
+
matchIndex--;
|
|
344
|
+
} else if (endInNode) {
|
|
345
|
+
nodeText = highlightInText(nodeText, 0, match.end.offset, match.index, 'end' + cls);
|
|
346
|
+
break;
|
|
347
|
+
} else if (nodeInMatch) {
|
|
348
|
+
nodeText = highlight(nodeText, match.index, 'middle' + cls);
|
|
349
|
+
break;
|
|
507
350
|
} else {
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
currentMatch.index = 0;
|
|
512
|
-
} // the overall index start at 1 instead of 0, so the formula is a little bit more complex
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
currentMatch.overall = currentMatch.overall % count + 1;
|
|
351
|
+
break;
|
|
352
|
+
}
|
|
353
|
+
selected = matchIndex === selectedMatch;
|
|
516
354
|
}
|
|
355
|
+
node.innerHTML = nodeText;
|
|
356
|
+
});
|
|
357
|
+
}
|
|
517
358
|
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
359
|
+
/**
|
|
360
|
+
* Embeds the search engine for the PDF viewer
|
|
361
|
+
* @param {Object} config A config set
|
|
362
|
+
* @param {Object} config.textManager - The textManager component that gives access to the text content
|
|
363
|
+
* @param {Boolean} [config.caseSensitive] - Use a case sensitive search when the search feature is available
|
|
364
|
+
* @returns {Object} Returns the search engine instance
|
|
365
|
+
*/
|
|
366
|
+
function pdfjsSearchFactory(config) {
|
|
367
|
+
var textManager = null;
|
|
368
|
+
var currentQuery = null;
|
|
369
|
+
var currentMatch = null;
|
|
370
|
+
var matches = [];
|
|
371
|
+
var pages = [];
|
|
372
|
+
var count = 0;
|
|
373
|
+
config = config || {};
|
|
374
|
+
textManager = config.textManager;
|
|
375
|
+
if (!_.isPlainObject(textManager)) {
|
|
376
|
+
throw new TypeError('You must provide a textManager to give access to the PDF text content! [config.textManager is missing]');
|
|
377
|
+
}
|
|
378
|
+
return {
|
|
379
|
+
/**
|
|
380
|
+
* Gets the list of page numbers that lead to search matches
|
|
381
|
+
* @returns {Array}
|
|
382
|
+
*/
|
|
383
|
+
getPages: function getPages() {
|
|
384
|
+
return pages;
|
|
385
|
+
},
|
|
386
|
+
/**
|
|
387
|
+
* Gets the search matches
|
|
388
|
+
* @returns {Array}
|
|
389
|
+
*/
|
|
390
|
+
getMatches: function getMatches() {
|
|
391
|
+
return matches;
|
|
392
|
+
},
|
|
393
|
+
/**
|
|
394
|
+
* Gets the number of search matches
|
|
395
|
+
* @returns {Number}
|
|
396
|
+
*/
|
|
397
|
+
getMatchCount: function getMatchCount() {
|
|
398
|
+
return count;
|
|
399
|
+
},
|
|
400
|
+
/**
|
|
401
|
+
* Clears the search matches
|
|
402
|
+
*/
|
|
403
|
+
clearMatches: function clearMatches() {
|
|
537
404
|
currentMatch = null;
|
|
405
|
+
matches = [];
|
|
538
406
|
pages = [];
|
|
539
407
|
count = 0;
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
408
|
+
},
|
|
409
|
+
/**
|
|
410
|
+
* Sets the text manager
|
|
411
|
+
* @param {Object} manager
|
|
412
|
+
*/
|
|
413
|
+
setTextManager: function setTextManager(manager) {
|
|
414
|
+
textManager = manager;
|
|
415
|
+
},
|
|
416
|
+
/**
|
|
417
|
+
* Gets the text manager
|
|
418
|
+
* @returns {Object}
|
|
419
|
+
*/
|
|
420
|
+
getTextManager: function getTextManager() {
|
|
421
|
+
return textManager;
|
|
422
|
+
},
|
|
423
|
+
/**
|
|
424
|
+
* Gets the currently matched query
|
|
425
|
+
* @returns {String}
|
|
426
|
+
*/
|
|
427
|
+
getQuery: function getQuery() {
|
|
428
|
+
return currentQuery;
|
|
429
|
+
},
|
|
430
|
+
/**
|
|
431
|
+
* Gets the current match data. It contains:
|
|
432
|
+
* - overall: the index of the match over all the document, starting at 1
|
|
433
|
+
* - page: the page number of the match, starting at 1
|
|
434
|
+
* - index: the index of the match within its page, starting at 0
|
|
435
|
+
* @returns {Object}
|
|
436
|
+
*/
|
|
437
|
+
getCurrentMatch: function getCurrentMatch() {
|
|
438
|
+
return currentMatch;
|
|
439
|
+
},
|
|
440
|
+
/**
|
|
441
|
+
* Go to the previous match and returns the match data
|
|
442
|
+
* @returns {Boolean} Returns true if the search has reached the beginning of the document and moved to the end.
|
|
443
|
+
*/
|
|
444
|
+
previousMatch: function previousMatch() {
|
|
445
|
+
var pageIndex;
|
|
446
|
+
var loop = false;
|
|
447
|
+
if (currentMatch) {
|
|
448
|
+
if (currentMatch.index) {
|
|
449
|
+
currentMatch.index--;
|
|
450
|
+
} else {
|
|
451
|
+
pageIndex = _.indexOf(pages, currentMatch.page);
|
|
452
|
+
loop = !pageIndex;
|
|
453
|
+
currentMatch.page = pages[(pageIndex + pages.length - 1) % pages.length];
|
|
454
|
+
currentMatch.index = matches[currentMatch.page - 1].length - 1;
|
|
551
455
|
}
|
|
552
456
|
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
if (!firstPage) {
|
|
557
|
-
firstPage = pages[0] || 0;
|
|
558
|
-
}
|
|
559
|
-
|
|
560
|
-
if (firstPage) {
|
|
561
|
-
currentMatch = {
|
|
562
|
-
overall: firstMatch + 1,
|
|
563
|
-
// the overall index of the match
|
|
564
|
-
page: firstPage,
|
|
565
|
-
// the page number of the match
|
|
566
|
-
index: 0 // the index of the match within its page
|
|
567
|
-
|
|
568
|
-
};
|
|
569
|
-
}
|
|
570
|
-
|
|
571
|
-
return firstPage;
|
|
572
|
-
});
|
|
573
|
-
},
|
|
574
|
-
|
|
575
|
-
/**
|
|
576
|
-
* Displays the search matches on the rendered page
|
|
577
|
-
* @param {Number} pageNum - The page number of the rendered page
|
|
578
|
-
* @returns {Promise}
|
|
579
|
-
*/
|
|
580
|
-
updateMatches: function updateMatches(pageNum) {
|
|
581
|
-
return textManager.getPageContent(pageNum).then(function (pageContent) {
|
|
582
|
-
var selectedMatch;
|
|
583
|
-
|
|
584
|
-
if (currentMatch && currentMatch.page === pageNum) {
|
|
585
|
-
selectedMatch = currentMatch.index;
|
|
457
|
+
// the overall index start at 1 instead of 0, so the formula is a little bit more complex
|
|
458
|
+
currentMatch.overall = (currentMatch.overall + count - 2) % count + 1;
|
|
586
459
|
}
|
|
460
|
+
return loop;
|
|
461
|
+
},
|
|
462
|
+
/**
|
|
463
|
+
* Go to the next match and returns the match data
|
|
464
|
+
* @returns {Boolean} Returns true if the search has reached the end of the document and moved to the beginning.
|
|
465
|
+
*/
|
|
466
|
+
nextMatch: function nextMatch() {
|
|
467
|
+
var pageIndex;
|
|
468
|
+
var loop = false;
|
|
469
|
+
if (currentMatch) {
|
|
470
|
+
if (currentMatch.index + 1 < matches[currentMatch.page - 1].length) {
|
|
471
|
+
currentMatch.index++;
|
|
472
|
+
} else {
|
|
473
|
+
pageIndex = _.indexOf(pages, currentMatch.page);
|
|
474
|
+
loop = pageIndex === pages.length - 1;
|
|
475
|
+
currentMatch.page = pages[(pageIndex + 1) % pages.length];
|
|
476
|
+
currentMatch.index = 0;
|
|
477
|
+
}
|
|
587
478
|
|
|
588
|
-
|
|
589
|
-
|
|
479
|
+
// the overall index start at 1 instead of 0, so the formula is a little bit more complex
|
|
480
|
+
currentMatch.overall = currentMatch.overall % count + 1;
|
|
590
481
|
}
|
|
482
|
+
return loop;
|
|
483
|
+
},
|
|
484
|
+
/**
|
|
485
|
+
* Searches for the requested query.
|
|
486
|
+
* The promise will return the page number of the first match, that could be 0 if no result has been found.
|
|
487
|
+
* @param {String} query - The terms to search for
|
|
488
|
+
* @param {Number} [pageNum] - An optional page number from which start the search
|
|
489
|
+
* @returns {Promise}
|
|
490
|
+
*/
|
|
491
|
+
search: function search(query, pageNum) {
|
|
492
|
+
matches = null;
|
|
493
|
+
return textManager.getContents().then(function (pageContents) {
|
|
494
|
+
var contentText = _.map(pageContents, 'text');
|
|
495
|
+
var firstPage = 0;
|
|
496
|
+
var firstMatch = 0;
|
|
497
|
+
matches = findInDocument(query, contentText, config);
|
|
498
|
+
currentQuery = query;
|
|
499
|
+
currentMatch = null;
|
|
500
|
+
pages = [];
|
|
501
|
+
count = 0;
|
|
502
|
+
_.forEach(matches, function (pageMatches, pageIndex) {
|
|
503
|
+
var page = pageIndex + 1;
|
|
504
|
+
if (pageMatches.length > 0) {
|
|
505
|
+
pages.push(page);
|
|
506
|
+
if (!firstPage && page >= pageNum) {
|
|
507
|
+
firstPage = page;
|
|
508
|
+
firstMatch = count;
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
count += pageMatches.length;
|
|
512
|
+
});
|
|
513
|
+
if (!firstPage) {
|
|
514
|
+
firstPage = pages[0] || 0;
|
|
515
|
+
}
|
|
516
|
+
if (firstPage) {
|
|
517
|
+
currentMatch = {
|
|
518
|
+
overall: firstMatch + 1,
|
|
519
|
+
// the overall index of the match
|
|
520
|
+
page: firstPage,
|
|
521
|
+
// the page number of the match
|
|
522
|
+
index: 0 // the index of the match within its page
|
|
523
|
+
};
|
|
524
|
+
}
|
|
591
525
|
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
526
|
+
return firstPage;
|
|
527
|
+
});
|
|
528
|
+
},
|
|
529
|
+
/**
|
|
530
|
+
* Displays the search matches on the rendered page
|
|
531
|
+
* @param {Number} pageNum - The page number of the rendered page
|
|
532
|
+
* @returns {Promise}
|
|
533
|
+
*/
|
|
534
|
+
updateMatches: function updateMatches(pageNum) {
|
|
535
|
+
return textManager.getPageContent(pageNum).then(function (pageContent) {
|
|
536
|
+
var selectedMatch;
|
|
537
|
+
if (currentMatch && currentMatch.page === pageNum) {
|
|
538
|
+
selectedMatch = currentMatch.index;
|
|
539
|
+
}
|
|
540
|
+
if (pageContent) {
|
|
541
|
+
renderMatches(matches[pageNum - 1], pageContent, selectedMatch);
|
|
542
|
+
}
|
|
543
|
+
return pageNum;
|
|
544
|
+
});
|
|
545
|
+
},
|
|
546
|
+
/**
|
|
547
|
+
* Destroys the search engine and frees the resources
|
|
548
|
+
*/
|
|
549
|
+
destroy: function destroy() {
|
|
550
|
+
textManager = null;
|
|
551
|
+
currentQuery = null;
|
|
552
|
+
currentMatch = null;
|
|
553
|
+
matches = null;
|
|
554
|
+
pages = null;
|
|
555
|
+
config = null;
|
|
556
|
+
}
|
|
557
|
+
};
|
|
558
|
+
}
|
|
609
559
|
|
|
610
|
-
|
|
560
|
+
return pdfjsSearchFactory;
|
|
611
561
|
|
|
612
562
|
});
|