@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
package/dist/uploader.js
CHANGED
|
@@ -1,788 +1,755 @@
|
|
|
1
1
|
define(['jquery', 'lodash', 'i18n', 'async', 'core/pluginifier', 'util/bytes', 'handlebars', 'lib/dompurify/purify', 'ui/filesender', 'ui/progressbar'], function ($$1, _, __, async, Pluginifier, bytes, Handlebars, DOMPurify, filesender, progressbar) { '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
|
-
|
|
27
|
-
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
* https://github.com/cure53/DOMPurify
|
|
31
|
-
* with config SAFE_FOR_TEMPLATES: true
|
|
32
|
-
* to make output safe for template systems
|
|
33
|
-
*/
|
|
34
|
-
|
|
35
|
-
hb.registerHelper('dompurify', function (context) {
|
|
36
|
-
return DOMPurify.sanitize(context);
|
|
37
|
-
});
|
|
38
|
-
/**
|
|
39
|
-
* Register join helper
|
|
40
|
-
*
|
|
41
|
-
* Example :
|
|
42
|
-
* var values = {a:v1, b:v2, c:v3};
|
|
43
|
-
* Using {{{join attributes '=' ' ' '"'}}} will return : a="v1" b="v2" c="v3"
|
|
44
|
-
* Using {{{join values null ' or ' '*'}}} will return : *v1* or *v2* or *v3*
|
|
3
|
+
$$1 = $$1 && Object.prototype.hasOwnProperty.call($$1, 'default') ? $$1['default'] : $$1;
|
|
4
|
+
_ = _ && Object.prototype.hasOwnProperty.call(_, 'default') ? _['default'] : _;
|
|
5
|
+
__ = __ && Object.prototype.hasOwnProperty.call(__, 'default') ? __['default'] : __;
|
|
6
|
+
async = async && Object.prototype.hasOwnProperty.call(async, 'default') ? async['default'] : async;
|
|
7
|
+
Pluginifier = Pluginifier && Object.prototype.hasOwnProperty.call(Pluginifier, 'default') ? Pluginifier['default'] : Pluginifier;
|
|
8
|
+
bytes = bytes && Object.prototype.hasOwnProperty.call(bytes, 'default') ? bytes['default'] : bytes;
|
|
9
|
+
Handlebars = Handlebars && Object.prototype.hasOwnProperty.call(Handlebars, 'default') ? Handlebars['default'] : Handlebars;
|
|
10
|
+
DOMPurify = DOMPurify && Object.prototype.hasOwnProperty.call(DOMPurify, 'default') ? DOMPurify['default'] : DOMPurify;
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* This program is free software; you can redistribute it and/or
|
|
14
|
+
* modify it under the terms of the GNU General Public License
|
|
15
|
+
* as published by the Free Software Foundation; under version 2
|
|
16
|
+
* of the License (non-upgradable).
|
|
17
|
+
*
|
|
18
|
+
* This program is distributed in the hope that it will be useful,
|
|
19
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
20
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
21
|
+
* GNU General Public License for more details.
|
|
22
|
+
*
|
|
23
|
+
* You should have received a copy of the GNU General Public License
|
|
24
|
+
* along with this program; if not, write to the Free Software
|
|
25
|
+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
26
|
+
*
|
|
27
|
+
* Copyright (c) 2013-2019 (original work) Open Assessment Technologies SA (under the project TAO-PRODUCT);
|
|
28
|
+
*
|
|
29
|
+
*
|
|
45
30
|
*/
|
|
31
|
+
function Helpers0 (hb) {
|
|
32
|
+
//register a i18n helper
|
|
33
|
+
hb.registerHelper('__', function (key) {
|
|
34
|
+
return __(key);
|
|
35
|
+
});
|
|
46
36
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
37
|
+
/**
|
|
38
|
+
* Register dompurify helper
|
|
39
|
+
*
|
|
40
|
+
* https://github.com/cure53/DOMPurify
|
|
41
|
+
* with config SAFE_FOR_TEMPLATES: true
|
|
42
|
+
* to make output safe for template systems
|
|
43
|
+
*/
|
|
44
|
+
hb.registerHelper('dompurify', function (context) {
|
|
45
|
+
return DOMPurify.sanitize(context);
|
|
46
|
+
});
|
|
55
47
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
48
|
+
/**
|
|
49
|
+
* Register join helper
|
|
50
|
+
*
|
|
51
|
+
* Example :
|
|
52
|
+
* var values = {a:v1, b:v2, c:v3};
|
|
53
|
+
* Using {{{join attributes '=' ' ' '"'}}} will return : a="v1" b="v2" c="v3"
|
|
54
|
+
* Using {{{join values null ' or ' '*'}}} will return : *v1* or *v2* or *v3*
|
|
55
|
+
*/
|
|
56
|
+
hb.registerHelper('join', function (arr, keyValueGlue, fragmentGlue, wrapper) {
|
|
57
|
+
var fragments = [];
|
|
58
|
+
keyValueGlue = typeof keyValueGlue === 'string' ? keyValueGlue : undefined;
|
|
59
|
+
fragmentGlue = typeof fragmentGlue === 'string' ? fragmentGlue : ' ';
|
|
60
|
+
wrapper = typeof wrapper === 'string' ? wrapper : '"';
|
|
61
|
+
_.forIn(arr, function (value, key) {
|
|
62
|
+
var fragment = '';
|
|
63
|
+
if (value !== null || value !== undefined) {
|
|
64
|
+
if (typeof value === 'boolean') {
|
|
65
|
+
value = value ? 'true' : 'false';
|
|
66
|
+
} else if (typeof value === 'object') {
|
|
67
|
+
value = _.values(value).join(' ');
|
|
68
|
+
}
|
|
69
|
+
} else {
|
|
70
|
+
value = '';
|
|
61
71
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
72
|
+
if (keyValueGlue !== undefined) {
|
|
73
|
+
fragment += key + keyValueGlue;
|
|
74
|
+
}
|
|
75
|
+
fragment += wrapper + value + wrapper;
|
|
76
|
+
fragments.push(fragment);
|
|
77
|
+
});
|
|
78
|
+
return fragments.join(fragmentGlue);
|
|
79
|
+
});
|
|
65
80
|
|
|
66
|
-
|
|
67
|
-
|
|
81
|
+
//register a classic "for loop" helper
|
|
82
|
+
//it also adds a local variable "i" as the index in each iteration loop
|
|
83
|
+
hb.registerHelper('for', function (startIndex, stopIndex, increment, options) {
|
|
84
|
+
var ret = '';
|
|
85
|
+
startIndex = parseInt(startIndex);
|
|
86
|
+
stopIndex = parseInt(stopIndex);
|
|
87
|
+
increment = parseInt(increment);
|
|
88
|
+
for (var i = startIndex; i < stopIndex; i += increment) {
|
|
89
|
+
ret += options.fn(_.extend({}, this, {
|
|
90
|
+
i: i
|
|
91
|
+
}));
|
|
92
|
+
}
|
|
93
|
+
return ret;
|
|
94
|
+
});
|
|
95
|
+
hb.registerHelper('equal', function (var1, var2, options) {
|
|
96
|
+
if (var1 == var2) {
|
|
97
|
+
return options.fn(this);
|
|
98
|
+
} else {
|
|
99
|
+
return options.inverse(this);
|
|
68
100
|
}
|
|
69
|
-
|
|
70
|
-
fragment += wrapper + value + wrapper;
|
|
71
|
-
fragments.push(fragment);
|
|
72
101
|
});
|
|
73
102
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
103
|
+
// register a "get property" helper
|
|
104
|
+
// it gets the named property from the provided context
|
|
105
|
+
hb.registerHelper('property', function (name, context) {
|
|
106
|
+
return context[name] || '';
|
|
107
|
+
});
|
|
77
108
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
109
|
+
// register an 'includes' helper
|
|
110
|
+
// it checks if value is in array
|
|
111
|
+
hb.registerHelper('includes', function (haystack, needle, options) {
|
|
112
|
+
if (_.contains(haystack, needle)) {
|
|
113
|
+
return options.fn(this);
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
}
|
|
83
117
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
118
|
+
if (!Helpers0.__initialized) {
|
|
119
|
+
Helpers0(Handlebars);
|
|
120
|
+
Helpers0.__initialized = true;
|
|
121
|
+
}
|
|
122
|
+
var Template = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
|
|
123
|
+
this.compilerInfo = [4,'>= 1.0.0'];
|
|
124
|
+
helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
|
125
|
+
var buffer = "", stack1, helper, options, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, functionType="function", self=this;
|
|
126
|
+
|
|
127
|
+
function program1(depth0,data) {
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
return "multiple";
|
|
88
131
|
}
|
|
89
132
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
133
|
+
function program3(depth0,data) {
|
|
134
|
+
|
|
135
|
+
var buffer = "", helper, options;
|
|
136
|
+
buffer += "\n "
|
|
137
|
+
+ escapeExpression((helper = helpers.__ || (depth0 && depth0.__),options={hash:{},data:data},helper ? helper.call(depth0, "Drag files here", options) : helperMissing.call(depth0, "__", "Drag files here", options)))
|
|
138
|
+
+ "\n ";
|
|
139
|
+
return buffer;
|
|
97
140
|
}
|
|
98
|
-
}); // register a "get property" helper
|
|
99
|
-
// it gets the named property from the provided context
|
|
100
141
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
142
|
+
function program5(depth0,data) {
|
|
143
|
+
|
|
144
|
+
var buffer = "", helper, options;
|
|
145
|
+
buffer += "\n "
|
|
146
|
+
+ escapeExpression((helper = helpers.__ || (depth0 && depth0.__),options={hash:{},data:data},helper ? helper.call(depth0, "Drag file here", options) : helperMissing.call(depth0, "__", "Drag file here", options)))
|
|
147
|
+
+ "\n ";
|
|
148
|
+
return buffer;
|
|
149
|
+
}
|
|
105
150
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
151
|
+
function program7(depth0,data) {
|
|
152
|
+
|
|
153
|
+
var buffer = "", helper, options;
|
|
154
|
+
buffer += "\n <button type=\"button\" class=\"btn-info btn-reset small\"><span class=\"icon-eraser\"></span>"
|
|
155
|
+
+ escapeExpression((helper = helpers.__ || (depth0 && depth0.__),options={hash:{},data:data},helper ? helper.call(depth0, "Reset", options) : helperMissing.call(depth0, "__", "Reset", options)))
|
|
156
|
+
+ "</button>\n ";
|
|
157
|
+
return buffer;
|
|
109
158
|
}
|
|
110
|
-
});
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
if (!Helpers0.__initialized) {
|
|
114
|
-
Helpers0(Handlebars);
|
|
115
|
-
Helpers0.__initialized = true;
|
|
116
|
-
}
|
|
117
|
-
var Template = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
|
|
118
|
-
this.compilerInfo = [4,'>= 1.0.0'];
|
|
119
|
-
helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
|
120
|
-
var buffer = "", stack1, helper, options, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, functionType="function", self=this;
|
|
121
|
-
|
|
122
|
-
function program1(depth0,data) {
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
return "multiple";
|
|
126
|
-
}
|
|
127
159
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
160
|
+
function program9(depth0,data) {
|
|
161
|
+
|
|
162
|
+
var buffer = "", stack1, helper;
|
|
163
|
+
buffer += "\n <button class=\"btn-success btn-upload small\"><span class=\"icon-upload\"></span>";
|
|
164
|
+
if (helper = helpers.uploadBtnText) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
165
|
+
else { helper = (depth0 && depth0.uploadBtnText); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
166
|
+
buffer += escapeExpression(stack1)
|
|
167
|
+
+ "</button>\n ";
|
|
168
|
+
return buffer;
|
|
169
|
+
}
|
|
136
170
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
171
|
+
buffer += "<div class=\"file-upload grid-row\">\n <span class=\"btn-info btn-browse small col-5\"><span class=\"icon-folder-open\"></span>"
|
|
172
|
+
+ escapeExpression((helper = helpers.__ || (depth0 && depth0.__),options={hash:{},data:data},helper ? helper.call(depth0, "Browse...", options) : helperMissing.call(depth0, "__", "Browse...", options)))
|
|
173
|
+
+ "</span>\n <span class=\"file-name col-7 truncate placeholder\">"
|
|
174
|
+
+ escapeExpression((helper = helpers.__ || (depth0 && depth0.__),options={hash:{},data:data},helper ? helper.call(depth0, "No file selected", options) : helperMissing.call(depth0, "__", "No file selected", options)))
|
|
175
|
+
+ "</span>\n <input type=\"file\" name=\"";
|
|
176
|
+
if (helper = helpers.inputName) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
177
|
+
else { helper = (depth0 && depth0.inputName); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
178
|
+
buffer += escapeExpression(stack1)
|
|
179
|
+
+ "\" ";
|
|
180
|
+
stack1 = helpers['if'].call(depth0, (depth0 && depth0.multiple), {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});
|
|
181
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
182
|
+
buffer += ">\n</div>\n<!--<div class=\"grid-row\" style=\"display:none;\">-->\n<!--<ul class=\"file-list\"></ul>-->\n<!--</div>-->\n<div class=\"grid-row\">\n <div class=\"file-drop col-12\" data-drop-msg=\""
|
|
183
|
+
+ escapeExpression((helper = helpers.__ || (depth0 && depth0.__),options={hash:{},data:data},helper ? helper.call(depth0, "Drop the files to upload", options) : helperMissing.call(depth0, "__", "Drop the files to upload", options)))
|
|
184
|
+
+ "\">\n <div class=\"dragholder\">\n ~ "
|
|
185
|
+
+ escapeExpression((helper = helpers.__ || (depth0 && depth0.__),options={hash:{},data:data},helper ? helper.call(depth0, "or", options) : helperMissing.call(depth0, "__", "or", options)))
|
|
186
|
+
+ " ~\n <br/>\n ";
|
|
187
|
+
stack1 = helpers['if'].call(depth0, (depth0 && depth0.multiple), {hash:{},inverse:self.program(5, program5, data),fn:self.program(3, program3, data),data:data});
|
|
188
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
189
|
+
buffer += "\n </div>\n </div>\n</div>\n<div class=\"grid-row\">\n <div class=\"progressbar col-12\"></div>\n <br/>\n</div>\n<div class=\"grid-row\">\n ";
|
|
190
|
+
stack1 = helpers['if'].call(depth0, (depth0 && depth0.showResetButton), {hash:{},inverse:self.noop,fn:self.program(7, program7, data),data:data});
|
|
191
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
192
|
+
buffer += "\n ";
|
|
193
|
+
stack1 = helpers['if'].call(depth0, (depth0 && depth0.showUploadButton), {hash:{},inverse:self.noop,fn:self.program(9, program9, data),data:data});
|
|
194
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
195
|
+
buffer += "\n</div>";
|
|
196
|
+
return buffer;
|
|
197
|
+
});
|
|
198
|
+
function uploaderTpl(data, options, asString) {
|
|
199
|
+
var html = Template(data, options);
|
|
200
|
+
return (asString || true) ? html : $(html);
|
|
144
201
|
}
|
|
145
202
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
buffer += "\r\n <button type=\"button\" class=\"btn-info btn-reset small\"><span class=\"icon-eraser\"></span>"
|
|
150
|
-
+ escapeExpression((helper = helpers.__ || (depth0 && depth0.__),options={hash:{},data:data},helper ? helper.call(depth0, "Reset", options) : helperMissing.call(depth0, "__", "Reset", options)))
|
|
151
|
-
+ "</button>\r\n ";
|
|
152
|
-
return buffer;
|
|
203
|
+
if (!Helpers0.__initialized) {
|
|
204
|
+
Helpers0(Handlebars);
|
|
205
|
+
Helpers0.__initialized = true;
|
|
153
206
|
}
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
207
|
+
var Template$1 = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
|
|
208
|
+
this.compilerInfo = [4,'>= 1.0.0'];
|
|
209
|
+
helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
|
210
|
+
var buffer = "", stack1, helper, functionType="function", escapeExpression=this.escapeExpression;
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
buffer += "<li data-file-name=\"";
|
|
214
|
+
if (helper = helpers.name) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
215
|
+
else { helper = (depth0 && depth0.name); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
216
|
+
buffer += escapeExpression(stack1)
|
|
217
|
+
+ "\">\n ";
|
|
218
|
+
if (helper = helpers.name) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
219
|
+
else { helper = (depth0 && depth0.name); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
220
|
+
buffer += escapeExpression(stack1)
|
|
221
|
+
+ "\n <span class=\"size\">";
|
|
222
|
+
if (helper = helpers.size) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
223
|
+
else { helper = (depth0 && depth0.size); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
224
|
+
buffer += escapeExpression(stack1)
|
|
225
|
+
+ "</span>\n <span class=\"status\"></span>\n <a href=\"#\" data-role=\"delete\"><span class=\"icon-close\"></span></a>\n</li>\n";
|
|
226
|
+
return buffer;
|
|
227
|
+
});
|
|
228
|
+
function fileEntryTpl(data, options, asString) {
|
|
229
|
+
var html = Template$1(data, options);
|
|
230
|
+
return (asString || true) ? html : $(html);
|
|
164
231
|
}
|
|
165
232
|
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
+ "</span>\r\n <span class=\"file-name col-7 truncate placeholder\">"
|
|
169
|
-
+ escapeExpression((helper = helpers.__ || (depth0 && depth0.__),options={hash:{},data:data},helper ? helper.call(depth0, "No file selected", options) : helperMissing.call(depth0, "__", "No file selected", options)))
|
|
170
|
-
+ "</span>\r\n <input type=\"file\" name=\"";
|
|
171
|
-
if (helper = helpers.inputName) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
172
|
-
else { helper = (depth0 && depth0.inputName); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
173
|
-
buffer += escapeExpression(stack1)
|
|
174
|
-
+ "\" ";
|
|
175
|
-
stack1 = helpers['if'].call(depth0, (depth0 && depth0.multiple), {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});
|
|
176
|
-
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
177
|
-
buffer += ">\r\n</div>\r\n<!--<div class=\"grid-row\" style=\"display:none;\">-->\r\n<!--<ul class=\"file-list\"></ul>-->\r\n<!--</div>-->\r\n<div class=\"grid-row\">\r\n <div class=\"file-drop col-12\" data-drop-msg=\""
|
|
178
|
-
+ escapeExpression((helper = helpers.__ || (depth0 && depth0.__),options={hash:{},data:data},helper ? helper.call(depth0, "Drop the files to upload", options) : helperMissing.call(depth0, "__", "Drop the files to upload", options)))
|
|
179
|
-
+ "\">\r\n <div class=\"dragholder\">\r\n ~ "
|
|
180
|
-
+ escapeExpression((helper = helpers.__ || (depth0 && depth0.__),options={hash:{},data:data},helper ? helper.call(depth0, "or", options) : helperMissing.call(depth0, "__", "or", options)))
|
|
181
|
-
+ " ~\r\n <br/>\r\n ";
|
|
182
|
-
stack1 = helpers['if'].call(depth0, (depth0 && depth0.multiple), {hash:{},inverse:self.program(5, program5, data),fn:self.program(3, program3, data),data:data});
|
|
183
|
-
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
184
|
-
buffer += "\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"grid-row\">\r\n <div class=\"progressbar col-12\"></div>\r\n <br/>\r\n</div>\r\n<div class=\"grid-row\">\r\n ";
|
|
185
|
-
stack1 = helpers['if'].call(depth0, (depth0 && depth0.showResetButton), {hash:{},inverse:self.noop,fn:self.program(7, program7, data),data:data});
|
|
186
|
-
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
187
|
-
buffer += "\r\n ";
|
|
188
|
-
stack1 = helpers['if'].call(depth0, (depth0 && depth0.showUploadButton), {hash:{},inverse:self.noop,fn:self.program(9, program9, data),data:data});
|
|
189
|
-
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
190
|
-
buffer += "\r\n</div>";
|
|
191
|
-
return buffer;
|
|
192
|
-
});
|
|
193
|
-
function uploaderTpl(data, options, asString) {
|
|
194
|
-
var html = Template(data, options);
|
|
195
|
-
return (asString || true) ? html : $(html);
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
if (!Helpers0.__initialized) {
|
|
199
|
-
Helpers0(Handlebars);
|
|
200
|
-
Helpers0.__initialized = true;
|
|
201
|
-
}
|
|
202
|
-
var Template$1 = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
|
|
203
|
-
this.compilerInfo = [4,'>= 1.0.0'];
|
|
204
|
-
helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
|
205
|
-
var buffer = "", stack1, helper, functionType="function", escapeExpression=this.escapeExpression;
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
buffer += "<li data-file-name=\"";
|
|
209
|
-
if (helper = helpers.name) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
210
|
-
else { helper = (depth0 && depth0.name); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
211
|
-
buffer += escapeExpression(stack1)
|
|
212
|
-
+ "\">\r\n ";
|
|
213
|
-
if (helper = helpers.name) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
214
|
-
else { helper = (depth0 && depth0.name); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
215
|
-
buffer += escapeExpression(stack1)
|
|
216
|
-
+ "\r\n <span class=\"size\">";
|
|
217
|
-
if (helper = helpers.size) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
218
|
-
else { helper = (depth0 && depth0.size); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
219
|
-
buffer += escapeExpression(stack1)
|
|
220
|
-
+ "</span>\r\n <span class=\"status\"></span>\r\n <a href=\"#\" data-role=\"delete\"><span class=\"icon-close\"></span></a>\r\n</li>\r\n";
|
|
221
|
-
return buffer;
|
|
222
|
-
});
|
|
223
|
-
function fileEntryTpl(data, options, asString) {
|
|
224
|
-
var html = Template$1(data, options);
|
|
225
|
-
return (asString || true) ? html : $(html);
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
/**
|
|
229
|
-
* @author Bertrand Chevrier <bertrand@taotesting.com>
|
|
230
|
-
*/
|
|
231
|
-
var ns = 'uploader';
|
|
232
|
-
var dataNs = 'ui.' + ns; //the plugin defaults
|
|
233
|
-
|
|
234
|
-
var defaults = {
|
|
235
|
-
upload: true,
|
|
236
|
-
read: false,
|
|
237
|
-
multiple: false,
|
|
238
|
-
uploadQueueSize: 3,
|
|
239
|
-
inputName: 'content',
|
|
240
|
-
showResetButton: true,
|
|
241
|
-
showUploadButton: true,
|
|
242
|
-
browseBtnClass: 'btn-browse',
|
|
243
|
-
uploadBtnClass: 'btn-upload',
|
|
244
|
-
resetBtnClass: 'btn-reset',
|
|
245
|
-
fileNameClass: 'file-name',
|
|
246
|
-
dropZoneClass: 'file-drop',
|
|
247
|
-
progressBarClass: 'progressbar',
|
|
248
|
-
dragOverClass: 'drag-hover',
|
|
249
|
-
formAttributes: {
|
|
250
|
-
class: 'uploader uploaderContainer'
|
|
251
|
-
},
|
|
252
|
-
defaultErrMsg: __('Unable to upload file'),
|
|
253
|
-
uploadBtnText: __('Upload'),
|
|
254
|
-
|
|
255
|
-
/**
|
|
256
|
-
* Make files available before file selection. It can be used to filter.
|
|
257
|
-
* @callback fileSelect
|
|
258
|
-
* @param {Array<File>} files - the selected files
|
|
259
|
-
* @param {Function} [done] - callback with filtered files
|
|
260
|
-
* @returns {undefined|Array<File>} the files to be selected
|
|
233
|
+
/**
|
|
234
|
+
* @author Bertrand Chevrier <bertrand@taotesting.com>
|
|
261
235
|
*/
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
236
|
+
const ns = 'uploader';
|
|
237
|
+
const dataNs = 'ui.' + ns;
|
|
238
|
+
|
|
239
|
+
//the plugin defaults
|
|
240
|
+
const defaults = {
|
|
241
|
+
upload: true,
|
|
242
|
+
read: false,
|
|
243
|
+
multiple: false,
|
|
244
|
+
uploadQueueSize: 3,
|
|
245
|
+
inputName: 'content',
|
|
246
|
+
showResetButton: true,
|
|
247
|
+
showUploadButton: true,
|
|
248
|
+
browseBtnClass: 'btn-browse',
|
|
249
|
+
uploadBtnClass: 'btn-upload',
|
|
250
|
+
resetBtnClass: 'btn-reset',
|
|
251
|
+
fileNameClass: 'file-name',
|
|
252
|
+
dropZoneClass: 'file-drop',
|
|
253
|
+
progressBarClass: 'progressbar',
|
|
254
|
+
dragOverClass: 'drag-hover',
|
|
255
|
+
formAttributes: {
|
|
256
|
+
class: 'uploader uploaderContainer'
|
|
257
|
+
},
|
|
258
|
+
defaultErrMsg: __('Unable to upload file'),
|
|
259
|
+
uploadBtnText: __('Upload'),
|
|
260
|
+
/**
|
|
261
|
+
* Make files available before file selection. It can be used to filter.
|
|
262
|
+
* @callback fileSelect
|
|
263
|
+
* @param {Array<File>} files - the selected files
|
|
264
|
+
* @param {Function} [done] - callback with filtered files
|
|
265
|
+
* @returns {undefined|Array<File>} the files to be selected
|
|
266
|
+
*/
|
|
267
|
+
fileSelect: function (files, done) {
|
|
268
|
+
if (_.isFunction(done)) {
|
|
269
|
+
return done(files);
|
|
270
|
+
}
|
|
271
|
+
return files;
|
|
265
272
|
}
|
|
273
|
+
};
|
|
266
274
|
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
filereader: typeof FileReader !== 'undefined',
|
|
273
|
-
dnd: 'draggable' in document.createElement('span')
|
|
274
|
-
};
|
|
275
|
-
/**
|
|
276
|
-
* Define a jQuery component to help you to manage file(s) upload/reading.
|
|
277
|
-
* @exports ui/uploader
|
|
278
|
-
*/
|
|
279
|
-
|
|
280
|
-
var uploader = {
|
|
281
|
-
/**
|
|
282
|
-
* Initialize the plugin.
|
|
283
|
-
*
|
|
284
|
-
* Called the jQuery way once registered by the Pluginifier.
|
|
285
|
-
* @example $('selector').uploader();
|
|
286
|
-
*
|
|
287
|
-
* @constructor
|
|
288
|
-
* @param {Object} [options] - the plugin options
|
|
289
|
-
* @param {Boolean} [options.upload = true] - if we upload the file once selected
|
|
290
|
-
* @param {String} [options.uploadUrl] - the URL where the files will be posted
|
|
291
|
-
* @param {jQueryElement} [options.$form] - a form to be used instead
|
|
292
|
-
* @param {Boolean} [options.read = false] - if we can read the file once selected
|
|
293
|
-
* @param {Boolean} [options.multiple = false] - enable to select more multiple files (may be not supported by old browsers)
|
|
294
|
-
* @param {Number} [options.uploadQueueSize = 3] - max parallel uploads (applies only in multiple mode)
|
|
295
|
-
* @param {String} [options.browseBtnClass = btn-browse] - the class to identify the browse button
|
|
296
|
-
* @param {String} [options.uploadBtnClass = btn-upload] - the class to identify the upload button
|
|
297
|
-
* @param {String} [options.resetBtnClass = btn-reset] - the class to identify the reset button
|
|
298
|
-
* @param {String} [options.fileNameClass = file-name] - the class of the elt where the file name is set
|
|
299
|
-
* @param {String} [options.dropZoneClass = file-drop] - the class of the drop file elt
|
|
300
|
-
* @param {String} [options.progressBarClass = progressbar] - the class to identify the progress bar
|
|
301
|
-
* @param {String} [options.dragOverClass = drag-hover] - the class to set to the drop zone when dragging over
|
|
302
|
-
* @param {Function} [options.fileSelect] - called back before selection with files in params and returns the files to select; filter use case
|
|
303
|
-
* @param {Object} [options.formAttributes] - object with all the attributes you want to be on the form element
|
|
304
|
-
* @param {String} [options.defaultErrMsg] - localized error message when something goes wrong
|
|
305
|
-
* @param {String} [options.uploadBtnText] - text on upload button
|
|
306
|
-
* @returns {jQueryElement} for chainingV
|
|
307
|
-
*/
|
|
308
|
-
init: function init(options) {
|
|
309
|
-
//get options using default
|
|
310
|
-
options = _.defaults(options || {}, defaults);
|
|
311
|
-
return this.each(function () {
|
|
312
|
-
var $elt = $$1(this);
|
|
313
|
-
var $builtInForm;
|
|
314
|
-
|
|
315
|
-
if (!$elt.data(dataNs)) {
|
|
316
|
-
$elt.html(uploaderTpl(options)); // form could be inside $elt ...
|
|
317
|
-
|
|
318
|
-
$builtInForm = options.$form && options.$form.length ? options.$form : $elt.find('form'); // ... if not it could be a wrapper
|
|
319
|
-
|
|
320
|
-
if (!$builtInForm.length) {
|
|
321
|
-
$builtInForm = $elt.closest('form');
|
|
322
|
-
} // ... if no form is present wrap $elt in one
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
if (!$builtInForm.length) {
|
|
326
|
-
$elt.wrap($$1('<form>', options.formAttributes));
|
|
327
|
-
$builtInForm = $elt.parent();
|
|
328
|
-
} //retrieve elements
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
options.$input = $$1('input[type=file]', $elt);
|
|
332
|
-
options.$browseBtn = $$1('.' + options.browseBtnClass, $elt);
|
|
333
|
-
options.$fileName = $$1('.' + options.fileNameClass, $elt);
|
|
334
|
-
options.$dropZone = $$1('.' + options.dropZoneClass, $elt);
|
|
335
|
-
options.$progressBar = $$1('.' + options.progressBarClass, $elt);
|
|
336
|
-
options.$form = $builtInForm;
|
|
337
|
-
options.$uploadBtn = $$1('.' + options.uploadBtnClass, $elt);
|
|
338
|
-
options.$resetBtn = $$1('.' + options.resetBtnClass, $elt);
|
|
339
|
-
options.useDropZone = tests.dnd;
|
|
340
|
-
options.dropZonePlaceholder = options.$dropZone.html();
|
|
341
|
-
options.fileNamePlaceholder = options.$fileName.text();
|
|
342
|
-
options.files = [];
|
|
343
|
-
$elt.data(dataNs, options);
|
|
344
|
-
|
|
345
|
-
uploader._reset($elt);
|
|
346
|
-
|
|
347
|
-
var inputHandler = function inputHandler(e) {
|
|
348
|
-
// _.values also get the length property of the FileList object,
|
|
349
|
-
// so we go for a plain old loop.
|
|
350
|
-
var finalFiles = [];
|
|
351
|
-
|
|
352
|
-
_.forEach(e.target.files, function (file) {
|
|
353
|
-
finalFiles.push(file);
|
|
354
|
-
});
|
|
355
|
-
|
|
356
|
-
uploader._selectFiles($elt, finalFiles);
|
|
357
|
-
|
|
358
|
-
options.$input.val('');
|
|
359
|
-
};
|
|
360
|
-
|
|
361
|
-
var dragOverHandler = function dragOverHandler(e) {
|
|
362
|
-
e.preventDefault();
|
|
363
|
-
e.stopPropagation();
|
|
364
|
-
options.$dropZone.addClass(options.dragOverClass);
|
|
365
|
-
};
|
|
366
|
-
|
|
367
|
-
var dragOutHandler = function dragOutHandler(e) {
|
|
368
|
-
e.preventDefault();
|
|
369
|
-
e.stopPropagation();
|
|
370
|
-
options.$dropZone.removeClass(options.dragOverClass);
|
|
371
|
-
}; //manage input selection
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
if (!tests.filereader) {
|
|
375
|
-
throw new Error('FileReader API not supported! Please use a compliant browser!');
|
|
376
|
-
}
|
|
275
|
+
//feature tests
|
|
276
|
+
const tests = {
|
|
277
|
+
filereader: typeof FileReader !== 'undefined',
|
|
278
|
+
dnd: 'draggable' in document.createElement('span')
|
|
279
|
+
};
|
|
377
280
|
|
|
378
|
-
|
|
379
|
-
|
|
281
|
+
/**
|
|
282
|
+
* Define a jQuery component to help you to manage file(s) upload/reading.
|
|
283
|
+
* @exports ui/uploader
|
|
284
|
+
*/
|
|
285
|
+
const uploader = {
|
|
286
|
+
/**
|
|
287
|
+
* Initialize the plugin.
|
|
288
|
+
*
|
|
289
|
+
* Called the jQuery way once registered by the Pluginifier.
|
|
290
|
+
* @example $('selector').uploader();
|
|
291
|
+
*
|
|
292
|
+
* @constructor
|
|
293
|
+
* @param {Object} [options] - the plugin options
|
|
294
|
+
* @param {Boolean} [options.upload = true] - if we upload the file once selected
|
|
295
|
+
* @param {String} [options.uploadUrl] - the URL where the files will be posted
|
|
296
|
+
* @param {jQueryElement} [options.$form] - a form to be used instead
|
|
297
|
+
* @param {Boolean} [options.read = false] - if we can read the file once selected
|
|
298
|
+
* @param {Boolean} [options.multiple = false] - enable to select more multiple files (may be not supported by old browsers)
|
|
299
|
+
* @param {Number} [options.uploadQueueSize = 3] - max parallel uploads (applies only in multiple mode)
|
|
300
|
+
* @param {String} [options.browseBtnClass = btn-browse] - the class to identify the browse button
|
|
301
|
+
* @param {String} [options.uploadBtnClass = btn-upload] - the class to identify the upload button
|
|
302
|
+
* @param {String} [options.resetBtnClass = btn-reset] - the class to identify the reset button
|
|
303
|
+
* @param {String} [options.fileNameClass = file-name] - the class of the elt where the file name is set
|
|
304
|
+
* @param {String} [options.dropZoneClass = file-drop] - the class of the drop file elt
|
|
305
|
+
* @param {String} [options.progressBarClass = progressbar] - the class to identify the progress bar
|
|
306
|
+
* @param {String} [options.dragOverClass = drag-hover] - the class to set to the drop zone when dragging over
|
|
307
|
+
* @param {Function} [options.fileSelect] - called back before selection with files in params and returns the files to select; filter use case
|
|
308
|
+
* @param {Object} [options.formAttributes] - object with all the attributes you want to be on the form element
|
|
309
|
+
* @param {String} [options.defaultErrMsg] - localized error message when something goes wrong
|
|
310
|
+
* @param {String} [options.uploadBtnText] - text on upload button
|
|
311
|
+
* @returns {jQueryElement} for chainingV
|
|
312
|
+
*/
|
|
313
|
+
init: function (options) {
|
|
314
|
+
//get options using default
|
|
315
|
+
options = _.defaults(options || {}, defaults);
|
|
316
|
+
return this.each(function () {
|
|
317
|
+
const $elt = $$1(this);
|
|
318
|
+
let $builtInForm;
|
|
319
|
+
if (!$elt.data(dataNs)) {
|
|
320
|
+
$elt.html(uploaderTpl(options));
|
|
321
|
+
|
|
322
|
+
// form could be inside $elt ...
|
|
323
|
+
$builtInForm = options.$form && options.$form.length ? options.$form : $elt.find('form');
|
|
324
|
+
|
|
325
|
+
// ... if not it could be a wrapper
|
|
326
|
+
if (!$builtInForm.length) {
|
|
327
|
+
$builtInForm = $elt.closest('form');
|
|
328
|
+
}
|
|
380
329
|
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
330
|
+
// ... if no form is present wrap $elt in one
|
|
331
|
+
if (!$builtInForm.length) {
|
|
332
|
+
$elt.wrap($$1('<form>', options.formAttributes));
|
|
333
|
+
$builtInForm = $elt.parent();
|
|
334
|
+
}
|
|
386
335
|
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
$$1(
|
|
390
|
-
|
|
336
|
+
//retrieve elements
|
|
337
|
+
options.$input = $$1('input[type=file]', $elt);
|
|
338
|
+
options.$browseBtn = $$1('.' + options.browseBtnClass, $elt);
|
|
339
|
+
options.$fileName = $$1('.' + options.fileNameClass, $elt);
|
|
340
|
+
options.$dropZone = $$1('.' + options.dropZoneClass, $elt);
|
|
341
|
+
options.$progressBar = $$1('.' + options.progressBarClass, $elt);
|
|
342
|
+
options.$form = $builtInForm;
|
|
343
|
+
options.$uploadBtn = $$1('.' + options.uploadBtnClass, $elt);
|
|
344
|
+
options.$resetBtn = $$1('.' + options.resetBtnClass, $elt);
|
|
345
|
+
options.useDropZone = tests.dnd;
|
|
346
|
+
options.dropZonePlaceholder = options.$dropZone.html();
|
|
347
|
+
options.fileNamePlaceholder = options.$fileName.text();
|
|
348
|
+
options.files = [];
|
|
349
|
+
$elt.data(dataNs, options);
|
|
350
|
+
uploader._reset($elt);
|
|
351
|
+
const inputHandler = function (e) {
|
|
352
|
+
// _.values also get the length property of the FileList object,
|
|
353
|
+
// so we go for a plain old loop.
|
|
354
|
+
const finalFiles = [];
|
|
355
|
+
_.forEach(e.target.files, function (file) {
|
|
356
|
+
finalFiles.push(file);
|
|
357
|
+
});
|
|
358
|
+
uploader._selectFiles($elt, finalFiles);
|
|
359
|
+
options.$input.val('');
|
|
360
|
+
};
|
|
361
|
+
const dragOverHandler = function (e) {
|
|
391
362
|
e.preventDefault();
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
363
|
+
e.stopPropagation();
|
|
364
|
+
options.$dropZone.addClass(options.dragOverClass);
|
|
365
|
+
};
|
|
366
|
+
const dragOutHandler = function (e) {
|
|
396
367
|
e.preventDefault();
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
var files = [];
|
|
401
|
-
dragOutHandler(e);
|
|
402
|
-
|
|
403
|
-
if (e.target.files) {
|
|
404
|
-
files = _.values(e.target.files);
|
|
405
|
-
} else if (e.originalEvent.files) {
|
|
406
|
-
files = _.values(e.originalEvent.files);
|
|
407
|
-
} else if (e.originalEvent.dataTransfer && e.originalEvent.dataTransfer.files) {
|
|
408
|
-
files = _.values(e.originalEvent.dataTransfer.files);
|
|
409
|
-
}
|
|
410
|
-
|
|
411
|
-
if (files && files.length) {
|
|
412
|
-
var append = options.$dropZone.children('ul').length > 0;
|
|
413
|
-
|
|
414
|
-
if (!options.multiple) {
|
|
415
|
-
files = [files[0]];
|
|
416
|
-
append = false;
|
|
417
|
-
}
|
|
368
|
+
e.stopPropagation();
|
|
369
|
+
options.$dropZone.removeClass(options.dragOverClass);
|
|
370
|
+
};
|
|
418
371
|
|
|
419
|
-
|
|
420
|
-
|
|
372
|
+
//manage input selection
|
|
373
|
+
if (!tests.filereader) {
|
|
374
|
+
throw new Error('FileReader API not supported! Please use a compliant browser!');
|
|
375
|
+
}
|
|
376
|
+
options.$input.on('change', inputHandler);
|
|
421
377
|
|
|
378
|
+
// IE Specific hack. It prevents the browseBtn to slightly
|
|
379
|
+
// move on click. Special thanks to Dieter Raber, OAT S.A.
|
|
380
|
+
options.$input.on('mousedown', function (e) {
|
|
381
|
+
e.preventDefault();
|
|
382
|
+
$$1(this).blur();
|
|
422
383
|
return false;
|
|
423
384
|
});
|
|
424
|
-
} else {
|
|
425
|
-
options.$dropZone.hide();
|
|
426
|
-
} //getting files
|
|
427
|
-
|
|
428
385
|
|
|
429
|
-
|
|
430
|
-
if (options.
|
|
431
|
-
|
|
386
|
+
//manage drag and drop selection
|
|
387
|
+
if (options.useDropZone) {
|
|
388
|
+
//prevent drag and drop outside the zone to loose the current context
|
|
389
|
+
$$1(document).off('drop.' + ns).on('drop.' + ns, function (e) {
|
|
390
|
+
e.stopImmediatePropagation();
|
|
391
|
+
e.preventDefault();
|
|
392
|
+
return false;
|
|
393
|
+
});
|
|
394
|
+
$$1(document).off('dragover.' + ns).on('dragover.' + ns, function (e) {
|
|
395
|
+
e.stopImmediatePropagation();
|
|
396
|
+
e.preventDefault();
|
|
397
|
+
return false;
|
|
398
|
+
});
|
|
399
|
+
options.$dropZone.on('dragover', dragOverHandler).on('dragend', dragOutHandler).on('dragleave', dragOutHandler).on('drop', function (e) {
|
|
400
|
+
let files = [];
|
|
401
|
+
dragOutHandler(e);
|
|
402
|
+
if (e.target.files) {
|
|
403
|
+
files = _.values(e.target.files);
|
|
404
|
+
} else if (e.originalEvent.files) {
|
|
405
|
+
files = _.values(e.originalEvent.files);
|
|
406
|
+
} else if (e.originalEvent.dataTransfer && e.originalEvent.dataTransfer.files) {
|
|
407
|
+
files = _.values(e.originalEvent.dataTransfer.files);
|
|
408
|
+
}
|
|
409
|
+
if (files && files.length) {
|
|
410
|
+
let append = options.$dropZone.children('ul').length > 0;
|
|
411
|
+
if (!options.multiple) {
|
|
412
|
+
files = [files[0]];
|
|
413
|
+
append = false;
|
|
414
|
+
}
|
|
415
|
+
uploader._selectFiles($elt, files, append);
|
|
416
|
+
}
|
|
417
|
+
return false;
|
|
418
|
+
});
|
|
419
|
+
} else {
|
|
420
|
+
options.$dropZone.hide();
|
|
432
421
|
}
|
|
433
422
|
|
|
434
|
-
|
|
435
|
-
|
|
423
|
+
//getting files
|
|
424
|
+
$elt.on('fileselect.' + ns, function () {
|
|
425
|
+
if (options.files.length === 0) {
|
|
426
|
+
uploader._reset($elt);
|
|
427
|
+
}
|
|
428
|
+
if (options.upload) {
|
|
429
|
+
options.$uploadBtn.off('click').on('click', function (e) {
|
|
430
|
+
e.preventDefault();
|
|
431
|
+
uploader._upload($elt, options.files);
|
|
432
|
+
}).removeProp('disabled');
|
|
433
|
+
}
|
|
434
|
+
if (options.read) {
|
|
435
|
+
uploader._read($elt, options.files);
|
|
436
|
+
}
|
|
437
|
+
options.$resetBtn.off('click').on('click', function (e) {
|
|
436
438
|
e.preventDefault();
|
|
437
|
-
|
|
438
|
-
uploader._upload($elt, options.files);
|
|
439
|
+
uploader._reset($elt);
|
|
439
440
|
}).removeProp('disabled');
|
|
440
|
-
}
|
|
441
|
-
|
|
442
|
-
if (options.read) {
|
|
443
|
-
uploader._read($elt, options.files);
|
|
444
|
-
}
|
|
445
|
-
|
|
446
|
-
options.$resetBtn.off('click').on('click', function (e) {
|
|
447
|
-
e.preventDefault();
|
|
448
|
-
|
|
449
|
-
uploader._reset($elt);
|
|
450
|
-
}).removeProp('disabled');
|
|
451
|
-
});
|
|
452
|
-
/**
|
|
453
|
-
* The plugin has been created.
|
|
454
|
-
* @event uploader#create.uploader
|
|
455
|
-
*/
|
|
456
|
-
|
|
457
|
-
$elt.trigger('create.' + ns);
|
|
458
|
-
}
|
|
459
|
-
});
|
|
460
|
-
},
|
|
461
|
-
|
|
462
|
-
/**
|
|
463
|
-
* Select files to upload/read.
|
|
464
|
-
*
|
|
465
|
-
* Called the jQuery way once registered by the Pluginifier:
|
|
466
|
-
* @example $('selector').uploader('selectFiles', files);
|
|
467
|
-
*
|
|
468
|
-
* @param {jQueryElement} $elt - plugin's element
|
|
469
|
-
* @param {Array<File>} files - the selected files
|
|
470
|
-
* @param {Boolean} [append = false] - in append mode the files are added instead of replaced
|
|
471
|
-
* @fires uploader#fileselect.uploader
|
|
472
|
-
*/
|
|
473
|
-
_selectFiles: function _selectFiles($elt, files, append) {
|
|
474
|
-
var self = this;
|
|
475
|
-
var listContent;
|
|
476
|
-
var options = $elt.data(dataNs); //update the file name field with the current number of files selected
|
|
477
|
-
|
|
478
|
-
var updateFileName = function updateFileName() {
|
|
479
|
-
var length = options.files.length;
|
|
480
|
-
options.$fileName.text(length + ' ' + (length > 1 ? __('files selected') : __('file selected'))).removeClass('placeholder');
|
|
481
|
-
};
|
|
482
|
-
|
|
483
|
-
if (files.length <= 0 && !append) {
|
|
484
|
-
//empty file list, so we reset the plugin
|
|
485
|
-
self._reset($elt);
|
|
486
|
-
}
|
|
441
|
+
});
|
|
487
442
|
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
} else {
|
|
494
|
-
options.files = filteredFiles;
|
|
443
|
+
/**
|
|
444
|
+
* The plugin has been created.
|
|
445
|
+
* @event uploader#create.uploader
|
|
446
|
+
*/
|
|
447
|
+
$elt.trigger('create.' + ns);
|
|
495
448
|
}
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
449
|
+
});
|
|
450
|
+
},
|
|
451
|
+
/**
|
|
452
|
+
* Select files to upload/read.
|
|
453
|
+
*
|
|
454
|
+
* Called the jQuery way once registered by the Pluginifier:
|
|
455
|
+
* @example $('selector').uploader('selectFiles', files);
|
|
456
|
+
*
|
|
457
|
+
* @param {jQueryElement} $elt - plugin's element
|
|
458
|
+
* @param {Array<File>} files - the selected files
|
|
459
|
+
* @param {Boolean} [append = false] - in append mode the files are added instead of replaced
|
|
460
|
+
* @fires uploader#fileselect.uploader
|
|
461
|
+
*/
|
|
462
|
+
_selectFiles: function _selectFiles($elt, files, append) {
|
|
463
|
+
const self = this;
|
|
464
|
+
let listContent;
|
|
465
|
+
const options = $elt.data(dataNs);
|
|
466
|
+
|
|
467
|
+
//update the file name field with the current number of files selected
|
|
468
|
+
const updateFileName = function updateFileName() {
|
|
469
|
+
const length = options.files.length;
|
|
470
|
+
options.$fileName.text(length + ' ' + (length > 1 ? __('files selected') : __('file selected'))).removeClass('placeholder');
|
|
471
|
+
};
|
|
472
|
+
if (files.length <= 0 && !append) {
|
|
473
|
+
//empty file list, so we reset the plugin
|
|
474
|
+
self._reset($elt);
|
|
475
|
+
}
|
|
476
|
+
if (files.length > 0) {
|
|
477
|
+
//execute the fileSelect function to filter files before selection
|
|
478
|
+
options.fileSelect.call($elt, files, function (filteredFiles) {
|
|
506
479
|
if (append) {
|
|
507
|
-
options
|
|
480
|
+
options.files = options.files.concat(filteredFiles);
|
|
508
481
|
} else {
|
|
509
|
-
options
|
|
482
|
+
options.files = filteredFiles;
|
|
510
483
|
}
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
if (name) {
|
|
519
|
-
options.files = _.reject(options.files, {
|
|
520
|
-
name: name
|
|
484
|
+
if (options.useDropZone) {
|
|
485
|
+
updateFileName();
|
|
486
|
+
listContent = _.reduce(filteredFiles, function (acc, file) {
|
|
487
|
+
return acc + fileEntryTpl({
|
|
488
|
+
name: file.name,
|
|
489
|
+
size: bytes.hrSize(file.size)
|
|
521
490
|
});
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
}
|
|
528
|
-
|
|
529
|
-
$fileEntry.remove();
|
|
491
|
+
}, '');
|
|
492
|
+
if (append) {
|
|
493
|
+
options.$dropZone.children('ul').append(listContent);
|
|
494
|
+
} else {
|
|
495
|
+
options.$dropZone.html('<ul>' + listContent + '</ul>');
|
|
530
496
|
}
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
*
|
|
554
|
-
* @param {jQueryElement} $elt - plugin's element
|
|
555
|
-
* @returns {Array<File>} the selected files
|
|
556
|
-
*/
|
|
557
|
-
_files: function _files($elt) {
|
|
558
|
-
var files = [];
|
|
559
|
-
var options = $elt.data(dataNs);
|
|
560
|
-
|
|
561
|
-
if (options) {
|
|
562
|
-
files = options.files;
|
|
563
|
-
}
|
|
564
|
-
|
|
565
|
-
return files;
|
|
566
|
-
},
|
|
567
|
-
|
|
568
|
-
/**
|
|
569
|
-
* Reset the component
|
|
570
|
-
*
|
|
571
|
-
* Called the jQuery way once registered by the Pluginifier:
|
|
572
|
-
* @example $('selector').uploader('reset');
|
|
573
|
-
*
|
|
574
|
-
* @param {jQueryElement} $elt - plugin's element
|
|
575
|
-
* @fires uploader#reset.uploader
|
|
576
|
-
*/
|
|
577
|
-
_reset: function _reset($elt) {
|
|
578
|
-
var options = $elt.data(dataNs);
|
|
579
|
-
options.$fileName.text(options.fileNamePlaceholder).addClass('placeholder');
|
|
580
|
-
options.$dropZone.empty().html(options.dropZonePlaceholder);
|
|
581
|
-
options.$uploadBtn.prop('disabled', true);
|
|
582
|
-
options.$resetBtn.prop('disabled', true);
|
|
583
|
-
var importButton = options.$form[0].querySelector('button');
|
|
584
|
-
|
|
585
|
-
if (importButton) {
|
|
586
|
-
importButton.setAttribute('disabled', true);
|
|
587
|
-
}
|
|
497
|
+
options.$dropZone.off('click.' + ns).on('click.' + ns, '[data-role=delete]', function (e) {
|
|
498
|
+
const $fileEntry = $$1(this).parent();
|
|
499
|
+
const name = $fileEntry.data('file-name');
|
|
500
|
+
e.preventDefault();
|
|
501
|
+
e.stopPropagation();
|
|
502
|
+
if (name) {
|
|
503
|
+
options.files = _.reject(options.files, {
|
|
504
|
+
name: name
|
|
505
|
+
});
|
|
506
|
+
if (options.files.length === 0) {
|
|
507
|
+
self._reset($elt);
|
|
508
|
+
} else {
|
|
509
|
+
updateFileName();
|
|
510
|
+
}
|
|
511
|
+
$fileEntry.remove();
|
|
512
|
+
}
|
|
513
|
+
});
|
|
514
|
+
} else {
|
|
515
|
+
//legacy mode, no dnd support
|
|
516
|
+
options.files = options.files.slice(0, 1);
|
|
517
|
+
options.$fileName.text(files[0].name).removeClass('placeholder');
|
|
518
|
+
}
|
|
588
519
|
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
520
|
+
/**
|
|
521
|
+
* Files has been selected
|
|
522
|
+
* @event uploader#fileselect.uploader
|
|
523
|
+
*/
|
|
524
|
+
$elt.trigger('fileselect.' + ns);
|
|
525
|
+
});
|
|
526
|
+
}
|
|
527
|
+
},
|
|
528
|
+
/**
|
|
529
|
+
* Get the selected files.
|
|
530
|
+
*
|
|
531
|
+
* Called the jQuery way once registered by the Pluginifier:
|
|
532
|
+
* @example const files = $('selector').uploader('files');
|
|
533
|
+
*
|
|
534
|
+
* @param {jQueryElement} $elt - plugin's element
|
|
535
|
+
* @returns {Array<File>} the selected files
|
|
597
536
|
*/
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
537
|
+
_files: function ($elt) {
|
|
538
|
+
let files = [];
|
|
539
|
+
const options = $elt.data(dataNs);
|
|
540
|
+
if (options) {
|
|
541
|
+
files = options.files;
|
|
542
|
+
}
|
|
543
|
+
return files;
|
|
544
|
+
},
|
|
545
|
+
/**
|
|
546
|
+
* Reset the component
|
|
547
|
+
*
|
|
548
|
+
* Called the jQuery way once registered by the Pluginifier:
|
|
549
|
+
* @example $('selector').uploader('reset');
|
|
550
|
+
*
|
|
551
|
+
* @param {jQueryElement} $elt - plugin's element
|
|
552
|
+
* @fires uploader#reset.uploader
|
|
553
|
+
*/
|
|
554
|
+
_reset: function ($elt) {
|
|
555
|
+
const options = $elt.data(dataNs);
|
|
556
|
+
options.$fileName.text(options.fileNamePlaceholder).addClass('placeholder');
|
|
557
|
+
options.$dropZone.empty().html(options.dropZonePlaceholder);
|
|
558
|
+
options.$uploadBtn.prop('disabled', true);
|
|
559
|
+
options.$resetBtn.prop('disabled', true);
|
|
560
|
+
const importButton = options.$form[0].querySelector('button');
|
|
561
|
+
if (importButton) {
|
|
562
|
+
importButton.setAttribute('disabled', true);
|
|
563
|
+
}
|
|
564
|
+
if (options.$progressBar) {
|
|
565
|
+
options.$progressBar.removeClass('success').progressbar('destroy').progressbar({
|
|
566
|
+
value: 0
|
|
567
|
+
});
|
|
568
|
+
}
|
|
569
|
+
/**
|
|
570
|
+
* The plugin has been created.
|
|
571
|
+
* @event uploader#reset.uploader
|
|
572
|
+
*/
|
|
573
|
+
$elt.trigger('reset.' + ns);
|
|
574
|
+
},
|
|
575
|
+
/**
|
|
576
|
+
* Upload the selected file
|
|
577
|
+
*
|
|
578
|
+
* Called the jQuery way once registered by the Pluginifier:
|
|
579
|
+
* @example $('selector').uploader('upload');
|
|
580
|
+
*
|
|
581
|
+
* @param {jQueryElement} $elt - plugin's element
|
|
582
|
+
* @fires uploader#upload.uploader
|
|
583
|
+
* @fires uploader#fail.uploader
|
|
584
|
+
* @fires uploader#end.uploader
|
|
585
|
+
*/
|
|
586
|
+
_upload: function ($elt) {
|
|
587
|
+
let length,
|
|
616
588
|
$fileEntries,
|
|
617
589
|
entryHeight,
|
|
618
590
|
errors = [],
|
|
619
591
|
q;
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
}, options.uploadQueueSize || 1); //disable buttons
|
|
651
|
-
|
|
652
|
-
options.$uploadBtn.prop('disabled', true);
|
|
653
|
-
options.$resetBtn.prop('disabled', true);
|
|
654
|
-
options.$progressBar.progressbar('value', 0); //start pushing uploads into the queue
|
|
655
|
-
|
|
656
|
-
_.forEach(options.files, function (file, index) {
|
|
657
|
-
_.delay(function () {
|
|
658
|
-
q.push(file, function (err, result) {
|
|
659
|
-
var complete = (index + 1) / length * 100;
|
|
660
|
-
|
|
661
|
-
if (err) {
|
|
662
|
-
errors.push(err);
|
|
663
|
-
/**
|
|
664
|
-
* The file fails to upload
|
|
665
|
-
* @event uploader#fail.uploader
|
|
666
|
-
* @param {Object} file - the uploaded file
|
|
667
|
-
* @param {Object} err - the error
|
|
668
|
-
*/
|
|
669
|
-
|
|
670
|
-
$elt.trigger('fail.' + ns, [file, err]);
|
|
671
|
-
} else {
|
|
672
|
-
/**
|
|
673
|
-
* A file is uploaded
|
|
674
|
-
* @event uploader#upload.uploader
|
|
675
|
-
* @param {Object} file - the uploaded file
|
|
676
|
-
* @param {Object} result - the upload response
|
|
677
|
-
*/
|
|
678
|
-
$elt.trigger('upload.' + ns, [file, result]);
|
|
679
|
-
} //update progress bar regarding the number of files uploaded
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
options.$progressBar.progressbar('value', complete);
|
|
683
|
-
|
|
684
|
-
if (complete >= 100) {
|
|
685
|
-
if (errors.length === length) {
|
|
686
|
-
options.$progressBar.addClass('error');
|
|
687
|
-
} else if (errors.length > 0) {
|
|
688
|
-
options.$progressBar.addClass('warning');
|
|
689
|
-
} else {
|
|
690
|
-
options.$progressBar.addClass('success');
|
|
691
|
-
}
|
|
692
|
-
/**
|
|
693
|
-
* The upload sequence is complete
|
|
694
|
-
* @event uploader#end.uploader
|
|
695
|
-
*/
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
$elt.trigger('end.' + ns);
|
|
592
|
+
const options = $elt.data(dataNs);
|
|
593
|
+
if (options && options.files.length) {
|
|
594
|
+
length = options.files.length;
|
|
595
|
+
$fileEntries = $$1('ul', options.$dropZone);
|
|
596
|
+
entryHeight = $$1('li:first', $fileEntries).outerHeight();
|
|
597
|
+
|
|
598
|
+
//create an async queue to start uploads
|
|
599
|
+
q = async.queue(function (file, done) {
|
|
600
|
+
var $fileEntry = $$1('li[data-file-name="' + file.name + '"]', $fileEntries);
|
|
601
|
+
var $status = $$1('.status', $fileEntry);
|
|
602
|
+
var index = $fileEntries.children().index($fileEntry);
|
|
603
|
+
|
|
604
|
+
//update the scroll into the element
|
|
605
|
+
options.$dropZone.stop(true, true).animate({
|
|
606
|
+
scrollTop: index * entryHeight
|
|
607
|
+
}, 25);
|
|
608
|
+
$status.removeClass('success').removeClass('error').addClass('sending');
|
|
609
|
+
|
|
610
|
+
//send (upload) the file
|
|
611
|
+
options.$form.sendfile({
|
|
612
|
+
url: options.uploadUrl,
|
|
613
|
+
file: file,
|
|
614
|
+
loaded: function (result) {
|
|
615
|
+
$status.removeClass('sending').removeClass('error').addClass('success');
|
|
616
|
+
done(null, result);
|
|
617
|
+
},
|
|
618
|
+
failed: function (message) {
|
|
619
|
+
message = message || options.defaultErrMsg;
|
|
620
|
+
$status.removeClass('sending').removeClass('success').addClass('error').attr('title', message);
|
|
621
|
+
done(new Error(message));
|
|
699
622
|
}
|
|
700
623
|
});
|
|
701
|
-
},
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
* @param {Object} result - the content
|
|
733
|
-
*/
|
|
734
|
-
|
|
735
|
-
$elt.trigger('readend.' + ns, [file, e.target.result]);
|
|
736
|
-
};
|
|
737
|
-
|
|
738
|
-
reader.onloadstart = function () {
|
|
739
|
-
options.$progressBar.progressbar('value', 0);
|
|
740
|
-
/**
|
|
741
|
-
* The reading starts
|
|
742
|
-
* @event uploader#readstart.uploader
|
|
743
|
-
* @param {Object} file - the reading file
|
|
744
|
-
*/
|
|
745
|
-
|
|
746
|
-
$elt.trigger('readstart.' + ns, [file]);
|
|
747
|
-
};
|
|
624
|
+
}, options.uploadQueueSize || 1);
|
|
625
|
+
|
|
626
|
+
//disable buttons
|
|
627
|
+
options.$uploadBtn.prop('disabled', true);
|
|
628
|
+
options.$resetBtn.prop('disabled', true);
|
|
629
|
+
options.$progressBar.progressbar('value', 0);
|
|
630
|
+
|
|
631
|
+
//start pushing uploads into the queue
|
|
632
|
+
_.forEach(options.files, function (file, index) {
|
|
633
|
+
_.delay(function () {
|
|
634
|
+
q.push(file, function (err, result) {
|
|
635
|
+
var complete = (index + 1) / length * 100;
|
|
636
|
+
if (err) {
|
|
637
|
+
errors.push(err);
|
|
638
|
+
|
|
639
|
+
/**
|
|
640
|
+
* The file fails to upload
|
|
641
|
+
* @event uploader#fail.uploader
|
|
642
|
+
* @param {Object} file - the uploaded file
|
|
643
|
+
* @param {Object} err - the error
|
|
644
|
+
*/
|
|
645
|
+
$elt.trigger('fail.' + ns, [file, err]);
|
|
646
|
+
} else {
|
|
647
|
+
/**
|
|
648
|
+
* A file is uploaded
|
|
649
|
+
* @event uploader#upload.uploader
|
|
650
|
+
* @param {Object} file - the uploaded file
|
|
651
|
+
* @param {Object} result - the upload response
|
|
652
|
+
*/
|
|
653
|
+
$elt.trigger('upload.' + ns, [file, result]);
|
|
654
|
+
}
|
|
748
655
|
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
656
|
+
//update progress bar regarding the number of files uploaded
|
|
657
|
+
options.$progressBar.progressbar('value', complete);
|
|
658
|
+
if (complete >= 100) {
|
|
659
|
+
if (errors.length === length) {
|
|
660
|
+
options.$progressBar.addClass('error');
|
|
661
|
+
} else if (errors.length > 0) {
|
|
662
|
+
options.$progressBar.addClass('warning');
|
|
663
|
+
} else {
|
|
664
|
+
options.$progressBar.addClass('success');
|
|
665
|
+
}
|
|
666
|
+
|
|
667
|
+
/**
|
|
668
|
+
* The upload sequence is complete
|
|
669
|
+
* @event uploader#end.uploader
|
|
670
|
+
*/
|
|
671
|
+
$elt.trigger('end.' + ns);
|
|
672
|
+
}
|
|
673
|
+
});
|
|
674
|
+
}, 50);
|
|
675
|
+
});
|
|
676
|
+
}
|
|
677
|
+
},
|
|
678
|
+
/**
|
|
679
|
+
* Read the selected file.
|
|
680
|
+
*
|
|
681
|
+
* TODO update files status and progress bar by file
|
|
682
|
+
*
|
|
683
|
+
* Called the jQuery way once registered by the Pluginifier:
|
|
684
|
+
* @example $('selector').uploader('read');
|
|
685
|
+
*
|
|
686
|
+
* @param {jQueryElement} $elt - plugin's element
|
|
687
|
+
* @fires uploader#readstart.uploader
|
|
688
|
+
* @fires uploader#readend.uploader
|
|
689
|
+
*/
|
|
690
|
+
_read: function ($elt) {
|
|
691
|
+
var options = $elt.data(dataNs);
|
|
692
|
+
if (options && options.files.length) {
|
|
693
|
+
_.forEach(options.files, function (file) {
|
|
694
|
+
// Let's read the file to get its base64 encoded content.
|
|
695
|
+
var reader = new FileReader();
|
|
696
|
+
reader.onload = function (e) {
|
|
697
|
+
options.$progressBar.progressbar('value', 100);
|
|
698
|
+
|
|
699
|
+
/**
|
|
700
|
+
* The read is fininshed
|
|
701
|
+
* @event uploader#readend.uploader
|
|
702
|
+
* @param {Object} file - the reading file
|
|
703
|
+
* @param {Object} result - the content
|
|
704
|
+
*/
|
|
705
|
+
$elt.trigger('readend.' + ns, [file, e.target.result]);
|
|
753
706
|
};
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
707
|
+
reader.onloadstart = function () {
|
|
708
|
+
options.$progressBar.progressbar('value', 0);
|
|
709
|
+
|
|
710
|
+
/**
|
|
711
|
+
* The reading starts
|
|
712
|
+
* @event uploader#readstart.uploader
|
|
713
|
+
* @param {Object} file - the reading file
|
|
714
|
+
*/
|
|
715
|
+
$elt.trigger('readstart.' + ns, [file]);
|
|
716
|
+
};
|
|
717
|
+
if (options.$progressBar.length) {
|
|
718
|
+
reader.onprogress = function (e) {
|
|
719
|
+
var percentProgress = Math.ceil(Math.round(e.loaded) / Math.round(e.total) * 100);
|
|
720
|
+
options.$progressBar.progressbar('value', percentProgress);
|
|
721
|
+
};
|
|
722
|
+
}
|
|
723
|
+
reader.readAsDataURL(file);
|
|
724
|
+
});
|
|
725
|
+
}
|
|
726
|
+
},
|
|
727
|
+
/**
|
|
728
|
+
* Destroy completely the plugin.
|
|
729
|
+
*
|
|
730
|
+
* Called the jQuery way once registered by the Pluginifier:
|
|
731
|
+
* @example $('selector').uploader('destroy');
|
|
732
|
+
*
|
|
733
|
+
* @fires uploader#destroy.uploader
|
|
734
|
+
*/
|
|
735
|
+
destroy: function () {
|
|
736
|
+
this.each(function () {
|
|
737
|
+
var $elt = $$1(this);
|
|
738
|
+
$$1(document).off('drop.' + ns).off('dragover.' + ns);
|
|
739
|
+
$elt.empty();
|
|
740
|
+
|
|
741
|
+
/**
|
|
742
|
+
* The plugin has been destroyed.
|
|
743
|
+
* @event uploader#destroy.uploader
|
|
744
|
+
*/
|
|
745
|
+
$elt.trigger('destroy.' + ns);
|
|
757
746
|
});
|
|
758
747
|
}
|
|
759
|
-
}
|
|
760
|
-
|
|
761
|
-
/**
|
|
762
|
-
* Destroy completely the plugin.
|
|
763
|
-
*
|
|
764
|
-
* Called the jQuery way once registered by the Pluginifier:
|
|
765
|
-
* @example $('selector').uploader('destroy');
|
|
766
|
-
*
|
|
767
|
-
* @fires uploader#destroy.uploader
|
|
768
|
-
*/
|
|
769
|
-
destroy: function destroy() {
|
|
770
|
-
this.each(function () {
|
|
771
|
-
var $elt = $$1(this);
|
|
772
|
-
$$1(document).off('drop.' + ns).off('dragover.' + ns);
|
|
773
|
-
$elt.empty();
|
|
774
|
-
/**
|
|
775
|
-
* The plugin has been destroyed.
|
|
776
|
-
* @event uploader#destroy.uploader
|
|
777
|
-
*/
|
|
748
|
+
};
|
|
778
749
|
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
Pluginifier.register(ns, uploader, {
|
|
785
|
-
expose: ['reset', 'selectFiles', 'upload', 'read']
|
|
786
|
-
});
|
|
750
|
+
//Register the incrementer to behave as a jQuery plugin.
|
|
751
|
+
Pluginifier.register(ns, uploader, {
|
|
752
|
+
expose: ['reset', 'selectFiles', 'upload', 'read']
|
|
753
|
+
});
|
|
787
754
|
|
|
788
755
|
});
|