@oat-sa/tao-core-ui 1.64.1 → 1.64.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/LICENSE +339 -339
- package/README.md +22 -22
- package/dist/actionbar.js +92 -92
- package/dist/adder.js +109 -109
- package/dist/animable/absorbable/absorbable.js +29 -29
- package/dist/animable/absorbable/css/absorb.css +7 -7
- 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 +23 -23
- package/dist/areaBroker.js +51 -51
- package/dist/autocomplete/css/autocomplete.css +7 -7
- package/dist/autocomplete/css/autocomplete.css.map +1 -1
- package/dist/autocomplete.js +384 -384
- package/dist/autoscroll.js +22 -22
- package/dist/badge/badge.js +35 -35
- package/dist/badge/css/badge.css +7 -7
- 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 +57 -57
- package/dist/btngrouper.js +64 -64
- package/dist/bulkActionPopup/css/bulkActionPopup.css +7 -7
- package/dist/bulkActionPopup/css/bulkActionPopup.css.map +1 -1
- package/dist/bulkActionPopup.js +91 -91
- package/dist/button.js +89 -89
- package/dist/calculator/css/calculator.css +10 -10
- package/dist/calculator/css/calculator.css.map +1 -1
- package/dist/calculator.js +51 -51
- package/dist/cascadingComboBox.js +34 -34
- package/dist/ckeditor/ckConfigurator.js +49 -49
- package/dist/ckeditor/dtdHandler.js +110 -110
- package/dist/class/css/selector.css +7 -7
- package/dist/class/css/selector.css.map +1 -1
- package/dist/class/selector.js +98 -98
- package/dist/component/alignable.js +81 -81
- package/dist/component/containable.js +37 -37
- 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 +25 -25
- package/dist/component/placeable.js +70 -70
- package/dist/component/resizable.js +61 -61
- package/dist/component/stackable.js +20 -20
- package/dist/component/windowed.js +46 -46
- package/dist/component.js +140 -140
- package/dist/container.js +76 -76
- package/dist/contextualPopup/css/contextualPopup.css +7 -7
- package/dist/contextualPopup/css/contextualPopup.css.map +1 -1
- package/dist/contextualPopup.js +100 -100
- package/dist/dashboard/css/dashboard.css +7 -7
- package/dist/dashboard/css/dashboard.css.map +1 -1
- package/dist/dashboard.js +62 -62
- package/dist/datalist/css/datalist.css +7 -7
- package/dist/datalist/css/datalist.css.map +1 -1
- package/dist/datalist.js +147 -147
- package/dist/datatable/css/datatable.css +7 -7
- package/dist/datatable/css/datatable.css.map +1 -1
- package/dist/datatable/filterStrategy/filterStrategy.js +27 -27
- package/dist/datatable/filterStrategy/multiple.js +25 -25
- package/dist/datatable/filterStrategy/single.js +25 -25
- package/dist/datatable.js +377 -377
- package/dist/dateRange/css/dateRange.css +7 -7
- package/dist/dateRange/css/dateRange.css.map +1 -1
- package/dist/dateRange/dateRange.js +97 -97
- package/dist/datetime/css/picker.css +7 -7
- package/dist/datetime/css/picker.css.map +1 -1
- package/dist/datetime/picker.js +161 -161
- package/dist/deleter.js +79 -79
- package/dist/destination/css/selector.css +7 -7
- package/dist/destination/css/selector.css.map +1 -1
- package/dist/destination/selector.js +52 -52
- package/dist/dialog/alert.js +26 -26
- package/dist/dialog/confirm.js +27 -27
- package/dist/dialog/confirmDelete.js +31 -31
- package/dist/dialog.js +141 -141
- package/dist/disabler.js +90 -90
- 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 +30 -30
- package/dist/documentViewer/providers/pdfViewer/pdfjs/areaBroker.js +25 -25
- package/dist/documentViewer/providers/pdfViewer/pdfjs/findBar.js +120 -120
- package/dist/documentViewer/providers/pdfViewer/pdfjs/pageView.js +89 -89
- package/dist/documentViewer/providers/pdfViewer/pdfjs/pagesManager.js +52 -52
- package/dist/documentViewer/providers/pdfViewer/pdfjs/searchEngine.js +112 -112
- package/dist/documentViewer/providers/pdfViewer/pdfjs/textManager.js +67 -67
- package/dist/documentViewer/providers/pdfViewer/pdfjs/viewer.js +81 -81
- package/dist/documentViewer/providers/pdfViewer/pdfjs/wrapper.js +111 -111
- package/dist/documentViewer/providers/pdfViewer.js +29 -29
- package/dist/documentViewer/viewerFactory.js +71 -71
- package/dist/documentViewer.js +86 -86
- package/dist/dropdown/css/dropdown.css +7 -7
- package/dist/dropdown/css/dropdown.css.map +1 -1
- package/dist/dropdown.js +84 -84
- package/dist/durationer.js +58 -58
- package/dist/dynamicComponent/css/dynamicComponent.css +7 -7
- package/dist/dynamicComponent/css/dynamicComponent.css.map +1 -1
- package/dist/dynamicComponent.js +103 -103
- package/dist/feedback.js +84 -84
- package/dist/figure/FigureStateActive.js +111 -111
- package/dist/filesender.js +26 -26
- package/dist/filter.js +34 -34
- 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 +99 -99
- package/dist/form/form.js +248 -248
- package/dist/form/simpleForm.js +71 -71
- 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 +52 -52
- package/dist/form/validator/validator.js +103 -103
- 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 +24 -24
- package/dist/form/widget/loader.js +16 -16
- package/dist/form/widget/providers/checkBox.js +62 -62
- package/dist/form/widget/providers/comboBox.js +46 -46
- package/dist/form/widget/providers/default.js +35 -35
- package/dist/form/widget/providers/hidden.js +37 -37
- package/dist/form/widget/providers/hiddenBox.js +58 -58
- package/dist/form/widget/providers/radioBox.js +57 -57
- package/dist/form/widget/providers/textArea.js +35 -35
- package/dist/form/widget/providers/textBox.js +34 -34
- package/dist/form/widget/widget.js +141 -141
- package/dist/form.js +10 -10
- package/dist/formValidator/formValidator.js +61 -61
- package/dist/formValidator/highlighters/highlighter.js +41 -41
- package/dist/formValidator/highlighters/message.js +29 -29
- package/dist/formValidator/highlighters/tooltip.js +32 -32
- 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 +73 -73
- 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 +38 -38
- package/dist/generis/widget/checkBox/checkBox.js +39 -39
- package/dist/generis/widget/comboBox/comboBox.js +32 -32
- 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 +40 -40
- package/dist/generis/widget/loader.js +20 -20
- package/dist/generis/widget/textBox/textBox.js +27 -27
- package/dist/generis/widget/widget.js +47 -47
- package/dist/groupedComboBox.js +36 -36
- package/dist/groupvalidator.js +19 -19
- package/dist/hider.js +41 -41
- package/dist/highlighter.js +278 -278
- package/dist/image/ImgStateActive/extractLabel.js +20 -20
- package/dist/image/ImgStateActive/helper.js +16 -16
- package/dist/image/ImgStateActive/initHelper.js +85 -85
- package/dist/image/ImgStateActive/initMediaEditor.js +48 -48
- package/dist/image/ImgStateActive/mediaSizer.js +32 -32
- package/dist/image/ImgStateActive.js +104 -104
- package/dist/incrementer.js +58 -58
- package/dist/inplacer.js +87 -87
- package/dist/interactUtils.js +42 -42
- package/dist/itemButtonList/css/item-button-list.css +23 -23
- package/dist/itemButtonList/css/item-button-list.css.map +1 -1
- package/dist/itemButtonList.js +102 -102
- package/dist/keyNavigation/navigableDomElement.js +76 -76
- package/dist/keyNavigation/navigator.js +158 -158
- package/dist/listbox/css/listbox.css +7 -7
- package/dist/listbox/css/listbox.css.map +1 -1
- package/dist/listbox.js +84 -84
- package/dist/liststyler.js +57 -57
- package/dist/loadingButton/css/button.css +7 -7
- package/dist/loadingButton/css/button.css.map +1 -1
- package/dist/loadingButton/loadingButton.js +35 -35
- package/dist/lock.js +112 -112
- package/dist/login/login.js +87 -87
- package/dist/maths/calculator/basicCalculator.js +50 -50
- package/dist/maths/calculator/calculatorComponent.js +29 -29
- package/dist/maths/calculator/core/areaBroker.js +25 -25
- package/dist/maths/calculator/core/board.js +300 -300
- package/dist/maths/calculator/core/expression.js +98 -98
- package/dist/maths/calculator/core/labels.js +16 -16
- package/dist/maths/calculator/core/plugin.js +19 -19
- package/dist/maths/calculator/core/terms.js +26 -26
- package/dist/maths/calculator/core/tokenizer.js +98 -98
- package/dist/maths/calculator/core/tokens.js +75 -75
- 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 +23 -23
- package/dist/maths/calculator/plugins/core/degrad.js +22 -22
- package/dist/maths/calculator/plugins/core/history.js +45 -45
- package/dist/maths/calculator/plugins/core/remind.js +22 -22
- package/dist/maths/calculator/plugins/core/stepNavigation.js +31 -31
- package/dist/maths/calculator/plugins/keyboard/templateKeyboard/templateKeyboard.js +48 -48
- package/dist/maths/calculator/plugins/modifiers/pow10.js +35 -35
- package/dist/maths/calculator/plugins/modifiers/sign.js +90 -90
- package/dist/maths/calculator/plugins/screen/simpleScreen/simpleScreen.js +47 -47
- package/dist/maths/calculator/pluginsLoader.js +21 -21
- package/dist/maths/calculator/scientificCalculator.js +78 -78
- package/dist/mediaEditor/mediaEditorComponent.js +51 -51
- package/dist/mediaEditor/plugins/mediaAlignment/helper.js +16 -16
- package/dist/mediaEditor/plugins/mediaAlignment/mediaAlignmentComponent.js +47 -47
- package/dist/mediaEditor/plugins/mediaAlignment/style.css +7 -7
- package/dist/mediaEditor/plugins/mediaDimension/helper.js +70 -70
- package/dist/mediaEditor/plugins/mediaDimension/mediaDimensionComponent.js +140 -140
- 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 +52 -52
- package/dist/mediaplayer/players/youtube.js +39 -39
- package/dist/mediaplayer/players.js +18 -18
- package/dist/mediaplayer/support.js +55 -55
- package/dist/mediaplayer/utils/reminder.js +100 -100
- package/dist/mediaplayer/utils/timeObserver.js +92 -92
- package/dist/mediaplayer/youtubeManager.js +51 -51
- package/dist/mediaplayer.js +447 -447
- package/dist/mediasizer.js +122 -122
- package/dist/modal.js +87 -87
- package/dist/movableComponent.js +35 -35
- package/dist/pageSizeSelector.js +31 -31
- package/dist/pageStatus.js +33 -33
- package/dist/pagination/css/pagination.css +7 -7
- package/dist/pagination/css/pagination.css.map +1 -1
- package/dist/pagination/paginationStrategy.js +23 -23
- package/dist/pagination/providers/pages.js +24 -24
- package/dist/pagination/providers/simple.js +22 -22
- package/dist/pagination.js +45 -45
- package/dist/previewer.js +67 -67
- package/dist/progressbar.js +58 -58
- package/dist/propertySelector/css/propertySelector.css +7 -7
- package/dist/propertySelector/css/propertySelector.css.map +1 -1
- package/dist/propertySelector/propertySelector.js +86 -86
- package/dist/report.js +73 -73
- package/dist/resource/css/selector.css +7 -7
- package/dist/resource/css/selector.css.map +1 -1
- package/dist/resource/filters.js +60 -60
- package/dist/resource/list.js +53 -53
- package/dist/resource/selectable.js +92 -92
- package/dist/resource/selector.js +182 -182
- package/dist/resource/tree.js +91 -91
- package/dist/resourcemgr/css/resourcemgr.css +7 -7
- package/dist/resourcemgr/css/resourcemgr.css.map +1 -1
- package/dist/resourcemgr/fileBrowser.js +75 -75
- package/dist/resourcemgr/fileSelector.js +45 -45
- package/dist/resourcemgr/util/updatePermissions.js +4 -4
- package/dist/resourcemgr.js +49 -49
- package/dist/scroller.js +26 -26
- package/dist/searchModal/advancedSearch.js +155 -155
- package/dist/searchModal/css/advancedSearch.css +7 -7
- package/dist/searchModal/css/advancedSearch.css.map +1 -1
- package/dist/searchModal/css/searchModal.css +7 -7
- package/dist/searchModal/css/searchModal.css.map +1 -1
- package/dist/searchModal.js +134 -134
- package/dist/selecter.js +6 -6
- package/dist/stacker.js +43 -43
- package/dist/switch/css/switch.css +7 -7
- package/dist/switch/css/switch.css.map +1 -1
- package/dist/switch/switch.js +62 -62
- package/dist/tableModel.js +33 -33
- package/dist/tabs/css/tabs.css +12 -12
- package/dist/tabs/css/tabs.css.map +1 -1
- package/dist/tabs.js +220 -220
- package/dist/taskQueue/css/taskQueue.css +7 -7
- package/dist/taskQueue/css/taskQueue.css.map +1 -1
- package/dist/taskQueue/status.js +59 -59
- package/dist/taskQueue/table.js +54 -54
- package/dist/taskQueue/taskQueue.js +18 -18
- package/dist/taskQueue/taskQueueModel.js +102 -102
- package/dist/taskQueue.js +47 -47
- 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 +39 -39
- package/dist/taskQueueButton/taskable.js +41 -41
- package/dist/taskQueueButton/treeButton.js +43 -43
- package/dist/themeLoader.js +75 -75
- package/dist/themes.js +84 -84
- package/dist/toggler.js +57 -57
- package/dist/tooltip.js +41 -41
- package/dist/tooltipster.js +17 -17
- package/dist/transformer.js +117 -117
- package/dist/tristateCheckboxGroup/css/tristateCheckboxGroup.css +7 -7
- package/dist/tristateCheckboxGroup/css/tristateCheckboxGroup.css.map +1 -1
- package/dist/tristateCheckboxGroup.js +62 -62
- package/dist/uploader.js +145 -145
- package/dist/validator/validators.js +48 -48
- package/dist/validator.js +23 -23
- package/dist/waitForMedia.js +33 -33
- package/dist/waitingDialog/css/waitingDialog.css +7 -7
- package/dist/waitingDialog/css/waitingDialog.css.map +1 -1
- package/dist/waitingDialog/waitingDialog.js +54 -54
- package/package.json +110 -110
- package/scss/basic.scss +16 -16
- package/scss/ckeditor/skins/tao/scss/inc/_ck-icons.scss +60 -60
- package/scss/ckeditor/skins/tao/scss/inc/_tao.scss +59 -59
- package/scss/font/tao/tao.svg +235 -235
- 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 -93
- package/scss/inc/_feedback.scss +154 -154
- 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 +227 -227
- package/scss/inc/fonts/_tao-icon-def.scss +12 -12
- package/scss/inc/fonts/_tao-icon-vars.scss +241 -241
- 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 -7
- 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 -7
- package/src/autocomplete/css/autocomplete.css.map +1 -1
- package/src/autocomplete/scss/autocomplete.scss +37 -37
- package/src/autocomplete.js +1027 -1027
- package/src/autoscroll.js +57 -57
- package/src/badge/badge.js +119 -119
- package/src/badge/css/badge.css +7 -7
- 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 +742 -742
- 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 +294 -294
- package/src/css/basic.css +104 -104
- 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 +179 -179
- 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 +7 -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 -149
- 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 +220 -220
- 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 +553 -553
- package/src/feedback/feedback.tpl +7 -7
- package/src/feedback.js +295 -295
- package/src/figure/FigureStateActive.js +184 -184
- package/src/filesender.js +112 -112
- package/src/filter/template.tpl +5 -5
- package/src/filter.js +129 -129
- 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 +47 -47
- package/src/formValidator/formValidator.js +253 -253
- package/src/formValidator/highlighters/highlighter.js +103 -103
- package/src/formValidator/highlighters/message.js +68 -68
- 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 +66 -66
- 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 +131 -131
- 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 +64 -64
- 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 +1192 -1192
- 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 +309 -309
- package/src/inplacer.js +315 -315
- package/src/interactUtils.js +140 -140
- package/src/itemButtonList/css/item-button-list.css +23 -23
- 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 +285 -285
- package/src/keyNavigation/navigator.js +535 -535
- 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 +252 -252
- 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 +393 -393
- package/src/login/login.js +317 -317
- 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 +190 -190
- 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 +110 -110
- 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 +190 -190
- 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 +106 -106
- 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 +7 -7
- package/src/propertySelector/css/propertySelector.css.map +1 -1
- package/src/propertySelector/propertySelector.js +286 -286
- package/src/propertySelector/scss/propertySelector.scss +66 -66
- package/src/propertySelector/tpl/property-description.tpl +12 -12
- package/src/propertySelector/tpl/property-selector.tpl +6 -6
- 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 +398 -398
- 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 +322 -322
- 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 -638
- package/src/searchModal/css/advancedSearch.css +7 -7
- package/src/searchModal/css/advancedSearch.css.map +1 -1
- package/src/searchModal/css/searchModal.css +7 -7
- package/src/searchModal/css/searchModal.css.map +1 -1
- package/src/searchModal/scss/advancedSearch.scss +171 -171
- package/src/searchModal/scss/searchModal.scss +393 -393
- package/src/searchModal/tpl/advanced-search.tpl +9 -9
- 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 -27
- package/src/searchModal/tpl/list-checkbox-criterion.tpl +17 -17
- package/src/searchModal/tpl/list-select-criterion.tpl +12 -12
- package/src/searchModal/tpl/text-criterion.tpl +11 -11
- package/src/searchModal.js +760 -760
- 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 +216 -216
- 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 +108 -108
- 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 +217 -217
- package/src/validator.js +262 -262
- 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
package/dist/highlighter.js
CHANGED
|
@@ -3,47 +3,47 @@ define(['lodash', 'jquery'], function (_, $) { 'use strict';
|
|
|
3
3
|
_ = _ && Object.prototype.hasOwnProperty.call(_, 'default') ? _['default'] : _;
|
|
4
4
|
$ = $ && Object.prototype.hasOwnProperty.call($, 'default') ? $['default'] : $;
|
|
5
5
|
|
|
6
|
-
/**
|
|
7
|
-
* This program is free software; you can redistribute it and/or
|
|
8
|
-
* modify it under the terms of the GNU General Public License
|
|
9
|
-
* as published by the Free Software Foundation; under version 2
|
|
10
|
-
* of the License (non-upgradable).
|
|
11
|
-
*
|
|
12
|
-
* This program is distributed in the hope that it will be useful,
|
|
13
|
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
14
|
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
15
|
-
* GNU General Public License for more details.
|
|
16
|
-
*
|
|
17
|
-
* You should have received a copy of the GNU General Public License
|
|
18
|
-
* along with this program; if not, write to the Free Software
|
|
19
|
-
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
20
|
-
*
|
|
21
|
-
* Copyright (c) 2016-2021 (original work) Open Assessment Technologies SA;
|
|
6
|
+
/**
|
|
7
|
+
* This program is free software; you can redistribute it and/or
|
|
8
|
+
* modify it under the terms of the GNU General Public License
|
|
9
|
+
* as published by the Free Software Foundation; under version 2
|
|
10
|
+
* of the License (non-upgradable).
|
|
11
|
+
*
|
|
12
|
+
* This program is distributed in the hope that it will be useful,
|
|
13
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
14
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
15
|
+
* GNU General Public License for more details.
|
|
16
|
+
*
|
|
17
|
+
* You should have received a copy of the GNU General Public License
|
|
18
|
+
* along with this program; if not, write to the Free Software
|
|
19
|
+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
20
|
+
*
|
|
21
|
+
* Copyright (c) 2016-2021 (original work) Open Assessment Technologies SA;
|
|
22
22
|
*/
|
|
23
23
|
|
|
24
|
-
/**
|
|
25
|
-
* Data attribute used to logically group the wrapping nodes into a single selection
|
|
26
|
-
* @type {string}
|
|
24
|
+
/**
|
|
25
|
+
* Data attribute used to logically group the wrapping nodes into a single selection
|
|
26
|
+
* @type {string}
|
|
27
27
|
*/
|
|
28
28
|
var GROUP_ATTR = 'data-hl-group';
|
|
29
29
|
|
|
30
|
-
/**
|
|
31
|
-
* Children of those nodes types cannot be highlighted
|
|
32
|
-
* @type {string[]}
|
|
30
|
+
/**
|
|
31
|
+
* Children of those nodes types cannot be highlighted
|
|
32
|
+
* @type {string[]}
|
|
33
33
|
*/
|
|
34
34
|
var defaultBlackList = ['textarea', 'math', 'script', '.select2-container'];
|
|
35
35
|
|
|
36
|
-
/**
|
|
37
|
-
* @param {Object} options
|
|
38
|
-
* @param {String} options.className - name of the class that will be used by the wrappers tags to highlight text
|
|
39
|
-
* @param {String} options.containerSelector - allows to select the root Node in which highlighting is allowed
|
|
40
|
-
* @param {Array<String>} [options.containersBlackList] - additional blacklist selectors to be added to module instance's blacklist
|
|
41
|
-
* @param {Array<String>} [options.containersWhiteList] - whitelist selectors; supported only in `keepEmptyNodes` mode.
|
|
42
|
-
* Priority of blacklist or whitelist is decided by which selector is closest to the node. If no match found, node is considered whitelisted.
|
|
43
|
-
* @param {Boolean} [options.clearOnClick] - clear single highlight node on click
|
|
44
|
-
* @param {Object} [options.colors] - keys is keeping as the "c" value of storing/restore the highlighters for indexing, values are wrappers class names
|
|
45
|
-
* @param {Boolean} [options.keepEmptyNodes] - retain original dom structure as far as possible and do not remove empty nodes if they were not created by highlighter
|
|
46
|
-
* @returns {Object} - the highlighter instance
|
|
36
|
+
/**
|
|
37
|
+
* @param {Object} options
|
|
38
|
+
* @param {String} options.className - name of the class that will be used by the wrappers tags to highlight text
|
|
39
|
+
* @param {String} options.containerSelector - allows to select the root Node in which highlighting is allowed
|
|
40
|
+
* @param {Array<String>} [options.containersBlackList] - additional blacklist selectors to be added to module instance's blacklist
|
|
41
|
+
* @param {Array<String>} [options.containersWhiteList] - whitelist selectors; supported only in `keepEmptyNodes` mode.
|
|
42
|
+
* Priority of blacklist or whitelist is decided by which selector is closest to the node. If no match found, node is considered whitelisted.
|
|
43
|
+
* @param {Boolean} [options.clearOnClick] - clear single highlight node on click
|
|
44
|
+
* @param {Object} [options.colors] - keys is keeping as the "c" value of storing/restore the highlighters for indexing, values are wrappers class names
|
|
45
|
+
* @param {Boolean} [options.keepEmptyNodes] - retain original dom structure as far as possible and do not remove empty nodes if they were not created by highlighter
|
|
46
|
+
* @returns {Object} - the highlighter instance
|
|
47
47
|
*/
|
|
48
48
|
function highlighter (options) {
|
|
49
49
|
var className = options.className;
|
|
@@ -56,10 +56,10 @@ define(['lodash', 'jquery'], function (_, $) { 'use strict';
|
|
|
56
56
|
highlightingClasses = Object.values(options.colors);
|
|
57
57
|
}
|
|
58
58
|
|
|
59
|
-
/**
|
|
60
|
-
* list of node selectors which should NOT receive any highlighting from this instance
|
|
61
|
-
* an optional passed-in blacklist is merged with local defaults
|
|
62
|
-
* @type {Array}
|
|
59
|
+
/**
|
|
60
|
+
* list of node selectors which should NOT receive any highlighting from this instance
|
|
61
|
+
* an optional passed-in blacklist is merged with local defaults
|
|
62
|
+
* @type {Array}
|
|
63
63
|
*/
|
|
64
64
|
const containersBlackList = _.union(defaultBlackList, options.containersBlackList);
|
|
65
65
|
const containersBlackListSelector = containersBlackList.join(', ');
|
|
@@ -70,63 +70,63 @@ define(['lodash', 'jquery'], function (_, $) { 'use strict';
|
|
|
70
70
|
containersBlackAndWhiteListSelector = _.union(containersBlackList, options.containersWhiteList).join(', ');
|
|
71
71
|
}
|
|
72
72
|
|
|
73
|
-
/**
|
|
74
|
-
* used in recursive loops to decide if we should wrap or not the current node
|
|
75
|
-
* @type {boolean}
|
|
73
|
+
/**
|
|
74
|
+
* used in recursive loops to decide if we should wrap or not the current node
|
|
75
|
+
* @type {boolean}
|
|
76
76
|
*/
|
|
77
77
|
let isWrapping = false;
|
|
78
78
|
|
|
79
|
-
/**
|
|
80
|
-
* performance improvement to break out of a potentially big recursive loop once the wrapping has ended
|
|
81
|
-
* @type {boolean}
|
|
79
|
+
/**
|
|
80
|
+
* performance improvement to break out of a potentially big recursive loop once the wrapping has ended
|
|
81
|
+
* @type {boolean}
|
|
82
82
|
*/
|
|
83
83
|
let hasWrapped = false;
|
|
84
84
|
|
|
85
|
-
/**
|
|
86
|
-
* used in recursive loops to assign a group Id to the current wrapped node
|
|
87
|
-
* @type {number}
|
|
85
|
+
/**
|
|
86
|
+
* used in recursive loops to assign a group Id to the current wrapped node
|
|
87
|
+
* @type {number}
|
|
88
88
|
*/
|
|
89
89
|
let currentGroupId;
|
|
90
90
|
|
|
91
|
-
/**
|
|
92
|
-
* used in recursive loops to build the index of text nodes
|
|
93
|
-
* @type {number}
|
|
91
|
+
/**
|
|
92
|
+
* used in recursive loops to build the index of text nodes
|
|
93
|
+
* @type {number}
|
|
94
94
|
*/
|
|
95
95
|
let textNodesIndex;
|
|
96
96
|
|
|
97
|
-
/**
|
|
98
|
-
* Returns the node in which highlighting is allowed
|
|
99
|
-
* @returns {Element}
|
|
97
|
+
/**
|
|
98
|
+
* Returns the node in which highlighting is allowed
|
|
99
|
+
* @returns {Element}
|
|
100
100
|
*/
|
|
101
101
|
function getContainer() {
|
|
102
102
|
return $(containerSelector).get(0);
|
|
103
103
|
}
|
|
104
104
|
|
|
105
|
-
/**
|
|
106
|
-
* Returns all highlighted nodes, excluding any inside blacklisted elements
|
|
107
|
-
* @returns {JQuery<HTMLElement>}
|
|
105
|
+
/**
|
|
106
|
+
* Returns all highlighted nodes, excluding any inside blacklisted elements
|
|
107
|
+
* @returns {JQuery<HTMLElement>}
|
|
108
108
|
*/
|
|
109
109
|
function getHighlightedNodes() {
|
|
110
110
|
return $(containerSelector).find(`.${highlightingClasses.join(',.')}`).filter((i, node) => !isBlacklisted(node));
|
|
111
111
|
}
|
|
112
112
|
|
|
113
|
-
/**
|
|
114
|
-
* Attach data to wrapper node.
|
|
115
|
-
* Use it when deleting this highlight to know if highlight content should be merged with neighbour text nodes or not.
|
|
116
|
-
* Use it when building/restoring index to know if restored highlight content should be split off neighbour text node or not.
|
|
117
|
-
* Needed to keep markup the same as it was before highlighting.
|
|
118
|
-
* @param {HTMLElement} node
|
|
119
|
-
* @param {Boolean} beforeWasSplit
|
|
120
|
-
* @param {Boolean} afterWasSplit
|
|
113
|
+
/**
|
|
114
|
+
* Attach data to wrapper node.
|
|
115
|
+
* Use it when deleting this highlight to know if highlight content should be merged with neighbour text nodes or not.
|
|
116
|
+
* Use it when building/restoring index to know if restored highlight content should be split off neighbour text node or not.
|
|
117
|
+
* Needed to keep markup the same as it was before highlighting.
|
|
118
|
+
* @param {HTMLElement} node
|
|
119
|
+
* @param {Boolean} beforeWasSplit
|
|
120
|
+
* @param {Boolean} afterWasSplit
|
|
121
121
|
*/
|
|
122
122
|
function addSplitData(node, beforeWasSplit, afterWasSplit) {
|
|
123
123
|
node.dataset.beforeWasSplit = beforeWasSplit;
|
|
124
124
|
node.dataset.afterWasSplit = afterWasSplit;
|
|
125
125
|
}
|
|
126
126
|
|
|
127
|
-
/**
|
|
128
|
-
* Highlight all text nodes within each given range
|
|
129
|
-
* @param {Range[]} ranges - array of ranges to highlight, may be given by the helper selector.getAllRanges()
|
|
127
|
+
/**
|
|
128
|
+
* Highlight all text nodes within each given range
|
|
129
|
+
* @param {Range[]} ranges - array of ranges to highlight, may be given by the helper selector.getAllRanges()
|
|
130
130
|
*/
|
|
131
131
|
function highlightRanges(ranges) {
|
|
132
132
|
ranges.forEach(function (range) {
|
|
@@ -178,10 +178,10 @@ define(['lodash', 'jquery'], function (_, $) { 'use strict';
|
|
|
178
178
|
}
|
|
179
179
|
}
|
|
180
180
|
|
|
181
|
-
/**
|
|
182
|
-
* Check if a range is valid
|
|
183
|
-
* @param {Range} range
|
|
184
|
-
* @returns {boolean}
|
|
181
|
+
/**
|
|
182
|
+
* Check if a range is valid
|
|
183
|
+
* @param {Range} range
|
|
184
|
+
* @returns {boolean}
|
|
185
185
|
*/
|
|
186
186
|
function isRangeValid(range) {
|
|
187
187
|
var rangeInContainer;
|
|
@@ -193,18 +193,18 @@ define(['lodash', 'jquery'], function (_, $) { 'use strict';
|
|
|
193
193
|
}
|
|
194
194
|
}
|
|
195
195
|
|
|
196
|
-
/**
|
|
197
|
-
* Core wrapping function. Traverse the DOM tree and highlight (= wraps) all text nodes within the given range.
|
|
198
|
-
* Recursive.
|
|
199
|
-
*
|
|
200
|
-
* @param {Node} rootNode - top of the node hierarchy in which text nodes will be searched
|
|
201
|
-
* @param {Object} rangeInfos
|
|
202
|
-
* @param {Node} rangeInfos.startNode - node on which the selection starts
|
|
203
|
-
* @param {Node} rangeInfos.startNodeContainer - container of the startNode, or the start node itself in case of text nodes
|
|
204
|
-
* @param {number} rangeInfos.startOffset - same as range.startOffset, but not read-only to allow override
|
|
205
|
-
* @param {Node} rangeInfos.endNode - node on which the selection ends
|
|
206
|
-
* @param {Node} rangeInfos.endNodeContainer - container of the endNode, or the end node itself in case of text nodes
|
|
207
|
-
* @param {number} rangeInfos.endOffset - same as range.endOffset, but not read-only to allow override
|
|
196
|
+
/**
|
|
197
|
+
* Core wrapping function. Traverse the DOM tree and highlight (= wraps) all text nodes within the given range.
|
|
198
|
+
* Recursive.
|
|
199
|
+
*
|
|
200
|
+
* @param {Node} rootNode - top of the node hierarchy in which text nodes will be searched
|
|
201
|
+
* @param {Object} rangeInfos
|
|
202
|
+
* @param {Node} rangeInfos.startNode - node on which the selection starts
|
|
203
|
+
* @param {Node} rangeInfos.startNodeContainer - container of the startNode, or the start node itself in case of text nodes
|
|
204
|
+
* @param {number} rangeInfos.startOffset - same as range.startOffset, but not read-only to allow override
|
|
205
|
+
* @param {Node} rangeInfos.endNode - node on which the selection ends
|
|
206
|
+
* @param {Node} rangeInfos.endNodeContainer - container of the endNode, or the end node itself in case of text nodes
|
|
207
|
+
* @param {number} rangeInfos.endOffset - same as range.endOffset, but not read-only to allow override
|
|
208
208
|
*/
|
|
209
209
|
function wrapTextNodesInRange(rootNode, rangeInfos) {
|
|
210
210
|
var childNodes = rootNode.childNodes;
|
|
@@ -315,12 +315,12 @@ define(['lodash', 'jquery'], function (_, $) { 'use strict';
|
|
|
315
315
|
}
|
|
316
316
|
}
|
|
317
317
|
|
|
318
|
-
/**
|
|
319
|
-
* Restructure content of the highlighted wrapper according to the selectedRange
|
|
320
|
-
* @param {Node} textNode
|
|
321
|
-
* @param {string} activeClass
|
|
322
|
-
* @param {Range} selectedRange
|
|
323
|
-
* @param {number} groupId
|
|
318
|
+
/**
|
|
319
|
+
* Restructure content of the highlighted wrapper according to the selectedRange
|
|
320
|
+
* @param {Node} textNode
|
|
321
|
+
* @param {string} activeClass
|
|
322
|
+
* @param {Range} selectedRange
|
|
323
|
+
* @param {number} groupId
|
|
324
324
|
*/
|
|
325
325
|
function highlightContainerNodes(textNode, activeClass, selectedRange, groupId) {
|
|
326
326
|
const container = textNode.parentNode;
|
|
@@ -329,46 +329,46 @@ define(['lodash', 'jquery'], function (_, $) { 'use strict';
|
|
|
329
329
|
const isSelectionCoversNodeStart = range.compareBoundaryPoints(Range.START_TO_START, selectedRange) === 0;
|
|
330
330
|
const isSelectionCoversNodeEnd = range.compareBoundaryPoints(Range.END_TO_END, selectedRange) === 0;
|
|
331
331
|
|
|
332
|
-
/*
|
|
333
|
-
There are 4 possible cases selected area is intersected with already highlighted element.
|
|
334
|
-
In examples below the border is represents the selection, "yellow" is class name of already highlighted
|
|
335
|
-
container, "red" is class name of currently active highlighter
|
|
336
|
-
**********************************************************************************************************
|
|
337
|
-
1. The container content is completely selected, so that we only have to change the highlighter class name
|
|
338
|
-
|
|
339
|
-
__________________________________________________
|
|
340
|
-
| |
|
|
341
|
-
|<span class="yellow"> Lorem ipsum dolor sit</span>|
|
|
342
|
-
|__________________________________________________|
|
|
343
|
-
|
|
344
|
-
<span class="red"> Lorem ipsum dolor sit</span>
|
|
345
|
-
|
|
346
|
-
2. The container content is partially selected from the begging.
|
|
347
|
-
|
|
348
|
-
______________________________
|
|
349
|
-
| |
|
|
350
|
-
|<span class="yellow"> Lorem ip|sum dolor sit</span>
|
|
351
|
-
|______________________________|
|
|
352
|
-
|
|
353
|
-
<span class="red"> Lorem ip</span><span class="yellow">sum dolor sit</span>
|
|
354
|
-
|
|
355
|
-
3. The container content is partially selected at the end.
|
|
356
|
-
|
|
357
|
-
____________________
|
|
358
|
-
| |
|
|
359
|
-
<span class="yellow"> Lorem ip|sum dolor sit</span>|
|
|
360
|
-
|____________________|
|
|
361
|
-
|
|
362
|
-
<span class="yellow"> Lorem ip</span><span class="red">sum dolor sit</span>
|
|
363
|
-
|
|
364
|
-
4. The container content is partially selected in the middle.
|
|
365
|
-
|
|
366
|
-
___________
|
|
367
|
-
| |
|
|
368
|
-
<span class="yellow"> Lorem |ipsum dolor| sit</span>
|
|
369
|
-
|___________|
|
|
370
|
-
|
|
371
|
-
<span class="yellow"> Lorem </span><span class="red">ipsum dolor</span><span class="yellow"> sit</span>
|
|
332
|
+
/*
|
|
333
|
+
There are 4 possible cases selected area is intersected with already highlighted element.
|
|
334
|
+
In examples below the border is represents the selection, "yellow" is class name of already highlighted
|
|
335
|
+
container, "red" is class name of currently active highlighter
|
|
336
|
+
**********************************************************************************************************
|
|
337
|
+
1. The container content is completely selected, so that we only have to change the highlighter class name
|
|
338
|
+
Input:
|
|
339
|
+
__________________________________________________
|
|
340
|
+
| |
|
|
341
|
+
|<span class="yellow"> Lorem ipsum dolor sit</span>|
|
|
342
|
+
|__________________________________________________|
|
|
343
|
+
Output:
|
|
344
|
+
<span class="red"> Lorem ipsum dolor sit</span>
|
|
345
|
+
**********************************************************************************************************
|
|
346
|
+
2. The container content is partially selected from the begging.
|
|
347
|
+
Input:
|
|
348
|
+
______________________________
|
|
349
|
+
| |
|
|
350
|
+
|<span class="yellow"> Lorem ip|sum dolor sit</span>
|
|
351
|
+
|______________________________|
|
|
352
|
+
Output:
|
|
353
|
+
<span class="red"> Lorem ip</span><span class="yellow">sum dolor sit</span>
|
|
354
|
+
**********************************************************************************************************
|
|
355
|
+
3. The container content is partially selected at the end.
|
|
356
|
+
Input:
|
|
357
|
+
____________________
|
|
358
|
+
| |
|
|
359
|
+
<span class="yellow"> Lorem ip|sum dolor sit</span>|
|
|
360
|
+
|____________________|
|
|
361
|
+
Output:
|
|
362
|
+
<span class="yellow"> Lorem ip</span><span class="red">sum dolor sit</span>
|
|
363
|
+
**********************************************************************************************************
|
|
364
|
+
4. The container content is partially selected in the middle.
|
|
365
|
+
Input:
|
|
366
|
+
___________
|
|
367
|
+
| |
|
|
368
|
+
<span class="yellow"> Lorem |ipsum dolor| sit</span>
|
|
369
|
+
|___________|
|
|
370
|
+
Output:
|
|
371
|
+
<span class="yellow"> Lorem </span><span class="red">ipsum dolor</span><span class="yellow"> sit</span>
|
|
372
372
|
*/
|
|
373
373
|
if (isSelectionCoversNodeStart && isSelectionCoversNodeEnd) {
|
|
374
374
|
textNode.parentNode.className = activeClass;
|
|
@@ -384,13 +384,13 @@ define(['lodash', 'jquery'], function (_, $) { 'use strict';
|
|
|
384
384
|
}
|
|
385
385
|
}
|
|
386
386
|
|
|
387
|
-
/**
|
|
388
|
-
* Wraps all containers text nodes with highlighter element.
|
|
389
|
-
* The child node with index given by indexToWrapNode parameter will be wrap with class given by activeClass parameter
|
|
390
|
-
* @param {Element} container
|
|
391
|
-
* @param {number} indexToWrapNode
|
|
392
|
-
* @param {string} activeClass
|
|
393
|
-
* @param {number} groupId
|
|
387
|
+
/**
|
|
388
|
+
* Wraps all containers text nodes with highlighter element.
|
|
389
|
+
* The child node with index given by indexToWrapNode parameter will be wrap with class given by activeClass parameter
|
|
390
|
+
* @param {Element} container
|
|
391
|
+
* @param {number} indexToWrapNode
|
|
392
|
+
* @param {string} activeClass
|
|
393
|
+
* @param {number} groupId
|
|
394
394
|
*/
|
|
395
395
|
function wrapContainerChildNodes(container, indexToWrapNode, activeClass, groupId) {
|
|
396
396
|
const containerClass = container.className;
|
|
@@ -411,11 +411,11 @@ define(['lodash', 'jquery'], function (_, $) { 'use strict';
|
|
|
411
411
|
container.replaceWith(fragment);
|
|
412
412
|
}
|
|
413
413
|
|
|
414
|
-
/**
|
|
415
|
-
* wraps a text node into the highlight span
|
|
416
|
-
* @param {Node} node - the node to wrap
|
|
417
|
-
* @param {number} groupId - the highlight group
|
|
418
|
-
* @returns {Node|null} wrapper node, if it was created
|
|
414
|
+
/**
|
|
415
|
+
* wraps a text node into the highlight span
|
|
416
|
+
* @param {Node} node - the node to wrap
|
|
417
|
+
* @param {number} groupId - the highlight group
|
|
418
|
+
* @returns {Node|null} wrapper node, if it was created
|
|
419
419
|
*/
|
|
420
420
|
function wrapTextNode(node, groupId) {
|
|
421
421
|
if (isWrapping && !isWrappingNode(node.parentNode) && isWrappable(node)) {
|
|
@@ -425,11 +425,11 @@ define(['lodash', 'jquery'], function (_, $) { 'use strict';
|
|
|
425
425
|
return null;
|
|
426
426
|
}
|
|
427
427
|
|
|
428
|
-
/**
|
|
429
|
-
* We need to re-index the groups after a user highlight: either to merge groups or to resolve inconsistencies
|
|
430
|
-
* Recursive.
|
|
431
|
-
*
|
|
432
|
-
* @param {Node} rootNode
|
|
428
|
+
/**
|
|
429
|
+
* We need to re-index the groups after a user highlight: either to merge groups or to resolve inconsistencies
|
|
430
|
+
* Recursive.
|
|
431
|
+
*
|
|
432
|
+
* @param {Node} rootNode
|
|
433
433
|
*/
|
|
434
434
|
function reindexGroups(rootNode) {
|
|
435
435
|
if (!rootNode) {
|
|
@@ -456,10 +456,10 @@ define(['lodash', 'jquery'], function (_, $) { 'use strict';
|
|
|
456
456
|
}
|
|
457
457
|
}
|
|
458
458
|
|
|
459
|
-
/**
|
|
460
|
-
* Some highlights may result in having adjacent wrapping nodes. We remove them here to get a cleaner markup.
|
|
461
|
-
*
|
|
462
|
-
* @param {Node} rootNode
|
|
459
|
+
/**
|
|
460
|
+
* Some highlights may result in having adjacent wrapping nodes. We remove them here to get a cleaner markup.
|
|
461
|
+
*
|
|
462
|
+
* @param {Node} rootNode
|
|
463
463
|
*/
|
|
464
464
|
function mergeAdjacentWrappingNodes(rootNode) {
|
|
465
465
|
if (!rootNode) {
|
|
@@ -489,8 +489,8 @@ define(['lodash', 'jquery'], function (_, $) { 'use strict';
|
|
|
489
489
|
}
|
|
490
490
|
}
|
|
491
491
|
|
|
492
|
-
/**
|
|
493
|
-
* Unwraps highlighted nodes with a line break or with an empty content
|
|
492
|
+
/**
|
|
493
|
+
* Unwraps highlighted nodes with a line break or with an empty content
|
|
494
494
|
*/
|
|
495
495
|
function unWrapEmptyHighlights() {
|
|
496
496
|
getHighlightedNodes().each((index, node) => {
|
|
@@ -505,13 +505,13 @@ define(['lodash', 'jquery'], function (_, $) { 'use strict';
|
|
|
505
505
|
});
|
|
506
506
|
}
|
|
507
507
|
|
|
508
|
-
/**
|
|
509
|
-
* Check condition to avoid the work of `unwrapEmptyHighlights` ahead of time, before `mergeAdjacentNodes` runs,
|
|
510
|
-
* because in `keepEmptyNodes` case we do not want to add nodes to dom unless necessary.
|
|
511
|
-
* Also be more strict and don't allow to select nodes with spaces only, because they may appear in unexpected places in markup
|
|
512
|
-
* (here it's not exactly same as `unwrapEmptyHighlights`).
|
|
513
|
-
* @param {Node} node - node which will be wrapped (highlighted)
|
|
514
|
-
* @returns {Boolean}
|
|
508
|
+
/**
|
|
509
|
+
* Check condition to avoid the work of `unwrapEmptyHighlights` ahead of time, before `mergeAdjacentNodes` runs,
|
|
510
|
+
* because in `keepEmptyNodes` case we do not want to add nodes to dom unless necessary.
|
|
511
|
+
* Also be more strict and don't allow to select nodes with spaces only, because they may appear in unexpected places in markup
|
|
512
|
+
* (here it's not exactly same as `unwrapEmptyHighlights`).
|
|
513
|
+
* @param {Node} node - node which will be wrapped (highlighted)
|
|
514
|
+
* @returns {Boolean}
|
|
515
515
|
*/
|
|
516
516
|
function willHighlightNotBeEmptyAfterMerge(node) {
|
|
517
517
|
if (!node.textContent.length) {
|
|
@@ -533,12 +533,12 @@ define(['lodash', 'jquery'], function (_, $) { 'use strict';
|
|
|
533
533
|
return false;
|
|
534
534
|
}
|
|
535
535
|
|
|
536
|
-
/**
|
|
537
|
-
* `range.surroundContents` can create empty text nodes,
|
|
538
|
-
* which will cause trouble in `mergeAdjacentNodes` later (in `keepEmptyNodes` case).
|
|
539
|
-
* This method surrounds range, then removes those nodes
|
|
540
|
-
* @param {Range} range
|
|
541
|
-
* @param {Node} wrapperNode
|
|
536
|
+
/**
|
|
537
|
+
* `range.surroundContents` can create empty text nodes,
|
|
538
|
+
* which will cause trouble in `mergeAdjacentNodes` later (in `keepEmptyNodes` case).
|
|
539
|
+
* This method surrounds range, then removes those nodes
|
|
540
|
+
* @param {Range} range
|
|
541
|
+
* @param {Node} wrapperNode
|
|
542
542
|
*/
|
|
543
543
|
function rangeSurroundContentsNoEmptyNodes(range, wrapperNode) {
|
|
544
544
|
const containerPreviousSibling = range.commonAncestorContainer.previousSibling;
|
|
@@ -548,10 +548,10 @@ define(['lodash', 'jquery'], function (_, $) { 'use strict';
|
|
|
548
548
|
removeEmptyTextNodeIfDifferent(wrapperNode.nextSibling, containerNextSibling);
|
|
549
549
|
}
|
|
550
550
|
|
|
551
|
-
/**
|
|
552
|
-
* Remove `node`, if it's an empty text node and is *not* the same node as `nodeToCompare`
|
|
553
|
-
* @param {Node} node
|
|
554
|
-
* @param {Node} nodeToCompare
|
|
551
|
+
/**
|
|
552
|
+
* Remove `node`, if it's an empty text node and is *not* the same node as `nodeToCompare`
|
|
553
|
+
* @param {Node} node
|
|
554
|
+
* @param {Node} nodeToCompare
|
|
555
555
|
*/
|
|
556
556
|
function removeEmptyTextNodeIfDifferent(node, nodeToCompare) {
|
|
557
557
|
if (node && node !== nodeToCompare && isText(node) && node.textContent.length === 0) {
|
|
@@ -559,8 +559,8 @@ define(['lodash', 'jquery'], function (_, $) { 'use strict';
|
|
|
559
559
|
}
|
|
560
560
|
}
|
|
561
561
|
|
|
562
|
-
/**
|
|
563
|
-
* Remove all wrapping nodes from markup
|
|
562
|
+
/**
|
|
563
|
+
* Remove all wrapping nodes from markup
|
|
564
564
|
*/
|
|
565
565
|
function clearHighlights() {
|
|
566
566
|
getHighlightedNodes().each(function (i, elem) {
|
|
@@ -575,8 +575,8 @@ define(['lodash', 'jquery'], function (_, $) { 'use strict';
|
|
|
575
575
|
});
|
|
576
576
|
}
|
|
577
577
|
|
|
578
|
-
/**
|
|
579
|
-
* Remove unwrap dom node
|
|
578
|
+
/**
|
|
579
|
+
* Remove unwrap dom node
|
|
580
580
|
*/
|
|
581
581
|
function clearSingleHighlight(e) {
|
|
582
582
|
if (!keepEmptyNodes) {
|
|
@@ -619,21 +619,21 @@ define(['lodash', 'jquery'], function (_, $) { 'use strict';
|
|
|
619
619
|
}
|
|
620
620
|
}
|
|
621
621
|
|
|
622
|
-
/**
|
|
623
|
-
* Index-related functions:
|
|
624
|
-
* ========================
|
|
625
|
-
* To allow saving and restoring highlights on an equivalent, but different, DOM tree (for example if the markup is deleted and re-created)
|
|
626
|
-
* we build an index containing the status of each text node:
|
|
627
|
-
* - not highlighted
|
|
628
|
-
* - fully highlighted
|
|
629
|
-
* - partially highlighted (= with inline ranges)
|
|
630
|
-
*
|
|
631
|
-
* This index will be used to restore a selection on the new DOM tree
|
|
622
|
+
/**
|
|
623
|
+
* Index-related functions:
|
|
624
|
+
* ========================
|
|
625
|
+
* To allow saving and restoring highlights on an equivalent, but different, DOM tree (for example if the markup is deleted and re-created)
|
|
626
|
+
* we build an index containing the status of each text node:
|
|
627
|
+
* - not highlighted
|
|
628
|
+
* - fully highlighted
|
|
629
|
+
* - partially highlighted (= with inline ranges)
|
|
630
|
+
*
|
|
631
|
+
* This index will be used to restore a selection on the new DOM tree
|
|
632
632
|
*/
|
|
633
633
|
|
|
634
|
-
/**
|
|
635
|
-
* Bootstrap the process of building the highlight index
|
|
636
|
-
* @returns {Object[]|BuildModelResultKeepEmpty|null}
|
|
634
|
+
/**
|
|
635
|
+
* Bootstrap the process of building the highlight index
|
|
636
|
+
* @returns {Object[]|BuildModelResultKeepEmpty|null}
|
|
637
637
|
*/
|
|
638
638
|
function getHighlightIndex() {
|
|
639
639
|
var rootNode = getContainer();
|
|
@@ -654,10 +654,10 @@ define(['lodash', 'jquery'], function (_, $) { 'use strict';
|
|
|
654
654
|
}
|
|
655
655
|
}
|
|
656
656
|
|
|
657
|
-
/**
|
|
658
|
-
* Traverse the DOM tree to create the text Nodes index. Recursive.
|
|
659
|
-
* @param {Node} rootNode
|
|
660
|
-
* @param {Object[]} highlightIndex
|
|
657
|
+
/**
|
|
658
|
+
* Traverse the DOM tree to create the text Nodes index. Recursive.
|
|
659
|
+
* @param {Node} rootNode
|
|
660
|
+
* @param {Object[]} highlightIndex
|
|
661
661
|
*/
|
|
662
662
|
function buildHighlightIndex(rootNode, highlightIndex) {
|
|
663
663
|
const childNodes = rootNode.childNodes;
|
|
@@ -726,26 +726,26 @@ define(['lodash', 'jquery'], function (_, $) { 'use strict';
|
|
|
726
726
|
}
|
|
727
727
|
}
|
|
728
728
|
|
|
729
|
-
/**
|
|
730
|
-
* @typedef HighlightEntryKeepEmpty
|
|
731
|
-
* @property {String} groupId
|
|
732
|
-
* @property {String} c - color
|
|
733
|
-
* @property {Number} offsetBefore
|
|
734
|
-
* @property {Number} textLength
|
|
735
|
-
* @property {String} beforeWasSplit
|
|
736
|
-
* @property {String} afterWasSplit
|
|
737
|
-
* @property {Array<Number>} path - on each level from root container to highlight, index among siblings
|
|
729
|
+
/**
|
|
730
|
+
* @typedef HighlightEntryKeepEmpty
|
|
731
|
+
* @property {String} groupId
|
|
732
|
+
* @property {String} c - color
|
|
733
|
+
* @property {Number} offsetBefore
|
|
734
|
+
* @property {Number} textLength
|
|
735
|
+
* @property {String} beforeWasSplit
|
|
736
|
+
* @property {String} afterWasSplit
|
|
737
|
+
* @property {Array<Number>} path - on each level from root container to highlight, index among siblings
|
|
738
738
|
*/
|
|
739
|
-
/**
|
|
740
|
-
* @typedef BuildModelResultKeepEmpty
|
|
741
|
-
* @property {HighlightEntryKeepEmpty[]} highlightModel
|
|
742
|
-
* @property {NodeList} wrapperNodes
|
|
739
|
+
/**
|
|
740
|
+
* @typedef BuildModelResultKeepEmpty
|
|
741
|
+
* @property {HighlightEntryKeepEmpty[]} highlightModel
|
|
742
|
+
* @property {NodeList} wrapperNodes
|
|
743
743
|
*/
|
|
744
|
-
/**
|
|
745
|
-
* For `keepEmptyNodes` option, creates data model of highlights.
|
|
746
|
-
* Additionally returns array of highlight nodes. Traverses DOM tree.
|
|
747
|
-
* @param {Node} rootNode
|
|
748
|
-
* @returns {BuildModelResultKeepEmpty|null} result
|
|
744
|
+
/**
|
|
745
|
+
* For `keepEmptyNodes` option, creates data model of highlights.
|
|
746
|
+
* Additionally returns array of highlight nodes. Traverses DOM tree.
|
|
747
|
+
* @param {Node} rootNode
|
|
748
|
+
* @returns {BuildModelResultKeepEmpty|null} result
|
|
749
749
|
*/
|
|
750
750
|
function buildHighlightModelKeepEmpty(rootNode) {
|
|
751
751
|
const classNames = options.colors ? Object.values(options.colors) : [className];
|
|
@@ -802,9 +802,9 @@ define(['lodash', 'jquery'], function (_, $) { 'use strict';
|
|
|
802
802
|
};
|
|
803
803
|
}
|
|
804
804
|
|
|
805
|
-
/**
|
|
806
|
-
* Bootstrap the process of restoring the highlights from an index
|
|
807
|
-
* @param {Object[]|HighlightEntryKeepEmpty[]|null} highlightIndex
|
|
805
|
+
/**
|
|
806
|
+
* Bootstrap the process of restoring the highlights from an index
|
|
807
|
+
* @param {Object[]|HighlightEntryKeepEmpty[]|null} highlightIndex
|
|
808
808
|
*/
|
|
809
809
|
function highlightFromIndex(highlightIndex) {
|
|
810
810
|
var rootNode = getContainer();
|
|
@@ -819,10 +819,10 @@ define(['lodash', 'jquery'], function (_, $) { 'use strict';
|
|
|
819
819
|
}
|
|
820
820
|
}
|
|
821
821
|
|
|
822
|
-
/**
|
|
823
|
-
* Traverse the DOM tree to wraps the text nodes according to the highlight index. Recursive.
|
|
824
|
-
* @param {Node} rootNode
|
|
825
|
-
* @param {Object[]} highlightIndex
|
|
822
|
+
/**
|
|
823
|
+
* Traverse the DOM tree to wraps the text nodes according to the highlight index. Recursive.
|
|
824
|
+
* @param {Node} rootNode
|
|
825
|
+
* @param {Object[]} highlightIndex
|
|
826
826
|
*/
|
|
827
827
|
function restoreHighlight(rootNode, highlightIndex) {
|
|
828
828
|
var childNodes = rootNode.childNodes;
|
|
@@ -863,11 +863,11 @@ define(['lodash', 'jquery'], function (_, $) { 'use strict';
|
|
|
863
863
|
}
|
|
864
864
|
}
|
|
865
865
|
|
|
866
|
-
/**
|
|
867
|
-
* For `keepEmptyNodes` option, wraps the text nodes according to highlights data model.
|
|
868
|
-
* Traverses and updates DOM tree. Shouldn't throw errors in case of mismatches.
|
|
869
|
-
* @param {Node} rootNode
|
|
870
|
-
* @param {HighlightEntryKeepEmpty[]|null} highlightModel
|
|
866
|
+
/**
|
|
867
|
+
* For `keepEmptyNodes` option, wraps the text nodes according to highlights data model.
|
|
868
|
+
* Traverses and updates DOM tree. Shouldn't throw errors in case of mismatches.
|
|
869
|
+
* @param {Node} rootNode
|
|
870
|
+
* @param {HighlightEntryKeepEmpty[]|null} highlightModel
|
|
871
871
|
*/
|
|
872
872
|
function restoreHighlightKeepEmpty(rootNode, highlightModel) {
|
|
873
873
|
if (!highlightModel) {
|
|
@@ -933,9 +933,9 @@ define(['lodash', 'jquery'], function (_, $) { 'use strict';
|
|
|
933
933
|
}
|
|
934
934
|
}
|
|
935
935
|
|
|
936
|
-
/**
|
|
937
|
-
* Set highlighter color
|
|
938
|
-
* @param {string} color Active highlighter color
|
|
936
|
+
/**
|
|
937
|
+
* Set highlighter color
|
|
938
|
+
* @param {string} color Active highlighter color
|
|
939
939
|
*/
|
|
940
940
|
function setActiveColor(color) {
|
|
941
941
|
if (options.colors[color]) {
|
|
@@ -943,24 +943,24 @@ define(['lodash', 'jquery'], function (_, $) { 'use strict';
|
|
|
943
943
|
}
|
|
944
944
|
}
|
|
945
945
|
|
|
946
|
-
/**
|
|
947
|
-
* Helpers
|
|
946
|
+
/**
|
|
947
|
+
* Helpers
|
|
948
948
|
*/
|
|
949
949
|
|
|
950
|
-
/**
|
|
951
|
-
* Return the object key contains the given value
|
|
952
|
-
* @param {Object} object
|
|
953
|
-
* @param {any} value
|
|
954
|
-
* @return {string|undefined}
|
|
950
|
+
/**
|
|
951
|
+
* Return the object key contains the given value
|
|
952
|
+
* @param {Object} object
|
|
953
|
+
* @param {any} value
|
|
954
|
+
* @return {string|undefined}
|
|
955
955
|
*/
|
|
956
956
|
function getKeyByValue(object, value) {
|
|
957
957
|
return Object.keys(object).find(key => object[key] === value);
|
|
958
958
|
}
|
|
959
959
|
|
|
960
|
-
/**
|
|
961
|
-
* Returns color identifier for the given class name
|
|
962
|
-
* @param {string} highlighterClassName Class name of highlighter classes
|
|
963
|
-
* @returns {string|number} Color identifier
|
|
960
|
+
/**
|
|
961
|
+
* Returns color identifier for the given class name
|
|
962
|
+
* @param {string} highlighterClassName Class name of highlighter classes
|
|
963
|
+
* @returns {string|number} Color identifier
|
|
964
964
|
*/
|
|
965
965
|
function getColorByClassName(highlighterClassName) {
|
|
966
966
|
if (options.colors) {
|
|
@@ -969,10 +969,10 @@ define(['lodash', 'jquery'], function (_, $) { 'use strict';
|
|
|
969
969
|
return className;
|
|
970
970
|
}
|
|
971
971
|
|
|
972
|
-
/**
|
|
973
|
-
* Returns class name for the given color identifier
|
|
974
|
-
* @param {string|number} color Color identifier
|
|
975
|
-
* @returns {string} Class name
|
|
972
|
+
/**
|
|
973
|
+
* Returns class name for the given color identifier
|
|
974
|
+
* @param {string|number} color Color identifier
|
|
975
|
+
* @returns {string} Class name
|
|
976
976
|
*/
|
|
977
977
|
function getClassNameByColor(color) {
|
|
978
978
|
if (options.colors && options.colors[color]) {
|
|
@@ -981,31 +981,31 @@ define(['lodash', 'jquery'], function (_, $) { 'use strict';
|
|
|
981
981
|
return className;
|
|
982
982
|
}
|
|
983
983
|
|
|
984
|
-
/**
|
|
985
|
-
* Check if the given node is a wrapper
|
|
986
|
-
* @param {Node|Element} node
|
|
987
|
-
* @returns {boolean}
|
|
984
|
+
/**
|
|
985
|
+
* Check if the given node is a wrapper
|
|
986
|
+
* @param {Node|Element} node
|
|
987
|
+
* @returns {boolean}
|
|
988
988
|
*/
|
|
989
989
|
function isWrappingNode(node) {
|
|
990
990
|
return isElement(node) && node.tagName.toLowerCase() === 'span' && highlightingClasses.includes(node.className);
|
|
991
991
|
}
|
|
992
992
|
|
|
993
|
-
/**
|
|
994
|
-
* Check if the given node can be wrapped
|
|
995
|
-
* @param {Node} node
|
|
996
|
-
* @returns {boolean}
|
|
993
|
+
/**
|
|
994
|
+
* Check if the given node can be wrapped
|
|
995
|
+
* @param {Node} node
|
|
996
|
+
* @returns {boolean}
|
|
997
997
|
*/
|
|
998
998
|
function isWrappable(node) {
|
|
999
999
|
return isText(node) && !isBlacklisted(node);
|
|
1000
1000
|
}
|
|
1001
1001
|
|
|
1002
|
-
/**
|
|
1003
|
-
* Check if the given node is, or is within, a blacklisted container.
|
|
1004
|
-
* With `keepEmptyNodes` option, node inside blacklisted container can be whitelisted too.
|
|
1005
|
-
* Priority of blacklist or whitelist is decided by which selector is closest to the node.
|
|
1006
|
-
* If no match found, node is considered whitelisted.
|
|
1007
|
-
* @param {Node} node
|
|
1008
|
-
* @returns {boolean}
|
|
1002
|
+
/**
|
|
1003
|
+
* Check if the given node is, or is within, a blacklisted container.
|
|
1004
|
+
* With `keepEmptyNodes` option, node inside blacklisted container can be whitelisted too.
|
|
1005
|
+
* Priority of blacklist or whitelist is decided by which selector is closest to the node.
|
|
1006
|
+
* If no match found, node is considered whitelisted.
|
|
1007
|
+
* @param {Node} node
|
|
1008
|
+
* @returns {boolean}
|
|
1009
1009
|
*/
|
|
1010
1010
|
function isBlacklisted(node) {
|
|
1011
1011
|
const closest = $(node).closest(containersBlackAndWhiteListSelector);
|
|
@@ -1018,11 +1018,11 @@ define(['lodash', 'jquery'], function (_, $) { 'use strict';
|
|
|
1018
1018
|
}
|
|
1019
1019
|
}
|
|
1020
1020
|
|
|
1021
|
-
/**
|
|
1022
|
-
* Wraps text node to the highlighter wrapper element
|
|
1023
|
-
* @param {Node} textNode Text node to wrap
|
|
1024
|
-
* @param {string} wrapperClassName Wrapper class name
|
|
1025
|
-
* @param {number} groupId Group id
|
|
1021
|
+
/**
|
|
1022
|
+
* Wraps text node to the highlighter wrapper element
|
|
1023
|
+
* @param {Node} textNode Text node to wrap
|
|
1024
|
+
* @param {string} wrapperClassName Wrapper class name
|
|
1025
|
+
* @param {number} groupId Group id
|
|
1026
1026
|
*/
|
|
1027
1027
|
function wrapNode(textNode, wrapperClassName, groupId) {
|
|
1028
1028
|
const element = getWrapper(groupId, wrapperClassName);
|
|
@@ -1030,10 +1030,10 @@ define(['lodash', 'jquery'], function (_, $) { 'use strict';
|
|
|
1030
1030
|
return element;
|
|
1031
1031
|
}
|
|
1032
1032
|
|
|
1033
|
-
/**
|
|
1034
|
-
* Create a wrapping node
|
|
1035
|
-
* @param {number} groupId
|
|
1036
|
-
* @returns {Element}
|
|
1033
|
+
/**
|
|
1034
|
+
* Create a wrapping node
|
|
1035
|
+
* @param {number} groupId
|
|
1036
|
+
* @returns {Element}
|
|
1037
1037
|
*/
|
|
1038
1038
|
function getWrapper(groupId, wrapperClass) {
|
|
1039
1039
|
const wrapper = document.createElement('span');
|
|
@@ -1042,9 +1042,9 @@ define(['lodash', 'jquery'], function (_, $) { 'use strict';
|
|
|
1042
1042
|
return wrapper;
|
|
1043
1043
|
}
|
|
1044
1044
|
|
|
1045
|
-
/**
|
|
1046
|
-
* Returns the first unused group Id
|
|
1047
|
-
* @returns {number}
|
|
1045
|
+
/**
|
|
1046
|
+
* Returns the first unused group Id
|
|
1047
|
+
* @returns {number}
|
|
1048
1048
|
*/
|
|
1049
1049
|
function getAvailableGroupId() {
|
|
1050
1050
|
var id = currentGroupId || 1;
|
|
@@ -1054,35 +1054,35 @@ define(['lodash', 'jquery'], function (_, $) { 'use strict';
|
|
|
1054
1054
|
return id;
|
|
1055
1055
|
}
|
|
1056
1056
|
|
|
1057
|
-
/**
|
|
1058
|
-
* Check if the given node is an element
|
|
1059
|
-
* @param {Node} node
|
|
1060
|
-
* @returns {boolean}
|
|
1057
|
+
/**
|
|
1058
|
+
* Check if the given node is an element
|
|
1059
|
+
* @param {Node} node
|
|
1060
|
+
* @returns {boolean}
|
|
1061
1061
|
*/
|
|
1062
1062
|
function isElement(node) {
|
|
1063
1063
|
return node && typeof node === 'object' && node.nodeType === window.Node.ELEMENT_NODE;
|
|
1064
1064
|
}
|
|
1065
1065
|
|
|
1066
|
-
/**
|
|
1067
|
-
* Check if the given node is of type text
|
|
1068
|
-
* @param {Node} node
|
|
1069
|
-
* @returns {boolean}
|
|
1066
|
+
/**
|
|
1067
|
+
* Check if the given node is of type text
|
|
1068
|
+
* @param {Node} node
|
|
1069
|
+
* @returns {boolean}
|
|
1070
1070
|
*/
|
|
1071
1071
|
function isText(node) {
|
|
1072
1072
|
return node && typeof node === 'object' && node.nodeType === window.Node.TEXT_NODE;
|
|
1073
1073
|
}
|
|
1074
1074
|
|
|
1075
|
-
/**
|
|
1076
|
-
* a "Hot Node" is either wrappable text node or a wrapper
|
|
1077
|
-
* @param {Node} node
|
|
1078
|
-
* @returns {boolean}
|
|
1075
|
+
/**
|
|
1076
|
+
* a "Hot Node" is either wrappable text node or a wrapper
|
|
1077
|
+
* @param {Node} node
|
|
1078
|
+
* @returns {boolean}
|
|
1079
1079
|
*/
|
|
1080
1080
|
function isHotNode(node) {
|
|
1081
1081
|
return isWrappingNode(node) || isWrappable(node);
|
|
1082
1082
|
}
|
|
1083
1083
|
|
|
1084
|
-
/**
|
|
1085
|
-
* Public API of the highlighter helper
|
|
1084
|
+
/**
|
|
1085
|
+
* Public API of the highlighter helper
|
|
1086
1086
|
*/
|
|
1087
1087
|
return {
|
|
1088
1088
|
highlightRanges: highlightRanges,
|